changeset 342:320f0205ad45 trunk

[svn] Initial fileinfo box, loosely based around the mpg123-clone one.
author nenolod
date Mon, 26 Dec 2005 01:16:45 -0800
parents 46271e2c9622
children 7b71e0dbb62d
files Plugins/Input/aac/src/Makefile.am Plugins/Input/aac/src/fileinfo.c Plugins/Input/aac/src/libmp4.c Plugins/Input/aac/src/mp3.xpm
diffstat 4 files changed, 1387 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/Plugins/Input/aac/src/Makefile.am	Mon Dec 26 00:38:59 2005 -0800
+++ b/Plugins/Input/aac/src/Makefile.am	Mon Dec 26 01:16:45 2005 -0800
@@ -4,6 +4,6 @@
 
 libaac_la_LDFLAGS = $(PLUGIN_LDFLAGS) ../libmp4v2/libmp4v2.la ../libfaad2/libfaad.la -lstdc++
 
-libaac_la_SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c
+libaac_la_SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c fileinfo.c
 
 INCLUDES = $(GTK_CFLAGS) -I$(top_builddir)/intl -I$(top_srcdir) -I../include -I../libmp4v2 -I../libfaad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/Input/aac/src/fileinfo.c	Mon Dec 26 01:16:45 2005 -0800
@@ -0,0 +1,421 @@
+/*  BMP - Cross-platform multimedia player
+ *  Copyright (C) 2003-2004  BMP development team.
+ *
+ *  Based on XMMS:
+ *  Copyright (C) 1998-2003  XMMS development team.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include "audacious/util.h"
+#include <libaudacious/util.h>
+#include <libaudacious/vfs.h>
+#include <libaudacious/xentry.h>
+
+#include "tagging.h"
+
+#include "mp3.xpm"
+
+static GtkWidget *window = NULL;
+static GtkWidget *filename_entry, *id3_frame;
+static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry,
+    *tracknum_entry, *comment_entry;
+static GtkWidget *genre_combo;
+
+GtkWidget *vbox, *hbox, *left_vbox, *table;
+GtkWidget *mpeg_frame, *mpeg_box;
+GtkWidget *label, *filename_vbox;
+GtkWidget *bbox;
+GtkWidget *remove_id3, *cancel, *save;
+GtkWidget *boxx;
+
+const gchar *emphasis[4];
+const gchar *bool_label[2];
+
+static GList *genre_list = NULL;
+static gchar *current_filename = NULL;
+
+#define MAX_STR_LEN 100
+
+static guint
+audmp4_strip_spaces(char *src, size_t n)
+{   
+    gchar *space = NULL,        /* last space in src */
+        *start = src;
+
+    while (n--)
+        switch (*src++) {
+        case '\0':
+            n = 0;              /* breaks out of while loop */
+
+            src--;
+            break;
+        case ' ':
+            if (space == NULL)
+                space = src - 1;
+            break;
+        default:
+            space = NULL;       /* don't terminate intermediate spaces */
+
+            break;
+        }
+    if (space != NULL) {
+        src = space;
+        *src = '\0';
+    }
+    return src - start;
+}
+
+static void
+set_entry_tag(GtkEntry * entry, gchar * tag, gint length)
+{
+    gint stripped_len;
+    gchar *text, *text_utf8;
+
+    stripped_len = audmp4_strip_spaces(tag, length);
+    text = g_strdup_printf(tag);
+
+    if ((text_utf8 = str_to_utf8(text))) {
+        gtk_entry_set_text(entry, text_utf8);
+        g_free(text_utf8);
+    }
+    else {
+        gtk_entry_set_text(entry, "");
+    }
+
+    g_free(text);
+}
+
+static void
+get_entry_tag(GtkEntry * entry, gchar * tag, gint length)
+{
+    gchar *text = str_to_utf8(gtk_entry_get_text(entry));
+    memset(tag, ' ', length);
+    memcpy(tag, text, strlen(text) > length ? length : strlen(text));
+}
+
+static void
+press_save(GtkWidget * w, gpointer data)
+{
+    gtk_button_clicked(GTK_BUTTON(save));
+}
+
+static gint
+genre_comp_func(gconstpointer a, gconstpointer b)
+{
+    return strcasecmp(a, b);
+}
+
+static gboolean
+fileinfo_keypress_cb(GtkWidget * widget,
+                     GdkEventKey * event,
+                     gpointer data)
+{
+    if (!event)
+        return FALSE;
+
+    switch (event->keyval) {
+    case GDK_Escape:
+        gtk_widget_destroy(window);
+        break;
+    default:
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static void
+label_set_text(GtkWidget * label, gchar * str, ...)
+{
+    va_list args;
+    gchar tempstr[MAX_STR_LEN];
+
+    va_start(args, str);
+    g_vsnprintf(tempstr, MAX_STR_LEN, str, args);
+    va_end(args);
+
+    gtk_label_set_text(GTK_LABEL(label), tempstr);
+}
+
+static void
+change_buttons(GtkObject * object)
+{
+    gtk_widget_set_sensitive(GTK_WIDGET(object), TRUE);
+}
+
+void
+audmp4_file_info_box(gchar * filename)
+{
+    gint i;
+    gchar *title, *filename_utf8;
+    MP4FileHandle mp4file;
+
+    emphasis[0] = _("None");
+    emphasis[1] = _("50/15 ms");
+    emphasis[2] = "";
+    emphasis[3] = _("CCIT J.17");
+    bool_label[0] = _("No");
+    bool_label[1] = _("Yes");
+
+    if (!window) {
+        GtkWidget *pixmapwid;
+        GdkPixbuf *pixbuf;
+        PangoAttrList *attrs;
+        PangoAttribute *attr;
+
+        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+        gtk_window_set_type_hint(GTK_WINDOW(window),
+                                 GDK_WINDOW_TYPE_HINT_DIALOG);
+        gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
+        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+        g_signal_connect(G_OBJECT(window), "destroy",
+                         G_CALLBACK(gtk_widget_destroyed), &window);
+        gtk_container_set_border_width(GTK_CONTAINER(window), 10);
+
+        vbox = gtk_vbox_new(FALSE, 10);
+        gtk_container_add(GTK_CONTAINER(window), vbox);
+
+
+        filename_vbox = gtk_hbox_new(FALSE, 5);
+        gtk_box_pack_start(GTK_BOX(vbox), filename_vbox, FALSE, TRUE, 0);
+
+        pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)
+                                              gnome_mime_audio_xpm);
+        pixmapwid = gtk_image_new_from_pixbuf(pixbuf);
+        g_object_unref(pixbuf);
+        gtk_misc_set_alignment(GTK_MISC(pixmapwid), 0, 0);
+        gtk_box_pack_start(GTK_BOX(filename_vbox), pixmapwid, FALSE, FALSE,
+                           0);
+
+        label = gtk_label_new(NULL);
+
+        attrs = pango_attr_list_new();
+
+        attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
+        attr->start_index = 0;
+        attr->end_index = -1;
+        pango_attr_list_insert(attrs, attr);
+
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_label_set_text(GTK_LABEL(label), _("Name:"));
+        gtk_box_pack_start(GTK_BOX(filename_vbox), label, FALSE, FALSE, 0);
+
+        filename_entry = gtk_entry_new();
+        gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE);
+        gtk_box_pack_start(GTK_BOX(filename_vbox), filename_entry, TRUE,
+                           TRUE, 0);
+
+        hbox = gtk_hbox_new(FALSE, 0);
+        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
+
+        /* tagging information */
+        id3_frame = gtk_frame_new(_("Song Metadata"));
+        gtk_box_pack_start(GTK_BOX(vbox), id3_frame, FALSE, TRUE, 0);
+
+        table = gtk_table_new(7, 5, FALSE);
+        gtk_container_set_border_width(GTK_CONTAINER(table), 5);
+        gtk_container_add(GTK_CONTAINER(id3_frame), table);
+
+        label = gtk_label_new(_("Title:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        title_entry = gtk_entry_new();
+        gtk_table_attach(GTK_TABLE(table), title_entry, 1, 6, 0, 1,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        label = gtk_label_new(_("Artist:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        artist_entry = gtk_entry_new();
+        gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 6, 1, 2,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        label = gtk_label_new(_("Album:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        album_entry = gtk_entry_new();
+        gtk_table_attach(GTK_TABLE(table), album_entry, 1, 6, 2, 3,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        label = gtk_label_new(_("Comment:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        comment_entry = gtk_entry_new();
+        gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 6, 3, 4,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        label = gtk_label_new(_("Year:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        year_entry = gtk_entry_new();
+        gtk_entry_set_width_chars(GTK_ENTRY(year_entry),4);
+        gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 4, 5,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        label = gtk_label_new(_("Track number:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        tracknum_entry = gtk_entry_new();
+        gtk_widget_set_usize(tracknum_entry, 40, -1);
+        gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+
+        pango_attr_list_unref(attrs);
+
+#if 0
+        label = gtk_label_new(_("Genre:"));
+        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
+        gtk_label_set_attributes(GTK_LABEL(label), attrs);
+        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL,
+                         GTK_FILL, 5, 5);
+
+        genre_combo = gtk_combo_new();
+        gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry),
+                               FALSE);
+        if (!genre_list) {
+            for (i = 0; i < GENRE_MAX; i++)
+                genre_list =
+                    g_list_prepend(genre_list,
+                                   (gchar *) mpg123_id3_genres[i]);
+            genre_list = g_list_prepend(genre_list, "");
+            genre_list = g_list_sort(genre_list, genre_comp_func);
+        }
+        gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo), genre_list);
+
+        gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 6, 5, 6,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
+                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
+#endif
+
+        boxx = gtk_hbutton_box_new();
+        gtk_hbutton_box_set_layout_default(GTK_BUTTONBOX_SPREAD);
+
+        bbox = gtk_hbutton_box_new();
+        gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+        gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+        gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
+
+        cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+        g_signal_connect_swapped(G_OBJECT(cancel), "clicked",
+                                 G_CALLBACK(gtk_widget_destroy),
+                                 G_OBJECT(window));
+        GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
+        gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0);
+        gtk_widget_grab_default(cancel);
+
+
+        gtk_table_set_col_spacing(GTK_TABLE(left_vbox), 1, 10);
+
+
+        g_signal_connect_swapped(G_OBJECT(title_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+        g_signal_connect_swapped(G_OBJECT(artist_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+        g_signal_connect_swapped(G_OBJECT(album_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+        g_signal_connect_swapped(G_OBJECT(year_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+        g_signal_connect_swapped(G_OBJECT(comment_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+        g_signal_connect_swapped(G_OBJECT(tracknum_entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+#if 0
+        g_signal_connect_swapped(G_OBJECT(GTK_COMBO(genre_combo)->entry), "changed",
+                                 G_CALLBACK(change_buttons), save);
+#endif
+        g_signal_connect(G_OBJECT(window), "key_press_event",
+                         G_CALLBACK(fileinfo_keypress_cb), NULL);
+    }
+
+    g_free(current_filename);
+    current_filename = g_strdup(filename);
+
+    filename_utf8 = filename_to_utf8(filename);
+
+    title = g_strdup_printf(_("%s - Audacious"), g_basename(filename_utf8));
+    gtk_window_set_title(GTK_WINDOW(window), title);
+    g_free(title);
+
+    gtk_entry_set_text(GTK_ENTRY(filename_entry), filename_utf8);
+    g_free(filename_utf8);
+
+    gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1);
+
+    gtk_entry_set_text(GTK_ENTRY(artist_entry), "");
+    gtk_entry_set_text(GTK_ENTRY(album_entry), "");
+    gtk_entry_set_text(GTK_ENTRY(year_entry), "");
+    gtk_entry_set_text(GTK_ENTRY(tracknum_entry), "");
+    gtk_entry_set_text(GTK_ENTRY(comment_entry), "");
+
+#if 0
+    gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list),
+                         g_list_index(genre_list, ""));
+#endif
+
+    gtk_widget_set_sensitive(id3_frame,
+                             vfs_is_writeable(filename));
+
+    gtk_widget_set_sensitive(GTK_WIDGET(save), FALSE);
+
+    /* Ok! Lets set the information now. */
+
+    if ((mp4file = MP4Read(filename, 0)) != NULL)
+    {
+        gtk_entry_set_text(GTK_ENTRY(artist_entry), audmp4_get_artist(mp4file));
+        gtk_entry_set_text(GTK_ENTRY(title_entry), audmp4_get_title(mp4file));
+        gtk_entry_set_text(GTK_ENTRY(year_entry), g_strdup_printf("%d", audmp4_get_year(mp4file)));
+	gtk_entry_set_text(GTK_ENTRY(album_entry), audmp4_get_album(mp4file));
+    }
+
+    gtk_widget_show_all(window);
+}
--- a/Plugins/Input/aac/src/libmp4.c	Mon Dec 26 00:38:59 2005 -0800
+++ b/Plugins/Input/aac/src/libmp4.c	Mon Dec 26 01:16:45 2005 -0800
@@ -36,7 +36,7 @@
 static void	mp4_seek(int);
 static int	mp4_getTime(void);
 static void	mp4_cleanup(void);
-static void	mp4_getSongInfo(char *);
+static void     audmp4_file_info_box(gchar *);
 static int	mp4_isFile(char *);
 static void	mp4_getSongTitle(char *filename, char **, int *);
 static void*	mp4Decode(void *);
@@ -65,7 +65,7 @@
     0,	// set player window info
     0,	// set song title text
     mp4_getSongTitle,	// get song title text
-    mp4_getSongInfo, // info box
+    audmp4_file_info_box, // info box
     0,	// to output plugin
   };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/Input/aac/src/mp3.xpm	Mon Dec 26 01:16:45 2005 -0800
@@ -0,0 +1,963 @@
+/* XPM */
+static char * gnome_mime_audio_xpm[] = {
+"48 52 908 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #010100",
+"@ 	c #020201",
+"# 	c #030201",
+"$ 	c #232323",
+"% 	c #1F1F1F",
+"& 	c #DADADA",
+"* 	c #FFFFFF",
+"= 	c #F6F6F6",
+"- 	c #CFCFCF",
+"; 	c #707070",
+"> 	c #FFFFFE",
+", 	c #FEFEFE",
+"' 	c #FBFBFB",
+") 	c #EDEDED",
+"! 	c #C0C0C0",
+"~ 	c #FFFEFE",
+"{ 	c #F8F5F2",
+"] 	c #EBE7E1",
+"^ 	c #ECEDE8",
+"/ 	c #ECEFEA",
+"( 	c #E6E9E4",
+"_ 	c #CED0CE",
+": 	c #BCBFBC",
+"< 	c #F0F0EF",
+"[ 	c #FEFEFD",
+"} 	c #F7F7F7",
+"| 	c #D7D7D7",
+"1 	c #F1F1F1",
+"2 	c #B7B7B7",
+"3 	c #EAEDEA",
+"4 	c #8EA299",
+"5 	c #697D70",
+"6 	c #546459",
+"7 	c #404D44",
+"8 	c #2C352F",
+"9 	c #4E5649",
+"0 	c #D6D8D3",
+"a 	c #D2D2D2",
+"b 	c #AEAEAE",
+"c 	c #070707",
+"d 	c #FCFCFB",
+"e 	c #6D7C75",
+"f 	c #5A5D4C",
+"g 	c #6B735F",
+"h 	c #6E7B63",
+"i 	c #5B6052",
+"j 	c #4A5042",
+"k 	c #CED0CB",
+"l 	c #FEFDFD",
+"m 	c #FDFDFD",
+"n 	c #B8B8B8",
+"o 	c #DCDCDC",
+"p 	c #A4A4A3",
+"q 	c #0E0E0E",
+"r 	c #8A928F",
+"s 	c #6A7F68",
+"t 	c #4D564E",
+"u 	c #4E5950",
+"v 	c #585E57",
+"w 	c #333530",
+"x 	c #9D9C9B",
+"y 	c #FCFDFE",
+"z 	c #FDFEFE",
+"A 	c #FDFDFE",
+"B 	c #F5F5F4",
+"C 	c #B5B5B5",
+"D 	c #F9F9F9",
+"E 	c #FCFCFC",
+"F 	c #CBCBCB",
+"G 	c #A5A5A5",
+"H 	c #CECDCB",
+"I 	c #788976",
+"J 	c #C6BDBB",
+"K 	c #E2E2E2",
+"L 	c #E2E0DF",
+"M 	c #656A65",
+"N 	c #4A4B49",
+"O 	c #EAEDF1",
+"P 	c #CED5DD",
+"Q 	c #DBE0E9",
+"R 	c #DDE1E9",
+"S 	c #D3D7DD",
+"T 	c #D9DCE1",
+"U 	c #F4F4F4",
+"V 	c #ACACAC",
+"W 	c #ECECEC",
+"X 	c #C3C3C3",
+"Y 	c #C2C2C2",
+"Z 	c #C9C9C8",
+"` 	c #A8A8A8",
+" .	c #F6F8F6",
+"..	c #A7ADA5",
+"+.	c #6D7F71",
+"@.	c #ECECE9",
+"#.	c #FDFDFC",
+"$.	c #939C9A",
+"%.	c #1B2321",
+"&.	c #FCFBFA",
+"*.	c #F2F6F9",
+"=.	c #B4BFCC",
+"-.	c #7E8A9B",
+";.	c #515B6F",
+">.	c #50596A",
+",.	c #737D8D",
+"'.	c #BEC6CE",
+").	c #C4CBD5",
+"!.	c #BFC5D1",
+"~.	c #F1F2F4",
+"{.	c #F4F4F3",
+"].	c #ABABAB",
+"^.	c #515151",
+"/.	c #474747",
+"(.	c #464645",
+"_.	c #464646",
+":.	c #5D5D5C",
+"<.	c #A9A9A9",
+"[.	c #FAFAF9",
+"}.	c #EDEFF0",
+"|.	c #F1F5F5",
+"1.	c #636E62",
+"2.	c #636E5F",
+"3.	c #D4D5D3",
+"4.	c #FBF7F4",
+"5.	c #9BA595",
+"6.	c #657366",
+"7.	c #001514",
+"8.	c #FCFAF8",
+"9.	c #FDFCFC",
+"0.	c #FBF9F7",
+"a.	c #E3E6EA",
+"b.	c #9DACBF",
+"c.	c #515A6D",
+"d.	c #111828",
+"e.	c #131B29",
+"f.	c #0F1A2B",
+"g.	c #081125",
+"h.	c #0D1328",
+"i.	c #C2C9D1",
+"j.	c #C5CBD4",
+"k.	c #A6AEBB",
+"l.	c #F6F6F7",
+"m.	c #FAFAFA",
+"n.	c #F2F2F2",
+"o.	c #F3F3F3",
+"p.	c #AAAAAA",
+"q.	c #A0A09F",
+"r.	c #8A8A8A",
+"s.	c #7A7A7A",
+"t.	c #6C6C6C",
+"u.	c #454545",
+"v.	c #ABB3AF",
+"w.	c #A8B6A3",
+"x.	c #D0DBD0",
+"y.	c #F2F3F0",
+"z.	c #DEE1E0",
+"A.	c #66736A",
+"B.	c #354336",
+"C.	c #556254",
+"D.	c #C5C7C6",
+"E.	c #F2EDEA",
+"F.	c #CADAD9",
+"G.	c #9BA893",
+"H.	c #1B3128",
+"I.	c #FCF4EF",
+"J.	c #FDFBF9",
+"K.	c #DDDFE4",
+"L.	c #97A3B4",
+"M.	c #374152",
+"N.	c #0D131C",
+"O.	c #1C2026",
+"P.	c #262C3A",
+"Q.	c #242E43",
+"R.	c #202D41",
+"S.	c #172538",
+"T.	c #121523",
+"U.	c #BABCC3",
+"V.	c #9DA6B5",
+"W.	c #BABEC4",
+"X.	c #F8F8F7",
+"Y.	c #E7E7E7",
+"Z.	c #C6C6C5",
+"`.	c #BABAB9",
+" +	c #E7E9E9",
+".+	c #63736C",
+"++	c #464945",
+"@+	c #5F7361",
+"#+	c #CED4C3",
+"$+	c #DBDEDA",
+"%+	c #979999",
+"&+	c #404342",
+"*+	c #606E6B",
+"=+	c #E5E5E3",
+"-+	c #4B5F52",
+";+	c #455845",
+">+	c #2D362F",
+",+	c #FCFAF9",
+"'+	c #E4E4E7",
+")+	c #97A8B9",
+"!+	c #343C4A",
+"~+	c #13181E",
+"{+	c #1B2027",
+"]+	c #1D232B",
+"^+	c #1F2632",
+"/+	c #212A3C",
+"(+	c #242F45",
+"_+	c #2A374D",
+":+	c #121C2F",
+"<+	c #525A67",
+"[+	c #D9DDE5",
+"}+	c #737C8C",
+"|+	c #EAEBEB",
+"1+	c #F7F7F6",
+"2+	c #F6F6F5",
+"3+	c #F5F5F5",
+"4+	c #EDEDEB",
+"5+	c #FBFBFA",
+"6+	c #6C8175",
+"7+	c #778673",
+"8+	c #121613",
+"9+	c #4C504A",
+"0+	c #8FA695",
+"a+	c #E2DCD8",
+"b+	c #E5E6E7",
+"c+	c #FBFAF9",
+"d+	c #CAC6C1",
+"e+	c #847F79",
+"f+	c #FCFAFA",
+"g+	c #ECE9E9",
+"h+	c #A6B1C4",
+"i+	c #232B37",
+"j+	c #12171E",
+"k+	c #191F27",
+"l+	c #1D222B",
+"m+	c #1E242B",
+"n+	c #1E252F",
+"o+	c #202937",
+"p+	c #232F44",
+"q+	c #283853",
+"r+	c #253046",
+"s+	c #0A1526",
+"t+	c #D5D7DB",
+"u+	c #727D90",
+"v+	c #CFD0D2",
+"w+	c #B1B1B1",
+"x+	c #99A597",
+"y+	c #7B9173",
+"z+	c #65705D",
+"A+	c #1F201B",
+"B+	c #58655E",
+"C+	c #F3F2F1",
+"D+	c #AAB3C1",
+"E+	c #525C6D",
+"F+	c #0A0F17",
+"G+	c #1C2129",
+"H+	c #1E242A",
+"I+	c #1E242C",
+"J+	c #1F232D",
+"K+	c #232E41",
+"L+	c #2B3855",
+"M+	c #2C3B57",
+"N+	c #070D1F",
+"O+	c #A3ABB6",
+"P+	c #828EA0",
+"Q+	c #B9BCC2",
+"R+	c #F3F3F2",
+"S+	c #F1EFEC",
+"T+	c #72886D",
+"U+	c #4E5849",
+"V+	c #748268",
+"W+	c #808080",
+"X+	c #D6D9DE",
+"Y+	c #5E6A7A",
+"Z+	c #121621",
+"`+	c #161D26",
+" @	c #1D242C",
+".@	c #1F242B",
+"+@	c #1E2427",
+"@@	c #212C3F",
+"#@	c #283552",
+"$@	c #2F405D",
+"%@	c #0E162B",
+"&@	c #59657B",
+"*@	c #8A98AA",
+"=@	c #AFB4BC",
+"-@	c #F2F2F1",
+";@	c #7D9074",
+">@	c #494949",
+",@	c #676D65",
+"'@	c #C8CBC7",
+")@	c #818B9B",
+"!@	c #1B232F",
+"~@	c #0F151F",
+"{@	c #1B212B",
+"]@	c #1E232D",
+"^@	c #20252C",
+"/@	c #24272C",
+"(@	c #1F2429",
+"_@	c #1C2228",
+":@	c #1F2A3C",
+"<@	c #1F2A40",
+"[@	c #25344E",
+"}@	c #314464",
+"|@	c #15223A",
+"1@	c #34445E",
+"2@	c #939FB3",
+"3@	c #ACB2BC",
+"4@	c #F1F1F0",
+"5@	c #ECEEEB",
+"6@	c #B8BCB7",
+"7@	c #647C65",
+"8@	c #797E78",
+"9@	c #C4C3C2",
+"0@	c #919191",
+"a@	c #DCE3EA",
+"b@	c #242C3D",
+"c@	c #0B101C",
+"d@	c #1A212A",
+"e@	c #1F242C",
+"f@	c #21252C",
+"g@	c #222629",
+"h@	c #1C232A",
+"i@	c #212B3D",
+"j@	c #33415B",
+"k@	c #27344B",
+"l@	c #212F47",
+"m@	c #374A68",
+"n@	c #1A2840",
+"o@	c #34445F",
+"p@	c #96A3B5",
+"q@	c #B3B7C0",
+"r@	c #F2F2F0",
+"s@	c #F0F0F0",
+"t@	c #E2E7E2",
+"u@	c #939E92",
+"v@	c #50644E",
+"w@	c #3D443E",
+"x@	c #D4D2CF",
+"y@	c #7F8898",
+"z@	c #020A14",
+"A@	c #171E28",
+"B@	c #1C222A",
+"C@	c #1E232B",
+"D@	c #1F242D",
+"E@	c #1F2228",
+"F@	c #1D2328",
+"G@	c #283449",
+"H@	c #4A5C7B",
+"I@	c #697D98",
+"J@	c #4D5D79",
+"K@	c #1F2D45",
+"L@	c #394A6B",
+"M@	c #1B2943",
+"N@	c #425371",
+"O@	c #95A3B5",
+"P@	c #B8BDC2",
+"Q@	c #EFEFEE",
+"R@	c #EFEFED",
+"S@	c #EDEEED",
+"T@	c #EFF0F0",
+"U@	c #F7FCF3",
+"V@	c #313F30",
+"W@	c #1C2120",
+"X@	c #C9CBC9",
+"Y@	c #F9F9F8",
+"Z@	c #E9EEF2",
+"`@	c #3C4352",
+" #	c #0C111D",
+".#	c #1E232E",
+"+#	c #1D212A",
+"@#	c #20242C",
+"##	c #1B1D20",
+"$#	c #263043",
+"%#	c #576886",
+"&#	c #8396B1",
+"*#	c #7A8FAD",
+"=#	c #677B99",
+"-#	c #28374F",
+";#	c #384A69",
+">#	c #182642",
+",#	c #5D708F",
+"'#	c #828FA3",
+")#	c #C5C7CB",
+"!#	c #F1F1EF",
+"~#	c #EEEEED",
+"{#	c #EEEEEC",
+"]#	c #9DA7A4",
+"^#	c #2A3B34",
+"/#	c #222725",
+"(#	c #80807E",
+"_#	c #EFEEEC",
+":#	c #F1F0EF",
+"<#	c #F4F3F2",
+"[#	c #F8F8F8",
+"}#	c #A8AFBB",
+"|#	c #0D1522",
+"1#	c #1A212E",
+"2#	c #1D232C",
+"3#	c #21252D",
+"4#	c #1E2327",
+"5#	c #171B20",
+"6#	c #637593",
+"7#	c #95A6BE",
+"8#	c #6D7F9C",
+"9#	c #617395",
+"0#	c #5A6E8B",
+"a#	c #2A354A",
+"b#	c #3D4E6D",
+"c#	c #1C2A46",
+"d#	c #748DAB",
+"e#	c #6D798A",
+"f#	c #DEDFE0",
+"g#	c #EEEEEE",
+"h#	c #EDEDEC",
+"i#	c #ECEAE7",
+"j#	c #ADB1B0",
+"k#	c #B5B9BA",
+"l#	c #F1F0F0",
+"m#	c #F9F8F8",
+"n#	c #F7F5F4",
+"o#	c #A7AAA4",
+"p#	c #B7BAB4",
+"q#	c #F7F6F6",
+"r#	c #ECEFF1",
+"s#	c #747F8E",
+"t#	c #0A121E",
+"u#	c #232C3A",
+"v#	c #1D232E",
+"w#	c #222932",
+"x#	c #1B1D21",
+"y#	c #1C273E",
+"z#	c #C1CFE1",
+"A#	c #8FA1B7",
+"B#	c #6D81A0",
+"C#	c #596D93",
+"D#	c #455674",
+"E#	c #293343",
+"F#	c #4A5C7D",
+"G#	c #304060",
+"H#	c #7690B8",
+"I#	c #5D6878",
+"J#	c #BBC0CC",
+"K#	c #ECECEB",
+"L#	c #F6F4F3",
+"M#	c #F4F1EF",
+"N#	c #F7F5F3",
+"O#	c #F9F8F7",
+"P#	c #BBBDB9",
+"Q#	c #4D5852",
+"R#	c #71746D",
+"S#	c #F0EAE7",
+"T#	c #DBDEE3",
+"U#	c #3E495B",
+"V#	c #1C2435",
+"W#	c #273041",
+"X#	c #283040",
+"Y#	c #293141",
+"Z#	c #262B38",
+"`#	c #1D212D",
+" $	c #4A5B77",
+".$	c #CFDBEB",
+"+$	c #7A8FAC",
+"@$	c #6C83A5",
+"#$	c #4D6389",
+"$$	c #35445E",
+"%$	c #404D60",
+"&$	c #506586",
+"*$	c #4F6687",
+"=$	c #6983AB",
+"-$	c #343E50",
+";$	c #4D5F7A",
+">$	c #B8C0CC",
+",$	c #F7F6F5",
+"'$	c #D2D6D3",
+")$	c #6C866F",
+"!$	c #5A715E",
+"~$	c #566758",
+"{$	c #B5C1B4",
+"]$	c #B2BAC8",
+"^$	c #273245",
+"/$	c #29354A",
+"($	c #323D53",
+"_$	c #364258",
+":$	c #333F52",
+"<$	c #343F52",
+"[$	c #28354A",
+"}$	c #6D7B92",
+"|$	c #ACBDD2",
+"1$	c #5B7297",
+"2$	c #495F87",
+"3$	c #3A4D6B",
+"4$	c #252F44",
+"5$	c #8292AC",
+"6$	c #586E94",
+"7$	c #6782A9",
+"8$	c #37404D",
+"9$	c #394860",
+"0$	c #475977",
+"a$	c #6E7E99",
+"b$	c #EBEBEA",
+"c$	c #BEC3BE",
+"d$	c #CFD1CE",
+"e$	c #F4F2F0",
+"f$	c #7D8F84",
+"g$	c #6A8667",
+"h$	c #D5D8D4",
+"i$	c #6B6B6B",
+"j$	c #9E9E9F",
+"k$	c #7A8EA8",
+"l$	c #2B374D",
+"m$	c #313E56",
+"n$	c #34425B",
+"o$	c #36425A",
+"p$	c #354257",
+"q$	c #39465D",
+"r$	c #3B4963",
+"s$	c #64738B",
+"t$	c #768CAD",
+"u$	c #354C72",
+"v$	c #2E3D5B",
+"w$	c #1D273A",
+"x$	c #3D4655",
+"y$	c #A7BACE",
+"z$	c #607799",
+"A$	c #617494",
+"B$	c #191B1B",
+"C$	c #445675",
+"D$	c #3A4A65",
+"E$	c #6C7A91",
+"F$	c #ECECEA",
+"G$	c #EAEAE9",
+"H$	c #EAEAE8",
+"I$	c #F7F6F4",
+"J$	c #B5B9B6",
+"K$	c #D7DCD9",
+"L$	c #7B8982",
+"M$	c #A9AEAD",
+"N$	c #517257",
+"O$	c #839284",
+"P$	c #DEDEDD",
+"Q$	c #D8D9D9",
+"R$	c #F3F2EE",
+"S$	c #51698C",
+"T$	c #313F55",
+"U$	c #35435B",
+"V$	c #36445A",
+"W$	c #35425C",
+"X$	c #37465D",
+"Y$	c #3D4A62",
+"Z$	c #516079",
+"`$	c #47536A",
+" %	c #354561",
+".%	c #212F46",
+"+%	c #0F1624",
+"@%	c #1A2231",
+"#%	c #99A5B7",
+"$%	c #97A8C3",
+"%%	c #6A7DA0",
+"&%	c #394559",
+"*%	c #1C1D26",
+"=%	c #35435C",
+"-%	c #344159",
+";%	c #8E96A2",
+">%	c #E9E9E8",
+",%	c #E9E9E7",
+"'%	c #F6F5F5",
+")%	c #70827F",
+"!%	c #C6D0C3",
+"~%	c #445344",
+"{%	c #637161",
+"]%	c #4B6C4C",
+"^%	c #CAC8C8",
+"/%	c #3D5271",
+"(%	c #3A4863",
+"_%	c #384862",
+":%	c #3E4C65",
+"<%	c #424D67",
+"[%	c #45536C",
+"}%	c #4D5A74",
+"|%	c #66768F",
+"1%	c #76869D",
+"2%	c #2A3243",
+"3%	c #151A27",
+"4%	c #252C3A",
+"5%	c #B2BBCE",
+"6%	c #C3D0E3",
+"7%	c #7B8CA9",
+"8%	c #51627E",
+"9%	c #171C22",
+"0%	c #141920",
+"a%	c #242C3A",
+"b%	c #3F4B60",
+"c%	c #BDC0C6",
+"d%	c #EBEBE9",
+"e%	c #D1D7D3",
+"f%	c #4F5753",
+"g%	c #27322D",
+"h%	c #57655B",
+"i%	c #7E8B86",
+"j%	c #F0EFED",
+"k%	c #3E516C",
+"l%	c #3F4E68",
+"m%	c #3C4A64",
+"n%	c #4C5A74",
+"o%	c #55637C",
+"p%	c #5A6881",
+"q%	c #707D95",
+"r%	c #8493A6",
+"s%	c #BFC8D8",
+"t%	c #D8E4F0",
+"u%	c #CCD5E4",
+"v%	c #E2E8F1",
+"w%	c #D2DAE9",
+"x%	c #8D9DB7",
+"y%	c #526380",
+"z%	c #323E53",
+"A%	c #080B11",
+"B%	c #0E1217",
+"C%	c #272E3A",
+"D%	c #747D8A",
+"E%	c #D6D7D8",
+"F%	c #E8E8E7",
+"G%	c #E8E8E6",
+"H%	c #D2D2D0",
+"I%	c #B3B7B4",
+"J%	c #BFC1BF",
+"K%	c #EBE8E7",
+"L%	c #5A718E",
+"M%	c #3F4C65",
+"N%	c #38475F",
+"O%	c #68768E",
+"P%	c #6E7C92",
+"Q%	c #78879B",
+"R%	c #959FB1",
+"S%	c #AAB4C1",
+"T%	c #C4CBD8",
+"U%	c #D7DCE6",
+"V%	c #D3D9E1",
+"W%	c #CCD3DC",
+"X%	c #8C9CB4",
+"Y%	c #52627B",
+"Z%	c #38475E",
+"`%	c #080E1A",
+" &	c #060910",
+".&	c #0E0F14",
+"+&	c #4F5869",
+"@&	c #B6B8BC",
+"#&	c #DDDDDC",
+"$&	c #E2E2E1",
+"%&	c #E5E5E4",
+"&&	c #E6E6E5",
+"*&	c #F2F1F1",
+"=&	c #F2F1F0",
+"-&	c #93A8C2",
+";&	c #2F3E56",
+">&	c #6C7A93",
+",&	c #939EAE",
+"'&	c #A9B3C0",
+")&	c #BDC3CB",
+"!&	c #C8CCD2",
+"~&	c #CDCFD5",
+"{&	c #CBD2DB",
+"]&	c #C7CFDC",
+"^&	c #A4B2C7",
+"/&	c #4C576D",
+"(&	c #262C3C",
+"_&	c #252D3B",
+":&	c #232C3D",
+"<&	c #323B4B",
+"[&	c #464B5A",
+"}&	c #959697",
+"|&	c #BDBDBC",
+"1&	c #C9C9C9",
+"2&	c #D6D6D5",
+"3&	c #E2E2E0",
+"4&	c #E7E7E6",
+"5&	c #E6E6E4",
+"6&	c #C8D6E7",
+"7&	c #515D76",
+"8&	c #33415A",
+"9&	c #66728A",
+"0&	c #C0C7D2",
+"a&	c #CACED7",
+"b&	c #CCCDD2",
+"c&	c #CBCED1",
+"d&	c #C8CED3",
+"e&	c #C2CDDB",
+"f&	c #A2B1C5",
+"g&	c #586377",
+"h&	c #181F27",
+"i&	c #363B40",
+"j&	c #575857",
+"k&	c #626261",
+"l&	c #656463",
+"m&	c #787877",
+"n&	c #929291",
+"o&	c #9F9F9D",
+"p&	c #B0B0AE",
+"q&	c #C3C3C2",
+"r&	c #D1D1D0",
+"s&	c #DCDCDB",
+"t&	c #DFE4EB",
+"u&	c #5F708B",
+"v&	c #717E92",
+"w&	c #4F5E78",
+"x&	c #8391A4",
+"y&	c #A9B4C2",
+"z&	c #B1BBC5",
+"A&	c #BAC3CE",
+"B&	c #D5DDE8",
+"C&	c #9EA7B9",
+"D&	c #444D63",
+"E&	c #1F242F",
+"F&	c #2D2F33",
+"G&	c #424242",
+"H&	c #4D4D4D",
+"I&	c #515150",
+"J&	c #575756",
+"K&	c #60605F",
+"L&	c #747473",
+"M&	c #838381",
+"N&	c #989897",
+"O&	c #B3B3B2",
+"P&	c #C6C6C4",
+"Q&	c #D3D3D2",
+"R&	c #F0EFEE",
+"S&	c #D0D1D3",
+"T&	c #959FB4",
+"U&	c #5B697E",
+"V&	c #9DA7B7",
+"W&	c #D8DEE4",
+"X&	c #D4DAE1",
+"Y&	c #DBE1E5",
+"Z&	c #DBDDE3",
+"`&	c #818894",
+" *	c #1E293A",
+".*	c #1B222B",
+"+*	c #222425",
+"@*	c #313131",
+"#*	c #343434",
+"$*	c #363635",
+"%*	c #3A3A3A",
+"&*	c #40403F",
+"**	c #484847",
+"=*	c #585858",
+"-*	c #6B6B6A",
+";*	c #838382",
+">*	c #A5A5A3",
+",*	c #BCBCBA",
+"'*	c #CFCFCE",
+")*	c #EFEFEF",
+"!*	c #E3E3E2",
+"~*	c #D9D9D8",
+"{*	c #BCBCBB",
+"]*	c #9DA0A4",
+"^*	c #616678",
+"/*	c #2F3A4F",
+"(*	c #2C3649",
+"_*	c #394250",
+":*	c #111923",
+"<*	c #010613",
+"[*	c #0A0F16",
+"}*	c #1F2225",
+"|*	c #262628",
+"1*	c #282828",
+"2*	c #292828",
+"3*	c #292929",
+"4*	c #2D2D2C",
+"5*	c #2F2F2F",
+"6*	c #343433",
+"7*	c #3D3D3C",
+"8*	c #5C5C5C",
+"9*	c #A1A1A0",
+"0*	c #B9B9B8",
+"a*	c #CECECC",
+"b*	c #E4E4E2",
+"c*	c #D7D7D5",
+"d*	c #989896",
+"e*	c #717174",
+"f*	c #464B51",
+"g*	c #2F353C",
+"h*	c #23272C",
+"i*	c #222529",
+"j*	c #25272A",
+"k*	c #2E2F31",
+"l*	c #313030",
+"m*	c #313130",
+"n*	c #333332",
+"o*	c #363636",
+"p*	c #3C3C3C",
+"q*	c #545454",
+"r*	c #686867",
+"s*	c #848483",
+"t*	c #A8A8A7",
+"u*	c #C0C0BE",
+"v*	c #D3D3D1",
+"w*	c #D9D9D7",
+"x*	c #C0C0BF",
+"y*	c #A3A3A2",
+"z*	c #888886",
+"A*	c #6E6D6C",
+"B*	c #5F6061",
+"C*	c #585859",
+"D*	c #525252",
+"E*	c #A3A3A1",
+"F*	c #A2A2A0",
+"G*	c #A2A1A0",
+"H*	c #A2A2A1",
+"I*	c #A3A2A1",
+"J*	c #A4A3A2",
+"K*	c #A4A4A2",
+"L*	c #A6A6A4",
+"M*	c #A9A8A6",
+"N*	c #ABAAA8",
+"O*	c #AFAEAB",
+"P*	c #B3B1AE",
+"Q*	c #B5B4B1",
+"R*	c #B8B6B2",
+"S*	c #BAB8B4",
+"T*	c #6E6B62",
+"U*	c #DEDEDC",
+"V*	c #D1D1CF",
+"W*	c #BFBFBE",
+"X*	c #AFAFAF",
+"Y*	c #9F9F9F",
+"Z*	c #919190",
+"`*	c #888888",
+" =	c #302E28",
+".=	c #2E2C27",
+"+=	c #2D2B26",
+"@=	c #312F29",
+"#=	c #33312B",
+"$=	c #36332D",
+"%=	c #38362F",
+"&=	c #3D3A33",
+"*=	c #413E36",
+"==	c #47433B",
+"-=	c #4D4940",
+";=	c #514D44",
+">=	c #535046",
+",=	c #565248",
+"'=	c #23211D",
+")=	c #EBEAE9",
+"!=	c #DADAD9",
+"~=	c #C9C9C7",
+"{=	c #B6B6B6",
+"]=	c #B2B0AD",
+"^=	c #423F37",
+"/=	c #E3E2E1",
+"(=	c #4E4B44",
+"_=	c #403D36",
+":=	c #413E37",
+"<=	c #908E8A",
+"[=	c #46433B",
+"}=	c #D8D7D5",
+"|=	c #75726A",
+"1=	c #ACAAA5",
+"2=	c #D7D6D3",
+"3=	c #DBDAD8",
+"4=	c #86837C",
+"5=	c #D5D5D4",
+"6=	c #B6B5B1",
+"7=	c #4E4A41",
+"8=	c #D5D4D2",
+"9=	c #514E46",
+"0=	c #5E5B52",
+"a=	c #504D43",
+"b=	c #545147",
+"c=	c #8A8780",
+"d=	c #E3E3E1",
+"e=	c #D2D1CE",
+"f=	c #7B7770",
+"g=	c #58544A",
+"h=	c #7C7971",
+"i=	c #E7E7E5",
+"j=	c #CCCBC8",
+"k=	c #C4C2BF",
+"l=	c #C4C3BF",
+"m=	c #FBFAFA",
+"n=	c #817E76",
+"o=	c #D1D0CD",
+"p=	c #67635A",
+"q=	c #F5F4F4",
+"r=	c #67645B",
+"s=	c #908E87",
+"t=	c #E5E4E3",
+"u=	c #6F6C63",
+"v=	c #8B8881",
+"w=	c #C0BEBA",
+"x=	c #8C8982",
+"y=	c #C8C7C4",
+"z=	c #656259",
+"A=	c #77736B",
+"B=	c #E4E4E3",
+"C=	c #D3D2CF",
+"D=	c #76736B",
+"E=	c #59554B",
+"F=	c #E7E6E5",
+"G=	c #AFADA8",
+"H=	c #DFDFDD",
+"I=	c #D0CFCC",
+"J=	c #736F67",
+"K=	c #A9A9A7",
+"L=	c #8D8D8D",
+"M=	c #E1E1DF",
+"N=	c #9A9A9A",
+"O=	c #8C8C8C",
+"  . . . . . . . . . . . . . + @ # + . . . . . . . . . . . . . . . . . $ %                       ",
+". & * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = - ; .                   ",
+". * * * * * * * * * * * * * * * * * * * > * * , , , , , , , , , , , , ' = ) ! .                 ",
+". * * * * * * ~ * * { ] ^ / ( _ : < * * * , [ [ , , , , , , , , , , , } | * 1 2 .               ",
+". * * * * * * ~ * * 3 4 5 6 7 8 9 0 * , , , , , , , , , , , , , , , , } a * * ) b c             ",
+". * * * * * * * * * d e f g h i j k , , , , , l , , , , , , , , , m m = n * m * o p q           ",
+". * * * * * * * * * * r s t u v w x , , , , , l , , y z A m m m m m m B C * D E * F G .         ",
+". * * * * * * * * * * H I J K L M N , , , , l m z O P Q R S T ' E E E U V W X F n Y Z ` .       ",
+". * * * * * * * * m  ...+.@., #.$.%., , , , &.*.=.-.;.>.,.'.).!.~.E d {.].^./.(._._.:.<..       ",
+". * * * * [. .m * }.|.1.2.3.4.5.6.7.8.m 9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.! p.q.r.s.t.u..       ",
+". * * , n.v.w.x.y.z.A.B.C.D.E.F.G.H.I.m J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.D ' } } Y.Z.Z `.s..       ",
+". * * ,  +.+++@+#+$+%+&+*+=+E -+;+>+,+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+} X.1+2+3+3+3+4+<..       ",
+". * * , 5+6+7+8+9+0+1 a+b+c+E d+e+` f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+= } 3+3+B B o.o.w+.       ",
+". * , , 9.x+y+z+A+B+c+E E E E E E d C+D+E+F+G+l+m+H+I+J+K+L+M+N+O+P+Q+B B B U {.o.R+R+C .       ",
+". * m m m S+T+U+V+W+X.E E d ' ' ' ' X+Y+Z+`+ @I+.@.@+@^+@@#@$@%@&@*@=@o.U {.R+R+R+-@-@C .       ",
+". * m #.E ' ;@>@,@'@5+' ' ' ' 5+5+m.)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@{.R+R+n.n.-@4@4@C .       ",
+". * E ' 5@6@7@8@9@0@} ' 5+5+m.m.m.a@b@c@d@l+e@f@g@h@i@j@k@l@m@n@o@p@q@n.n.-@r@4@4@s@s@C .       ",
+". * d [.t@u@v@w@x@{.m.m.m.m.m.[.m.y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@-@-@r@s@s@< Q@R@C .       ",
+". * ' S@T@U@V@W@X@m.m.[.[.[.D Y@Z@`@ #.#+#@#D@##$#%#&#*#=#-#;#>#,#'#)#4@!#< < Q@~#~#{#C .       ",
+". * 5+3+]#^#/#(#_#[.D :#<#D X.[#}#|#1#2#3#f@4#5#6#7#8#9#0#a#b#c#d#e#f#< < g#g#~#{#h#h#C .       ",
+". * m.X.i#j#k#l#m#D n#o#p#q#} r#s#t#u#v#w#^@x#y#z#A#B#C#D#E#F#G#H#I#J#|+~#~#{#h#h#W K#C .       ",
+". * [.L#M#N#[#O#O#1+P#Q#R#S#1+T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$;$>${#h#4+4+K#K#K#C .       ",
+". * D ,$X.Y@[#[#} '$)$!$~${$3+]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$4+4+K#K#b$b$b$C .       ",
+". * [#[#[#n#c$d$e$f$g$h$i$j${.k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$K#F$b$b$b$G$H$C .       ",
+". * X.1+I$J$K$L$M$N$O$< P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%b$b$b$G$>%>%,%C .       ",
+". * = = '%)%!%~%{%]%^%o.R+R+{./%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%>%>%>%,%,%,%C .       ",
+". * 2+2+2+e%f%g%h%i%j%R+-@1 -@k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%F%>%,%F%F%G%C .       ",
+". * 3+U {.{.H%I%J%K%-@4@4@4@4@L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&F%G%G%G%C .       ",
+". * {.{.R+n.*&=&=&4@4@4@s@< Q@-&M%;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&#&3&4&4&4&5&C .       ",
+". * n.-@-@-@-@4@4@s@< < < ~#b$6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&4&5&5&%&C .       ",
+". * -@-@-@4@< < < < < Q@R@G$%&t&u&v&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&%&%&%&%&C .       ",
+". * 1 4@< < j%R&Q@Q@R@~#h#&&P$S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=*-*;*>*,*'*%&=+=+=+C .       ",
+". * < < )*Q@Q@Q@R@~#~#K#G$!*~*{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*>@8*m&9*0*a*=+=+=+b*C .       ",
+". * Q@Q@Q@Q@R@~#{#K#K#K#>%!*c*,*d*e*f*g*h*i*j*k*l*m*5*@*@*n*o*p*u.q*r*s*t*u*v*=+=+b*b*C .       ",
+". * Q@Q@~#~#{#K#K#K#K#b$>%!*w*x*y*z*A*B*C*D*E*F*F*F*G*F*H*I*J*K*L*M*N*O*P*Q*R*S*S*S*S*S*S*S*S*T*",
+". * ~#~#4+K#K#F$b$b$b$b$H$5&U*V*W*X*Y*N&Z*`*N* =.=+=+=.= =@=#=$=%=&=*===-=;=>=,=,=,=,=,=,=,=,='=",
+". * 4+K#F$)=)=)=b$d%d%G$H$G%b*!=H%~=x*{*0*{=]=^=* /=(=_=:=<=* * [=* * * m.}=|=,=1=2=D X.3=4=,='=",
+". * F$b$b$b$d%G$G$G$G$H$H$G%5&3&#&~*5=Q&Q&H%6=7=* * 8=9=0={.* * a=* * b=c=* d=,=e=f=g=h=* R+,='=",
+". * d%d%G$G$G$G$G$H$H$G%G%G%G%i=i=i=i=i=&&5&S*,=* j=* k=l=j=* * ,=* * ,=g=* m=,=,=,=,=n=* o=,='=",
+". * G$G$G$H$H$>%>%F%G%G%G%i=i=i=i=i=5&5&=+=+S*,=* p={.* q=r=* * ,=* * ,=s=* o=,=,=,=* * t=u=,='=",
+". * H$>%>%>%>%F%G%G%4&4&i=i=i=i=5&5&=+=+=+=+S*,=* ,=v=w=x=,=* * ,=* * * m#y=z=,=,=,=,=A=* )=,='=",
+". * >%>%>%G%4&4&4&4&i=i=i=&&&&5&=+=+=+=+B=B=S*,=* ,=,=,=,=,=* * ,=* * ,=,=,=,=,=C=D=E=4=* F=,='=",
+". * ,%4&4&4&4&i=i=i=&&&&&&5&=+=+=+B=B=b*b*b*S*,=* ,=,=,=,=,=* * ,=* * ,=,=,=,=,=G=H=m=q#I=J=,='=",
+". * 4&i=i=i=&&&&&&&&5&5&=+B=B=B=b*b*b*b*b*b*S*,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,=,='=",
+". * i=&&&&&&5&5&5&5&B=B=b*b*b*b*b*b*b*b*b*d=T*'='='='='='='='='='='='='='='='='='='='='='='='='=",
+". * &&5&5&5&5&%&B=b*b*b*b*b*b*b*b*b*b*d=d=d=d=K=p p p y*y*y*y*E*E*E*E*E*E*E*E*E*E*E*E*L=.       ",
+". & 5&5&5&=+b*b*b*b*b*b*b*b*b*b*!*d=d=d=d=d=d=d=d=3&3&3&3&M=M=M=M=M=M=M=M=M=M=M=M=M=M=N=.       ",
+". Y C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C N=O=.       ",
+"  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       ",
+"                                                                                                ",
+"                                                                                                ",
+"                                                                                                "};