OSDN Git Service

client 0.6.2 release
authornaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Thu, 18 Nov 2010 10:39:10 +0000 (10:39 +0000)
committernaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Thu, 18 Nov 2010 10:39:10 +0000 (10:39 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@398 24ea1065-a21e-4ca1-99c9-f5125deb0858

88 files changed:
client/tag/0.6.2/Makefile [new file with mode: 0644]
client/tag/0.6.2/anago/Makefile.unix [new file with mode: 0644]
client/tag/0.6.2/anago/Makefile.windows [new file with mode: 0644]
client/tag/0.6.2/anago/anago.mk [new file with mode: 0644]
client/tag/0.6.2/anago/anago_cui.c [new file with mode: 0644]
client/tag/0.6.2/anago/anago_cui.rc [new file with mode: 0644]
client/tag/0.6.2/anago/anago_frame.cpp [new file with mode: 0644]
client/tag/0.6.2/anago/anago_gui.cpp [new file with mode: 0644]
client/tag/0.6.2/anago/anago_gui.fbp [new file with mode: 0644]
client/tag/0.6.2/anago/anago_gui.h [new file with mode: 0644]
client/tag/0.6.2/anago/anago_gui.rc [new file with mode: 0644]
client/tag/0.6.2/anago/conble.ico [new file with mode: 0644]
client/tag/0.6.2/anago/conble.xpm [new file with mode: 0644]
client/tag/0.6.2/anago/cui_gauge.c [new file with mode: 0644]
client/tag/0.6.2/anago/cui_gauge.h [new file with mode: 0644]
client/tag/0.6.2/anago/dumpcore.nut [new file with mode: 0644]
client/tag/0.6.2/anago/flash_device.c [new file with mode: 0644]
client/tag/0.6.2/anago/flash_device.h [new file with mode: 0644]
client/tag/0.6.2/anago/flashdevice.nut [new file with mode: 0644]
client/tag/0.6.2/anago/nescartxml.cpp [new file with mode: 0644]
client/tag/0.6.2/anago/nescartxml.hh [new file with mode: 0644]
client/tag/0.6.2/anago/okada.xpm [new file with mode: 0644]
client/tag/0.6.2/anago/programcore.nut [new file with mode: 0644]
client/tag/0.6.2/anago/reader_dummy.c [new file with mode: 0644]
client/tag/0.6.2/anago/reader_dummy.h [new file with mode: 0644]
client/tag/0.6.2/anago/script_common.c [new file with mode: 0644]
client/tag/0.6.2/anago/script_common.h [new file with mode: 0644]
client/tag/0.6.2/anago/script_dump.c [new file with mode: 0644]
client/tag/0.6.2/anago/script_dump.h [new file with mode: 0644]
client/tag/0.6.2/anago/script_program.c [new file with mode: 0644]
client/tag/0.6.2/anago/script_program.h [new file with mode: 0644]
client/tag/0.6.2/anago/squirrel_wrap.c [new file with mode: 0644]
client/tag/0.6.2/anago/squirrel_wrap.h [new file with mode: 0644]
client/tag/0.6.2/anago/taiyo.xpm [new file with mode: 0644]
client/tag/0.6.2/anago/unagi_blue.ico [new file with mode: 0644]
client/tag/0.6.2/anago/unagi_blue.xpm [new file with mode: 0644]
client/tag/0.6.2/anago/wx.fbp [new file with mode: 0644]
client/tag/0.6.2/client_test.h [new file with mode: 0644]
client/tag/0.6.2/config.h [new file with mode: 0644]
client/tag/0.6.2/crc32.c [new file with mode: 0644]
client/tag/0.6.2/crc32.h [new file with mode: 0644]
client/tag/0.6.2/crctable.h [new file with mode: 0644]
client/tag/0.6.2/file.c [new file with mode: 0644]
client/tag/0.6.2/file.h [new file with mode: 0644]
client/tag/0.6.2/file.mak [new file with mode: 0644]
client/tag/0.6.2/flashmemory.c [new file with mode: 0644]
client/tag/0.6.2/flashmemory.h [new file with mode: 0644]
client/tag/0.6.2/giveio.c [new file with mode: 0644]
client/tag/0.6.2/giveio.h [new file with mode: 0644]
client/tag/0.6.2/hard_dozeu.h [new file with mode: 0644]
client/tag/0.6.2/hard_hongkongfc.h [new file with mode: 0644]
client/tag/0.6.2/hard_onajimi.h [new file with mode: 0644]
client/tag/0.6.2/meg.ico [new file with mode: 0644]
client/tag/0.6.2/memory_manage.c [new file with mode: 0644]
client/tag/0.6.2/memory_manage.h [new file with mode: 0644]
client/tag/0.6.2/paralellport.h [new file with mode: 0644]
client/tag/0.6.2/profile/profile.mak [new file with mode: 0644]
client/tag/0.6.2/reader_dozeu.h [new file with mode: 0644]
client/tag/0.6.2/reader_hongkongfc.c [new file with mode: 0644]
client/tag/0.6.2/reader_hongkongfc.h [new file with mode: 0644]
client/tag/0.6.2/reader_kazzo.c [new file with mode: 0644]
client/tag/0.6.2/reader_kazzo.h [new file with mode: 0644]
client/tag/0.6.2/reader_master.c [new file with mode: 0644]
client/tag/0.6.2/reader_master.h [new file with mode: 0644]
client/tag/0.6.2/reader_onajimi.c [new file with mode: 0644]
client/tag/0.6.2/reader_onajimi.h [new file with mode: 0644]
client/tag/0.6.2/release/release.mak [new file with mode: 0644]
client/tag/0.6.2/release/unagi.cfg [new file with mode: 0644]
client/tag/0.6.2/romimage.c [new file with mode: 0644]
client/tag/0.6.2/romimage.h [new file with mode: 0644]
client/tag/0.6.2/rule.mak [new file with mode: 0644]
client/tag/0.6.2/script.h [new file with mode: 0644]
client/tag/0.6.2/script_engine.c [new file with mode: 0644]
client/tag/0.6.2/script_syntax.c [new file with mode: 0644]
client/tag/0.6.2/script_syntax.h [new file with mode: 0644]
client/tag/0.6.2/syntax_data.h [new file with mode: 0644]
client/tag/0.6.2/textutil.c [new file with mode: 0644]
client/tag/0.6.2/textutil.h [new file with mode: 0644]
client/tag/0.6.2/type.h [new file with mode: 0644]
client/tag/0.6.2/unagi.c [new file with mode: 0644]
client/tag/0.6.2/unagi.ico [new file with mode: 0644]
client/tag/0.6.2/unagi.rc [new file with mode: 0644]
client/tag/0.6.2/unagi.txt [new file with mode: 0644]
client/tag/0.6.2/usb_device.c [new file with mode: 0644]
client/tag/0.6.2/usb_device.h [new file with mode: 0644]
client/tag/0.6.2/version.h [new file with mode: 0644]
client/tag/0.6.2/widget.c [new file with mode: 0644]
client/tag/0.6.2/widget.h [new file with mode: 0644]

diff --git a/client/tag/0.6.2/Makefile b/client/tag/0.6.2/Makefile
new file mode 100644 (file)
index 0000000..e546bc9
--- /dev/null
@@ -0,0 +1,54 @@
+OBJ_HK = giveio.o reader_hongkongfc.o
+OBJ_HD = head/nesheader.o head/header.o file.o
+SOURCE_UNAGI = \
+       *.c *.h *.mak Makefile COPYING \
+       debug/debug.mak profile/profile.mak release/release.mak \
+       unagi.rc unagi.ico
+SOURCE_ANAGO = \
+       Makefile.windows Makefile.unix \
+       anago.c flash_device.c progress.c reader_dummy.c \
+       script_common.c script_dump.c script_flash.c squirrel_wrap.c \
+       flash_device.h progress.h reader_dummy.h script_common.h  script_dump.h script_flash.h squirrel_wrap.h \
+       flashcore.nut flashdevice.nut \
+       anago_en.txt anago_ja.txt porting.txt
+ARCHIVE_GZ = unagi_client_source.0.6.x.tar.gz
+ARCHIVE_ZIP = unagi_client_windows_06x.zip
+TARGET_DIR = debug
+TARGET_MAK = debug.mak
+ifeq ($(PROFILE),1)
+       TARGET_DIR = profile
+       TARGET_MAK = profile.mak
+endif
+ifeq ($(RELEASE),1)
+       TARGET_DIR = release
+       TARGET_MAK = release.mak
+endif
+
+all:
+       cd $(TARGET_DIR); make -f $(TARGET_MAK)
+       cp $(TARGET_DIR)/unagi.exe .
+clean:
+       rm -f unagi.exe \
+               debug/*.o debug/*.exe debug/*.d \
+               profile/*.o profile/*.exe profile/*.d \
+               release/*.o release/*.exe release/*.d
+
+head/nesheader.o: nesheader.c
+       $(CC) $(CFLAGS) -DHEADEROUT -I. -c -o $@ $<
+head/header.o: header.c
+       $(CC) $(CFLAGS) -DHEADEROUT -I. -c -o $@ $<
+hk.exe: $(OBJ_HK)
+       $(CC) -o $@ $(OBJ_HK)
+iodel.exe: iodel.o giveio.o
+       $(CC) -o $@ iodel.o giveio.o
+nesheader.exe: $(OBJ_HD)
+       $(CC) -o $@ $(OBJ_HD)
+gz:
+       cd ..; \
+       tar cfz $(ARCHIVE_GZ) $(addprefix client/,$(SOURCE_UNAGI)) $(addprefix client/anago/,$(SOURCE_ANAGO))
+zip:
+       7za a $(ARCHIVE_ZIP) \
+               unagi.exe unagi.txt iodel.exe iodel.txt COPYING ../script/syntax.txt \
+               $(addprefix anago/,anago.exe *.ad *.af anago_en.txt anago_ja.txt flashcore.nut flashdevice.nut dumpcore.nut)
+       cd release; 7za a ../$(ARCHIVE_ZIP) unagi.cfg
+       mv $(ARCHIVE_ZIP) ..
diff --git a/client/tag/0.6.2/anago/Makefile.unix b/client/tag/0.6.2/anago/Makefile.unix
new file mode 100644 (file)
index 0000000..5414908
--- /dev/null
@@ -0,0 +1,12 @@
+APP_CUI = \r
+APP_GUI = anago\r
+LIBUSB = \r
+SQUIRREL = ../SQUIRREL2\r
+KAZZO = ../../kazzo/firmware\r
+WX_CONFIG = wx-config\r
+CPPFLAGS =\r
+CXXFLAGS = \r
+ICON_GUI = \r
+ICON_CUI = \r
+\r
+include anago.mk\r
diff --git a/client/tag/0.6.2/anago/Makefile.windows b/client/tag/0.6.2/anago/Makefile.windows
new file mode 100644 (file)
index 0000000..96518a3
--- /dev/null
@@ -0,0 +1,14 @@
+APP_CUI = anago.exe\r
+APP_GUI = anago_wx.exe\r
+LIBUSB = d:/dev/LibUSB-Win32\r
+SQUIRREL = ../SQUIRREL224\r
+KAZZO = ../../kazzo/firmware\r
+WX_CONFIG = /d/dev/wxWidgets/build_unicode_sound3/wx-config\r
+CPPFLAGS =  -D_UNICODE\r
+CXXFLAGS = #-finput-charset=utf-8 -fexec-charset=cp932\r
+ICON_GUI = anago_gui.res.o\r
+ICON_CUI = anago_cui.res.o\r
+\r
+#unagi.res.o: unagi.rc unagi.ico\r
+#      windres -i $< -o $@\r
+include anago.mk\r
diff --git a/client/tag/0.6.2/anago/anago.mk b/client/tag/0.6.2/anago/anago.mk
new file mode 100644 (file)
index 0000000..75b181b
--- /dev/null
@@ -0,0 +1,51 @@
+all: $(APP_GUI) $(APP_CUI)
+VPATH = ..
+ifeq ($(RELEASE),1)
+  CPPFLAGS += -O2 -DNDEBUG -DDEBUG=0
+else
+  CPPFLAGS += -g -O0 -DDEBUG=1
+endif
+CPPFLAGS += -Wall -Werror
+CFLAGS = -I.. -I$(SQUIRREL)/include -I$(KAZZO)
+ifneq ($(strip $(LIBUSB)),)
+  CFLAGS += -I$(LIBUSB)/include
+endif
+CXXFLAGS += -I.. `$(WX_CONFIG) --cppflags`
+
+LDFLAG = -L$(SQUIRREL)/lib
+ifneq ($(strip $(LIBUSB)),)
+  LDFLAG += -L$(LIBUSB)/lib/gcc 
+endif
+CC = gcc
+
+OBJ_CUI = anago_cui.o cui_gauge.o $(ICON_CUI)
+OBJ_GUI = anago_gui.o anago_frame.o nescartxml.o $(ICON_GUI)
+OBJ_CORE = romimage.o crc32.o file.o widget.o \
+       reader_kazzo.o reader_dummy.o usb_device.o squirrel_wrap.o \
+       script_program.o script_dump.o script_common.o flash_device.o
+
+ifeq ($(strip $(RELEASE)),)
+       OBJ_CORE += memory_manage.o
+endif
+ifneq ($(strip $(APP_CUI)),)
+       OBJ_CUI += $(OBJ_CORE)
+       OBJ_GUI += $(OBJ_CORE)
+else
+       OBJ_GUI += $(OBJ_CUI)
+       OBJ_GUI += $(OBJ_CORE)
+endif
+
+$(APP_GUI): $(OBJ_GUI) 
+       g++ -o $@ $(LDFLAG) $(OBJ_GUI) `$(WX_CONFIG) --libs core,adv,xml` -lusb -lsqstdlib -lsquirrel
+$(APP_CUI): $(OBJ_CUI) 
+       g++ -o $@ $(LDFLAG) $(OBJ_CUI) -lusb -lsqstdlib -lsquirrel
+clean:
+       rm -f $(OBJ_CUI) $(OBJ_GUI) $(OBJ_CORE) anago.d
+
+anago.d:
+       gcc -MM $(CFLAGS) $(CPPFLAGS) *.c > $@
+       g++ -MM $(CFLAGS) $(CXXFLAGS) *.cpp >> $@
+.SUFFIXES: .rc .res.o
+.rc.res.o:
+       `$(WX_CONFIG) --rescomp` -i $< -o $@
+-include anago.d
diff --git a/client/tag/0.6.2/anago/anago_cui.c b/client/tag/0.6.2/anago/anago_cui.c
new file mode 100644 (file)
index 0000000..a09724a
--- /dev/null
@@ -0,0 +1,289 @@
+#include <assert.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include "memory_manage.h"
+#include "type.h"
+#include "widget.h"
+#include "cui_gauge.h"
+#include "romimage.h"
+#include "reader_master.h"
+#include "reader_kazzo.h"
+#include "reader_dummy.h"
+#include "script_dump.h"
+#include "flash_device.h"
+#include "script_program.h"
+
+#ifdef _UNICODE
+  #define PUTS _putws
+  #define PRINTF wprintf
+#else
+  #define PUTS puts
+  #define PRINTF printf
+#endif
+
+static void text_append_va(void *obj, const wgChar *format, va_list list)
+{
+#ifdef _UNICODE
+       vwprintf(format, list);
+#else
+       vprintf(format, list);
+#endif
+}
+
+static void text_append(void *obj, const wgChar *format, ...)
+{
+       va_list list;
+       va_start(list, format);
+       text_append_va(obj, format, list);
+       va_end(list);
+}
+
+static void log_set(struct textcontrol *log)
+{
+       log->object = NULL;
+       log->append = text_append;
+       log->append_va = text_append_va;
+}
+
+static void except(const wgChar *str)
+{
+       PUTS(str);
+       exit(0);
+}
+
+static bool program_rom_set(const wgChar *device, wgChar trans, struct memory *m, struct flash_device *f)
+{
+       m->offset = 0;
+       if(flash_device_get(device, f) == false){
+               PRINTF(wgT("unknown flash memory device %s\n"), device);
+               return false;
+       }
+       switch(trans){
+       case 'f':
+               m->transtype = TRANSTYPE_FULL;
+               break;
+       case 't':
+               m->transtype = TRANSTYPE_TOP;
+               break;
+       case 'b':
+               m->transtype = TRANSTYPE_BOTTOM;
+               break;
+       case 'e':
+       default: 
+               m->transtype = TRANSTYPE_EMPTY;
+               break;
+       }
+       return true;
+}
+
+static void program(int c, wgChar **v, const struct reader_driver *r)
+{
+       struct program_config config;
+       config.cpu.memory.data = NULL;
+       config.ppu.memory.data = NULL;
+       config.script = v[2];
+       config.target = v[3];
+       config.control = &r->control;
+       config.cpu.access = &r->cpu;
+       config.ppu.access = &r->ppu;
+       config.compare = false;
+       switch(v[1][0]){
+       case wgT('F'): case wgT('X'):
+               config.compare = true;
+               break;
+       }
+
+       switch(c){
+       case 5: {//mode script target cpu_flash_device
+               wgChar trans = wgT('f');
+               if(v[1][1] != wgT('\0')){
+                       trans = v[1][1];
+               }
+               if(program_rom_set(v[4], trans, &config.cpu.memory, &config.cpu.flash) == false){
+                       return;
+               }
+               if(program_rom_set(wgT("dummy"), wgT('e'), &config.ppu.memory, &config.ppu.flash) == false){
+                       assert(0);
+                       return;
+               }
+               }break;
+       case 6: { //mode script target cpu_flash_device ppu_flash_device
+               wgChar trans = wgT('f');
+               if(v[1][1] != wgT('\0')){
+                       trans = v[1][1];
+               }
+               if(program_rom_set(v[4], trans, &config.cpu.memory, &config.cpu.flash) == false){
+                       return;
+               }
+               trans = wgT('f');
+               if(v[1][1] != wgT('\0') && v[1][2] != wgT('\0')){
+                       trans = v[1][2];
+               }
+               if(program_rom_set(v[5], trans, &config.ppu.memory, &config.ppu.flash) == false){
+                       return;
+               }
+               }break;
+       default:
+               PUTS(wgT("mode script target cpu_flash_device ppu_flash_device"));
+               return;
+       }
+       log_set(&config.log);
+       cui_gauge_new(&config.cpu.gauge, wgT("Program  Flash"), 2, -2);
+       cui_gauge_new(&config.ppu.gauge, wgT("Charcter Flash"), 1, -1);
+       config.except = except;
+       script_program_execute(&config);
+       cui_gauge_destory(&config.cpu.gauge);
+       cui_gauge_destory(&config.ppu.gauge);
+}
+
+static void dump(int c, wgChar **v, const struct reader_driver *r)
+{
+       struct dump_config config;
+       if(c < 4){
+               PUTS(wgT("argument error"));
+               return;
+       }
+       config.cpu.increase = INCREASE_AUTO;
+       config.ppu.increase = 1;
+       config.progress = true;
+       switch(v[1][0]){
+       case wgT('d'): case wgT('z'):
+               config.mode = MODE_ROM_DUMP;
+               break;
+       case wgT('D'):
+               config.mode = MODE_ROM_DUMP;
+               config.progress = false;
+               break;
+       case wgT('r'): case wgT('R'):
+               config.mode = MODE_RAM_READ;
+               break;
+       case wgT('w'): case wgT('W'):
+               config.mode = MODE_RAM_WRITE;
+               break;
+       }
+       switch(v[1][1]){
+       case wgT('1'):
+               config.cpu.increase = 1;
+               break;
+       case wgT('2'):
+               config.cpu.increase = 2;
+               break;
+       case wgT('4'):
+               config.cpu.increase = 4;
+               break;
+       }
+       if(v[1][1] != wgT('\0')){
+               switch(v[1][2]){
+               case wgT('2'):
+                       config.ppu.increase = 2;
+                       break;
+               case wgT('4'):
+                       config.ppu.increase = 4;
+                       break;
+               }
+       }
+       config.script = v[2];
+       config.target = v[3];
+       config.control = &r->control;
+       config.cpu.access = &r->cpu;
+       config.ppu.access = &r->ppu;
+       if(config.mode == MODE_ROM_DUMP){
+               cui_gauge_new(&config.cpu.gauge, wgT("Program  ROM"), 2, -2);
+       }else{
+               cui_gauge_new(&config.cpu.gauge, wgT("Work RAM"), 2, -2);
+       }
+       cui_gauge_new(&config.ppu.gauge, wgT("Charcter ROM"), 1, -1);
+       config.except = except;
+       config.mappernum = -1;
+       if(c == 5){
+#ifdef _UNICODE
+               config.mappernum = _wtoi(v[4]);
+#else
+               config.mappernum = atoi(v[4]);
+#endif
+       }
+       config.battery = false;
+       log_set(&config.log);
+       if(config.mode == MODE_ROM_DUMP){
+               script_dump_execute(&config);
+       }else{
+               script_workram_execute(&config);
+       }
+       cui_gauge_destory(&config.cpu.gauge);
+       cui_gauge_destory(&config.ppu.gauge);
+}
+
+static void usage(const wgChar *v)
+{
+       PUTS(wgT("famicom bus simluator 'anago'"));
+       PRINTF(wgT("%s [mode] [script] [target] ....\n"), v);
+       PUTS(wgT("d - ROM dump with kazzo"));
+       PUTS(wgT("fF- flash program with kazzo"));
+       PUTS(wgT("r - workram read with kazzo"));
+       PUTS(wgT("w - workram write with kazzo"));
+       if(DEBUG == 1){
+               PUTS(wgT("z - ROM dump for test"));
+               PUTS(wgT("xX- flash program for test"));
+               PUTS(wgT("R - workram read for test"));
+               PUTS(wgT("W - workram write for test"));
+       }
+}
+
+#ifdef WIN32
+int main(int c, char **vv)
+#else
+int anago_cui(int c, wgChar **v)
+#endif
+{
+       mm_init();
+       if(c >= 2){
+               const struct reader_driver *r = &DRIVER_KAZZO;
+#ifdef _UNICODE
+               int i;
+               wchar_t **v;
+               v = Malloc(sizeof(wchar_t *) * c);
+               for(i = 0; i < c; i++){
+                       size_t len = strlen(vv[i]) + 1;
+                       v[i] = Malloc(sizeof(wchar_t) * len);
+                       mbstowcs(v[i], vv[i], len);
+               }
+#endif
+               switch(v[1][0]){
+               case wgT('x'): case wgT('X'):
+                       r = &DRIVER_DUMMY; //though down
+               case wgT('f'): case wgT('F'):
+                       program(c, v, r);
+                       break;
+               case wgT('z'): case wgT('R'): case wgT('W'): 
+                       r = &DRIVER_DUMMY; //though down
+               case wgT('d'): case wgT('D'):
+               case wgT('r'): case wgT('w'):
+                       dump(c,v, r);
+                       break;
+               default:
+                       usage(v[0]);
+                       PUTS(wgT("mode are d, D, f, g"));
+                       break;
+               }
+#ifdef _UNICODE
+               for(i = 0; i < c; i++){
+                       Free(v[i]);
+               }
+               Free(v);
+#endif
+       }else{ //usage
+#ifdef _UNICODE
+               size_t len = strlen(vv[0]) + 1;
+               wchar_t *t = Malloc(sizeof(wchar_t) * len);
+               mbstowcs(t, vv[0], len);
+               usage(t);
+               Free(t);
+#else
+               usage(v[0]);
+#endif
+       }
+       mm_end();
+       return 0;
+}
diff --git a/client/tag/0.6.2/anago/anago_cui.rc b/client/tag/0.6.2/anago/anago_cui.rc
new file mode 100644 (file)
index 0000000..894818f
--- /dev/null
@@ -0,0 +1 @@
+UNAGI ICON "conble.ico"\r
diff --git a/client/tag/0.6.2/anago/anago_frame.cpp b/client/tag/0.6.2/anago/anago_frame.cpp
new file mode 100644 (file)
index 0000000..30346c7
--- /dev/null
@@ -0,0 +1,961 @@
+#include <wx/wx.h>
+#include <wx/app.h>
+#include <wx/thread.h>
+#include <wx/dir.h>
+#include <wx/sound.h>
+#include <wx/fileconf.h>
+#include <wx/filename.h>
+#include <cassert>
+#include <cstdarg>
+#include "type.h"
+#include "anago_gui.h"
+#include "nescartxml.hh"
+#include "widget.h"
+#include "reader_master.h"
+#include "reader_kazzo.h"
+#include "reader_dummy.h"
+extern "C"{
+  #include "romimage.h"
+  #include "flash_device.h"
+  #include "script_dump.h"
+  #include "script_program.h"
+  void qr_version_print(const struct textcontrol *l);
+}
+#ifdef _UNICODE
+  #define STRNCPY wcsncpy
+#else
+  #define STRNCPY strncpy
+#endif
+//---- C++ -> C -> C++ wrapping static functions ----
+namespace c_wrapper{
+       static void throw_error(const wxChar *t)
+       {
+               throw t;
+       }
+
+       static void value_set(void *gauge, void *label, int value)
+       {
+               wxGauge *g = static_cast<wxGauge *>(gauge);
+               wxStaticText *l = static_cast<wxStaticText *>(label);
+               wxString str;
+               if(g->GetRange() == 1){
+                       str = wxT("skip             ");
+               }else{
+                       str.Printf(wxT("0x%06x/0x%06x"), value, g->GetRange());
+               }
+               
+               wxMutexGuiEnter();
+               g->SetValue(value);
+               if(label != NULL){
+                       l->SetLabel(str);
+               }
+               wxMutexGuiLeave();
+       }
+
+       static void value_add(void *gauge, void *label, int value)
+       {
+               wxGauge *g = static_cast<wxGauge *>(gauge);
+               value += g->GetValue();
+               
+               value_set(gauge, label, value);
+       }
+
+       static void range_set(void *gauge, int value)
+       {
+               wxGauge *g = static_cast<wxGauge *>(gauge);
+               if(value == 0){
+                       value = 1;
+               }
+               g->SetRange(value);
+       }
+
+       static void text_append_va(void *log, const wxChar *format, va_list list)
+       {
+               wxTextCtrl *l = static_cast<wxTextCtrl *>(log);
+               wxString str;
+               str.PrintfV(format, list);
+
+               wxMutexGuiEnter();
+               *l << str;
+               wxMutexGuiLeave();
+       }
+
+       static void text_append(void *log, const wxChar *format, ...)
+       {
+               va_list list;
+               va_start(list, format);
+               text_append_va(log, format, list);
+               va_end(list);
+       }
+
+       static void version_append_va(void *log, const wxChar *format, va_list list)
+       {
+               wxTextCtrl *l = static_cast<wxTextCtrl *>(log);
+               wxString str;
+               str.PrintfV(format, list);
+
+               *l << str;
+       }
+
+       static void version_append(void *log, const wxChar *format, ...)
+       {
+               va_list list;
+               va_start(list, format);
+               version_append_va(log, format, list);
+               va_end(list);
+       }
+
+       static void label_set(void *label, const wxChar *format, ...)
+       {
+               wxStaticText *l = static_cast<wxStaticText *>(label);
+               wxString str;
+               va_list list;
+               
+               va_start(list, format);
+               str.PrintfV(format, list);
+               va_end(list);
+
+               wxMutexGuiEnter();
+               l->SetLabel(str);
+               wxMutexGuiLeave();
+       }
+
+       static void choice_append(void *choice, const wxChar *str)
+       {
+               wxChoice *c = static_cast<wxChoice *>(choice);
+               c->Append(wxString(str));
+       }
+
+       static void gauge_init(struct gauge *t)
+       {
+               t->label_set = label_set;
+               t->range_set = range_set;
+               t->value_set = value_set;
+               t->value_add = value_add;
+       }
+}
+
+//---- script execute thread ----
+class anago_dumper : public wxThread
+{
+private:
+       wxWindow *const m_frame;
+       wxTextCtrl *const m_log;
+       const wxSound m_sound_success, m_sound_fail;
+       RomDb *const m_romdb;
+
+       struct dump_config m_config;
+protected:
+       void *Entry(void)
+       {
+               try{
+                       bool r = false;
+                       switch(m_config.mode){
+                       case MODE_ROM_DUMP:
+                               r = script_dump_execute(&m_config);
+                               break;
+                       case MODE_RAM_READ: case MODE_RAM_WRITE:
+                               r = script_workram_execute(&m_config);
+                               break;
+                       default:
+                               assert(0);
+                               break;
+                       }
+                       if(r == true && m_sound_success.IsOk() == true){
+                               m_sound_success.Play();
+                       }
+               }catch(const wxChar *t){
+                       if(m_sound_fail.IsOk() == true){
+                               m_sound_fail.Play();
+                       }
+                       *m_log << t;
+               }
+               if(m_romdb != NULL){
+                       m_romdb->Search(m_config.crc, m_log);
+               }
+               m_frame->Enable();
+               return NULL;
+       }
+       void OnExit()
+       {
+               delete [] m_config.script;
+               delete [] m_config.target;
+       }
+public:
+       anago_dumper(wxWindow *f, const struct dump_config *d, wxTextCtrl *log, wxString sound_success, wxString sound_fail, RomDb *db = NULL) 
+         : wxThread(), m_frame(f), m_log(log), 
+         m_sound_success(sound_success), m_sound_fail(sound_fail),
+         m_romdb(db)
+       {
+               m_config = *d; //struct data copy
+       }
+};
+
+class anago_programmer : public wxThread
+{
+private:
+       wxWindow *const m_frame;
+       wxTextCtrl *const m_log;
+       struct program_config m_config;
+       const wxSound m_sound_success, m_sound_fail;
+protected:
+       void *Entry(void)
+       {
+               try{
+                       if(script_program_execute(&m_config) == true){
+                               if(m_sound_success.IsOk() == true){
+                                       m_sound_success.Play();
+                               }
+                       }
+               }catch(const wxChar *t){
+                       if(m_sound_fail.IsOk() == true){
+                               m_sound_fail.Play();
+                       }
+                       *m_log << t;
+               }
+               m_frame->Enable();
+               return NULL;
+       }
+
+       void OnExit()
+       {
+               delete [] m_config.script;
+               delete [] m_config.target;
+       }
+public:
+       anago_programmer(wxWindow *f, wxTextCtrl *log, const struct program_config *d, wxString sound_success, wxString sound_fail) 
+         : wxThread(), m_frame(f), m_log(log),
+         m_sound_success(sound_success), m_sound_fail(sound_fail)
+       {
+               m_config = *d;
+       }
+};
+
+static void script_choice_init(wxControlWithItems *c, wxArrayString filespec, wxTextCtrl *log)
+{
+       wxDir dir(wxGetCwd());
+       wxArrayString ar;
+
+       c->Clear();
+       if ( !dir.IsOpened() ){
+               return;
+       }
+       for(size_t i = 0; i < filespec.GetCount(); i++){
+               wxString filename;
+               bool cont = dir.GetFirst(&filename, filespec[i], wxDIR_FILES);
+               while ( cont ){
+                       ar.Add(filename);
+                       cont = dir.GetNext(&filename);
+               }
+       }
+       if(ar.GetCount() == 0){
+               *log << wxT("warning: ");
+               for(size_t i = 0; i < filespec.GetCount(); i++){
+                       *log << filespec[i] << wxT(" ");
+               }
+               *log << wxT("script not found.\n");
+       }else{
+               ar.Sort(false);
+               for(size_t i = 0; i < ar.GetCount(); i++){
+                       c->Append(ar[i]);
+               }
+               c->Select(0);
+       }
+}
+
+static void increase_init(wxControlWithItems *c)
+{
+       c->Clear();
+       c->Append(wxT("x1"));
+       c->Append(wxT("x2"));
+       c->Append(wxT("x4"));
+       c->Select(0);
+}
+
+static int increase_get(wxControlWithItems *c)
+{
+       switch(c->GetSelection()){
+       case 0: return 1;
+       case 1: return 2;
+       case 2: return 4;
+       case 3: return INCREASE_AUTO;
+       }
+       return 1;
+}
+
+enum anago_status{
+       STATUS_IDLE, STATUS_DUMPPING, STATUS_PROGRAMMING,
+       STATUS_RAM_READ, STATUS_RAM_WRITE
+};
+
+class anago_panel_dump : public panel_dump
+{
+private:
+       wxThread *m_anago_thread;
+       const struct reader_driver *const m_reader;
+       enum anago_status *const m_status;
+       wxTextCtrl *const m_log;
+       wxString m_sound_success, m_sound_fail;
+       wxString m_database;
+       RomDb *m_romdb;
+
+       void execute(void)
+       {
+               struct dump_config config;
+               config.mode = MODE_ROM_DUMP;
+               config.cpu.gauge.bar = m_cpu_gauge;
+               config.cpu.gauge.label = m_cpu_value;
+               c_wrapper::gauge_init(&config.cpu.gauge);
+
+               config.ppu.gauge.bar = m_ppu_gauge;
+               config.ppu.gauge.label = m_ppu_value;
+               c_wrapper::gauge_init(&config.ppu.gauge);
+               
+               config.log.object = m_log;
+               config.log.append = c_wrapper::text_append;
+               config.log.append_va = c_wrapper::text_append_va;
+               config.except = c_wrapper::throw_error;
+               config.cpu.increase = increase_get(m_cpu_increase);
+               config.ppu.increase = increase_get(m_ppu_increase);
+               config.progress = true;
+               config.battery = m_check_battery->GetValue();
+               {
+                       wxString str_script = m_script_choice->GetStringSelection();
+                       wxChar *t = new wxChar[str_script.Length() + 1];
+                       config.script = t;
+                       STRNCPY(t, str_script.fn_str(), str_script.Length() + 1);
+               }
+
+               {
+                       wxString str;
+                       config.mappernum = -1;
+                       if(m_check_forcemapper->GetValue() == true){
+                               str = m_text_forcemapper->GetValue();
+                               if(str.ToLong(&config.mappernum) == false){
+                                       *m_log << wxT("bad mapper number\n");
+                                       return;
+                               }
+                       }
+               }
+
+               {
+                       wxTextCtrl *text = m_romimage_picker->GetTextCtrl();
+                       wxString str_rom = text->GetValue();
+                       wxChar *t = new wxChar[str_rom.Length() + 1];
+                       if(text->IsEmpty() == true){
+                               *m_log << wxT("Enter filename to ROM image\n");
+                               return;
+                       }
+                       config.target = t;
+                       STRNCPY(t, str_rom.fn_str(), str_rom.Length() + 1);
+               }
+
+               config.control = &m_reader->control;
+               config.cpu.access = &m_reader->cpu;
+               config.ppu.access = &m_reader->ppu;
+
+               this->Disable();
+
+/*             if(m_anago_thread != NULL){ //???
+                       delete m_anago_thread;
+               }*/
+               m_anago_thread = new anago_dumper(this, &config, m_log, m_sound_success, m_sound_fail, m_romdb);
+               if(m_anago_thread->Create() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread creating error");
+               }else if(m_anago_thread->Run() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread running error");
+               }else{
+                       *m_status = STATUS_DUMPPING;
+               }
+       }
+protected:
+       void button_click(wxCommandEvent& event)
+       {
+               switch(*m_status){
+               case STATUS_IDLE:
+                       this->execute();
+                       break;
+               case STATUS_DUMPPING:
+                       m_anago_thread->Kill();
+                       this->Enable();
+                       break;
+               default: //do nothing
+                       break;
+               }
+       }
+
+       void mapper_change_check(wxCommandEvent& event)
+       {
+               if(m_check_forcemapper->GetValue() == true){
+                       m_text_forcemapper->Enable();
+               }else{
+                       m_text_forcemapper->Disable();
+               }
+       }
+
+public:
+       anago_panel_dump(wxNotebook *p, const struct reader_driver *r, enum anago_status *status, wxFileConfig *config, wxTextCtrl *log)
+         : panel_dump(p), m_reader(r), m_status(status), m_log(log)
+       {
+               config->Read(wxT("dump.database"), &m_database, wxT("NesCarts (2010-02-08).xml"));
+               if(wxFileName::FileExists(m_database) == true){
+                       m_romdb = new RomDb(m_database);
+                       m_romdb->Generate();
+               }else{
+                       *log << wxT("m_database not found\n");
+                       m_romdb = new RomDb();
+               }
+
+               config->Read(wxT("dump.sound.success"), &m_sound_success, wxT("tinkalink2.wav"));
+               config->Read(wxT("dump.sound.fail"), &m_sound_fail, wxT("doggrowl.wav"));
+
+               wxArrayString ar;
+               ar.Add(wxT("*.ad"));
+               ar.Add(wxT("*.ae"));
+               ar.Add(wxT("*.af"));
+               ar.Add(wxT("*.ag"));
+               script_choice_init(m_script_choice, ar, log);
+               ::increase_init(m_cpu_increase);
+               m_cpu_increase->Append(wxT("Auto"));
+               m_cpu_increase->Select(3);
+               ::increase_init(m_ppu_increase);
+               if(DEBUG==1){
+                       m_romimage_picker->GetTextCtrl()->SetLabel(wxT("t.nes"));
+               }
+       }
+       virtual ~anago_panel_dump(void)
+       {
+               delete m_romdb;
+       }
+       bool Enable(bool t = true)
+       {
+               m_script_choice->Enable(t);
+               m_romimage_picker->Enable(t);
+               m_check_battery->Enable(t);
+               m_check_forcemapper->Enable(t);
+               m_cpu_increase->Enable(t);
+               m_ppu_increase->Enable(t);
+               if(t == true){
+                       *m_status = STATUS_IDLE;
+                       m_button->SetLabel(wxT("&dump"));
+                       if(m_check_forcemapper->GetValue() == true){
+                               m_text_forcemapper->Enable();
+                       }
+               }else{
+                       m_button->SetLabel(wxT("cancel"));
+                       m_check_forcemapper->Disable();
+               }
+               m_button->SetFocus();
+               return true;
+       }
+       bool Disable(void)
+       {
+               return this->Enable(false);
+       }
+};
+
+class anago_panel_program : public panel_program
+{
+private:
+       wxThread *m_anago_thread;
+       const struct reader_driver *const m_reader;
+       wxString m_sound_success, m_sound_fail;
+       enum anago_status *const m_status;
+       wxTextCtrl *const m_log;
+       
+       void padding_init(wxControlWithItems *c)
+       {
+               c->Clear();
+               c->Append(wxT("full"));
+               c->Append(wxT("top"));
+               c->Append(wxT("bottom"));
+               c->Append(wxT("empty"));
+               c->Select(0);
+       }
+       bool rom_set(wxString device, int trans, struct memory *m, struct flash_device *f)
+       {
+               m->offset = 0;
+               if(flash_device_get(device, f) == false){
+                       *m_log << wxT("unknown flash memory device ");
+                       *m_log << device << wxT("\n");
+                       return false;
+               }
+               switch(trans){
+               case 0: 
+                       m->transtype = TRANSTYPE_FULL;
+                       break;
+               case 1: 
+                       m->transtype = TRANSTYPE_TOP;
+                       break;
+               case 2: 
+                       m->transtype = TRANSTYPE_BOTTOM;
+                       break;
+               default: 
+                       m->transtype = TRANSTYPE_EMPTY;
+                       break;
+               }
+               return true;
+       }
+
+       void execute(void)
+       {
+               struct program_config f;
+               
+               f.cpu.gauge.bar = m_cpu_gauge;
+               f.cpu.gauge.label = m_cpu_value;
+               c_wrapper::gauge_init(&f.cpu.gauge);
+
+               f.ppu.gauge.bar = m_ppu_gauge;
+               f.ppu.gauge.label = m_ppu_value;
+               c_wrapper::gauge_init(&f.ppu.gauge);
+               
+               f.log.object = m_log;
+               f.log.append = c_wrapper::text_append;
+               f.log.append_va = c_wrapper::text_append_va;
+               f.except = c_wrapper::throw_error;
+               
+               {
+                       wxString str_script = m_script_choice->GetStringSelection();
+                       wxChar *t = new wxChar[str_script.Length() + 1];
+                       STRNCPY(t, str_script.fn_str(), str_script.Length() + 1);
+                       f.script = t;
+               }
+
+               {
+                       wxTextCtrl *text = m_romimage_picker->GetTextCtrl();
+                       wxString str_rom = text->GetValue();
+                       if(text->IsEmpty() == true){
+                               *m_log << wxT("Enter filename to ROM image\n");
+                               return;
+                       }
+                       wxChar *t = new wxChar[str_rom.Length() + 1];
+                       STRNCPY(t, str_rom.fn_str(), str_rom.Length() + 1);
+                       f.target = t;
+               }
+               f.compare = m_compare->GetValue();
+
+               if(rom_set(
+                       m_cpu_device->GetStringSelection(), 
+                       m_cpu_padding->GetSelection(),
+                       &f.cpu.memory, &f.cpu.flash
+               ) == false){
+                       return;
+               }
+               if(rom_set(
+                       m_ppu_device->GetStringSelection(), 
+                       m_ppu_padding->GetSelection(),
+                       &f.ppu.memory, &f.ppu.flash
+               ) == false){
+                       return;
+               }
+
+               f.control = &m_reader->control;
+               f.cpu.access = &m_reader->cpu;
+               f.ppu.access = &m_reader->ppu;
+
+               this->Disable();
+
+               m_anago_thread = new anago_programmer(this, m_log, &f, m_sound_success, m_sound_fail);
+               if(m_anago_thread->Create() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread creating error");
+               }else if(m_anago_thread->Run() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread running error");
+               }else{
+                       *m_status = STATUS_PROGRAMMING;
+               }
+       }
+
+       void device_load(wxControlWithItems *choice, wxFileConfig *c, wxString key)
+       {
+               wxString device;
+               int val;
+               c->Read(key, &device);
+               val = choice->FindString(device);
+               if(val == wxNOT_FOUND){
+                       choice->Select(0);
+               }else{
+                       choice->Select(val);
+               }
+       }
+protected:
+       void button_click(wxCommandEvent& event)
+       {
+               switch(*m_status){
+               case STATUS_IDLE:
+                       this->execute();
+                       break;
+               case STATUS_PROGRAMMING:
+                       m_anago_thread->Kill();
+                       this->Enable();
+                       break;
+               default: //do nothing
+                       break;
+               }
+       }
+public:
+       anago_panel_program(wxNotebook *p, const struct reader_driver *r, enum anago_status *status, wxFileConfig *config, wxTextCtrl *log) 
+         : panel_program(p), m_reader(r), m_status(status), m_log(log)
+       {
+               config->Read(wxT("program.sound.success"), &m_sound_success, wxT("cuckoo.wav"));
+               config->Read(wxT("program.sound.fail"), &m_sound_fail, wxT("doggrowl.wav"));
+               {
+                       wxArrayString t;
+                       t.Add(wxT("*.af"));
+                       t.Add(wxT("*.ag"));
+                       script_choice_init(m_script_choice, t, m_log);
+               }
+               {
+                       struct flash_listup list;
+                       list.obj_cpu = m_cpu_device;
+                       list.obj_ppu = m_ppu_device;
+                       list.append = c_wrapper::choice_append;
+                       flash_device_listup(&list);
+               }
+               if(m_cpu_device->GetCount() == 0){
+                       *m_log << wxT("warning: flash device parameter not found\n");
+               }else{
+                       device_load(m_cpu_device, config, wxT("program.cpu.device"));
+                       device_load(m_ppu_device, config, wxT("program.ppu.device"));
+               }
+               this->padding_init(m_cpu_padding);
+               this->padding_init(m_ppu_padding);
+               
+               m_anago_thread = NULL;
+       }
+       bool Enable(bool t = true)
+       {
+               m_script_choice->Enable(t);
+               m_romimage_picker->Enable(t);
+               m_compare->Enable(t);
+               m_cpu_padding->Enable(t);
+               m_cpu_device->Enable(t);
+               m_ppu_padding->Enable(t);
+               m_ppu_device->Enable(t);
+               if(t == true){
+                       *m_status = STATUS_IDLE;
+                       m_button->SetLabel(wxT("&program"));
+               }else{
+                       m_button->SetLabel(wxT("cancel"));
+               }
+               m_button->SetFocus();
+               return true;
+       }
+       bool Disable(void)
+       {
+               return this->Enable(false);
+       }
+       void ConfigWrite(wxFileConfig *c)
+       {
+               c->Write(wxT("program.cpu.device"), m_cpu_device->GetStringSelection());
+               c->Write(wxT("program.ppu.device"), m_ppu_device->GetStringSelection());
+       }
+};
+
+class anago_panel_workram : public panel_workram
+{
+private:
+       wxThread *m_anago_thread;
+       const struct reader_driver *const m_reader;
+       enum anago_status *const m_status;
+       wxTextCtrl *const m_log;
+       wxString m_sound_success, m_sound_fail;
+
+       void execute(struct dump_config *c, wxControlWithItems *script, wxFilePickerCtrl *picker, enum anago_status status)
+       {
+               c->cpu.gauge.label = NULL;
+               c_wrapper::gauge_init(&c->cpu.gauge);
+               
+               c->log.object = m_log;
+               c->log.append = c_wrapper::text_append;
+               c->log.append_va = c_wrapper::text_append_va;
+               c->except = c_wrapper::throw_error;
+               assert(c->cpu.increase != INCREASE_AUTO);
+               c->progress = true;
+               {
+                       wxString str_script = script->GetStringSelection();
+                       wxChar *t = new wxChar[str_script.Length() + 1];
+                       c->script = t;
+                       STRNCPY(t, str_script.fn_str(), str_script.Length() + 1);
+               }
+               {
+                       wxTextCtrl *text = picker->GetTextCtrl();
+                       wxString str_rom = text->GetValue();
+                       wxChar *t = new wxChar[str_rom.Length() + 1];
+                       if(text->IsEmpty() == true){
+                               *m_log << wxT("Enter filename to ROM image\n");
+                               return;
+                       }
+                       c->target = t;
+                       STRNCPY(t, str_rom.fn_str(), str_rom.Length() + 1);
+               }
+               c->control = &m_reader->control;
+               c->cpu.access = &m_reader->cpu;
+               c->ppu.access = &m_reader->ppu;
+               
+               m_anago_thread = new anago_dumper(this, c, m_log, m_sound_success, m_sound_fail);
+               if(m_anago_thread->Create() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread creating error");
+               }else if(m_anago_thread->Run() != wxTHREAD_NO_ERROR){
+                       *m_log << wxT("thread running error");
+               }else{
+                       *m_status = status; //先に status を設定すること
+                       this->Disable();
+               }
+       }
+
+       void read(void)
+       {
+               struct dump_config config;
+               config.mode = MODE_RAM_READ;
+               config.cpu.gauge.bar = m_read_gauge;
+               config.cpu.increase = ::increase_get(m_read_increase);
+               this->execute(&config, m_read_script, m_read_picker, STATUS_RAM_READ);
+       }
+       void write(void)
+       {
+               struct dump_config config;
+               config.mode = MODE_RAM_WRITE;
+               config.cpu.gauge.bar = m_write_gauge;
+               config.cpu.increase = ::increase_get(m_write_increase);
+               this->execute(&config, m_write_script, m_write_picker, STATUS_RAM_WRITE);
+       }
+protected:
+       void read_button_click(wxCommandEvent& event)
+       {
+               switch(*m_status){
+               case STATUS_IDLE:
+                       read();
+                       break;
+               case STATUS_RAM_READ:
+                       this->Enable();
+                       break;
+               default: //do nothing
+                       break;
+               }
+       }
+
+       void write_button_click(wxCommandEvent& event)
+       {
+               switch(*m_status){
+               case STATUS_IDLE:
+                       write();
+                       break;
+               case STATUS_RAM_WRITE:
+                       this->Enable();
+                       break;
+               default: //do nothing
+                       break;
+               }
+       }
+public:
+       anago_panel_workram(wxWindow *p, const struct reader_driver *r, enum anago_status *status, wxFileConfig *config, wxTextCtrl *log)
+         : panel_workram(p), m_reader(r), m_status(status), m_log(log)
+       {
+               config->Read(wxT("workram.sound.success"), &m_sound_success, wxT("tinkalink2.wav"));
+               config->Read(wxT("workram.sound.fail"), &m_sound_fail, wxT("doggrowl.wav"));
+
+               wxArrayString ar;
+               ar.Add(wxT("*.ae"));
+               ar.Add(wxT("*.ag"));
+               ::script_choice_init(m_read_script, ar, log);
+               ::script_choice_init(m_write_script, ar, log);
+               ::increase_init(m_read_increase);
+               ::increase_init(m_write_increase);
+               
+               if(DEBUG == 1){
+                       m_read_picker->GetTextCtrl()->SetLabel(wxT("t.sav"));
+               }
+       }
+       
+       bool Enable(bool t = true)
+       {
+               m_read_script->Enable(t);
+               m_read_picker->Enable(t);
+               m_write_script->Enable(t);
+               m_write_picker->Enable(t);
+               if(t == true){
+                       switch(*m_status){
+                       case STATUS_RAM_READ:
+                               m_read_button->SetLabel(wxT("&read"));
+                               m_read_button->SetFocus();
+                               m_write_button->Enable();
+                               break;
+                       case STATUS_RAM_WRITE:
+                               m_write_button->SetLabel(wxT("&write"));
+                               m_write_button->SetFocus();
+                               m_read_button->Enable();
+                               break;
+                       default:
+                               break;
+                       }
+                       *m_status = STATUS_IDLE;
+               }else{
+                       switch(*m_status){
+                       case STATUS_RAM_READ:
+                               m_read_button->SetLabel(wxT("&cancel"));
+                               m_write_button->Disable();
+                               break;
+                       case STATUS_RAM_WRITE:
+                               m_write_button->SetLabel(wxT("&cancel"));
+                               m_read_button->Disable();
+                               break;
+                       default:
+                               break;
+                       }
+               }
+               return true;
+       }
+
+       bool Disable(void)
+       {
+               return this->Enable(false);
+       }
+};
+
+class anago_panel_version : public panel_version
+{
+public:
+       anago_panel_version(wxWindow *p) : panel_version(p)
+       {
+//version infomation
+               {
+                       struct textcontrol detail;
+                       *m_version_detail << wxT("anago build at ") << wxT(__DATE__) << wxT("\n\n");
+                       detail.object = m_version_detail;
+                       detail.append = c_wrapper::version_append;
+                       detail.append_va = c_wrapper::version_append_va;
+                       qr_version_print(&detail);
+                       *m_version_detail << wxVERSION_STRING << wxT(" (c) Julian Smar");
+               }
+               
+#if 0 //def WIN32
+               #include "okada.xpm"
+               wxBitmap bitmap_okada(okada);
+               wxString tooltip(wxT(
+                       "緑区 na6ko 町さん (28歳, 童貞)\n\n"
+
+                       "28年間バカにされっぱなし、ミジメ過ぎた俺の人生が anago,\n"
+                       "kazzo を持つようになった途端、突然ツキがめぐってきた。\n"
+//                     "競馬をやれば連戦連勝、夢にまでみた万馬券を当て、気がつくと\n"
+//                     "しんじられない事にギャンブルで稼いだお金が460万円!!\n"
+                       "元手はたった4000円。しかもたった2ヶ月で人生大逆転!!\n"
+                       "女は3P4Pヤリ放題!!"
+//                     "勤めていた新聞屋も辞めギャンブルで\n"
+//                     "身を立てていこうと思っています。実は来月の11日にラスベガスに\n"
+//                     "行き勝負をかけます。結果はまた報告します。宜しく。"
+               ));
+#else
+               #include "taiyo.xpm"
+               wxBitmap bitmap_okada(taiyo);
+               wxString tooltip(wxT("たいよ~ほえ~るず♪"));
+#endif
+//             #include "araki.xpm"
+//             wxBitmap bitmap_okada(araki);
+               m_version_photo->SetBitmap(bitmap_okada);
+               m_version_photo->SetToolTip(tooltip);
+       }
+};
+
+//---- main frame class ----
+class anago_frame : public frame_main
+{
+private:
+       enum anago_status m_status; //ここだけ実体, 各パネルはこのポインタ
+       const wxString m_config_file;
+       anago_panel_program *m_panel_program;
+protected:
+       void menu_log_clean(wxCommandEvent& event)
+       {
+               m_log->Clear();
+       }
+       
+public:
+       /** Constructor */
+       anago_frame(wxWindow* parent, const struct reader_driver *r)
+         : frame_main(parent), m_status(STATUS_IDLE),
+#ifdef WIN32
+         m_config_file(wxGetCwd() + wxT("/anago.cfg"))
+#else
+         m_config_file(wxT(".anago"))
+#endif
+       {
+               wxFileConfig config(wxEmptyString, wxEmptyString, m_config_file);
+//form config load
+               wxPoint position;
+               
+               config.Read(wxT("position.x"), &position.x, 32);
+               config.Read(wxT("position.y"), &position.y, 32);
+               this->SetPosition(position);
+               
+               wxSize size;
+               config.Read(wxT("size.x"), &size.x, 340);
+               config.Read(wxT("size.y"), &size.y, 460);
+               this->SetSize(size);
+
+               m_notebook->AddPage(new anago_panel_dump(m_notebook, r, &m_status, &config, m_log), wxT("dump"), false);
+
+               m_panel_program = new anago_panel_program(m_notebook, r, &m_status, &config, m_log);
+               m_notebook->AddPage(m_panel_program, wxT("program"), false);
+
+               m_notebook->AddPage(new anago_panel_workram(m_notebook, r, &m_status, &config, m_log), wxT("workram"), false);
+               m_notebook->AddPage(new anago_panel_version(m_notebook), wxT("version"), false);
+
+#ifdef WIN32
+               SetIcon(wxIcon(wxT("unagi_blue")));
+#else
+               #include "unagi_blue.xpm"
+               SetIcon(wxIcon(unagi_blue));
+#endif
+       }
+
+       virtual ~anago_frame(void)
+       {
+               wxFileConfig config(wxEmptyString, wxEmptyString, m_config_file);
+               wxPoint position = this->GetPosition();
+               
+               config.Write(wxT("position.x"), position.x);
+               config.Write(wxT("position.y"), position.y);
+
+               wxSize size = this->GetSize();
+               config.Write(wxT("size.x"), size.x);
+               config.Write(wxT("size.y"), size.y);
+               
+               m_panel_program->ConfigWrite(&config);
+       }
+};
+
+#ifndef WIN32
+extern "C"{
+  int anago_cui(int c, wxChar **v);
+}
+int main(int c, wxChar **v)
+{
+       if(c < 3){
+               return wxEntry(c, v);
+       }
+       return anago_cui(c, v);
+}
+#endif
+
+class MyApp : public wxApp
+{
+private:
+       anago_frame *m_frame;
+public: 
+       bool OnInit()
+       {
+               if(this->argc >= 2){
+                       m_frame = new anago_frame(NULL, &DRIVER_DUMMY);
+               }else{
+                       m_frame = new anago_frame(NULL, &DRIVER_KAZZO);
+               }
+               m_frame->Show();
+               
+               return true;
+       }
+};
+#ifdef WIN32
+IMPLEMENT_APP(MyApp)
+#else
+IMPLEMENT_APP_NO_MAIN(MyApp)
+#endif
diff --git a/client/tag/0.6.2/anago/anago_gui.cpp b/client/tag/0.6.2/anago/anago_gui.cpp
new file mode 100644 (file)
index 0000000..5e348cf
--- /dev/null
@@ -0,0 +1,509 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Sep  8 2010)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "anago_gui.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+frame_main::frame_main( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       this->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
+       
+       wxBoxSizer* bSizer4;
+       bSizer4 = new wxBoxSizer( wxVERTICAL );
+       
+       m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       
+       bSizer4->Add( m_notebook, 0, wxALL|wxEXPAND, 0 );
+       
+       m_panel_log = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer6;
+       bSizer6 = new wxBoxSizer( wxVERTICAL );
+       
+       m_log = new wxTextCtrl( m_panel_log, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
+       m_log->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
+       
+       bSizer6->Add( m_log, 1, wxALL|wxEXPAND, 5 );
+       
+       m_panel_log->SetSizer( bSizer6 );
+       m_panel_log->Layout();
+       bSizer6->Fit( m_panel_log );
+       bSizer4->Add( m_panel_log, 1, wxALL|wxEXPAND, 0 );
+       
+       this->SetSizer( bSizer4 );
+       this->Layout();
+}
+
+frame_main::~frame_main()
+{
+}
+
+panel_version::panel_version( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
+{
+       wxBoxSizer* bSizer30;
+       bSizer30 = new wxBoxSizer( wxVERTICAL );
+       
+       m_version_title = new wxStaticText( this, wxID_ANY, wxT("famicom cartridge utility - anago"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_version_title->Wrap( -1 );
+       m_version_title->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
+       
+       bSizer30->Add( m_version_title, 0, wxALL, 2 );
+       
+       m_version_copyright = new wxStaticText( this, wxID_ANY, wxT("(C) unagi development team 2010"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_version_copyright->Wrap( -1 );
+       bSizer30->Add( m_version_copyright, 0, wxALL, 2 );
+       
+       wxBoxSizer* bSizer16;
+       bSizer16 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_version_photo = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 178,122 ), 0 );
+       m_version_photo->SetToolTip( wxT("okada") );
+       
+       bSizer16->Add( m_version_photo, 0, wxALL, 2 );
+       
+       m_version_developer = new wxStaticText( this, wxID_ANY, wxT("programmer - naruko's latest photo\n\nicon designed by hirohiroki"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
+       m_version_developer->Wrap( 130 );
+       bSizer16->Add( m_version_developer, 0, wxALL, 5 );
+       
+       bSizer30->Add( bSizer16, 1, wxEXPAND, 5 );
+       
+       m_version_detail = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
+       m_version_detail->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) );
+       m_version_detail->SetMinSize( wxSize( -1,80 ) );
+       
+       bSizer30->Add( m_version_detail, 0, wxALL|wxEXPAND, 2 );
+       
+       this->SetSizer( bSizer30 );
+       this->Layout();
+       bSizer30->Fit( this );
+}
+
+panel_version::~panel_version()
+{
+}
+
+panel_workram::panel_workram( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
+{
+       wxBoxSizer* bSizer17;
+       bSizer17 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer221;
+       bSizer221 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_staticline111 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer221->Add( m_staticline111, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticText221 = new wxStaticText( this, wxID_ANY, wxT("RAM read"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText221->Wrap( -1 );
+       bSizer221->Add( m_staticText221, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticline71 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer221->Add( m_staticline71, 1, wxALL|wxALIGN_CENTER_VERTICAL, 2 );
+       
+       bSizer17->Add( bSizer221, 1, wxEXPAND, 2 );
+       
+       wxFlexGridSizer* fgSizer3;
+       fgSizer3 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer3->AddGrowableCol( 1 );
+       fgSizer3->SetFlexibleDirection( wxBOTH );
+       fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_staticText16 = new wxStaticText( this, wxID_ANY, wxT("&script"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText16->Wrap( -1 );
+       fgSizer3->Add( m_staticText16, 0, wxALL, 5 );
+       
+       wxArrayString m_read_scriptChoices;
+       m_read_script = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_read_scriptChoices, 0 );
+       m_read_script->SetSelection( 0 );
+       fgSizer3->Add( m_read_script, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText17 = new wxStaticText( this, wxID_ANY, wxT("RAM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText17->Wrap( -1 );
+       fgSizer3->Add( m_staticText17, 0, wxALL, 5 );
+       
+       m_read_picker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.sav"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL );
+       fgSizer3->Add( m_read_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer17->Add( fgSizer3, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer18;
+       bSizer18 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_read_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
+       m_read_gauge->SetMinSize( wxSize( -1,12 ) );
+       
+       bSizer18->Add( m_read_gauge, 1, wxALL, 2 );
+       
+       wxArrayString m_read_increaseChoices;
+       m_read_increase = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_read_increaseChoices, 0 );
+       m_read_increase->SetSelection( 0 );
+       m_read_increase->SetMinSize( wxSize( 40,-1 ) );
+       
+       bSizer18->Add( m_read_increase, 0, wxALL, 2 );
+       
+       m_read_button = new wxButton( this, wxID_ANY, wxT("&read"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer18->Add( m_read_button, 0, wxALL|wxALIGN_RIGHT, 5 );
+       
+       bSizer17->Add( bSizer18, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer22;
+       bSizer22 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_staticline12 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer22->Add( m_staticline12, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticText22 = new wxStaticText( this, wxID_ANY, wxT("RAM write"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText22->Wrap( -1 );
+       bSizer22->Add( m_staticText22, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticline7 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer22->Add( m_staticline7, 1, wxALL|wxALIGN_CENTER_VERTICAL, 2 );
+       
+       bSizer17->Add( bSizer22, 0, wxEXPAND, 2 );
+       
+       wxFlexGridSizer* fgSizer31;
+       fgSizer31 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer31->AddGrowableCol( 1 );
+       fgSizer31->SetFlexibleDirection( wxBOTH );
+       fgSizer31->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_staticText161 = new wxStaticText( this, wxID_ANY, wxT("s&cript"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText161->Wrap( -1 );
+       fgSizer31->Add( m_staticText161, 0, wxALL, 5 );
+       
+       wxArrayString m_write_scriptChoices;
+       m_write_script = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_write_scriptChoices, 0 );
+       m_write_script->SetSelection( 0 );
+       fgSizer31->Add( m_write_script, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText171 = new wxStaticText( this, wxID_ANY, wxT("RAM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText171->Wrap( -1 );
+       fgSizer31->Add( m_staticText171, 0, wxALL, 5 );
+       
+       m_write_picker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.sav"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
+       fgSizer31->Add( m_write_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer17->Add( fgSizer31, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer181;
+       bSizer181 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_write_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
+       m_write_gauge->SetMinSize( wxSize( -1,12 ) );
+       
+       bSizer181->Add( m_write_gauge, 1, wxALL, 2 );
+       
+       wxArrayString m_write_increaseChoices;
+       m_write_increase = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_write_increaseChoices, 0 );
+       m_write_increase->SetSelection( 0 );
+       m_write_increase->SetMinSize( wxSize( 40,-1 ) );
+       
+       bSizer181->Add( m_write_increase, 0, wxALL, 2 );
+       
+       m_write_button = new wxButton( this, wxID_ANY, wxT("&write"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer181->Add( m_write_button, 0, wxALL|wxALIGN_RIGHT, 5 );
+       
+       bSizer17->Add( bSizer181, 0, wxEXPAND, 2 );
+       
+       this->SetSizer( bSizer17 );
+       this->Layout();
+       bSizer17->Fit( this );
+       
+       // Connect Events
+       m_read_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_workram::read_button_click ), NULL, this );
+       m_write_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_workram::write_button_click ), NULL, this );
+}
+
+panel_workram::~panel_workram()
+{
+       // Disconnect Events
+       m_read_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_workram::read_button_click ), NULL, this );
+       m_write_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_workram::write_button_click ), NULL, this );
+       
+}
+
+panel_dump::panel_dump( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
+{
+       wxBoxSizer* bSizer9;
+       bSizer9 = new wxBoxSizer( wxVERTICAL );
+       
+       wxFlexGridSizer* fgSizer1;
+       fgSizer1 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer1->AddGrowableCol( 1 );
+       fgSizer1->SetFlexibleDirection( wxBOTH );
+       fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_script_label = new wxStaticText( this, wxID_ANY, wxT("&script"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_script_label->Wrap( -1 );
+       fgSizer1->Add( m_script_label, 0, wxALL, 5 );
+       
+       wxArrayString m_script_choiceChoices;
+       m_script_choice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_script_choiceChoices, 0 );
+       m_script_choice->SetSelection( 0 );
+       fgSizer1->Add( m_script_choice, 0, wxALL|wxEXPAND, 5 );
+       
+       m_romimage_label = new wxStaticText( this, wxID_ANY, wxT("&ROM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_romimage_label->Wrap( -1 );
+       fgSizer1->Add( m_romimage_label, 0, wxALL, 5 );
+       
+       m_romimage_picker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.nes"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
+       fgSizer1->Add( m_romimage_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer9->Add( fgSizer1, 0, wxEXPAND, 5 );
+       
+       m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer9->Add( m_staticline1, 0, wxALL|wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer12;
+       bSizer12 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_cpu_label = new wxStaticText( this, wxID_ANY, wxT("Program ROM"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_cpu_label->Wrap( -1 );
+       m_cpu_label->SetMinSize( wxSize( 80,-1 ) );
+       
+       bSizer12->Add( m_cpu_label, 0, wxALL, 5 );
+       
+       m_cpu_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,12 ), wxGA_HORIZONTAL );
+       bSizer12->Add( m_cpu_gauge, 1, wxALL|wxALIGN_CENTER_VERTICAL, 0 );
+       
+       bSizer9->Add( bSizer12, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer14;
+       bSizer14 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxArrayString m_cpu_increaseChoices;
+       m_cpu_increase = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cpu_increaseChoices, 0 );
+       m_cpu_increase->SetSelection( 0 );
+       m_cpu_increase->SetMinSize( wxSize( 60,-1 ) );
+       
+       bSizer14->Add( m_cpu_increase, 0, wxALL, 5 );
+       
+       m_cpu_value = new wxStaticText( this, wxID_ANY, wxT("0x000000/0x000000"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_cpu_value->Wrap( -1 );
+       m_cpu_value->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 76, 90, 90, false, wxEmptyString ) );
+       
+       bSizer14->Add( m_cpu_value, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer9->Add( bSizer14, 1, wxALIGN_RIGHT, 5 );
+       
+       m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer9->Add( m_staticline2, 0, wxEXPAND | wxALL, 2 );
+       
+       wxBoxSizer* bSizer13;
+       bSizer13 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_ppu_label = new wxStaticText( this, wxID_ANY, wxT("Charcter ROM"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_ppu_label->Wrap( -1 );
+       m_ppu_label->SetMinSize( wxSize( 80,-1 ) );
+       
+       bSizer13->Add( m_ppu_label, 0, wxALL, 5 );
+       
+       m_ppu_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,12 ), wxGA_HORIZONTAL );
+       bSizer13->Add( m_ppu_gauge, 1, wxALL|wxALIGN_CENTER_VERTICAL, 0 );
+       
+       bSizer9->Add( bSizer13, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer132;
+       bSizer132 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxArrayString m_ppu_increaseChoices;
+       m_ppu_increase = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ppu_increaseChoices, 0 );
+       m_ppu_increase->SetSelection( 0 );
+       m_ppu_increase->SetMinSize( wxSize( 60,-1 ) );
+       
+       bSizer132->Add( m_ppu_increase, 0, wxALL, 5 );
+       
+       m_ppu_value = new wxStaticText( this, wxID_ANY, wxT("0x000000/0x000000"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_ppu_value->Wrap( -1 );
+       m_ppu_value->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 76, 90, 90, false, wxEmptyString ) );
+       
+       bSizer132->Add( m_ppu_value, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer9->Add( bSizer132, 1, wxALIGN_RIGHT, 5 );
+       
+       m_staticline3 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer9->Add( m_staticline3, 0, wxEXPAND | wxALL, 2 );
+       
+       wxBoxSizer* bSizer61;
+       bSizer61 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_check_battery = new wxCheckBox( this, wxID_ANY, wxT("&battery"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer61->Add( m_check_battery, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_check_forcemapper = new wxCheckBox( this, wxID_ANY, wxT("&change mapper"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer61->Add( m_check_forcemapper, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_text_forcemapper = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       m_text_forcemapper->Enable( false );
+       m_text_forcemapper->SetMinSize( wxSize( 40,-1 ) );
+       
+       bSizer61->Add( m_text_forcemapper, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_button = new wxButton( this, wxID_ANY, wxT("&dump"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer61->Add( m_button, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer9->Add( bSizer61, 0, wxALIGN_RIGHT, 5 );
+       
+       this->SetSizer( bSizer9 );
+       this->Layout();
+       bSizer9->Fit( this );
+       
+       // Connect Events
+       m_check_forcemapper->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( panel_dump::mapper_change_check ), NULL, this );
+       m_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_dump::button_click ), NULL, this );
+}
+
+panel_dump::~panel_dump()
+{
+       // Disconnect Events
+       m_check_forcemapper->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( panel_dump::mapper_change_check ), NULL, this );
+       m_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_dump::button_click ), NULL, this );
+       
+}
+
+panel_program::panel_program( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
+{
+       wxBoxSizer* bSizer91;
+       bSizer91 = new wxBoxSizer( wxVERTICAL );
+       
+       wxFlexGridSizer* fgSizer11;
+       fgSizer11 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer11->AddGrowableCol( 1 );
+       fgSizer11->SetFlexibleDirection( wxBOTH );
+       fgSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_script_label = new wxStaticText( this, wxID_ANY, wxT("&script"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_script_label->Wrap( -1 );
+       fgSizer11->Add( m_script_label, 0, wxALL, 5 );
+       
+       wxArrayString m_script_choiceChoices;
+       m_script_choice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_script_choiceChoices, 0 );
+       m_script_choice->SetSelection( 0 );
+       fgSizer11->Add( m_script_choice, 0, wxALL|wxEXPAND, 5 );
+       
+       m_romimage_label = new wxStaticText( this, wxID_ANY, wxT("&ROM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_romimage_label->Wrap( -1 );
+       fgSizer11->Add( m_romimage_label, 0, wxALL, 5 );
+       
+       m_romimage_picker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.nes"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL );
+       fgSizer11->Add( m_romimage_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer91->Add( fgSizer11, 0, wxEXPAND, 5 );
+       
+       m_staticline11 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer91->Add( m_staticline11, 0, wxALL|wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer121;
+       bSizer121 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_cpu_label = new wxStaticText( this, wxID_ANY, wxT("Program flash"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_cpu_label->Wrap( -1 );
+       m_cpu_label->SetMinSize( wxSize( 80,-1 ) );
+       
+       bSizer121->Add( m_cpu_label, 0, wxALL, 5 );
+       
+       m_cpu_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,12 ), wxGA_HORIZONTAL );
+       bSizer121->Add( m_cpu_gauge, 1, wxALL|wxALIGN_CENTER_VERTICAL, 0 );
+       
+       bSizer91->Add( bSizer121, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer141;
+       bSizer141 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxArrayString m_cpu_deviceChoices;
+       m_cpu_device = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cpu_deviceChoices, 0 );
+       m_cpu_device->SetSelection( 0 );
+       m_cpu_device->SetMinSize( wxSize( 100,-1 ) );
+       
+       bSizer141->Add( m_cpu_device, 0, wxALL, 5 );
+       
+       wxArrayString m_cpu_paddingChoices;
+       m_cpu_padding = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cpu_paddingChoices, 0 );
+       m_cpu_padding->SetSelection( 0 );
+       m_cpu_padding->SetMinSize( wxSize( 60,-1 ) );
+       
+       bSizer141->Add( m_cpu_padding, 0, wxALL, 5 );
+       
+       m_cpu_value = new wxStaticText( this, wxID_ANY, wxT("0x000000/0x000000"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_cpu_value->Wrap( -1 );
+       m_cpu_value->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 76, 90, 90, false, wxEmptyString ) );
+       
+       bSizer141->Add( m_cpu_value, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer91->Add( bSizer141, 1, wxALIGN_RIGHT, 5 );
+       
+       m_staticline21 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer91->Add( m_staticline21, 0, wxEXPAND | wxALL, 2 );
+       
+       wxBoxSizer* bSizer131;
+       bSizer131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_ppu_label = new wxStaticText( this, wxID_ANY, wxT("Charcter flash"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_ppu_label->Wrap( -1 );
+       m_ppu_label->SetMinSize( wxSize( 80,-1 ) );
+       
+       bSizer131->Add( m_ppu_label, 0, wxALL, 5 );
+       
+       m_ppu_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,12 ), wxGA_HORIZONTAL );
+       bSizer131->Add( m_ppu_gauge, 1, wxALL|wxALIGN_CENTER_VERTICAL, 0 );
+       
+       bSizer91->Add( bSizer131, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer1321;
+       bSizer1321 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxArrayString m_ppu_deviceChoices;
+       m_ppu_device = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ppu_deviceChoices, 0 );
+       m_ppu_device->SetSelection( 0 );
+       m_ppu_device->SetMinSize( wxSize( 100,-1 ) );
+       
+       bSizer1321->Add( m_ppu_device, 0, wxALL, 5 );
+       
+       wxArrayString m_ppu_paddingChoices;
+       m_ppu_padding = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ppu_paddingChoices, 0 );
+       m_ppu_padding->SetSelection( 0 );
+       m_ppu_padding->SetMinSize( wxSize( 60,-1 ) );
+       
+       bSizer1321->Add( m_ppu_padding, 0, wxALL, 5 );
+       
+       m_ppu_value = new wxStaticText( this, wxID_ANY, wxT("0x000000/0x000000"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_ppu_value->Wrap( -1 );
+       m_ppu_value->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 76, 90, 90, false, wxEmptyString ) );
+       
+       bSizer1321->Add( m_ppu_value, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer91->Add( bSizer1321, 1, wxALIGN_RIGHT, 5 );
+       
+       m_staticline31 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer91->Add( m_staticline31, 0, wxEXPAND | wxALL, 2 );
+       
+       wxBoxSizer* bSizer611;
+       bSizer611 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_compare = new wxCheckBox( this, wxID_ANY, wxT("&compare"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer611->Add( m_compare, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_button = new wxButton( this, wxID_ANY, wxT("&program"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer611->Add( m_button, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       bSizer91->Add( bSizer611, 0, wxALIGN_RIGHT, 5 );
+       
+       this->SetSizer( bSizer91 );
+       this->Layout();
+       bSizer91->Fit( this );
+       
+       // Connect Events
+       m_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_program::button_click ), NULL, this );
+}
+
+panel_program::~panel_program()
+{
+       // Disconnect Events
+       m_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( panel_program::button_click ), NULL, this );
+       
+}
diff --git a/client/tag/0.6.2/anago/anago_gui.fbp b/client/tag/0.6.2/anago/anago_gui.fbp
new file mode 100644 (file)
index 0000000..3de36d0
--- /dev/null
@@ -0,0 +1,4252 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\r
+<wxFormBuilder_Project>\r
+    <FileVersion major="1" minor="10" />\r
+    <object class="Project" expanded="1">\r
+        <property name="class_decoration"></property>\r
+        <property name="code_generation">C++</property>\r
+        <property name="disconnect_events">1</property>\r
+        <property name="disconnect_mode">source_name</property>\r
+        <property name="disconnect_python_events">0</property>\r
+        <property name="encoding">UTF-8</property>\r
+        <property name="event_generation">connect</property>\r
+        <property name="file">anago_gui</property>\r
+        <property name="first_id">1000</property>\r
+        <property name="help_provider">none</property>\r
+        <property name="internationalize">0</property>\r
+        <property name="name">anago_gui</property>\r
+        <property name="namespace"></property>\r
+        <property name="path">.</property>\r
+        <property name="precompiled_header"></property>\r
+        <property name="relative_path">1</property>\r
+        <property name="skip_python_events">1</property>\r
+        <property name="use_enum">0</property>\r
+        <property name="use_microsoft_bom">0</property>\r
+        <object class="Frame" expanded="1">\r
+            <property name="bg"></property>\r
+            <property name="center"></property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="extra_style"></property>\r
+            <property name="fg"></property>\r
+            <property name="font">,90,90,-1,70,0</property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">frame_main</property>\r
+            <property name="pos">32,32</property>\r
+            <property name="size">340,460</property>\r
+            <property name="style">wxDEFAULT_FRAME_STYLE</property>\r
+            <property name="subclass"></property>\r
+            <property name="title">anago wx</property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <property name="xrc_skip_sizer">1</property>\r
+            <event name="OnActivate"></event>\r
+            <event name="OnActivateApp"></event>\r
+            <event name="OnChar"></event>\r
+            <event name="OnClose"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnHibernate"></event>\r
+            <event name="OnIconize"></event>\r
+            <event name="OnIdle"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="1">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer4</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">0</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxNotebook" expanded="1">\r
+                        <property name="bg"></property>\r
+                        <property name="bitmapsize"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size">-1,-1</property>\r
+                        <property name="name">m_notebook</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style"></property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnNotebookPageChanged"></event>\r
+                        <event name="OnNotebookPageChanging"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">0</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxPanel" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_panel_log</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style">wxTAB_TRAVERSAL</property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                        <object class="wxBoxSizer" expanded="0">\r
+                            <property name="minimum_size"></property>\r
+                            <property name="name">bSizer6</property>\r
+                            <property name="orient">wxVERTICAL</property>\r
+                            <property name="permission">none</property>\r
+                            <object class="sizeritem" expanded="0">\r
+                                <property name="border">5</property>\r
+                                <property name="flag">wxALL|wxEXPAND</property>\r
+                                <property name="proportion">1</property>\r
+                                <object class="wxTextCtrl" expanded="0">\r
+                                    <property name="bg"></property>\r
+                                    <property name="context_help"></property>\r
+                                    <property name="context_menu">1</property>\r
+                                    <property name="enabled">1</property>\r
+                                    <property name="fg"></property>\r
+                                    <property name="font">,90,90,-1,70,0</property>\r
+                                    <property name="hidden">0</property>\r
+                                    <property name="id">wxID_ANY</property>\r
+                                    <property name="maximum_size"></property>\r
+                                    <property name="maxlength">0</property>\r
+                                    <property name="minimum_size"></property>\r
+                                    <property name="name">m_log</property>\r
+                                    <property name="permission">protected</property>\r
+                                    <property name="pos"></property>\r
+                                    <property name="size"></property>\r
+                                    <property name="style">wxTE_MULTILINE|wxTE_READONLY</property>\r
+                                    <property name="subclass"></property>\r
+                                    <property name="tooltip"></property>\r
+                                    <property name="validator_data_type"></property>\r
+                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                    <property name="validator_variable"></property>\r
+                                    <property name="value"></property>\r
+                                    <property name="window_extra_style"></property>\r
+                                    <property name="window_name"></property>\r
+                                    <property name="window_style"></property>\r
+                                    <event name="OnChar"></event>\r
+                                    <event name="OnEnterWindow"></event>\r
+                                    <event name="OnEraseBackground"></event>\r
+                                    <event name="OnKeyDown"></event>\r
+                                    <event name="OnKeyUp"></event>\r
+                                    <event name="OnKillFocus"></event>\r
+                                    <event name="OnLeaveWindow"></event>\r
+                                    <event name="OnLeftDClick"></event>\r
+                                    <event name="OnLeftDown"></event>\r
+                                    <event name="OnLeftUp"></event>\r
+                                    <event name="OnMiddleDClick"></event>\r
+                                    <event name="OnMiddleDown"></event>\r
+                                    <event name="OnMiddleUp"></event>\r
+                                    <event name="OnMotion"></event>\r
+                                    <event name="OnMouseEvents"></event>\r
+                                    <event name="OnMouseWheel"></event>\r
+                                    <event name="OnPaint"></event>\r
+                                    <event name="OnRightDClick"></event>\r
+                                    <event name="OnRightDown"></event>\r
+                                    <event name="OnRightUp"></event>\r
+                                    <event name="OnSetFocus"></event>\r
+                                    <event name="OnSize"></event>\r
+                                    <event name="OnText"></event>\r
+                                    <event name="OnTextEnter"></event>\r
+                                    <event name="OnTextMaxLen"></event>\r
+                                    <event name="OnTextURL"></event>\r
+                                    <event name="OnUpdateUI"></event>\r
+                                </object>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+        <object class="Panel" expanded="0">\r
+            <property name="bg"></property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="fg"></property>\r
+            <property name="font"></property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">panel_version</property>\r
+            <property name="pos"></property>\r
+            <property name="size">-1,-1</property>\r
+            <property name="subclass"></property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <event name="OnChar"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnInitDialog"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="0">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer30</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticText" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font">,90,92,-1,70,0</property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="label">famicom cartridge utility - anago</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_version_title</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style"></property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <property name="wrap">-1</property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticText" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="label">(C) unagi development team 2010</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_version_copyright</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style"></property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <property name="wrap">-1</property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer16</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticBitmap" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="bitmap">; Load From File</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_version_photo</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size">178,122</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip">okada</property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">programmer - naruko&apos;s latest photo&#x0A;&#x0A;icon designed by hirohiroki</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_version_developer</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size">-1,-1</property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">130</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxTextCtrl" expanded="0">\r
+                        <property name="bg">wxSYS_COLOUR_ACTIVEBORDER</property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="maxlength">0</property>\r
+                        <property name="minimum_size">-1,80</property>\r
+                        <property name="name">m_version_detail</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxTE_MULTILINE|wxTE_READONLY</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="value"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnText"></event>\r
+                        <event name="OnTextEnter"></event>\r
+                        <event name="OnTextMaxLen"></event>\r
+                        <event name="OnTextURL"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+        <object class="Panel" expanded="1">\r
+            <property name="bg"></property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="fg"></property>\r
+            <property name="font"></property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">panel_workram</property>\r
+            <property name="pos"></property>\r
+            <property name="size">-1,-1</property>\r
+            <property name="subclass"></property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <event name="OnChar"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnInitDialog"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="1">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer17</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer221</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxStaticLine" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticline111</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxLI_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">RAM read</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText221</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxStaticLine" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticline71</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxLI_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxFlexGridSizer" expanded="0">\r
+                        <property name="cols">2</property>\r
+                        <property name="flexible_direction">wxBOTH</property>\r
+                        <property name="growablecols">1</property>\r
+                        <property name="growablerows"></property>\r
+                        <property name="hgap">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">fgSizer3</property>\r
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="rows">2</property>\r
+                        <property name="vgap">0</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;script</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText16</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_read_script</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">RAM image</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText17</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxFilePickerCtrl" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="message">Select a file</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_read_picker</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="wildcard">*.sav</property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnFileChanged"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="1">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer18</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,12</property>\r
+                                <property name="name">m_read_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">40,-1</property>\r
+                                <property name="name">m_read_increase</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_RIGHT</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxButton" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="default">0</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;read</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_read_button</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnButtonClick">read_button_click</event>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer22</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxStaticLine" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticline12</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxLI_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">RAM write</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText22</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxStaticLine" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticline7</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxLI_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxFlexGridSizer" expanded="0">\r
+                        <property name="cols">2</property>\r
+                        <property name="flexible_direction">wxBOTH</property>\r
+                        <property name="growablecols">1</property>\r
+                        <property name="growablerows"></property>\r
+                        <property name="hgap">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">fgSizer31</property>\r
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="rows">2</property>\r
+                        <property name="vgap">0</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">s&amp;cript</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText161</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_write_script</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">RAM image</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_staticText171</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxFilePickerCtrl" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="message">Select a file</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_write_picker</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_SAVE|wxFLP_USE_TEXTCTRL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="wildcard">*.sav</property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnFileChanged"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="1">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer181</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,12</property>\r
+                                <property name="name">m_write_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">2</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">40,-1</property>\r
+                                <property name="name">m_write_increase</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_RIGHT</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxButton" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="default">0</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;write</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_write_button</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnButtonClick">write_button_click</event>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+        <object class="Panel" expanded="0">\r
+            <property name="bg"></property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="fg"></property>\r
+            <property name="font"></property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">panel_dump</property>\r
+            <property name="pos"></property>\r
+            <property name="size">-1,-1</property>\r
+            <property name="subclass"></property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <event name="OnChar"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnInitDialog"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="0">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer9</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxFlexGridSizer" expanded="0">\r
+                        <property name="cols">2</property>\r
+                        <property name="flexible_direction">wxBOTH</property>\r
+                        <property name="growablecols">1</property>\r
+                        <property name="growablerows"></property>\r
+                        <property name="hgap">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">fgSizer1</property>\r
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="rows">2</property>\r
+                        <property name="vgap">0</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;script</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_script_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_script_choice</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;ROM image</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_romimage_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxFilePickerCtrl" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="message">Select a file</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_romimage_picker</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE|wxFLP_USE_TEXTCTRL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="wildcard">*.nes</property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnFileChanged"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline1</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer12</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">Program ROM</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">80,-1</property>\r
+                                <property name="name">m_cpu_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">0</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_cpu_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size">-1,12</property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer14</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_cpu_increase</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font">,90,90,-1,76,0</property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">0x000000/0x000000</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,-1</property>\r
+                                <property name="name">m_cpu_value</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND | wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline2</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer13</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">Charcter ROM</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">80,-1</property>\r
+                                <property name="name">m_ppu_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">0</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_ppu_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size">-1,12</property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer132</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_ppu_increase</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font">,90,90,-1,76,0</property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">0x000000/0x000000</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,-1</property>\r
+                                <property name="name">m_ppu_value</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND | wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline3</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer61</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;battery</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_check_battery</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;change mapper</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_check_forcemapper</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox">mapper_change_check</event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxTextCtrl" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">0</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="maxlength">0</property>\r
+                                <property name="minimum_size">40,-1</property>\r
+                                <property name="name">m_text_forcemapper</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnText"></event>\r
+                                <event name="OnTextEnter"></event>\r
+                                <event name="OnTextMaxLen"></event>\r
+                                <event name="OnTextURL"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxButton" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="default">0</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;dump</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_button</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnButtonClick">button_click</event>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+        <object class="Panel" expanded="0">\r
+            <property name="bg"></property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="fg"></property>\r
+            <property name="font"></property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">panel_program</property>\r
+            <property name="pos"></property>\r
+            <property name="size">-1,-1</property>\r
+            <property name="subclass"></property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <event name="OnChar"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnInitDialog"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="0">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer91</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxFlexGridSizer" expanded="0">\r
+                        <property name="cols">2</property>\r
+                        <property name="flexible_direction">wxBOTH</property>\r
+                        <property name="growablecols">1</property>\r
+                        <property name="growablerows"></property>\r
+                        <property name="hgap">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">fgSizer11</property>\r
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="rows">2</property>\r
+                        <property name="vgap">0</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;script</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_script_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_script_choice</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;ROM image</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_romimage_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxFilePickerCtrl" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="message">Select a file</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_romimage_picker</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="wildcard">*.nes</property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnFileChanged"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline11</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer121</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">Program flash</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">80,-1</property>\r
+                                <property name="name">m_cpu_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">0</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_cpu_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size">-1,12</property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer141</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">100,-1</property>\r
+                                <property name="name">m_cpu_device</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_cpu_padding</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font">,90,90,-1,76,0</property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">0x000000/0x000000</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,-1</property>\r
+                                <property name="name">m_cpu_value</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND | wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline21</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer131</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">Charcter flash</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">80,-1</property>\r
+                                <property name="name">m_ppu_label</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">0</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxGauge" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_ppu_gauge</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="range">100</property>\r
+                                <property name="size">-1,12</property>\r
+                                <property name="style">wxGA_HORIZONTAL</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer1321</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">100,-1</property>\r
+                                <property name="name">m_ppu_device</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_ppu_padding</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font">,90,90,-1,76,0</property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">0x000000/0x000000</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">-1,-1</property>\r
+                                <property name="name">m_ppu_value</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxEXPAND | wxALL</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxStaticLine" expanded="0">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_staticline31</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxLI_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="0">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALIGN_RIGHT</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="0">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer611</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;compare</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_compare</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="0">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxButton" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="default">0</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;program</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_button</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnButtonClick">button_click</event>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+    </object>\r
+</wxFormBuilder_Project>\r
diff --git a/client/tag/0.6.2/anago/anago_gui.h b/client/tag/0.6.2/anago/anago_gui.h
new file mode 100644 (file)
index 0000000..651da74
--- /dev/null
@@ -0,0 +1,196 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Sep  8 2010)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __anago_gui__
+#define __anago_gui__
+
+#include <wx/gdicmn.h>
+#include <wx/notebook.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/string.h>
+#include <wx/textctrl.h>
+#include <wx/sizer.h>
+#include <wx/panel.h>
+#include <wx/frame.h>
+#include <wx/stattext.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/statbmp.h>
+#include <wx/statline.h>
+#include <wx/choice.h>
+#include <wx/filepicker.h>
+#include <wx/gauge.h>
+#include <wx/button.h>
+#include <wx/checkbox.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frame_main
+///////////////////////////////////////////////////////////////////////////////
+class frame_main : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxNotebook* m_notebook;
+               wxPanel* m_panel_log;
+               wxTextCtrl* m_log;
+       
+       public:
+               
+               frame_main( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("anago wx"), const wxPoint& pos = wxPoint( 32,32 ), const wxSize& size = wxSize( 340,460 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+               ~frame_main();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class panel_version
+///////////////////////////////////////////////////////////////////////////////
+class panel_version : public wxPanel 
+{
+       private:
+       
+       protected:
+               wxStaticText* m_version_title;
+               wxStaticText* m_version_copyright;
+               wxStaticBitmap* m_version_photo;
+               wxStaticText* m_version_developer;
+               wxTextCtrl* m_version_detail;
+       
+       public:
+               
+               panel_version( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
+               ~panel_version();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class panel_workram
+///////////////////////////////////////////////////////////////////////////////
+class panel_workram : public wxPanel 
+{
+       private:
+       
+       protected:
+               wxStaticLine* m_staticline111;
+               wxStaticText* m_staticText221;
+               wxStaticLine* m_staticline71;
+               wxStaticText* m_staticText16;
+               wxChoice* m_read_script;
+               wxStaticText* m_staticText17;
+               wxFilePickerCtrl* m_read_picker;
+               wxGauge* m_read_gauge;
+               wxChoice* m_read_increase;
+               wxButton* m_read_button;
+               wxStaticLine* m_staticline12;
+               wxStaticText* m_staticText22;
+               wxStaticLine* m_staticline7;
+               wxStaticText* m_staticText161;
+               wxChoice* m_write_script;
+               wxStaticText* m_staticText171;
+               wxFilePickerCtrl* m_write_picker;
+               wxGauge* m_write_gauge;
+               wxChoice* m_write_increase;
+               wxButton* m_write_button;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void read_button_click( wxCommandEvent& event ) { event.Skip(); }
+               virtual void write_button_click( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               panel_workram( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
+               ~panel_workram();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class panel_dump
+///////////////////////////////////////////////////////////////////////////////
+class panel_dump : public wxPanel 
+{
+       private:
+       
+       protected:
+               wxStaticText* m_script_label;
+               wxChoice* m_script_choice;
+               wxStaticText* m_romimage_label;
+               wxFilePickerCtrl* m_romimage_picker;
+               wxStaticLine* m_staticline1;
+               wxStaticText* m_cpu_label;
+               wxGauge* m_cpu_gauge;
+               wxChoice* m_cpu_increase;
+               wxStaticText* m_cpu_value;
+               wxStaticLine* m_staticline2;
+               wxStaticText* m_ppu_label;
+               wxGauge* m_ppu_gauge;
+               wxChoice* m_ppu_increase;
+               wxStaticText* m_ppu_value;
+               wxStaticLine* m_staticline3;
+               wxCheckBox* m_check_battery;
+               wxCheckBox* m_check_forcemapper;
+               wxTextCtrl* m_text_forcemapper;
+               wxButton* m_button;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void mapper_change_check( wxCommandEvent& event ) { event.Skip(); }
+               virtual void button_click( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               panel_dump( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
+               ~panel_dump();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class panel_program
+///////////////////////////////////////////////////////////////////////////////
+class panel_program : public wxPanel 
+{
+       private:
+       
+       protected:
+               wxStaticText* m_script_label;
+               wxChoice* m_script_choice;
+               wxStaticText* m_romimage_label;
+               wxFilePickerCtrl* m_romimage_picker;
+               wxStaticLine* m_staticline11;
+               wxStaticText* m_cpu_label;
+               wxGauge* m_cpu_gauge;
+               wxChoice* m_cpu_device;
+               wxChoice* m_cpu_padding;
+               wxStaticText* m_cpu_value;
+               wxStaticLine* m_staticline21;
+               wxStaticText* m_ppu_label;
+               wxGauge* m_ppu_gauge;
+               wxChoice* m_ppu_device;
+               wxChoice* m_ppu_padding;
+               wxStaticText* m_ppu_value;
+               wxStaticLine* m_staticline31;
+               wxCheckBox* m_compare;
+               wxButton* m_button;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void button_click( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               panel_program( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
+               ~panel_program();
+       
+};
+
+#endif //__anago_gui__
diff --git a/client/tag/0.6.2/anago/anago_gui.rc b/client/tag/0.6.2/anago/anago_gui.rc
new file mode 100644 (file)
index 0000000..b625c9a
--- /dev/null
@@ -0,0 +1,2 @@
+unagi_blue ICON "unagi_blue.ico"
+#include "wx/msw/wx.rc"
diff --git a/client/tag/0.6.2/anago/conble.ico b/client/tag/0.6.2/anago/conble.ico
new file mode 100644 (file)
index 0000000..441232f
Binary files /dev/null and b/client/tag/0.6.2/anago/conble.ico differ
diff --git a/client/tag/0.6.2/anago/conble.xpm b/client/tag/0.6.2/anago/conble.xpm
new file mode 100644 (file)
index 0000000..d9bb5aa
--- /dev/null
@@ -0,0 +1,49 @@
+/* XPM */
+static const char *conble[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 11 1",
+"  c #010101",
+". c #312121",
+"X c #2A2862",
+"o c #402C6A",
+"O c #4A3E80",
+"+ c #6246B6",
+"@ c #637BBC",
+"# c #9C8C84",
+"$ c #BDADA5",
+"% c #F7E7DE",
+"& c None",
+/* pixels */
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&XXXXXXXXXXX&&&",
+"&&&&&&&&&&&&&XXXXOOXXOXOXXXoXX&&",
+"&&&&&&&&&&XXXOOOOXOoooXOXoXXXXX&",
+"&&&&&&&XXXOOXXoOXooXoXXXXXXoXXX&",
+"&&&&&XOOOOoOoXooooOOO@$@XXX.oXX&",
+"&&&XXOXoOXXooOOOOOOO$%%%XXX oXX&",
+"&&XOoOXXooOOOOOOOOOO@%%@oXX oXX&",
+"&XOOXXooOOOOOOOOOOOOOOOoXoX oXX&",
+"&XOXooOOOOOOOOOOOOOOOOOOoXXXXXX&",
+"&XXoOO++OOOOOOOOOOOOOOOOoXX   X&",
+"&XO+OO++OOOOOOOOOOOOOOOOoX #  X&",
+"&X++OOOOOOOOOOOOOOOOOOOoX #$ .&&",
+"&X++OOOOOOOOOOOOOOOOOOo  #$$ X&&",
+"&X+++OOOOOOOOOOOOOOOOOX #$$ .X&&",
+"&X+++OOOOOOOOOOOOOOOOo  $$$ X&&&",
+"&X+++OOOOOOOOOOOOOOOOX #$$# X&&&",
+"&XO+++OOOOOOOOOOOOOOOX #$# .X&&&",
+"&&XO+++OOOOOOOOOOOOOo. ### X&&&&",
+"&&&XoOO++OOOOOOOOOOOX ###  X&&&&",
+"&&&&&XoO+++O+OOOOXXXX ## .X&&&&&",
+"&&&&&&&XXoOOOXXXXXXXX    X&&&&&&",
+"&&&&&&&&&XXXXXXXXX.  XXXX&&&&&&&",
+"&&&&&&&&&&XXXXXXXXXXXX&&&&&&&&&&",
+"&&&&&&&&&&&&&XXXXX&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"
+};
diff --git a/client/tag/0.6.2/anago/cui_gauge.c b/client/tag/0.6.2/anago/cui_gauge.c
new file mode 100644 (file)
index 0000000..111b52b
--- /dev/null
@@ -0,0 +1,162 @@
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#ifdef WIN32
+  #include <windows.h>
+#endif
+#include "type.h"
+#include "memory_manage.h"
+#include "widget.h"
+
+struct cui_gauge{
+       const wgChar *name;
+       int value, range;
+       int lineback, lineforward;
+};
+
+static void range_set(void *obj, int value)
+{
+       struct cui_gauge *t = obj;
+       t->range = value;
+}
+
+#ifdef _UNICODE
+  #define PRINTF wprintf
+  #define VPRINTF vwprintf
+#else
+  #define PRINTF printf
+  #define VPRINTF vprintf
+#endif
+static void console_move(int line)
+{
+       if(line == 0){
+               return;
+       }
+#ifdef WIN32
+       HANDLE c;
+       CONSOLE_SCREEN_BUFFER_INFO info;
+       c = GetStdHandle(STD_OUTPUT_HANDLE);
+       if(GetConsoleScreenBufferInfo(c, &info) == 0){
+               //command.com, cygwin shell, mingw shell
+               if(line < 0){
+                       PRINTF(wgT("\x1b[%dA"), -line);
+               }else if(line == 1){
+                       PRINTF(wgT("\n"));
+                       fflush(stdout);
+               }else{
+                       PRINTF(wgT("\n"));
+                       fflush(stdout);
+                       PRINTF(wgT("\x1b[%dB"), line - 1);
+//                     PRINTF(wgT("\x1b[%dB"), line - 1);
+//                     fflush(stdout);
+               }
+       }else{
+               //cmd.exe
+               info.dwCursorPosition.X = 0;
+               info.dwCursorPosition.Y += line;
+               SetConsoleCursorPosition(c, info.dwCursorPosition);
+       }
+#else
+       if(line < 0){
+               PRINTF(wgT("\x1b[%dA\x1b[35D"), -line);
+       }else{
+               PRINTF(wgT("\x1b[%dB\x1b[35D"), line);
+       }
+#endif
+//     fflush(stdout);
+}
+
+static void draw(const struct cui_gauge *t)
+{
+       const int barnum = 16;
+       const int unit = t->range / barnum;
+       int igeta = t->value / unit;
+       wgChar bar[barnum + 3 + 1];
+       wgChar *text = bar;
+       int i;
+       assert(igeta <= barnum);
+       PRINTF(wgT("%s 0x%06x/0x%06x "), t->name, (int) t->value, (int) t->range);
+       *text++ = wgT('|');
+       for(i = 0; i < igeta; i++){
+               if(i == barnum / 2){
+                       *text++ = wgT('|');
+               }
+               *text++ = wgT('#');
+       }
+       for(; i < barnum; i++){
+               if(i == barnum / 2){
+                       *text++ = wgT('|');
+               }
+               *text++ = wgT(' ');
+       }
+       *text++ = wgT('|');
+       *text = wgT('\0');
+       PRINTF(bar);
+//     fflush(stdout);
+}
+
+
+static void value_set(void *obj, void *d, int value)
+{
+       struct cui_gauge *t = (struct cui_gauge *) obj;
+       t->value = value;
+       if(t->range != 0){
+               draw(t);
+       }else{
+               PRINTF(wgT("%s skip"), t->name);
+       }
+       console_move(1);
+}
+
+static void value_add(void *obj, void *d, int value)
+{
+       struct cui_gauge *t = (struct cui_gauge *) obj;
+       t->value += value;
+       console_move(t->lineback);
+       draw(t);
+       console_move(t->lineforward);
+}
+
+static void name_set(void *obj, const wgChar *name, int lineforward, int lineback)
+{
+       struct cui_gauge *t = (struct cui_gauge *) obj;
+       t->name = name;
+       t->lineforward = lineforward;
+       t->lineback = lineback;
+}
+
+static void label_set(void *obj, const wgChar *format, ...)
+{
+       va_list list;
+       const struct cui_gauge *t = (const struct cui_gauge *) obj;
+
+       va_start(list, format);
+       console_move(t->lineback);
+       PRINTF(wgT("%s "), t->name);
+       VPRINTF(format, list);
+       console_move(t->lineforward);
+       va_end(list);
+}
+
+void cui_gauge_new(struct gauge *t, const wgChar *name, int lineforward, int lineback)
+{
+       t->bar =  Malloc(sizeof(struct cui_gauge));
+       t->label = t->bar;
+       name_set(t->bar, name, lineforward, lineback);
+       t->range_set = range_set;
+       t->value_set = value_set;
+       t->value_add = value_add;
+       t->label_set = label_set;
+}
+
+void cui_gauge_destory(struct gauge *t)
+{
+       Free(t->bar);
+       t->bar = NULL;
+       t->label = NULL;
+       t->range_set = NULL;
+       t->value_set = NULL;
+       t->value_add = NULL;
+       t->label_set = NULL;
+}
diff --git a/client/tag/0.6.2/anago/cui_gauge.h b/client/tag/0.6.2/anago/cui_gauge.h
new file mode 100644 (file)
index 0000000..c47df25
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _CUI_GAUGE_H_
+#define _CUI_GAUGE_H_
+struct gauge;
+void cui_gauge_new(struct gauge *t, const wgChar *name, int lineforward, int lineback);
+void cui_gauge_destory(struct gauge *t);
+#endif
diff --git a/client/tag/0.6.2/anago/dumpcore.nut b/client/tag/0.6.2/anago/dumpcore.nut
new file mode 100644 (file)
index 0000000..eec4c6b
--- /dev/null
@@ -0,0 +1,57 @@
+function dumpsize_get(m, increase)
+{
+       local dumpsize = m.size_base * increase;
+       if(dumpsize > m.size_max){
+               dumpsize = m.size_max;
+       }
+       return dumpsize;
+}
+
+function dump(d, script, mappernum, increase_cpu, increase_ppu)
+{
+       const mega = 0x20000;
+       const INCREASE_AUTO = 11;
+       enum memory_type{ROM, RAM};
+       dofile(script);
+
+       local vram = board.vram_mirrorfind == true ? 1 : 0;
+       local ppuarea_memory;
+       if(mappernum == -1){
+               mappernum = board.mappernum;
+       }
+       if(board.ppu_rom.size_base == 0){
+               ppuarea_memory = memory_type.RAM;
+       }else if(board.ppu_ramfind == true){
+               ppuarea_memory = ppu_ramfind(d) == true ? memory_type.RAM : memory_type.ROM;
+               if(ppuarea_memory == memory_type.RAM){
+                       increase_ppu = 0;
+               }
+       }else{
+               ppuarea_memory = memory_type.ROM;
+       }
+       if(increase_cpu == INCREASE_AUTO){
+               if(ppuarea_memory == memory_type.RAM && board.ppu_ramfind == true){
+                       increase_cpu = 2;
+               }else{
+                       increase_cpu = 1;
+               }
+       }
+       local cpu_dumpsize = dumpsize_get(board.cpu_rom, increase_cpu);
+       local ppu_dumpsize = dumpsize_get(board.ppu_rom, increase_ppu);
+
+       memory_new(d, cpu_dumpsize, ppu_dumpsize);
+       cpu_dump(d, cpu_dumpsize / board.cpu_rom.banksize, board.cpu_rom.banksize);
+       if(ppuarea_memory == memory_type.ROM){
+               ppu_dump(d, ppu_dumpsize / board.ppu_rom.banksize, board.ppu_rom.banksize);
+       }
+       nesfile_save(d, mappernum, vram);
+}
+
+function workram_rw(d, script, increase_cpu)
+{
+       dofile(script);
+       local cpu_dumpsize = dumpsize_get(board.cpu_ram, increase_cpu);
+       memory_new(d, cpu_dumpsize, 0);
+       cpu_ram_access(d, cpu_dumpsize / board.cpu_ram.banksize, board.cpu_ram.banksize);
+       memory_finalize(d);
+}
diff --git a/client/tag/0.6.2/anago/flash_device.c b/client/tag/0.6.2/anago/flash_device.c
new file mode 100644 (file)
index 0000000..4da009c
--- /dev/null
@@ -0,0 +1,186 @@
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <squirrel.h>
+#include <sqstdio.h>
+#include <sqstdaux.h>
+#include "type.h"
+#include "memory_manage.h"
+#include "squirrel_wrap.h"
+#include "flash_device.h"
+
+static void call(HSQUIRRELVM v, const wgChar *devicename)
+{
+       sq_pushroottable(v);
+       sq_pushstring(v, _SC("flash_device_get"), -1);
+       if(SQ_SUCCEEDED(sq_get(v,-2))){
+               sq_pushroottable(v);
+               sq_pushstring(v, devicename, -1);
+               sq_call(v, 2, SQTrue, SQTrue);
+       }
+}
+static bool long_get(HSQUIRRELVM v, const wgChar *field, long *ret)
+{
+       sq_pushstring(v, field, -1);
+       SQRESULT r = sq_get(v, -2);
+       if(r != SQ_OK){
+               return false;
+       }
+       if(sq_gettype(v, -1) != OT_INTEGER){
+               return false;
+       }
+       SQInteger i;
+       r = sq_getinteger(v, -1, &i);
+       if(r != SQ_OK){
+               return false;
+       }
+       *ret = (long) i;
+       sq_pop(v, 1);
+       return true;
+}
+static bool bool_get(HSQUIRRELVM v, const wgChar *field, bool *ret)
+{
+       sq_pushstring(v, field, -1);
+       SQRESULT r = sq_get(v, -2);
+       if(r != SQ_OK){
+               return false;
+       }
+       if(sq_gettype(v, -1) != OT_BOOL){
+               return false;
+       }
+       SQBool i;
+       r = sq_getbool(v, -1, &i);
+       if(r != SQ_OK){
+               return false;
+       }
+       if(i == SQTrue){
+               *ret = true;
+       }else{
+               *ret = false;
+       }
+       sq_pop(v, 1);
+       return true;
+}
+bool flash_device_get(const wgChar *name, struct flash_device *t)
+{
+       HSQUIRRELVM v = qr_open(NULL); 
+       if(SQ_FAILED(sqstd_dofile(v, _SC("flashdevice.nut"), SQFalse, SQTrue))){
+               qr_close(v);
+               return false;
+       }
+       SQInteger top = sq_gettop(v);
+       call(v, name);
+       if(sq_gettype(v, -1) != OT_TABLE){
+               goto field_error;
+       }
+       t->name = name;
+       if(long_get(v, _SC("capacity"), &t->capacity) == false){
+               goto field_error;
+       }
+       if(long_get(v, _SC("pagesize"), &t->pagesize) == false){
+               goto field_error;
+       }
+       if(long_get(v, _SC("erase_wait"), &t->erase_wait) == false){
+               goto field_error;
+       }
+       if(bool_get(v, _SC("erase_require"), &t->erase_require) == false){
+               goto field_error;
+       }
+       if(bool_get(v, _SC("retry"), &t->retry) == false){
+               goto field_error;
+       }
+       if(long_get(v, _SC("command_mask"), &t->command_mask) == false){
+               goto field_error;
+       }
+       long dd;
+       if(long_get(v, _SC("id_manufacurer"), &dd) == false){
+               goto field_error;
+       }
+       t->id_manufacurer = dd;
+       if(long_get(v, _SC("id_device"), &dd) == false){
+               goto field_error;
+       }
+       t->id_device = dd;
+       sq_settop(v, top);
+       qr_close(v);
+       return true;
+
+field_error:
+//     puts("script field error");
+       qr_close(v);
+       return false;
+}
+
+static int flash_device_number_get(HSQUIRRELVM v)
+{
+       sq_pushroottable(v);
+       sq_pushstring(v, _SC("flash_device_number_get"), -1);
+       if(SQ_SUCCEEDED(sq_get(v,-2))){
+               sq_pushroottable(v);
+               SQRESULT r = sq_call(v, 1, SQTrue, SQTrue);
+               assert(r == SQ_OK);
+               r++;
+       }
+       if(sq_gettype(v, -1) != OT_INTEGER){
+               return 0;
+       }
+       SQInteger i;
+       if(SQ_FAILED(sq_getinteger(v, -1, &i))){
+               return 0;
+       }
+       return i;
+}
+
+static int flash_device_name_get(HSQUIRRELVM v, int index, const wgChar **str)
+{
+       sq_pushroottable(v);
+       sq_pushstring(v, _SC("flash_device_name_get"), -1);
+       if(SQ_SUCCEEDED(sq_get(v,-2))){
+               sq_pushroottable(v);
+               sq_pushinteger(v, index);
+               SQRESULT r = sq_call(v, 2, SQTrue, SQTrue);
+               assert(r == SQ_OK);
+               r++;
+       }
+       if(sq_gettype(v, -1) != OT_STRING){
+               return 0;
+       }
+       if(SQ_FAILED(sq_getstring(v, -1, str))){
+               return 0;
+       }
+       return 1;
+}
+
+#ifdef _UNICODE
+  #define STRNCMP wcsncmp
+#else
+  #define STRNCMP strncmp
+#endif
+void flash_device_listup(struct flash_listup *t)
+{
+       const wgChar *str;
+       HSQUIRRELVM v = qr_open(NULL);
+       SQInteger top = sq_gettop(v);
+
+       if(SQ_FAILED(sqstd_dofile(v, _SC("flashdevice.nut"), SQFalse, SQTrue))){
+//             puts("flash device script error");
+               qr_close(v);
+               return;
+       }
+
+       int i;
+       const int device_num = flash_device_number_get(v);
+       sq_settop(v, top);
+
+       for(i = 0; i < device_num; i++){
+               flash_device_name_get(v, i, &str);
+               if(STRNCMP(str, _SC("dummy"), 6) != 0){
+                       t->append(t->obj_cpu, str);
+                       t->append(t->obj_ppu, str);
+               }
+               sq_settop(v, top);
+       }
+
+       qr_close(v);
+       v = NULL;
+}
diff --git a/client/tag/0.6.2/anago/flash_device.h b/client/tag/0.6.2/anago/flash_device.h
new file mode 100644 (file)
index 0000000..0c8b726
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef _FLASH_DEVICE_H_
+#define _FLASH_DEVICE_H_
+struct flash_device{
+       const wgChar *name;
+       long capacity, pagesize;
+       long erase_wait; //unit is msec
+       bool erase_require, retry;
+       uint8_t id_manufacurer, id_device;
+       long command_mask;
+};
+
+bool flash_device_get(const wgChar *name, struct flash_device *t);
+//0x80 °Ê¹ß¤ÏËÜÅö¤Î¥Ç¥Ð¥¤¥¹½ÅÊ£¤·¤Ê¤¤¤È»×¤¦. Ã¯¤« JEDEC ¤Î¤È¤³¤ò¤·¤é¤Ù¤Æ.
+enum{
+       FLASH_ID_DEVICE_SRAM = 0xf0, 
+       FLASH_ID_DEVICE_DUMMY
+};
+//for GUI device listup
+struct flash_listup{
+       void *obj_cpu, *obj_ppu;
+       void (*append)(void *obj, const wgChar *str);
+};
+void flash_device_listup(struct flash_listup *t);
+#endif
diff --git a/client/tag/0.6.2/anago/flashdevice.nut b/client/tag/0.6.2/anago/flashdevice.nut
new file mode 100644 (file)
index 0000000..4d347a4
--- /dev/null
@@ -0,0 +1,106 @@
+//bit is masking MSB
+function mask_get(bit)
+{
+       local t = 1 << (bit + 1);
+       return t - 1;
+}
+local mega = 0x20000;
+local MASK_A14 = mask_get(14);
+local MASK_A10 = mask_get(10);
+device <- {
+       ["dummy"] = {
+               capacity = 16 * mega, pagesize = 1,
+               erase_wait = 0, erase_require = false,
+               retry = false,
+               id_manufacurer = 0xf1, id_device = 0xf1,
+               command_mask = 0
+       },
+       ["W29C020"] = {
+               capacity = 2 * mega, pagesize = 0x80,
+               erase_wait = 50, erase_require = false,
+               retry = false,
+               id_manufacurer = 0xda, id_device = 0x45,
+               command_mask = MASK_A14
+       },
+       ["W29C040"] = {
+               capacity = 4 * mega, pagesize = 0x100,
+               erase_wait = 50, erase_require = false,
+               retry = true,
+               id_manufacurer = 0xda, id_device = 0x46,
+               command_mask = MASK_A14
+       },
+       ["W49F002"] = {
+               capacity = 2 * mega, pagesize = 1,
+               erase_wait = 100, erase_require = true,
+               retry = false,
+               id_manufacurer = 0xda, id_device = 0xae,
+               command_mask = MASK_A14
+       },
+       ["AT49F002"] = {
+               capacity = 2 * mega, pagesize = 1,
+               erase_wait = 100, erase_require = true,
+               retry = true,
+               id_manufacurer = 0x1f, id_device = 0x08,
+               command_mask = MASK_A14
+       },
+       ["EN29F002T"] = {
+               capacity = 2 * mega, pagesize = 1,
+               erase_wait = 2000, erase_require = true,
+               retry = false,
+               id_manufacurer = 0x1c, id_device = 0x92,
+               command_mask = MASK_A14
+       },
+       ["AM29F040B"] = {
+               capacity = 4 * mega, pagesize = 1,
+               erase_wait = 8000, erase_require = true,
+               retry = false,
+               id_manufacurer = 0x01, id_device = 0xa4,
+               command_mask = MASK_A10
+       },
+       //command mask is not written in datasheet!
+       ["PM29F002T"] = {
+               capacity = 2 * mega, pagesize = 1,
+               erase_wait = 500, erase_require = true,
+               retry = false,
+               id_manufacurer = 0x9d, id_device = 0x1d,
+               command_mask = MASK_A10 //maybe A10-A0
+       },
+       //chip erase time is not written in datasheet!!
+       ["MBM29F080A"] = {
+               capacity = 8 * mega, pagesize = 1,
+               erase_wait = 8000, erase_require = true,
+               retry = false,
+               id_manufacurer = 0x04, id_device = 0xd5,
+               command_mask = MASK_A10
+       },
+       ["SST39SF040"] = {
+               capacity = 4 * mega, pagesize = 1,
+               erase_wait = 100, erase_require = true,
+               retry = false,
+               id_manufacurer = 0xbf, id_device = 0xb7,
+               command_mask = MASK_A14
+       }
+};
+function flash_device_get(name)
+{
+       return device[name];
+}
+
+//listup for GUI
+//device table -> device name list array
+{
+       device_list<-[];
+       foreach(v, i in device){
+               device_list.append(v);
+       }
+       device_list.sort();
+}
+
+function flash_device_number_get()
+{
+       return device_list.len();
+}
+function flash_device_name_get(i)
+{
+       return device_list[i];
+}
diff --git a/client/tag/0.6.2/anago/nescartxml.cpp b/client/tag/0.6.2/anago/nescartxml.cpp
new file mode 100644 (file)
index 0000000..73e48db
--- /dev/null
@@ -0,0 +1,82 @@
+#include <wx/wx.h>
+#include <wx/xml/xml.h>
+#include "nescartxml.hh"
+
+WX_DECLARE_HASH_MAP(unsigned long, wxXmlNode *, wxIntegerHash, wxIntegerEqual, CartridgeHash);
+
+RomDb::RomDb(wxString file)
+{
+       m_hash = new CartridgeHash(2200);
+       m_document = new wxXmlDocument(file);
+}
+
+RomDb::RomDb(void)
+{
+       m_hash = new CartridgeHash(20);
+       m_document = new wxXmlDocument();
+}
+
+RomDb::~RomDb(void)
+{
+       delete m_hash;
+       delete m_document;
+}
+
+bool RomDb::Generate(void)
+{
+       wxXmlNode *root = m_document->GetRoot();
+       if(root == NULL){
+               return false;
+       }
+       wxXmlNode *game = root->GetChildren();
+       if(game == NULL){
+               return false;
+       }
+       while(game != NULL){
+               wxXmlNode *cartridge = game->GetChildren();
+               while(cartridge != NULL){
+                       wxString crcstr;
+                       if(cartridge->GetPropVal(wxT("crc"), &crcstr) == true){
+                               unsigned long crc;
+                               if(crcstr.ToULong(&crc, 0x10) == true){
+                                       (*m_hash)[crc] = cartridge;
+                               }
+                       }
+                       cartridge = cartridge->GetNext();
+               }
+               game = game->GetNext();
+       }
+/*     wxXmlNode *board = cartdige->GetChildren();
+       wxXmlNode *parts = board->GetChildren();
+       while(parts != NULL){
+               wxString name = parts->GetName();
+               if(name == wxT("prg") || name == wxT("chr")){
+                       *log << parts->GetPropVal(wxT("name"), wxT(""));
+                       *log << parts->GetPropVal(wxT("crc"), wxT("xx")) << wxT("\n");
+               }
+               parts = parts->GetNext();
+       }*/
+       return true;
+}
+
+void RomDb::Search(unsigned long crc, wxTextCtrl *log) const
+{
+       wxXmlNode *cartridge = (*m_hash)[crc];
+       if(cartridge == NULL){
+               return;
+       }
+       wxXmlNode *game = cartridge->GetParent();
+       const wxString error = wxT("*error*");
+       wxString field, name;
+       if(game->GetPropVal(wxT("altname"), &name) == false){
+               name = game->GetPropVal(wxT("name"), error);
+       }
+       field = wxT("name:") + name;
+       *log << field << wxT("\n");
+       
+       field = wxT("region:") + game->GetPropVal(wxT("region"), error);
+       field += wxT(" catalog:") + game->GetPropVal(wxT("catalog"), error);
+       field += wxT(" revision:") + cartridge->GetPropVal(wxT("revision"), wxT("(none)"));
+       *log << field << wxT("\n");
+}
+
diff --git a/client/tag/0.6.2/anago/nescartxml.hh b/client/tag/0.6.2/anago/nescartxml.hh
new file mode 100644 (file)
index 0000000..27e7038
--- /dev/null
@@ -0,0 +1,14 @@
+#pragma once\r
+class wxXmlDocument;\r
+class CartridgeHash;\r
+class RomDb{\r
+private:\r
+       wxXmlDocument *m_document;\r
+       CartridgeHash *m_hash;\r
+public:\r
+       RomDb(wxString file);\r
+       RomDb(void);\r
+       bool Generate(void);\r
+       void Search(unsigned long crc, wxTextCtrl *log) const;\r
+       ~RomDb();\r
+};\r
diff --git a/client/tag/0.6.2/anago/okada.xpm b/client/tag/0.6.2/anago/okada.xpm
new file mode 100644 (file)
index 0000000..2f37b2f
--- /dev/null
@@ -0,0 +1,20396 @@
+/* XPM */\r
+static const char * okada[] = {\r
+"178 122 20271 3",\r
+"      c #BEA89C",\r
+".     c #C5B49D",\r
+"+     c #C2AD94",\r
+"@     c #C1A790",\r
+"#     c #BEAB96",\r
+"$     c #C1B095",\r
+"%     c #C0AC9F",\r
+"&     c #C1AF9B",\r
+"*     c #BEAE98",\r
+"=     c #BAADA1",\r
+"-     c #BBAE9B",\r
+";     c #C0AA96",\r
+">     c #B9A997",\r
+",     c #A7A193",\r
+"'     c #B7AF96",\r
+")     c #C3B39F",\r
+"!     c #BFAFA1",\r
+"~     c #C9B4A5",\r
+"{     c #C4B39E",\r
+"]     c #C3ACA0",\r
+"^     c #C6B5A6",\r
+"/     c #C1B79E",\r
+"(     c #C6B59D",\r
+"_     c #C8B69B",\r
+":     c #C5B496",\r
+"<     c #C1B49C",\r
+"[     c #C6B39E",\r
+"}     c #C7AFA0",\r
+"|     c #C5B09F",\r
+"1     c #C6B492",\r
+"2     c #C5AE90",\r
+"3     c #C1AB95",\r
+"4     c #C1B192",\r
+"5     c #C0B2A2",\r
+"6     c #BDB0A1",\r
+"7     c #B9AFA2",\r
+"8     c #C0BAA6",\r
+"9     c #BFB6A0",\r
+"0     c #C1B19E",\r
+"a     c #C2B49D",\r
+"b     c #AD9E8B",\r
+"c     c #AAA296",\r
+"d     c #C0AD96",\r
+"e     c #B9AF92",\r
+"f     c #B9A995",\r
+"g     c #C1AE93",\r
+"h     c #BFB193",\r
+"i     c #BDAF9B",\r
+"j     c #C0AF8F",\r
+"k     c #C1B098",\r
+"l     c #C3B39B",\r
+"m     c #C0B196",\r
+"n     c #C0AD9F",\r
+"o     c #C3AF9A",\r
+"p     c #C3B49D",\r
+"q     c #C0B29D",\r
+"r     c #C4B293",\r
+"s     c #C2A797",\r
+"t     c #C4AB97",\r
+"u     c #C8B493",\r
+"v     c #C8B29A",\r
+"w     c #C5B4A1",\r
+"x     c #C7B59D",\r
+"y     c #C2AF9B",\r
+"z     c #BEAD97",\r
+"A     c #BEAE97",\r
+"B     c #B6AA95",\r
+"C     c #A99F82",\r
+"D     c #AB9C84",\r
+"E     c #AAA48D",\r
+"F     c #ACA585",\r
+"G     c #B19B92",\r
+"H     c #B29A8F",\r
+"I     c #B6A78A",\r
+"J     c #B9A28E",\r
+"K     c #BCA589",\r
+"L     c #BAA890",\r
+"M     c #C3A689",\r
+"N     c #C3A58A",\r
+"O     c #BEA38D",\r
+"P     c #BBA98F",\r
+"Q     c #BFAB85",\r
+"R     c #AF9A74",\r
+"S     c #A18F7D",\r
+"T     c #AB8E75",\r
+"U     c #8E7F64",\r
+"V     c #907E69",\r
+"W     c #A38A74",\r
+"X     c #888E7E",\r
+"Y     c #B6A894",\r
+"Z     c #BDA493",\r
+"`     c #B29A87",\r
+" .    c #AC9F89",\r
+"..    c #B1A995",\r
+"+.    c #AF9E8C",\r
+"@.    c #B8AA90",\r
+"#.    c #B5A889",\r
+"$.    c #B2A189",\r
+"%.    c #B6A68F",\r
+"&.    c #BEA788",\r
+"*.    c #BCA492",\r
+"=.    c #B8A795",\r
+"-.    c #B8A693",\r
+";.    c #B6AB98",\r
+">.    c #B6A393",\r
+",.    c #B29C8A",\r
+"'.    c #B7A48D",\r
+").    c #AFA186",\r
+"!.    c #AB9D87",\r
+"~.    c #B1A28F",\r
+"{.    c #AFA594",\r
+"].    c #A79F95",\r
+"^.    c #AFA290",\r
+"/.    c #ABA191",\r
+"(.    c #A7A996",\r
+"_.    c #AEA68C",\r
+":.    c #ABA18B",\r
+"<.    c #ABA99C",\r
+"[.    c #B4AA95",\r
+"}.    c #AEA08F",\r
+"|.    c #A19789",\r
+"1.    c #A39B87",\r
+"2.    c #AA9E8C",\r
+"3.    c #AF9A82",\r
+"4.    c #AB9386",\r
+"5.    c #AFA98E",\r
+"6.    c #B6B99B",\r
+"7.    c #C7CABB",\r
+"8.    c #D7CDBE",\r
+"9.    c #CBC3B2",\r
+"0.    c #C1A393",\r
+"a.    c #B59E7F",\r
+"b.    c #A69B8A",\r
+"c.    c #A19478",\r
+"d.    c #AC9379",\r
+"e.    c #BEAC83",\r
+"f.    c #B69D80",\r
+"g.    c #B19281",\r
+"h.    c #AF968B",\r
+"i.    c #A48D7D",\r
+"j.    c #AD9B88",\r
+"k.    c #AC9577",\r
+"l.    c #A28C79",\r
+"m.    c #A28B7C",\r
+"n.    c #938975",\r
+"o.    c #858E91",\r
+"p.    c #B9AC94",\r
+"q.    c #BDB196",\r
+"r.    c #BCAD9F",\r
+"s.    c #BCAD93",\r
+"t.    c #BCAB9A",\r
+"u.    c #BCAC9B",\r
+"v.    c #BEAC8D",\r
+"w.    c #BCA893",\r
+"x.    c #B3A194",\r
+"y.    c #B7A691",\r
+"z.    c #BBA897",\r
+"A.    c #B6A78F",\r
+"B.    c #B3A28A",\r
+"C.    c #B6A790",\r
+"D.    c #AE9A82",\r
+"E.    c #B19886",\r
+"F.    c #B4A487",\r
+"G.    c #B5A489",\r
+"H.    c #AC9F91",\r
+"I.    c #B69F8B",\r
+"J.    c #B0A690",\r
+"K.    c #B09C8C",\r
+"L.    c #B49F85",\r
+"M.    c #AD9783",\r
+"N.    c #A1907C",\r
+"O.    c #9A8B7B",\r
+"P.    c #8F8871",\r
+"Q.    c #8C8D79",\r
+"R.    c #949279",\r
+"S.    c #908B7E",\r
+"T.    c #908E80",\r
+"U.    c #C0A793",\r
+"V.    c #B9AD9B",\r
+"W.    c #BAAA96",\r
+"X.    c #BDAC98",\r
+"Y.    c #B6A696",\r
+"Z.    c #B9A991",\r
+"`.    c #BDB099",\r
+" +    c #B8AF93",\r
+".+    c #B9AA91",\r
+"++    c #BFB19B",\r
+"@+    c #C0AD93",\r
+"#+    c #B6A692",\r
+"$+    c #B6A48F",\r
+"%+    c #A08D7D",\r
+"&+    c #A8A593",\r
+"*+    c #C2AD8F",\r
+"=+    c #C2AE91",\r
+"-+    c #BDAEA0",\r
+";+    c #C4B39A",\r
+">+    c #C2AC99",\r
+",+    c #C2B29D",\r
+"'+    c #C4B69C",\r
+")+    c #C6B7A5",\r
+"!+    c #BFAF9E",\r
+"~+    c #C1A796",\r
+"{+    c #BEB397",\r
+"]+    c #BEAE93",\r
+"^+    c #BEAC9A",\r
+"/+    c #C2B29F",\r
+"(+    c #C0AF95",\r
+"_+    c #BFA693",\r
+":+    c #BFAD97",\r
+"<+    c #BEB194",\r
+"[+    c #BDAE9C",\r
+"}+    c #BCAD96",\r
+"|+    c #C0B5A0",\r
+"1+    c #BCB298",\r
+"2+    c #BEB2A0",\r
+"3+    c #BBAA9E",\r
+"4+    c #988A85",\r
+"5+    c #939592",\r
+"6+    c #BBAC8F",\r
+"7+    c #B5A996",\r
+"8+    c #B6AD98",\r
+"9+    c #BFAC8D",\r
+"0+    c #BCA88F",\r
+"a+    c #BEB098",\r
+"b+    c #BEB193",\r
+"c+    c #C0AB97",\r
+"d+    c #C2AE96",\r
+"e+    c #C2B295",\r
+"f+    c #C0AA9A",\r
+"g+    c #BDAD91",\r
+"h+    c #C4B199",\r
+"i+    c #C3B598",\r
+"j+    c #B9AD92",\r
+"k+    c #C5A893",\r
+"l+    c #C2AA95",\r
+"m+    c #C0AC95",\r
+"n+    c #C7B19D",\r
+"o+    c #C3B497",\r
+"p+    c #BDB29B",\r
+"q+    c #C2B098",\r
+"r+    c #C0AD92",\r
+"s+    c #B2A995",\r
+"t+    c #B4A995",\r
+"u+    c #A59E8D",\r
+"v+    c #A39887",\r
+"w+    c #AD9F8A",\r
+"x+    c #ACA58A",\r
+"y+    c #AAA28D",\r
+"z+    c #B5A185",\r
+"A+    c #B7A48C",\r
+"B+    c #B7A88A",\r
+"C+    c #B9A48C",\r
+"D+    c #BCA093",\r
+"E+    c #BAA891",\r
+"F+    c #BBA78A",\r
+"G+    c #BCAB8F",\r
+"H+    c #B8A98F",\r
+"I+    c #B9A48A",\r
+"J+    c #B59B80",\r
+"K+    c #B2997F",\r
+"L+    c #B49982",\r
+"M+    c #A18D6F",\r
+"N+    c #93896E",\r
+"O+    c #A38A7D",\r
+"P+    c #9C8674",\r
+"Q+    c #A59F8C",\r
+"R+    c #B4A18F",\r
+"S+    c #B69883",\r
+"T+    c #B09B81",\r
+"U+    c #AEAB96",\r
+"V+    c #B1A692",\r
+"W+    c #B3A092",\r
+"X+    c #B1A48D",\r
+"Y+    c #B5A58F",\r
+"Z+    c #B4A28F",\r
+"`+    c #BAA88A",\r
+" @    c #BBAE91",\r
+".@    c #BAAA8E",\r
+"+@    c #BB9F8D",\r
+"@@    c #B8AC98",\r
+"#@    c #B2A694",\r
+"$@    c #B8A28C",\r
+"%@    c #B4A491",\r
+"&@    c #AF9F83",\r
+"*@    c #B29F88",\r
+"=@    c #AE9B83",\r
+"-@    c #A49986",\r
+";@    c #B0A390",\r
+">@    c #ABA796",\r
+",@    c #A69F95",\r
+"'@    c #A49F95",\r
+")@    c #A9A08F",\r
+"!@    c #A3A192",\r
+"~@    c #B2A092",\r
+"{@    c #B5A089",\r
+"]@    c #A5A27F",\r
+"^@    c #919885",\r
+"/@    c #A4928A",\r
+"(@    c #ACA194",\r
+"_@    c #B09C81",\r
+":@    c #AF9282",\r
+"<@    c #AFB3A3",\r
+"[@    c #CCC9BC",\r
+"}@    c #D1BBB2",\r
+"|@    c #C69C95",\r
+"1@    c #B09A8B",\r
+"2@    c #B5A99C",\r
+"3@    c #BEAD9B",\r
+"4@    c #A6A692",\r
+"5@    c #BBBCA6",\r
+"6@    c #C0B6A0",\r
+"7@    c #BBB69E",\r
+"8@    c #C3B7A2",\r
+"9@    c #C2A591",\r
+"0@    c #AC9F86",\r
+"a@    c #B6A588",\r
+"b@    c #B09680",\r
+"c@    c #A2947A",\r
+"d@    c #A69577",\r
+"e@    c #A08977",\r
+"f@    c #998E75",\r
+"g@    c #8F8A6D",\r
+"h@    c #8F9487",\r
+"i@    c #AFA289",\r
+"j@    c #B6A697",\r
+"k@    c #BAAD95",\r
+"l@    c #BAA88E",\r
+"m@    c #BAAB9B",\r
+"n@    c #BBAA98",\r
+"o@    c #BAA68C",\r
+"p@    c #B69C8F",\r
+"q@    c #BAA28A",\r
+"r@    c #BBAB8A",\r
+"s@    c #B9A699",\r
+"t@    c #B7AB96",\r
+"u@    c #B4A493",\r
+"v@    c #B2A795",\r
+"w@    c #B1A388",\r
+"x@    c #B4A38A",\r
+"y@    c #B19E84",\r
+"z@    c #B1A080",\r
+"A@    c #AF9D8C",\r
+"B@    c #AEA088",\r
+"C@    c #B09E87",\r
+"D@    c #AC977C",\r
+"E@    c #A78D7D",\r
+"F@    c #9A8D7E",\r
+"G@    c #8B8A7A",\r
+"H@    c #998F72",\r
+"I@    c #938E74",\r
+"J@    c #989280",\r
+"K@    c #928775",\r
+"L@    c #949276",\r
+"M@    c #BAAA92",\r
+"N@    c #BEA68C",\r
+"O@    c #B9A996",\r
+"P@    c #B9A493",\r
+"Q@    c #BAAB96",\r
+"R@    c #B9AF93",\r
+"S@    c #BCAB95",\r
+"T@    c #BEAB99",\r
+"U@    c #BFAD92",\r
+"V@    c #BCAD94",\r
+"W@    c #BBA791",\r
+"X@    c #A8A28E",\r
+"Y@    c #ABAB9A",\r
+"Z@    c #C1AB94",\r
+"`@    c #C1AA95",\r
+" #    c #C2AE9D",\r
+".#    c #C4B59A",\r
+"+#    c #C3B197",\r
+"@#    c #BEB295",\r
+"##    c #C1B195",\r
+"$#    c #BFB49E",\r
+"%#    c #BDAF98",\r
+"&#    c #BDAE98",\r
+"*#    c #BBB39C",\r
+"=#    c #BAAE94",\r
+"-#    c #C2AA91",\r
+";#    c #BCAA88",\r
+">#    c #B7A48E",\r
+",#    c #BEA38C",\r
+"'#    c #B6A791",\r
+")#    c #B9AD96",\r
+"!#    c #BEAD94",\r
+"~#    c #B9A797",\r
+"{#    c #BDB398",\r
+"]#    c #BFB299",\r
+"^#    c #BDAE9A",\r
+"/#    c #BDAA96",\r
+"(#    c #997E73",\r
+"_#    c #8F948E",\r
+":#    c #B5A690",\r
+"<#    c #B8AC99",\r
+"[#    c #B9B39D",\r
+"}#    c #BDAC91",\r
+"|#    c #BDA895",\r
+"1#    c #C2B092",\r
+"2#    c #BBAF96",\r
+"3#    c #BEAA96",\r
+"4#    c #C2A994",\r
+"5#    c #BEAD98",\r
+"6#    c #BAAE9F",\r
+"7#    c #BFAF98",\r
+"8#    c #BEA69B",\r
+"9#    c #C3B396",\r
+"0#    c #C5B391",\r
+"a#    c #C1AA97",\r
+"b#    c #BFAE98",\r
+"c#    c #C5B09A",\r
+"d#    c #C4AC9C",\r
+"e#    c #B9AA99",\r
+"f#    c #BBAA97",\r
+"g#    c #B7AD99",\r
+"h#    c #B9AB8D",\r
+"i#    c #BCAD8E",\r
+"j#    c #B6A890",\r
+"k#    c #A59C8F",\r
+"l#    c #A89789",\r
+"m#    c #ACA08A",\r
+"n#    c #A89B89",\r
+"o#    c #B3A190",\r
+"p#    c #B7A488",\r
+"q#    c #BBA08A",\r
+"r#    c #B6A388",\r
+"s#    c #BDA98B",\r
+"t#    c #C3A590",\r
+"u#    c #C2A78F",\r
+"v#    c #BAA98E",\r
+"w#    c #B1A896",\r
+"x#    c #B28F80",\r
+"y#    c #9B7569",\r
+"z#    c #938575",\r
+"A#    c #AE917C",\r
+"B#    c #AC9974",\r
+"C#    c #A38F6E",\r
+"D#    c #AC8D74",\r
+"E#    c #9F8170",\r
+"F#    c #989784",\r
+"G#    c #B49D84",\r
+"H#    c #BB9F7F",\r
+"I#    c #B4997D",\r
+"J#    c #B3AE91",\r
+"K#    c #B4A996",\r
+"L#    c #B6A493",\r
+"M#    c #B3A990",\r
+"N#    c #B6AB99",\r
+"O#    c #B7AA96",\r
+"P#    c #B8A395",\r
+"Q#    c #B6A48C",\r
+"R#    c #B8A592",\r
+"S#    c #BBAA8C",\r
+"T#    c #ACA28C",\r
+"U#    c #AE9B87",\r
+"V#    c #B5A18B",\r
+"W#    c #B1A18F",\r
+"X#    c #B09D7A",\r
+"Y#    c #AF9B7D",\r
+"Z#    c #A9A18C",\r
+"`#    c #A6A089",\r
+" $    c #ADA08C",\r
+".$    c #A8A193",\r
+"+$    c #A59F93",\r
+"@$    c #A9A49A",\r
+"#$    c #AA9F91",\r
+"$$    c #AF9E85",\r
+"%$    c #A09181",\r
+"&$    c #919780",\r
+"*$    c #A39381",\r
+"=$    c #AA9886",\r
+"-$    c #AB9F80",\r
+";$    c #A89883",\r
+">$    c #A9A399",\r
+",$    c #BDC1B5",\r
+"'$    c #C8A69F",\r
+")$    c #8E6363",\r
+"!$    c #63504C",\r
+"~$    c #8E8E88",\r
+"{$    c #C1A891",\r
+"]$    c #BEB3A8",\r
+"^$    c #CBBFB1",\r
+"/$    c #BDAF9F",\r
+"($    c #BBA793",\r
+"_$    c #BEB79C",\r
+":$    c #BEC2AF",\r
+"<$    c #CDC1AE",\r
+"[$    c #C1A59C",\r
+"}$    c #AE9273",\r
+"|$    c #A69373",\r
+"1$    c #9D897A",\r
+"2$    c #958477",\r
+"3$    c #847B76",\r
+"4$    c #8A928F",\r
+"5$    c #B2A692",\r
+"6$    c #B4A497",\r
+"7$    c #B9B08E",\r
+"8$    c #B3AA8D",\r
+"9$    c #B5A196",\r
+"0$    c #B8A68F",\r
+"a$    c #B3A590",\r
+"b$    c #AF9F8D",\r
+"c$    c #B89A87",\r
+"d$    c #B4A28B",\r
+"e$    c #B9AB8F",\r
+"f$    c #B9A689",\r
+"g$    c #AD9E8E",\r
+"h$    c #B1A18C",\r
+"i$    c #B9A289",\r
+"j$    c #AF9B8C",\r
+"k$    c #B19B82",\r
+"l$    c #B2A289",\r
+"m$    c #AA9B8D",\r
+"n$    c #A99B88",\r
+"o$    c #AB9A88",\r
+"p$    c #AD9981",\r
+"q$    c #A7977E",\r
+"r$    c #A99180",\r
+"s$    c #99917B",\r
+"t$    c #748481",\r
+"u$    c #9A907F",\r
+"v$    c #9F9180",\r
+"w$    c #938F82",\r
+"x$    c #928E76",\r
+"y$    c #8E856F",\r
+"z$    c #AFA99D",\r
+"A$    c #B9A892",\r
+"B$    c #BEAA98",\r
+"C$    c #B6A993",\r
+"D$    c #BDAA8F",\r
+"E$    c #BFAE97",\r
+"F$    c #BEAA95",\r
+"G$    c #C2A991",\r
+"H$    c #BDAE9D",\r
+"I$    c #BBA992",\r
+"J$    c #B8A18B",\r
+"K$    c #AB9E90",\r
+"L$    c #BAAE96",\r
+"M$    c #BDAD96",\r
+"N$    c #C1AD99",\r
+"O$    c #BEB099",\r
+"P$    c #BAB19D",\r
+"Q$    c #BFAE94",\r
+"R$    c #C0AF99",\r
+"S$    c #BFAF9A",\r
+"T$    c #C2B694",\r
+"U$    c #C1B396",\r
+"V$    c #C2B096",\r
+"W$    c #BAA990",\r
+"X$    c #C0A687",\r
+"Y$    c #BFAC91",\r
+"Z$    c #B8A486",\r
+"`$    c #BCA88D",\r
+" %    c #BAAE8F",\r
+".%    c #BEAC92",\r
+"+%    c #BEAA94",\r
+"@%    c #BDB29A",\r
+"#%    c #BFB39A",\r
+"$%    c #BDA38F",\r
+"%%    c #A07E6A",\r
+"&%    c #BEA887",\r
+"*%    c #BAB09C",\r
+"=%    c #BBB199",\r
+"-%    c #C1AB9C",\r
+";%    c #C1AE9B",\r
+">%    c #BBB098",\r
+",%    c #BAB098",\r
+"'%    c #C1AE92",\r
+")%    c #BFAD95",\r
+"!%    c #BDAD95",\r
+"~%    c #BAA999",\r
+"{%    c #C3AF96",\r
+"]%    c #C3B49C",\r
+"^%    c #C2AF9A",\r
+"/%    c #C6AF90",\r
+"(%    c #C2A99A",\r
+"_%    c #C1AE9A",\r
+":%    c #C0A890",\r
+"<%    c #B7A794",\r
+"[%    c #B9B498",\r
+"}%    c #B9B19B",\r
+"|%    c #B9A795",\r
+"1%    c #B0A28C",\r
+"2%    c #A9A390",\r
+"3%    c #AD9D88",\r
+"4%    c #A89E83",\r
+"5%    c #A89A87",\r
+"6%    c #B9AA8B",\r
+"7%    c #BAA387",\r
+"8%    c #B7A88D",\r
+"9%    c #BDAF8E",\r
+"0%    c #BFAE93",\r
+"a%    c #BBAA92",\r
+"b%    c #C6AD8B",\r
+"c%    c #BFAB91",\r
+"d%    c #B5917C",\r
+"e%    c #958367",\r
+"f%    c #8E8678",\r
+"g%    c #AA957E",\r
+"h%    c #A18D6D",\r
+"i%    c #988C6D",\r
+"j%    c #AB9776",\r
+"k%    c #A78875",\r
+"l%    c #B0A289",\r
+"m%    c #B8A783",\r
+"n%    c #B59D83",\r
+"o%    c #B2987A",\r
+"p%    c #B5AE92",\r
+"q%    c #B4A990",\r
+"r%    c #B5AA8D",\r
+"s%    c #B2AB97",\r
+"t%    c #B3A596",\r
+"u%    c #C0A891",\r
+"v%    c #BEAB93",\r
+"w%    c #B7A78F",\r
+"x%    c #B4A694",\r
+"y%    c #B2A190",\r
+"z%    c #B1A38B",\r
+"A%    c #B0A391",\r
+"B%    c #B2A387",\r
+"C%    c #B2A388",\r
+"D%    c #B2A28E",\r
+"E%    c #AE9C8D",\r
+"F%    c #ADA191",\r
+"G%    c #ACA992",\r
+"H%    c #AFA795",\r
+"I%    c #B0A890",\r
+"J%    c #A9A690",\r
+"K%    c #ACA288",\r
+"L%    c #A99D83",\r
+"M%    c #A1958A",\r
+"N%    c #969586",\r
+"O%    c #A9997A",\r
+"P%    c #AF9C80",\r
+"Q%    c #AEA17F",\r
+"R%    c #A69883",\r
+"S%    c #B0AD92",\r
+"T%    c #C2C0B3",\r
+"U%    c #CCC2B3",\r
+"V%    c #AEA698",\r
+"W%    c #97786C",\r
+"X%    c #816F5F",\r
+"Y%    c #A28878",\r
+"Z%    c #B09F7D",\r
+"`%    c #A19C92",\r
+" &    c #B68B8E",\r
+".&    c #7F5852",\r
+"+&    c #706C5E",\r
+"@&    c #9BA699",\r
+"#&    c #BEC1B2",\r
+"$&    c #C5B4A3",\r
+"%&    c #AE9183",\r
+"&&    c #AE9274",\r
+"*&    c #9F917A",\r
+"=&    c #9C8E70",\r
+"-&    c #A18166",\r
+";&    c #899078",\r
+">&    c #8B9A8D",\r
+",&    c #BAAE97",\r
+"'&    c #BBAC9E",\r
+")&    c #B5A792",\r
+"!&    c #B8AC91",\r
+"~&    c #B4A191",\r
+"{&    c #AF998D",\r
+"]&    c #B8A590",\r
+"^&    c #B3A491",\r
+"/&    c #B29F8F",\r
+"(&    c #B7A191",\r
+"_&    c #B5A28A",\r
+":&    c #B0A88E",\r
+"<&    c #B8A38D",\r
+"[&    c #B29D85",\r
+"}&    c #B3A17C",\r
+"|&    c #AC9A7D",\r
+"1&    c #A79887",\r
+"2&    c #AE9B85",\r
+"3&    c #AF9B85",\r
+"4&    c #AC9E86",\r
+"5&    c #AB9685",\r
+"6&    c #AB9C85",\r
+"7&    c #A8907C",\r
+"8&    c #9B8F7C",\r
+"9&    c #979081",\r
+"0&    c #9D927C",\r
+"a&    c #9E9183",\r
+"b&    c #9B9383",\r
+"c&    c #96A182",\r
+"d&    c #9BA69D",\r
+"e&    c #BCAC9E",\r
+"f&    c #B5AA93",\r
+"g&    c #B8A697",\r
+"h&    c #C1B29D",\r
+"i&    c #BCB39C",\r
+"j&    c #B9B09F",\r
+"k&    c #BBB09C",\r
+"l&    c #BEAF94",\r
+"m&    c #C0B18E",\r
+"n&    c #BFAE91",\r
+"o&    c #BFAA9A",\r
+"p&    c #C3A88F",\r
+"q&    c #B69083",\r
+"r&    c #8C8A80",\r
+"s&    c #B5AA91",\r
+"t&    c #BFAC90",\r
+"u&    c #C1A68C",\r
+"v&    c #BBAA8E",\r
+"w&    c #BCAF97",\r
+"x&    c #C1B090",\r
+"y&    c #C2B596",\r
+"z&    c #B9AD9D",\r
+"A&    c #BDAB93",\r
+"B&    c #C2AC8F",\r
+"C&    c #BCA996",\r
+"D&    c #BCAC90",\r
+"E&    c #BCA992",\r
+"F&    c #BAAA95",\r
+"G&    c #BFAF90",\r
+"H&    c #BBAA95",\r
+"I&    c #BAA68D",\r
+"J&    c #B7AF91",\r
+"K&    c #BBB093",\r
+"L&    c #BBAF91",\r
+"M&    c #BEA992",\r
+"N&    c #BAA48B",\r
+"O&    c #9F9274",\r
+"P&    c #9F9482",\r
+"Q&    c #BAAA86",\r
+"R&    c #B9A58F",\r
+"S&    c #BDA790",\r
+"T&    c #BEB497",\r
+"U&    c #B7AF99",\r
+"V&    c #BFAC9C",\r
+"W&    c #C5B09C",\r
+"X&    c #BDB39B",\r
+"Y&    c #C0AD90",\r
+"Z&    c #BEA595",\r
+"`&    c #B4A58F",\r
+" *    c #BDAE8B",\r
+".*    c #B6A792",\r
+"+*    c #BAAF9B",\r
+"@*    c #C4B198",\r
+"#*    c #C3B191",\r
+"$*    c #C3AA9C",\r
+"%*    c #C5AF97",\r
+"&*    c #BFAE92",\r
+"**    c #B9A891",\r
+"=*    c #BBAB96",\r
+"-*    c #B1A289",\r
+";*    c #B09E8A",\r
+">*    c #ABA595",\r
+",*    c #AAA38D",\r
+"'*    c #AC9E8B",\r
+")*    c #B39F89",\r
+"!*    c #B7A684",\r
+"~*    c #B9A27E",\r
+"{*    c #BDA384",\r
+"]*    c #B7A086",\r
+"^*    c #B59882",\r
+"/*    c #B99373",\r
+"(*    c #A99F79",\r
+"_*    c #C0B498",\r
+":*    c #C4B897",\r
+"<*    c #C3B393",\r
+"[*    c #C0AD8C",\r
+"}*    c #B6A786",\r
+"|*    c #AF9A7E",\r
+"1*    c #A89179",\r
+"2*    c #947254",\r
+"3*    c #787859",\r
+"4*    c #A18971",\r
+"5*    c #906D61",\r
+"6*    c #998D7B",\r
+"7*    c #AF9E80",\r
+"8*    c #B29D78",\r
+"9*    c #B0AB91",\r
+"0*    c #AFAB9A",\r
+"a*    c #B6AE95",\r
+"b*    c #B8A998",\r
+"c*    c #B6AE9C",\r
+"d*    c #B8B495",\r
+"e*    c #BCA790",\r
+"f*    c #B8A68E",\r
+"g*    c #B9A78A",\r
+"h*    c #B7A593",\r
+"i*    c #B5A18F",\r
+"j*    c #B19F8D",\r
+"k*    c #B0A089",\r
+"l*    c #B2A28D",\r
+"m*    c #B3A38A",\r
+"n*    c #ADA385",\r
+"o*    c #A89B8A",\r
+"p*    c #B3A28D",\r
+"q*    c #B7AD91",\r
+"r*    c #AFA59A",\r
+"s*    c #AEA790",\r
+"t*    c #ACA28E",\r
+"u*    c #ABA793",\r
+"v*    c #ABA78A",\r
+"w*    c #AB9781",\r
+"x*    c #968D7E",\r
+"y*    c #8A8E86",\r
+"z*    c #AE977F",\r
+"A*    c #AA9180",\r
+"B*    c #AD9B83",\r
+"C*    c #A78F80",\r
+"D*    c #94856E",\r
+"E*    c #AB9A82",\r
+"F*    c #C8C5A7",\r
+"G*    c #CAC5B3",\r
+"H*    c #BD9A8A",\r
+"I*    c #8C715A",\r
+"J*    c #828879",\r
+"K*    c #B4B7AC",\r
+"L*    c #C0B9AE",\r
+"M*    c #B38183",\r
+"N*    c #5A6052",\r
+"O*    c #708874",\r
+"P*    c #BBBDB0",\r
+"Q*    c #C6C0B1",\r
+"R*    c #C8ADA0",\r
+"S*    c #BB9B88",\r
+"T*    c #9E8876",\r
+"U*    c #95897B",\r
+"V*    c #988E78",\r
+"W*    c #9C8A6A",\r
+"X*    c #8B927C",\r
+"Y*    c #A0A08A",\r
+"Z*    c #BAB397",\r
+"`*    c #B4AC9A",\r
+" =    c #BBAD96",\r
+".=    c #BAA08C",\r
+"+=    c #B5A590",\r
+"@=    c #B3A089",\r
+"#=    c #B8A78D",\r
+"$=    c #B59F8B",\r
+"%=    c #AFA38A",\r
+"&=    c #B09D84",\r
+"*=    c #AD9D82",\r
+"==    c #AD9B8C",\r
+"-=    c #AC957D",\r
+";=    c #A79683",\r
+">=    c #A49685",\r
+",=    c #AF9786",\r
+"'=    c #B6A886",\r
+")=    c #B1A27C",\r
+"!=    c #AE907C",\r
+"~=    c #AB9D83",\r
+"{=    c #A0957A",\r
+"]=    c #969485",\r
+"^=    c #9D927D",\r
+"/=    c #A0937D",\r
+"(=    c #A19684",\r
+"_=    c #A3A595",\r
+":=    c #A0AEA0",\r
+"<=    c #BCC4BE",\r
+"[=    c #B9B398",\r
+"}=    c #BCB091",\r
+"|=    c #BBAB95",\r
+"1=    c #B9A998",\r
+"2=    c #BFB196",\r
+"3=    c #BEB4A3",\r
+"4=    c #BDAF99",\r
+"5=    c #BBAE9A",\r
+"6=    c #BAAD98",\r
+"7=    c #BEAF8F",\r
+"8=    c #BDA191",\r
+"9=    c #B9AA8C",\r
+"0=    c #C2AF88",\r
+"a=    c #BC9586",\r
+"b=    c #8D897F",\r
+"c=    c #B4A992",\r
+"d=    c #BBAC97",\r
+"e=    c #BDA88C",\r
+"f=    c #C1A786",\r
+"g=    c #BBA388",\r
+"h=    c #B8AB89",\r
+"i=    c #C0AA92",\r
+"j=    c #B7AA8F",\r
+"k=    c #B8A792",\r
+"l=    c #B8A996",\r
+"m=    c #B8A38E",\r
+"n=    c #B1A593",\r
+"o=    c #BEAE99",\r
+"p=    c #C0AD8E",\r
+"q=    c #B8A689",\r
+"r=    c #BDA48B",\r
+"s=    c #BEAD8F",\r
+"t=    c #BDAD98",\r
+"u=    c #B9AB95",\r
+"v=    c #BBAA8F",\r
+"w=    c #BCA995",\r
+"x=    c #B8AC95",\r
+"y=    c #B4AC8E",\r
+"z=    c #B0A48F",\r
+"A=    c #A09582",\r
+"B=    c #B4A185",\r
+"C=    c #BCA78C",\r
+"D=    c #BDAD93",\r
+"E=    c #B6AB97",\r
+"F=    c #BEAF92",\r
+"G=    c #BDB093",\r
+"H=    c #C2AA8F",\r
+"I=    c #C0AF8B",\r
+"J=    c #B9A992",\r
+"K=    c #BDA990",\r
+"L=    c #BBAF94",\r
+"M=    c #BBAE93",\r
+"N=    c #B8A890",\r
+"O=    c #BBA895",\r
+"P=    c #C0AC96",\r
+"Q=    c #C4B091",\r
+"R=    c #BFAC96",\r
+"S=    c #C1AC91",\r
+"T=    c #C0AC99",\r
+"U=    c #BCAB94",\r
+"V=    c #BFA78F",\r
+"W=    c #BCAD95",\r
+"X=    c #BAAD8C",\r
+"Y=    c #BAAF8D",\r
+"Z=    c #B2AD95",\r
+"`=    c #AAA283",\r
+" -    c #AA8F76",\r
+".-    c #967163",\r
+"+-    c #795D54",\r
+"@-    c #6E5747",\r
+"#-    c #6D503A",\r
+"$-    c #5B4B3C",\r
+"%-    c #633E3C",\r
+"&-    c #5F3E37",\r
+"*-    c #4F4941",\r
+"=-    c #77675E",\r
+"--    c #8C7366",\r
+";-    c #9F8D78",\r
+">-    c #B6A186",\r
+",-    c #B5A689",\r
+"'-    c #AC9F7F",\r
+")-    c #9D8266",\r
+"!-    c #87836A",\r
+"~-    c #A49B7B",\r
+"{-    c #A79780",\r
+"]-    c #A09B8B",\r
+"^-    c #A59D8A",\r
+"/-    c #B4A28A",\r
+"(-    c #B4A082",\r
+"_-    c #A89E8E",\r
+":-    c #AEA292",\r
+"<-    c #B9AC8C",\r
+"[-    c #B3AA92",\r
+"}-    c #BBAD93",\r
+"|-    c #B7A592",\r
+"1-    c #BBA88D",\r
+"2-    c #B8A08E",\r
+"3-    c #B8AA92",\r
+"4-    c #BBAA89",\r
+"5-    c #B9A087",\r
+"6-    c #B0A48B",\r
+"7-    c #B1A68A",\r
+"8-    c #B2A294",\r
+"9-    c #B19F8E",\r
+"0-    c #B3A188",\r
+"a-    c #B4A38E",\r
+"b-    c #AEA28B",\r
+"c-    c #B0A38A",\r
+"d-    c #B3A992",\r
+"e-    c #B0A189",\r
+"f-    c #AA9A95",\r
+"g-    c #B0A599",\r
+"h-    c #AAA291",\r
+"i-    c #AA9A90",\r
+"j-    c #998677",\r
+"k-    c #8B867D",\r
+"l-    c #A47B6B",\r
+"m-    c #896855",\r
+"n-    c #79634E",\r
+"o-    c #8F8475",\r
+"p-    c #83634F",\r
+"q-    c #5C5645",\r
+"r-    c #94997E",\r
+"s-    c #BDB39A",\r
+"t-    c #B19683",\r
+"u-    c #948065",\r
+"v-    c #A0A8A1",\r
+"w-    c #C1BAB0",\r
+"x-    c #C2AA9B",\r
+"y-    c #A8A08E",\r
+"z-    c #A5A694",\r
+"A-    c #B7B39C",\r
+"B-    c #C0AD9C",\r
+"C-    c #BF938A",\r
+"D-    c #A48170",\r
+"E-    c #98886E",\r
+"F-    c #9A8A76",\r
+"G-    c #9C8B7C",\r
+"H-    c #968976",\r
+"I-    c #84897A",\r
+"J-    c #979B8A",\r
+"K-    c #B4AD97",\r
+"L-    c #B8AC9A",\r
+"M-    c #B7A594",\r
+"N-    c #B1A496",\r
+"O-    c #BAAC8F",\r
+"P-    c #B4A48D",\r
+"Q-    c #B4A08A",\r
+"R-    c #B2A48E",\r
+"S-    c #AC9C8B",\r
+"T-    c #B1A487",\r
+"U-    c #B3A788",\r
+"V-    c #AC9E7A",\r
+"W-    c #A99979",\r
+"X-    c #AB9786",\r
+"Y-    c #A69478",\r
+"Z-    c #A49788",\r
+"`-    c #AD9B89",\r
+" ;    c #A69787",\r
+".;    c #A89A89",\r
+"+;    c #BA9F79",\r
+"@;    c #B69E7A",\r
+"#;    c #AB987D",\r
+"$;    c #AC9772",\r
+"%;    c #868E83",\r
+"&;    c #949383",\r
+"*;    c #A4A48F",\r
+"=;    c #AAAD9D",\r
+"-;    c #C0B9A8",\r
+";;    c #BBBFAC",\r
+">;    c #B8AE9F",\r
+",;    c #C0AD97",\r
+"';    c #BEB19A",\r
+");    c #BCB095",\r
+"!;    c #BFB198",\r
+"~;    c #BCA698",\r
+"{;    c #B9AC9A",\r
+"];    c #BAB092",\r
+"^;    c #BCAA95",\r
+"/;    c #BCA691",\r
+"(;    c #BFA48D",\r
+"_;    c #A09781",\r
+":;    c #A99F8F",\r
+"<;    c #B8AC96",\r
+"[;    c #BFA888",\r
+"};    c #BB9B8B",\r
+"|;    c #BEA687",\r
+"1;    c #C2B191",\r
+"2;    c #B6A59A",\r
+"3;    c #BBA88E",\r
+"4;    c #C1A694",\r
+"5;    c #B8A893",\r
+"6;    c #B6AA93",\r
+"7;    c #BAAB8F",\r
+"8;    c #B6A290",\r
+"9;    c #B9A489",\r
+"0;    c #BAAA8D",\r
+"a;    c #BCA783",\r
+"b;    c #B9A08C",\r
+"c;    c #B9A88F",\r
+"d;    c #BDA58C",\r
+"e;    c #BBAD92",\r
+"f;    c #B9B095",\r
+"g;    c #B9B293",\r
+"h;    c #B5A993",\r
+"i;    c #9E9679",\r
+"j;    c #B4A286",\r
+"k;    c #BEA58D",\r
+"l;    c #B9A897",\r
+"m;    c #BAAB95",\r
+"n;    c #C2AD91",\r
+"o;    c #BFAB8B",\r
+"p;    c #BFAA87",\r
+"q;    c #C0AC91",\r
+"r;    c #BCAB91",\r
+"s;    c #C0A992",\r
+"t;    c #C4B096",\r
+"u;    c #C1AF8D",\r
+"v;    c #B7A98D",\r
+"w;    c #C1AD8F",\r
+"x;    c #BFAC8A",\r
+"y;    c #BAA78D",\r
+"z;    c #BCAD9B",\r
+"A;    c #C2B899",\r
+"B;    c #C0AC8A",\r
+"C;    c #A08270",\r
+"D;    c #845E58",\r
+"E;    c #58463B",\r
+"F;    c #47302A",\r
+"G;    c #333231",\r
+"H;    c #323234",\r
+"I;    c #36282C",\r
+"J;    c #322A2C",\r
+"K;    c #322A2A",\r
+"L;    c #302A2A",\r
+"M;    c #2F3032",\r
+"N;    c #362F31",\r
+"O;    c #3B332E",\r
+"P;    c #494034",\r
+"Q;    c #64554B",\r
+"R;    c #736956",\r
+"S;    c #817065",\r
+"T;    c #9B9685",\r
+"U;    c #ACA083",\r
+"V;    c #A89F84",\r
+"W;    c #B19E88",\r
+"X;    c #A6917F",\r
+"Y;    c #A59984",\r
+"Z;    c #B5A48F",\r
+"`;    c #AF9F85",\r
+" >    c #A7A597",\r
+".>    c #ACA595",\r
+"+>    c #B7A98A",\r
+"@>    c #B7A98F",\r
+"#>    c #B8A88E",\r
+"$>    c #BBA993",\r
+"%>    c #BBA58F",\r
+"&>    c #BAA889",\r
+"*>    c #B79A89",\r
+"=>    c #BCA98D",\r
+"->    c #BBA787",\r
+";>    c #B79B85",\r
+">>    c #B6A088",\r
+",>    c #B6A68E",\r
+"'>    c #B09E89",\r
+")>    c #B2A08F",\r
+"!>    c #BAA997",\r
+"~>    c #B1A990",\r
+"{>    c #AD9C8E",\r
+"]>    c #B2A38E",\r
+"^>    c #B7A998",\r
+"/>    c #ADA48F",\r
+"(>    c #A5988B",\r
+"_>    c #937C70",\r
+":>    c #7B7B7B",\r
+"<>    c #AF9071",\r
+"[>    c #A39166",\r
+"}>    c #938963",\r
+"|>    c #A1937E",\r
+"1>    c #97705D",\r
+"2>    c #676345",\r
+"3>    c #817461",\r
+"4>    c #A08671",\r
+"5>    c #928561",\r
+"6>    c #858262",\r
+"7>    c #A3907D",\r
+"8>    c #987F73",\r
+"9>    c #7F685F",\r
+"0>    c #737165",\r
+"a>    c #AA876C",\r
+"b>    c #AA8365",\r
+"c>    c #AC7359",\r
+"d>    c #966C58",\r
+"e>    c #856757",\r
+"f>    c #866554",\r
+"g>    c #787362",\r
+"h>    c #8E847A",\r
+"i>    c #A29577",\r
+"j>    c #A78B74",\r
+"k>    c #7F857D",\r
+"l>    c #9A9384",\r
+"m>    c #B7AD94",\r
+"n>    c #B7A996",\r
+"o>    c #B5A899",\r
+"p>    c #AFA592",\r
+"q>    c #B5A58C",\r
+"r>    c #B0A08A",\r
+"s>    c #ABA493",\r
+"t>    c #AEA493",\r
+"u>    c #AE9A8F",\r
+"v>    c #B09F7F",\r
+"w>    c #AD9C84",\r
+"x>    c #A79787",\r
+"y>    c #ACA18D",\r
+"z>    c #AB998D",\r
+"A>    c #ACA18E",\r
+"B>    c #B39F8B",\r
+"C>    c #B3A17F",\r
+"D>    c #AF9D82",\r
+"E>    c #B0977B",\r
+"F>    c #AA966E",\r
+"G>    c #8E8B7D",\r
+"H>    c #9D977C",\r
+"I>    c #9FA28E",\r
+"J>    c #A3ABA2",\r
+"K>    c #BAB39E",\r
+"L>    c #B59B8B",\r
+"M>    c #8D857B",\r
+"N>    c #BFA68D",\r
+"O>    c #B8A694",\r
+"P>    c #BCAB98",\r
+"Q>    c #BFAF95",\r
+"R>    c #BDAE97",\r
+"S>    c #C0AE9C",\r
+"T>    c #C3B392",\r
+"U>    c #BEAC94",\r
+"V>    c #BFB091",\r
+"W>    c #C0B79E",\r
+"X>    c #B9AE98",\r
+"Y>    c #BEA89A",\r
+"Z>    c #BCAA8E",\r
+"`>    c #AEA08C",\r
+" ,    c #A39792",\r
+".,    c #B6A593",\r
+"+,    c #B4A58A",\r
+"@,    c #B8A789",\r
+"#,    c #BC9C86",\r
+"$,    c #B89B8C",\r
+"%,    c #B9A18B",\r
+"&,    c #B7A494",\r
+"*,    c #B9A896",\r
+"=,    c #B8A790",\r
+"-,    c #B69F95",\r
+";,    c #BAA689",\r
+">,    c #B2A490",\r
+",,    c #B1A491",\r
+"',    c #B5A38D",\r
+"),    c #B7A890",\r
+"!,    c #BFAB90",\r
+"~,    c #B7A687",\r
+"{,    c #B3A28B",\r
+"],    c #B8A482",\r
+"^,    c #B0A58C",\r
+"/,    c #B7A790",\r
+"(,    c #C2AE8A",\r
+"_,    c #AEA28E",\r
+":,    c #9C8D78",\r
+"<,    c #AE9D88",\r
+"[,    c #BBA78C",\r
+"},    c #BEA981",\r
+"|,    c #B6A38A",\r
+"1,    c #BEA996",\r
+"2,    c #C1A893",\r
+"3,    c #B9A796",\r
+"4,    c #B9A694",\r
+"5,    c #BCAC89",\r
+"6,    c #BEA890",\r
+"7,    c #C1AA87",\r
+"8,    c #BCAA8B",\r
+"9,    c #C4AC8E",\r
+"0,    c #C4AE94",\r
+"a,    c #C0AE8D",\r
+"b,    c #C4B094",\r
+"c,    c #BEA795",\r
+"d,    c #B9B393",\r
+"e,    c #C3B492",\r
+"f,    c #C5AF9A",\r
+"g,    c #AA8474",\r
+"h,    c #7B504D",\r
+"i,    c #47322F",\r
+"j,    c #36292D",\r
+"k,    c #302B2E",\r
+"l,    c #2F2C30",\r
+"m,    c #2F3031",\r
+"n,    c #323337",\r
+"o,    c #313537",\r
+"p,    c #2C2C32",\r
+"q,    c #333036",\r
+"r,    c #2A272D",\r
+"s,    c #2C2533",\r
+"t,    c #2C2633",\r
+"u,    c #342828",\r
+"v,    c #2C2A2F",\r
+"w,    c #2F2B29",\r
+"x,    c #342D28",\r
+"y,    c #322F31",\r
+"z,    c #50463C",\r
+"A,    c #655B56",\r
+"B,    c #978E7F",\r
+"C,    c #B49080",\r
+"D,    c #796D63",\r
+"E,    c #7D8278",\r
+"F,    c #A99E89",\r
+"G,    c #B2A08B",\r
+"H,    c #B2A07E",\r
+"I,    c #ACA48C",\r
+"J,    c #ACA08B",\r
+"K,    c #BCA68E",\r
+"L,    c #BDAB95",\r
+"M,    c #BCA789",\r
+"N,    c #BAA684",\r
+"O,    c #B3A58C",\r
+"P,    c #BAA78C",\r
+"Q,    c #B59E89",\r
+"R,    c #B9A389",\r
+"S,    c #B49C85",\r
+"T,    c #B8A583",\r
+"U,    c #AEA090",\r
+"V,    c #BCA582",\r
+"W,    c #B5A78C",\r
+"X,    c #AC9D91",\r
+"Y,    c #B1A793",\r
+"Z,    c #B4AE9E",\r
+"`,    c #AFA797",\r
+" '    c #AFA491",\r
+".'    c #AB9785",\r
+"+'    c #8E8771",\r
+"@'    c #84837A",\r
+"#'    c #B0A27F",\r
+"$'    c #AC9F84",\r
+"%'    c #B2967C",\r
+"&'    c #958D68",\r
+"*'    c #807B56",\r
+"='    c #7C5F4D",\r
+"-'    c #635B47",\r
+";'    c #816D4B",\r
+">'    c #8A804A",\r
+",'    c #755D53",\r
+"''    c #534D48",\r
+")'    c #625F4E",\r
+"!'    c #807C49",\r
+"~'    c #AC8059",\r
+"{'    c #BB7D53",\r
+"]'    c #B07742",\r
+"^'    c #A58047",\r
+"/'    c #977052",\r
+"('    c #8B6D4D",\r
+"_'    c #72785F",\r
+":'    c #868A70",\r
+"<'    c #A08876",\r
+"['    c #9D8B7C",\r
+"}'    c #88947F",\r
+"|'    c #9A927F",\r
+"1'    c #B3A08A",\r
+"2'    c #B7A88B",\r
+"3'    c #B3A79B",\r
+"4'    c #B6AA9F",\r
+"5'    c #B7AD92",\r
+"6'    c #B4A48F",\r
+"7'    c #B2A295",\r
+"8'    c #B4A787",\r
+"9'    c #ADA086",\r
+"0'    c #B09986",\r
+"a'    c #B3937C",\r
+"b'    c #AE9D86",\r
+"c'    c #A99F90",\r
+"d'    c #AE9B8C",\r
+"e'    c #ACA095",\r
+"f'    c #AFA591",\r
+"g'    c #B4A08B",\r
+"h'    c #B49D87",\r
+"i'    c #B3A481",\r
+"j'    c #B3A189",\r
+"k'    c #A99684",\r
+"l'    c #A39582",\r
+"m'    c #969283",\r
+"n'    c #9F8C71",\r
+"o'    c #A29C8B",\r
+"p'    c #AFB0A1",\r
+"q'    c #C0B698",\r
+"r'    c #A78481",\r
+"s'    c #6C6963",\r
+"t'    c #BCAD8D",\r
+"u'    c #BAA994",\r
+"v'    c #BDAA95",\r
+"w'    c #BFB18C",\r
+"x'    c #B9AC92",\r
+"y'    c #C2AA99",\r
+"z'    c #C2AD98",\r
+"A'    c #BFAF9B",\r
+"B'    c #C0B198",\r
+"C'    c #C2B193",\r
+"D'    c #C3AD9A",\r
+"E'    c #BDA694",\r
+"F'    c #AD9988",\r
+"G'    c #869192",\r
+"H'    c #ACA394",\r
+"I'    c #B9A893",\r
+"J'    c #B8A793",\r
+"K'    c #B6A285",\r
+"L'    c #B49F86",\r
+"M'    c #B8A586",\r
+"N'    c #BAAA8A",\r
+"O'    c #B5A191",\r
+"P'    c #B29B8E",\r
+"Q'    c #B3A58F",\r
+"R'    c #AEA393",\r
+"S'    c #B7A58C",\r
+"T'    c #B1A48C",\r
+"U'    c #BCA58C",\r
+"V'    c #B9A38C",\r
+"W'    c #BAA892",\r
+"X'    c #B1A189",\r
+"Y'    c #B5A388",\r
+"Z'    c #B8A988",\r
+"`'    c #B1A585",\r
+" )    c #958F78",\r
+".)    c #B2A087",\r
+"+)    c #C0A288",\r
+"@)    c #C2AD88",\r
+"#)    c #BDA98C",\r
+"$)    c #BFA689",\r
+"%)    c #BFAB95",\r
+"&)    c #BCAD8C",\r
+"*)    c #B6A68A",\r
+"=)    c #B89D8A",\r
+"-)    c #BAA587",\r
+";)    c #BAA189",\r
+">)    c #C1A88A",\r
+",)    c #BE9F87",\r
+"')    c #BCAB8B",\r
+"))    c #BEAB88",\r
+"!)    c #C2A68B",\r
+"~)    c #BFA991",\r
+"{)    c #C0AB87",\r
+"])    c #BBAD98",\r
+"^)    c #C2B997",\r
+"/)    c #C2AE99",\r
+"()    c #A27670",\r
+"_)    c #593B3D",\r
+":)    c #392C2C",\r
+"<)    c #332B2F",\r
+"[)    c #302C2C",\r
+"})    c #322D2B",\r
+"|)    c #2D2D2D",\r
+"1)    c #332E31",\r
+"2)    c #373534",\r
+"3)    c #33312F",\r
+"4)    c #342E32",\r
+"5)    c #413838",\r
+"6)    c #2C322F",\r
+"7)    c #302D2D",\r
+"8)    c #2E2B2A",\r
+"9)    c #2D262B",\r
+"0)    c #2E2C32",\r
+"a)    c #2B2C2F",\r
+"b)    c #2D2A2B",\r
+"c)    c #2E2925",\r
+"d)    c #2D2629",\r
+"e)    c #37312C",\r
+"f)    c #594D42",\r
+"g)    c #8A7560",\r
+"h)    c #939681",\r
+"i)    c #9CA08F",\r
+"j)    c #A99D92",\r
+"k)    c #AFA182",\r
+"l)    c #ADA58B",\r
+"m)    c #B1A984",\r
+"n)    c #BBAC8D",\r
+"o)    c #BDAC99",\r
+"p)    c #BDAD92",\r
+"q)    c #BCA390",\r
+"r)    c #B9A692",\r
+"s)    c #BAA992",\r
+"t)    c #BBA691",\r
+"u)    c #BD9C89",\r
+"v)    c #BEA58C",\r
+"w)    c #BCA38F",\r
+"x)    c #B4A087",\r
+"y)    c #B7A38B",\r
+"z)    c #B59F86",\r
+"A)    c #B6A287",\r
+"B)    c #B2A090",\r
+"C)    c #B4A088",\r
+"D)    c #B4A885",\r
+"E)    c #B3AA8E",\r
+"F)    c #B5A68B",\r
+"G)    c #B6A98F",\r
+"H)    c #B4A593",\r
+"I)    c #B4A78E",\r
+"J)    c #AB9B8B",\r
+"K)    c #AB9B88",\r
+"L)    c #978E7D",\r
+"M)    c #868D84",\r
+"N)    c #AE9579",\r
+"O)    c #A78F76",\r
+"P)    c #A58867",\r
+"Q)    c #979077",\r
+"R)    c #937E6D",\r
+"S)    c #81664D",\r
+"T)    c #666946",\r
+"U)    c #8B7955",\r
+"V)    c #938249",\r
+"W)    c #746F4F",\r
+"X)    c #605E4D",\r
+"Y)    c #837657",\r
+"Z)    c #9D7C58",\r
+"`)    c #B7745C",\r
+" !    c #B4644A",\r
+".!    c #9F7545",\r
+"+!    c #B28A5F",\r
+"@!    c #B57C54",\r
+"#!    c #A6784B",\r
+"$!    c #997A5E",\r
+"%!    c #A18F74",\r
+"&!    c #A58570",\r
+"*!    c #9C9079",\r
+"=!    c #929887",\r
+"-!    c #A29E86",\r
+";!    c #B19F85",\r
+">!    c #B79B8A",\r
+",!    c #B6A991",\r
+"'!    c #AFA68F",\r
+")!    c #BAA896",\r
+"!!    c #B8A69A",\r
+"~!    c #B2A991",\r
+"{!    c #B1A093",\r
+"]!    c #B4A294",\r
+"^!    c #B09F8C",\r
+"/!    c #B7A48F",\r
+"(!    c #B59F87",\r
+"_!    c #A99982",\r
+":!    c #AFA084",\r
+"<!    c #AB9A8D",\r
+"[!    c #B49B8F",\r
+"}!    c #B8A388",\r
+"|!    c #ADA18F",\r
+"1!    c #B3A388",\r
+"2!    c #B39C88",\r
+"3!    c #ADA791",\r
+"4!    c #AC9E8D",\r
+"5!    c #A89188",\r
+"6!    c #929088",\r
+"7!    c #9F9278",\r
+"8!    c #9E9788",\r
+"9!    c #B0B39C",\r
+"0!    c #C3BEA4",\r
+"a!    c #B6B4A1",\r
+"b!    c #B5AA8F",\r
+"c!    c #B3A890",\r
+"d!    c #BBA698",\r
+"e!    c #BDAD94",\r
+"f!    c #C1AF96",\r
+"g!    c #BCA388",\r
+"h!    c #B6A291",\r
+"i!    c #C0AD95",\r
+"j!    c #C0B195",\r
+"k!    c #BBAC9F",\r
+"l!    c #C2B298",\r
+"m!    c #C2AC9A",\r
+"n!    c #C7AF90",\r
+"o!    c #B7A089",\r
+"p!    c #95998E",\r
+"q!    c #B6A28C",\r
+"r!    c #B6A892",\r
+"s!    c #B8A691",\r
+"t!    c #B8A992",\r
+"u!    c #B8A895",\r
+"v!    c #B49E88",\r
+"w!    c #B7A688",\r
+"x!    c #B6A090",\r
+"y!    c #B49F83",\r
+"z!    c #AEA28F",\r
+"A!    c #B2A68D",\r
+"B!    c #B3A292",\r
+"C!    c #BBA48E",\r
+"D!    c #B9AD93",\r
+"E!    c #BAA589",\r
+"F!    c #B4A88D",\r
+"G!    c #B7A28B",\r
+"H!    c #B6A387",\r
+"I!    c #B3A090",\r
+"J!    c #AFA18D",\r
+"K!    c #B0A28D",\r
+"L!    c #B09D83",\r
+"M!    c #958E7E",\r
+"N!    c #AA997A",\r
+"O!    c #BD9F7E",\r
+"P!    c #BBA588",\r
+"Q!    c #BCA88B",\r
+"R!    c #C1AC92",\r
+"S!    c #BDAA91",\r
+"T!    c #B8A68B",\r
+"U!    c #BCAB8E",\r
+"V!    c #B5A48A",\r
+"W!    c #BA9D83",\r
+"X!    c #BDA78A",\r
+"Y!    c #BDAA83",\r
+"Z!    c #B7A388",\r
+"`!    c #BDA88D",\r
+" ~    c #BBAA86",\r
+".~    c #C0A48C",\r
+"+~    c #B8A688",\r
+"@~    c #B1AE92",\r
+"#~    c #C0B796",\r
+"$~    c #C6AE8A",\r
+"%~    c #A16866",\r
+"&~    c #573337",\r
+"*~    c #352826",\r
+"=~    c #252927",\r
+"-~    c #2F2B2D",\r
+";~    c #2E2C2B",\r
+">~    c #2D322D",\r
+",~    c #2C2C2A",\r
+"'~    c #2F2826",\r
+")~    c #2D2B30",\r
+"!~    c #302B32",\r
+"~~    c #302935",\r
+"{~    c #332E39",\r
+"]~    c #2E3531",\r
+"^~    c #342829",\r
+"/~    c #2B2528",\r
+"(~    c #2D2928",\r
+"_~    c #2F2D2F",\r
+":~    c #302B29",\r
+"<~    c #2B2B2A",\r
+"[~    c #252A29",\r
+"}~    c #2B2825",\r
+"|~    c #312827",\r
+"1~    c #3F3C3B",\r
+"2~    c #6C7D77",\r
+"3~    c #B1AF91",\r
+"4~    c #B1A794",\r
+"5~    c #A99F8A",\r
+"6~    c #ADA18C",\r
+"7~    c #A9A896",\r
+"8~    c #AAA08B",\r
+"9~    c #BFA791",\r
+"0~    c #C1AC98",\r
+"a~    c #BCB18E",\r
+"b~    c #BAA88F",\r
+"c~    c #C0A385",\r
+"d~    c #BFA98D",\r
+"e~    c #BCA796",\r
+"f~    c #BB9E8B",\r
+"g~    c #B8A88D",\r
+"h~    c #BAAA8B",\r
+"i~    c #BCA48F",\r
+"j~    c #B89E85",\r
+"k~    c #B2A180",\r
+"l~    c #AE9F8A",\r
+"m~    c #AF9B8A",\r
+"n~    c #B5A893",\r
+"o~    c #B5A898",\r
+"p~    c #B3A18E",\r
+"q~    c #B7A889",\r
+"r~    c #BCAE8A",\r
+"s~    c #B4A189",\r
+"t~    c #AC9A81",\r
+"u~    c #928D75",\r
+"v~    c #798178",\r
+"w~    c #AB997D",\r
+"x~    c #AA9480",\r
+"y~    c #997956",\r
+"z~    c #877B4B",\r
+"A~    c #92895F",\r
+"B~    c #908459",\r
+"C~    c #8A8356",\r
+"D~    c #8D7E5D",\r
+"E~    c #927863",\r
+"F~    c #8C7D5D",\r
+"G~    c #937562",\r
+"H~    c #919067",\r
+"I~    c #B6A37E",\r
+"J~    c #C18762",\r
+"K~    c #8B5341",\r
+"L~    c #806F4E",\r
+"M~    c #A77E5C",\r
+"N~    c #98674A",\r
+"O~    c #926549",\r
+"P~    c #9B7749",\r
+"Q~    c #9D7550",\r
+"R~    c #987E5B",\r
+"S~    c #BD805A",\r
+"T~    c #AD8A64",\r
+"U~    c #949181",\r
+"V~    c #A49D89",\r
+"W~    c #B29C81",\r
+"X~    c #B09F86",\r
+"Y~    c #ADA092",\r
+"Z~    c #B3A68D",\r
+"`~    c #B1A691",\r
+" {    c #B9A585",\r
+".{    c #B6A58D",\r
+"+{    c #B3A68A",\r
+"@{    c #B69C8E",\r
+"#{    c #B3A392",\r
+"${    c #ACA38B",\r
+"%{    c #B1A08D",\r
+"&{    c #B4A18D",\r
+"*{    c #B1A287",\r
+"={    c #B09B85",\r
+"-{    c #AD9A85",\r
+";{    c #B1A28C",\r
+">{    c #ABA185",\r
+",{    c #AA9887",\r
+"'{    c #AE9E90",\r
+"){    c #AF9C82",\r
+"!{    c #9B8D7F",\r
+"~{    c #8C8877",\r
+"{{    c #A29175",\r
+"]{    c #A59C89",\r
+"^{    c #ACA397",\r
+"/{    c #9C968C",\r
+"({    c #9E9192",\r
+"_{    c #BCB089",\r
+":{    c #B5A796",\r
+"<{    c #BEA895",\r
+"[{    c #BAAD96",\r
+"}{    c #BCA892",\r
+"|{    c #BAA795",\r
+"1{    c #C1AE8C",\r
+"2{    c #BEA68F",\r
+"3{    c #C1A78E",\r
+"4{    c #C3AD92",\r
+"5{    c #C6AA92",\r
+"6{    c #C1A78A",\r
+"7{    c #BEA08A",\r
+"8{    c #A39F8F",\r
+"9{    c #ADAC91",\r
+"0{    c #B7AB93",\r
+"a{    c #B7AA8B",\r
+"b{    c #B8AF92",\r
+"c{    c #BAA290",\r
+"d{    c #B5A789",\r
+"e{    c #B7AB8F",\r
+"f{    c #B7A795",\r
+"g{    c #B4A28D",\r
+"h{    c #B2A78C",\r
+"i{    c #B1A38E",\r
+"j{    c #B6A38D",\r
+"k{    c #B89F86",\r
+"l{    c #B3A78E",\r
+"m{    c #BBAB94",\r
+"n{    c #B7A791",\r
+"o{    c #B29D87",\r
+"p{    c #B59F82",\r
+"q{    c #B19F88",\r
+"r{    c #B0A283",\r
+"s{    c #B4A68C",\r
+"t{    c #AF9B84",\r
+"u{    c #A9967E",\r
+"v{    c #B29A77",\r
+"w{    c #C0A583",\r
+"x{    c #BEAA88",\r
+"y{    c #B9A68F",\r
+"z{    c #BDA68C",\r
+"A{    c #BCA68A",\r
+"B{    c #B8A88F",\r
+"C{    c #BEA78D",\r
+"D{    c #B7A894",\r
+"E{    c #BFAB89",\r
+"F{    c #C3AC8C",\r
+"G{    c #B8A98E",\r
+"H{    c #C0AB8B",\r
+"I{    c #B9A188",\r
+"J{    c #B7B296",\r
+"K{    c #A97068",\r
+"L{    c #563236",\r
+"M{    c #372C2A",\r
+"N{    c #302F2F",\r
+"O{    c #282527",\r
+"P{    c #2F2C2C",\r
+"Q{    c #2F282F",\r
+"R{    c #282827",\r
+"S{    c #302C27",\r
+"T{    c #2D222C",\r
+"U{    c #342D2A",\r
+"V{    c #323132",\r
+"W{    c #303333",\r
+"X{    c #37282C",\r
+"Y{    c #292B35",\r
+"Z{    c #28252B",\r
+"`{    c #2F342F",\r
+" ]    c #3B2E2C",\r
+".]    c #2F282A",\r
+"+]    c #282526",\r
+"@]    c #2F2A2B",\r
+"#]    c #293733",\r
+"$]    c #28272D",\r
+"%]    c #2C292D",\r
+"&]    c #2E282B",\r
+"*]    c #404545",\r
+"=]    c #929985",\r
+"-]    c #B4AE93",\r
+";]    c #B1A890",\r
+">]    c #B69A8B",\r
+",]    c #B1AA95",\r
+"']    c #A2A191",\r
+")]    c #BEAC96",\r
+"!]    c #C1A998",\r
+"~]    c #B9A595",\r
+"{]    c #B8A290",\r
+"]]    c #BCA28A",\r
+"^]    c #B4A399",\r
+"/]    c #BFAB96",\r
+"(]    c #BFAE8D",\r
+"_]    c #B7A289",\r
+":]    c #B9A68E",\r
+"<]    c #BBAB91",\r
+"[]    c #B4A791",\r
+"}]    c #B89F8A",\r
+"|]    c #B0A78E",\r
+"1]    c #B0A88C",\r
+"2]    c #B9A792",\r
+"3]    c #B6AB93",\r
+"4]    c #B69F92",\r
+"5]    c #B1A58C",\r
+"6]    c #B1A288",\r
+"7]    c #AF978A",\r
+"8]    c #8E8377",\r
+"9]    c #858470",\r
+"0]    c #AA9877",\r
+"a]    c #A4927B",\r
+"b]    c #AB9567",\r
+"c]    c #A49468",\r
+"d]    c #968668",\r
+"e]    c #8D805B",\r
+"f]    c #97835F",\r
+"g]    c #8F8058",\r
+"h]    c #8B7855",\r
+"i]    c #987D69",\r
+"j]    c #AE9E6E",\r
+"k]    c #C6A486",\r
+"l]    c #B57959",\r
+"m]    c #8A6E3C",\r
+"n]    c #A39661",\r
+"o]    c #C89569",\r
+"p]    c #B07B4B",\r
+"q]    c #A18244",\r
+"r]    c #A87D52",\r
+"s]    c #A57252",\r
+"t]    c #9B774F",\r
+"u]    c #B37158",\r
+"v]    c #9F7858",\r
+"w]    c #A59E8C",\r
+"x]    c #AD9A7E",\r
+"y]    c #A69B86",\r
+"z]    c #B2A48B",\r
+"A]    c #AFA08F",\r
+"B]    c #B1A48F",\r
+"C]    c #B6A089",\r
+"D]    c #AE9F8D",\r
+"E]    c #B6A281",\r
+"F]    c #B59F84",\r
+"G]    c #B1A286",\r
+"H]    c #B49C89",\r
+"I]    c #B19987",\r
+"J]    c #B3A187",\r
+"K]    c #B1A088",\r
+"L]    c #A89B86",\r
+"M]    c #A69387",\r
+"N]    c #B1A384",\r
+"O]    c #AFA27E",\r
+"P]    c #AB9A85",\r
+"Q]    c #AE9C8C",\r
+"R]    c #91897E",\r
+"S]    c #898677",\r
+"T]    c #A4937E",\r
+"U]    c #9F9587",\r
+"V]    c #A4927F",\r
+"W]    c #977C72",\r
+"X]    c #70645C",\r
+"Y]    c #777264",\r
+"Z]    c #B2A68E",\r
+"`]    c #B9A994",\r
+" ^    c #BFA987",\r
+".^    c #BAA68E",\r
+"+^    c #BCAC8F",\r
+"@^    c #BEAA8E",\r
+"#^    c #BFA999",\r
+"$^    c #C2AA90",\r
+"%^    c #BFA890",\r
+"&^    c #BDA389",\r
+"*^    c #BF9D87",\r
+"=^    c #C2A389",\r
+"-^    c #BDA083",\r
+";^    c #BA9986",\r
+">^    c #A0928B",\r
+",^    c #9DA692",\r
+"'^    c #B3AA98",\r
+")^    c #BAA592",\r
+"!^    c #B5AA95",\r
+"~^    c #B9A491",\r
+"{^    c #B9A596",\r
+"]^    c #BAAA90",\r
+"^^    c #C0A98B",\r
+"/^    c #B09E8E",\r
+"(^    c #ADA386",\r
+"_^    c #B3A48F",\r
+":^    c #AFA08B",\r
+"<^    c #AE9F87",\r
+"[^    c #B8A98C",\r
+"}^    c #B5AB8D",\r
+"|^    c #B79D87",\r
+"1^    c #B6A384",\r
+"2^    c #B0A08B",\r
+"3^    c #B39E89",\r
+"4^    c #AF9A89",\r
+"5^    c #AE9E89",\r
+"6^    c #B29F86",\r
+"7^    c #AD9F8D",\r
+"8^    c #AC9D83",\r
+"9^    c #BFA489",\r
+"0^    c #C1A48C",\r
+"a^    c #B7A58D",\r
+"b^    c #B9A688",\r
+"c^    c #B49F8F",\r
+"d^    c #B9A390",\r
+"e^    c #B8AC8F",\r
+"f^    c #BDA58A",\r
+"g^    c #BAA489",\r
+"h^    c #BDAB8A",\r
+"i^    c #BDA684",\r
+"j^    c #BCA988",\r
+"k^    c #AF7B75",\r
+"l^    c #67393E",\r
+"m^    c #322C2B",\r
+"n^    c #2E2E2B",\r
+"o^    c #2E2F31",\r
+"p^    c #2C2524",\r
+"q^    c #29252B",\r
+"r^    c #2B262D",\r
+"s^    c #282328",\r
+"t^    c #282E2E",\r
+"u^    c #27252D",\r
+"v^    c #30252F",\r
+"w^    c #2F2A32",\r
+"x^    c #2F2E36",\r
+"y^    c #38272C",\r
+"z^    c #2D252E",\r
+"A^    c #262F28",\r
+"B^    c #494B39",\r
+"C^    c #53403E",\r
+"D^    c #2F1E28",\r
+"E^    c #251F2A",\r
+"F^    c #252A25",\r
+"G^    c #312829",\r
+"H^    c #312C38",\r
+"I^    c #292C2F",\r
+"J^    c #2B312E",\r
+"K^    c #2D2829",\r
+"L^    c #2D2A2C",\r
+"M^    c #474949",\r
+"N^    c #80887D",\r
+"O^    c #BBAC90",\r
+"P^    c #BAA692",\r
+"Q^    c #B3A589",\r
+"R^    c #ADA38C",\r
+"S^    c #B6AC94",\r
+"T^    c #B5A38E",\r
+"U^    c #BCA68F",\r
+"V^    c #B9A791",\r
+"W^    c #B5A58E",\r
+"X^    c #BAA898",\r
+"Y^    c #BBA989",\r
+"Z^    c #B7A585",\r
+"`^    c #B7A390",\r
+" /    c #B6A78B",\r
+"./    c #B5A593",\r
+"+/    c #B4A896",\r
+"@/    c #BAAC8E",\r
+"#/    c #BAAB94",\r
+"$/    c #B5A594",\r
+"%/    c #B9B196",\r
+"&/    c #BAAD92",\r
+"*/    c #B1A68B",\r
+"=/    c #B1A48A",\r
+"-/    c #AFA48B",\r
+";/    c #ACA28B",\r
+">/    c #A09486",\r
+",/    c #9C8E72",\r
+"'/    c #A99B74",\r
+")/    c #AF987A",\r
+"!/    c #B0987F",\r
+"~/    c #AA9072",\r
+"{/    c #9C8058",\r
+"]/    c #927555",\r
+"^/    c #908165",\r
+"//    c #988963",\r
+"(/    c #997F5B",\r
+"_/    c #936F4F",\r
+":/    c #91825A",\r
+"</    c #B69172",\r
+"[/    c #B7745B",\r
+"}/    c #946B4B",\r
+"|/    c #A69063",\r
+"1/    c #C09F76",\r
+"2/    c #CA805F",\r
+"3/    c #C0925B",\r
+"4/    c #CEA773",\r
+"5/    c #C1996F",\r
+"6/    c #A97D59",\r
+"7/    c #AB8553",\r
+"8/    c #B17851",\r
+"9/    c #9A875F",\r
+"0/    c #94998A",\r
+"a/    c #AB9889",\r
+"b/    c #B19C86",\r
+"c/    c #AE9987",\r
+"d/    c #AEA087",\r
+"e/    c #B2A18D",\r
+"f/    c #B7A78D",\r
+"g/    c #B4A390",\r
+"h/    c #AEA284",\r
+"i/    c #AA9D86",\r
+"j/    c #B69E8C",\r
+"k/    c #B69F87",\r
+"l/    c #AF997A",\r
+"m/    c #B29F7C",\r
+"n/    c #AB9B86",\r
+"o/    c #AB9884",\r
+"p/    c #B19A88",\r
+"q/    c #A89A86",\r
+"r/    c #AB9D80",\r
+"s/    c #B49983",\r
+"t/    c #AF947F",\r
+"u/    c #A69880",\r
+"v/    c #9F9082",\r
+"w/    c #928267",\r
+"x/    c #A28C77",\r
+"y/    c #A89479",\r
+"z/    c #9B866B",\r
+"A/    c #888364",\r
+"B/    c #908971",\r
+"C/    c #959F8B",\r
+"D/    c #B5A392",\r
+"E/    c #B7A798",\r
+"F/    c #BCA991",\r
+"G/    c #BE9E89",\r
+"H/    c #B8A58A",\r
+"I/    c #BBA98B",\r
+"J/    c #C2A78C",\r
+"K/    c #C0AA93",\r
+"L/    c #C0A78A",\r
+"M/    c #BFA38E",\r
+"N/    c #BDA489",\r
+"O/    c #BFA98B",\r
+"P/    c #BEA28A",\r
+"Q/    c #A09983",\r
+"R/    c #9CA190",\r
+"S/    c #B3AB93",\r
+"T/    c #B4A592",\r
+"U/    c #B4A396",\r
+"V/    c #B9AC93",\r
+"W/    c #B0AB97",\r
+"X/    c #B6AA9A",\r
+"Y/    c #BAA38B",\r
+"Z/    c #B7AC87",\r
+"`/    c #B6A787",\r
+" (    c #AF9D83",\r
+".(    c #B1A38D",\r
+"+(    c #B3A98D",\r
+"@(    c #B4A08E",\r
+"#(    c #B8A291",\r
+"$(    c #B5AA8B",\r
+"%(    c #AFA28B",\r
+"&(    c #B4A284",\r
+"*(    c #B6A380",\r
+"=(    c #B09F87",\r
+"-(    c #AA9B8C",\r
+";(    c #A79989",\r
+">(    c #AEA788",\r
+",(    c #AF9D8D",\r
+"'(    c #AB9C8F",\r
+")(    c #AE9F80",\r
+"!(    c #BDA58B",\r
+"~(    c #BBA389",\r
+"{(    c #BA9F89",\r
+"](    c #BCAA96",\r
+"^(    c #B8A38F",\r
+"/(    c #B8A692",\r
+"((    c #BBA489",\r
+"_(    c #BFA786",\r
+":(    c #B5AB8C",\r
+"<(    c #B4A897",\r
+"[(    c #BBA68A",\r
+"}(    c #BAA28B",\r
+"|(    c #BDAE92",\r
+"1(    c #BEAD8B",\r
+"2(    c #B8AF91",\r
+"3(    c #B79C86",\r
+"4(    c #7A4544",\r
+"5(    c #3B282D",\r
+"6(    c #262827",\r
+"7(    c #282623",\r
+"8(    c #2A2929",\r
+"9(    c #2B262C",\r
+"0(    c #29242D",\r
+"a(    c #29262F",\r
+"b(    c #271F25",\r
+"c(    c #292529",\r
+"d(    c #2D292F",\r
+"e(    c #2D272D",\r
+"f(    c #303135",\r
+"g(    c #343434",\r
+"h(    c #36343C",\r
+"i(    c #363035",\r
+"j(    c #31342D",\r
+"k(    c #4E6142",\r
+"l(    c #604C3D",\r
+"m(    c #341F25",\r
+"n(    c #252221",\r
+"o(    c #2A2F27",\r
+"p(    c #333135",\r
+"q(    c #312D3E",\r
+"r(    c #282D2E",\r
+"s(    c #272429",\r
+"t(    c #272727",\r
+"u(    c #282927",\r
+"v(    c #2F2F31",\r
+"w(    c #485C58",\r
+"x(    c #9D9B82",\r
+"y(    c #B8A488",\r
+"z(    c #B4A386",\r
+"A(    c #A6A48E",\r
+"B(    c #BCA894",\r
+"C(    c #BDA88F",\r
+"D(    c #B7A689",\r
+"E(    c #B9A48B",\r
+"F(    c #B7A88E",\r
+"G(    c #B8A896",\r
+"H(    c #B6A591",\r
+"I(    c #B6A18A",\r
+"J(    c #B59F83",\r
+"K(    c #B6A68B",\r
+"L(    c #B1A488",\r
+"M(    c #B6A893",\r
+"N(    c #B3AB95",\r
+"O(    c #B3A495",\r
+"P(    c #B9AB93",\r
+"Q(    c #B0A38B",\r
+"R(    c #AC9D8F",\r
+"S(    c #AFA789",\r
+"T(    c #A29D89",\r
+"U(    c #8C8C7A",\r
+"V(    c #AF957F",\r
+"W(    c #AD997E",\r
+"X(    c #9E8774",\r
+"Y(    c #978B73",\r
+"Z(    c #9F8855",\r
+"`(    c #978B61",\r
+" _    c #A3916D",\r
+"._    c #A4926B",\r
+"+_    c #9E9377",\r
+"@_    c #A88B62",\r
+"#_    c #AE8055",\r
+"$_    c #A36950",\r
+"%_    c #947B58",\r
+"&_    c #B09B78",\r
+"*_    c #CFA77E",\r
+"=_    c #D5AA77",\r
+"-_    c #D39573",\r
+";_    c #CFA877",\r
+">_    c #D4A985",\r
+",_    c #C88771",\r
+"'_    c #A37D56",\r
+")_    c #A88C66",\r
+"!_    c #C08A5B",\r
+"~_    c #AD9660",\r
+"{_    c #929585",\r
+"]_    c #B4A080",\r
+"^_    c #B49B7E",\r
+"/_    c #B49E8B",\r
+"(_    c #B1A494",\r
+"__    c #B7AA90",\r
+":_    c #B39B8F",\r
+"<_    c #AF9E83",\r
+"[_    c #AA9687",\r
+"}_    c #B39A80",\r
+"|_    c #B49580",\r
+"1_    c #AB927A",\r
+"2_    c #AD9475",\r
+"3_    c #AB9177",\r
+"4_    c #A99580",\r
+"5_    c #A99E7C",\r
+"6_    c #AA9983",\r
+"7_    c #A4907B",\r
+"8_    c #A39478",\r
+"9_    c #A48E78",\r
+"0_    c #A6917A",\r
+"a_    c #A58E7D",\r
+"b_    c #928C7D",\r
+"c_    c #90835E",\r
+"d_    c #998B6A",\r
+"e_    c #9B876D",\r
+"f_    c #938E69",\r
+"g_    c #938A72",\r
+"h_    c #998E78",\r
+"i_    c #939D90",\r
+"j_    c #B9A487",\r
+"k_    c #BDA48E",\r
+"l_    c #C0A38B",\r
+"m_    c #BEA48A",\r
+"n_    c #B9A88B",\r
+"o_    c #BEB28D",\r
+"p_    c #BEAE94",\r
+"q_    c #BEAA90",\r
+"r_    c #BEAE91",\r
+"s_    c #B8A98A",\r
+"t_    c #A59F89",\r
+"u_    c #A2A194",\r
+"v_    c #ADA693",\r
+"w_    c #B1A48B",\r
+"x_    c #B5A98C",\r
+"y_    c #B8AE90",\r
+"z_    c #B8A894",\r
+"A_    c #B49E8C",\r
+"B_    c #B5A68A",\r
+"C_    c #B7A885",\r
+"D_    c #AEA08A",\r
+"E_    c #B49D88",\r
+"F_    c #B09E82",\r
+"G_    c #B19E8C",\r
+"H_    c #B1A090",\r
+"I_    c #B3A58B",\r
+"J_    c #AE978A",\r
+"K_    c #B2A38B",\r
+"L_    c #A99A89",\r
+"M_    c #B29F8A",\r
+"N_    c #A7A28A",\r
+"O_    c #ACA08E",\r
+"P_    c #B2A088",\r
+"Q_    c #AA9986",\r
+"R_    c #BFA982",\r
+"S_    c #BDA288",\r
+"T_    c #BCA58A",\r
+"U_    c #B7A58B",\r
+"V_    c #BBA894",\r
+"W_    c #BCA68C",\r
+"X_    c #B7A08C",\r
+"Y_    c #B5A795",\r
+"Z_    c #B7A78A",\r
+"`_    c #B6A08B",\r
+" :    c #BCB290",\r
+".:    c #995F5D",\r
+"+:    c #3C2726",\r
+"@:    c #292129",\r
+"#:    c #26282C",\r
+"$:    c #272726",\r
+"%:    c #302825",\r
+"&:    c #262A2B",\r
+"*:    c #24222D",\r
+"=:    c #252D2B",\r
+"-:    c #232427",\r
+";:    c #29262C",\r
+">:    c #2D3330",\r
+",:    c #302C2F",\r
+"':    c #2F302E",\r
+"):    c #332A2A",\r
+"!:    c #38302D",\r
+"~:    c #424037",\r
+"{:    c #425740",\r
+"]:    c #566354",\r
+"^:    c #65363A",\r
+"/:    c #301D26",\r
+"(:    c #242223",\r
+"_:    c #2C352D",\r
+"::    c #2F322D",\r
+"<:    c #312E34",\r
+"[:    c #2A2429",\r
+"}:    c #222026",\r
+"|:    c #242927",\r
+"1:    c #27282C",\r
+"2:    c #28252A",\r
+"3:    c #353734",\r
+"4:    c #6B6B5B",\r
+"5:    c #B09A7D",\r
+"6:    c #AEA080",\r
+"7:    c #9F9F8D",\r
+"8:    c #C4AB8B",\r
+"9:    c #BDA994",\r
+"0:    c #B7A387",\r
+"a:    c #B6AA8F",\r
+"b:    c #B2A191",\r
+"c:    c #B7A489",\r
+"d:    c #B3A490",\r
+"e:    c #B3A393",\r
+"f:    c #B4A492",\r
+"g:    c #B2A08C",\r
+"h:    c #B1AB92",\r
+"i:    c #BCAF8B",\r
+"j:    c #B4A88C",\r
+"k:    c #B4A78F",\r
+"l:    c #BBAA8B",\r
+"m:    c #B5A88E",\r
+"n:    c #AEA48F",\r
+"o:    c #B0A691",\r
+"p:    c #9A8D78",\r
+"q:    c #8E836C",\r
+"r:    c #A79982",\r
+"s:    c #A8947A",\r
+"t:    c #A69075",\r
+"u:    c #A28F77",\r
+"v:    c #97856D",\r
+"w:    c #9F9077",\r
+"x:    c #A29470",\r
+"y:    c #A28E72",\r
+"z:    c #9C907A",\r
+"A:    c #AE9765",\r
+"B:    c #BB6B54",\r
+"C:    c #875139",\r
+"D:    c #A79472",\r
+"E:    c #CAA188",\r
+"F:    c #D5A26B",\r
+"G:    c #D6B07B",\r
+"H:    c #DCBA95",\r
+"I:    c #DDB481",\r
+"J:    c #D09677",\r
+"K:    c #BF6E57",\r
+"L:    c #A89468",\r
+"M:    c #C89F7D",\r
+"N:    c #BC7D5C",\r
+"O:    c #8E7456",\r
+"P:    c #918F85",\r
+"Q:    c #BAA078",\r
+"R:    c #B0947D",\r
+"S:    c #A89682",\r
+"T:    c #B1A284",\r
+"U:    c #AB9A8A",\r
+"V:    c #AF9986",\r
+"W:    c #B09D8C",\r
+"X:    c #B1A18E",\r
+"Y:    c #AAA189",\r
+"Z:    c #A29384",\r
+"`:    c #A19587",\r
+" <    c #9F916C",\r
+".<    c #9D8370",\r
+"+<    c #A28570",\r
+"@<    c #9C8D6D",\r
+"#<    c #978A78",\r
+"$<    c #9B8D76",\r
+"%<    c #8F8C77",\r
+"&<    c #948667",\r
+"*<    c #837C66",\r
+"=<    c #898465",\r
+"-<    c #969076",\r
+";<    c #928880",\r
+"><    c #7A817C",\r
+",<    c #94957D",\r
+"'<    c #969587",\r
+")<    c #929284",\r
+"!<    c #968F7F",\r
+"~<    c #8F907C",\r
+"{<    c #8D8E7C",\r
+"]<    c #999082",\r
+"^<    c #B1A291",\r
+"/<    c #B6A689",\r
+"(<    c #BEAC91",\r
+"_<    c #BDAB8E",\r
+":<    c #BAA58D",\r
+"<<    c #C2AC94",\r
+"[<    c #B5AD93",\r
+"}<    c #BDAE93",\r
+"|<    c #C2AD84",\r
+"1<    c #BBB08F",\r
+"2<    c #B09F8B",\r
+"3<    c #969E94",\r
+"4<    c #ACA994",\r
+"5<    c #B6AB94",\r
+"6<    c #B0A490",\r
+"7<    c #B49F8E",\r
+"8<    c #BAAF92",\r
+"9<    c #B6AB8E",\r
+"0<    c #B6A88F",\r
+"a<    c #B7A490",\r
+"b<    c #ADA186",\r
+"c<    c #AD9E88",\r
+"d<    c #B09C86",\r
+"e<    c #B49F80",\r
+"f<    c #B1A583",\r
+"g<    c #B4A282",\r
+"h<    c #B4A891",\r
+"i<    c #B4A783",\r
+"j<    c #B2A089",\r
+"k<    c #A69E89",\r
+"l<    c #AE9D82",\r
+"m<    c #ADA28D",\r
+"n<    c #ADA28C",\r
+"o<    c #AC9E87",\r
+"p<    c #B1A086",\r
+"q<    c #A79D81",\r
+"r<    c #949287",\r
+"s<    c #B8A386",\r
+"t<    c #B9A58B",\r
+"u<    c #BDAE94",\r
+"v<    c #BCAA8D",\r
+"w<    c #B5A390",\r
+"x<    c #B3A691",\r
+"y<    c #B7AC91",\r
+"z<    c #B8AA8A",\r
+"A<    c #B6AA91",\r
+"B<    c #B27B77",\r
+"C<    c #67313A",\r
+"D<    c #322425",\r
+"E<    c #292426",\r
+"F<    c #2A2529",\r
+"G<    c #27292A",\r
+"H<    c #251F22",\r
+"I<    c #2F2525",\r
+"J<    c #292A2F",\r
+"K<    c #292C2D",\r
+"L<    c #292C2E",\r
+"M<    c #262B2E",\r
+"N<    c #293130",\r
+"O<    c #2F2B2B",\r
+"P<    c #2E292B",\r
+"Q<    c #312428",\r
+"R<    c #312D2C",\r
+"S<    c #51614B",\r
+"T<    c #82775E",\r
+"U<    c #5A3628",\r
+"V<    c #282324",\r
+"W<    c #221E1F",\r
+"X<    c #272825",\r
+"Y<    c #2F2F2A",\r
+"Z<    c #322E2D",\r
+"`<    c #2C252C",\r
+" [    c #22222A",\r
+".[    c #2C2C2B",\r
+"+[    c #25272B",\r
+"@[    c #282028",\r
+"#[    c #2C2A2B",\r
+"$[    c #414340",\r
+"%[    c #787469",\r
+"&[    c #A7A280",\r
+"*[    c #AA9E8F",\r
+"=[    c #B4A98E",\r
+"-[    c #B8AB92",\r
+";[    c #BAAA8C",\r
+">[    c #B99E84",\r
+",[    c #B39E88",\r
+"'[    c #B6AB8F",\r
+")[    c #B8AB90",\r
+"![    c #B2A798",\r
+"~[    c #B2A593",\r
+"{[    c #B8AB8D",\r
+"][    c #B5A08B",\r
+"^[    c #B2A484",\r
+"/[    c #B4AA8F",\r
+"([    c #B0A58B",\r
+"_[    c #B09E88",\r
+":[    c #ACA490",\r
+"<[    c #97937F",\r
+"[[    c #888072",\r
+"}[    c #A6957F",\r
+"|[    c #A69878",\r
+"1[    c #A5937A",\r
+"2[    c #A38A71",\r
+"3[    c #968C6C",\r
+"4[    c #9C8E78",\r
+"5[    c #A18A70",\r
+"6[    c #958676",\r
+"7[    c #997D6B",\r
+"8[    c #A68A59",\r
+"9[    c #B47C60",\r
+"0[    c #856140",\r
+"a[    c #A18864",\r
+"b[    c #C7926E",\r
+"c[    c #CC9E66",\r
+"d[    c #CEA981",\r
+"e[    c #DAB892",\r
+"f[    c #DDB687",\r
+"g[    c #D69B72",\r
+"h[    c #BB8F5F",\r
+"i[    c #CDB383",\r
+"j[    c #D2A489",\r
+"k[    c #AA4A4A",\r
+"l[    c #5B4B4B",\r
+"m[    c #738889",\r
+"n[    c #AA9A7E",\r
+"o[    c #A19884",\r
+"p[    c #A19380",\r
+"q[    c #9B957F",\r
+"r[    c #979179",\r
+"s[    c #9F9379",\r
+"t[    c #949180",\r
+"u[    c #96918A",\r
+"v[    c #999680",\r
+"w[    c #94938A",\r
+"x[    c #898F8D",\r
+"y[    c #9B967C",\r
+"z[    c #94907E",\r
+"A[    c #969380",\r
+"B[    c #9B947C",\r
+"C[    c #989786",\r
+"D[    c #999684",\r
+"E[    c #A59D8B",\r
+"F[    c #9E9C87",\r
+"G[    c #9E9084",\r
+"H[    c #A49A87",\r
+"I[    c #A09980",\r
+"J[    c #9E9880",\r
+"K[    c #90947B",\r
+"L[    c #9A9B8A",\r
+"M[    c #9A9889",\r
+"N[    c #9C967F",\r
+"O[    c #998C7B",\r
+"P[    c #938F7F",\r
+"Q[    c #9A9481",\r
+"R[    c #B0A78F",\r
+"S[    c #B7A595",\r
+"T[    c #BAA390",\r
+"U[    c #BBAD94",\r
+"V[    c #B7AC96",\r
+"W[    c #BCB097",\r
+"X[    c #B8AB94",\r
+"Y[    c #C0A78E",\r
+"Z[    c #B09885",\r
+"`[    c #919388",\r
+" }    c #A9A28D",\r
+".}    c #B5A990",\r
+"+}    c #B8A18D",\r
+"@}    c #B1A98F",\r
+"#}    c #B6A087",\r
+"$}    c #B2A07D",\r
+"%}    c #AEA082",\r
+"&}    c #AE9A7D",\r
+"*}    c #AE9F83",\r
+"=}    c #B4A488",\r
+"-}    c #B3A083",\r
+";}    c #AD9B8A",\r
+">}    c #B0A38F",\r
+",}    c #B2A588",\r
+"'}    c #B2A17B",\r
+")}    c #AEA48A",\r
+"!}    c #AB9F84",\r
+"~}    c #B09A89",\r
+"{}    c #B19F8A",\r
+"]}    c #AB9C7E",\r
+"^}    c #9C9387",\r
+"/}    c #B4A086",\r
+"(}    c #B9A282",\r
+"_}    c #B7A28C",\r
+":}    c #B9A793",\r
+"<}    c #B4A091",\r
+"[}    c #BBA790",\r
+"}}    c #C0AF89",\r
+"|}    c #B6A490",\r
+"1}    c #BCAE91",\r
+"2}    c #B6A694",\r
+"3}    c #BAAC8C",\r
+"4}    c #B89E8B",\r
+"5}    c #8A5250",\r
+"6}    c #412427",\r
+"7}    c #262022",\r
+"8}    c #222425",\r
+"9}    c #2B2225",\r
+"0}    c #2B252A",\r
+"a}    c #232026",\r
+"b}    c #2A2828",\r
+"c}    c #2C2C28",\r
+"d}    c #262527",\r
+"e}    c #212833",\r
+"f}    c #25212C",\r
+"g}    c #272928",\r
+"h}    c #2C3738",\r
+"i}    c #302B2C",\r
+"j}    c #24232B",\r
+"k}    c #262028",\r
+"l}    c #2B2428",\r
+"m}    c #425841",\r
+"n}    c #8C8667",\r
+"o}    c #6C352C",\r
+"p}    c #302B2D",\r
+"q}    c #22201E",\r
+"r}    c #282823",\r
+"s}    c #363235",\r
+"t}    c #272A2B",\r
+"u}    c #27272D",\r
+"v}    c #25242B",\r
+"w}    c #2A272E",\r
+"x}    c #26272D",\r
+"y}    c #292327",\r
+"z}    c #2D2C2C",\r
+"A}    c #4D5143",\r
+"B}    c #919C8A",\r
+"C}    c #ADABA0",\r
+"D}    c #B7A997",\r
+"E}    c #B8AB95",\r
+"F}    c #BBAD8F",\r
+"G}    c #B69F90",\r
+"H}    c #B5A187",\r
+"I}    c #ACA38A",\r
+"J}    c #AEA291",\r
+"K}    c #B4A089",\r
+"L}    c #B79C87",\r
+"M}    c #B0A592",\r
+"N}    c #B39D88",\r
+"O}    c #AD9A80",\r
+"P}    c #A89C7E",\r
+"Q}    c #AE9A84",\r
+"R}    c #A69F7C",\r
+"S}    c #A3937C",\r
+"T}    c #A68F81",\r
+"U}    c #8D8C73",\r
+"V}    c #788271",\r
+"W}    c #908573",\r
+"X}    c #8D8C75",\r
+"Y}    c #8A8D79",\r
+"Z}    c #868871",\r
+"`}    c #81806C",\r
+" |    c #84857B",\r
+".|    c #9C8C76",\r
+"+|    c #968370",\r
+"@|    c #8D7A5F",\r
+"#|    c #A18259",\r
+"$|    c #B87E60",\r
+"%|    c #956E45",\r
+"&|    c #A99966",\r
+"*|    c #CBA46E",\r
+"=|    c #C89E60",\r
+"-|    c #CC9F6C",\r
+";|    c #D6A379",\r
+">|    c #DBBA88",\r
+",|    c #DBB78D",\r
+"'|    c #D8B688",\r
+")|    c #D7AF8C",\r
+"!|    c #C88778",\r
+"~|    c #80353A",\r
+"{|    c #444544",\r
+"]|    c #8B9785",\r
+"^|    c #A8A08A",\r
+"/|    c #A59887",\r
+"(|    c #A49385",\r
+"_|    c #A29787",\r
+":|    c #A5947B",\r
+"<|    c #9F957E",\r
+"[|    c #A39A85",\r
+"}|    c #AD9B7B",\r
+"||    c #A99D8A",\r
+"1|    c #AD9A87",\r
+"2|    c #AD9B82",\r
+"3|    c #AB9A86",\r
+"4|    c #B19D83",\r
+"5|    c #B1A187",\r
+"6|    c #A89A8D",\r
+"7|    c #A69E83",\r
+"8|    c #AA9D8D",\r
+"9|    c #A99C89",\r
+"0|    c #A99F85",\r
+"a|    c #A59B89",\r
+"b|    c #A59987",\r
+"c|    c #A19381",\r
+"d|    c #9C9B7A",\r
+"e|    c #999C87",\r
+"f|    c #9F9F90",\r
+"g|    c #9C9A88",\r
+"h|    c #9E9B7F",\r
+"i|    c #95917D",\r
+"j|    c #9D9385",\r
+"k|    c #A69986",\r
+"l|    c #A2A092",\r
+"m|    c #B4AC8D",\r
+"n|    c #B3A98C",\r
+"o|    c #B7A694",\r
+"p|    c #BCAB90",\r
+"q|    c #BAAB98",\r
+"r|    c #BFA38F",\r
+"s|    c #BEA389",\r
+"t|    c #BCAD90",\r
+"u|    c #B6AE96",\r
+"v|    c #BEAC97",\r
+"w|    c #C1A794",\r
+"x|    c #BDB293",\r
+"y|    c #BAAF96",\r
+"z|    c #BBA695",\r
+"A|    c #BBA58A",\r
+"B|    c #B69789",\r
+"C|    c #938C84",\r
+"D|    c #A6A08F",\r
+"E|    c #BBAC84",\r
+"F|    c #ADA292",\r
+"G|    c #B6A38F",\r
+"H|    c #A89D8B",\r
+"I|    c #B49D86",\r
+"J|    c #B2A288",\r
+"K|    c #B0A17F",\r
+"L|    c #B2A27E",\r
+"M|    c #B19D87",\r
+"N|    c #AC9C84",\r
+"O|    c #B19B8A",\r
+"P|    c #B19F8F",\r
+"Q|    c #ACA590",\r
+"R|    c #AFA193",\r
+"S|    c #AF9D87",\r
+"T|    c #A99984",\r
+"U|    c #ADA47F",\r
+"V|    c #A4978D",\r
+"W|    c #AFA386",\r
+"X|    c #9F9988",\r
+"Y|    c #B3A18B",\r
+"Z|    c #BDA68D",\r
+"`|    c #B79F8C",\r
+" 1    c #B7A28F",\r
+".1    c #B9A28B",\r
+"+1    c #B8AD91",\r
+"@1    c #B9A787",\r
+"#1    c #B1A58E",\r
+"$1    c #B3A794",\r
+"%1    c #B4A991",\r
+"&1    c #AD847A",\r
+"*1    c #582A30",\r
+"=1    c #2B2025",\r
+"-1    c #212428",\r
+";1    c #222626",\r
+">1    c #2C232C",\r
+",1    c #2C242C",\r
+"'1    c #282722",\r
+")1    c #2B2B2D",\r
+"!1    c #2C2B2B",\r
+"~1    c #242229",\r
+"{1    c #2B3135",\r
+"]1    c #302A27",\r
+"^1    c #3A3A3A",\r
+"/1    c #3B2A2E",\r
+"(1    c #2D3130",\r
+"_1    c #4D423A",\r
+":1    c #4E553E",\r
+"<1    c #7D665E",\r
+"[1    c #66302B",\r
+"}1    c #382D2D",\r
+"|1    c #222824",\r
+"11    c #29272A",\r
+"21    c #372B30",\r
+"31    c #262528",\r
+"41    c #2D282C",\r
+"51    c #292627",\r
+"61    c #26242C",\r
+"71    c #292D2F",\r
+"81    c #29272E",\r
+"91    c #2D242A",\r
+"01    c #35382F",\r
+"a1    c #758571",\r
+"b1    c #9E9E91",\r
+"c1    c #B3A191",\r
+"d1    c #ADA089",\r
+"e1    c #A6978E",\r
+"f1    c #A89F8F",\r
+"g1    c #AC9990",\r
+"h1    c #A49985",\r
+"i1    c #ADA889",\r
+"j1    c #A29984",\r
+"k1    c #AB9C89",\r
+"l1    c #A59A7E",\r
+"m1    c #9C9585",\r
+"n1    c #9F9388",\r
+"o1    c #A69588",\r
+"p1    c #9C9789",\r
+"q1    c #9A8B7A",\r
+"r1    c #8E8171",\r
+"s1    c #898C80",\r
+"t1    c #93947E",\r
+"u1    c #989684",\r
+"v1    c #989687",\r
+"w1    c #9B977E",\r
+"x1    c #A19D88",\r
+"y1    c #A79C87",\r
+"z1    c #92957D",\r
+"A1    c #999B82",\r
+"B1    c #A09A74",\r
+"C1    c #A19771",\r
+"D1    c #A19A85",\r
+"E1    c #A19E81",\r
+"F1    c #9A9789",\r
+"G1    c #A58F88",\r
+"H1    c #AB846E",\r
+"I1    c #9E855E",\r
+"J1    c #AF8C5E",\r
+"K1    c #B3825C",\r
+"L1    c #B4854E",\r
+"M1    c #AE914A",\r
+"N1    c #BBAB7B",\r
+"O1    c #D3B08C",\r
+"P1    c #D3AF78",\r
+"Q1    c #CD9E70",\r
+"R1    c #D19F66",\r
+"S1    c #D0AD7B",\r
+"T1    c #D8B68A",\r
+"U1    c #DABA89",\r
+"V1    c #D19D81",\r
+"W1    c #AE5455",\r
+"X1    c #4D352E",\r
+"Y1    c #49574E",\r
+"Z1    c #A09484",\r
+"`1    c #A49284",\r
+" 2    c #A09281",\r
+".2    c #A99582",\r
+"+2    c #A79A87",\r
+"@2    c #A89D89",\r
+"#2    c #A19285",\r
+"$2    c #A59283",\r
+"%2    c #9F9A85",\r
+"&2    c #AD9B8D",\r
+"*2    c #AD9782",\r
+"=2    c #ACA181",\r
+"-2    c #B2A587",\r
+";2    c #B3A185",\r
+">2    c #AD9C88",\r
+",2    c #AEA18A",\r
+"'2    c #AEA188",\r
+")2    c #A8A28C",\r
+"!2    c #A89E8B",\r
+"~2    c #ABA38E",\r
+"{2    c #A5998A",\r
+"]2    c #A49278",\r
+"^2    c #A49173",\r
+"/2    c #8F937B",\r
+"(2    c #989B90",\r
+"_2    c #A8A293",\r
+":2    c #A09A8A",\r
+"<2    c #9E9584",\r
+"[2    c #A39B82",\r
+"}2    c #9E9185",\r
+"|2    c #A1A08D",\r
+"12    c #ACAD8E",\r
+"22    c #B2A993",\r
+"32    c #B8AE97",\r
+"42    c #BAAE93",\r
+"52    c #C0AB8A",\r
+"62    c #BEAA97",\r
+"72    c #C1B29A",\r
+"82    c #C1B29E",\r
+"92    c #BDAF97",\r
+"02    c #BEB69E",\r
+"a2    c #C1AC94",\r
+"b2    c #C0A68D",\r
+"c2    c #B9A68D",\r
+"d2    c #939589",\r
+"e2    c #AC9F90",\r
+"f2    c #B8A292",\r
+"g2    c #B2A48C",\r
+"h2    c #B1A295",\r
+"i2    c #B2A489",\r
+"j2    c #B29F83",\r
+"k2    c #B5A38F",\r
+"l2    c #B3A78A",\r
+"m2    c #B09D8E",\r
+"n2    c #B4A784",\r
+"o2    c #B09980",\r
+"p2    c #AD9C7D",\r
+"q2    c #AC9787",\r
+"r2    c #AF9E86",\r
+"s2    c #A99C83",\r
+"t2    c #A89383",\r
+"u2    c #A59785",\r
+"v2    c #A8A182",\r
+"w2    c #A69D8B",\r
+"x2    c #AC9980",\r
+"y2    c #A59686",\r
+"z2    c #ADA38D",\r
+"A2    c #BBA291",\r
+"B2    c #BDAD8D",\r
+"C2    c #B9A397",\r
+"D2    c #B9A684",\r
+"E2    c #B7A48B",\r
+"F2    c #B4A485",\r
+"G2    c #B8A991",\r
+"H2    c #B6A492",\r
+"I2    c #B1A191",\r
+"J2    c #B0A491",\r
+"K2    c #B4A690",\r
+"L2    c #A46E68",\r
+"M2    c #492527",\r
+"N2    c #282325",\r
+"O2    c #252926",\r
+"P2    c #282E2C",\r
+"Q2    c #212429",\r
+"R2    c #282226",\r
+"S2    c #2E2623",\r
+"T2    c #29272C",\r
+"U2    c #2B272B",\r
+"V2    c #252225",\r
+"W2    c #374236",\r
+"X2    c #483F31",\r
+"Y2    c #3D362E",\r
+"Z2    c #3F402E",\r
+"`2    c #4E3539",\r
+" 3    c #2B2524",\r
+".3    c #364433",\r
+"+3    c #747053",\r
+"@3    c #817B4E",\r
+"#3    c #857055",\r
+"$3    c #472A27",\r
+"%3    c #2A1E2A",\r
+"&3    c #26261C",\r
+"*3    c #242925",\r
+"=3    c #2F2A29",\r
+"-3    c #242826",\r
+";3    c #262628",\r
+">3    c #2A232A",\r
+",3    c #2E2827",\r
+"'3    c #222127",\r
+")3    c #292B28",\r
+"!3    c #27252A",\r
+"~3    c #2E2129",\r
+"{3    c #2D2C2D",\r
+"]3    c #4D5850",\r
+"^3    c #95967B",\r
+"/3    c #B0A482",\r
+"(3    c #A39C76",\r
+"_3    c #9D9885",\r
+":3    c #9E9A8B",\r
+"<3    c #A19A91",\r
+"[3    c #A79C8F",\r
+"}3    c #A7A394",\r
+"|3    c #AFA58A",\r
+"13    c #AFA088",\r
+"23    c #AFA58C",\r
+"33    c #AAA389",\r
+"43    c #AB9D89",\r
+"53    c #AB9F8A",\r
+"63    c #A99C87",\r
+"73    c #A3937F",\r
+"83    c #9F9D85",\r
+"93    c #A5A083",\r
+"03    c #A69B85",\r
+"a3    c #A49A82",\r
+"b3    c #A89C7A",\r
+"c3    c #ABA28C",\r
+"d3    c #A49D81",\r
+"e3    c #969481",\r
+"f3    c #A89B7D",\r
+"g3    c #AA9272",\r
+"h3    c #A89A78",\r
+"i3    c #9F947A",\r
+"j3    c #B08C7A",\r
+"k3    c #A27D58",\r
+"l3    c #A68C60",\r
+"m3    c #BB925F",\r
+"n3    c #B78E5D",\r
+"o3    c #BA7D50",\r
+"p3    c #996345",\r
+"q3    c #97926D",\r
+"r3    c #D0B596",\r
+"s3    c #D3AD84",\r
+"t3    c #D1A27A",\r
+"u3    c #C99969",\r
+"v3    c #CA9C77",\r
+"w3    c #D8B283",\r
+"x3    c #D9B381",\r
+"y3    c #C7856E",\r
+"z3    c #82423F",\r
+"A3    c #434535",\r
+"B3    c #697B6D",\r
+"C3    c #A89783",\r
+"D3    c #A69382",\r
+"E3    c #A59781",\r
+"F3    c #AB9B7A",\r
+"G3    c #A59683",\r
+"H3    c #A59B86",\r
+"I3    c #AAA58A",\r
+"J3    c #A39A8B",\r
+"K3    c #A89685",\r
+"L3    c #A79E8D",\r
+"M3    c #A69D92",\r
+"N3    c #AD978A",\r
+"O3    c #AE9C8B",\r
+"P3    c #AC9D81",\r
+"Q3    c #A89586",\r
+"R3    c #A89683",\r
+"S3    c #A7A18A",\r
+"T3    c #AAA288",\r
+"U3    c #A69E8D",\r
+"V3    c #A49686",\r
+"W3    c #A59178",\r
+"X3    c #9E866C",\r
+"Y3    c #878F77",\r
+"Z3    c #9C9C89",\r
+"`3    c #A29988",\r
+" 4    c #A29C87",\r
+".4    c #A69F85",\r
+"+4    c #9E988D",\r
+"@4    c #A4A092",\r
+"#4    c #AAA190",\r
+"$4    c #B6A391",\r
+"%4    c #B7AD9B",\r
+"&4    c #B5A691",\r
+"*4    c #BDAC96",\r
+"=4    c #BEAC9B",\r
+"-4    c #BCAB92",\r
+";4    c #BFA992",\r
+">4    c #BCAD91",\r
+",4    c #C0B6A1",\r
+"'4    c #BFB39B",\r
+")4    c #BAAC9B",\r
+"!4    c #BAB4A2",\r
+"~4    c #BEB49D",\r
+"{4    c #BFB29C",\r
+"]4    c #BBB191",\r
+"^4    c #AF9C81",\r
+"/4    c #969689",\r
+"(4    c #AFA68E",\r
+"_4    c #B7A589",\r
+":4    c #B9AA96",\r
+"<4    c #B2A18C",\r
+"[4    c #B2998A",\r
+"}4    c #B1A389",\r
+"|4    c #AA9481",\r
+"14    c #AFA281",\r
+"24    c #AA9D90",\r
+"34    c #ACA184",\r
+"44    c #AC9A87",\r
+"54    c #A79A85",\r
+"64    c #A49A83",\r
+"74    c #AA9C87",\r
+"84    c #A79B7E",\r
+"94    c #A29786",\r
+"04    c #A79E8A",\r
+"a4    c #A9978C",\r
+"b4    c #A79082",\r
+"c4    c #969A89",\r
+"d4    c #B4A18B",\r
+"e4    c #BDA587",\r
+"f4    c #BBA786",\r
+"g4    c #B8A48E",\r
+"h4    c #BEA78A",\r
+"i4    c #B3A289",\r
+"j4    c #B2998D",\r
+"k4    c #A89E86",\r
+"l4    c #A99C8E",\r
+"m4    c #A79B83",\r
+"n4    c #A9867F",\r
+"o4    c #713E42",\r
+"p4    c #31241F",\r
+"q4    c #2A2120",\r
+"r4    c #23242C",\r
+"s4    c #27252E",\r
+"t4    c #232428",\r
+"u4    c #292721",\r
+"v4    c #2D2024",\r
+"w4    c #282327",\r
+"x4    c #2F262B",\r
+"y4    c #2F352E",\r
+"z4    c #5D5F43",\r
+"A4    c #694F3F",\r
+"B4    c #423129",\r
+"C4    c #3F3C30",\r
+"D4    c #704E54",\r
+"E4    c #402E27",\r
+"F4    c #4F4D40",\r
+"G4    c #6F6E5B",\r
+"H4    c #896F58",\r
+"I4    c #694841",\r
+"J4    c #3B2624",\r
+"K4    c #33292B",\r
+"L4    c #2E3030",\r
+"M4    c #2A2927",\r
+"N4    c #35262C",\r
+"O4    c #272328",\r
+"P4    c #252727",\r
+"Q4    c #292923",\r
+"R4    c #2A2727",\r
+"S4    c #232126",\r
+"T4    c #2E272D",\r
+"U4    c #27272F",\r
+"V4    c #29232A",\r
+"W4    c #2D272E",\r
+"X4    c #353B35",\r
+"Y4    c #707866",\r
+"Z4    c #B7AD95",\r
+"`4    c #B8A990",\r
+" 5    c #B2A590",\r
+".5    c #B2A894",\r
+"+5    c #B6A28A",\r
+"@5    c #B4A88B",\r
+"#5    c #B7A685",\r
+"$5    c #B6A08C",\r
+"%5    c #B19685",\r
+"&5    c #B2A385",\r
+"*5    c #AD9E86",\r
+"=5    c #B0A383",\r
+"-5    c #AA9D80",\r
+";5    c #A99C86",\r
+">5    c #A29A8E",\r
+",5    c #B5A285",\r
+"'5    c #B2A082",\r
+")5    c #ADA38A",\r
+"!5    c #B1A175",\r
+"~5    c #9A8F7F",\r
+"{5    c #A0A089",\r
+"]5    c #A29679",\r
+"^5    c #A4907C",\r
+"/5    c #A5998B",\r
+"(5    c #9E7A73",\r
+"_5    c #95754B",\r
+":5    c #AE9569",\r
+"<5    c #BD9B6A",\r
+"[5    c #C29478",\r
+"}5    c #B06A5E",\r
+"|5    c #75523C",\r
+"15    c #999C75",\r
+"25    c #CFBB97",\r
+"35    c #D0B190",\r
+"45    c #CFAD86",\r
+"55    c #D0A971",\r
+"65    c #CFA779",\r
+"75    c #D0AA87",\r
+"85    c #CCA382",\r
+"95    c #A85553",\r
+"05    c #57302D",\r
+"a5    c #55624C",\r
+"b5    c #8E9383",\r
+"c5    c #A69682",\r
+"d5    c #A98E7E",\r
+"e5    c #A4947B",\r
+"f5    c #A4967D",\r
+"g5    c #A99C85",\r
+"h5    c #A39D8D",\r
+"i5    c #A79987",\r
+"j5    c #A79A89",\r
+"k5    c #AA9B86",\r
+"l5    c #AB9A80",\r
+"m5    c #A99384",\r
+"n5    c #AC987D",\r
+"o5    c #A89880",\r
+"p5    c #A99F8B",\r
+"q5    c #A5988C",\r
+"r5    c #B19E86",\r
+"s5    c #ADA084",\r
+"t5    c #A99784",\r
+"u5    c #AD977D",\r
+"v5    c #A08D7A",\r
+"w5    c #968973",\r
+"x5    c #858B7D",\r
+"y5    c #998F80",\r
+"z5    c #A1967C",\r
+"A5    c #A09678",\r
+"B5    c #A69C84",\r
+"C5    c #A59B84",\r
+"D5    c #AB9F8F",\r
+"E5    c #AA9A8E",\r
+"F5    c #A8A491",\r
+"G5    c #B6AB90",\r
+"H5    c #B6A78E",\r
+"I5    c #B6A794",\r
+"J5    c #BFB397",\r
+"K5    c #C2B09A",\r
+"L5    c #BEAB91",\r
+"M5    c #BBA68C",\r
+"N5    c #BFB598",\r
+"O5    c #BAB099",\r
+"P5    c #B5AA9F",\r
+"Q5    c #BFAF96",\r
+"R5    c #B6A67E",\r
+"S5    c #808B80",\r
+"T5    c #ADA687",\r
+"U5    c #BBA789",\r
+"V5    c #B1AA94",\r
+"W5    c #B3AB90",\r
+"X5    c #AFA08C",\r
+"Y5    c #B4A08D",\r
+"Z5    c #B09C82",\r
+"`5    c #AC9B7C",\r
+" 6    c #AC997C",\r
+".6    c #A89C83",\r
+"+6    c #AC9A88",\r
+"@6    c #A99680",\r
+"#6    c #A59482",\r
+"$6    c #A5957E",\r
+"%6    c #A69383",\r
+"&6    c #A09282",\r
+"*6    c #A09074",\r
+"=6    c #A49172",\r
+"-6    c #98927D",\r
+";6    c #9E9B81",\r
+">6    c #A49786",\r
+",6    c #938E7E",\r
+"'6    c #8F8F89",\r
+")6    c #AEA38E",\r
+"!6    c #A49D8C",\r
+"~6    c #AAA58E",\r
+"{6    c #A5A386",\r
+"]6    c #AE9D8B",\r
+"^6    c #A49E8A",\r
+"/6    c #A29987",\r
+"(6    c #A18D82",\r
+"_6    c #978B7A",\r
+":6    c #91897B",\r
+"<6    c #919482",\r
+"[6    c #99987D",\r
+"}6    c #A0857C",\r
+"|6    c #5E3535",\r
+"16    c #2A1E1E",\r
+"26    c #2E2028",\r
+"36    c #262926",\r
+"46    c #282126",\r
+"56    c #232429",\r
+"66    c #262828",\r
+"76    c #272024",\r
+"86    c #262329",\r
+"96    c #312E27",\r
+"06    c #565E4B",\r
+"a6    c #A69466",\r
+"b6    c #AB8463",\r
+"c6    c #765142",\r
+"d6    c #4F4D43",\r
+"e6    c #806F65",\r
+"f6    c #726441",\r
+"g6    c #786254",\r
+"h6    c #635549",\r
+"i6    c #6F4E49",\r
+"j6    c #4D2D30",\r
+"k6    c #2A272A",\r
+"l6    c #31333A",\r
+"m6    c #39403C",\r
+"n6    c #322F28",\r
+"o6    c #2A2C29",\r
+"p6    c #232326",\r
+"q6    c #202427",\r
+"r6    c #242625",\r
+"s6    c #2B282B",\r
+"t6    c #2B262A",\r
+"u6    c #2E2E34",\r
+"v6    c #262F34",\r
+"w6    c #313130",\r
+"x6    c #322D30",\r
+"y6    c #2C2E29",\r
+"z6    c #51564F",\r
+"A6    c #B7AE8E",\r
+"B6    c #B4A48C",\r
+"C6    c #B7A291",\r
+"D6    c #B5A88F",\r
+"E6    c #B4A88E",\r
+"F6    c #B8A390",\r
+"G6    c #B1A485",\r
+"H6    c #B9A082",\r
+"I6    c #B49D8A",\r
+"J6    c #B8AA8B",\r
+"K6    c #B49E8F",\r
+"L6    c #A9A089",\r
+"M6    c #AEA485",\r
+"N6    c #ADA088",\r
+"O6    c #AB9E83",\r
+"P6    c #B1A381",\r
+"Q6    c #B0A789",\r
+"R6    c #ADA688",\r
+"S6    c #ACA28D",\r
+"T6    c #B0A18B",\r
+"U6    c #B0A17C",\r
+"V6    c #9F9A81",\r
+"W6    c #A7A183",\r
+"X6    c #AF9E82",\r
+"Y6    c #B0A186",\r
+"Z6    c #A89278",\r
+"`6    c #A69888",\r
+" 7    c #A47973",\r
+".7    c #90765D",\r
+"+7    c #AC906F",\r
+"@7    c #BEA675",\r
+"#7    c #C4A081",\r
+"$7    c #9C4E46",\r
+"%7    c #594738",\r
+"&7    c #A3A584",\r
+"*7    c #D2BA92",\r
+"=7    c #D6B192",\r
+"-7    c #CFAF86",\r
+";7    c #D2AC7D",\r
+">7    c #D6B489",\r
+",7    c #D5AD86",\r
+"'7    c #C2846E",\r
+")7    c #6A3A40",\r
+"!7    c #423A2F",\r
+"~7    c #778475",\r
+"{7    c #8F938A",\r
+"]7    c #A1987F",\r
+"^7    c #A9977C",\r
+"/7    c #A08F7C",\r
+"(7    c #A29379",\r
+"_7    c #AC9D7A",\r
+":7    c #A6937D",\r
+"<7    c #A49988",\r
+"[7    c #A79B89",\r
+"}7    c #AB9C88",\r
+"|7    c #A29689",\r
+"17    c #AC9C80",\r
+"27    c #A9977D",\r
+"37    c #A5957F",\r
+"47    c #AC9B75",\r
+"57    c #A19883",\r
+"67    c #B09C8D",\r
+"77    c #ABA088",\r
+"87    c #ABA188",\r
+"97    c #A69A88",\r
+"07    c #A09A7C",\r
+"a7    c #9F8C77",\r
+"b7    c #9C8F6A",\r
+"c7    c #828B79",\r
+"d7    c #A0917F",\r
+"e7    c #A99983",\r
+"f7    c #9F987E",\r
+"g7    c #A4978B",\r
+"h7    c #AA9A89",\r
+"i7    c #A4A18E",\r
+"j7    c #A6A088",\r
+"k7    c #ABA288",\r
+"l7    c #B49F91",\r
+"m7    c #B3A995",\r
+"n7    c #C5AA91",\r
+"o7    c #C3B09A",\r
+"p7    c #BDAF93",\r
+"q7    c #C1AA93",\r
+"r7    c #C0B098",\r
+"s7    c #B6A48A",\r
+"t7    c #A18975",\r
+"u7    c #787D6D",\r
+"v7    c #AA9C7E",\r
+"w7    c #ABA092",\r
+"x7    c #AE9E87",\r
+"y7    c #AE9E8B",\r
+"z7    c #AB9C7F",\r
+"A7    c #A79F7F",\r
+"B7    c #A59681",\r
+"C7    c #A19785",\r
+"D7    c #A29A89",\r
+"E7    c #A09583",\r
+"F7    c #9E978A",\r
+"G7    c #959281",\r
+"H7    c #939279",\r
+"I7    c #9D987B",\r
+"J7    c #9D987A",\r
+"K7    c #9E947F",\r
+"L7    c #99977F",\r
+"M7    c #918E75",\r
+"N7    c #878376",\r
+"O7    c #968A73",\r
+"P7    c #8E816F",\r
+"Q7    c #948873",\r
+"R7    c #8F856C",\r
+"S7    c #818E86",\r
+"T7    c #A0988C",\r
+"U7    c #A1998C",\r
+"V7    c #A09C90",\r
+"W7    c #AAA197",\r
+"X7    c #ADA390",\r
+"Y7    c #AFA793",\r
+"Z7    c #B3A88F",\r
+"`7    c #B7A88C",\r
+" 8    c #B7AD87",\r
+".8    c #B59887",\r
+"+8    c #6E343D",\r
+"@8    c #2B2722",\r
+"#8    c #2D2726",\r
+"$8    c #242329",\r
+"%8    c #2E2529",\r
+"&8    c #262532",\r
+"*8    c #24282E",\r
+"=8    c #292629",\r
+"-8    c #2B2A28",\r
+";8    c #414B36",\r
+">8    c #938264",\r
+",8    c #C49F69",\r
+"'8    c #CA9266",\r
+")8    c #AF834E",\r
+"!8    c #897E56",\r
+"~8    c #A5A587",\r
+"{8    c #B9AC8E",\r
+"]8    c #AA8C76",\r
+"^8    c #6E5A51",\r
+"/8    c #5B3A3A",\r
+"(8    c #362527",\r
+"_8    c #27292C",\r
+":8    c #2C2D31",\r
+"<8    c #333334",\r
+"[8    c #322D31",\r
+"}8    c #262729",\r
+"|8    c #25252C",\r
+"18    c #211D25",\r
+"28    c #232927",\r
+"38    c #29302B",\r
+"48    c #272A29",\r
+"58    c #2B2C2E",\r
+"68    c #252B39",\r
+"78    c #25282F",\r
+"88    c #26262C",\r
+"98    c #282B2A",\r
+"08    c #4D5650",\r
+"a8    c #B9A889",\r
+"b8    c #B7A880",\r
+"c8    c #B5A28E",\r
+"d8    c #B5A58B",\r
+"e8    c #B19F87",\r
+"f8    c #B3A286",\r
+"g8    c #B5A785",\r
+"h8    c #B19C84",\r
+"i8    c #B39B81",\r
+"j8    c #B4A37F",\r
+"k8    c #AFA487",\r
+"l8    c #B3A084",\r
+"m8    c #AAA492",\r
+"n8    c #B09D8F",\r
+"o8    c #B2A886",\r
+"p8    c #ABA58C",\r
+"q8    c #ABA08A",\r
+"r8    c #A39E80",\r
+"s8    c #929387",\r
+"t8    c #A29680",\r
+"u8    c #AE9681",\r
+"v8    c #A99C7B",\r
+"w8    c #A5967D",\r
+"x8    c #A49879",\r
+"y8    c #A78771",\r
+"z8    c #917C60",\r
+"A8    c #A2906E",\r
+"B8    c #C1A584",\r
+"C8    c #C49E82",\r
+"D8    c #A4513D",\r
+"E8    c #5A4B34",\r
+"F8    c #A09E77",\r
+"G8    c #D3B889",\r
+"H8    c #D8AE89",\r
+"I8    c #D2A586",\r
+"J8    c #D0AF8B",\r
+"K8    c #D4B490",\r
+"L8    c #D09D7C",\r
+"M8    c #995953",\r
+"N8    c #42312D",\r
+"O8    c #535B48",\r
+"P8    c #97968B",\r
+"Q8    c #959282",\r
+"R8    c #A49C77",\r
+"S8    c #A69580",\r
+"T8    c #A7987E",\r
+"U8    c #AC9982",\r
+"V8    c #A59B7D",\r
+"W8    c #9B937E",\r
+"X8    c #A7957E",\r
+"Y8    c #A89A83",\r
+"Z8    c #A59882",\r
+"`8    c #AA9B88",\r
+" 9    c #A29681",\r
+".9    c #A7997F",\r
+"+9    c #A7947A",\r
+"@9    c #A19685",\r
+"#9    c #AA9B83",\r
+"$9    c #AB9E86",\r
+"%9    c #AF9D7E",\r
+"&9    c #AD9D84",\r
+"*9    c #9C9582",\r
+"=9    c #A4967B",\r
+"-9    c #9F8F7C",\r
+";9    c #908264",\r
+">9    c #8B8977",\r
+",9    c #A6997E",\r
+"'9    c #A19773",\r
+")9    c #A59477",\r
+"!9    c #A29D7F",\r
+"~9    c #A39C81",\r
+"{9    c #A89D87",\r
+"]9    c #A99A87",\r
+"^9    c #B7A38E",\r
+"/9    c #B3A597",\r
+"(9    c #BAA790",\r
+"_9    c #BEAB92",\r
+":9    c #BCAE87",\r
+"<9    c #B9A78D",\r
+"[9    c #B6A18B",\r
+"}9    c #AAA096",\r
+"|9    c #A59C90",\r
+"19    c #A39B8D",\r
+"29    c #A6A191",\r
+"39    c #A69C85",\r
+"49    c #828E7E",\r
+"59    c #A4A382",\r
+"69    c #A49E8B",\r
+"79    c #A59E8B",\r
+"89    c #A69C89",\r
+"99    c #A49B89",\r
+"09    c #A49C84",\r
+"a9    c #A19E7C",\r
+"b9    c #A79E7C",\r
+"c9    c #A39682",\r
+"d9    c #A09285",\r
+"e9    c #A39982",\r
+"f9    c #A1988A",\r
+"g9    c #9A9688",\r
+"h9    c #A29D86",\r
+"i9    c #A69984",\r
+"j9    c #A09D83",\r
+"k9    c #AC9A82",\r
+"l9    c #A99F83",\r
+"m9    c #A89C86",\r
+"n9    c #B1967B",\r
+"o9    c #AE9B79",\r
+"p9    c #AC937B",\r
+"q9    c #A18A6F",\r
+"r9    c #939881",\r
+"s9    c #A89E7E",\r
+"t9    c #B39E7F",\r
+"u9    c #B09C87",\r
+"v9    c #B3A088",\r
+"w9    c #B2A086",\r
+"x9    c #AE998A",\r
+"y9    c #B39C8A",\r
+"z9    c #B39E85",\r
+"A9    c #B6A284",\r
+"B9    c #B2AC8B",\r
+"C9    c #B29880",\r
+"D9    c #743937",\r
+"E9    c #2A2528",\r
+"F9    c #272826",\r
+"G9    c #2E2528",\r
+"H9    c #27272B",\r
+"I9    c #302528",\r
+"J9    c #2A2527",\r
+"K9    c #606948",\r
+"L9    c #B0966A",\r
+"M9    c #C9A26C",\r
+"N9    c #C9A473",\r
+"O9    c #C7A760",\r
+"P9    c #BA9F6D",\r
+"Q9    c #C5BD95",\r
+"R9    c #D1C197",\r
+"S9    c #BC9D83",\r
+"T9    c #8B665F",\r
+"U9    c #5A463C",\r
+"V9    c #2F2621",\r
+"W9    c #272426",\r
+"X9    c #27232A",\r
+"Y9    c #282628",\r
+"Z9    c #2D202C",\r
+"`9    c #2B2728",\r
+" 0    c #282930",\r
+".0    c #222027",\r
+"+0    c #252624",\r
+"@0    c #2A2A2A",\r
+"#0    c #2A2B34",\r
+"$0    c #2E2832",\r
+"%0    c #2A2C2B",\r
+"&0    c #2B2B27",\r
+"*0    c #2C362F",\r
+"=0    c #5F7468",\r
+"-0    c #BBA487",\r
+";0    c #B3A38D",\r
+">0    c #AFA38D",\r
+",0    c #BAA48D",\r
+"'0    c #B6A08D",\r
+")0    c #AE9C7D",\r
+"!0    c #B19D82",\r
+"~0    c #B8A187",\r
+"{0    c #AFA387",\r
+"]0    c #B29B8D",\r
+"^0    c #B79E82",\r
+"/0    c #AD9A83",\r
+"(0    c #AC9D86",\r
+"_0    c #B4A981",\r
+":0    c #A6A085",\r
+"<0    c #AC9D89",\r
+"[0    c #B0A887",\r
+"}0    c #A79D8E",\r
+"|0    c #A89F8B",\r
+"10    c #AEA58E",\r
+"20    c #AAA391",\r
+"30    c #AB9983",\r
+"40    c #A9907A",\r
+"50    c #908F79",\r
+"60    c #9D9273",\r
+"70    c #AC937E",\r
+"80    c #AC9581",\r
+"90    c #A39881",\r
+"00    c #A89482",\r
+"a0    c #A8997F",\r
+"b0    c #9D7C74",\r
+"c0    c #715B52",\r
+"d0    c #927E55",\r
+"e0    c #B89873",\r
+"f0    c #BC8F67",\r
+"g0    c #965931",\r
+"h0    c #5F4D34",\r
+"i0    c #A78666",\r
+"j0    c #CFAD85",\r
+"k0    c #D1AC82",\r
+"l0    c #CCAA7C",\r
+"m0    c #D4AC85",\r
+"n0    c #D5AB7F",\r
+"o0    c #C2735D",\r
+"p0    c #70373B",\r
+"q0    c #403F2B",\r
+"r0    c #6C7861",\r
+"s0    c #A99A8B",\r
+"t0    c #9E877B",\r
+"u0    c #9F9472",\r
+"v0    c #A49775",\r
+"w0    c #A7997D",\r
+"x0    c #B29C86",\r
+"y0    c #A5987B",\r
+"z0    c #A2967D",\r
+"A0    c #A49381",\r
+"B0    c #A69486",\r
+"C0    c #A99B84",\r
+"D0    c #AC9C82",\r
+"E0    c #A39279",\r
+"F0    c #A49882",\r
+"G0    c #A3967B",\r
+"H0    c #9E917A",\r
+"I0    c #A48B7A",\r
+"J0    c #A8937D",\r
+"K0    c #9E9B8A",\r
+"L0    c #A49C89",\r
+"M0    c #AC937D",\r
+"N0    c #A8A082",\r
+"O0    c #A89D7C",\r
+"P0    c #A5917E",\r
+"Q0    c #A28E73",\r
+"R0    c #887F69",\r
+"S0    c #8B897E",\r
+"T0    c #A08F7E",\r
+"U0    c #9D9572",\r
+"V0    c #A2977E",\r
+"W0    c #9D937D",\r
+"X0    c #97907D",\r
+"Y0    c #A99F87",\r
+"Z0    c #A7997A",\r
+"`0    c #A59284",\r
+" a    c #999288",\r
+".a    c #A2957A",\r
+"+a    c #9F8F7D",\r
+"@a    c #9B9B8F",\r
+"#a    c #A3A085",\r
+"$a    c #A5988D",\r
+"%a    c #A89587",\r
+"&a    c #A7987F",\r
+"*a    c #A49684",\r
+"=a    c #AFA081",\r
+"-a    c #A69374",\r
+";a    c #94866A",\r
+">a    c #908868",\r
+",a    c #A18D7C",\r
+"'a    c #9F9281",\r
+")a    c #A79675",\r
+"!a    c #958D8E",\r
+"~a    c #959587",\r
+"{a    c #AA9C84",\r
+"]a    c #A49D80",\r
+"^a    c #A8917A",\r
+"/a    c #AB997B",\r
+"(a    c #A79C80",\r
+"_a    c #9F988D",\r
+":a    c #AEA38D",\r
+"<a    c #AFA490",\r
+"[a    c #B1987C",\r
+"}a    c #AEA27E",\r
+"|a    c #ABA280",\r
+"1a    c #B4A378",\r
+"2a    c #B09478",\r
+"3a    c #A5997B",\r
+"4a    c #AD9F84",\r
+"5a    c #AC978A",\r
+"6a    c #A69583",\r
+"7a    c #AD9E80",\r
+"8a    c #AE997E",\r
+"9a    c #AC9072",\r
+"0a    c #AE9371",\r
+"aa    c #B18C75",\r
+"ba    c #AA9276",\r
+"ca    c #928C84",\r
+"da    c #AFA382",\r
+"ea    c #B29F85",\r
+"fa    c #B49C81",\r
+"ga    c #B4A687",\r
+"ha    c #B4A585",\r
+"ia    c #B5A180",\r
+"ja    c #ADA08D",\r
+"ka    c #B09884",\r
+"la    c #B09882",\r
+"ma    c #AEA186",\r
+"na    c #B8A585",\r
+"oa    c #926552",\r
+"pa    c #4E2E26",\r
+"qa    c #262324",\r
+"ra    c #2E2824",\r
+"sa    c #2B2926",\r
+"ta    c #2B282A",\r
+"ua    c #2D2728",\r
+"va    c #392127",\r
+"wa    c #2E2821",\r
+"xa    c #373D2B",\r
+"ya    c #7F8354",\r
+"za    c #C4A765",\r
+"Aa    c #C5A46F",\r
+"Ba    c #CCAF7E",\r
+"Ca    c #D4B282",\r
+"Da    c #D9BA8F",\r
+"Ea    c #D5C29E",\r
+"Fa    c #D9CAA0",\r
+"Ga    c #CFBC9E",\r
+"Ha    c #B98676",\r
+"Ia    c #6E5238",\r
+"Ja    c #493B27",\r
+"Ka    c #4A4028",\r
+"La    c #484533",\r
+"Ma    c #49392A",\r
+"Na    c #4C3223",\r
+"Oa    c #3E2F2A",\r
+"Pa    c #2D272C",\r
+"Qa    c #252025",\r
+"Ra    c #282426",\r
+"Sa    c #2B2829",\r
+"Ta    c #2B2A29",\r
+"Ua    c #2A2930",\r
+"Va    c #27292F",\r
+"Wa    c #2D292B",\r
+"Xa    c #26202B",\r
+"Ya    c #29332C",\r
+"Za    c #5D7269",\r
+"`a    c #BAA581",\r
+" b    c #B99E7C",\r
+".b    c #AC9B86",\r
+"+b    c #BAA87F",\r
+"@b    c #B39884",\r
+"#b    c #B0A286",\r
+"$b    c #B7A483",\r
+"%b    c #B8A68C",\r
+"&b    c #B59D82",\r
+"*b    c #AF9F82",\r
+"=b    c #AB9979",\r
+"-b    c #AE9984",\r
+";b    c #AF9F87",\r
+">b    c #A39B83",\r
+",b    c #A69589",\r
+"'b    c #A99E82",\r
+")b    c #A9A484",\r
+"!b    c #AB9F8C",\r
+"~b    c #ABA087",\r
+"{b    c #A49789",\r
+"]b    c #A89D88",\r
+"^b    c #AF9E77",\r
+"/b    c #A79A79",\r
+"(b    c #9D8E79",\r
+"_b    c #A69570",\r
+":b    c #AC9B6E",\r
+"<b    c #AA967A",\r
+"[b    c #A67E6F",\r
+"}b    c #633A36",\r
+"|b    c #6F6549",\r
+"1b    c #AA8765",\r
+"2b    c #9C6D47",\r
+"3b    c #A58B52",\r
+"4b    c #A98E58",\r
+"5b    c #AA7252",\r
+"6b    c #B39A77",\r
+"7b    c #D0A883",\r
+"8b    c #CFAC80",\r
+"9b    c #D7AA80",\r
+"0b    c #CC956E",\r
+"ab    c #934E49",\r
+"bb    c #462F2F",\r
+"cb    c #535D45",\r
+"db    c #949273",\r
+"eb    c #B2987D",\r
+"fb    c #9A8F72",\r
+"gb    c #9D8571",\r
+"hb    c #A79278",\r
+"ib    c #A8967B",\r
+"jb    c #A5937E",\r
+"kb    c #A99276",\r
+"lb    c #A49677",\r
+"mb    c #9E9479",\r
+"nb    c #AB907C",\r
+"ob    c #AD9A81",\r
+"pb    c #A3967A",\r
+"qb    c #A79289",\r
+"rb    c #9E9681",\r
+"sb    c #A5947E",\r
+"tb    c #9E8F79",\r
+"ub    c #968D77",\r
+"vb    c #A49881",\r
+"wb    c #A79A7D",\r
+"xb    c #A69483",\r
+"yb    c #A8967C",\r
+"zb    c #A59982",\r
+"Ab    c #A7896E",\r
+"Bb    c #938567",\r
+"Cb    c #808881",\r
+"Db    c #A1917B",\r
+"Eb    c #A48A73",\r
+"Fb    c #9F9580",\r
+"Gb    c #989383",\r
+"Hb    c #A19189",\r
+"Ib    c #9D9284",\r
+"Jb    c #A59581",\r
+"Kb    c #A6947E",\r
+"Lb    c #AC927A",\r
+"Mb    c #A49687",\r
+"Nb    c #A5967B",\r
+"Ob    c #AC967B",\r
+"Pb    c #A19075",\r
+"Qb    c #A29476",\r
+"Rb    c #A69D7F",\r
+"Sb    c #A6997C",\r
+"Tb    c #9D8372",\r
+"Ub    c #877557",\r
+"Vb    c #817E62",\r
+"Wb    c #9F8274",\r
+"Xb    c #A29378",\r
+"Yb    c #AC9D7D",\r
+"Zb    c #AB937C",\r
+"`b    c #9F9A80",\r
+" c    c #979683",\r
+".c    c #A99D85",\r
+"+c    c #AAA186",\r
+"@c    c #AC9588",\r
+"#c    c #A99B7F",\r
+"$c    c #A6997D",\r
+"%c    c #A79C89",\r
+"&c    c #A39A84",\r
+"*c    c #A59988",\r
+"=c    c #AB9E8B",\r
+"-c    c #AC9D84",\r
+";c    c #B09D87",\r
+">c    c #AFA07C",\r
+",c    c #AD917A",\r
+"'c    c #AC9A79",\r
+")c    c #B1A281",\r
+"!c    c #AE9D80",\r
+"~c    c #AE9977",\r
+"{c    c #A99A80",\r
+"]c    c #AF9773",\r
+"^c    c #AD9374",\r
+"/c    c #B39A76",\r
+"(c    c #A79573",\r
+"_c    c #858676",\r
+":c    c #B0997F",\r
+"<c    c #B59D7F",\r
+"[c    c #AB9C8A",\r
+"}c    c #B59A84",\r
+"|c    c #B7A182",\r
+"1c    c #B39E86",\r
+"2c    c #B59582",\r
+"3c    c #A99874",\r
+"4c    c #AB9F7D",\r
+"5c    c #B6A181",\r
+"6c    c #B5A68C",\r
+"7c    c #875449",\r
+"8c    c #402123",\r
+"9c    c #261F24",\r
+"0c    c #2A2321",\r
+"ac    c #292028",\r
+"bc    c #292E2A",\r
+"cc    c #2A2526",\r
+"dc    c #312924",\r
+"ec    c #434832",\r
+"fc    c #9E8D66",\r
+"gc    c #CBA569",\r
+"hc    c #CAA675",\r
+"ic    c #CFAC7C",\r
+"jc    c #D9AC7E",\r
+"kc    c #DEBA90",\r
+"lc    c #DEC19B",\r
+"mc    c #DEC6A4",\r
+"nc    c #DAC9B1",\r
+"oc    c #D5B89A",\r
+"pc    c #B49460",\r
+"qc    c #937D4E",\r
+"rc    c #998F4F",\r
+"sc    c #A89E65",\r
+"tc    c #A78E5D",\r
+"uc    c #AA8642",\r
+"vc    c #917847",\r
+"wc    c #6B3735",\r
+"xc    c #262526",\r
+"yc    c #2D2C2A",\r
+"zc    c #2F2A2A",\r
+"Ac    c #22242B",\r
+"Bc    c #282929",\r
+"Cc    c #26242B",\r
+"Dc    c #2D2D2B",\r
+"Ec    c #5D6966",\r
+"Fc    c #B49A85",\r
+"Gc    c #B7A178",\r
+"Hc    c #B59C84",\r
+"Ic    c #B59E84",\r
+"Jc    c #B39F83",\r
+"Kc    c #B8A690",\r
+"Lc    c #B39E8A",\r
+"Mc    c #B2A48D",\r
+"Nc    c #AEA383",\r
+"Oc    c #AE9482",\r
+"Pc    c #B19A7D",\r
+"Qc    c #A89F80",\r
+"Rc    c #A69789",\r
+"Sc    c #A29482",\r
+"Tc    c #A29780",\r
+"Uc    c #A39683",\r
+"Vc    c #A99A7B",\r
+"Wc    c #AE9972",\r
+"Xc    c #A09279",\r
+"Yc    c #998D7E",\r
+"Zc    c #A39774",\r
+"`c    c #AA9882",\r
+" d    c #AA9977",\r
+".d    c #AF937F",\r
+"+d    c #B09D7B",\r
+"@d    c #AA8071",\r
+"#d    c #5A3834",\r
+"$d    c #58483B",\r
+"%d    c #A38063",\r
+"&d    c #936949",\r
+"*d    c #8F7357",\r
+"=d    c #AB8E66",\r
+"-d    c #C19556",\r
+";d    c #C8A976",\r
+">d    c #D3AB7E",\r
+",d    c #D3AD80",\r
+"'d    c #D29B72",\r
+")d    c #BD6554",\r
+"!d    c #662F2F",\r
+"~d    c #3D3730",\r
+"{d    c #727B66",\r
+"]d    c #AA9D85",\r
+"^d    c #A8927E",\r
+"/d    c #9C8E6D",\r
+"(d    c #A38D6E",\r
+"_d    c #A6906E",\r
+":d    c #AA9374",\r
+"<d    c #AD9D77",\r
+"[d    c #A09179",\r
+"}d    c #A08F7B",\r
+"|d    c #A69274",\r
+"1d    c #A69471",\r
+"2d    c #A68E70",\r
+"3d    c #AA926D",\r
+"4d    c #A1997E",\r
+"5d    c #A5927E",\r
+"6d    c #A4997F",\r
+"7d    c #9F9782",\r
+"8d    c #A09680",\r
+"9d    c #A1947D",\r
+"0d    c #A2937B",\r
+"ad    c #A19878",\r
+"bd    c #A3907B",\r
+"cd    c #9F9378",\r
+"dd    c #A18B72",\r
+"ed    c #93897D",\r
+"fd    c #A49171",\r
+"gd    c #9E8E78",\r
+"hd    c #A08F72",\r
+"id    c #A6977D",\r
+"jd    c #9E8D77",\r
+"kd    c #A38D77",\r
+"ld    c #B49D7D",\r
+"md    c #AE9D78",\r
+"nd    c #AA9682",\r
+"od    c #B49A7E",\r
+"pd    c #B3A081",\r
+"qd    c #AE957D",\r
+"rd    c #917E72",\r
+"sd    c #918F7A",\r
+"td    c #A88E6F",\r
+"ud    c #988269",\r
+"vd    c #8A7960",\r
+"wd    c #90836A",\r
+"xd    c #947D6C",\r
+"yd    c #8C897A",\r
+"zd    c #A69B87",\r
+"Ad    c #A89B84",\r
+"Bd    c #9D967B",\r
+"Cd    c #9D9285",\r
+"Dd    c #AEA585",\r
+"Ed    c #B3A683",\r
+"Fd    c #AC9D8A",\r
+"Gd    c #A49886",\r
+"Hd    c #AC9E84",\r
+"Id    c #ADA081",\r
+"Jd    c #AA9B80",\r
+"Kd    c #A8977F",\r
+"Ld    c #AB9A7E",\r
+"Md    c #AFA087",\r
+"Nd    c #B09B84",\r
+"Od    c #AF9F8B",\r
+"Pd    c #B49F7C",\r
+"Qd    c #AC9881",\r
+"Rd    c #AB9B81",\r
+"Sd    c #B7A280",\r
+"Td    c #B4A081",\r
+"Ud    c #B1A483",\r
+"Vd    c #AE9581",\r
+"Wd    c #7A7074",\r
+"Xd    c #8A8E80",\r
+"Yd    c #B8A284",\r
+"Zd    c #B6A47F",\r
+"`d    c #AC9C7F",\r
+" e    c #B49981",\r
+".e    c #B09F7B",\r
+"+e    c #A79583",\r
+"@e    c #B29B80",\r
+"#e    c #B79B7A",\r
+"$e    c #AB977E",\r
+"%e    c #B2A079",\r
+"&e    c #B7A57E",\r
+"*e    c #B4AA96",\r
+"=e    c #AF7067",\r
+"-e    c #662C2B",\r
+";e    c #332A23",\r
+">e    c #412E28",\r
+",e    c #362324",\r
+"'e    c #2A1E24",\r
+")e    c #282824",\r
+"!e    c #2C2823",\r
+"~e    c #35352A",\r
+"{e    c #586041",\r
+"]e    c #B29966",\r
+"^e    c #CAA66E",\r
+"/e    c #C9A67C",\r
+"(e    c #D3A377",\r
+"_e    c #D3AE82",\r
+":e    c #D8B991",\r
+"<e    c #DDBE92",\r
+"[e    c #DEBC93",\r
+"}e    c #DBBF9C",\r
+"|e    c #DCBE96",\r
+"1e    c #D7BA90",\r
+"2e    c #D3B78D",\r
+"3e    c #D3B786",\r
+"4e    c #D5B98A",\r
+"5e    c #D2B283",\r
+"6e    c #D0B079",\r
+"7e    c #CEAE6E",\r
+"8e    c #AC5643",\r
+"9e    c #39282B",\r
+"0e    c #24282B",\r
+"ae    c #282626",\r
+"be    c #272F2D",\r
+"ce    c #252B2D",\r
+"de    c #26282A",\r
+"ee    c #2C242A",\r
+"fe    c #2E272B",\r
+"ge    c #302C2A",\r
+"he    c #525F56",\r
+"ie    c #AC9B78",\r
+"je    c #B6927F",\r
+"ke    c #B29B8C",\r
+"le    c #AC9C89",\r
+"me    c #B39C87",\r
+"ne    c #AF947D",\r
+"oe    c #B1987E",\r
+"pe    c #AE9981",\r
+"qe    c #B0A384",\r
+"re    c #A89E89",\r
+"se    c #AE9B8A",\r
+"te    c #B3A382",\r
+"ue    c #AB9880",\r
+"ve    c #A5927C",\r
+"we    c #AE987C",\r
+"xe    c #A69A87",\r
+"ye    c #A39176",\r
+"ze    c #AB977B",\r
+"Ae    c #A09878",\r
+"Be    c #95927B",\r
+"Ce    c #A69481",\r
+"De    c #A6927E",\r
+"Ee    c #9F997E",\r
+"Fe    c #A6957B",\r
+"Ge    c #92887A",\r
+"He    c #9F9577",\r
+"Ie    c #AFA276",\r
+"Je    c #AD9673",\r
+"Ke    c #A49282",\r
+"Le    c #B19F82",\r
+"Me    c #AD9E83",\r
+"Ne    c #A68479",\r
+"Oe    c #673933",\r
+"Pe    c #423B2F",\r
+"Qe    c #877056",\r
+"Re    c #925344",\r
+"Se    c #5A3736",\r
+"Te    c #5D5C42",\r
+"Ue    c #B39C6D",\r
+"Ve    c #D4AF89",\r
+"We    c #D5A57C",\r
+"Xe    c #CDA583",\r
+"Ye    c #BF7464",\r
+"Ze    c #8E3C3B",\r
+"`e    c #45302A",\r
+" f    c #576544",\r
+".f    c #9A9B7D",\r
+"+f    c #B19C87",\r
+"@f    c #9F9A7B",\r
+"#f    c #958D76",\r
+"$f    c #A09079",\r
+"%f    c #A7937B",\r
+"&f    c #AB977C",\r
+"*f    c #AA946F",\r
+"=f    c #9F9080",\r
+"-f    c #A49175",\r
+";f    c #A69272",\r
+">f    c #A69775",\r
+",f    c #A79070",\r
+"'f    c #A89A7A",\r
+")f    c #A89A7C",\r
+"!f    c #A49C87",\r
+"~f    c #A3997B",\r
+"{f    c #A8987D",\r
+"]f    c #A6967B",\r
+"^f    c #A2987B",\r
+"/f    c #A59384",\r
+"(f    c #A4917C",\r
+"_f    c #9E927C",\r
+":f    c #A5907A",\r
+"<f    c #928560",\r
+"[f    c #76766B",\r
+"}f    c #A0937A",\r
+"|f    c #A69771",\r
+"1f    c #9A8B75",\r
+"2f    c #9F8A6D",\r
+"3f    c #9D8C75",\r
+"4f    c #998C74",\r
+"5f    c #A79773",\r
+"6f    c #A59376",\r
+"7f    c #A0907E",\r
+"8f    c #B19B85",\r
+"9f    c #B1A085",\r
+"0f    c #AD947B",\r
+"af    c #AF9D79",\r
+"bf    c #AB997C",\r
+"cf    c #AC8363",\r
+"df    c #7E6954",\r
+"ef    c #7D806F",\r
+"ff    c #A58E77",\r
+"gf    c #917D63",\r
+"hf    c #876B5B",\r
+"if    c #69645B",\r
+"jf    c #8E8A73",\r
+"kf    c #939181",\r
+"lf    c #AA977D",\r
+"mf    c #9D9981",\r
+"nf    c #96968B",\r
+"of    c #AAA18A",\r
+"pf    c #B0A389",\r
+"qf    c #B39B84",\r
+"rf    c #AD9F88",\r
+"sf    c #AF9D7F",\r
+"tf    c #AE9C86",\r
+"uf    c #AD987C",\r
+"vf    c #B1A486",\r
+"wf    c #AD9B8B",\r
+"xf    c #B49F7E",\r
+"yf    c #A79985",\r
+"zf    c #AF9B7E",\r
+"Af    c #B3A17B",\r
+"Bf    c #B0A086",\r
+"Cf    c #AE9E82",\r
+"Df    c #B09A84",\r
+"Ef    c #7D766E",\r
+"Ff    c #989382",\r
+"Gf    c #B09B86",\r
+"Hf    c #AE9D85",\r
+"If    c #B2A28A",\r
+"Jf    c #AFA078",\r
+"Kf    c #AD9B80",\r
+"Lf    c #B39878",\r
+"Mf    c #B3A07B",\r
+"Nf    c #B08374",\r
+"Of    c #733533",\r
+"Pf    c #45412C",\r
+"Qf    c #876338",\r
+"Rf    c #6A2922",\r
+"Sf    c #351C1F",\r
+"Tf    c #302724",\r
+"Uf    c #3D3427",\r
+"Vf    c #585645",\r
+"Wf    c #847751",\r
+"Xf    c #BB9D66",\r
+"Yf    c #C8A26F",\r
+"Zf    c #CFAB7B",\r
+"`f    c #D4B079",\r
+" g    c #D3A97D",\r
+".g    c #D8B493",\r
+"+g    c #D9BA94",\r
+"@g    c #DDB894",\r
+"#g    c #DEC190",\r
+"$g    c #DEC194",\r
+"%g    c #DABB86",\r
+"&g    c #DCB985",\r
+"*g    c #DAB587",\r
+"=g    c #D3AC79",\r
+"-g    c #D1A47A",\r
+";g    c #CF9F6D",\r
+">g    c #A1524E",\r
+",g    c #3C2123",\r
+"'g    c #252626",\r
+")g    c #282825",\r
+"!g    c #2B2830",\r
+"~g    c #26232A",\r
+"{g    c #25292C",\r
+"]g    c #2A2629",\r
+"^g    c #2E2C30",\r
+"/g    c #33372F",\r
+"(g    c #606A58",\r
+"_g    c #B29B73",\r
+":g    c #B19C7D",\r
+"<g    c #AF9679",\r
+"[g    c #B3987F",\r
+"}g    c #AB9A83",\r
+"|g    c #A8957A",\r
+"1g    c #B19682",\r
+"2g    c #B09985",\r
+"3g    c #AAA182",\r
+"4g    c #AA9F87",\r
+"5g    c #AA9C86",\r
+"6g    c #B1A17C",\r
+"7g    c #B09C76",\r
+"8g    c #B19774",\r
+"9g    c #A6977F",\r
+"0g    c #A69586",\r
+"ag    c #A99B7E",\r
+"bg    c #A59A82",\r
+"cg    c #A18F77",\r
+"dg    c #A59675",\r
+"eg    c #A1997B",\r
+"fg    c #A69A79",\r
+"gg    c #A29076",\r
+"hg    c #897E71",\r
+"ig    c #A69C7F",\r
+"jg    c #A79D7A",\r
+"kg    c #A9947C",\r
+"lg    c #AD987B",\r
+"mg    c #A7967B",\r
+"ng    c #7D4B3F",\r
+"og    c #45372E",\r
+"pg    c #837659",\r
+"qg    c #98584A",\r
+"rg    c #512D2D",\r
+"sg    c #47523D",\r
+"tg    c #A19774",\r
+"ug    c #CDA980",\r
+"vg    c #D2A17A",\r
+"wg    c #C59A7F",\r
+"xg    c #A35554",\r
+"yg    c #573031",\r
+"zg    c #3E3B2F",\r
+"Ag    c #768059",\r
+"Bg    c #ABA891",\r
+"Cg    c #B3A585",\r
+"Dg    c #A19070",\r
+"Eg    c #8D8C6E",\r
+"Fg    c #A79172",\r
+"Gg    c #AB8B78",\r
+"Hg    c #A3937E",\r
+"Ig    c #A59672",\r
+"Jg    c #A69376",\r
+"Kg    c #A3957C",\r
+"Lg    c #A8977B",\r
+"Mg    c #A8937A",\r
+"Ng    c #A59277",\r
+"Og    c #A18B79",\r
+"Pg    c #AB9881",\r
+"Qg    c #AD9E7E",\r
+"Rg    c #A49484",\r
+"Sg    c #A79B8A",\r
+"Tg    c #A3967E",\r
+"Ug    c #A2957E",\r
+"Vg    c #A89976",\r
+"Wg    c #9E937F",\r
+"Xg    c #A59475",\r
+"Yg    c #A88D79",\r
+"Zg    c #A08F79",\r
+"`g    c #9A8669",\r
+" h    c #817E73",\r
+".h    c #92886F",\r
+"+h    c #9A8560",\r
+"@h    c #A28B6C",\r
+"#h    c #9B8C68",\r
+"$h    c #9A8977",\r
+"%h    c #9D9276",\r
+"&h    c #988B7F",\r
+"*h    c #A1967D",\r
+"=h    c #857D6D",\r
+"-h    c #A89A8B",\r
+";h    c #BBB89C",\r
+">h    c #BBB49E",\r
+",h    c #B5B3A0",\r
+"'h    c #C0B19B",\r
+")h    c #BDAF8F",\r
+"!h    c #B09E7D",\r
+"~h    c #AE8E76",\r
+"{h    c #A69678",\r
+"]h    c #A28D6E",\r
+"^h    c #89856D",\r
+"/h    c #979084",\r
+"(h    c #A39680",\r
+"_h    c #A39676",\r
+":h    c #8F9080",\r
+"<h    c #9B9180",\r
+"[h    c #AB9E8A",\r
+"}h    c #AFA18A",\r
+"|h    c #AB9F88",\r
+"1h    c #AD998A",\r
+"2h    c #AE9D7F",\r
+"3h    c #A69F87",\r
+"4h    c #AD9D8A",\r
+"5h    c #B09682",\r
+"6h    c #B0A587",\r
+"7h    c #AFA185",\r
+"8h    c #B19483",\r
+"9h    c #ABA086",\r
+"0h    c #AD9B85",\r
+"ah    c #ADA17E",\r
+"bh    c #AC9C7D",\r
+"ch    c #A99B77",\r
+"dh    c #A99578",\r
+"eh    c #AFA485",\r
+"fh    c #AD9F85",\r
+"gh    c #AB9986",\r
+"hh    c #B39C83",\r
+"ih    c #968873",\r
+"jh    c #B69B82",\r
+"kh    c #B39B7D",\r
+"lh    c #B1A28B",\r
+"mh    c #B19D81",\r
+"nh    c #AF947C",\r
+"oh    c #B19C83",\r
+"ph    c #B29B7C",\r
+"qh    c #B19679",\r
+"rh    c #AD9A86",\r
+"sh    c #AE9780",\r
+"th    c #9D5D5C",\r
+"uh    c #56322D",\r
+"vh    c #474936",\r
+"wh    c #94896E",\r
+"xh    c #9F604F",\r
+"yh    c #55392B",\r
+"zh    c #66593B",\r
+"Ah    c #8D773F",\r
+"Bh    c #AE8354",\r
+"Ch    c #B69C5E",\r
+"Dh    c #C8A377",\r
+"Eh    c #CFAC7E",\r
+"Fh    c #D4B377",\r
+"Gh    c #D8AB83",\r
+"Hh    c #DCB28A",\r
+"Ih    c #D7B78C",\r
+"Jh    c #DBBA95",\r
+"Kh    c #DDBC96",\r
+"Lh    c #DDB696",\r
+"Mh    c #DEB791",\r
+"Nh    c #DAB987",\r
+"Oh    c #DBB182",\r
+"Ph    c #D7B07E",\r
+"Qh    c #D6AD6F",\r
+"Rh    c #D19D69",\r
+"Sh    c #C8975F",\r
+"Th    c #AC704E",\r
+"Uh    c #452729",\r
+"Vh    c #2B2324",\r
+"Wh    c #27282B",\r
+"Xh    c #282A2F",\r
+"Yh    c #292328",\r
+"Zh    c #2B2E29",\r
+"`h    c #364744",\r
+" i    c #7E8773",\r
+".i    c #B69F83",\r
+"+i    c #B39B85",\r
+"@i    c #B39E78",\r
+"#i    c #AF9C7A",\r
+"$i    c #AF947A",\r
+"%i    c #A99B75",\r
+"&i    c #B29F82",\r
+"*i    c #AAA082",\r
+"=i    c #A99B87",\r
+"-i    c #A09176",\r
+";i    c #9D8F77",\r
+">i    c #A2977C",\r
+",i    c #A39871",\r
+"'i    c #AA9173",\r
+")i    c #A99572",\r
+"!i    c #A69178",\r
+"~i    c #A99C78",\r
+"{i    c #AA9F81",\r
+"]i    c #A99C7F",\r
+"^i    c #A9967F",\r
+"/i    c #A48C76",\r
+"(i    c #959173",\r
+"_i    c #A5957D",\r
+":i    c #AA917E",\r
+"<i    c #A2957F",\r
+"[i    c #A69783",\r
+"}i    c #AA9782",\r
+"|i    c #AD9E7D",\r
+"1i    c #935F51",\r
+"2i    c #503528",\r
+"3i    c #6F6250",\r
+"4i    c #95624D",\r
+"5i    c #49282A",\r
+"6i    c #3A3937",\r
+"7i    c #827B6A",\r
+"8i    c #C49A6C",\r
+"9i    c #C69668",\r
+"0i    c #B47F65",\r
+"ai    c #723C36",\r
+"bi    c #41302B",\r
+"ci    c #5A654F",\r
+"di    c #95977C",\r
+"ei    c #B7AA94",\r
+"fi    c #948481",\r
+"gi    c #958675",\r
+"hi    c #A8946F",\r
+"ii    c #A1906E",\r
+"ji    c #A89474",\r
+"ki    c #AB976F",\r
+"li    c #A1997A",\r
+"mi    c #A0997F",\r
+"ni    c #A4907D",\r
+"oi    c #A39C88",\r
+"pi    c #A49B83",\r
+"qi    c #A69D7A",\r
+"ri    c #A89483",\r
+"si    c #A49084",\r
+"ti    c #9A978A",\r
+"ui    c #A19787",\r
+"vi    c #A2937F",\r
+"wi    c #A38F86",\r
+"xi    c #A59D83",\r
+"yi    c #A49B72",\r
+"zi    c #A9936D",\r
+"Ai    c #99856A",\r
+"Bi    c #858780",\r
+"Ci    c #9D8E6F",\r
+"Di    c #96876F",\r
+"Ei    c #9B8F69",\r
+"Fi    c #9D8775",\r
+"Gi    c #A19476",\r
+"Hi    c #A3906B",\r
+"Ii    c #9D8974",\r
+"Ji    c #9B8A71",\r
+"Ki    c #5F634C",\r
+"Li    c #8F8F7E",\r
+"Mi    c #B9B18E",\r
+"Ni    c #AA9D84",\r
+"Oi    c #96988F",\r
+"Pi    c #B2ADA1",\r
+"Qi    c #C0BBAC",\r
+"Ri    c #CBB29F",\r
+"Si    c #B69575",\r
+"Ti    c #9C8D79",\r
+"Ui    c #9E8B6E",\r
+"Vi    c #968979",\r
+"Wi    c #9B857B",\r
+"Xi    c #928965",\r
+"Yi    c #949483",\r
+"Zi    c #A89384",\r
+"`i    c #8A8F7E",\r
+" j    c #A19B7D",\r
+".j    c #AC9C88",\r
+"+j    c #ABA386",\r
+"@j    c #AAA088",\r
+"#j    c #AC9B8B",\r
+"$j    c #AFA18C",\r
+"%j    c #AE9A83",\r
+"&j    c #B39E81",\r
+"*j    c #AC9580",\r
+"=j    c #AC997E",\r
+"-j    c #ADA48C",\r
+";j    c #A89986",\r
+">j    c #B29986",\r
+",j    c #B0A087",\r
+"'j    c #AB9F81",\r
+")j    c #A9987C",\r
+"!j    c #A59D82",\r
+"~j    c #B3947B",\r
+"{j    c #9C907F",\r
+"]j    c #9B9E8E",\r
+"^j    c #B0967A",\r
+"/j    c #AFA684",\r
+"(j    c #AFA174",\r
+"_j    c #B19A74",\r
+":j    c #B09B7F",\r
+"<j    c #B29678",\r
+"[j    c #B49A7D",\r
+"}j    c #AD9775",\r
+"|j    c #AE977C",\r
+"1j    c #B2A586",\r
+"2j    c #AB9C80",\r
+"3j    c #9C645A",\r
+"4j    c #562B26",\r
+"5j    c #3D392C",\r
+"6j    c #757660",\r
+"7j    c #B88672",\r
+"8j    c #8D543E",\r
+"9j    c #767054",\r
+"0j    c #A78853",\r
+"aj    c #B1865B",\r
+"bj    c #B28D52",\r
+"cj    c #B9A15D",\r
+"dj    c #C6A472",\r
+"ej    c #CEAC7E",\r
+"fj    c #D5B579",\r
+"gj    c #DBB98C",\r
+"hj    c #DDBB8F",\r
+"ij    c #DAB88D",\r
+"jj    c #DCB78F",\r
+"kj    c #DCB47F",\r
+"lj    c #DBAC84",\r
+"mj    c #D6A97D",\r
+"nj    c #D8B380",\r
+"oj    c #D8AD8C",\r
+"pj    c #D6B083",\r
+"qj    c #D2AB7C",\r
+"rj    c #CEA374",\r
+"sj    c #C79562",\r
+"tj    c #B27B51",\r
+"uj    c #633336",\r
+"vj    c #302329",\r
+"wj    c #302932",\r
+"xj    c #302E2E",\r
+"yj    c #312427",\r
+"zj    c #2E2927",\r
+"Aj    c #29282C",\r
+"Bj    c #3C4E41",\r
+"Cj    c #748067",\r
+"Dj    c #B79F82",\r
+"Ej    c #B09B77",\r
+"Fj    c #A98F7B",\r
+"Gj    c #B09B74",\r
+"Hj    c #AA9D81",\r
+"Ij    c #AA9483",\r
+"Jj    c #AC9575",\r
+"Kj    c #A78270",\r
+"Lj    c #8D7364",\r
+"Mj    c #745D47",\r
+"Nj    c #5A5548",\r
+"Oj    c #5B5852",\r
+"Pj    c #736A5A",\r
+"Qj    c #867C5A",\r
+"Rj    c #9A9174",\r
+"Sj    c #A89A76",\r
+"Tj    c #A79775",\r
+"Uj    c #A59679",\r
+"Vj    c #A7937A",\r
+"Wj    c #A88C74",\r
+"Xj    c #948F7E",\r
+"Yj    c #A9957F",\r
+"Zj    c #AE9979",\r
+"`j    c #A3957E",\r
+" k    c #A99177",\r
+".k    c #A69377",\r
+"+k    c #A27569",\r
+"@k    c #61342E",\r
+"#k    c #66604D",\r
+"$k    c #946957",\r
+"%k    c #502C28",\r
+"&k    c #3E4231",\r
+"*k    c #98795A",\r
+"=k    c #BD8C54",\r
+"-k    c #AE8654",\r
+";k    c #A27052",\r
+">k    c #743C2E",\r
+",k    c #464831",\r
+"'k    c #8E8F70",\r
+")k    c #B4A186",\r
+"!k    c #AE997D",\r
+"~k    c #988C7E",\r
+"{k    c #918470",\r
+"]k    c #A59378",\r
+"^k    c #A99474",\r
+"/k    c #A1927E",\r
+"(k    c #A49984",\r
+"_k    c #A79A80",\r
+":k    c #A69E85",\r
+"<k    c #A49E8D",\r
+"[k    c #A79886",\r
+"}k    c #A7A184",\r
+"|k    c #A09880",\r
+"1k    c #A39788",\r
+"2k    c #A19D7F",\r
+"3k    c #A39986",\r
+"4k    c #A09A87",\r
+"5k    c #9E967E",\r
+"6k    c #A18874",\r
+"7k    c #8E8975",\r
+"8k    c #878D7B",\r
+"9k    c #9A8E67",\r
+"0k    c #958774",\r
+"ak    c #9C8F73",\r
+"bk    c #9D8E6A",\r
+"ck    c #9A897C",\r
+"dk    c #9C8F7B",\r
+"ek    c #A68D72",\r
+"fk    c #A28B71",\r
+"gk    c #9D8B69",\r
+"hk    c #726450",\r
+"ik    c #80705C",\r
+"jk    c #989571",\r
+"kk    c #AA9A75",\r
+"lk    c #9E937B",\r
+"mk    c #9EA07C",\r
+"nk    c #AFB09E",\r
+"ok    c #CEBB9F",\r
+"pk    c #AF9973",\r
+"qk    c #A39275",\r
+"rk    c #A79075",\r
+"sk    c #96866D",\r
+"tk    c #918B79",\r
+"uk    c #9C8B6D",\r
+"vk    c #8F8267",\r
+"wk    c #8D8674",\r
+"xk    c #A79674",\r
+"yk    c #A5936B",\r
+"zk    c #8F8F7B",\r
+"Ak    c #A19B87",\r
+"Bk    c #AEA78C",\r
+"Ck    c #A69A85",\r
+"Dk    c #B59F80",\r
+"Ek    c #B1A484",\r
+"Fk    c #A69F8A",\r
+"Gk    c #AF9F8F",\r
+"Hk    c #AB9F86",\r
+"Ik    c #B49E84",\r
+"Jk    c #B09A7F",\r
+"Kk    c #A89A82",\r
+"Lk    c #AF9B76",\r
+"Mk    c #AE9A78",\r
+"Nk    c #B09979",\r
+"Ok    c #A89178",\r
+"Pk    c #AC997D",\r
+"Qk    c #AA9C8B",\r
+"Rk    c #A88D74",\r
+"Sk    c #999682",\r
+"Tk    c #AE9A85",\r
+"Uk    c #B19D88",\r
+"Vk    c #B3A281",\r
+"Wk    c #AD9D86",\r
+"Xk    c #B29D7E",\r
+"Yk    c #B79F77",\r
+"Zk    c #B39C78",\r
+"`k    c #B09D6E",\r
+" l    c #B19577",\r
+".l    c #B5A481",\r
+"+l    c #B38877",\r
+"@l    c #7D4335",\r
+"#l    c #403129",\r
+"$l    c #6B6956",\r
+"%l    c #BE947A",\r
+"&l    c #9A5C46",\r
+"*l    c #7D6B50",\r
+"=l    c #A58659",\r
+"-l    c #AB6B5C",\r
+";l    c #85644D",\r
+">l    c #928667",\r
+",l    c #B49D74",\r
+"'l    c #C7AA81",\r
+")l    c #D5B27D",\r
+"!l    c #DCC390",\r
+"~l    c #DFC595",\r
+"{l    c #DAB794",\r
+"]l    c #DDB795",\r
+"^l    c #DBB588",\r
+"/l    c #DDAC83",\r
+"(l    c #D8B88C",\r
+"_l    c #D6B784",\r
+":l    c #DBB685",\r
+"<l    c #D4A97E",\r
+"[l    c #CDA477",\r
+"}l    c #D09A69",\r
+"|l    c #C28E56",\r
+"1l    c #976C4B",\r
+"2l    c #6D3139",\r
+"3l    c #312024",\r
+"4l    c #2C2E2E",\r
+"5l    c #322E2B",\r
+"6l    c #382C30",\r
+"7l    c #302D30",\r
+"8l    c #2B2125",\r
+"9l    c #272627",\r
+"0l    c #3C443D",\r
+"al    c #637569",\r
+"bl    c #AC9686",\r
+"cl    c #AA9D6E",\r
+"dl    c #B19876",\r
+"el    c #AA9070",\r
+"fl    c #9D8F76",\r
+"gl    c #A88E70",\r
+"hl    c #A0735E",\r
+"il    c #72494A",\r
+"jl    c #4B3632",\r
+"kl    c #40312C",\r
+"ll    c #363439",\r
+"ml    c #2E2F2E",\r
+"nl    c #3B312F",\r
+"ol    c #3B3A31",\r
+"pl    c #494139",\r
+"ql    c #5A635D",\r
+"rl    c #86836F",\r
+"sl    c #A99683",\r
+"tl    c #A7957A",\r
+"ul    c #AB9972",\r
+"vl    c #A8946C",\r
+"wl    c #A59369",\r
+"xl    c #969285",\r
+"yl    c #AC9D87",\r
+"zl    c #AB9381",\r
+"Al    c #AC9280",\r
+"Bl    c #AE9572",\r
+"Cl    c #A89074",\r
+"Dl    c #A9897B",\r
+"El    c #7A4546",\r
+"Fl    c #5A604B",\r
+"Gl    c #8D6B64",\r
+"Hl    c #51352D",\r
+"Il    c #545A44",\r
+"Jl    c #AA906B",\r
+"Kl    c #B9904E",\r
+"Ll    c #AC8755",\r
+"Ml    c #A27554",\r
+"Nl    c #6D4435",\r
+"Ol    c #60644E",\r
+"Pl    c #ABA183",\r
+"Ql    c #AB9684",\r
+"Rl    c #A79779",\r
+"Sl    c #9B937D",\r
+"Tl    c #9A9173",\r
+"Ul    c #A29273",\r
+"Vl    c #AA977B",\r
+"Wl    c #9D9079",\r
+"Xl    c #A2927B",\r
+"Yl    c #999581",\r
+"Zl    c #A19881",\r
+"`l    c #A09D86",\r
+" m    c #979686",\r
+".m    c #A99E81",\r
+"+m    c #9C978A",\r
+"@m    c #A69A80",\r
+"#m    c #A69D8A",\r
+"$m    c #9B978C",\r
+"%m    c #A7A286",\r
+"&m    c #9C9583",\r
+"*m    c #A19C83",\r
+"=m    c #9C8D76",\r
+"-m    c #877D78",\r
+";m    c #91897F",\r
+">m    c #979476",\r
+",m    c #97947D",\r
+"'m    c #A08F78",\r
+")m    c #9E926E",\r
+"!m    c #9E8D6C",\r
+"~m    c #A4886C",\r
+"{m    c #9E9177",\r
+"]m    c #9A8C76",\r
+"^m    c #A78F70",\r
+"/m    c #654739",\r
+"(m    c #5A544D",\r
+"_m    c #8E7C61",\r
+":m    c #9A947D",\r
+"<m    c #ABAB91",\r
+"[m    c #C1BEA6",\r
+"}m    c #CAC0AC",\r
+"|m    c #C9AB8E",\r
+"1m    c #B99177",\r
+"2m    c #9F8F7B",\r
+"3m    c #A18D71",\r
+"4m    c #8A7D65",\r
+"5m    c #7F7C70",\r
+"6m    c #968A76",\r
+"7m    c #9C937C",\r
+"8m    c #A0957C",\r
+"9m    c #A3937B",\r
+"0m    c #A09174",\r
+"am    c #968D79",\r
+"bm    c #8C9180",\r
+"cm    c #A99E87",\r
+"dm    c #A9A48C",\r
+"em    c #B19A82",\r
+"fm    c #AD977F",\r
+"gm    c #AE9F82",\r
+"hm    c #B0A18C",\r
+"im    c #AE9E88",\r
+"jm    c #B09886",\r
+"km    c #AF9D86",\r
+"lm    c #ADA07D",\r
+"mm    c #B09678",\r
+"nm    c #AA996E",\r
+"om    c #AD986F",\r
+"pm    c #AD9672",\r
+"qm    c #AC9477",\r
+"rm    c #AC9985",\r
+"sm    c #AF957B",\r
+"tm    c #A68E74",\r
+"um    c #868C7F",\r
+"vm    c #A8977D",\r
+"wm    c #AE9C80",\r
+"xm    c #B59D81",\r
+"ym    c #B1A285",\r
+"zm    c #B3A290",\r
+"Am    c #B4A481",\r
+"Bm    c #B5A17F",\r
+"Cm    c #B4A175",\r
+"Dm    c #AC9679",\r
+"Em    c #B19D80",\r
+"Fm    c #B6A681",\r
+"Gm    c #B09881",\r
+"Hm    c #955F4D",\r
+"Im    c #50352F",\r
+"Jm    c #5A5742",\r
+"Km    c #A97D6A",\r
+"Lm    c #9F6246",\r
+"Mm    c #836E4E",\r
+"Nm    c #A48356",\r
+"Om    c #B06C54",\r
+"Pm    c #7E5C34",\r
+"Qm    c #74664C",\r
+"Rm    c #8F705C",\r
+"Sm    c #947E64",\r
+"Tm    c #CDB78E",\r
+"Um    c #D6BE97",\r
+"Vm    c #DAB191",\r
+"Wm    c #DCB590",\r
+"Xm    c #DCBE90",\r
+"Ym    c #DBBB95",\r
+"Zm    c #DDBB97",\r
+"`m    c #DBB692",\r
+" n    c #DBBA8E",\r
+".n    c #D7AE83",\r
+"+n    c #D0A377",\r
+"@n    c #CA9C64",\r
+"#n    c #BE8D54",\r
+"$n    c #9B6C43",\r
+"%n    c #65412E",\r
+"&n    c #362424",\r
+"*n    c #322C2E",\r
+"=n    c #383630",\r
+"-n    c #342F2C",\r
+";n    c #2B2623",\r
+">n    c #2B2F2B",\r
+",n    c #474D44",\r
+"'n    c #798769",\r
+")n    c #AF9B81",\r
+"!n    c #A48A7E",\r
+"~n    c #A38972",\r
+"{n    c #9C7969",\r
+"]n    c #7F655E",\r
+"^n    c #806761",\r
+"/n    c #754D49",\r
+"(n    c #5D443A",\r
+"_n    c #402D2E",\r
+":n    c #312828",\r
+"<n    c #362925",\r
+"[n    c #343036",\r
+"}n    c #312D2D",\r
+"|n    c #363C35",\r
+"1n    c #473334",\r
+"2n    c #3E3837",\r
+"3n    c #534E41",\r
+"4n    c #817462",\r
+"5n    c #A3927C",\r
+"6n    c #AE9982",\r
+"7n    c #A9977A",\r
+"8n    c #968870",\r
+"9n    c #938B7A",\r
+"0n    c #A9997D",\r
+"an    c #A7907E",\r
+"bn    c #A99676",\r
+"cn    c #A59479",\r
+"dn    c #A69476",\r
+"en    c #AA8D7B",\r
+"fn    c #A5907D",\r
+"gn    c #855852",\r
+"hn    c #5C6148",\r
+"in    c #8D7168",\r
+"jn    c #4F3629",\r
+"kn    c #56624D",\r
+"ln    c #A99775",\r
+"mn    c #BB9A6B",\r
+"nn    c #B8996B",\r
+"on    c #A9765A",\r
+"pn    c #7E674A",\r
+"qn    c #8B8875",\r
+"rn    c #B0A280",\r
+"sn    c #A79483",\r
+"tn    c #AC957A",\r
+"un    c #A8936D",\r
+"vn    c #88907F",\r
+"wn    c #9E9881",\r
+"xn    c #A7947B",\r
+"yn    c #A49582",\r
+"zn    c #A69772",\r
+"An    c #A38D79",\r
+"Bn    c #9B8F79",\r
+"Cn    c #9C927C",\r
+"Dn    c #98907F",\r
+"En    c #979488",\r
+"Fn    c #A09588",\r
+"Gn    c #9E997D",\r
+"Hn    c #9B9980",\r
+"In    c #A09784",\r
+"Jn    c #9F987D",\r
+"Kn    c #9D9486",\r
+"Ln    c #A29789",\r
+"Mn    c #9B9D86",\r
+"Nn    c #9F9E8E",\r
+"On    c #A69B82",\r
+"Pn    c #A49B8B",\r
+"Qn    c #9E8E81",\r
+"Rn    c #9C886A",\r
+"Sn    c #808173",\r
+"Tn    c #9C927B",\r
+"Un    c #9D9483",\r
+"Vn    c #998A79",\r
+"Wn    c #968875",\r
+"Xn    c #9C8B6C",\r
+"Yn    c #9E906B",\r
+"Zn    c #9A9074",\r
+"`n    c #9F9572",\r
+" o    c #98795F",\r
+".o    c #795445",\r
+"+o    c #796955",\r
+"@o    c #807559",\r
+"#o    c #8F8264",\r
+"$o    c #9B9B8E",\r
+"%o    c #B58775",\r
+"&o    c #977B6A",\r
+"*o    c #9C8F6C",\r
+"=o    c #9D8470",\r
+"-o    c #888269",\r
+";o    c #838168",\r
+">o    c #9E8877",\r
+",o    c #A48D83",\r
+"'o    c #A29781",\r
+")o    c #A19582",\r
+"!o    c #8E6E6F",\r
+"~o    c #727C78",\r
+"{o    c #A5997E",\r
+"]o    c #A49A7F",\r
+"^o    c #A89F87",\r
+"/o    c #AA9E7E",\r
+"(o    c #AEA084",\r
+"_o    c #AEA18C",\r
+":o    c #ADA38F",\r
+"<o    c #B2A58F",\r
+"[o    c #B09987",\r
+"}o    c #AB977F",\r
+"|o    c #A6957E",\r
+"1o    c #AA977C",\r
+"2o    c #A59976",\r
+"3o    c #A98B75",\r
+"4o    c #A99C7D",\r
+"5o    c #B19D74",\r
+"6o    c #898D81",\r
+"7o    c #AD9585",\r
+"8o    c #AD9D7C",\r
+"9o    c #B69F85",\r
+"0o    c #B49E85",\r
+"ao    c #B69D86",\r
+"bo    c #B9A18C",\r
+"co    c #AE9B7F",\r
+"do    c #AF9987",\r
+"eo    c #AD987E",\r
+"fo    c #AA9E84",\r
+"go    c #A9855F",\r
+"ho    c #693F35",\r
+"io    c #43352B",\r
+"jo    c #7C5247",\r
+"ko    c #956348",\r
+"lo    c #8E7951",\r
+"mo    c #B49D6A",\r
+"no    c #C59269",\r
+"oo    c #A77347",\r
+"po    c #9C7857",\r
+"qo    c #A68262",\r
+"ro    c #9E6E4E",\r
+"so    c #876B52",\r
+"to    c #8F7E6E",\r
+"uo    c #B79E83",\r
+"vo    c #D5AC8D",\r
+"wo    c #DAAE8D",\r
+"xo    c #DAB48E",\r
+"yo    c #DAB98E",\r
+"zo    c #DBB788",\r
+"Ao    c #D9B993",\r
+"Bo    c #D9B693",\r
+"Co    c #D7B184",\r
+"Do    c #D0A67F",\r
+"Eo    c #CD9F73",\r
+"Fo    c #C59865",\r
+"Go    c #B0704D",\r
+"Ho    c #63332D",\r
+"Io    c #352125",\r
+"Jo    c #2C2728",\r
+"Ko    c #2F2D2D",\r
+"Lo    c #32292C",\r
+"Mo    c #2F221F",\r
+"No    c #2F2D2A",\r
+"Oo    c #5C6958",\r
+"Po    c #8B9174",\r
+"Qo    c #9B7F6C",\r
+"Ro    c #815B52",\r
+"So    c #624E45",\r
+"To    c #4E3936",\r
+"Uo    c #412F32",\r
+"Vo    c #342C30",\r
+"Wo    c #2B282D",\r
+"Xo    c #2C2429",\r
+"Yo    c #292329",\r
+"Zo    c #2F252A",\r
+"`o    c #2A312D",\r
+" p    c #343129",\r
+".p    c #333933",\r
+"+p    c #343234",\r
+"@p    c #363133",\r
+"#p    c #3A3233",\r
+"$p    c #44403B",\r
+"%p    c #6E6956",\r
+"&p    c #A59978",\r
+"*p    c #978269",\r
+"=p    c #898974",\r
+"-p    c #9C8F77",\r
+";p    c #A79279",\r
+">p    c #A58E74",\r
+",p    c #9B836C",\r
+"'p    c #A88C6C",\r
+")p    c #A7946B",\r
+"!p    c #A88E78",\r
+"~p    c #8B5C50",\r
+"{p    c #636148",\r
+"]p    c #8B655F",\r
+"^p    c #4A332A",\r
+"/p    c #506857",\r
+"(p    c #AAA077",\r
+"_p    c #C09D77",\r
+":p    c #B59878",\r
+"<p    c #A36A5B",\r
+"[p    c #796858",\r
+"}p    c #958D80",\r
+"|p    c #AA9C83",\r
+"1p    c #A7967D",\r
+"2p    c #A38373",\r
+"3p    c #868B74",\r
+"4p    c #9F9875",\r
+"5p    c #A39282",\r
+"6p    c #9F9183",\r
+"7p    c #9F9179",\r
+"8p    c #9B8D75",\r
+"9p    c #988D69",\r
+"0p    c #97867F",\r
+"ap    c #9D9485",\r
+"bp    c #A29B83",\r
+"cp    c #9B9187",\r
+"dp    c #9F8E7D",\r
+"ep    c #9E9680",\r
+"fp    c #9B9384",\r
+"gp    c #A1987D",\r
+"hp    c #9F9B7E",\r
+"ip    c #9C9A84",\r
+"jp    c #A59C81",\r
+"kp    c #A69086",\r
+"lp    c #A38B69",\r
+"mp    c #8A867B",\r
+"np    c #8D8C7A",\r
+"op    c #A09277",\r
+"pp    c #9E8F73",\r
+"qp    c #96866E",\r
+"rp    c #9A816B",\r
+"sp    c #96826E",\r
+"tp    c #918C75",\r
+"up    c #A08C7E",\r
+"vp    c #A18B76",\r
+"wp    c #959179",\r
+"xp    c #918276",\r
+"yp    c #9B6F4D",\r
+"zp    c #78654E",\r
+"Ap    c #746B50",\r
+"Bp    c #837058",\r
+"Cp    c #836854",\r
+"Dp    c #7D7159",\r
+"Ep    c #88796C",\r
+"Fp    c #878477",\r
+"Gp    c #A89A77",\r
+"Hp    c #A48A70",\r
+"Ip    c #8F8D70",\r
+"Jp    c #9F927A",\r
+"Kp    c #A58871",\r
+"Lp    c #8C7A68",\r
+"Mp    c #968C78",\r
+"Np    c #9E8D72",\r
+"Op    c #8F7666",\r
+"Pp    c #7E837C",\r
+"Qp    c #A59A87",\r
+"Rp    c #AB9B89",\r
+"Sp    c #AD9D87",\r
+"Tp    c #A69882",\r
+"Up    c #B3A48D",\r
+"Vp    c #B4AB86",\r
+"Wp    c #AEA089",\r
+"Xp    c #AEA38F",\r
+"Yp    c #B0A088",\r
+"Zp    c #AD9E87",\r
+"`p    c #AD9779",\r
+" q    c #AC9B72",\r
+".q    c #A99279",\r
+"+q    c #AD967E",\r
+"@q    c #A2987A",\r
+"#q    c #A29280",\r
+"$q    c #A7937E",\r
+"%q    c #A79175",\r
+"&q    c #A2907B",\r
+"*q    c #988B79",\r
+"=q    c #A59182",\r
+"-q    c #B0A187",\r
+";q    c #B2A383",\r
+">q    c #B19589",\r
+",q    c #B2A584",\r
+"'q    c #B09A85",\r
+")q    c #B49B7B",\r
+"!q    c #AF9A7D",\r
+"~q    c #AD9C80",\r
+"{q    c #AB987F",\r
+"]q    c #B29A74",\r
+"^q    c #8E574D",\r
+"/q    c #492A28",\r
+"(q    c #4D3A29",\r
+"_q    c #7E614F",\r
+":q    c #977E50",\r
+"<q    c #BD9867",\r
+"[q    c #CDA374",\r
+"}q    c #C7925C",\r
+"|q    c #AB6453",\r
+"1q    c #966D56",\r
+"2q    c #948166",\r
+"3q    c #A17E62",\r
+"4q    c #987045",\r
+"5q    c #9C8063",\r
+"6q    c #C1A27D",\r
+"7q    c #CBA385",\r
+"8q    c #D1A989",\r
+"9q    c #D5B189",\r
+"0q    c #D7B086",\r
+"aq    c #D7AD8F",\r
+"bq    c #C79E7E",\r
+"cq    c #B7946D",\r
+"dq    c #A57C68",\r
+"eq    c #A67B51",\r
+"fq    c #9B794D",\r
+"gq    c #935B50",\r
+"hq    c #4E3632",\r
+"iq    c #351D25",\r
+"jq    c #2F2B2A",\r
+"kq    c #302729",\r
+"lq    c #2E2928",\r
+"mq    c #292225",\r
+"nq    c #2D2E2A",\r
+"oq    c #5D685E",\r
+"pq    c #6D6367",\r
+"qq    c #53383F",\r
+"rq    c #39302C",\r
+"sq    c #332D2F",\r
+"tq    c #393831",\r
+"uq    c #352F33",\r
+"vq    c #312A26",\r
+"wq    c #2D2A24",\r
+"xq    c #23232A",\r
+"yq    c #2C2528",\r
+"zq    c #2B2725",\r
+"Aq    c #252823",\r
+"Bq    c #3D4038",\r
+"Cq    c #403E32",\r
+"Dq    c #474332",\r
+"Eq    c #433A39",\r
+"Fq    c #3B3B35",\r
+"Gq    c #463B31",\r
+"Hq    c #38302E",\r
+"Iq    c #3C3837",\r
+"Jq    c #6D6F66",\r
+"Kq    c #A89C84",\r
+"Lq    c #B19E7B",\r
+"Mq    c #9F8871",\r
+"Nq    c #858973",\r
+"Oq    c #A79473",\r
+"Pq    c #A4977D",\r
+"Qq    c #A69073",\r
+"Rq    c #A48B75",\r
+"Sq    c #A08D70",\r
+"Tq    c #A28C6D",\r
+"Uq    c #85614C",\r
+"Vq    c #70704F",\r
+"Wq    c #8F5F56",\r
+"Xq    c #483428",\r
+"Yq    c #5F6E60",\r
+"Zq    c #B9A780",\r
+"`q    c #B99D7B",\r
+" r    c #B38D73",\r
+".r    c #9F644C",\r
+"+r    c #6D6345",\r
+"@r    c #8E8F7F",\r
+"#r    c #AA9B8A",\r
+"$r    c #AAA390",\r
+"%r    c #A59F86",\r
+"&r    c #A2877E",\r
+"*r    c #7E7C6F",\r
+"=r    c #928B6F",\r
+"-r    c #A19079",\r
+";r    c #AB9370",\r
+">r    c #9E9273",\r
+",r    c #94907F",\r
+"'r    c #9F8D7C",\r
+")r    c #98847E",\r
+"!r    c #9A9073",\r
+"~r    c #989171",\r
+"{r    c #968B7F",\r
+"]r    c #98927E",\r
+"^r    c #9F9678",\r
+"/r    c #9D9180",\r
+"(r    c #9B8A75",\r
+"_r    c #9B8E7C",\r
+":r    c #9F9784",\r
+"<r    c #98947A",\r
+"[r    c #988C83",\r
+"}r    c #9E9284",\r
+"|r    c #9A9884",\r
+"1r    c #A4927E",\r
+"2r    c #A68F6E",\r
+"3r    c #97836D",\r
+"4r    c #91907D",\r
+"5r    c #A29272",\r
+"6r    c #978978",\r
+"7r    c #978C78",\r
+"8r    c #A38C6B",\r
+"9r    c #9A8164",\r
+"0r    c #988D6A",\r
+"ar    c #9E967A",\r
+"br    c #9D8E7C",\r
+"cr    c #98846F",\r
+"dr    c #565558",\r
+"er    c #72503F",\r
+"fr    c #757251",\r
+"gr    c #84805E",\r
+"hr    c #826D59",\r
+"ir    c #6D5743",\r
+"jr    c #716050",\r
+"kr    c #696651",\r
+"lr    c #6E695E",\r
+"mr    c #998D71",\r
+"nr    c #9F886F",\r
+"or    c #988C6B",\r
+"pr    c #A19373",\r
+"qr    c #9B8774",\r
+"rr    c #988B6D",\r
+"sr    c #988C77",\r
+"tr    c #A58C71",\r
+"ur    c #9D9271",\r
+"vr    c #8E907E",\r
+"wr    c #A9A17C",\r
+"xr    c #ACA188",\r
+"yr    c #A89E82",\r
+"zr    c #A9927D",\r
+"Ar    c #A89D82",\r
+"Br    c #AE9D84",\r
+"Cr    c #AF9F78",\r
+"Dr    c #AF9D84",\r
+"Er    c #AF9782",\r
+"Fr    c #AA9B84",\r
+"Gr    c #B0A183",\r
+"Hr    c #B1957C",\r
+"Ir    c #AF9A78",\r
+"Jr    c #AD9973",\r
+"Kr    c #AB997F",\r
+"Lr    c #AB967A",\r
+"Mr    c #A59671",\r
+"Nr    c #A6967D",\r
+"Or    c #A78E79",\r
+"Pr    c #A38E76",\r
+"Qr    c #9C9372",\r
+"Rr    c #A68A77",\r
+"Sr    c #AF977C",\r
+"Tr    c #AF9E7A",\r
+"Ur    c #AD9C83",\r
+"Vr    c #AE9784",\r
+"Wr    c #B39E83",\r
+"Xr    c #B09976",\r
+"Yr    c #AF977D",\r
+"Zr    c #AA9C80",\r
+"`r    c #A89677",\r
+" s    c #AE937B",\r
+".s    c #AE9B7B",\r
+"+s    c #A89B7F",\r
+"@s    c #A57B64",\r
+"#s    c #6A302D",\r
+"$s    c #433426",\r
+"%s    c #7E5F48",\r
+"&s    c #98834D",\r
+"*s    c #BB986A",\r
+"=s    c #D4A875",\r
+"-s    c #D4AB70",\r
+";s    c #C38A5B",\r
+">s    c #B58A4A",\r
+",s    c #AD8E6B",\r
+"'s    c #937E6E",\r
+")s    c #9E6A49",\r
+"!s    c #A16F4B",\r
+"~s    c #A18357",\r
+"{s    c #B4945F",\r
+"]s    c #BC8C6F",\r
+"^s    c #BF9070",\r
+"/s    c #C39571",\r
+"(s    c #C07F69",\r
+"_s    c #995F46",\r
+":s    c #795D3D",\r
+"<s    c #79673D",\r
+"[s    c #7D6E49",\r
+"}s    c #8D6A4F",\r
+"|s    c #7F5343",\r
+"1s    c #5C4032",\r
+"2s    c #4B312A",\r
+"3s    c #37342F",\r
+"4s    c #4B2D2F",\r
+"5s    c #302325",\r
+"6s    c #302727",\r
+"7s    c #251F28",\r
+"8s    c #272D28",\r
+"9s    c #454342",\r
+"0s    c #473442",\r
+"as    c #2D2826",\r
+"bs    c #32332F",\r
+"cs    c #3D3938",\r
+"ds    c #3F3F38",\r
+"es    c #313135",\r
+"fs    c #292D2D",\r
+"gs    c #292128",\r
+"hs    c #24202C",\r
+"is    c #2F2A27",\r
+"js    c #2A252B",\r
+"ks    c #393437",\r
+"ls    c #3B3A34",\r
+"ms    c #3F4032",\r
+"ns    c #4A3D3E",\r
+"os    c #4A3B3B",\r
+"ps    c #484539",\r
+"qs    c #494036",\r
+"rs    c #32312C",\r
+"ss    c #3B3C3B",\r
+"ts    c #666F65",\r
+"us    c #9B9D85",\r
+"vs    c #9B8B79",\r
+"ws    c #848677",\r
+"xs    c #AB9978",\r
+"ys    c #A6927A",\r
+"zs    c #A48C74",\r
+"As    c #A58F70",\r
+"Bs    c #A69076",\r
+"Cs    c #A0836D",\r
+"Ds    c #7B594D",\r
+"Es    c #757248",\r
+"Fs    c #815A45",\r
+"Gs    c #4C3D2E",\r
+"Hs    c #6C725E",\r
+"Is    c #BEA67A",\r
+"Js    c #B19779",\r
+"Ks    c #BA906F",\r
+"Ls    c #A56F41",\r
+"Ms    c #645C4E",\r
+"Ns    c #8F917F",\r
+"Os    c #A99B8B",\r
+"Ps    c #A29D8B",\r
+"Qs    c #ADA384",\r
+"Rs    c #A6917C",\r
+"Ss    c #757863",\r
+"Ts    c #978D6C",\r
+"Us    c #9F927C",\r
+"Vs    c #9D9378",\r
+"Ws    c #9E8C7A",\r
+"Xs    c #9B9179",\r
+"Ys    c #938E6F",\r
+"Zs    c #988E71",\r
+"`s    c #9A8D6A",\r
+" t    c #8E8D73",\r
+".t    c #96907C",\r
+"+t    c #9C8F7A",\r
+"@t    c #99927E",\r
+"#t    c #9A8D74",\r
+"$t    c #9B8F6E",\r
+"%t    c #9A8F78",\r
+"&t    c #97957B",\r
+"*t    c #9F9478",\r
+"=t    c #9E8E7E",\r
+"-t    c #9B9080",\r
+";t    c #9F9889",\r
+">t    c #A59983",\r
+",t    c #9D8A70",\r
+"'t    c #957965",\r
+")t    c #828575",\r
+"!t    c #98936E",\r
+"~t    c #998572",\r
+"{t    c #9D8671",\r
+"]t    c #A2987C",\r
+"^t    c #9D8D77",\r
+"/t    c #9F907D",\r
+"(t    c #9B947B",\r
+"_t    c #988D70",\r
+":t    c #9E9374",\r
+"<t    c #352A2F",\r
+"[t    c #352D2B",\r
+"}t    c #3F4348",\r
+"|t    c #64665D",\r
+"1t    c #897C5A",\r
+"2t    c #918666",\r
+"3t    c #958862",\r
+"4t    c #857B5E",\r
+"5t    c #7B6353",\r
+"6t    c #7C664F",\r
+"7t    c #7F7862",\r
+"8t    c #9F8F73",\r
+"9t    c #A08568",\r
+"0t    c #958267",\r
+"at    c #968A6D",\r
+"bt    c #938870",\r
+"ct    c #A08B78",\r
+"dt    c #A28B6E",\r
+"et    c #978771",\r
+"ft    c #908E79",\r
+"gt    c #9B9984",\r
+"ht    c #AFA98B",\r
+"it    c #B1A183",\r
+"jt    c #ACA18B",\r
+"kt    c #AD9F78",\r
+"lt    c #A9997F",\r
+"mt    c #AC9A7F",\r
+"nt    c #AE9C84",\r
+"ot    c #AD9C79",\r
+"pt    c #AA9680",\r
+"qt    c #AF977F",\r
+"rt    c #B19D72",\r
+"st    c #B3997F",\r
+"tt    c #B9A077",\r
+"ut    c #AB947A",\r
+"vt    c #AC9677",\r
+"wt    c #A1947A",\r
+"xt    c #A99C77",\r
+"yt    c #AC9374",\r
+"zt    c #A59772",\r
+"At    c #989778",\r
+"Bt    c #A89875",\r
+"Ct    c #AF9A76",\r
+"Dt    c #B29E81",\r
+"Et    c #AC977D",\r
+"Ft    c #A89A80",\r
+"Gt    c #B0A07D",\r
+"Ht    c #B09F72",\r
+"It    c #AE9375",\r
+"Jt    c #A89780",\r
+"Kt    c #A9927A",\r
+"Lt    c #B09D80",\r
+"Mt    c #A98A7D",\r
+"Nt    c #853F3B",\r
+"Ot    c #543E2D",\r
+"Pt    c #825F47",\r
+"Qt    c #978055",\r
+"Rt    c #BD9975",\r
+"St    c #CEA779",\r
+"Tt    c #D7B186",\r
+"Ut    c #CF9F70",\r
+"Vt    c #CC9666",\r
+"Wt    c #C89B6E",\r
+"Xt    c #BD8461",\r
+"Yt    c #B18058",\r
+"Zt    c #B5855B",\r
+"`t    c #B98B55",\r
+" u    c #BE985D",\r
+".u    c #B48B62",\r
+"+u    c #A96F4F",\r
+"@u    c #A16752",\r
+"#u    c #9E6E3F",\r
+"$u    c #95643B",\r
+"%u    c #86673F",\r
+"&u    c #947646",\r
+"*u    c #887848",\r
+"=u    c #9B7043",\r
+"-u    c #9D7748",\r
+";u    c #994E3B",\r
+">u    c #553D35",\r
+",u    c #532E2C",\r
+"'u    c #2E2A28",\r
+")u    c #3E3528",\r
+"!u    c #382B2D",\r
+"~u    c #332535",\r
+"{u    c #352C36",\r
+"]u    c #493C33",\r
+"^u    c #504639",\r
+"/u    c #47342D",\r
+"(u    c #342927",\r
+"_u    c #282729",\r
+":u    c #212628",\r
+"<u    c #29242C",\r
+"[u    c #27212A",\r
+"}u    c #232629",\r
+"|u    c #2A272C",\r
+"1u    c #372E30",\r
+"2u    c #333431",\r
+"3u    c #333434",\r
+"4u    c #41383D",\r
+"5u    c #3A373C",\r
+"6u    c #3C3835",\r
+"7u    c #3D3A3B",\r
+"8u    c #363535",\r
+"9u    c #343D34",\r
+"0u    c #667567",\r
+"au    c #968E74",\r
+"bu    c #8F8C72",\r
+"cu    c #A99278",\r
+"du    c #A99A88",\r
+"eu    c #A49583",\r
+"fu    c #A79077",\r
+"gu    c #A78E71",\r
+"hu    c #A08A7A",\r
+"iu    c #A58271",\r
+"ju    c #7E514A",\r
+"ku    c #757051",\r
+"lu    c #897651",\r
+"mu    c #796A52",\r
+"nu    c #878162",\r
+"ou    c #B59C72",\r
+"pu    c #B99C70",\r
+"qu    c #B48C5E",\r
+"ru    c #9E6443",\r
+"su    c #675F50",\r
+"tu    c #908F82",\r
+"uu    c #A89C89",\r
+"vu    c #A89B87",\r
+"wu    c #A6A288",\r
+"xu    c #9F827A",\r
+"yu    c #797861",\r
+"zu    c #9D9070",\r
+"Au    c #9E9579",\r
+"Bu    c #A09278",\r
+"Cu    c #988F80",\r
+"Du    c #99917A",\r
+"Eu    c #9C9477",\r
+"Fu    c #98896F",\r
+"Gu    c #948B77",\r
+"Hu    c #999675",\r
+"Iu    c #9B9371",\r
+"Ju    c #9B927D",\r
+"Ku    c #998F76",\r
+"Lu    c #9D977B",\r
+"Mu    c #9C9982",\r
+"Nu    c #A69C81",\r
+"Ou    c #A8A07D",\r
+"Pu    c #A0957B",\r
+"Qu    c #A49577",\r
+"Ru    c #A7A384",\r
+"Su    c #A39F82",\r
+"Tu    c #A19575",\r
+"Uu    c #9A856C",\r
+"Vu    c #8A8771",\r
+"Wu    c #969172",\r
+"Xu    c #9F8F70",\r
+"Yu    c #9A896A",\r
+"Zu    c #9F9178",\r
+"`u    c #A2987E",\r
+" v    c #988978",\r
+".v    c #948C79",\r
+"+v    c #948777",\r
+"@v    c #918368",\r
+"#v    c #8F836F",\r
+"$v    c #3C2A2C",\r
+"%v    c #322727",\r
+"&v    c #343233",\r
+"*v    c #434E45",\r
+"=v    c #5C6052",\r
+"-v    c #8B816B",\r
+";v    c #90886D",\r
+">v    c #939473",\r
+",v    c #969073",\r
+"'v    c #8C744D",\r
+")v    c #767D55",\r
+"!v    c #99936C",\r
+"~v    c #A68561",\r
+"{v    c #886F51",\r
+"]v    c #7B795C",\r
+"^v    c #968B72",\r
+"/v    c #A3936F",\r
+"(v    c #9F8C6E",\r
+"_v    c #96806C",\r
+":v    c #81786F",\r
+"<v    c #838B7E",\r
+"[v    c #AAAB8E",\r
+"}v    c #B4AE92",\r
+"|v    c #B2A491",\r
+"1v    c #AB9D8C",\r
+"2v    c #AA9D7D",\r
+"3v    c #B29F7B",\r
+"4v    c #B09A80",\r
+"5v    c #A69479",\r
+"6v    c #AC937C",\r
+"7v    c #AB967C",\r
+"8v    c #A59678",\r
+"9v    c #AC9B7D",\r
+"0v    c #B49C79",\r
+"av    c #B39D71",\r
+"bv    c #B2966E",\r
+"cv    c #A48D62",\r
+"dv    c #835F5B",\r
+"ev    c #6E5851",\r
+"fv    c #707060",\r
+"gv    c #847967",\r
+"hv    c #8D7265",\r
+"iv    c #857861",\r
+"jv    c #837D60",\r
+"kv    c #9C8664",\r
+"lv    c #AB997A",\r
+"mv    c #AB9B7F",\r
+"nv    c #A89A7B",\r
+"ov    c #AB9D86",\r
+"pv    c #AEA083",\r
+"qv    c #AD9A82",\r
+"rv    c #AF9975",\r
+"sv    c #AB9D78",\r
+"tv    c #ADA07F",\r
+"uv    c #AE9B76",\r
+"vv    c #AA9B7D",\r
+"wv    c #B0957E",\r
+"xv    c #A26F4B",\r
+"yv    c #593C2D",\r
+"zv    c #715440",\r
+"Av    c #977A59",\r
+"Bv    c #B6976C",\r
+"Cv    c #CD9D75",\r
+"Dv    c #D4B28A",\r
+"Ev    c #D8AF88",\r
+"Fv    c #CF9E74",\r
+"Gv    c #C89761",\r
+"Hv    c #CB9663",\r
+"Iv    c #CFA676",\r
+"Jv    c #D4A87F",\r
+"Kv    c #D6AC6E",\r
+"Lv    c #D7B57C",\r
+"Mv    c #D1A578",\r
+"Nv    c #C9985A",\r
+"Ov    c #C09E74",\r
+"Pv    c #B5936A",\r
+"Qv    c #BA8C66",\r
+"Rv    c #AE8563",\r
+"Sv    c #9E6F4E",\r
+"Tv    c #886E45",\r
+"Uv    c #A38746",\r
+"Vv    c #BF994D",\r
+"Wv    c #C4825F",\r
+"Xv    c #A1523B",\r
+"Yv    c #3F2927",\r
+"Zv    c #342623",\r
+"`v    c #434A32",\r
+" w    c #685E37",\r
+".w    c #665136",\r
+"+w    c #272227",\r
+"@w    c #2A2A28",\r
+"#w    c #2F2F29",\r
+"$w    c #4B3F30",\r
+"%w    c #52423A",\r
+"&w    c #40302F",\r
+"*w    c #2A2827",\r
+"=w    c #252224",\r
+"-w    c #212526",\r
+";w    c #2B2A2A",\r
+">w    c #282524",\r
+",w    c #282123",\r
+"'w    c #242429",\r
+")w    c #2B2C2A",\r
+"!w    c #3C2A31",\r
+"~w    c #423630",\r
+"{w    c #303630",\r
+"]w    c #323434",\r
+"^w    c #353333",\r
+"/w    c #382A2D",\r
+"(w    c #35322B",\r
+"_w    c #3B2E2E",\r
+":w    c #35232A",\r
+"<w    c #3C443C",\r
+"[w    c #646452",\r
+"}w    c #8A8D72",\r
+"|w    c #A69276",\r
+"1w    c #A4987E",\r
+"2w    c #A89C88",\r
+"3w    c #AA9579",\r
+"4w    c #A28B79",\r
+"5w    c #A2917B",\r
+"6w    c #A9826C",\r
+"7w    c #7C4B3F",\r
+"8w    c #71744F",\r
+"9w    c #A1925D",\r
+"0w    c #AB9774",\r
+"aw    c #B99576",\r
+"bw    c #B5956E",\r
+"cw    c #B18558",\r
+"dw    c #A15C49",\r
+"ew    c #756C57",\r
+"fw    c #8B9080",\r
+"gw    c #AA9E89",\r
+"hw    c #A89E85",\r
+"iw    c #A89F8A",\r
+"jw    c #9B8A7C",\r
+"kw    c #87856D",\r
+"lw    c #A0927A",\r
+"mw    c #A1997C",\r
+"nw    c #A49974",\r
+"ow    c #9D977D",\r
+"pw    c #95907C",\r
+"qw    c #968D6E",\r
+"rw    c #969374",\r
+"sw    c #949179",\r
+"tw    c #8F8D77",\r
+"uw    c #9A8F79",\r
+"vw    c #A09172",\r
+"ww    c #97937D",\r
+"xw    c #9A9482",\r
+"yw    c #9F8D75",\r
+"zw    c #97907A",\r
+"Aw    c #99846F",\r
+"Bw    c #847E6D",\r
+"Cw    c #887C68",\r
+"Dw    c #7B7256",\r
+"Ew    c #6B684B",\r
+"Fw    c #5E5B4F",\r
+"Gw    c #615B4E",\r
+"Hw    c #615B52",\r
+"Iw    c #6C5548",\r
+"Jw    c #685F57",\r
+"Kw    c #655C4F",\r
+"Lw    c #615546",\r
+"Mw    c #50493F",\r
+"Nw    c #49463F",\r
+"Ow    c #463D3A",\r
+"Pw    c #45463D",\r
+"Qw    c #5E4B36",\r
+"Rw    c #503B2E",\r
+"Sw    c #50513C",\r
+"Tw    c #6A7162",\r
+"Uw    c #7D7E68",\r
+"Vw    c #908767",\r
+"Ww    c #817159",\r
+"Xw    c #76715C",\r
+"Yw    c #7E7A5E",\r
+"Zw    c #817C64",\r
+"`w    c #777969",\r
+" x    c #867D67",\r
+".x    c #8B7A64",\r
+"+x    c #867F63",\r
+"@x    c #908670",\r
+"#x    c #9B9880",\r
+"$x    c #A19B7B",\r
+"%x    c #A4927D",\r
+"&x    c #A7947F",\r
+"*x    c #92916C",\r
+"=x    c #918F7F",\r
+"-x    c #A9A087",\r
+";x    c #ABA58D",\r
+">x    c #ABA28E",\r
+",x    c #ACA387",\r
+"'x    c #B19E7D",\r
+")x    c #AD9280",\r
+"!x    c #AA9878",\r
+"~x    c #AC976E",\r
+"{x    c #A48973",\r
+"]x    c #A58E6A",\r
+"^x    c #A99573",\r
+"/x    c #AA947C",\r
+"(x    c #977A64",\r
+"_x    c #7B6054",\r
+":x    c #67483F",\r
+"<x    c #534434",\r
+"[x    c #413033",\r
+"}x    c #352C2D",\r
+"|x    c #372E31",\r
+"1x    c #3B3135",\r
+"2x    c #443737",\r
+"3x    c #423634",\r
+"4x    c #413A38",\r
+"5x    c #4C4E40",\r
+"6x    c #6D6B5B",\r
+"7x    c #8B8D72",\r
+"8x    c #AC9C78",\r
+"9x    c #B1977D",\r
+"0x    c #AF957D",\r
+"ax    c #AC9B83",\r
+"bx    c #AB947F",\r
+"cx    c #AF9C84",\r
+"dx    c #B19F80",\r
+"ex    c #A4967F",\r
+"fx    c #B29879",\r
+"gx    c #A97C5B",\r
+"hx    c #6C3C31",\r
+"ix    c #685537",\r
+"jx    c #927E5C",\r
+"kx    c #AE926C",\r
+"lx    c #CBA674",\r
+"mx    c #D0B088",\r
+"nx    c #D7B489",\r
+"ox    c #D8B589",\r
+"px    c #D6AD81",\r
+"qx    c #D7AA76",\r
+"rx    c #D6A975",\r
+"sx    c #D8A479",\r
+"tx    c #D8AB7B",\r
+"ux    c #DAB38B",\r
+"vx    c #D6A171",\r
+"wx    c #CCA15F",\r
+"xx    c #D1B085",\r
+"yx    c #D2A47C",\r
+"zx    c #D29467",\r
+"Ax    c #CA9A6B",\r
+"Bx    c #C99C6B",\r
+"Cx    c #C39D6A",\r
+"Dx    c #C39E5F",\r
+"Ex    c #D5A15D",\r
+"Fx    c #C2755D",\r
+"Gx    c #793736",\r
+"Hx    c #331D22",\r
+"Ix    c #343221",\r
+"Jx    c #787753",\r
+"Kx    c #97775C",\r
+"Lx    c #6C4A3D",\r
+"Mx    c #342A2A",\r
+"Nx    c #1D1A21",\r
+"Ox    c #292427",\r
+"Px    c #3C412C",\r
+"Qx    c #50462C",\r
+"Rx    c #4E3833",\r
+"Sx    c #3C292E",\r
+"Tx    c #241E23",\r
+"Ux    c #232523",\r
+"Vx    c #2C3128",\r
+"Wx    c #343435",\r
+"Xx    c #252327",\r
+"Yx    c #242624",\r
+"Zx    c #1F2126",\r
+"`x    c #24292A",\r
+" y    c #2F2929",\r
+".y    c #42392B",\r
+"+y    c #414232",\r
+"@y    c #3A3130",\r
+"#y    c #373028",\r
+"$y    c #2D2623",\r
+"%y    c #2B2F25",\r
+"&y    c #342C28",\r
+"*y    c #362626",\r
+"=y    c #372730",\r
+"-y    c #322B24",\r
+";y    c #3C403A",\r
+">y    c #818176",\r
+",y    c #A69E88",\r
+"'y    c #A59B83",\r
+")y    c #A3917F",\r
+"!y    c #A3977C",\r
+"~y    c #A28D7B",\r
+"{y    c #A06C64",\r
+"]y    c #694637",\r
+"^y    c #7E7046",\r
+"/y    c #9F8862",\r
+"(y    c #B09C71",\r
+"_y    c #BBA468",\r
+":y    c #B5996E",\r
+"<y    c #B09060",\r
+"[y    c #B1864B",\r
+"}y    c #9F684E",\r
+"|y    c #76745C",\r
+"1y    c #8B9081",\r
+"2y    c #9F9983",\r
+"3y    c #A4947F",\r
+"4y    c #988975",\r
+"5y    c #8A8B70",\r
+"6y    c #968777",\r
+"7y    c #927A6F",\r
+"8y    c #948163",\r
+"9y    c #867A61",\r
+"0y    c #806E65",\r
+"ay    c #796862",\r
+"by    c #705C55",\r
+"cy    c #6B5745",\r
+"dy    c #5E5944",\r
+"ey    c #515446",\r
+"fy    c #58534A",\r
+"gy    c #544E4C",\r
+"hy    c #5B4F50",\r
+"iy    c #615452",\r
+"jy    c #5A4B4C",\r
+"ky    c #504A3C",\r
+"ly    c #564737",\r
+"my    c #443F34",\r
+"ny    c #473436",\r
+"oy    c #393433",\r
+"py    c #31302A",\r
+"qy    c #37302D",\r
+"ry    c #39332D",\r
+"sy    c #32272C",\r
+"ty    c #302F2B",\r
+"uy    c #2E2C26",\r
+"vy    c #312E2D",\r
+"wy    c #342E28",\r
+"xy    c #2D3235",\r
+"yy    c #2E2E2F",\r
+"zy    c #2E3532",\r
+"Ay    c #313433",\r
+"By    c #363F39",\r
+"Cy    c #946759",\r
+"Dy    c #7C7048",\r
+"Ey    c #8C7A5A",\r
+"Fy    c #715552",\r
+"Gy    c #59524C",\r
+"Hy    c #61614D",\r
+"Iy    c #726752",\r
+"Jy    c #745946",\r
+"Ky    c #5B513D",\r
+"Ly    c #7A7458",\r
+"My    c #7F7A5D",\r
+"Ny    c #6A6552",\r
+"Oy    c #6D624E",\r
+"Py    c #7A7053",\r
+"Qy    c #826F62",\r
+"Ry    c #786F60",\r
+"Sy    c #787C5F",\r
+"Ty    c #928977",\r
+"Uy    c #A49779",\r
+"Vy    c #A09677",\r
+"Wy    c #A09783",\r
+"Xy    c #A29C85",\r
+"Yy    c #A49A8E",\r
+"Zy    c #AA9F8B",\r
+"`y    c #A99581",\r
+" z    c #AD9D7A",\r
+".z    c #AC9377",\r
+"+z    c #A79574",\r
+"@z    c #A79275",\r
+"#z    c #AA9264",\r
+"$z    c #A07A62",\r
+"%z    c #7F5752",\r
+"&z    c #583733",\r
+"*z    c #3A2F2F",\r
+"=z    c #332928",\r
+"-z    c #2E292D",\r
+";z    c #2D2628",\r
+">z    c #322E33",\r
+",z    c #332E2E",\r
+"'z    c #2B312C",\r
+")z    c #30252C",\r
+"!z    c #2E2A2B",\r
+"~z    c #3A3437",\r
+"{z    c #52544C",\r
+"]z    c #8A907A",\r
+"^z    c #A49B88",\r
+"/z    c #B69D7E",\r
+"(z    c #A99D84",\r
+"_z    c #B19E78",\r
+":z    c #B1947B",\r
+"<z    c #AA9980",\r
+"[z    c #AD977E",\r
+"}z    c #AE8D74",\r
+"|z    c #7D483B",\r
+"1z    c #584A39",\r
+"2z    c #907556",\r
+"3z    c #B29264",\r
+"4z    c #C5A17D",\r
+"5z    c #D1A683",\r
+"6z    c #D3AC88",\r
+"7z    c #D4AC8B",\r
+"8z    c #D19D79",\r
+"9z    c #CC9369",\r
+"0z    c #C49463",\r
+"az    c #C99D69",\r
+"bz    c #D2B47D",\r
+"cz    c #D7B890",\r
+"dz    c #D58F60",\r
+"ez    c #C4975A",\r
+"fz    c #D2A279",\r
+"gz    c #D6A67C",\r
+"hz    c #D5A677",\r
+"iz    c #D4A666",\r
+"jz    c #CE9F69",\r
+"kz    c #CCA975",\r
+"lz    c #D1A471",\r
+"mz    c #D1996E",\r
+"nz    c #BB6A51",\r
+"oz    c #6B3D34",\r
+"pz    c #433A27",\r
+"qz    c #4E5238",\r
+"rz    c #97846C",\r
+"sz    c #9D5F55",\r
+"tz    c #4E2B2D",\r
+"uz    c #2B2526",\r
+"vz    c #231A20",\r
+"wz    c #282A25",\r
+"xz    c #47453E",\r
+"yz    c #462F2D",\r
+"zz    c #381F2C",\r
+"Az    c #201D22",\r
+"Bz    c #292D24",\r
+"Cz    c #2C2E2D",\r
+"Dz    c #41373B",\r
+"Ez    c #28242C",\r
+"Fz    c #242327",\r
+"Gz    c #241D25",\r
+"Hz    c #26272C",\r
+"Iz    c #2B2525",\r
+"Jz    c #342F29",\r
+"Kz    c #47402F",\r
+"Lz    c #373031",\r
+"Mz    c #33352C",\r
+"Nz    c #2D2626",\r
+"Oz    c #2E2725",\r
+"Pz    c #2E2C2D",\r
+"Qz    c #322A29",\r
+"Rz    c #332A2E",\r
+"Sz    c #35292C",\r
+"Tz    c #4E5453",\r
+"Uz    c #838578",\r
+"Vz    c #998A7B",\r
+"Wz    c #9C9078",\r
+"Xz    c #928576",\r
+"Yz    c #93876C",\r
+"Zz    c #885A53",\r
+"`z    c #604F38",\r
+" A    c #87764C",\r
+".A    c #A18463",\r
+"+A    c #B29C70",\r
+"@A    c #B4A075",\r
+"#A    c #B5976F",\r
+"$A    c #AF8A63",\r
+"%A    c #AC8551",\r
+"&A    c #9E654B",\r
+"*A    c #725243",\r
+"=A    c #564D54",\r
+"-A    c #514949",\r
+";A    c #544942",\r
+">A    c #584744",\r
+",A    c #4F4241",\r
+"'A    c #4F4542",\r
+")A    c #514246",\r
+"!A    c #463A40",\r
+"~A    c #453B35",\r
+"{A    c #453E36",\r
+"]A    c #423735",\r
+"^A    c #403638",\r
+"/A    c #37312F",\r
+"(A    c #363830",\r
+"_A    c #3B3D34",\r
+":A    c #423F2D",\r
+"<A    c #32282B",\r
+"[A    c #34362A",\r
+"}A    c #46322A",\r
+"|A    c #32352F",\r
+"1A    c #2F292C",\r
+"2A    c #2D2927",\r
+"3A    c #2A2F30",\r
+"4A    c #342E2A",\r
+"5A    c #372B2A",\r
+"6A    c #36362C",\r
+"7A    c #49462A",\r
+"8A    c #39362D",\r
+"9A    c #4F4134",\r
+"0A    c #50493A",\r
+"aA    c #3B3137",\r
+"bA    c #342D26",\r
+"cA    c #292F2B",\r
+"dA    c #2E2D2C",\r
+"eA    c #333336",\r
+"fA    c #2D3839",\r
+"gA    c #353231",\r
+"hA    c #312F3C",\r
+"iA    c #323637",\r
+"jA    c #885B48",\r
+"kA    c #9F945F",\r
+"lA    c #BA9C6B",\r
+"mA    c #9A7B67",\r
+"nA    c #797560",\r
+"oA    c #736957",\r
+"pA    c #736D65",\r
+"qA    c #63553E",\r
+"rA    c #5F674D",\r
+"sA    c #8A8C60",\r
+"tA    c #847D56",\r
+"uA    c #79735A",\r
+"vA    c #795B3F",\r
+"wA    c #756E51",\r
+"xA    c #777353",\r
+"yA    c #6E7351",\r
+"zA    c #7B7667",\r
+"AA    c #847763",\r
+"BA    c #91836C",\r
+"CA    c #938A78",\r
+"DA    c #A99486",\r
+"EA    c #A7A080",\r
+"FA    c #AA9A87",\r
+"GA    c #A79880",\r
+"HA    c #A79778",\r
+"IA    c #AB9577",\r
+"JA    c #A99570",\r
+"KA    c #9F9679",\r
+"LA    c #AC9A78",\r
+"MA    c #9E795E",\r
+"NA    c #644046",\r
+"OA    c #3D2B2C",\r
+"PA    c #2E2A26",\r
+"QA    c #2A3231",\r
+"RA    c #26262D",\r
+"SA    c #262327",\r
+"TA    c #292926",\r
+"UA    c #303435",\r
+"VA    c #2D2C31",\r
+"WA    c #26282F",\r
+"XA    c #272E30",\r
+"YA    c #2A2A30",\r
+"ZA    c #2A2B36",\r
+"`A    c #2F2D34",\r
+" B    c #343130",\r
+".B    c #4E5351",\r
+"+B    c #818477",\r
+"@B    c #A69E84",\r
+"#B    c #AA9E88",\r
+"$B    c #B19E85",\r
+"%B    c #B2A07B",\r
+"&B    c #AB9677",\r
+"*B    c #AB9477",\r
+"=B    c #A9987B",\r
+"-B    c #A8977E",\r
+";B    c #AB9475",\r
+">B    c #B08B77",\r
+",B    c #8A5E3E",\r
+"'B    c #5E4739",\r
+")B    c #8D6951",\r
+"!B    c #A88456",\r
+"~B    c #B79674",\r
+"{B    c #CA9874",\r
+"]B    c #CD9672",\r
+"^B    c #CB916E",\r
+"/B    c #C27A51",\r
+"(B    c #B06E45",\r
+"_B    c #B68754",\r
+":B    c #C89A5C",\r
+"<B    c #CFA976",\r
+"[B    c #D4B38A",\r
+"}B    c #CF905C",\r
+"|B    c #BD8B51",\r
+"1B    c #BD8C68",\r
+"2B    c #CA9D78",\r
+"3B    c #D5AB85",\r
+"4B    c #D7B080",\r
+"5B    c #D4AC82",\r
+"6B    c #D1AB83",\r
+"7B    c #D3A270",\r
+"8B    c #CA8F64",\r
+"9B    c #A3573A",\r
+"0B    c #7A653A",\r
+"aB    c #937F49",\r
+"bB    c #99844A",\r
+"cB    c #A78368",\r
+"dB    c #8F584E",\r
+"eB    c #351E27",\r
+"fB    c #251E20",\r
+"gB    c #292E2B",\r
+"hB    c #373B2C",\r
+"iB    c #58483D",\r
+"jB    c #553B37",\r
+"kB    c #422D2D",\r
+"lB    c #29202C",\r
+"mB    c #24242A",\r
+"nB    c #2D2F29",\r
+"oB    c #282029",\r
+"pB    c #433E2E",\r
+"qB    c #3C3739",\r
+"rB    c #2B302F",\r
+"sB    c #2C252D",\r
+"tB    c #2C252B",\r
+"uB    c #312526",\r
+"vB    c #312922",\r
+"wB    c #413630",\r
+"xB    c #3F3631",\r
+"yB    c #3C2F30",\r
+"zB    c #2C2C2C",\r
+"AB    c #2F2E34",\r
+"BB    c #2C2F31",\r
+"CB    c #2D2B32",\r
+"DB    c #2A262F",\r
+"EB    c #312327",\r
+"FB    c #303432",\r
+"GB    c #555451",\r
+"HB    c #645C52",\r
+"IB    c #5F5350",\r
+"JB    c #5C494C",\r
+"KB    c #4B4248",\r
+"LB    c #4B4348",\r
+"MB    c #433B3F",\r
+"NB    c #4D4135",\r
+"OB    c #676040",\r
+"PB    c #9B8349",\r
+"QB    c #A49061",\r
+"RB    c #AD966B",\r
+"SB    c #AF9A72",\r
+"TB    c #B49771",\r
+"UB    c #B28E57",\r
+"VB    c #AB8256",\r
+"WB    c #9C6D46",\r
+"XB    c #683830",\r
+"YB    c #393336",\r
+"ZB    c #373A2F",\r
+"`B    c #373932",\r
+" C    c #3C393B",\r
+".C    c #33332D",\r
+"+C    c #303735",\r
+"@C    c #2C3030",\r
+"#C    c #30342F",\r
+"$C    c #353731",\r
+"%C    c #343A37",\r
+"&C    c #3A3939",\r
+"*C    c #38352C",\r
+"=C    c #2C332D",\r
+"-C    c #434234",\r
+";C    c #514A32",\r
+">C    c #342E31",\r
+",C    c #3A3F33",\r
+"'C    c #544531",\r
+")C    c #2F3D40",\r
+"!C    c #342F32",\r
+"~C    c #292826",\r
+"{C    c #2E3A35",\r
+"]C    c #3E392E",\r
+"^C    c #4A3334",\r
+"/C    c #34372F",\r
+"(C    c #393532",\r
+"_C    c #2C3233",\r
+":C    c #2D312F",\r
+"<C    c #36332E",\r
+"[C    c #372E27",\r
+"}C    c #322B2C",\r
+"|C    c #292F2D",\r
+"1C    c #222F2F",\r
+"2C    c #303137",\r
+"3C    c #272B2C",\r
+"4C    c #273131",\r
+"5C    c #2F3531",\r
+"6C    c #86603B",\r
+"7C    c #A8936C",\r
+"8C    c #C1A170",\r
+"9C    c #AE876D",\r
+"0C    c #8B7860",\r
+"aC    c #918C71",\r
+"bC    c #998F78",\r
+"cC    c #A39975",\r
+"dC    c #9E8C63",\r
+"eC    c #8E896D",\r
+"fC    c #9A9A6E",\r
+"gC    c #A39678",\r
+"hC    c #9C9073",\r
+"iC    c #887B5C",\r
+"jC    c #89805E",\r
+"kC    c #786855",\r
+"lC    c #6A5E4C",\r
+"mC    c #6C6F5B",\r
+"nC    c #736D57",\r
+"oC    c #7B6C59",\r
+"pC    c #7C6961",\r
+"qC    c #766F57",\r
+"rC    c #878671",\r
+"sC    c #AA9976",\r
+"tC    c #AA9F75",\r
+"uC    c #A7917A",\r
+"vC    c #A89B7C",\r
+"wC    c #A5937D",\r
+"xC    c #A89679",\r
+"yC    c #A9987F",\r
+"zC    c #A27C68",\r
+"AC    c #673C3F",\r
+"BC    c #3C3334",\r
+"CC    c #363430",\r
+"DC    c #2D262C",\r
+"EC    c #2C2B30",\r
+"FC    c #26242A",\r
+"GC    c #27282E",\r
+"HC    c #252B2B",\r
+"IC    c #2A2D23",\r
+"JC    c #272D30",\r
+"KC    c #272E2C",\r
+"LC    c #273430",\r
+"MC    c #272E2F",\r
+"NC    c #2E2B2F",\r
+"OC    c #3A3431",\r
+"PC    c #312A28",\r
+"QC    c #363130",\r
+"RC    c #475451",\r
+"SC    c #858972",\r
+"TC    c #AC9B80",\r
+"UC    c #B19E7E",\r
+"VC    c #AF9D7D",\r
+"WC    c #AA9B78",\r
+"XC    c #AC917C",\r
+"YC    c #A88F7A",\r
+"ZC    c #9C886E",\r
+"`C    c #A78F5F",\r
+" D    c #B49768",\r
+".D    c #A9643D",\r
+"+D    c #683F30",\r
+"@D    c #7D6F4D",\r
+"#D    c #95754C",\r
+"$D    c #A97059",\r
+"%D    c #B38464",\r
+"&D    c #B27C57",\r
+"*D    c #B87D56",\r
+"=D    c #BE904B",\r
+"-D    c #B88F4D",\r
+";D    c #CC9B6A",\r
+">D    c #D49E68",\r
+",D    c #D1B080",\r
+"'D    c #D8BA91",\r
+")D    c #D69464",\r
+"!D    c #C3835B",\r
+"~D    c #AF6A4C",\r
+"{D    c #AE7B57",\r
+"]D    c #CDA26F",\r
+"^D    c #D3A775",\r
+"/D    c #D3A682",\r
+"(D    c #CEA079",\r
+"_D    c #CA956C",\r
+":D    c #BE6C52",\r
+"<D    c #784530",\r
+"[D    c #77744C",\r
+"}D    c #BA925F",\r
+"|D    c #BF9C46",\r
+"1D    c #B58D54",\r
+"2D    c #9F5843",\r
+"3D    c #321E1D",\r
+"4D    c #242526",\r
+"5D    c #333439",\r
+"6D    c #493F37",\r
+"7D    c #573F36",\r
+"8D    c #4A3D34",\r
+"9D    c #3A2426",\r
+"0D    c #261E24",\r
+"aD    c #2C2B28",\r
+"bD    c #282A20",\r
+"cD    c #33342A",\r
+"dD    c #56443F",\r
+"eD    c #433532",\r
+"fD    c #3D382A",\r
+"gD    c #514834",\r
+"hD    c #473F29",\r
+"iD    c #362E21",\r
+"jD    c #373831",\r
+"kD    c #4C3E33",\r
+"lD    c #3F3535",\r
+"mD    c #30322C",\r
+"nD    c #2A2822",\r
+"oD    c #2E2628",\r
+"pD    c #322F32",\r
+"qD    c #2D2933",\r
+"rD    c #372829",\r
+"sD    c #332723",\r
+"tD    c #484238",\r
+"uD    c #484141",\r
+"vD    c #424138",\r
+"wD    c #494B46",\r
+"xD    c #41403B",\r
+"yD    c #404A3D",\r
+"zD    c #423933",\r
+"AD    c #525036",\r
+"BD    c #797051",\r
+"CD    c #A58D5A",\r
+"DD    c #A88E61",\r
+"ED    c #AA936D",\r
+"FD    c #B39D70",\r
+"GD    c #B59B6D",\r
+"HD    c #AF905F",\r
+"ID    c #AF8855",\r
+"JD    c #A0713D",\r
+"KD    c #5F3630",\r
+"LD    c #363033",\r
+"MD    c #32312D",\r
+"ND    c #38372F",\r
+"OD    c #493436",\r
+"PD    c #34312A",\r
+"QD    c #2E302D",\r
+"RD    c #2D2E2C",\r
+"SD    c #313531",\r
+"TD    c #393A32",\r
+"UD    c #303535",\r
+"VD    c #343A3A",\r
+"WD    c #3E3D3D",\r
+"XD    c #363234",\r
+"YD    c #282B2B",\r
+"ZD    c #2F2E31",\r
+"`D    c #2C2C2E",\r
+" E    c #27252F",\r
+".E    c #393330",\r
+"+E    c #3C2E26",\r
+"@E    c #2B2B2C",\r
+"#E    c #342A29",\r
+"$E    c #262525",\r
+"%E    c #38412B",\r
+"&E    c #44423B",\r
+"*E    c #38352F",\r
+"=E    c #2B2D2B",\r
+"-E    c #2D342B",\r
+";E    c #2C2B2A",\r
+">E    c #33322F",\r
+",E    c #303027",\r
+"'E    c #353029",\r
+")E    c #322A26",\r
+"!E    c #232928",\r
+"~E    c #34382F",\r
+"{E    c #49382D",\r
+"]E    c #37382F",\r
+"^E    c #313F38",\r
+"/E    c #333C37",\r
+"(E    c #A5865B",\r
+"_E    c #B98E5E",\r
+":E    c #BCA166",\r
+"<E    c #A68868",\r
+"[E    c #866849",\r
+"}E    c #7C735E",\r
+"|E    c #8C836E",\r
+"1E    c #9E956F",\r
+"2E    c #A58F77",\r
+"3E    c #A38A6E",\r
+"4E    c #9D8E5E",\r
+"5E    c #9B8571",\r
+"6E    c #8B7F6C",\r
+"7E    c #928863",\r
+"8E    c #9D8D6D",\r
+"9E    c #8A764D",\r
+"0E    c #786B50",\r
+"aE    c #716C59",\r
+"bE    c #7A7051",\r
+"cE    c #936C47",\r
+"dE    c #7D6144",\r
+"eE    c #5C5240",\r
+"fE    c #665D4D",\r
+"gE    c #775F55",\r
+"hE    c #726A59",\r
+"iE    c #8D8171",\r
+"jE    c #A79273",\r
+"kE    c #AB9476",\r
+"lE    c #A8987A",\r
+"mE    c #A79C7D",\r
+"nE    c #A38072",\r
+"oE    c #6F3D3E",\r
+"pE    c #373230",\r
+"qE    c #3E464A",\r
+"rE    c #40373D",\r
+"sE    c #292527",\r
+"tE    c #29292A",\r
+"uE    c #29282A",\r
+"vE    c #28272B",\r
+"wE    c #26322B",\r
+"xE    c #2C2D29",\r
+"yE    c #282F33",\r
+"zE    c #26302C",\r
+"AE    c #343634",\r
+"BE    c #372B29",\r
+"CE    c #292C2B",\r
+"DE    c #362F33",\r
+"EE    c #34312E",\r
+"FE    c #2B2927",\r
+"GE    c #313231",\r
+"HE    c #55584E",\r
+"IE    c #938E78",\r
+"JE    c #A88A65",\r
+"KE    c #9E845A",\r
+"LE    c #A68A5B",\r
+"ME    c #AF8E5E",\r
+"NE    c #AF9768",\r
+"OE    c #B9A174",\r
+"PE    c #BC7C57",\r
+"QE    c #7D4232",\r
+"RE    c #786E48",\r
+"SE    c #A68054",\r
+"TE    c #A78259",\r
+"UE    c #A7815F",\r
+"VE    c #B48058",\r
+"WE    c #B2855C",\r
+"XE    c #B08967",\r
+"YE    c #BE9068",\r
+"ZE    c #BF8E68",\r
+"`E    c #C79C6E",\r
+" F    c #D2B383",\r
+".F    c #D7B992",\r
+"+F    c #D79F6F",\r
+"@F    c #CA9C6C",\r
+"#F    c #C07B56",\r
+"$F    c #9E6C43",\r
+"%F    c #B2945D",\r
+"&F    c #CA9D71",\r
+"*F    c #CFA070",\r
+"=F    c #CC9A5F",\r
+"-F    c #C58755",\r
+";F    c #A25641",\r
+">F    c #544530",\r
+",F    c #86815D",\r
+"'F    c #CEAC70",\r
+")F    c #CBAE66",\r
+"!F    c #C99E6E",\r
+"~F    c #AF584A",\r
+"{F    c #371D20",\r
+"]F    c #2E2E26",\r
+"^F    c #413A31",\r
+"/F    c #4C422F",\r
+"(F    c #4D362D",\r
+"_F    c #4B332E",\r
+":F    c #2D2824",\r
+"<F    c #232424",\r
+"[F    c #282320",\r
+"}F    c #292322",\r
+"|F    c #292423",\r
+"1F    c #2A292B",\r
+"2F    c #584E38",\r
+"3F    c #745233",\r
+"4F    c #645036",\r
+"5F    c #765941",\r
+"6F    c #7E6038",\r
+"7F    c #643C2D",\r
+"8F    c #3E392A",\r
+"9F    c #4E3830",\r
+"0F    c #493B3A",\r
+"aF    c #393537",\r
+"bF    c #312E2B",\r
+"cF    c #342F36",\r
+"dF    c #292A32",\r
+"eF    c #3A3E2B",\r
+"fF    c #574137",\r
+"gF    c #62403E",\r
+"hF    c #38383C",\r
+"iF    c #37353C",\r
+"jF    c #3D3538",\r
+"kF    c #3C332D",\r
+"lF    c #6B5C37",\r
+"mF    c #927C4B",\r
+"nF    c #9C8F61",\r
+"oF    c #A89064",\r
+"pF    c #B3956A",\r
+"qF    c #B19370",\r
+"rF    c #B49F72",\r
+"sF    c #B79668",\r
+"tF    c #A78359",\r
+"uF    c #986B3D",\r
+"vF    c #662A27",\r
+"wF    c #2F2B26",\r
+"xF    c #31382A",\r
+"yF    c #43442D",\r
+"zF    c #533732",\r
+"AF    c #3B3832",\r
+"BF    c #2F3328",\r
+"CF    c #33302B",\r
+"DF    c #39363C",\r
+"EF    c #3B3432",\r
+"FF    c #2F3836",\r
+"GF    c #384341",\r
+"HF    c #403D3C",\r
+"IF    c #373934",\r
+"JF    c #373832",\r
+"KF    c #242528",\r
+"LF    c #312C28",\r
+"MF    c #292A26",\r
+"NF    c #272720",\r
+"OF    c #342C26",\r
+"PF    c #38302B",\r
+"QF    c #292324",\r
+"RF    c #333F3D",\r
+"SF    c #564C39",\r
+"TF    c #413A35",\r
+"UF    c #40372A",\r
+"VF    c #3C3428",\r
+"WF    c #2C292B",\r
+"XF    c #2F2E30",\r
+"YF    c #3A2D2B",\r
+"ZF    c #352F2B",\r
+"`F    c #232A32",\r
+" G    c #2E3228",\r
+".G    c #343631",\r
+"+G    c #322F2F",\r
+"@G    c #304339",\r
+"#G    c #BAAB86",\r
+"$G    c #D0B27C",\r
+"%G    c #D2B97C",\r
+"&G    c #C39A74",\r
+"*G    c #AD7D4F",\r
+"=G    c #825745",\r
+"-G    c #6C5C4E",\r
+";G    c #756850",\r
+">G    c #766A5B",\r
+",G    c #7E624E",\r
+"'G    c #766147",\r
+")G    c #6B594B",\r
+"!G    c #605A44",\r
+"~G    c #6E6344",\r
+"{G    c #766854",\r
+"]G    c #775E42",\r
+"^G    c #5F5140",\r
+"/G    c #53573E",\r
+"(G    c #747756",\r
+"_G    c #997F5F",\r
+":G    c #797359",\r
+"<G    c #6E7559",\r
+"[G    c #817C59",\r
+"}G    c #877C53",\r
+"|G    c #918A71",\r
+"1G    c #AA9D78",\r
+"2G    c #A7907F",\r
+"3G    c #AD9D81",\r
+"4G    c #AF997D",\r
+"5G    c #8D584E",\r
+"6G    c #462E2A",\r
+"7G    c #33423D",\r
+"8G    c #474B4D",\r
+"9G    c #3F3637",\r
+"0G    c #272C2F",\r
+"aG    c #2A2A32",\r
+"bG    c #2A3029",\r
+"cG    c #2C2B2C",\r
+"dG    c #2A3033",\r
+"eG    c #322D2E",\r
+"fG    c #292A2A",\r
+"gG    c #38362D",\r
+"hG    c #3B2E2F",\r
+"iG    c #2D282D",\r
+"jG    c #312C35",\r
+"kG    c #363034",\r
+"lG    c #352D29",\r
+"mG    c #33242A",\r
+"nG    c #343430",\r
+"oG    c #5F573F",\r
+"pG    c #A07F55",\r
+"qG    c #A68962",\r
+"rG    c #AA8652",\r
+"sG    c #A89056",\r
+"tG    c #B7975B",\r
+"uG    c #BD9C68",\r
+"vG    c #BBA072",\r
+"wG    c #BEA276",\r
+"xG    c #BA845F",\r
+"yG    c #854035",\r
+"zG    c #625E4F",\r
+"AG    c #A58563",\r
+"BG    c #B89A6D",\r
+"CG    c #C19A6F",\r
+"DG    c #C6846C",\r
+"EG    c #AA6648",\r
+"FG    c #987A54",\r
+"GG    c #AE8D68",\r
+"HG    c #AF784B",\r
+"IG    c #AF8556",\r
+"JG    c #BF9D6E",\r
+"KG    c #CCA376",\r
+"LG    c #C78D6D",\r
+"MG    c #C08F66",\r
+"NG    c #BF8558",\r
+"OG    c #B38658",\r
+"PG    c #BE874B",\r
+"QG    c #C29366",\r
+"RG    c #C6986D",\r
+"SG    c #C28D5B",\r
+"TG    c #AE5E4A",\r
+"UG    c #6F3A32",\r
+"VG    c #636540",\r
+"WG    c #AE9F66",\r
+"XG    c #CFAC6F",\r
+"YG    c #CDB277",\r
+"ZG    c #CEA277",\r
+"`G    c #9F5349",\r
+" H    c #38211E",\r
+".H    c #312D2B",\r
+"+H    c #3D302B",\r
+"@H    c #44332D",\r
+"#H    c #514128",\r
+"$H    c #55392C",\r
+"%H    c #2C2824",\r
+"&H    c #221E22",\r
+"*H    c #262424",\r
+"=H    c #242322",\r
+"-H    c #2E2326",\r
+";H    c #2B2726",\r
+">H    c #64583B",\r
+",H    c #A2823F",\r
+"'H    c #9B6C3F",\r
+")H    c #956D39",\r
+"!H    c #9B7640",\r
+"~H    c #956845",\r
+"{H    c #4F3B32",\r
+"]H    c #44332B",\r
+"^H    c #493D32",\r
+"/H    c #443735",\r
+"(H    c #3A2F2C",\r
+"_H    c #302928",\r
+":H    c #30302E",\r
+"<H    c #29292C",\r
+"[H    c #32292A",\r
+"}H    c #382B2C",\r
+"|H    c #39352C",\r
+"1H    c #514133",\r
+"2H    c #6B4B37",\r
+"3H    c #473632",\r
+"4H    c #2B2B32",\r
+"5H    c #312F2D",\r
+"6H    c #433E35",\r
+"7H    c #726646",\r
+"8H    c #91824F",\r
+"9H    c #9E8464",\r
+"0H    c #AA9368",\r
+"aH    c #B49B65",\r
+"bH    c #AD956C",\r
+"cH    c #B59260",\r
+"dH    c #B5965F",\r
+"eH    c #A88251",\r
+"fH    c #9C633D",\r
+"gH    c #643B2D",\r
+"hH    c #383532",\r
+"iH    c #34362E",\r
+"jH    c #47332F",\r
+"kH    c #402C29",\r
+"lH    c #36362E",\r
+"mH    c #312A29",\r
+"nH    c #2A3428",\r
+"oH    c #282A32",\r
+"pH    c #2B2F2F",\r
+"qH    c #2F3434",\r
+"rH    c #262F31",\r
+"sH    c #262F32",\r
+"tH    c #312C32",\r
+"uH    c #3A3334",\r
+"vH    c #483932",\r
+"wH    c #32282F",\r
+"xH    c #242D2F",\r
+"yH    c #312226",\r
+"zH    c #262026",\r
+"AH    c #22292C",\r
+"BH    c #2E2F2B",\r
+"CH    c #261E22",\r
+"DH    c #202629",\r
+"EH    c #2B3035",\r
+"FH    c #514736",\r
+"GH    c #40352D",\r
+"HH    c #29262B",\r
+"IH    c #332C29",\r
+"JH    c #2C2F2A",\r
+"KH    c #272C2E",\r
+"LH    c #292E39",\r
+"MH    c #2B2335",\r
+"NH    c #282C31",\r
+"OH    c #3C403B",\r
+"PH    c #33323A",\r
+"QH    c #283038",\r
+"RH    c #2F4245",\r
+"SH    c #C0B291",\r
+"TH    c #D4B995",\r
+"UH    c #D8C099",\r
+"VH    c #D4BA8E",\r
+"WH    c #D2A26B",\r
+"XH    c #B7825D",\r
+"YH    c #8F693E",\r
+"ZH    c #797351",\r
+"`H    c #8A9062",\r
+" I    c #A49C67",\r
+".I    c #9D9A62",\r
+"+I    c #9C9A65",\r
+"@I    c #A8A66B",\r
+"#I    c #ACAE88",\r
+"$I    c #A5A081",\r
+"%I    c #9C9973",\r
+"&I    c #87856B",\r
+"*I    c #68664A",\r
+"=I    c #808869",\r
+"-I    c #AEA48C",\r
+";I    c #988C81",\r
+">I    c #8A9289",\r
+",I    c #9F9884",\r
+"'I    c #A29A80",\r
+")I    c #A7A288",\r
+"!I    c #AAA789",\r
+"~I    c #AFA682",\r
+"{I    c #AEA481",\r
+"]I    c #AE9D7B",\r
+"^I    c #A26F67",\r
+"/I    c #573234",\r
+"(I    c #2B2C27",\r
+"_I    c #36494E",\r
+":I    c #4A554C",\r
+"<I    c #384139",\r
+"[I    c #3B4545",\r
+"}I    c #444747",\r
+"|I    c #433A40",\r
+"1I    c #2E2C2E",\r
+"2I    c #282B29",\r
+"3I    c #2C2A33",\r
+"4I    c #2B282F",\r
+"5I    c #2A2E2D",\r
+"6I    c #2B222C",\r
+"7I    c #3B392F",\r
+"8I    c #3A3630",\r
+"9I    c #30272A",\r
+"0I    c #303836",\r
+"aI    c #353236",\r
+"bI    c #2E2B2C",\r
+"cI    c #4C4934",\r
+"dI    c #A0905E",\r
+"eI    c #BD9F6E",\r
+"fI    c #BCA160",\r
+"gI    c #C1A474",\r
+"hI    c #C4A57C",\r
+"iI    c #C4A07C",\r
+"jI    c #BDA06F",\r
+"kI    c #B3866F",\r
+"lI    c #934039",\r
+"mI    c #635B44",\r
+"nI    c #96865B",\r
+"oI    c #B68E66",\r
+"pI    c #C69D78",\r
+"qI    c #CC8D72",\r
+"rI    c #B9765D",\r
+"sI    c #BE7A5B",\r
+"tI    c #B78760",\r
+"uI    c #B3855B",\r
+"vI    c #B58D62",\r
+"wI    c #AA8B5B",\r
+"xI    c #A68559",\r
+"yI    c #AA8059",\r
+"zI    c #A87854",\r
+"AI    c #A2805F",\r
+"BI    c #AD8765",\r
+"CI    c #B68048",\r
+"DI    c #B18350",\r
+"EI    c #B68350",\r
+"FI    c #AB7A43",\r
+"GI    c #864A48",\r
+"HI    c #5C4232",\r
+"II    c #8B825F",\r
+"JI    c #C0A37A",\r
+"KI    c #D1AF7D",\r
+"LI    c #D4B685",\r
+"MI    c #CEA07B",\r
+"NI    c #A64940",\r
+"OI    c #46231E",\r
+"PI    c #333025",\r
+"QI    c #40322F",\r
+"RI    c #433330",\r
+"SI    c #494331",\r
+"TI    c #4D3834",\r
+"UI    c #2A1C25",\r
+"VI    c #251C1E",\r
+"WI    c #35302D",\r
+"XI    c #343128",\r
+"YI    c #302523",\r
+"ZI    c #302929",\r
+"`I    c #5A4B40",\r
+" J    c #A58E56",\r
+".J    c #BC8457",\r
+"+J    c #98643F",\r
+"@J    c #A37E53",\r
+"#J    c #AA7E4E",\r
+"$J    c #905739",\r
+"%J    c #4F3037",\r
+"&J    c #443733",\r
+"*J    c #5C403A",\r
+"=J    c #593B31",\r
+"-J    c #48372A",\r
+";J    c #3D3A38",\r
+">J    c #322C2F",\r
+",J    c #2C2529",\r
+"'J    c #2C2128",\r
+")J    c #29222A",\r
+"!J    c #3A3933",\r
+"~J    c #543D37",\r
+"{J    c #543035",\r
+"]J    c #2D2B2E",\r
+"^J    c #353C2D",\r
+"/J    c #62563A",\r
+"(J    c #8C7A47",\r
+"_J    c #968257",\r
+":J    c #A79069",\r
+"<J    c #AD976D",\r
+"[J    c #AE9B72",\r
+"}J    c #B3956C",\r
+"|J    c #B38E66",\r
+"1J    c #AC896A",\r
+"2J    c #AA814D",\r
+"3J    c #945838",\r
+"4J    c #482829",\r
+"5J    c #2D2929",\r
+"6J    c #343933",\r
+"7J    c #3A3635",\r
+"8J    c #2B2B28",\r
+"9J    c #292A25",\r
+"0J    c #242D2C",\r
+"aJ    c #2E3234",\r
+"bJ    c #2D3639",\r
+"cJ    c #3C4942",\r
+"dJ    c #443D3A",\r
+"eJ    c #2D2F30",\r
+"fJ    c #28272E",\r
+"gJ    c #242832",\r
+"hJ    c #2B2E2C",\r
+"iJ    c #2A282C",\r
+"jJ    c #2C272C",\r
+"kJ    c #292829",\r
+"lJ    c #242828",\r
+"mJ    c #291C2A",\r
+"nJ    c #1F2029",\r
+"oJ    c #252F2D",\r
+"pJ    c #26242D",\r
+"qJ    c #242A27",\r
+"rJ    c #362F2A",\r
+"sJ    c #2B2B2E",\r
+"tJ    c #242B2C",\r
+"uJ    c #333538",\r
+"vJ    c #2F242F",\r
+"wJ    c #253631",\r
+"xJ    c #2E3032",\r
+"yJ    c #2F252F",\r
+"zJ    c #282E34",\r
+"AJ    c #353C3A",\r
+"BJ    c #403B3C",\r
+"CJ    c #313138",\r
+"DJ    c #35424C",\r
+"EJ    c #AD947A",\r
+"FJ    c #CDAF89",\r
+"GJ    c #CFB495",\r
+"HJ    c #D3BB8F",\r
+"IJ    c #D2B587",\r
+"JJ    c #CC9673",\r
+"KJ    c #B1774E",\r
+"LJ    c #9F9B79",\r
+"MJ    c #B6B898",\r
+"NJ    c #C8C5A3",\r
+"OJ    c #CEC7AB",\r
+"PJ    c #C7C4A8",\r
+"QJ    c #CEC8A3",\r
+"RJ    c #CBBFAC",\r
+"SJ    c #BBB39B",\r
+"TJ    c #B0AF94",\r
+"UJ    c #AC9384",\r
+"VJ    c #847D53",\r
+"WJ    c #86917D",\r
+"XJ    c #B4B092",\r
+"YJ    c #ABA084",\r
+"ZJ    c #9F8B80",\r
+"`J    c #8E675C",\r
+" K    c #65594B",\r
+".K    c #6A5B53",\r
+"+K    c #6D5F59",\r
+"@K    c #6F5D57",\r
+"#K    c #675C50",\r
+"$K    c #615047",\r
+"%K    c #533539",\r
+"&K    c #372628",\r
+"*K    c #26322D",\r
+"=K    c #36474C",\r
+"-K    c #4D5254",\r
+";K    c #3B4041",\r
+">K    c #454E49",\r
+",K    c #595544",\r
+"'K    c #3E3942",\r
+")K    c #2E242C",\r
+"!K    c #252527",\r
+"~K    c #2D3434",\r
+"{K    c #2B282E",\r
+"]K    c #2B262B",\r
+"^K    c #47483A",\r
+"/K    c #84684A",\r
+"(K    c #7D6840",\r
+"_K    c #463234",\r
+":K    c #303533",\r
+"<K    c #2E323A",\r
+"[K    c #373134",\r
+"}K    c #3D3C33",\r
+"|K    c #82825A",\r
+"1K    c #BDA373",\r
+"2K    c #CCAA73",\r
+"3K    c #C8A97A",\r
+"4K    c #C9AA6F",\r
+"5K    c #C9A677",\r
+"6K    c #BD9C77",\r
+"7K    c #B59B6E",\r
+"8K    c #B78F71",\r
+"9K    c #A9644E",\r
+"0K    c #71593C",\r
+"aK    c #897B56",\r
+"bK    c #A88F56",\r
+"cK    c #BEA16C",\r
+"dK    c #D09C75",\r
+"eK    c #C87E5A",\r
+"fK    c #BB7C67",\r
+"gK    c #C67D65",\r
+"hK    c #C16C57",\r
+"iK    c #B17151",\r
+"jK    c #A57855",\r
+"kK    c #967C4A",\r
+"lK    c #9E7F52",\r
+"mK    c #A89057",\r
+"nK    c #AF8952",\r
+"oK    c #B58B61",\r
+"pK    c #BA9662",\r
+"qK    c #B78A5D",\r
+"rK    c #AB7F4B",\r
+"sK    c #9C6A3D",\r
+"tK    c #794035",\r
+"uK    c #72633C",\r
+"vK    c #A68B61",\r
+"wK    c #C1996E",\r
+"xK    c #CCAF7C",\r
+"yK    c #D0B489",\r
+"zK    c #CEA486",\r
+"AK    c #B1533F",\r
+"BK    c #4D2F23",\r
+"CK    c #34342C",\r
+"DK    c #432C2D",\r
+"EK    c #382D2C",\r
+"FK    c #473C2F",\r
+"GK    c #3C2D2D",\r
+"HK    c #2D2725",\r
+"IK    c #3E3B25",\r
+"JK    c #653730",\r
+"KK    c #543527",\r
+"LK    c #3E2D25",\r
+"MK    c #3C2E2E",\r
+"NK    c #605436",\r
+"OK    c #A3945B",\r
+"PK    c #BF936E",\r
+"QK    c #A46749",\r
+"RK    c #A17551",\r
+"SK    c #A98348",\r
+"TK    c #A66844",\r
+"UK    c #59282B",\r
+"VK    c #4C4237",\r
+"WK    c #704835",\r
+"XK    c #6C5939",\r
+"YK    c #836549",\r
+"ZK    c #72443A",\r
+"`K    c #3C2828",\r
+" L    c #2B2229",\r
+".L    c #302E33",\r
+"+L    c #4F392F",\r
+"@L    c #502E35",\r
+"#L    c #383234",\r
+"$L    c #4A4C39",\r
+"%L    c #796A4D",\r
+"&L    c #957C52",\r
+"*L    c #A2845B",\r
+"=L    c #A18B5F",\r
+"-L    c #AE9261",\r
+";L    c #B39D6F",\r
+">L    c #B09166",\r
+",L    c #AF906C",\r
+"'L    c #AF8E6B",\r
+")L    c #A18349",\r
+"!L    c #8D543C",\r
+"~L    c #4D2C26",\r
+"{L    c #38392B",\r
+"]L    c #374337",\r
+"^L    c #4A473B",\r
+"/L    c #2F322A",\r
+"(L    c #2B2727",\r
+"_L    c #2C2829",\r
+":L    c #464C3B",\r
+"<L    c #51443C",\r
+"[L    c #4D5340",\r
+"}L    c #5E554B",\r
+"|L    c #313129",\r
+"1L    c #2A292D",\r
+"2L    c #212325",\r
+"3L    c #232A2D",\r
+"4L    c #253230",\r
+"5L    c #3F2B2B",\r
+"6L    c #2B2224",\r
+"7L    c #28241E",\r
+"8L    c #242926",\r
+"9L    c #212129",\r
+"0L    c #262B29",\r
+"aL    c #1F2527",\r
+"bL    c #2E2727",\r
+"cL    c #2B2221",\r
+"dL    c #26252A",\r
+"eL    c #222C2A",\r
+"fL    c #252C2B",\r
+"gL    c #342A31",\r
+"hL    c #24252A",\r
+"iL    c #252423",\r
+"jL    c #2B332B",\r
+"kL    c #403A38",\r
+"lL    c #232B2F",\r
+"mL    c #2B2F31",\r
+"nL    c #2E3B32",\r
+"oL    c #373437",\r
+"pL    c #292E37",\r
+"qL    c #334141",\r
+"rL    c #A98A64",\r
+"sL    c #AF8F6D",\r
+"tL    c #C3A07E",\r
+"uL    c #CD9D79",\r
+"vL    c #C39974",\r
+"wL    c #B56F55",\r
+"xL    c #936C4A",\r
+"yL    c #9B967D",\r
+"zL    c #C4B690",\r
+"AL    c #C3C2A5",\r
+"BL    c #D0CBB4",\r
+"CL    c #D0C9B1",\r
+"DL    c #D1C9AF",\r
+"EL    c #C6B9A5",\r
+"FL    c #9C9581",\r
+"GL    c #969A80",\r
+"HL    c #9D9D80",\r
+"IL    c #A5AA88",\r
+"JL    c #ABAC8E",\r
+"KL    c #B39B8C",\r
+"LL    c #918573",\r
+"ML    c #A89B81",\r
+"NL    c #AE8A75",\r
+"OL    c #715549",\r
+"PL    c #56463B",\r
+"QL    c #423B34",\r
+"RL    c #3A4338",\r
+"SL    c #4C413C",\r
+"TL    c #403434",\r
+"UL    c #2B2323",\r
+"VL    c #272722",\r
+"WL    c #252826",\r
+"XL    c #2A363B",\r
+"YL    c #403D3F",\r
+"ZL    c #363336",\r
+"`L    c #413135",\r
+" M    c #333736",\r
+".M    c #2C272A",\r
+"+M    c #252629",\r
+"@M    c #28302C",\r
+"#M    c #2A282E",\r
+"$M    c #343B29",\r
+"%M    c #7D7045",\r
+"&M    c #AD9367",\r
+"*M    c #AE8855",\r
+"=M    c #85644B",\r
+"-M    c #3A372B",\r
+";M    c #353334",\r
+">M    c #3C3633",\r
+",M    c #303030",\r
+"'M    c #606651",\r
+")M    c #B0AA7F",\r
+"!M    c #D1B88C",\r
+"~M    c #CDB589",\r
+"{M    c #CCAF7D",\r
+"]M    c #C7A57D",\r
+"^M    c #C19568",\r
+"/M    c #B7996C",\r
+"(M    c #BAA375",\r
+"_M    c #B7895F",\r
+":M    c #805036",\r
+"<M    c #746349",\r
+"[M    c #AC8D58",\r
+"}M    c #B6966C",\r
+"|M    c #CDA979",\r
+"1M    c #CD9C68",\r
+"2M    c #BD845E",\r
+"3M    c #B9734C",\r
+"4M    c #BA7656",\r
+"5M    c #BA825B",\r
+"6M    c #B19255",\r
+"7M    c #A18A5D",\r
+"8M    c #AD9B73",\r
+"9M    c #C1AD8E",\r
+"0M    c #CFA988",\r
+"aM    c #C79B74",\r
+"bM    c #C7A066",\r
+"cM    c #BA9161",\r
+"dM    c #A56A45",\r
+"eM    c #7A4835",\r
+"fM    c #77653D",\r
+"gM    c #A58F57",\r
+"hM    c #BA9058",\r
+"iM    c #C0945B",\r
+"jM    c #BFA46E",\r
+"kM    c #C7AE7C",\r
+"lM    c #D0AF7E",\r
+"mM    c #B06049",\r
+"nM    c #4E3625",\r
+"oM    c #4C3730",\r
+"pM    c #3C312F",\r
+"qM    c #332C27",\r
+"rM    c #49382C",\r
+"sM    c #3C3832",\r
+"tM    c #4D4332",\r
+"uM    c #816F39",\r
+"vM    c #995D44",\r
+"wM    c #674C35",\r
+"xM    c #5E3B31",\r
+"yM    c #533933",\r
+"zM    c #514B34",\r
+"AM    c #8E7F53",\r
+"BM    c #BBA87C",\r
+"CM    c #BC765F",\r
+"DM    c #9F763F",\r
+"EM    c #B28A48",\r
+"FM    c #BA8D46",\r
+"GM    c #95532C",\r
+"HM    c #59392C",\r
+"IM    c #4F3933",\r
+"JM    c #6B4C3D",\r
+"KM    c #8F6E47",\r
+"LM    c #AE885C",\r
+"MM    c #AA764B",\r
+"NM    c #7A4438",\r
+"OM    c #3A3231",\r
+"PM    c #515347",\r
+"QM    c #805540",\r
+"RM    c #4E2B31",\r
+"SM    c #443A3C",\r
+"TM    c #513E34",\r
+"UM    c #5B4C3F",\r
+"VM    c #79653D",\r
+"WM    c #947952",\r
+"XM    c #9C895B",\r
+"YM    c #AE925F",\r
+"ZM    c #B1926A",\r
+"`M    c #AF946B",\r
+" N    c #B1956B",\r
+".N    c #AE8D66",\r
+"+N    c #AB8C5B",\r
+"@N    c #A67F42",\r
+"#N    c #8F5238",\r
+"$N    c #502927",\r
+"%N    c #3C3C2F",\r
+"&N    c #4D543B",\r
+"*N    c #5C4234",\r
+"=N    c #2D2C29",\r
+"-N    c #342529",\r
+";N    c #2F3B38",\r
+">N    c #453030",\r
+",N    c #312F2E",\r
+"'N    c #2D2F2E",\r
+")N    c #2A3931",\r
+"!N    c #424E3F",\r
+"~N    c #5B443C",\r
+"{N    c #332428",\r
+"]N    c #2D2B24",\r
+"^N    c #36302B",\r
+"/N    c #2B2824",\r
+"(N    c #222923",\r
+"_N    c #302A24",\r
+":N    c #23272D",\r
+"<N    c #1E2421",\r
+"[N    c #1F2A20",\r
+"}N    c #22221F",\r
+"|N    c #242529",\r
+"1N    c #242D24",\r
+"2N    c #2F2725",\r
+"3N    c #222023",\r
+"4N    c #202C27",\r
+"5N    c #2B292E",\r
+"6N    c #2F2F30",\r
+"7N    c #313631",\r
+"8N    c #363E37",\r
+"9N    c #AF966C",\r
+"0N    c #BBA376",\r
+"aN    c #C7A67D",\r
+"bN    c #C9956E",\r
+"cN    c #BF906B",\r
+"dN    c #B07B57",\r
+"eN    c #948458",\r
+"fN    c #A99A8A",\r
+"gN    c #BCA67D",\r
+"hN    c #AEB490",\r
+"iN    c #BDB69A",\r
+"jN    c #B49688",\r
+"kN    c #A8A190",\r
+"lN    c #808577",\r
+"mN    c #888E78",\r
+"nN    c #86917A",\r
+"oN    c #B8B79C",\r
+"pN    c #C9BE9A",\r
+"qN    c #BBA784",\r
+"rN    c #8C8E7F",\r
+"sN    c #9F816D",\r
+"tN    c #8E8F7B",\r
+"uN    c #9D8B7B",\r
+"vN    c #865752",\r
+"wN    c #4D3F37",\r
+"xN    c #45473C",\r
+"yN    c #4C3D3D",\r
+"zN    c #412F33",\r
+"AN    c #272325",\r
+"BN    c #272526",\r
+"CN    c #262625",\r
+"DN    c #282E37",\r
+"EN    c #323235",\r
+"FN    c #27242A",\r
+"GN    c #2A2A2B",\r
+"HN    c #29231D",\r
+"IN    c #1E2A28",\r
+"JN    c #282529",\r
+"KN    c #282C2A",\r
+"LN    c #342F31",\r
+"MN    c #2F2625",\r
+"NN    c #3D422D",\r
+"ON    c #8E7A52",\r
+"PN    c #BD9B71",\r
+"QN    c #B99A63",\r
+"RN    c #A48559",\r
+"SN    c #6F583A",\r
+"TN    c #3E3B36",\r
+"UN    c #343439",\r
+"VN    c #33362A",\r
+"WN    c #2D282A",\r
+"XN    c #495547",\r
+"YN    c #9CA37B",\r
+"ZN    c #D2BB90",\r
+"`N    c #D3B78F",\r
+" O    c #D5B082",\r
+".O    c #C3A380",\r
+"+O    c #BA9A70",\r
+"@O    c #B89F7A",\r
+"#O    c #BD9F83",\r
+"$O    c #BC996A",\r
+"%O    c #9B5840",\r
+"&O    c #6E5439",\r
+"*O    c #A1864E",\r
+"=O    c #B69667",\r
+"-O    c #BD9F72",\r
+";O    c #D1A480",\r
+">O    c #CDA278",\r
+",O    c #CAA589",\r
+"'O    c #D1AD8F",\r
+")O    c #D0B78C",\r
+"!O    c #CDAA84",\r
+"~O    c #D1AF86",\r
+"{O    c #CEAD88",\r
+"]O    c #CC9D79",\r
+"^O    c #C59463",\r
+"/O    c #B98F63",\r
+"(O    c #AF745B",\r
+"_O    c #8B4E35",\r
+":O    c #5E5332",\r
+"<O    c #998555",\r
+"[O    c #BEA066",\r
+"}O    c #BE9161",\r
+"|O    c #BC9862",\r
+"1O    c #BC9B70",\r
+"2O    c #C4AD81",\r
+"3O    c #C9AC7C",\r
+"4O    c #B5674A",\r
+"5O    c #5D3327",\r
+"6O    c #56362D",\r
+"7O    c #43302A",\r
+"8O    c #342C25",\r
+"9O    c #3C3127",\r
+"0O    c #3D3C2F",\r
+"aO    c #625A3C",\r
+"bO    c #967C4D",\r
+"cO    c #A86748",\r
+"dO    c #79583C",\r
+"eO    c #6F4D3B",\r
+"fO    c #543837",\r
+"gO    c #534436",\r
+"hO    c #857651",\r
+"iO    c #B5A073",\r
+"jO    c #C08D6F",\r
+"kO    c #AF7548",\r
+"lO    c #B7934E",\r
+"mO    c #C09962",\r
+"nO    c #B87943",\r
+"oO    c #8F5C31",\r
+"pO    c #6C4536",\r
+"qO    c #76604F",\r
+"rO    c #9E8560",\r
+"sO    c #B59263",\r
+"tO    c #B8835A",\r
+"uO    c #9A5B49",\r
+"vO    c #594341",\r
+"wO    c #757161",\r
+"xO    c #9C6C57",\r
+"yO    c #563039",\r
+"zO    c #3D393F",\r
+"AO    c #463B38",\r
+"BO    c #594D3E",\r
+"CO    c #837448",\r
+"DO    c #98794A",\r
+"EO    c #957851",\r
+"FO    c #9D8656",\r
+"GO    c #AC8C4D",\r
+"HO    c #AF9064",\r
+"IO    c #B0916A",\r
+"JO    c #B5976A",\r
+"KO    c #B19570",\r
+"LO    c #AC8A62",\r
+"MO    c #A47146",\r
+"NO    c #8D442F",\r
+"OO    c #3F281D",\r
+"PO    c #3A3E31",\r
+"QO    c #4F4E41",\r
+"RO    c #4E453A",\r
+"SO    c #3F282D",\r
+"TO    c #262725",\r
+"UO    c #48463D",\r
+"VO    c #4C2C2F",\r
+"WO    c #272329",\r
+"XO    c #302D29",\r
+"YO    c #41362C",\r
+"ZO    c #3F3927",\r
+"`O    c #474639",\r
+" P    c #493F3B",\r
+".P    c #38332F",\r
+"+P    c #3A3432",\r
+"@P    c #41413E",\r
+"#P    c #4A3C37",\r
+"$P    c #2D2426",\r
+"%P    c #2A2C28",\r
+"&P    c #483637",\r
+"*P    c #232324",\r
+"=P    c #252A2C",\r
+"-P    c #262C29",\r
+";P    c #283225",\r
+">P    c #2A282F",\r
+",P    c #1D2424",\r
+"'P    c #242D23",\r
+")P    c #222B25",\r
+"!P    c #372C31",\r
+"~P    c #202321",\r
+"{P    c #292321",\r
+"]P    c #1D222C",\r
+"^P    c #1E2D31",\r
+"/P    c #2E2C2F",\r
+"(P    c #2D352C",\r
+"_P    c #2F3035",\r
+":P    c #343B3A",\r
+"<P    c #B79D6E",\r
+"[P    c #BE9F7F",\r
+"}P    c #CAA57D",\r
+"|P    c #CD9E73",\r
+"1P    c #C4AA7D",\r
+"2P    c #C2A274",\r
+"3P    c #BB9A68",\r
+"4P    c #C29071",\r
+"5P    c #C2956B",\r
+"6P    c #B8A382",\r
+"7P    c #A4A485",\r
+"8P    c #998C65",\r
+"9P    c #84735F",\r
+"0P    c #706347",\r
+"aP    c #575D50",\r
+"bP    c #737D6C",\r
+"cP    c #869280",\r
+"dP    c #BDAB96",\r
+"eP    c #B2A28C",\r
+"fP    c #9E9A87",\r
+"gP    c #9E9A8E",\r
+"hP    c #A2886C",\r
+"iP    c #7E8568",\r
+"jP    c #8E5B67",\r
+"kP    c #43322C",\r
+"lP    c #3E3935",\r
+"mP    c #4A423A",\r
+"nP    c #232527",\r
+"oP    c #292625",\r
+"pP    c #291F26",\r
+"qP    c #2B242B",\r
+"rP    c #242D31",\r
+"sP    c #282B28",\r
+"tP    c #342822",\r
+"uP    c #26292A",\r
+"vP    c #26302E",\r
+"wP    c #2E2C2C",\r
+"xP    c #473430",\r
+"yP    c #2F2523",\r
+"zP    c #555436",\r
+"AP    c #9C8C6A",\r
+"BP    c #C3A079",\r
+"CP    c #C6A674",\r
+"DP    c #B89B69",\r
+"EP    c #AB7F4A",\r
+"FP    c #5C3D36",\r
+"GP    c #2D2A2F",\r
+"HP    c #302C2D",\r
+"IP    c #382628",\r
+"JP    c #34363B",\r
+"KP    c #6C6F69",\r
+"LP    c #CABA97",\r
+"MP    c #D6B08C",\r
+"NP    c #D3AF85",\r
+"OP    c #CAA77B",\r
+"PP    c #BC996B",\r
+"QP    c #B59778",\r
+"RP    c #C1A77D",\r
+"SP    c #BEA072",\r
+"TP    c #AC795B",\r
+"UP    c #7A4834",\r
+"VP    c #77694D",\r
+"WP    c #A28562",\r
+"XP    c #BD9458",\r
+"YP    c #C39B6A",\r
+"ZP    c #C79D7C",\r
+"`P    c #D1A97C",\r
+" Q    c #D3A387",\r
+".Q    c #D2A788",\r
+"+Q    c #D4AA82",\r
+"@Q    c #D19F7D",\r
+"#Q    c #CC966A",\r
+"$Q    c #C69769",\r
+"%Q    c #B98C5C",\r
+"&Q    c #B2844C",\r
+"*Q    c #A87251",\r
+"=Q    c #8C5C46",\r
+"-Q    c #7D673C",\r
+";Q    c #977E5C",\r
+">Q    c #C0A06D",\r
+",Q    c #C8A16D",\r
+"'Q    c #C5996A",\r
+")Q    c #C0945E",\r
+"!Q    c #C09E69",\r
+"~Q    c #C3A777",\r
+"{Q    c #CCAE85",\r
+"]Q    c #BD7D6B",\r
+"^Q    c #663928",\r
+"/Q    c #4D322D",\r
+"(Q    c #412E30",\r
+"_Q    c #2F2B28",\r
+":Q    c #373327",\r
+"<Q    c #4A463E",\r
+"[Q    c #706542",\r
+"}Q    c #988554",\r
+"|Q    c #AF7B50",\r
+"1Q    c #9C6039",\r
+"2Q    c #6A3636",\r
+"3Q    c #472E2F",\r
+"4Q    c #543D33",\r
+"5Q    c #756B44",\r
+"6Q    c #AB9069",\r
+"7Q    c #BA9E82",\r
+"8Q    c #BE9657",\r
+"9Q    c #AA8F5E",\r
+"0Q    c #AA8573",\r
+"aQ    c #9E7057",\r
+"bQ    c #948954",\r
+"cQ    c #AA8A58",\r
+"dQ    c #B18A52",\r
+"eQ    c #AF925F",\r
+"fQ    c #C09A63",\r
+"gQ    c #BE9163",\r
+"hQ    c #AA6C54",\r
+"iQ    c #714F46",\r
+"jQ    c #696363",\r
+"kQ    c #92746C",\r
+"lQ    c #6E403C",\r
+"mQ    c #382B31",\r
+"nQ    c #383835",\r
+"oQ    c #484030",\r
+"pQ    c #75684C",\r
+"qQ    c #95824F",\r
+"rQ    c #A27E55",\r
+"sQ    c #A6855F",\r
+"tQ    c #A68F57",\r
+"uQ    c #AB9353",\r
+"vQ    c #B29155",\r
+"wQ    c #B38F59",\r
+"xQ    c #AC8C60",\r
+"yQ    c #AB7F55",\r
+"zQ    c #9B6E42",\r
+"AQ    c #713A30",\r
+"BQ    c #312927",\r
+"CQ    c #433C30",\r
+"DQ    c #474137",\r
+"EQ    c #453634",\r
+"FQ    c #2C312E",\r
+"GQ    c #65593D",\r
+"HQ    c #674236",\r
+"IQ    c #25342E",\r
+"JQ    c #3A3D31",\r
+"KQ    c #48402E",\r
+"LQ    c #524139",\r
+"MQ    c #3F3A3B",\r
+"NQ    c #2E2E2E",\r
+"OQ    c #2D312B",\r
+"PQ    c #2F2E2F",\r
+"QQ    c #242328",\r
+"RQ    c #2B2D2D",\r
+"SQ    c #262326",\r
+"TQ    c #2B2827",\r
+"UQ    c #232624",\r
+"VQ    c #2D3224",\r
+"WQ    c #2E2C24",\r
+"XQ    c #252D26",\r
+"YQ    c #1F2123",\r
+"ZQ    c #23332A",\r
+"`Q    c #342A26",\r
+" R    c #253B2E",\r
+".R    c #36383E",\r
+"+R    c #282B23",\r
+"@R    c #242D34",\r
+"#R    c #363639",\r
+"$R    c #3A4334",\r
+"%R    c #553F3C",\r
+"&R    c #30332F",\r
+"*R    c #B69460",\r
+"=R    c #BB865F",\r
+"-R    c #B18E5E",\r
+";R    c #BE8B68",\r
+">R    c #BB8D71",\r
+",R    c #AF8260",\r
+"'R    c #AE735A",\r
+")R    c #B67256",\r
+"!R    c #AC8359",\r
+"~R    c #AE9C81",\r
+"{R    c #A09E81",\r
+"]R    c #9B967B",\r
+"^R    c #987068",\r
+"/R    c #65614A",\r
+"(R    c #586B5A",\r
+"_R    c #8A896C",\r
+":R    c #9A9777",\r
+"<R    c #9A8578",\r
+"[R    c #756E5E",\r
+"}R    c #7F8180",\r
+"|R    c #998B81",\r
+"1R    c #897F6E",\r
+"2R    c #908E7B",\r
+"3R    c #9F6E74",\r
+"4R    c #623745",\r
+"5R    c #2F2629",\r
+"6R    c #343235",\r
+"7R    c #453D39",\r
+"8R    c #402D33",\r
+"9R    c #211E2A",\r
+"0R    c #252628",\r
+"aR    c #24242B",\r
+"bR    c #281F26",\r
+"cR    c #25292E",\r
+"dR    c #3A3730",\r
+"eR    c #363731",\r
+"fR    c #322D32",\r
+"gR    c #2E302F",\r
+"hR    c #293034",\r
+"iR    c #2B2D32",\r
+"jR    c #363630",\r
+"kR    c #5F3C3B",\r
+"lR    c #342526",\r
+"mR    c #575D41",\r
+"nR    c #A2966A",\r
+"oR    c #C0A475",\r
+"pR    c #C2A072",\r
+"qR    c #814A3D",\r
+"rR    c #3A292F",\r
+"sR    c #2B2731",\r
+"tR    c #322D2F",\r
+"uR    c #332A27",\r
+"vR    c #514F45",\r
+"wR    c #D3B38A",\r
+"xR    c #CCA587",\r
+"yR    c #C4A47F",\r
+"zR    c #B9A06D",\r
+"AR    c #BA9D78",\r
+"BR    c #C3A478",\r
+"CR    c #BDA574",\r
+"DR    c #BF9A6C",\r
+"ER    c #9E6E42",\r
+"FR    c #6C563E",\r
+"GR    c #8A7550",\r
+"HR    c #B6935B",\r
+"IR    c #BC976E",\r
+"JR    c #C2966F",\r
+"KR    c #CAA16D",\r
+"LR    c #D2A47E",\r
+"MR    c #D0A17E",\r
+"NR    c #D3A076",\r
+"OR    c #D09C72",\r
+"PR    c #C58962",\r
+"QR    c #BE8A62",\r
+"RR    c #B28456",\r
+"SR    c #A57B55",\r
+"TR    c #9B5F4B",\r
+"UR    c #7E5C3C",\r
+"VR    c #928650",\r
+"WR    c #B59B6B",\r
+"XR    c #C9A474",\r
+"YR    c #C9A879",\r
+"ZR    c #C8A473",\r
+"`R    c #C69768",\r
+" S    c #BF9D74",\r
+".S    c #C5A574",\r
+"+S    c #CCB080",\r
+"@S    c #C58D76",\r
+"#S    c #894432",\r
+"$S    c #5F4136",\r
+"%S    c #443739",\r
+"&S    c #2F2C29",\r
+"*S    c #333130",\r
+"=S    c #46373C",\r
+"-S    c #644F40",\r
+";S    c #9A8045",\r
+">S    c #BB9456",\r
+",S    c #AB6644",\r
+"'S    c #823933",\r
+")S    c #46282E",\r
+"!S    c #3D3130",\r
+"~S    c #605C45",\r
+"{S    c #B38A63",\r
+"]S    c #B9986F",\r
+"^S    c #BE9562",\r
+"/S    c #AB6F51",\r
+"(S    c #7E6B52",\r
+"_S    c #938E68",\r
+":S    c #A9916B",\r
+"<S    c #A9805C",\r
+"[S    c #B1895C",\r
+"}S    c #BEA06B",\r
+"|S    c #C19364",\r
+"1S    c #B3835E",\r
+"2S    c #8E5B4D",\r
+"3S    c #5A585A",\r
+"4S    c #8E7D70",\r
+"5S    c #8D5B4E",\r
+"6S    c #412D30",\r
+"7S    c #393C3B",\r
+"8S    c #3E3D3A",\r
+"9S    c #4B4E43",\r
+"0S    c #7A7152",\r
+"aS    c #A6875F",\r
+"bS    c #AB8861",\r
+"cS    c #A78D5B",\r
+"dS    c #AD925F",\r
+"eS    c #B0925B",\r
+"fS    c #AB8C62",\r
+"gS    c #AE8E5F",\r
+"hS    c #AB844B",\r
+"iS    c #93663A",\r
+"jS    c #613A2F",\r
+"kS    c #353532",\r
+"lS    c #37382D",\r
+"mS    c #3F3833",\r
+"nS    c #342D2F",\r
+"oS    c #59443F",\r
+"pS    c #5E423C",\r
+"qS    c #2E2625",\r
+"rS    c #252929",\r
+"sS    c #2F2F24",\r
+"tS    c #352D24",\r
+"uS    c #353F42",\r
+"vS    c #383034",\r
+"wS    c #282B2E",\r
+"xS    c #2E362B",\r
+"yS    c #2D3F31",\r
+"zS    c #343D32",\r
+"AS    c #33322B",\r
+"BS    c #2A362E",\r
+"CS    c #30312D",\r
+"DS    c #363732",\r
+"ES    c #2C2B24",\r
+"FS    c #293B25",\r
+"GS    c #46572B",\r
+"HS    c #4A4B2A",\r
+"IS    c #312925",\r
+"JS    c #2D3B31",\r
+"KS    c #493F35",\r
+"LS    c #394E36",\r
+"MS    c #585840",\r
+"NS    c #413E33",\r
+"OS    c #363F30",\r
+"PS    c #3A372F",\r
+"QS    c #3A2C2D",\r
+"RS    c #333039",\r
+"SS    c #34352D",\r
+"TS    c #4B4F3B",\r
+"US    c #5A5752",\r
+"VS    c #3F413C",\r
+"WS    c #BD9D6C",\r
+"XS    c #C0A36A",\r
+"YS    c #C3A566",\r
+"ZS    c #C3A36D",\r
+"`S    c #B69866",\r
+" T    c #B4975E",\r
+".T    c #A6805A",\r
+"+T    c #927D55",\r
+"@T    c #B3A66A",\r
+"#T    c #BEBB95",\r
+"$T    c #C2B68F",\r
+"%T    c #ABA474",\r
+"&T    c #9D927B",\r
+"*T    c #858467",\r
+"=T    c #8F8776",\r
+"-T    c #7C6E61",\r
+";T    c #6D7963",\r
+">T    c #8E8D75",\r
+",T    c #84906A",\r
+"'T    c #898D82",\r
+")T    c #8E836E",\r
+"!T    c #908375",\r
+"~T    c #905C6A",\r
+"{T    c #683139",\r
+"]T    c #2F3121",\r
+"^T    c #30332D",\r
+"/T    c #2E2729",\r
+"(T    c #231C23",\r
+"_T    c #232228",\r
+":T    c #222324",\r
+"<T    c #242422",\r
+"[T    c #2B3137",\r
+"}T    c #45433D",\r
+"|T    c #424031",\r
+"1T    c #40423D",\r
+"2T    c #4C443B",\r
+"3T    c #364039",\r
+"4T    c #31423A",\r
+"5T    c #534B43",\r
+"6T    c #5A403E",\r
+"7T    c #595E47",\r
+"8T    c #D0B17B",\r
+"9T    c #D1A979",\r
+"0T    c #CCA876",\r
+"aT    c #CCA969",\r
+"bT    c #B37958",\r
+"cT    c #743D31",\r
+"dT    c #2E2829",\r
+"eT    c #2F2729",\r
+"fT    c #3D403D",\r
+"gT    c #8F9786",\r
+"hT    c #C9B07E",\r
+"iT    c #C7A37C",\r
+"jT    c #BFA077",\r
+"kT    c #C8AC7D",\r
+"lT    c #C5A984",\r
+"mT    c #C4A483",\r
+"nT    c #C9A980",\r
+"oT    c #C2A87D",\r
+"pT    c #8F5F4D",\r
+"qT    c #6F5040",\r
+"rT    c #8C7F5D",\r
+"sT    c #B99675",\r
+"tT    c #BE8D6B",\r
+"uT    c #B99168",\r
+"vT    c #BD906D",\r
+"wT    c #C28E63",\r
+"xT    c #C39365",\r
+"yT    c #BF925D",\r
+"zT    c #C48B54",\r
+"AT    c #B58154",\r
+"BT    c #A07152",\r
+"CT    c #93514C",\r
+"DT    c #816551",\r
+"ET    c #868059",\r
+"FT    c #B49969",\r
+"GT    c #BEA171",\r
+"HT    c #C1A072",\r
+"IT    c #C7A67B",\r
+"JT    c #C59C78",\r
+"KT    c #C19C6E",\r
+"LT    c #C3A279",\r
+"MT    c #C2A67E",\r
+"NT    c #C9B387",\r
+"OT    c #CAA57A",\r
+"PT    c #924F3A",\r
+"QT    c #654E40",\r
+"RT    c #462E34",\r
+"ST    c #2C2B29",\r
+"TT    c #574B37",\r
+"UT    c #8D6D47",\r
+"VT    c #AC8F54",\r
+"WT    c #BB8A56",\r
+"XT    c #A1633B",\r
+"YT    c #6C372B",\r
+"ZT    c #3D2925",\r
+"`T    c #424337",\r
+" U    c #936C49",\r
+".U    c #9F6144",\r
+"+U    c #815847",\r
+"@U    c #6C583E",\r
+"#U    c #8E7A56",\r
+"$U    c #997166",\r
+"%U    c #70433D",\r
+"&U    c #624831",\r
+"*U    c #7B6C50",\r
+"=U    c #B69C79",\r
+"-U    c #C5A271",\r
+";U    c #C19870",\r
+">U    c #BA855B",\r
+",U    c #9F654D",\r
+"'U    c #706252",\r
+")U    c #8B806B",\r
+"!U    c #8A5553",\r
+"~U    c #482C30",\r
+"{U    c #3F3B3F",\r
+"]U    c #4F413D",\r
+"^U    c #50463F",\r
+"/U    c #5D6749",\r
+"(U    c #96815D",\r
+"_U    c #A68E64",\r
+":U    c #B38F5B",\r
+"<U    c #B09361",\r
+"[U    c #AF8D59",\r
+"}U    c #B38B5E",\r
+"|U    c #AF885A",\r
+"1U    c #A07A4D",\r
+"2U    c #844C42",\r
+"3U    c #54332D",\r
+"4U    c #32312E",\r
+"5U    c #372C2E",\r
+"6U    c #42412F",\r
+"7U    c #4A4C3F",\r
+"8U    c #414D3C",\r
+"9U    c #49523B",\r
+"0U    c #535445",\r
+"aU    c #58543F",\r
+"bU    c #5A5434",\r
+"cU    c #46473D",\r
+"dU    c #3F5632",\r
+"eU    c #3E4929",\r
+"fU    c #3F472D",\r
+"gU    c #485137",\r
+"hU    c #484B3B",\r
+"iU    c #3D4F34",\r
+"jU    c #4C5645",\r
+"kU    c #565E45",\r
+"lU    c #544F3A",\r
+"mU    c #473E32",\r
+"nU    c #384839",\r
+"oU    c #687859",\r
+"pU    c #656141",\r
+"qU    c #414B31",\r
+"rU    c #586347",\r
+"sU    c #767F58",\r
+"tU    c #7B6652",\r
+"uU    c #4D4A32",\r
+"vU    c #555237",\r
+"wU    c #5A5948",\r
+"xU    c #515040",\r
+"yU    c #5D5D35",\r
+"zU    c #4B4430",\r
+"AU    c #414939",\r
+"BU    c #4B3835",\r
+"CU    c #2D2E2B",\r
+"DU    c #2F2E29",\r
+"EU    c #493231",\r
+"FU    c #453839",\r
+"GU    c #475C4C",\r
+"HU    c #BCA478",\r
+"IU    c #C3A77E",\r
+"JU    c #C89F75",\r
+"KU    c #C79B76",\r
+"LU    c #B89167",\r
+"MU    c #B0896A",\r
+"NU    c #9B8069",\r
+"OU    c #8E8368",\r
+"PU    c #B5B28E",\r
+"QU    c #C7BC9F",\r
+"RU    c #C6C2A5",\r
+"SU    c #A79079",\r
+"TU    c #888172",\r
+"UU    c #9F9A7F",\r
+"VU    c #888A60",\r
+"WU    c #7F866D",\r
+"XU    c #9C927E",\r
+"YU    c #A2A183",\r
+"ZU    c #98958D",\r
+"`U    c #9D9584",\r
+" V    c #96666F",\r
+".V    c #5C3943",\r
+"+V    c #352E2A",\r
+"@V    c #312E28",\r
+"#V    c #3C3F30",\r
+"$V    c #3E2F33",\r
+"%V    c #2D252A",\r
+"&V    c #212223",\r
+"*V    c #242220",\r
+"=V    c #212523",\r
+"-V    c #242426",\r
+";V    c #303530",\r
+">V    c #453E3A",\r
+",V    c #55463E",\r
+"'V    c #424247",\r
+")V    c #514D51",\r
+"!V    c #3B463F",\r
+"~V    c #4A6147",\r
+"{V    c #7B6756",\r
+"]V    c #5D564E",\r
+"^V    c #48473D",\r
+"/V    c #6D6D54",\r
+"(V    c #B7A287",\r
+"_V    c #D0B584",\r
+":V    c #CEAA7D",\r
+"<V    c #C79F78",\r
+"[V    c #C5A175",\r
+"}V    c #CA9F65",\r
+"|V    c #AD6445",\r
+"1V    c #582625",\r
+"2V    c #342925",\r
+"3V    c #353732",\r
+"4V    c #838470",\r
+"5V    c #CCB688",\r
+"6V    c #CBAC85",\r
+"7V    c #CBA279",\r
+"8V    c #C6AB7C",\r
+"9V    c #C7A982",\r
+"0V    c #C8AC82",\r
+"aV    c #C8AA87",\r
+"bV    c #C6A582",\r
+"cV    c #C0A47C",\r
+"dV    c #B58A66",\r
+"eV    c #8C5843",\r
+"fV    c #715D4F",\r
+"gV    c #978669",\r
+"hV    c #B2855D",\r
+"iV    c #AA7D54",\r
+"jV    c #B08858",\r
+"kV    c #B48E4F",\r
+"lV    c #AA8C65",\r
+"mV    c #B38A64",\r
+"nV    c #B6894E",\r
+"oV    c #A16B4E",\r
+"pV    c #954F3B",\r
+"qV    c #7B623E",\r
+"rV    c #988655",\r
+"sV    c #B09462",\r
+"tV    c #BDA177",\r
+"uV    c #BFA478",\r
+"vV    c #C2A376",\r
+"wV    c #C5A27E",\r
+"xV    c #C69E75",\r
+"yV    c #C09E6D",\r
+"zV    c #C3A177",\r
+"AV    c #CAA777",\r
+"BV    c #CDA97C",\r
+"CV    c #CAAC78",\r
+"DV    c #9B573D",\r
+"EV    c #70513A",\r
+"FV    c #60302F",\r
+"GV    c #3B2F2B",\r
+"HV    c #302F26",\r
+"IV    c #4B402E",\r
+"JV    c #796B4A",\r
+"KV    c #BF9264",\r
+"LV    c #B79154",\r
+"MV    c #A05C46",\r
+"NV    c #6D2D28",\r
+"OV    c #47392C",\r
+"PV    c #7B6B3A",\r
+"QV    c #AB6C44",\r
+"RV    c #705F32",\r
+"SV    c #7F7153",\r
+"TV    c #935C4D",\r
+"UV    c #69543F",\r
+"VV    c #514533",\r
+"WV    c #807446",\r
+"XV    c #A18D63",\r
+"YV    c #C7A779",\r
+"ZV    c #C89F72",\r
+"`V    c #C5A274",\r
+" W    c #BD9266",\r
+".W    c #AB7757",\r
+"+W    c #856152",\r
+"@W    c #765B57",\r
+"#W    c #58383C",\r
+"$W    c #322527",\r
+"%W    c #413F3C",\r
+"&W    c #5D564A",\r
+"*W    c #65443F",\r
+"=W    c #4B493E",\r
+"-W    c #81714A",\r
+";W    c #A78557",\r
+">W    c #A58963",\r
+",W    c #AC9162",\r
+"'W    c #B79259",\r
+")W    c #B4895A",\r
+"!W    c #AB8650",\r
+"~W    c #9F7744",\r
+"{W    c #72473F",\r
+"]W    c #47382E",\r
+"^W    c #47453D",\r
+"/W    c #384834",\r
+"(W    c #596045",\r
+"_W    c #6C715B",\r
+":W    c #625148",\r
+"<W    c #404640",\r
+"[W    c #615654",\r
+"}W    c #6A5E47",\r
+"|W    c #635D48",\r
+"1W    c #53604F",\r
+"2W    c #667349",\r
+"3W    c #767C54",\r
+"4W    c #828F5D",\r
+"5W    c #8F9559",\r
+"6W    c #8E8D5D",\r
+"7W    c #7D794B",\r
+"8W    c #594135",\r
+"9W    c #443C37",\r
+"0W    c #4A4D3B",\r
+"aW    c #503D31",\r
+"bW    c #2D3834",\r
+"cW    c #5B5C50",\r
+"dW    c #7B7358",\r
+"eW    c #4D553C",\r
+"fW    c #535745",\r
+"gW    c #636F4D",\r
+"hW    c #787E5C",\r
+"iW    c #71634B",\r
+"jW    c #574C34",\r
+"kW    c #54513F",\r
+"lW    c #454A3F",\r
+"mW    c #495D3E",\r
+"nW    c #553E2E",\r
+"oW    c #435143",\r
+"pW    c #636B55",\r
+"qW    c #64714A",\r
+"rW    c #526649",\r
+"sW    c #5B4F3D",\r
+"tW    c #3A3A33",\r
+"uW    c #667F60",\r
+"vW    c #B19870",\r
+"wW    c #B9996C",\r
+"xW    c #AF9D72",\r
+"yW    c #A38564",\r
+"zW    c #957A5B",\r
+"AW    c #7F6446",\r
+"BW    c #6B6151",\r
+"CW    c #898A7D",\r
+"DW    c #B4A883",\r
+"EW    c #BBB695",\r
+"FW    c #C9C2B1",\r
+"GW    c #C2B39F",\r
+"HW    c #AA927A",\r
+"IW    c #989C7F",\r
+"JW    c #A8A686",\r
+"KW    c #B29580",\r
+"LW    c #A0987A",\r
+"MW    c #A3A58D",\r
+"NW    c #B59D99",\r
+"OW    c #8F5B69",\r
+"PW    c #482C2F",\r
+"QW    c #372A2F",\r
+"RW    c #2C2826",\r
+"SW    c #2F3131",\r
+"TW    c #2A2E29",\r
+"UW    c #343132",\r
+"VW    c #3A2E34",\r
+"WW    c #2D2028",\r
+"XW    c #252322",\r
+"YW    c #222524",\r
+"ZW    c #28282A",\r
+"`W    c #2E2F2C",\r
+" X    c #3B443B",\r
+".X    c #5C3C45",\r
+"+X    c #393030",\r
+"@X    c #3E3B39",\r
+"#X    c #343B36",\r
+"$X    c #485854",\r
+"%X    c #765659",\r
+"&X    c #5A4C4B",\r
+"*X    c #3C4445",\r
+"=X    c #676F5D",\r
+"-X    c #B1A783",\r
+";X    c #D4B785",\r
+">X    c #D0AB81",\r
+",X    c #CCA373",\r
+"'X    c #CCA474",\r
+")X    c #CFA279",\r
+"!X    c #C19165",\r
+"~X    c #823438",\r
+"{X    c #392526",\r
+"]X    c #2E2728",\r
+"^X    c #332D29",\r
+"/X    c #747761",\r
+"(X    c #C3AE88",\r
+"_X    c #CCAE86",\r
+":X    c #C9A889",\r
+"<X    c #C7A78C",\r
+"[X    c #C5A587",\r
+"}X    c #C3A984",\r
+"|X    c #C8AA7E",\r
+"1X    c #C9AC79",\r
+"2X    c #C4A06E",\r
+"3X    c #AD8751",\r
+"4X    c #846344",\r
+"5X    c #655A44",\r
+"6X    c #745D40",\r
+"7X    c #8E6B50",\r
+"8X    c #957350",\r
+"9X    c #917757",\r
+"0X    c #986E50",\r
+"aX    c #916744",\r
+"bX    c #7F594A",\r
+"cX    c #855D4B",\r
+"dX    c #9B8351",\r
+"eX    c #AC9163",\r
+"fX    c #BA9760",\r
+"gX    c #C09E66",\r
+"hX    c #C29A71",\r
+"iX    c #C99E73",\r
+"jX    c #C7A67C",\r
+"kX    c #C6A57D",\r
+"lX    c #C5A37A",\r
+"mX    c #C2A579",\r
+"nX    c #BFA680",\r
+"oX    c #C9A47D",\r
+"pX    c #CCAF83",\r
+"qX    c #CFB17B",\r
+"rX    c #B67857",\r
+"sX    c #8B502F",\r
+"tX    c #5F3D2D",\r
+"uX    c #422B33",\r
+"vX    c #2F282B",\r
+"wX    c #34342E",\r
+"xX    c #6E6246",\r
+"yX    c #A38952",\r
+"zX    c #B79764",\r
+"AX    c #BC905E",\r
+"BX    c #B78951",\r
+"CX    c #9B5934",\r
+"DX    c #634E2C",\r
+"EX    c #776040",\r
+"FX    c #A5805A",\r
+"GX    c #A67850",\r
+"HX    c #A67A5D",\r
+"IX    c #8E7555",\r
+"JX    c #998353",\r
+"KX    c #9E8C5B",\r
+"LX    c #B59A70",\r
+"MX    c #CDA782",\r
+"NX    c #D3A881",\r
+"OX    c #D1A87D",\r
+"PX    c #CCA173",\r
+"QX    c #C6975E",\r
+"RX    c #B7855E",\r
+"SX    c #73443E",\r
+"TX    c #382A28",\r
+"UX    c #4E423B",\r
+"VX    c #6F5C51",\r
+"WX    c #67473C",\r
+"XX    c #43413E",\r
+"YX    c #604E37",\r
+"ZX    c #8E6636",\r
+"`X    c #967D4D",\r
+" Y    c #A6885D",\r
+".Y    c #B68F53",\r
+"+Y    c #B28C58",\r
+"@Y    c #AA764C",\r
+"#Y    c #9B6345",\r
+"$Y    c #46382D",\r
+"%Y    c #5F4D42",\r
+"&Y    c #5A5846",\r
+"*Y    c #674E3A",\r
+"=Y    c #686053",\r
+"-Y    c #7C6D52",\r
+";Y    c #6E684E",\r
+">Y    c #6C6757",\r
+",Y    c #5E674A",\r
+"'Y    c #625C49",\r
+")Y    c #5C624E",\r
+"!Y    c #615342",\r
+"~Y    c #656255",\r
+"{Y    c #797966",\r
+"]Y    c #857E66",\r
+"^Y    c #79755F",\r
+"/Y    c #877050",\r
+"(Y    c #524138",\r
+"_Y    c #3C4231",\r
+":Y    c #404A35",\r
+"<Y    c #424831",\r
+"[Y    c #3D4836",\r
+"}Y    c #424637",\r
+"|Y    c #3F493A",\r
+"1Y    c #534F3E",\r
+"2Y    c #514B3B",\r
+"3Y    c #3C3933",\r
+"4Y    c #444E3A",\r
+"5Y    c #575942",\r
+"6Y    c #7C7B46",\r
+"7Y    c #776A52",\r
+"8Y    c #544E40",\r
+"9Y    c #5B5339",\r
+"0Y    c #3E433B",\r
+"aY    c #4C3B3C",\r
+"bY    c #343839",\r
+"cY    c #5A5E50",\r
+"dY    c #7E765A",\r
+"eY    c #8C835C",\r
+"fY    c #816C53",\r
+"gY    c #5B614B",\r
+"hY    c #636B5F",\r
+"iY    c #908164",\r
+"jY    c #AD9864",\r
+"kY    c #B5B28B",\r
+"lY    c #BBB498",\r
+"mY    c #947F63",\r
+"nY    c #5D6D66",\r
+"oY    c #939F9A",\r
+"pY    c #BCB093",\r
+"qY    c #B7AC86",\r
+"rY    c #B2AD91",\r
+"sY    c #C2BFA9",\r
+"tY    c #C2AC9E",\r
+"uY    c #977965",\r
+"vY    c #978772",\r
+"wY    c #968779",\r
+"xY    c #928574",\r
+"yY    c #9C9C8B",\r
+"zY    c #AAA199",\r
+"AY    c #A26870",\r
+"BY    c #572D35",\r
+"CY    c #322B2A",\r
+"DY    c #2D2524",\r
+"EY    c #292E2E",\r
+"FY    c #2F2C2A",\r
+"GY    c #2E2A27",\r
+"HY    c #242A2E",\r
+"IY    c #272529",\r
+"JY    c #212423",\r
+"KY    c #242B2D",\r
+"LY    c #2C2C27",\r
+"MY    c #403831",\r
+"NY    c #513A38",\r
+"OY    c #372625",\r
+"PY    c #302D2C",\r
+"QY    c #2F2B2F",\r
+"RY    c #353936",\r
+"SY    c #4E3D3E",\r
+"TY    c #43363A",\r
+"UY    c #393A37",\r
+"VY    c #4F5250",\r
+"WY    c #9F9787",\r
+"XY    c #CFB091",\r
+"YY    c #CDA983",\r
+"ZY    c #CEA874",\r
+"`Y    c #CD9F75",\r
+" Z    c #C38969",\r
+".Z    c #9C6A56",\r
+"+Z    c #6A564B",\r
+"@Z    c #503F2E",\r
+"#Z    c #3F2930",\r
+"$Z    c #352C28",\r
+"%Z    c #606855",\r
+"&Z    c #B3A786",\r
+"*Z    c #CFAD7D",\r
+"=Z    c #C6AA7D",\r
+"-Z    c #C5A385",\r
+";Z    c #C9A781",\r
+">Z    c #C6AD8A",\r
+",Z    c #C8AA8C",\r
+"'Z    c #CAA885",\r
+")Z    c #C9A581",\r
+"!Z    c #C39664",\r
+"~Z    c #B09062",\r
+"{Z    c #9E8757",\r
+"]Z    c #8A7241",\r
+"^Z    c #7A694E",\r
+"/Z    c #7E5943",\r
+"(Z    c #7E5D45",\r
+"_Z    c #746045",\r
+":Z    c #7C7049",\r
+"<Z    c #8E7C51",\r
+"[Z    c #B29860",\r
+"}Z    c #C4A46C",\r
+"|Z    c #C99D6E",\r
+"1Z    c #BF9865",\r
+"2Z    c #C09C6E",\r
+"3Z    c #C5A072",\r
+"4Z    c #CAA172",\r
+"5Z    c #C7A281",\r
+"6Z    c #C89F77",\r
+"7Z    c #C3A57E",\r
+"8Z    c #C6AD7D",\r
+"9Z    c #CAA883",\r
+"0Z    c #C6AC8B",\r
+"aZ    c #CDB58A",\r
+"bZ    c #C48A6F",\r
+"cZ    c #995435",\r
+"dZ    c #724A2E",\r
+"eZ    c #593934",\r
+"fZ    c #39292D",\r
+"gZ    c #332B29",\r
+"hZ    c #342D2B",\r
+"iZ    c #4E503F",\r
+"jZ    c #856D4E",\r
+"kZ    c #926A55",\r
+"lZ    c #866151",\r
+"mZ    c #806448",\r
+"nZ    c #8E7044",\r
+"oZ    c #937739",\r
+"pZ    c #896C45",\r
+"qZ    c #A4884C",\r
+"rZ    c #BC925F",\r
+"sZ    c #B88B60",\r
+"tZ    c #A9845D",\r
+"uZ    c #AC865E",\r
+"vZ    c #BA9367",\r
+"wZ    c #C3A270",\r
+"xZ    c #D4B380",\r
+"yZ    c #D8B687",\r
+"zZ    c #D8A984",\r
+"AZ    c #D3A27A",\r
+"BZ    c #CC9969",\r
+"CZ    c #BA8D63",\r
+"DZ    c #AC7F5C",\r
+"EZ    c #945446",\r
+"FZ    c #3A2D2E",\r
+"GZ    c #3D3332",\r
+"HZ    c #50443B",\r
+"IZ    c #6C4F48",\r
+"JZ    c #6C413B",\r
+"KZ    c #554B42",\r
+"LZ    c #6B4637",\r
+"MZ    c #77553C",\r
+"NZ    c #927A4C",\r
+"OZ    c #AB8253",\r
+"PZ    c #A98254",\r
+"QZ    c #A1754D",\r
+"RZ    c #8D5B40",\r
+"SZ    c #50312C",\r
+"TZ    c #404937",\r
+"UZ    c #5F5C49",\r
+"VZ    c #685D42",\r
+"WZ    c #525B46",\r
+"XZ    c #6D7250",\r
+"YZ    c #8E7E5E",\r
+"ZZ    c #807F5A",\r
+"`Z    c #797858",\r
+" `    c #786056",\r
+".`    c #5F594F",\r
+"+`    c #636247",\r
+"@`    c #656A48",\r
+"#`    c #616B50",\r
+"$`    c #737952",\r
+"%`    c #838561",\r
+"&`    c #817B5A",\r
+"*`    c #62554C",\r
+"=`    c #4E5F3F",\r
+"-`    c #6E7C54",\r
+";`    c #79784C",\r
+">`    c #696644",\r
+",`    c #6D6D4E",\r
+"'`    c #696750",\r
+")`    c #5B5945",\r
+"!`    c #533E38",\r
+"~`    c #32322F",\r
+"{`    c #36352C",\r
+"]`    c #454138",\r
+"^`    c #59594D",\r
+"/`    c #685D3D",\r
+"(`    c #605239",\r
+"_`    c #43483E",\r
+":`    c #3B463A",\r
+"<`    c #434039",\r
+"[`    c #4D4742",\r
+"}`    c #525546",\r
+"|`    c #736557",\r
+"1`    c #6A5849",\r
+"2`    c #706E52",\r
+"3`    c #76635B",\r
+"4`    c #3E3C36",\r
+"5`    c #6B5F4C",\r
+"6`    c #958D77",\r
+"7`    c #BDA598",\r
+"8`    c #B49076",\r
+"9`    c #7B654E",\r
+"0`    c #646553",\r
+"a`    c #A5A89B",\r
+"b`    c #C1B7A7",\r
+"c`    c #BFA887",\r
+"d`    c #A09B74",\r
+"e`    c #9CAB9C",\r
+"f`    c #B2AC9A",\r
+"g`    c #AE9383",\r
+"h`    c #938168",\r
+"i`    c #928764",\r
+"j`    c #84916C",\r
+"k`    c #8B8E84",\r
+"l`    c #89626E",\r
+"m`    c #482A2D",\r
+"n`    c #2E2020",\r
+"o`    c #2F2E28",\r
+"p`    c #282D2A",\r
+"q`    c #241F22",\r
+"r`    c #262227",\r
+"s`    c #31322D",\r
+"t`    c #221C1D",\r
+"u`    c #292326",\r
+"v`    c #1E221D",\r
+"w`    c #252730",\r
+"x`    c #222621",\r
+"y`    c #373B28",\r
+"z`    c #633E37",\r
+"A`    c #3C2227",\r
+"B`    c #262C33",\r
+"C`    c #312D35",\r
+"D`    c #3F3E3A",\r
+"E`    c #5F3E3C",\r
+"F`    c #4A4433",\r
+"G`    c #5E5346",\r
+"H`    c #979274",\r
+"I`    c #CCA37F",\r
+"J`    c #CEA87C",\r
+"K`    c #CAA079",\r
+"L`    c #C08268",\r
+"M`    c #8B614E",\r
+"N`    c #7D7D65",\r
+"O`    c #9B966F",\r
+"P`    c #A7835D",\r
+"Q`    c #8F6046",\r
+"R`    c #583429",\r
+"S`    c #4E574A",\r
+"T`    c #A9A286",\r
+"U`    c #C8AE85",\r
+"V`    c #C7AC86",\r
+"W`    c #C8AD89",\r
+"X`    c #CAAA81",\r
+"Y`    c #C8AD86",\r
+"Z`    c #C9B18B",\r
+"``    c #C8A880",\r
+"  .   c #CEA87E",\r
+". .   c #CBA276",\r
+"+ .   c #C4A175",\r
+"@ .   c #C6A173",\r
+"# .   c #C1A16F",\r
+"$ .   c #B8A474",\r
+"% .   c #BBA373",\r
+"& .   c #BC9968",\r
+"* .   c #BBA465",\r
+"= .   c #BAA869",\r
+"- .   c #C0A47B",\r
+"; .   c #CDAB82",\r
+"> .   c #CCA87B",\r
+", .   c #C49D6D",\r
+"' .   c #C5A778",\r
+") .   c #CAA374",\r
+"! .   c #C0A885",\r
+"~ .   c #C5A57C",\r
+"{ .   c #C8A67D",\r
+"] .   c #C2A57E",\r
+"^ .   c #CAA776",\r
+"/ .   c #C9AE7E",\r
+"( .   c #CCAD79",\r
+"_ .   c #CFB07C",\r
+": .   c #CCA97A",\r
+"< .   c #AC693F",\r
+"[ .   c #794735",\r
+"} .   c #6C3B37",\r
+"| .   c #352922",\r
+"1 .   c #382C1E",\r
+"2 .   c #3B272B",\r
+"3 .   c #352E2C",\r
+"4 .   c #4F4B3A",\r
+"5 .   c #6F6B4B",\r
+"6 .   c #86744C",\r
+"7 .   c #977C56",\r
+"8 .   c #A18452",\r
+"9 .   c #A87D58",\r
+"0 .   c #A78D50",\r
+"a .   c #B3A060",\r
+"b .   c #CDA670",\r
+"c .   c #C29D61",\r
+"d .   c #C49E6A",\r
+"e .   c #C49E6F",\r
+"f .   c #C4A779",\r
+"g .   c #D2B085",\r
+"h .   c #D2B78B",\r
+"i .   c #D6C091",\r
+"j .   c #D9AE87",\r
+"k .   c #D4A376",\r
+"l .   c #C79363",\r
+"m .   c #B5885C",\r
+"n .   c #9A624F",\r
+"o .   c #4E3939",\r
+"p .   c #554436",\r
+"q .   c #554B40",\r
+"r .   c #624C3F",\r
+"s .   c #704B3F",\r
+"t .   c #3F353C",\r
+"u .   c #4B4640",\r
+"v .   c #6B503E",\r
+"w .   c #61443D",\r
+"x .   c #A2835B",\r
+"y .   c #A77F5E",\r
+"z .   c #9F704E",\r
+"A .   c #814C39",\r
+"B .   c #47322B",\r
+"C .   c #465246",\r
+"D .   c #6F5E42",\r
+"E .   c #72723F",\r
+"F .   c #7F7658",\r
+"G .   c #857B60",\r
+"H .   c #7E6759",\r
+"I .   c #745A44",\r
+"J .   c #5B563E",\r
+"K .   c #5F583F",\r
+"L .   c #554139",\r
+"M .   c #423E38",\r
+"N .   c #525146",\r
+"O .   c #67614E",\r
+"P .   c #756C58",\r
+"Q .   c #726358",\r
+"R .   c #69594A",\r
+"S .   c #545142",\r
+"T .   c #475443",\r
+"U .   c #617757",\r
+"V .   c #889268",\r
+"W .   c #8C8B65",\r
+"X .   c #76703E",\r
+"Y .   c #55574C",\r
+"Z .   c #52594B",\r
+"` .   c #5B5842",\r
+" ..   c #4E5439",\r
+"...   c #565941",\r
+"+..   c #6C6C53",\r
+"@..   c #6F6C47",\r
+"#..   c #695F3D",\r
+"$..   c #64513F",\r
+"%..   c #545549",\r
+"&..   c #716F5E",\r
+"*..   c #8D7465",\r
+"=..   c #7D6556",\r
+"-..   c #6A5B48",\r
+";..   c #5C563A",\r
+">..   c #605234",\r
+",..   c #544F3B",\r
+"'..   c #4E3E32",\r
+")..   c #454C43",\r
+"!..   c #56584C",\r
+"~..   c #362D26",\r
+"{..   c #3B352B",\r
+"]..   c #524944",\r
+"^..   c #9C8B7A",\r
+"/..   c #A48466",\r
+"(..   c #775346",\r
+"_..   c #49463A",\r
+":..   c #727563",\r
+"<..   c #A09286",\r
+"[..   c #AF9D75",\r
+"}..   c #A9AA87",\r
+"|..   c #A0A195",\r
+"1..   c #A7A38F",\r
+"2..   c #B8B0A4",\r
+"3..   c #AB8A7A",\r
+"4..   c #7B665D",\r
+"5..   c #9E9380",\r
+"6..   c #9C6B6C",\r
+"7..   c #592F36",\r
+"8..   c #2A221E",\r
+"9..   c #231F21",\r
+"0..   c #2E2D2A",\r
+"a..   c #2A2928",\r
+"b..   c #2A2524",\r
+"c..   c #454733",\r
+"d..   c #68472D",\r
+"e..   c #302626",\r
+"f..   c #282227",\r
+"g..   c #232425",\r
+"h..   c #1F2220",\r
+"i..   c #293526",\r
+"j..   c #575838",\r
+"k..   c #996842",\r
+"l..   c #5A2629",\r
+"m..   c #292B2B",\r
+"n..   c #362A30",\r
+"o..   c #2C2625",\r
+"p..   c #393634",\r
+"q..   c #613A38",\r
+"r..   c #443D36",\r
+"s..   c #644039",\r
+"t..   c #827A5D",\r
+"u..   c #C7A07A",\r
+"v..   c #CAA272",\r
+"w..   c #B88F62",\r
+"x..   c #959169",\r
+"y..   c #B09F82",\r
+"z..   c #B5957A",\r
+"A..   c #B59361",\r
+"B..   c #B07B5F",\r
+"C..   c #764231",\r
+"D..   c #4C4F3B",\r
+"E..   c #999A81",\r
+"F..   c #C7AB85",\r
+"G..   c #C9B087",\r
+"H..   c #CAB08A",\r
+"I..   c #CAA182",\r
+"J..   c #C8AD84",\r
+"K..   c #C2AE85",\r
+"L..   c #C8A980",\r
+"M..   c #CFA782",\r
+"N..   c #CDA47D",\r
+"O..   c #CAA178",\r
+"P..   c #C6A87A",\r
+"Q..   c #C4A37B",\r
+"R..   c #C9A57D",\r
+"S..   c #CDA677",\r
+"T..   c #CDA679",\r
+"U..   c #D2B083",\r
+"V..   c #D3B181",\r
+"W..   c #D2B483",\r
+"X..   c #D5AB83",\r
+"Y..   c #D5AB79",\r
+"Z..   c #D1AC83",\r
+"`..   c #CBA57C",\r
+" +.   c #C8A07B",\r
+".+.   c #C6A87E",\r
+"++.   c #C7A476",\r
+"@+.   c #CAAD7F",\r
+"#+.   c #C7A87E",\r
+"$+.   c #C7A77D",\r
+"%+.   c #C4A480",\r
+"&+.   c #CBAD83",\r
+"*+.   c #D1AF7B",\r
+"=+.   c #CBAA7E",\r
+"-+.   c #CBB182",\r
+";+.   c #C38863",\r
+">+.   c #83452B",\r
+",+.   c #634435",\r
+"'+.   c #502928",\r
+")+.   c #3C2824",\r
+"!+.   c #312C2B",\r
+"~+.   c #342C2A",\r
+"{+.   c #5C5D44",\r
+"]+.   c #9E815B",\r
+"^+.   c #9B5D53",\r
+"/+.   c #805A45",\r
+"(+.   c #6B5739",\r
+"_+.   c #8F7359",\r
+":+.   c #A17858",\r
+"<+.   c #AB916B",\r
+"[+.   c #CBAA84",\r
+"}+.   c #D1A56D",\r
+"|+.   c #CAA77A",\r
+"1+.   c #D1B68A",\r
+"2+.   c #D5BB91",\r
+"3+.   c #D7BB96",\r
+"4+.   c #D5C092",\r
+"5+.   c #D5BE91",\r
+"6+.   c #D8AC86",\r
+"7+.   c #D2A073",\r
+"8+.   c #C38F61",\r
+"9+.   c #BB8F5D",\r
+"0+.   c #B48B54",\r
+"a+.   c #9F7051",\r
+"b+.   c #613F3B",\r
+"c+.   c #5E4B44",\r
+"d+.   c #6B5043",\r
+"e+.   c #745139",\r
+"f+.   c #563C31",\r
+"g+.   c #3E322F",\r
+"h+.   c #423D39",\r
+"i+.   c #715142",\r
+"j+.   c #6F513A",\r
+"k+.   c #6F5B39",\r
+"l+.   c #9D7C52",\r
+"m+.   c #9D7A59",\r
+"n+.   c #9C6B4C",\r
+"o+.   c #754138",\r
+"p+.   c #393B31",\r
+"q+.   c #443E3D",\r
+"r+.   c #514138",\r
+"s+.   c #574E30",\r
+"t+.   c #4F4331",\r
+"u+.   c #5E4D3A",\r
+"v+.   c #584639",\r
+"w+.   c #4E4E40",\r
+"x+.   c #5B5E41",\r
+"y+.   c #574835",\r
+"z+.   c #3D4238",\r
+"A+.   c #505941",\r
+"B+.   c #55574D",\r
+"C+.   c #615443",\r
+"D+.   c #695E39",\r
+"E+.   c #5E553E",\r
+"F+.   c #53624F",\r
+"G+.   c #676654",\r
+"H+.   c #545D59",\r
+"I+.   c #4E645C",\r
+"J+.   c #686F5C",\r
+"K+.   c #918E6B",\r
+"L+.   c #8A7C62",\r
+"M+.   c #7C7256",\r
+"N+.   c #756D4B",\r
+"O+.   c #64604D",\r
+"P+.   c #665942",\r
+"Q+.   c #716549",\r
+"R+.   c #6F685B",\r
+"S+.   c #6C6257",\r
+"T+.   c #848159",\r
+"U+.   c #8A6F53",\r
+"V+.   c #725B39",\r
+"W+.   c #806D4B",\r
+"X+.   c #8C7D5E",\r
+"Y+.   c #8D7556",\r
+"Z+.   c #765F5A",\r
+"`+.   c #50524E",\r
+" @.   c #625B44",\r
+".@.   c #5A513A",\r
+"+@.   c #4F5837",\r
+"@@.   c #5B6550",\r
+"#@.   c #696A57",\r
+"$@.   c #332B2B",\r
+"%@.   c #504C45",\r
+"&@.   c #7A7668",\r
+"*@.   c #8D7855",\r
+"=@.   c #797851",\r
+"-@.   c #7A7364",\r
+";@.   c #827167",\r
+">@.   c #868D85",\r
+",@.   c #A6A795",\r
+"'@.   c #B79089",\r
+")@.   c #6C383B",\r
+"!@.   c #513C36",\r
+"~@.   c #4D332F",\r
+"{@.   c #332524",\r
+"]@.   c #2C2325",\r
+"^@.   c #2C2A26",\r
+"/@.   c #3B3B2E",\r
+"(@.   c #53543C",\r
+"_@.   c #7A7441",\r
+":@.   c #987E47",\r
+"<@.   c #955843",\r
+"[@.   c #412622",\r
+"}@.   c #34272E",\r
+"|@.   c #412929",\r
+"1@.   c #252828",\r
+"2@.   c #31392B",\r
+"3@.   c #7D7958",\r
+"4@.   c #AB6253",\r
+"5@.   c #63282C",\r
+"6@.   c #2F2226",\r
+"7@.   c #402629",\r
+"8@.   c #403F3B",\r
+"9@.   c #656254",\r
+"0@.   c #725746",\r
+"a@.   c #6B5E3C",\r
+"b@.   c #727055",\r
+"c@.   c #BF9D79",\r
+"d@.   c #C99B72",\r
+"e@.   c #C89F76",\r
+"f@.   c #BA9D74",\r
+"g@.   c #B08969",\r
+"h@.   c #8C6658",\r
+"i@.   c #7D5948",\r
+"j@.   c #786356",\r
+"k@.   c #A48872",\r
+"l@.   c #9A4942",\r
+"m@.   c #484534",\r
+"n@.   c #9D9777",\r
+"o@.   c #CCAB83",\r
+"p@.   c #BDA681",\r
+"q@.   c #CAAB7C",\r
+"r@.   c #C9A676",\r
+"s@.   c #C3A687",\r
+"t@.   c #C9AA89",\r
+"u@.   c #CAAB87",\r
+"v@.   c #C7A485",\r
+"w@.   c #CBA283",\r
+"x@.   c #C8A581",\r
+"y@.   c #C7A87F",\r
+"z@.   c #CB9F7C",\r
+"A@.   c #CFAB7D",\r
+"B@.   c #D0AC76",\r
+"C@.   c #D0A982",\r
+"D@.   c #D4A982",\r
+"E@.   c #D5AE7F",\r
+"F@.   c #D1AF82",\r
+"G@.   c #D4AD7F",\r
+"H@.   c #D0A87E",\r
+"I@.   c #CBA675",\r
+"J@.   c #CBA377",\r
+"K@.   c #C7A783",\r
+"L@.   c #CAA67D",\r
+"M@.   c #CDAE84",\r
+"N@.   c #CAAC7F",\r
+"O@.   c #CCAD80",\r
+"P@.   c #C6AC89",\r
+"Q@.   c #C8A979",\r
+"R@.   c #CBA27A",\r
+"S@.   c #C9A780",\r
+"T@.   c #C4AC76",\r
+"U@.   c #C4A881",\r
+"V@.   c #CDB089",\r
+"W@.   c #CB9878",\r
+"X@.   c #A14A3D",\r
+"Y@.   c #5E3B30",\r
+"Z@.   c #5F3E30",\r
+"`@.   c #4E302E",\r
+" #.   c #38282C",\r
+".#.   c #32282A",\r
+"+#.   c #5B503E",\r
+"@#.   c #8C5345",\r
+"##.   c #6E463A",\r
+"$#.   c #7F5A52",\r
+"%#.   c #785E41",\r
+"&#.   c #9F8C63",\r
+"*#.   c #B38053",\r
+"=#.   c #9F7B62",\r
+"-#.   c #C3B78A",\r
+";#.   c #D1B484",\r
+">#.   c #CAA17D",\r
+",#.   c #D0A684",\r
+"'#.   c #D7B189",\r
+")#.   c #D3AD8C",\r
+"!#.   c #D5AE8A",\r
+"~#.   c #D3AE83",\r
+"{#.   c #D2A87A",\r
+"]#.   c #CB9C69",\r
+"^#.   c #BE8B58",\r
+"/#.   c #BC965B",\r
+"(#.   c #B78E64",\r
+"_#.   c #A76754",\r
+":#.   c #715A3C",\r
+"<#.   c #694836",\r
+"[#.   c #573E30",\r
+"}#.   c #3D3331",\r
+"|#.   c #42332F",\r
+"1#.   c #423837",\r
+"2#.   c #655645",\r
+"3#.   c #8B5C43",\r
+"4#.   c #76583C",\r
+"5#.   c #88634A",\r
+"6#.   c #936542",\r
+"7#.   c #68413A",\r
+"8#.   c #442F2B",\r
+"9#.   c #393F37",\r
+"0#.   c #3F3D3E",\r
+"a#.   c #4E443D",\r
+"b#.   c #544C46",\r
+"c#.   c #56483F",\r
+"d#.   c #4C543F",\r
+"e#.   c #676446",\r
+"f#.   c #6F5745",\r
+"g#.   c #626143",\r
+"h#.   c #6D693A",\r
+"i#.   c #6A6242",\r
+"j#.   c #5F524E",\r
+"k#.   c #59574F",\r
+"l#.   c #777B5F",\r
+"m#.   c #86805D",\r
+"n#.   c #82755D",\r
+"o#.   c #777250",\r
+"p#.   c #6F725D",\r
+"q#.   c #716D61",\r
+"r#.   c #7D7960",\r
+"s#.   c #717A61",\r
+"t#.   c #8B8A6B",\r
+"u#.   c #918570",\r
+"v#.   c #867B69",\r
+"w#.   c #827C63",\r
+"x#.   c #818168",\r
+"y#.   c #767256",\r
+"z#.   c #777856",\r
+"A#.   c #8A8769",\r
+"B#.   c #888263",\r
+"C#.   c #85806A",\r
+"D#.   c #977D69",\r
+"E#.   c #9A8A65",\r
+"F#.   c #997D61",\r
+"G#.   c #867B52",\r
+"H#.   c #918955",\r
+"I#.   c #918962",\r
+"J#.   c #91875C",\r
+"K#.   c #8A8A65",\r
+"L#.   c #85845D",\r
+"M#.   c #828563",\r
+"N#.   c #7F8A6F",\r
+"O#.   c #897B58",\r
+"P#.   c #2A2C2D",\r
+"Q#.   c #3B3934",\r
+"R#.   c #79857B",\r
+"S#.   c #ABA08C",\r
+"T#.   c #968161",\r
+"U#.   c #695B4D",\r
+"V#.   c #554F40",\r
+"W#.   c #58574F",\r
+"X#.   c #747175",\r
+"Y#.   c #826658",\r
+"Z#.   c #747F82",\r
+"`#.   c #AE8F89",\r
+" $.   c #9B5A57",\r
+".$.   c #4C332B",\r
+"+$.   c #40322B",\r
+"@$.   c #423C31",\r
+"#$.   c #4A463F",\r
+"$$.   c #544B3C",\r
+"%$.   c #604D3B",\r
+"&$.   c #656238",\r
+"*$.   c #7C6A3D",\r
+"=$.   c #A4834F",\r
+"-$.   c #B08E52",\r
+";$.   c #AE8154",\r
+">$.   c #8B473A",\r
+",$.   c #3A1B1E",\r
+"'$.   c #2E3031",\r
+")$.   c #50292F",\r
+"!$.   c #222827",\r
+"~$.   c #252324",\r
+"{$.   c #3C4630",\r
+"]$.   c #858465",\r
+"^$.   c #AD785B",\r
+"/$.   c #6B4535",\r
+"($.   c #595337",\r
+"_$.   c #675E39",\r
+":$.   c #63694F",\r
+"<$.   c #828A75",\r
+"[$.   c #A7A186",\r
+"}$.   c #B19770",\r
+"|$.   c #A98958",\r
+"1$.   c #A28D5E",\r
+"2$.   c #BE9D6C",\r
+"3$.   c #CC9B68",\r
+"4$.   c #C79A6F",\r
+"5$.   c #BB976D",\r
+"6$.   c #9A5E50",\r
+"7$.   c #5E4B47",\r
+"8$.   c #725E4A",\r
+"9$.   c #928360",\r
+"0$.   c #A7927A",\r
+"a$.   c #A6504A",\r
+"b$.   c #4C382E",\r
+"c$.   c #948868",\r
+"d$.   c #CBAD84",\r
+"e$.   c #C5AA8A",\r
+"f$.   c #C9AA84",\r
+"g$.   c #C8A87E",\r
+"h$.   c #CBAD80",\r
+"i$.   c #CDAC83",\r
+"j$.   c #C8A77E",\r
+"k$.   c #C29E7A",\r
+"l$.   c #C6A284",\r
+"m$.   c #CAA483",\r
+"n$.   c #CAA47E",\r
+"o$.   c #D0A882",\r
+"p$.   c #D1AC7D",\r
+"q$.   c #D0AB82",\r
+"r$.   c #D2A87D",\r
+"s$.   c #D2A87B",\r
+"t$.   c #D4AF82",\r
+"u$.   c #D5B27F",\r
+"v$.   c #CDAA86",\r
+"w$.   c #CAAD7C",\r
+"x$.   c #CBA47C",\r
+"y$.   c #CCA77C",\r
+"z$.   c #C9AB7E",\r
+"A$.   c #CCB390",\r
+"B$.   c #CFAE82",\r
+"C$.   c #CFAB87",\r
+"D$.   c #CAAD8D",\r
+"E$.   c #CCAC84",\r
+"F$.   c #CAA27F",\r
+"G$.   c #C19C7C",\r
+"H$.   c #C3A76D",\r
+"I$.   c #C6AD7F",\r
+"J$.   c #CEB17C",\r
+"K$.   c #CFB278",\r
+"L$.   c #B57151",\r
+"M$.   c #6D3729",\r
+"N$.   c #554235",\r
+"O$.   c #5B3F33",\r
+"P$.   c #3E2A28",\r
+"Q$.   c #322327",\r
+"R$.   c #4F4635",\r
+"S$.   c #9A7040",\r
+"T$.   c #855C3F",\r
+"U$.   c #89744D",\r
+"V$.   c #AC885C",\r
+"W$.   c #B8946B",\r
+"X$.   c #BE8A5C",\r
+"Y$.   c #AD8154",\r
+"Z$.   c #B3A27E",\r
+"`$.   c #D0B888",\r
+" %.   c #CFA271",\r
+".%.   c #C79A6E",\r
+"+%.   c #CE8D69",\r
+"@%.   c #C89F6C",\r
+"#%.   c #CDA27B",\r
+"$%.   c #CB9D72",\r
+"%%.   c #C59760",\r
+"&%.   c #BE9159",\r
+"*%.   c #C0945F",\r
+"=%.   c #BA9165",\r
+"-%.   c #A46C4C",\r
+";%.   c #7E563E",\r
+">%.   c #7C4C42",\r
+",%.   c #624437",\r
+"'%.   c #573C34",\r
+")%.   c #3F3E38",\r
+"!%.   c #4D4639",\r
+"~%.   c #725D36",\r
+"{%.   c #8F6A3D",\r
+"]%.   c #836439",\r
+"^%.   c #826543",\r
+"/%.   c #876344",\r
+"(%.   c #6C5543",\r
+"_%.   c #594931",\r
+":%.   c #4E4A36",\r
+"<%.   c #5D5A4C",\r
+"[%.   c #6E4B41",\r
+"}%.   c #564C41",\r
+"|%.   c #625E49",\r
+"1%.   c #636951",\r
+"2%.   c #706358",\r
+"3%.   c #665143",\r
+"4%.   c #4C4038",\r
+"5%.   c #554740",\r
+"6%.   c #515043",\r
+"7%.   c #636E63",\r
+"8%.   c #857E69",\r
+"9%.   c #988C6A",\r
+"0%.   c #9A9070",\r
+"a%.   c #928363",\r
+"b%.   c #766E5D",\r
+"c%.   c #56534E",\r
+"d%.   c #746A5D",\r
+"e%.   c #8D8D6F",\r
+"f%.   c #9C926F",\r
+"g%.   c #9B856C",\r
+"h%.   c #817365",\r
+"i%.   c #73605B",\r
+"j%.   c #716F61",\r
+"k%.   c #7F7E62",\r
+"l%.   c #878A6A",\r
+"m%.   c #988970",\r
+"n%.   c #988867",\r
+"o%.   c #958468",\r
+"p%.   c #9A8B6B",\r
+"q%.   c #9C9474",\r
+"r%.   c #9FA080",\r
+"s%.   c #A4A579",\r
+"t%.   c #AAAB80",\r
+"u%.   c #A99878",\r
+"v%.   c #A7936E",\r
+"w%.   c #836C53",\r
+"x%.   c #716D51",\r
+"y%.   c #8A8366",\r
+"z%.   c #84785F",\r
+"A%.   c #726F53",\r
+"B%.   c #2C2928",\r
+"C%.   c #292C30",\r
+"D%.   c #3A3F35",\r
+"E%.   c #888F77",\r
+"F%.   c #B29572",\r
+"G%.   c #8F8F71",\r
+"H%.   c #7F7760",\r
+"I%.   c #7E7A61",\r
+"J%.   c #8C7C63",\r
+"K%.   c #76765C",\r
+"L%.   c #878479",\r
+"M%.   c #8E5F4E",\r
+"N%.   c #654937",\r
+"O%.   c #6A563E",\r
+"P%.   c #7D5B37",\r
+"Q%.   c #705941",\r
+"R%.   c #715B45",\r
+"S%.   c #866942",\r
+"T%.   c #8D7547",\r
+"U%.   c #9A7F46",\r
+"V%.   c #B2924F",\r
+"W%.   c #BD985E",\r
+"X%.   c #BB955D",\r
+"Y%.   c #BB7455",\r
+"Z%.   c #7F302B",\r
+"`%.   c #282225",\r
+" &.   c #222528",\r
+".&.   c #272022",\r
+"+&.   c #302422",\r
+"@&.   c #322A27",\r
+"#&.   c #29221F",\r
+"$&.   c #4A563A",\r
+"%&.   c #958E6A",\r
+"&&.   c #BA916D",\r
+"*&.   c #96845E",\r
+"=&.   c #AA9967",\r
+"-&.   c #B4A170",\r
+";&.   c #A98676",\r
+">&.   c #926D66",\r
+",&.   c #876A5B",\r
+"'&.   c #957662",\r
+")&.   c #B58765",\r
+"!&.   c #B6966F",\r
+"~&.   c #D2AA7A",\r
+"{&.   c #C49568",\r
+"]&.   c #C39E67",\r
+"^&.   c #BE9761",\r
+"/&.   c #A88F65",\r
+"(&.   c #B48E69",\r
+"_&.   c #B9A07D",\r
+":&.   c #C09F78",\r
+"<&.   c #AC534E",\r
+"[&.   c #46352B",\r
+"}&.   c #6B715B",\r
+"|&.   c #C2AD83",\r
+"1&.   c #CBA682",\r
+"2&.   c #CBAE82",\r
+"3&.   c #C8AC8C",\r
+"4&.   c #C8AA84",\r
+"5&.   c #C9AB86",\r
+"6&.   c #CCAE8A",\r
+"7&.   c #CBAF7E",\r
+"8&.   c #C5A67F",\r
+"9&.   c #C4A887",\r
+"0&.   c #D0AC81",\r
+"a&.   c #CEAA87",\r
+"b&.   c #CFAA86",\r
+"c&.   c #D2A984",\r
+"d&.   c #CFA981",\r
+"e&.   c #D2AD7E",\r
+"f&.   c #D3A57C",\r
+"g&.   c #D0AA82",\r
+"h&.   c #D3AF7A",\r
+"i&.   c #D2AE7F",\r
+"j&.   c #D2A980",\r
+"k&.   c #CFB082",\r
+"l&.   c #CDB18A",\r
+"m&.   c #CDA581",\r
+"n&.   c #C5A885",\r
+"o&.   c #CDB597",\r
+"p&.   c #CFB389",\r
+"q&.   c #CCA884",\r
+"r&.   c #D0AD83",\r
+"s&.   c #D0B17F",\r
+"t&.   c #CBAA85",\r
+"u&.   c #C7A07E",\r
+"v&.   c #C9AB7D",\r
+"w&.   c #CCAF85",\r
+"x&.   c #CBAF7D",\r
+"y&.   c #CFB47C",\r
+"z&.   c #C8A071",\r
+"A&.   c #9D5D3B",\r
+"B&.   c #603B2C",\r
+"C&.   c #56432F",\r
+"D&.   c #48292C",\r
+"E&.   c #3B1D25",\r
+"F&.   c #42372E",\r
+"G&.   c #87744F",\r
+"H&.   c #B5895A",\r
+"I&.   c #B5904C",\r
+"J&.   c #B5905F",\r
+"K&.   c #C3966A",\r
+"L&.   c #CB9E64",\r
+"M&.   c #B88558",\r
+"N&.   c #B99D71",\r
+"O&.   c #CAAC8A",\r
+"P&.   c #D3A37F",\r
+"Q&.   c #CB996E",\r
+"R&.   c #C28A67",\r
+"S&.   c #BD9367",\r
+"T&.   c #C6A869",\r
+"U&.   c #C4A16C",\r
+"V&.   c #CCA36C",\r
+"W&.   c #C6A26C",\r
+"X&.   c #C19B6E",\r
+"Y&.   c #C19766",\r
+"Z&.   c #BD885F",\r
+"`&.   c #9A6048",\r
+" *.   c #7C513E",\r
+".*.   c #865039",\r
+"+*.   c #513E35",\r
+"@*.   c #604C36",\r
+"#*.   c #736445",\r
+"$*.   c #806A42",\r
+"%*.   c #987041",\r
+"&*.   c #9E7F43",\r
+"**.   c #A5854C",\r
+"=*.   c #A4824F",\r
+"-*.   c #A8914F",\r
+";*.   c #A78D52",\r
+">*.   c #AD8952",\r
+",*.   c #A88249",\r
+"'*.   c #9F7E4C",\r
+")*.   c #9F7943",\r
+"!*.   c #9F7141",\r
+"~*.   c #8C6F49",\r
+"{*.   c #90653C",\r
+"]*.   c #8C6A40",\r
+"^*.   c #867752",\r
+"/*.   c #826948",\r
+"(*.   c #5D483E",\r
+"_*.   c #444D40",\r
+":*.   c #53695B",\r
+"<*.   c #7E8975",\r
+"[*.   c #989871",\r
+"}*.   c #9C8F70",\r
+"|*.   c #9B7C6A",\r
+"1*.   c #967D60",\r
+"2*.   c #706756",\r
+"3*.   c #5F5F46",\r
+"4*.   c #707050",\r
+"5*.   c #696E5F",\r
+"6*.   c #928865",\r
+"7*.   c #9A7B69",\r
+"8*.   c #8D7768",\r
+"9*.   c #887750",\r
+"0*.   c #765248",\r
+"a*.   c #504F4B",\r
+"b*.   c #576053",\r
+"c*.   c #6D7061",\r
+"d*.   c #79695C",\r
+"e*.   c #756049",\r
+"f*.   c #788054",\r
+"g*.   c #989B6C",\r
+"h*.   c #A69F7A",\r
+"i*.   c #A79F7C",\r
+"j*.   c #AAA476",\r
+"k*.   c #A39476",\r
+"l*.   c #825D53",\r
+"m*.   c #686356",\r
+"n*.   c #6D5A4E",\r
+"o*.   c #5E5541",\r
+"p*.   c #696A47",\r
+"q*.   c #7C7255",\r
+"r*.   c #8D855A",\r
+"s*.   c #332D30",\r
+"t*.   c #333835",\r
+"u*.   c #6A6F69",\r
+"v*.   c #B1A589",\r
+"w*.   c #B5A581",\r
+"x*.   c #AAA482",\r
+"y*.   c #A68E6E",\r
+"z*.   c #807D65",\r
+"A*.   c #A0947C",\r
+"B*.   c #956759",\r
+"C*.   c #66563A",\r
+"D*.   c #756840",\r
+"E*.   c #8B744A",\r
+"F*.   c #8D6B48",\r
+"G*.   c #886347",\r
+"H*.   c #7B5A3C",\r
+"I*.   c #7E6749",\r
+"J*.   c #8E6F52",\r
+"K*.   c #9A8654",\r
+"L*.   c #B89C64",\r
+"M*.   c #BF9E6D",\r
+"N*.   c #C49B66",\r
+"O*.   c #B26650",\r
+"P*.   c #672D24",\r
+"Q*.   c #231E25",\r
+"R*.   c #232229",\r
+"S*.   c #24231E",\r
+"T*.   c #2E2920",\r
+"U*.   c #4E3230",\r
+"V*.   c #362523",\r
+"W*.   c #495741",\r
+"X*.   c #9E9167",\r
+"Y*.   c #C2A570",\r
+"Z*.   c #BEA070",\r
+"`*.   c #C29874",\r
+" =.   c #B78C6B",\r
+".=.   c #905C52",\r
+"+=.   c #664835",\r
+"@=.   c #58503A",\r
+"#=.   c #826546",\r
+"$=.   c #B17947",\r
+"%=.   c #BA9874",\r
+"&=.   c #C8AC85",\r
+"*=.   c #D1AB84",\r
+"==.   c #CC9A6F",\r
+"-=.   c #C1A177",\r
+";=.   c #CCA981",\r
+">=.   c #CEA67A",\r
+",=.   c #CCA67A",\r
+"'=.   c #CCA47E",\r
+")=.   c #CBA37B",\r
+"!=.   c #B36955",\r
+"~=.   c #4E342C",\r
+"{=.   c #586351",\r
+"]=.   c #B5A97E",\r
+"^=.   c #C8AF80",\r
+"/=.   c #CBA783",\r
+"(=.   c #CCAB8A",\r
+"_=.   c #C7AC89",\r
+":=.   c #CBAD89",\r
+"<=.   c #C9AB7B",\r
+"[=.   c #CAA887",\r
+"}=.   c #CAA988",\r
+"|=.   c #CEAE8F",\r
+"1=.   c #D2B288",\r
+"2=.   c #D0A87F",\r
+"3=.   c #CCAB81",\r
+"4=.   c #D0AC7B",\r
+"5=.   c #CBA782",\r
+"6=.   c #CAA580",\r
+"7=.   c #CDAC88",\r
+"8=.   c #CFAE83",\r
+"9=.   c #CFB085",\r
+"0=.   c #CCB087",\r
+"a=.   c #C9AA87",\r
+"b=.   c #CEB38F",\r
+"c=.   c #CCB485",\r
+"d=.   c #CCAF84",\r
+"e=.   c #CFAB84",\r
+"f=.   c #CFAD87",\r
+"g=.   c #CDB387",\r
+"h=.   c #CCB07C",\r
+"i=.   c #CDAC7B",\r
+"j=.   c #CDAF86",\r
+"k=.   c #CCAF82",\r
+"l=.   c #CCA681",\r
+"m=.   c #CEAC7D",\r
+"n=.   c #BF9054",\r
+"o=.   c #84442B",\r
+"p=.   c #51382E",\r
+"q=.   c #452F2A",\r
+"r=.   c #3C1F21",\r
+"s=.   c #645739",\r
+"t=.   c #B98C59",\r
+"u=.   c #CC9E5C",\r
+"v=.   c #C59A65",\r
+"w=.   c #CAA06E",\r
+"x=.   c #D3A76C",\r
+"y=.   c #C89268",\r
+"z=.   c #BC8E61",\r
+"A=.   c #C6A77F",\r
+"B=.   c #CDA283",\r
+"C=.   c #CA9A68",\r
+"D=.   c #C09468",\r
+"E=.   c #BEA278",\r
+"F=.   c #CAB081",\r
+"G=.   c #CEA57A",\r
+"H=.   c #C6966D",\r
+"I=.   c #BC9C76",\r
+"J=.   c #C79E75",\r
+"K=.   c #C8956A",\r
+"L=.   c #B68460",\r
+"M=.   c #A1614B",\r
+"N=.   c #805F45",\r
+"O=.   c #844F39",\r
+"P=.   c #57392B",\r
+"Q=.   c #685D38",\r
+"R=.   c #9E8850",\r
+"S=.   c #B09348",\r
+"T=.   c #B09450",\r
+"U=.   c #B39352",\r
+"V=.   c #C0975E",\r
+"W=.   c #BC9865",\r
+"X=.   c #BA9668",\r
+"Y=.   c #BA9A5E",\r
+"Z=.   c #BB9457",\r
+"`=.   c #B98D50",\r
+" -.   c #B88E5C",\r
+".-.   c #B68D4F",\r
+"+-.   c #B0814D",\r
+"@-.   c #AD834E",\r
+"#-.   c #AB7C3E",\r
+"$-.   c #A7773D",\r
+"%-.   c #A07E4C",\r
+"&-.   c #9E7344",\r
+"*-.   c #6E4936",\r
+"=-.   c #66563D",\r
+"--.   c #7E715D",\r
+";-.   c #827661",\r
+">-.   c #79785B",\r
+",-.   c #85765B",\r
+"'-.   c #7C715B",\r
+")-.   c #86826A",\r
+"!-.   c #98906E",\r
+"~-.   c #92926A",\r
+"{-.   c #928163",\r
+"]-.   c #7C7A64",\r
+"^-.   c #867C68",\r
+"/-.   c #856963",\r
+"(-.   c #7D6B65",\r
+"_-.   c #705A51",\r
+":-.   c #645544",\r
+"<-.   c #646B4D",\r
+"[-.   c #828067",\r
+"}-.   c #6C5D49",\r
+"|-.   c #5E684B",\r
+"1-.   c #86875E",\r
+"2-.   c #9A9473",\r
+"3-.   c #978966",\r
+"4-.   c #877866",\r
+"5-.   c #716156",\r
+"6-.   c #76705A",\r
+"7-.   c #7B6C54",\r
+"8-.   c #5E5534",\r
+"9-.   c #495645",\r
+"0-.   c #717C60",\r
+"a-.   c #87956D",\r
+"b-.   c #9C9B75",\r
+"c-.   c #A19872",\r
+"d-.   c #A0916B",\r
+"e-.   c #3C4A2A",\r
+"f-.   c #4D5034",\r
+"g-.   c #433733",\r
+"h-.   c #31292A",\r
+"i-.   c #3D3A3A",\r
+"j-.   c #70675A",\r
+"k-.   c #978A75",\r
+"l-.   c #9E9971",\r
+"m-.   c #A38A61",\r
+"n-.   c #8C8367",\r
+"o-.   c #928483",\r
+"p-.   c #8B625D",\r
+"q-.   c #654A3A",\r
+"r-.   c #7D6D4D",\r
+"s-.   c #937B58",\r
+"t-.   c #947150",\r
+"u-.   c #8A704C",\r
+"v-.   c #8D6248",\r
+"w-.   c #835D3B",\r
+"x-.   c #7F6941",\r
+"y-.   c #906C4F",\r
+"z-.   c #918154",\r
+"A-.   c #B79B70",\r
+"B-.   c #C7A671",\r
+"C-.   c #C18658",\r
+"D-.   c #914438",\r
+"E-.   c #462922",\r
+"F-.   c #29262A",\r
+"G-.   c #27202A",\r
+"H-.   c #302D20",\r
+"I-.   c #675F47",\r
+"J-.   c #604133",\r
+"K-.   c #545239",\r
+"L-.   c #A7905E",\r
+"M-.   c #BFA575",\r
+"N-.   c #C8AA75",\r
+"O-.   c #C9A275",\r
+"P-.   c #BF9C75",\r
+"Q-.   c #BE9460",\r
+"R-.   c #AA905D",\r
+"S-.   c #A08A67",\r
+"T-.   c #B98D5E",\r
+"U-.   c #C29965",\r
+"V-.   c #CFA97F",\r
+"W-.   c #D1AD81",\r
+"X-.   c #CFA473",\r
+"Y-.   c #C59874",\r
+"Z-.   c #C8A781",\r
+"`-.   c #CEAA84",\r
+" ;.   c #D4AD85",\r
+".;.   c #D5A885",\r
+"+;.   c #CDA877",\r
+"@;.   c #BA6F4F",\r
+"#;.   c #5E322B",\r
+"$;.   c #525E50",\r
+"%;.   c #BAA77F",\r
+"&;.   c #C8A186",\r
+"*;.   c #C9A88B",\r
+"=;.   c #C5A582",\r
+"-;.   c #C6AC87",\r
+";;.   c #CFB384",\r
+">;.   c #CAAF7D",\r
+",;.   c #CCAF88",\r
+"';.   c #C9AC84",\r
+");.   c #CFA989",\r
+"!;.   c #CDAF90",\r
+"~;.   c #CEB189",\r
+"{;.   c #D1AA86",\r
+"];.   c #CEA987",\r
+"^;.   c #D3A876",\r
+"/;.   c #D1AC7A",\r
+"(;.   c #CDA67D",\r
+"_;.   c #CEA881",\r
+":;.   c #CCA986",\r
+"<;.   c #CBB187",\r
+"[;.   c #CEAA89",\r
+"};.   c #CFB68D",\r
+"|;.   c #D0B98D",\r
+"1;.   c #CFB493",\r
+"2;.   c #D2B78F",\r
+"3;.   c #D2B484",\r
+"4;.   c #D3B98C",\r
+"5;.   c #D3B68C",\r
+"6;.   c #CEAD8E",\r
+"7;.   c #D2AF8D",\r
+"8;.   c #CEB386",\r
+"9;.   c #CFAE80",\r
+"0;.   c #D2B27C",\r
+"a;.   c #CCB37B",\r
+"b;.   c #CBAB7D",\r
+"c;.   c #CCA87E",\r
+"d;.   c #CA9F75",\r
+"e;.   c #B07647",\r
+"f;.   c #714536",\r
+"g;.   c #452728",\r
+"h;.   c #361D23",\r
+"i;.   c #312222",\r
+"j;.   c #3F3728",\r
+"k;.   c #8D7A51",\r
+"l;.   c #C8A469",\r
+"m;.   c #D0A673",\r
+"n;.   c #CDA66F",\r
+"o;.   c #CE9B7D",\r
+"p;.   c #B47E5D",\r
+"q;.   c #B08460",\r
+"r;.   c #B58A55",\r
+"s;.   c #B98D51",\r
+"t;.   c #BF9B69",\r
+"u;.   c #CCA37B",\r
+"v;.   c #CC9B79",\r
+"w;.   c #BF8469",\r
+"x;.   c #A97045",\r
+"y;.   c #A88A5C",\r
+"z;.   c #BE976E",\r
+"A;.   c #C39861",\r
+"B;.   c #B58155",\r
+"C;.   c #9A6A44",\r
+"D;.   c #9C7B47",\r
+"E;.   c #9B5441",\r
+"F;.   c #663C31",\r
+"G;.   c #6C6444",\r
+"H;.   c #AC9355",\r
+"I;.   c #BC985C",\r
+"J;.   c #BFA26A",\r
+"K;.   c #C3A363",\r
+"L;.   c #C8A96C",\r
+"M;.   c #C8A169",\r
+"N;.   c #C59E70",\r
+"O;.   c #C29D70",\r
+"P;.   c #C0905F",\r
+"Q;.   c #BB9057",\r
+"R;.   c #BB9361",\r
+"S;.   c #BA9757",\r
+"T;.   c #BD904E",\r
+"U;.   c #BD9A58",\r
+"V;.   c #BB9151",\r
+"W;.   c #BB924E",\r
+"X;.   c #B68B4F",\r
+"Y;.   c #B18A4A",\r
+"Z;.   c #A57E4B",\r
+"`;.   c #9D6B41",\r
+" >.   c #7E655A",\r
+".>.   c #836C61",\r
+"+>.   c #7C7A60",\r
+"@>.   c #837E5D",\r
+"#>.   c #8A8A61",\r
+"$>.   c #8C9079",\r
+"%>.   c #9A977B",\r
+"&>.   c #9D9476",\r
+"*>.   c #9A896C",\r
+"=>.   c #7F775E",\r
+"->.   c #88816E",\r
+";>.   c #8A7F6B",\r
+">>.   c #8C8866",\r
+",>.   c #938760",\r
+"'>.   c #827362",\r
+")>.   c #867E5A",\r
+"!>.   c #8F6E62",\r
+"~>.   c #705041",\r
+"{>.   c #767657",\r
+"]>.   c #946E60",\r
+"^>.   c #715351",\r
+"/>.   c #5F524C",\r
+"(>.   c #615545",\r
+"_>.   c #4B4336",\r
+":>.   c #474234",\r
+"<>.   c #44422F",\r
+"[>.   c #4B6055",\r
+"}>.   c #9D9B7F",\r
+"|>.   c #A49E7D",\r
+"1>.   c #A29171",\r
+"2>.   c #898365",\r
+"3>.   c #828376",\r
+"4>.   c #645941",\r
+"5>.   c #5B5839",\r
+"6>.   c #4B4C40",\r
+"7>.   c #473835",\r
+"8>.   c #393331",\r
+"9>.   c #3B312C",\r
+"0>.   c #51554A",\r
+"a>.   c #938C76",\r
+"b>.   c #A4896A",\r
+"c>.   c #8A8365",\r
+"d>.   c #865B5E",\r
+"e>.   c #563E39",\r
+"f>.   c #796943",\r
+"g>.   c #9D7F4A",\r
+"h>.   c #907257",\r
+"i>.   c #957551",\r
+"j>.   c #977B53",\r
+"k>.   c #8A6A53",\r
+"l>.   c #7F6546",\r
+"m>.   c #7E6847",\r
+"n>.   c #8E724A",\r
+"o>.   c #968651",\r
+"p>.   c #BAA273",\r
+"q>.   c #CC9D6B",\r
+"r>.   c #B66C46",\r
+"s>.   c #6D3428",\r
+"t>.   c #322322",\r
+"u>.   c #302320",\r
+"v>.   c #2B2226",\r
+"w>.   c #2E2426",\r
+"x>.   c #2B3527",\r
+"y>.   c #787C5D",\r
+"z>.   c #98584E",\r
+"A>.   c #5B4E3E",\r
+"B>.   c #8B7F65",\r
+"C>.   c #B9A076",\r
+"D>.   c #C3A779",\r
+"E>.   c #D1B087",\r
+"F>.   c #D3B18E",\r
+"G>.   c #D5B282",\r
+"H>.   c #D1B082",\r
+"I>.   c #CBA87B",\r
+"J>.   c #CBA273",\r
+"K>.   c #CBA982",\r
+"L>.   c #D1AA83",\r
+"M>.   c #D0A180",\r
+"N>.   c #CAA788",\r
+"O>.   c #C89D7A",\r
+"P>.   c #C89A70",\r
+"Q>.   c #C39C6F",\r
+"R>.   c #CDA87B",\r
+"S>.   c #D7AC84",\r
+"T>.   c #D4A980",\r
+"U>.   c #D0A17D",\r
+"V>.   c #B26758",\r
+"W>.   c #4B342C",\r
+"X>.   c #545A41",\r
+"Y>.   c #B9A575",\r
+"Z>.   c #C9AC7D",\r
+"`>.   c #C9A47F",\r
+" ,.   c #C7AB82",\r
+".,.   c #CCAD84",\r
+"+,.   c #C6AB8A",\r
+"@,.   c #CEB287",\r
+"#,.   c #CEB184",\r
+"$,.   c #C8AB8B",\r
+"%,.   c #C8AC86",\r
+"&,.   c #CDAE8B",\r
+"*,.   c #CBB18C",\r
+"=,.   c #CAB086",\r
+"-,.   c #CCAC83",\r
+";,.   c #D4AB7F",\r
+">,.   c #D2AF87",\r
+",,.   c #D2AF7D",\r
+"',.   c #CCAE81",\r
+"),.   c #CCA17F",\r
+"!,.   c #D1AE89",\r
+"~,.   c #CEB58D",\r
+"{,.   c #D1BB96",\r
+"],.   c #D2B58E",\r
+"^,.   c #D2B38B",\r
+"/,.   c #D4BB91",\r
+"(,.   c #D6B88D",\r
+"_,.   c #D7B393",\r
+":,.   c #D4B48C",\r
+"<,.   c #CDB485",\r
+"[,.   c #CDAE87",\r
+"},.   c #D0AE81",\r
+"|,.   c #CAA981",\r
+"1,.   c #C7AA7E",\r
+"2,.   c #CAAA80",\r
+"3,.   c #C6996C",\r
+"4,.   c #AC7448",\r
+"5,.   c #70322B",\r
+"6,.   c #3D2127",\r
+"7,.   c #2D2324",\r
+"8,.   c #332B21",\r
+"9,.   c #5B5843",\r
+"0,.   c #A29064",\r
+"a,.   c #CCA970",\r
+"b,.   c #D3A56F",\r
+"c,.   c #D1A17D",\r
+"d,.   c #CEA57F",\r
+"e,.   c #B98568",\r
+"f,.   c #AC7960",\r
+"g,.   c #A68E59",\r
+"h,.   c #BA9665",\r
+"i,.   c #C68D67",\r
+"j,.   c #CB8B5E",\r
+"k,.   c #C0895E",\r
+"l,.   c #AE6949",\r
+"m,.   c #A58046",\r
+"n,.   c #C19B6D",\r
+"o,.   c #C89B68",\r
+"p,.   c #C79C66",\r
+"q,.   c #B77D58",\r
+"r,.   c #926E43",\r
+"s,.   c #9F754A",\r
+"t,.   c #A16045",\r
+"u,.   c #734131",\r
+"v,.   c #816542",\r
+"w,.   c #AD9155",\r
+"x,.   c #B49E63",\r
+"y,.   c #C1A576",\r
+"z,.   c #C79F6E",\r
+"A,.   c #C8AA79",\r
+"B,.   c #C8A472",\r
+"C,.   c #C69B6D",\r
+"D,.   c #C49C70",\r
+"E,.   c #C29A5C",\r
+"F,.   c #C29A62",\r
+"G,.   c #C49D67",\r
+"H,.   c #C79F69",\r
+"I,.   c #C19C69",\r
+"J,.   c #C29A61",\r
+"K,.   c #C39D62",\r
+"L,.   c #BD934F",\r
+"M,.   c #B89551",\r
+"N,.   c #BB8C56",\r
+"O,.   c #B5814B",\r
+"P,.   c #9D6553",\r
+"Q,.   c #94765E",\r
+"R,.   c #8A846E",\r
+"S,.   c #8F8A76",\r
+"T,.   c #8C8070",\r
+"U,.   c #818270",\r
+"V,.   c #777A64",\r
+"W,.   c #8D7867",\r
+"X,.   c #8A7364",\r
+"Y,.   c #6F5453",\r
+"Z,.   c #626754",\r
+"`,.   c #888D73",\r
+" '.   c #9E997C",\r
+".'.   c #9D8B6F",\r
+"+'.   c #8C7C56",\r
+"@'.   c #8A8464",\r
+"#'.   c #8D624F",\r
+"$'.   c #545139",\r
+"%'.   c #676655",\r
+"&'.   c #735944",\r
+"*'.   c #625444",\r
+"='.   c #524A38",\r
+"-'.   c #545A38",\r
+";'.   c #69724A",\r
+">'.   c #707255",\r
+",'.   c #757E6E",\r
+"''.   c #946B5D",\r
+")'.   c #5B473C",\r
+"!'.   c #505952",\r
+"~'.   c #7E7256",\r
+"{'.   c #726046",\r
+"]'.   c #605D4B",\r
+"^'.   c #636250",\r
+"/'.   c #564F3B",\r
+"('.   c #462929",\r
+"_'.   c #3A342E",\r
+":'.   c #5A594D",\r
+"<'.   c #918877",\r
+"['.   c #9D7564",\r
+"}'.   c #67413B",\r
+"|'.   c #65634F",\r
+"1'.   c #947453",\r
+"2'.   c #947D51",\r
+"3'.   c #947D4A",\r
+"4'.   c #94754F",\r
+"5'.   c #937856",\r
+"6'.   c #8F794C",\r
+"7'.   c #87684B",\r
+"8'.   c #7C6A51",\r
+"9'.   c #917450",\r
+"0'.   c #9B835C",\r
+"a'.   c #BA9E77",\r
+"b'.   c #C0785B",\r
+"c'.   c #96443B",\r
+"d'.   c #412526",\r
+"e'.   c #282625",\r
+"f'.   c #2C2628",\r
+"g'.   c #252526",\r
+"h'.   c #293224",\r
+"i'.   c #63694B",\r
+"j'.   c #A0746E",\r
+"k'.   c #785445",\r
+"l'.   c #8C7D50",\r
+"m'.   c #B3976A",\r
+"n'.   c #B8A373",\r
+"o'.   c #CBA987",\r
+"p'.   c #D2A78A",\r
+"q'.   c #D4B28C",\r
+"r'.   c #D6B791",\r
+"s'.   c #D5B590",\r
+"t'.   c #D2A983",\r
+"u'.   c #D3B289",\r
+"v'.   c #D5AA7C",\r
+"w'.   c #CD9F79",\r
+"x'.   c #CAA68A",\r
+"y'.   c #CEA380",\r
+"z'.   c #C38464",\r
+"A'.   c #B08355",\r
+"B'.   c #C39B65",\r
+"C'.   c #C99A6F",\r
+"D'.   c #A55B4A",\r
+"E'.   c #3E2E23",\r
+"F'.   c #535142",\r
+"G'.   c #B49D77",\r
+"H'.   c #D1AF80",\r
+"I'.   c #CCA87F",\r
+"J'.   c #CAB17F",\r
+"K'.   c #C9B185",\r
+"L'.   c #CFB58D",\r
+"M'.   c #CCB488",\r
+"N'.   c #CAAA85",\r
+"O'.   c #CBB089",\r
+"P'.   c #CBB188",\r
+"Q'.   c #C7AF8A",\r
+"R'.   c #CDAE8A",\r
+"S'.   c #C9A686",\r
+"T'.   c #CDAA78",\r
+"U'.   c #CEAE81",\r
+"V'.   c #CFB089",\r
+"W'.   c #CEB385",\r
+"X'.   c #CFAF8A",\r
+"Y'.   c #CBAE88",\r
+"Z'.   c #CBB087",\r
+"`'.   c #D1AF85",\r
+" ).   c #D6B485",\r
+".).   c #D3B790",\r
+"+).   c #D2B994",\r
+"@).   c #D3B68A",\r
+"#).   c #D1AD88",\r
+"$).   c #D2B78C",\r
+"%).   c #D5B78D",\r
+"&).   c #D1B590",\r
+"*).   c #D2B58B",\r
+"=).   c #D0AF89",\r
+"-).   c #CAAC86",\r
+";).   c #D0A980",\r
+">).   c #CAAA83",\r
+",).   c #C7A881",\r
+"').   c #C7AB83",\r
+")).   c #C6A788",\r
+"!).   c #BB9C6A",\r
+"~).   c #9C6C4D",\r
+"{).   c #5B3A32",\r
+"]).   c #382C25",\r
+"^).   c #3F352C",\r
+"/).   c #5E5842",\r
+"().   c #997B57",\r
+"_).   c #C69E63",\r
+":).   c #CD9D76",\r
+"<).   c #CFA26D",\r
+"[).   c #C6996A",\r
+"}).   c #BB8C60",\r
+"|).   c #B18056",\r
+"1).   c #B7795D",\r
+"2).   c #B37658",\r
+"3).   c #B19362",\r
+"4).   c #C3977A",\r
+"5).   c #BF785A",\r
+"6).   c #B89355",\r
+"7).   c #C6A06A",\r
+"8).   c #CFA36A",\r
+"9).   c #CB9F6A",\r
+"0).   c #B5754E",\r
+"a).   c #885B47",\r
+"b).   c #9C7056",\r
+"c).   c #A25C42",\r
+"d).   c #845134",\r
+"e).   c #937A50",\r
+"f).   c #AA8F51",\r
+"g).   c #B79D68",\r
+"h).   c #C0A06C",\r
+"i).   c #C19E6E",\r
+"j).   c #C7A376",\r
+"k).   c #CBA972",\r
+"l).   c #C3976C",\r
+"m).   c #C3A165",\r
+"n).   c #C9A971",\r
+"o).   c #CB9C6A",\r
+"p).   c #C4A46F",\r
+"q).   c #C3A36B",\r
+"r).   c #C79E6B",\r
+"s).   c #C09A71",\r
+"t).   c #C19A64",\r
+"u).   c #C19866",\r
+"v).   c #BC9364",\r
+"w).   c #C0924D",\r
+"x).   c #A8724B",\r
+"y).   c #95633D",\r
+"z).   c #74725A",\r
+"A).   c #878675",\r
+"B).   c #857E6E",\r
+"C).   c #858173",\r
+"D).   c #807068",\r
+"E).   c #846863",\r
+"F).   c #686A5A",\r
+"G).   c #877F67",\r
+"H).   c #78835B",\r
+"I).   c #8B876D",\r
+"J).   c #A29675",\r
+"K).   c #957F69",\r
+"L).   c #807057",\r
+"M).   c #7E7F62",\r
+"N).   c #9E9678",\r
+"O).   c #AB966D",\r
+"P).   c #9B8D5C",\r
+"Q).   c #926E59",\r
+"R).   c #736A4B",\r
+"S).   c #85735A",\r
+"T).   c #7A7256",\r
+"U).   c #776C53",\r
+"V).   c #7A7859",\r
+"W).   c #90956D",\r
+"X).   c #A89E6A",\r
+"Y).   c #9E9775",\r
+"Z).   c #9E9675",\r
+"`).   c #A29575",\r
+" !.   c #A19577",\r
+".!.   c #837261",\r
+"+!.   c #666B5E",\r
+"@!.   c #7E704E",\r
+"#!.   c #786E56",\r
+"$!.   c #81795A",\r
+"%!.   c #898154",\r
+"&!.   c #755043",\r
+"*!.   c #3B2F2A",\r
+"=!.   c #3D3B38",\r
+"-!.   c #554947",\r
+";!.   c #624A41",\r
+">!.   c #54483B",\r
+",!.   c #827554",\r
+"'!.   c #947853",\r
+")!.   c #95775A",\r
+"!!.   c #987A51",\r
+"~!.   c #927B54",\r
+"{!.   c #92785A",\r
+"]!.   c #8E6E4B",\r
+"^!.   c #8B6A46",\r
+"/!.   c #7C6B4C",\r
+"(!.   c #906949",\r
+"_!.   c #9B845C",\r
+":!.   c #BC9268",\r
+"<!.   c #9F4C41",\r
+"[!.   c #5D2E28",\r
+"}!.   c #2D2A27",\r
+"|!.   c #262928",\r
+"1!.   c #282A2D",\r
+"2!.   c #2B2127",\r
+"3!.   c #2D1E25",\r
+"4!.   c #2B2325",\r
+"5!.   c #464A39",\r
+"6!.   c #877264",\r
+"7!.   c #A66656",\r
+"8!.   c #9A815A",\r
+"9!.   c #AF9565",\r
+"0!.   c #BA9C6D",\r
+"a!.   c #C0A683",\r
+"b!.   c #CCAD83",\r
+"c!.   c #D2AF89",\r
+"d!.   c #D7BC98",\r
+"e!.   c #D8B996",\r
+"f!.   c #D6A888",\r
+"g!.   c #D3A681",\r
+"h!.   c #CE9E70",\r
+"i!.   c #C29565",\r
+"j!.   c #C4B28D",\r
+"k!.   c #D2AC8E",\r
+"l!.   c #B38D58",\r
+"m!.   c #B9906B",\r
+"n!.   c #BF9A75",\r
+"o!.   c #C5A470",\r
+"p!.   c #C2956A",\r
+"q!.   c #995144",\r
+"r!.   c #3B2825",\r
+"s!.   c #534C41",\r
+"t!.   c #B09F75",\r
+"u!.   c #CAB183",\r
+"v!.   c #C8B18B",\r
+"w!.   c #CAB588",\r
+"x!.   c #CEB08E",\r
+"y!.   c #D3B896",\r
+"z!.   c #CEB88A",\r
+"A!.   c #CCB18D",\r
+"B!.   c #C8B18A",\r
+"C!.   c #CAB18A",\r
+"D!.   c #C4B090",\r
+"E!.   c #CAB18F",\r
+"F!.   c #CDAF8A",\r
+"G!.   c #CCAF89",\r
+"H!.   c #C9AB80",\r
+"I!.   c #CDAB85",\r
+"J!.   c #CDB086",\r
+"K!.   c #CFB485",\r
+"L!.   c #D0B08E",\r
+"M!.   c #CCB58C",\r
+"N!.   c #D0B58E",\r
+"O!.   c #D5B990",\r
+"P!.   c #D3B995",\r
+"Q!.   c #D2B694",\r
+"R!.   c #D3B588",\r
+"S!.   c #D3B88A",\r
+"T!.   c #D2B989",\r
+"U!.   c #D0B78E",\r
+"V!.   c #D1B38A",\r
+"W!.   c #D2B38E",\r
+"X!.   c #CFB28B",\r
+"Y!.   c #D0AF85",\r
+"Z!.   c #CBA886",\r
+"`!.   c #CDAB7C",\r
+" ~.   c #CAB083",\r
+".~.   c #C6A381",\r
+"+~.   c #C29F78",\r
+"@~.   c #BD9F74",\r
+"#~.   c #B08B61",\r
+"$~.   c #845244",\r
+"%~.   c #48332E",\r
+"&~.   c #4F392C",\r
+"*~.   c #413130",\r
+"=~.   c #3F302B",\r
+"-~.   c #523F32",\r
+";~.   c #8E723D",\r
+">~.   c #B58F5D",\r
+",~.   c #BE965C",\r
+"'~.   c #B9906D",\r
+")~.   c #A67453",\r
+"!~.   c #935D42",\r
+"~~.   c #8A5746",\r
+"{~.   c #9B705E",\r
+"]~.   c #B3846D",\r
+"^~.   c #C48063",\r
+"/~.   c #C98757",\r
+"(~.   c #C69C69",\r
+"_~.   c #C8A371",\r
+":~.   c #CEA072",\r
+"<~.   c #CE9870",\r
+"[~.   c #A46348",\r
+"}~.   c #846147",\r
+"|~.   c #A87D51",\r
+"1~.   c #AA753D",\r
+"2~.   c #9B7246",\r
+"3~.   c #A28954",\r
+"4~.   c #AE905F",\r
+"5~.   c #B69970",\r
+"6~.   c #BC9F6E",\r
+"7~.   c #C2A173",\r
+"8~.   c #C7A67A",\r
+"9~.   c #C7A06A",\r
+"0~.   c #C09564",\r
+"a~.   c #C39B61",\r
+"b~.   c #C49F72",\r
+"c~.   c #CDAB7B",\r
+"d~.   c #C3986A",\r
+"e~.   c #C49D64",\r
+"f~.   c #C3A467",\r
+"g~.   c #BF9E6C",\r
+"h~.   c #C2996D",\r
+"i~.   c #C19868",\r
+"j~.   c #C19D6A",\r
+"k~.   c #C09A67",\r
+"l~.   c #BC8F62",\r
+"m~.   c #B68856",\r
+"n~.   c #A36F43",\r
+"o~.   c #876743",\r
+"p~.   c #807B61",\r
+"q~.   c #939379",\r
+"r~.   c #99937E",\r
+"s~.   c #9F8E72",\r
+"t~.   c #856758",\r
+"u~.   c #4F544B",\r
+"v~.   c #776E62",\r
+"w~.   c #81795F",\r
+"x~.   c #877366",\r
+"y~.   c #87705D",\r
+"z~.   c #66664F",\r
+"A~.   c #697859",\r
+"B~.   c #8A9174",\r
+"C~.   c #A39F7F",\r
+"D~.   c #A2936D",\r
+"E~.   c #93866F",\r
+"F~.   c #7C725A",\r
+"G~.   c #5F604E",\r
+"H~.   c #705D48",\r
+"I~.   c #665E3E",\r
+"J~.   c #6B6D4C",\r
+"K~.   c #87876A",\r
+"L~.   c #92896F",\r
+"M~.   c #948E7A",\r
+"N~.   c #978F74",\r
+"O~.   c #99906D",\r
+"P~.   c #977A5D",\r
+"Q~.   c #828064",\r
+"R~.   c #968768",\r
+"S~.   c #78736C",\r
+"T~.   c #7D6D53",\r
+"U~.   c #747755",\r
+"V~.   c #A09267",\r
+"W~.   c #91654E",\r
+"X~.   c #4A4331",\r
+"Y~.   c #393937",\r
+"Z~.   c #423635",\r
+"`~.   c #4C4035",\r
+" {.   c #70644B",\r
+".{.   c #8B7657",\r
+"+{.   c #917758",\r
+"@{.   c #9A7F54",\r
+"#{.   c #977953",\r
+"${.   c #9B7E54",\r
+"%{.   c #9A8157",\r
+"&{.   c #86684E",\r
+"*{.   c #80634A",\r
+"={.   c #846B47",\r
+"-{.   c #8F744A",\r
+";{.   c #99825A",\r
+">{.   c #A96854",\r
+",{.   c #682B33",\r
+"'{.   c #362429",\r
+"){.   c #272522",\r
+"!{.   c #252521",\r
+"~{.   c #282624",\r
+"{{.   c #2A2125",\r
+"]{.   c #2D2627",\r
+"^{.   c #362428",\r
+"/{.   c #302D23",\r
+"({.   c #4F3735",\r
+"_{.   c #683F3C",\r
+":{.   c #6E674B",\r
+"<{.   c #B09B69",\r
+"[{.   c #B89B73",\r
+"}{.   c #C1A37E",\r
+"|{.   c #CBAD7F",\r
+"1{.   c #CFAA82",\r
+"2{.   c #D6B793",\r
+"3{.   c #D6B28A",\r
+"4{.   c #D7A378",\r
+"5{.   c #CB9064",\r
+"6{.   c #BA915E",\r
+"7{.   c #C09872",\r
+"8{.   c #BFA488",\r
+"9{.   c #C9A58E",\r
+"0{.   c #C89577",\r
+"a{.   c #BB955F",\r
+"b{.   c #BB8A61",\r
+"c{.   c #BA9062",\r
+"d{.   c #C6A765",\r
+"e{.   c #C09364",\r
+"f{.   c #924A3D",\r
+"g{.   c #4B3725",\r
+"h{.   c #675F41",\r
+"i{.   c #C5A77F",\r
+"j{.   c #C8B387",\r
+"k{.   c #CCB685",\r
+"l{.   c #CEAF8D",\r
+"m{.   c #D3B68F",\r
+"n{.   c #CFB58E",\r
+"o{.   c #CCB293",\r
+"p{.   c #C9B190",\r
+"q{.   c #C9B191",\r
+"r{.   c #C8B291",\r
+"s{.   c #CBB98D",\r
+"t{.   c #D0B88B",\r
+"u{.   c #CFB78A",\r
+"v{.   c #CAB092",\r
+"w{.   c #D0B68E",\r
+"x{.   c #D4B185",\r
+"y{.   c #CDB58F",\r
+"z{.   c #CEB794",\r
+"A{.   c #D4BB8B",\r
+"B{.   c #D3B491",\r
+"C{.   c #D4B694",\r
+"D{.   c #D1B68F",\r
+"E{.   c #D1B88B",\r
+"F{.   c #D1B88E",\r
+"G{.   c #D4BA91",\r
+"H{.   c #D4B689",\r
+"I{.   c #D2B28B",\r
+"J{.   c #D2B48B",\r
+"K{.   c #D2B289",\r
+"L{.   c #CEAB8C",\r
+"M{.   c #CDAC86",\r
+"N{.   c #C8AD83",\r
+"O{.   c #BF9C6B",\r
+"P{.   c #BB9F70",\r
+"Q{.   c #AB855F",\r
+"R{.   c #905B46",\r
+"S{.   c #51342D",\r
+"T{.   c #60463A",\r
+"U{.   c #46342B",\r
+"V{.   c #3C352A",\r
+"W{.   c #4A3D30",\r
+"X{.   c #705E3C",\r
+"Y{.   c #92744C",\r
+"Z{.   c #B39766",\r
+"`{.   c #B9965F",\r
+" ].   c #B47F5A",\r
+".].   c #A66148",\r
+"+].   c #AE6047",\r
+"@].   c #BC634A",\r
+"#].   c #C56941",\r
+"$].   c #C28C4E",\r
+"%].   c #CCAE7D",\r
+"&].   c #CFA579",\r
+"*].   c #C38C70",\r
+"=].   c #8C5840",\r
+"-].   c #836F4B",\r
+";].   c #AE8353",\r
+">].   c #AE8148",\r
+",].   c #A38149",\r
+"'].   c #AD8F4C",\r
+")].   c #B6925D",\r
+"!].   c #BA9E6D",\r
+"~].   c #C8AB73",\r
+"{].   c #C3976B",\r
+"]].   c #BC9F6B",\r
+"^].   c #C2A36D",\r
+"/].   c #C8A075",\r
+"(].   c #C6A473",\r
+"_].   c #C19668",\r
+":].   c #C29E62",\r
+"<].   c #BF9F6A",\r
+"[].   c #C29E76",\r
+"}].   c #C6A16F",\r
+"|].   c #C2965F",\r
+"1].   c #BF9E67",\r
+"2].   c #C6A65A",\r
+"3].   c #BF9A63",\r
+"4].   c #B88B57",\r
+"5].   c #B78446",\r
+"6].   c #9B6246",\r
+"7].   c #75614A",\r
+"8].   c #8C897B",\r
+"9].   c #9D9482",\r
+"0].   c #A49579",\r
+"a].   c #9C785E",\r
+"b].   c #717A5A",\r
+"c].   c #888974",\r
+"d].   c #80746E",\r
+"e].   c #75746B",\r
+"f].   c #777B6B",\r
+"g].   c #838264",\r
+"h].   c #81805C",\r
+"i].   c #7C7A5E",\r
+"j].   c #82785E",\r
+"k].   c #7A7C52",\r
+"l].   c #7D8873",\r
+"m].   c #93956D",\r
+"n].   c #909069",\r
+"o].   c #98946E",\r
+"p].   c #9E7A46",\r
+"q].   c #97804F",\r
+"r].   c #878368",\r
+"s].   c #908863",\r
+"t].   c #887D6F",\r
+"u].   c #837161",\r
+"v].   c #86715A",\r
+"w].   c #6B584A",\r
+"x].   c #7A7F71",\r
+"y].   c #988876",\r
+"z].   c #795551",\r
+"A].   c #725444",\r
+"B].   c #5E6A54",\r
+"C].   c #88856D",\r
+"D].   c #9E806E",\r
+"E].   c #826A56",\r
+"F].   c #686A47",\r
+"G].   c #644436",\r
+"H].   c #403B36",\r
+"I].   c #494439",\r
+"J].   c #695B42",\r
+"K].   c #7F7054",\r
+"L].   c #927B5B",\r
+"M].   c #987A59",\r
+"N].   c #987A5A",\r
+"O].   c #9A7B57",\r
+"P].   c #987544",\r
+"Q].   c #896B44",\r
+"R].   c #7E6246",\r
+"S].   c #785D48",\r
+"T].   c #7D6548",\r
+"U].   c #8A6349",\r
+"V].   c #7A3539",\r
+"W].   c #361F22",\r
+"X].   c #222725",\r
+"Y].   c #271F1D",\r
+"Z].   c #2D232D",\r
+"`].   c #2E2C27",\r
+" ^.   c #3B2720",\r
+".^.   c #382321",\r
+"+^.   c #2F2425",\r
+"@^.   c #3C382D",\r
+"#^.   c #515132",\r
+"$^.   c #9E915A",\r
+"%^.   c #BB9D70",\r
+"&^.   c #C09C73",\r
+"*^.   c #C3A074",\r
+"=^.   c #C9A47E",\r
+"-^.   c #D2AE89",\r
+";^.   c #D1A87C",\r
+">^.   c #C79068",\r
+",^.   c #C19B5E",\r
+"'^.   c #C2976D",\r
+")^.   c #C08C5F",\r
+"!^.   c #B78D5D",\r
+"~^.   c #BA8A6D",\r
+"{^.   c #B79068",\r
+"]^.   c #BA8768",\r
+"^^.   c #BE8059",\r
+"/^.   c #A79362",\r
+"(^.   c #C4A56F",\r
+"_^.   c #B67556",\r
+":^.   c #5D3129",\r
+"<^.   c #4F4B2C",\r
+"[^.   c #847B51",\r
+"}^.   c #AFA26F",\r
+"|^.   c #C1A282",\r
+"1^.   c #C8AD87",\r
+"2^.   c #CAB187",\r
+"3^.   c #CFB38B",\r
+"4^.   c #D4B183",\r
+"5^.   c #D2B78E",\r
+"6^.   c #D0B38F",\r
+"7^.   c #CBB18D",\r
+"8^.   c #CDB292",\r
+"9^.   c #CEB894",\r
+"0^.   c #CEBA93",\r
+"a^.   c #D0B193",\r
+"b^.   c #CEB08C",\r
+"c^.   c #D1B58A",\r
+"d^.   c #CEB18D",\r
+"e^.   c #CBAD87",\r
+"f^.   c #CCAD8B",\r
+"g^.   c #CEB18B",\r
+"h^.   c #CCB289",\r
+"i^.   c #CCB490",\r
+"j^.   c #D1B492",\r
+"k^.   c #D0BC94",\r
+"l^.   c #D3BA96",\r
+"m^.   c #D1B68C",\r
+"n^.   c #CFB68E",\r
+"o^.   c #D0B990",\r
+"p^.   c #D1BB8D",\r
+"q^.   c #D6BA94",\r
+"r^.   c #D2B995",\r
+"s^.   c #CEB494",\r
+"t^.   c #D0AC91",\r
+"u^.   c #D3B48D",\r
+"v^.   c #D1B189",\r
+"w^.   c #CAAB88",\r
+"x^.   c #CBA681",\r
+"y^.   c #C8A786",\r
+"z^.   c #C1A47E",\r
+"A^.   c #C1A274",\r
+"B^.   c #B49976",\r
+"C^.   c #AB815F",\r
+"D^.   c #94573D",\r
+"E^.   c #4A2C28",\r
+"F^.   c #3A3328",\r
+"G^.   c #4E3F33",\r
+"H^.   c #48352F",\r
+"I^.   c #3C332C",\r
+"J^.   c #3E2F2F",\r
+"K^.   c #392C26",\r
+"L^.   c #483A33",\r
+"M^.   c #6C5E47",\r
+"N^.   c #8B795A",\r
+"O^.   c #AA926B",\r
+"P^.   c #BA834D",\r
+"Q^.   c #B98350",\r
+"R^.   c #BF9255",\r
+"S^.   c #C7A46E",\r
+"T^.   c #CEB48F",\r
+"U^.   c #D4B690",\r
+"V^.   c #CF9E78",\r
+"W^.   c #B86C5A",\r
+"X^.   c #8B6C48",\r
+"Y^.   c #9D7E51",\r
+"Z^.   c #AD8953",\r
+"`^.   c #AE8A50",\r
+" /.   c #B18856",\r
+"./.   c #B18F50",\r
+"+/.   c #B99568",\r
+"@/.   c #C9A46C",\r
+"#/.   c #C6A776",\r
+"$/.   c #CAAC7E",\r
+"%/.   c #C99B6E",\r
+"&/.   c #C39562",\r
+"*/.   c #C09E77",\r
+"=/.   c #CB9E6B",\r
+"-/.   c #C49B6C",\r
+";/.   c #CAA573",\r
+">/.   c #C7A474",\r
+",/.   c #C29761",\r
+"'/.   c #C09863",\r
+")/.   c #C0966A",\r
+"!/.   c #C09E6B",\r
+"~/.   c #C19D66",\r
+"{/.   c #BE9768",\r
+"]/.   c #BD9E74",\r
+"^/.   c #C09D67",\r
+"//.   c #BB9459",\r
+"(/.   c #BD924F",\r
+"_/.   c #AD7654",\r
+":/.   c #9A5F48",\r
+"</.   c #725258",\r
+"[/.   c #6B6E65",\r
+"}/.   c #928972",\r
+"|/.   c #8B8968",\r
+"1/.   c #7D7B69",\r
+"2/.   c #918779",\r
+"3/.   c #6F645D",\r
+"4/.   c #5F6452",\r
+"5/.   c #776B5B",\r
+"6/.   c #696054",\r
+"7/.   c #67584D",\r
+"8/.   c #614745",\r
+"9/.   c #483E3C",\r
+"0/.   c #4F5A53",\r
+"a/.   c #9AA08C",\r
+"b/.   c #B4B18B",\r
+"c/.   c #B4AD88",\r
+"d/.   c #ACAB88",\r
+"e/.   c #AC9F70",\r
+"f/.   c #A27A61",\r
+"g/.   c #7E7558",\r
+"h/.   c #847F58",\r
+"i/.   c #7C7A68",\r
+"j/.   c #6C6B50",\r
+"k/.   c #756C54",\r
+"l/.   c #664A43",\r
+"m/.   c #595E59",\r
+"n/.   c #878976",\r
+"o/.   c #87705A",\r
+"p/.   c #6B654E",\r
+"q/.   c #856F5F",\r
+"r/.   c #8E7F6C",\r
+"s/.   c #927760",\r
+"t/.   c #776A5F",\r
+"u/.   c #879279",\r
+"v/.   c #9F825C",\r
+"w/.   c #5C3D39",\r
+"x/.   c #3E3A35",\r
+"y/.   c #4E483D",\r
+"z/.   c #6A5D49",\r
+"A/.   c #886947",\r
+"B/.   c #927550",\r
+"C/.   c #997856",\r
+"D/.   c #9C7951",\r
+"E/.   c #917557",\r
+"F/.   c #886A49",\r
+"G/.   c #846346",\r
+"H/.   c #785B44",\r
+"I/.   c #74623F",\r
+"J/.   c #694E3E",\r
+"K/.   c #4C302B",\r
+"L/.   c #412229",\r
+"M/.   c #271F26",\r
+"N/.   c #241D27",\r
+"O/.   c #252529",\r
+"P/.   c #232226",\r
+"Q/.   c #251D24",\r
+"R/.   c #2A262A",\r
+"S/.   c #2A2726",\r
+"T/.   c #403425",\r
+"U/.   c #372D2D",\r
+"V/.   c #4D4235",\r
+"W/.   c #7C6F52",\r
+"X/.   c #B29C76",\r
+"Y/.   c #C09B76",\r
+"Z/.   c #BE9A6F",\r
+"`/.   c #C5A172",\r
+" (.   c #C8A176",\r
+".(.   c #C09563",\r
+"+(.   c #B99266",\r
+"@(.   c #BA966F",\r
+"#(.   c #C19978",\r
+"$(.   c #C49D72",\r
+"%(.   c #C6995F",\r
+"&(.   c #C39061",\r
+"*(.   c #BB8765",\r
+"=(.   c #AB6757",\r
+"-(.   c #A58A60",\r
+";(.   c #BCA675",\r
+">(.   c #BF9674",\r
+",(.   c #874F43",\r
+"'(.   c #412B21",\r
+")(.   c #5B5C3F",\r
+"!(.   c #978D5A",\r
+"~(.   c #BAAE72",\r
+"{(.   c #C7AD81",\r
+"](.   c #C7AB88",\r
+"^(.   c #CAB28C",\r
+"/(.   c #D1B58E",\r
+"((.   c #D1B48F",\r
+"_(.   c #D1B494",\r
+":(.   c #D4BB93",\r
+"<(.   c #D1B893",\r
+"[(.   c #D0B88C",\r
+"}(.   c #D0B58B",\r
+"|(.   c #CEB191",\r
+"1(.   c #CBA68A",\r
+"2(.   c #CEB28F",\r
+"3(.   c #CBAD8A",\r
+"4(.   c #C6AA82",\r
+"5(.   c #C2A184",\r
+"6(.   c #C9AC82",\r
+"7(.   c #D0B28A",\r
+"8(.   c #D0AD81",\r
+"9(.   c #CCB391",\r
+"0(.   c #D3BB95",\r
+"a(.   c #D4B792",\r
+"b(.   c #D1B691",\r
+"c(.   c #D6BB93",\r
+"d(.   c #D8C08F",\r
+"e(.   c #D9BA96",\r
+"f(.   c #D5B98D",\r
+"g(.   c #CDB28D",\r
+"h(.   c #CDAF8D",\r
+"i(.   c #CBAD8B",\r
+"j(.   c #CEB08F",\r
+"k(.   c #CDB08A",\r
+"l(.   c #C8AD80",\r
+"m(.   c #C9AD87",\r
+"n(.   c #C7A77B",\r
+"o(.   c #BB9E77",\r
+"p(.   c #B7936D",\r
+"q(.   c #AB845E",\r
+"r(.   c #8A4C40",\r
+"s(.   c #402729",\r
+"t(.   c #332822",\r
+"u(.   c #3E372C",\r
+"v(.   c #432D29",\r
+"w(.   c #3C272E",\r
+"x(.   c #3A3031",\r
+"y(.   c #3B2929",\r
+"z(.   c #3D2A25",\r
+"A(.   c #352C26",\r
+"B(.   c #41362E",\r
+"C(.   c #575343",\r
+"D(.   c #7E6C46",\r
+"E(.   c #AC8A56",\r
+"F(.   c #C09E67",\r
+"G(.   c #CCA86E",\r
+"H(.   c #CEAD82",\r
+"I(.   c #D4B48D",\r
+"J(.   c #D5A986",\r
+"K(.   c #C6836A",\r
+"L(.   c #9C5D48",\r
+"M(.   c #967E50",\r
+"N(.   c #A68259",\r
+"O(.   c #B18E4D",\r
+"P(.   c #B18452",\r
+"Q(.   c #AF8D5B",\r
+"R(.   c #B69C58",\r
+"S(.   c #C2AA75",\r
+"T(.   c #C6A37C",\r
+"U(.   c #C99F76",\r
+"V(.   c #BF9B62",\r
+"W(.   c #C49C6B",\r
+"X(.   c #C59069",\r
+"Y(.   c #C5954D",\r
+"Z(.   c #C1A16A",\r
+"`(.   c #CB9B72",\r
+" _.   c #C4996A",\r
+"._.   c #C39461",\r
+"+_.   c #C39564",\r
+"@_.   c #C29A63",\r
+"#_.   c #B89859",\r
+"$_.   c #BF9267",\r
+"%_.   c #C29D68",\r
+"&_.   c #C1986F",\r
+"*_.   c #BD935F",\r
+"=_.   c #B8935A",\r
+"-_.   c #B78E58",\r
+";_.   c #AA784E",\r
+">_.   c #895F50",\r
+",_.   c #78765B",\r
+"'_.   c #8C916F",\r
+")_.   c #8C8971",\r
+"!_.   c #84816D",\r
+"~_.   c #888171",\r
+"{_.   c #7B6458",\r
+"]_.   c #6A5C4D",\r
+"^_.   c #6A5D4E",\r
+"/_.   c #544438",\r
+"(_.   c #43413C",\r
+"__.   c #583C3A",\r
+":_.   c #3A3F2F",\r
+"<_.   c #435E51",\r
+"[_.   c #9BA38F",\r
+"}_.   c #B6AA87",\r
+"|_.   c #B0AA8E",\r
+"1_.   c #B3AE8C",\r
+"2_.   c #B4A987",\r
+"3_.   c #A68C6D",\r
+"4_.   c #8A844E",\r
+"5_.   c #898457",\r
+"6_.   c #79846C",\r
+"7_.   c #8D8D71",\r
+"8_.   c #8E8B76",\r
+"9_.   c #7E594F",\r
+"0_.   c #484A41",\r
+"a_.   c #737B6B",\r
+"b_.   c #9C7E65",\r
+"c_.   c #9D8C74",\r
+"d_.   c #9B916F",\r
+"e_.   c #93846B",\r
+"f_.   c #928878",\r
+"g_.   c #9D9D7E",\r
+"h_.   c #7D5B3E",\r
+"i_.   c #4E4E38",\r
+"j_.   c #553932",\r
+"k_.   c #553935",\r
+"l_.   c #6E5642",\r
+"m_.   c #7F6049",\r
+"n_.   c #886A43",\r
+"o_.   c #886B48",\r
+"p_.   c #825D4E",\r
+"q_.   c #815C43",\r
+"r_.   c #6E5743",\r
+"s_.   c #635246",\r
+"t_.   c #5B413A",\r
+"u_.   c #3D2B2E",\r
+"v_.   c #282222",\r
+"w_.   c #2A2424",\r
+"x_.   c #271A2A",\r
+"y_.   c #23282A",\r
+"z_.   c #242324",\r
+"A_.   c #2C2A32",\r
+"B_.   c #2E2527",\r
+"C_.   c #362A29",\r
+"D_.   c #3A2B2D",\r
+"E_.   c #2F282E",\r
+"F_.   c #2C3637",\r
+"G_.   c #4A3E3C",\r
+"H_.   c #595542",\r
+"I_.   c #897864",\r
+"J_.   c #BB9E7B",\r
+"K_.   c #C4A676",\r
+"L_.   c #C29D78",\r
+"M_.   c #BC9868",\r
+"N_.   c #C0905C",\r
+"O_.   c #B88058",\r
+"P_.   c #AD7D54",\r
+"Q_.   c #B87F5C",\r
+"R_.   c #B88C68",\r
+"S_.   c #BB9772",\r
+"T_.   c #BF9474",\r
+"U_.   c #B88C6E",\r
+"V_.   c #A88769",\r
+"W_.   c #B69F79",\r
+"X_.   c #C79F6B",\r
+"Y_.   c #A55748",\r
+"Z_.   c #492B28",\r
+"`_.   c #352E23",\r
+" :.   c #776A46",\r
+".:.   c #A48A5E",\r
+"+:.   c #C2AB7F",\r
+"@:.   c #CAAC83",\r
+"#:.   c #C9A87F",\r
+"$:.   c #C8AE87",\r
+"%:.   c #CEB38C",\r
+"&:.   c #D2BA8F",\r
+"*:.   c #D1B798",\r
+"=:.   c #D7BD96",\r
+"-:.   c #D6C199",\r
+";:.   c #D1BD9D",\r
+">:.   c #D0B491",\r
+",:.   c #D1B38E",\r
+"':.   c #D0B58C",\r
+"):.   c #CFB17F",\r
+"!:.   c #C5AA88",\r
+"~:.   c #C4A988",\r
+"{:.   c #CBB184",\r
+"]:.   c #C9A88A",\r
+"^:.   c #CAA880",\r
+"/:.   c #CCAD7F",\r
+"(:.   c #CBB285",\r
+"_:.   c #CCAA74",\r
+"::.   c #C5B28C",\r
+"<:.   c #D0BE95",\r
+"[:.   c #D4B990",\r
+"}:.   c #D2B194",\r
+"|:.   c #D7BC91",\r
+"1:.   c #D5BF93",\r
+"2:.   c #D3B895",\r
+"3:.   c #D2B18E",\r
+"4:.   c #D0AF8D",\r
+"5:.   c #CFAF84",\r
+"6:.   c #CFB288",\r
+"7:.   c #CCB088",\r
+"8:.   c #C4AB8C",\r
+"9:.   c #BFA081",\r
+"0:.   c #BF9D73",\r
+"a:.   c #BA976B",\r
+"b:.   c #A4734A",\r
+"c:.   c #794036",\r
+"d:.   c #493428",\r
+"e:.   c #4E3E2B",\r
+"f:.   c #6D5E31",\r
+"g:.   c #7C4C34",\r
+"h:.   c #582E2E",\r
+"i:.   c #382D29",\r
+"j:.   c #312929",\r
+"k:.   c #332C2C",\r
+"l:.   c #312622",\r
+"m:.   c #4E4633",\r
+"n:.   c #604533",\r
+"o:.   c #775F47",\r
+"p:.   c #AF9269",\r
+"q:.   c #CAA371",\r
+"r:.   c #CCA980",\r
+"s:.   c #D1A67C",\r
+"t:.   c #CB906C",\r
+"u:.   c #A25B46",\r
+"v:.   c #856C34",\r
+"w:.   c #A6824E",\r
+"x:.   c #A98550",\r
+"y:.   c #AF8546",\r
+"z:.   c #AB874D",\r
+"A:.   c #BA985D",\r
+"B:.   c #C4A468",\r
+"C:.   c #C7A875",\r
+"D:.   c #C5A66D",\r
+"E:.   c #C79C70",\r
+"F:.   c #C79C6B",\r
+"G:.   c #CAA870",\r
+"H:.   c #C6997E",\r
+"I:.   c #C28A5E",\r
+"J:.   c #B68F54",\r
+"K:.   c #C19D6D",\r
+"L:.   c #C9A26E",\r
+"M:.   c #CA9F71",\r
+"N:.   c #C49C68",\r
+"O:.   c #C89C5E",\r
+"P:.   c #C19864",\r
+"Q:.   c #C4925C",\r
+"R:.   c #BC945C",\r
+"S:.   c #BD965D",\r
+"T:.   c #C39764",\r
+"U:.   c #BE9D6B",\r
+"V:.   c #BA965F",\r
+"W:.   c #BB945E",\r
+"X:.   c #B48E5F",\r
+"Y:.   c #AC8E57",\r
+"Z:.   c #A36A51",\r
+"`:.   c #8D6343",\r
+" <.   c #6C6D62",\r
+".<.   c #7F6B60",\r
+"+<.   c #5E5D54",\r
+"@<.   c #596255",\r
+"#<.   c #7F7B65",\r
+"$<.   c #91705B",\r
+"%<.   c #696450",\r
+"&<.   c #594940",\r
+"*<.   c #4C5547",\r
+"=<.   c #70614F",\r
+"-<.   c #62553A",\r
+";<.   c #525E4E",\r
+"><.   c #788870",\r
+",<.   c #A1A07B",\r
+"'<.   c #ABA987",\r
+")<.   c #ABA17D",\r
+"!<.   c #A29A7C",\r
+"~<.   c #978C70",\r
+"{<.   c #766D5A",\r
+"]<.   c #706E55",\r
+"^<.   c #7D8462",\r
+"/<.   c #9D957C",\r
+"(<.   c #9E7F68",\r
+"_<.   c #706F4C",\r
+":<.   c #6D685D",\r
+"<<.   c #706A57",\r
+"[<.   c #A89771",\r
+"}<.   c #A37C6C",\r
+"|<.   c #968D6C",\r
+"1<.   c #A4937C",\r
+"2<.   c #A29277",\r
+"3<.   c #ADAA89",\r
+"4<.   c #A9A579",\r
+"5<.   c #A19A68",\r
+"6<.   c #875D49",\r
+"7<.   c #493230",\r
+"8<.   c #44382B",\r
+"9<.   c #5A4731",\r
+"0<.   c #635037",\r
+"a<.   c #674F3E",\r
+"b<.   c #6A5646",\r
+"c<.   c #66503C",\r
+"d<.   c #594139",\r
+"e<.   c #473935",\r
+"f<.   c #372A2A",\r
+"g<.   c #28231F",\r
+"h<.   c #292021",\r
+"i<.   c #241F25",\r
+"j<.   c #26302A",\r
+"k<.   c #2B1F28",\r
+"l<.   c #352620",\r
+"m<.   c #3B2925",\r
+"n<.   c #31272A",\r
+"o<.   c #26302D",\r
+"p<.   c #45382D",\r
+"q<.   c #63553A",\r
+"r<.   c #6B5E48",\r
+"s<.   c #9A8A64",\r
+"t<.   c #B6A174",\r
+"u<.   c #C1A47A",\r
+"v<.   c #C3A174",\r
+"w<.   c #C69572",\r
+"x<.   c #BB9067",\r
+"y<.   c #C39C76",\r
+"z<.   c #C18D6F",\r
+"A<.   c #B78F68",\r
+"B<.   c #C39A75",\r
+"C<.   c #C09378",\r
+"D<.   c #BD956F",\r
+"E<.   c #BF966E",\r
+"F<.   c #C2A375",\r
+"G<.   c #B67962",\r
+"H<.   c #6F2F32",\r
+"I<.   c #352525",\r
+"J<.   c #38392F",\r
+"K<.   c #887A57",\r
+"L<.   c #AC9868",\r
+"M<.   c #C3A881",\r
+"N<.   c #C6AD88",\r
+"O<.   c #CAAE83",\r
+"P<.   c #C7A587",\r
+"Q<.   c #C8AF90",\r
+"R<.   c #D2BD8E",\r
+"S<.   c #D5BE93",\r
+"T<.   c #D7C096",\r
+"U<.   c #D5BC98",\r
+"V<.   c #D0B38D",\r
+"W<.   c #D2B792",\r
+"X<.   c #CEB993",\r
+"Y<.   c #CEB691",\r
+"Z<.   c #C6AA8B",\r
+"`<.   c #C4A87D",\r
+" [.   c #C4AE84",\r
+".[.   c #CCAA85",\r
+"+[.   c #CFB88A",\r
+"@[.   c #D1B186",\r
+"#[.   c #CAB08F",\r
+"$[.   c #CFBB96",\r
+"%[.   c #D1BA8F",\r
+"&[.   c #D1B790",\r
+"*[.   c #D5BE98",\r
+"=[.   c #D2BA98",\r
+"-[.   c #D2B493",\r
+";[.   c #D0B896",\r
+">[.   c #D5BA91",\r
+",[.   c #D4B68E",\r
+"'[.   c #D2B48F",\r
+")[.   c #CAAD88",\r
+"![.   c #C5A782",\r
+"~[.   c #C1A17B",\r
+"{[.   c #BD9D79",\r
+"][.   c #9D604A",\r
+"^[.   c #63422F",\r
+"/[.   c #785F2F",\r
+"([.   c #947737",\r
+"_[.   c #AC7A40",\r
+":[.   c #B47438",\r
+"<[.   c #8F5436",\r
+"[[.   c #4D2C23",\r
+"}[.   c #302428",\r
+"|[.   c #332828",\r
+"1[.   c #392D2E",\r
+"2[.   c #352725",\r
+"3[.   c #5C5732",\r
+"4[.   c #90683A",\r
+"5[.   c #7E4838",\r
+"6[.   c #6F533E",\r
+"7[.   c #8B6A48",\r
+"8[.   c #A78258",\r
+"9[.   c #9F765F",\r
+"0[.   c #975B45",\r
+"a[.   c #7D5B3C",\r
+"b[.   c #917740",\r
+"c[.   c #AB7C4C",\r
+"d[.   c #AC8346",\r
+"e[.   c #A8853E",\r
+"f[.   c #B59553",\r
+"g[.   c #BFA966",\r
+"h[.   c #C9AA7A",\r
+"i[.   c #CAA67E",\r
+"j[.   c #CAAA76",\r
+"k[.   c #C8B079",\r
+"l[.   c #CEA77A",\r
+"m[.   c #C9976A",\r
+"n[.   c #B88D4D",\r
+"o[.   c #B8965E",\r
+"p[.   c #C0A273",\r
+"q[.   c #C2A170",\r
+"r[.   c #C9A078",\r
+"s[.   c #C69B6F",\r
+"t[.   c #BF9D5B",\r
+"u[.   c #C4945E",\r
+"v[.   c #C29656",\r
+"w[.   c #C09157",\r
+"x[.   c #BD915E",\r
+"y[.   c #C09853",\r
+"z[.   c #BF9667",\r
+"A[.   c #BE9A6C",\r
+"B[.   c #B89867",\r
+"C[.   c #B89367",\r
+"D[.   c #B88F5A",\r
+"E[.   c #B2905A",\r
+"F[.   c #AD8152",\r
+"G[.   c #A1693A",\r
+"H[.   c #745840",\r
+"I[.   c #797965",\r
+"J[.   c #878771",\r
+"K[.   c #817A68",\r
+"L[.   c #7F7F6A",\r
+"M[.   c #9B786A",\r
+"N[.   c #735849",\r
+"O[.   c #5E4C40",\r
+"P[.   c #636E58",\r
+"Q[.   c #978861",\r
+"R[.   c #746D64",\r
+"S[.   c #626F5C",\r
+"T[.   c #7C7961",\r
+"U[.   c #84745A",\r
+"V[.   c #6D6050",\r
+"W[.   c #5F604D",\r
+"X[.   c #626750",\r
+"Y[.   c #667059",\r
+"Z[.   c #6A7C66",\r
+"`[.   c #979773",\r
+" }.   c #9F9074",\r
+".}.   c #8D7661",\r
+"+}.   c #835A53",\r
+"@}.   c #56514D",\r
+"#}.   c #575F54",\r
+"$}.   c #566953",\r
+"%}.   c #865653",\r
+"&}.   c #716855",\r
+"*}.   c #8C7763",\r
+"=}.   c #8D6A52",\r
+"-}.   c #817960",\r
+";}.   c #9D9B7D",\r
+">}.   c #A9AB7C",\r
+",}.   c #A9A083",\r
+"'}.   c #9E7B5C",\r
+")}.   c #5F4A36",\r
+"!}.   c #443932",\r
+"~}.   c #3D372A",\r
+"{}.   c #3D372C",\r
+"]}.   c #42332E",\r
+"^}.   c #453330",\r
+"/}.   c #3D3A2F",\r
+"(}.   c #3B2E29",\r
+"_}.   c #2F2524",\r
+":}.   c #292B22",\r
+"<}.   c #29252A",\r
+"[}.   c #2B2828",\r
+"}}.   c #2E2A22",\r
+"|}.   c #2F292A",\r
+"1}.   c #312826",\r
+"2}.   c #2F2D26",\r
+"3}.   c #3E252B",\r
+"4}.   c #2C1E21",\r
+"5}.   c #32251C",\r
+"6}.   c #2E2C21",\r
+"7}.   c #332123",\r
+"8}.   c #232426",\r
+"9}.   c #443632",\r
+"0}.   c #6A5446",\r
+"a}.   c #695449",\r
+"b}.   c #7A7160",\r
+"c}.   c #AF9374",\r
+"d}.   c #BF9F70",\r
+"e}.   c #C5A377",\r
+"f}.   c #CDA674",\r
+"g}.   c #CC9F73",\r
+"h}.   c #C99473",\r
+"i}.   c #C89B73",\r
+"j}.   c #C8A065",\r
+"k}.   c #C4A573",\r
+"l}.   c #C79C6C",\r
+"m}.   c #994A42",\r
+"n}.   c #432824",\r
+"o}.   c #333429",\r
+"p}.   c #434F44",\r
+"q}.   c #98865F",\r
+"r}.   c #B5A376",\r
+"s}.   c #C3A17F",\r
+"t}.   c #C8A881",\r
+"u}.   c #C6B37F",\r
+"v}.   c #C6AB88",\r
+"w}.   c #CBA787",\r
+"x}.   c #CCB890",\r
+"y}.   c #D1BD93",\r
+"z}.   c #D1BE95",\r
+"A}.   c #D3BB98",\r
+"B}.   c #D5BD93",\r
+"C}.   c #D4BE93",\r
+"D}.   c #CEBD8E",\r
+"E}.   c #CABA8C",\r
+"F}.   c #C5AF8D",\r
+"G}.   c #C3A584",\r
+"H}.   c #C0AA87",\r
+"I}.   c #C7A981",\r
+"J}.   c #C8B48D",\r
+"K}.   c #CDB491",\r
+"L}.   c #D1AE85",\r
+"M}.   c #D0B388",\r
+"N}.   c #D2B893",\r
+"O}.   c #D1B992",\r
+"P}.   c #D0BD95",\r
+"Q}.   c #D2B98F",\r
+"R}.   c #D1B290",\r
+"S}.   c #D6BD99",\r
+"T}.   c #D7BC94",\r
+"U}.   c #D1B892",\r
+"V}.   c #D5B793",\r
+"W}.   c #D6BD8D",\r
+"X}.   c #CFAA87",\r
+"Y}.   c #C8AC8D",\r
+"Z}.   c #C7A778",\r
+"`}.   c #C1A173",\r
+" |.   c #BC9B72",\r
+".|.   c #B77F54",\r
+"+|.   c #8D4D43",\r
+"@|.   c #6E583A",\r
+"#|.   c #9C7435",\r
+"$|.   c #B08140",\r
+"%|.   c #AF7F41",\r
+"&|.   c #AF7A43",\r
+"*|.   c #B37940",\r
+"=|.   c #914F2A",\r
+"-|.   c #512727",\r
+";|.   c #2E2127",\r
+">|.   c #36292A",\r
+",|.   c #372723",\r
+"'|.   c #4F4C30",\r
+")|.   c #978340",\r
+"!|.   c #A57845",\r
+"~|.   c #845932",\r
+"{|.   c #64492E",\r
+"]|.   c #68502B",\r
+"^|.   c #6A5136",\r
+"/|.   c #7F5E31",\r
+"(|.   c #967A42",\r
+"_|.   c #AA7A46",\r
+":|.   c #A97C4B",\r
+"<|.   c #A8884A",\r
+"[|.   c #B89A5A",\r
+"}|.   c #C4A76D",\r
+"||.   c #CAB178",\r
+"1|.   c #D4AA87",\r
+"2|.   c #D4AD81",\r
+"3|.   c #D0B179",\r
+"4|.   c #D0B289",\r
+"5|.   c #CEAF86",\r
+"6|.   c #C99471",\r
+"7|.   c #B98C60",\r
+"8|.   c #BA9F5C",\r
+"9|.   c #C0A373",\r
+"0|.   c #C3A86E",\r
+"a|.   c #C8A275",\r
+"b|.   c #C69C6E",\r
+"c|.   c #C39969",\r
+"d|.   c #C39A64",\r
+"e|.   c #BF9155",\r
+"f|.   c #BD8C5A",\r
+"g|.   c #BB9252",\r
+"h|.   c #BD934D",\r
+"i|.   c #BC915F",\r
+"j|.   c #BF9256",\r
+"k|.   c #B89A5F",\r
+"l|.   c #BA9064",\r
+"m|.   c #BC9760",\r
+"n|.   c #B99669",\r
+"o|.   c #B48C5F",\r
+"p|.   c #AC7A4B",\r
+"q|.   c #A05F41",\r
+"r|.   c #847054",\r
+"s|.   c #9F997F",\r
+"t|.   c #A4997A",\r
+"u|.   c #A69A81",\r
+"v|.   c #977057",\r
+"w|.   c #534640",\r
+"x|.   c #5D615C",\r
+"y|.   c #827A63",\r
+"z|.   c #8D8B5C",\r
+"A|.   c #837966",\r
+"B|.   c #676952",\r
+"C|.   c #646F5F",\r
+"D|.   c #777554",\r
+"E|.   c #787B52",\r
+"F|.   c #89946F",\r
+"G|.   c #95A27F",\r
+"H|.   c #ADAC88",\r
+"I|.   c #AFA98C",\r
+"J|.   c #9B8A6C",\r
+"K|.   c #79654D",\r
+"L|.   c #564E3D",\r
+"M|.   c #4F5547",\r
+"N|.   c #6B8064",\r
+"O|.   c #8A9277",\r
+"P|.   c #A08074",\r
+"Q|.   c #71625C",\r
+"R|.   c #736054",\r
+"S|.   c #7A725F",\r
+"T|.   c #8E8C7A",\r
+"U|.   c #958562",\r
+"V|.   c #837C60",\r
+"W|.   c #968060",\r
+"X|.   c #908162",\r
+"Y|.   c #826E50",\r
+"Z|.   c #645637",\r
+"`|.   c #5F4D35",\r
+" 1.   c #4E412B",\r
+".1.   c #3A322E",\r
+"+1.   c #3E312B",\r
+"@1.   c #2C2721",\r
+"#1.   c #282D24",\r
+"$1.   c #322926",\r
+"%1.   c #34291E",\r
+"&1.   c #262325",\r
+"*1.   c #2D2822",\r
+"=1.   c #3A2D31",\r
+"-1.   c #413430",\r
+";1.   c #3E2826",\r
+">1.   c #353127",\r
+",1.   c #362723",\r
+"'1.   c #2E2021",\r
+")1.   c #37221E",\r
+"!1.   c #2C2B27",\r
+"~1.   c #37282B",\r
+"{1.   c #2B2629",\r
+"]1.   c #544E43",\r
+"^1.   c #84674B",\r
+"/1.   c #806045",\r
+"(1.   c #765D43",\r
+"_1.   c #967655",\r
+":1.   c #BFA171",\r
+"<1.   c #CAA672",\r
+"[1.   c #D1A97B",\r
+"}1.   c #D3B080",\r
+"|1.   c #D2AF80",\r
+"11.   c #D09E7C",\r
+"21.   c #CE9F7A",\r
+"31.   c #CBA879",\r
+"41.   c #CCA97C",\r
+"51.   c #C57D63",\r
+"61.   c #7C3538",\r
+"71.   c #352225",\r
+"81.   c #302E2B",\r
+"91.   c #4A4D43",\r
+"01.   c #9E9762",\r
+"a1.   c #BCA479",\r
+"b1.   c #C3A585",\r
+"c1.   c #C6A583",\r
+"d1.   c #C0A983",\r
+"e1.   c #C6AC82",\r
+"f1.   c #C7AC7D",\r
+"g1.   c #C5B38B",\r
+"h1.   c #CFBB8D",\r
+"i1.   c #CFBB93",\r
+"j1.   c #CDAC92",\r
+"k1.   c #CFB38E",\r
+"l1.   c #D1BE99",\r
+"m1.   c #D0BB9A",\r
+"n1.   c #CFB891",\r
+"o1.   c #C8B285",\r
+"p1.   c #BDAC86",\r
+"q1.   c #C1AC8D",\r
+"r1.   c #C3AE87",\r
+"s1.   c #C0B495",\r
+"t1.   c #CCB395",\r
+"u1.   c #CEB289",\r
+"v1.   c #CAB58E",\r
+"w1.   c #D3BB91",\r
+"x1.   c #D5B78C",\r
+"y1.   c #CCB692",\r
+"z1.   c #D3B28B",\r
+"A1.   c #D4B78F",\r
+"B1.   c #D5BD96",\r
+"C1.   c #D6B894",\r
+"D1.   c #D2BA97",\r
+"E1.   c #CBB98F",\r
+"F1.   c #D4B58A",\r
+"G1.   c #C8AD88",\r
+"H1.   c #C8AC7F",\r
+"I1.   c #C6A57B",\r
+"J1.   c #C5A583",\r
+"K1.   c #BE9F76",\r
+"L1.   c #B98E6E",\r
+"M1.   c #AD6949",\r
+"N1.   c #7F573D",\r
+"O1.   c #936B3E",\r
+"P1.   c #AD7841",\r
+"Q1.   c #B08143",\r
+"R1.   c #B58745",\r
+"S1.   c #B57B4A",\r
+"T1.   c #B5814C",\r
+"U1.   c #B1803B",\r
+"V1.   c #8F4C37",\r
+"W1.   c #4E2923",\r
+"X1.   c #342C27",\r
+"Y1.   c #382820",\r
+"Z1.   c #373428",\r
+"`1.   c #706841",\r
+" 2.   c #B19D5B",\r
+".2.   c #B79044",\r
+"+2.   c #A37E46",\r
+"@2.   c #9E7E4A",\r
+"#2.   c #9D7A3E",\r
+"$2.   c #A67F3C",\r
+"%2.   c #A97E43",\r
+"&2.   c #AF8241",\r
+"*2.   c #B39752",\r
+"=2.   c #B7A360",\r
+"-2.   c #CDA574",\r
+";2.   c #CFAC74",\r
+">2.   c #D2B784",\r
+",2.   c #D7B28D",\r
+"'2.   c #D4AF7F",\r
+")2.   c #CFA87E",\r
+"!2.   c #CC9A65",\r
+"~2.   c #B69867",\r
+"{2.   c #BEA472",\r
+"]2.   c #BC9F7A",\r
+"^2.   c #C8A270",\r
+"/2.   c #C9A672",\r
+"(2.   c #C3A474",\r
+"_2.   c #C7A35F",\r
+":2.   c #C69861",\r
+"<2.   c #BF9962",\r
+"[2.   c #C1955A",\r
+"}2.   c #BF9362",\r
+"|2.   c #B78F5B",\r
+"12.   c #B8915D",\r
+"22.   c #BB9257",\r
+"32.   c #BA8F4C",\r
+"42.   c #B69158",\r
+"52.   c #BB945B",\r
+"62.   c #BC915A",\r
+"72.   c #B68F60",\r
+"82.   c #B99562",\r
+"92.   c #B58952",\r
+"02.   c #A46349",\r
+"a2.   c #906144",\r
+"b2.   c #8D8C80",\r
+"c2.   c #A59B85",\r
+"d2.   c #AD9B81",\r
+"e2.   c #B1A386",\r
+"f2.   c #A28D71",\r
+"g2.   c #81674A",\r
+"h2.   c #5F634E",\r
+"i2.   c #798066",\r
+"j2.   c #989978",\r
+"k2.   c #A79B7A",\r
+"l2.   c #9A9169",\r
+"m2.   c #978F72",\r
+"n2.   c #998A68",\r
+"o2.   c #887E60",\r
+"p2.   c #AA9F83",\r
+"q2.   c #AEA283",\r
+"r2.   c #AA8F7A",\r
+"s2.   c #885354",\r
+"t2.   c #6F6C5C",\r
+"u2.   c #9D855B",\r
+"v2.   c #745542",\r
+"w2.   c #606354",\r
+"x2.   c #777A5E",\r
+"y2.   c #7F7C6F",\r
+"z2.   c #A69473",\r
+"A2.   c #8C6356",\r
+"B2.   c #71614F",\r
+"C2.   c #8C6F52",\r
+"D2.   c #9F8859",\r
+"E2.   c #A39376",\r
+"F2.   c #9C9475",\r
+"G2.   c #858D6B",\r
+"H2.   c #979E82",\r
+"I2.   c #AF9579",\r
+"J2.   c #8F7F61",\r
+"K2.   c #8E8762",\r
+"L2.   c #949663",\r
+"M2.   c #A7A377",\r
+"N2.   c #A59365",\r
+"O2.   c #77573C",\r
+"P2.   c #402C2B",\r
+"Q2.   c #27281F",\r
+"R2.   c #323623",\r
+"S2.   c #575B3A",\r
+"T2.   c #796C36",\r
+"U2.   c #8B5532",\r
+"V2.   c #5A3428",\r
+"W2.   c #3B2423",\r
+"X2.   c #32292E",\r
+"Y2.   c #3E3730",\r
+"Z2.   c #35282A",\r
+"`2.   c #262A27",\r
+" 3.   c #292125",\r
+".3.   c #2E2322",\r
+"+3.   c #292323",\r
+"@3.   c #2B2625",\r
+"#3.   c #383433",\r
+"$3.   c #36312D",\r
+"%3.   c #39322D",\r
+"&3.   c #716C53",\r
+"*3.   c #AD8D5F",\r
+"=3.   c #9A6542",\r
+"-3.   c #754B3E",\r
+";3.   c #816E56",\r
+">3.   c #A58A5F",\r
+",3.   c #C1A37D",\r
+"'3.   c #CEB381",\r
+")3.   c #D2B487",\r
+"!3.   c #D1A878",\r
+"~3.   c #D0B27E",\r
+"{3.   c #CBA57A",\r
+"]3.   c #AB5451",\r
+"^3.   c #4A232B",\r
+"/3.   c #2E2221",\r
+"(3.   c #312F27",\r
+"_3.   c #5B5F43",\r
+":3.   c #AB9C6C",\r
+"<3.   c #C6A97B",\r
+"[3.   c #BFA57A",\r
+"}3.   c #C0A078",\r
+"|3.   c #C3A885",\r
+"13.   c #BEA87D",\r
+"23.   c #C1AD85",\r
+"33.   c #CAB293",\r
+"43.   c #C8B792",\r
+"53.   c #CEBA91",\r
+"63.   c #CDB88D",\r
+"73.   c #CCB588",\r
+"83.   c #C8B794",\r
+"93.   c #CFB795",\r
+"03.   c #CEB791",\r
+"a3.   c #CAB695",\r
+"b3.   c #C5B18E",\r
+"c3.   c #C4B290",\r
+"d3.   c #C5AC92",\r
+"e3.   c #C5A98A",\r
+"f3.   c #C5AF91",\r
+"g3.   c #CAB68E",\r
+"h3.   c #C7B18C",\r
+"i3.   c #CCB691",\r
+"j3.   c #D0BD91",\r
+"k3.   c #CEB491",\r
+"l3.   c #CEB697",\r
+"m3.   c #CDB98F",\r
+"n3.   c #CEB890",\r
+"o3.   c #D5B98F",\r
+"p3.   c #D1B98E",\r
+"q3.   c #D1BA94",\r
+"r3.   c #D0B48B",\r
+"s3.   c #CDA787",\r
+"t3.   c #BFA486",\r
+"u3.   c #BCA482",\r
+"v3.   c #BE997B",\r
+"w3.   c #C19D7A",\r
+"x3.   c #BDA372",\r
+"y3.   c #BA9F77",\r
+"z3.   c #BA8265",\r
+"A3.   c #9E5E42",\r
+"B3.   c #956F42",\r
+"C3.   c #B48A42",\r
+"D3.   c #B68552",\r
+"E3.   c #B48150",\r
+"F3.   c #BE8B40",\r
+"G3.   c #BA8D4E",\r
+"H3.   c #B78848",\r
+"I3.   c #B88E4A",\r
+"J3.   c #B28149",\r
+"K3.   c #9A572F",\r
+"L3.   c #613C28",\r
+"M3.   c #4F2F26",\r
+"N3.   c #382C24",\r
+"O3.   c #40382D",\r
+"P3.   c #746240",\r
+"Q3.   c #977C3B",\r
+"R3.   c #B69157",\r
+"S3.   c #C59958",\r
+"T3.   c #B99158",\r
+"U3.   c #B48D57",\r
+"V3.   c #C29C51",\r
+"W3.   c #C69E5D",\r
+"X3.   c #C8A06D",\r
+"Y3.   c #D3B070",\r
+"Z3.   c #DAAD79",\r
+"`3.   c #D5AF72",\r
+" 4.   c #D7B580",\r
+".4.   c #DAB78A",\r
+"+4.   c #D2A57E",\r
+"@4.   c #C49B6A",\r
+"#4.   c #BA9C60",\r
+"$4.   c #BFA16A",\r
+"%4.   c #C0A672",\r
+"&4.   c #C7A473",\r
+"*4.   c #C69A6A",\r
+"=4.   c #C89D72",\r
+"-4.   c #C29B64",\r
+";4.   c #BF9658",\r
+">4.   c #BA9559",\r
+",4.   c #BA8C5A",\r
+"'4.   c #B88651",\r
+")4.   c #BB9051",\r
+"!4.   c #B38F55",\r
+"~4.   c #B48D4F",\r
+"{4.   c #B8875E",\r
+"]4.   c #B88A57",\r
+"^4.   c #B3925E",\r
+"/4.   c #BA945B",\r
+"(4.   c #BC8F53",\r
+"_4.   c #B89454",\r
+":4.   c #B07F44",\r
+"<4.   c #A26040",\r
+"[4.   c #7A6B5D",\r
+"}4.   c #928A7A",\r
+"|4.   c #A68F80",\r
+"14.   c #A29483",\r
+"24.   c #A8947C",\r
+"34.   c #999D7A",\r
+"44.   c #A08C74",\r
+"54.   c #8B7065",\r
+"64.   c #8A8168",\r
+"74.   c #A28F78",\r
+"84.   c #968871",\r
+"94.   c #927C65",\r
+"04.   c #777158",\r
+"a4.   c #9F8E74",\r
+"b4.   c #A58461",\r
+"c4.   c #9F8962",\r
+"d4.   c #8C6960",\r
+"e4.   c #5A4839",\r
+"f4.   c #6D7A67",\r
+"g4.   c #A7A27B",\r
+"h4.   c #A78761",\r
+"i4.   c #5B5641",\r
+"j4.   c #4C554B",\r
+"k4.   c #696C61",\r
+"l4.   c #86735F",\r
+"m4.   c #73735B",\r
+"n4.   c #909772",\r
+"o4.   c #ACA56F",\r
+"p4.   c #AFA063",\r
+"q4.   c #A49263",\r
+"r4.   c #827A66",\r
+"s4.   c #89805D",\r
+"t4.   c #94896A",\r
+"u4.   c #866657",\r
+"v4.   c #654D47",\r
+"w4.   c #57544C",\r
+"x4.   c #6D8275",\r
+"y4.   c #BBB493",\r
+"z4.   c #BE997F",\r
+"A4.   c #78403C",\r
+"B4.   c #3B3F28",\r
+"C4.   c #6C6235",\r
+"D4.   c #948652",\r
+"E4.   c #AC8C4B",\r
+"F4.   c #B18550",\r
+"G4.   c #A27841",\r
+"H4.   c #8D672A",\r
+"I4.   c #756329",\r
+"J4.   c #6B4731",\r
+"K4.   c #412626",\r
+"L4.   c #332B25",\r
+"M4.   c #2E2C28",\r
+"N4.   c #30201F",\r
+"O4.   c #281E1D",\r
+"P4.   c #2F2421",\r
+"Q4.   c #343530",\r
+"R4.   c #402A2C",\r
+"S4.   c #413226",\r
+"T4.   c #55432C",\r
+"U4.   c #4A2F31",\r
+"V4.   c #564F39",\r
+"W4.   c #9C8C5D",\r
+"X4.   c #BF985A",\r
+"Y4.   c #A57050",\r
+"Z4.   c #7C6643",\r
+"`4.   c #6C5540",\r
+" 5.   c #79614E",\r
+".5.   c #9A8668",\r
+"+5.   c #BDAE87",\r
+"@5.   c #C8B68A",\r
+"#5.   c #C5A577",\r
+"$5.   c #BA9C76",\r
+"%5.   c #A86D5B",\r
+"&5.   c #6E3736",\r
+"*5.   c #322422",\r
+"=5.   c #2E2522",\r
+"-5.   c #343329",\r
+";5.   c #656B4C",\r
+">5.   c #B89C74",\r
+",5.   c #C3A582",\r
+"'5.   c #C0A479",\r
+")5.   c #C1A175",\r
+"!5.   c #BC9D79",\r
+"~5.   c #C2A472",\r
+"{5.   c #C2AC86",\r
+"]5.   c #C5A787",\r
+"^5.   c #C1AD8B",\r
+"/5.   c #C9B596",\r
+"(5.   c #CCB392",\r
+"_5.   c #C9B090",\r
+":5.   c #C7B595",\r
+"<5.   c #CBB88F",\r
+"[5.   c #CBBB96",\r
+"}5.   c #C9BA98",\r
+"|5.   c #CDBA96",\r
+"15.   c #C8B693",\r
+"25.   c #C7B294",\r
+"35.   c #CAAD8E",\r
+"45.   c #C3AF93",\r
+"55.   c #C8B98F",\r
+"65.   c #D0B88F",\r
+"75.   c #CCB88B",\r
+"85.   c #C6AF8E",\r
+"95.   c #C9AF90",\r
+"05.   c #C9B291",\r
+"a5.   c #CAB490",\r
+"b5.   c #CDB190",\r
+"c5.   c #CEAF90",\r
+"d5.   c #CCAB7D",\r
+"e5.   c #BE9E77",\r
+"f5.   c #B79C7F",\r
+"g5.   c #BE9B75",\r
+"h5.   c #BC8B66",\r
+"i5.   c #AF8B64",\r
+"j5.   c #B69771",\r
+"k5.   c #B59577",\r
+"l5.   c #AB7156",\r
+"m5.   c #9B6B3D",\r
+"n5.   c #AB8B3F",\r
+"o5.   c #BB9243",\r
+"p5.   c #BC8D52",\r
+"q5.   c #BE8C4F",\r
+"r5.   c #B98F44",\r
+"s5.   c #B99054",\r
+"t5.   c #B78945",\r
+"u5.   c #B48F46",\r
+"v5.   c #B8844C",\r
+"w5.   c #BA8F3E",\r
+"x5.   c #A5783E",\r
+"y5.   c #91582E",\r
+"z5.   c #775328",\r
+"A5.   c #67512B",\r
+"B5.   c #776737",\r
+"C5.   c #8A6544",\r
+"D5.   c #9D7746",\r
+"E5.   c #B5834B",\r
+"F5.   c #C18C52",\r
+"G5.   c #BC9264",\r
+"H5.   c #BE9F64",\r
+"I5.   c #CE9361",\r
+"J5.   c #BF9B6A",\r
+"K5.   c #C7AB79",\r
+"L5.   c #D4AD7E",\r
+"M5.   c #D4AD77",\r
+"N5.   c #D0AA7B",\r
+"O5.   c #D3A87B",\r
+"P5.   c #D0A76F",\r
+"Q5.   c #C2A267",\r
+"R5.   c #C3A37B",\r
+"S5.   c #C5A579",\r
+"T5.   c #C5A576",\r
+"U5.   c #C5A372",\r
+"V5.   c #C29969",\r
+"W5.   c #C7A064",\r
+"X5.   c #CCA367",\r
+"Y5.   c #C09565",\r
+"Z5.   c #BD8B5A",\r
+"`5.   c #BB905E",\r
+" 6.   c #B78B4B",\r
+".6.   c #B6874A",\r
+"+6.   c #B2804B",\r
+"@6.   c #A6804A",\r
+"#6.   c #B0834A",\r
+"$6.   c #B7875A",\r
+"%6.   c #AF8256",\r
+"&6.   c #B59256",\r
+"*6.   c #B89357",\r
+"=6.   c #B48E5D",\r
+"-6.   c #B7965E",\r
+";6.   c #B6844F",\r
+">6.   c #A37445",\r
+",6.   c #895847",\r
+"'6.   c #7E7163",\r
+")6.   c #988F7A",\r
+"!6.   c #99917E",\r
+"~6.   c #A88A7B",\r
+"{6.   c #9A8D75",\r
+"]6.   c #9C6865",\r
+"^6.   c #614641",\r
+"/6.   c #565848",\r
+"(6.   c #897867",\r
+"_6.   c #98796E",\r
+":6.   c #817A64",\r
+"<6.   c #8E8B71",\r
+"[6.   c #9B8B7A",\r
+"}6.   c #8F846E",\r
+"|6.   c #9B7D63",\r
+"16.   c #785048",\r
+"26.   c #646450",\r
+"36.   c #918F76",\r
+"46.   c #A59F7D",\r
+"56.   c #A79C7A",\r
+"66.   c #8A8058",\r
+"76.   c #647455",\r
+"86.   c #7C8B77",\r
+"96.   c #878E6E",\r
+"06.   c #ABAA86",\r
+"a6.   c #B7B493",\r
+"b6.   c #BDB595",\r
+"c6.   c #AC8174",\r
+"d6.   c #756659",\r
+"e6.   c #796C57",\r
+"f6.   c #70594B",\r
+"g6.   c #5E5140",\r
+"h6.   c #57514F",\r
+"i6.   c #433935",\r
+"j6.   c #474B3E",\r
+"k6.   c #667671",\r
+"l6.   c #AEA694",\r
+"m6.   c #9B7067",\r
+"n6.   c #472D2A",\r
+"o6.   c #443B2F",\r
+"p6.   c #72613E",\r
+"q6.   c #917449",\r
+"r6.   c #B18650",\r
+"s6.   c #B2964F",\r
+"t6.   c #B29862",\r
+"u6.   c #C4A163",\r
+"v6.   c #C4AC6C",\r
+"w6.   c #C8A865",\r
+"x6.   c #C18E58",\r
+"y6.   c #97622F",\r
+"z6.   c #7B693F",\r
+"A6.   c #774B37",\r
+"B6.   c #432721",\r
+"C6.   c #291B1E",\r
+"D6.   c #26211E",\r
+"E6.   c #352D2A",\r
+"F6.   c #3F332B",\r
+"G6.   c #413720",\r
+"H6.   c #7C4B30",\r
+"I6.   c #703A2F",\r
+"J6.   c #3D2E2A",\r
+"K6.   c #77643A",\r
+"L6.   c #BC9E61",\r
+"M6.   c #B39169",\r
+"N6.   c #A97C52",\r
+"O6.   c #8E5340",\r
+"P6.   c #533836",\r
+"Q6.   c #4A3D36",\r
+"R6.   c #845245",\r
+"S6.   c #5B3F3F",\r
+"T6.   c #4A2C2D",\r
+"U6.   c #3B2828",\r
+"V6.   c #2A2520",\r
+"W6.   c #343D33",\r
+"X6.   c #81805E",\r
+"Y6.   c #C1A174",\r
+"Z6.   c #C1A07D",\r
+"`6.   c #BBA278",\r
+" 7.   c #BC9A76",\r
+".7.   c #BB9C7A",\r
+"+7.   c #B9A07B",\r
+"@7.   c #C3AA81",\r
+"#7.   c #BDA57D",\r
+"$7.   c #BAA380",\r
+"%7.   c #C8B092",\r
+"&7.   c #CEAF84",\r
+"*7.   c #C2AA89",\r
+"=7.   c #C8AD8D",\r
+"-7.   c #C7B48C",\r
+";7.   c #CCBA95",\r
+">7.   c #CCBE95",\r
+",7.   c #CBB697",\r
+"'7.   c #CCB99A",\r
+")7.   c #CEBA90",\r
+"!7.   c #CEB08D",\r
+"~7.   c #CBB89B",\r
+"{7.   c #CFBB92",\r
+"]7.   c #D1B597",\r
+"^7.   c #CAAE91",\r
+"/7.   c #C8AE8B",\r
+"(7.   c #C5AD8B",\r
+"_7.   c #C2B18C",\r
+":7.   c #C8AE86",\r
+"<7.   c #CBB78C",\r
+"[7.   c #CBB394",\r
+"}7.   c #CEAB8E",\r
+"|7.   c #C2A07F",\r
+"17.   c #BF956D",\r
+"27.   c #BE7D4F",\r
+"37.   c #AD754A",\r
+"47.   c #B2884C",\r
+"57.   c #A5846B",\r
+"67.   c #AF9478",\r
+"77.   c #AE6A47",\r
+"87.   c #9D7B42",\r
+"97.   c #B68D4C",\r
+"07.   c #C2904C",\r
+"a7.   c #BE9156",\r
+"b7.   c #BE9048",\r
+"c7.   c #BD9043",\r
+"d7.   c #BA8A4C",\r
+"e7.   c #B48441",\r
+"f7.   c #B47B48",\r
+"g7.   c #B28A4A",\r
+"h7.   c #B18F4C",\r
+"i7.   c #B79A60",\r
+"j7.   c #C49857",\r
+"k7.   c #BE964B",\r
+"l7.   c #C3994D",\r
+"m7.   c #C5A152",\r
+"n7.   c #CAA462",\r
+"o7.   c #C8A35D",\r
+"p7.   c #C0A050",\r
+"q7.   c #CDA356",\r
+"r7.   c #C39B68",\r
+"s7.   c #C3A171",\r
+"t7.   c #C79C6D",\r
+"u7.   c #B47E4C",\r
+"v7.   c #B39B68",\r
+"w7.   c #D3AC7B",\r
+"x7.   c #D3A672",\r
+"y7.   c #CB9F76",\r
+"z7.   c #CCA26F",\r
+"A7.   c #CAA163",\r
+"B7.   c #C39C63",\r
+"C7.   c #C5A45F",\r
+"D7.   c #C7A76A",\r
+"E7.   c #C5A977",\r
+"F7.   c #C6A374",\r
+"G7.   c #C7A378",\r
+"H7.   c #C4A270",\r
+"I7.   c #C89C71",\r
+"J7.   c #C49865",\r
+"K7.   c #C19664",\r
+"L7.   c #C19052",\r
+"M7.   c #BA8E50",\r
+"N7.   c #B18154",\r
+"O7.   c #B58244",\r
+"P7.   c #A47F46",\r
+"Q7.   c #8B6B4D",\r
+"R7.   c #8E5B3D",\r
+"S7.   c #9B7B42",\r
+"T7.   c #A9804C",\r
+"U7.   c #B6854D",\r
+"V7.   c #B39154",\r
+"W7.   c #B29350",\r
+"X7.   c #BC955D",\r
+"Y7.   c #B4915A",\r
+"Z7.   c #B58254",\r
+"`7.   c #99654A",\r
+" 8.   c #7B5C49",\r
+".8.   c #868472",\r
+"+8.   c #989076",\r
+"@8.   c #998A70",\r
+"#8.   c #9F8E7A",\r
+"$8.   c #957766",\r
+"%8.   c #7D685F",\r
+"&8.   c #715F52",\r
+"*8.   c #67504A",\r
+"=8.   c #665B55",\r
+"-8.   c #796763",\r
+";8.   c #7B7A65",\r
+">8.   c #928A73",\r
+",8.   c #95956D",\r
+"'8.   c #9E8F7A",\r
+")8.   c #89575F",\r
+"!8.   c #5D5B43",\r
+"~8.   c #8F9479",\r
+"{8.   c #9D8477",\r
+"]8.   c #846955",\r
+"^8.   c #5D533C",\r
+"/8.   c #69755B",\r
+"(8.   c #8E9979",\r
+"_8.   c #8D9A86",\r
+":8.   c #BEB38B",\r
+"<8.   c #BFB58D",\r
+"[8.   c #BEB08A",\r
+"}8.   c #B18D6D",\r
+"|8.   c #796845",\r
+"18.   c #80644C",\r
+"28.   c #6B534F",\r
+"38.   c #534438",\r
+"48.   c #5E6A5B",\r
+"58.   c #635F4E",\r
+"68.   c #646C4C",\r
+"78.   c #7C7F62",\r
+"88.   c #907D79",\r
+"98.   c #674646",\r
+"08.   c #3F2B2A",\r
+"a8.   c #60523D",\r
+"b8.   c #877148",\r
+"c8.   c #A07E53",\r
+"d8.   c #AE8750",\r
+"e8.   c #B29258",\r
+"f8.   c #B89A5E",\r
+"g8.   c #BE9B5A",\r
+"h8.   c #C39F74",\r
+"i8.   c #C7A478",\r
+"j8.   c #C89D6F",\r
+"k8.   c #B77142",\r
+"l8.   c #93623B",\r
+"m8.   c #8B5B3F",\r
+"n8.   c #723632",\r
+"o8.   c #342621",\r
+"p8.   c #272420",\r
+"q8.   c #302728",\r
+"r8.   c #3D3027",\r
+"s8.   c #3D3C25",\r
+"t8.   c #8F6539",\r
+"u8.   c #894539",\r
+"v8.   c #3B2A25",\r
+"w8.   c #584B33",\r
+"x8.   c #9D7F5E",\r
+"y8.   c #AA7C58",\r
+"z8.   c #9E6F52",\r
+"A8.   c #7D5241",\r
+"B8.   c #775938",\r
+"C8.   c #78562F",\r
+"D8.   c #48312D",\r
+"E8.   c #3F332E",\r
+"F8.   c #513D32",\r
+"G8.   c #563D37",\r
+"H8.   c #474B30",\r
+"I8.   c #5B3934",\r
+"J8.   c #30211E",\r
+"K8.   c #2D2421",\r
+"L8.   c #3F4535",\r
+"M8.   c #8C8566",\r
+"N8.   c #BD9F76",\r
+"O8.   c #BD9474",\r
+"P8.   c #B49364",\r
+"Q8.   c #AB8B67",\r
+"R8.   c #B18F6A",\r
+"S8.   c #B69875",\r
+"T8.   c #BAA183",\r
+"U8.   c #BFA37D",\r
+"V8.   c #BCA384",\r
+"W8.   c #C2A887",\r
+"X8.   c #CAB084",\r
+"Y8.   c #C3AF8B",\r
+"Z8.   c #C1AF8A",\r
+"`8.   c #C8B389",\r
+" 9.   c #CCB68F",\r
+".9.   c #C5B992",\r
+"+9.   c #C9B797",\r
+"@9.   c #CEBB9E",\r
+"#9.   c #CCBA93",\r
+"$9.   c #CBB990",\r
+"%9.   c #D1BB98",\r
+"&9.   c #D1BA90",\r
+"*9.   c #D4B893",\r
+"=9.   c #CEB38D",\r
+"-9.   c #C5A88D",\r
+";9.   c #C5B58F",\r
+">9.   c #CCA98C",\r
+",9.   c #CBB48B",\r
+"'9.   c #CEBA89",\r
+")9.   c #CFB98F",\r
+"!9.   c #CCAA80",\r
+"~9.   c #BCA576",\r
+"{9.   c #BBA581",\r
+"]9.   c #C1946B",\r
+"^9.   c #BB8357",\r
+"/9.   c #AD7C53",\r
+"(9.   c #AF8955",\r
+"_9.   c #A68969",\r
+":9.   c #B18E6C",\r
+"<9.   c #B1713E",\r
+"[9.   c #A6874A",\r
+"}9.   c #C18C4F",\r
+"|9.   c #C69057",\r
+"19.   c #C4985F",\r
+"29.   c #BF9455",\r
+"39.   c #BE8B51",\r
+"49.   c #C18850",\r
+"59.   c #B8913B",\r
+"69.   c #B4814A",\r
+"79.   c #B18742",\r
+"89.   c #A6854B",\r
+"99.   c #BB9654",\r
+"09.   c #C3975C",\r
+"a9.   c #C5A166",\r
+"b9.   c #CDA265",\r
+"c9.   c #CFA45F",\r
+"d9.   c #C8A170",\r
+"e9.   c #CDA365",\r
+"f9.   c #CDA666",\r
+"g9.   c #CEA36E",\r
+"h9.   c #CBA06D",\r
+"i9.   c #CBA074",\r
+"j9.   c #C9A377",\r
+"k9.   c #C89458",\r
+"l9.   c #C29960",\r
+"m9.   c #CAA579",\r
+"n9.   c #D3AB6F",\r
+"o9.   c #CCA16B",\r
+"p9.   c #CA9F66",\r
+"q9.   c #C6A16E",\r
+"r9.   c #C2A377",\r
+"s9.   c #C4A372",\r
+"t9.   c #C6A27B",\r
+"u9.   c #C8AA7A",\r
+"v9.   c #CAA875",\r
+"w9.   c #C6A467",\r
+"x9.   c #C5A26B",\r
+"y9.   c #C6956F",\r
+"z9.   c #C79766",\r
+"A9.   c #C29465",\r
+"B9.   c #B98B4F",\r
+"C9.   c #B98C51",\r
+"D9.   c #AE7748",\r
+"E9.   c #A36D3E",\r
+"F9.   c #7B4B39",\r
+"G9.   c #573D31",\r
+"H9.   c #4B3C2D",\r
+"I9.   c #63543D",\r
+"J9.   c #9B7B4D",\r
+"K9.   c #AA844C",\r
+"L9.   c #B1875B",\r
+"M9.   c #B48F5A",\r
+"N9.   c #B7945A",\r
+"O9.   c #BD9463",\r
+"P9.   c #BC985D",\r
+"Q9.   c #BA9761",\r
+"R9.   c #AD7D4A",\r
+"S9.   c #956746",\r
+"T9.   c #786C59",\r
+"U9.   c #898578",\r
+"V9.   c #948A79",\r
+"W9.   c #9C9179",\r
+"X9.   c #9D926E",\r
+"Y9.   c #918768",\r
+"Z9.   c #8F7F5A",\r
+"`9.   c #85724E",\r
+" 0.   c #776B6C",\r
+".0.   c #75655D",\r
+"+0.   c #818870",\r
+"@0.   c #A09B83",\r
+"#0.   c #B1A77A",\r
+"$0.   c #B2A384",\r
+"%0.   c #977F60",\r
+"&0.   c #81835B",\r
+"*0.   c #A0A78C",\r
+"=0.   c #A6826C",\r
+"-0.   c #926F61",\r
+";0.   c #695F47",\r
+">0.   c #575446",\r
+",0.   c #6B7063",\r
+"'0.   c #748173",\r
+")0.   c #BBB193",\r
+"!0.   c #B9A185",\r
+"~0.   c #AB9A7D",\r
+"{0.   c #9C916B",\r
+"]0.   c #866A4D",\r
+"^0.   c #6B5951",\r
+"/0.   c #555645",\r
+"(0.   c #79886B",\r
+"_0.   c #959573",\r
+":0.   c #928861",\r
+"<0.   c #815F51",\r
+"[0.   c #543A36",\r
+"}0.   c #524D39",\r
+"|0.   c #7C6843",\r
+"10.   c #9D8049",\r
+"20.   c #A4875C",\r
+"30.   c #B39658",\r
+"40.   c #B6996D",\r
+"50.   c #BEA06F",\r
+"60.   c #BE9C69",\r
+"70.   c #C79F74",\r
+"80.   c #C69B63",\r
+"90.   c #C5A467",\r
+"00.   c #BB8054",\r
+"a0.   c #883E2E",\r
+"b0.   c #5D3F3E",\r
+"c0.   c #7B4842",\r
+"d0.   c #492B2C",\r
+"e0.   c #292824",\r
+"f0.   c #3F2627",\r
+"g0.   c #38382A",\r
+"h0.   c #856343",\r
+"i0.   c #9A4B3A",\r
+"j0.   c #3F2726",\r
+"k0.   c #3D3E2F",\r
+"l0.   c #836C56",\r
+"m0.   c #9C6A4B",\r
+"n0.   c #7C6243",\r
+"o0.   c #827249",\r
+"p0.   c #A1A166",\r
+"q0.   c #BAA676",\r
+"r0.   c #936251",\r
+"s0.   c #5C4D3A",\r
+"t0.   c #736749",\r
+"u0.   c #917755",\r
+"v0.   c #97966E",\r
+"w0.   c #A47062",\r
+"x0.   c #62341D",\r
+"y0.   c #342420",\r
+"z0.   c #4E4C3A",\r
+"A0.   c #96845C",\r
+"B0.   c #B69A76",\r
+"C0.   c #B5976B",\r
+"D0.   c #AF875C",\r
+"E0.   c #B2815B",\r
+"F0.   c #AD815A",\r
+"G0.   c #B09363",\r
+"H0.   c #BD9F7B",\r
+"I0.   c #BBA57D",\r
+"J0.   c #C1A57F",\r
+"K0.   c #C3AC86",\r
+"L0.   c #C3B092",\r
+"M0.   c #CBB092",\r
+"N0.   c #CCA88E",\r
+"O0.   c #C2A88B",\r
+"P0.   c #BDA477",\r
+"Q0.   c #CDBF97",\r
+"R0.   c #C2B69B",\r
+"S0.   c #CDB697",\r
+"T0.   c #D1BF98",\r
+"U0.   c #CAB391",\r
+"V0.   c #C7B48A",\r
+"W0.   c #B5A887",\r
+"X0.   c #CFB484",\r
+"Y0.   c #C8B08C",\r
+"Z0.   c #C9AE8E",\r
+"`0.   c #CEB895",\r
+" a.   c #CFBA97",\r
+".a.   c #CCAF8A",\r
+"+a.   c #C79F7E",\r
+"@a.   c #BEA27E",\r
+"#a.   c #C0A471",\r
+"$a.   c #C79C75",\r
+"%a.   c #BB946F",\r
+"&a.   c #AD875B",\r
+"*a.   c #A68F6C",\r
+"=a.   c #AE765D",\r
+"-a.   c #AA6F3B",\r
+";a.   c #B2854C",\r
+">a.   c #C69848",\r
+",a.   c #C59954",\r
+"'a.   c #C69553",\r
+")a.   c #C6944F",\r
+"!a.   c #BC875C",\r
+"~a.   c #B58555",\r
+"{a.   c #BB874D",\r
+"]a.   c #B08545",\r
+"^a.   c #B68648",\r
+"/a.   c #B98B4E",\r
+"(a.   c #BD9A4A",\r
+"_a.   c #C79D60",\r
+":a.   c #C89F66",\r
+"<a.   c #CCA867",\r
+"[a.   c #CFA46F",\r
+"}a.   c #C9A265",\r
+"|a.   c #CBA564",\r
+"1a.   c #CAA064",\r
+"2a.   c #CCA46B",\r
+"3a.   c #D1A561",\r
+"4a.   c #D0A663",\r
+"5a.   c #C89B70",\r
+"6a.   c #CDA579",\r
+"7a.   c #CDAA79",\r
+"8a.   c #CDA576",\r
+"9a.   c #CDA56C",\r
+"0a.   c #C8A777",\r
+"aa.   c #C9AE75",\r
+"ba.   c #C6A775",\r
+"ca.   c #C5A67B",\r
+"da.   c #CAA37B",\r
+"ea.   c #C9A87B",\r
+"fa.   c #CAA878",\r
+"ga.   c #CAA26F",\r
+"ha.   c #C4A271",\r
+"ia.   c #C2A171",\r
+"ja.   c #C39363",\r
+"ka.   c #BF8F5F",\r
+"la.   c #BD8E4D",\r
+"ma.   c #B58258",\r
+"na.   c #A76246",\r
+"oa.   c #7F4639",\r
+"pa.   c #4F5539",\r
+"qa.   c #5F4C2E",\r
+"ra.   c #59432E",\r
+"sa.   c #937738",\r
+"ta.   c #A88343",\r
+"ua.   c #B4894F",\r
+"va.   c #B88E53",\r
+"wa.   c #B68C61",\r
+"xa.   c #B59461",\r
+"ya.   c #BB9565",\r
+"za.   c #B99369",\r
+"Aa.   c #B79055",\r
+"Ba.   c #B17A47",\r
+"Ca.   c #855443",\r
+"Da.   c #6D6A5B",\r
+"Ea.   c #938778",\r
+"Fa.   c #969679",\r
+"Ga.   c #A0927B",\r
+"Ha.   c #8B8764",\r
+"Ia.   c #9E9F81",\r
+"Ja.   c #AA967E",\r
+"Ka.   c #8D7F6A",\r
+"La.   c #846B65",\r
+"Ma.   c #8C7A69",\r
+"Na.   c #A59F7C",\r
+"Oa.   c #B2A58A",\r
+"Pa.   c #AC8C75",\r
+"Qa.   c #7B6954",\r
+"Ra.   c #6B7A6D",\r
+"Sa.   c #9C9483",\r
+"Ta.   c #A77372",\r
+"Ua.   c #81746B",\r
+"Va.   c #958970",\r
+"Wa.   c #9D8660",\r
+"Xa.   c #908A75",\r
+"Ya.   c #615E4D",\r
+"Za.   c #858874",\r
+"`a.   c #97877B",\r
+" b.   c #826259",\r
+".b.   c #727155",\r
+"+b.   c #908F7A",\r
+"@b.   c #A67D61",\r
+"#b.   c #6C584C",\r
+"$b.   c #646354",\r
+"%b.   c #8B7262",\r
+"&b.   c #8B8562",\r
+"*b.   c #90876C",\r
+"=b.   c #2D3225",\r
+"-b.   c #626147",\r
+";b.   c #906E4A",\r
+">b.   c #9A7E4F",\r
+",b.   c #A99159",\r
+"'b.   c #B99B66",\r
+")b.   c #BD986D",\r
+"!b.   c #C3A271",\r
+"~b.   c #CCA574",\r
+"{b.   c #D1A67E",\r
+"]b.   c #C7935E",\r
+"^b.   c #BF9F67",\r
+"/b.   c #C29363",\r
+"(b.   c #9F4E2D",\r
+"_b.   c #56312A",\r
+":b.   c #5B4234",\r
+"<b.   c #472B28",\r
+"[b.   c #2A2623",\r
+"}b.   c #2A2922",\r
+"|b.   c #322127",\r
+"1b.   c #332C24",\r
+"2b.   c #635440",\r
+"3b.   c #8A403C",\r
+"4b.   c #3E2620",\r
+"5b.   c #434032",\r
+"6b.   c #8C7652",\r
+"7b.   c #A18352",\r
+"8b.   c #A18952",\r
+"9b.   c #A9A46A",\r
+"0b.   c #B2B087",\r
+"ab.   c #C2A88F",\r
+"bb.   c #A67657",\r
+"cb.   c #745E4E",\r
+"db.   c #897B65",\r
+"eb.   c #A2895F",\r
+"fb.   c #9B9376",\r
+"gb.   c #A98C76",\r
+"hb.   c #966641",\r
+"ib.   c #513027",\r
+"jb.   c #494834",\r
+"kb.   c #908352",\r
+"lb.   c #B69B6B",\r
+"mb.   c #AD9260",\r
+"nb.   c #AE835E",\r
+"ob.   c #AD6F4D",\r
+"pb.   c #A37C48",\r
+"qb.   c #B2935E",\r
+"rb.   c #C19E76",\r
+"sb.   c #BEA678",\r
+"tb.   c #C4AC89",\r
+"ub.   c #C8AD81",\r
+"vb.   c #C09E7D",\r
+"wb.   c #C0AB8E",\r
+"xb.   c #CAAD8B",\r
+"yb.   c #CBA78B",\r
+"zb.   c #C4AD94",\r
+"Ab.   c #C0A584",\r
+"Bb.   c #B1A68E",\r
+"Cb.   c #B8B296",\r
+"Db.   c #CCB997",\r
+"Eb.   c #CDBA99",\r
+"Fb.   c #CFB88F",\r
+"Gb.   c #CFBF99",\r
+"Hb.   c #BDAB86",\r
+"Ib.   c #BAA687",\r
+"Jb.   c #BEAA89",\r
+"Kb.   c #BBA67E",\r
+"Lb.   c #BFAD87",\r
+"Mb.   c #CBB38B",\r
+"Nb.   c #CAAF8E",\r
+"Ob.   c #CBB994",\r
+"Pb.   c #CFB083",\r
+"Qb.   c #BE9A77",\r
+"Rb.   c #BA9F7F",\r
+"Sb.   c #CBA779",\r
+"Tb.   c #C2A07D",\r
+"Ub.   c #B6956E",\r
+"Vb.   c #B59163",\r
+"Wb.   c #AE9567",\r
+"Xb.   c #B27654",\r
+"Yb.   c #A37634",\r
+"Zb.   c #B28959",\r
+"`b.   c #C59951",\r
+" c.   c #C69659",\r
+".c.   c #C79561",\r
+"+c.   c #C89953",\r
+"@c.   c #BF8F49",\r
+"#c.   c #BB8A53",\r
+"$c.   c #B58649",\r
+"%c.   c #B98D49",\r
+"&c.   c #B98654",\r
+"*c.   c #B78651",\r
+"=c.   c #C2994A",\r
+"-c.   c #C49D5A",\r
+";c.   c #C49E5F",\r
+">c.   c #CCA565",\r
+",c.   c #CDA66B",\r
+"'c.   c #C89E62",\r
+")c.   c #C9A16C",\r
+"!c.   c #C8A164",\r
+"~c.   c #C9A268",\r
+"{c.   c #CDA371",\r
+"]c.   c #CEA069",\r
+"^c.   c #D1AA68",\r
+"/c.   c #C7A370",\r
+"(c.   c #CDA773",\r
+"_c.   c #CFAA79",\r
+":c.   c #CEAA7A",\r
+"<c.   c #CDA577",\r
+"[c.   c #CBAB7F",\r
+"}c.   c #CAAC7D",\r
+"|c.   c #CCAC7E",\r
+"1c.   c #C9AA81",\r
+"2c.   c #C8A678",\r
+"3c.   c #CAA874",\r
+"4c.   c #C9A46B",\r
+"5c.   c #BE9E6D",\r
+"6c.   c #C69C72",\r
+"7c.   c #C7A26B",\r
+"8c.   c #BB9661",\r
+"9c.   c #BE9458",\r
+"0c.   c #BC8452",\r
+"ac.   c #AD7C51",\r
+"bc.   c #9D4D3F",\r
+"cc.   c #603934",\r
+"dc.   c #5C6349",\r
+"ec.   c #909473",\r
+"fc.   c #9D865C",\r
+"gc.   c #604A31",\r
+"hc.   c #7E653D",\r
+"ic.   c #A78448",\r
+"jc.   c #B0874B",\r
+"kc.   c #B58951",\r
+"lc.   c #B49359",\r
+"mc.   c #BB8F57",\r
+"nc.   c #B88D65",\r
+"oc.   c #B99068",\r
+"pc.   c #BC9457",\r
+"qc.   c #B28258",\r
+"rc.   c #9E653F",\r
+"sc.   c #795A41",\r
+"tc.   c #7F7A6B",\r
+"uc.   c #A1A181",\r
+"vc.   c #B1AE85",\r
+"wc.   c #B2AC8D",\r
+"xc.   c #A9A988",\r
+"yc.   c #B2AE98",\r
+"zc.   c #A79081",\r
+"Ac.   c #877261",\r
+"Bc.   c #72504C",\r
+"Cc.   c #656150",\r
+"Dc.   c #837866",\r
+"Ec.   c #875552",\r
+"Fc.   c #544A3E",\r
+"Gc.   c #6E7E6D",\r
+"Hc.   c #988C7F",\r
+"Ic.   c #826E69",\r
+"Jc.   c #787956",\r
+"Kc.   c #8B887C",\r
+"Lc.   c #7F6157",\r
+"Mc.   c #676954",\r
+"Nc.   c #7D6E4B",\r
+"Oc.   c #736C58",\r
+"Pc.   c #7F6A58",\r
+"Qc.   c #757C57",\r
+"Rc.   c #797654",\r
+"Sc.   c #8A8060",\r
+"Tc.   c #AA8F71",\r
+"Uc.   c #7F4B46",\r
+"Vc.   c #4E544B",\r
+"Wc.   c #65655F",\r
+"Xc.   c #8A8C74",\r
+"Yc.   c #A07966",\r
+"Zc.   c #583527",\r
+"`c.   c #2E2A24",\r
+" d.   c #3D3828",\r
+".d.   c #7E6B45",\r
+"+d.   c #947649",\r
+"@d.   c #A3855D",\r
+"#d.   c #B4975F",\r
+"$d.   c #C6A56C",\r
+"%d.   c #CAA679",\r
+"&d.   c #CBA97C",\r
+"*d.   c #D5C194",\r
+"=d.   c #D6C2A5",\r
+"-d.   c #D0B983",\r
+";d.   c #C59A6B",\r
+">d.   c #BE9E63",\r
+",d.   c #B2754D",\r
+"'d.   c #6E412D",\r
+")d.   c #43332D",\r
+"!d.   c #362627",\r
+"~d.   c #282926",\r
+"{d.   c #2E2E29",\r
+"]d.   c #2D2120",\r
+"^d.   c #2C211C",\r
+"/d.   c #41302A",\r
+"(d.   c #513836",\r
+"_d.   c #463D25",\r
+":d.   c #70754C",\r
+"<d.   c #B4A576",\r
+"[d.   c #BEAA80",\r
+"}d.   c #C2BC8F",\r
+"|d.   c #BEBC8F",\r
+"1d.   c #C1AF81",\r
+"2d.   c #B18B72",\r
+"3d.   c #6E4940",\r
+"4d.   c #605050",\r
+"5d.   c #795A4D",\r
+"6d.   c #7B5B42",\r
+"7d.   c #847055",\r
+"8d.   c #907C56",\r
+"9d.   c #97885B",\r
+"0d.   c #8A4F35",\r
+"ad.   c #4A3B35",\r
+"bd.   c #7D6A51",\r
+"cd.   c #AA9A74",\r
+"dd.   c #B79D70",\r
+"ed.   c #B38B63",\r
+"fd.   c #A78552",\r
+"gd.   c #B3935D",\r
+"hd.   c #B7996B",\r
+"id.   c #B39E6D",\r
+"jd.   c #BD9F75",\r
+"kd.   c #BFA885",\r
+"ld.   c #BFAA85",\r
+"md.   c #BF9C81",\r
+"nd.   c #BEA387",\r
+"od.   c #C7B18D",\r
+"pd.   c #CCB593",\r
+"qd.   c #CCBC8E",\r
+"rd.   c #C7AC7A",\r
+"sd.   c #B8A487",\r
+"td.   c #BFB497",\r
+"ud.   c #CCB69C",\r
+"vd.   c #CCB899",\r
+"wd.   c #D2BF99",\r
+"xd.   c #D4BC9C",\r
+"yd.   c #D0AD8C",\r
+"zd.   c #BCA77D",\r
+"Ad.   c #BAA184",\r
+"Bd.   c #BA9372",\r
+"Cd.   c #AD9F79",\r
+"Dd.   c #B3AC8C",\r
+"Ed.   c #BEA280",\r
+"Fd.   c #C1A78D",\r
+"Gd.   c #C2A27B",\r
+"Hd.   c #B59F7C",\r
+"Id.   c #B49A79",\r
+"Jd.   c #B59D6C",\r
+"Kd.   c #B29E71",\r
+"Ld.   c #BCA570",\r
+"Md.   c #BFA074",\r
+"Nd.   c #BA966E",\r
+"Od.   c #B0764D",\r
+"Pd.   c #A07A41",\r
+"Qd.   c #B19156",\r
+"Rd.   c #C09455",\r
+"Sd.   c #C79C5C",\r
+"Td.   c #C3965D",\r
+"Ud.   c #C1965D",\r
+"Vd.   c #C29861",\r
+"Wd.   c #C19652",\r
+"Xd.   c #BB8C52",\r
+"Yd.   c #BC8A51",\r
+"Zd.   c #B58A4C",\r
+"`d.   c #B28850",\r
+" e.   c #C2944F",\r
+".e.   c #C49B52",\r
+"+e.   c #C49D5C",\r
+"@e.   c #C89C62",\r
+"#e.   c #CB9F65",\r
+"$e.   c #C79C64",\r
+"%e.   c #C7A15E",\r
+"&e.   c #C5A267",\r
+"*e.   c #C89B5C",\r
+"=e.   c #C8A163",\r
+"-e.   c #D1A269",\r
+";e.   c #CCA269",\r
+">e.   c #C99F73",\r
+",e.   c #CBA46A",\r
+"'e.   c #C9A171",\r
+")e.   c #CDA77B",\r
+"!e.   c #D1A874",\r
+"~e.   c #CDAD73",\r
+"{e.   c #CCA777",\r
+"]e.   c #CCA377",\r
+"^e.   c #C6A980",\r
+"/e.   c #C6A57C",\r
+"(e.   c #CA9F79",\r
+"_e.   c #C49E74",\r
+":e.   c #C19E69",\r
+"<e.   c #C69966",\r
+"[e.   c #C29B6C",\r
+"}e.   c #C39359",\r
+"|e.   c #C18D55",\r
+"1e.   c #B5824B",\r
+"2e.   c #AA754B",\r
+"3e.   c #A0614B",\r
+"4e.   c #79423C",\r
+"5e.   c #3F342B",\r
+"6e.   c #686652",\r
+"7e.   c #A8927D",\r
+"8e.   c #9B5D4E",\r
+"9e.   c #5D4538",\r
+"0e.   c #8E7750",\r
+"ae.   c #AC8D50",\r
+"be.   c #AE845A",\r
+"ce.   c #B3905A",\r
+"de.   c #B59058",\r
+"ee.   c #B98F64",\r
+"fe.   c #B98F5F",\r
+"ge.   c #B99154",\r
+"he.   c #B38A59",\r
+"ie.   c #AE7D49",\r
+"je.   c #9A6244",\r
+"ke.   c #76645C",\r
+"le.   c #959887",\r
+"me.   c #BAA490",\r
+"ne.   c #AE9886",\r
+"oe.   c #8C7863",\r
+"pe.   c #88776A",\r
+"qe.   c #8E8C75",\r
+"re.   c #89836D",\r
+"se.   c #888B7C",\r
+"te.   c #8E8371",\r
+"ue.   c #6A6949",\r
+"ve.   c #716453",\r
+"we.   c #605946",\r
+"xe.   c #717160",\r
+"ye.   c #A88E82",\r
+"ze.   c #9E9072",\r
+"Ae.   c #8A8A6F",\r
+"Be.   c #988F6A",\r
+"Ce.   c #8A7D61",\r
+"De.   c #7C6E55",\r
+"Ee.   c #737966",\r
+"Fe.   c #938058",\r
+"Ge.   c #977E5B",\r
+"He.   c #886E5B",\r
+"Ie.   c #7B785D",\r
+"Je.   c #917A60",\r
+"Ke.   c #837055",\r
+"Le.   c #A18170",\r
+"Me.   c #AB885E",\r
+"Ne.   c #8F8B5B",\r
+"Oe.   c #949E7F",\r
+"Pe.   c #B89F7C",\r
+"Qe.   c #955052",\r
+"Re.   c #442522",\r
+"Se.   c #2B2B22",\r
+"Te.   c #3F3B2D",\r
+"Ue.   c #7D6342",\r
+"Ve.   c #8E7A4A",\r
+"We.   c #AD8E5D",\r
+"Xe.   c #C19D5F",\r
+"Ye.   c #C8A677",\r
+"Ze.   c #CBAA7C",\r
+"`e.   c #CEB888",\r
+" f.   c #D9C7AA",\r
+".f.   c #D4C9B3",\r
+"+f.   c #D3C9B2",\r
+"@f.   c #D0B797",\r
+"#f.   c #CBAA68",\r
+"$f.   c #C09757",\r
+"%f.   c #956038",\r
+"&f.   c #5E3225",\r
+"*f.   c #302624",\r
+"=f.   c #2B2923",\r
+"-f.   c #2D2B2A",\r
+";f.   c #2E2226",\r
+">f.   c #2A241C",\r
+",f.   c #3C3B2A",\r
+"'f.   c #4F5333",\r
+")f.   c #7B8256",\r
+"!f.   c #A8A981",\r
+"~f.   c #C0B491",\r
+"{f.   c #C3B39A",\r
+"]f.   c #BCB797",\r
+"^f.   c #C0B78A",\r
+"/f.   c #C69478",\r
+"(f.   c #94544D",\r
+"_f.   c #584A41",\r
+":f.   c #6E5247",\r
+"<f.   c #625C47",\r
+"[f.   c #72634C",\r
+"}f.   c #7A5F54",\r
+"|f.   c #615B4A",\r
+"1f.   c #A0926D",\r
+"2f.   c #AF6459",\r
+"3f.   c #57392A",\r
+"4f.   c #6E5F46",\r
+"5f.   c #A48963",\r
+"6f.   c #AF9368",\r
+"7f.   c #B79F71",\r
+"8f.   c #B39669",\r
+"9f.   c #B3926C",\r
+"0f.   c #BA9E73",\r
+"af.   c #B69776",\r
+"bf.   c #BEA47C",\r
+"cf.   c #BBA779",\r
+"df.   c #BEA082",\r
+"ef.   c #BCA389",\r
+"ff.   c #C5AC91",\r
+"gf.   c #C5AA8D",\r
+"hf.   c #BFB48F",\r
+"if.   c #C3A986",\r
+"jf.   c #BA9D7D",\r
+"kf.   c #C4B98C",\r
+"lf.   c #D4C09D",\r
+"mf.   c #D2C39A",\r
+"nf.   c #D6C398",\r
+"of.   c #D8C29B",\r
+"pf.   c #D3B28D",\r
+"qf.   c #C9B98F",\r
+"rf.   c #CBB28F",\r
+"sf.   c #B39B79",\r
+"tf.   c #C2B58C",\r
+"uf.   c #CAB185",\r
+"vf.   c #C6AC8C",\r
+"wf.   c #C0A688",\r
+"xf.   c #B6A17F",\r
+"yf.   c #B89D78",\r
+"zf.   c #BAA67A",\r
+"Af.   c #BD9568",\r
+"Bf.   c #AB6F49",\r
+"Cf.   c #9D7A4C",\r
+"Df.   c #B79157",\r
+"Ef.   c #C7955E",\r
+"Ff.   c #C59E5E",\r
+"Gf.   c #C79A53",\r
+"Hf.   c #C69C59",\r
+"If.   c #C09452",\r
+"Jf.   c #BE934D",\r
+"Kf.   c #BB8950",\r
+"Lf.   c #B3894E",\r
+"Mf.   c #B08C55",\r
+"Nf.   c #BA8E4E",\r
+"Of.   c #BE9249",\r
+"Pf.   c #BF8F56",\r
+"Qf.   c #C29A55",\r
+"Rf.   c #C59655",\r
+"Sf.   c #C49D5F",\r
+"Tf.   c #C59B64",\r
+"Uf.   c #C29F65",\r
+"Vf.   c #C79C67",\r
+"Wf.   c #C8A46B",\r
+"Xf.   c #CB9F5D",\r
+"Yf.   c #C4A45D",\r
+"Zf.   c #C6B177",\r
+"`f.   c #C6AD75",\r
+" g.   c #C3A875",\r
+".g.   c #CBA877",\r
+"+g.   c #C7AF7A",\r
+"@g.   c #CBAA76",\r
+"#g.   c #CAA071",\r
+"$g.   c #C59D70",\r
+"%g.   c #C69E67",\r
+"&g.   c #C1966B",\r
+"*g.   c #C1966C",\r
+"=g.   c #C99E67",\r
+"-g.   c #CA9D65",\r
+";g.   c #C59D64",\r
+">g.   c #C29059",\r
+",g.   c #BD8D53",\r
+"'g.   c #B4834B",\r
+")g.   c #AD8541",\r
+"!g.   c #9F683E",\r
+"~g.   c #734631",\r
+"{g.   c #564F29",\r
+"]g.   c #676A56",\r
+"^g.   c #A69578",\r
+"/g.   c #AE9B84",\r
+"(g.   c #A56E64",\r
+"_g.   c #58312B",\r
+":g.   c #645D45",\r
+"<g.   c #A1874E",\r
+"[g.   c #AF8D5D",\r
+"}g.   c #AC8C5F",\r
+"|g.   c #B59060",\r
+"1g.   c #BD9A6E",\r
+"2g.   c #B69767",\r
+"3g.   c #B9915F",\r
+"4g.   c #B08A57",\r
+"5g.   c #A3894F",\r
+"6g.   c #A6794C",\r
+"7g.   c #90624B",\r
+"8g.   c #71695A",\r
+"9g.   c #83796E",\r
+"0g.   c #7A7C64",\r
+"ag.   c #7E7B5A",\r
+"bg.   c #7D7868",\r
+"cg.   c #797960",\r
+"dg.   c #847C6D",\r
+"eg.   c #86806F",\r
+"fg.   c #8C8A71",\r
+"gg.   c #8B8A6D",\r
+"hg.   c #969474",\r
+"ig.   c #9E927A",\r
+"jg.   c #91827A",\r
+"kg.   c #817566",\r
+"lg.   c #867967",\r
+"mg.   c #807A61",\r
+"ng.   c #85715D",\r
+"og.   c #6A5F50",\r
+"pg.   c #6F7264",\r
+"qg.   c #948A75",\r
+"rg.   c #B09666",\r
+"sg.   c #928B69",\r
+"tg.   c #8F8C73",\r
+"ug.   c #9F8261",\r
+"vg.   c #795142",\r
+"wg.   c #736862",\r
+"xg.   c #A49A7C",\r
+"yg.   c #B7A981",\r
+"zg.   c #AFAA77",\r
+"Ag.   c #A4835E",\r
+"Bg.   c #612E31",\r
+"Cg.   c #2D2221",\r
+"Dg.   c #2E2921",\r
+"Eg.   c #42493F",\r
+"Fg.   c #88734D",\r
+"Gg.   c #AC915B",\r
+"Hg.   c #B79669",\r
+"Ig.   c #BDA06C",\r
+"Jg.   c #CCAE7E",\r
+"Kg.   c #D1B37B",\r
+"Lg.   c #D1C4A3",\r
+"Mg.   c #D5C1AC",\r
+"Ng.   c #C8BF9F",\r
+"Og.   c #C7BEA7",\r
+"Pg.   c #D1C3AB",\r
+"Qg.   c #D4C7AA",\r
+"Rg.   c #D1BC8A",\r
+"Sg.   c #C38C6B",\r
+"Tg.   c #9A5830",\r
+"Ug.   c #5D352B",\r
+"Vg.   c #2F2F26",\r
+"Wg.   c #778779",\r
+"Xg.   c #A9A88B",\r
+"Yg.   c #9C8A7A",\r
+"Zg.   c #A29F81",\r
+"`g.   c #C4B78D",\r
+" h.   c #C3AE8C",\r
+".h.   c #C4A574",\r
+"+h.   c #AC685E",\r
+"@h.   c #6F4F3D",\r
+"#h.   c #5B4D4C",\r
+"$h.   c #655647",\r
+"%h.   c #6C6B55",\r
+"&h.   c #65554B",\r
+"*h.   c #5D5644",\r
+"=h.   c #858364",\r
+"-h.   c #A9866D",\r
+";h.   c #783734",\r
+">h.   c #6C5340",\r
+",h.   c #967C5C",\r
+"'h.   c #A28C66",\r
+")h.   c #B59F72",\r
+"!h.   c #B8A46F",\r
+"~h.   c #B69271",\r
+"{h.   c #AE8F73",\r
+"]h.   c #B2926C",\r
+"^h.   c #BE9F74",\r
+"/h.   c #C6A972",\r
+"(h.   c #C2AB86",\r
+"_h.   c #B8A17F",\r
+":h.   c #C7A985",\r
+"<h.   c #BAAA80",\r
+"[h.   c #BAA17B",\r
+"}h.   c #B2AD8D",\r
+"|h.   c #D5C5A2",\r
+"1h.   c #D9C89C",\r
+"2h.   c #D7C39C",\r
+"3h.   c #D8C39E",\r
+"4h.   c #D6C397",\r
+"5h.   c #CCBE99",\r
+"6h.   c #D2B997",\r
+"7h.   c #C1AB82",\r
+"8h.   c #C6B592",\r
+"9h.   c #CEB18A",\r
+"0h.   c #C9AA78",\r
+"ah.   c #C3AA84",\r
+"bh.   c #BEB088",\r
+"ch.   c #BEAE88",\r
+"dh.   c #C8AE88",\r
+"eh.   c #C8AE7C",\r
+"fh.   c #C4A47B",\r
+"gh.   c #C29972",\r
+"hh.   c #BC8C64",\r
+"ih.   c #A16C46",\r
+"jh.   c #A18053",\r
+"kh.   c #B88851",\r
+"lh.   c #C19964",\r
+"mh.   c #C5A169",\r
+"nh.   c #C59964",\r
+"oh.   c #C49265",\r
+"ph.   c #C79351",\r
+"qh.   c #C18F4C",\r
+"rh.   c #B88A52",\r
+"sh.   c #B4894A",\r
+"th.   c #AB8352",\r
+"uh.   c #AF894B",\r
+"vh.   c #B99153",\r
+"wh.   c #B48E58",\r
+"xh.   c #BA9152",\r
+"yh.   c #BC9851",\r
+"zh.   c #C19853",\r
+"Ah.   c #C19858",\r
+"Bh.   c #C09659",\r
+"Ch.   c #C39B5C",\r
+"Dh.   c #BE9B60",\r
+"Eh.   c #BAA683",\r
+"Fh.   c #A58979",\r
+"Gh.   c #8E886A",\r
+"Hh.   c #A09F7F",\r
+"Ih.   c #B8A889",\r
+"Jh.   c #BBAF93",\r
+"Kh.   c #B4B098",\r
+"Lh.   c #BEAF8E",\r
+"Mh.   c #CCB78C",\r
+"Nh.   c #CDB07F",\r
+"Oh.   c #C3A787",\r
+"Ph.   c #BDA784",\r
+"Qh.   c #CFB87F",\r
+"Rh.   c #CDB787",\r
+"Sh.   c #CCBA85",\r
+"Th.   c #CEB987",\r
+"Uh.   c #C6B798",\r
+"Vh.   c #C5B394",\r
+"Wh.   c #C3B69B",\r
+"Xh.   c #B5AB92",\r
+"Yh.   c #A2907A",\r
+"Zh.   c #AA9F78",\r
+"`h.   c #B5897A",\r
+" i.   c #978B77",\r
+".i.   c #885752",\r
+"+i.   c #453629",\r
+"@i.   c #4A392D",\r
+"#i.   c #68603D",\r
+"$i.   c #97805F",\r
+"%i.   c #B79555",\r
+"&i.   c #B9965C",\r
+"*i.   c #B7996E",\r
+"=i.   c #BA9860",\r
+"-i.   c #B89666",\r
+";i.   c #B89457",\r
+">i.   c #B68E5C",\r
+",i.   c #A5754F",\r
+"'i.   c #8E694A",\r
+")i.   c #6A6B55",\r
+"!i.   c #868971",\r
+"~i.   c #8D856E",\r
+"{i.   c #747D61",\r
+"]i.   c #6C7754",\r
+"^i.   c #70825C",\r
+"/i.   c #908F74",\r
+"(i.   c #A19C74",\r
+"_i.   c #A78071",\r
+":i.   c #737855",\r
+"<i.   c #6E7363",\r
+"[i.   c #65595B",\r
+"}i.   c #5E574F",\r
+"|i.   c #5F5440",\r
+"1i.   c #676448",\r
+"2i.   c #624F45",\r
+"3i.   c #70786F",\r
+"4i.   c #BAAB84",\r
+"5i.   c #B7A987",\r
+"6i.   c #B6A88D",\r
+"7i.   c #B7976F",\r
+"8i.   c #967751",\r
+"9i.   c #6F5C49",\r
+"0i.   c #6A6857",\r
+"ai.   c #98957B",\r
+"bi.   c #A39769",\r
+"ci.   c #8D5E4A",\r
+"di.   c #522B29",\r
+"ei.   c #2F251D",\r
+"fi.   c #332C22",\r
+"gi.   c #5E5F46",\r
+"hi.   c #A8885A",\r
+"ii.   c #BB9E68",\r
+"ji.   c #C3A574",\r
+"ki.   c #CAA97D",\r
+"li.   c #CFB28F",\r
+"mi.   c #CEC498",\r
+"ni.   c #D8CDAD",\r
+"oi.   c #D5C6A9",\r
+"pi.   c #CAC09D",\r
+"qi.   c #CDC1A0",\r
+"ri.   c #D1C2A4",\r
+"si.   c #D7C9AF",\r
+"ti.   c #D6C5AD",\r
+"ui.   c #CDB497",\r
+"vi.   c #C1916E",\r
+"wi.   c #A35D4E",\r
+"xi.   c #472721",\r
+"yi.   c #2F2325",\r
+"zi.   c #928B7A",\r
+"Ai.   c #9F9372",\r
+"Bi.   c #9D957D",\r
+"Ci.   c #B9AE8D",\r
+"Di.   c #C6B58F",\r
+"Ei.   c #BA957C",\r
+"Fi.   c #AC805E",\r
+"Gi.   c #8A5344",\r
+"Hi.   c #5B4F43",\r
+"Ii.   c #4A4645",\r
+"Ji.   c #5F5A54",\r
+"Ki.   c #725850",\r
+"Li.   c #605448",\r
+"Mi.   c #683441",\r
+"Ni.   c #3A2D2A",\r
+"Oi.   c #454134",\r
+"Pi.   c #887551",\r
+"Qi.   c #88423D",\r
+"Ri.   c #5A4638",\r
+"Si.   c #877551",\r
+"Ti.   c #9E8763",\r
+"Ui.   c #A8926F",\r
+"Vi.   c #B39F73",\r
+"Wi.   c #BA9C7D",\r
+"Xi.   c #BB9B71",\r
+"Yi.   c #B6936A",\r
+"Zi.   c #B9A57D",\r
+"`i.   c #C6A87F",\r
+" j.   c #C2AB81",\r
+".j.   c #C4AF8A",\r
+"+j.   c #C8AF84",\r
+"@j.   c #C3AA88",\r
+"#j.   c #C4B18B",\r
+"$j.   c #CAB17E",\r
+"%j.   c #CAB085",\r
+"&j.   c #C0A478",\r
+"*j.   c #BFB490",\r
+"=j.   c #D5C5A3",\r
+"-j.   c #D8C19B",\r
+";j.   c #D7C6A1",\r
+">j.   c #D9C4A1",\r
+",j.   c #D7C79A",\r
+"'j.   c #D0C39A",\r
+")j.   c #D2BD94",\r
+"!j.   c #D6BC8B",\r
+"~j.   c #D1B78B",\r
+"{j.   c #CFBB94",\r
+"]j.   c #D1B891",\r
+"^j.   c #CEB58E",\r
+"/j.   c #CFB388",\r
+"(j.   c #CDAE8F",\r
+"_j.   c #C7AF8D",\r
+":j.   c #C9B288",\r
+"<j.   c #CBB080",\r
+"[j.   c #C5A07D",\r
+"}j.   c #C19B77",\r
+"|j.   c #B6845F",\r
+"1j.   c #A46C42",\r
+"2j.   c #A1824F",\r
+"3j.   c #B69350",\r
+"4j.   c #C59756",\r
+"5j.   c #C5985C",\r
+"6j.   c #C79A63",\r
+"7j.   c #C6965D",\r
+"8j.   c #C59250",\r
+"9j.   c #C09158",\r
+"0j.   c #B78D4C",\r
+"aj.   c #B37B43",\r
+"bj.   c #A77B47",\r
+"cj.   c #A6824A",\r
+"dj.   c #B98A51",\r
+"ej.   c #B88A4D",\r
+"fj.   c #B38A53",\r
+"gj.   c #BA8E57",\r
+"hj.   c #C19854",\r
+"ij.   c #BB904F",\r
+"jj.   c #C3965B",\r
+"kj.   c #C8A766",\r
+"lj.   c #C6A76A",\r
+"mj.   c #C6AD71",\r
+"nj.   c #C9A968",\r
+"oj.   c #C7AF76",\r
+"pj.   c #A09A84",\r
+"qj.   c #A5A58E",\r
+"rj.   c #B4AD93",\r
+"sj.   c #BDB699",\r
+"tj.   c #BDBAA1",\r
+"uj.   c #C4C0A6",\r
+"vj.   c #CBB8A0",\r
+"wj.   c #C2B69E",\r
+"xj.   c #C0AD9D",\r
+"yj.   c #B5AC98",\r
+"zj.   c #B6AF99",\r
+"Aj.   c #BFB89E",\r
+"Bj.   c #BEB092",\r
+"Cj.   c #BDAB91",\r
+"Dj.   c #B3A389",\r
+"Ej.   c #ABA184",\r
+"Fj.   c #A89A8E",\r
+"Gj.   c #9F9391",\r
+"Hj.   c #A18A7E",\r
+"Ij.   c #8A7C72",\r
+"Jj.   c #75776E",\r
+"Kj.   c #9C7871",\r
+"Lj.   c #787667",\r
+"Mj.   c #877A60",\r
+"Nj.   c #7D7D6E",\r
+"Oj.   c #906451",\r
+"Pj.   c #56402D",\r
+"Qj.   c #6F5F3F",\r
+"Rj.   c #A88E58",\r
+"Sj.   c #B79063",\r
+"Tj.   c #BB9A69",\r
+"Uj.   c #BD9C5D",\r
+"Vj.   c #C09C62",\r
+"Wj.   c #C09B5F",\r
+"Xj.   c #BD9D63",\r
+"Yj.   c #BA9160",\r
+"Zj.   c #B18755",\r
+"`j.   c #A57B4E",\r
+" k.   c #83634C",\r
+".k.   c #78835F",\r
+"+k.   c #98A484",\r
+"@k.   c #A6A688",\r
+"#k.   c #A29E83",\r
+"$k.   c #968772",\r
+"%k.   c #726D57",\r
+"&k.   c #69735E",\r
+"*k.   c #85907A",\r
+"=k.   c #98997B",\r
+"-k.   c #9D957B",\r
+";k.   c #90966C",\r
+">k.   c #959473",\r
+",k.   c #828062",\r
+"'k.   c #8E8563",\r
+")k.   c #8D675A",\r
+"!k.   c #60534A",\r
+"~k.   c #554B44",\r
+"{k.   c #435750",\r
+"]k.   c #B3A888",\r
+"^k.   c #B7A385",\r
+"/k.   c #B5A486",\r
+"(k.   c #A99A75",\r
+"_k.   c #A48567",\r
+":k.   c #9E8960",\r
+"<k.   c #988C67",\r
+"[k.   c #806543",\r
+"}k.   c #6B715C",\r
+"|k.   c #A3956C",\r
+"1k.   c #965645",\r
+"2k.   c #472A29",\r
+"3k.   c #322920",\r
+"4k.   c #484930",\r
+"5k.   c #947E55",\r
+"6k.   c #B89766",\r
+"7k.   c #BFA372",\r
+"8k.   c #CFAE73",\r
+"9k.   c #CEAD7D",\r
+"0k.   c #D3B88B",\r
+"ak.   c #D5CAAD",\r
+"bk.   c #D8CDB3",\r
+"ck.   c #D0C4AB",\r
+"dk.   c #D3C39D",\r
+"ek.   c #D2CAA3",\r
+"fk.   c #D3C4A1",\r
+"gk.   c #D6C3A5",\r
+"hk.   c #D1B6A2",\r
+"ik.   c #AC9693",\r
+"jk.   c #B79A91",\r
+"kk.   c #886A4C",\r
+"lk.   c #57392E",\r
+"mk.   c #392D21",\r
+"nk.   c #464539",\r
+"ok.   c #98907A",\r
+"pk.   c #B9A496",\r
+"qk.   c #C0AC90",\r
+"rk.   c #C2B989",\r
+"sk.   c #BCAD86",\r
+"tk.   c #A66E5D",\r
+"uk.   c #864F43",\r
+"vk.   c #574A3D",\r
+"wk.   c #524845",\r
+"xk.   c #444940",\r
+"yk.   c #695F52",\r
+"zk.   c #644743",\r
+"Ak.   c #634D37",\r
+"Bk.   c #743235",\r
+"Ck.   c #3A211C",\r
+"Dk.   c #343126",\r
+"Ek.   c #796B44",\r
+"Fk.   c #8C4549",\r
+"Gk.   c #4E3C2E",\r
+"Hk.   c #786E4B",\r
+"Ik.   c #9A7E57",\r
+"Jk.   c #B39D6B",\r
+"Kk.   c #B89C79",\r
+"Lk.   c #B99B7A",\r
+"Mk.   c #BDA276",\r
+"Nk.   c #BFA780",\r
+"Ok.   c #C3A580",\r
+"Pk.   c #CBB286",\r
+"Qk.   c #CCA98D",\r
+"Rk.   c #C8AD8A",\r
+"Sk.   c #CCB38F",\r
+"Tk.   c #CEB78A",\r
+"Uk.   c #D0BD97",\r
+"Vk.   c #D8C79E",\r
+"Wk.   c #D6C49C",\r
+"Xk.   c #D9C6A3",\r
+"Yk.   c #DCC39B",\r
+"Zk.   c #D8C59D",\r
+"`k.   c #D8C3A0",\r
+" l.   c #D6C198",\r
+".l.   c #DAC193",\r
+"+l.   c #D6BE96",\r
+"@l.   c #D2B58C",\r
+"#l.   c #D3B88C",\r
+"$l.   c #D2B68D",\r
+"%l.   c #CDAE90",\r
+"&l.   c #D1B188",\r
+"*l.   c #CFB186",\r
+"=l.   c #C0A074",\r
+"-l.   c #BC996E",\r
+";l.   c #BC8B5C",\r
+">l.   c #A7763D",\r
+",l.   c #9D814E",\r
+"'l.   c #BC9458",\r
+")l.   c #C6995A",\r
+"!l.   c #C8985C",\r
+"~l.   c #CB9A62",\r
+"{l.   c #C99F5F",\r
+"]l.   c #C79154",\r
+"^l.   c #BE9051",\r
+"/l.   c #B88140",\r
+"(l.   c #A56E38",\r
+"_l.   c #8F633C",\r
+":l.   c #A07348",\r
+"<l.   c #B08151",\r
+"[l.   c #AB8147",\r
+"}l.   c #B0834C",\r
+"|l.   c #B48A57",\r
+"1l.   c #B69156",\r
+"2l.   c #BD8B56",\r
+"3l.   c #BFAE7E",\r
+"4l.   c #C5B49F",\r
+"5l.   c #B6A79A",\r
+"6l.   c #BDB29E",\r
+"7l.   c #C4AC90",\r
+"8l.   c #AEA98D",\r
+"9l.   c #B5B49B",\r
+"0l.   c #C2B2A0",\r
+"al.   c #B2968D",\r
+"bl.   c #9F8C7E",\r
+"cl.   c #9E9A83",\r
+"dl.   c #C3B8A4",\r
+"el.   c #CEC7A7",\r
+"fl.   c #CCBFA1",\r
+"gl.   c #B59E83",\r
+"hl.   c #A19186",\r
+"il.   c #958975",\r
+"jl.   c #828063",\r
+"kl.   c #6E765C",\r
+"ll.   c #82846E",\r
+"ml.   c #8D8E75",\r
+"nl.   c #9B8A74",\r
+"ol.   c #9E8E70",\r
+"pl.   c #8E9578",\r
+"ql.   c #B08F71",\r
+"rl.   c #918A75",\r
+"sl.   c #938971",\r
+"tl.   c #717366",\r
+"ul.   c #A19F92",\r
+"vl.   c #BBB195",\r
+"wl.   c #C1BC95",\r
+"xl.   c #BBB79C",\r
+"yl.   c #BEA390",\r
+"zl.   c #7E4942",\r
+"Al.   c #4B3E2A",\r
+"Bl.   c #7B7352",\r
+"Cl.   c #A9885F",\r
+"Dl.   c #BA9463",\r
+"El.   c #BD995A",\r
+"Fl.   c #BD9765",\r
+"Gl.   c #BE975B",\r
+"Hl.   c #BA9864",\r
+"Il.   c #B68E53",\r
+"Jl.   c #AC7D56",\r
+"Kl.   c #9E7244",\r
+"Ll.   c #8D7146",\r
+"Ml.   c #868678",\r
+"Nl.   c #9F9E8F",\r
+"Ol.   c #A18F7E",\r
+"Pl.   c #81695E",\r
+"Ql.   c #5C5743",\r
+"Rl.   c #4A5C51",\r
+"Sl.   c #59766A",\r
+"Tl.   c #899180",\r
+"Ul.   c #A09685",\r
+"Vl.   c #989275",\r
+"Wl.   c #7E846E",\r
+"Xl.   c #959884",\r
+"Yl.   c #A28373",\r
+"Zl.   c #7F5D44",\r
+"`l.   c #494C38",\r
+" m.   c #4F4C3E",\r
+".m.   c #4C5644",\r
+"+m.   c #958D6F",\r
+"@m.   c #998067",\r
+"#m.   c #947A64",\r
+"$m.   c #867F60",\r
+"%m.   c #908C69",\r
+"&m.   c #9C8D71",\r
+"*m.   c #A49A76",\r
+"=m.   c #84826B",\r
+"-m.   c #AB8C6A",\r
+";m.   c #99483C",\r
+">m.   c #3C2E27",\r
+",m.   c #3C3E2C",\r
+"'m.   c #777849",\r
+")m.   c #B29C60",\r
+"!m.   c #C1A273",\r
+"~m.   c #C8A87A",\r
+"{m.   c #CDB080",\r
+"]m.   c #D4B389",\r
+"^m.   c #D8C499",\r
+"/m.   c #D6CEAB",\r
+"(m.   c #D1C9A7",\r
+"_m.   c #CCBF99",\r
+":m.   c #D4C49B",\r
+"<m.   c #D5CAA7",\r
+"[m.   c #D9CEAA",\r
+"}m.   c #D9C9AD",\r
+"|m.   c #D0B796",\r
+"1m.   c #B6916C",\r
+"2m.   c #8F866C",\r
+"3m.   c #A7A688",\r
+"4m.   c #7A744D",\r
+"5m.   c #868F77",\r
+"6m.   c #B5A192",\r
+"7m.   c #AB8178",\r
+"8m.   c #7E6758",\r
+"9m.   c #B2A47D",\r
+"0m.   c #A0845F",\r
+"am.   c #814D49",\r
+"bm.   c #624F3F",\r
+"cm.   c #5B4C3C",\r
+"dm.   c #584F3A",\r
+"em.   c #5C4F4B",\r
+"fm.   c #664E36",\r
+"gm.   c #624B3C",\r
+"hm.   c #6F6C4E",\r
+"im.   c #7D3C3A",\r
+"jm.   c #3E2722",\r
+"km.   c #3B392E",\r
+"lm.   c #796F4B",\r
+"mm.   c #8F5651",\r
+"nm.   c #624338",\r
+"om.   c #61563F",\r
+"pm.   c #827356",\r
+"qm.   c #B49061",\r
+"rm.   c #B5A26F",\r
+"sm.   c #BEAA76",\r
+"tm.   c #C1A684",\r
+"um.   c #C2AA86",\r
+"vm.   c #C8AA80",\r
+"wm.   c #CCAB8C",\r
+"xm.   c #D1B490",\r
+"ym.   c #CEB58C",\r
+"zm.   c #CFB589",\r
+"Am.   c #CFB486",\r
+"Bm.   c #D6B992",\r
+"Cm.   c #D6BE9A",\r
+"Dm.   c #D7C59B",\r
+"Em.   c #D7C69D",\r
+"Fm.   c #D9BF9A",\r
+"Gm.   c #DDC197",\r
+"Hm.   c #D8C49A",\r
+"Im.   c #D9C29C",\r
+"Jm.   c #D7C092",\r
+"Km.   c #D8BE98",\r
+"Lm.   c #D8BF99",\r
+"Mm.   c #D8BB92",\r
+"Nm.   c #D0B38C",\r
+"Om.   c #D5BC8F",\r
+"Pm.   c #D5B48C",\r
+"Qm.   c #CBAA80",\r
+"Rm.   c #CEAA7E",\r
+"Sm.   c #C5A97F",\r
+"Tm.   c #C49C76",\r
+"Um.   c #C09E72",\r
+"Vm.   c #BC986C",\r
+"Wm.   c #B5855C",\r
+"Xm.   c #A66D37",\r
+"Ym.   c #A48648",\r
+"Zm.   c #BB9A56",\r
+"`m.   c #C69D60",\r
+" n.   c #C89C69",\r
+".n.   c #CB9D6E",\r
+"+n.   c #C79C69",\r
+"@n.   c #C5945D",\r
+"#n.   c #C08B55",\r
+"$n.   c #AE5D3F",\r
+"%n.   c #7F4536",\r
+"&n.   c #685231",\r
+"*n.   c #8A6B39",\r
+"=n.   c #9B734B",\r
+"-n.   c #A27246",\r
+";n.   c #A97A48",\r
+">n.   c #AC8450",\r
+",n.   c #BA9355",\r
+"'n.   c #BB8C55",\r
+")n.   c #BCAE7D",\r
+"!n.   c #C3A394",\r
+"~n.   c #94887D",\r
+"{n.   c #9F9D92",\r
+"]n.   c #A48577",\r
+"^n.   c #717060",\r
+"/n.   c #949F7D",\r
+"(n.   c #B6A389",\r
+"_n.   c #9B7A66",\r
+":n.   c #717457",\r
+"<n.   c #9EA384",\r
+"[n.   c #C4BB9D",\r
+"}n.   c #C9C2A0",\r
+"|n.   c #CCC39C",\r
+"1n.   c #BEB288",\r
+"2n.   c #B3AC8F",\r
+"3n.   c #B0AD89",\r
+"4n.   c #B2B484",\r
+"5n.   c #B2B48D",\r
+"6n.   c #B9B794",\r
+"7n.   c #BABA96",\r
+"8n.   c #C2BA98",\r
+"9n.   c #BBAA83",\r
+"0n.   c #919079",\r
+"an.   c #A7A889",\r
+"bn.   c #A99E8A",\r
+"cn.   c #A18373",\r
+"dn.   c #6A665B",\r
+"en.   c #A09D8F",\r
+"fn.   c #B9AF98",\r
+"gn.   c #C0BBA0",\r
+"hn.   c #C5B89F",\r
+"in.   c #C4B69E",\r
+"jn.   c #A17E6A",\r
+"kn.   c #5A4333",\r
+"ln.   c #565144",\r
+"mn.   c #8E7C5C",\r
+"nn.   c #B49158",\r
+"on.   c #BA955B",\r
+"pn.   c #BAA063",\r
+"qn.   c #BB9B5C",\r
+"rn.   c #B89162",\r
+"sn.   c #B89460",\r
+"tn.   c #B48F57",\r
+"un.   c #B08552",\r
+"vn.   c #A87842",\r
+"wn.   c #9B5E3E",\r
+"xn.   c #736058",\r
+"yn.   c #7D887D",\r
+"zn.   c #9B9486",\r
+"An.   c #94907D",\r
+"Bn.   c #8D9176",\r
+"Cn.   c #7F8875",\r
+"Dn.   c #869C7B",\r
+"En.   c #969A81",\r
+"Fn.   c #907566",\r
+"Gn.   c #6A6D56",\r
+"Hn.   c #70855F",\r
+"In.   c #95A285",\r
+"Jn.   c #A49982",\r
+"Kn.   c #8B8C68",\r
+"Ln.   c #6D775F",\r
+"Mn.   c #758769",\r
+"Nn.   c #8F9C76",\r
+"On.   c #6D755E",\r
+"Pn.   c #91876C",\r
+"Qn.   c #93876F",\r
+"Rn.   c #7F785C",\r
+"Sn.   c #746461",\r
+"Tn.   c #95866B",\r
+"Un.   c #A69870",\r
+"Vn.   c #AAA07B",\r
+"Wn.   c #AA9B74",\r
+"Xn.   c #A6885C",\r
+"Yn.   c #854237",\r
+"Zn.   c #3B382D",\r
+"`n.   c #5E6249",\r
+" o.   c #A9976F",\r
+".o.   c #C2A06B",\r
+"+o.   c #C4AA7F",\r
+"@o.   c #CAAD7D",\r
+"#o.   c #D2B78A",\r
+"$o.   c #D1C69B",\r
+"%o.   c #D1CBA8",\r
+"&o.   c #D5CCA9",\r
+"*o.   c #CCC3A1",\r
+"=o.   c #CFBF91",\r
+"-o.   c #CAC19B",\r
+";o.   c #D5C7A2",\r
+">o.   c #D7CBAB",\r
+",o.   c #D6C9A6",\r
+"'o.   c #D0BA95",\r
+")o.   c #C1B787",\r
+"!o.   c #AB9B7B",\r
+"~o.   c #9C9685",\r
+"{o.   c #969A8D",\r
+"]o.   c #AEAF99",\r
+"^o.   c #BDB39E",\r
+"/o.   c #AE8370",\r
+"(o.   c #756353",\r
+"_o.   c #696B5D",\r
+":o.   c #6E7D68",\r
+"<o.   c #A98275",\r
+"[o.   c #7A4738",\r
+"}o.   c #504437",\r
+"|o.   c #50564B",\r
+"1o.   c #5D5642",\r
+"2o.   c #5F4D38",\r
+"3o.   c #524F3C",\r
+"4o.   c #776A3D",\r
+"5o.   c #947255",\r
+"6o.   c #7F7A60",\r
+"7o.   c #8A5741",\r
+"8o.   c #67502D",\r
+"9o.   c #606448",\r
+"0o.   c #977156",\r
+"ao.   c #8B5148",\r
+"bo.   c #563E32",\r
+"co.   c #7A644D",\r
+"do.   c #9B8454",\r
+"eo.   c #A88C67",\r
+"fo.   c #BA9A6D",\r
+"go.   c #BFA572",\r
+"ho.   c #C19F7C",\r
+"io.   c #C9A47B",\r
+"jo.   c #C9AD82",\r
+"ko.   c #CDB38E",\r
+"lo.   c #D0B189",\r
+"mo.   c #D2B192",\r
+"no.   c #D3B98F",\r
+"oo.   c #D1BB94",\r
+"po.   c #D8BA97",\r
+"qo.   c #DABD8C",\r
+"ro.   c #DBC392",\r
+"so.   c #D8C297",\r
+"to.   c #D6C296",\r
+"uo.   c #D3C29B",\r
+"vo.   c #D6BF9A",\r
+"wo.   c #DCC097",\r
+"xo.   c #D8C29D",\r
+"yo.   c #D9C298",\r
+"zo.   c #DCC294",\r
+"Ao.   c #DABF96",\r
+"Bo.   c #DABE91",\r
+"Co.   c #D6BD96",\r
+"Do.   c #D1B692",\r
+"Eo.   c #D4B68A",\r
+"Fo.   c #D3B48C",\r
+"Go.   c #D2B585",\r
+"Ho.   c #CCA982",\r
+"Io.   c #C8A67F",\r
+"Jo.   c #C8A878",\r
+"Ko.   c #C1A471",\r
+"Lo.   c #BF9A6E",\r
+"Mo.   c #BB9663",\r
+"No.   c #B18A57",\r
+"Oo.   c #A47439",\r
+"Po.   c #AA8248",\r
+"Qo.   c #BC955C",\r
+"Ro.   c #C9A365",\r
+"So.   c #CBA163",\r
+"To.   c #C99E65",\r
+"Uo.   c #C3985E",\r
+"Vo.   c #C69254",\r
+"Wo.   c #B97E50",\r
+"Xo.   c #98593B",\r
+"Yo.   c #705433",\r
+"Zo.   c #70513E",\r
+"`o.   c #6D4F38",\r
+" p.   c #795F42",\r
+".p.   c #8E6E35",\r
+"+p.   c #A37B43",\r
+"@p.   c #B18948",\r
+"#p.   c #B48F56",\r
+"$p.   c #B78857",\r
+"%p.   c #BFB07F",\r
+"&p.   c #C1A69A",\r
+"*p.   c #97897B",\r
+"=p.   c #999F94",\r
+"-p.   c #AE856D",\r
+";p.   c #737964",\r
+">p.   c #A6AF88",\r
+",p.   c #C5B48F",\r
+"'p.   c #9C6862",\r
+")p.   c #636B5A",\r
+"!p.   c #B0B19A",\r
+"~p.   c #BFBD9F",\r
+"{p.   c #B8B9A1",\r
+"]p.   c #C4BE9B",\r
+"^p.   c #C8BB94",\r
+"/p.   c #C7C6A4",\r
+"(p.   c #CCC89B",\r
+"_p.   c #D0C9A5",\r
+":p.   c #D5CDAE",\r
+"<p.   c #D1C8A8",\r
+"[p.   c #A39C82",\r
+"}p.   c #A1AD95",\r
+"|p.   c #BCAA92",\r
+"1p.   c #8D7A6E",\r
+"2p.   c #868173",\r
+"3p.   c #7D765C",\r
+"4p.   c #9B8F85",\r
+"5p.   c #A18D83",\r
+"6p.   c #ACB5A4",\r
+"7p.   c #C0B79A",\r
+"8p.   c #C2B794",\r
+"9p.   c #B99A7B",\r
+"0p.   c #846244",\r
+"ap.   c #523E30",\r
+"bp.   c #675D47",\r
+"cp.   c #A08654",\r
+"dp.   c #B79262",\r
+"ep.   c #BC9562",\r
+"fp.   c #C0985D",\r
+"gp.   c #BB9C62",\r
+"hp.   c #BA9863",\r
+"ip.   c #BA9363",\r
+"jp.   c #B48D5C",\r
+"kp.   c #A97C4D",\r
+"lp.   c #A06C4B",\r
+"mp.   c #82583E",\r
+"np.   c #6B6A62",\r
+"op.   c #A3A18E",\r
+"pp.   c #B1B096",\r
+"qp.   c #BCB99E",\r
+"rp.   c #BAB9A2",\r
+"sp.   c #BEAB90",\r
+"tp.   c #AC8D7C",\r
+"up.   c #878A5F",\r
+"vp.   c #A9A488",\r
+"wp.   c #AAAC8F",\r
+"xp.   c #AEB28D",\r
+"yp.   c #A5AC83",\r
+"zp.   c #AAB491",\r
+"Ap.   c #C2BFA3",\r
+"Bp.   c #938C66",\r
+"Cp.   c #9E866B",\r
+"Dp.   c #97846F",\r
+"Ep.   c #827A5C",\r
+"Fp.   c #6A5F51",\r
+"Gp.   c #696A56",\r
+"Hp.   c #868B68",\r
+"Ip.   c #958465",\r
+"Jp.   c #7B7A5E",\r
+"Kp.   c #97836C",\r
+"Lp.   c #894A3B",\r
+"Mp.   c #585738",\r
+"Np.   c #948C63",\r
+"Op.   c #C9A577",\r
+"Pp.   c #D2B986",\r
+"Qp.   c #D6C094",\r
+"Rp.   c #D4C2A0",\r
+"Sp.   c #C6BC9D",\r
+"Tp.   c #C0BFA8",\r
+"Up.   c #D2CAA7",\r
+"Vp.   c #D7CB9F",\r
+"Wp.   c #CCB99B",\r
+"Xp.   c #B29A7F",\r
+"Yp.   c #C4BD9B",\r
+"Zp.   c #C9B293",\r
+"`p.   c #B49A7F",\r
+" q.   c #C0BB89",\r
+".q.   c #C9B586",\r
+"+q.   c #B0A579",\r
+"@q.   c #93866E",\r
+"#q.   c #8F938E",\r
+"$q.   c #B1A492",\r
+"%q.   c #A27B59",\r
+"&q.   c #5F5846",\r
+"*q.   c #666759",\r
+"=q.   c #7D8471",\r
+"-q.   c #A77168",\r
+";q.   c #694A2E",\r
+">q.   c #504D43",\r
+",q.   c #635856",\r
+"'q.   c #524F3E",\r
+")q.   c #606046",\r
+"!q.   c #8A815A",\r
+"~q.   c #887149",\r
+"{q.   c #786950",\r
+"]q.   c #7D6C5A",\r
+"^q.   c #887854",\r
+"/q.   c #906F53",\r
+"(q.   c #71584F",\r
+"_q.   c #956358",\r
+":q.   c #906E4C",\r
+"<q.   c #96584C",\r
+"[q.   c #6B3E27",\r
+"}q.   c #70563C",\r
+"|q.   c #90744D",\r
+"1q.   c #A4875B",\r
+"2q.   c #B49669",\r
+"3q.   c #C3A87A",\r
+"4q.   c #C5A877",\r
+"5q.   c #CAAE86",\r
+"6q.   c #CEB288",\r
+"7q.   c #D0B191",\r
+"8q.   c #D5BC92",\r
+"9q.   c #D6BB9A",\r
+"0q.   c #D5B992",\r
+"aq.   c #DAC19A",\r
+"bq.   c #D6C096",\r
+"cq.   c #D4BC95",\r
+"dq.   c #D5C197",\r
+"eq.   c #D7C59A",\r
+"fq.   c #D7BE96",\r
+"gq.   c #D3BC93",\r
+"hq.   c #D7BB92",\r
+"iq.   c #D6BB90",\r
+"jq.   c #D6BC95",\r
+"kq.   c #D3B288",\r
+"lq.   c #D2B285",\r
+"mq.   c #CFB284",\r
+"nq.   c #C8A57E",\r
+"oq.   c #C6A877",\r
+"pq.   c #C3A778",\r
+"qq.   c #BDA071",\r
+"rq.   c #BBA16D",\r
+"sq.   c #B69967",\r
+"tq.   c #A8753F",\r
+"uq.   c #A28341",\r
+"vq.   c #BF9359",\r
+"wq.   c #C8A05E",\r
+"xq.   c #CCA069",\r
+"yq.   c #CF9A5C",\r
+"zq.   c #CB9358",\r
+"Aq.   c #C0924E",\r
+"Bq.   c #B67C4B",\r
+"Cq.   c #884836",\r
+"Dq.   c #5B4731",\r
+"Eq.   c #82633E",\r
+"Fq.   c #7A5041",\r
+"Gq.   c #63513B",\r
+"Hq.   c #796231",\r
+"Iq.   c #98733E",\r
+"Jq.   c #AB8345",\r
+"Kq.   c #B98648",\r
+"Lq.   c #BA8A47",\r
+"Mq.   c #B5AB78",\r
+"Nq.   c #C3A89A",\r
+"Oq.   c #A18D7B",\r
+"Pq.   c #99A199",\r
+"Qq.   c #B58C76",\r
+"Rq.   c #82795F",\r
+"Sq.   c #A2AD9D",\r
+"Tq.   c #C7B6A3",\r
+"Uq.   c #A07266",\r
+"Vq.   c #67715D",\r
+"Wq.   c #A6A38D",\r
+"Xq.   c #B0AD94",\r
+"Yq.   c #B3A594",\r
+"Zq.   c #B0A38D",\r
+"`q.   c #B6A986",\r
+" r.   c #CBC8A1",\r
+".r.   c #D5CBA7",\r
+"+r.   c #D1CDAA",\r
+"@r.   c #CFCAA5",\r
+"#r.   c #D4C9A9",\r
+"$r.   c #CDBC9F",\r
+"%r.   c #8A7D70",\r
+"&r.   c #848778",\r
+"*r.   c #AF9D88",\r
+"=r.   c #816861",\r
+"-r.   c #727E6E",\r
+";r.   c #908D79",\r
+">r.   c #A89C91",\r
+",r.   c #9B8D8C",\r
+"'r.   c #ABB4A7",\r
+")r.   c #BBBA9D",\r
+"!r.   c #B8AE8F",\r
+"~r.   c #AE9A8D",\r
+"{r.   c #946756",\r
+"]r.   c #554232",\r
+"^r.   c #564230",\r
+"/r.   c #6F5F3D",\r
+"(r.   c #A1855A",\r
+"_r.   c #BC975B",\r
+":r.   c #B79866",\r
+"<r.   c #BA8F60",\r
+"[r.   c #B59864",\r
+"}r.   c #B2905C",\r
+"|r.   c #B38454",\r
+"1r.   c #AE8152",\r
+"2r.   c #9A603F",\r
+"3r.   c #7A5046",\r
+"4r.   c #8D877A",\r
+"5r.   c #9F9A93",\r
+"6r.   c #AD9995",\r
+"7r.   c #AF968D",\r
+"8r.   c #A07E6D",\r
+"9r.   c #9C8869",\r
+"0r.   c #9B8D5A",\r
+"ar.   c #8E8A66",\r
+"br.   c #8F8872",\r
+"cr.   c #9B836F",\r
+"dr.   c #99967D",\r
+"er.   c #A09E80",\r
+"fr.   c #ABA883",\r
+"gr.   c #B0AB93",\r
+"hr.   c #B2AC94",\r
+"ir.   c #9D846A",\r
+"jr.   c #7B574D",\r
+"kr.   c #5B4F41",\r
+"lr.   c #66603E",\r
+"mr.   c #7C7958",\r
+"nr.   c #978266",\r
+"or.   c #89775F",\r
+"pr.   c #63554D",\r
+"qr.   c #6D755B",\r
+"rr.   c #AB8773",\r
+"sr.   c #89523B",\r
+"tr.   c #7C784F",\r
+"ur.   c #C4A378",\r
+"vr.   c #D2B589",\r
+"wr.   c #D6C38F",\r
+"xr.   c #D8C6A2",\r
+"yr.   c #D3BEA2",\r
+"zr.   c #B8AB85",\r
+"Ar.   c #99987E",\r
+"Br.   c #BDB390",\r
+"Cr.   c #CDC198",\r
+"Dr.   c #CCBD9E",\r
+"Er.   c #B6906E",\r
+"Fr.   c #877758",\r
+"Gr.   c #988B70",\r
+"Hr.   c #A88F72",\r
+"Ir.   c #938C6A",\r
+"Jr.   c #BBBF97",\r
+"Kr.   c #D1CAA4",\r
+"Lr.   c #CCC49F",\r
+"Mr.   c #BFB589",\r
+"Nr.   c #A6A68B",\r
+"Or.   c #B79E8C",\r
+"Pr.   c #896247",\r
+"Qr.   c #565A44",\r
+"Rr.   c #727D5D",\r
+"Sr.   c #98986F",\r
+"Tr.   c #986C51",\r
+"Ur.   c #665037",\r
+"Vr.   c #594744",\r
+"Wr.   c #4B464A",\r
+"Xr.   c #5E5545",\r
+"Yr.   c #6B6245",\r
+"Zr.   c #936B5A",\r
+"`r.   c #734841",\r
+" s.   c #605D4A",\r
+".s.   c #805C4A",\r
+"+s.   c #70694A",\r
+"@s.   c #988160",\r
+"#s.   c #97724D",\r
+"$s.   c #9C684E",\r
+"%s.   c #755C3E",\r
+"&s.   c #866C45",\r
+"*s.   c #8A774A",\r
+"=s.   c #947545",\r
+"-s.   c #8F6A43",\r
+";s.   c #927A54",\r
+">s.   c #AE8D62",\r
+",s.   c #B59C76",\r
+"'s.   c #BEA578",\r
+")s.   c #C8A886",\r
+"!s.   c #CDAF87",\r
+"~s.   c #D0B690",\r
+"{s.   c #CDB18E",\r
+"]s.   c #D0B588",\r
+"^s.   c #D0BA8F",\r
+"/s.   c #D5B88C",\r
+"(s.   c #D6BA98",\r
+"_s.   c #D3BC95",\r
+":s.   c #D2BD9B",\r
+"<s.   c #D2BE94",\r
+"[s.   c #D8C399",\r
+"}s.   c #D5B48F",\r
+"|s.   c #D4BB92",\r
+"1s.   c #D5BB93",\r
+"2s.   c #D6B691",\r
+"3s.   c #D3B795",\r
+"4s.   c #CEB98E",\r
+"5s.   c #D0B387",\r
+"6s.   c #CEB085",\r
+"7s.   c #CFB080",\r
+"8s.   c #CBAC81",\r
+"9s.   c #C6A97C",\r
+"0s.   c #C3A57C",\r
+"as.   c #AC8B62",\r
+"bs.   c #AF9871",\r
+"cs.   c #AC8066",\r
+"ds.   c #946F42",\r
+"es.   c #AE8E42",\r
+"fs.   c #BD9358",\r
+"gs.   c #C1985A",\r
+"hs.   c #CD9D64",\r
+"is.   c #CE9F5D",\r
+"js.   c #C7955D",\r
+"ks.   c #BF8A58",\r
+"ls.   c #AF7543",\r
+"ms.   c #744033",\r
+"ns.   c #4C452C",\r
+"os.   c #72603B",\r
+"ps.   c #826840",\r
+"qs.   c #61543A",\r
+"rs.   c #615437",\r
+"ss.   c #7F6940",\r
+"ts.   c #9E834B",\r
+"us.   c #B7844F",\r
+"vs.   c #B68A49",\r
+"ws.   c #B0AB77",\r
+"xs.   c #C0B89C",\r
+"ys.   c #ACA485",\r
+"zs.   c #BFA17D",\r
+"As.   c #948E63",\r
+"Bs.   c #ACB4A4",\r
+"Cs.   c #CABBA7",\r
+"Ds.   c #A78E77",\r
+"Es.   c #82917B",\r
+"Fs.   c #8F967A",\r
+"Gs.   c #A79B86",\r
+"Hs.   c #9C9B85",\r
+"Is.   c #928F76",\r
+"Js.   c #9DA78F",\r
+"Ks.   c #C7C5A2",\r
+"Ls.   c #D3CBA7",\r
+"Ms.   c #D2CCA6",\r
+"Ns.   c #D4C9AE",\r
+"Os.   c #CCBD9D",\r
+"Ps.   c #AE8979",\r
+"Qs.   c #796257",\r
+"Rs.   c #706E69",\r
+"Ss.   c #968174",\r
+"Ts.   c #7E7D6A",\r
+"Us.   c #949B78",\r
+"Vs.   c #9CA08E",\r
+"Ws.   c #B1A79F",\r
+"Xs.   c #AA9F96",\r
+"Ys.   c #B3A69C",\r
+"Zs.   c #B0A488",\r
+"`s.   c #9B947A",\r
+" t.   c #9D665B",\r
+".t.   c #4C3B30",\r
+"+t.   c #52342E",\r
+"@t.   c #4F402B",\r
+"#t.   c #706140",\r
+"$t.   c #A88252",\r
+"%t.   c #B79360",\r
+"&t.   c #BB9B63",\r
+"*t.   c #B99867",\r
+"=t.   c #B29D71",\r
+"-t.   c #B69966",\r
+";t.   c #B9915B",\r
+">t.   c #B28A52",\r
+",t.   c #A87E4A",\r
+"'t.   c #996A41",\r
+")t.   c #6B5547",\r
+"!t.   c #6C5B4F",\r
+"~t.   c #7C6550",\r
+"{t.   c #78544E",\r
+"]t.   c #665046",\r
+"^t.   c #71785A",\r
+"/t.   c #867258",\r
+"(t.   c #655D48",\r
+"_t.   c #5B6748",\r
+":t.   c #7F825C",\r
+"<t.   c #928771",\r
+"[t.   c #82765E",\r
+"}t.   c #88826D",\r
+"|t.   c #929682",\r
+"1t.   c #A79D7F",\r
+"2t.   c #B3AB87",\r
+"3t.   c #AB9D68",\r
+"4t.   c #8C8758",\r
+"5t.   c #7A7D67",\r
+"6t.   c #9D8D73",\r
+"7t.   c #978062",\r
+"8t.   c #827759",\r
+"9t.   c #7E6D4D",\r
+"0t.   c #768267",\r
+"at.   c #9E7961",\r
+"bt.   c #735B37",\r
+"ct.   c #9F8A68",\r
+"dt.   c #BBA27B",\r
+"et.   c #C2A67C",\r
+"ft.   c #C5A888",\r
+"gt.   c #CFB58A",\r
+"ht.   c #D6BF8E",\r
+"it.   c #AE9679",\r
+"jt.   c #B1AB8B",\r
+"kt.   c #A29D68",\r
+"lt.   c #B9AD7F",\r
+"mt.   c #BBB288",\r
+"nt.   c #B4AE84",\r
+"ot.   c #AA9473",\r
+"pt.   c #908A66",\r
+"qt.   c #AEAB7F",\r
+"rt.   c #BDBE98",\r
+"st.   c #D1CDA8",\r
+"tt.   c #D5D1B1",\r
+"ut.   c #D4CFB0",\r
+"vt.   c #D3CBA9",\r
+"wt.   c #CEC3A1",\r
+"xt.   c #C69B86",\r
+"yt.   c #7C5E3F",\r
+"zt.   c #687E6B",\r
+"At.   c #A7A376",\r
+"Bt.   c #AE8E68",\r
+"Ct.   c #765944",\r
+"Dt.   c #634438",\r
+"Et.   c #4D4939",\r
+"Ft.   c #575B4D",\r
+"Gt.   c #7D6643",\r
+"Ht.   c #705E43",\r
+"It.   c #755840",\r
+"Jt.   c #63503A",\r
+"Kt.   c #67624A",\r
+"Lt.   c #735841",\r
+"Mt.   c #766553",\r
+"Nt.   c #A5815D",\r
+"Ot.   c #B08A61",\r
+"Pt.   c #B6936F",\r
+"Qt.   c #AE8752",\r
+"Rt.   c #AD9257",\r
+"St.   c #B79B6A",\r
+"Tt.   c #C19966",\r
+"Ut.   c #B57152",\r
+"Vt.   c #967150",\r
+"Wt.   c #A48761",\r
+"Xt.   c #B19571",\r
+"Yt.   c #C5AB78",\r
+"Zt.   c #C9A87E",\r
+"`t.   c #CFB78D",\r
+" u.   c #CEB388",\r
+".u.   c #D0BE92",\r
+"+u.   c #D2BB91",\r
+"@u.   c #D9BB8C",\r
+"#u.   c #D7BE90",\r
+"$u.   c #D1BE93",\r
+"%u.   c #D1BE94",\r
+"&u.   c #D5BF9D",\r
+"*u.   c #D5BD95",\r
+"=u.   c #D3B893",\r
+"-u.   c #D3B993",\r
+";u.   c #D3BE90",\r
+">u.   c #D7B993",\r
+",u.   c #D6B78B",\r
+"'u.   c #D3BA8E",\r
+")u.   c #D1B38B",\r
+"!u.   c #CEAD8A",\r
+"~u.   c #D0B085",\r
+"{u.   c #CEAB7C",\r
+"]u.   c #C69B7A",\r
+"^u.   c #B89370",\r
+"/u.   c #896847",\r
+"(u.   c #958062",\r
+"_u.   c #92694A",\r
+":u.   c #936E3F",\r
+"<u.   c #B4904E",\r
+"[u.   c #BB9454",\r
+"}u.   c #C89B62",\r
+"|u.   c #CAA068",\r
+"1u.   c #C89B4F",\r
+"2u.   c #C19155",\r
+"3u.   c #B7874C",\r
+"4u.   c #A6683C",\r
+"5u.   c #70573F",\r
+"6u.   c #71775A",\r
+"7u.   c #AAA882",\r
+"8u.   c #B1AB84",\r
+"9u.   c #ADA884",\r
+"0u.   c #A69279",\r
+"au.   c #9E8669",\r
+"bu.   c #8E7D62",\r
+"cu.   c #98856B",\r
+"du.   c #9F9371",\r
+"eu.   c #AAAD8F",\r
+"fu.   c #C2C0A4",\r
+"gu.   c #C2B297",\r
+"hu.   c #B9B9A5",\r
+"iu.   c #CBB393",\r
+"ju.   c #A29F75",\r
+"ku.   c #B6BEA6",\r
+"lu.   c #CDC7AB",\r
+"mu.   c #C1B091",\r
+"nu.   c #A4A790",\r
+"ou.   c #B0B198",\r
+"pu.   c #A9B096",\r
+"qu.   c #BDB99E",\r
+"ru.   c #C1BA9B",\r
+"su.   c #C1B491",\r
+"tu.   c #BCB996",\r
+"uu.   c #CBC7A2",\r
+"vu.   c #D2CDAE",\r
+"wu.   c #D6CFAA",\r
+"xu.   c #D4CCAE",\r
+"yu.   c #D3C6A9",\r
+"zu.   c #BFA58D",\r
+"Au.   c #8B6153",\r
+"Bu.   c #5C6E65",\r
+"Cu.   c #7E7367",\r
+"Du.   c #6C7B68",\r
+"Eu.   c #989180",\r
+"Fu.   c #ACA798",\r
+"Gu.   c #C4B4A0",\r
+"Hu.   c #BC997D",\r
+"Iu.   c #878B73",\r
+"Ju.   c #9D8682",\r
+"Ku.   c #7C7569",\r
+"Lu.   c #9C8374",\r
+"Mu.   c #705040",\r
+"Nu.   c #504A36",\r
+"Ou.   c #746F52",\r
+"Pu.   c #6F563E",\r
+"Qu.   c #785F40",\r
+"Ru.   c #977952",\r
+"Su.   c #AD8A57",\r
+"Tu.   c #AE925B",\r
+"Uu.   c #B49063",\r
+"Vu.   c #B99761",\r
+"Wu.   c #BA9D65",\r
+"Xu.   c #B08C5F",\r
+"Yu.   c #AA7E53",\r
+"Zu.   c #987756",\r
+"`u.   c #665042",\r
+" v.   c #665640",\r
+".v.   c #6A6448",\r
+"+v.   c #644943",\r
+"@v.   c #585344",\r
+"#v.   c #727D63",\r
+"$v.   c #836F5B",\r
+"%v.   c #666D4B",\r
+"&v.   c #80956D",\r
+"*v.   c #9DA17C",\r
+"=v.   c #A59176",\r
+"-v.   c #9B8D61",\r
+";v.   c #878B69",\r
+">v.   c #99977C",\r
+",v.   c #BBAF8F",\r
+"'v.   c #C4B78F",\r
+")v.   c #B09861",\r
+"!v.   c #83835E",\r
+"~v.   c #8A8D6D",\r
+"{v.   c #8D836B",\r
+"]v.   c #7F7968",\r
+"^v.   c #867559",\r
+"/v.   c #938D6A",\r
+"(v.   c #AE8764",\r
+"_v.   c #937543",\r
+":v.   c #BBA87B",\r
+"<v.   c #C4AF81",\r
+"[v.   c #CCB894",\r
+"}v.   c #CBB590",\r
+"|v.   c #D2B88B",\r
+"1v.   c #BF8C5F",\r
+"2v.   c #764A3F",\r
+"3v.   c #756862",\r
+"4v.   c #A39D83",\r
+"5v.   c #B4B688",\r
+"6v.   c #BDB491",\r
+"7v.   c #C0A980",\r
+"8v.   c #BDAD82",\r
+"9v.   c #BCAC86",\r
+"0v.   c #BAB08A",\r
+"av.   c #C5BE99",\r
+"bv.   c #C8C6A5",\r
+"cv.   c #D6D0AA",\r
+"dv.   c #D6D1AE",\r
+"ev.   c #D2CDAD",\r
+"fv.   c #D2CCA7",\r
+"gv.   c #D5C8A6",\r
+"hv.   c #C99E86",\r
+"iv.   c #7C5547",\r
+"jv.   c #708177",\r
+"kv.   c #B09C79",\r
+"lv.   c #AA8868",\r
+"mv.   c #765A4C",\r
+"nv.   c #6A5842",\r
+"ov.   c #6A6A57",\r
+"pv.   c #796B50",\r
+"qv.   c #796E53",\r
+"rv.   c #7E6C51",\r
+"sv.   c #6D5D48",\r
+"tv.   c #715147",\r
+"uv.   c #5D4140",\r
+"vv.   c #594C3D",\r
+"wv.   c #857363",\r
+"xv.   c #AF785E",\r
+"yv.   c #AE7850",\r
+"zv.   c #B48C6F",\r
+"Av.   c #BC9566",\r
+"Bv.   c #BA956B",\r
+"Cv.   c #C3996B",\r
+"Dv.   c #C5A065",\r
+"Ev.   c #C08E5F",\r
+"Fv.   c #A26941",\r
+"Gv.   c #A1815E",\r
+"Hv.   c #A78D70",\r
+"Iv.   c #C6AA7F",\r
+"Jv.   c #C4A87E",\r
+"Kv.   c #C5AC7F",\r
+"Lv.   c #CFB282",\r
+"Mv.   c #CEAE8A",\r
+"Nv.   c #CDBA95",\r
+"Ov.   c #C5B494",\r
+"Pv.   c #D5B792",\r
+"Qv.   c #D1B98F",\r
+"Rv.   c #D3B88F",\r
+"Sv.   c #D0B996",\r
+"Tv.   c #D4BC9B",\r
+"Uv.   c #D3BE96",\r
+"Vv.   c #D3BB94",\r
+"Wv.   c #D1BD90",\r
+"Xv.   c #D4BF97",\r
+"Yv.   c #D4B790",\r
+"Zv.   c #D4B688",\r
+"`v.   c #D3B98E",\r
+" w.   c #CDBA8A",\r
+".w.   c #CDB38F",\r
+"+w.   c #CFAA81",\r
+"@w.   c #C9A77B",\r
+"#w.   c #C3977E",\r
+"$w.   c #B07967",\r
+"%w.   c #7E744E",\r
+"&w.   c #968967",\r
+"*w.   c #9A7543",\r
+"=w.   c #A1753E",\r
+"-w.   c #BA8F50",\r
+";w.   c #C49656",\r
+">w.   c #C89768",\r
+",w.   c #CB9A68",\r
+"'w.   c #CA9E5F",\r
+")w.   c #C09261",\r
+"!w.   c #AD814E",\r
+"~w.   c #9F754C",\r
+"{w.   c #8D8E7E",\r
+"]w.   c #ADAC98",\r
+"^w.   c #C5B893",\r
+"/w.   c #C2B493",\r
+"(w.   c #C1B290",\r
+"_w.   c #9D815E",\r
+":w.   c #756C4C",\r
+"<w.   c #625E56",\r
+"[w.   c #606055",\r
+"}w.   c #7F917D",\r
+"|w.   c #BEBEA0",\r
+"1w.   c #CAC39E",\r
+"2w.   c #C6C6AB",\r
+"3w.   c #CFC3A1",\r
+"4w.   c #C8BE8B",\r
+"5w.   c #CBC6A7",\r
+"6w.   c #D1CCAB",\r
+"7w.   c #CABE9D",\r
+"8w.   c #BEB89F",\r
+"9w.   c #C6BEA1",\r
+"0w.   c #BAAC9F",\r
+"aw.   c #BFB79F",\r
+"bw.   c #C0B99D",\r
+"cw.   c #C8AD82",\r
+"dw.   c #C8C29A",\r
+"ew.   c #D4CBAA",\r
+"fw.   c #D6CCA9",\r
+"gw.   c #D5CBAE",\r
+"hw.   c #D0C2A6",\r
+"iw.   c #B9A081",\r
+"jw.   c #82725B",\r
+"kw.   c #676150",\r
+"lw.   c #6A7F6D",\r
+"mw.   c #908C6E",\r
+"nw.   c #888E6E",\r
+"ow.   c #A7A088",\r
+"pw.   c #A67D73",\r
+"qw.   c #918A82",\r
+"rw.   c #C5BFA5",\r
+"sw.   c #C8BA98",\r
+"tw.   c #B7B895",\r
+"uw.   c #B9A691",\r
+"vw.   c #948971",\r
+"ww.   c #9FA08D",\r
+"xw.   c #7E574F",\r
+"yw.   c #786C65",\r
+"zw.   c #846F5C",\r
+"Aw.   c #825A41",\r
+"Bw.   c #795E45",\r
+"Cw.   c #918057",\r
+"Dw.   c #AF8B5C",\r
+"Ew.   c #B79558",\r
+"Fw.   c #B69060",\r
+"Gw.   c #A17658",\r
+"Hw.   c #796B52",\r
+"Iw.   c #706157",\r
+"Jw.   c #625C4B",\r
+"Kw.   c #687360",\r
+"Lw.   c #8B7B61",\r
+"Mw.   c #7A5D4F",\r
+"Nw.   c #6A7B64",\r
+"Ow.   c #9FA382",\r
+"Pw.   c #A68F7A",\r
+"Qw.   c #84715A",\r
+"Rw.   c #737B64",\r
+"Sw.   c #A2826F",\r
+"Tw.   c #8E7D5F",\r
+"Uw.   c #A09D75",\r
+"Vw.   c #A19B7C",\r
+"Ww.   c #9B7769",\r
+"Xw.   c #6D5B53",\r
+"Yw.   c #B19F84",\r
+"Zw.   c #B7B093",\r
+"`w.   c #BFAC83",\r
+" x.   c #B3AA7F",\r
+".x.   c #B9AC85",\r
+"+x.   c #B8A683",\r
+"@x.   c #A4835B",\r
+"#x.   c #A37D66",\r
+"$x.   c #967758",\r
+"%x.   c #9D8D57",\r
+"&x.   c #B49A78",\r
+"*x.   c #C4A77D",\r
+"=x.   c #CDB483",\r
+"-x.   c #D4B58D",\r
+";x.   c #D3B787",\r
+">x.   c #BA875A",\r
+",x.   c #8A5A3B",\r
+"'x.   c #614D3D",\r
+")x.   c #7A7161",\r
+"!x.   c #C3AF7E",\r
+"~x.   c #C1AF8E",\r
+"{x.   c #C5B08D",\r
+"]x.   c #BFB090",\r
+"^x.   c #BDBFAB",\r
+"/x.   c #D6CFB1",\r
+"(x.   c #D9D1AE",\r
+"_x.   c #D5D2A6",\r
+":x.   c #D3CDA6",\r
+"<x.   c #D1C6A5",\r
+"[x.   c #CA9983",\r
+"}x.   c #7B5A40",\r
+"|x.   c #6B7B6C",\r
+"1x.   c #B79579",\r
+"2x.   c #A66C5A",\r
+"3x.   c #5A4D3C",\r
+"4x.   c #616154",\r
+"5x.   c #95845B",\r
+"6x.   c #958048",\r
+"7x.   c #88795F",\r
+"8x.   c #897354",\r
+"9x.   c #774D4B",\r
+"0x.   c #542A33",\r
+"ax.   c #392C30",\r
+"bx.   c #424837",\r
+"cx.   c #927560",\r
+"dx.   c #A66744",\r
+"ex.   c #A08044",\r
+"fx.   c #B9AA70",\r
+"gx.   c #C79B71",\r
+"hx.   c #CA9368",\r
+"ix.   c #C09F68",\r
+"jx.   c #C0A67D",\r
+"kx.   c #CFA179",\r
+"lx.   c #BF7A58",\r
+"mx.   c #956A49",\r
+"nx.   c #A6855E",\r
+"ox.   c #BA9A66",\r
+"px.   c #B89B7C",\r
+"qx.   c #CBA980",\r
+"rx.   c #CFAF8D",\r
+"sx.   c #D6B687",\r
+"tx.   c #CEB089",\r
+"ux.   c #C9AE91",\r
+"vx.   c #A67E73",\r
+"wx.   c #7C6762",\r
+"xx.   c #828C7F",\r
+"yx.   c #B9B193",\r
+"zx.   c #CEBC92",\r
+"Ax.   c #D2C093",\r
+"Bx.   c #D5BB95",\r
+"Cx.   c #D7BB98",\r
+"Dx.   c #D4BD8D",\r
+"Ex.   c #D5BD92",\r
+"Fx.   c #D3B992",\r
+"Gx.   c #CFB796",\r
+"Hx.   c #D1B68E",\r
+"Ix.   c #D3C69C",\r
+"Jx.   c #D4C5AA",\r
+"Kx.   c #D2B292",\r
+"Lx.   c #CEA96F",\r
+"Mx.   c #C5A57A",\r
+"Nx.   c #B1875C",\r
+"Ox.   c #84805C",\r
+"Px.   c #907668",\r
+"Qx.   c #89754F",\r
+"Rx.   c #A68744",\r
+"Sx.   c #BA8A46",\r
+"Tx.   c #C5984D",\r
+"Ux.   c #C79961",\r
+"Vx.   c #CA975C",\r
+"Wx.   c #CB905F",\r
+"Xx.   c #BE8B5D",\r
+"Yx.   c #AF744A",\r
+"Zx.   c #9B6242",\r
+"`x.   c #798974",\r
+" y.   c #AFAF95",\r
+".y.   c #BEAB8C",\r
+"+y.   c #B9A985",\r
+"@y.   c #B6917E",\r
+"#y.   c #9F926C",\r
+"$y.   c #A4A47E",\r
+"%y.   c #AFA17E",\r
+"&y.   c #978561",\r
+"*y.   c #8A927C",\r
+"=y.   c #ADB399",\r
+"-y.   c #D0CCA6",\r
+";y.   c #D0C8A4",\r
+">y.   c #D1C89F",\r
+",y.   c #CCC5A7",\r
+"'y.   c #CEC6A6",\r
+")y.   c #CDC6AB",\r
+"!y.   c #C8C1A6",\r
+"~y.   c #C6C49D",\r
+"{y.   c #CAC1A2",\r
+"]y.   c #BDB6A0",\r
+"^y.   c #C1BBA2",\r
+"/y.   c #CDB797",\r
+"(y.   c #C9B88B",\r
+"_y.   c #C7B694",\r
+":y.   c #C5B798",\r
+"<y.   c #B8B59B",\r
+"[y.   c #C6B895",\r
+"}y.   c #C0B48A",\r
+"|y.   c #ADA280",\r
+"1y.   c #B0A078",\r
+"2y.   c #A7A487",\r
+"3y.   c #A4A083",\r
+"4y.   c #958C6E",\r
+"5y.   c #7C6F5A",\r
+"6y.   c #718473",\r
+"7y.   c #BAB8A0",\r
+"8y.   c #C9B996",\r
+"9y.   c #BFAF91",\r
+"0y.   c #B39D85",\r
+"ay.   c #9A8971",\r
+"by.   c #A5A68F",\r
+"cy.   c #AE927D",\r
+"dy.   c #816A5C",\r
+"ey.   c #735D50",\r
+"fy.   c #5C5944",\r
+"gy.   c #776752",\r
+"hy.   c #7A5F49",\r
+"iy.   c #64553F",\r
+"jy.   c #907C52",\r
+"ky.   c #A89159",\r
+"ly.   c #AC8957",\r
+"my.   c #9D7758",\r
+"ny.   c #705448",\r
+"oy.   c #525644",\r
+"py.   c #71745D",\r
+"qy.   c #898C65",\r
+"ry.   c #898A77",\r
+"sy.   c #90765C",\r
+"ty.   c #767858",\r
+"uy.   c #909E92",\r
+"vy.   c #B6B69A",\r
+"wy.   c #B5B195",\r
+"xy.   c #8B8A6A",\r
+"yy.   c #866757",\r
+"zy.   c #5E664E",\r
+"Ay.   c #847E75",\r
+"By.   c #7A5D59",\r
+"Cy.   c #786E5B",\r
+"Dy.   c #866C56",\r
+"Ey.   c #AB9A73",\r
+"Fy.   c #A98A79",\r
+"Gy.   c #9E917C",\r
+"Hy.   c #B2A98E",\r
+"Iy.   c #B1A58A",\r
+"Jy.   c #B59B83",\r
+"Ky.   c #9B7B6A",\r
+"Ly.   c #786945",\r
+"My.   c #8A725A",\r
+"Ny.   c #857451",\r
+"Oy.   c #A59861",\r
+"Py.   c #C3A67E",\r
+"Qy.   c #CCAA7D",\r
+"Ry.   c #CEB589",\r
+"Sy.   c #D4BB90",\r
+"Ty.   c #D7BA8B",\r
+"Uy.   c #D8B88F",\r
+"Vy.   c #D9BC89",\r
+"Wy.   c #D2B682",\r
+"Xy.   c #C59F71",\r
+"Yy.   c #9B6945",\r
+"Zy.   c #643D38",\r
+"`y.   c #60594B",\r
+" z.   c #8E886E",\r
+".z.   c #B6A279",\r
+"+z.   c #A09F81",\r
+"@z.   c #BBA88A",\r
+"#z.   c #C3B599",\r
+"$z.   c #C7C5AC",\r
+"%z.   c #D9CFAD",\r
+"&z.   c #D6CEA9",\r
+"*z.   c #CDC7A7",\r
+"=z.   c #CCC3A4",\r
+"-z.   c #C69A80",\r
+";z.   c #805840",\r
+">z.   c #6E7F5B",\r
+",z.   c #B78E6E",\r
+"'z.   c #895046",\r
+")z.   c #484F3D",\r
+"!z.   c #76715D",\r
+"~z.   c #85745E",\r
+"{z.   c #79604E",\r
+"]z.   c #726750",\r
+"^z.   c #77554B",\r
+"/z.   c #512F31",\r
+"(z.   c #372428",\r
+"_z.   c #30292B",\r
+":z.   c #3B3D33",\r
+"<z.   c #805F4C",\r
+"[z.   c #906D51",\r
+"}z.   c #B29D65",\r
+"|z.   c #CDAC84",\r
+"1z.   c #CD926D",\r
+"2z.   c #C09258",\r
+"3z.   c #BC9D61",\r
+"4z.   c #C7A47B",\r
+"5z.   c #C49873",\r
+"6z.   c #BD8B68",\r
+"7z.   c #9C724A",\r
+"8z.   c #958454",\r
+"9z.   c #B29365",\r
+"0z.   c #BB9770",\r
+"az.   c #BCA671",\r
+"bz.   c #D1B382",\r
+"cz.   c #D1B687",\r
+"dz.   c #CDB393",\r
+"ez.   c #9A7267",\r
+"fz.   c #656856",\r
+"gz.   c #8C997D",\r
+"hz.   c #BEB593",\r
+"iz.   c #D0C297",\r
+"jz.   c #D5C394",\r
+"kz.   c #D3BD95",\r
+"lz.   c #D5C097",\r
+"mz.   c #D2BB95",\r
+"nz.   c #D5B993",\r
+"oz.   c #D5BA8C",\r
+"pz.   c #D4B587",\r
+"qz.   c #D2BF7F",\r
+"rz.   c #CFBF9D",\r
+"sz.   c #CCBBA2",\r
+"tz.   c #BEB2A8",\r
+"uz.   c #C5BCAB",\r
+"vz.   c #CEA480",\r
+"wz.   c #C2A270",\r
+"xz.   c #AB7E58",\r
+"yz.   c #7C6A48",\r
+"zz.   c #836147",\r
+"Az.   c #766640",\r
+"Bz.   c #A87E4D",\r
+"Cz.   c #BB8F4B",\r
+"Dz.   c #C29854",\r
+"Ez.   c #C89D68",\r
+"Fz.   c #CE9959",\r
+"Gz.   c #CB9156",\r
+"Hz.   c #BE874D",\r
+"Iz.   c #B5783C",\r
+"Jz.   c #896D43",\r
+"Kz.   c #96A487",\r
+"Lz.   c #C4BB96",\r
+"Mz.   c #CAB897",\r
+"Nz.   c #BBB392",\r
+"Oz.   c #B0A48C",\r
+"Pz.   c #AE9481",\r
+"Qz.   c #A4966C",\r
+"Rz.   c #BCAD8B",\r
+"Sz.   c #B9A783",\r
+"Tz.   c #AE9F7A",\r
+"Uz.   c #AB9377",\r
+"Vz.   c #A9A686",\r
+"Wz.   c #CEC2A6",\r
+"Xz.   c #CFC5A8",\r
+"Yz.   c #CCC1A3",\r
+"Zz.   c #C3B698",\r
+"`z.   c #AC9E85",\r
+" A.   c #BDA996",\r
+".A.   c #B9AE90",\r
+"+A.   c #C3BEA1",\r
+"@A.   c #CCBDA3",\r
+"#A.   c #BCA593",\r
+"$A.   c #B69F8E",\r
+"%A.   c #B6907B",\r
+"&A.   c #999074",\r
+"*A.   c #8D7D68",\r
+"=A.   c #897F5D",\r
+"-A.   c #978E6B",\r
+";A.   c #A09A83",\r
+">A.   c #BAA28C",\r
+",A.   c #A8A48A",\r
+"'A.   c #A8A685",\r
+")A.   c #BAB481",\r
+"!A.   c #B2B08A",\r
+"~A.   c #ACB486",\r
+"{A.   c #9B9373",\r
+"]A.   c #8D8365",\r
+"^A.   c #909474",\r
+"/A.   c #9EA481",\r
+"(A.   c #9F8164",\r
+"_A.   c #7D6752",\r
+":A.   c #6C6B52",\r
+"<A.   c #9A9C76",\r
+"[A.   c #B4B494",\r
+"}A.   c #C6B48D",\r
+"|A.   c #B59C78",\r
+"1A.   c #A29068",\r
+"2A.   c #696852",\r
+"3A.   c #837356",\r
+"4A.   c #907448",\r
+"5A.   c #90884B",\r
+"6A.   c #B29B55",\r
+"7A.   c #A37759",\r
+"8A.   c #5F483F",\r
+"9A.   c #4A4B3F",\r
+"0A.   c #5C6B4F",\r
+"aA.   c #878C6D",\r
+"bA.   c #87805C",\r
+"cA.   c #897761",\r
+"dA.   c #5F4E4B",\r
+"eA.   c #4F574C",\r
+"fA.   c #8B8975",\r
+"gA.   c #9FA18D",\r
+"hA.   c #ADB19B",\r
+"iA.   c #B9A288",\r
+"jA.   c #8A7259",\r
+"kA.   c #74765E",\r
+"lA.   c #8E916B",\r
+"mA.   c #9E8E79",\r
+"nA.   c #766159",\r
+"oA.   c #72775B",\r
+"pA.   c #968C7D",\r
+"qA.   c #B2A780",\r
+"rA.   c #95694D",\r
+"sA.   c #5A5F50",\r
+"tA.   c #929D81",\r
+"uA.   c #BBB187",\r
+"vA.   c #B5B092",\r
+"wA.   c #AE957A",\r
+"xA.   c #987262",\r
+"yA.   c #A48661",\r
+"zA.   c #BF9E70",\r
+"AA.   c #C9A97B",\r
+"BA.   c #D5B88B",\r
+"CA.   c #DABB92",\r
+"DA.   c #D3B293",\r
+"EA.   c #D4AB8A",\r
+"FA.   c #D1B384",\r
+"GA.   c #CCB387",\r
+"HA.   c #C8A268",\r
+"IA.   c #9D5A48",\r
+"JA.   c #51322D",\r
+"KA.   c #433C37",\r
+"LA.   c #5D5C52",\r
+"MA.   c #93947A",\r
+"NA.   c #A8A693",\r
+"OA.   c #AC9C85",\r
+"PA.   c #C2AE97",\r
+"QA.   c #C0AC94",\r
+"RA.   c #BBAB8E",\r
+"SA.   c #B7AE8B",\r
+"TA.   c #BF9784",\r
+"UA.   c #88643F",\r
+"VA.   c #757557",\r
+"WA.   c #A27561",\r
+"XA.   c #6F5539",\r
+"YA.   c #716B4F",\r
+"ZA.   c #8A7A5B",\r
+"`A.   c #837558",\r
+" B.   c #7E6E4B",\r
+".B.   c #625146",\r
+"+B.   c #5F5343",\r
+"@B.   c #706A48",\r
+"#B.   c #634E37",\r
+"$B.   c #4D4130",\r
+"%B.   c #484636",\r
+"&B.   c #77815A",\r
+"*B.   c #B89B72",\r
+"=B.   c #C09570",\r
+"-B.   c #A96F5E",\r
+";B.   c #A37C51",\r
+">B.   c #CB9A74",\r
+",B.   c #C3A075",\r
+"'B.   c #BB9C73",\r
+")B.   c #C0986C",\r
+"!B.   c #9A6651",\r
+"~B.   c #706543",\r
+"{B.   c #A99068",\r
+"]B.   c #B99E74",\r
+"^B.   c #C1A276",\r
+"/B.   c #C7A980",\r
+"(B.   c #D1AC73",\r
+"_B.   c #CDA971",\r
+":B.   c #CDB68A",\r
+"<B.   c #C79F7C",\r
+"[B.   c #887462",\r
+"}B.   c #818F80",\r
+"|B.   c #B6AF94",\r
+"1B.   c #C0B599",\r
+"2B.   c #CCBD99",\r
+"3B.   c #CCB48E",\r
+"4B.   c #BDA583",\r
+"5B.   c #B0AE8A",\r
+"6B.   c #C5B491",\r
+"7B.   c #D0B893",\r
+"8B.   c #D1B985",\r
+"9B.   c #D5B791",\r
+"0B.   c #D3BC90",\r
+"aB.   c #CAA992",\r
+"bB.   c #C0A78C",\r
+"cB.   c #A2997D",\r
+"dB.   c #ACAD8F",\r
+"eB.   c #D1C9A9",\r
+"fB.   c #D3C1A5",\r
+"gB.   c #C49A7C",\r
+"hB.   c #AB845C",\r
+"iB.   c #857452",\r
+"jB.   c #856945",\r
+"kB.   c #776C3E",\r
+"lB.   c #B18749",\r
+"mB.   c #BE914D",\r
+"nB.   c #C69459",\r
+"oB.   c #C8A464",\r
+"pB.   c #CCA161",\r
+"qB.   c #CB9056",\r
+"rB.   c #BF8853",\r
+"sB.   c #AC7647",\r
+"tB.   c #9B8062",\r
+"uB.   c #B0B09C",\r
+"vB.   c #CABB9A",\r
+"wB.   c #C7B99C",\r
+"xB.   c #C7B59B",\r
+"yB.   c #BE9787",\r
+"zB.   c #9C8671",\r
+"AB.   c #98876F",\r
+"BB.   c #97806F",\r
+"CB.   c #805942",\r
+"DB.   c #7F7257",\r
+"EB.   c #B2A482",\r
+"FB.   c #B4AB92",\r
+"GB.   c #B69E90",\r
+"HB.   c #9F8273",\r
+"IB.   c #837165",\r
+"JB.   c #67634F",\r
+"KB.   c #637161",\r
+"LB.   c #988373",\r
+"MB.   c #837560",\r
+"NB.   c #868376",\r
+"OB.   c #9F8E70",\r
+"PB.   c #9A8B6E",\r
+"QB.   c #8B9077",\r
+"RB.   c #9A9C7B",\r
+"SB.   c #AFA984",\r
+"TB.   c #9A9C82",\r
+"UB.   c #AEA88B",\r
+"VB.   c #B39486",\r
+"WB.   c #A59481",\r
+"XB.   c #9F8B7F",\r
+"YB.   c #8B6D63",\r
+"ZB.   c #807D6D",\r
+"`B.   c #939A7F",\r
+" C.   c #888E70",\r
+".C.   c #8A7866",\r
+"+C.   c #7C6D59",\r
+"@C.   c #69674A",\r
+"#C.   c #677359",\r
+"$C.   c #959565",\r
+"%C.   c #9CA178",\r
+"&C.   c #C5BC97",\r
+"*C.   c #CDB894",\r
+"=C.   c #CDBD8D",\r
+"-C.   c #CCBE93",\r
+";C.   c #C2BA84",\r
+">C.   c #C4AE79",\r
+",C.   c #B6A76A",\r
+"'C.   c #ADA46E",\r
+")C.   c #BFAB7B",\r
+"!C.   c #BAA479",\r
+"~C.   c #A37C5C",\r
+"{C.   c #6F4A3F",\r
+"]C.   c #3E423F",\r
+"^C.   c #556246",\r
+"/C.   c #7F8A69",\r
+"(C.   c #8E8E69",\r
+"_C.   c #7F7061",\r
+":C.   c #5F5454",\r
+"<C.   c #3E3534",\r
+"[C.   c #37352E",\r
+"}C.   c #545545",\r
+"|C.   c #738066",\r
+"1C.   c #A08D85",\r
+"2C.   c #876C59",\r
+"3C.   c #646F56",\r
+"4C.   c #7F8776",\r
+"5C.   c #978E76",\r
+"6C.   c #97947E",\r
+"7C.   c #9D9074",\r
+"8C.   c #815E60",\r
+"9C.   c #996F55",\r
+"0C.   c #655244",\r
+"aC.   c #688074",\r
+"bC.   c #A5AD8B",\r
+"cC.   c #BFB995",\r
+"dC.   c #BDB594",\r
+"eC.   c #B78E75",\r
+"fC.   c #987554",\r
+"gC.   c #CAAD86",\r
+"hC.   c #CFB789",\r
+"iC.   c #D6B88F",\r
+"jC.   c #D7B88C",\r
+"kC.   c #D4B38F",\r
+"lC.   c #CFB090",\r
+"mC.   c #D0AB89",\r
+"nC.   c #CBAA89",\r
+"oC.   c #C4A07A",\r
+"pC.   c #B88B5C",\r
+"qC.   c #834D41",\r
+"rC.   c #55342B",\r
+"sC.   c #3A2E25",\r
+"tC.   c #363027",\r
+"uC.   c #484741",\r
+"vC.   c #686659",\r
+"wC.   c #A19480",\r
+"xC.   c #B5A27E",\r
+"yC.   c #B1906B",\r
+"zC.   c #9E906A",\r
+"AC.   c #977E65",\r
+"BC.   c #8C745C",\r
+"CC.   c #949571",\r
+"DC.   c #B9A784",\r
+"EC.   c #B0935C",\r
+"FC.   c #C49971",\r
+"GC.   c #A88257",\r
+"HC.   c #7D5F48",\r
+"IC.   c #6C5F50",\r
+"JC.   c #674B3E",\r
+"KC.   c #504238",\r
+"LC.   c #494330",\r
+"MC.   c #636450",\r
+"NC.   c #B1A981",\r
+"OC.   c #B3A075",\r
+"PC.   c #A38A60",\r
+"QC.   c #8E7F66",\r
+"RC.   c #9B9386",\r
+"SC.   c #A47B69",\r
+"TC.   c #89704E",\r
+"UC.   c #95825B",\r
+"VC.   c #BA9C75",\r
+"WC.   c #C68F69",\r
+"XC.   c #C0936F",\r
+"YC.   c #C4A479",\r
+"ZC.   c #C2A47A",\r
+"`C.   c #C89974",\r
+" D.   c #A1654E",\r
+".D.   c #766842",\r
+"+D.   c #9A936A",\r
+"@D.   c #AC946D",\r
+"#D.   c #B08666",\r
+"$D.   c #AC8569",\r
+"%D.   c #A58058",\r
+"&D.   c #A68863",\r
+"*D.   c #B1AB8E",\r
+"=D.   c #B8937C",\r
+"-D.   c #9B9576",\r
+";D.   c #AD8E81",\r
+">D.   c #A39F8D",\r
+",D.   c #AFA28F",\r
+"'D.   c #C0AF8C",\r
+")D.   c #9E8F6D",\r
+"!D.   c #95917E",\r
+"~D.   c #C7B682",\r
+"{D.   c #D2BEA0",\r
+"]D.   c #CFBE96",\r
+"^D.   c #B0A88B",\r
+"/D.   c #CCC6A3",\r
+"(D.   c #D4CAA9",\r
+"_D.   c #CFC6AF",\r
+":D.   c #C8B09A",\r
+"<D.   c #AC8561",\r
+"[D.   c #83835F",\r
+"}D.   c #9D7C53",\r
+"|D.   c #9D713F",\r
+"1D.   c #B0884E",\r
+"2D.   c #C5974D",\r
+"3D.   c #CC9C59",\r
+"4D.   c #C99D61",\r
+"5D.   c #CB9E60",\r
+"6D.   c #C8935E",\r
+"7D.   c #BE8356",\r
+"8D.   c #AB7653",\r
+"9D.   c #A39776",\r
+"0D.   c #B5AF99",\r
+"aD.   c #C0A691",\r
+"bD.   c #C6B591",\r
+"cD.   c #C9B591",\r
+"dD.   c #BC9B80",\r
+"eD.   c #A18F68",\r
+"fD.   c #8F8961",\r
+"gD.   c #817B65",\r
+"hD.   c #7E6F40",\r
+"iD.   c #828268",\r
+"jD.   c #B2AE8B",\r
+"kD.   c #B5AA88",\r
+"lD.   c #A68A7B",\r
+"mD.   c #867865",\r
+"nD.   c #887D56",\r
+"oD.   c #8E9170",\r
+"pD.   c #969978",\r
+"qD.   c #A3A179",\r
+"rD.   c #957762",\r
+"sD.   c #695650",\r
+"tD.   c #686748",\r
+"uD.   c #7F7B5E",\r
+"vD.   c #8D8264",\r
+"wD.   c #90856C",\r
+"xD.   c #9F8F7F",\r
+"yD.   c #9F9273",\r
+"zD.   c #8C876C",\r
+"AD.   c #8A8B75",\r
+"BD.   c #908E6F",\r
+"CD.   c #957F60",\r
+"DD.   c #948871",\r
+"ED.   c #996263",\r
+"FD.   c #5B473E",\r
+"GD.   c #576853",\r
+"HD.   c #848E73",\r
+"ID.   c #9F977F",\r
+"JD.   c #A5A387",\r
+"KD.   c #A58B6B",\r
+"LD.   c #756A48",\r
+"MD.   c #768365",\r
+"ND.   c #AFB18F",\r
+"OD.   c #C6BE93",\r
+"PD.   c #CABB92",\r
+"QD.   c #CCBF9B",\r
+"RD.   c #CDBB91",\r
+"SD.   c #C8BD91",\r
+"TD.   c #C2B888",\r
+"UD.   c #C5B385",\r
+"VD.   c #C4AD7F",\r
+"WD.   c #CBB178",\r
+"XD.   c #BDA580",\r
+"YD.   c #AA856E",\r
+"ZD.   c #75524C",\r
+"`D.   c #4C373B",\r
+" E.   c #424F44",\r
+".E.   c #6D765E",\r
+"+E.   c #8B836C",\r
+"@E.   c #827B59",\r
+"#E.   c #6B5A52",\r
+"$E.   c #4C3E40",\r
+"%E.   c #3F322D",\r
+"&E.   c #46403E",\r
+"*E.   c #5C4C47",\r
+"=E.   c #675A55",\r
+"-E.   c #675B58",\r
+";E.   c #525B49",\r
+">E.   c #7C8F75",\r
+",E.   c #A6AA87",\r
+"'E.   c #A8A382",\r
+")E.   c #A6A27F",\r
+"!E.   c #A18C77",\r
+"~E.   c #80786F",\r
+"{E.   c #755058",\r
+"]E.   c #B9AA86",\r
+"^E.   c #B49E73",\r
+"/E.   c #916E53",\r
+"(E.   c #5C5C4A",\r
+"_E.   c #7B8B73",\r
+":E.   c #A2806D",\r
+"<E.   c #937253",\r
+"[E.   c #A48D64",\r
+"}E.   c #C1A96F",\r
+"|E.   c #D3B789",\r
+"1E.   c #D4B890",\r
+"2E.   c #D3B991",\r
+"3E.   c #CEAF80",\r
+"4E.   c #C89E80",\r
+"5E.   c #B57A56",\r
+"6E.   c #7A5248",\r
+"7E.   c #6F6B60",\r
+"8E.   c #A38B55",\r
+"9E.   c #805037",\r
+"0E.   c #4E3925",\r
+"aE.   c #372B25",\r
+"bE.   c #443E3B",\r
+"cE.   c #655F54",\r
+"dE.   c #7E7F6B",\r
+"eE.   c #A5A37F",\r
+"fE.   c #B6A370",\r
+"gE.   c #AB9A5D",\r
+"hE.   c #B4AA7D",\r
+"iE.   c #CEB996",\r
+"jE.   c #D5C08D",\r
+"kE.   c #D5BD8C",\r
+"lE.   c #CF9873",\r
+"mE.   c #B1674C",\r
+"nE.   c #5F2F2A",\r
+"oE.   c #362E2F",\r
+"pE.   c #3A382E",\r
+"qE.   c #545B42",\r
+"rE.   c #8D8F64",\r
+"sE.   c #A29685",\r
+"tE.   c #AD967C",\r
+"uE.   c #B8A575",\r
+"vE.   c #B99379",\r
+"wE.   c #966E5D",\r
+"xE.   c #827157",\r
+"yE.   c #8F8361",\r
+"zE.   c #B3A77F",\r
+"AE.   c #C4A88F",\r
+"BE.   c #C7987E",\r
+"CE.   c #BE956D",\r
+"DE.   c #BD9B74",\r
+"EE.   c #C2A37D",\r
+"FE.   c #BDA77E",\r
+"GE.   c #C89172",\r
+"HE.   c #994A47",\r
+"IE.   c #614D3E",\r
+"JE.   c #66574A",\r
+"KE.   c #634F41",\r
+"LE.   c #644435",\r
+"ME.   c #716545",\r
+"NE.   c #938551",\r
+"OE.   c #9A8468",\r
+"PE.   c #BEAE8A",\r
+"QE.   c #BDB6A2",\r
+"RE.   c #B19785",\r
+"SE.   c #90957B",\r
+"TE.   c #AC957E",\r
+"UE.   c #BAAA88",\r
+"VE.   c #C5BE95",\r
+"WE.   c #C3B37D",\r
+"XE.   c #9B886F",\r
+"YE.   c #7A6558",\r
+"ZE.   c #857A66",\r
+"`E.   c #ABA78E",\r
+" F.   c #C0BB9A",\r
+".F.   c #C6BA8C",\r
+"+F.   c #C2BA8B",\r
+"@F.   c #BCB792",\r
+"#F.   c #C5C3A0",\r
+"$F.   c #D4CBA1",\r
+"%F.   c #D2C8A1",\r
+"&F.   c #CFCAA9",\r
+"*F.   c #C9B9A1",\r
+"=F.   c #B99268",\r
+"-F.   c #908565",\r
+";F.   c #9E7154",\r
+">F.   c #A77F43",\r
+",F.   c #B8924A",\r
+"'F.   c #C39853",\r
+")F.   c #C99C66",\r
+"!F.   c #CD9B64",\r
+"~F.   c #C89964",\r
+"{F.   c #C39157",\r
+"]F.   c #B7844B",\r
+"^F.   c #A36E44",\r
+"/F.   c #999C7D",\r
+"(F.   c #C9B897",\r
+"_F.   c #CBB796",\r
+":F.   c #C5B795",\r
+"<F.   c #BCB493",\r
+"[F.   c #B39585",\r
+"}F.   c #999974",\r
+"|F.   c #B5B38E",\r
+"1F.   c #BCAB80",\r
+"2F.   c #BCAD89",\r
+"3F.   c #C1B191",\r
+"4F.   c #B8A687",\r
+"5F.   c #AE9D81",\r
+"6F.   c #A1876D",\r
+"7F.   c #84896D",\r
+"8F.   c #A49E89",\r
+"9F.   c #B2AA91",\r
+"0F.   c #BBB591",\r
+"aF.   c #C1B791",\r
+"bF.   c #B4907B",\r
+"cF.   c #694345",\r
+"dF.   c #3E4236",\r
+"eF.   c #575A4A",\r
+"fF.   c #7E8360",\r
+"gF.   c #9F8F72",\r
+"hF.   c #998D65",\r
+"iF.   c #958362",\r
+"jF.   c #897E67",\r
+"kF.   c #8C8A6B",\r
+"lF.   c #AA9770",\r
+"mF.   c #B19677",\r
+"nF.   c #926854",\r
+"oF.   c #727358",\r
+"pF.   c #7E7667",\r
+"qF.   c #85796A",\r
+"rF.   c #8C826B",\r
+"sF.   c #88886C",\r
+"tF.   c #9A8A6B",\r
+"uF.   c #989C80",\r
+"vF.   c #C9BD9C",\r
+"wF.   c #CCBC90",\r
+"xF.   c #D1BE91",\r
+"yF.   c #D0BF99",\r
+"zF.   c #D3C08A",\r
+"AF.   c #CBB98B",\r
+"BF.   c #C6B387",\r
+"CF.   c #C9B283",\r
+"DF.   c #C6B288",\r
+"EF.   c #C4AB82",\r
+"FF.   c #BEA176",\r
+"GF.   c #9E8670",\r
+"HF.   c #7B624F",\r
+"IF.   c #503F38",\r
+"JF.   c #3E4438",\r
+"KF.   c #5B6655",\r
+"LF.   c #81786E",\r
+"MF.   c #7A715F",\r
+"NF.   c #6E6151",\r
+"OF.   c #463F3E",\r
+"PF.   c #4E4138",\r
+"QF.   c #5D4B3A",\r
+"RF.   c #6F594C",\r
+"SF.   c #755848",\r
+"TF.   c #4F5040",\r
+"UF.   c #607A58",\r
+"VF.   c #85936A",\r
+"WF.   c #9FA38A",\r
+"XF.   c #9A9280",\r
+"YF.   c #817564",\r
+"ZF.   c #5C4C3E",\r
+"`F.   c #4B4B44",\r
+" G.   c #5B6450",\r
+".G.   c #CBBF90",\r
+"+G.   c #C1BB95",\r
+"@G.   c #BC9F74",\r
+"#G.   c #876140",\r
+"$G.   c #5D6A5F",\r
+"%G.   c #988A80",\r
+"&G.   c #88694E",\r
+"*G.   c #967A4E",\r
+"=G.   c #C1A980",\r
+"-G.   c #CEB28C",\r
+";G.   c #D4B48F",\r
+">G.   c #D3B38F",\r
+",G.   c #D9B78B",\r
+"'G.   c #D3B58F",\r
+")G.   c #CDAF88",\r
+"!G.   c #CBAC84",\r
+"~G.   c #C08871",\r
+"{G.   c #9F6543",\r
+"]G.   c #76634F",\r
+"^G.   c #979E89",\r
+"/G.   c #BDAD90",\r
+"(G.   c #AB8970",\r
+"_G.   c #93794C",\r
+":G.   c #805334",\r
+"<G.   c #5E3827",\r
+"[G.   c #41382A",\r
+"}G.   c #61573B",\r
+"|G.   c #938A5F",\r
+"1G.   c #BAAE7E",\r
+"2G.   c #D4B78B",\r
+"3G.   c #D6BB83",\r
+"4G.   c #D5B794",\r
+"5G.   c #D3BA8F",\r
+"6G.   c #CCAD88",\r
+"7G.   c #B6725D",\r
+"8G.   c #764535",\r
+"9G.   c #4B3D30",\r
+"0G.   c #4B433A",\r
+"aG.   c #4F5746",\r
+"bG.   c #768066",\r
+"cG.   c #B7AB83",\r
+"dG.   c #B49485",\r
+"eG.   c #7E6255",\r
+"fG.   c #998D70",\r
+"gG.   c #A49279",\r
+"hG.   c #9A8E69",\r
+"iG.   c #B2986B",\r
+"jG.   c #C09E7B",\r
+"kG.   c #C5A282",\r
+"lG.   c #C39F87",\r
+"mG.   c #BF9A72",\r
+"nG.   c #B79A7F",\r
+"oG.   c #B59170",\r
+"pG.   c #AF785B",\r
+"qG.   c #826241",\r
+"rG.   c #6C4D3A",\r
+"sG.   c #4C4234",\r
+"tG.   c #4F513F",\r
+"uG.   c #80745B",\r
+"vG.   c #A69371",\r
+"wG.   c #C1B07B",\r
+"xG.   c #B6B190",\r
+"yG.   c #C8BCA1",\r
+"zG.   c #CDC09C",\r
+"AG.   c #C7BFA5",\r
+"BG.   c #BEB797",\r
+"CG.   c #BFB896",\r
+"DG.   c #C0AA8B",\r
+"EG.   c #AC8F7A",\r
+"FG.   c #A4806C",\r
+"GG.   c #A9AF8A",\r
+"HG.   c #CDC299",\r
+"IG.   c #C7B994",\r
+"JG.   c #BDA179",\r
+"KG.   c #9E8460",\r
+"LG.   c #958A6B",\r
+"MG.   c #8B8A70",\r
+"NG.   c #969D81",\r
+"OG.   c #BBB78E",\r
+"PG.   c #BFBB91",\r
+"QG.   c #BFB59E",\r
+"RG.   c #C7B794",\r
+"SG.   c #C0B891",\r
+"TG.   c #C9C39E",\r
+"UG.   c #C9C4A6",\r
+"VG.   c #CBB893",\r
+"WG.   c #B99267",\r
+"XG.   c #97714F",\r
+"YG.   c #AC8249",\r
+"ZG.   c #BA8D4B",\r
+"`G.   c #C59D52",\r
+" H.   c #CB9C59",\r
+".H.   c #C79A5C",\r
+"+H.   c #C69A62",\r
+"@H.   c #C1975E",\r
+"#H.   c #9D6A45",\r
+"$H.   c #938D70",\r
+"%H.   c #BAAF86",\r
+"&H.   c #C8BB90",\r
+"*H.   c #C7BA8E",\r
+"=H.   c #AD9281",\r
+"-H.   c #817868",\r
+";H.   c #9F9A7D",\r
+">H.   c #B5B696",\r
+",H.   c #BEB391",\r
+"'H.   c #BCAF8A",\r
+")H.   c #BDB28E",\r
+"!H.   c #B5AA86",\r
+"~H.   c #A99E80",\r
+"{H.   c #B08A73",\r
+"]H.   c #8A8273",\r
+"^H.   c #989A85",\r
+"/H.   c #B9AC90",\r
+"(H.   c #B0A799",\r
+"_H.   c #7C564F",\r
+":H.   c #4D5641",\r
+"<H.   c #668364",\r
+"[H.   c #AAAF83",\r
+"}H.   c #C3BD91",\r
+"|H.   c #C6B991",\r
+"1H.   c #C8B986",\r
+"2H.   c #BFAE7A",\r
+"3H.   c #B09A71",\r
+"4H.   c #A9A576",\r
+"5H.   c #BEAC82",\r
+"6H.   c #C3AA7A",\r
+"7H.   c #A58E6E",\r
+"8H.   c #999378",\r
+"9H.   c #947D61",\r
+"0H.   c #7F8070",\r
+"aH.   c #806D5C",\r
+"bH.   c #7B7B62",\r
+"cH.   c #A0A47F",\r
+"dH.   c #C3B596",\r
+"eH.   c #D1BA9A",\r
+"fH.   c #D1BF95",\r
+"gH.   c #D3C095",\r
+"hH.   c #CEBD90",\r
+"iH.   c #CABA85",\r
+"jH.   c #C7B487",\r
+"kH.   c #C7B37E",\r
+"lH.   c #BFAC7D",\r
+"mH.   c #BEAF80",\r
+"nH.   c #B59C73",\r
+"oH.   c #96825E",\r
+"pH.   c #7B7359",\r
+"qH.   c #6D4C43",\r
+"rH.   c #435B3E",\r
+"sH.   c #82836A",\r
+"tH.   c #88806A",\r
+"uH.   c #716661",\r
+"vH.   c #5B534E",\r
+"wH.   c #535244",\r
+"xH.   c #725D49",\r
+"yH.   c #79654F",\r
+"zH.   c #776353",\r
+"AH.   c #746043",\r
+"BH.   c #5B533E",\r
+"CH.   c #646F57",\r
+"DH.   c #747460",\r
+"EH.   c #666E5E",\r
+"FH.   c #675D52",\r
+"GH.   c #483D39",\r
+"HH.   c #3D352F",\r
+"IH.   c #36322C",\r
+"JH.   c #393C37",\r
+"KH.   c #5B5449",\r
+"LH.   c #C7BE97",\r
+"MH.   c #C2C1A1",\r
+"NH.   c #A07B5B",\r
+"OH.   c #695A4E",\r
+"PH.   c #816F60",\r
+"QH.   c #9D7F51",\r
+"RH.   c #A99469",\r
+"SH.   c #BB9E72",\r
+"TH.   c #C9AD88",\r
+"UH.   c #CFB28C",\r
+"VH.   c #D2B28E",\r
+"WH.   c #D7B989",\r
+"XH.   c #D8B986",\r
+"YH.   c #D1AF83",\r
+"ZH.   c #BE9A7A",\r
+"`H.   c #A77358",\r
+" I.   c #716349",\r
+".I.   c #9E9D81",\r
+"+I.   c #B9A986",\r
+"@I.   c #AC8F69",\r
+"#I.   c #8C6E56",\r
+"$I.   c #877966",\r
+"%I.   c #A69779",\r
+"&I.   c #AF9160",\r
+"*I.   c #918456",\r
+"=I.   c #AA986D",\r
+"-I.   c #C2AB77",\r
+";I.   c #CDB68F",\r
+">I.   c #D7B892",\r
+",I.   c #D8B382",\r
+"'I.   c #CCA581",\r
+")I.   c #CC9D7A",\r
+"!I.   c #C29D6D",\r
+"~I.   c #BDA773",\r
+"{I.   c #B88863",\r
+"]I.   c #7C4437",\r
+"^I.   c #575945",\r
+"/I.   c #757A65",\r
+"(I.   c #7D7068",\r
+"_I.   c #868067",\r
+":I.   c #A08F6D",\r
+"<I.   c #A27A6E",\r
+"[I.   c #705D4C",\r
+"}I.   c #867A6A",\r
+"|I.   c #9C8E75",\r
+"1I.   c #9E9C7A",\r
+"2I.   c #BD997C",\r
+"3I.   c #C2986F",\r
+"4I.   c #C39A6F",\r
+"5I.   c #BE9779",\r
+"6I.   c #C59E74",\r
+"7I.   c #B67C60",\r
+"8I.   c #97695F",\r
+"9I.   c #755F58",\r
+"0I.   c #786650",\r
+"aI.   c #A07D56",\r
+"bI.   c #8A7661",\r
+"cI.   c #8F6F5E",\r
+"dI.   c #65623E",\r
+"eI.   c #858B68",\r
+"fI.   c #BEAE83",\r
+"gI.   c #C0B593",\r
+"hI.   c #C5C1A3",\r
+"iI.   c #D6C6A6",\r
+"jI.   c #D2C9A9",\r
+"kI.   c #CEC7A3",\r
+"lI.   c #CCC29D",\r
+"mI.   c #C1BEA2",\r
+"nI.   c #C5BFA0",\r
+"oI.   c #BEB494",\r
+"pI.   c #BAAD86",\r
+"qI.   c #BCBD95",\r
+"rI.   c #D1CBAA",\r
+"sI.   c #D4CBA7",\r
+"tI.   c #D0C69F",\r
+"uI.   c #CABE96",\r
+"vI.   c #C3B185",\r
+"wI.   c #A99965",\r
+"xI.   c #9A9475",\r
+"yI.   c #947F6A",\r
+"zI.   c #827F6E",\r
+"AI.   c #92867B",\r
+"BI.   c #B3AC8B",\r
+"CI.   c #C4BF9B",\r
+"DI.   c #CEC299",\r
+"EI.   c #C8C49C",\r
+"FI.   c #C5BCA4",\r
+"GI.   c #C69175",\r
+"HI.   c #A86942",\r
+"II.   c #AC874A",\r
+"JI.   c #C3965A",\r
+"KI.   c #C69D5B",\r
+"LI.   c #C49853",\r
+"MI.   c #C09459",\r
+"NI.   c #C6975B",\r
+"OI.   c #B9884B",\r
+"PI.   c #9F6542",\r
+"QI.   c #938570",\r
+"RI.   c #AE8572",\r
+"SI.   c #81785F",\r
+"TI.   c #BEB090",\r
+"UI.   c #BCB193",\r
+"VI.   c #B49778",\r
+"WI.   c #948756",\r
+"XI.   c #A49B76",\r
+"YI.   c #B2AB8C",\r
+"ZI.   c #C1B595",\r
+"`I.   c #A99A83",\r
+" J.   c #A9A589",\r
+".J.   c #B5A389",\r
+"+J.   c #A47F6F",\r
+"@J.   c #91947B",\r
+"#J.   c #AAA58B",\r
+"$J.   c #9F8873",\r
+"%J.   c #8D9080",\r
+"&J.   c #938C69",\r
+"*J.   c #857B58",\r
+"=J.   c #819574",\r
+"-J.   c #B6B891",\r
+";J.   c #C9C197",\r
+">J.   c #C8BC98",\r
+",J.   c #C9BE99",\r
+"'J.   c #C5AD89",\r
+")J.   c #A89B7E",\r
+"!J.   c #ABA174",\r
+"~J.   c #AC947B",\r
+"{J.   c #9A8364",\r
+"]J.   c #999677",\r
+"^J.   c #9E9572",\r
+"/J.   c #A19E64",\r
+"(J.   c #9FA587",\r
+"_J.   c #C2BA94",\r
+":J.   c #CCBD95",\r
+"<J.   c #CFC096",\r
+"[J.   c #CEC192",\r
+"}J.   c #CBBD93",\r
+"|J.   c #C8B68D",\r
+"1J.   c #C6B188",\r
+"2J.   c #BEAF85",\r
+"3J.   c #B7A07A",\r
+"4J.   c #ABA07C",\r
+"5J.   c #9F855F",\r
+"6J.   c #726853",\r
+"7J.   c #6E6547",\r
+"8J.   c #523B3B",\r
+"9J.   c #3B453A",\r
+"0J.   c #776B60",\r
+"aJ.   c #595D5B",\r
+"bJ.   c #634B41",\r
+"cJ.   c #494637",\r
+"dJ.   c #72684B",\r
+"eJ.   c #8A7158",\r
+"fJ.   c #786050",\r
+"gJ.   c #6D654B",\r
+"hJ.   c #705845",\r
+"iJ.   c #634D3F",\r
+"jJ.   c #596049",\r
+"kJ.   c #6D6858",\r
+"lJ.   c #6F745B",\r
+"mJ.   c #6B7858",\r
+"nJ.   c #6C634E",\r
+"oJ.   c #626248",\r
+"pJ.   c #5A624D",\r
+"qJ.   c #606555",\r
+"rJ.   c #6F6C54",\r
+"sJ.   c #C2BE93",\r
+"tJ.   c #C4BD97",\r
+"uJ.   c #896D57",\r
+"vJ.   c #867753",\r
+"wJ.   c #AD9667",\r
+"xJ.   c #BBA474",\r
+"yJ.   c #C7A579",\r
+"zJ.   c #D1B88D",\r
+"AJ.   c #D5B890",\r
+"BJ.   c #D9B293",\r
+"CJ.   c #D6B48B",\r
+"DJ.   c #C59C75",\r
+"EJ.   c #B0705C",\r
+"FJ.   c #8C5F48",\r
+"GJ.   c #8B8C79",\r
+"HJ.   c #A6907F",\r
+"IJ.   c #9F8A6A",\r
+"JJ.   c #9A9069",\r
+"KJ.   c #A68C64",\r
+"LJ.   c #9A8558",\r
+"MJ.   c #91795E",\r
+"NJ.   c #9D8B5D",\r
+"OJ.   c #B79667",\r
+"PJ.   c #B89D75",\r
+"QJ.   c #C0AB80",\r
+"RJ.   c #CEBA94",\r
+"SJ.   c #D8B691",\r
+"TJ.   c #CBAA82",\r
+"UJ.   c #CBA97A",\r
+"VJ.   c #CAA97A",\r
+"WJ.   c #C8AE84",\r
+"XJ.   c #C0916A",\r
+"YJ.   c #7D5642",\r
+"ZJ.   c #627159",\r
+"`J.   c #989C78",\r
+" K.   c #A39274",\r
+".K.   c #91865C",\r
+"+K.   c #938C6E",\r
+"@K.   c #9F7D6D",\r
+"#K.   c #6F655A",\r
+"$K.   c #866F5C",\r
+"%K.   c #807C66",\r
+"&K.   c #A4876C",\r
+"*K.   c #A57256",\r
+"=K.   c #8A5A42",\r
+"-K.   c #775D49",\r
+";K.   c #74533E",\r
+">K.   c #614C3A",\r
+",K.   c #544D45",\r
+"'K.   c #626053",\r
+")K.   c #808972",\r
+"!K.   c #A37C6F",\r
+"~K.   c #7B5A52",\r
+"{K.   c #5A563F",\r
+"]K.   c #6E6C4D",\r
+"^K.   c #7C755E",\r
+"/K.   c #A4A37E",\r
+"(K.   c #BCB99B",\r
+"_K.   c #D2C3A5",\r
+":K.   c #D3C9A6",\r
+"<K.   c #CFC0A2",\r
+"[K.   c #C9B69B",\r
+"}K.   c #C6C0A5",\r
+"|K.   c #C9BD9F",\r
+"1K.   c #C1A185",\r
+"2K.   c #C2AF85",\r
+"3K.   c #CAC59C",\r
+"4K.   c #CEC9AB",\r
+"5K.   c #D1CAA6",\r
+"6K.   c #CEC6A4",\r
+"7K.   c #CFC29C",\r
+"8K.   c #C0AF8A",\r
+"9K.   c #B9A186",\r
+"0K.   c #8B654D",\r
+"aK.   c #6E604F",\r
+"bK.   c #6D6C61",\r
+"cK.   c #89917F",\r
+"dK.   c #BABA9F",\r
+"eK.   c #C5C09B",\r
+"fK.   c #C2B998",\r
+"gK.   c #C2B79B",\r
+"hK.   c #C38874",\r
+"iK.   c #A06A3C",\r
+"jK.   c #B08B4B",\r
+"kK.   c #BF9554",\r
+"lK.   c #C29563",\r
+"mK.   c #C39B63",\r
+"nK.   c #C79C60",\r
+"oK.   c #C49A63",\r
+"pK.   c #C38F5C",\r
+"qK.   c #BA884A",\r
+"rK.   c #A07145",\r
+"sK.   c #8E826D",\r
+"tK.   c #AC8172",\r
+"uK.   c #80755E",\r
+"vK.   c #B5AC90",\r
+"wK.   c #BAB091",\r
+"xK.   c #B39478",\r
+"yK.   c #ADAB8D",\r
+"zK.   c #BCAB89",\r
+"AK.   c #9D9089",\r
+"BK.   c #96746A",\r
+"CK.   c #7E6E55",\r
+"DK.   c #A49E84",\r
+"EK.   c #B5A48D",\r
+"FK.   c #B1A792",\r
+"GK.   c #B0907B",\r
+"HK.   c #877A65",\r
+"IK.   c #9E9B86",\r
+"JK.   c #ABA589",\r
+"KK.   c #A38569",\r
+"LK.   c #80735E",\r
+"MK.   c #848B76",\r
+"NK.   c #A09879",\r
+"OK.   c #9A937C",\r
+"PK.   c #ABAD8F",\r
+"QK.   c #BEBA99",\r
+"RK.   c #BFBC99",\r
+"SK.   c #C7BD95",\r
+"TK.   c #C6BE96",\r
+"UK.   c #BCB28B",\r
+"VK.   c #B09D76",\r
+"WK.   c #806951",\r
+"XK.   c #676D4E",\r
+"YK.   c #8E8971",\r
+"ZK.   c #8B6C5B",\r
+"`K.   c #7A7158",\r
+" L.   c #896F60",\r
+".L.   c #7D8260",\r
+"+L.   c #A7AF7D",\r
+"@L.   c #C4B89A",\r
+"#L.   c #CDC091",\r
+"$L.   c #CDC399",\r
+"%L.   c #D2C195",\r
+"&L.   c #C6B692",\r
+"*L.   c #C6B484",\r
+"=L.   c #C8B582",\r
+"-L.   c #C2B581",\r
+";L.   c #AFA77D",\r
+">L.   c #A58A6F",\r
+",L.   c #90896D",\r
+"'L.   c #78645B",\r
+")L.   c #595B52",\r
+"!L.   c #574E44",\r
+"~L.   c #49483B",\r
+"{L.   c #596855",\r
+"]L.   c #7F6866",\r
+"^L.   c #555850",\r
+"/L.   c #4B4B42",\r
+"(L.   c #624E3A",\r
+"_L.   c #706249",\r
+":L.   c #847256",\r
+"<L.   c #8A7553",\r
+"[L.   c #7C5B48",\r
+"}L.   c #685946",\r
+"|L.   c #795F51",\r
+"1L.   c #6D5B4C",\r
+"2L.   c #686E5B",\r
+"3L.   c #7A746C",\r
+"4L.   c #5D605A",\r
+"5L.   c #565F4E",\r
+"6L.   c #645C4C",\r
+"7L.   c #606D55",\r
+"8L.   c #808366",\r
+"9L.   c #8A8965",\r
+"0L.   c #7D8464",\r
+"aL.   c #B6B197",\r
+"bL.   c #B8A37D",\r
+"cL.   c #AAA47F",\r
+"dL.   c #A89075",\r
+"eL.   c #978A60",\r
+"fL.   c #B59972",\r
+"gL.   c #C8A87B",\r
+"hL.   c #CEAF7C",\r
+"iL.   c #D0B18A",\r
+"jL.   c #D3B994",\r
+"kL.   c #DAB48F",\r
+"lL.   c #D4AB83",\r
+"mL.   c #D0AB84",\r
+"nL.   c #B77E66",\r
+"oL.   c #864E45",\r
+"pL.   c #797964",\r
+"qL.   c #A69C82",\r
+"rL.   c #8A6E54",\r
+"sL.   c #847C63",\r
+"tL.   c #AA9F7D",\r
+"uL.   c #B6A47B",\r
+"vL.   c #AE9E74",\r
+"wL.   c #B28B5B",\r
+"xL.   c #B29357",\r
+"yL.   c #B09D71",\r
+"zL.   c #B69A75",\r
+"AL.   c #C0A57B",\r
+"BL.   c #C9B38B",\r
+"CL.   c #D5B384",\r
+"DL.   c #D6AB81",\r
+"EL.   c #C6A67B",\r
+"FL.   c #C7A37D",\r
+"GL.   c #C9A86F",\r
+"HL.   c #B6A36C",\r
+"IL.   c #AAAA7F",\r
+"JL.   c #BBB38B",\r
+"KL.   c #B7B08A",\r
+"LL.   c #B2A37C",\r
+"ML.   c #896B5C",\r
+"NL.   c #615653",\r
+"OL.   c #8F8962",\r
+"PL.   c #A89A6E",\r
+"QL.   c #B6A06E",\r
+"RL.   c #AA865B",\r
+"SL.   c #946640",\r
+"TL.   c #6D593C",\r
+"UL.   c #625B41",\r
+"VL.   c #6A7349",\r
+"WL.   c #818467",\r
+"XL.   c #A5A17F",\r
+"YL.   c #A29C89",\r
+"ZL.   c #8F8988",\r
+"`L.   c #908D81",\r
+" M.   c #957F5F",\r
+".M.   c #867454",\r
+"+M.   c #8D7F57",\r
+"@M.   c #8E7A55",\r
+"#M.   c #7D6753",\r
+"$M.   c #7B765F",\r
+"%M.   c #9D967E",\r
+"&M.   c #C1AA92",\r
+"*M.   c #BDB096",\r
+"=M.   c #C1A589",\r
+"-M.   c #AD9379",\r
+";M.   c #A0A193",\r
+">M.   c #C0A07F",\r
+",M.   c #C8AC80",\r
+"'M.   c #CAC79F",\r
+")M.   c #D6C99E",\r
+"!M.   c #D2C6A1",\r
+"~M.   c #D3BF98",\r
+"{M.   c #BA9581",\r
+"]M.   c #B8927B",\r
+"^M.   c #9D8962",\r
+"/M.   c #908366",\r
+"(M.   c #847346",\r
+"_M.   c #787656",\r
+":M.   c #8E9382",\r
+"<M.   c #B4B08B",\r
+"[M.   c #CAB694",\r
+"}M.   c #CBB998",\r
+"|M.   c #BF8970",\r
+"1M.   c #9B733C",\r
+"2M.   c #BA9644",\r
+"3M.   c #C29654",\r
+"4M.   c #C39A60",\r
+"5M.   c #CB9B5D",\r
+"6M.   c #CEA065",\r
+"7M.   c #C89B66",\r
+"8M.   c #C2925E",\r
+"9M.   c #BB895B",\r
+"0M.   c #A56F4A",\r
+"aM.   c #8C7F77",\r
+"bM.   c #AA9982",\r
+"cM.   c #96917A",\r
+"dM.   c #C0A07D",\r
+"eM.   c #C2A988",\r
+"fM.   c #B3906D",\r
+"gM.   c #8D7A5D",\r
+"hM.   c #AFAD85",\r
+"iM.   c #B9A388",\r
+"jM.   c #917F6B",\r
+"kM.   c #9B847C",\r
+"lM.   c #83614C",\r
+"mM.   c #888071",\r
+"nM.   c #BD9B79",\r
+"oM.   c #BEA474",\r
+"pM.   c #BBB186",\r
+"qM.   c #B3AC84",\r
+"rM.   c #BCBB9B",\r
+"sM.   c #C6C297",\r
+"tM.   c #BCA37F",\r
+"uM.   c #92755C",\r
+"vM.   c #666E63",\r
+"wM.   c #98867B",\r
+"xM.   c #987F60",\r
+"yM.   c #7F8067",\r
+"zM.   c #8C8777",\r
+"AM.   c #979382",\r
+"BM.   c #A5A28E",\r
+"CM.   c #ADA890",\r
+"DM.   c #B3AA7D",\r
+"EM.   c #AAA581",\r
+"FM.   c #A99D7A",\r
+"GM.   c #8C6B52",\r
+"HM.   c #716D58",\r
+"IM.   c #8E7E5A",\r
+"JM.   c #998E6D",\r
+"KM.   c #9C8362",\r
+"LM.   c #8E8C6E",\r
+"MM.   c #CABD95",\r
+"NM.   c #CDC28E",\r
+"OM.   c #D3C396",\r
+"PM.   c #D2BA8C",\r
+"QM.   c #C9B58B",\r
+"RM.   c #C2B490",\r
+"SM.   c #C2B180",\r
+"TM.   c #BAAC81",\r
+"UM.   c #AB9A7F",\r
+"VM.   c #A59872",\r
+"WM.   c #867564",\r
+"XM.   c #7B6D63",\r
+"YM.   c #72564F",\r
+"ZM.   c #494F47",\r
+"`M.   c #636047",\r
+" N.   c #676350",\r
+".N.   c #776B5E",\r
+"+N.   c #61665D",\r
+"@N.   c #806F44",\r
+"#N.   c #9E8A5C",\r
+"$N.   c #A67754",\r
+"%N.   c #7C6351",\r
+"&N.   c #685C55",\r
+"*N.   c #7D5F46",\r
+"=N.   c #68533E",\r
+"-N.   c #655852",\r
+";N.   c #664B46",\r
+">N.   c #4A4840",\r
+",N.   c #47494C",\r
+"'N.   c #3F3D43",\r
+")N.   c #39443E",\r
+"!N.   c #546652",\r
+"~N.   c #728369",\r
+"{N.   c #A09E7D",\r
+"]N.   c #A6A27D",\r
+"^N.   c #A0A27F",\r
+"/N.   c #848374",\r
+"(N.   c #ABA486",\r
+"_N.   c #AFA384",\r
+":N.   c #A5846E",\r
+"<N.   c #988560",\r
+"[N.   c #B39571",\r
+"}N.   c #C3A07B",\r
+"|N.   c #C9A97D",\r
+"1N.   c #D3B487",\r
+"2N.   c #D6B78A",\r
+"3N.   c #D5B591",\r
+"4N.   c #D6B58D",\r
+"5N.   c #D0A583",\r
+"6N.   c #C7A17D",\r
+"7N.   c #BA8E6B",\r
+"8N.   c #A06850",\r
+"9N.   c #74745D",\r
+"0N.   c #A3A180",\r
+"aN.   c #B7AB85",\r
+"bN.   c #A99972",\r
+"cN.   c #A68C6E",\r
+"dN.   c #AD8D70",\r
+"eN.   c #AA8E64",\r
+"fN.   c #A68C61",\r
+"gN.   c #B59662",\r
+"hN.   c #BB9D65",\r
+"iN.   c #B89F76",\r
+"jN.   c #BE9F71",\r
+"kN.   c #BA9F78",\r
+"lN.   c #C0A884",\r
+"mN.   c #D2AA7F",\r
+"nN.   c #C99E77",\r
+"oN.   c #C4A370",\r
+"pN.   c #CAAD70",\r
+"qN.   c #D0B078",\r
+"rN.   c #CDA277",\r
+"sN.   c #BFA685",\r
+"tN.   c #B4B187",\r
+"uN.   c #B9AD88",\r
+"vN.   c #B3977F",\r
+"wN.   c #97715A",\r
+"xN.   c #706954",\r
+"yN.   c #7E6C54",\r
+"zN.   c #818762",\r
+"AN.   c #99A07E",\r
+"BN.   c #B7A782",\r
+"CN.   c #BAA97E",\r
+"DN.   c #B1A480",\r
+"EN.   c #B19C79",\r
+"FN.   c #AA8961",\r
+"GN.   c #8E9052",\r
+"HN.   c #A0A670",\r
+"IN.   c #B0AC8A",\r
+"JN.   c #B29E85",\r
+"KN.   c #818674",\r
+"LN.   c #7B806E",\r
+"MN.   c #8A937D",\r
+"NN.   c #B8B38F",\r
+"ON.   c #B0906D",\r
+"PN.   c #9D9671",\r
+"QN.   c #AFA87B",\r
+"RN.   c #B8A782",\r
+"SN.   c #C1AB89",\r
+"TN.   c #AFA38B",\r
+"UN.   c #B49D8D",\r
+"VN.   c #B9B18B",\r
+"WN.   c #B4A580",\r
+"XN.   c #9D8B72",\r
+"YN.   c #8D745D",\r
+"ZN.   c #B4B397",\r
+"`N.   c #C6C3A0",\r
+" O.   c #D3C79F",\r
+".O.   c #D3C7A8",\r
+"+O.   c #D1C7A2",\r
+"@O.   c #CDC398",\r
+"#O.   c #C4AC8A",\r
+"$O.   c #B69F76",\r
+"%O.   c #AE9F74",\r
+"&O.   c #A19676",\r
+"*O.   c #9B6E51",\r
+"=O.   c #77694A",\r
+"-O.   c #787D6B",\r
+";O.   c #988873",\r
+">O.   c #A9907D",\r
+",O.   c #AC9991",\r
+"'O.   c #A47463",\r
+")O.   c #A57947",\r
+"!O.   c #BD944C",\r
+"~O.   c #BF9B5C",\r
+"{O.   c #C99C63",\r
+"]O.   c #CF965E",\r
+"^O.   c #D0A065",\r
+"/O.   c #D0A155",\r
+"(O.   c #C4945D",\r
+"_O.   c #B88758",\r
+":O.   c #A16442",\r
+"<O.   c #756369",\r
+"[O.   c #9DA59A",\r
+"}O.   c #C0B59A",\r
+"|O.   c #C8A77B",\r
+"1O.   c #BFAD7F",\r
+"2O.   c #C6B988",\r
+"3O.   c #C2B689",\r
+"4O.   c #C4BA90",\r
+"5O.   c #C3A37D",\r
+"6O.   c #867B65",\r
+"7O.   c #9C9C93",\r
+"8O.   c #9C7B66",\r
+"9O.   c #7A6C5B",\r
+"0O.   c #BEB57A",\r
+"aO.   c #CCC590",\r
+"bO.   c #CDC79E",\r
+"cO.   c #CECAA2",\r
+"dO.   c #CEC8A0",\r
+"eO.   c #C9BB9F",\r
+"fO.   c #9F8A78",\r
+"gO.   c #596056",\r
+"hO.   c #7C8B83",\r
+"iO.   c #AA9E72",\r
+"jO.   c #938C64",\r
+"kO.   c #897A60",\r
+"lO.   c #726C59",\r
+"mO.   c #616B5E",\r
+"nO.   c #697368",\r
+"oO.   c #79785F",\r
+"pO.   c #717263",\r
+"qO.   c #93937A",\r
+"rO.   c #AB9471",\r
+"sO.   c #7F5D4C",\r
+"tO.   c #686E57",\r
+"uO.   c #9D9A7C",\r
+"vO.   c #B8A983",\r
+"wO.   c #B1B08E",\r
+"xO.   c #BDB799",\r
+"yO.   c #C5B898",\r
+"zO.   c #C5BA97",\r
+"AO.   c #C2B183",\r
+"BO.   c #B6AE86",\r
+"CO.   c #B7AB7A",\r
+"DO.   c #AAA37B",\r
+"EO.   c #A59471",\r
+"FO.   c #988B6F",\r
+"GO.   c #877A62",\r
+"HO.   c #836B54",\r
+"IO.   c #625943",\r
+"JO.   c #566449",\r
+"KO.   c #7A8968",\r
+"LO.   c #827B68",\r
+"MO.   c #5B574E",\r
+"NO.   c #5B6151",\r
+"OO.   c #867C54",\r
+"PO.   c #AA925E",\r
+"QO.   c #BB9F73",\r
+"RO.   c #BE8F6D",\r
+"SO.   c #99624D",\r
+"TO.   c #5F564E",\r
+"UO.   c #755B48",\r
+"VO.   c #71563B",\r
+"WO.   c #645242",\r
+"XO.   c #61473C",\r
+"YO.   c #505342",\r
+"ZO.   c #5A4D3F",\r
+"`O.   c #454837",\r
+" P.   c #545B46",\r
+".P.   c #718667",\r
+"+P.   c #9FA682",\r
+"@P.   c #ABA385",\r
+"#P.   c #A8A285",\r
+"$P.   c #A9A38C",\r
+"%P.   c #5E6959",\r
+"&P.   c #A4A588",\r
+"*P.   c #AE8A74",\r
+"=P.   c #9D805A",\r
+"-P.   c #AC9366",\r
+";P.   c #C4A57B",\r
+">P.   c #CCAA82",\r
+",P.   c #CEAC84",\r
+"'P.   c #D7BA85",\r
+")P.   c #D5B188",\r
+"!P.   c #D7B08A",\r
+"~P.   c #D1AD83",\r
+"{P.   c #C8A384",\r
+"]P.   c #C39376",\r
+"^P.   c #AC5F4E",\r
+"/P.   c #7D6045",\r
+"(P.   c #A0A280",\r
+"_P.   c #BAA788",\r
+":P.   c #B5A385",\r
+"<P.   c #B19F77",\r
+"[P.   c #B39368",\r
+"}P.   c #BB9468",\r
+"|P.   c #B79A65",\r
+"1P.   c #BC9E6D",\r
+"2P.   c #B6996C",\r
+"3P.   c #B3996E",\r
+"4P.   c #B9A372",\r
+"5P.   c #B99E6D",\r
+"6P.   c #BB9872",\r
+"7P.   c #C29E77",\r
+"8P.   c #C0A780",\r
+"9P.   c #C9A17C",\r
+"0P.   c #CCAB79",\r
+"aP.   c #CBAB81",\r
+"bP.   c #C9AB8A",\r
+"cP.   c #D0B17C",\r
+"dP.   c #C99E70",\r
+"eP.   c #AC7660",\r
+"fP.   c #929E7C",\r
+"gP.   c #B3A685",\r
+"hP.   c #AA9271",\r
+"iP.   c #928261",\r
+"jP.   c #928164",\r
+"kP.   c #9C8563",\r
+"lP.   c #858869",\r
+"mP.   c #AE9574",\r
+"nP.   c #AF937A",\r
+"oP.   c #9C8A72",\r
+"pP.   c #887B63",\r
+"qP.   c #787061",\r
+"rP.   c #7D6E5F",\r
+"sP.   c #879068",\r
+"tP.   c #ABAC8B",\r
+"uP.   c #B09487",\r
+"vP.   c #85715C",\r
+"wP.   c #818B6D",\r
+"xP.   c #A1A989",\r
+"yP.   c #AFAB92",\r
+"zP.   c #BDB393",\r
+"AP.   c #C8BCA3",\r
+"BP.   c #CCBA97",\r
+"CP.   c #C0BC99",\r
+"DP.   c #CDC7A0",\r
+"EP.   c #D0C39D",\r
+"FP.   c #CCC19D",\r
+"GP.   c #C3BB98",\r
+"HP.   c #B9AE91",\r
+"IP.   c #BEAC8F",\r
+"JP.   c #C3B398",\r
+"KP.   c #C0AC98",\r
+"LP.   c #9C905E",\r
+"MP.   c #989885",\r
+"NP.   c #BAB29A",\r
+"OP.   c #C4B89C",\r
+"PP.   c #C5BBA3",\r
+"QP.   c #CFC7A2",\r
+"RP.   c #C9C094",\r
+"SP.   c #C2A086",\r
+"TP.   c #A09471",\r
+"UP.   c #A29C7D",\r
+"VP.   c #A7A083",\r
+"WP.   c #B28568",\r
+"XP.   c #81684C",\r
+"YP.   c #696A5B",\r
+"ZP.   c #988764",\r
+"`P.   c #8E8865",\r
+" Q.   c #916D66",\r
+".Q.   c #7B604A",\r
+"+Q.   c #9B804B",\r
+"@Q.   c #B98E4D",\r
+"#Q.   c #C89B5B",\r
+"$Q.   c #CF9B64",\r
+"%Q.   c #CE9C6A",\r
+"&Q.   c #CE9C5D",\r
+"*Q.   c #C3925E",\r
+"=Q.   c #B67755",\r
+"-Q.   c #896345",\r
+";Q.   c #69786E",\r
+">Q.   c #B2B29D",\r
+",Q.   c #C8C3A4",\r
+"'Q.   c #CFC297",\r
+")Q.   c #CCC19A",\r
+"!Q.   c #CDC3A1",\r
+"~Q.   c #CEC6A5",\r
+"{Q.   c #CFC19B",\r
+"]Q.   c #7C795C",\r
+"^Q.   c #858F8E",\r
+"/Q.   c #A78871",\r
+"(Q.   c #75624C",\r
+"_Q.   c #90947F",\r
+":Q.   c #BEBA97",\r
+"<Q.   c #CDC69E",\r
+"[Q.   c #CBC6A0",\r
+"}Q.   c #C9C7A3",\r
+"|Q.   c #CBC99D",\r
+"1Q.   c #C9C5A2",\r
+"2Q.   c #B8AB82",\r
+"3Q.   c #6E664F",\r
+"4Q.   c #5A7B75",\r
+"5Q.   c #867966",\r
+"6Q.   c #756F5F",\r
+"7Q.   c #777A5B",\r
+"8Q.   c #75745C",\r
+"9Q.   c #898A67",\r
+"0Q.   c #919172",\r
+"aQ.   c #83846B",\r
+"bQ.   c #8B9378",\r
+"cQ.   c #AEA686",\r
+"dQ.   c #A68564",\r
+"eQ.   c #6F684E",\r
+"fQ.   c #999B7A",\r
+"gQ.   c #B89980",\r
+"hQ.   c #929276",\r
+"iQ.   c #ACA88A",\r
+"jQ.   c #C1B78D",\r
+"kQ.   c #C0B494",\r
+"lQ.   c #ABA48A",\r
+"mQ.   c #A9A382",\r
+"nQ.   c #B4A77E",\r
+"oQ.   c #AC9F7C",\r
+"pQ.   c #8A745C",\r
+"qQ.   c #6D7362",\r
+"rQ.   c #77614A",\r
+"sQ.   c #49593D",\r
+"tQ.   c #708960",\r
+"uQ.   c #92846E",\r
+"vQ.   c #6C5F4F",\r
+"wQ.   c #625A4A",\r
+"xQ.   c #6B634B",\r
+"yQ.   c #9E8851",\r
+"zQ.   c #C09A65",\r
+"AQ.   c #B99574",\r
+"BQ.   c #BD9577",\r
+"CQ.   c #A7724E",\r
+"DQ.   c #675648",\r
+"EQ.   c #665444",\r
+"FQ.   c #6C4E41",\r
+"GQ.   c #4F3937",\r
+"HQ.   c #484736",\r
+"IQ.   c #647052",\r
+"JQ.   c #846E4C",\r
+"KQ.   c #574B3B",\r
+"LQ.   c #515A51",\r
+"MQ.   c #77785E",\r
+"NQ.   c #887B70",\r
+"OQ.   c #82756F",\r
+"PQ.   c #7F7A6F",\r
+"QQ.   c #747063",\r
+"RQ.   c #646257",\r
+"SQ.   c #949681",\r
+"TQ.   c #A08C60",\r
+"UQ.   c #A7915E",\r
+"VQ.   c #BC9B6B",\r
+"WQ.   c #C4AA7B",\r
+"XQ.   c #D2AC84",\r
+"YQ.   c #D6B490",\r
+"ZQ.   c #DABB89",\r
+"`Q.   c #D6B28B",\r
+" R.   c #CDAA89",\r
+".R.   c #CAA47C",\r
+"+R.   c #C79B6F",\r
+"@R.   c #B46652",\r
+"#R.   c #7D543E",\r
+"$R.   c #88866D",\r
+"%R.   c #BF9F89",\r
+"&R.   c #B69071",\r
+"*R.   c #B59E63",\r
+"=R.   c #B99D6F",\r
+"-R.   c #CAA167",\r
+";R.   c #C79E6A",\r
+">R.   c #C6A975",\r
+",R.   c #C1A468",\r
+"'R.   c #BC9C72",\r
+")R.   c #B8A075",\r
+"!R.   c #BCA670",\r
+"~R.   c #B89975",\r
+"{R.   c #B7986A",\r
+"]R.   c #B6A473",\r
+"^R.   c #C8B488",\r
+"/R.   c #D1AD79",\r
+"(R.   c #C69A77",\r
+"_R.   c #C4B089",\r
+":R.   c #CABA9E",\r
+"<R.   c #C79A87",\r
+"[R.   c #9F6C5B",\r
+"}R.   c #7B7464",\r
+"|R.   c #9B9177",\r
+"1R.   c #A29172",\r
+"2R.   c #9B8562",\r
+"3R.   c #877A6A",\r
+"4R.   c #888C64",\r
+"5R.   c #9F967B",\r
+"6R.   c #A89477",\r
+"7R.   c #9F8163",\r
+"8R.   c #837158",\r
+"9R.   c #7A7660",\r
+"0R.   c #7F6E61",\r
+"aR.   c #6F6655",\r
+"bR.   c #878A6E",\r
+"cR.   c #C1A187",\r
+"dR.   c #A5917A",\r
+"eR.   c #998776",\r
+"fR.   c #A0A08D",\r
+"gR.   c #B9B591",\r
+"hR.   c #C1B798",\r
+"iR.   c #BAB799",\r
+"jR.   c #CBBBA0",\r
+"kR.   c #CDBCA2",\r
+"lR.   c #C3AA96",\r
+"mR.   c #AEAD96",\r
+"nR.   c #C2BEA4",\r
+"oR.   c #CAC1AA",\r
+"pR.   c #C2BAA8",\r
+"qR.   c #C6AC99",\r
+"rR.   c #B79170",\r
+"sR.   c #99796C",\r
+"tR.   c #8A746A",\r
+"uR.   c #8C7D64",\r
+"vR.   c #9D936B",\r
+"wR.   c #958B7D",\r
+"xR.   c #9D7868",\r
+"yR.   c #7F7669",\r
+"zR.   c #9E9376",\r
+"AR.   c #B1A18A",\r
+"BR.   c #B5846E",\r
+"CR.   c #777157",\r
+"DR.   c #7E775E",\r
+"ER.   c #8C6F58",\r
+"FR.   c #8B6656",\r
+"GR.   c #6B5444",\r
+"HR.   c #87886F",\r
+"IR.   c #9D8764",\r
+"JR.   c #725D44",\r
+"KR.   c #9F7B50",\r
+"LR.   c #B9955C",\r
+"MR.   c #C29C62",\r
+"NR.   c #CC9D5D",\r
+"OR.   c #CE9F5E",\r
+"PR.   c #CA9C5F",\r
+"QR.   c #CC9E5B",\r
+"RR.   c #BF8D57",\r
+"SR.   c #AF774D",\r
+"TR.   c #867255",\r
+"UR.   c #919C8F",\r
+"VR.   c #C7BA9F",\r
+"WR.   c #C8BC9B",\r
+"XR.   c #CBC5A6",\r
+"YR.   c #D2C69F",\r
+"ZR.   c #D1C6A2",\r
+"`R.   c #CBC6A4",\r
+" S.   c #CCBEA2",\r
+".S.   c #BD9D88",\r
+"+S.   c #7C7C64",\r
+"@S.   c #879691",\r
+"#S.   c #B19F7B",\r
+"$S.   c #9B7655",\r
+"%S.   c #7E8672",\r
+"&S.   c #B1B092",\r
+"*S.   c #CAC398",\r
+"=S.   c #C6C49E",\r
+"-S.   c #C7C69A",\r
+";S.   c #CAC49D",\r
+">S.   c #CAC49B",\r
+",S.   c #C1B584",\r
+"'S.   c #9A825E",\r
+")S.   c #69725E",\r
+"!S.   c #8E9A7F",\r
+"~S.   c #A7A37A",\r
+"{S.   c #A4A16B",\r
+"]S.   c #A6A56B",\r
+"^S.   c #9D9C72",\r
+"/S.   c #9C9E78",\r
+"(S.   c #A89582",\r
+"_S.   c #938D7D",\r
+":S.   c #8F8A7A",\r
+"<S.   c #AA9E75",\r
+"[S.   c #B4AC91",\r
+"}S.   c #B28271",\r
+"|S.   c #6A6551",\r
+"1S.   c #958674",\r
+"2S.   c #B5A881",\r
+"3S.   c #BEB18D",\r
+"4S.   c #B6A685",\r
+"5S.   c #AFA482",\r
+"6S.   c #B0A37C",\r
+"7S.   c #B0A084",\r
+"8S.   c #A2A07E",\r
+"9S.   c #A1936C",\r
+"0S.   c #917D62",\r
+"aS.   c #514C44",\r
+"bS.   c #586951",\r
+"cS.   c #92866E",\r
+"dS.   c #897458",\r
+"eS.   c #706851",\r
+"fS.   c #6F6546",\r
+"gS.   c #917D59",\r
+"hS.   c #BB9866",\r
+"iS.   c #BA8254",\r
+"jS.   c #A38453",\r
+"kS.   c #AA9661",\r
+"lS.   c #AF8762",\r
+"mS.   c #814942",\r
+"nS.   c #56433A",\r
+"oS.   c #4E3B3C",\r
+"pS.   c #3A3D37",\r
+"qS.   c #475941",\r
+"rS.   c #687664",\r
+"sS.   c #838261",\r
+"tS.   c #7C7758",\r
+"uS.   c #6E7556",\r
+"vS.   c #60654B",\r
+"wS.   c #635F4A",\r
+"xS.   c #585D4A",\r
+"yS.   c #546B4D",\r
+"zS.   c #708461",\r
+"AS.   c #715F43",\r
+"BS.   c #706956",\r
+"CS.   c #9B895B",\r
+"DS.   c #B99C6B",\r
+"ES.   c #C4A478",\r
+"FS.   c #D3B57E",\r
+"GS.   c #D0AE85",\r
+"HS.   c #D6B188",\r
+"IS.   c #D9B784",\r
+"JS.   c #D4B18A",\r
+"KS.   c #C59B79",\r
+"LS.   c #885047",\r
+"MS.   c #6C6C5A",\r
+"NS.   c #A29480",\r
+"OS.   c #B8988A",\r
+"PS.   c #BC9474",\r
+"QS.   c #B99962",\r
+"RS.   c #C8A76F",\r
+"SS.   c #C9A177",\r
+"TS.   c #C39E65",\r
+"US.   c #BE9B6C",\r
+"VS.   c #B49470",\r
+"WS.   c #B9A070",\r
+"XS.   c #BCA179",\r
+"YS.   c #B2986D",\r
+"ZS.   c #B7916F",\r
+"`S.   c #C4A985",\r
+" T.   c #C5A279",\r
+".T.   c #CBB088",\r
+"+T.   c #CBA694",\r
+"@T.   c #A6585D",\r
+"#T.   c #644440",\r
+"$T.   c #595346",\r
+"%T.   c #7B7C69",\r
+"&T.   c #7E7265",\r
+"*T.   c #90916F",\r
+"=T.   c #A89E72",\r
+"-T.   c #A19087",\r
+";T.   c #917A6F",\r
+">T.   c #847B66",\r
+",T.   c #899173",\r
+"'T.   c #997E71",\r
+")T.   c #816F67",\r
+"!T.   c #84907B",\r
+"~T.   c #B8B397",\r
+"{T.   c #C2A881",\r
+"]T.   c #A97A69",\r
+"^T.   c #81847E",\r
+"/T.   c #B6B5A5",\r
+"(T.   c #CCC1A9",\r
+"_T.   c #C8BC9A",\r
+":T.   c #C9B7A0",\r
+"<T.   c #D4B491",\r
+"[T.   c #BCA37D",\r
+"}T.   c #A5A988",\r
+"|T.   c #AEA490",\r
+"1T.   c #989790",\r
+"2T.   c #939485",\r
+"3T.   c #BCBAA2",\r
+"4T.   c #C3B288",\r
+"5T.   c #9E9672",\r
+"6T.   c #A6A579",\r
+"7T.   c #AFA47C",\r
+"8T.   c #ABA47B",\r
+"9T.   c #AFA671",\r
+"0T.   c #91926D",\r
+"aT.   c #9F9E6A",\r
+"bT.   c #AEA884",\r
+"cT.   c #AF8968",\r
+"dT.   c #AA997E",\r
+"eT.   c #A48F6E",\r
+"fT.   c #8B6C56",\r
+"gT.   c #6D4E47",\r
+"hT.   c #544A38",\r
+"iT.   c #564F3F",\r
+"jT.   c #737D63",\r
+"kT.   c #979B6C",\r
+"lT.   c #7F6D4D",\r
+"mT.   c #9C814C",\r
+"nT.   c #B79459",\r
+"oT.   c #C09662",\r
+"pT.   c #CE9F60",\r
+"qT.   c #CC9C6A",\r
+"rT.   c #CA9F68",\r
+"sT.   c #C89B60",\r
+"tT.   c #A27146",\r
+"uT.   c #8E8A56",\r
+"vT.   c #ACA695",\r
+"wT.   c #C3B198",\r
+"xT.   c #C2BC9D",\r
+"yT.   c #D2C7A6",\r
+"zT.   c #D2CBA6",\r
+"AT.   c #CBBDA7",\r
+"BT.   c #BF978A",\r
+"CT.   c #887B5B",\r
+"DT.   c #8BA08F",\r
+"ET.   c #BDA98A",\r
+"FT.   c #B59772",\r
+"GT.   c #8C836C",\r
+"HT.   c #9BA58E",\r
+"IT.   c #C2BA97",\r
+"JT.   c #BFBA99",\r
+"KT.   c #C0BA98",\r
+"LT.   c #C6BA96",\r
+"MT.   c #B0A388",\r
+"NT.   c #A6A183",\r
+"OT.   c #9B8268",\r
+"PT.   c #7A785B",\r
+"QT.   c #848C78",\r
+"RT.   c #B0B18D",\r
+"ST.   c #C3BD92",\r
+"TT.   c #C6BF97",\r
+"UT.   c #C8BA91",\r
+"VT.   c #C6B98A",\r
+"WT.   c #B09B7C",\r
+"XT.   c #7F756A",\r
+"YT.   c #675E5F",\r
+"ZT.   c #727467",\r
+"`T.   c #8C7A74",\r
+" U.   c #989183",\r
+".U.   c #AF836D",\r
+"+U.   c #716C51",\r
+"@U.   c #8A645F",\r
+"#U.   c #8A8A71",\r
+"$U.   c #B4AC8B",\r
+"%U.   c #AAA17E",\r
+"&U.   c #AEA27A",\r
+"*U.   c #AFA17B",\r
+"=U.   c #9B8E68",\r
+"-U.   c #787365",\r
+";U.   c #705944",\r
+">U.   c #4D543F",\r
+",U.   c #7C8466",\r
+"'U.   c #71615B",\r
+")U.   c #6C6856",\r
+"!U.   c #988B63",\r
+"~U.   c #B8916B",\r
+"{U.   c #B58159",\r
+"]U.   c #9C6F50",\r
+"^U.   c #9F8E67",\r
+"/U.   c #BA9F76",\r
+"(U.   c #BD9673",\r
+"_U.   c #8E5143",\r
+":U.   c #383328",\r
+"<U.   c #3B4135",\r
+"[U.   c #566544",\r
+"}U.   c #717957",\r
+"|U.   c #82826C",\r
+"1U.   c #847C64",\r
+"2U.   c #8B7D62",\r
+"3U.   c #8A896A",\r
+"4U.   c #878668",\r
+"5U.   c #6F6B49",\r
+"6U.   c #4F5548",\r
+"7U.   c #717865",\r
+"8U.   c #927154",\r
+"9U.   c #7C784E",\r
+"0U.   c #AE9868",\r
+"aU.   c #C4A668",\r
+"bU.   c #C4A57A",\r
+"cU.   c #D2B18A",\r
+"dU.   c #D5B588",\r
+"eU.   c #D5B486",\r
+"fU.   c #CAA480",\r
+"gU.   c #C8A073",\r
+"hU.   c #B98862",\r
+"iU.   c #8B514A",\r
+"jU.   c #5E513E",\r
+"kU.   c #89816F",\r
+"lU.   c #A88B6B",\r
+"mU.   c #B38E5C",\r
+"nU.   c #BB9F74",\r
+"oU.   c #C5A473",\r
+"pU.   c #D0A675",\r
+"qU.   c #D0A977",\r
+"rU.   c #CEA869",\r
+"sU.   c #C5A077",\r
+"tU.   c #C79B77",\r
+"uU.   c #C2A166",\r
+"vU.   c #B49565",\r
+"wU.   c #B2996B",\r
+"xU.   c #B3986D",\r
+"yU.   c #B19D6E",\r
+"zU.   c #B89B68",\r
+"AU.   c #B0946E",\r
+"BU.   c #B09C7B",\r
+"CU.   c #CDBC8A",\r
+"DU.   c #CCAD89",\r
+"EU.   c #C48C75",\r
+"FU.   c #9A5953",\r
+"GU.   c #573F3C",\r
+"HU.   c #696D62",\r
+"IU.   c #927660",\r
+"JU.   c #7D745F",\r
+"KU.   c #978E68",\r
+"LU.   c #A09C79",\r
+"MU.   c #A8A486",\r
+"NU.   c #AFA985",\r
+"OU.   c #AF8F72",\r
+"PU.   c #898A6B",\r
+"QU.   c #9B9F7A",\r
+"RU.   c #B1A482",\r
+"SU.   c #A2826A",\r
+"TU.   c #817764",\r
+"UU.   c #A19F8F",\r
+"VU.   c #C7B092",\r
+"WU.   c #C4B195",\r
+"XU.   c #BCA98F",\r
+"YU.   c #B8A885",\r
+"ZU.   c #ABA88A",\r
+"`U.   c #ACAFA1",\r
+" V.   c #D0BDA6",\r
+".V.   c #D0BB96",\r
+"+V.   c #D1B390",\r
+"@V.   c #C2BA92",\r
+"#V.   c #B5AD88",\r
+"$V.   c #B09E7F",\r
+"%V.   c #9EAA87",\r
+"&V.   c #B1BA9C",\r
+"*V.   c #CCCAAF",\r
+"=V.   c #D3CEAB",\r
+"-V.   c #CEC3A2",\r
+";V.   c #CABC9D",\r
+">V.   c #BFB58B",\r
+",V.   c #B3A47C",\r
+"'V.   c #AC9C7C",\r
+")V.   c #ACA47A",\r
+"!V.   c #B5B594",\r
+"~V.   c #CABD90",\r
+"{V.   c #C8BC97",\r
+"]V.   c #CCC1A2",\r
+"^V.   c #C8BB8D",\r
+"/V.   c #A8A87B",\r
+"(V.   c #BDB090",\r
+"_V.   c #C1B183",\r
+":V.   c #A89272",\r
+"<V.   c #725549",\r
+"[V.   c #42432C",\r
+"}V.   c #55654E",\r
+"|V.   c #979B85",\r
+"1V.   c #A99181",\r
+"2V.   c #876051",\r
+"3V.   c #9A814A",\r
+"4V.   c #BA9851",\r
+"5V.   c #C69950",\r
+"6V.   c #C89657",\r
+"7V.   c #C9A063",\r
+"8V.   c #C48C5C",\r
+"9V.   c #B27F5D",\r
+"0V.   c #99624F",\r
+"aV.   c #79766B",\r
+"bV.   c #9B9185",\r
+"cV.   c #B1A780",\r
+"dV.   c #C3B496",\r
+"eV.   c #C6BC97",\r
+"fV.   c #CDC4A8",\r
+"gV.   c #D0C9A6",\r
+"hV.   c #CBBBA1",\r
+"iV.   c #B89B86",\r
+"jV.   c #717B60",\r
+"kV.   c #8A9C87",\r
+"lV.   c #948D79",\r
+"mV.   c #9A8972",\r
+"nV.   c #898A79",\r
+"oV.   c #9A7366",\r
+"pV.   c #776158",\r
+"qV.   c #7F6F69",\r
+"rV.   c #7E786E",\r
+"sV.   c #7A775F",\r
+"tV.   c #828C68",\r
+"uV.   c #98876E",\r
+"vV.   c #91936C",\r
+"wV.   c #A19573",\r
+"xV.   c #A5A489",\r
+"yV.   c #BBB796",\r
+"zV.   c #C7BC96",\r
+"AV.   c #C9BB97",\r
+"BV.   c #BB9176",\r
+"CV.   c #7E5F4F",\r
+"DV.   c #493E46",\r
+"EV.   c #444844",\r
+"FV.   c #69665A",\r
+"GV.   c #544840",\r
+"HV.   c #5A5755",\r
+"IV.   c #948370",\r
+"JV.   c #98785B",\r
+"KV.   c #8B7355",\r
+"LV.   c #908462",\r
+"MV.   c #A0A180",\r
+"NV.   c #AEA680",\r
+"OV.   c #A7A07E",\r
+"PV.   c #A79E7B",\r
+"QV.   c #9E8E73",\r
+"RV.   c #918B6F",\r
+"SV.   c #807762",\r
+"TV.   c #6E5F41",\r
+"UV.   c #606E5A",\r
+"VV.   c #918A77",\r
+"WV.   c #8E6863",\r
+"XV.   c #766D53",\r
+"YV.   c #98906F",\r
+"ZV.   c #BA9873",\r
+"`V.   c #B18969",\r
+" W.   c #9A7252",\r
+".W.   c #968366",\r
+"+W.   c #B99D7C",\r
+"@W.   c #BF9577",\r
+"#W.   c #A7736C",\r
+"$W.   c #74453E",\r
+"%W.   c #40412F",\r
+"&W.   c #494B38",\r
+"*W.   c #675343",\r
+"=W.   c #66644D",\r
+"-W.   c #7C7A59",\r
+";W.   c #8A765C",\r
+">W.   c #7E785D",\r
+",W.   c #887C5B",\r
+"'W.   c #877C5E",\r
+")W.   c #85836D",\r
+"!W.   c #8C866C",\r
+"~W.   c #817C5A",\r
+"{W.   c #615D4A",\r
+"]W.   c #B2895B",\r
+"^W.   c #9B885F",\r
+"/W.   c #B59A71",\r
+"(W.   c #CAAA6E",\r
+"_W.   c #CFA77C",\r
+":W.   c #D0AC7D",\r
+"<W.   c #D3B37D",\r
+"[W.   c #D8B78B",\r
+"}W.   c #D3AE80",\r
+"|W.   c #CAA27C",\r
+"1W.   c #C49B76",\r
+"2W.   c #B08261",\r
+"3W.   c #99614E",\r
+"4W.   c #745945",\r
+"5W.   c #747745",\r
+"6W.   c #AA9361",\r
+"7W.   c #B79E6A",\r
+"8W.   c #BFA176",\r
+"9W.   c #C6A881",\r
+"0W.   c #CFAC82",\r
+"aW.   c #CBA37E",\r
+"bW.   c #C5A76F",\r
+"cW.   c #C6A66F",\r
+"dW.   c #C0A26F",\r
+"eW.   c #B3976B",\r
+"fW.   c #AF996A",\r
+"gW.   c #B49B63",\r
+"hW.   c #BBA26F",\r
+"iW.   c #C1A67F",\r
+"jW.   c #BB7D66",\r
+"kW.   c #8C5142",\r
+"lW.   c #593E31",\r
+"mW.   c #636551",\r
+"nW.   c #A4A48B",\r
+"oW.   c #C7B592",\r
+"pW.   c #B6AC7D",\r
+"qW.   c #BAAA72",\r
+"rW.   c #B69E7B",\r
+"sW.   c #B3AC88",\r
+"tW.   c #BCB78C",\r
+"uW.   c #B4AC7E",\r
+"vW.   c #B6AE87",\r
+"wW.   c #B4AA7F",\r
+"xW.   c #A29972",\r
+"yW.   c #A4A882",\r
+"zW.   c #BFB48E",\r
+"AW.   c #BDA690",\r
+"BW.   c #BBA38B",\r
+"CW.   c #A7A494",\r
+"DW.   c #B9BAA1",\r
+"EW.   c #C3C2A9",\r
+"FW.   c #D3C9AB",\r
+"GW.   c #CCBEA1",\r
+"HW.   c #C9A28B",\r
+"IW.   c #B4967F",\r
+"JW.   c #B3B28F",\r
+"KW.   c #B5AD7F",\r
+"LW.   c #BAAC84",\r
+"MW.   c #B7B098",\r
+"NW.   c #CAC6A1",\r
+"OW.   c #D2CBA8",\r
+"PW.   c #D4CCAB",\r
+"QW.   c #D4CEAC",\r
+"RW.   c #D5CCA7",\r
+"SW.   c #D3C5A0",\r
+"TW.   c #C6A588",\r
+"UW.   c #B07C6C",\r
+"VW.   c #756651",\r
+"WW.   c #72675B",\r
+"XW.   c #9A9377",\r
+"YW.   c #C2AC87",\r
+"ZW.   c #C5B791",\r
+"`W.   c #CAC19D",\r
+" X.   c #CFCA9E",\r
+".X.   c #C0C19E",\r
+"+X.   c #CEC6A1",\r
+"@X.   c #CFC6A3",\r
+"#X.   c #C8B694",\r
+"$X.   c #798765",\r
+"%X.   c #9B9C86",\r
+"&X.   c #A98B81",\r
+"*X.   c #7F6D62",\r
+"=X.   c #72604C",\r
+"-X.   c #98814B",\r
+";X.   c #BB9965",\r
+">X.   c #C19C5D",\r
+",X.   c #C29260",\r
+"'X.   c #C49766",\r
+")X.   c #C59C5A",\r
+"!X.   c #BF8D59",\r
+"~X.   c #AD684C",\r
+"{X.   c #935845",\r
+"]X.   c #7B7964",\r
+"^X.   c #A2A489",\r
+"/X.   c #BDAC88",\r
+"(X.   c #C8B08D",\r
+"_X.   c #CFBE98",\r
+":X.   c #C8B99F",\r
+"<X.   c #C3B694",\r
+"[X.   c #B0947F",\r
+"}X.   c #727661",\r
+"|X.   c #959C8A",\r
+"1X.   c #AE7E6E",\r
+"2X.   c #7E7865",\r
+"3X.   c #A3936D",\r
+"4X.   c #888B62",\r
+"5X.   c #8B6159",\r
+"6X.   c #574233",\r
+"7X.   c #4A4542",\r
+"8X.   c #4A504B",\r
+"9X.   c #586D57",\r
+"0X.   c #879870",\r
+"aX.   c #A99478",\r
+"bX.   c #9C8066",\r
+"cX.   c #8D7C64",\r
+"dX.   c #9A9682",\r
+"eX.   c #B3B194",\r
+"fX.   c #C0BB99",\r
+"gX.   c #C2B896",\r
+"hX.   c #BFB294",\r
+"iX.   c #A4786A",\r
+"jX.   c #675543",\r
+"kX.   c #3D453C",\r
+"lX.   c #3E4937",\r
+"mX.   c #595349",\r
+"nX.   c #52463B",\r
+"oX.   c #413732",\r
+"pX.   c #645A4B",\r
+"qX.   c #997165",\r
+"rX.   c #978061",\r
+"sX.   c #9A9269",\r
+"tX.   c #A9A47B",\r
+"uX.   c #B0A87A",\r
+"vX.   c #A8A07E",\r
+"wX.   c #9C9A74",\r
+"xX.   c #A79C73",\r
+"yX.   c #A49776",\r
+"zX.   c #9C896F",\r
+"AX.   c #8C7968",\r
+"BX.   c #886650",\r
+"CX.   c #6D6B4A",\r
+"DX.   c #898064",\r
+"EX.   c #928566",\r
+"FX.   c #A17E5C",\r
+"GX.   c #AD9368",\r
+"HX.   c #BC9671",\r
+"IX.   c #B38969",\r
+"JX.   c #A08161",\r
+"KX.   c #9C8568",\r
+"LX.   c #AD886E",\r
+"MX.   c #B07D61",\r
+"NX.   c #A17B5F",\r
+"OX.   c #95664E",\r
+"PX.   c #5B4332",\r
+"QX.   c #534837",\r
+"RX.   c #5C524A",\r
+"SX.   c #403639",\r
+"TX.   c #55594A",\r
+"UX.   c #6B7051",\r
+"VX.   c #77775B",\r
+"WX.   c #8A7058",\r
+"XX.   c #685346",\r
+"YX.   c #685C4A",\r
+"ZX.   c #7E7664",\r
+"`X.   c #949074",\r
+" Y.   c #92956D",\r
+".Y.   c #A0724E",\r
+"+Y.   c #A88E67",\r
+"@Y.   c #CEA876",\r
+"#Y.   c #D2AF83",\r
+"$Y.   c #D1A47E",\r
+"%Y.   c #CFA580",\r
+"&Y.   c #C6A075",\r
+"*Y.   c #B98F66",\r
+"=Y.   c #AD835D",\r
+"-Y.   c #A38257",\r
+";Y.   c #9D8450",\r
+">Y.   c #A08D5E",\r
+",Y.   c #BB9A6D",\r
+"'Y.   c #BEA87B",\r
+")Y.   c #C4A974",\r
+"!Y.   c #D0AD79",\r
+"~Y.   c #D4B170",\r
+"{Y.   c #CEA76F",\r
+"]Y.   c #CBA979",\r
+"^Y.   c #C9A983",\r
+"/Y.   c #CDA780",\r
+"(Y.   c #C09772",\r
+"_Y.   c #A1724E",\r
+":Y.   c #755540",\r
+"<Y.   c #564732",\r
+"[Y.   c #5C4738",\r
+"}Y.   c #77584A",\r
+"|Y.   c #8D584A",\r
+"1Y.   c #5D453A",\r
+"2Y.   c #5F3E32",\r
+"3Y.   c #5E5448",\r
+"4Y.   c #84856D",\r
+"5Y.   c #ACA889",\r
+"6Y.   c #C4BE9F",\r
+"7Y.   c #CEB4A5",\r
+"8Y.   c #C4B5A3",\r
+"9Y.   c #D2C499",\r
+"0Y.   c #BD997B",\r
+"aY.   c #BCA483",\r
+"bY.   c #BBAF7E",\r
+"cY.   c #B9A378",\r
+"dY.   c #B08B6A",\r
+"eY.   c #A3956D",\r
+"fY.   c #B0AA84",\r
+"gY.   c #B1A98B",\r
+"hY.   c #BAB496",\r
+"iY.   c #B48E7F",\r
+"jY.   c #977358",\r
+"kY.   c #82846F",\r
+"lY.   c #ADAA8B",\r
+"mY.   c #BBB399",\r
+"nY.   c #C3AF98",\r
+"oY.   c #B4AA8D",\r
+"pY.   c #8A886A",\r
+"qY.   c #919676",\r
+"rY.   c #B4A686",\r
+"sY.   c #B6AB8A",\r
+"tY.   c #BCB79A",\r
+"uY.   c #C9BFAA",\r
+"vY.   c #CABC95",\r
+"wY.   c #CDC3A4",\r
+"xY.   c #D2CAAF",\r
+"yY.   c #D7C9A6",\r
+"zY.   c #C99D86",\r
+"AY.   c #926B4C",\r
+"BY.   c #848663",\r
+"CY.   c #A0A377",\r
+"DY.   c #B0AB84",\r
+"EY.   c #B3AC83",\r
+"FY.   c #BAAA89",\r
+"GY.   c #BCAF94",\r
+"HY.   c #C7BFA2",\r
+"IY.   c #C9C1A4",\r
+"JY.   c #D4CAA0",\r
+"KY.   c #D3CA9F",\r
+"LY.   c #D3C4A2",\r
+"MY.   c #C7BD9C",\r
+"NY.   c #C3B99A",\r
+"OY.   c #CBB595",\r
+"PY.   c #C3B38A",\r
+"QY.   c #AEA27D",\r
+"RY.   c #9B694D",\r
+"SY.   c #A9834A",\r
+"TY.   c #BB9959",\r
+"UY.   c #B5985C",\r
+"VY.   c #C29A6A",\r
+"WY.   c #BE956A",\r
+"XY.   c #BA8B5B",\r
+"YY.   c #B88452",\r
+"ZY.   c #AA7345",\r
+"`Y.   c #8C6744",\r
+" Z.   c #9C8B68",\r
+".Z.   c #B29A7E",\r
+"+Z.   c #BB9084",\r
+"@Z.   c #937F6D",\r
+"#Z.   c #877670",\r
+"$Z.   c #968977",\r
+"%Z.   c #A09687",\r
+"&Z.   c #A8806B",\r
+"*Z.   c #888370",\r
+"=Z.   c #ABA887",\r
+"-Z.   c #AE7A62",\r
+";Z.   c #756C5D",\r
+">Z.   c #9F9583",\r
+",Z.   c #978060",\r
+"'Z.   c #86745F",\r
+")Z.   c #695940",\r
+"!Z.   c #535554",\r
+"~Z.   c #706C5A",\r
+"{Z.   c #807B5B",\r
+"]Z.   c #848567",\r
+"^Z.   c #988871",\r
+"/Z.   c #9D896C",\r
+"(Z.   c #816E62",\r
+"_Z.   c #666754",\r
+":Z.   c #7C8876",\r
+"<Z.   c #A8906E",\r
+"[Z.   c #9C8C75",\r
+"}Z.   c #8C8260",\r
+"|Z.   c #8C8D59",\r
+"1Z.   c #8C8F6D",\r
+"2Z.   c #858D67",\r
+"3Z.   c #918F70",\r
+"4Z.   c #8C8363",\r
+"5Z.   c #675532",\r
+"6Z.   c #544230",\r
+"7Z.   c #917658",\r
+"8Z.   c #916256",\r
+"9Z.   c #717560",\r
+"0Z.   c #9D9E7E",\r
+"aZ.   c #B3A889",\r
+"bZ.   c #AC9B7F",\r
+"cZ.   c #A59E76",\r
+"dZ.   c #A89F79",\r
+"eZ.   c #A39270",\r
+"fZ.   c #9A8860",\r
+"gZ.   c #9B7A58",\r
+"hZ.   c #9A7B50",\r
+"iZ.   c #A57C5C",\r
+"jZ.   c #A08267",\r
+"kZ.   c #C0966D",\r
+"lZ.   c #C28E5B",\r
+"mZ.   c #AB8555",\r
+"nZ.   c #978158",\r
+"oZ.   c #9F8866",\r
+"pZ.   c #AB8165",\r
+"qZ.   c #9B765A",\r
+"rZ.   c #907E61",\r
+"sZ.   c #977067",\r
+"tZ.   c #795147",\r
+"uZ.   c #6C5C3B",\r
+"vZ.   c #6F553F",\r
+"wZ.   c #695145",\r
+"xZ.   c #56473E",\r
+"yZ.   c #3B2D31",\r
+"zZ.   c #343A35",\r
+"AZ.   c #475141",\r
+"BZ.   c #696853",\r
+"CZ.   c #6E6857",\r
+"DZ.   c #575555",\r
+"EZ.   c #4B5142",\r
+"FZ.   c #605949",\r
+"GZ.   c #807B5E",\r
+"HZ.   c #92765B",\r
+"IZ.   c #B69C71",\r
+"JZ.   c #C69F69",\r
+"KZ.   c #C8986F",\r
+"LZ.   c #BF9A78",\r
+"MZ.   c #BF8F6C",\r
+"NZ.   c #B88668",\r
+"OZ.   c #B88160",\r
+"PZ.   c #AE7659",\r
+"QZ.   c #A18C5D",\r
+"RZ.   c #B29566",\r
+"SZ.   c #BFA170",\r
+"TZ.   c #C2A07B",\r
+"UZ.   c #C5AB7A",\r
+"VZ.   c #C5AB7B",\r
+"WZ.   c #C6A580",\r
+"XZ.   c #CCA47B",\r
+"YZ.   c #CBAB78",\r
+"ZZ.   c #CEA97B",\r
+"`Z.   c #CDA871",\r
+" `.   c #CCAE7A",\r
+".`.   c #B38569",\r
+"+`.   c #845547",\r
+"@`.   c #593E3A",\r
+"#`.   c #505551",\r
+"$`.   c #6E634A",\r
+"%`.   c #67462E",\r
+"&`.   c #614743",\r
+"*`.   c #6D4944",\r
+"=`.   c #544C41",\r
+"-`.   c #566A60",\r
+";`.   c #919489",\r
+">`.   c #AA8A83",\r
+",`.   c #83776D",\r
+"'`.   c #A4A696",\r
+")`.   c #BB8F80",\r
+"!`.   c #99877B",\r
+"~`.   c #C2BB9B",\r
+"{`.   c #C8B592",\r
+"]`.   c #C09E6F",\r
+"^`.   c #BAA880",\r
+"/`.   c #C2B68A",\r
+"(`.   c #C0A77E",\r
+"_`.   c #AD936A",\r
+":`.   c #A39C72",\r
+"<`.   c #BDAF8B",\r
+"[`.   c #A79176",\r
+"}`.   c #A69C92",\r
+"|`.   c #C0A493",\r
+"1`.   c #A0947F",\r
+"2`.   c #9F7C6F",\r
+"3`.   c #70776D",\r
+"4`.   c #A9A38F",\r
+"5`.   c #B59A8B",\r
+"6`.   c #9C9C75",\r
+"7`.   c #9DA785",\r
+"8`.   c #B3B699",\r
+"9`.   c #BA8D7E",\r
+"0`.   c #93766C",\r
+"a`.   c #8C867A",\r
+"b`.   c #A29D83",\r
+"c`.   c #B2AF8F",\r
+"d`.   c #C4BC8F",\r
+"e`.   c #C7BA9D",\r
+"f`.   c #CFC8AE",\r
+"g`.   c #D3C8AE",\r
+"h`.   c #CBA689",\r
+"i`.   c #A17E5B",\r
+"j`.   c #A3A37B",\r
+"k`.   c #BEBB97",\r
+"l`.   c #C7BD9D",\r
+"m`.   c #C4B498",\r
+"n`.   c #B69687",\r
+"o`.   c #96857D",\r
+"p`.   c #948B7E",\r
+"q`.   c #A4A794",\r
+"r`.   c #CEC39D",\r
+"s`.   c #D1C8A1",\r
+"t`.   c #D3C499",\r
+"u`.   c #BDAD87",\r
+"v`.   c #C1B28B",\r
+"w`.   c #C6BB89",\r
+"x`.   c #C6BF94",\r
+"y`.   c #C8AB8F",\r
+"z`.   c #A8664F",\r
+"A`.   c #9F8352",\r
+"B`.   c #B99660",\r
+"C`.   c #BE9C60",\r
+"D`.   c #BA955E",\r
+"E`.   c #BF915B",\r
+"F`.   c #BC8E56",\r
+"G`.   c #B38652",\r
+"H`.   c #B48244",\r
+"I`.   c #AD794E",\r
+"J`.   c #A57756",\r
+"K`.   c #A16551",\r
+"L`.   c #8B695C",\r
+"M`.   c #9B7C75",\r
+"N`.   c #865051",\r
+"O`.   c #52443D",\r
+"P`.   c #5A504E",\r
+"Q`.   c #6F6C5B",\r
+"R`.   c #928778",\r
+"S`.   c #87766A",\r
+"T`.   c #808778",\r
+"U`.   c #B0A991",\r
+"V`.   c #A97C67",\r
+"W`.   c #6C6D5A",\r
+"X`.   c #A29C80",\r
+"Y`.   c #A48062",\r
+"Z`.   c #685D53",\r
+"``.   c #7C6245",\r
+"  +   c #645E59",\r
+". +   c #69665D",\r
+"+ +   c #735A4E",\r
+"@ +   c #585B49",\r
+"# +   c #6F6A56",\r
+"$ +   c #7A6D5E",\r
+"% +   c #717D56",\r
+"& +   c #8D9379",\r
+"* +   c #959076",\r
+"= +   c #989A77",\r
+"- +   c #9EA477",\r
+"; +   c #A7A37E",\r
+"> +   c #A49B79",\r
+", +   c #AAA585",\r
+"' +   c #B8A380",\r
+") +   c #B4905F",\r
+"! +   c #9A6E4D",\r
+"~ +   c #9D8260",\r
+"{ +   c #AD7063",\r
+"] +   c #5C4E40",\r
+"^ +   c #6C735B",\r
+"/ +   c #A9A381",\r
+"( +   c #AB9E79",\r
+"_ +   c #AA9377",\r
+": +   c #A38F7A",\r
+"< +   c #A69065",\r
+"[ +   c #B18C62",\r
+"} +   c #BF926A",\r
+"| +   c #BD8963",\r
+"1 +   c #AD725B",\r
+"2 +   c #89644B",\r
+"3 +   c #95705E",\r
+"4 +   c #B57964",\r
+"5 +   c #8F764F",\r
+"6 +   c #96825C",\r
+"7 +   c #9C8464",\r
+"8 +   c #9B8259",\r
+"9 +   c #977B5D",\r
+"0 +   c #8B6F59",\r
+"a +   c #83574D",\r
+"b +   c #664F42",\r
+"c +   c #6F5B43",\r
+"d +   c #775749",\r
+"e +   c #6F5840",\r
+"f +   c #6E6457",\r
+"g +   c #6E483D",\r
+"h +   c #3E2E30",\r
+"i +   c #454538",\r
+"j +   c #5A5946",\r
+"k +   c #5E624A",\r
+"l +   c #675E40",\r
+"m +   c #604A38",\r
+"n +   c #495540",\r
+"o +   c #5F5F50",\r
+"p +   c #55544E",\r
+"q +   c #A18459",\r
+"r +   c #B28E5F",\r
+"s +   c #AA7E5B",\r
+"t +   c #A07550",\r
+"u +   c #9B7445",\r
+"v +   c #96794A",\r
+"w +   c #997C55",\r
+"x +   c #A8895D",\r
+"y +   c #AB9359",\r
+"z +   c #B39F68",\r
+"A +   c #C0A069",\r
+"B +   c #BF9F7C",\r
+"C +   c #C5A37D",\r
+"D +   c #C5A77C",\r
+"E +   c #C9A571",\r
+"F +   c #CC9F7A",\r
+"G +   c #CCA97D",\r
+"H +   c #C1A67B",\r
+"I +   c #946344",\r
+"J +   c #685448",\r
+"K +   c #616664",\r
+"L +   c #7F8E82",\r
+"M +   c #A8AFA2",\r
+"N +   c #C5B694",\r
+"O +   c #BB9D71",\r
+"P +   c #8F6F4A",\r
+"Q +   c #6D524D",\r
+"R +   c #879481",\r
+"S +   c #ACAEA0",\r
+"T +   c #C4AF96",\r
+"U +   c #AA7566",\r
+"V +   c #5C5044",\r
+"W +   c #70726D",\r
+"X +   c #A77C5D",\r
+"Y +   c #6D6D5F",\r
+"Z +   c #ADA68F",\r
+"` +   c #C8B691",\r
+" .+   c #BE9C79",\r
+"..+   c #989A7A",\r
+"+.+   c #C8C18F",\r
+"@.+   c #CCBD90",\r
+"#.+   c #C8B885",\r
+"$.+   c #CBBC96",\r
+"%.+   c #C2B495",\r
+"&.+   c #AA8C7C",\r
+"*.+   c #94785F",\r
+"=.+   c #8F9A81",\r
+"-.+   c #A7A995",\r
+";.+   c #B1A393",\r
+">.+   c #A78E76",\r
+",.+   c #988F6B",\r
+"'.+   c #9EA17E",\r
+").+   c #B1B8A1",\r
+"!.+   c #C7C2A3",\r
+"~.+   c #C8C7A7",\r
+"{.+   c #CBC7A8",\r
+"].+   c #C3B893",\r
+"^.+   c #C29E80",\r
+"/.+   c #9A8E6F",\r
+"(.+   c #979F86",\r
+"_.+   c #BFBB9F",\r
+":.+   c #C8BFA6",\r
+"<.+   c #CEC2A2",\r
+"[.+   c #CBBB9B",\r
+"}.+   c #C6C0A4",\r
+"|.+   c #D1CAAA",\r
+"1.+   c #D2BC95",\r
+"2.+   c #BFB57F",\r
+"3.+   c #BFA28E",\r
+"4.+   c #9E8C72",\r
+"5.+   c #8A6C5A",\r
+"6.+   c #6A644F",\r
+"7.+   c #77765A",\r
+"8.+   c #6F7766",\r
+"9.+   c #7B8F7E",\r
+"0.+   c #BEBC9A",\r
+"a.+   c #C5B999",\r
+"b.+   c #C9BB95",\r
+"c.+   c #BDB089",\r
+"d.+   c #BDB78D",\r
+"e.+   c #C6BE9B",\r
+"f.+   c #C4A68D",\r
+"g.+   c #AA6147",\r
+"h.+   c #997F5A",\r
+"i.+   c #BB8F63",\r
+"j.+   c #BC975F",\r
+"k.+   c #BB9262",\r
+"l.+   c #BF9456",\r
+"m.+   c #B78F54",\r
+"n.+   c #B89149",\r
+"o.+   c #B88B51",\r
+"p.+   c #B4884B",\r
+"q.+   c #AA7E4B",\r
+"r.+   c #A97844",\r
+"s.+   c #A27143",\r
+"t.+   c #907440",\r
+"u.+   c #7E6642",\r
+"v.+   c #787454",\r
+"w.+   c #858566",\r
+"x.+   c #A8A06F",\r
+"y.+   c #A2A18D",\r
+"z.+   c #B5B19A",\r
+"A.+   c #AA8576",\r
+"B.+   c #727864",\r
+"C.+   c #ADAF93",\r
+"D.+   c #BCA689",\r
+"E.+   c #826253",\r
+"F.+   c #837C62",\r
+"G.+   c #978159",\r
+"H.+   c #77795D",\r
+"I.+   c #877E5D",\r
+"J.+   c #827862",\r
+"K.+   c #75725D",\r
+"L.+   c #7D7C68",\r
+"M.+   c #7B775B",\r
+"N.+   c #717452",\r
+"O.+   c #898564",\r
+"P.+   c #9F996B",\r
+"Q.+   c #A99575",\r
+"R.+   c #A48C72",\r
+"S.+   c #9E9378",\r
+"T.+   c #AC9F7D",\r
+"U.+   c #B69B78",\r
+"V.+   c #B79D78",\r
+"W.+   c #BFA374",\r
+"X.+   c #D1B47C",\r
+"Y.+   c #CEAA7F",\r
+"Z.+   c #BD8763",\r
+"`.+   c #B39D78",\r
+" ++   c #885E4B",\r
+".++   c #5A6453",\r
+"+++   c #A0987B",\r
+"@++   c #AC9A6E",\r
+"#++   c #988660",\r
+"$++   c #AA8E62",\r
+"%++   c #BC985E",\r
+"&++   c #C9A56A",\r
+"*++   c #C78C66",\r
+"=++   c #AD6C57",\r
+"-++   c #927B5A",\r
+";++   c #B08451",\r
+">++   c #B77353",\r
+",++   c #9F704C",\r
+"'++   c #897158",\r
+")++   c #9A715D",\r
+"!++   c #846748",\r
+"~++   c #76624D",\r
+"{++   c #83765A",\r
+"]++   c #927556",\r
+"^++   c #896C51",\r
+"/++   c #875D43",\r
+"(++   c #67543C",\r
+"_++   c #7F5F48",\r
+":++   c #7D5738",\r
+"<++   c #616854",\r
+"[++   c #8C816C",\r
+"}++   c #744B33",\r
+"|++   c #3F2F26",\r
+"1++   c #343A2B",\r
+"2++   c #4D5138",\r
+"3++   c #746942",\r
+"4++   c #727349",\r
+"5++   c #626149",\r
+"6++   c #6E654E",\r
+"7++   c #6D5F4C",\r
+"8++   c #9F8252",\r
+"9++   c #A17E4C",\r
+"0++   c #A1864F",\r
+"a++   c #A5875A",\r
+"b++   c #AA8860",\r
+"c++   c #AB906B",\r
+"d++   c #B49C6D",\r
+"e++   c #B89D67",\r
+"f++   c #B79C69",\r
+"g++   c #BCA376",\r
+"h++   c #C5A774",\r
+"i++   c #C5A17A",\r
+"j++   c #C8A47C",\r
+"k++   c #C8AC7C",\r
+"l++   c #BF9E80",\r
+"m++   c #C5A07A",\r
+"n++   c #C7A678",\r
+"o++   c #CAA275",\r
+"p++   c #C49F73",\r
+"q++   c #B98067",\r
+"r++   c #8C673F",\r
+"s++   c #655E4E",\r
+"t++   c #7C8A76",\r
+"u++   c #AAB1A1",\r
+"v++   c #C5C1A7",\r
+"w++   c #CEC8A5",\r
+"x++   c #CFC296",\r
+"y++   c #B7B38C",\r
+"z++   c #B29A7B",\r
+"A++   c #9D6654",\r
+"B++   c #7F8671",\r
+"C++   c #AFB3A1",\r
+"D++   c #CBBCA6",\r
+"E++   c #9E8A58",\r
+"F++   c #9A916F",\r
+"G++   c #AF905D",\r
+"H++   c #8A8A68",\r
+"I++   c #A6A383",\r
+"J++   c #A9896E",\r
+"K++   c #899076",\r
+"L++   c #BBBD97",\r
+"M++   c #CBC397",\r
+"N++   c #CBB37F",\r
+"O++   c #BDB083",\r
+"P++   c #BCB6A5",\r
+"Q++   c #8A8477",\r
+"R++   c #888F78",\r
+"S++   c #AFAD90",\r
+"T++   c #B4A588",\r
+"U++   c #A99F7C",\r
+"V++   c #9C9B79",\r
+"W++   c #A3A48B",\r
+"X++   c #B5BB9F",\r
+"Y++   c #C6C6B2",\r
+"Z++   c #D2CDB1",\r
+"`++   c #D1CCAE",\r
+" @+   c #D2CBAB",\r
+".@+   c #D0C6A2",\r
+"+@+   c #CEB79C",\r
+"@@+   c #C9B592",\r
+"#@+   c #C3BB97",\r
+"$@+   c #CFBBA1",\r
+"%@+   c #B69E86",\r
+"&@+   c #9C8774",\r
+"*@+   c #9E9E88",\r
+"=@+   c #BFB9A3",\r
+"-@+   c #CEC19F",\r
+";@+   c #CEBF95",\r
+">@+   c #C8B094",\r
+",@+   c #C1AC87",\r
+"'@+   c #93846F",\r
+")@+   c #96957E",\r
+"!@+   c #B1B08A",\r
+"~@+   c #B1AF87",\r
+"{@+   c #B0AF89",\r
+"]@+   c #C9BA9A",\r
+"^@+   c #C8B993",\r
+"/@+   c #C3B493",\r
+"(@+   c #BFB789",\r
+"_@+   c #C7AE95",\r
+":@+   c #C4A386",\r
+"<@+   c #9B614A",\r
+"[@+   c #97754F",\r
+"}@+   c #B0895A",\r
+"|@+   c #B89156",\r
+"1@+   c #BA8A57",\r
+"2@+   c #B88E4D",\r
+"3@+   c #B88E5A",\r
+"4@+   c #BF9657",\r
+"5@+   c #BD9158",\r
+"6@+   c #B69159",\r
+"7@+   c #B7924D",\r
+"8@+   c #B78D4D",\r
+"9@+   c #A98554",\r
+"0@+   c #A47F48",\r
+"a@+   c #A37B57",\r
+"b@+   c #9C7C5F",\r
+"c@+   c #977967",\r
+"d@+   c #947B6B",\r
+"e@+   c #A5A087",\r
+"f@+   c #B1967E",\r
+"g@+   c #7F8A76",\r
+"h@+   c #AAAB99",\r
+"i@+   c #C2AD97",\r
+"j@+   c #9D765F",\r
+"k@+   c #6C615B",\r
+"l@+   c #8F6C5D",\r
+"m@+   c #A39E7E",\r
+"n@+   c #A1937B",\r
+"o@+   c #9F8F77",\r
+"p@+   c #997F6E",\r
+"q@+   c #74685A",\r
+"r@+   c #6D695C",\r
+"s@+   c #615751",\r
+"t@+   c #5D6854",\r
+"u@+   c #6E5752",\r
+"v@+   c #68584A",\r
+"w@+   c #83794D",\r
+"x@+   c #98885C",\r
+"y@+   c #BA9E69",\r
+"z@+   c #C2A06F",\r
+"A@+   c #C6AB7E",\r
+"B@+   c #C9AD80",\r
+"C@+   c #C78D71",\r
+"D@+   c #B88C67",\r
+"E@+   c #A1755E",\r
+"F@+   c #5F5D51",\r
+"G@+   c #978B6E",\r
+"H@+   c #A18B5D",\r
+"I@+   c #B09560",\r
+"J@+   c #C1A06D",\r
+"K@+   c #C5926C",\r
+"L@+   c #A76548",\r
+"M@+   c #8B6A49",\r
+"N@+   c #A88D67",\r
+"O@+   c #BF8666",\r
+"P@+   c #A66E4D",\r
+"Q@+   c #846B43",\r
+"R@+   c #916C4F",\r
+"S@+   c #766547",\r
+"T@+   c #85663E",\r
+"U@+   c #948155",\r
+"V@+   c #A28A60",\r
+"W@+   c #AE8562",\r
+"X@+   c #AC7C5A",\r
+"Y@+   c #956442",\r
+"Z@+   c #7A543B",\r
+"`@+   c #826248",\r
+" #+   c #7D543F",\r
+".#+   c #60423C",\r
+"+#+   c #6B6E5F",\r
+"@#+   c #A58863",\r
+"##+   c #7D5739",\r
+"$#+   c #45372F",\r
+"%#+   c #3C3931",\r
+"&#+   c #55543A",\r
+"*#+   c #686248",\r
+"=#+   c #736B51",\r
+"-#+   c #726945",\r
+";#+   c #6C5B4C",\r
+">#+   c #97805B",\r
+",#+   c #A59362",\r
+"'#+   c #B29864",\r
+")#+   c #B69C70",\r
+"!#+   c #BB9F6E",\r
+"~#+   c #BE9D74",\r
+"{#+   c #BDA07B",\r
+"]#+   c #B69E6C",\r
+"^#+   c #BD9F78",\r
+"/#+   c #BA9D7B",\r
+"(#+   c #BDA77D",\r
+"_#+   c #C4A17C",\r
+":#+   c #C0A077",\r
+"<#+   c #C3A47B",\r
+"[#+   c #C5A373",\r
+"}#+   c #C29C6E",\r
+"|#+   c #BD9D76",\r
+"1#+   c #C5A876",\r
+"2#+   c #C7A880",\r
+"3#+   c #C59F82",\r
+"4#+   c #C29471",\r
+"5#+   c #A8755C",\r
+"6#+   c #7B4C38",\r
+"7#+   c #616A5C",\r
+"8#+   c #92A394",\r
+"9#+   c #C1BDA1",\r
+"0#+   c #C6C3A1",\r
+"a#+   c #D3C6A6",\r
+"b#+   c #D0C0A1",\r
+"c#+   c #BEA48C",\r
+"d#+   c #978674",\r
+"e#+   c #7F6B5C",\r
+"f#+   c #948C6F",\r
+"g#+   c #9F9462",\r
+"h#+   c #939F88",\r
+"i#+   c #BABDA3",\r
+"j#+   c #C9C1A0",\r
+"k#+   c #C6C09C",\r
+"l#+   c #C8BB93",\r
+"m#+   c #BDA282",\r
+"n#+   c #AB9875",\r
+"o#+   c #A09871",\r
+"p#+   c #AD8D7B",\r
+"q#+   c #885C4D",\r
+"r#+   c #747E68",\r
+"s#+   c #AEB099",\r
+"t#+   c #C6A67F",\r
+"u#+   c #988463",\r
+"v#+   c #B3AA85",\r
+"w#+   c #B0AD95",\r
+"x#+   c #BFB195",\r
+"y#+   c #B7A982",\r
+"z#+   c #ACA78D",\r
+"A#+   c #B5B58B",\r
+"B#+   c #B7B694",\r
+"C#+   c #BDBD9E",\r
+"D#+   c #C6C8B0",\r
+"E#+   c #D5CCB0",\r
+"F#+   c #D6CDAE",\r
+"G#+   c #D0C9AA",\r
+"H#+   c #D0CAAC",\r
+"I#+   c #D2C6A8",\r
+"J#+   c #D2BDA5",\r
+"K#+   c #C8AE92",\r
+"L#+   c #CBBBA2",\r
+"M#+   c #CBBE99",\r
+"N#+   c #C3B384",\r
+"O#+   c #A29F7A",\r
+"P#+   c #A1A487",\r
+"Q#+   c #BDAE9F",\r
+"R#+   c #C8BCA2",\r
+"S#+   c #C5BF9E",\r
+"T#+   c #CCBE9E",\r
+"U#+   c #C4BC9A",\r
+"V#+   c #B99C86",\r
+"W#+   c #9B6A59",\r
+"X#+   c #919176",\r
+"Y#+   c #B3AA8A",\r
+"Z#+   c #C7BF98",\r
+"`#+   c #CBBA9D",\r
+" $+   c #C49984",\r
+".$+   c #A77955",\r
+"+$+   c #C6BB96",\r
+"@$+   c #C7AC85",\r
+"#$+   c #BEA782",\r
+"$$+   c #C0A975",\r
+"%$+   c #A0664A",\r
+"&$+   c #847152",\r
+"*$+   c #B29153",\r
+"=$+   c #BB8A58",\r
+"-$+   c #B78C54",\r
+";$+   c #BB904E",\r
+">$+   c #BD9157",\r
+",$+   c #BA8D54",\r
+"'$+   c #BE9557",\r
+")$+   c #C2975F",\r
+"!$+   c #BD9A60",\r
+"~$+   c #BC9666",\r
+"{$+   c #C09861",\r
+"]$+   c #C29D5A",\r
+"^$+   c #BC955E",\r
+"/$+   c #BB925A",\r
+"($+   c #B98F51",\r
+"_$+   c #B79052",\r
+":$+   c #B6854E",\r
+"<$+   c #A7774C",\r
+"[$+   c #977153",\r
+"}$+   c #A37F63",\r
+"|$+   c #A07158",\r
+"1$+   c #806D4F",\r
+"2$+   c #8F7859",\r
+"3$+   c #A38D7B",\r
+"4$+   c #AD7B63",\r
+"5$+   c #6F5D47",\r
+"6$+   c #7F7360",\r
+"7$+   c #A47E77",\r
+"8$+   c #876A5E",\r
+"9$+   c #8D8177",\r
+"0$+   c #827363",\r
+"a$+   c #82876A",\r
+"b$+   c #9E7368",\r
+"c$+   c #675B51",\r
+"d$+   c #636955",\r
+"e$+   c #807351",\r
+"f$+   c #998A5A",\r
+"g$+   c #B09B6F",\r
+"h$+   c #C2A775",\r
+"i$+   c #C6A275",\r
+"j$+   c #C2A773",\r
+"k$+   c #CBAD7B",\r
+"l$+   c #CBA67A",\r
+"m$+   c #CE9E75",\r
+"n$+   c #B95558",\r
+"o$+   c #814E3C",\r
+"p$+   c #8B6751",\r
+"q$+   c #736951",\r
+"r$+   c #A19C66",\r
+"s$+   c #BEA46B",\r
+"t$+   c #CBA570",\r
+"u$+   c #C79D68",\r
+"v$+   c #B88C6A",\r
+"w$+   c #9F714E",\r
+"x$+   c #877347",\r
+"y$+   c #A28662",\r
+"z$+   c #C57C5E",\r
+"A$+   c #B2734C",\r
+"B$+   c #7F6346",\r
+"C$+   c #7C5D43",\r
+"D$+   c #826F4F",\r
+"E$+   c #9E8A63",\r
+"F$+   c #B89B65",\r
+"G$+   c #B69A6B",\r
+"H$+   c #BB9364",\r
+"I$+   c #B58E65",\r
+"J$+   c #AC8664",\r
+"K$+   c #A88556",\r
+"L$+   c #A46E4E",\r
+"M$+   c #8B543A",\r
+"N$+   c #775C40",\r
+"O$+   c #87533C",\r
+"P$+   c #653A2C",\r
+"Q$+   c #51544D",\r
+"R$+   c #B1AF8E",\r
+"S$+   c #B3A780",\r
+"T$+   c #978661",\r
+"U$+   c #84825D",\r
+"V$+   c #7A6F4E",\r
+"W$+   c #735845",\r
+"X$+   c #6D614D",\r
+"Y$+   c #616045",\r
+"Z$+   c #56554D",\r
+"`$+   c #A38761",\r
+" %+   c #B08F61",\r
+".%+   c #B1916D",\r
+"+%+   c #BAA072",\r
+"@%+   c #C2A16F",\r
+"#%+   c #C1A76F",\r
+"$%+   c #BE9E76",\r
+"%%+   c #BC9D72",\r
+"&%+   c #C2A679",\r
+"*%+   c #BEA178",\r
+"=%+   c #B99C76",\r
+"-%+   c #BB9A7B",\r
+";%+   c #BC9F73",\r
+">%+   c #BE9D70",\r
+",%+   c #C09B72",\r
+"'%+   c #BEA074",\r
+")%+   c #B78768",\r
+"!%+   c #9A734F",\r
+"~%+   c #766043",\r
+"{%+   c #6D5C3D",\r
+"]%+   c #5E635D",\r
+"^%+   c #979D91",\r
+"/%+   c #C8C59C",\r
+"(%+   c #CBC39B",\r
+"_%+   c #CBAC8E",\r
+":%+   c #B19983",\r
+"<%+   c #977768",\r
+"[%+   c #71514C",\r
+"}%+   c #544944",\r
+"|%+   c #657D7A",\r
+"1%+   c #B9B99E",\r
+"2%+   c #BDB999",\r
+"3%+   c #C1B496",\r
+"4%+   c #C5C2A1",\r
+"5%+   c #C2B188",\r
+"6%+   c #A69E77",\r
+"7%+   c #AFA57E",\r
+"8%+   c #946C57",\r
+"9%+   c #696653",\r
+"0%+   c #7F857A",\r
+"a%+   c #938C7A",\r
+"b%+   c #A8A881",\r
+"c%+   c #B8B49C",\r
+"d%+   c #C8B7A0",\r
+"e%+   c #CFB799",\r
+"f%+   c #D0B589",\r
+"g%+   c #ADA795",\r
+"h%+   c #A7946F",\r
+"i%+   c #968F71",\r
+"j%+   c #B4B190",\r
+"k%+   c #CDC9AF",\r
+"l%+   c #D2CAB2",\r
+"m%+   c #D4CBAE",\r
+"n%+   c #D2C7A9",\r
+"o%+   c #CEBCA5",\r
+"p%+   c #C7B39C",\r
+"q%+   c #CCB69E",\r
+"r%+   c #C7BC9C",\r
+"s%+   c #CEB79F",\r
+"t%+   c #C0B097",\r
+"u%+   c #BC9489",\r
+"v%+   c #977568",\r
+"w%+   c #929D8B",\r
+"x%+   c #C1BDA5",\r
+"y%+   c #CCC1A0",\r
+"z%+   c #CBC39F",\r
+"A%+   c #C0B99F",\r
+"B%+   c #B4AC96",\r
+"C%+   c #A89472",\r
+"D%+   c #9A8C6F",\r
+"E%+   c #A4947C",\r
+"F%+   c #B0B192",\r
+"G%+   c #C0BA94",\r
+"H%+   c #C6BD97",\r
+"I%+   c #BEA591",\r
+"J%+   c #A97A5D",\r
+"K%+   c #A98B61",\r
+"L%+   c #AD9D7D",\r
+"M%+   c #BBAD8E",\r
+"N%+   c #C5B88A",\r
+"O%+   c #C4AF84",\r
+"P%+   c #B27452",\r
+"Q%+   c #8E744F",\r
+"R%+   c #B3905C",\r
+"S%+   c #BA8F5C",\r
+"T%+   c #BC8F5F",\r
+"U%+   c #C19A5C",\r
+"V%+   c #B89354",\r
+"W%+   c #C0945D",\r
+"X%+   c #C8A05A",\r
+"Y%+   c #BC9B55",\r
+"Z%+   c #BC9462",\r
+"`%+   c #C1975F",\r
+" &+   c #C89E66",\r
+".&+   c #C19967",\r
+"+&+   c #BC976B",\r
+"@&+   c #BF9861",\r
+"#&+   c #C59F5B",\r
+"$&+   c #BE9563",\r
+"%&+   c #B8905A",\r
+"&&+   c #B6905B",\r
+"*&+   c #B18C50",\r
+"=&+   c #AF8756",\r
+"-&+   c #BB8557",\r
+";&+   c #AA834C",\r
+">&+   c #AE8D4E",\r
+",&+   c #B19353",\r
+"'&+   c #AA825A",\r
+")&+   c #9B8C72",\r
+"!&+   c #9C8B66",\r
+"~&+   c #A29772",\r
+"{&+   c #B6976A",\r
+"]&+   c #A1995E",\r
+"^&+   c #AC9B69",\r
+"/&+   c #BBA472",\r
+"(&+   c #BFA672",\r
+"_&+   c #C5A678",\r
+":&+   c #C2A67B",\r
+"<&+   c #C6A279",\r
+"[&+   c #C5A781",\r
+"}&+   c #C9A572",\r
+"|&+   c #BE8E58",\r
+"1&+   c #A86A44",\r
+"2&+   c #80673A",\r
+"3&+   c #8E8058",\r
+"4&+   c #A8A36F",\r
+"5&+   c #C8B684",\r
+"6&+   c #CEA780",\r
+"7&+   c #CD986B",\r
+"8&+   c #BD8A58",\r
+"9&+   c #9E724B",\r
+"0&+   c #9E8953",\r
+"a&+   c #B9A46D",\r
+"b&+   c #BD916E",\r
+"c&+   c #B3694A",\r
+"d&+   c #7F5A38",\r
+"e&+   c #7D7644",\r
+"f&+   c #9F8A5A",\r
+"g&+   c #BA976D",\r
+"h&+   c #C19C6B",\r
+"i&+   c #C49C6A",\r
+"j&+   c #BA9978",\r
+"k&+   c #B48C65",\r
+"l&+   c #A9875C",\r
+"m&+   c #A87853",\r
+"n&+   c #966040",\r
+"o&+   c #755535",\r
+"p&+   c #855939",\r
+"q&+   c #553B2D",\r
+"r&+   c #51574C",\r
+"s&+   c #AE9F7D",\r
+"t&+   c #A7946D",\r
+"u&+   c #A5946E",\r
+"v&+   c #9D926A",\r
+"w&+   c #948C66",\r
+"x&+   c #8B8154",\r
+"y&+   c #70553E",\r
+"z&+   c #43442E",\r
+"A&+   c #A99262",\r
+"B&+   c #AA915A",\r
+"C&+   c #AD9169",\r
+"D&+   c #B79865",\r
+"E&+   c #BC9D64",\r
+"F&+   c #BB966D",\r
+"G&+   c #BF9370",\r
+"H&+   c #BF9D77",\r
+"I&+   c #BD976E",\r
+"J&+   c #BB9870",\r
+"K&+   c #BB9D64",\r
+"L&+   c #B89B6C",\r
+"M&+   c #B69A73",\r
+"N&+   c #BDA169",\r
+"O&+   c #BCA47A",\r
+"P&+   c #BF9C76",\r
+"Q&+   c #BA906B",\r
+"R&+   c #A57661",\r
+"S&+   c #765640",\r
+"T&+   c #6A624F",\r
+"U&+   c #9A9A77",\r
+"V&+   c #B1A76A",\r
+"W&+   c #989768",\r
+"X&+   c #A4A380",\r
+"Y&+   c #B7B28C",\r
+"Z&+   c #B5A383",\r
+"`&+   c #AF9C7C",\r
+" *+   c #A58367",\r
+".*+   c #8D8469",\r
+"+*+   c #8C8067",\r
+"@*+   c #7C5B4D",\r
+"#*+   c #5D6B61",\r
+"$*+   c #A0A690",\r
+"%*+   c #C5B99F",\r
+"&*+   c #BAB592",\r
+"**+   c #B4B194",\r
+"=*+   c #CDC098",\r
+"-*+   c #C29876",\r
+";*+   c #93866A",\r
+">*+   c #ADA676",\r
+",*+   c #B3AD88",\r
+"'*+   c #ACA486",\r
+")*+   c #A4A592",\r
+"!*+   c #ADA78B",\r
+"~*+   c #B5A790",\r
+"{*+   c #C0BCA1",\r
+"]*+   c #CFC2A1",\r
+"^*+   c #D0C09D",\r
+"/*+   c #CEB492",\r
+"(*+   c #C8AF89",\r
+"_*+   c #B9A58E",\r
+":*+   c #959580",\r
+"<*+   c #B0AA91",\r
+"[*+   c #C1B9A4",\r
+"}*+   c #C4B2A9",\r
+"|*+   c #BBA79C",\r
+"1*+   c #B1A68C",\r
+"2*+   c #B2AD97",\r
+"3*+   c #B89989",\r
+"4*+   c #9D9175",\r
+"5*+   c #AA9386",\r
+"6*+   c #A68567",\r
+"7*+   c #A09C81",\r
+"8*+   c #C9B89E",\r
+"9*+   c #B6AD8E",\r
+"0*+   c #BEA28B",\r
+"a*+   c #9A835A",\r
+"b*+   c #8E9879",\r
+"c*+   c #B8B69F",\r
+"d*+   c #C5A997",\r
+"e*+   c #A38F75",\r
+"f*+   c #BAB693",\r
+"g*+   c #CAC394",\r
+"h*+   c #B0AF9C",\r
+"i*+   c #BD9F8B",\r
+"j*+   c #9D8568",\r
+"k*+   c #9D9A81",\r
+"l*+   c #B8B294",\r
+"m*+   c #B9B092",\r
+"n*+   c #9BA393",\r
+"o*+   c #B49F87",\r
+"p*+   c #B28968",\r
+"q*+   c #78604B",\r
+"r*+   c #9B9B82",\r
+"s*+   c #C8BE9B",\r
+"t*+   c #C7B18F",\r
+"u*+   c #A07357",\r
+"v*+   c #9C7C4C",\r
+"w*+   c #B29059",\r
+"x*+   c #B6935D",\r
+"y*+   c #C39358",\r
+"z*+   c #C1975C",\r
+"A*+   c #BC9662",\r
+"B*+   c #C29C59",\r
+"C*+   c #BC9460",\r
+"D*+   c #BE9960",\r
+"E*+   c #C09D6C",\r
+"F*+   c #BF9761",\r
+"G*+   c #CA9F64",\r
+"H*+   c #CDA764",\r
+"I*+   c #C4A165",\r
+"J*+   c #C3A26C",\r
+"K*+   c #C3A36E",\r
+"L*+   c #C8A470",\r
+"M*+   c #C79E73",\r
+"N*+   c #C7A468",\r
+"O*+   c #C4A26E",\r
+"P*+   c #C79C61",\r
+"Q*+   c #CBA374",\r
+"R*+   c #C6A271",\r
+"S*+   c #C9A46D",\r
+"T*+   c #CDA56E",\r
+"U*+   c #CAA468",\r
+"V*+   c #C4A56A",\r
+"W*+   c #C6A463",\r
+"X*+   c #C3A067",\r
+"Y*+   c #C9A46E",\r
+"Z*+   c #CCAB73",\r
+"`*+   c #D1B482",\r
+" =+   c #CEB382",\r
+".=+   c #CAB186",\r
+"+=+   c #CDA87F",\r
+"@=+   c #CAA576",\r
+"#=+   c #CCAC7A",\r
+"$=+   c #C5A776",\r
+"%=+   c #CAA278",\r
+"&=+   c #C5AA82",\r
+"*=+   c #CAB07F",\r
+"==+   c #C8A97C",\r
+"-=+   c #C8A57B",\r
+";=+   c #C7A472",\r
+">=+   c #C3A573",\r
+",=+   c #C2A66E",\r
+"'=+   c #C7B77D",\r
+")=+   c #CDB786",\r
+"!=+   c #C39971",\r
+"~=+   c #B88660",\r
+"{=+   c #B99251",\r
+"]=+   c #B99F69",\r
+"^=+   c #C89F68",\r
+"/=+   c #B2805F",\r
+"(=+   c #8B5B3D",\r
+"_=+   c #695C43",\r
+":=+   c #A39561",\r
+"<=+   c #C39F6F",\r
+"[=+   c #C3936E",\r
+"}=+   c #BE916C",\r
+"|=+   c #B78C5A",\r
+"1=+   c #B48758",\r
+"2=+   c #AD865C",\r
+"3=+   c #AD8A65",\r
+"4=+   c #A77C52",\r
+"5=+   c #966646",\r
+"6=+   c #7B5639",\r
+"7=+   c #654536",\r
+"8=+   c #574831",\r
+"9=+   c #5B604D",\r
+"0=+   c #9C9588",\r
+"a=+   c #999370",\r
+"b=+   c #AB9975",\r
+"c=+   c #878466",\r
+"d=+   c #94936D",\r
+"e=+   c #8B8563",\r
+"f=+   c #7A7D58",\r
+"g=+   c #A48C66",\r
+"h=+   c #AB9260",\r
+"i=+   c #B39A67",\r
+"j=+   c #BB9C69",\r
+"k=+   c #BB9867",\r
+"l=+   c #B89768",\r
+"m=+   c #B59C70",\r
+"n=+   c #B69469",\r
+"o=+   c #B59C6C",\r
+"p=+   c #B89A76",\r
+"q=+   c #BB986C",\r
+"r=+   c #BC9F77",\r
+"s=+   c #B68A66",\r
+"t=+   c #975C52",\r
+"u=+   c #72564B",\r
+"v=+   c #74715B",\r
+"w=+   c #9E9D84",\r
+"x=+   c #BCBA9E",\r
+"y=+   c #A48A74",\r
+"z=+   c #88745D",\r
+"A=+   c #757359",\r
+"B=+   c #9FA177",\r
+"C=+   c #ABA47A",\r
+"D=+   c #9F7D68",\r
+"E=+   c #806D57",\r
+"F=+   c #847F5E",\r
+"G=+   c #756E52",\r
+"H=+   c #76817A",\r
+"I=+   c #94816A",\r
+"J=+   c #A8AB96",\r
+"K=+   c #B89C7F",\r
+"L=+   c #9B896E",\r
+"M=+   c #B0AA93",\r
+"N=+   c #BFAF99",\r
+"O=+   c #BEB49B",\r
+"P=+   c #B7B29E",\r
+"Q=+   c #BCB79D",\r
+"R=+   c #C0AC8D",\r
+"S=+   c #BDB49B",\r
+"T=+   c #D3C6A1",\r
+"U=+   c #CABC93",\r
+"V=+   c #BDB189",\r
+"W=+   c #B6AF85",\r
+"X=+   c #B2A88C",\r
+"Y=+   c #BFA899",\r
+"Z=+   c #AC8384",\r
+"`=+   c #8A7673",\r
+" -+   c #867269",\r
+".-+   c #796D65",\r
+"+-+   c #887B61",\r
+"@-+   c #98937B",\r
+"#-+   c #979369",\r
+"$-+   c #A19482",\r
+"%-+   c #8A6A57",\r
+"&-+   c #868E79",\r
+"*-+   c #C2B29B",\r
+"=-+   c #B4A68B",\r
+"--+   c #A28B70",\r
+";-+   c #828B6D",\r
+">-+   c #ADA790",\r
+",-+   c #B59E8B",\r
+"'-+   c #93705C",\r
+")-+   c #8D957B",\r
+"!-+   c #BDBA95",\r
+"~-+   c #BBBA9C",\r
+"{-+   c #BDAF96",\r
+"]-+   c #B9937A",\r
+"^-+   c #AF9F84",\r
+"/-+   c #BAB68E",\r
+"(-+   c #A6937B",\r
+"_-+   c #8C8C77",\r
+":-+   c #999E9C",\r
+"<-+   c #AD6F76",\r
+"[-+   c #66533F",\r
+"}-+   c #928671",\r
+"|-+   c #B5A48B",\r
+"1-+   c #C39980",\r
+"2-+   c #8C6149",\r
+"3-+   c #926D46",\r
+"4-+   c #B09367",\r
+"5-+   c #B9955F",\r
+"6-+   c #B99759",\r
+"7-+   c #B9965E",\r
+"8-+   c #BC965A",\r
+"9-+   c #BC9258",\r
+"0-+   c #C49355",\r
+"a-+   c #BC9B64",\r
+"b-+   c #BF9C6C",\r
+"c-+   c #C79B6C",\r
+"d-+   c #CAA06F",\r
+"e-+   c #C3A16D",\r
+"f-+   c #C5A26F",\r
+"g-+   c #BEA06D",\r
+"h-+   c #C2A572",\r
+"i-+   c #C7A878",\r
+"j-+   c #CAA16E",\r
+"k-+   c #CAA978",\r
+"l-+   c #C8AA73",\r
+"m-+   c #CCA86F",\r
+"n-+   c #CEAA79",\r
+"o-+   c #CEAB71",\r
+"p-+   c #D0AD6E",\r
+"q-+   c #D0AB6E",\r
+"r-+   c #CDAD75",\r
+"s-+   c #CCA871",\r
+"t-+   c #CAA176",\r
+"u-+   c #D0AB7B",\r
+"v-+   c #D3AD7E",\r
+"w-+   c #D3AF7F",\r
+"x-+   c #CFAB7E",\r
+"y-+   c #CEAE80",\r
+"z-+   c #C6A578",\r
+"A-+   c #C9AB82",\r
+"B-+   c #C8A37A",\r
+"C-+   c #C4A680",\r
+"D-+   c #C8AE7D",\r
+"E-+   c #CBB085",\r
+"F-+   c #CEA97D",\r
+"G-+   c #D1B185",\r
+"H-+   c #CBA17B",\r
+"I-+   c #BA8E60",\r
+"J-+   c #B08F5D",\r
+"K-+   c #BFA161",\r
+"L-+   c #C6AC74",\r
+"M-+   c #C79972",\r
+"N-+   c #C28D5A",\r
+"O-+   c #A99960",\r
+"P-+   c #A36E58",\r
+"Q-+   c #735139",\r
+"R-+   c #898159",\r
+"S-+   c #B8936A",\r
+"T-+   c #BF9465",\r
+"U-+   c #BB956C",\r
+"V-+   c #BB9368",\r
+"W-+   c #B7865F",\r
+"X-+   c #B68959",\r
+"Y-+   c #AE8051",\r
+"Z-+   c #AC7E58",\r
+"`-+   c #AF7F5D",\r
+" ;+   c #A98355",\r
+".;+   c #A16F3D",\r
+"+;+   c #85542F",\r
+"@;+   c #585135",\r
+"#;+   c #6B6942",\r
+"$;+   c #8C8B5C",\r
+"%;+   c #999672",\r
+"&;+   c #A59E83",\r
+"*;+   c #AB9D76",\r
+"=;+   c #AD9F81",\r
+"-;+   c #948D67",\r
+";;+   c #918562",\r
+">;+   c #878061",\r
+",;+   c #85896B",\r
+"';+   c #8C876D",\r
+");+   c #AE8B5F",\r
+"!;+   c #B0965C",\r
+"~;+   c #AB8D65",\r
+"{;+   c #B59669",\r
+"];+   c #B2936A",\r
+"^;+   c #B38C66",\r
+"/;+   c #B49467",\r
+"(;+   c #B2945F",\r
+"_;+   c #B29460",\r
+":;+   c #B69A67",\r
+"<;+   c #B39566",\r
+"[;+   c #B69C6D",\r
+"};+   c #B99A6C",\r
+"|;+   c #B68D68",\r
+"1;+   c #A66A5D",\r
+"2;+   c #7F5743",\r
+"3;+   c #7E6E53",\r
+"4;+   c #928B73",\r
+"5;+   c #BFB79D",\r
+"6;+   c #B1837E",\r
+"7;+   c #86635A",\r
+"8;+   c #707155",\r
+"9;+   c #8D7C61",\r
+"0;+   c #736D5A",\r
+"a;+   c #888E6B",\r
+"b;+   c #A1A47D",\r
+"c;+   c #A6805C",\r
+"d;+   c #634D40",\r
+"e;+   c #525C51",\r
+"f;+   c #6C7161",\r
+"g;+   c #76867F",\r
+"h;+   c #A09A85",\r
+"i;+   c #72664D",\r
+"j;+   c #676652",\r
+"k;+   c #696355",\r
+"l;+   c #78785F",\r
+"m;+   c #A29F84",\r
+"n;+   c #BDB599",\r
+"o;+   c #BFAE9A",\r
+"p;+   c #A88B80",\r
+"q;+   c #8A7565",\r
+"r;+   c #786E5F",\r
+"s;+   c #9EA08C",\r
+"t;+   c #C9B89D",\r
+"u;+   c #C2A286",\r
+"v;+   c #BBBCAA",\r
+"w;+   c #CEC2AA",\r
+"x;+   c #CBBE9D",\r
+"y;+   c #C0BC9B",\r
+"z;+   c #C1AF93",\r
+"A;+   c #BCA784",\r
+"B;+   c #B89181",\r
+"C;+   c #886C52",\r
+"D;+   c #637864",\r
+"E;+   c #908C6C",\r
+"F;+   c #8C8075",\r
+"G;+   c #85746A",\r
+"H;+   c #807864",\r
+"I;+   c #8D8572",\r
+"J;+   c #888768",\r
+"K;+   c #9D9E83",\r
+"L;+   c #9B7964",\r
+"M;+   c #859288",\r
+"N;+   c #C6B19A",\r
+"O;+   c #C4B492",\r
+"P;+   c #BAB19B",\r
+"Q;+   c #B3917C",\r
+"R;+   c #8D9787",\r
+"S;+   c #A2A292",\r
+"T;+   c #B5826E",\r
+"U;+   c #7E8470",\r
+"V;+   c #ABAC91",\r
+"W;+   c #C6B08F",\r
+"X;+   c #C4B18A",\r
+"Y;+   c #C2B090",\r
+"Z;+   c #A49E82",\r
+"`;+   c #A5A483",\r
+" >+   c #BFBA8F",\r
+".>+   c #BEA57B",\r
+"+>+   c #93785A",\r
+"@>+   c #788879",\r
+"#>+   c #A58970",\r
+"$>+   c #6E6D4B",\r
+"%>+   c #938A6F",\r
+"&>+   c #A98D7A",\r
+"*>+   c #BEA784",\r
+"=>+   c #A5815E",\r
+"->+   c #9C7847",\r
+";>+   c #B7935B",\r
+">>+   c #B79A6B",\r
+",>+   c #B6966D",\r
+"'>+   c #B79060",\r
+")>+   c #BA9C66",\r
+"!>+   c #BE9956",\r
+"~>+   c #BB8B50",\r
+"{>+   c #BB985D",\r
+"]>+   c #C39F67",\r
+"^>+   c #C49A66",\r
+"/>+   c #C6A165",\r
+"(>+   c #C3A272",\r
+"_>+   c #BC9F76",\r
+":>+   c #C4A978",\r
+"<>+   c #C6A678",\r
+"[>+   c #C5A171",\r
+"}>+   c #CCA677",\r
+"|>+   c #C9AB77",\r
+"1>+   c #C8AE7A",\r
+"2>+   c #CFA97D",\r
+"3>+   c #CFA979",\r
+"4>+   c #CEAB73",\r
+"5>+   c #C8AA77",\r
+"6>+   c #CCAD6D",\r
+"7>+   c #C7A27C",\r
+"8>+   c #C7A87A",\r
+"9>+   c #C8AA7D",\r
+"0>+   c #CCA97E",\r
+"a>+   c #CDA678",\r
+"b>+   c #CEA976",\r
+"c>+   c #CCA878",\r
+"d>+   c #C6A96E",\r
+"e>+   c #C39E72",\r
+"f>+   c #CAAA77",\r
+"g>+   c #C8AA72",\r
+"h>+   c #C3A47A",\r
+"i>+   c #C09E7A",\r
+"j>+   c #C4A67E",\r
+"k>+   c #C8A278",\r
+"l>+   c #CDAD86",\r
+"m>+   c #D0A979",\r
+"n>+   c #C9A16B",\r
+"o>+   c #BCA36A",\r
+"p>+   c #C1AC77",\r
+"q>+   c #C6B489",\r
+"r>+   c #C5916C",\r
+"s>+   c #AE8756",\r
+"t>+   c #B09252",\r
+"u>+   c #7C523E",\r
+"v>+   c #634D38",\r
+"w>+   c #876953",\r
+"x>+   c #AA8D5B",\r
+"y>+   c #B38D5E",\r
+"z>+   c #B99261",\r
+"A>+   c #B58E57",\r
+"B>+   c #B48256",\r
+"C>+   c #B7854D",\r
+"D>+   c #A97549",\r
+"E>+   c #A77E51",\r
+"F>+   c #AB835D",\r
+"G>+   c #AA8D5D",\r
+"H>+   c #A0895B",\r
+"I>+   c #867C55",\r
+"J>+   c #858F6C",\r
+"K>+   c #A4A27C",\r
+"L>+   c #AEAB7E",\r
+"M>+   c #B2A983",\r
+"N>+   c #AEA07B",\r
+"O>+   c #9D876A",\r
+"P>+   c #8C8B76",\r
+"Q>+   c #9D9479",\r
+"R>+   c #9D9774",\r
+"S>+   c #8B8561",\r
+"T>+   c #818057",\r
+"U>+   c #7E705C",\r
+"V>+   c #62554E",\r
+"W>+   c #B08D5E",\r
+"X>+   c #AF9267",\r
+"Y>+   c #AE9164",\r
+"Z>+   c #B3925C",\r
+"`>+   c #B2915E",\r
+" ,+   c #B2935D",\r
+".,+   c #B38C61",\r
+"+,+   c #B18F68",\r
+"@,+   c #AF8E62",\r
+"#,+   c #B49B6C",\r
+"$,+   c #B5956C",\r
+"%,+   c #AB916A",\r
+"&,+   c #B4966F",\r
+"*,+   c #B2835F",\r
+"=,+   c #9A5D51",\r
+"-,+   c #7C5C42",\r
+";,+   c #777259",\r
+">,+   c #A39F7B",\r
+",,+   c #B7A583",\r
+"',+   c #BDA88B",\r
+"),+   c #866C5E",\r
+"!,+   c #696250",\r
+"~,+   c #757E55",\r
+"{,+   c #959376",\r
+"],+   c #AB8E77",\r
+"^,+   c #8D836C",\r
+"/,+   c #6F5D50",\r
+"(,+   c #64665C",\r
+"_,+   c #8E6C58",\r
+":,+   c #654C44",\r
+"<,+   c #555F52",\r
+"[,+   c #84725A",\r
+"},+   c #71695F",\r
+"|,+   c #717066",\r
+"1,+   c #9EA187",\r
+"2,+   c #A39A75",\r
+"3,+   c #959069",\r
+"4,+   c #868A65",\r
+"5,+   c #8C8A69",\r
+"6,+   c #948C6E",\r
+"7,+   c #B3A288",\r
+"8,+   c #AFA086",\r
+"9,+   c #907B64",\r
+"0,+   c #907C69",\r
+"a,+   c #817761",\r
+"b,+   c #7E887C",\r
+"c,+   c #C4BB9F",\r
+"d,+   c #C2B27F",\r
+"e,+   c #ADA79D",\r
+"f,+   c #C4AD9E",\r
+"g,+   c #999681",\r
+"h,+   c #A7967E",\r
+"i,+   c #948966",\r
+"j,+   c #838E85",\r
+"k,+   c #A8A18A",\r
+"l,+   c #A19C7E",\r
+"m,+   c #8F8060",\r
+"n,+   c #83845F",\r
+"o,+   c #817859",\r
+"p,+   c #5F6356",\r
+"q,+   c #7A867E",\r
+"r,+   c #A37A70",\r
+"s,+   c #8F9186",\r
+"t,+   c #C6A683",\r
+"u,+   c #C8A981",\r
+"v,+   c #C2BA91",\r
+"w,+   c #B49E75",\r
+"x,+   c #8F8A7D",\r
+"y,+   c #94907B",\r
+"z,+   c #B5B099",\r
+"A,+   c #8F7162",\r
+"B,+   c #CCA879",\r
+"C,+   c #C8AD70",\r
+"D,+   c #C7C49C",\r
+"E,+   c #CAC599",\r
+"F,+   c #A58360",\r
+"G,+   c #5E6258",\r
+"H,+   c #868A75",\r
+"I,+   c #B8B194",\r
+"J,+   c #C3A78F",\r
+"K,+   c #B3AF9B",\r
+"L,+   c #BAA07D",\r
+"M,+   c #B18656",\r
+"N,+   c #B0895B",\r
+"O,+   c #B5945D",\r
+"P,+   c #B49A68",\r
+"Q,+   c #B5905B",\r
+"R,+   c #BD965F",\r
+"S,+   c #B99756",\r
+"T,+   c #B5955C",\r
+"U,+   c #B78F65",\r
+"V,+   c #BC9059",\r
+"W,+   c #BC9C60",\r
+"X,+   c #BD9862",\r
+"Y,+   c #C29966",\r
+"Z,+   c #C09F6D",\r
+"`,+   c #C19F6A",\r
+" '+   c #BF9B6F",\r
+".'+   c #C1A277",\r
+"+'+   c #C1A573",\r
+"@'+   c #C7A475",\r
+"#'+   c #C7A375",\r
+"$'+   c #C7A973",\r
+"%'+   c #C8AA78",\r
+"&'+   c #CCA36D",\r
+"*'+   c #CBA775",\r
+"='+   c #C7A073",\r
+"-'+   c #C9A376",\r
+";'+   c #C7A46F",\r
+">'+   c #C3A176",\r
+",'+   c #BF9D76",\r
+"''+   c #C19C72",\r
+")'+   c #C5A572",\r
+"!'+   c #C5A16C",\r
+"~'+   c #C39D6B",\r
+"{'+   c #C0A474",\r
+"]'+   c #BE9B71",\r
+"^'+   c #C29E70",\r
+"/'+   c #C3A068",\r
+"('+   c #C09966",\r
+"_'+   c #B8926A",\r
+":'+   c #BB9B6C",\r
+"<'+   c #BC936D",\r
+"['+   c #C89A6E",\r
+"}'+   c #C69C65",\r
+"|'+   c #B99F64",\r
+"1'+   c #CCAF87",\r
+"2'+   c #CAA37E",\r
+"3'+   c #C49662",\r
+"4'+   c #BD9C63",\r
+"5'+   c #B0986B",\r
+"6'+   c #B27B58",\r
+"7'+   c #7C5044",\r
+"8'+   c #57573B",\r
+"9'+   c #766C42",\r
+"0'+   c #7E5D4A",\r
+"a'+   c #7C644C",\r
+"b'+   c #A98657",\r
+"c'+   c #AB7F4E",\r
+"d'+   c #A97C55",\r
+"e'+   c #AE8050",\r
+"f'+   c #AC7E51",\r
+"g'+   c #A07C5B",\r
+"h'+   c #A29060",\r
+"i'+   c #AD9C68",\r
+"j'+   c #A1A381",\r
+"k'+   c #ABA289",\r
+"l'+   c #B0AB8A",\r
+"m'+   c #B2AA8A",\r
+"n'+   c #B2A48A",\r
+"o'+   c #A39978",\r
+"p'+   c #958D65",\r
+"q'+   c #8A8372",\r
+"r'+   c #9B8979",\r
+"s'+   c #83735E",\r
+"t'+   c #736E50",\r
+"u'+   c #716B55",\r
+"v'+   c #64614B",\r
+"w'+   c #B2945C",\r
+"x'+   c #B19167",\r
+"y'+   c #B19163",\r
+"z'+   c #AE8C66",\r
+"A'+   c #AA8A68",\r
+"B'+   c #B38D5B",\r
+"C'+   c #B79664",\r
+"D'+   c #B19360",\r
+"E'+   c #B7935E",\r
+"F'+   c #B3986B",\r
+"G'+   c #AA926A",\r
+"H'+   c #AF8567",\r
+"I'+   c #A37460",\r
+"J'+   c #75543A",\r
+"K'+   c #6D6750",\r
+"L'+   c #8B926E",\r
+"M'+   c #A09E7E",\r
+"N'+   c #AC967C",\r
+"O'+   c #A37B69",\r
+"P'+   c #7E6C5C",\r
+"Q'+   c #6C6554",\r
+"R'+   c #72755A",\r
+"S'+   c #8F9A79",\r
+"T'+   c #B9BB8C",\r
+"U'+   c #C3B68D",\r
+"V'+   c #BB8F73",\r
+"W'+   c #86685B",\r
+"X'+   c #624440",\r
+"Y'+   c #414E47",\r
+"Z'+   c #6C5647",\r
+"`'+   c #534A3E",\r
+" )+   c #626B51",\r
+".)+   c #74594F",\r
+"+)+   c #5B6756",\r
+"@)+   c #99A694",\r
+"#)+   c #B9B39C",\r
+"$)+   c #BAA69A",\r
+"%)+   c #A99186",\r
+"&)+   c #978471",\r
+"*)+   c #827C5D",\r
+"=)+   c #968679",\r
+"-)+   c #998C79",\r
+";)+   c #968D6D",\r
+">)+   c #9A907A",\r
+",)+   c #A78A68",\r
+"')+   c #807C6B",\r
+"))+   c #A3AF9F",\r
+"!)+   c #C3B691",\r
+"~)+   c #B29086",\r
+"{)+   c #A58E7F",\r
+"])+   c #989478",\r
+"^)+   c #99A083",\r
+"/)+   c #B4A17A",\r
+"()+   c #B9AC7F",\r
+"_)+   c #B7B09D",\r
+":)+   c #B5A984",\r
+"<)+   c #A0977C",\r
+"[)+   c #BDBE9A",\r
+"})+   c #B9B291",\r
+"|)+   c #AF9F7F",\r
+"1)+   c #9B8961",\r
+"2)+   c #7B7762",\r
+"3)+   c #7B8A7D",\r
+"4)+   c #9F7973",\r
+"5)+   c #87867C",\r
+"6)+   c #B9AA8D",\r
+"7)+   c #C9AF87",\r
+"8)+   c #C7C191",\r
+"9)+   c #C1C090",\r
+"0)+   c #C3BD94",\r
+"a)+   c #C5BE8C",\r
+"b)+   c #C1B897",\r
+"c)+   c #AC8379",\r
+"d)+   c #827870",\r
+"e)+   c #B7B591",\r
+"f)+   c #C8C194",\r
+"g)+   c #C8CAA9",\r
+"h)+   c #CFCDA5",\r
+"i)+   c #D5CEA4",\r
+"j)+   c #D3CBA4",\r
+"k)+   c #D4C69D",\r
+"l)+   c #BFA68B",\r
+"m)+   c #815B51",\r
+"n)+   c #63675A",\r
+"o)+   c #9A9F8D",\r
+"p)+   c #BA9A89",\r
+"q)+   c #957F72",\r
+"r)+   c #918E7A",\r
+"s)+   c #A6886B",\r
+"t)+   c #997C49",\r
+"u)+   c #AF9059",\r
+"v)+   c #A78F67",\r
+"w)+   c #AE8D63",\r
+"x)+   c #B39464",\r
+"y)+   c #BA9460",\r
+"z)+   c #B69660",\r
+"A)+   c #B99255",\r
+"B)+   c #B98E5B",\r
+"C)+   c #B89763",\r
+"D)+   c #B79461",\r
+"E)+   c #B5956A",\r
+"F)+   c #C09963",\r
+"G)+   c #BE9C61",\r
+"H)+   c #BD9468",\r
+"I)+   c #C29D65",\r
+"J)+   c #BFA26B",\r
+"K)+   c #C19C70",\r
+"L)+   c #C9A771",\r
+"M)+   c #C89C6C",\r
+"N)+   c #CAA86C",\r
+"O)+   c #C4A966",\r
+"P)+   c #C29E6D",\r
+"Q)+   c #C29B65",\r
+"R)+   c #C29E6A",\r
+"S)+   c #B7986E",\r
+"T)+   c #B8986E",\r
+"U)+   c #BA9568",\r
+"V)+   c #B89866",\r
+"W)+   c #BB9C5E",\r
+"X)+   c #B29266",\r
+"Y)+   c #AC9069",\r
+"Z)+   c #B59161",\r
+"`)+   c #B28E65",\r
+" !+   c #AD8760",\r
+".!+   c #B7905F",\r
+"+!+   c #B18D67",\r
+"@!+   c #A98B60",\r
+"#!+   c #B38558",\r
+"$!+   c #AE8656",\r
+"%!+   c #A88F58",\r
+"&!+   c #B29467",\r
+"*!+   c #BCA062",\r
+"=!+   c #B6A46D",\r
+"-!+   c #C1A67A",\r
+";!+   c #C69673",\r
+">!+   c #BE996B",\r
+",!+   c #C29F6C",\r
+"'!+   c #BA9F75",\r
+")!+   c #A57262",\r
+"!!+   c #8F4C43",\r
+"~!+   c #553A35",\r
+"{!+   c #6D6D55",\r
+"]!+   c #806854",\r
+"^!+   c #6C5343",\r
+"/!+   c #605A47",\r
+"(!+   c #615847",\r
+"_!+   c #786742",\r
+":!+   c #866E4B",\r
+"<!+   c #897252",\r
+"[!+   c #836E57",\r
+"}!+   c #816853",\r
+"|!+   c #7D6550",\r
+"1!+   c #6E604C",\r
+"2!+   c #837B5D",\r
+"3!+   c #A99A76",\r
+"4!+   c #AEA374",\r
+"5!+   c #A5A287",\r
+"6!+   c #B3A67F",\r
+"7!+   c #B1AA87",\r
+"8!+   c #ACA286",\r
+"9!+   c #A9A380",\r
+"0!+   c #A59B7A",\r
+"a!+   c #9F947D",\r
+"b!+   c #8A8864",\r
+"c!+   c #81815C",\r
+"d!+   c #8B8D56",\r
+"e!+   c #7A775E",\r
+"f!+   c #B38F68",\r
+"g!+   c #B29262",\r
+"h!+   c #B48E63",\r
+"i!+   c #AF915F",\r
+"j!+   c #B09671",\r
+"k!+   c #B59064",\r
+"l!+   c #AB8666",\r
+"m!+   c #A77C58",\r
+"n!+   c #8A6451",\r
+"o!+   c #7C643B",\r
+"p!+   c #797E5D",\r
+"q!+   c #949A79",\r
+"r!+   c #A7AA88",\r
+"s!+   c #756455",\r
+"t!+   c #6E6F49",\r
+"u!+   c #707E5B",\r
+"v!+   c #98A480",\r
+"w!+   c #BDBA8F",\r
+"x!+   c #CAC29F",\r
+"y!+   c #CAC79C",\r
+"z!+   c #C6A58A",\r
+"A!+   c #9A5A55",\r
+"B!+   c #4A4232",\r
+"C!+   c #374034",\r
+"D!+   c #56624B",\r
+"E!+   c #747D57",\r
+"F!+   c #7C785D",\r
+"G!+   c #7D8060",\r
+"H!+   c #83896B",\r
+"I!+   c #8BA085",\r
+"J!+   c #C0B69C",\r
+"K!+   c #BB8A80",\r
+"L!+   c #896769",\r
+"M!+   c #705E53",\r
+"N!+   c #6F7559",\r
+"O!+   c #898568",\r
+"P!+   c #7E6D60",\r
+"Q!+   c #6B6C62",\r
+"R!+   c #80736A",\r
+"S!+   c #78706A",\r
+"T!+   c #7D746D",\r
+"U!+   c #8F7664",\r
+"V!+   c #899889",\r
+"W!+   c #B6A97C",\r
+"X!+   c #9D9574",\r
+"Y!+   c #999979",\r
+"Z!+   c #A9AE95",\r
+"`!+   c #B8B79F",\r
+" ~+   c #BDB593",\r
+".~+   c #B79B81",\r
+"+~+   c #968072",\r
+"@~+   c #AFA076",\r
+"#~+   c #B4AC92",\r
+"$~+   c #B2B295",\r
+"%~+   c #947564",\r
+"&~+   c #765D56",\r
+"*~+   c #545450",\r
+"=~+   c #656F5E",\r
+"-~+   c #997565",\r
+";~+   c #7D8B79",\r
+">~+   c #B9B798",\r
+",~+   c #CDC49C",\r
+"'~+   c #CFCA9D",\r
+")~+   c #D3CDA2",\r
+"!~+   c #D2CCA9",\r
+"~~+   c #D1CAA2",\r
+"{~+   c #CCB49D",\r
+"]~+   c #AE917F",\r
+"^~+   c #937166",\r
+"/~+   c #949479",\r
+"(~+   c #D0CBAB",\r
+"_~+   c #D4C8A7",\r
+":~+   c #CFCBA6",\r
+"<~+   c #D2CBA3",\r
+"[~+   c #CEB99C",\r
+"}~+   c #A98362",\r
+"|~+   c #685E47",\r
+"1~+   c #757A6C",\r
+"2~+   c #A79770",\r
+"3~+   c #7D5C58",\r
+"4~+   c #5E4A4C",\r
+"5~+   c #5A483C",\r
+"6~+   c #5B4938",\r
+"7~+   c #8E7859",\r
+"8~+   c #A07A4C",\r
+"9~+   c #906651",\r
+"0~+   c #80684A",\r
+"a~+   c #906A4A",\r
+"b~+   c #9E7147",\r
+"c~+   c #AB7E55",\r
+"d~+   c #A17D60",\r
+"e~+   c #AA8459",\r
+"f~+   c #AC8953",\r
+"g~+   c #AB875A",\r
+"h~+   c #AE845F",\r
+"i~+   c #AF8557",\r
+"j~+   c #B2855A",\r
+"k~+   c #BA905E",\r
+"l~+   c #BA9861",\r
+"m~+   c #BA9A67",\r
+"n~+   c #BC9C67",\r
+"o~+   c #BA9566",\r
+"p~+   c #BA946D",\r
+"q~+   c #C19D6C",\r
+"r~+   c #C69E69",\r
+"s~+   c #C49D6E",\r
+"t~+   c #BD9D6B",\r
+"u~+   c #B9915A",\r
+"v~+   c #B68B5E",\r
+"w~+   c #B79168",\r
+"x~+   c #AE8B5D",\r
+"y~+   c #B68F5B",\r
+"z~+   c #AE884A",\r
+"A~+   c #A2794C",\r
+"B~+   c #AC754F",\r
+"C~+   c #9A744F",\r
+"D~+   c #926949",\r
+"E~+   c #976C3B",\r
+"F~+   c #947040",\r
+"G~+   c #916A51",\r
+"H~+   c #9D764F",\r
+"I~+   c #9B7247",\r
+"J~+   c #947143",\r
+"K~+   c #9A6D52",\r
+"L~+   c #A0805D",\r
+"M~+   c #AB8F63",\r
+"N~+   c #BB9775",\r
+"O~+   c #B8896C",\r
+"P~+   c #9A7151",\r
+"Q~+   c #9B7D53",\r
+"R~+   c #A77364",\r
+"S~+   c #A46F57",\r
+"T~+   c #866B4E",\r
+"U~+   c #75593F",\r
+"V~+   c #806239",\r
+"W~+   c #765939",\r
+"X~+   c #8A834E",\r
+"Y~+   c #7E7A53",\r
+"Z~+   c #857957",\r
+"`~+   c #806E51",\r
+" {+   c #6D704E",\r
+".{+   c #796552",\r
+"+{+   c #6C6956",\r
+"@{+   c #696356",\r
+"#{+   c #635B49",\r
+"${+   c #665944",\r
+"%{+   c #64654E",\r
+"&{+   c #7C7C5B",\r
+"*{+   c #958D72",\r
+"={+   c #A4A076",\r
+"-{+   c #ABA381",\r
+";{+   c #AB9D85",\r
+">{+   c #AFA586",\r
+",{+   c #AFA786",\r
+"'{+   c #ACA287",\r
+"){+   c #AFAB84",\r
+"!{+   c #AFA282",\r
+"~{+   c #A09C7E",\r
+"{{+   c #AFAB80",\r
+"]{+   c #B3B080",\r
+"^{+   c #A5A37B",\r
+"/{+   c #B69864",\r
+"({+   c #B48F68",\r
+"_{+   c #AE8C60",\r
+":{+   c #B79465",\r
+"<{+   c #B79456",\r
+"[{+   c #B08C59",\r
+"}{+   c #B08662",\r
+"|{+   c #A88056",\r
+"1{+   c #977253",\r
+"2{+   c #916F53",\r
+"3{+   c #807251",\r
+"4{+   c #7B6F62",\r
+"5{+   c #938B6C",\r
+"6{+   c #BEA690",\r
+"7{+   c #B9AD86",\r
+"8{+   c #A99F6F",\r
+"9{+   c #8E976D",\r
+"0{+   c #9BA482",\r
+"a{+   c #B6B999",\r
+"b{+   c #C7C29E",\r
+"c{+   c #CDC19D",\r
+"d{+   c #CEC5A2",\r
+"e{+   c #CCC698",\r
+"f{+   c #C5BF9F",\r
+"g{+   c #C79884",\r
+"h{+   c #875D4F",\r
+"i{+   c #52633A",\r
+"j{+   c #656A46",\r
+"k{+   c #878863",\r
+"l{+   c #949573",\r
+"m{+   c #9D9966",\r
+"n{+   c #9BA579",\r
+"o{+   c #B8B98A",\r
+"p{+   c #BDBD94",\r
+"q{+   c #C5AC90",\r
+"r{+   c #9F715A",\r
+"s{+   c #59604E",\r
+"t{+   c #848F6F",\r
+"u{+   c #A39477",\r
+"v{+   c #8D836A",\r
+"w{+   c #68725A",\r
+"x{+   c #6C7A57",\r
+"y{+   c #6F6F56",\r
+"z{+   c #716E55",\r
+"A{+   c #726E5E",\r
+"B{+   c #887665",\r
+"C{+   c #8A8370",\r
+"D{+   c #A4AB8E",\r
+"E{+   c #BDBB9B",\r
+"F{+   c #C0C199",\r
+"G{+   c #CDC5A7",\r
+"H{+   c #CEC2A8",\r
+"I{+   c #C9AF93",\r
+"J{+   c #AB7364",\r
+"K{+   c #74836E",\r
+"L{+   c #A7AC90",\r
+"M{+   c #A69B8B",\r
+"N{+   c #9D817B",\r
+"O{+   c #999376",\r
+"P{+   c #858066",\r
+"Q{+   c #837F5E",\r
+"R{+   c #665C4A",\r
+"S{+   c #5D6A4F",\r
+"T{+   c #968167",\r
+"U{+   c #8B8F6B",\r
+"V{+   c #B5B9A3",\r
+"W{+   c #D1C8A6",\r
+"X{+   c #D3CFA4",\r
+"Y{+   c #D5D0A7",\r
+"Z{+   c #D3CEA5",\r
+"`{+   c #D2CCA4",\r
+" ]+   c #CEBBA5",\r
+".]+   c #AD8776",\r
+"+]+   c #787468",\r
+"@]+   c #9E7F72",\r
+"#]+   c #89876C",\r
+"$]+   c #AAAF96",\r
+"%]+   c #D0C99B",\r
+"&]+   c #CFC5A4",\r
+"*]+   c #CDC5A2",\r
+"=]+   c #D3C5A5",\r
+"-]+   c #CEB79A",\r
+";]+   c #B9A180",\r
+">]+   c #976660",\r
+",]+   c #666A58",\r
+"']+   c #90846B",\r
+")]+   c #9D7360",\r
+"!]+   c #624E3D",\r
+"~]+   c #4B4939",\r
+"{]+   c #6A6544",\r
+"]]+   c #836E46",\r
+"^]+   c #796748",\r
+"/]+   c #7D6644",\r
+"(]+   c #6C6548",\r
+"_]+   c #6D6851",\r
+":]+   c #5D5236",\r
+"<]+   c #6F6344",\r
+"[]+   c #906C4D",\r
+"}]+   c #745D50",\r
+"|]+   c #756B55",\r
+"1]+   c #956E52",\r
+"2]+   c #8A6142",\r
+"3]+   c #7A5644",\r
+"4]+   c #795F47",\r
+"5]+   c #8B6747",\r
+"6]+   c #936F49",\r
+"7]+   c #A96F52",\r
+"8]+   c #9D8054",\r
+"9]+   c #AB805E",\r
+"0]+   c #A78662",\r
+"a]+   c #AC895D",\r
+"b]+   c #B19258",\r
+"c]+   c #AE9358",\r
+"d]+   c #A87559",\r
+"e]+   c #97744C",\r
+"f]+   c #94775A",\r
+"g]+   c #A37450",\r
+"h]+   c #8B664C",\r
+"i]+   c #7A5F42",\r
+"j]+   c #8D6E4E",\r
+"k]+   c #8A7853",\r
+"l]+   c #897C55",\r
+"m]+   c #987B53",\r
+"n]+   c #746B4F",\r
+"o]+   c #74643F",\r
+"p]+   c #5B4F35",\r
+"q]+   c #524B3A",\r
+"r]+   c #5A4533",\r
+"s]+   c #674A36",\r
+"t]+   c #674F33",\r
+"u]+   c #656240",\r
+"v]+   c #7C7859",\r
+"w]+   c #79614A",\r
+"x]+   c #765C45",\r
+"y]+   c #825C4B",\r
+"z]+   c #716347",\r
+"A]+   c #6D7049",\r
+"B]+   c #787A4F",\r
+"C]+   c #877E59",\r
+"D]+   c #8F8654",\r
+"E]+   c #A0975B",\r
+"F]+   c #A99F71",\r
+"G]+   c #ADA377",\r
+"H]+   c #B69B6C",\r
+"I]+   c #B6AF84",\r
+"J]+   c #A08A76",\r
+"K]+   c #88755D",\r
+"L]+   c #8C865F",\r
+"M]+   c #9A8B64",\r
+"N]+   c #868463",\r
+"O]+   c #7E7459",\r
+"P]+   c #827A59",\r
+"Q]+   c #82785F",\r
+"R]+   c #8E856C",\r
+"S]+   c #9C9773",\r
+"T]+   c #9E9F76",\r
+"U]+   c #A99D86",\r
+"V]+   c #ABA785",\r
+"W]+   c #A8AB88",\r
+"X]+   c #A9A588",\r
+"Y]+   c #B2A283",\r
+"Z]+   c #B4AE82",\r
+"`]+   c #ACAB86",\r
+" ^+   c #AEA684",\r
+".^+   c #A59580",\r
+"+^+   c #9C9A81",\r
+"@^+   c #A8AA90",\r
+"#^+   c #AE9267",\r
+"$^+   c #B09160",\r
+"%^+   c #B08C58",\r
+"&^+   c #AA8C5D",\r
+"*^+   c #A7834F",\r
+"=^+   c #A66E54",\r
+"-^+   c #946649",\r
+";^+   c #846447",\r
+">^+   c #857B57",\r
+",^+   c #929072",\r
+"'^+   c #977E6E",\r
+")^+   c #8D675F",\r
+"!^+   c #B3A18A",\r
+"~^+   c #ABA47F",\r
+"{^+   c #A99D7E",\r
+"]^+   c #BEB99C",\r
+"^^+   c #CBC29D",\r
+"/^+   c #C9C1A1",\r
+"(^+   c #CAC5A2",\r
+"_^+   c #CAC7A0",\r
+":^+   c #CAC0A3",\r
+"<^+   c #C4A07D",\r
+"[^+   c #8F825B",\r
+"}^+   c #7E7B59",\r
+"|^+   c #90935E",\r
+"1^+   c #959D76",\r
+"2^+   c #ABAA84",\r
+"3^+   c #AFA575",\r
+"4^+   c #A59A7A",\r
+"5^+   c #B8AB86",\r
+"6^+   c #BCB494",\r
+"7^+   c #C2B698",\r
+"8^+   c #B89067",\r
+"9^+   c #80795A",\r
+"0^+   c #9B9A79",\r
+"a^+   c #AAAA85",\r
+"b^+   c #A7A880",\r
+"c^+   c #AB9D6D",\r
+"d^+   c #8B7A59",\r
+"e^+   c #6A5F4C",\r
+"f^+   c #666E5F",\r
+"g^+   c #8C8C6F",\r
+"h^+   c #8E958B",\r
+"i^+   c #C2BFA6",\r
+"j^+   c #D0C7AC",\r
+"k^+   c #D4CAAD",\r
+"l^+   c #D1B898",\r
+"m^+   c #AC8154",\r
+"n^+   c #788471",\r
+"o^+   c #A6A595",\r
+"p^+   c #A29677",\r
+"q^+   c #7D866D",\r
+"r^+   c #999D80",\r
+"s^+   c #9E9E80",\r
+"t^+   c #96A68A",\r
+"u^+   c #999B76",\r
+"v^+   c #879572",\r
+"w^+   c #A49270",\r
+"x^+   c #AFBBAC",\r
+"y^+   c #D4CBA8",\r
+"z^+   c #D3D1AA",\r
+"A^+   c #D5CFAF",\r
+"B^+   c #D3C9A8",\r
+"C^+   c #D5CBA3",\r
+"D^+   c #CFBAA3",\r
+"E^+   c #B07666",\r
+"F^+   c #686553",\r
+"G^+   c #988264",\r
+"H^+   c #98A085",\r
+"I^+   c #BFB999",\r
+"J^+   c #C4B392",\r
+"K^+   c #CABF9E",\r
+"L^+   c #C6B394",\r
+"M^+   c #C4A48E",\r
+"N^+   c #AD937C",\r
+"O^+   c #9D8872",\r
+"P^+   c #996761",\r
+"Q^+   c #717A5B",\r
+"R^+   c #95836B",\r
+"S^+   c #9D9683",\r
+"T^+   c #937467",\r
+"U^+   c #615242",\r
+"V^+   c #7C6859",\r
+"W^+   c #8E7650",\r
+"X^+   c #8E8556",\r
+"Y^+   c #948D59",\r
+"Z^+   c #95905F",\r
+"`^+   c #A9A074",\r
+" /+   c #9D895E",\r
+"./+   c #A08D6B",\r
+"+/+   c #A39373",\r
+"@/+   c #8D7B63",\r
+"#/+   c #767666",\r
+"$/+   c #8B604C",\r
+"%/+   c #595644",\r
+"&/+   c #6E6E56",\r
+"*/+   c #777656",\r
+"=/+   c #7E6155",\r
+"-/+   c #7E6549",\r
+";/+   c #938861",\r
+">/+   c #9B604D",\r
+",/+   c #575346",\r
+"'/+   c #767355",\r
+")/+   c #9D7150",\r
+"!/+   c #9B895D",\r
+"~/+   c #938465",\r
+"{/+   c #979061",\r
+"]/+   c #958E65",\r
+"^/+   c #9D6F56",\r
+"//+   c #695244",\r
+"(/+   c #6E715F",\r
+"_/+   c #987956",\r
+":/+   c #705C47",\r
+"</+   c #585136",\r
+"[/+   c #66755A",\r
+"}/+   c #929576",\r
+"|/+   c #A7A390",\r
+"1/+   c #A89D8C",\r
+"2/+   c #ABA882",\r
+"3/+   c #8E9672",\r
+"4/+   c #7D8E6F",\r
+"5/+   c #788765",\r
+"6/+   c #858E63",\r
+"7/+   c #899060",\r
+"8/+   c #8C9B6F",\r
+"9/+   c #A8AC98",\r
+"0/+   c #9D977A",\r
+"a/+   c #7E886E",\r
+"b/+   c #8B8D6E",\r
+"c/+   c #948C68",\r
+"d/+   c #ABA675",\r
+"e/+   c #BCA989",\r
+"f/+   c #AF9878",\r
+"g/+   c #9C8872",\r
+"h/+   c #A38E79",\r
+"i/+   c #C2B39A",\r
+"j/+   c #B5A38C",\r
+"k/+   c #A29C8C",\r
+"l/+   c #9B9081",\r
+"m/+   c #94856B",\r
+"n/+   c #766259",\r
+"o/+   c #584D41",\r
+"p/+   c #766D5E",\r
+"q/+   c #8E7E69",\r
+"r/+   c #938061",\r
+"s/+   c #8C7260",\r
+"t/+   c #896748",\r
+"u/+   c #7C6249",\r
+"v/+   c #67534E",\r
+"w/+   c #61574E",\r
+"x/+   c #6A5E56",\r
+"y/+   c #747459",\r
+"z/+   c #939178",\r
+"A/+   c #A8A388",\r
+"B/+   c #AAA683",\r
+"C/+   c #A9A283",\r
+"D/+   c #A8A588",\r
+"E/+   c #B0AE86",\r
+"F/+   c #B3AE86",\r
+"G/+   c #AAA381",\r
+"H/+   c #A5A278",\r
+"I/+   c #A3AB89",\r
+"J/+   c #A97D58",\r
+"K/+   c #A57C4D",\r
+"L/+   c #9B7254",\r
+"M/+   c #A07C4D",\r
+"N/+   c #90744B",\r
+"O/+   c #6C5A41",\r
+"P/+   c #7D7B71",\r
+"Q/+   c #97887E",\r
+"R/+   c #9E8985",\r
+"S/+   c #895758",\r
+"T/+   c #504741",\r
+"U/+   c #697362",\r
+"V/+   c #A79F85",\r
+"W/+   c #A3987A",\r
+"X/+   c #9B7A5E",\r
+"Y/+   c #797668",\r
+"Z/+   c #ADA788",\r
+"`/+   c #C1B890",\r
+" (+   c #C1BC9C",\r
+".(+   c #C7C099",\r
+"+(+   c #CAB895",\r
+"@(+   c #BEA28E",\r
+"#(+   c #AA896D",\r
+"$(+   c #8F7E5D",\r
+"%(+   c #888964",\r
+"&(+   c #AAB07D",\r
+"*(+   c #A39E7B",\r
+"=(+   c #A89F75",\r
+"-(+   c #A28361",\r
+";(+   c #827665",\r
+">(+   c #997E66",\r
+",(+   c #908475",\r
+"'(+   c #B5AE91",\r
+")(+   c #C1AD8A",\r
+"!(+   c #B49577",\r
+"~(+   c #9C9878",\r
+"{(+   c #A4A37D",\r
+"](+   c #B0AC87",\r
+"^(+   c #AE9970",\r
+"/(+   c #987F59",\r
+"((+   c #6C5D47",\r
+"_(+   c #615040",\r
+":(+   c #4D5253",\r
+"<(+   c #5B6D66",\r
+"[(+   c #88927A",\r
+"}(+   c #948D74",\r
+"|(+   c #A2A693",\r
+"1(+   c #CCC8A6",\r
+"2(+   c #D1CAA5",\r
+"3(+   c #D6CDAA",\r
+"4(+   c #D2C0A3",\r
+"5(+   c #C0987D",\r
+"6(+   c #979671",\r
+"7(+   c #B2AE92",\r
+"8(+   c #B19270",\r
+"9(+   c #82836B",\r
+"0(+   c #A6AD99",\r
+"a(+   c #C1BB93",\r
+"b(+   c #BFC0A3",\r
+"c(+   c #C3C4A6",\r
+"d(+   c #C7C5A3",\r
+"e(+   c #C6C1A7",\r
+"f(+   c #C4A592",\r
+"g(+   c #8E8269",\r
+"h(+   c #ABB29E",\r
+"i(+   c #CFC6A5",\r
+"j(+   c #CFCBA9",\r
+"k(+   c #D2CEAD",\r
+"l(+   c #D3CBA6",\r
+"m(+   c #D2C8AA",\r
+"n(+   c #D0C0A4",\r
+"o(+   c #BD896D",\r
+"p(+   c #6B6348",\r
+"q(+   c #8B9180",\r
+"r(+   c #AC866D",\r
+"s(+   c #95886B",\r
+"t(+   c #A78C77",\r
+"u(+   c #926F64",\r
+"v(+   c #91776A",\r
+"w(+   c #8E735F",\r
+"x(+   c #8A6960",\r
+"y(+   c #73644E",\r
+"z(+   c #7A7A58",\r
+"A(+   c #8F855F",\r
+"B(+   c #8D8C5F",\r
+"C(+   c #A38A6F",\r
+"D(+   c #9D8A78",\r
+"E(+   c #9F8777",\r
+"F(+   c #775751",\r
+"G(+   c #62524E",\r
+"H(+   c #77574D",\r
+"I(+   c #715949",\r
+"J(+   c #6F5E4B",\r
+"K(+   c #886C5E",\r
+"L(+   c #937C6A",\r
+"M(+   c #915F56",\r
+"N(+   c #775445",\r
+"O(+   c #917A65",\r
+"P(+   c #96785C",\r
+"Q(+   c #897962",\r
+"R(+   c #967953",\r
+"S(+   c #656648",\r
+"T(+   c #818760",\r
+"U(+   c #9D935A",\r
+"V(+   c #8F6654",\r
+"W(+   c #5F4E3C",\r
+"X(+   c #7A796B",\r
+"Y(+   c #A98877",\r
+"Z(+   c #6A6252",\r
+"`(+   c #919365",\r
+" _+   c #B2A06D",\r
+"._+   c #B4B373",\r
+"+_+   c #BAB784",\r
+"@_+   c #B9B285",\r
+"#_+   c #B7B182",\r
+"$_+   c #B6AD86",\r
+"%_+   c #B38870",\r
+"&_+   c #74554F",\r
+"*_+   c #596662",\r
+"=_+   c #957862",\r
+"-_+   c #746B54",\r
+";_+   c #798763",\r
+">_+   c #A5A174",\r
+",_+   c #A0916F",\r
+"'_+   c #9E8D89",\r
+")_+   c #A77774",\r
+"!_+   c #737072",\r
+"~_+   c #908B79",\r
+"{_+   c #9A8F7D",\r
+"]_+   c #9A958B",\r
+"^_+   c #A1A196",\r
+"/_+   c #B5B09F",\r
+"(_+   c #BDB69C",\r
+"__+   c #C2BFA1",\r
+":_+   c #C9C0AF",\r
+"<_+   c #C6BDA3",\r
+"[_+   c #BCB5A1",\r
+"}_+   c #C6A286",\r
+"|_+   c #C99965",\r
+"1_+   c #C5A078",\r
+"2_+   c #BF9378",\r
+"3_+   c #83594E",\r
+"4_+   c #595446",\r
+"5_+   c #6A7159",\r
+"6_+   c #B39D84",\r
+"7_+   c #B08871",\r
+"8_+   c #9C8567",\r
+"9_+   c #846C57",\r
+"0_+   c #72573D",\r
+"a_+   c #523E33",\r
+"b_+   c #3F3E37",\r
+"c_+   c #383739",\r
+"d_+   c #4D473E",\r
+"e_+   c #4D4443",\r
+"f_+   c #4A3D37",\r
+"g_+   c #44342F",\r
+"h_+   c #43372F",\r
+"i_+   c #3E3A37",\r
+"j_+   c #3F463F",\r
+"k_+   c #454A4C",\r
+"l_+   c #564C46",\r
+"m_+   c #5F4F45",\r
+"n_+   c #646358",\r
+"o_+   c #797665",\r
+"p_+   c #9F9164",\r
+"q_+   c #8E8872",\r
+"r_+   c #9A8E7B",\r
+"s_+   c #A6967C",\r
+"t_+   c #A3917E",\r
+"u_+   c #A18B74",\r
+"v_+   c #9E8870",\r
+"w_+   c #8B8373",\r
+"x_+   c #9A6B51",\r
+"y_+   c #7F5F44",\r
+"z_+   c #736F5A",\r
+"A_+   c #A58C63",\r
+"B_+   c #9D795B",\r
+"C_+   c #7C6250",\r
+"D_+   c #6C655E",\r
+"E_+   c #755D5C",\r
+"F_+   c #694C45",\r
+"G_+   c #716B67",\r
+"H_+   c #93605C",\r
+"I_+   c #4A423F",\r
+"J_+   c #6D756D",\r
+"K_+   c #9E857E",\r
+"L_+   c #948371",\r
+"M_+   c #927F67",\r
+"N_+   c #838D73",\r
+"O_+   c #9C9C7C",\r
+"P_+   c #B6986E",\r
+"Q_+   c #BBB07D",\r
+"R_+   c #B7AC95",\r
+"S_+   c #B79483",\r
+"T_+   c #A07C6D",\r
+"U_+   c #877E68",\r
+"V_+   c #898E69",\r
+"W_+   c #A6B082",\r
+"X_+   c #C0C191",\r
+"Y_+   c #CAC892",\r
+"Z_+   c #C2BE9A",\r
+"`_+   c #BFB48A",\r
+" :+   c #A18F6A",\r
+".:+   c #79876F",\r
+"+:+   c #8D7F58",\r
+"@:+   c #847B53",\r
+"#:+   c #9D9D7D",\r
+"$:+   c #B19F86",\r
+"%:+   c #A69070",\r
+"&:+   c #8D8F71",\r
+"*:+   c #7E846A",\r
+"=:+   c #858C6B",\r
+"-:+   c #878464",\r
+";:+   c #747D64",\r
+">:+   c #7C886A",\r
+",:+   c #989C7D",\r
+"':+   c #A18D74",\r
+"):+   c #868B7C",\r
+"!:+   c #BDBCA6",\r
+"~:+   c #D1CCAD",\r
+"{:+   c #D5CCA8",\r
+"]:+   c #D3C39F",\r
+"^:+   c #C8AC8F",\r
+"/:+   c #B5A987",\r
+"(:+   c #B29D7C",\r
+"_:+   c #7A7B6C",\r
+"::+   c #9BA999",\r
+"<:+   c #C3C3AD",\r
+"[:+   c #D3CDB0",\r
+"}:+   c #D5D0AC",\r
+"|:+   c #D3CCAB",\r
+"1:+   c #D4C8B0",\r
+"2:+   c #C39D91",\r
+"3:+   c #8A8063",\r
+"4:+   c #A3A38E",\r
+"5:+   c #B9B39E",\r
+"6:+   c #C9C4A1",\r
+"7:+   c #C7BF9F",\r
+"8:+   c #BF9976",\r
+"9:+   c #846C53",\r
+"0:+   c #89927F",\r
+"a:+   c #BB9E86",\r
+"b:+   c #90715D",\r
+"c:+   c #865149",\r
+"d:+   c #443935",\r
+"e:+   c #453F33",\r
+"f:+   c #655A4B",\r
+"g:+   c #627558",\r
+"h:+   c #848465",\r
+"i:+   c #998B70",\r
+"j:+   c #958F6A",\r
+"k:+   c #8F8368",\r
+"l:+   c #8D604E",\r
+"m:+   c #76695A",\r
+"n:+   c #968171",\r
+"o:+   c #786C56",\r
+"p:+   c #625544",\r
+"q:+   c #4C4A35",\r
+"r:+   c #4D5442",\r
+"s:+   c #7E524C",\r
+"t:+   c #594E49",\r
+"u:+   c #784444",\r
+"v:+   c #514738",\r
+"w:+   c #7F7C50",\r
+"x:+   c #A38B5E",\r
+"y:+   c #AA9F6C",\r
+"z:+   c #AAA46A",\r
+"A:+   c #A0A76F",\r
+"B:+   c #ABAD79",\r
+"C:+   c #B7A972",\r
+"D:+   c #A07155",\r
+"E:+   c #70756B",\r
+"F:+   c #B28E80",\r
+"G:+   c #8A614B",\r
+"H:+   c #96966A",\r
+"I:+   c #B6B289",\r
+"J:+   c #C2BA86",\r
+"K:+   c #C0B187",\r
+"L:+   c #C0AD82",\r
+"M:+   c #BDAC85",\r
+"N:+   c #BBA67F",\r
+"O:+   c #AF8469",\r
+"P:+   c #7C5647",\r
+"Q:+   c #4F6354",\r
+"R:+   c #95936C",\r
+"S:+   c #A99A73",\r
+"T:+   c #B0AB87",\r
+"U:+   c #B8B68D",\r
+"V:+   c #A4A286",\r
+"W:+   c #B9A69A",\r
+"X:+   c #9C7C63",\r
+"Y:+   c #6D7E69",\r
+"Z:+   c #8A9670",\r
+"`:+   c #8A8E73",\r
+" <+   c #848D80",\r
+".<+   c #82837A",\r
+"+<+   c #8D8C7E",\r
+"@<+   c #A09D88",\r
+"#<+   c #BDB79D",\r
+"$<+   c #CFB9A2",\r
+"%<+   c #C0B7A1",\r
+"&<+   c #CBB99D",\r
+"*<+   c #CEB182",\r
+"=<+   c #CDB273",\r
+"-<+   c #C3A983",\r
+";<+   c #BFA58E",\r
+"><+   c #A08872",\r
+",<+   c #6E674A",\r
+"'<+   c #7F7E69",\r
+")<+   c #AD9177",\r
+"!<+   c #916F54",\r
+"~<+   c #705B49",\r
+"{<+   c #675C4F",\r
+"]<+   c #544843",\r
+"^<+   c #685B43",\r
+"/<+   c #635749",\r
+"(<+   c #585145",\r
+"_<+   c #41483D",\r
+":<+   c #3B3534",\r
+"<<+   c #354137",\r
+"[<+   c #3B403F",\r
+"}<+   c #313A38",\r
+"|<+   c #333B2F",\r
+"1<+   c #444D36",\r
+"2<+   c #515642",\r
+"3<+   c #575C4D",\r
+"4<+   c #4A5543",\r
+"5<+   c #555A3E",\r
+"6<+   c #54523E",\r
+"7<+   c #44433A",\r
+"8<+   c #45413F",\r
+"9<+   c #51433A",\r
+"0<+   c #524A3A",\r
+"a<+   c #5A5347",\r
+"b<+   c #605C4E",\r
+"c<+   c #665A4B",\r
+"d<+   c #594E42",\r
+"e<+   c #53473D",\r
+"f<+   c #574B3F",\r
+"g<+   c #80665E",\r
+"h<+   c #7A624A",\r
+"i<+   c #887E67",\r
+"j<+   c #A77A60",\r
+"k<+   c #856355",\r
+"l<+   c #6A725E",\r
+"m<+   c #75765E",\r
+"n<+   c #585E5C",\r
+"o<+   c #676D5C",\r
+"p<+   c #83896F",\r
+"q<+   c #A5907E",\r
+"r<+   c #755446",\r
+"s<+   c #73776B",\r
+"t<+   c #8A816A",\r
+"u<+   c #79806B",\r
+"v<+   c #9B947F",\r
+"w<+   c #9D9C8A",\r
+"x<+   c #A9AC8B",\r
+"y<+   c #B49A82",\r
+"z<+   c #B49366",\r
+"A<+   c #967867",\r
+"B<+   c #7F645A",\r
+"C<+   c #767561",\r
+"D<+   c #96A384",\r
+"E<+   c #BFC397",\r
+"F<+   c #CAC79E",\r
+"G<+   c #CBC59B",\r
+"H<+   c #CACA99",\r
+"I<+   c #C9C29F",\r
+"J<+   c #A39067",\r
+"K<+   c #A4A88E",\r
+"L<+   c #BDB694",\r
+"M<+   c #B7AE87",\r
+"N<+   c #A09E7B",\r
+"O<+   c #8D9779",\r
+"P<+   c #AEAF90",\r
+"Q<+   c #B1916F",\r
+"R<+   c #7A6E53",\r
+"S<+   c #74836B",\r
+"T<+   c #A7A382",\r
+"U<+   c #9A9E85",\r
+"V<+   c #97AD92",\r
+"W<+   c #ACB495",\r
+"X<+   c #B5B895",\r
+"Y<+   c #C0BB8B",\r
+"Z<+   c #BAB78D",\r
+"`<+   c #B29983",\r
+" [+   c #88836B",\r
+".[+   c #A7AF9E",\r
+"+[+   c #D2CAAB",\r
+"@[+   c #D6C19F",\r
+"#[+   c #C4A380",\r
+"$[+   c #AC8F71",\r
+"%[+   c #947E6F",\r
+"&[+   c #808277",\r
+"*[+   c #A69785",\r
+"=[+   c #7B7B64",\r
+"-[+   c #87917F",\r
+";[+   c #B9BCAD",\r
+">[+   c #D4CDAE",\r
+",[+   c #D4CCAD",\r
+"'[+   c #D1CAAC",\r
+")[+   c #D1C5AC",\r
+"![+   c #C5A196",\r
+"~[+   c #94795B",\r
+"{[+   c #947E72",\r
+"][+   c #866353",\r
+"^[+   c #72685D",\r
+"/[+   c #8D866D",\r
+"([+   c #A9977F",\r
+"_[+   c #A99B81",\r
+":[+   c #AB9175",\r
+"<[+   c #8F7C53",\r
+"[[+   c #798C74",\r
+"}[+   c #A99675",\r
+"|[+   c #886F5B",\r
+"1[+   c #866560",\r
+"2[+   c #665C46",\r
+"3[+   c #554F46",\r
+"4[+   c #716650",\r
+"5[+   c #716854",\r
+"6[+   c #765B50",\r
+"7[+   c #776958",\r
+"8[+   c #837F61",\r
+"9[+   c #726554",\r
+"0[+   c #665D52",\r
+"a[+   c #6B7169",\r
+"b[+   c #8B7471",\r
+"c[+   c #8E8667",\r
+"d[+   c #918F69",\r
+"e[+   c #838967",\r
+"f[+   c #8B8A6E",\r
+"g[+   c #966B5F",\r
+"h[+   c #626B5A",\r
+"i[+   c #7E524A",\r
+"j[+   c #545045",\r
+"k[+   c #7C7351",\r
+"l[+   c #958256",\r
+"m[+   c #AA9B63",\r
+"n[+   c #AD9C6D",\r
+"o[+   c #AF926C",\r
+"p[+   c #A7916A",\r
+"q[+   c #955E4C",\r
+"r[+   c #554635",\r
+"s[+   c #646B57",\r
+"t[+   c #7F5442",\r
+"u[+   c #7E745C",\r
+"v[+   c #AB986A",\r
+"w[+   c #AC966E",\r
+"x[+   c #A08E70",\r
+"y[+   c #A5836A",\r
+"z[+   c #947D65",\r
+"A[+   c #977C5F",\r
+"B[+   c #52574A",\r
+"C[+   c #827964",\r
+"D[+   c #936A58",\r
+"E[+   c #726F60",\r
+"F[+   c #A1A38E",\r
+"G[+   c #B6B4A0",\r
+"H[+   c #C1B09F",\r
+"I[+   c #9E8674",\r
+"J[+   c #A2A083",\r
+"K[+   c #B2B687",\r
+"L[+   c #ADA991",\r
+"M[+   c #B3B491",\r
+"N[+   c #B5B293",\r
+"O[+   c #ABB397",\r
+"P[+   c #B4B598",\r
+"Q[+   c #CBB795",\r
+"R[+   c #C1AA99",\r
+"S[+   c #B19680",\r
+"T[+   c #B39185",\r
+"U[+   c #9B897D",\r
+"V[+   c #A09381",\r
+"W[+   c #937661",\r
+"X[+   c #857661",\r
+"Y[+   c #9B805A",\r
+"Z[+   c #8C7F51",\r
+"`[+   c #7E8059",\r
+" }+   c #7F7B55",\r
+".}+   c #644938",\r
+"+}+   c #4F443F",\r
+"@}+   c #434B40",\r
+"#}+   c #4E4941",\r
+"$}+   c #47514A",\r
+"%}+   c #43514B",\r
+"&}+   c #576346",\r
+"*}+   c #545D4E",\r
+"=}+   c #5B5F4B",\r
+"-}+   c #494E3F",\r
+";}+   c #59523F",\r
+">}+   c #6A5A4F",\r
+",}+   c #536357",\r
+"'}+   c #58705C",\r
+")}+   c #778469",\r
+"!}+   c #8C895E",\r
+"~}+   c #6E7E62",\r
+"{}+   c #718062",\r
+"]}+   c #777B54",\r
+"^}+   c #70744F",\r
+"/}+   c #6C775A",\r
+"(}+   c #718468",\r
+"_}+   c #7A8E73",\r
+":}+   c #879170",\r
+"<}+   c #7A896F",\r
+"[}+   c #75826B",\r
+"}}+   c #7E855C",\r
+"|}+   c #694F4B",\r
+"1}+   c #686158",\r
+"2}+   c #98726A",\r
+"3}+   c #896052",\r
+"4}+   c #71735D",\r
+"5}+   c #808A79",\r
+"6}+   c #999373",\r
+"7}+   c #776E60",\r
+"8}+   c #736C5E",\r
+"9}+   c #85896F",\r
+"0}+   c #A09C8B",\r
+"a}+   c #9C7A6D",\r
+"b}+   c #7F7E6D",\r
+"c}+   c #9EA284",\r
+"d}+   c #A2A77E",\r
+"e}+   c #A9A485",\r
+"f}+   c #A5816F",\r
+"g}+   c #8D6157",\r
+"h}+   c #7E7360",\r
+"i}+   c #8B9777",\r
+"j}+   c #9D9170",\r
+"k}+   c #93936A",\r
+"l}+   c #ADB192",\r
+"m}+   c #CDC6A7",\r
+"n}+   c #CCC5A5",\r
+"o}+   c #C6C79F",\r
+"p}+   c #C7C6A3",\r
+"q}+   c #C8BE9D",\r
+"r}+   c #BC9774",\r
+"s}+   c #807C59",\r
+"t}+   c #90A196",\r
+"u}+   c #C8C3A9",\r
+"v}+   c #CAB39A",\r
+"w}+   c #AF8B74",\r
+"x}+   c #A09D7B",\r
+"y}+   c #BFBB95",\r
+"z}+   c #C1A976",\r
+"A}+   c #908263",\r
+"B}+   c #899176",\r
+"C}+   c #BCB992",\r
+"D}+   c #BDBF9F",\r
+"E}+   c #CBCBA7",\r
+"F}+   c #CBC7A9",\r
+"G}+   c #D0C7AA",\r
+"H}+   c #D0C8A7",\r
+"I}+   c #CDC3A3",\r
+"J}+   c #8A8563",\r
+"K}+   c #899D90",\r
+"L}+   c #CDBF9B",\r
+"M}+   c #A7A180",\r
+"N}+   c #9B9B7C",\r
+"O}+   c #A5A889",\r
+"P}+   c #8BA29C",\r
+"Q}+   c #A5A18E",\r
+"R}+   c #977761",\r
+"S}+   c #657B6F",\r
+"T}+   c #A9AFA0",\r
+"U}+   c #CFC9B0",\r
+"V}+   c #CEC8A9",\r
+"W}+   c #CBC9AC",\r
+"X}+   c #CDC5AA",\r
+"Y}+   c #CCAD99",\r
+"Z}+   c #9B8466",\r
+"`}+   c #8D6F61",\r
+" |+   c #6C4D3F",\r
+".|+   c #3F3D33",\r
+"+|+   c #4F5140",\r
+"@|+   c #706F5C",\r
+"#|+   c #737565",\r
+"$|+   c #7B7C6A",\r
+"%|+   c #8E7A65",\r
+"&|+   c #788F6F",\r
+"*|+   c #A99C6A",\r
+"=|+   c #9E866D",\r
+"-|+   c #837166",\r
+";|+   c #8C705B",\r
+">|+   c #6C5D54",\r
+",|+   c #56604E",\r
+"'|+   c #6B5548",\r
+")|+   c #525847",\r
+"!|+   c #606C53",\r
+"~|+   c #767A59",\r
+"{|+   c #77816C",\r
+"]|+   c #87755C",\r
+"^|+   c #927D63",\r
+"/|+   c #907963",\r
+"(|+   c #837556",\r
+"_|+   c #8C8262",\r
+":|+   c #918B6B",\r
+"<|+   c #9E9269",\r
+"[|+   c #958D6C",\r
+"}|+   c #928C6A",\r
+"||+   c #8A5B4C",\r
+"1|+   c #524F47",\r
+"2|+   c #734F46",\r
+"3|+   c #534139",\r
+"4|+   c #6F5445",\r
+"5|+   c #6E533F",\r
+"6|+   c #735F46",\r
+"7|+   c #7A6B45",\r
+"8|+   c #8D744B",\r
+"9|+   c #7C6450",\r
+"0|+   c #686344",\r
+"a|+   c #686D59",\r
+"b|+   c #978571",\r
+"c|+   c #714A42",\r
+"d|+   c #7D5E56",\r
+"e|+   c #6C493A",\r
+"f|+   c #594D3F",\r
+"g|+   c #584B42",\r
+"h|+   c #595443",\r
+"i|+   c #6C745D",\r
+"j|+   c #949076",\r
+"k|+   c #9F9069",\r
+"l|+   c #849479",\r
+"m|+   c #887562",\r
+"n|+   c #787369",\r
+"o|+   c #916159",\r
+"p|+   c #5C5246",\r
+"q|+   c #7B7D72",\r
+"r|+   c #B5B1A1",\r
+"s|+   c #BAA488",\r
+"t|+   c #A9A58A",\r
+"u|+   c #B2B394",\r
+"v|+   c #BFB893",\r
+"w|+   c #C4BD93",\r
+"x|+   c #C7B999",\r
+"y|+   c #C5BE9E",\r
+"z|+   c #C9B599",\r
+"A|+   c #C6AC90",\r
+"B|+   c #BD9380",\r
+"C|+   c #B07B70",\r
+"D|+   c #7C6356",\r
+"E|+   c #786250",\r
+"F|+   c #605250",\r
+"G|+   c #6E6C65",\r
+"H|+   c #8E766C",\r
+"I|+   c #7B8A70",\r
+"J|+   c #919670",\r
+"K|+   c #989C71",\r
+"L|+   c #A4A476",\r
+"M|+   c #A4945D",\r
+"N|+   c #836952",\r
+"O|+   c #6B6559",\r
+"P|+   c #6F765B",\r
+"Q|+   c #70755A",\r
+"R|+   c #625F57",\r
+"S|+   c #58504F",\r
+"T|+   c #5F6554",\r
+"U|+   c #7F8369",\r
+"V|+   c #848267",\r
+"W|+   c #6A795E",\r
+"X|+   c #738A70",\r
+"Y|+   c #909583",\r
+"Z|+   c #8D9C7D",\r
+"`|+   c #99A47C",\r
+" 1+   c #ACAD87",\r
+".1+   c #B49E7F",\r
+"+1+   c #A0A383",\r
+"@1+   c #AFA383",\r
+"#1+   c #AE9774",\r
+"$1+   c #9D825C",\r
+"%1+   c #756F5C",\r
+"&1+   c #7D7562",\r
+"*1+   c #858065",\r
+"=1+   c #928260",\r
+"-1+   c #8A7F5F",\r
+";1+   c #887C69",\r
+">1+   c #53503E",\r
+",1+   c #816063",\r
+"'1+   c #7A5B54",\r
+")1+   c #777C62",\r
+"!1+   c #94866E",\r
+"~1+   c #8D8A6F",\r
+"{1+   c #977F65",\r
+"]1+   c #825F55",\r
+"^1+   c #68604F",\r
+"/1+   c #7F7D68",\r
+"(1+   c #8B7E69",\r
+"_1+   c #9C9883",\r
+":1+   c #ACA081",\r
+"<1+   c #ADA485",\r
+"[1+   c #A9A78C",\r
+"}1+   c #B1987F",\r
+"|1+   c #A37462",\r
+"11+   c #7B755F",\r
+"21+   c #8D8B6D",\r
+"31+   c #9F9F89",\r
+"41+   c #B08C63",\r
+"51+   c #808566",\r
+"61+   c #A3AC96",\r
+"71+   c #C7C2A8",\r
+"81+   c #CEC5A7",\r
+"91+   c #CDC39E",\r
+"01+   c #C6C1A0",\r
+"a1+   c #BFB691",\r
+"b1+   c #B09975",\r
+"c1+   c #888F6B",\r
+"d1+   c #A2B09D",\r
+"e1+   c #CAC0A5",\r
+"f1+   c #C69F84",\r
+"g1+   c #917843",\r
+"h1+   c #7F7F5F",\r
+"i1+   c #AD9C75",\r
+"j1+   c #B69B7A",\r
+"k1+   c #9E7A58",\r
+"l1+   c #706D55",\r
+"m1+   c #A5AD92",\r
+"n1+   c #C3C3A4",\r
+"o1+   c #D1CBA7",\r
+"p1+   c #CEC9A1",\r
+"q1+   c #D2CC9D",\r
+"r1+   c #CDC9A8",\r
+"s1+   c #C5BF9C",\r
+"t1+   c #B1AA8A",\r
+"u1+   c #AAA18C",\r
+"v1+   c #BDBA9B",\r
+"w1+   c #C3C09F",\r
+"x1+   c #BEC1A0",\r
+"y1+   c #C2B591",\r
+"z1+   c #B9B48E",\r
+"A1+   c #A1A892",\r
+"B1+   c #AFA896",\r
+"C1+   c #9A7C73",\r
+"D1+   c #5B6155",\r
+"E1+   c #879187",\r
+"F1+   c #C3C1A7",\r
+"G1+   c #CBC7A4",\r
+"H1+   c #D1C9A6",\r
+"I1+   c #D0C7A3",\r
+"J1+   c #D0BAA8",\r
+"K1+   c #BFA793",\r
+"L1+   c #8D7B66",\r
+"M1+   c #5E6E5B",\r
+"N1+   c #615C4E",\r
+"O1+   c #5C604B",\r
+"P1+   c #718263",\r
+"Q1+   c #8D8E72",\r
+"R1+   c #828E74",\r
+"S1+   c #A1A183",\r
+"T1+   c #A8AC92",\r
+"U1+   c #ABA97E",\r
+"V1+   c #907066",\r
+"W1+   c #7E765C",\r
+"X1+   c #8F735D",\r
+"Y1+   c #706752",\r
+"Z1+   c #72775A",\r
+"`1+   c #8D9569",\r
+" 2+   c #869073",\r
+".2+   c #898170",\r
+"+2+   c #988776",\r
+"@2+   c #835A52",\r
+"#2+   c #695E49",\r
+"$2+   c #6E634D",\r
+"%2+   c #5C5747",\r
+"&2+   c #665544",\r
+"*2+   c #715541",\r
+"=2+   c #716248",\r
+"-2+   c #807D5F",\r
+";2+   c #988E69",\r
+">2+   c #8D5E51",\r
+",2+   c #5C5641",\r
+"'2+   c #7A5545",\r
+")2+   c #44403C",\r
+"!2+   c #574B40",\r
+"~2+   c #56523B",\r
+"{2+   c #6A6453",\r
+"]2+   c #807C5F",\r
+"^2+   c #8D7968",\r
+"/2+   c #817F61",\r
+"(2+   c #8E815A",\r
+"_2+   c #85896A",\r
+":2+   c #835241",\r
+"<2+   c #7B685B",\r
+"[2+   c #665641",\r
+"}2+   c #4B524B",\r
+"|2+   c #595C54",\r
+"12+   c #69785A",\r
+"22+   c #9E9A7D",\r
+"32+   c #A8896F",\r
+"42+   c #7E7767",\r
+"52+   c #808478",\r
+"62+   c #989077",\r
+"72+   c #949585",\r
+"82+   c #9E8B7D",\r
+"92+   c #818171",\r
+"02+   c #7E7A6B",\r
+"a2+   c #969F94",\r
+"b2+   c #BFA98C",\r
+"c2+   c #B99F7B",\r
+"d2+   c #BAAB80",\r
+"e2+   c #BCB58C",\r
+"f2+   c #C9BC95",\r
+"g2+   c #C9B699",\r
+"h2+   c #C5B598",\r
+"i2+   c #B59B87",\r
+"j2+   c #97896F",\r
+"k2+   c #7E7566",\r
+"l2+   c #766A54",\r
+"m2+   c #5B644E",\r
+"n2+   c #6D7851",\r
+"o2+   c #627359",\r
+"p2+   c #5D7050",\r
+"q2+   c #8F8B7E",\r
+"r2+   c #919478",\r
+"s2+   c #ADB08D",\r
+"t2+   c #A8957B",\r
+"u2+   c #AB9879",\r
+"v2+   c #A7805E",\r
+"w2+   c #715C4E",\r
+"x2+   c #5B6455",\r
+"y2+   c #707D66",\r
+"z2+   c #797260",\r
+"A2+   c #767963",\r
+"B2+   c #767265",\r
+"C2+   c #596866",\r
+"D2+   c #858575",\r
+"E2+   c #999A80",\r
+"F2+   c #A6A886",\r
+"G2+   c #ACAA8B",\r
+"H2+   c #B5A692",\r
+"I2+   c #A89A7E",\r
+"J2+   c #ABA578",\r
+"K2+   c #B7AE88",\r
+"L2+   c #B1A378",\r
+"M2+   c #A7A084",\r
+"N2+   c #9D9B75",\r
+"O2+   c #949271",\r
+"P2+   c #837F69",\r
+"Q2+   c #75705B",\r
+"R2+   c #596656",\r
+"S2+   c #685A48",\r
+"T2+   c #525846",\r
+"U2+   c #4E4B45",\r
+"V2+   c #5C6656",\r
+"W2+   c #6B765E",\r
+"X2+   c #9D8F6B",\r
+"Y2+   c #83937B",\r
+"Z2+   c #AAB18A",\r
+"`2+   c #B6B491",\r
+" 3+   c #BD9E73",\r
+".3+   c #986857",\r
+"+3+   c #644F4A",\r
+"@3+   c #4B443B",\r
+"#3+   c #544B46",\r
+"$3+   c #5B433C",\r
+"%3+   c #727673",\r
+"&3+   c #B1A184",\r
+"*3+   c #B4A278",\r
+"=3+   c #9B896F",\r
+"-3+   c #9C9E86",\r
+";3+   c #ABA187",\r
+">3+   c #B5907C",\r
+",3+   c #B6A08F",\r
+"'3+   c #94715B",\r
+")3+   c #7D8369",\r
+"!3+   c #AA9979",\r
+"~3+   c #AB9E87",\r
+"{3+   c #B9A483",\r
+"]3+   c #BDAB8C",\r
+"^3+   c #AFA886",\r
+"/3+   c #A99C80",\r
+"(3+   c #7E7166",\r
+"_3+   c #9C9D8B",\r
+":3+   c #BDBB9C",\r
+"<3+   c #868364",\r
+"[3+   c #788064",\r
+"}3+   c #848A5E",\r
+"|3+   c #8C947C",\r
+"13+   c #B29472",\r
+"23+   c #8B7754",\r
+"33+   c #859283",\r
+"43+   c #BBBC9D",\r
+"53+   c #CEC8A4",\r
+"63+   c #CFC7A8",\r
+"73+   c #CBC59E",\r
+"83+   c #CDC49E",\r
+"93+   c #CEC2A0",\r
+"03+   c #C6BE9C",\r
+"a3+   c #BEA787",\r
+"b3+   c #A99F84",\r
+"c3+   c #9FAB9B",\r
+"d3+   c #C2C0A7",\r
+"e3+   c #C9C0A9",\r
+"f3+   c #C4B2A1",\r
+"g3+   c #B0A697",\r
+"h3+   c #A68B79",\r
+"i3+   c #918782",\r
+"j3+   c #A3947C",\r
+"k3+   c #797C61",\r
+"l3+   c #728880",\r
+"m3+   c #BEBFA1",\r
+"n3+   c #C7BA9B",\r
+"o3+   c #C5AF93",\r
+"p3+   c #C4AF8F",\r
+"q3+   c #C7BDA5",\r
+"r3+   c #C59F90",\r
+"s3+   c #A57A60",\r
+"t3+   c #847564",\r
+"u3+   c #7F8573",\r
+"v3+   c #857F60",\r
+"w3+   c #7F8568",\r
+"x3+   c #ADAB90",\r
+"y3+   c #A2A287",\r
+"z3+   c #9E976E",\r
+"A3+   c #A6A476",\r
+"B3+   c #A9A88A",\r
+"C3+   c #AF866A",\r
+"D3+   c #8F7B68",\r
+"E3+   c #977D78",\r
+"F3+   c #766E5E",\r
+"G3+   c #899075",\r
+"H3+   c #AAA88E",\r
+"I3+   c #ADA881",\r
+"J3+   c #B3A37B",\r
+"K3+   c #A08676",\r
+"L3+   c #998D7D",\r
+"M3+   c #909A74",\r
+"N3+   c #98A37E",\r
+"O3+   c #A3AD7D",\r
+"P3+   c #9FA984",\r
+"Q3+   c #989069",\r
+"R3+   c #6D5244",\r
+"S3+   c #535844",\r
+"T3+   c #738465",\r
+"U3+   c #A3A277",\r
+"V3+   c #9D6451",\r
+"W3+   c #63543F",\r
+"X3+   c #846C50",\r
+"Y3+   c #685E4D",\r
+"Z3+   c #686A48",\r
+"`3+   c #675246",\r
+" 4+   c #64564B",\r
+".4+   c #695D47",\r
+"+4+   c #63674C",\r
+"@4+   c #6F5B52",\r
+"#4+   c #846951",\r
+"$4+   c #817D65",\r
+"%4+   c #A8947B",\r
+"&4+   c #85604D",\r
+"*4+   c #75786B",\r
+"=4+   c #816D51",\r
+"-4+   c #605F57",\r
+";4+   c #57655D",\r
+">4+   c #767F76",\r
+",4+   c #B49790",\r
+"'4+   c #8D6E6F",\r
+")4+   c #596E67",\r
+"!4+   c #6D7466",\r
+"~4+   c #60675E",\r
+"{4+   c #686E64",\r
+"]4+   c #888470",\r
+"^4+   c #999E82",\r
+"/4+   c #A5A787",\r
+"(4+   c #AEAB9B",\r
+"_4+   c #BDA385",\r
+":4+   c #A9A279",\r
+"<4+   c #CAB284",\r
+"[4+   c #C2BC93",\r
+"}4+   c #B9AB96",\r
+"|4+   c #BFAB87",\r
+"14+   c #BFB18F",\r
+"24+   c #B2B18B",\r
+"34+   c #A08A73",\r
+"44+   c #85765F",\r
+"54+   c #999F7F",\r
+"64+   c #ACAD8A",\r
+"74+   c #ACA886",\r
+"84+   c #A5A87B",\r
+"94+   c #A4AB90",\r
+"04+   c #B8BA92",\r
+"a4+   c #C5BC94",\r
+"b4+   c #BA9183",\r
+"c4+   c #805E4F",\r
+"d4+   c #625043",\r
+"e4+   c #626349",\r
+"f4+   c #675E43",\r
+"g4+   c #5F6E5D",\r
+"h4+   c #6B6E58",\r
+"i4+   c #676D56",\r
+"j4+   c #7A7162",\r
+"k4+   c #646E5D",\r
+"l4+   c #7D896E",\r
+"m4+   c #7D7468",\r
+"n4+   c #6A6E66",\r
+"o4+   c #938775",\r
+"p4+   c #A4A78A",\r
+"q4+   c #B1B189",\r
+"r4+   c #A5A98D",\r
+"s4+   c #B0A282",\r
+"t4+   c #ADA07B",\r
+"u4+   c #B0A486",\r
+"v4+   c #AB7A67",\r
+"w4+   c #86806C",\r
+"x4+   c #9E9A6E",\r
+"y4+   c #868F6F",\r
+"z4+   c #887C6C",\r
+"A4+   c #70554D",\r
+"B4+   c #58665B",\r
+"C4+   c #7E8166",\r
+"D4+   c #6E8473",\r
+"E4+   c #7A7463",\r
+"F4+   c #6C774B",\r
+"G4+   c #A3AB84",\r
+"H4+   c #BBB38A",\r
+"I4+   c #B4B48D",\r
+"J4+   c #BFB790",\r
+"K4+   c #C4B994",\r
+"L4+   c #BE927D",\r
+"M4+   c #92514F",\r
+"N4+   c #503C3B",\r
+"O4+   c #3C3A33",\r
+"P4+   c #55493D",\r
+"Q4+   c #473D3B",\r
+"R4+   c #5F6E75",\r
+"S4+   c #A59F92",\r
+"T4+   c #BEAA83",\r
+"U4+   c #B8B18E",\r
+"V4+   c #B8B48B",\r
+"W4+   c #B1AF89",\r
+"X4+   c #B8AB98",\r
+"Y4+   c #B78C83",\r
+"Z4+   c #9B7B6E",\r
+"`4+   c #8F9289",\r
+" 5+   c #B69C8B",\r
+".5+   c #7E684D",\r
+"+5+   c #778269",\r
+"@5+   c #B0986C",\r
+"#5+   c #998A65",\r
+"$5+   c #827458",\r
+"%5+   c #6E6752",\r
+"&5+   c #978B71",\r
+"*5+   c #A69273",\r
+"=5+   c #A39984",\r
+"-5+   c #78685D",\r
+";5+   c #929475",\r
+">5+   c #A0AD98",\r
+",5+   c #B4AE91",\r
+"'5+   c #B6B696",\r
+")5+   c #B7B898",\r
+"!5+   c #BEB989",\r
+"~5+   c #BEA58F",\r
+"{5+   c #9D785B",\r
+"]5+   c #676E62",\r
+"^5+   c #9EA48F",\r
+"/5+   c #CCC59D",\r
+"(5+   c #CDC7A2",\r
+"_5+   c #CCBC9B",\r
+":5+   c #BBA585",\r
+"<5+   c #B3A789",\r
+"[5+   c #AD9984",\r
+"}5+   c #A08C70",\r
+"|5+   c #9A9178",\r
+"15+   c #A09580",\r
+"25+   c #B69B80",\r
+"35+   c #98907C",\r
+"45+   c #855E5B",\r
+"55+   c #5C6662",\r
+"65+   c #A1908A",\r
+"75+   c #A48A6F",\r
+"85+   c #8D957F",\r
+"95+   c #BEB9A5",\r
+"05+   c #C9B193",\r
+"a5+   c #B6A081",\r
+"b5+   c #A5A98C",\r
+"c5+   c #B9B19F",\r
+"d5+   c #BA827B",\r
+"e5+   c #7D6E54",\r
+"f5+   c #737B65",\r
+"g5+   c #787961",\r
+"h5+   c #757453",\r
+"i5+   c #7D7C5C",\r
+"j5+   c #A59174",\r
+"k5+   c #BBAF8E",\r
+"l5+   c #B4AB89",\r
+"m5+   c #B6AF89",\r
+"n5+   c #AEA183",\r
+"o5+   c #9D8970",\r
+"p5+   c #8F7D64",\r
+"q5+   c #908370",\r
+"r5+   c #A2A89C",\r
+"s5+   c #B5B3A3",\r
+"t5+   c #B8988D",\r
+"u5+   c #796658",\r
+"v5+   c #757158",\r
+"w5+   c #989075",\r
+"x5+   c #B5B390",\r
+"y5+   c #C2C2A0",\r
+"z5+   c #C7C5A4",\r
+"A5+   c #CCC4A6",\r
+"B5+   c #C9B9A4",\r
+"C5+   c #C8BD9F",\r
+"D5+   c #B5A186",\r
+"E5+   c #9C9574",\r
+"F5+   c #AA9781",\r
+"G5+   c #A9A18B",\r
+"H5+   c #B19879",\r
+"I5+   c #8D8C53",\r
+"J5+   c #9A9467",\r
+"K5+   c #959B78",\r
+"L5+   c #A1A382",\r
+"M5+   c #98947D",\r
+"N5+   c #8F866B",\r
+"O5+   c #7D7C52",\r
+"P5+   c #786249",\r
+"Q5+   c #695443",\r
+"R5+   c #5F655B",\r
+"S5+   c #9F8C7A",\r
+"T5+   c #8A5649",\r
+"U5+   c #6A6F61",\r
+"V5+   c #6F6C50",\r
+"W5+   c #7A8572",\r
+"X5+   c #9EA594",\r
+"Y5+   c #B8A093",\r
+"Z5+   c #95887C",\r
+"`5+   c #838F7B",\r
+" 6+   c #909680",\r
+".6+   c #828975",\r
+"+6+   c #797F70",\r
+"@6+   c #7D7F6D",\r
+"#6+   c #898A6F",\r
+"$6+   c #8F9276",\r
+"%6+   c #B5A27B",\r
+"&6+   c #B2A17A",\r
+"*6+   c #B9B997",\r
+"=6+   c #BCB498",\r
+"-6+   c #BFB38D",\r
+";6+   c #BFB690",\r
+">6+   c #BFB291",\r
+",6+   c #B7AF8B",\r
+"'6+   c #A88A71",\r
+")6+   c #77735A",\r
+"!6+   c #949472",\r
+"~6+   c #A3977A",\r
+"{6+   c #ACA58D",\r
+"]6+   c #B6AA8E",\r
+"^6+   c #B3B395",\r
+"/6+   c #BCBA95",\r
+"(6+   c #C5BF9B",\r
+"_6+   c #BC9A86",\r
+":6+   c #744F40",\r
+"<6+   c #4E4D3D",\r
+"[6+   c #6A7B66",\r
+"}6+   c #8A8A64",\r
+"|6+   c #7A6D64",\r
+"16+   c #614F4B",\r
+"26+   c #4C5447",\r
+"36+   c #696158",\r
+"46+   c #525649",\r
+"56+   c #686554",\r
+"66+   c #6F705D",\r
+"76+   c #879482",\r
+"86+   c #AAB18F",\r
+"96+   c #B5AF86",\r
+"06+   c #9BA489",\r
+"a6+   c #957559",\r
+"b6+   c #8E846B",\r
+"c6+   c #A3705F",\r
+"d6+   c #5E5E51",\r
+"e6+   c #82897D",\r
+"f6+   c #A49B7D",\r
+"g6+   c #958765",\r
+"h6+   c #7C8074",\r
+"i6+   c #815F53",\r
+"j6+   c #4D5F5A",\r
+"k6+   c #7A7D6E",\r
+"l6+   c #8C8F79",\r
+"m6+   c #979378",\r
+"n6+   c #909168",\r
+"o6+   c #CBBA8E",\r
+"p6+   c #C4B78E",\r
+"q6+   c #BAB48F",\r
+"r6+   c #BBB28E",\r
+"s6+   c #C0A981",\r
+"t6+   c #9D5F4D",\r
+"u6+   c #5E4538",\r
+"v6+   c #4B4F42",\r
+"w6+   c #495C4D",\r
+"x6+   c #6E7964",\r
+"y6+   c #72715F",\r
+"z6+   c #677D6E",\r
+"A6+   c #BE9D83",\r
+"B6+   c #AE9C79",\r
+"C6+   c #A7937C",\r
+"D6+   c #A2A27B",\r
+"E6+   c #B09B8C",\r
+"F6+   c #A57C5D",\r
+"G6+   c #7F7861",\r
+"H6+   c #959E93",\r
+"I6+   c #AA897C",\r
+"J6+   c #756956",\r
+"K6+   c #81967F",\r
+"L6+   c #BAB893",\r
+"M6+   c #B8A886",\r
+"N6+   c #9F8265",\r
+"O6+   c #63574A",\r
+"P6+   c #81816C",\r
+"Q6+   c #9F987F",\r
+"R6+   c #918174",\r
+"S6+   c #9B9388",\r
+"T6+   c #A6A698",\r
+"U6+   c #BFB796",\r
+"V6+   c #C3B18C",\r
+"W6+   c #C2A68A",\r
+"X6+   c #AA9476",\r
+"Y6+   c #AB8D69",\r
+"Z6+   c #79624E",\r
+"`6+   c #677973",\r
+" 7+   c #B2B899",\r
+".7+   c #C39B80",\r
+"+7+   c #7C5C47",\r
+"@7+   c #5C655B",\r
+"#7+   c #665E54",\r
+"$7+   c #595B49",\r
+"%7+   c #677159",\r
+"&7+   c #828458",\r
+"*7+   c #8F987C",\r
+"=7+   c #95906E",\r
+"-7+   c #929A7F",\r
+";7+   c #A47B71",\r
+">7+   c #6D665F",\r
+",7+   c #997F85",\r
+"'7+   c #7C4B48",\r
+")7+   c #53625B",\r
+"!7+   c #A1A79F",\r
+"~7+   c #C1A28C",\r
+"{7+   c #A5A38A",\r
+"]7+   c #BCBD9A",\r
+"^7+   c #C9B898",\r
+"/7+   c #B79671",\r
+"(7+   c #958669",\r
+"_7+   c #9BA18A",\r
+":7+   c #A7977C",\r
+"<7+   c #877F65",\r
+"[7+   c #838165",\r
+"}7+   c #958668",\r
+"|7+   c #A18465",\r
+"17+   c #9C8871",\r
+"27+   c #93756F",\r
+"37+   c #716F63",\r
+"47+   c #959992",\r
+"57+   c #C2A491",\r
+"67+   c #ADA179",\r
+"77+   c #B9B3A0",\r
+"87+   c #BEBFAB",\r
+"97+   c #CBB7A6",\r
+"07+   c #A7786F",\r
+"a7+   c #656858",\r
+"b7+   c #6B725E",\r
+"c7+   c #7A866A",\r
+"d7+   c #AEB293",\r
+"e7+   c #CDCAA9",\r
+"f7+   c #D2CCAC",\r
+"g7+   c #D3C8AB",\r
+"h7+   c #CFC49F",\r
+"i7+   c #CDB2A2",\r
+"j7+   c #B78975",\r
+"k7+   c #967E64",\r
+"l7+   c #738476",\r
+"m7+   c #99A08A",\r
+"n7+   c #BBB297",\r
+"o7+   c #C3AC8B",\r
+"p7+   c #BFBC9A",\r
+"q7+   c #C6C4B4",\r
+"r7+   c #C9BDA9",\r
+"s7+   c #C5A28A",\r
+"t7+   c #AA9C6F",\r
+"u7+   c #98916F",\r
+"v7+   c #9E926D",\r
+"w7+   c #949C84",\r
+"x7+   c #ADA68A",\r
+"y7+   c #9A745D",\r
+"z7+   c #948875",\r
+"A7+   c #8B896E",\r
+"B7+   c #A0A78D",\r
+"C7+   c #BAB29C",\r
+"D7+   c #B29A83",\r
+"E7+   c #978E77",\r
+"F7+   c #8A8B6D",\r
+"G7+   c #939B7C",\r
+"H7+   c #947F6C",\r
+"I7+   c #7D6C53",\r
+"J7+   c #6C6958",\r
+"K7+   c #77816D",\r
+"L7+   c #8D7E65",\r
+"M7+   c #767158",\r
+"N7+   c #82705B",\r
+"O7+   c #80614E",\r
+"P7+   c #687669",\r
+"Q7+   c #A6AD94",\r
+"R7+   c #C7C09A",\r
+"S7+   c #C5B395",\r
+"T7+   c #B9B59A",\r
+"U7+   c #C3B6A0",\r
+"V7+   c #B0AB92",\r
+"W7+   c #B7AE95",\r
+"X7+   c #A89E84",\r
+"Y7+   c #917F67",\r
+"Z7+   c #A6A67E",\r
+"`7+   c #AAA68A",\r
+" 8+   c #BAB49C",\r
+".8+   c #BCB89F",\r
+"+8+   c #C8C3A5",\r
+"@8+   c #C7BCA0",\r
+"#8+   c #A99A7C",\r
+"$8+   c #8D9177",\r
+"%8+   c #8D7C67",\r
+"&8+   c #848770",\r
+"*8+   c #7D8057",\r
+"=8+   c #707867",\r
+"-8+   c #535147",\r
+";8+   c #535B56",\r
+">8+   c #60765D",\r
+",8+   c #82765C",\r
+"'8+   c #71886E",\r
+")8+   c #A7B297",\r
+"!8+   c #B7B297",\r
+"~8+   c #AAA18D",\r
+"{8+   c #989380",\r
+"]8+   c #816754",\r
+"^8+   c #6A7362",\r
+"/8+   c #A08C77",\r
+"(8+   c #6B7164",\r
+"_8+   c #8A9580",\r
+":8+   c #95967A",\r
+"<8+   c #868D83",\r
+"[8+   c #98746A",\r
+"}8+   c #556964",\r
+"|8+   c #7A7D68",\r
+"18+   c #7F7B6A",\r
+"28+   c #A5A37E",\r
+"   .  +  @  #  $  %  &  *  =  -  ;  >  ,  '  )  !  ~  {  ]  ^  /  (  _  :  <  [  }  |  1  2  3  4  5  6  7  8  9  0  a  b  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  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  `   . .. +. @. #. $. %. &. *. =. -. ;. >. ,. '. ). !. ~. {. ]. ^. /. (. _. :. <. [. }. |. 1. 2. 3. 4. 5. 6. 7. 8. 8. 9. 0. a. b. 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. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. ",\r
+"U. V. W. X. Y. Z. `.  + .+ ++ @+ #+ $+ %+ &+ *+ =+ -+ ;+ >+ ,+ '+ )+ !+ ~+ {+ ]+ ^+ /+ (+ _+ :+ <+ [+ '  }+ |+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ 0+ a+ b+ 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+ F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ `+  @ .@ +@ @@ #@ $@ %@ &@ *@ =@ -@ ;@ >@ ,@ '@ )@ !@ ~@ {@ ]@ ^@ /@ (@ _@ :@ <@ [@ }@ |@ 1@ 2@ 3@ 4@ 5@ 6@ 7@ 8@ 9@ 0@ a@ b@ 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@ b  C@ D@ E@ F@ G@ H@ I@ J@ K@ L@ ",\r
+"M@ $@ N@ k  O@ P@ Q@ R@ S@ T@ U@ V@ W@ X@ Y@ Z@ `@  # .# +# @# ## $# %# &# *# =# m+ -# ;# ># ,# '# )# !# ~# {# ]# ^# /# (# _# :# <# [# }# |# 1# 2# 3# 4# 5# 6# 7# 8# 9# 0# a# b# c# d# e# f# g# h# i# j# k# l# m# n# o# p# q# r# s# t# u# v# p. w# x# y# z# A# B# C# D# E# F# G# H# I# J# K# L# M# N# O# P# =. 9+ Q# R# S# T# U# V# W# X# Y# Z# `#  $ .$ +$ @$ #$ $$ %$ &$ *$ =$ -$ ;$ >$ ,$ '$ )$ !$ ~$ 5  {$ ]$ ^$ /$ ($ _$ :$ <$ [$ }$ |$ 1$ 2$ 3$ 4$ 5$ 6$ 7$ 8$ 9$ 0$ a$ b$ c$ d$ e$ f$ g$ h$ i$ j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ ",\r
+"z$ w. A$ B$ 1# .@ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ &# V$ E$ W$ X$ Y$ Z$ `$ S#  % .% +% @% #% $% %% F# &% 3@ *% =% -% ;% >% ,% '% )% !% D$ ~% {% ]% ^% /% (% _% :% <% [% }% |% 1% 2% 3% 4% 5% 6% 7% 8% 9% 0% a% b% {% a% c% d% e% f% g% h% i% j% k% l% m% n% o% p% Y  q% r% s% t% u% v% w% x% y% z% A% B% C% D% w@ E% F% G% H% I% J% >@ K% L% M% N% O% P% Q% R% S% T% U% V% W% X% Y% Z% `%  & .& +& @& #& $& %& && *& =& -& ;& >& ,& '& )& !& ~& {& ]& ^& /& (& _& :& <& [& K% }& |& 1& 2& 3& 4& 5& 6& 7& 8& 9& 0& a& b& c& d& ",\r
+"e& f& g& h& i& j& k& e$ l& m& n& o& p& q& r& s& t& u& v& w& x& f# #  y& z& A& B& C& D& E& F& G& H& I& J& K& L& M& :+ N& O& P& Q& R& S& T& U& V& W& X& Y& Z& `&  * t& .* +* @* #* $* %* &* k@ ** =* -* ;* >* ,* '* )* !* ~* {* ]* ^* /* (* _* :* <* [* }* |* 1* 2* 3* 4* 5* 6* 7* k$ 8* 9* 0* a* b* 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* F* G* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Z* `* @@  = C+ .= += @= #= $= B* %= &= *= == -= ;= >= ,= '= )= != ~= {= ]= ^= /= (= _= := <= ",\r
+"[= }= |= 1= 2= 3= 4= 5= 6= 7= 8= 9= 0= a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= q= r= p. -. s= t= u= v= w= x= y= z= A= B= C= D= E= F=  % G= H= I= J= K= L= M= N= O= P= Q= R= S= T= U= V= W= X= Y= Z= `=  - .- +- @- #- $- %- &- *- =- -- ;- >- .@ ,- '- )- !- ~- {- ]- ^- /- (- _- :- <- [- O= }- |- 1- 2- 3- 4- 5- 6- 7- 8- 9- 0- a- b- 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- F- G- H- I- J- K- L- M- N- O-  % P- Q- R- S- T- U- V- W- X- Y- Z- `-  ; .; +; @; #; $; %; &; >= *; =; -; ;; ",\r
+">; ,; '; ); !; /  w& ~; {; ]; ^; /; (; &% _; :; <; [; }; |; 1; 2; 3; 4; W. Z. 5; 6; 7; 8; 9; j= 0; a; b; c; d; e; f; g; h; i; j; k; j= l; v% m; M$ n; o; ;# p; q; r; U= M& s; t; u; v; w; x; y; z; A; B; C; D; E; F; G; H; I; J; K; L; M; N; O; P; Q; R; S; T; U; V; W; X; Y; Z; F% `;  > .> +> @> #> $> %> &> *> Q# => -> ;> >> ,> '> )> !> ~> {> ]> y+ t+ ^> /> (> _> :> <> [> }> |> 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> o> p> 6; q> r> s> t> u> 1@ v> w> x> V- y> z> A> B> C> D> E> F> G> H> I> J> K> L> M> ",\r
+"N> O> P> Q> R> S> T> A  U> V> W> X> Y> Z> `>  , ., +, @, #, $, J= %, &, *, =, -, ;, >, ,, ', ), !, ~, {, ], ^, /, (, @. _, :, <, [, }, K  |, 1, 2, 3, 4, 5, N& 6, 7, 8, v& 9, 0, a, b, 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, F, G, H, I, J, K, L, r; Z  M, N, O, P, => )> Q, R, S, T, r> U, V, W, X, Y, Z, `,  ' .' +' @' j% #' $' %' &' *' =' -' ;' >' ,' '' )' !' ~' {' ]' ^' /' (' _' :' <' [' }' |' 1' 2' B  3' n> 4' 5' 6' 7' 8' 9' 0' a' b' c' d' e' f' g' h' i' j' k' l' m' n' o' p' q' r' s' ",\r
+"t' u' v' w' x' y' z' t. A' B' k& C' D' E' F' G' H' I' J' K' L' M' N' O' P' Q' R' S' V# T' >- U' V' .@ W' X' Y, ,> Y' Z' `'  ) .) +) @) #) $) %) &) *) =) -) ;) >) ,) ') )) !) ~) {) ]+ ]) ^) /) () _) :) <) [) }) |) 1) 2) 3) 4) 5) 6) 7) 8) 9) 0) a) b) c) d) e) f) g) h) i) j) I. k) l) m) n) o) p) q) r) s) t) u) v) w) x) y) z) A) B) C) D) E) F) G) H) I) J) K) L) M) N) D@ O) P) Q) R) S) T) U) V) W) X) Y) Z) `)  ! .! +! @! #! $! %! &! *! =! -! ;! >! ,! '! )! !! ~! {! ]! ^! /! (! _! :! 7- <! [! }! |! 1! 2! 3! 4! 5! 6! 7! 8! 9! 0! a! b! ",\r
+"c! d! n@ e! f! g! h! i! j! k! o  l! m! n! o! p! q! r! s! t! u! v! w! x! y! z! Y, A! B! C! D! ,> E! F! G! H! I! J! `> K! L! M! N! O! P! Q! R! S! T! U! V! W! X! Y! Z! `!  ~ d; .~ +~ @~ #~ $~ %~ &~ *~ =~ -~ ;~ >~ ,~ '~ )~ !~ ~~ {~ ]~ ^~ /~ (~ _~ :~ /~ <~ [~ }~ |~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ 9~ 0~ a~ b~ c~ d~ e~ #= f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ f* p~ q~ r~ s~ t~ u~ v~ w~ x~ y~ z~ A~ B~ C~ D~ E~ F~ G~ H~ I~ J~ K~ L~ M~ N~ O~ P~ Q~ R~ S~ T~ U~ V~ W~ X~ Y~ Z~ >, `~  { .{ +{ @{ #{ ${ %{ &{ *{ ={ $' -{ ;{ >{ ,{ '{ ){ !{ ~{ {{ ]{ ^{ B! /{ ({ ",\r
+"_{ :{ U= <{ [{ F+ }{ |{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ 0{ a{ b{ c{ d{ e{ f{ Z+ g{ h{ i{ j{ k{ l{ <% m{ n{ o{ p{ q{ r{ s{ ;{ t{ u{ v{ H# w{ x{ y{ z{ A{ B{ W$ C{ D{ E{ F{ G{ a; H{ v# I{ J{ G{ K{ L{ M{ N{ O{ P{ Q{ R{ S{ T{ U{ V{ W{ X{ Y{ Z{ `{  ] /~ .] +] @] #] $] %] &] *] =] -] ;] >] ,] '] )] !] ~] {] ]] ^] /] (] _] :] <] [] }] {@ |] 1] 2] 3] t+ 4] ;{ 5] 6] 7] 8] 9] 0] a] b] c] d] e] f] g] h] U  i] j] k] l] m] n] o] p] q] r] s] t] u] v] N% w] x] y] y% z] A] B] C] D] E] F] j' G] H] I] J] K] L] M] N] O] P] Q] <, R] S] T] U] V] W] X] Y] ",\r
+"Z] `]  ^ .^ +^ @^ #^ $^ 9+ %^ &^ *^ =^ -^ ;^ >^ ,^ '^ )^ !^ n~ ~^ {^ ]^ ^^ /^ (^ _^ :^ <^ [^ }^ z= |^ 1^ 2^ 3^ 4^ 5^ b' 6^ 7^ 8^ 9^ 0^ a^ U= F) b^ }- 4- c^ d^ e^ h* 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^ F^ G^ H^ I^ J^ K^ L^ M^ N^ O^ P^ Q^ R^ S^ T^ U^ V^ W^ X^ ,! Y^ Z^ 5- `^  / w! ./ +/ @/ #/ $/ %/ &/ */ =/ -/ ;/ >/ ,/ '/ )/ !/ ~/ {/ ]/ ^/ // (/ _/ :/ </ [/ }/ |/ 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ 0/ a/ D> b/ c/ d/ e/ f/ g/ p* h/ i/ j/ k/ -{ l/ m/ n/ o/ p/ q/ r/ s/ t/ u/ v/ w/ x/ y/ z/ A/ B/ C/ ",\r
+"D/ E/ ,> F/ G/ H/ I/ J/ K/ v' L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ `/  ( .( +( @( #( $( %( &( *( ]> =( -( ;( >( ,( '( )( !( ~( {( ]( @. ^( /( F) (( _( :( <( [( }( |( 1( 2( 3( 4( 5( 6( 7( 8( 9( 0( a( b( 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( F( G( %. H( I( J( F( K( L( 2% M( p. N( O( P( Q' G{ Q( R( S( T( U( V( W( X( Y( Z( `(  _ ._ +_ @_ #_ $_ %_ &_ *_ =_ -_ ;_ >_ ,_ '_ )_ !_ ~_ {_ ]_ ^_ '> /_ /- (_ __ (& :_ <_ [_ }_ |_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ 0_ a_ b_ c_ d_ e_ f_ g_ h_ i_ ",\r
+"C. J! C+ 0$ j_ k_ 0+ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ Y  x_ y_ z_ A_ B_ C_ D_ E_ F_ j' G_ H_ O@ I_ J_ K_  . L_ M_ N_ O_ P_ Q_ V^ R_ S_ [, e. T_ U_ V! V_ W_ X_ Y_ Z_ `_ G{  : Z+ .: +: @: #: $: %: &: *: =: -: ;: >: ,: ': ): !: ~: {: ]: ^: /: (: _: :: <: [: }: |: 1: 2: 3: 4: 5: 6: 7: 8: 9: W^ 0: a: b: c: J= d: w_ /, >, e: f: g: h: i: j: k: l: m: n: K( o: p: q: r: s: t: u: v: w: x: y: z: A: B: C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z: `:  < .< +< @< #< $< s$ %< &< *< =< -< ;< >< ,< '< )< !< ~< {< ]< ",\r
+"^< d- x= /< K] (< _< :< << P  [< }< |< 1< &. 2< 3< 4< 5< 6< 7< 8< 9< 0< a< b< c< d< e< f< g< j' h< i< j< k< l< m< n< o< p< q< r< D% s< l_ &. z{ `! g* t< u< v< w< x< F! y< z< A< B< C< D< E< F< G< H< I< J< K< L< 9( M< N< O< P< Q< R< S< T< U< V< W< X< Y< Z< `<  [ .[ +[ @[ #[ $[ %[ &[ *[ =[ -[ ;[ >[ @( ,[ F. ;@ '[ )[ j* C+ P( ![ ~[ '^ {[ r% ][ ^[ /[ ([ _[ :[ <[ [[ }[ |[ 1[ 2[ 3[ 4[ 5[ 6[ 7[ 8[ 9[ 0[ a[ b[ 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[ Q+ F[ G[ H[ I[ J[ K[ L[ M[ N[ O[ P[ Q[ u[ ",\r
+"R[ 8; S[ @/ 0+ T[ => s. U[ V[ W[ X[ N& Y[ V, Z[ `[  } .} o@ +} @} '[ N= #} $} %} &} *} =} -} ;} >} ,} l~ <_ '} )} !} ~} {} ]} ^} /} (} |- _] _} :} N' <} [} }} |} d- 1} 2} 3} 4} 5} 6} 7} 8} 9} 0} a} b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} w} x} y} c( z} A} B} C} D} E} F} j' G} H} I} J} R& y% K} L} M} n: r! #+ N} l~ O} P} Q} R} S} T} U} V} W} X} Y} Z} `}  | .| +| @| #| $| %| &| *| =| -| ;| >| ,| '| )| !| ~| {| ]| ^| /| (| _| 1& :| <| [| }| || 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| a| b| c| d| e| f| g| h| i| j| k| l| ",\r
+"m| n| o| p| q| r| s| t| u| v| w| x| y| z| A| B| C| D| o: E| q> F| S' G| H| I| J| K| L| M| N| O| P| Q| R| S| T| :! U| V| 3| W| X| Y| Z| %. p# `| b~ *)  1 .1 +1 D{ @1 #1 $1 %1 &1 *1 =1 -1 ;1 >1 ,1 '1 )1 !1 ~1 {1 ]1 #[ ^1 /1 7( (1 _1 :1 <1 [1 }1 |1 11 21 31 b} 41 51 61 71 81 91 01 a1 b1 c1 d1 e1 f1 g1 h1 b$ i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1 X1 Y1 Z1 k$ `1  2 .2 +2 @2 #2 $2 %2 &2 *2 =2 -2 ;2 >2 ,2 '2 )2 !2 ~2 {2 ]2 ^2 /2 (2 _2 :2 <2 [2 }2 |2 12 ",\r
+"22 32 r; F( 42 52 [, 62 72 82 !; 92 02 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2 m2 (_ n2 9' o2 p2 q2 ;! r2 == s2 t2 u2 v2 w2 x2 0@ y2 z2 A2 0; B2 C2 a^ D2 E2 F2 G2 H2 b- I2 J2 K2 L2 M2 N2 O2 P2 Q2 R2 S2 T2 U2 V2 W2 X2 Y2 Z2 `2  3 .3 +3 @3 #3 $3 %3 &3 *3 =3 -3 ;3 >3 ,3 '3 )3 !3 ~3 {3 ]3 ^3 /3 (3 _3 :3 <3 [3 }3 |3 13 23 U; 33 43 5^ 53 63 73 83 93 03 a3 b3 c3 d3 e3 :2 f3 g3 h3 i3 o/ j3 k3 l3 m3 n3 o3 p3 q3 r3 s3 t3 u3 v3 w3 x3 y3 z3 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 ;( N3 O3 P3 Q3 R3 S3 T3 <, U3 V3 W3 X3 Y3 Z3 `3 <|  4 .4 +4 @4 #4 ",\r
+"$4 %4 &4 *4 =4 -4 ;4 >4 v% ,4 '4 )4 !4 ~4 {4 ]4 ^4 /4 (4 _4 :4 <4 [4 M} }4 =} B= x2 |4 14 l~ 24 34 44 54 64 74 84 94 m< 04 a4 b4 c4 d4 e4 f4 g4 h4 m= >} i4 j4 k4 0@ l4 m4 n4 o4 p4 q4 r4 s4 t4 u4 v4 w4 x4 y4 z4 A4 B4 C4 D4 E4 F4 G4 H4 I4 J4 K4 L4 M4 N4 O4 P4 Q4 R4 S4 T4 U4 V4 W4 X4 Y4 Z4 `4  5 .5 r% +5 @5 #5 $5 %5 K} ,> &5 *5 =5 -5 y2 *5 ;5 >5 ,5 '5 )5 !5 ~5 {5 g< &= ]5 ^5 /5 (5 _5 :5 <5 [5 }5 |5 15 25 35 45 55 65 75 85 95 05 a5 b5 c5 d5 e5 f5 g5 =@ h5 l# i5 j5 k5 l5 m5 n5 o5 p5 -( q5 r5 s5 t5 u5 v5 w5 x5 y5 z5 A5 B5 C5 D5 E5 F5 ",\r
+"R& G5 H5 I5 3, J5 K5 L5 M5 N5 Y& ** 6= O5 P5 Q5 R5 S5 T5 U5 V5 l2 C. W5 X5 Y5 Z5 `5  6 .6 G3 +6 @6 #6 $6 %6 &6 *6 =6 -6 ;6 >6 ,6 '6 )6 !6 z% ~6 {6 ]6 ^6 /6 (6 _6 :6 <6 [6 }6 |6 16 26 36 46 56 66 76 86 96 06 a6 b6 c6 d6 e6 f6 g6 h6 i6 j6 k6 l6 m6 n6 o6 p6 q6 r6 s6 t6 u6 v6 w6 x6 y6 z6 A6 b{ B6 C6 D6 E6 F6 L. G6 H6 I6 >, J6 K6 L6 M6 N6 O6 P6 Q6 R6 S6 T6 U6 V6 W6 X6 Y6 Z6 a_ `6  7 .7 +7 @7 #7 $7 %7 &7 *7 =7 -7 ;7 >7 ,7 '7 )7 !7 ~7 {7 ]7 ^7 /7 (7 _7 :7 <7 [7 }7 |7 17 27 37 47 -5 57 w> 67 77 87 97 07 a7 b7 c7 d7 e7 f7 g7 h7 i7 j7 k7 ",\r
+"n{ l7 A. m7 H) n7 o7 p7 q7 r7 q. f+ ]) -] L& s7 t7 u7 v7 w7 6< x7 y7 z7 A7 Z1 B7 C7 D7 E7 F7 G7 H7 I7 J7 K7 L7 M7 N7 O7 P7 Q7 R7 S7 T7 U7 V7 W7 X7 Y7 Z7 `7 j# R, H5 Q^  8 .8 +8 @8 #8 $8 %8 &8 *8 =8 -8 ;8 >8 ,8 '8 )8 !8 ~8 {8 ]8 ^8 /8 (8 _8 :8 <8 [8 }8 |8 18 28 38 48 58 68 78 88 98 08 a8 b8 /& c8 F+ 5< d8 e8 f8 g8 h8 i8 j8 k8 l8 N6 m8 |3 n8 z2 o8 p8 q8 r8 s8 t8 u8 C3 v8 w8 x8 y8 z8 A8 B8 C8 D8 E8 F8 G8 H8 I8 J8 K8 L8 M8 N8 O8 P8 Q8 R8 S8 T8 U8 V8 W8 X8 Y8 Z8 `8  9 a3 .9 +9 @9 *5 #9 $9 %9 &9 *9 =9 -9 ;9 >9 ,9 '9 )9 !9 ~9 [3 {9 ]9 ",\r
+"I) ^9 h* /9 (9 #( _9 :9 <9 [9 k: }9 |9 19 29 39 y5 49 59 69 79 89 99 09 _3 a9 b9 c9 d9 e9 f9 g9 h9 i9 j9 k9 O} l9 m9 n9 o9 p9 q9 r9 s9 t9 u9 v9 w9 ,[ x9 g2 c; y9 z9 A9 B9 C9 D9 +] E9 F9 G9 H9 I9 J9 S{ K9 L9 M9 N9 O9 P9 Q9 R9 S9 T9 U9 V9 W9 X9 Y9 Z9 `9  0 .0 +0 @0 48 #0 $0 %0 &0 *0 =0 %. -0 ;0 >0 ,0 '0 )0 !0 ~0 {0 ]0 ^0 /0 (0 _0 :0 <0 [0 }0 |0 10 20 30 40 50 60 70 80 90 00 a0 b0 c0 d0 e0 f0 g0 h0 i0 j0 k0 l0 m0 n0 o0 p0 q0 r0 s0 t0 u0 v0 w0 x0 y0 z0 A0 B0 C0 D0 E0 F0 G0 H0 I0 J0 K0 L0 M0 N0 O0 P0 Q0 R0 S0 T0 U0 V0 W0 X0 Y0 Z0 `0 ",\r
+" a .a +a @a #a $a %a &a *a =a -a ;a >a ,a 'a )a O} !a ~a {a ]a ^a /a (a _a :a <a  . [a }a |a 1a 2a 3a 4a 5a 6a 7a 8a 9a 0a aa ba ca b| da ea fa ga ha ia ja A% ka la ma na oa pa qa ra sa ta ua va wa xa ya za Aa Ba Ca Da Ea Fa Ga Ha Ia Ja Ka La Ma Na Oa Pa Qa Ra Sa Ta Ua Va Wa Xa Ya Za `a  b .b +b @b #b $b %b @= &b *b =b -b ;b >b ,b 'b )b !b ~b {b ]b ^b /b (b _b 70 :b <b  6 #; [b }b |b 1b 2b 3b 4b 5b 6b 7b 8b 9b 0b ab bb cb db eb fb gb hb ib jb kb lb mb nb ob pb &a qb rb sb tb ub vb wb S} xb yb zb Ab Bb Cb Db Eb Fb Gb Hb Ib !{ Jb ",\r
+"Kb $; Lb Mb Nb Ob Pb Qb Rb Sb Tb Ub Vb Wb Xb Yb Zb `b  c .c +c @c #c $c %c &c *c =c -c n$ ;c >c ,c 'c )c !c ~c {c 17 ]c ^c /c (c _c B[ :c <c h8 [c }c |c 1c 2c 3c 4c 5c 6c 7c 8c 9c ua 0c ac bc cc dc ec fc gc hc ic jc kc lc mc nc oc pc qc rc sc tc uc vc wc 91 xc yc zc Ac Bc .] Cc Dc Ec (! Z[ Fc Gc Hc Ic Jc Kc _& Lc Mc Nc Oc Pc Qc Rc Sc Tc q< ib Uc Vc Wc Xc Yc Zc `c  d .d q$ +d @d #d $d %d &d *d =d -d ;d >d ,d 'd )d !d ~d {d ]d ^d /d (d _d :d <d [d }d |d 1d 2d 3d 4d 5d 6d 7d 8d 9d 0d ad sb bd cd t8 dd B/ ed fd y: gd hd id jd kd P& ",\r
+"ld md nd od pd a/ qd rd sd td ud vd wd xd yd zd Ad Bd Cd Dd Ed Fd -5 ;5 Gd Hd 77 Id Jd Kd Ld 4| Md Nd Od y! Pd Qd Rd Sd Td Ud Vd Wd Xd Yd Zd `d  e .e +e @e #e $e %e &e *e =e -e ;e >e ,e 'e )e !e ~e {e ]e ^e /e (e _e :e <e [e }e |e 1e 2e 3e 4e 5e 6e 7e 8e 9e 0e ae be ce de ee fe ge he ie je ke le me ne oe pe qe re se te ue ve we xe ye ze Ae Be Ce De Ee Fe Ge He Ie Je Ke Le Me Ne Oe Pe Qe Re Se Te Ue Ve We Xe Ye Ze `e  f .f +f @f #f $f %f &f *f t: =f -f ;f >f ,f yb 'f )f !f ~f {f ]f ^f /f (f _f :f <f [f }f |f 1f 2f 3f 4f 5f 6f 7f ",\r
+"8f 9f 8^ 0f af bf cf df ef ff gf hf if jf kf 1& lf mf nf K) of pf qf rf B5 sf tf >{ Md 5& uf U- vf Rd wf xf yf zf Af Bf Cf Df 30 Ef Ff Gf Hf If B= Jf Kf  d Lf -} Mf .) =[ Nf Of Pf Qf Rf Sf Tf Uf Vf Wf Xf Yf Zf `f  g .g +g @g H: #g $g %g &g *g =g -g ;g >g ,g 'g )g !g ~g {g ]g ^g /g (g _g :g <g [g }g |g 1g 2g 3g 4g 5g 6g 7g 8g 9g 0g ag bg cg dg eg (7 fg gg hg %+ ig jg kg lg F  mg ng og pg qg rg sg tg ug vg wg xg yg zg Ag Bg Cg Dg Eg Fg Gg Hg Ig Jg Kg Lg Mg Ng Og Pg Qg Rg Sg Tg Ug Vg )f Wg Xg Yg Zg `g  h .h +h @h #h $h T0 %h &h *h ",\r
+"=h -h ;h >h ,h 'h )h !h ~h Jd {h ]h ^h /h (h a| ve _h :h <h [h }h |h 1h 2h 3h 4h 5h 6h 7h 8h Hf 9h 0h la ah bh ch dh eh fh gh hh ih x( jh kh lh mh nh oh zf w~ ph qh rh sh th uh vh wh xh yh zh Ah 7/ Bh Ch Dh Eh Fh Gh Hh Ih Jh Kh Lh Mh Nh Oh Ph Qh Rh Sh Th Uh Vh Wh Xh Yh u^ Zh L^ `h  i .i +i @i #i $i %i ){ &i *i =i -i ;i >i ,i yb 'i )i !i ~i {i ]i Lg ^i /i (i _i :i <i [i }i o5 |i 1i 2i 3i 4i 5i 6i 7i 8i 9i 0i ai bi ci di ei ;{ fi gi hi ii ji ki li mi ni oi 07 {f pi qi ri si ti ui vi wi xi yi {{ zi Ai Bi Ci Di H@ Ei Fi Gi Hi Ii Ji ",\r
+"Ki Li Mi Ni Oi Pi Qi Ri Si Ti ^d Ui Vi Wi Xi Yi Zi 8_ `i  j .j +j @j #j 2& [h $j %j ]b k) &j *j =j -j ;j >j ,j 'j )j Yb !j x7 ~j {j ]j fa ^j /j (j _j :j <j [j }j |j 1j 2j 3j 4j 5j 6j 7j 8j 9j 0j aj bj cj dj ej fj gj hj ij jj kj lj mj nj oj pj qj rj sj tj uj vj wj xj `< yj zj Aj Bj Cj ){ Dj Ej Fj Gj Hj Ij Jj Kj Lj Mj f) Nj Oj Pj Qj Rj Sj Tj Uj =b ib Vj Wj Xj Yj Zj |& `j {c  k .k +k @k #k $k %k &k *k =k -k ;k >k ,k 'k )k %( !k ~k {k D: E0 ]k ^k /k 07 (k D7 _k :k <k [k }k |k 1k _| 2k 3k 4k 5k $c 6k 7k 8k 9k 0k ak bk ck dk ek fk gk ",\r
+"hk ik jk kk lk mk nk ok pk qk rk sk tk uk vk wk xk yk zk Ak R( J! Bk '2 Ck Dk Ek Fk Gk %= Hk Ik Jk Kk Lk Mk }i ne Nk Ok Pk Qk ze Rk Sk sf Tk Uk Vk Wk Xk Yk Zk `k  l %} .l +l @l #l $l %l &l *l =l -l ;l >l ,l 'l )l !l ~l {l ]l ^l /l (l _l :l <l [l }l |l 1l 2l 3l 4l 5l 6l 7l 8l 9l 0l al bl Z5 cl dl el fl gl hl il jl kl ll ml nl ol pl ql rl nd sl tl ul vl wl xl yl zl Al #; Bl Cl Y- Dl El Fl Gl Hl Il Jl Kl Ll Ml Nl Ol Pl {} Ql Rl Sl Tl Ul Vl rk Wl Sc Xl Yl Zl `l  m .m V~ +m @m #m $m >b %m &m *m vb =m -m ;m >m ,m 'm )m !m ~m {m ]m ^m ",\r
+"/m (m _m :m <m [m }m |m 1m 2m 3m 4m 5m 6m 7m 8m 9m 0m am bm cm g5 dm [h em fm gm hm ]6 m# ;0 im jm km lm lf mm nm om pm qm rm sm tm um vm wm xm ym zm Am Bm n% Cm Dm Em Fm Gm Hm Im Jm Km Lm Mm Nm Om Pm Qm Rm Sm |[ Tm Um Vm Wm Xm Ym Zm `m  n .n +n @n #n $n %n &n #[ *n =n -n ;n >n ,n 'n )n !n ~n {n ]n ^n /n (n _n :n <n [n J< }n |n 1n 2n 3n 4n 5n $e 6n 7n 8n 9n 0n P0 an bn cn dn en fn gn hn in jn kn ln mn nn on pn qn rn sn tn un vn wn xn yn zn An Bn Cn 8& Dn En Fn Gn Hn In Jn Kn Ln Mn Nn On Pn Qn Rn Sn S0 Tn Un Vn Wn Xn Yn Zn jd `n ",\r
+" o .o +o @o #o $o R' %o &o *o =o -o ;o >o ,o 'o )o [' !o ~o {o ]o ^o /o 14 (o _o A] :o ;* <o &@ c/ [o }o |o 1o 2o w0 %i 3o 4o 5o y/ 6o 7o &= 8o 9o 0o {i ao bo co do eo fo #b go ho io jo ko lo mo no oo po qo ro so to uo vo wo xo yo zo Ao Bo Co Do Eo Fo Go Ho Io Jo Ko K; Lo Mo No Oo Po Qo Ro So To Uo /1 Vo Wo Xo F9 Yo Zo `o  p .p +p @p #p $p %p &p i' 9d *p =p -p ;p >p ,p 'p )p ;- !p ~p {p ]p ^p /p (p _p :p <p [p }p |p x> 1p 2p 3p 4p 5p |o Jg 6p 9m 7p 8p 9p 0p ap bp cp dp ep fp gp hp ip jp kp 8d lp mp np op pp qp rp sp tp up vp wp ",\r
+"xp yp zp Ap Bp Cp Dp Ep Fp Gp Hp Ip Jp Kp Lp Mp f3 Np Op Pp Qp Rp Sp Tp 77 L. `- Up Vp Wp Xp Yp X' Zp `p  q Zc .q +q @q #q $q %q &q *q =q -q ;q >q ,j ,q 'q )q !q ~q W- {q Hf ]q ^q /q (q _q :q <q [q }q |q 1q 2q 3q 4q 5q 6q 7q 8q 9q 0q aq bq cq dq eq fq gq hq iq Yo jq kq lq mq nq oq pq qq rq sq tq uq vq wq xq yq zq Aq 8) Bq Cq Dq Eq Fq Gq Hq Iq Jq Kq Lq Mq Nq Oq Pq Qq Hp Rq Sq 3m Tq Uq Vq Wq Xq Yq Zq `q  r .r +r @r #r $r %r &r *r =r -r ;r >r ,r 'r )r !r ~r {r ]r ^r /r (r _r :r <r [r }r |r 1r 2r 3r 4r 5r 6r 7r 8r 9r 0r ar br cr 3f ",\r
+"dr er fr gr hr ir jr kr lr mr nr or pr qr rr sr  2 tr ur vr wr xr yr zr Qk Ar Br -c Cr Dr Er Fr M_ Gr Hr Ir Jr Kr Lr Mr Kg Nr Or Pr Qr Rr Sr Tr Ur Vr Z5 Wr Xr Yr Zr `r  s .s +s @s #s $s %s &s *s =s -s ;s >s ,s 's )s !s ~s {s ]s ^s /s (s _s :s <s [s }s |s 1s 2s 3s 4s 5s 6s 7s 8s 9s 0s as bs cs ds es fs gs hs is s( 6( js ks ls ms ns os ps qs rs ss ts us vs ws xs t5 ys kb zs As Bs Cs Ds Es Fs Gs Hs Is Js Ks Ls Ms Ns Os Ps Qs Rs Ss Ts Us Vs Ws Xs Ys Zs `s  t .t +t @t #t $t %t &t *t =t -t ;t >t ,t 't )t !t ~t {t Rj ]t ^t /t (t _t :t ",\r
+"<t [t }t |t 1t 2t 3t 4t 5t 6t 7t 8t 9t 0t at bt ct dt et ft gt ht it X6 jt kt *5 lt mt nt ot pt qt rt ~c st tt Jk ut vt wt xt yt zt At Bt Ct Dt k* Et Ft Gt Ht It qm Sr Jt Kt Lt Mt Nt Ot Pt Qt Rt St Tt Ut Vt Wt Xt Yt Zt `t  u .u +u @u #u $u %u &u *u Q~ =u -u ;u >u ,u 'u )u !u ge ~u {u -8 ]u ^u /u (u _u :u <u 7) [u }u |u 1u 2u 3u 4u 5u 6u 7u 8u <n 9u 0u au bu cu du _k eu fu gu hu iu ju ku lu mu nu ou pu qu ru su tu uu vu wu xu yu zu Au Bu Cu P[ Du Eu Fu Gu Hu Iu Ju Ku Lu Mu Nu Ou Pu Qu Ru Su Tu Uu Vu Wu Xu Yu Zu `u  v .v +v @v #v ",\r
+"$v %v &v *v =v -v ;v >v ,v 'v )v !v ~v {v ]v ^v /v (v _v :v <v [v }v |v 1v ha ^! 2v 3v 4v 5v 6v 7v 8v 9v 0v av bv cv dv ev fv gv hv iv jv kv lv mv nv ov 3% pv qv rv sv tv uv vv wv xv yv zv Av Bv Cv Dv Ev Fv Gv Hv Iv Jv Kv Lv Mv Nv Ov Pv Qv Rv Sv Tv Uv Vv Wv Xv Yv Zv `v  w .w X1 +w @w #w $w %w &w *w =w -w ;w >w ,w 'w )w !w ~w {w ]w ^w /w (w _w :w 9) <w [w }w |w 1w Sb 2w 3w 4w 5w 6w 7w 8w 9w 0w rt aw bw cw dw ew fw gw hw iw jw kw lw mw nw ow pw .a Q0 qw rw sw tw uw vw ww xw yw zw Mp Aw Bw Cw Dw Ew Fw Gw Hw Iw Jw Kw Lw Mw Nw Ow Pw ",\r
+"Qw Rw Sw Tw Uw Vw Ww Xw Yw Zw `w  x .x +x @x #x $x %x &x *x =x -x ;x >x #b ,x ;/ 'x )x !x ~x {x ]x ^x /x (x _x :x <x [x }x |x 1x 2x 3x 4x 5x 6x 7x 8x 9x 0x &@ ax bx cx dx w~ ex fx gx hx ix jx kx lx mx nx ox px qx rx sx tx ux vx wx xx yx zx Ax Bx Cx Dx Ex Fx Gx Hx Ix Jx Kx Lx Mx Nx Ox Px Qx Rx Sx Tx Ux Vx Wx Xx Yx Zx `x  y .y +y @y #y $y %y &y *y =y -y ;y >y ,y 'y )y vv !y ~y U8 {y ]y ^y /y (y _y :y <y [y }y |y 1y 2y li 3y 4y 5y 6y 7y 8y 9y 0y ay by cy dy ey fy gy hy iy jy ky ly my ny 2n oy py qy ry sy ty uy vy wy xy yy zy Ay By ",\r
+"Cy Dy Ey Fy Gy Hy Iy Jy Ky Ly My Ny Oy Py Qy Ry Sy Ty Uy Vy Wy Xy Yy Zy -5 `y c<  z Ce .z +z @z #z $z %z &z *z =z -z ;z ;z >z ,z :8 'z )z !z ~z {z ]z ^z /z ;2 (z _z :z 9v <z )x [z }z |z 1z 2z 3z 4z 5z 6z 7z 8z 9z 0z az bz cz dz ez fz gz hz iz jz kz lz mz nz oz pz qz rz sz tz uz vz wz xz P; yz zz Az Bz Cz Dz Ez Fz Gz Hz Iz Jz Kz Lz Mz Nz Oz Pz Qz Rz Sz *n Tz Uz Tg /t Vz Wz Xz Yz Zz `z  A .A +A @A #A $A %A &A *A =A -A ;A >A ,A 'A )A !A ~A {A ]A ^A /A (A _A :A <A [A }A |A 1A 2A 3A 4A 5A 6A 7A 8A 9A 0A aA bA Hz cA dA eA fA gA hA iA ",\r
+"jA kA lA mA nA oA pA Bp qA rA sA tA uA vA wA xA yA zA AA BA CA q[ DA {a EA FA GA HA IA JA KA LA MA NA OA PA QA RA u( SA TA UA VA WA XA YA ZA `A  B .B +B @B #B $B %B &B *B =B -B ;B >B ,B 'B )B !B ~B {B ]B ^B /B (B _B :B <B [B }B |B 1B 2B 3B 4B 5B 6B 7B 8B 9B 0B aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 2A AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB `B  C .C +C @C o^ #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 1C 2C 1) 3C 4C 5C ",\r
+"6C 7C 8C 9C 0C aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC qC rC sC tC u2 uC vC wC xC yC zC AC BC CC DC EC FC GC HC IC JC WA KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC `C  D .D +D @D #D $D %D &D *D =D -D ;D >D ,D 'D )D !D ~D {D ]D ^D /D (D _D :D <D [D }D |D 1D 2D 3D 4D 5D 6D 7D 8D 9D 0D t( aD bD cD dD eD fD gD hD iD jD kD lD mD nD oD pD qD rD sD aD tD uD vD wD xD yD zD AD BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UD VD WD XD YD ZD `D  E .E +E @E #E $E N< %E &E *E =E -E ;E _8 >E ,E 'E )E !E ~E {E ]E ^E /E ",\r
+"(E _E :E <E [E }E |E 1E 2E 3E 4E 5E 6E 7E 8E 9E 0E aE bE cE dE eE fE gE hE iE jE kE lE mE nE oE pE qE rE sE tE uE vE wE xE yE dA zE AE BE CE DE EE FE GE HE IE jb s: JE KE LE ME NE OE PE QE RE SE TE UE VE WE XE YE ZE `E  F .F +F @F #F $F %F &F *F =F -F ;F >F ,F 'F )F !F ~F {F ]F ^F /F (F _F :F <F [F }F |F 1F 2F 3F 4F 5F 6F 7F 8F 9F 0F aF bF 8) cF dF O< =3 %v eF fF gF hF iF jF kF lF mF nF oF pF qF rF sF tF uF vF wF xF yF zF AF Qz BF CF DF EF FF GF HF IF JF lq KF LF MF NF OF PF QF 38 RF SF TF UF VF WF XF YF ZF #: `F  G .G +G o, @G ",\r
+"#G $G %G &G *G =G -G ;G >G ,G 'G )G !G ~G {G ]G ^G /G (G _G :G <G [G }G Sy |G 1G 2G 3G 4G 5G 6G 7G 8G 9G !1 0G aG _u bG cG dG eG fG gG hG iG jG kG lG mG nG oG pG qG rG sG tG uG vG wG xG yG zG AG BG CG DG EG FG GG HG IG JG KG LG MG NG OG PG QG RG SG TG UG VG WG XG YG ZG `G  H .H +H @H #H $H %H &H *H =H -H ;H >H ,H 'H )H !H ~H {H ]H ^H /H (H _H :H <H {3 [H }H |H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0H aH bH cH dH eH fH gH hH iH jH kH lH mH nH oH pH qH rH sH tH uH vH wH xH yH zH ~1 AH BH CH DH EH FH GH oD PD HH IH JH KH LH MH NH OH PH QH RH ",\r
+"SH TH UH VH WH XH YH ZH `H  I .I +I @I #I $I %I &I *I =I -I ;I >I ,I 'I )I !I ~I {I ]I ^I /I (I _I :I <I [I }I |I 1I 2I 3I 4I 5I 6I >C 7I 8I 9I %0 0I aI bI cI dI eI fI 8C gI hI iI jI kI lI mI nI oI pI qI rI sI tI uI vI wI xI yI zI AI BI CI DI EI FI GI HI II JI KI LI MI NI OI PI QI RI SI TI UI VI WI XI YI ZI `I  J .J +J @J #J $J %J &J *J =J -J ;J >J ,J R4 'J )J !J ~J {J ]J ^J /J (J _J :J <J [J }J |J 1J 2J 3J 4J 5J 6J 7J 8J 9J Wh 0J aJ bJ cJ dJ eJ fJ gJ hJ iJ jJ kJ lJ mJ nJ oJ S4 pJ qJ rJ sJ tJ uJ vJ aD wJ xJ NH yJ zJ AJ BJ CJ DJ ",\r
+"EJ FJ GJ HJ IJ JJ KJ LJ MJ NJ OJ PJ QJ RJ SJ TJ UJ VJ WJ XJ YJ ZJ `J  K .K +K @K #K $K %K &K *K =K -K ;K >K ,K 'K )K !K ~K {K ]K Xh ^K /K (K _K Ta :K <K [K }K |K 1K 2K 3K 4K 5K 6K 7K 8K 9K 0K aK bK cK dK eK fK gK hK iK jK kK lK mK nK oK pK qK rK sK tK uK vK wK xK yK zK AK BK CK DK EK FK GK HK IK JK KK LK MK NK OK PK QK RK SK TK UK ): VK WK XK YK ZK `K y}  L kq .L +L @L #L $L %L &L *L =L -L ;L >L ,L 'L )L !L ~L {L ]L ^L /L (L ;3 _L :L <L [L }L |L 1L 2L 3L 4L 5L 6L 7L 8L 9L 0L aL bL cL dL eL fL gL hL iL jL kL lL BB mL nL oL pL qL ",\r
+"rL sL tL uL vL wL xL yL zL AL BL CL DL EL FL GL HL IL JL KL LL ML NL OL PL QL RL SL TL UL VL WL XL YL ZL `L  M .M O4 +M @M #M V< $M %M &M *M =M -M ;M >M ol ,M 'M )M !M ~M {M ]M ^M /M (M _M :M <M [M }M |M 1M 2M 3M 4M 5M 6M 7M 8M 9M 0M aM bM cM dM eM fM gM hM iM jM kM lM mM nM oM pM qM rM sM tM uM vM wM xM yM zM AM BM CM DM EM FM GM HM IM JM KM LM MM NM OM PM QM RM SM TM UM VM vc WM XM YM ZM `M  N .N +N @N #N $N %N &N *N =N +M x, -N ;N >N ,N yy ty wB 'N )N !N ~N {N ]N ^N Ra /N (N +] _N :N <N [N }N |u |N 1N 2N 3N 4N 5N 6N 7N 38 8N ",\r
+"9N 0N aN bN cN dN eN fN gN hN iN jN kN Ge lN mN nN oN pN qN rN sN tN uN vN wN xN yN zN AN BN CN DN EN FN HK GN HN IN JN KN LN MN NN ON PN QN RN SN TN UN VN WN XN YN ZN `N  O .O +O @O #O $O %O &O *O =O -O St ;O >O ,O 'O )O !O ~O {O ]O ^O /O (O _O :O <O [O }O |O 1O 2O 3O 4O 5O 6O 7O 8O 9O 0O aO bO cO dO eO fO gO hO iO jO kO lO mO nO oO pO qO rO sO tO uO vO wO xO yO zO AO BO CO DO EO FO GO HO IO JO KO LO MO NO OO PO QO RO SO TO UO VO WO XO YO ZO `O  P .P +P @P #P $P %P &P *P q^ =P -P ;P >P ,P 'P )P +p !P ~P {P ]P ^P /P (P N{ _P :P ",\r
+"<P [P }P |P 1P 2P 3P 4P 5P 6P 7P 8P 9P 0P aP bP cP dP eP fP gP hP iP P: jP kP lP mP 1n nP oP pP qP rP sP tP kJ uP vP 78 wP xP yP zP AP BP CP DP EP FP GP HP IP JP KP LP MP NP OP PP QP RP SP TP UP VP WP XP YP ZP `P  Q .Q +Q @Q #Q $Q %Q &Q *Q =Q -Q ;Q >Q ,Q 'Q )Q !Q ~Q {Q ]Q ^Q /Q (Q _Q :Q <Q [Q }Q |Q 1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q 9Q 0Q aQ bQ cQ dQ eQ fQ gQ hQ iQ jQ kQ lQ mQ nQ oQ pQ qQ rQ sQ tQ uQ vQ wQ xQ yQ zQ AQ BQ Z< CQ DQ EQ FQ GQ HQ Ra IQ JQ KQ LQ MQ NQ 4C OQ PQ Fz QQ RQ SQ TQ UQ VQ WQ XQ YQ ZQ `Q  R .R u( +R @R 6N #R CK $R %R &R ",\r
+"*R =R -R ;R >R ,R 'R )R !R ~R {R ]R ^R /R (R _R :R <R [R }R |R 1R 2R 3R 4R 5R 6R 7R 8R 9R 0R aR bR cR dR eR fR gR hR iR jR kR lR mR nR oR l0 pR m3 qR rR sR tR uR vR =# wR xR yR zR AR BR CR DR ER FR GR HR IR JR KR LR MR NR OR PR QR RR SR TR UR VR WR XR YR ZR `R  S .S +S @S #S $S %S &S *S =S -S ;S >S ,S 'S )S !S ~S {S ]S ^S /S (S _S :S <S [S }S bM |S 1S 2S 3S 4S 5S 6S 7S 8S 9S 0S aS bS cS dS eS fS gS hS iS jS kS -n lS mS nS :: oS pS qS rS sS tS *S uS vS wS xS yS zS AS BS CS DS ES FS GS HS IS JS KS LS MS NS OS PS QS RS SS TS US VS ",\r
+"WS XS YS ZS `S  T .T +T @T #T $T %T &T *T =T -T ;T >T ,T 'T )T !T ~T {T GK ]T ^T e( /T (T _T :T <T [T }T |T 1T 2T 3T 4T 5T 6T yz 7T )0 8T 9T 0T aT bT cT 9I dT eT fT gT hT iT jT kT lT mT nT oT Bv pT qT rT sT tT uT vT wT xT yT zT AT BT CT DT ET FT GT HT IT JT KT LT MT NT OT PT QT RT i} ST *S TT UT VT WT XT YT ZT `T  U .U +U @U #U $U %U &U *U =U -U ;U >U ,U 'U )U !U ~U {U ]U ^U /U (U _U :U <U [U }U |U 1U 2U 3U 4U 5U 6U 7U 8U 9U 0U aU bU cU dU eU fU gU hU iU A3 jU kU lU mU nU oU pU qU rU sU tU uU vU wU xU yU zU AU BU CU DU EU FU GU ",\r
+"HU IU JU KU LU MU NU OU PU QU RU Q9 SU TU UU VU WU XU YU ZU `U  V .V +V wP @V #V $V %V &V *V =V -V ;V >V ,V 'V )V !V ~V {V ]V ^V /V (V _V :V <V [V }V |V 1V 2V bI 3V 4V 5V 6V 7V 8V 9V 0V aV bV cV dV eV fV gV hV iV jV kV lV mV nV oV pV qV rV sV tV uV vV wV xV yV zV AV BV CV DV EV FV GV #w HV IV JV %A KV LV MV NV OV PV QV RV SV TV UV VV WV XV YV ZV `V  W .W +W @W #W $W %W &W *W =W -W ;W >W ,W 'W )W !W ~W {W ]W ^W /W (W _W :W <W [W }W |W 1W 2W 3W 4W 5W 6W 7W 8W 9W 0W aW CK bW cW dW eW fW gW hW iW jW kW lW mW nW oW pW qW rW sW tW uW ",\r
+"vW wW xW yW zW AW BW CW DW ,5 EW FW GW HW IW JW KW LW MW NW OW PW QW RW SW TW UW VW WW w4 XW YW ZW `W  X .X +X @X #X $X %X &X *X =X -X ;X >X ,X 'X )X !X ~X {X ]X ^X /X (X _X :X <X [X }X k] |X 1X 2X 3X 4X 5X 6X 7X 8X 9X 0X aX bX cX dX eX fX gX hX iX jX kX lX mX nX oX pX qX rX sX tX uX vX aD wX xX yX zX AX BX CX DX EX FX GX HX IX JX KX LX MX NX OX PX QX RX ro SX TX 'u UX VX WX XX YX ZX `X  Y .Y +Y @Y #Y jS $Y %Y &Y *Y =Y -Y ;Y >Y ,Y 'Y )Y !Y ~Y {Y ]Y ^Y /Y (Y _Y :Y <Y [Y }Y |Y 1Y 2Y 3Y 4Y 5Y 6Y 7Y 8Y 9Y 0Y aY bY cY dY eY fY gY hY ",\r
+"iY jY kY lY :4 mY nY oY pY qY rY sY tY uY vY wY xY yY zY AY BY CY s6 DY EY FY GY c( SA HY IY JY KY LY MY NY OY PY QY RY SY TY UY VY WY XY YY ZY `Y  Z .Z +Z @Z #Z $Z %Z &Z *Z =Z -Z ;Z >Z ,Z 'Z )Z -U !Z ~Z {Z ]Z ^Z /Z (Z _Z :Z <Z [Z }Z |Z 1Z 2Z 3Z 4Z 5Z aN 6Z 7Z 8Z 9Z 0Z aZ bZ cZ dZ eZ fZ gZ hZ iZ jZ kZ lZ mZ nZ oZ pZ qZ rZ sZ tZ uZ vZ wZ xZ yZ zZ AZ BZ CZ DZ EZ FZ GZ HZ IZ JZ 5) KZ LZ MZ NZ OZ PZ QZ RZ SZ TZ UZ -' VZ WZ XZ YZ ZZ `Z  ` .` +` @` #` $` %` &` *` =` -` ;` >` ,` '` )` !` ~` {` ,C ]` ^` /` (` _` :` <` [` }` |` 1` 2` 3` ",\r
+"4` 5` 6` 7` 8` 9` 0` a` b` c` d` e` f` g` h` i` j` k` l` m` n` o` p` q` r` hJ s` xc t` 1: u` v` w` x` y` z` A` B` C` wq D` E` F` G` H` I` J` K` L` M` N` O` P` Q` R` S` T` U` V` W` X` Y` Z` ``   .. .+ .@ .# .$ .% .& .* .= .- .; .Zf > .v3 , .pR ' .) .! .~ .{ .] .^ ./ .( ._ .: .< .[ .} .| .1 .2 .3 .4 .5 .6 .7 .8 .9 .0 .a .b .c .d .e .f .g .h .i .j .k .l .rZ m .n .o .p .q .r .s .t .u .v .w .EX x .y .z .A .B .C .D .E .F .G .H .I .J .K .L .M .N .O .P .Q .R .S .T .U .V .W .X .Y .Z .` . .....+..@..#..$..%..&..*..=..-..;..>..,..'..)..!..",\r
+"~..{..]..^../..(.._..:..<..[..}..|..1..2..3..4..5..6..7..8..9..0..a..b..DU c..d..e..Az f..g..h..3A i..j..k..l..m..n..o..p..q..r..s..t..u..v..|Z w..x..y..z..A..B..C..D..E..F..G..H..I..J..K..L..M..N..O..P..Q..R..S..T..U..V..W..X..Y..Z..`.. +.)Z .+.++.@+.#+.$+.~ .%+.&+.*+.=+.-+.;+.>+.,+.'+.)+.!+.~+.{+.]+.^+./+.(+._+.:+.<+.[+.}+.|+.1+.2+.3+.4+.5+.6+.7+.8+.9+.0+.a+.b+.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+.F+.G+.H+.I+.J+.K+.L+.M+.N+.O+.P+.Q+.R+.S+.T+.U+.V+.W+.X+.Y+.Z+.`+. @..@.+@.@@.#@.",\r
+"%H uy $@.%@.&@.*@.=@.-@.;@.Oy >@.i5 V6 ,@.'@.)@.!@.~@.{@.]@.^@.w, /@.(@._@.:@.<@.[@.YQ }@.|@.8} 1@.2@.3@.4@.5@.6@.7@. y 8@.9@.0@.a@.b@.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@.F@.U..G@.H@.I@.J@.K@.L@.M@.N@.O@.P@.Q@.R@.S@.T@.U@.V@.W@.X@.Y@.Z@.`@. #..#.+#.@#.##.$#.%#.&#.*#.=#.-#.;#.>#.,#.'#.)#.!#.~#.{#.]#.^#./#.(#._#.:#.So <#.[#.}#.|#.1#.2#.3#.4#.5#.6#.7#.8#.9#.0#.a#.b#.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#.F#.G#.H#.I#.J#.K#.L#.M#.N#.O#.",\r
+"8( P#.s( Q#.R#.S#.T#.U#.V#.W#.X#.Y#.Z#.`#. $..$.+$.@$.#$.$$.%$.&$.*$.=$.-$.;$.>$.,$.-w '$.)$.!$.~$.{$.]$.^$./$.($._$.:$.<$.[$.}$.|$.1$.2$.3$.4$.5$.6$.7$.8$.9$.0$.a$.b$.c$.d$.e$.f$.g$.kT h$.i$.j$.k$.l$.m$.n$.o$.p$.q$.r$.s$.t$.u$.v$.i$.w$.x$.y$.z$.A$.B$.C$.D$.E$.F$.G$.H$.I$.J$.K$.L$.M$.N$.O$.P$.Q$.R$.S$.T$.U$.V$.W$.X$.Y$.Z$.`$. %..%.+%.bN @%.#%.$%.%%.&%.*%.=%.-%.;%.>%.,%.'%.)%.!%.*N ~%.{%.]%.^%./%.(%._%.:%.<%.[%.}%.|%.1%.2%.3%.4%.5%.6%.7%.8%.9%.0%.a%.b%.A, 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%.",\r
+"B%.C%.T2 D%.E%.9< F%.G%.H%.I%.J%.K%.L%.M%.N%.O%.P%.Q%.R%.S%.T%.U%.V%.W%.X%.Y%.Z%.`%. &..&.+&.@&.#&.$&.%&.&&.*&.=&.-&.;&.>&.,&.'&.)&.!&.3O ~&.{&.]&.^&./&.(&._&.:&.<&.[&.}&.|&.1&.2&.3&.4&.5&.6&.7&.8&.9&.0&.a&.b&.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&.F&.G&.H&.I&.J&.K&.L&.M&.N&.O&.P&.Q&.R&.S&.T&.U&.V&.W&.X&.Y&.Z&.`&. *..*.+*.@*.#*.$*.%*.&*.**.=*.-*.;*.>*.,*.'*.)*.!*.~*.{*.]*.^*./*.(*._*.:*.<*.[*.}*.|*.1*.2*.3*.4*.5*.6*.7*.8*.9*.0*.a*.b*.c*.d*.e*.f*.g*.h*.i*.j*.k*.l*.m*.n*.o*.p*.q*.r*.",\r
+";E s*.G^ t*.u*.v*.w*.x*.y*.z*.K+.A*.B*.C*.D*.E*.F*.G*.H*.I*.J*.K*.L*.M*.N*.O*.P*.Q*.R*.S*.T*.U*.V*.W*.X*.Y*.Z*.`*. =..=.+=.@=.#=.$=.%=.&=.*=.==.-=.;=.>=.,=.'=.)=.!=.~=.{=.]=.^=./=.(=._=.K@.:=.<=.4&.[=.}=.|=.1=.2=.3=.4=.5=.6=.C@.7=.8=.,d 9=.0=.a=.b=.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=.F=.G=.H=.I=.J=.K=.L=.M=.N=.O=.P=.Q=.R=.S=.T=.U=.V=.W=.X=.Y=.Z=.`=. -..-.+-.@-.#-.$-.%-.&-.*-.=-.--.;-.>-.,-.'-.)-.!-.~-.{-.]-.^-./-.(-._-.:-.<-.[-.}-.|-.1-.2-.3-.4-.5-.6-.7-.8-.9-.0-.a-.b-.c-.d-.",\r
+"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-.F-.G-.QF H-.I-.J-.K-.L-.M-.N-.O-.P-.Q-.R-.S-.T-.U-.~ .V-.W-.X-.Y-.Z-.`-. ;..;.+;.@;.#;.$;.%;.7&.&;.*;.=;.-;.;;.>;.,;.';.);.!;.~;.{;.];.^;./;.(;._;.:;.<;.[;.};.|;.1;.2;.3;.4;.5;.6;.7;.8;.9;.0;.a;.b;.c;.d;.e;.f;.g;.h;.i;.j;.k;.l;.m;.n;.j&.o;.p;.q;.r;.s;.t;.u;.v;.w;.x;.y;.z;.A;.B;.C;.D;.E;.F;.G;.H;.I;.J;.K;.L;.M;.N;.O;.P;.Q;.R;.S;.T;.U;.V;.W;.X;.Y;.Z;.`;. >..>.+>.@>.#>.$>.%>.&>.*>.=>.->.;>.>>.,>.'>.)>.!>.~>.{>.]>.^>./>.(>._>.:>.<>.6U [>.}>.|>.1>.2>.3>.",\r
+"4>.5>.6>.7>.8>.9>.0>.a>.b>.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>.F>.G>.H>.I>.J>.K>.L>.M>.N>.O>.P>.Q>.R>.S>.T>.U>.V>.W>.X>.Y>.Z>.`>. ,..,.+,.@,.#,.$,.%,.&,.*,.=,.mx -,.;,.>,.,,.(;.{Q ',.),.!,.~,.{,.],.^,./,.(,._,.:,.<,.[,.},.[+.|,.1,.2,.3,.4,.5,.6,.7,.8,.9,.0,.a,.b,.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,.F,.G,.]&.H,.I,.J,.K,.L,.M,.N,.O,.P,.Q,.R,.S,.T,.U,.V,.W,.X,.Y,.Z,.`,. '.Gi .'.+'.@'.#'.$'.%'.pn &'.*'.='.-'.;'.>'.,'.Q/ l' ''.)'.!'.",\r
+"~'.{'.]'.^'./'.('._'.:'.<'.['.}'.|'.1'.2'.3'.4'.5'.6'.7'.8'.9'.0'.a'.b'.c'.d'.e'.f'.g'.2: h'.i'.j'.k'.l'.m'.n'.o'.p'.q'.r'.s'.t'.u'.v'.w'.x'.y'.z'.A'.B'.`P |M C'.D'.E'.F'.G'.H'.I'.J'.K'.L'.M'.N'.O'.P'.Q'.Z` R'.S'.T'.U'.V'.W'.X'.Y'.Z'.`'. )..).+).@).#).$).%).&).*).=).-).;).>).,).').)).8&.!).~).{).$W ]).^)./).()._).:).<).[).}).|).1).2).3).4).5).6).7).8).9).0).a).b).c).d).e).f).g).h).i).j).k).l).Fo m).n).B@.o).p).q).r).s).t).u).v).w).x).y).z).A).B).C).D).E).F).G).H).I).J).K).L).M).N).O).P).Q).R).S).T).U).V).W).X).Y).Z).`). !..!.+!.",\r
+"@!.#!.$!.%!.&!.*!.[t =!.-!.;!.>!.,!.'!.)!.!!.~!.{!.]!.^!./!.(!._!.:!.<!.[!.}!.|!.1!.2!.3!.4!.5!.6!.7!.8!.9!.0!.a!.b!.c!.d!.e!.f!.g!.h!.i!.j!.k!.y=.l!.m!.n!.o!.p!.q!.r!.s!.t!.u!.v!.w!.x!.y!.z!.A!.B!.C!.D!.E!.F!.G!.H!.I!.J!.K!.L!.J8 M!.N!.O!.P!.Q!.R!.*).S!.T!.U!.V!.W!.X!.Y!.Z!.`!. ~..~.+~.@~.#~.$~.%~.&~.*~.=~.-~.;~.>~.,~.'~.)~.!~.~~.{~.]~.^~./~.(~._~.:~.<~.[~.}~.|~.1~.2~.3~.4~.5~.6~.7~.8~.9~.0~.a~.b~.K>.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~.F~.G~.H~.I~.J~.K~.L~.M~.N~.O~.P~.Q~.R~.S~.",\r
+"9P T~.U~.V~.W~.X~.hG Y~.Z~.`~. {..{.+{.@{.#{.${.%{.&{.*{.={.-{.;{.>{.,{.'{.){.!{.~{.{{.]{.^{./{.({._{.:{.<{.[{.}{.|{.1{.2{.3{.4{.5{.6{.7{.8{.9{.0{.a{.b{.c{.d{.e{.f{.g{.h{.av i{.j{.k{.l{.m{.n{.o{.p{.q{.r{.s{.t{.u{.u{.v{.^,.w{.1;.x{.y{.z{.A{.B{.C{.2;.D{.E{.F{.G{.H{.I{.J{.K{.L{.M{.N{.7Z O{.P{.Q{.R{.S{.(q T{.U{.V{.W{.X{.Y{.Z{.`{. ]..].+].@].#].$].lX %].&].*].=].-].;].>].,].'].)].!].~].4&..~.{].]].^]./]./e (]._].:].<].[].}].|].1].2].3].4].5].6].7].8].9].0].a].b].c].d].e].f].g].h].i].j].k].l].m].n].o].p].q].r].s].t].u].v].w].x].y].z].",\r
+"A].B].C].D].E].F].G].H].I].J].K].L].M].N].O].@{.P].Q].R].S].T].U].V].W].y} X].Y].7,.Z].`]. ^..^.+^.@^.#^.$^.%^.&^.*^.=^.-^.;^.>^.,^.'^.)^.!^.~^.{^.]^.^^./^.(^._^.:^.<^.[^.}^.|^.1^.2^.3^.4^.5^.6^.7^.8^.9^.0^.a^.b^.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^.F^.G^.H^.I^.J^.K^.L^.M^.N^.O^.1D P^.Q^.R^.S^.T^.U^.V^.W^.X^.Y^.Z^.`^. /../.+/.@/.#/.$/.%/.&/.*/.=/.-/.;/.>/.,/.'/.)/.!/.~/.{/.]/.^/.+/.//.(/._/.:/.</.[/.}/.|/.1/.2/.3/.4/.5/.6/.7/.8/.9/.0/.a/.b/.c/.d/.e/.f/.g/.h/.i/.j/.k/.l/.m/.n/.o/.",\r
+"p/.q/.r/.s/.t/.u/.v/.w/.x/.y/.z/.A/.B/.C/.D/.E/.F/.G/.H/.I/.J/.K/.L/.M/.N/.O/.P/.Q/.R/.S/.T/.U/.ZI kS V/.W/.X/.Y/.Z/.`/. (..(.+(.@(.#(.$(.%(.&(.*(.=(.-(.;(.>(.,(.'(.)(.!(.~(.{(.](.^(./(.((._(.TH :(.<(.[(.}(.|(.1(.2(.3(.4(.5(.6(.k=.7(.8(.9(.0(.a(.b(.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(.F(.G(.H(.I(.J(.K(.L(.M(.N(.O(.P(.Q(.R(.SP S(.T(.U(.V(.W(.X(.Y(.Z(.0T `(. _.._.+_.@_.#_.._.$_.%_.&_.*_.=_.-_.;_.>_.,_.'_.)_.!_.~_.{_.]_.^_./_.(_.__.:_.<_.[_.}_.|_.1_.2_.3_.4_.5_.6_.7_.8_.9_.0_.a_.b_.",\r
+"c_.7n d_.e_.f_.g_.X/.h_.i_.j_.k_.l_.m_.n_.o_.p_.q_.r_.s_.t_.u_.V< v_.w_.x_.-V y_.z_.A_.B_.C_.D_.E_.F_.G_.H_.I_.J_.K_.L_.M_.N_.O_.P_.Q_.R_.S_.T_.U_.V_.W_.X_.Y_.Z_.`_. :..:.+:.@:.#:.$:.%:.&:.*:.=:.-:.;:.>:.,:.':.):.!:.~:.{:.]:.^:./:.(:._:.::.<:.[:.}:.|:.1:.2:.3:.4:.5:.>,.6:.c;.7:.8:.9:.0:.a:.b:.c:.d:.e:.f:.g:.h:.i:.j:.k:.zc l:.m:.n:.o:.p:.q:.r:.s:.t:.u:.v:.w:.x:.y:.z:.A:.B:.C:.D:.E:.F:.G:.H:.I:.J:.K:.L:.M:.N:.O:.P:.,/.Q:.R:.S:.T:.U:.V:.W:.X:.Y:.Z:.`:. <..<.+<.@<.#<.$<.%<.&<.*<.=<.-<.;<.><.,<.'<.)<.!<.~<.{<.]<.^<.0r /<.(<._<.:<.<<.",\r
+"[<.}<.|<.Lu 1<.2<.3<.4<.5<.6<.7<.8<.9<.0<.a<.b<.c<.d<.e<.f<.(L g<.h<.kJ Xa i<.j<.=w :w k<.l<.m<.n<.o<.p<.q<.r<.s<.t<.u<.v<.w<.x<.y<.z<.A<.B<.C<.D<.E<.F<.G<.H<.I<.J<.K<.L<.M<.N<.O<.P<.Q<.R<.S<.VH T<.U<.V<.W<.X<.Y<.Z<.`<. [.e^..[.X!.+[.@[.#[.$[.%[.&[.&:.*[.=[.-[.;[.>[.,[.'[.U'.)[.![.~[.{[.&&.][.^[./[.([._[.:[.<[.[[.}[.|[.1[.2[.3[.4[.5[.6[.7[.8[.9[.0[.a[.b[.c[.d[.e[.f[.g[.h[.i[.j[.hc k[.l[.m[.n[.o[.p[.q[.r[.s[.t[.u[.v[.w[.x[.y[.z[.A[.B[.C[.D[.E[.F[.G[.H[.I[.J[.K[.L[.M[.N[.O[.P[.8%.Q[.R[.S[.T[.U[.V[.W[.X[.Y[.Z[.`[. }..}.+}.@}.#}.$}.",\r
+"4> %}.&}.*}.=}.-}.;}.>}.,}.'}.)}.!}.~}.{}.]}.^}./}.(}._}.:}.<}.[}.XW }}.|}.1}.2}.@&.3}.4}.5}.6}.7}.8}.yq 9}.0}.a}.b}.c}.d}.e}.f}.0&._;.g}.h}.i}.j}.k}.l}.m}.n}.o}.p}.q}.r}.s}.t}.u}.v}.w}.x}.y}.z}.A}.B}.C}.o^.D}.E}.F}.G}.H}.I}.J}.K}.L}.M}.N}.O}.P}.Q}.R}.S}.T}.U}.V}.W}.*7 wR X}.Y}.Z}.`}. |..|.+|.@|.#|.$|.%|.&|.*|.=|.-|.;|.>|.,|.'|.)|.!|.~|.{|.]|.^|./|.(|._|.:|.<|.[|.}|.||.1|.2|.3|.4|.5|.6|.7|.8|.9|.k}.0|.a|.b|.c|.d|.e|.f|.g|.h|.i|.j|.k|.l|.m|.n|.o|.p|.q|.r|.s|.Rd t|.u|.v|.w|.x|.y|.z|.A|.B|.C|.D|.E|.F|.G|.H|.I|.<b J|.K|.L|.M|.N|.O|.",\r
+"84 P|.Q|.R|.S|.T|.n@.U|.V|.W|.X|.Y|.Z|.`|. 1..1.+1.@1.{P #1.$1.%1.&1.*1.=1.-1.;1.>1.,1.'1.)1.!1.~1.9) {1.}) ]1.^1./1.(1._1.:1.<1.[1.}1.|1.11.21.31.41.51.61.71.81.91.01.a1.b1.c1.d1.e1.f1.g1.h1.i1.j1.k1.l1.m1.n1.~M o1.p1.q1.r1.s1.t1.u1.v1.w1.x1.y1.z1.A1.B1.C1.D1.E1.F1.G1.H1.I1.J1.gI K1.L1.M1.N1.O1.P1.Q1.R1.S1.T1.U1.V1.W1.X1.Y1.Z1.`1. 2..2.+2.@2.#2.$2.%2.&2.*2.=2.-2.;2.>2.,2.Co '2.)2.!2.rZ ~2.{2.]2.^2./2.(2._2.:2.<2.[2.}2.|2.12.22.32.42.52.62.72.82.92.02.a2.b2.c2.d2.e2.f2.g2.h2.i2.j2.k2.l2.m2.n2.o2.p2.){ q2.r2.s2.t2.u2.v2.w2.x2.y2.",\r
+"z2.A2.B2.C2.D2.E2.F2.G2.H2.I2.J2.K2.L2.M2.N2.O2.P2.Q2.R2.S2.T2.U2.V2.W2.X2.Y2.Z2.`2. 3..3.+3.@3.#3.CB $3.%3.x(.&3.*3.=3.-3.;3.>3.,3.'3.t{.)3.!3.~3.{3.]3.^3./3.(3._3.:3.<3.[3.}3.|3.13.23.33.43.53.63.73.83.93.03.a3.b3.c3.d3.e3.f3.g3.h3.i3.j3.k3.l3.m3.n3.o3.p3.q3.r3.s3.t3.u3.v3.w3.x3.y3.z3.A3.B3.C3.D3.E3.F3.G3.H3.I3.J3.K3.L3.M3.N3.O3.P3.Q3.R3.S3.T3.U3.V3.W3.X3.Y3.Z3.`3. 4..4.X..+4.@4.#4.^&.$4.%4.&4.*4.=4.Yf X3.-4.;4.>4.,4.'4.)4.!4.~4.{4.]4.^4./4.(4._4.:4.<4.[4.}4.|4.14.24.Xg 34.44.54.64.74.84.94.04.a4.b4.c4.d4.e4.f4.g4.h4.i4.j4.k4.",\r
+"l4.m4.n4.o4.p4.q4.r4.s4.t4.u4.v4.w4.x4.y4.z4.A4.*~ B4.C4.D4.E4.F4.G4.H4.I4.J4.K4.L4.M4.N4.O4.P4.Q4.R4.S4.T4.U4.V4.W4.X4.Y4.Z4.`4. 5..5.+5.@5.#5.$5.%5.&5.*5.=5.-5.;5.>5.,5.'5.)5.!5.~5.{5.]5.^5./5.(5._5.:5.<5.[5.}5.|5.15.25.35.45.55.}(.65.75.85.95.05.a5.n1.b5.c5.d5.e5.f5.g5.h5.i5.j5.k5.l5.m5.n5.o5.p5.q5.r5.s5.t5.u5.v5.w5.x5.y5.z5.A5.B5.C5.D5.E5.F5.G5.H5.I5.J5.K5.L5.M5.N5.O5.P5.q>.&/.Q5.R5.S5.T5.U5.B'.V5.W5.X5.Y5.Z5.`5. 6..6.+6.@6.#6.$6.%6.&6.*6.=6.-6.;6.>6.,6.'6.)6.!6.~6.Ee {6.]6.^6./6.(6._6.:6.<6.[6.}6.|6.16.26.36.46.56.66.76.86.",\r
+"96.06.a6.b6.c6.d6.e6.f6.g6.h6.i6.j6.k6.l6.m6.n6.o6.p6.q6.r6.s6.t6.u6.v6.w6.x6.y6.z6.A6.B6.C6.D6.E6.F6.G6.H6.I6.J6.K6.L6.M6.N6.O6.P6.Q6.C+.E].R6.S6.T6.U6.V6.2V W6.X6.Y6.Z6.`6. 7..7.+7.@7.#7.$7.%7.&7.*7.=7.-7.;7.>7.,7.'7.)7.!7.~7.{7.]7.^7./7.(7._7.:7.h3.<7.[7.}7.|7.jh 17.27.37.47.57.67.77.87.97.07.a7.b7.c7.d7.e7.f7.g7.h7.i7.j7.k7.l7.m7.n7.o7.p7.q7.r7.s7.t7.u7.v7.w7.x7.y7.z7.A7.B7.C7.D7.E7.F7.G7.H7.}].I7.J7.K7.L7.M7.N7.O7.P7.Q7.R7.S7.T7.U7.V7.W7.X7.=%.Y7.Z7.`7. 8..8.+8.@8.#8.$8.%8.&8.*8.=8.-8.;8.>8.,8.'8.)8.!8.~8.`j {8.]8.^8./8.(8.",\r
+"_8.:8.<8.[8.}8.|8.18.28.38.48.58.68.78.88.98.08.a8.b8.c8.d8.e8.f8.g8.h8.i8.j8.k8.l8.m8.n8.o8.p8.q8.r8.s8.t8.u8.v8.w8.x8.y8.z8.A8.B8.C8.D8.E8.F8.G8.H8.I8.J8.K8.L8.M8.N8.O8.P8.Q8.R8.S8.T8.U8.V8.W8.X8.Y8.Z8.`8. 9..9.+9.@9.#9.$9.%9.&9.*9.=9.-9.a, ;9.>9.,9.'9.)9.!9.~9.{9.]9.^9./9.(9._9.:9.<9.[9.}9.|9.19.29.39.49.59.69.79.89.99.09.a9.b9.c9.d9.e9.f9.g9.h9.i9.j9.k9.l9.m9.n9.o9.p9.q9.r9.s9.t9.u9.v9.Yf w9.x9.y9.z9.A9.B9.C9.D9.E9.F9.G9.H9.I9.J9.K9.L9.M9.N9.O9.P9.Q9.R9.S9.T9.U9.V9.W9.X9.Y9.Z9.`9. 0..0.+0.@0.#0.$0.%0.&0.*0./3 =0.-0.;0.>0.,0.",\r
+"'0.|_.)0.!0.~0.{0.]0.^0./0.(0._0.:0.<0.[0.#y }0.|0.10.20.30.40.50.60.70.80.90.00.a0.b0.c0.d0.e0.DY f0.g0.h0.i0.j0.k0.l0.m0.n0.o0.p0.q0.r0.s0.t0.u0.v0.w0.x0.y0.z0.A0.B0.C0.D0.E0.F0.G0.H0.uV I0.J0.K0.L0.M0.N0.O0.P0.(< .# Q0.R0.S0.T0.U0.V0.7% W0.X0.Y0.Z0.`0. a..a.+a.@a.#a.$a.%a.&a.*a.=a.-a.;a.>a.,a.'a.)a.!a.~a.{a.X;.]a.^a./a.(a._a.:a.<a.[a.o,.}a.|a.1a.2a.3a.4a.5a.6a.7a.8a.9a.0a.aa.ba.ca.da.ea.fa.ga.ha.ia.ja.ka.la.ma.na.oa.p=.pa.qa.ra.sa.ta.ua.va.wa.xa.ya.za.Aa.Ba.Ca.Da.Ea.q[ Fa.Ga.Ha.Ia.Ja.Ka.La.Ma.Na.Oa.Pa.Qa.Ra.Sa.Ta.Ua.Va.Wa.Xa.",\r
+"Ya.Za.`a. b..b.+b.@b.#b.$b.%b.&b.*b.|z Qz =b.-b.;b.>b.,b.'b.)b.!b.~b.{b.]b.^b./b.(b._b.:b.<b.[b.}b.|b.1b.2b.3b.4b.5b.6b.7b.8b.9b.0b.ab.bb.cb.db.eb.fb.gb.hb.ib.jb.kb.lb.mb.nb.ob.pb.qb.rb.sb.tb.ub.vb.wb.xb.yb.zb.Ab.Bb.Cb.Db.Eb.Fb.Gb.a3.Hb.Ib.Jb.Kb.Lb.Mb.Nb.Ob.Pb.Qb.Rb.Sb.Tb.Ub.Vb.Wb.Xb.Yb.Zb.`b. c..c.+c.29.@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.1c.2c.3c.4c.5c.6c.7c.8c.9c.0c.ac.bc.cc.dc.ec.fc.gc.hc.ic.jc.kc.lc.mc.nc.oc.pc.qc.rc.sc.tc.uc.vc.wc.xc.K! yc.zc.Ac.Bc.Cc.Dc.Ec.Fc.Gc.Hc.Ic.Jc.Kc.Lc.Mc.",\r
+"Nc.Oc.Pc.Qc.Rc.Sc.Tc.Uc.Vc.Wc.Xc.Yc.Zc.`c. d..d.+d.@d.#d.$d.%d.&d.*d.=d.-d.;d.>d.,d.'d.)d.!d.~d.{d.]d.^d./d.(d._d.:d.<d.[d.}d.|d.1d.2d.3d.4d.5d.6d.7d.8d.9d.0d.ad.bd.cd.dd.ed.fd.gd.hd.id.jd.kd.ld.md.nd.od.pd.qd.rd.sd.td.ud.vd.wd.xd.yd.zd.Ad.Bd.Cd.Dd.@) Ed.Fd.Gd.Hd.Id.Jd.Kd.Ld.Md.Nd.Od.Pd.Qd.Rd.Sd.Td.Ud.Vd.Wd.Xd.Yd.Zd.`d. e..e.+e.@e.#e.$e.%e.&e.*e.=e.-e.;e.>e.,e.'e.)e.!e.~e.{e.]e.^e./e.(e._e.:e.<e.[e.}e.|e.1e.2e.3e.4e.5e.6e.Vg 7e.8e.9e.0e.ae.be.ce.de.ee.fe.ge.he.ie.je.ke.le.me.ne.oe.pe.qe.re.se.te.ue.ve.we.xe.ye.ze.Ae.Be.Ce.De.Ee.",\r
+"Fe.Ge.He.Ie.Je.Ke.Le.Me.Ne.Oe.Pe.Qe.Re.Se.Te.Ue.Ve.We.Xe.Ye.Ze.`e. f..f.+f.@f.#f.$f.%f.&f.*f.=f.-f.;f.>f.,f.'f.)f.!f.~f.{f.]f.^f./f.(f._f.:f.<f.[f.}f.|f.1f.2f.3f.4f.5f.6f.7f.8f.9f.xW 0f.af.bf.cf.df.ef.ff.gf.hf.if.jf.kf.lf.mf.nf.of.pf.qf.rf.pR sf.tf.uf.vf.wf.xf.Zd yf.Gc zf.`}.)b.Af.Bf.Cf.Df.Ef.Ff.Gf.Hf.If.Jf.Kf.Lf.Mf.Nf.Of.Pf.Qf.Rf.Sf.Tf.Uf.Vf.:a.Wf.Xf.Yf.Zf.`f. g.|{..g.+g.@g.#g.$g.%g.&g.*g.=g.-g.;g.>g.,g.'g.)g.!g.~g.{g.]g.^g./g.(g._g.:g.<g.[g.}g.|g.1g.2g.3g.4g.5g.6g.7g.8g.9g.0g.ag.bg.cg.dg.eg.fg.gg.hg.ig.jg.kg.lg.mg.ng.og.pg.qg.",\r
+"cC rg.sg.tg.ug.vg.wg.xg.yg.zg.Ag.Bg.Cg.Dg.Eg.Fg.Gg.Hg.Ig.Jg.Kg.Lg.Mg.Ng.Og.Pg.Qg.Rg.Sg.Tg.Ug.@1.js w} Vg.Wg.Xg.2& Yg.Zg.`g. h..h.+h.@h.#h.$h.%h.VX &h.*h.=h.-h.;h.>h.,h.'h.)h.!h.~h.{h.]h.ie ^h./h.(h._h.:h.]5.<h.f= [h.}h.|h.1h.2h.3h.4h.5h.6h.1=.7h.8h.9h.M!.0h.ah.bh.ch.dh.eh.fh.gh.hh.ih.jh.kh.lh.mh.nh.oh.ph.qh.rh.sh.th.uh.vh.wh.xh.yh.zh.v[.Ah.Bh.Gv J7.Ch.Dh.Eh.Fh.Gh.Hh.Ih.Jh.Kh.Lh.Mh.Nh.Oh.Ph.Qh.Rh.Sh.Th.Uh.Vh.Wh.Xh.Yh.Zh.i/ `h. i..i.+i.@i.#i.$i.%i.&i.*i.=i.-i.Vb.;i.>i.,i.'i.)i.!i.li ~i.{i.78.]i.^i./i.(i._i.:i.<i.[i.}i.|i.1i.2i.3i.",\r
+"Oa.4i.5i.6i.7i.8i.9i.0i.ai.bi.ci.di.ei.fi.gi.hi.ii.ji.ki.li.mi.ni.oi.pi.qi.ri.si.ti.ui.vi.wi.xi.yi.}~ *E zi.b< Ai.Bi.Ci.Di.Ei.Fi.Gi.Hi.Ii.Ji.Ki.Li.Mi.Ni.Oi.Pi.Qi.Ri.Si.Ti.Ui.Vi.Wi.Xi.Yi.Zi.`i. j..j.+j.@j.#j.$j.%j.&j.*j.=j.-j.;j.>j.,j.'j.)j.!j.~j.{j.]j.^j./j.(j._j.:j.<j.`<.[j.}j.|j.1j.2j.3j.4j.5j.6j.7j.8j.9j.0j.aj.bj.cj.dj.ej.fj.gj.hj.ij.jj.kj.lj.mj.nj.oj.#* =( pj.qj.rj.sj.tj.uj.vj.wj.xj.yj.zj.Aj.Bj.Cj.Dj.Ej.Fj.Gj.Hj.Ij.Jj.Kj.Lj.Mj.Nj.Oj.Pj.Qj.Rj.Sj.Tj.Uj.Vj.Wj.Xj.Yj.Zj.`j. k..k.+k.@k.#k.$k.%k.&k.*k.=k.-k.;k.>k.,k.'k.)k.!k.~k.{k.",\r
+"]k.^k./k.(k._k.:k.<k.[k.}k.|k.1k.2k.3k.4k.5k.6k.7k.8k.9k.0k.ak.bk.ck.dk.ek.fk.gk.hk.X_ ik.jk.kk.lk.mk.nk.ok.h  pk.qk.rk.sk.tk.uk.vk.wk.xk.yk.zk.Ak.Bk.Ck.Dk.Ek.Fk.Gk.Hk.Ik.oF Jk.Kk.Lk.Mk.Nk.Ok.|3.=,.Pk.Qk.Rk.M!.Sk.Tk.Uk.Vk.Wk.Xk.Yk.Zk.`k. l..l.+l.f(.@l.#l.$l.%l.&l.*l.|,._e.=l.-l.;l.>l.,l.'l.)l.!l.~l.{l.]l.^l./l.(l._l.:l.<l.[l.}l.|l.1l.2l.3l.4l.5l.6l.7l.8l.9l.0l.al.bl.cl.dl.el.fl.gl.hl.il.jl.kl.ll.ml.nl.ol.pl.w_ ql.rl.sl.tl.ul.vl.wl.xl.yl.zl.Al.Bl.Cl.Dl.El.Fl.Gl.Hl.A..Il.Jl.Kl.Ll.Ml.Nl.Ol.Pl.Ql.Rl.Sl.Tl.Ul.Vl.Wl.Xl.Yl.Zl.`l. m..m.",\r
+"+m.@m.#m.$m.%m.&m.*m.u0 =m.-m.;m.>m.,m.'m.)m.!m.~m.{m.]m.^m./m.(m._m.:m.<m.[m.}m.|m.1m.2m.3m.G5 ~n 4m.5m.6m.7m.8m.=< 9m.0m.am.bm.cm.dm.em.fm.gm.hm.im.jm.km.lm.mm.nm.om.pm.|$.qm.rm.sm.tm.um.vm.wm.xm.ym.zm.Am.Bm.!j.>[.Cm.Dm.Em.Fm.Gm.Hm.Im.Jm.Km.Lm.Mm.Nm.)3.Om.Pm.Qm.Rm.Sm.Tm.Um.Vm.Wm.Xm.Ym.Zm.`m. n..n.+n.@n.#n.$n.%n.&n.*n.=n.-n.;n.>n.,n.'n.)n.!n.~n.{n.]n.^n./n.(n._n.:n.<n.[n.}n.|n.1n.2n.3n.4n.5n.6n.7n.8n.9n.0n.an.B9 bn.cn.dn.en.fn.gn.hn.in.jn.kn.ln.mn.nn.on.pn.qn.rn.sn.tn.un.vn.wn.xn.yn.zn.An.Bn.Cn.Dn.En.Fn.Gn.Hn.In.Jn.Kn.Ln.Mn.Nn.",\r
+"On.Pn.Qn.Rn.Sn.Tn.Un.Vn.Wn.Xn.Yn.Zn.`n. o..o.+o.@o.#o.$o.%o.&o.*o.=o.j^.-o.;o.>o.,o.'o.)o.!o.~o.{o.]o.^o./o.(o._o.:o.<o.[o.}o.|o.1o.2o.3o.4o.5o.6o.7o.8o.9o.(U 0o.ao.bo.co.do.eo.fo.go.ho.io.jo.ko.lo.mo.no.oo.po.qo.ro.so.to.uo.vo.wo.xo.yo.zo.Ao.Bo.Co.Do.Eo.Fo.Go.Ho.Io.Jo.Ko.Lo.Mo.No.Oo.Po.Qo.Ro.So.To.Uo.Vo.Wo.Xo.Yo.Zo.`o. p..p.+p.@p.#p.$p.%p.&p.*p.=p.-p.;p.>p.,p.'p.)p.!p.~p.{p.]p.^p./p.(p._p.:p.<p.<m.@9.&Z [p.}p.|p.1p.2p.3p.4p.5p.6p.7p.8p.9p.0p.ap.bp.cp.dp.ep.fp.gp.hp.ip.jp.kp.lp.mp.np.op.pp.qp.rp.sp.tp.s4.up.j9 vp.wp.xp.yp.zp.Ap.",\r
+"Bp.Cp.Dp.Ep.Fp.Gp.Hp.Ip.Jp.Kp.Lp.Mp.Np.*/.Op.j=.Pp.Qp.Rp.Sp.Tp.Up.Vp.Wp.Xp.>b Yp.Zp.`p. q..q.+q.@q.#q.$q.%q.&q.*q.=q.-q.;q.>q.,q.'q.)q.!q.~q.{q.]q.^q./q.(q._q.:q.<q.[q.}q.|q.1q.2q.0f.3q.4q.nT 5q.6q.7q.V<.8q.9q.0q.aq.bq.cq.vo.dq.eq.fq.:(.gq.hq.iq.jq.&:.kq.lq.mq.'Z nq.oq.pq.qq.rq.sq.tq.uq.vq.wq.xq.yq.zq.Aq.Bq.Cq.Dq.Eq.Fq.Gq.Hq.Iq.Jq.Kq.Lq.Mq.Nq.Oq.Pq.Qq.Rq.Sq.Tq.Uq.Vq.Wq.Xq.Yq.Zq.`q.]p. r..r.+r.@r.#r.$r.~b %r.&r.*r.=r.-r.;r.>r.,r.'r.)r.!r.~r.{r.]r.^r./r.(r._r.mO :r.<r.[r.}r.|r.1r.2r.3r.4r.5r.6r.7r.8r.9r.0r.ar.br.cr.dr.er.fr.gr.hr.",\r
+"ir.jr.kr.lr.mr.nr.or.pr.qr.rr.sr.tr.rt ur.5K vr.wr.xr.yr.zr.Ar.Br.Cr.Dr.Er.Fr.Gr.Hr.Ir.Jr.Kr.Lr.Mr.Nr.Or.Pr.Qr.Rr.Sr.Tr.Ur.Vr.Wr.Xr.Yr.Zr.`r. s..s.+s.@s.#s.$s.%s.&s.*s.=s.-s.;s.>s.,s.'s.}3.)s.!s.~s.{s.]s.^s.0q./s.(s.vo._s.:s.<s.[s.w1.}s.|s.1s.2s.3s.4s.5s.6s.7s.8s.f .9s.0s.as.bs.cs.ds.es.fs.gs.hs.is.js.ks.ls.ms.ns.os.ps.qs.rs.ss.ts.us.vs.ws.xs.ys.9! zs.As.Bs.Cs.Ds.Es.1$ Fs.Gs.Hs.Is.Js.Ks.Ls.Kr.Ms.Ns.Os.Ps.Qs.Rs.Ss.Ts.Us.Vs.Ws.Xs.Ys.n: Zs.`s. t..t.+t.@t.#t.$t.%t.&t.*t.=t.-t.;t.>t.,t.'t.)t.!t.~t.{t.]t.^t./t.(t._t.:t.<t.[t.}t.|t.1t.",\r
+"2t.3t.4t.5t.6t.7t.8t.9t.0t.at.bt.ct.dt.et.ft.gt.ht._X it.n| jt.kt.lt.mt.nt.ot.pt.qt.rt.st.tt.ut.vt.wt.xt.yt.zt.At.Bt.Ct.Dt.Et.Ft.Gt.Ht.It.Jt.Kt.Lt.Mt.Nt.Ot.Pt.Qt.Rt.St.Tt.Ut.Vt.Wt.Xt.)5.Yt.Zt.').`t. u.i(.pd..u.+u.T}.@u.#u.$u.%u.&u.*u.=u.-u.;u.T}.>u.,u.'u.)u.!u.~u.{u.]u.^u./u.(u._u.:u.<u.[u.}u.|u.1u.2u.3u.4u.5u.6u.7u.8u.9u.0u.au.bu.cu.du.eu.fu.gu.hu.iu.ju.ku.lu.mu.nu.ou.pu.qu.ru.su.tu.uu.vu.wu.xu.yu.zu.Au.f) Bu.Cu.Du.Eu.j| Fu.Gu.Hu.Iu.Ju.Ku.Lu.Mu.Nu.Ou.Pu.Qu.Ru.Su.Tu.Uu.Vu.Wu.Xu.Yu.Zu.`u. v..v.+v.@v.#v.$v.%v.&v.*v.=v.-v.;v.>v.e9 ",\r
+",v.'v.)v.!v.~v.{v.]v.^v./v.(v._v.vW :v.<v.[v.}v.|v.1v.2v.3v.4v.5v.6v.7v.8v.9v.0v.av.bv.cv.dv.ev.fv.gv.hv.iv.jv.kv.lv.mv.nv.ov.pv.qv.rv.sv.tv.uv.vv.wv.xv.yv.zv.Av.Bv.Cv.Dv.Ev.Fv.Gv.Hv.!m.Iv.Jv.Kv.Lv.Am.Mv.Nv.Ov.6= Os.Pv.Qv.Rv.Sv.Tv.Uv.U<.Vv.Wv.Xv.Yv.Zv.`v. w..w.+w.@w.#w.$w.%w.&w.*w.=w.-w.;w.>w.,w.'w.)w.!w.~w.{w.]w.^w./w.(w.`p._w.:w.<w.[w.}w.|w.1w.2w.3w.4w.5w.6w.7w.8w.9w.0w.aw.bw.-9.cw.dw.ew.fw.gw.hw.iw.jw.kw.lw.mw.nw.ow.pw.qw.rw.sw.tw.uw.vw.ww.ZC xw.yw.zw.Aw.Bw.Cw.tc Dw.Ew.Fw.Gw.Hw.Iw.Jw.Kw.Lw.Mw.Nw.Ow.Pw.Qw.Rw.Sw.Tw.Uw.Vw.Ww.Xw.",\r
+"Yw.Zw.`w. x..x.+x.=v.@x.#x.$x.%x.&x.*x.=x.-x.h .l^.;x.>x.,x.'x.)x.0| !x.~x.{x.]x.'; ^x./x.(x._x.:x.<x.[x.}x.|x.1x.2x.3x.4x.5x.6x.7x.8x.9x.0x.ax.bx.cx.dx.ex.fx.gx.hx.ix.jx.kx.lx.mx.nx.ox.px.!h qx.rx.sx.tx.ux.vx.wx.xx.yx.zx.Ax.Bx.Cx.Dx.Ex.Fx.@l.Gx.*).Hx.n3.Ix.Jx.Kx.Lx.Mx.Nx.Ox.Px.Qx.Rx.Sx.Tx.Ux.Vx.Wx.Xx.Yx.Zx.`x. y.2  .y.+y.@y.#y.$y.%y.&y.*y.=y.el.-y.;y.>y.,y.'y.)y.!y.~y.{y.]y.^y./y.(y.Q= _y.:y.<y.[y.}y.|y.1y.2y.3y.4y.Ul 5y.6y.7y.8y.9y.0y.ay.by.cy.dy.ey.fy.gy.hy.iy.jy.ky.ly.my.ny.oy.py.qy.ry.sy.ty.uy.vy.wy.gm xy.yy.zy.Ay.By.Cy.Dy.",\r
+"Ey.Fy.Gy.Hy.Iy.Jy.Ky.Ly.My.Ny.Oy.Py.Qy.Ry.Sy.Ty.Uy.Vy.Wy.Xy.Yy.Zy.`y. z.J. .z.+z.@z.#z.$z.%z.&z.*z.=z.-z.;z.>z.,z.'z.)z.!z.~z.{z.]z.^z./z.(z._z.:z.<z.[z.}z.|z.1z.2z.3z.4z.5z.6z.7z.8z.9z.0z.az.)e.bz.V..cz.dz.ez.fz.gz.hz.iz.jz.kz.lz.mz.nz.oz.]m.pz.qz.P}.rz.sz.tz.uz.vz.wz.xz.yz.zz.Az.Bz.Cz.Dz.Ez.Fz.Gz.Hz.Iz.Jz.Kz.Lz.Mz.Nz.Oz.Pz.Qz.Rz.Sz.Tz.Uz.Vz.Wz.Xz.Yz.Zz.`z.I3  A..A.+A.@A.#A.$A.%A.&A.*A.=A.-A.;A.>A.,A.'A.)A.!A.~A.{A.]A.^A./A.Jb (A._A.:A.<A.[A.}A.|A.1A._A.2A.3A.4A.5A.6A.7A.8A.9A.0A.aA.bA.cA.dA.eA.fA.gA.hA.iA.jA.kA.lA.mA.nA.oA.pA.",\r
+"qA.rA.sA.tA.uA.[= vA.wA.xA.yA.zA.AA.bz BA.#u.CA.DA.EA.FA.GA.HA.IA.JA.KA.LA.MA.NA.OA.ot.#( PA.QA.RA.SA.TA.UA.VA.WA.XA.YA.ZA.`A. B..B.+B.@B.#B.$B.%B.&B.*B.=B.-B.;B.$O >B.,B.'B.)B.!B.~B.{B.]B.^B./B.(B._B.:B.<B.[B.}B.|B.1B.2B.3B.4B.5B.6B.7B.8B.@l.9B.0B.aB.bB.cB.dB.eB.fB.gB.hB.iB.jB.kB.lB.mB.nB.oB.pB.qB.rB.sB.tB.uB.vB.wB.xB.yB.zB.AB.BB.CB.DB.EB.FB.q+ GB.HB.IB.JB.KB.LB.MB.NB.OB.PB.+t QB.RB.SB.TB.UB..5 VB.WB.XB.YB.ZB.`B.^3  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.1C.2C.3C.4C.5C.6C.Tc 7C.8C.",\r
+"#e 9C.0C.aC.bC.cC.dC.eC.fC.lb.T(.gC.hC.iC.jC.kC.lC.mC.nC.oC.pC.qC.rC.sC.tC.uC.vC.wC.xC.yC.zC.AC.BC.CC.DC.EC.rt FC.GC.HC.IC.JC.KC.LC.MC.NC.OC.PC.QC.RC.SC.TC.UC.VC.WC.XC.YC.ZC.`C. D..D.+D.@D.#D.$D.%D.&D.*D.=D.-D.;D.>D.,D.@5 'D.y@ )D.!D.%m ~D.wd.{D.]D.^D.h^ 6n./D.(D._D.:D.<D.[D.}D.|D.1D.2D.3D.4D.5D.6D.7D.8D.9D.0D.aD.bD.cD.dD.eD.fD.gD.hD.iD.jD.kD.lD.mD.nD.oD.pD.qD.0y.rD.sD.tD.uD.vD.wD.xD.yD.zD.AD.BD.CD.DD.ED.FD.GD.HD.ID.JD.KD.LD.MD.ND.OD.PD.QD.Uv.RD.SD.TD.UD.VD.WD.XD.YD.ZD.`D. E..E.+E.@E.#E.$E.%E.&E.*E.=E.-E.;E.>E.,E.'E.)E.!E.~E.{E.",\r
+"]E.^E./E.(E._E.;0 :E.<E.[E.}E.l0 |E.1s.1E.K{.2E.yK 3E.4E.5E.6E.7E.8E.9E.0E.aE.M{ bE.cE.dE.eE.fE.gE.hE.iE.jE.kE.lE.mE.nE.oE.pE.qE.rE.sE.tE.uE.vE.wE.xE.yE.zE.AE.BE.CE.DE.EE.FE.GE.HE.IE.JE.KE.LE.ME.NE.OE.E[ PE.QE.RE.SE.TE.mb UE.VE.WE.XE.YE.ZE.`E. F..F.+F.@F.#F.$F.%F.&F.*F.=F.-F.;F.>F.,F.'F.)F.!F.~F.{F.]F.^F./F.(F._F.:F.<F.[F.vd }F.|F.1F.2F.3F.4F.5F.6F.7F.8F.9F.0F.aF.bF.cF.dF.eF.fF.Tu gF.hF.iF.jF.kF.lF.mF.nF.oF.pF.qF.rF.sF.tF.,F uF.vF.wF.xF.yF.zF.AF.BF.CF.DF.EF.FF.GF.HF.IF.JF.KF.LF.MF.NF.OF.PF.QF.RF.SF.TF.UF.VF.WF.XF.YF.0E ZF.`F. G.",\r
+".G.+G.@G.#G.$G.%G.&G.*G.LX =G.-G.;G.>G.4e ,G.'G.)G.!G.~G.{G.]G.^G./G.(G._G.:G.<G.[G.}G.|G.1G.2G.3G.,[.4G.5G.6G.7G.8G.9G.0G.aG.bG.cG.dG.eG.fG.gG.hG.iG.jG.~ .kG.lG.mG.nG. b oG.pG.qG.rG.sG.tG.uG.vG.wG.xG.yG.zG.AG.BG.CG.DG.EG.FG.GG.HG.IG.JG.KG.LG.MG.NG.OG.PG.QG.RG.SG.TG.UG.VG.WG.XG.YG.ZG.`G. H..H.+H.@H.'4.#H.$H.v}.%H.&H.*H.=H.-H.;H.>H.,H.'H.)H.!H.~H.{H.]H.^H.~> a* /H.(H._H.:H.<H.[H.}H.|H.1H.2H.3H.4H.5H.6H.7H.8H.9H.-H.0H.aH.bH.cH.dH.eH.fH.gH.hH.iH.jH.kH.lH.mH.nH.oH.pH.qH.%N rH.sH.tH.uH.vH.wH.xH.yH.zH.AH.BH.CH.DH.EH.FH.GH.HH.IH.JH.KH.",\r
+"LH.MH.`g.NH.OH.PH.QH.RH.SH.TH.R'.UH.VH.WH.XH.YH.y$.ZH.`H. I..I.+I.@I.#I.$I.%I.&I.*I.=I.-I.;I.>I.,I.'I.)I.!I.~I.{I.]I.^I./I.(I._I.:I.<I.[I.}I.|I.1I.2I.3I.4I.5I.6I.7I.8I.9I.0I.aI.bI.cI.dI.eI.]k.fI.gI.hI.iI.jI.kI.lI.mI.nI.oI.pI.qI.rI.sI.tI.uI.vI.wI.xI.yI.zI.AI.BI.CI.DI.EI.FI.GI.HI.II.(/.JI.KI.LI.MI.NI.OI.PI.QI.RI.SI.TI.UI.VI.WI.XI.YI.ZI.d$ `I.:(  J..J.+J.@J.#J.%( $J.%J.&J.*J.=J.-J.;J.>J.>J.,J.'J.)J.KA !J.9h ~J.{J.]J.^J./J.(J._J.:J.<J.[J.}J.|J.1J.}y.2J.3J.4J.5J.6J.7J.8J.9J.=X 0J.aJ.bJ.cJ.dJ.eJ.fJ.gJ.hJ.iJ.jJ.kJ.lJ.mJ.nJ.oJ.pJ.qJ.rJ.",\r
+"sJ.tJ.p1.v%.uJ.vJ.wJ.xJ.yJ.7:.zJ.AJ.BJ.CJ.K{.B$.DJ.EJ.FJ.GJ.HJ.IJ.JJ.KJ.LJ.MJ.NJ.OJ.PJ.QJ.RJ.SJ.!,.TJ.UJ.VJ.WJ.XJ.YJ.ZJ.`J. K..K.+K.@K.#K.$K.q/.%K.&K.*K.=K.-K.;K.>K.,K.'K.)K.r> !K.~K.{K.]K.T~.^K./K.(K._K.:K.<K.[K.}K.|K.1K.2K.3K.4K.5K.&F.6K.7K.8K.9K.0K.aK.bK.cK.dK.eK.fK.gK.hK.iK.jK.kK.lK.mK.nK.oK.pK.qK.rK.sK.tK.uK.vK.wK.xK.3t yK.zK.AK.BK.CK.DK.EK.FK.GK.HK.IK.JK.KK.LK.MK.NK.OK.PK.QK.RK.SK.TK.UK.VK.WK.XK.YK.ZK.`K. L..L.+L.@L.#L.$L.%L.)7.&L.*L.=L.-L.;L.>L.,L.'L.)L.!L.~L.{L.]L.^L./L.(L._L.:L.<L.[L.}L.|L.1L.2L.3L.4L.5L.6L.7L.8L.9L.0L.",\r
+"aL.bL.cL.dL.9H.eL.fL.gL.hL.iL.-x.jL.kL.lL.mL.yJ.nL.oL.pL.qL.rL.sL.tL.uL.vL.wL.xL.yL.zL.AL.BL.CL.DL.6G.EL.FL.3O GL.HL.IL.JL.KL.LL.f2.ML.NL.T9.OL.PL.QL.RL.SL.TL.UL.VL.WL.XL.YL.ZL.`L. M..M.+M.@M.#M.$M.%M.&M.*M.=M.-M.tN ;M.>M.,M.'M.F* )M.5K.!M.~M.{M.]M.^M./M.(M._M.:M.<M.[M.}M.|M.1M.2M.3M.4M.5M.6M.7M.8M.9M.0M.aM.bM.cM.dM.eM.fM.gM.hM.iM.jM.kM.lM.mM.nM.oM.pM.qM.rM.sM.tM.uM.vM.wM.xM.yM.zM.AM.BM.CM.DM.EM.FM.GM.HM.IM.JM.KM.LM.pY MM.NM.OM.PM.QM.RM.SM.TM.UM.VM.WM.XM.YM.ZM.`M. N..N.+N.[w @N.#N.$N.%N.&N.*N.=N.-N.;N.>N.,N.'N.)N.!N.~N.{N.]N.^N.",\r
+"/N.(N._N.:N.<N.[N.}N.|N.1N.S!.2N.3N.4N.5N.6N.7N.8N.9N.0N.aN.bN.cN.dN.eN.fN.gN.hN.iN.jN.kN.lN.cz.mN.nN.oN.pN.qN.rN.sN.tN.uN.vN.wN.xN.yN.zN.AN.BN.CN.DN.EN.FN.8d.GN.HN.IN.JN.KN.LN.MN.NN.I$.%4.ON.PN.QN.RN.SN.TN.UN.VN.WN.XN.YN.Zn ZN.`N. O..O.+O.@O.#O.$O.%O.&O.*O.=O.-O.;O.>O.,O.'O.)O.!O.~O.{O.]O.^O./O.(O._O.:O.<O.[O.}O.|O.1O.2O.3O.4O.5O.6O.7O.8O.9O.Cm 0O.aO.bO.cO.dO.eO.fO.gO.hO.iO.jO.kO.lO.mO.nO.oO.pO.qO.rO.sO.tO.uO.vO.wO.xO.yO.zO.dH.AO.:9 BO.CO.DO.EO.FO.GO.HO.IO.JO.KO.LO.MO.NO.OO.PO.QO.RO.SO.TO.UO.VO.WO.XO.YO.ZO.`O. P..P.+P.@P.#P.$P.",\r
+"%P.&P.*P.=P.-P.;P.>P.,P.W!.'P.)P.!P.~P.{P.]P.^P./P.(P._P.:P.<P.[P.}P.|P.1P.2P.3P.4P.5P.6P.7P.8P.9P.0P.aP.bP.cP.dP.eP.fP.gP.hP.iP.jP.kP.lP.Nb mP.nP.oP.pP.qP.rP.sP.tP.uP.vP.wP.xP.yP.zP.l  AP.BP.CP.DP.EP.FP.GP.HP.IP.JP.KP.B0.LP.MP.NP.OP.PP.QP.RP.SP.TP.UP.VP.WP.XP.YP.ZP.`P. Q..Q.+Q.@Q.#Q.5D.$Q.%Q.&Q.*Q.=Q.-Q.;Q.>Q.,Q.'Q.)Q.!Q.~Q.{Q.ho.]Q.^Q./Q.(Q._Q.:Q.<Q.[Q.}Q.|Q.1Q.2Q.3Q.4Q.&; 5Q.6Q.7Q.8Q.9Q.0Q.aQ.bQ.cQ.dQ.eQ.fQ.gQ.hQ.iQ.jQ.kQ.`4 &Z lQ.mQ.nQ.oQ.`s pQ.qQ.rQ.sQ.tQ.uQ.vQ.wQ.xQ.yQ.zQ.AQ.BQ.CQ.DQ.EQ.FQ.GQ.HQ.IQ.JQ.KQ.LQ.MQ.NQ.OQ.PQ.QQ.",\r
+"RQ.SQ.TQ.UQ.VQ.WQ.Nh.XQ.YQ.ZQ.`Q. R..R.+R.@R.#R.$R.xG.%R.&R.*R.=R.-R.;R.>R.,R.'R.)R.!R.~R.{R.]R.^R./R.(R._R.:R.<R.[R.}R.|R.1R.2R.3R.4R.5R.6R.7R.8R.9R.0R.aR.bR.:( cR.dR.eR.fR.gR.hR.iR.jR.kR.lR.mR.nR.Xz.oR.pR.qR.rR.sR.tR.uR.vR.wR.BB.xR.yR.zR.AR.BR.CR.DR.kP.ER.FR.GR.Iy HR.IR.JR.KR.LR.MR.NR.OR.PR.QR.RR.SR.TR.UR.VR.WR.XR.YR.ZR.`R. S..S.+S.@S.#S.$S.%S.&S.*S.=S.-S.;S.>S.,S.'S.)S.!S.~S.{S.]S.^S./S.(S._S.:S.Wy }& <S.[S.}S.|S.1S.2S.3S.4S.5S.3y.6S.7S.8S.9S.0S.O+.aS.bS.cS.dS.eS.fS.gS.hS.iS.jS.kS.lS.mS.nS.oS.pS.qS.rS.sS.tS.uS.vS.wS.xS.yS.zS.",\r
+"AS.BS.CS.DS.ES.-).FS.GS.HS.IS.JS.1&.KS.z3.LS.MS.NS.OS.PS.QS.RS.y$.X-.SS.#5.TS.US.VS.WS.XS.YS.ZS.`S.z$. T..T.+T.@T.#T.$T.%T.rp &T.*T.=T.-T.;T.>T.,T.'T.)T.!T.~T.Nb.{T.)* ]T.^T./T.(T._T.:T.<T.[T.}T.|T.2< 1T.2T.3T.4T.x: 5T.6T.7T.8T.9T.%I.0T.aT.bT.cT.^Y dT.eT.fT.gT.hT.iT.jT.kT.lT.mT.nT.oT.pT.qT.rT.sT.WT tT.uT.vT.wT.@# xT.1w.yT.zT.AT.BT.CT.DT.ET.FT.GT.HT.IT.JT.KT.LT.MT.NT.OT.PT.QT.RT.ST.TT.UT.VT.WT.XT.YT.ZT.+v `T. U..U.+U.@U.#U.$U.vf )b %U.&U.*U.l-.=U.-U.;U.>U.,U.y$ 'U.)U.!U.~U.{U.]U.^U./U.(U._U.:U.<U.[U.}U.|U.1U.2U.3U.g].4U.5U.6U.7U.",\r
+"8U.9U.0U.aU.bU.cU.dU.s'.eU.)2.fU.gU.hU.iU.jU.kU.lU.mU.nU.oU.pU.qU.rU.sU.tU.uU.vU.wU.xU.yU.zU.AU.BU.CU.DU.EU.FU.GU.HU.IU.JU.KU.LU.MU.NU.OU.PU.QU.RU.SU.TU.UU.VU.WU.XU.p* YU.ZU.`U. V.-o..V.+V.@V.#V.2v $V.%V.&V.*V.=V.-V.;V.>V.,V.'V.)V.!V.~V.{V.]V.^V./V.(V._V.:V.<V.[V.}V.|V.1V.2V.3V.4V.5V.6V.80.7V.8V.9V.0V.aV.bV.cV. @ dV.eV.fV.gV.hV.iV.jV.kV.&& lV.mV.nV.oV.pV.qV.rV.sV.tV.uV.vV.wV.xV.yV.tu.zV.AV.BV.CV.DV.EV.FV.GV.HV.IV.JV.KV.LV.MV.NV.:k Na.OV.PV.QV.RV.SV.TV.UV.VV.WV.XV.YV.ZV.`V. W..W.+W.@W.#W.$W.%W.&W.*W.=W.-W.;W.>W.,W.'W.)W.!W.~W.{W.",\r
+"]W.^W./W.(W._W.:W.<W.[W.}W.|W.1W.2W.3W.4W.5W.6W.7W.8W.9W.( .0W.aW.bW.BR ZR cW.>R.dW.eW.fW.gW.WR hW.iW.jW.kW.lW.mW.nW.oW.pW.qW.8v.rW.sW.tW.uW.X' vW.wW.xW.yW.zW.AW.BW.X5 CW.DW.EW.FW.GW.HW.IW.JW.KW.LW.MW.NW.OW.PW.QW.RW.SW.TW.UW.VW.WW.XW.YW.ZW.`W. X..X.+X.@X.#X.2r $X.%X.&X.*X.=X.-X.;X.>X.,X.'X.)X.!X.~X.{X.]X.^X./X.(X._X.QU :X.<X.7p.[X.}X.|X.1X.2X.3X.4X.5X.6X.7X.8X.9X.0X.aX.bX.cX.dX.eX.fX.gX.hX.iX.jX.kX.lX.mX.nX.oX.pX.qX.rX.sX.tX.uX.vX.wX.xX.yX.zX.AX.BX.CX.DX.EX.FX.GX.HX.IX.JX.KX.LX.MX.NX.OX.PX.QX.RX.TL SX.TX.UX.VX.WX.XX.YX.ZX.`X. Y.",\r
+".Y.+Y.b~.@Y.Lv.#Y.$Y.%Y.&Y.*Y.=Y.-Y.;Y.>Y.,Y.'Y.)Y.AA.!Y.~Y.s$.{Y.]Y.^Y.WJ./Y.(Y._Y.:Y.<Y.[Y.}Y.|Y.1Y.2Y.3Y.4Y.5Y.6Y.7Y.8Y.9Y.[M.0Y.aY.bY.cY.dY.eY.fY.gY.hY.p  iY.jY.kY.lY.mY.nY.oY.EG.pY.qY.g; rY.sY.tY.uY.WR.vY.wY.xY.yY.zY.AY.BY.CY.DY.EY.FY.GY.HY.IY.JY.KY.LY.MY.NY.OY.PY.QY.RY.SY.TY.UY.VY.WY.XY.YY.ZY.`Y. Z..Z.k$ C. +Z.@Z.#Z.$Z.%Z.&Z.*Z.=Z.-Z.;Z.>Z.,Z.'Z.)Z.!Z.~Z.{Z.]Z.^Z./Z.(Z._Z.:Z.D  <Z.[Z.}Z.|Z.1Z.2Z.3Z.4Z.5Z.6Z.7Z.8Z.9Z.0Z.aZ.bZ.cZ.dZ.eZ.fZ.gZ.hZ.iZ.rD.jZ.kZ.lZ.mZ.nZ.oZ.pZ.qZ.rZ.sZ.tZ.uZ.vZ.wZ.xZ.yZ.zZ.AZ.BZ.CZ.DZ.nS.EZ.FZ.GZ.",\r
+"HZ.IZ.JZ.KZ.LZ.MZ.NZ.OZ.PZ.5q QZ.RZ.SZ.Ig.TZ.UZ.VZ.WZ.XZ.YZ.ZZ.`Z.ca. `.iX .`.+`.@`.#`.$`.%`.&`.*`.=`.-`.;`.>`.,`.'`.)`.!`.~`.{`.]`.^`./`.(`._`.:`.<`.[`.}`.|`.1`.2`.3`.4`.5`.k*.-A.6`.7`.8`.hX.9`.0`.a`.b`.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`.F`.G`.H`.I`.J`.K`.L`.M`.N`.O`.P`.Q`.R`.S`.T`.U`.V`.W`.X`.Y`.Z`.``.  +. ++ +@ +# +$ +6J.% +& +Dr Gi * += +- +; +> +, +' +) +! +~ +{ +] +^ +/ +( +_ +: +< +[ +} +| +1 +2 +3 +4 +5 +6 +=#.7 +8 +9 +0 +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +",\r
+"q +r +s +t +u +v +w +x +y +z +A +B +C +YR ![.ES.h[.D +E +F +G +H +k$.1B I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +` + .+..++.+@.+#.+$.+fV.%.+&.+*.+=.+-.+;.+>.+,.+'.+).+!.+~.+{.+].+^.+/.+(.+_.+:.+<.+[.+}.+|.+1.+2.+Kh.3.+4.+5.+6.+7.+8.+9.+0.+a.+b.+c.+O^ d.+e.+f.+g.+h.+i.+j.+k.+l.+1D m.+n.+o.+p.+q.+r.+s.+t.+u.+v.+w.+x.+/K.y.+z.+A.+B.+C.+D.+E.+F.+G.+H.+I.+J.+K.+L.+M.+N.+O.+P.+Q.+R.+ii S.+T.+U.+V.+W.+X.+Y.+Z.+`.+ ++.+++++@++#++$++%++&++*++=++-++;++>++,++'++)++GM.!++~++{++]++^++/++(++_++:++<++[++}++|++1++2++3++4++5++6++7++",\r
+"8++9++0++a++b++c++d++e++f++g++h++i++j++k++l++m++g$.n++@/.o++p).p++q++r++s++t++u++v++w++x++y++z++A++B++C++D++(n.E++F++G++H++I++3} J++K++L++M++N++O++P++5(.Q++R++S++T++U++V++W++X++Y++Z++`++ @+.@++@+@@+#@+$@+wB.%@+&@+*@+=@+-@+;@+>@+,@+&>.'@+)@+!@+~@+{@+]@+0% tf.^@+/@+(@+_@+:@+<@+[@+}@+|@+1@+2@+3@+R:.4@+5@+fs.g|.6@+7@+8@+9@+0@+a@+b@+c@+d@+e@+f@+g@+h@+i@+j@+k@+l@+OL.m@+n@+o@+p@+q@+r@+s@+t@+u@+v@+w@+x@+y@+z@+A@+B@+,[.Fo.C@+D@+E@+F@+G@+H@+I@+J@+g9.K@+L@+M@+N@+O@+P@+Q@+R@+kk.S@+T@+U@+V@+W@+X@+Y@+Z@+`@+ #+.#++#+@#+##+$#+%#+&#+*#+=#+-#+;#+",\r
+">#+,#+'#+)#+!#+~#+{#+]#+^#+/#+(#+_#+:#+<#+[#+}#+|#+1#+2#+3#+4#+5#+6#+7#+8#+9#+0#+a#+b#+c#+d#+e#+f#+g#+h#+i#+j#+k#+l#+m#+n#+o#+p#+q#+r#+s#+~`.t#+u#+D7 v#+w#+x#+y#+z#+A#+B#+C#+D#+E#+F#+G#+H#+I#+J#+K#+vF.L#+M#+N#+O#+P#+Q#+R#+S#+T#+U#+V#+W#+X#+Y#+JT.Z#+`#+ $+.$+2h +$+@$+#$+$$+%$+&$+*$+=$+-$+;$+>$+,$+'$+)$+!$+~$+{$+]$+^$+/$+($+_$+:$+<$+[$+}$+|$+1$+2$+3$+4$+5$+6$+s9 7$+8$+9$+0$+a$+b$+c$+d$+e$+f$+g$+h$+i$+j$+k$+l$+{3.m$+n$+o$+p$+q$+r$+s$+t$+u$+v$+w$+x$+y$+z$+A$+B$+C$+D$+E$+F$+G$+H$+I$+J$+K$+L$+M$+N$+O$+P$+Q$+R$+S$+T$+U$+V$+W$+X$+Y$+Z$+",\r
+"`$+ %+.%++%+@%+I=.-=.#%+$%+%%+&%+*%+=%+-%+;%+>%+,%+'%+i8.)%+!%+~%+{%+]%+^%+/%+(%+_%+:%+<%+[%+}%+|%+1%+2%+3%+TK.4%+;S.5%+6%+7%+D> 8%+9%+0%+a%+r{ b%+c%+d%+e%+f%+^% g%+h%+i%+j%+k%+l%+m%+n%+o%+p%+q%+85.r%+s%+t%+u%+v%+w%+x%+y%+z%+}n.A%+B%+C%+D%+E%+F%+G%+H%+I%+J%+K%+L%+M%+N%+O%+P%+Q%+R%+Yj.S%+T%+U%+V%+W%+X%+Y%+Z%+`%+K,. &+.&++&+@&+#&+$&+%&+&&+U3.*&+=&+ %+-&+;&+>&+,&+'&+7 .)&+!&+~&+{&+]&+^&+/&+(&+_&+:&+<&+[&+z$.}&++_.|&+1&+2&+3&+4&+5&+6&+7&+8&+9&+0&+a&+b&+c&+d&+e&+f&+g&+h&+i&+j&+f0 k&+T~ l&+m&+n&+o&+p&+q&+r&+gr.s&+t&+u&+v&+w&+x&+y&+z&+",\r
+"A&+B&+C&+D&+E&+F&+G&+Md.H&+I&+J&+K&+L&+M&+N&+O&+P&+Q&+R&+S&+T&+U&+V&+W&+X&+Y&+Z&+`&+ *+.*++*+@*+#*+$*+%*+&*+**+nI.=*+-*+;*+>*+,*+9; '*+)*+!*+~*+{*+]*+^*+/*+(*+_*+hd :*+<*+[*+}*+|*+1*+2*+3*+4*+5*+6*+7*+8*+9*+0*+a*+b*+c*+d*+e*+f*+g*+h*+i*+j*+k*+l*+m*+`c n*+o*+p*+q*+r*+s*+t*+u*+v*+w*+x*+y*+z*+A*+B*+C*+D*+]&.E*+F*+G*+H*+I*+J*+K*+L*+M*+N*+O*+x9.P*+Q*+R*+S*+T*+U*+V*+W*+X*+Y*+Z*+!Y.`*+ =+.=++=+@=+#=+$=+%=+&=+*=+==+-=+;=+>=+,=+'=+)=+8a.!=+~=+{=+]=+^=+i!./=+(=+_=+:=+<=+[=+}=+uT |=+1=+2=+3=+JE 4=+5=+6=+7=+8=+9=+0=+a=+b=+;*+c=+BD.d=+e=+f=+",\r
+"g=+h=+R8.ON.i=+j=+Hg.k=+j=+l=+m=+n=+o=+p=+q=+r=+s=+t=+u=+v=+w=+x=+LT.{( y=+z=+A=+B=+C=+D=+E=+F=+G=+H=+c1 I=+tp J=+@# K=+L=+)E.M=+N=+O=+P=+Q=+R=+S=+(m.T=+U=+V=+W=+X=+Y=+Z=+`=+ -+.-++-+@-+Pr #-+$-+%-+&-+*-+=-+)] --+;-+>-+,-+'-+)-+!-+~-+{-+]-+Xa.^-+/-+(-+_-+:-+<-+[-+}-+|-+1-+2-+3-+4-+5-+6-+7-+8-+8Q 9-+0-+a-+b-+c-+d-+9~.e-+f-+g-+h-+i-+j-+k-+l-+m-+n-+o-+p-+{Y.q-+r-+s-+t-+u-+*+.v-+w-+x-+y-+UJ.z-+A-+j[.B-+C-+D-+E-+|c.F-+Ry.*).G-+H-+I-+J-+K-+L-+M-+N-+O-+P-+Q-+R-+S-+T-+U-+V-+W-+X-+Y-+Z-+`-+ ;+.;++;+@;+#;+$;+%;+&;+*;+=;+Tu -;+;;+>;+,;+';+",\r
+");+!;+~;+{;+hd.];+^;+/;+(;+_;+:;+<;+[;+};+|;+1;+2;+3;+4;+J6 5;+A  6;+7;+8;+9;+0;+a;+b;+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;+F;+G;+H;+I;+J;+K;+L;+M;+N;+O;+P;+Q;+R;+S;+i# T;+U;+V;+W;+X;+Y;+Z;+`;+ >+.>++>+@>+#>+$>+%>+&>+*>+=>+->+}@+;>+>>+,>+'>+)>+!>+~>+&i.{>+]>+^>+/>+Yf (>+_>+:>+<>+[>+}>+|>+1>+2>+3>+i=.4>+9).5>+6>+7>+8>+9>+0>+a>+b>+c>+d>+e>+f>+g>+h>+ES.i>+j>+;/.k>+l>+m>+n>+o>+p>+q>+pX r>+s>+t>+l3 u>+v>+w>+x>+y>+z>+A>+B>+C>+D>+E>+F>+G>+H>+I>+J>+K>+L>+M>+N>+O>+P>+Q>+R>+S>+T>+U>+V>+",\r
+"W>+X>+Y>+Z>+`>+ ,+.,++,+@,+#,+$,+%,+&,+*,+=,+-,+;,+>,+,,+',+^d ),+!,+~,+{,+],+^,+/,+(,+_,+:,+<,+[,+},+|,+1,+2,+3,+4,+5,+6,+7,+8,+9,+0,+a,+b,+c,+d,+e,+f,+od g,+h,+'H.s) i,+j,+k,+l,+m,+n,+o,+p,+q,+r,+s,+t,+u,+v,+w,+x,+y,+z,+c#+A,+yd B,+C,+eK.D,+E,+EI.qf.F,+G,+H,+}..I,+J,+K,+L,+M,+N,+O,+P,+`S Q,+R,+S,+T,+U,+V,+W,+X,+Y,+Z,+`,+ '+.'++'+@'+#'+$'+%'+0a.&'+*'+G(.='+-'+;'+>'+,'+''+)'+!'+~'+<=+{'+]'+^'+/'+>Q ('+_'+:'+.&+<'+['+}'+|'+sm.1'+2'+3'+4'+5'+6'+7'+8'+9'+0'+a'+{!.b'+c'+d'+e'+f'+g'+h'+i'+OV.j'+k'+l'+m'+n'+vX.o'+p'+q'+r'+s'+t'+u'+v'+",\r
+"w'+x'+y'+z'+A'+B'+C'+D'+E'+F'+G'+H'+I'+J'+K'+L'+M'+N'+O'+P'+Q'+R'+S'+T'+U'+V'+W'+X'+Y'+Z'+`'+ )+6E .)++)+@)+#)+$)+%)+&)+*)+=)+-)+;)+>)+,)+')+))+!)+~)+{)+])+^)+/)+()+_)+:)+<)+,E.[)+})+|)+1)+2)+3)+4)+5)+6)+7)+8)+9)+0)+a)+b)+/9 c)+d)+e)+f)+g)+h)+i)+j)+k)+l)+m)+n)+o)+p)+q)+r)+s)+t)+u)+:U v)+w)+x)+y)+[u.z)+|g.A)+B)+C)+D)+E)+F)+G)+H)+I)+J)+K)+pR vV L)+M)+N)+O)+P)+Q)+R)+S)+T)+U)+V)+W)+X)+Y)+Z)+`)+ !+.!++!+@!+#!+$!+%!+&!+*!+=!+-!+;!+s9.>!+,!+'!+)!+!!+~!+{!+]!+^!+/!+(!+_!+:!+<!+[!+}!+|!+1!+2!+3!+4!+5!+6!+7!+I} W| 8!+9!+0!+a!+b!+c!+d!+e!+",\r
+"HR f!+P8.g!+h!+i!+j!+Z{.k!+l!+m!+n!+o!+p!+q!+r!+Fg s!+t!+u!+v!+w!+x!+y!+|n.z!+A!+B!+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: $~+]] %~+&~+*~+=~+-~+;~+>~+,~+'~+)~+!~+~~+{~+ea ]~+^~+/~+JT.(~+:x._~+:~+<~+[~+}~+|~+1~+2~+3~+4~+5~+6~+7~+8~+'!.9~+0~+a~+b~+c~+d~+e~+kh.f~+g~+h~+i~+j~+k~+l~+m~+n~+o~+p~+q~+r~+s~+t~+n|.u~+v~+w~+~Z x~+y~+z~+A~+B~+C~+D~+E~+F~+G~+H~+I~+J~+K~+L~+M~+N~+O~+P~+Q~+R~+S~+T~+U~+V~+W~+X~+Y~+@` Z~+`~+ {+.{++{+@{+#{+${+%{+&{+*{+={+-{+;{+>{+tP.,{+'{+fY.){+!{+~{+{{+]{+^{+",\r
+"/{+({+_{+:{+<{+[{+}{+|{+1{+2{+3{+4{+5{+,5 6{+7{+8{+9{+0{+a{+b{+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{+F{+G{+H{+I{+J{+K{+L{+M{+N{+O{+3_ P{+Q{+R{+S{+T{+U{+V{+W{+X{+Y{+Z{+`{+ ]+.]++]+@]+#]+$]+>y.%]+&]+*]+=]+-]+;]+>]+,]+']+)]+!]+~]+{]+]]+^]+/]+(]+_]+:]+<]+[]+}]+|]+1]+2]+3]+4]+5]+6]+8 .7]+#{.8]+9]+0]+a]+RR b]+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]+F]+G]+H]+I]+m'+Kq J]+K]+L]+M]+N]+L#.GO.O]+P]+jA.Q]+R]+S]+T]+U]+V]+W]+X]+Y]+Z]+`]+ ^+.^++^+@^+",\r
+"#^+$^+%^+&^+*^+=^+-^+;^+>^+,^+'^+)^+Lw.C@ !^+!{+~^+Ej {^+]^+^^+/^+(^+_^+:^+<^+[^+}^+|^+1^+2^+3^+4^+5^+6^+7^+8^+9^+o%.0^+a^+b^+c^+d^+_q e^+f^+g^+h^+i^+w++j^+k^+l^+m^+n^+o^+p^+q^+r^+>x s^+t^+u^+v^+v9 w^+x^+y^+z^+A^+B^+C^+D^+E^+F^+!< G^+H^+I^+J^+K^+L^+M^+N^+O^+P^+Q^+R^+S^+T^+U^+V^+W^+X^+Y^+Z^+`^+ /+./++/+@/+#/+$/+%/+&/+*/+=/+-/+;/+>/+,/+'/+)/+!/+&m.~/+{/+]/+^/+//+(/+_/+:/+</+[/+}/+|/+8; 1/+2/+3/+4/+5/+6/+7/+8/+9/+0/+a/+b/+c/+d/+e/+f/+g/+h/+<+ i/+j/+k/+l/+m/+n/+1` o/+p/+q/+r/+s/+t/+u/+v/+w/+x/+y/+c=+L~.z/+A/+B/+C/+D/+E/+F/+G/+H/+I/+",\r
+"J/+K/+L/+M/+N/+q#+O/+P/+Q/+R/+S/+T/+U/+V/+W/+7p Ju X/+Y/+Z/+`/+ (+.(++(+@(+#(+$(+%(+&(+*(+=(+-(+;(+>(+,(+'(+)(+!(+~(+{(+](+^(+/(+((+_(+:(+<(+[(+}(+|(+1(+2(+3(+4(+5(+6(+7(+8(+9(+0(+a(+b(+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(+F(+G(+H(+I(+J(+K(+L(+M(+N(+O(+P(+Q(+R(+S(+T(+U(+V(+W(+X(+Y(+Z(+`(+ _+._++_+@_+#_+$_+%_+&_+*_+=_+-_+;_+>_+,_+'_+)_+!_+~_+{_+]_+^_+/_+(_+__+:_+<_+[_+}_+|_+1_+2_+3_+4_+5_+6_+7_+8_+C{+9_+0_+a_+b_+c_+MQ d_+e_+f_+g_+h_+i_+j_+k_+l_+m_+n_+o_+KU.p_+q_+r_+s_+t_+u_+v_+w_+",\r
+"x_+y_+z_+A_+B_+C_+D_+E_+F_+G_+H_+I_+J_+K_+L_+M_+N_+O_+z5 P_+Q_+R_+S_+T_+U_+V_+W_+X_+Y_+Z_+`_+ :+.:++:+@:+fD.#:+{8 $:+%:+&:+rE.*:+=:+-:+;:+>:+,:+':+):+!:+~:+{:+]:+^:+tv /:+(:+_:+::+<:+[:+}:+|:+1:+2:+3:+4:+d/ 5:+6:+3w.7:+^w.8:+9:+0:+a:+b:+He.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:+F:+G:+H:+I:+J:+K:+L:+M:+N:+O:+P:+Q:+R:+S:+T:+U:+V:+W:+X:+Y:+Z:+`:+ <+.<++<+@<+#<+$<+%<+&<+*<+=<+-<+;<+><+,<+'<+)<+!<+~<+{<+]<+^<+/<+(<+_<+:<+<<+[<+}<+|<+1<+2<+3<+4<+5<+6<+7<+8<+9<+<x 0<+a<+b<+c<+d<+e<+f<+",\r
+"g<+h<+i<+j<+k<+l<+m<+n<+o<+p<+q<+r<+s<+t<+u<+v<+w<+x<+y<+z<+:5 A<+B<+C<+D<+E<+F<+G<+H<+I<+u,+J<+K<+L<+M<+N<+O<+P<+Q<+R<+S<+T<+U<+V<+W<+X<+Y<+Z<+`<+ [+.[++[+@[+#[+$[+%[+&[+*[+=[+-[+;[+>[+,[+'[+)[+![+~[+{[+][+^[+/[+([+_[+A1 :[+<[+[[+^D.}[+|[+1[+2[+3[+4[+5[+6[+7[+8[+9[+0[+a[+b[+c[+d[+e[+f[+g[+h[+i[+j[+k[+l[+jY m[+n[+o[+p[+q[+r[+s[+!n t[+u[+v[+w[+x[+y[+z[+Lw.A[+5d.B[+C[+D[+E[+F[+G[+H[+I[+J[+K[+L[+M[+N[+O[+P[+R0.Q[+^w.R[+AW.S[+T[+U[+V[+W[+X[+Y[+Z[+`[+ }+.}++}+@}+#}+$}+%}+&}+*}+=}+-}+;}+>}+,}+'}+)}+!}+~}+{}+]}+^}+/}+(}+_}+:}+<}+[}+}}+",\r
+"|}+1}+2}+3}+4}+5}+6}+7}+8}+9}+0}+a}+b}+c}+d}+e}+U; s2 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}+F}+G}+H}+I}+n& J}+K}+L}+Z` M}+N}+O}+P}+Q}+R}+S}+T}+U}+V}+W}+X}+Y}+Z}+`}+ |+.|++|+@|+#|+$|+%|+cg.&|+P} *|+=|+-|+;|+>|+,|+'|+)|+!|+~|+{|+]|+^|+/|+(|+_|+:|+<|+[|+}|+||+1|+2|+3|+4|+5|+6|+7|+8|+9|+0|+a|+b|+c|+d|+e|+f|+g|+h|+i|+j|+k|+l|+m|+n|+o|+p|+q|+r|+p  s|+t|+u|+v|+w|+x|+y|+z|+A|+B|+C|+D|+E|+F|+G|+H|+B#.;*+I|+J|+K|+L|+M|+N|+O|+P|+Q|+R|+S|+T|+U|+V|+W|+X|+Y|+Z|+`|+ 1+.1++1+@1+#1+$1+%1+&1+*1+=1+-1+;1+cM.",\r
+">1+,1+'1+)1+!1+~1+{1+]1+^1+/1+(1+_1+:1+<1+[1+}1+|1+X% 11+21+31+R@ 41+51+61+71+81+91+01+a1+b1+c1+d1+e1+f1+g1+h1+i1+j1+k1+l1+m1+n1+o1+Up.p1+q1+r1+s1+t1+u1+v1+w1+x1+y1+z1+A1+B1+C1+D1+E1+F1+G1+H1+I1+J1+K1+g% L1+M1+N1+O1+P1+Q1+o%.R1+S1+T1+U1+F_ V1+W1+X1+Y1+Z1+`1+ 2+.2++2+@2+#2+$2+%2+&2+*2+=2+-2+;2+>2+,2+'2+)2+!2+~2+{2+]2+^2+/2+(2+_2+>p :2+<2+[2+}2+|2+12+22+32+42+52+62+72+82+92+02+a2+b2+c2+d2+e2+c3.f2+g2+h2+i2+j2+k2+l2+m2+n2+o2+p2+q2+r2+s2+jD.Q^ t2+u2+v2+w2+x2+y2+z2+A2+B2+C2+D2+E2+F2+G2+H2+I2+J2+K2+L2+LW M2+N2+O2+P2+Q2+R2+S2+T2+U2+V2+",\r
+"W2+X2+Y2+Z2+`2+ 3+.3++3+@3+#3+$3+%3+&3+*3+5] ). =3+-3+;3+>3+OK.,3+'3+)3+!3+U8 ~3+{3+]3+^3+/3+(3+_3+:3+p# <3+[3+}3+|3+13+23+33+43+53+63+73+83+93+03+a3+b3+c3+d3+e3+f3+g3+h3+i3+j3+k3+l3+m3+n3+o3+p3+q3+r3+s3+t3+u3+v3+w3+x3+%/ y3+z3+A3+B3+C3+D3+E3+F3+6Q.G3+H3+I3+J3+K3+L3+M3+N3+O3+P3+Q3+R3+S3+T3+U3+V3+W3+X3+Y3+Z3+`3+ 4+.4++4+@4+#4+$4+%4+&4+*4+=4+-4+;4+>4+,4+'4+)4+!4+~4+{4+]4+^4+/4+(4+_4+:4+<4+[4+}4+|4+c3.14+J6 24+34+44+54+64+74+84+94+04+a4+b4+c4+d4+e4+f4+g4+h4+i4+j4+k4+l4+m4+n4+o4+p4+q4+r4+s4+t4+u4+v4+w4+V6 x4+y4+z4+A4+B4+C4+D4+E4+F4+",\r
+"G4+H4+I4+J4+K4+L4+M4+N4+O4+P4+Q4+R4+S4+T4+U4+V4+W4+X4+Y4+Z4+`4+ 5+.5++5+@5+#5+$5+%5+&5+*5+=5+-5+;5+>5+,5+'5+)5+!5+B#+~5+{5+]5+^5+/5+(5+_5+:5+<5+[5+}5+|5+15+D6 F! 25+35+45+55+65+75+85+95+05+a5+b5+c5+d5+e5+f5+g5+h5+i5+j5+cG.k5+l5+m5+n5+o5+p5+q5+Q}+r5+s5+t5+u5+v5+w5+x5+y5+z5+A5+B5+C5+D5+E5+F5+G5+H5+I5+J5+K5+L5+M5+N5+I>+O5+P5+Q5+R5+S5+T5+U5+~[+V5+W5+X5+Y5+Z5+`5+ 6+.6++6+@6+#6+$6+a0 %6+&6+'= *6+=6+-6+;6+>6+:< ,6+'6+)6+!6+~6+{6+]6+^6+/6+(6+_6+:6+<6+[6+}6+|6+16+26+36+46+56+;(+66+76+86+96+06+*B a6+b6+c6+d6+e6+f6+g6+h6+i6+j6+k6+l6+m6+n6+",\r
+"o6+p6+q6+r6+s6+t6+u6+v6+w6+x6+y6+z6+c4 A6+B6+C6+D6+E6+F6+G6+H6+I6+J6+K6+L6+M6+N6+O6+P6+-& Q6+R6+S6+T6+bT. % U6+V6+W6+X6+Y6+Z6+`6+ 7+b{+.7++7+@7+#7+$7+%7+&7+H!+*7+=7+-7+;7+>7+,7+'7+)7+!7+~7+{7+]7+^7+/7+(7+_7+:7+wD.<7+[7+}7+|7+17+27+37+47+57+67+77+87+97+07+a7+b7+c7+d7+e7+f7+g7+Pg.h7+i7+j7+k7+l7+m7+n7+o7+p7+q7+r7+s7+t7+u7+v7+N).w7+x7+y7+V,.z7+A7+B7+C7+D7+E7+F7+G7+H7+I7+J7+K7+L7+M7+N7+O7+P7+Q7+R7+S7+x7+T7+U7+V7+W7+X7+Y7+a] Z7+`7+ 8+.8++8+@8+#8+$8+e_ %8+&8+*8+=8+QQ.-8+;8+>8+,8+'8+)8+!8+~8+{8+]8+^8+/8+(8+_8+N_ :8+<8+[8+}8+|8+18+/~+28+"};\r
diff --git a/client/tag/0.6.2/anago/programcore.nut b/client/tag/0.6.2/anago/programcore.nut
new file mode 100644 (file)
index 0000000..9a2ba58
--- /dev/null
@@ -0,0 +1,85 @@
+function loopsize_get(t, trans, image_size, device_size)
+{
+       local trans_full = 3, trans_top = 1, trans_bottom = 2; //header.h enum transtype
+       local loop = {start = 0, end = 0};
+       switch(trans){
+       case trans_full:{
+               local size = device_size < t.size_max ? device_size : t.size_max;
+               loop.end = size / t.banksize;
+               }break;
+       case trans_top:
+               loop.end = image_size / t.banksize;
+               break;
+       case trans_bottom:
+               loop.start = (t.size_max - image_size) / t.banksize;
+               loop.end = t.size_max / t.banksize;
+               break;
+       default:
+               loop.start = 0;
+               loop.end = 0;
+               break;
+       }
+       return loop;
+}
+
+function testrun(
+       d, script, mapper, 
+       cpu_trans, cpu_image_size, cpu_device_size,
+       ppu_trans, ppu_image_size, ppu_device_size
+)
+{
+       const mega = 0x20000;
+       local trans_empty = 0;
+       dofile(script);
+
+       if((board.mappernum != mapper) && (mapper != 0)){
+               print("mapper number are not connected\n");
+               print("script:" + board.mappernum + " image:" + mapper + "\n");
+       }
+       local cpu_loop = loopsize_get(board.cpu_rom, cpu_trans, cpu_image_size, cpu_device_size);
+       local ppu_loop = loopsize_get(board.ppu_rom, ppu_trans, ppu_image_size, ppu_device_size);
+       if(board.vram_mirrorfind == true){
+               vram_mirrorfind(d);
+       }
+       program_initalize(d, board.cpu_rom.banksize, board.ppu_rom.banksize);
+       if(cpu_trans != trans_empty){
+               cpu_transfer(d, cpu_loop.start, cpu_loop.end, board.cpu_rom.banksize);
+       }
+       if(ppu_trans != trans_empty){
+               ppu_transfer(d, ppu_loop.start, ppu_loop.end, board.ppu_rom.banksize);
+       }
+}
+
+function program(
+       d, script, mapper, 
+       cpu_trans, cpu_image_size, cpu_device_size,
+       ppu_trans, ppu_image_size, ppu_device_size
+)
+{
+       const mega = 0x20000;
+       local trans_empty = 0;
+       dofile(script);
+
+       if((board.mappernum != mapper) && (mapper != 0)){
+               return;
+       }
+       local cpu_loop = loopsize_get(board.cpu_rom, cpu_trans, cpu_image_size, cpu_device_size);
+       local ppu_loop = loopsize_get(board.ppu_rom, ppu_trans, ppu_image_size, ppu_device_size);
+       local co_cpu = newthread(cpu_transfer);
+       local co_ppu = newthread(ppu_transfer);
+       program_initalize(d, board.cpu_rom.banksize, board.ppu_rom.banksize);
+       if(cpu_trans != trans_empty){
+               cpu_erase(d);
+       }
+       if(ppu_trans != trans_empty){
+               ppu_erase(d);
+       }
+       erase_wait(d);
+       if(cpu_trans != trans_empty){
+               co_cpu.call(d, cpu_loop.start, cpu_loop.end, board.cpu_rom.banksize);
+       }
+       if(ppu_trans != trans_empty){
+               co_ppu.call(d, ppu_loop.start, ppu_loop.end, board.ppu_rom.banksize);
+       }
+       program_main(d, co_cpu, co_ppu);
+}
diff --git a/client/tag/0.6.2/anago/reader_dummy.c b/client/tag/0.6.2/anago/reader_dummy.c
new file mode 100644 (file)
index 0000000..9e7c90d
--- /dev/null
@@ -0,0 +1,136 @@
+#include <string.h>
+#include "type.h"
+#include "widget.h"
+#include "reader_master.h"
+#include "memory_manage.h"
+
+struct reader_handle{
+       void (*except)(const wgChar *str);
+       const struct textcontrol *log;
+};
+
+static const struct reader_handle *dummy_open(void (*except)(const wgChar *str), const struct textcontrol *log)
+{
+       struct reader_handle *h;
+       h = Malloc(sizeof(struct reader_handle));
+       h->except = except;
+       h->log = log;
+       return h;
+}
+
+static void dummy_close(const struct reader_handle *h)
+{
+       Free((void *) h);
+}
+
+/*static void throw(const struct reader_handle *h)
+{
+#ifdef _UNICODE
+               size_t length = strlen(usb_strerror());
+               wchar_t *mm = Malloc(sizeof(wchar_t) * (length + 1));
+               mbstowcs(mm, usb_strerror(), length + 1);
+               h->except(mm);
+               Free(mm);
+#else
+               h->except(usb_strerror());
+#endif
+}*/
+
+static void dummy_read(const struct reader_handle *h, const struct gauge *g, long address, long length, uint8_t *data)
+{
+       const int packet = 0x200;
+       while(length >= packet){
+               wait(10);
+               memset(data, 2, packet);
+               data += packet;
+               length -= packet;
+               g->value_add(g->bar, g->label, packet);
+       }
+       if(length != 0){
+               memset(data, 33, length);
+               g->value_add(g->bar, g->label, length);
+       }
+}
+
+static void dummy_init(const struct reader_handle *h)
+{
+}
+
+static void dummy_cpu_write(const struct reader_handle *h, long address, long length, const uint8_t *data)
+{
+       if(length <= 8){
+               long i;
+               for(i = 0; i < length; i++){
+                       h->log->append(h->log->object, wgT(" cpu_write $%04x <- $%02x\n"), (int) address, *data);
+                       address++;
+                       data++;
+               }
+       }
+       wait(4);
+}
+
+static void dummy_write(const struct reader_handle *h, long address, long length, const uint8_t *data)
+{
+       wait(4);
+}
+
+static void dummy_flash_config(const struct reader_handle *h, long c000x, long c2aaa, long c5555, long unit, bool retry)
+{
+}
+
+static void dummy_flash_erase(const struct reader_handle *h, long address, bool dowait)
+{
+       if(dowait == true){
+               wait(10);
+       }
+}
+
+static long dummy_flash_program(const struct reader_handle *h, const struct gauge *g, long address, long length, const uint8_t *data, bool dowait, bool skip)
+{
+       if(dowait == true){
+               wait(20);
+       }
+       g->value_add(g->bar, g->label, 0x200);
+       return 0x200;
+}
+
+static void dummy_flash_status(const struct reader_handle *h, uint8_t s[2])
+{
+       s[0] = 0;
+       s[1] = 0;
+}
+
+static void dummy_flash_device_get(const struct reader_handle *h, uint8_t s[2])
+{
+       s[0] = 0;
+       s[1] = 0;
+}
+
+static uint8_t dummy_vram_connection(const struct reader_handle *h)
+{
+       return 0;
+}
+
+const struct reader_driver DRIVER_DUMMY = {
+       .cpu = {
+               .memory_read = dummy_read, 
+               .memory_write = dummy_cpu_write,
+               .flash_config = dummy_flash_config,
+               .flash_erase = dummy_flash_erase,
+               .flash_program = dummy_flash_program,
+               .flash_device_get = dummy_flash_device_get
+       }, .ppu = {
+               .memory_read = dummy_read,
+               .memory_write = dummy_write,
+               .flash_config = dummy_flash_config,
+               .flash_erase = dummy_flash_erase,
+               .flash_program = dummy_flash_program,
+               .flash_device_get = dummy_flash_device_get
+       }, .control  = {
+               .name = wgT("dummy"),
+               .open = dummy_open, .close = dummy_close,
+               .init = dummy_init,
+               .flash_status = dummy_flash_status,
+               .vram_connection = dummy_vram_connection
+       }
+};
diff --git a/client/tag/0.6.2/anago/reader_dummy.h b/client/tag/0.6.2/anago/reader_dummy.h
new file mode 100644 (file)
index 0000000..a301e21
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _READER_DUMMY_H_
+#define _READER_DUMMY_H_
+extern const struct reader_driver DRIVER_DUMMY;
+#endif
diff --git a/client/tag/0.6.2/anago/script_common.c b/client/tag/0.6.2/anago/script_common.c
new file mode 100644 (file)
index 0000000..a465692
--- /dev/null
@@ -0,0 +1,146 @@
+#include <assert.h>
+#include <string.h>
+#include <squirrel.h>
+#include <sqstdio.h>
+#include <sqstdaux.h>
+#include "type.h"
+#include "memory_manage.h"
+#include "squirrel_wrap.h"
+#include "reader_master.h"
+#include "widget.h"
+#include "script_common.h"
+
+SQInteger script_nop(HSQUIRRELVM v)
+{
+       return 0;
+}
+
+SQInteger range_check(HSQUIRRELVM v, const wgChar *name, long target, const struct range *range)
+{
+       if((target < range->start) || (target > range->end)){
+               SQPRINTFUNCTION f = sq_getprintfunc(v);
+               f(v, wgT("%s range must be 0x%06x to 0x%06x"), name, (int) range->start, (int) range->end);
+               return sq_throwerror(v, wgT("script logical error"));
+       }
+       return 0;
+}
+
+SQInteger cpu_write_check(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x4000, 0x10000};
+       static const struct range range_data = {0x0, 0xff};
+       const SQInteger data_index = 4;
+       long address;
+       switch(sq_gettype(v, data_index)){
+       case OT_INTEGER:{
+               long data;
+               SQRESULT r = qr_argument_get(v, 2, &address, &data);
+               if(SQ_FAILED(r)){
+                       return r;
+               }
+               r = range_check(v, wgT("address"), address, &range_address);
+               if(SQ_FAILED(r)){
+                       return r;
+               }
+               return range_check(v, wgT("data"), data, &range_data);}
+       case OT_ARRAY:{
+               SQInteger i;
+               if(qr_long_get(v, 3, &address) == false){
+                       return sq_throwerror(v, _SC("argument number error"));
+               }
+               for(i = 0; i < sq_getsize(v, data_index); i++){
+                       long data;
+                       SQRESULT r = range_check(v, wgT("address"), address, &range_address);
+                       if(SQ_FAILED(r)){
+                               return r;
+                       }
+                       sq_pushinteger(v, i);
+                       if(SQ_FAILED(sq_get(v, -2))){
+                               return r;
+                       }
+                       if(qr_long_get(v, -1, &data) == false){
+                               return sq_throwerror(v, wgT("script type error"));
+                       }
+                       sq_pop(v, 1);
+                       r = range_check(v, wgT("data"), data, &range_data);
+                       if(SQ_FAILED(r)){
+                               return r;
+                       }
+                       address++;
+               }
+               return 0;}
+       default:
+               return sq_throwerror(v, wgT("script type error"));
+       }
+       return 0;
+}
+
+void cpu_write_execute(HSQUIRRELVM v, const struct reader_handle *h, const struct reader_memory_access *t)
+{
+       const SQInteger data_index = 4;
+       long address;
+       switch(sq_gettype(v, data_index)){
+       case OT_INTEGER:{
+               long data;
+               uint8_t d8;
+               SQRESULT r = qr_argument_get(v, 2, &address, &data);
+               assert(r == SQ_OK);
+               r++; //avoid warning
+               d8 = (uint8_t) (data & 0xff);
+               t->memory_write(h, address, 1, &d8);
+               }break;
+       case OT_ARRAY:{
+               long i;
+               bool rr = qr_long_get(v, 3, &address);
+               assert(rr == true);
+               
+               const long size = (long) sq_getsize(v, data_index);
+               uint8_t *const d8 = Malloc(size * sizeof(uint8_t));
+               
+               for(i = 0; i < size; i++){
+                       long data;
+                       SQRESULT r;
+                       sq_pushinteger(v, i);
+                       r = sq_get(v, -2);
+                       assert(r == SQ_OK);
+                       rr = qr_long_get(v, -1, &data);
+                       assert(rr = true);
+                       sq_pop(v, 1);
+                       d8[i] = (uint8_t) (data & 0xff);
+               }
+               t->memory_write(h, address, size, d8);
+               Free(d8);
+               }break;
+       default:
+               assert(0);
+               break;
+       }
+       return;
+}
+
+static bool connection_check_main(const struct reader_handle *h, const struct textcontrol *text, const struct reader_memory_access *m, long address)
+{
+       const int size = 0x10;
+       uint8_t test1[size], test_m[size];
+       int i;
+       
+       m->memory_read(h, &GAUGE_DUMMY, address, size, test1);
+       for(i = 0; i < 3; i++){
+               m->memory_read(h, &GAUGE_DUMMY, address, size, test_m);
+               if(memcmp(test1, test_m, size) != 0){
+                       text->append(text->object, wgT("maybe cartridge connection error\n"));
+                       return false;
+               }
+       }
+       return true;
+}
+bool connection_check(const struct reader_handle *h, const struct textcontrol *text, const struct reader_memory_access *cpu, const struct reader_memory_access *ppu)
+{
+       if(connection_check_main(h, text, cpu, 0xf000) == false){
+               return false;
+       }
+       if(connection_check_main(h, text, ppu, 0x0000) == false){
+               return false;
+       }
+       return true;
+}
diff --git a/client/tag/0.6.2/anago/script_common.h b/client/tag/0.6.2/anago/script_common.h
new file mode 100644 (file)
index 0000000..8bf4957
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _SCRIPT_COMMON_H_
+#define _SCRIPT_COMMON_H_
+struct range{
+       long start, end;
+};
+SQInteger script_nop(HSQUIRRELVM v);
+SQInteger range_check(HSQUIRRELVM v, const wgChar *name, long target, const struct range *range);
+SQInteger cpu_write_check(HSQUIRRELVM v);
+void cpu_write_execute(HSQUIRRELVM v, const struct reader_handle *h, const struct reader_memory_access *t);
+
+struct reader_handle;
+struct reader_memory_access;
+bool connection_check(const struct reader_handle *h, const struct textcontrol *text, const struct reader_memory_access *cpu, const struct reader_memory_access *ppu);
+#endif
diff --git a/client/tag/0.6.2/anago/script_dump.c b/client/tag/0.6.2/anago/script_dump.c
new file mode 100644 (file)
index 0000000..6773919
--- /dev/null
@@ -0,0 +1,546 @@
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <squirrel.h>
+#include <sqstdio.h>
+#include <sqstdaux.h>
+#include "type.h"
+#include "file.h"
+#include "widget.h"
+#include "romimage.h"
+#include "memory_manage.h"
+#include "reader_master.h"
+#include "squirrel_wrap.h"
+#include "script_common.h"
+#include "script_dump.h"
+
+static SQInteger cpu_write(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       cpu_write_execute(v, d->handle, d->cpu.access);
+       return 0;
+}
+
+//ここの printf は debug 用に残しておく
+static void buffer_show(struct memory *t, long length)
+{
+       int i;
+       const uint8_t *buf = t->data + t->offset;
+#ifdef _UNICODE
+       wprintf(L"%s 0x%06x:", t->name, t->offset);
+#else
+       printf("%s 0x%06x:", t->name, t->offset);
+#endif
+       for(i = 0; i < 0x10; i++){
+               wgChar dump[3+1];
+#ifdef _UNICODE
+               //wsprintf(dump, L"%02x", buf[i]);
+#else
+               sprintf(dump, "%02x", buf[i]);
+#endif
+               switch(i){
+               case 7:
+                       dump[2] = wgT('-');
+                       break;
+               case 0x0f:
+                       dump[2] = wgT('\0');
+                       break;
+               default:
+                       dump[2] = wgT(' ');
+                       break;
+               }
+               dump[3] = wgT('\0');
+#ifdef _UNICODE
+               wprintf(L"%s", dump);
+#else
+               printf("%s", dump);
+#endif
+       }
+       int sum = 0;
+       while(length != 0){
+               sum += (int) *buf;
+               buf++;
+               length--;
+       }
+#ifdef _UNICODE
+       wprintf(L":0x%06x\n", sum);
+#else
+       printf(":0x%06x\n", sum);
+#endif
+       fflush(stdout);
+}
+
+static SQInteger read_memory(HSQUIRRELVM v, const struct reader_handle *h, struct dump_memory_driver *t, bool progress)
+{
+       long address, length;
+       SQRESULT r = qr_argument_get(v, 2, &address, &length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       assert(t->memory.attribute == MEMORY_ATTR_WRITE);
+       t->access->memory_read(h, &t->gauge, address, length == 0 ? 1: length, t->memory.data + t->memory.offset);
+       if((length != 0) && (progress == false)){
+               buffer_show(&t->memory, length);
+       }
+       t->memory.offset += length;
+       return 0;
+}
+
+static SQInteger cpu_read(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = read_memory(v, d->handle, &d->cpu, d->progress);
+       return r;
+}
+
+static SQInteger ppu_read(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = read_memory(v, d->handle, &d->ppu, d->progress);
+       return r;
+}
+
+static SQInteger ppu_ramfind(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       enum{
+               testsize = 8,
+               testaddress = 1234
+       };
+       static const uint8_t test_val[testsize] = {0xaa, 0x55, 0, 0xff, 0x46, 0x49, 0x07, 0x21};
+       static const uint8_t test_str[testsize] = "pputest";
+       uint8_t test_result[testsize];
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       struct dump_memory_driver *p = &d->ppu;
+
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       p->access->memory_write(d->handle, testaddress, testsize, test_val);
+       p->access->memory_read(d->handle, &GAUGE_DUMMY, testaddress, testsize, test_result);
+       if(memcmp(test_val, test_result, testsize) != 0){
+               sq_pushbool(v, SQFalse);
+               return 1;
+       }
+       p->access->memory_write(d->handle, testaddress, testsize, test_str);
+       p->access->memory_read(d->handle, &GAUGE_DUMMY, testaddress, testsize, test_result);
+       if(memcmp(test_str, test_result, testsize) != 0){
+               sq_pushbool(v, SQFalse);
+               return 1;
+       }
+       p->memory.offset = 0;
+       p->memory.size = 0;
+       sq_pushbool(v, SQTrue);
+       return 1;
+}
+
+static SQInteger return_true(HSQUIRRELVM v)
+{
+       sq_pushbool(v, SQFalse);
+       return 1;
+}
+
+static void memory_new_init(struct dump_memory_driver *d)
+{
+       d->memory.offset = 0;
+       d->memory.data = Malloc(d->memory.size);
+       d->gauge.range_set(d->gauge.bar, d->memory.size);
+       d->gauge.value_set(d->gauge.bar, d->gauge.label, 0);
+}
+
+//test 時/1度目の call で使用
+static SQInteger memory_new(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = qr_argument_get(v, 2, &d->cpu.memory.size, &d->ppu.memory.size);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+
+       memory_new_init(&d->cpu);
+       if(d->mode == MODE_ROM_DUMP){
+               memory_new_init(&d->ppu);
+       }
+       return 0;
+}
+
+//dump 時/2度目の call で nesfile_save として使用
+static SQInteger nesfile_save(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       struct romimage image;
+       long mirrorfind;
+       r = qr_argument_get(v, 2, &image.mappernum, &mirrorfind);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       image.cpu_rom = d->cpu.memory;
+       image.cpu_ram.data = NULL;
+       image.ppu_rom = d->ppu.memory;
+       image.mirror = MIRROR_PROGRAMABLE;
+       if(mirrorfind == 1){
+               uint8_t c = d->control->vram_connection(d->handle);
+               if(DEBUG == 1){
+                       d->log.append(d->log.object, wgT("vram connection %x\n"), c);
+               }
+/*
+kazzo 1.0 return value H:9 V:5
+kazzo 2.x return value H:C V:A
+*/
+               if(c == 0x05 || c == 0x0a){
+                       image.mirror = MIRROR_VERTICAL;
+               }else{
+                       image.mirror = MIRROR_HORIZONAL;
+               }
+       }
+       image.backupram = 0;
+       if(d->battery == true){
+               image.backupram = 1;
+       }
+       d->crc = nesfile_create(&d->log, &image, d->target);
+       nesbuffer_free(&image, 0); //0 is MODE_xxx_xxxx
+       
+       d->cpu.memory.data = NULL;
+       d->ppu.memory.data = NULL;
+       return 0;
+}
+
+//dump 時/1度目の call で nesfile_save として使用
+static SQInteger length_check(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       bool cpu = true, ppu = true;
+       r = 0;
+       if(d->cpu.memory.size != d->cpu.read_count){
+               cpu = false;
+       }
+       if(cpu == false){
+               d->log.append(d->log.object, wgT("cpu_romsize is not connected 0x%06x/0x%06x\n"), (int) d->cpu.read_count, (int) d->cpu.memory.size);
+       }
+       if(d->ppu.memory.size != d->ppu.read_count){
+               ppu = false;
+       }
+       if(ppu == false){
+               d->log.append(d->log.object, wgT("ppu_romsize is not connected 0x%06x/0x%06x\n"), (int) d->ppu.read_count, (int) d->ppu.memory.size);
+       }
+       if(cpu == false || ppu == false){
+               r = sq_throwerror(v, wgT("script logical error"));
+       }
+       return r;
+}
+
+static SQInteger read_count(HSQUIRRELVM v, const struct textcontrol *l, struct dump_memory_driver *t, const struct range *range_address, const struct range *range_length)
+{
+       long address, length;
+       SQRESULT r = qr_argument_get(v, 2, &address, &length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = range_check(v, wgT("length"), length, range_length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if((address < range_address->start) || ((address + length) > range_address->end)){
+               l->append(l->object, wgT("address range must be 0x%06x to 0x%06x"), (int) range_address->start, (int) range_address->end);
+               return sq_throwerror(v, wgT("script logical error"));;
+       }
+       t->read_count += length;
+       return 0;
+}
+static SQInteger cpu_read_count(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x8000, 0x10000};
+       //length == 0 は 対象アドレスを呼んで、バッファにいれない。mmc2, mmc4 で使用する。
+       static const struct range range_length = {0x0000, 0x4000};
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return read_count(v, &d->log, &d->cpu, &range_address, &range_length);
+}
+
+static SQInteger ppu_read_count(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x0000, 0x2000};
+       static const struct range range_length = {0x0001, 0x2000};
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return read_count(v, &d->log, &d->ppu, &range_address, &range_length);
+}
+
+static SQInteger memory_size_set(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = qr_argument_get(v, 2, &d->cpu.memory.size, &d->ppu.memory.size);
+       return r;
+}
+
+static bool script_execute(HSQUIRRELVM v, struct dump_config *d)
+{
+       bool ret = true;
+       if(SQ_FAILED(sqstd_dofile(v, wgT("dumpcore.nut"), SQFalse, SQTrue))){
+               d->log.append(d->log.object, wgT("dump core script error\n"));
+               ret = false;
+       }else{
+               SQRESULT r = qr_call(
+                       v, wgT("dump"), (SQUserPointer) d, d->script, 
+                       3, d->mappernum, d->cpu.increase, d->ppu.increase
+               );
+               if(SQ_FAILED(r)){
+                       ret = false;
+                       Free(d->cpu.memory.data);
+                       Free(d->ppu.memory.data);
+                       d->cpu.memory.data = NULL;
+                       d->ppu.memory.data = NULL;
+               }
+       }
+       return ret;
+}
+
+static void dump_memory_driver_init(struct dump_memory_driver *dd, enum memory_attribute at)
+{
+       dd->memory.size = 0;
+       dd->memory.offset = 0;
+       dd->memory.attribute = at;
+       dd->memory.transtype = TRANSTYPE_FULL;
+       dd->memory.data = NULL;
+       dd->read_count = 0;
+}
+
+bool script_dump_execute(struct dump_config *d)
+{
+       dump_memory_driver_init(&d->cpu, MEMORY_ATTR_WRITE);
+       d->cpu.memory.name = wgT("Program");
+       
+       dump_memory_driver_init(&d->ppu, MEMORY_ATTR_WRITE);
+       d->ppu.memory.name = wgT("Charcter");
+       
+       {
+               HSQUIRRELVM v = qr_open(&d->log);
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write_check);
+               qr_function_register_global(v, wgT("memory_new"), memory_size_set);
+               qr_function_register_global(v, wgT("nesfile_save"), length_check);
+               qr_function_register_global(v, wgT("cpu_read"), cpu_read_count);
+               qr_function_register_global(v, wgT("ppu_read"), ppu_read_count);
+               qr_function_register_global(v, wgT("ppu_ramfind"), return_true);
+               if(script_execute(v, d) == false){
+                       qr_close(v);
+                       return false;
+               }
+               qr_close(v);
+       }
+
+       d->handle = d->control->open(d->except, &d->log);
+       if(d->handle == NULL){
+               d->log.append(d->log.object, wgT("reader open error\n"));
+               return false;
+       }
+       d->control->init(d->handle);
+       if(connection_check(d->handle, &d->log, d->cpu.access, d->ppu.access) == false){
+               d->control->close(d->handle);
+               return false;
+       }
+       {
+               HSQUIRRELVM v = qr_open(&d->log); 
+               qr_function_register_global(v, wgT("memory_new"), memory_new);
+               qr_function_register_global(v, wgT("nesfile_save"), nesfile_save);
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write);
+               qr_function_register_global(v, wgT("cpu_read"), cpu_read);
+               qr_function_register_global(v, wgT("ppu_read"), ppu_read);
+               qr_function_register_global(v, wgT("ppu_ramfind"), ppu_ramfind);
+               script_execute(v, d);
+               qr_close(v);
+       }
+       d->control->close(d->handle);
+       d->handle = NULL;
+       return true;
+}
+
+static bool workram_execute(HSQUIRRELVM v, struct dump_config *d)
+{
+       bool ret = true;
+       if(SQ_FAILED(sqstd_dofile(v, wgT("dumpcore.nut"), SQFalse, SQTrue))){
+               d->log.append(d->log.object, wgT("dump core script error\n"));
+               ret = false;
+       }else{
+               SQRESULT r = qr_call(
+                       v, wgT("workram_rw"), (SQUserPointer) d, d->script, 
+                       1, d->cpu.increase
+               );
+               if(SQ_FAILED(r)){
+                       ret = false;
+                       Free(d->cpu.memory.data);
+                       d->cpu.memory.data = NULL;
+//                     Free(d->ppu.memory.data);
+//                     d->ppu.memory.data = NULL;
+               }
+       }
+       return ret;
+}
+
+static SQInteger cpu_ramrw_check(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x6000, 0xdfff};
+       static const struct range range_length = {1, 0x2000};
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return read_count(v, &d->log, &d->cpu, &range_address, &range_length);
+}
+
+static SQInteger ramimage_open(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if(buf_load(d->cpu.memory.data, d->target, d->cpu.memory.size) == NG){
+               return r = sq_throwerror(v, wgT("RAM image open error"));
+       }
+       return 0;
+}
+
+static SQInteger memory_finalize(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if(d->mode == MODE_RAM_READ){
+               buf_save(d->cpu.memory.data, d->target, d->cpu.memory.size);
+       }
+       Free(d->cpu.memory.data);
+       d->cpu.memory.data = NULL;
+//     Free(d->ppu.memory.data);
+//     d->ppu.memory.data = NULL;
+       
+       return 0;
+}
+
+static SQInteger cpu_write_ramimage(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+
+       long address, length;
+       uint8_t *cmp;
+       const uint8_t *writedata = d->cpu.memory.data;
+       writedata += d->cpu.memory.offset;
+       
+       r = qr_argument_get(v, 2, &address, &length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       cmp = Malloc(length);
+       assert(d->cpu.memory.attribute == MEMORY_ATTR_READ);
+       //&d->cpu.gauge, 
+       d->cpu.access->memory_write(
+               d->handle, address, length, writedata
+       );
+       d->cpu.access->memory_read(
+               d->handle, &d->cpu.gauge, address, length, cmp
+       );
+       d->cpu.memory.offset += length;
+
+       r = memcmp(cmp, writedata, length);
+       Free(cmp);
+       if(r != 0){
+               r = sq_throwerror(v, wgT("memory write failed"));
+       }
+       return 0;
+}
+
+bool script_workram_execute(struct dump_config *d)
+{
+       dump_memory_driver_init(&d->cpu, d->mode == MODE_RAM_READ ? MEMORY_ATTR_WRITE : MEMORY_ATTR_READ);
+       dump_memory_driver_init(&d->ppu, MEMORY_ATTR_NOTUSE);
+       d->cpu.memory.name = wgT("Workram");
+       d->ppu.memory.name = wgT("N/A");
+
+       {
+               HSQUIRRELVM v = qr_open(&d->log);
+               qr_function_register_global(v, wgT("memory_new"), memory_new);
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write_check);
+               qr_function_register_global(v, wgT("cpu_ramrw"), cpu_ramrw_check);
+               qr_function_register_global(v, wgT("memory_finalize"), length_check);
+               if(workram_execute(v, d) == false){
+                       qr_close(v);
+                       return false;
+               }
+               qr_close(v);
+       }
+       
+       d->handle = d->control->open(d->except, &d->log);
+       if(d->handle == NULL){
+               d->log.append(d->log.object, wgT("reader open error\n"));
+               return false;
+       }
+       d->control->init(d->handle);
+       if(connection_check(d->handle, &d->log, d->cpu.access, d->ppu.access) == false){
+               d->control->close(d->handle);
+               return false;
+       }
+       {
+               HSQUIRRELVM v = qr_open(&d->log); 
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write);
+               switch(d->mode){
+               case MODE_RAM_READ:
+                       qr_function_register_global(v, wgT("memory_new"), script_nop);
+                       qr_function_register_global(v, wgT("cpu_ramrw"), cpu_read);
+                       break;
+               case MODE_RAM_WRITE:
+                       qr_function_register_global(v, wgT("memory_new"), ramimage_open);
+                       qr_function_register_global(v, wgT("cpu_ramrw"), cpu_write_ramimage);
+                       break;
+               default:
+                       assert(0);
+                       break;
+               }
+               qr_function_register_global(v, wgT("memory_finalize"), memory_finalize);
+               workram_execute(v, d);
+               qr_close(v);
+       }
+       d->control->close(d->handle);
+       d->handle = NULL;
+       return true;
+}
diff --git a/client/tag/0.6.2/anago/script_dump.h b/client/tag/0.6.2/anago/script_dump.h
new file mode 100644 (file)
index 0000000..dd14472
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef _SCRIPT_DUMP_H_
+#define _SCRIPT_DUMP_H_
+enum dump_mode{
+       MODE_ROM_DUMP, MODE_RAM_READ, MODE_RAM_WRITE
+};
+enum {
+       INCREASE_AUTO = 11
+};
+struct dump_config{
+       enum dump_mode mode;
+       const wgChar *script;
+       const wgChar *target;
+       const struct reader_handle *handle;
+       const struct reader_control *control;
+       struct dump_memory_driver{
+               const struct reader_memory_access *access;
+               struct memory memory;
+               long read_count, increase;
+               struct gauge gauge;
+       }cpu, ppu;
+       long mappernum;
+       bool progress;
+       bool battery;
+       unsigned long crc;
+       struct textcontrol log;
+       void (*except)(const wgChar *str);
+};
+bool script_dump_execute(struct dump_config *c);
+bool script_workram_execute(struct dump_config *d);
+#endif
diff --git a/client/tag/0.6.2/anago/script_program.c b/client/tag/0.6.2/anago/script_program.c
new file mode 100644 (file)
index 0000000..37a0f8b
--- /dev/null
@@ -0,0 +1,503 @@
+#include <assert.h>
+#include <string.h>
+#include <squirrel.h>
+#include <sqstdio.h>
+#include <sqstdaux.h>
+#include <kazzo_task.h>
+#include "type.h"
+#include "widget.h"
+#include "romimage.h"
+#include "memory_manage.h"
+#include "reader_master.h"
+#include "squirrel_wrap.h"
+#include "flash_device.h"
+#include "script_common.h"
+#include "script_program.h"
+
+static SQInteger vram_mirrorfind(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r = SQ_FAILED(qr_userpointer_get(v, (SQUserPointer) &d));
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       const uint8_t c = d->control->vram_connection(d->handle);
+       if(DEBUG == 1){
+               d->log.append(d->log.object, wgT("vram connection %x\n"), c);
+       }
+       if((c == 0x0a || c == 0x05) && d->vram_mirroring == MIRROR_VERTICAL){
+               return 0;
+       }else if((c == 0x0c || c == 0x09) && d->vram_mirroring == MIRROR_HORIZONAL){
+               return 0;
+       }else{
+               wgChar cartridge, image;
+               switch(c){
+               case 0x05: case 0x0a:
+                       image = wgT('V');
+                       break;
+               case 0x09: case 0x0c:
+                       image = wgT('H');
+                       break;
+               default:
+                       image = wgT('?');
+                       break;
+               }
+               if(d->vram_mirroring == MIRROR_HORIZONAL){
+                       cartridge = wgT('H');
+               }else{
+                       cartridge = wgT('V');
+               }
+               d->log.append(d->log.object, wgT("warning: vram connection is unmmacted\n"));
+               d->log.append(d->log.object, wgT("cartridge:%c romimage:%c\n"), cartridge, image);
+       }
+       return 0;
+}
+static SQInteger command_set(HSQUIRRELVM v, struct flash_memory_driver *t)
+{
+       long command, address ,mask;
+       SQRESULT r = qr_argument_get(v, 3, &command, &address, &mask);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       long d = command & (mask - 1);
+       d |= address;
+       switch(command){
+       case 0x0000:
+               t->c000x = d;
+               break;
+       case 0x02aa: case 0x2aaa:
+               t->c2aaa = d;
+               break;
+       case 0x0555: case 0x5555:
+               t->c5555 = d;
+               break;
+       default:
+               return sq_throwerror(v, wgT("unknown command address"));
+       }
+       t->command_change = true;
+       return 0;
+}
+static SQInteger cpu_command(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return command_set(v, &d->cpu);
+}
+static SQInteger ppu_command(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return command_set(v, &d->ppu);
+}
+
+static SQInteger cpu_write(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       cpu_write_execute(v, d->handle, d->cpu.access);
+       return 0;
+}
+
+static SQInteger erase_set(HSQUIRRELVM v, const struct reader_handle *h, struct flash_memory_driver *t, struct textcontrol *log)
+{
+       t->access->flash_config(h, t->c000x, t->c2aaa, t->c5555, t->flash.pagesize, t->flash.retry);
+       t->command_change = false;
+       if(t->flash.erase_require == true){
+               t->access->flash_erase(h, t->c2aaa, false);
+               t->gauge.label_set(t->gauge.label, wgT("erasing "));
+       }
+       return 0;
+}
+static SQInteger cpu_erase(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return erase_set(v, d->handle, &d->cpu, &d->log);
+}
+static SQInteger ppu_erase(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return erase_set(v, d->handle, &d->ppu, &d->log);
+}
+static SQInteger program_regist(HSQUIRRELVM v, const struct reader_handle *h, struct flash_memory_driver *t)
+{
+       SQRESULT r = qr_argument_get(v, 2, &t->programming.address, &t->programming.length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       t->compare = t->programming;
+       t->compare.offset = t->memory.offset & (t->memory.size - 1);
+       if(t->command_change == true){
+               t->access->flash_config(
+                       h, t->c000x, t->c2aaa, t->c5555, 
+                       t->flash.pagesize, t->flash.retry
+               );
+               t->command_change = false;
+       }
+       
+       return sq_suspendvm(v);
+}
+
+static void program_execute(const struct reader_handle *h, struct flash_memory_driver *t)
+{
+       const long w = t->access->flash_program(
+               h, &t->gauge, 
+               t->programming.address, t->programming.length, 
+               t->memory.data + t->memory.offset, false, 
+               t->flash.erase_require
+       );
+       t->programming.address += w;
+       t->programming.length -= w;
+       t->memory.offset += w;
+       t->memory.offset &= t->memory.size - 1;
+       t->programming.offset += w;
+}
+
+static bool program_compare(const struct reader_handle *h, struct flash_memory_driver *t)
+{
+       uint8_t *comparea = Malloc(t->compare.length);
+       bool ret = false;
+       if(t->flash.erase_require == true){
+               memset(comparea, 0xff, t->compare.length);
+               int doread = memcmp(comparea, t->memory.data + t->compare.offset, t->compare.length);
+               if(0){
+                       memset(comparea, 0, t->compare.length);
+                       doread &= memcmp(comparea, t->memory.data + t->compare.offset, t->compare.length);
+               }
+               if(doread == 0){
+                       Free(comparea);
+                       return true;
+               }
+       }
+       
+       t->access->memory_read(h, &GAUGE_DUMMY, t->compare.address, t->compare.length, comparea);
+       if(memcmp(comparea, t->memory.data + t->compare.offset, t->compare.length) == 0){
+               ret = true;
+       }
+       Free(comparea);
+       return ret;
+}
+static SQInteger cpu_program_memory(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return program_regist(v, d->handle, &d->cpu);
+}
+static SQInteger ppu_program_memory(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return program_regist(v, d->handle, &d->ppu);
+}
+
+static long erase_timer_get(const struct reader_handle *h, struct flash_memory_driver *t)
+{
+       if(
+               (t->memory.transtype != TRANSTYPE_EMPTY) && 
+               (t->flash.erase_require == true)
+       ){
+               return t->flash.erase_wait;
+       }else{
+               return 0;
+       }
+}
+static SQInteger erase_wait(HSQUIRRELVM v)
+{
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if(0){
+               long timer_wait = erase_timer_get(d->handle, &d->cpu);
+               long timer_ppu = erase_timer_get(d->handle, &d->ppu);
+               if(timer_wait < timer_ppu){
+                       timer_wait = timer_ppu;
+               }
+               wait(timer_wait);
+       }else{
+               uint8_t s[2];
+               do{
+                       wait(2);
+                       d->control->flash_status(d->handle, s);
+               //本来の意図からではここの条件式は && ではなく || だが、先に erase が終わったデバイスが動かせるので残しておく
+               }while((s[0] != KAZZO_TASK_FLASH_IDLE) && (s[1] != KAZZO_TASK_FLASH_IDLE));
+       }
+       return 0;
+}
+
+static void gauge_init(struct flash_memory_driver *t)
+{
+       t->gauge.range_set(t->gauge.bar, t->programming.count);
+
+       t->gauge.value_set(t->gauge.bar, t->gauge.label, 0);
+}
+
+static bool program_memoryarea(HSQUIRRELVM co, const struct reader_handle *h, struct flash_memory_driver *t, bool compare, SQInteger *state, struct textcontrol *log)
+{
+       if(t->programming.length == 0){
+               if(t->programming.offset != 0 && compare == true){
+                       if(program_compare(h, t) == false){
+                               log->append(log->object, wgT("%s memory compare failed, offset 0x%06x\n"), t->memory.name, t->programming.offset);
+                               return false;
+                       }
+               }
+
+               sq_wakeupvm(co, SQFalse, SQFalse, SQTrue, SQFalse);
+               *state = sq_getvmstate(co);
+       }else{
+               program_execute(h, t);
+       }
+       return true;
+}
+
+static SQInteger program_main(HSQUIRRELVM v)
+{
+       if(sq_gettop(v) != (1 + 3)){ //roottable, userpointer, co_cpu, co_ppu
+               return sq_throwerror(v, wgT("argument number error"));
+       }
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       HSQUIRRELVM co_cpu, co_ppu;
+       if(SQ_FAILED(sq_getthread(v, 3, &co_cpu))){
+               return sq_throwerror(v, wgT("thread error"));
+       }
+       if(SQ_FAILED(sq_getthread(v, 4, &co_ppu))){
+               return sq_throwerror(v, wgT("thread error"));
+       }
+       SQInteger state_cpu = sq_getvmstate(co_cpu);
+       SQInteger state_ppu = sq_getvmstate(co_ppu);
+       const long sleepms = d->compare == true ? 6 : 2; //W29C040 で compare をすると、error が出るので出ない値に調整 (やっつけ対応)
+       
+       while((state_cpu != SQ_VMSTATE_IDLE) || (state_ppu != SQ_VMSTATE_IDLE)){
+               uint8_t s[2];
+               wait(sleepms);
+               d->control->flash_status(d->handle, s);
+               if(state_cpu != SQ_VMSTATE_IDLE && s[0] == KAZZO_TASK_FLASH_IDLE){
+                       if(program_memoryarea(co_cpu, d->handle, &d->cpu, d->compare, &state_cpu, &d->log) == false){
+                               //sq_pushbool(v, SQFalse);
+                               return 0;
+                       }
+               }
+               if(state_ppu != SQ_VMSTATE_IDLE && s[1] == KAZZO_TASK_FLASH_IDLE){
+                       if(program_memoryarea(co_ppu, d->handle, &d->ppu, d->compare, &state_ppu, &d->log) == false){
+                               //sq_pushbool(v, SQFalse);
+                               return 0;
+                       }
+               }
+       }
+       //sq_pushbool(v, SQTrue);
+       return 0;
+}
+
+static SQInteger program_count(HSQUIRRELVM v, struct flash_memory_driver *t, const struct range *range_address, const struct range *range_length, struct textcontrol *log)
+{
+       SQRESULT r = qr_argument_get(v, 2, &t->programming.address, &t->programming.length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       r = range_check(v, wgT("length"), t->programming.length, range_length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if((t->programming.address < range_address->start) || ((t->programming.address + t->programming.length) > range_address->end)){
+               log->append(log->object, wgT("address range must be 0x%06x to 0x%06x"), (int) range_address->start, (int) range_address->end - 1);
+               return sq_throwerror(v, wgT("script logical error"));
+       }
+       t->programming.count += t->programming.length;
+       return 0;
+}
+static SQInteger cpu_program_count(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x8000, 0x10000};
+       static const struct range range_length = {0x0100, 0x4000};
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return program_count(v, &d->cpu, &range_address, &range_length, &d->log);
+}
+
+static SQInteger ppu_program_count(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x0000, 0x2000};
+       static const struct range range_length = {0x0100, 0x2000};
+       struct program_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return program_count(v, &d->ppu, &range_address, &range_length, &d->log);
+}
+
+static bool script_execute(HSQUIRRELVM v, const wgChar *function, struct program_config *c)
+{
+       bool ret = true;
+       if(SQ_FAILED(sqstd_dofile(v, _SC("programcore.nut"), SQFalse, SQTrue))){
+               c->log.append(c->log.object, wgT("flash core script error\n"));
+               ret = false;
+       }else{
+               SQRESULT r = qr_call(
+                       v, function, (SQUserPointer) c, c->script,
+                       1 + 3 * 2, c->mappernum, 
+                       c->cpu.memory.transtype, c->cpu.memory.size, c->cpu.flash.capacity,
+                       c->ppu.memory.transtype, c->ppu.memory.size, c->cpu.flash.capacity
+               );
+               if(SQ_FAILED(r)){
+                       ret = false;
+               }
+       }
+       return ret;
+}
+
+static bool zendan(struct program_config *c)
+{
+//script test run
+       {
+               static const wgChar *functionname[] = {
+                       wgT("cpu_erase"), wgT("ppu_erase"),
+                       wgT("erase_wait"), wgT("program_main")
+               };
+               HSQUIRRELVM v = qr_open(&c->log);
+               int i;
+               for(i = 0; i < sizeof(functionname)/sizeof(wgChar *); i++){
+                       qr_function_register_global(v, functionname[i], script_nop);
+               }
+               qr_function_register_global(v, _SC("cpu_write"), cpu_write_check);
+               qr_function_register_global(v, _SC("cpu_command"), cpu_command);
+               qr_function_register_global(v, _SC("cpu_program"), cpu_program_count);
+               
+               qr_function_register_global(v, _SC("ppu_program"), ppu_program_count);
+               qr_function_register_global(v, _SC("ppu_command"), ppu_command);
+               qr_function_register_global(v, _SC("vram_mirrorfind"), vram_mirrorfind);
+               
+               if(script_execute(v, wgT("testrun"), c) == false){
+                       qr_close(v);
+                       return false;
+               }
+               qr_close(v);
+               assert(c->cpu.memory.size != 0);
+
+               if(c->cpu.programming.count % c->cpu.memory.size  != 0){
+                       c->log.append(c->log.object, wgT("logical error: cpu_programsize is not connected 0x%06x/0x%06x\n"), (int) c->cpu.programming.count, (int) c->cpu.memory.size);
+                       return false;
+               }
+               if(c->ppu.memory.size != 0){
+                       if(c->ppu.programming.count % c->ppu.memory.size != 0){
+                               c->log.append(c->log.object, wgT("logical error: ppu_programsize is not connected 0x%06x/0x%06x\n"), (int) c->ppu.programming.count, (int) c->ppu.memory.size);
+                               return false;
+                       }
+               }
+       }
+//script execute 
+       //SQBool ret;
+       c->cpu.command_change = true;
+       gauge_init(&c->cpu);
+       c->ppu.command_change = true;
+       gauge_init(&c->ppu);
+       {
+               HSQUIRRELVM v = qr_open(&c->log); 
+               qr_function_register_global(v, _SC("cpu_write"), cpu_write);
+               qr_function_register_global(v, _SC("cpu_erase"), cpu_erase);
+               qr_function_register_global(v, _SC("cpu_program"), cpu_program_memory);
+               qr_function_register_global(v, _SC("cpu_command"), cpu_command);
+               qr_function_register_global(v, _SC("ppu_erase"), ppu_erase);
+               qr_function_register_global(v, _SC("ppu_program"), ppu_program_memory);
+               qr_function_register_global(v, _SC("ppu_command"), ppu_command);
+               qr_function_register_global(v, _SC("program_main"), program_main);
+               qr_function_register_global(v, _SC("erase_wait"), erase_wait);
+               qr_function_register_global(v, _SC("vram_mirrorfind"), script_nop);
+               script_execute(v, wgT("program"), c);
+               //assert(sq_gettype(v, -2) == OT_BOOL);
+               //sq_getbool(v, -1, &ret);
+               qr_close(v);
+       }
+       return true; //ret == SQTrue ? true : false;
+}
+
+static bool memory_image_init(const struct memory *from, struct flash_memory_driver *t, struct textcontrol *log)
+{
+       t->memory.data = from->data;
+       t->memory.size = from->size;
+       t->memory.attribute = MEMORY_ATTR_READ;
+       t->command_change = true;
+       t->programming.count = 0;
+       t->programming.offset = 0;
+       if(t->memory.size == 0){
+               t->memory.transtype = TRANSTYPE_EMPTY;
+       }
+       if(t->flash.capacity < from->size){
+               log->append(log->object, t->memory.name);
+               
+               log->append(log->object, wgT(" image size is larger than target device"));
+               return false;
+       }
+       return true;
+}
+
+bool script_program_execute(struct program_config *c)
+{
+//rom image load
+       struct romimage rom;
+       if(nesfile_load(&c->log, c->target, &rom) == false){
+               c->log.append(c->log.object, wgT("ROM image open error"));
+               return false;
+       }
+//variable init
+       c->mappernum = rom.mappernum;
+       c->vram_mirroring = rom.mirror;
+       c->cpu.memory.name = wgT("Program Flash");
+       if(memory_image_init(&rom.cpu_rom, &c->cpu, &c->log) == false){
+               nesbuffer_free(&rom, 0);
+               return false;
+       }
+       c->ppu.memory.name = wgT("Charcter Flash");
+       if(memory_image_init(&rom.ppu_rom, &c->ppu, &c->log) == false){
+               nesbuffer_free(&rom, 0);
+               return false;
+       }
+//reader initalize
+       c->handle = c->control->open(c->except, &c->log);
+       if(c->handle == NULL){
+               c->log.append(c->log.object, wgT("reader open error\n"));
+               nesbuffer_free(&rom, 0);
+               return false;
+       }
+//program start, reader finalize
+       if(connection_check(c->handle, &c->log, c->cpu.access, c->ppu.access) == false){
+               nesbuffer_free(&rom, 0);
+               c->control->close(c->handle);
+               return false;
+       }
+       bool ret = zendan(c);
+       c->control->close(c->handle);
+       c->handle = NULL;
+       nesbuffer_free(&rom, 0);
+       return ret;
+}
diff --git a/client/tag/0.6.2/anago/script_program.h b/client/tag/0.6.2/anago/script_program.h
new file mode 100644 (file)
index 0000000..4767820
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef _SCRIPT_PROGRAM_H_
+#define _SCRIPT_PROGRAM_H_
+struct program_config{
+       const wgChar *script;
+       const wgChar *target;
+       const struct reader_handle *handle;
+       const struct reader_control *control;
+       struct flash_memory_driver{
+               const struct reader_memory_access *access;
+               struct flash_device flash;
+               struct memory memory;
+               struct {
+                       long address, length, count, offset;
+               }programming, compare;
+               bool command_change;
+               long c000x, c2aaa, c5555;
+               struct gauge gauge;
+       }cpu, ppu;
+       long mappernum;
+       enum vram_mirroring vram_mirroring;
+       bool compare;
+       struct textcontrol log;
+       void (*except)(const wgChar *str);
+};
+bool script_program_execute(struct program_config *c);
+#endif
diff --git a/client/tag/0.6.2/anago/squirrel_wrap.c b/client/tag/0.6.2/anago/squirrel_wrap.c
new file mode 100644 (file)
index 0000000..bfe72c0
--- /dev/null
@@ -0,0 +1,133 @@
+#include <assert.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <squirrel.h>
+#include <sqstdio.h>
+#include <sqstdaux.h>
+#include "type.h"
+#include "widget.h"
+
+#ifdef SQUNICODE 
+#define scvprintf vwprintf 
+#else 
+#define scvprintf vprintf 
+#endif 
+static void print_stdout(HSQUIRRELVM v, const SQChar *s, ...) 
+{
+       va_list arglist;
+       va_start(arglist, s);
+       scvprintf(s, arglist);
+       va_end(arglist);
+}
+
+static void print_other(HSQUIRRELVM v, const SQChar *s, ...)
+{
+       va_list arglist;
+       const struct textcontrol *p = (const struct textcontrol *) sq_getforeignptr(v);
+       va_start(arglist, s);
+
+       p->append_va(p->object, s, arglist);
+       va_end(arglist);
+}
+
+HSQUIRRELVM qr_open(const struct textcontrol *p)
+{
+       HSQUIRRELVM v = sq_open(0x400);
+       if(p == NULL){
+               sq_setprintfunc(v, print_stdout);
+       }else{
+               sq_setforeignptr(v, (SQUserPointer) p);
+               sq_setprintfunc(v, print_other);
+       }
+       sq_pushroottable(v);
+       sqstd_seterrorhandlers(v);
+       sqstd_register_iolib(v);
+       return v;
+}
+
+//SQInteger 
+void qr_function_register_global(HSQUIRRELVM v, const SQChar *name, SQFUNCTION f)
+{
+       sq_pushroottable(v);
+       sq_pushstring(v, name, -1);
+       sq_newclosure(v, f, 0);
+       sq_createslot(v, -3); 
+       sq_pop(v, 1);
+}
+
+SQRESULT qr_call(HSQUIRRELVM v, const SQChar *functionname, SQUserPointer up, const SQChar *scriptfile, int argnum, ...)
+{
+       SQRESULT r = SQ_ERROR;
+       SQInteger top = sq_gettop(v);
+       sq_pushroottable(v);
+       sq_pushstring(v, functionname, -1);
+       if(SQ_SUCCEEDED(sq_get(v,-2))){
+               va_list ap;
+               int i;
+               
+               sq_pushroottable(v);
+               sq_pushuserpointer(v, up);
+               sq_pushstring(v, scriptfile, -1);
+               va_start(ap, argnum);
+               for(i = 0; i < argnum; i++){
+                       sq_pushinteger(v, va_arg(ap, long));
+               }
+               r = sq_call(v, 3 + argnum, SQFalse, SQTrue); //calls the function 
+               va_end(ap);
+       }
+       sq_settop(v, top); //restores the original stack size
+       return r;
+}
+
+void qr_close(HSQUIRRELVM v)
+{
+       sq_pop(v, 1);
+       sq_close(v); 
+}
+
+bool qr_long_get(HSQUIRRELVM v, SQInteger index, long *d)
+{
+       if(sq_gettype(v, index) != OT_INTEGER){
+               return false;
+       }
+       SQInteger i;
+       if(SQ_FAILED(sq_getinteger(v, index, &i))){
+               return false;
+       }
+       *d = (long) i;
+       return true;
+}
+
+SQRESULT qr_argument_get(HSQUIRRELVM v, SQInteger num, ...)
+{
+       va_list ap;
+       if(sq_gettop(v) != (num + 2)){ //roottable, up, arguments...
+               return sq_throwerror(v, _SC("argument number error"));
+       }
+       va_start(ap, num);
+       SQInteger i;
+       for(i = 0; i < num; i++){
+               if(qr_long_get(v, i + 3, va_arg(ap, long *)) == false){
+                       return sq_throwerror(v, _SC("argument type error"));
+               }
+       }
+       return SQ_OK;
+}
+
+SQRESULT qr_userpointer_get(HSQUIRRELVM v, SQUserPointer *up)
+{
+       SQRESULT r;
+       assert(sq_gettype(v, 2) == OT_USERPOINTER);
+       r = sq_getuserpointer(v, 2, up);
+       if(SQ_FAILED(r)){
+               return sq_throwerror(v, _SC("1st argument must be d (userpointer)"));
+       }
+       return r;
+}
+
+void qr_version_print(const struct textcontrol *l)
+{
+       l->append(l->object, SQUIRREL_VERSION _SC(" "));
+       l->append(l->object, SQUIRREL_COPYRIGHT _SC("\n"));
+}
diff --git a/client/tag/0.6.2/anago/squirrel_wrap.h b/client/tag/0.6.2/anago/squirrel_wrap.h
new file mode 100644 (file)
index 0000000..7c47a4a
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _SQUIRREL_WRAP_H_
+#define _SQUIRREL_WRAP_H_
+struct textcontrol;
+HSQUIRRELVM qr_open(struct textcontrol *p);
+void qr_function_register_global(HSQUIRRELVM v, const wgChar *name, SQFUNCTION f);
+bool qr_long_get(HSQUIRRELVM v, SQInteger index, long *d);
+SQRESULT qr_call(HSQUIRRELVM v, const SQChar *functionname, SQUserPointer up, const SQChar *scriptfile, int argnum, ...);
+void qr_close(HSQUIRRELVM v);
+SQRESULT qr_argument_get(HSQUIRRELVM v, SQInteger num, ...);
+SQRESULT qr_userpointer_get(HSQUIRRELVM v, SQUserPointer *up);
+#endif
diff --git a/client/tag/0.6.2/anago/taiyo.xpm b/client/tag/0.6.2/anago/taiyo.xpm
new file mode 100644 (file)
index 0000000..4581b2f
--- /dev/null
@@ -0,0 +1,384 @@
+/* XPM */
+static const char *taiyo[] = {
+/* columns rows colors chars-per-pixel */
+"122 122 256 2",
+"   c #2DBE34B25818",
+".  c #330138CE5875",
+"X  c #29BC2E4E5B6E",
+"o  c #09410BBD6C7E",
+"O  c #0C99116F68F8",
+"+  c #158E18AF68A4",
+"@  c #02CB034875BC",
+"#  c #0AAA0BBA741E",
+"$  c #014801627D93",
+"%  c #088F067C7CD7",
+"&  c #06AC08A07C31",
+"*  c #0ABD0AF77D72",
+"=  c #0803071A75EA",
+"-  c #10470EA17E34",
+";  c #10480F39775A",
+":  c #0E0411A07862",
+">  c #124B12A27DC0",
+",  c #1A751B187D93",
+"<  c #149716D7742B",
+"1  c #1D6322736441",
+"2  c #1DEF22187992",
+"3  c #25B028A865AC",
+"4  c #26F9299F759E",
+"5  c #35A53A116CFF",
+"6  c #3D2243C557E2",
+"7  c #4316485B5947",
+"8  c #50CC574C51B0",
+"9  c #5C526399544B",
+"0  c #6D1773964B13",
+"q  c #75217C7948E5",
+"w  c #64676C525477",
+"e  c #6BB0733D51BE",
+"r  c #48E84D8C640F",
+"t  c #605B67756911",
+"y  c #78C981B93B75",
+"u  c #7A5683B14B1C",
+"i  c #7CA984F0513A",
+"p  c #94529C093838",
+"a  c #8B8792523A35",
+"s  c #9AF1A3843890",
+"d  c #AA8DB36D3671",
+"f  c #AE75B4A5336D",
+"g  c #BBAFC35F31A7",
+"h  c #DE44E4171B1B",
+"j  c #FE3CFDDA035B",
+"k  c #FD5FFD310A40",
+"l  c #F73CFD0709BC",
+"z  c #E820EDDF1C40",
+"x  c #ED8CF3C11956",
+"c  c #F62BF85D14C5",
+"v  c #C4DFCB922ABA",
+"b  c #CD18D4362916",
+"n  c #C36AC85436D3",
+"m  c #D317D995293B",
+"M  c #DE14E3EA2662",
+"N  c #E3AEE60B236C",
+"B  c #D201D75A1C22",
+"V  c #8BA7939B4417",
+"C  c #938C9C1045B9",
+"Z  c #843D8A1F4150",
+"A  c #A8BCB2474814",
+"S  c #BF3BC6FA49DC",
+"D  c #0051005483D9",
+"F  c #0685085682A3",
+"G  c #0B910B728350",
+"H  c #00820076898D",
+"J  c #0C000B268A21",
+"K  c #075E078B84D5",
+"L  c #105B0E248425",
+"P  c #10270DD888A3",
+"I  c #0E8510E986C9",
+"U  c #13C513C183A5",
+"Y  c #1928168C844D",
+"T  c #16C618A884DF",
+"R  c #1AFA1AF18542",
+"E  c #13F214378A5F",
+"W  c #1BF61BAC8A31",
+"Q  c #182716E48A9A",
+"!  c #1A921AC992EE",
+"~  c #208E1EE488DB",
+"^  c #1D90205C8866",
+"/  c #1C6E22B79182",
+"(  c #239823BB85FE",
+")  c #2A302A868606",
+"_  c #23BB23A68BF6",
+"`  c #25F828B88CD6",
+"'  c #2B582B8C8CC5",
+"]  c #287E26D889E3",
+"[  c #30D42EF88ABE",
+"{  c #2E4630788B92",
+"}  c #32B633228CFB",
+"|  c #3975396B8D51",
+" . c #24CA24419278",
+".. c #2C5B2CA2930D",
+"X. c #255128189611",
+"o. c #30642F47936F",
+"O. c #2CED31729555",
+"+. c #33DA33E293E6",
+"@. c #3B713B73953B",
+"#. c #3C6F3C179A7B",
+"$. c #366736739824",
+"%. c #3A0A3AB8A34A",
+"&. c #40633E449B74",
+"*. c #3F1540FC9631",
+"=. c #3EFD405399F4",
+"-. c #3F9441E0900F",
+";. c #3B5B463BA529",
+":. c #43B943E49604",
+">. c #4432446A9B9D",
+",. c #4B8F4BCA9CC9",
+"<. c #4754496B98BB",
+"1. c #509F4F229DB8",
+"2. c #530353499E2C",
+"3. c #568F587E9E1B",
+"4. c #4B144DC2997A",
+"5. c #60715F3C9B9C",
+"6. c #4BE74BF2A243",
+"7. c #464D46FDA547",
+"8. c #4C555277A72F",
+"9. c #544A5491A3C4",
+"0. c #56C55973A3BE",
+"q. c #5AB95B25A4A7",
+"w. c #53F15458AB8D",
+"e. c #5C185C7CAA7C",
+"r. c #572F5886A942",
+"t. c #59985B52B25C",
+"y. c #508F4F41A64B",
+"u. c #60915F18A8D8",
+"i. c #60A25EF0B07A",
+"p. c #5EE060FAA804",
+"a. c #5B2D6AFABA1F",
+"s. c #62276369A5F4",
+"d. c #642F6462AB6F",
+"f. c #6AC26B9EAC8B",
+"g. c #687E69EFAA3B",
+"h. c #6EE97190AD7A",
+"j. c #72DA7387ADAE",
+"k. c #7DAC7DCCAFF5",
+"l. c #6C876D93B2E1",
+"z. c #65B466ACB4D0",
+"x. c #6CAD725FB607",
+"c. c #73CA7460B411",
+"v. c #7AE27BB0B531",
+"b. c #748F7558BB83",
+"n. c #7CC37D31BACC",
+"m. c #76DE795DB6FD",
+"M. c #71206F4EB156",
+"N. c #7B267C1FC454",
+"B. c #69387AB0C9ED",
+"V. c #80EA7FFFBB2D",
+"C. c #7EEE8152B998",
+"Z. c #74948860CD19",
+"A. c #78198F21D09C",
+"S. c #83CA8491BC65",
+"D. c #865288B9BD12",
+"F. c #8B168C32BD94",
+"G. c #8440852FB7C3",
+"H. c #8DBB9139BD68",
+"J. c #959A964FBCD2",
+"K. c #848E8532C24F",
+"L. c #8CC98DC6C2E8",
+"P. c #88518967C8EC",
+"I. c #8E1C91D3C343",
+"U. c #8EE494BACA89",
+"Y. c #93A59488C4F7",
+"T. c #96A198EAC5A2",
+"R. c #9B0E9C72C62E",
+"E. c #94A19547C9FD",
+"W. c #9BE29D13CAFE",
+"Q. c #985A98BCC8C1",
+"!. c #9AC79D89D294",
+"~. c #8E5194FAD00B",
+"^. c #A17C9F5ECBB8",
+"/. c #9EA8A140CC7A",
+"(. c #8CF2A3A8DAA9",
+"). c #A395A48BCCFA",
+"_. c #AAF1AC43CE42",
+"`. c #A563A72ECA7B",
+"'. c #A3ABA4BED258",
+"]. c #ABCFAD23D3BF",
+"[. c #A8E0AA9CD5E6",
+"{. c #AE6BB192D42B",
+"}. c #AC9DB45BDBB1",
+"|. c #B2DFB3C9D586",
+" X c #B742B9C7D5CC",
+".X c #BA37BB86D6B0",
+"XX c #B3C6B541DA3E",
+"oX c #B652B9C9DAE4",
+"OX c #BBC1BCF7DBB9",
+"+X c #B18AB425CEA8",
+"@X c #99CFB882EA68",
+"#X c #9227AE44E747",
+"$X c #BC86BD46E1B1",
+"%X c #A300BCA4EBE7",
+"&X c #C0D1BF8EDB45",
+"*X c #C0AFBECDE1C9",
+"=X c #BF40C1FADD52",
+"-X c #BE28C111D725",
+";X c #BABBC5C9E5F2",
+":X c #A547CE12F5A3",
+">X c #AB43CF6BF511",
+",X c #A409CD8FF9A5",
+"<X c #A598CA45F710",
+"1X c #A515D140F4EA",
+"2X c #AC95D1E7F422",
+"3X c #AA85D13FF8F8",
+"4X c #B2DCD2FDF390",
+"5X c #BAEFD88BF488",
+"6X c #ADBECF72F03A",
+"7X c #9F6DC318F1E9",
+"8X c #C371C4B2DE27",
+"9X c #C976CB37DE76",
+"0X c #C455C4FBE24E",
+"qX c #C72DCA4EE346",
+"wX c #CBEECD31E49A",
+"eX c #CC1ACB88E5F1",
+"rX c #D153CFA8E64F",
+"tX c #CEB6D1E8E58F",
+"yX c #CCE0D3EAEAB8",
+"uX c #D2B9D3F5E66D",
+"iX c #D41BD58DEA20",
+"pX c #D6C6D9B5EBAB",
+"aX c #DB99DCD2EC86",
+"sX c #D7E4D986E7EC",
+"dX c #C43DDD0FF4B1",
+"fX c #C94ADECEF5BB",
+"gX c #DD12DE67F18C",
+"hX c #D84DDDACF142",
+"jX c #E0ECDFE2EFA1",
+"kX c #DE8EE1B3EDCF",
+"lX c #CD34E2EDF53B",
+"zX c #CB82E3DBF920",
+"xX c #DD8FE46AF2C4",
+"cX c #D6D3E9F2F7EE",
+"vX c #D6E8E974F9F2",
+"bX c #DB90EBA3F976",
+"nX c #D8D6E81EF7BB",
+"mX c #E34EE477EEB4",
+"MX c #E823EA07EE79",
+"NX c #E3E3E56CF25B",
+"BX c #E972E745F34F",
+"VX c #E66DEA73F38F",
+"CX c #EBC6ECE3F4C5",
+"ZX c #EAE2EF40F9A0",
+"AX c #EEEAF22BF684",
+"SX c #E517F244FB57",
+"DX c #EDB9F368FA3B",
+"FX c #EF5AF8EDFD25",
+"GX c #F34DF45BF6D1",
+"HX c #F687FA06F6F5",
+"JX c #FD3AFDF4F747",
+"KX c #F4C0F5E1FA94",
+"LX c #F63BFA6CFBFD",
+"PX c #FFFFFFFFFFFF",
+"IX c #F910F7A1FA8F",
+"UX c #F0F7EF29F669",
+/* pixels */
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXPXPXPXPXGXVXhX0X/.H.H.D.S.F.F.S.G.F.H.T. XpXVXVXLXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXKXkX8XY.D.q.#...T G F & % F $ % F & F % * U ' $.:.h.L.[.sXVXLXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXVX0XK.p.} U % D $ $ $ $ D F K J T R W E E L F $ D D D D D D I _ :.c./.sXDXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXKXHXPXPXPXPXPXPXPXPXJXIXPXVXOXv.#.R % $ $ D F R ..,.l.S.W.[.}.OXqXwXuX9X8XoX[.E.S.c.e.#. .J D $ D $ J _ 0./.VXLXPXPXJXPXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXKXrXK.,.U D D D *  .6.S.'.qXkXCXHXIXPXPXJXJXPXPXPXPXJXPXPXJXJXIXKXNXuXoXE.f.:.R F D $ K 7.b.$XZXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXPXUX}.i. .F $ $ U >.n.|.pXCXPXJXPXPXPXPXPXJXPXPXPXPXPXPXJXPXPXPXJXPXPXPXPXPXJXPXLXNX8XE.q.R F $ D T 6.!.gXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXPXPXNX).,.U D D * #.C..XMXJXPXPXPXPXPXPXPXPXPXPXPXJXJXPXJXPXPXPXJXJXPXJXJXPXPXPXPXPXPXPXJXPXPXZX8XI.,.U $ D G %.E.aXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXCX[.>.G $ @ R e.`.mXLXPXJXJXJXPXPXPXPXIXPXPXJXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXCXoXc.] % D F @.W.VXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXGX Xy.J $ $ _ c..XKXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXJXPXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXtXU.@.& D * 0.[.CXJXPXIXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXPXsXM., $ F ] c.eXIXPXPXPXIXGXmXuX*X'.P.P.P.P.!.}.eXpXNXDXIXJXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXaXI.+.& D J w.0XGXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXCXW.$.D $ Q M.wXLXPXPXUXaXXXN.w...~ U G H H H H H L Q _ +.t.N.[.iXKXPXPXPXPXJXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXJXkXK.] % D ! N.NXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXuXd.J @ G 0.OXHXJXJXaX/.d.) * D D D D D H D D D H $ $ D D D D D J _ r.U.yXGXJXPXHXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXtXs.U D K 7.$XKXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXUX`.} $ $ ] W.CXPXHXrXn.o.K D D D D D D D D D H D D D D D D D D $ D D R ,.J X.z.XXAXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXGX].>.$ $ ! P.CXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXZXv.U $ * u.wXPXPXtXm._ F D D D D H D D H D D D D D D D D H D D D D D $ f.uX@.$ H Q ,.'.ZXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXaXj.- D K d.gXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXaXd.F @ ^ L.BXPXZXR.' D $ D D D D D D D D D D D D D D D D D D D D D D D R .XPX_.T D D D Q z.0XKXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXGX/...D F 8.iXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXeX>.$ $ | |.IXPXsXs.; $ H D D D D D D D D D D D D D D D D H D D D D H D $ 9.AXPXUXs.$ D D H H ] L.CXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLX8X7.K H %.=XPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXOX#.$ F w.uXPXIXOX#.$ D D D D D D D H D D D D D D D D D D D D D D $ D D D D ,.NXPXPXeX] D D $ D D J d.iXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXaXp.G D ' OXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIX X' $ * g.xXPXHX_.] D D D D $ D D H D D D D D H D D D D D D D D D H D $ U ] @ F K.LXJXPXY.G D D D D D D >.=XPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXMXv.- $ ..[.KXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXOX' D L n.ZXPXKX!.W $ D D D D D D D D D D D D D D D D D D D D D D D D $ [ /.uXs.% _ =XPXPXBX1.$ D D D D D D +.OXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXAXC.U D ! !.LXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXOX' $ U D.UXJXKXY.U $ D D D D D D D D D D D D H D D D D D D D D D D D D &.9XPXJXVXc.& 0.NXPXPXOXR $ D D D D D $ +.;XJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXAXL.Q D _ |.IXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXJXqX+.$ L L.GXJXIX'.R $ D D D D D D D D D D D D D D D D D H D D D % $ $ D D w.DXJXJXPXBXv.~ Y.IXPXLXV.% D D D D D D D &.iXPXJXPXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXGXI.E D ..$XPXPXJXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXJXJXPXiX:.D G V.KXPXJXOX] $ D D D D D D D D D D D D H D D D D $ F ~ <.j.L.@.D D D Q oXPXPXPXJXUXF.&.eXJXPXaX&.$ D D D D D D $ e.BXPXJXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXDXS.L D %.qXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXJXJXNX9.D % x.CXJXPXiX#.$ H D D D D D D D D D D D D D D D D D ,.'.eXCXIXLXsX3.% D $ e.ZXLXJXPXPXHX).G.CXPXPX).> D D D D D D D G F.PXPXJXPXPXPXJXPXPXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXUXj.@ D 7.gXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXJXZXc.F $ q.mXJXJXCXf.D D D D D D D D D D D D D H D D D D D D $.XXLXPXPXPXPXmXc.U $ E |.PXPXPXPXIXHX.X9XJXJXUXg.D D D D D D D D g.NXoX'.!.!.}.OXqXuXaXZXLXIXPXPXPXPXPXPXPXPXPXPXPXPXPXLXPXNXq.% F M.UXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXJXJXLXI.* $ <.aXPXPXLXJ.U D $ $ D D D D D D D D D D D D H D D D H D W E.GXPXJXPXPXGXW.] $ 9.ZXPXJXJXJXPXJXUXPXJXPXrXo.$ D $ D $ D G _.H.Y J H G P Q R ( ..%.r.x.P.}.rXxXLXPXJXPXLXPXPXPXPXPXPXPXaX,.$ L E.IXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXLXOX] D ' 9XPXJXPXiX} D D D D D D D D D D H D H D D D D D D D D D D U m.NXPXJXPXPXIX=X,.Y _.PXPXPXJXPXIXPXPXPXPXIXQ.J D D H D D o.9X:.$ D D D D D D D D D $ $ D J ! %.t.K.$XVXPXPXJXPXPXPXPXPXLXwX+.$  .$XLXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXaX&.$ U ).IXJXPXKXv.$ D D D D D D D D H D D D D D H D D D D D D D H H K w.pXJXPXPXJXPXaXg.5.BXPXPXJXBXUXPXJXPXPXPXNX0.$ H D D $ f.XXU D D D D D D D D D D D D D D D D $ D ! 7.Y.NXPXPXPXPXPXPXPXPX[.R D %.pXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXKXc.D % m.KXPXPXPXqX( D D D $ D D D D D D D D D D D D D H D D D D $ D D H H >.OXIXPXLXPXPXMX^.9XPXJXJX&XF.NXPXJXPXPXPXqX] D D D U {.j.D D D D D D H D D $ D D H D D D D D D D H J q.gXPXPXPXPXJXJXPXGXV.% H N.GXPXJXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPX_.T $ ,.NXPXPXPXKXc.$ D D D D D D D D D D H D D D D H D D H D D D D D D D D D  .'.KXPXJXPXPXHXCXPXJXJXBX4.q.iXPXPXPXPXJXL.% D $ ,.8Xo.D D D D H D D D D D D D $ $ D D D H D $ D H % R.PXPXPXPXPXPXPXPXMX,.$ Q }.PXJXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXNX*.$ ^ OXPXPXJXPXsX..$ D D D D D D H D D D D D D D D D D D D D D D D D D D D D D Y D.BXPXPXIXPXPXPXPXIXJXY.% &.OXLXPXPXPXMX<.$ @ T.Y.% D D D D D D D D D D D $ D H D D D D D D D $ $ v.PXLXPXPXPXPXPXPXPXOX~ D 7.mXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXJXLXD.& F v.KXPXJXPXJXT.F D D D D D D D D D D D D D D D D D D H D D H D D D D D D D D $ G z.jXPXJXPXPXPXPXPXPXpX[ $ X.!.KXPXJXLX[.L +.8X<.D D D D D D D D D D D D D D D D D D D D D D D $ S.PXPXPXPXPXPXPXPXPXLXc.$ K P.IXPXPXPXPXPXPXPX",
+"PXPXPXPXPXJXPXuX) $ >.kXPXJXPXPXGX0.$ $ D D D D H D D D D H D D D H D D D D D D D D D D D D D D D D D F y.eXPXPXPXJXPXPXPXJXV.$ D Q G.NXaXE.:.* H.W.- D D D H D D D D D D D D D D D D D D D D D H D * ).PXPXPXPXPXPXPXPXJXPXaX+.$ ..yXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXKXc.F L ).JXJXPXPXPXsX_ D D D D D H D D D D H D D D D D D H D D D D H D D D D D D D D D D H D +.XXIXPXJXPXPXPXPXeX, $ D K 7...F D +.0X,.$ D D D D D D D D D H D D D D D D D D D D $ D D +.aXPXPXPXPXPXPXPXPXPXPXPXW.J D n.LXPXJXPXPXPXPX",
+"PXPXPXPXPXPXqX~ $ 6.VXPXPXPXJXPX).* D D D D D D H D D D D D D D D D D D D D D D D D D D D H H D D D D D D D _ !.GXPXIXPXPXPXGXu.D $ D D $ D K H.`.> D D D D D D D D D D D D D D D D D H D D D $ $ * Y.PXPXPXPXPXPXPXPXPXPXPXJXNX>.$  .rXPXJXPXPXPXPX",
+"PXPXPXPXPXIXx.$ U {.JXPXPXJXJXLXm.$ D D D D D D D D H D D D D D D H D D D D H D D D D H D D D D D D D D $ D D Q Z.BXPXJXPXPXPX|.U $ D D D $ >.wX6.$ F D H D D D D D H D D D D H D D D D H D D D D q.BXPXPXPXPXPXPXPXPXPXPXPXJXPX_.U D n.IXPXJXPXPXPX",
+"PXPXPXPXPXqX( $ e.UXPXPXPXPXPXBX>.$ D D D H D D D D D D D D H D D D D D D D D D D D D D D D D D D D D D D D D D G z.aXPXJXPXJXVX7.$ D D D * `.W.G D D D D D D D D D D D D D D D D D D D D D D $ } eXPXPXPXPXPXPXPXPXPXPXPXPXPXPXCX,.$ X.yXPXPXPXPXPX",
+"PXPXPXPXLXn.$ L XXPXPXPXPXPXPXkX' D D D D D D D D H D D D D D D H D D D H D D D D D D D D D D D D D D D D D D D D F 7.0XIXPXPXMX>.$ D D D u.rX@.$ D D D D D H D D D D D D D D D D D D D $ D D _ XXIXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPX).G F K.IXPXPXPXPX",
+"PXPXPXPXsX] D ,.CXPXPXPXPXPXPXtXR D $ D D D H D D D D D D H D D D D D D D D D D H D D D D H D D D D D H D D D H D D D $.oXIXPX_.L D D $ _ 8XG.% D D H D D D D D D D D H H D D D D D D D D $ ~ ).JXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXVX:.$ $.NXPXPXPXPX",
+"PXPXPXPXQ.F K ^.PXPXPXPXPXPXPX XG D D D D D D D D D D D D D D D D D D D D D D H D D D D D D D D D D D D H D D D D D $ $ _ !.NXd.D D D % I.0X_ D H D D D D D D D D H D D D D D D D $ D D $ ] _.KXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXF.% J [.PXPXPXPX",
+"PXPXPXCX>.D @.mXPXPXPXPXPXPXPX_.F D $ D D H D D D H D D D D D H D D H D D D D D D D D H D D D D D D D D D D D D D D D D D Q t.W $ D $ 0.pXq.$ D D D D D H D D D D D D D D D D H D D D $ ) |.LXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXuX` $ u.KXPXPXPX",
+"PXPXPXOXT D v.IXPXPXPXPXPXPXPXY.D D D D D D D D D D D H D D D D D D D D D D D D D D D D D D D H D D D D D D D D D D D H H D D D $ $ o.qXR.* D D H D D D D H D D D D D D D D $ $ D D D | OXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXKXl.$  .wXPXPXPX",
+"PXPXJXj.$ R =XPXPXPXPXPXPXPXPXL.$ D D D D D D D D D D D D D D D D H D D D D D H D D H D D D D D D D D H H D D D D D D D D D D D $ U ).qX) D D D D D D D D D D D D D D D D D D D D F 3.wXJXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXPXPXPXPX|.G F L.LXPXPX",
+"PXIXNX:.D ,.ZXPXPXPXPXPXPXPXPXW.@ D D D D D D D H D D D D H D D D D D D H D D D D D D D D H D D H D D D D D D H D D D D D D D $ % n.sX2.$ H D $ D D D D D D D D D D D H $ $ D D R G.CXPXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXmX@.D 6.ZXPXPX",
+"JXPXOXU D F.PXPXPXPXPXPXPXPXPX].G D D D D D D H D D D D D D D D D D H D D D D D H D D D D D D D D D D D D D D D D H D D D D D D 0.aXn.= D D D D D D H D D D D D H D D D H D % $.{.IXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXGXeX'.Q.[.gXIXJXIXLXc.D ~ rXPXPX",
+"PXPXS.$ Y 8XPXJXPXPXPXPXPXPXPX0XU D D D D D D D D D D D D D D D D D D D D D D D D D D D H D D D D D D D D D D D D D D D D D $ @.tX).R D D D D D H D D D D D D D D D D D D U f.sXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXpXM.~ K $ L $.L.mXPXPX].* F W.PXPX",
+"PXZX8.$ #.CXJXPXPXPXPXPXPXPXPXsX .D D D D H D D D D D H D D D H H D D H D D H D D D D D D D $ $ H D D D $ D D D H D D D D D ' OXOX( $ D D D D D D D D D D D D D D D D $ | ).GXPXLXPXPXPXPXJXPXPXPXPXPXJXPXPXPXLXXX&.= X 9 a 0 X * z.NXPXsX' D i.KXPX",
+"PXsX..$ m.JXPXPXPXPXPXPXPXPXPXaX..D D H D D D D D D D D D H D D D D D D H D D D D D H D D D D & D $ @ F D D D $ H D D $ D W ].uX>.D D D D D D H D D H D D D D D D $ ( v.sXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXUXR.] o w v c k k n 8 * m.KXGX0.D ..mXPX",
+"PX).G % ).PXPXPXPXPXPXPXPXPXPXUX6.$ D D D D H D H D D D D D D D D D D D D D D D D D D D D D 4 r O 1 t 2 D D D D D D $ D ~ ).aX2.D D D D D D D D D D D D D $ D $ U d.8XKXJXHXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXNXc.: + Z z j j j j k b . Y 0XPXI.$ Q 0XPX",
+"PXS.D ( uXPXPXPXPXPXPXPXPXPXPXPXn.@ D D D D D D D D D D D D H D D D D D D D D D D D D D D D   n p d A 1 F D H D D $ D W /.jXe.F $ D D D D D D D D D D D D D F 9. XUXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXrX1.%   d c j j j j j j k q F K.PXoX> $ E.PX",
+"DXw.$ &.MXPXPXPXJXPXPXPXPXPXPXPX_.G D D D D D D D H D D D D D D D D D D D D D D D D D D D F + f k k s : D $ $ D $ $ W ^.NXz.F H D D D D D D D D D H D $ L G U {.PXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXJXIX|.| @ 7 v l j j l j j j j k C # 0.LXaX' $ c.IX",
+"mX+.@ f.LXPXPXPXJXPXPXPXPXPXJXPXaX .D D D D D D D D D D D D D D D D D D D H D D D D D D D O q z j j z u + H D D D R ).BXc.F D D D D D D D D D D $ $ Q 3.).d.% J.PXPXJXPXPXPXPXJXPXPXPXPXPXPXPXPXJXIX)._ # 0 m j j j j j j j l j k C o 2.KXZX,.$ &.MX",
+"8X_ $ L.PXPXPXPXPXPXPXPXPXPXJXPXGXq.$ D D D D H D D H D D D H D D D D D D D H D D D D $ $ 4 u a h N a w 4 D D D _ ).NXj.% D $ D D D D D D D $ % ] c.&XAXPXJ.= n.GXKXJXPXPXPXPXPXPXPXPXPXPXPXJXPXBXF.U 1 V z j j j j k j j j j j x 9 @ D.PXIXv.$ +.kX",
+"Y.* J _.PXPXPXPXPXPXPXPXPXPXPXPXPXR.F D D D D D D D D D H D D D D H D D $ & # $ D D $ D H K $ # V C O $ D D % } oXjXd.G D D H D D D $ D D Q 6.Q.uXHXPXJXPX.X> W 7.b.8XIXJXPXPXJXPXJXPXPXJXPXPXaXg.*   d c j j j j j j j j j j c s < ( 0XJXPXF.$ Q 8X",
+"Y.F W eXPXPXPXPXPXPXPXPXPXPXPXPXPXaX..D D H D D D D D D D D D D D D D D D 4 i 3 O 7 4 $ D D $ $ r r $ D $ D >.wXrX1.% D D D D D D D R ,.D.9XCXJXPXJXPXPXPXaX9.&.o.G ] _.IXJXPXPXPXPXPXJXPXPXOX-.= 7 v c j j l j j j j j j k m q + * L.LXPXPX`.% * R.",
+"m.$ ] sXPXPXPXPXPXPXPXPXPXPXPXPXPXLXn.$ D D D D H D D D D D D H D D D D $ + v f s S 3 D D D D D F # D D * g.aXeX>.$ D D D $ * ' q.T.qXBXJXPXPXJXPXPXJXJXJXJXBXCXkXY.^ ) qXPXPXPXPXPXPXJXKX).) O 0 h j j j j k j j j j k N V . o R Y.CXPXPXPXeX, $ L.",
+"q.$ +.MXPXPXPXPXPXPXPXPXPXPXPXJXPXPX9X( D D D D D D D D D D D D D D D D o 6 b j j s o D H D D D D D D Y D.BX_.[ D K U ' 2.G.oXaXGXPXPXIXPXPXPXPXPXJXPXJXJXPXPXJXJXHX).> c.IXJXJXPXPXPXUXG.: 1 V z j j j j j j j j j x s 7 o L 0..XJXJXPXPXPXpX( F D.",
+":.$ :.ZXPXPXPXPXPXPXPXPXPXPXPXPXJXJXKXx.D $ D H $ D D D $ $ D D H D D @ 8 g N k j B 7 % $ D D $ D $ } _.GX X5.2.j.).&XuXeXXX[.oXaXHXPXPXJXPXPXPXPXPXPXPXPXPXPXLXPXJXVX>.} mXJXPXPXPXsXs.# . d c j j j j j j j j c f 8 O % <._.AXPXPXPXPXPXPXkX( $ s.",
+"] $ u.LXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXwX' $ D D $ D H & r 2 $ @ # D D F 4 6 y x g p e U H $ D $ G u.rXIXHXmXMXGXIXJXiXc.o.P F > ..m.pXPXJXPXJXPXPXPXPXPXPXPXPXPXPXPXPXx., wXPXPXHX=X:.o 8 b k j j j j j j j c v 0 1 & @.Y.VXPXPXPXPXPXPXPXPXmX} $ 0.",
+"] $ f.PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXL.K D D D D F @ u C . 9 w * D D D D . n 7 @ F $ $ D D ` F.CXJXPXJXPXPXJXPX.X@.$ D D D Y +.U :.qXPXPXJXJXPXPXPXPXPXPXPXJXPXPXIXf., tXPXGX/.( O u N j j j j j j k k B i 3 = o.F.aXJXJXPXPXPXPXPXPXPXPXMX:.D #.",
+"] $ x.PXPXPXPXPXPXPXPXPXPXPXJXJXJXkXMXPXMX6.D D H D $ o u x h M 9 H D D D H > t : D $ $ $ K q.8XHXPXPXJXPXPXPXPXaX| $ D $ D H p.xXT.R :.mXPXPXPXPXPXPXPXPXPXPXPXJXJXaX| } mXBXS., 1 p x j j j j j j k M a . = ] G.sXJXPXPXPXPXPXPXPXPXPXPXPXCX:.D ' ",
+"( $ m.JXPXPXPXPXPXPXPXPXPXPXPXGX[.:.+XPXPXOX_ $ D D 2 0 B l j B X $ $ $ D D % % $ D $ D +.T.BXPXPXJXPXPXPXPXJXJXF.@ $ D H D D +.rXKXd.% E.JXPXPXPXPXPXPXPXPXPXPXPXaXM.= v.iXp.# 6 g l j j j j k j z d 7 o R f.wXIXJXPXPXPXPXPXPXPXPXPXPXPXPXGX,.D ' ",
+"] $ x.PXPXPXPXPXPXPXJXPXPXPXsXl.U @ J.PXPXIXY.G D F 5 u g x l z V < $ D D D D D D @ ~ v.uXPXPXPXPXPXPXPXPXJXPXBX:.$ O.L D $ D H 7.$Xt.$ q.GXPXPXPXPXPXPXPXwXW.).n.&.L y.).:.# 8 m j l j j j k c g 9 O U q.OXKXJXLXqX{.$X0XpXZXKXKXPXPXPXPXJXGX3.D o.",
+"] $ M.PXPXPXPXPXPXPXPXPXUX[.@.@ D % F.PXPXPXAXc.% D $ $   m d 9 w 4 D D D D D $ U u.8XHXPXPXPXPXPXPXPXPXPXPXPXNXO.D v.#.D D D D D U K $ @.MXPXPXPXPXPXPXLXc.% : * ' c.G.) O q z j j j j j c v 0 + # <.[.ZXPXPXKXW._ G P Q _ #.w.z.N.E.{.jXJXUX:.$ o.",
+"` $ f.HXJXPXPXJXPXPXIXuXg.U $ D $ Y `.PXPXPXPXNXp.% H D O A 6 $ $ K D H D D > 3.{.CXJXJXJXPXPXPXPXPXPXPXPXJXPXkX} % ).R.K D $ D D D D $ +.mXPXPXJXJXPXPXMX@.G C.XX9XF.> 1 p c j l j j k M a X o | E.mXPXPXJXJX8X( D D D D $ D D H D % P e.NXCX>.D ..",
+"] $ d.IXPXPXPXPXPXZXR.o.% D D $ :._.KXPXPXPXJXPXkXq.$ D % 5 > D H D $ D Q 3.].ZXPXJXPXPXPXPXPXPXPXPXPXPXPXJXPXBX:.@ D.CXu.@ H D D D D D ,.UXPXPXJXPXPXPX X> *.VXmXl.: . f c j j k k z s 6 o ' G.sXPXPXPXPXJXJXm.$ $ $ F $ @ $ D $ D D D F P.MX| D $.",
+"' $ <.GXLXIXBXsX8Xs.; @ D D Y j.sXPXPXJXPXPXPXPXPXaX0.% $ $ D D H D ( c.OXGXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXV.$ $.pXjXq.% D $ D D % v.JXPXPXPXPXPXKXg.= F.wX,.= 8 b l j l j x f 8 O ^ m.iXLXPXPXPXPXJXPXCX:.$ D :./.R.F.x.q.@.~ * $ $ 9.aX[ $ 9.",
+"7.$ *.mX`.q.#.] R @ D H $ o.[.KXPXPXPXJXPXJXPXPXPXPXsXu.* D D D $ :.&XHXPXPXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXJXPXwX] D 6.OX0Xl.P D D $ { tXPXPXPXPXJXPX8XY ..K.} + 0 z l j j c v w + , p.&XHXPXLXPXPXPXPXPXPXkX+.D F /.PXPXPXPXIXmX9Xq.$ D | 8X) D d.",
+"3.$ } pXs.$ H D D D H D $ +.K.0XBXIXPXPXPXPXPXPXJXPXJXCXm.U D @ 1.rXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXR.R $ Y %.%.J D D R ).IXPXPXJXPXJXCXu.$ _ ^ 1 p z j j c M u 3 * 9. XKXPXPXPXPXPXPXPXPXPXPXmX+.D $ x.aXBXLXIXIXPXJXH.% D } OX] F C.",
+"m.D _ uXV.@ D $ $ $ $ $ D D $ R >.n.oXCXPXPXPXPXPXJXJXPXCX9.$ 2.pXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXHX[.@.% $ $ @ * #._.GXPXJXPXPXPXLX_.> $ $   d c j k N C . # +.R.MXJXPXPXPXPXPXPXPXPXPXPXPXAX,.$ $ J O.7.t.z.Z.^.T.+.$ $ 1.OXY & I.",
+"I.% Q 8X X:.,.u.V.S.>.Y % $ D D D $ , |.PXPXPXPXPXPXJXPXBX} Y .XPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXHXaX).h.1.f.).aXJXJXJXPXPXPXPXuX+.D @ 8 v l l x d 8 < ..F.aXJXPXJXPXPXJXPXPXPXPXPXPXJXPXJXJ.* D D D $ $ H D % F D D $ G.^.F % R.",
+").G % ).IXCXGXKXIXJXCX0XL.2.~ % D D % E.PXPXPXPXPXPXPXPXuX, +.mXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXPXKXKXIXPXPXPXPXPXPXPXPXmX3.$ * 0 N k c n 9 + ^ c.uXJXJXPXJXPXPXPXPXPXPXPXPXPXPXPXPX8X).0.U F D D $ $ D D H D $ ' rXF.$ Q 8X",
+"iX' $ D.PXPXPXJXPXPXPXJXPXUXrXT.0._ % h.IXPXPXPXPXPXPXPXuXR ' kXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXPXPXHXBXaXeX}.'.!.!.Q./.q.= + a z c m u 3 < q.&XKXPXPXPXJXPXPXJXPXPXPXPXPXPXPXPXPXGXq.] '.XXD.d.d.6.+._ T U L ' _.GXl.$ +.aX",
+"NX@.D p.GXPXPXJXPXPXPXPXPXJXPXJXZX&XY.J.KXPXPXPXPXPXPXPXMX| * `.PXPXJXJXPXLX8X|.KXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXgXOXF.d.$.] R U G G G F H @ X d x M C . : ,.|.GXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXwX( $ ..$XPXIXHXGXVXpXyX8X XpXHXCX:.@ ,.BX",
+"IXd.$ | mXPXPXPXPXPXPXHXJXPXMX|.l.>.c.0XIXJXPXPXPXJXPXLXJXP.& o.OXJXPXPXPXqX@.Q L.CXJXPXPXJXPXPXPXPXPXPXPXPXPXPXLX XM.} U G ~ @.e.m.K./.).m.I F 7 n N d 6 < *./.NXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX_.> D D o.$XPXJXPXPXPXPXPXPXPXPXaX' @ b.IX",
+"PXL.$ W 0XPXPXPXJXPXPXGX0XP.&.> $ D D +.OXPXPXPXPXPXPXJXIXNXp.%  .m.|..XD.o.@ @ F z.pXPXPXJXPXPXPXPXPXPXPXPXPXPXpX4 = +.f.W.uXmXGXPXPXLX.X>.@ 5 S f 8 < } L.jXJXPXPXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXaXq.F D D +.OXJXPXPXPXPXPXPXPXPX XL $ E.PX",
+"PXOXU @ T.PXJXJXLXNX_.q.~ $ D D $ $ F D :.kXPXPXPXPXPXPXPXJXNXm.Y $ * U $ U h.S.R $ %.[.KXPXPXPXPXPXPXPXPXPXPXPXDX).].aXIXPXJXPXPXJXmXS.( K E + t 3 4 M.yXIXJXPXPXHXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXkX3.% H D $.0XJXPXPXPXPXPXPXPXH.D Q 9XPX",
+"PXkX$.$ s.KXHXZXE.&.U $ D $ $ $ W O.F D * T.PXPXPXPXPXPXPXPXJXKXOXS.9.6.l.|.AXKXXX:.= Q z.=XKXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXxXW.#.* @.W.T.L % q.8XGXJXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXaX0.$ F $ @.8XJXPXPXPXPXPXGX9.$ | NXPX",
+"PXLXz.$ +.mXJX`.> $ $ D D L >.D.8XiX0.$ D q.GXPXPXPXPXPXPXPXPXPXPXPXKXAXIXPXPXPXPXjXF.+.& ^ z.].VXHXPXPXPXPXPXPXPXPXPXPXJXAXwXI.:.* ] C.sXaXL.J , 9XPXJXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXJXPXPXPXPXiX>.D D D $.$XLXPXPXPXJXpX..$ g.IXPX",
+"PXJXY.% U  XKX2.$ D D ( f.].BXPXPXPXn.$ D } kXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXiXS.| * U #.b.[.rXNXVXZXCXBXNXsX|.P.w.( D % g.0XrXS.+.* ( V.CXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXIXMXOX).E.n.z...D D D D X.l.}.MXIXPX].F F E.PXPX",
+"PXPXwX~ $ v.BX&.$ $ @.&XIXPXPXIXNX).} $ $ ) sXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXHXPXPXPXaX).c.#.> G  .$.=.<.:.#.$.' > $ % ,.9.T b.l.] $ +.D.qXHXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXPXIXn.U D $ D D D H D $ H D $ E 7.).GXM.$ ~ wXPXPX",
+"PXLXUXq.D #.pX:.D $ h.PXPXAX8Xv.@.> F D $ ,.CXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXNXOXQ.#.D ] | #.,.d.m.b.Q L [.}.U F _ R > XXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXuX' $ D $ $ D $ D $ $ D $ D D $ c.pX$.$ 9.AXPXPX",
+"PXPXPXT.% U [.c.$ H ] /.Q.,.Q D $ $ D $ ~ E.W.+XLXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXJXPXPXLXd.$ J.UXZXCXLXJXKXg.@ X.] W - w.R u.ZXPXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXJXH.* F G U ~ ' +.<.f.S.m.$.U D * |._.* % I.JXPXPX",
+"PXJXPXwX^ $ g.|.> D H G F $ $ H D % _ d.I.0.# +.uXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXPXPXPXPXPXPXKXd.@ F.PXPXPXPXPXJXW.K D ,.XX#.$ Y .XJXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXBX`.I.W.].8XpXMXMXGXHXPXIXmX_.s.q.aXd.$ W wXPXPXPX",
+"PXPXPXGX0.$ ' qXs.$ D $ D D $ U :.I.eXR.{ F D $ f.GXPXJXPXPXPXPXPXPXPXPXPXPXJXPXPXPXPXPXPXPXPXPXPXPXJXG.$ 7.kXLXLXGXiXS.{ K F ^ {.n.% p.GXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXPXUXS.f.aXPXPXPXPXPXPXPXPXPXPXPXPXHXBX8X( $ q.GXPXPXPX",
+"PXPXPXPX_.G % D.sX9.F $ F ] g.oXVXyXl.U D D D L v.GXJXPXPXPXPXPXPXPXPXPXPXPXLXLXPXPXPXPXPXLXPXPXPXPXPXwX' F ,.Y.K.t. .> &.I.>.D W W F /.PXPXPXPXIXLXPXPXLXPXPXPXPXPXPXPXPXJXPXKXPXPXPXPXPXPXJXPX|., % :.}.GXPXPXJXPXPXPXPXPXPXPXPXPXG.$ U ).PXPXPXPX",
+"PXPXPXPXkX@.$ | MXMXT.d.Y.iXLXKX_.| @ D F H O.W.CXJXPXPXPXPXJXPXPXPXPXPXPXFXzXzXKXPXPXPXPXPXLXPXJXPXPXLX!./ $ F F G >.W.jXIXp.% >.p.s.9XPXPXJXLXnXdXDXJXPXPXPXPXPXPXPXPXJXPXAXdXbXPXPXPXPXPXJXmX,.$ D D E l.iXPXJXPXPXPXPXJXJXPXPXaX@.D #.kXPXPXPXPX",
+"PXPXPXPXIXY.% * ^.PXPXLXIXPXaXc.U D H H $ F w.L.U.E.{.AXJXJXPXPXPXPXPXJXLXfX:X1XlXHXPXJXPXJXJXPXJXPXLXbX2X(.O.H $ ^ q.g.g.m.+.L ].PXJXPXLXPXLXbX2X:X5XFXPXJXPXPXPXPXPXPXPXFXdX:X5XSXLXPXJXPXPXBXv., $ D $ D $.!.BXPXJXJXPXPXPXPXPXR.* $ K.JXPXPXPXPX",
+"PXPXPXPXPXmX@.$ &.kXPXJXGX[.@.& D D D D D $ D $ $ D Y ).PXPXPXPXPXPXLXSXdX:X:X:X:X5XSXLXPXPXPXPXLXSXlX6X,X,X8.% Y , , , , , > $ z.CXPXPXPXFXzX2X:X:X1X5XvXLXPXPXPXPXPXPXSXdX:X,X:X2XlXDXPXPXPXPXKXoX2.* D D $ U e.eXHXPXPXPXPXPXmX&.$ +.pXJXPXPXPXPX",
+"PXPXPXPXPXPXY.* F F.PXuXj., $ D D D D D D D H D $ D H ..qXPXPXAXVXzXdX2X:X:X:X:X:X:X6XdXcXbXSXvXzX2X:X1X1X#X/ #.OXeX9X8X9X9XXX@.F S.SXbXzX5X,X:X1X:X:X:X:X5XlXbXSXSXbXdX2X:X,X:X:X:X4XVXLXaXxXIXPXPXVXI.` D D D $ ] U.NXPXJXPXJXY.% @ L.PXPXPXPXPXPX",
+"PXPXPXPXPXPXaX$.D +.sX`.: $ $ $ ] 7.* $ D K ' $.#.@.} ) j.KXJXnX>X:X1X:X,X:X,X<X,X:X:X:X>X:X:X<X,X,X:X,X1XZ.$ 0.KXPXPXPXHXeXsX;X{ > A.,X,X,X,X:X:X:X:X,X:X:X:X:X2X2X:X:X:X,X1X<X:X1XbXJX8X#.#.D.wXKXPXLXqXp.P D D D J 9.OXKXJXpX} $ o.pXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXY.% $ V.jX9.$ G q.8XL.K D D 0.sXCXNXBXuXY.D.-XZXLXzX3X,X:X:X:X:X>X:X:X:X:X:X1X:X,X,X:X:X:X:XZ.& U n.eXZXHXaX&.1.NXOX] ^ A.:X:X:X:X<X:X:X:X:X:X:X:X:X:X:X:X:X,X:X:X2XvXLX8X@.$ $ $  .z.|.BXPXUXW.+.$ $ D $ W !.KXV.F % F.PXPXPXPXPXPXPX",
+"PXPXPXPXPXPXJXCX9.@ ~ ;X=X<.H.CXuX+.$ $ ~ OXPXJXPXZXv.Y J T 1.[.GXvX4X1X2X>X>X>X>X>X>X>X>X2X2X3X:X2X2X2X>X@X*.G F ^ :.G.MXm.% L.KXW.- O.#X2X2X>X2X>X>X>X:X2X2X1X3X:X2X>X2X2X6X4XcXJXZX<.$ D H D D $ U >.E.pXLXuXd.U D D U [.8X( $ @.aXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXJXJX|.Y $ w.BXBXJXCXd.$ D F m.HXJXJXAXC.# $ D D $ Q Y.KXDXSXSXSXSXSXSXSXSXSXSXSXSXZXZXSXSXSXVXSXyX8.$ _ j.8XpXw.$ _ OXDXm.% 9.lXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXLXwXtXq.D D D K $ $ D D F ..n.0XNX).#.= g.mXu.$ * ^.IXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXGXl.@ J Y.PXIX`.> $ $ $.sXPXPXKXH.U D D D F D D Q '.JXPXKXxXnXnXvXvXcXcXbXvXvXvXvXcXcXcXvXbX}.^ E [.LXtX,.$ G $ >.mXjX$.U U.cXvXnXcXbXvXcXvXbXcXcXnXbXvXxXDXPXDXT.] q.).R D $ #.S.:.: D D D D Q w.'.8XH.tXR.- $ q.CXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXiX' $ ] 8XZX4.D D G R.JXPXLXW.R D $ > b.S.( D D >.NXPXFXlX>X>X2X:X:X1X:X,X>X1X:X:X:X1X:X@X8.F I b.b...- 8.A.;.F l.oX+.D B.1X:X>X:X:X>X:X:X:X:X:X:X:X>XfXFXaXj.> $ * V.s.$ $ W oXBXK.* D D D $ D L :.wXwX+.D ~ 9XPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXW.U @ ,.NXF.K D 9.BXPXPX[.( D D U D.KXHXf.$ $ R =XGXAXLXbX4X:X:X:X:X:X:X:X:X:X:X:X1X@XI.x.I T X.E O.Z.:X:X@X;.U ^ F D 8.(.<X1X:X:X:X:X:X:X,X,X6X5XbXGX8X:.% D D > v.OX_ H D 3.iX0.F $ U _ F D % u.iXp.D F F.KXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXGXd.$ K n.hX1.Y .XPXJX|.] $ D * C.AXPXNX,.$ H U _.S.s.0XKXDXfX4X:X,X,X1X,X1X,X:X1X:XA.8XxX=.Z.@XA.,X,X,X:X1X@XA.B.! T C.C.a.#X7X:X:X,X:X:X:X6XlXLXAXE.] $ D D W Q.CXLXv.$ $ U $.F D U Y.yXI.>.q.pXD.* D q.VXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXuX@.$ E ).8XJ.GXJX&X..D D * f.MXPXGXv.G D D } T.W D _ H.IXLXSXlX4X:X,X,X:X:X,X>X,X8.q.C.=.@X1X1X,X:X1X:X,X,X,X,XZ.4.nX}.E / (.1X:X,X2X>XdXSXLXsXg.- D $ $ D >.VXPXPX9X) D H D D * F.GXJXPXNXVX{.R D ] 0XJXPXPXPXJXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXJXPX|.( D ..OXKXPXGXe.$ D $ s.NXPXGXG.> D $ R T.e.$ D @ S.KXPXHXLXVXlX4X1X:X,X1X,X%X$.D U Z.1X,X1X,X:X:X,X:X:X:X,X<Xx.f.>.D & A.1X1X>XlXVXLXJXmX4.$ D D D $ $ L Y.IXPXHXS.% $ $ * v.UXJXPXJXPXeX} D U ^.PXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXKXE.U D @.wXPXUX>.$ D ( qXPXGXH.U D D Y /.'.U $ $ @.aXPXAXJ.|.GXLXSXlX4X3X1X,X,X;.& =.7X1X,X1X1X>X<X,X:X1X1X:X,X7Xa.' R ;.7X5XlXSXLXPXPXJXCXs.$ $ ] >.F D D _ =XPXPXpX#.$ D ' aXPXJXIXJXuX:.$ F v.GXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXJXJXGXv.% $ ,.sXKXq.$ H W OXAXL.U D D Y R.xX,.$ D G T.JXPX|.U E d.uXJXPXLXSXlXdX4XA.x.#X,X:X1X1X:X1X1X1X:X:X:X:X,X:X3X%X%XdXSXDXLXPXJXPXPXJXJXpX<.,.=XxX0.$ D D >.aXPXIXR.* D U |.PXJXJXmXq.@ D d.MXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXJXPXNXs.F D 2.aX`.L D F +.3., D D G F.KXT.G D D <.NXPXVX6.D D F ^.PXBXOXaXDXLXFXSXvXfXdX4X4X4X4X2X2X2X2X3X4X5XfXnXbXFXLXIXPXJXPXPXPXPXPXPXJXPXpXMXPXJXwX} D H % c.DXPXmX:.D $ q.ZXPXBXg.F D ,.hXPXJXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXJXPXPXPXPXPXNXy.$ $ e.yXf.% D D D D D G V.GXaX@.D $ D d.VXPXW.* D $ :.kXKXm.U _ e.).GXPXPXPXLXLXKXFXGXLXLXDXLXHXLXLXIXIXVXeX^.G.pXJXPXPXPXPXJXPXJXPXJXPXPXPXLX{.W D $ J R.JXJX_.I D ' pXBXf.* $ #.tXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXJXPXPXPXIXIXpX1.$ F 0.8Xf.* D D $ & m.CXHXG.F D D $ L 6.W.$.$ D > `.PX_.T D $ H ] aXPXtX/.W..XGXPXJXJXPXJXuX0X*XiXIXNX0.R F $ f.AXPXPXJXPXPXPXPXPXJXPXPXPXPXKXS.# D H  .;XPXBX2.U Y.aXq.F D ' OXLXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXpX,.$ F 6.oX).q.[ } v.MXPXqX] D D $ $ H H G D D $ 3.UXuX} D D D D ( pXLXf.K K (  XIXJXLXPXkX>.E E 6.KX&XU D D D U '.PXPXPXPXPXPXPXPXPXPXPXPXPXPXVX2.$ H D ,.aXPX.XH.wX3.K $ o.OXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXsX9.@ D #.0XUXjXaXKXPXKXf.@ D F ,.>.G $ $ $ D W OXZXd.$ D $ D $ ^ iXLXe.D D $ q.UXJXPXJXI.* D D #.UX].G D D D D @.uXPXPXPXPXPXPXPXPXPXPXPXPXPXPXqX+.D D $ v.GXPX9X2.$ $ #.&XPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXJXPXkXi.F D .._.IXPXJXJX.XR D D } iXNXD., D $ D l.GXY.L D F o.E D U 8XPXr.D D D T $XPXJXpX+.D D D &.UX_.D D H & D D g.AXPXPXPXPXPXPXPXPXPXPXPXPXIXLX).U $ * f.CXOX$.$ F ,.rXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXmXl.* $ Q S.MXJXAX3.$ D F F.LXPX=XR K D ] tXqX..D $ o.].+.D * _.IXr.D D D D d.GXJXD.% D D D #.UXT.F $ ..9.F D U ).IXPXPXPXPXPXPXPXPXPXPXPXJXPXGXk.( Y.NXR.] $ % q.pXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXJXCXG.U D F p.sXNX,.% $ #.aXJXGXs.$ K $ V.NX9.$ D U W.BX@.D % W.LXe.D D D D Y 8XaX+.D D D $ #.ZXv.$ $ >.eX@.$ D @.pXPXPXPXPXPXPXPXPXPXPXPXPXPXPXNXeXaXn.P $ * f.mXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXKX/.' $ D @._.sXL.} ^.JXPX XQ D D +.iXL.G $ D  .XXiX#.$ D L.LXe.$ D D D $ g.n.% D $ H $ >.VXd.$ $ q.KX).> D % c.KXPXPXPXPXPXPXPXPXPXPXPXJXJXLX=X6.% $ R D.UXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLX8X1.* $ < c.rXaXGXJXMX,.D D % H..X] $ $ D & T $.Q D D K.LXe.$ D D D D < Q D D $ H $ ,.mX6.D D q._.z.Q D $ U [.LXJXPXPXPXPXPXPXPXPXPXJXjXK.( $ $ } ].KXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXkXS.R $ D O.E.MXPXOX, $ $ :.eX1.$ D G J $ D D D D D K.LXe.$ D G F $ D D D % F D $ ,.jX>.D D K G $ $ D D $ $.uXPXPXJXPXPXPXPXPXPXUX[.>.F D U d.wXIXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXKXXX>.* $ G >.].aX).@.Y R.c.% D P G.].x.+.Y $ $ D c.KX0.D $ 7.>.D D H $ @.$.D @ 2.aX#.D $ $ D $ , ( K D D f.AXPXPXPXPXPXPXHX8Xq.E D @ +.).DXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXNXI.' $ D E w.{.eX|. X) $ $ d.ZXPXKXNX8X,.$ D 5.ZXq.D $ d.).L D D * E.9.D $ 0.wX .D $ ] 0.G.=XyXx.$ D E /.JXJXPXPXZX=Xf.~ $ $ Q g.tXIXJXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXtXc.W @ $ E w.'.tX.XG.j.uXPXPXPXIXPXH.D D :.NX0.D $ d.BX9.$ $ 2.NX0.$ $ 0. XU D Q .XGXJXPXJXaX| @ G 0.BXPXZX|.d.Q $ D U 2..XKXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLX8Xh.^ $ D J #.D.&XVXPXPXPXJXPXPXR.% D $.hXe.D $ f.IX].> R XXLXr.D $ q.].* D ( uXPXPXPXPXJXOXv.[.wX9XE.>.E D $ * <.|.CXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXGX0Xf.( $ D F Q 9.E.eXCXPXPXPX|. .$ } pX0.D $ l.PXCX2.3.GXIX0.D $ d.`.% $ ' kXPXPXPXPXPXHXuX).d.] * $ $ Q 9._.MXIXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXIXwXD.#.F $ $ D W 6.C.|.iXNX0XY.D.NXj.( ( V.IXPX8XuXPXKXs.* # s.R.} 2.).KXJXHXaXOXY.u.' F D D & ' f.OXDXJXJXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXPXPXmX_.s.+.J D D $ L ..9.b.!.oXtXqXeXqXaXPXPXPXPXJXJX9X{.`.8XuXwXwX=X].S.0.@.E D $ D F ` 3.Y.uXKXLXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXJXLXaX[.f.=.U F $ $ D D U _ #.w.0.l.N.L.T.R.W.T.Y.C.N.l.q.,...U % $ $ $ D L ..r.Y.qXAXJXPXPXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXNXOXE.p.&.Y U F $ $ $ $ D D D $ $ % D D D D D D $ D $ G U ] 0.V.].uXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX",
+"PXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXJXKXmX8X[.v.q.9.+.* @ @ @ @ @ @ @ @ @ @ @ R #.0.h.).OXyXGXHXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPX"
+};
diff --git a/client/tag/0.6.2/anago/unagi_blue.ico b/client/tag/0.6.2/anago/unagi_blue.ico
new file mode 100644 (file)
index 0000000..e344ff9
Binary files /dev/null and b/client/tag/0.6.2/anago/unagi_blue.ico differ
diff --git a/client/tag/0.6.2/anago/unagi_blue.xpm b/client/tag/0.6.2/anago/unagi_blue.xpm
new file mode 100644 (file)
index 0000000..58c136a
--- /dev/null
@@ -0,0 +1,50 @@
+/* XPM */
+static const char *unagi_blue[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 12 1",
+"  c #010101",
+". c #312121",
+"X c #4A3931",
+"o c #63524A",
+"O c #4A63A0",
+"+ c #73AAD4",
+"@ c #639CF7",
+"# c #9C8C84",
+"$ c #D6C6BD",
+"% c #BEE8FF",
+"& c #FFFEFD",
+"* c None",
+/* pixels */
+"********************************",
+"********************************",
+"********************************",
+"********************************",
+"****                          **",
+"**** &&%%%%%%%%%%%%%%%%%%%%%+ **",
+"**** oX..+++++++++++++++++++O **",
+"****o. o..@@&&&&&&&&&&&&&&&+O **",
+"***X.  .o.@@&&&&&&&&&&&&&@&+O **",
+"***o. Xo#.X&&&&&&&&&&&&&@@@+O .*",
+"***.. Xo#..&&&&&&&&&&&&@@@@+O .*",
+"**X.  .o$..@@@@@@@@&&&@@@&@+O .*",
+"**o.   X$..@@@@@@@@@&@@@&@&+O .*",
+"**o.   X$..&&&&&&&@@@@@&@&@+O .*",
+"**o.   X#..@@@@@@@&@@@&@&&&+O .*",
+"**o.   .o..&&&&&&&@&@&@&&&&+O .*",
+"**o.   .o..&&&&&&&&@&@&&&&&+O .*",
+"**o.   .X.++++++++++++++++++O .*",
+"*oX..  .X. .o+++++++++++++++O .*",
+"o....  .X.  oX+++++++++++++OO .*",
+".. X.  .o.+ ..+++++++++++++   **",
+". *Xo. .#..++++++++++++++++ #.**",
+"****o.  o$..                o.**",
+"****X.. .o$o..******......o$.***",
+"*****o.  .#$o............Xo#.***",
+"*****Xo.  .o##$#oooXX...Xo$.****",
+"******oo.     ......... o$..****",
+"*******Xo...        ..oo#..*****",
+"*********Xoo.....XXooo#..*******",
+"************Xoo........*********",
+"********************************",
+"********************************"
+};
diff --git a/client/tag/0.6.2/anago/wx.fbp b/client/tag/0.6.2/anago/wx.fbp
new file mode 100644 (file)
index 0000000..3b7caf2
--- /dev/null
@@ -0,0 +1,1303 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\r
+<wxFormBuilder_Project>\r
+    <FileVersion major="1" minor="10" />\r
+    <object class="Project" expanded="1">\r
+        <property name="class_decoration"></property>\r
+        <property name="code_generation">C++</property>\r
+        <property name="disconnect_events">1</property>\r
+        <property name="disconnect_mode">source_name</property>\r
+        <property name="disconnect_python_events">0</property>\r
+        <property name="encoding">UTF-8</property>\r
+        <property name="event_generation">connect</property>\r
+        <property name="file">wx</property>\r
+        <property name="first_id">1000</property>\r
+        <property name="help_provider">none</property>\r
+        <property name="internationalize">0</property>\r
+        <property name="name">anago_wx</property>\r
+        <property name="namespace"></property>\r
+        <property name="path">d:/work/unagi/client/anago</property>\r
+        <property name="precompiled_header"></property>\r
+        <property name="relative_path">1</property>\r
+        <property name="skip_python_events">1</property>\r
+        <property name="use_enum">0</property>\r
+        <property name="use_microsoft_bom">0</property>\r
+        <object class="Frame" expanded="1">\r
+            <property name="bg">wxSYS_COLOUR_ACTIVEBORDER</property>\r
+            <property name="center">wxBOTH</property>\r
+            <property name="context_help"></property>\r
+            <property name="context_menu">1</property>\r
+            <property name="enabled">1</property>\r
+            <property name="event_handler">impl_virtual</property>\r
+            <property name="extra_style"></property>\r
+            <property name="fg"></property>\r
+            <property name="font"></property>\r
+            <property name="hidden">0</property>\r
+            <property name="id">wxID_ANY</property>\r
+            <property name="maximum_size"></property>\r
+            <property name="minimum_size"></property>\r
+            <property name="name">frame_main</property>\r
+            <property name="pos">32,32</property>\r
+            <property name="size">360,380</property>\r
+            <property name="style">wxDEFAULT_FRAME_STYLE</property>\r
+            <property name="subclass"></property>\r
+            <property name="title">anago wx</property>\r
+            <property name="tooltip"></property>\r
+            <property name="validator_data_type"></property>\r
+            <property name="validator_style">wxFILTER_NONE</property>\r
+            <property name="validator_type">wxDefaultValidator</property>\r
+            <property name="validator_variable"></property>\r
+            <property name="window_extra_style"></property>\r
+            <property name="window_name"></property>\r
+            <property name="window_style">wxTAB_TRAVERSAL</property>\r
+            <property name="xrc_skip_sizer">1</property>\r
+            <event name="OnActivate"></event>\r
+            <event name="OnActivateApp"></event>\r
+            <event name="OnChar"></event>\r
+            <event name="OnClose"></event>\r
+            <event name="OnEnterWindow"></event>\r
+            <event name="OnEraseBackground"></event>\r
+            <event name="OnHibernate"></event>\r
+            <event name="OnIconize"></event>\r
+            <event name="OnIdle"></event>\r
+            <event name="OnKeyDown"></event>\r
+            <event name="OnKeyUp"></event>\r
+            <event name="OnKillFocus"></event>\r
+            <event name="OnLeaveWindow"></event>\r
+            <event name="OnLeftDClick"></event>\r
+            <event name="OnLeftDown"></event>\r
+            <event name="OnLeftUp"></event>\r
+            <event name="OnMiddleDClick"></event>\r
+            <event name="OnMiddleDown"></event>\r
+            <event name="OnMiddleUp"></event>\r
+            <event name="OnMotion"></event>\r
+            <event name="OnMouseEvents"></event>\r
+            <event name="OnMouseWheel"></event>\r
+            <event name="OnPaint"></event>\r
+            <event name="OnRightDClick"></event>\r
+            <event name="OnRightDown"></event>\r
+            <event name="OnRightUp"></event>\r
+            <event name="OnSetFocus"></event>\r
+            <event name="OnSize"></event>\r
+            <event name="OnUpdateUI"></event>\r
+            <object class="wxBoxSizer" expanded="1">\r
+                <property name="minimum_size"></property>\r
+                <property name="name">bSizer_dump</property>\r
+                <property name="orient">wxVERTICAL</property>\r
+                <property name="permission">none</property>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxFlexGridSizer" expanded="1">\r
+                        <property name="cols">2</property>\r
+                        <property name="flexible_direction">wxBOTH</property>\r
+                        <property name="growablecols">1</property>\r
+                        <property name="growablerows"></property>\r
+                        <property name="hgap">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">fgSizer1</property>\r
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_ALL</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="rows">2</property>\r
+                        <property name="vgap">0</property>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;script</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_label_script</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_choice_script</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;ROM image</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_label_rom</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL|wxEXPAND</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxFilePickerCtrl" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="message">Select a file</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_picker_romimage</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style">wxFLP_DEFAULT_STYLE</property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="wildcard">*.nes</property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style">wxWANTS_CHARS</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnFileChanged"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND|wxALIGN_RIGHT</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="1">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer_option</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;battery</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_check_battery</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;mapper change</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_check_forcemapper</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox">mapper_change_check</event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxCheckBox" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="checked">0</property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;compare</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_check_compare</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnCheckBox"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">1</property>\r
+                            <object class="wxTextCtrl" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">0</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="maxlength">0</property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_text_forcemapper</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="value"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnText"></event>\r
+                                <event name="OnTextEnter"></event>\r
+                                <event name="OnTextMaxLen"></event>\r
+                                <event name="OnTextURL"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxButton" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="default">0</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">&amp;dump</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_button_execute</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnButtonClick">OnButtonClick</event>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="1">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer6</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">CPU</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">150,18</property>\r
+                                <property name="name">m_label_cpu</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size">-1,-1</property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_choice_cpu_trans</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">110,-1</property>\r
+                                <property name="name">m_choice_cpu_device</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxGauge" expanded="1">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_gauge_cpu</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="range">100</property>\r
+                        <property name="size">-1,12</property>\r
+                        <property name="style">wxGA_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="value"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">5</property>\r
+                    <property name="flag"></property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxBoxSizer" expanded="1">\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">bSizer7</property>\r
+                        <property name="orient">wxHORIZONTAL</property>\r
+                        <property name="permission">none</property>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxStaticText" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="label">PPU</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">150,22</property>\r
+                                <property name="name">m_label_ppu</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="style"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <property name="wrap">-1</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">60,-1</property>\r
+                                <property name="name">m_choice_ppu_trans</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                        <object class="sizeritem" expanded="1">\r
+                            <property name="border">5</property>\r
+                            <property name="flag">wxALL</property>\r
+                            <property name="proportion">0</property>\r
+                            <object class="wxChoice" expanded="1">\r
+                                <property name="bg"></property>\r
+                                <property name="choices"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size">110,-1</property>\r
+                                <property name="name">m_choice_ppu_device</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="selection">0</property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style"></property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnChoice"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                            </object>\r
+                        </object>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">2</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">0</property>\r
+                    <object class="wxGauge" expanded="1">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_gauge_ppu</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="range">100</property>\r
+                        <property name="size">-1,12</property>\r
+                        <property name="style">wxGA_HORIZONTAL</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="value"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style"></property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="sizeritem" expanded="1">\r
+                    <property name="border">5</property>\r
+                    <property name="flag">wxALL|wxEXPAND</property>\r
+                    <property name="proportion">1</property>\r
+                    <object class="wxTextCtrl" expanded="1">\r
+                        <property name="bg"></property>\r
+                        <property name="context_help"></property>\r
+                        <property name="context_menu">1</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="fg"></property>\r
+                        <property name="font"></property>\r
+                        <property name="hidden">0</property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="maximum_size"></property>\r
+                        <property name="maxlength">0</property>\r
+                        <property name="minimum_size"></property>\r
+                        <property name="name">m_log</property>\r
+                        <property name="permission">protected</property>\r
+                        <property name="pos"></property>\r
+                        <property name="size"></property>\r
+                        <property name="style">wxTE_MULTILINE|wxTE_READONLY</property>\r
+                        <property name="subclass"></property>\r
+                        <property name="tooltip"></property>\r
+                        <property name="validator_data_type"></property>\r
+                        <property name="validator_style">wxFILTER_NONE</property>\r
+                        <property name="validator_type">wxDefaultValidator</property>\r
+                        <property name="validator_variable"></property>\r
+                        <property name="value"></property>\r
+                        <property name="window_extra_style"></property>\r
+                        <property name="window_name"></property>\r
+                        <property name="window_style">wxVSCROLL</property>\r
+                        <event name="OnChar"></event>\r
+                        <event name="OnEnterWindow"></event>\r
+                        <event name="OnEraseBackground"></event>\r
+                        <event name="OnKeyDown"></event>\r
+                        <event name="OnKeyUp"></event>\r
+                        <event name="OnKillFocus"></event>\r
+                        <event name="OnLeaveWindow"></event>\r
+                        <event name="OnLeftDClick"></event>\r
+                        <event name="OnLeftDown"></event>\r
+                        <event name="OnLeftUp"></event>\r
+                        <event name="OnMiddleDClick"></event>\r
+                        <event name="OnMiddleDown"></event>\r
+                        <event name="OnMiddleUp"></event>\r
+                        <event name="OnMotion"></event>\r
+                        <event name="OnMouseEvents"></event>\r
+                        <event name="OnMouseWheel"></event>\r
+                        <event name="OnPaint"></event>\r
+                        <event name="OnRightDClick"></event>\r
+                        <event name="OnRightDown"></event>\r
+                        <event name="OnRightUp"></event>\r
+                        <event name="OnSetFocus"></event>\r
+                        <event name="OnSize"></event>\r
+                        <event name="OnText"></event>\r
+                        <event name="OnTextEnter"></event>\r
+                        <event name="OnTextMaxLen"></event>\r
+                        <event name="OnTextURL"></event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+            <object class="wxMenuBar" expanded="1">\r
+                <property name="bg"></property>\r
+                <property name="context_help"></property>\r
+                <property name="context_menu">1</property>\r
+                <property name="enabled">1</property>\r
+                <property name="fg"></property>\r
+                <property name="font"></property>\r
+                <property name="hidden">0</property>\r
+                <property name="id">wxID_ANY</property>\r
+                <property name="label">MyMenuBar</property>\r
+                <property name="maximum_size"></property>\r
+                <property name="minimum_size"></property>\r
+                <property name="name">m_menubar</property>\r
+                <property name="permission">protected</property>\r
+                <property name="pos"></property>\r
+                <property name="size"></property>\r
+                <property name="style"></property>\r
+                <property name="subclass"></property>\r
+                <property name="tooltip"></property>\r
+                <property name="validator_data_type"></property>\r
+                <property name="validator_style">wxFILTER_NONE</property>\r
+                <property name="validator_type">wxDefaultValidator</property>\r
+                <property name="validator_variable"></property>\r
+                <property name="window_extra_style"></property>\r
+                <property name="window_name"></property>\r
+                <property name="window_style"></property>\r
+                <event name="OnChar"></event>\r
+                <event name="OnEnterWindow"></event>\r
+                <event name="OnEraseBackground"></event>\r
+                <event name="OnKeyDown"></event>\r
+                <event name="OnKeyUp"></event>\r
+                <event name="OnKillFocus"></event>\r
+                <event name="OnLeaveWindow"></event>\r
+                <event name="OnLeftDClick"></event>\r
+                <event name="OnLeftDown"></event>\r
+                <event name="OnLeftUp"></event>\r
+                <event name="OnMiddleDClick"></event>\r
+                <event name="OnMiddleDown"></event>\r
+                <event name="OnMiddleUp"></event>\r
+                <event name="OnMotion"></event>\r
+                <event name="OnMouseEvents"></event>\r
+                <event name="OnMouseWheel"></event>\r
+                <event name="OnPaint"></event>\r
+                <event name="OnRightDClick"></event>\r
+                <event name="OnRightDown"></event>\r
+                <event name="OnRightUp"></event>\r
+                <event name="OnSetFocus"></event>\r
+                <event name="OnSize"></event>\r
+                <event name="OnUpdateUI"></event>\r
+                <object class="wxMenu" expanded="1">\r
+                    <property name="label">&amp;File</property>\r
+                    <property name="name">m_menu_file</property>\r
+                    <property name="permission">protected</property>\r
+                    <object class="wxMenuItem" expanded="1">\r
+                        <property name="bitmap"></property>\r
+                        <property name="checked">0</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="help"></property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="kind">wxITEM_NORMAL</property>\r
+                        <property name="label">&amp;cleanup log</property>\r
+                        <property name="name">m_menu_file_logclear</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="shortcut"></property>\r
+                        <property name="unchecked_bitmap"></property>\r
+                        <event name="OnMenuSelection">menu_log_clean</event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                    <object class="wxMenuItem" expanded="1">\r
+                        <property name="bitmap"></property>\r
+                        <property name="checked">0</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="help"></property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="kind">wxITEM_NORMAL</property>\r
+                        <property name="label">E&amp;xit</property>\r
+                        <property name="name">m_menu_file_exit</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="shortcut"></property>\r
+                        <property name="unchecked_bitmap"></property>\r
+                        <event name="OnMenuSelection">menu_exit</event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="wxMenu" expanded="1">\r
+                    <property name="label">&amp;Mode</property>\r
+                    <property name="name">m_menu_mode</property>\r
+                    <property name="permission">protected</property>\r
+                    <object class="wxMenuItem" expanded="1">\r
+                        <property name="bitmap"></property>\r
+                        <property name="checked">0</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="help"></property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="kind">wxITEM_RADIO</property>\r
+                        <property name="label">ROM &amp;dump</property>\r
+                        <property name="name">m_menu_mode_dump</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="shortcut"></property>\r
+                        <property name="unchecked_bitmap"></property>\r
+                        <event name="OnMenuSelection">menu_mode_dump_set</event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                    <object class="wxMenuItem" expanded="1">\r
+                        <property name="bitmap"></property>\r
+                        <property name="checked">0</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="help"></property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="kind">wxITEM_RADIO</property>\r
+                        <property name="label">&amp;flash program</property>\r
+                        <property name="name">m_menu_mode_program</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="shortcut"></property>\r
+                        <property name="unchecked_bitmap"></property>\r
+                        <event name="OnMenuSelection">menu_mode_program_set</event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+                <object class="wxMenu" expanded="1">\r
+                    <property name="label">&amp;Help</property>\r
+                    <property name="name">m_menu_help</property>\r
+                    <property name="permission">protected</property>\r
+                    <object class="wxMenuItem" expanded="1">\r
+                        <property name="bitmap"></property>\r
+                        <property name="checked">0</property>\r
+                        <property name="enabled">1</property>\r
+                        <property name="help"></property>\r
+                        <property name="id">wxID_ANY</property>\r
+                        <property name="kind">wxITEM_NORMAL</property>\r
+                        <property name="label">contents</property>\r
+                        <property name="name">m_menu_help_contents</property>\r
+                        <property name="permission">none</property>\r
+                        <property name="shortcut"></property>\r
+                        <property name="unchecked_bitmap"></property>\r
+                        <event name="OnMenuSelection">menu_help_contents</event>\r
+                        <event name="OnUpdateUI"></event>\r
+                    </object>\r
+                </object>\r
+            </object>\r
+        </object>\r
+    </object>\r
+</wxFormBuilder_Project>\r
diff --git a/client/tag/0.6.2/client_test.h b/client/tag/0.6.2/client_test.h
new file mode 100644 (file)
index 0000000..9cee63e
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _CLIENT_TEST_H_
+#define _CLIENT_TEST_H_
+void client_test(const struct reader_driver *const d, const char *option, const char *file, const char *devicename, const char *mappername);
+#endif
diff --git a/client/tag/0.6.2/config.h b/client/tag/0.6.2/config.h
new file mode 100644 (file)
index 0000000..a6123b2
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef _CONFIG_H_
+#define _CONFIG_H_
+#include "reader_master.h"
+enum{
+       CONFIG_OVERRIDE_UNDEF = 4649,
+       CONFIG_OVERRIDE_TRUE = 1,
+       CONFIG_STR_LENGTH = 20
+};
+struct st_config{
+       //override config
+       long mapper;
+       int mirror, backupram;
+       //target filename
+       const char *ramimage, *romimage;
+       const char *script;
+       //device driver function pointer struct
+       const struct reader_driver *reader;
+       const struct flash_driver *cpu_flash_driver, *ppu_flash_driver;
+       //data mode
+       int mode, syntaxtest;
+       long transtype_cpu, transtype_ppu;
+       //debug member
+       long write_wait;
+       char flash_test_device[CONFIG_STR_LENGTH];
+       char flash_test_mapper[CONFIG_STR_LENGTH];
+};
+
+enum{
+       MODE_TEST,
+       MODE_ROM_DUMP,
+       MODE_RAM_READ,
+       MODE_RAM_WRITE,
+       MODE_ROM_PROGRAM
+};
+
+#endif
diff --git a/client/tag/0.6.2/crc32.c b/client/tag/0.6.2/crc32.c
new file mode 100644 (file)
index 0000000..c1f659f
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+GZIP file format specification version 4.3
+*/
+#include "type.h"
+#include "crc32.h"
+#include "crctable.h"
+/*
+   Update a running crc with the bytes buf[0..len-1] and return
+ the updated crc. The crc should be initialized to zero. Pre- and
+ post-conditioning (one's complement) is performed within this
+ function so it shouldn't be done by the caller. Usage example:
+
+   unsigned long crc = 0L;
+
+   while (read_buffer(buffer, length) != EOF) {
+     crc = update_crc(crc, buffer, length);
+   }
+   if (crc != original_crc) error();
+*/
+uint32_t crc32_update(uint32_t crc, const uint8_t *buf, int len)
+{
+       uint32_t c = crc ^ 0xffffffffUL;
+       int n;
+
+       for (n = 0; n < len; n++) {
+               c = CRCTABLE[(c ^ buf[n]) & 0xff] ^ (c >> 8);
+       }
+       return c ^ 0xffffffffUL;
+}
+
+/* Return the CRC of the bytes buf[0..len-1]. */
+//uint32_t crc(uint8_t *buf, int len) //ÊÑ¿ô̾¤È¤«¤Ö¤ë¤Î¤Ç¤«¤¨¤ë
+uint32_t crc32_get(const uint8_t *buf, int len)
+{
+       return crc32_update(0UL, buf, len);
+}
diff --git a/client/tag/0.6.2/crc32.h b/client/tag/0.6.2/crc32.h
new file mode 100644 (file)
index 0000000..186ae4e
--- /dev/null
@@ -0,0 +1,5 @@
+#ifndef _CRC32_H_
+#define _CRC32_H_
+uint32_t crc32_update(uint32_t crc, const uint8_t *buf, int len);
+uint32_t crc32_get(const uint8_t *buf, int len);
+#endif
diff --git a/client/tag/0.6.2/crctable.h b/client/tag/0.6.2/crctable.h
new file mode 100644 (file)
index 0000000..dd70e97
--- /dev/null
@@ -0,0 +1,96 @@
+enum{
+       CRC_TABLE_NUM = 256
+};
+#if 0
+/* Table of CRCs of all 8-bit messages. */
+static unsigned long crc_table[CRC_TABLE_NUM];
+
+/* Flag: has the table been computed? Initially false. */
+static int crc_table_computed = 0;
+
+/* Make the table for a fast CRC. */
+void make_crc_table(void)
+{
+       unsigned long c;
+       int n, k;
+       for (n = 0; n < CRC_TABLE_NUM; n++) {
+               c = (unsigned long) n;
+               for (k = 0; k < 8; k++) {
+                       if (c & 1) {
+                               c = 0xedb88320L ^ (c >> 1);
+                       } else {
+                               c = c >> 1;
+                       }
+               }
+               crc_table[n] = c;
+       }
+       crc_table_computed = 1;
+}
+#endif
+
+static const uint32_t CRCTABLE[CRC_TABLE_NUM] = {
+       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
+       0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+       0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+       0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+       0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+       0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+       0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
+       0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+       0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+       0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+       0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
+       0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+       0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
+       0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+       0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+       0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+       0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
+       0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+       0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
+       0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+       0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+       0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+       0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
+       0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+       0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+       0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+       0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+       0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+       0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
+       0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+       0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
+       0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+       0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+       0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
+       0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+       0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+       0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
+       0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+       0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+       0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+       0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
+       0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+       0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
+       0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+       0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+       0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+       0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
+       0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+       0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
+       0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+       0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+       0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
+       0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
+       0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+       0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+       0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+       0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+       0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+       0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
+       0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+       0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
+       0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+       0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+       0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+};
diff --git a/client/tag/0.6.2/file.c b/client/tag/0.6.2/file.c
new file mode 100644 (file)
index 0000000..9b0e246
--- /dev/null
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include "type.h"
+#include "memory_manage.h"
+#include "file.h"
+
+#ifdef _UNICODE
+  #define FOPEN(name, mode) _wfopen(name, L##mode)
+#else
+  #define FOPEN(name, mode) fopen(name, mode)
+#endif
+
+int buf_load(uint8_t *buf, const wgChar *file, int size)
+{
+       FILE *fp;
+
+       fp = FOPEN(file, "rb");
+       if(fp == NULL){
+               return NG;
+       }
+       fseek(fp, 0, SEEK_SET);
+       fread(buf, sizeof(uint8_t), size, fp);
+       fclose(fp);
+       return OK;
+}
+
+void* buf_load_full(const wgChar *file, int *size)
+{
+       FILE *fp;
+       uint8_t *buf;
+
+       *size = 0;
+       fp = FOPEN(file, "rb");
+       if(fp == NULL){
+               return NULL;
+       }
+       fseek(fp, 0, SEEK_END);
+       *size = ftell(fp);
+       if(*size == 0){
+               fclose(fp);
+               return NULL;
+       }
+       fseek(fp, 0, SEEK_SET);
+       buf = Malloc(*size);
+       fread(buf, sizeof(uint8_t), *size, fp);
+       fclose(fp);
+       return buf;
+}
+
+void buf_save(const void *buf, const wgChar *file, int size)
+{
+       FILE *fp;
+
+       fp = FOPEN(file, "wb");
+       fseek(fp, 0, SEEK_SET);
+       fwrite(buf, sizeof(uint8_t), size, fp);
+       fclose(fp);
+}
+
diff --git a/client/tag/0.6.2/file.h b/client/tag/0.6.2/file.h
new file mode 100644 (file)
index 0000000..f52bdaf
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _FILE_H_
+#define _FILE_H_
+#include "type.h"
+int buf_load(uint8_t *buf, const wgChar *file, int size);
+void* buf_load_full(const wgChar *file, int *size);
+void buf_save(const void *buf, const wgChar *file, int size);
+#endif
diff --git a/client/tag/0.6.2/file.mak b/client/tag/0.6.2/file.mak
new file mode 100644 (file)
index 0000000..4d5c095
--- /dev/null
@@ -0,0 +1,13 @@
+LIBUSB_PATH = d:/dev/LibUSB-Win32
+OBJ = \
+       unagi.o header.o crc32.o \
+       script_engine.o script_syntax.o \
+       reader_master.o \
+       reader_onajimi.o reader_hongkongfc.o reader_kazzo.o \
+       flashmemory.o \
+       file.o textutil.o giveio.o usb_device.o unagi.res.o
+TARGET = unagi.exe
+CC = gcc
+CFLAGS += -Wall -Werror -Wmissing-declarations -I..
+CFLAGS = -I$(LIBUSB_PATH)/include -I.. -I../../kazzo/firmware
+LDFLAG = -L$(LIBUSB_PATH)/lib/gcc -lusb
diff --git a/client/tag/0.6.2/flashmemory.c b/client/tag/0.6.2/flashmemory.c
new file mode 100644 (file)
index 0000000..d78d869
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+famicom ROM cartridge utility - unagi
+flash memory driver
+
+Copyright (C) 2008-2009 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+flashmemory.c ¤À¤±¤Î·Ù¹ð
+¤³¤Î¥½¡¼¥¹¥³¡¼¥É¤ò»²¹Í¡¢Å¾ÍѤ·¤Æ¥·¥§¥¢¥¦¥§¥¢¤Ê¤É¤ÇÍø±×¤òÆÀ¤Ê¤¤¤³¤È¡£
+ȽÌÀ¤·¤¿¾ì¹ç¤Ï LGPL ¤¬Å¬ÍѤµ¤ì¡¢³ºÅö²Õ½ê¤Î¥½¡¼¥¹¤ò¸ø³«¤¹¤ëɬÍפ¬¤¢¤ë¡£
+*/
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <windows.h>
+#include "type.h"
+#include "header.h"
+#include "flashmemory.h"
+
+/*
+---- erase ----
+*/
+#if 0 //DEBUG==1
+static void sram_erase(const struct flash_order *d)
+{
+       //bank ÀÚ¤êÂؤ¨¤¬È¼¤¦¤Î¤Ç¼ÂÁõ¤Ç¤­¤Ê¤¤
+}
+#endif
+
+static void init_nop(const struct flash_order *d, long wait)
+{
+}
+
+static void init_erase(const struct flash_order *d, long wait)
+{
+       assert(d->pagesize > 0);
+       d->erase(d->command_2aaa, true);
+       Sleep(wait);
+}
+
+static void program_dummy(const struct flash_order *d, long address, long length, const struct memory *m)
+{
+}
+static void program_sram(const struct flash_order *d, long address, long length, const struct memory *m)
+{
+       d->write(address, length, m->data);
+}
+static void program_flash(const struct flash_order *d, long address, long length, const struct memory *m)
+{
+       d->program(address, length, m->data, true, false);
+}
+/*
+¥Ç¥Ð¥¤¥¹¥ê¥¹¥È
+*/
+enum{MEGA = 0x20000};
+const struct flash_driver FLASH_DRIVER_UNDEF = {
+       .name = "undefined",
+       .capacity = 0,
+       .pagesize = 1,
+       .erase_wait = 0,
+       .command_mask = 0,
+       .id_manufacurer = 0,
+       .id_device = 0,
+       .productid_check = NULL,
+       .init = NULL,
+       .program = NULL
+};
+static const struct flash_driver DRIVER_SRAM = {
+       .name = "SRAM",
+       .capacity = 4 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 0,
+       .command_mask = 0,
+       .id_manufacurer = FLASH_ID_DEVICE_SRAM,
+       .id_device = FLASH_ID_DEVICE_SRAM,
+//     .productid_check = productid_sram,
+       .init = init_nop,
+       .program = program_sram
+};
+
+static const struct flash_driver DRIVER_DUMMY = {
+       .name = "dummy",
+       .capacity = 16 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 0,
+       .command_mask = 0,
+       .id_manufacurer = FLASH_ID_DEVICE_DUMMY,
+       .id_device = FLASH_ID_DEVICE_DUMMY,
+//     .productid_check = productid_sram,
+       .init = init_nop,
+       .program = program_dummy
+};
+
+static const struct flash_driver DRIVER_W29C020 = {
+       .name = "W29C020",
+       .capacity = 2 * MEGA,
+       .pagesize = 0x80,
+       .erase_wait = 50,
+       .command_mask = 0x7fff,
+       .id_manufacurer = 0xda,
+       .id_device = 0x45,
+//     .productid_check = productid_check,
+       .init = init_nop,
+       .program = program_flash
+};
+
+static const struct flash_driver DRIVER_W29C040 = {
+       .name = "W29C040",
+       .capacity = 4 * MEGA,
+       .pagesize = 0x100,
+       .erase_wait = 50,
+       .command_mask = 0x7fff,
+       .id_manufacurer = 0xda,
+       .id_device = 0x46,
+//     .productid_check = productid_check,
+       .init = init_nop,
+       .program = program_flash
+};
+
+static const struct flash_driver DRIVER_W49F002 = {
+       .name = "W49F002",
+       .capacity = 2 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 100, //typ 0.1, max 0.2 sec
+       .command_mask = 0x7fff,
+       .id_manufacurer = 0xda,
+       .id_device = 0xae,
+//     .productid_check = productid_check,
+       .init = init_erase,
+       .program = program_flash
+};
+
+/*
+MANUFATUTER ID 0x7f1c
+EN29F002T DEVICE ID 0x7f92
+EN29F002B DEVICE ID 0x7f97
+
+command address ¤¬ 0x00555, 0x00aaa ¤Ë¤Ê¤Ã¤Æ¤ë
+*/
+static const struct flash_driver DRIVER_EN29F002T = {
+       .name = "EN29F002T",
+       .capacity = 2 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 2000, //typ 2, max 5 sec
+       .command_mask = 0x07ff,
+       .id_manufacurer = 0x1c,
+       .id_device = 0x92,
+//     .productid_check = productid_check,
+       .init = init_erase,
+       .program = program_flash
+};
+
+static const struct flash_driver DRIVER_AM29F040B = {
+       .name = "AM29F040B",
+       .capacity = 4 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 8000, //typ 8, max 64 sec
+       .command_mask = 0x07ff,
+       .id_manufacurer = 0x01,
+       .id_device = 0xa4,
+//     .productid_check = productid_check,
+       .init = init_erase,
+       .program = program_flash
+};
+
+static const struct flash_driver DRIVER_MBM29F080A = {
+       .name = "MBM29F080A",
+       .capacity = 8 * MEGA,
+       .pagesize = 1,
+       .erase_wait = 8000, //chip erase time is not written in datasheet!!
+       .command_mask = 0x07ff,
+       .id_manufacurer = 0x04,
+       .id_device = 0xd5,
+//     .productid_check = productid_check,
+       .init = init_erase,
+       .program = program_flash
+};
+
+static const struct flash_driver *DRIVER_LIST[] = {
+       &DRIVER_W29C020, &DRIVER_W29C040, 
+       &DRIVER_W49F002, &DRIVER_EN29F002T, &DRIVER_AM29F040B, &DRIVER_MBM29F080A,
+       &DRIVER_SRAM, 
+       &DRIVER_DUMMY,
+       NULL
+};
+
+const struct flash_driver *flash_driver_get(const char *name)
+{
+       const struct flash_driver **d;
+       d = DRIVER_LIST;
+       while(*d != NULL){
+               if(strcmp(name, (*d)->name) == 0){
+                       return *d;
+               }
+               d++;
+       }
+       return NULL;
+}
diff --git a/client/tag/0.6.2/flashmemory.h b/client/tag/0.6.2/flashmemory.h
new file mode 100644 (file)
index 0000000..4191c8d
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+famicom ROM cartridge utility - unagi
+flash memory driver
+
+Copyright (C) 2008-2009 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+flashmemory.c ¤À¤±¤Î·Ù¹ð
+¤³¤Î¥½¡¼¥¹¥³¡¼¥É¤ò»²¹Í¡¢Å¾ÍѤ·¤Æ¥·¥§¥¢¥¦¥§¥¢¤Ê¤É¤ÇÍø±×¤òÆÀ¤Ê¤¤¤³¤È¡£
+ȽÌÀ¤·¤¿¾ì¹ç¤Ï LGPL ¤¬Å¬ÍѤµ¤ì¡¢³ºÅö²Õ½ê¤Î¥½¡¼¥¹¤ò¸ø³«¤¹¤ëɬÍפ¬¤¢¤ë¡£
+*/
+#ifndef _FLASHMEMORY_H_
+#define _FLASHMEMORY_H_
+
+struct flash_order{
+       //JEDEC command ¤ò½¼¤Æ¤ë CPU/PPU ÏÀÍý¥¢¥É¥ì¥¹
+       long command_0000, command_2aaa, command_5555;
+       long command_mask;
+       long pagesize;
+       //struct reader_driver ¤Î´Ø¿ô¥Ý¥¤¥ó¥¿¤òÅϤ¹¾ì½ê
+       void (*config)(long c000, long c2aaa, long c5555, long unit, bool retry);
+       void (*erase)(long address, bool dowait);
+       void (*write)(long address, long length, uint8_t *data);
+       long (*program)(long address, long length, const uint8_t *data, bool dowait, bool skip);
+};
+
+struct memory;
+struct flash_driver{
+       const char *name;
+       long capacity, pagesize;
+       long command_mask;
+       long erase_wait; //unit is msec
+       u8 id_manufacurer, id_device;
+       int (*productid_check)(const struct flash_order *d, const struct flash_driver *f);
+       void (*init)(const struct flash_order *d, long wait);
+       void (*program)(const struct flash_order *d, long address, long length, const struct memory *m);
+};
+const struct flash_driver FLASH_DRIVER_UNDEF;
+const struct flash_driver *flash_driver_get(const char *name);
+
+//0x80 °Ê¹ß¤ÏËÜÅö¤Î¥Ç¥Ð¥¤¥¹½ÅÊ£¤·¤Ê¤¤¤È»×¤¦. Ã¯¤« JEDEC ¤Î¤È¤³¤ò¤·¤é¤Ù¤Æ.
+enum{
+       FLASH_ID_DEVICE_SRAM = 0xf0, 
+       FLASH_ID_DEVICE_DUMMY
+};
+#endif
diff --git a/client/tag/0.6.2/giveio.c b/client/tag/0.6.2/giveio.c
new file mode 100644 (file)
index 0000000..4df6a4c
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+       Win32 GIVEIO(DirectI/O Access) Service Controll Module
+*/
+
+#include "giveio.h"
+#include <windows.h>
+#include <stdio.h>
+
+/**-----------------------------------------------------**/
+
+/*
++--------------------+---------+----+----+----+----+--------------------+
+|Products            |Version  |PFID|MJRV|MNRV|BNUM| note
++--------------------+---------+----+----+----+----+--------------------+
+|Windows 95          |4.00.950 |  1 |  4 |  0 | 950|(Windows 95 + SP1)  |
+|Windows 95 OSR 2    |4.00.950B|  1 |  4 |  0 |1111|(Windows 95 OSR 2.1)|
+|Windows 95 OSR 2.5  |4.00.950C|  1 |  4 |  0 |1212|                    |
+|Windows 98          |4.10.1998|  1 |  4 | 10 |1998|                    |
+|Windows 98 SE       |4.10.2222|  1 |  4 | 10 |2222|                    |
+|Windows Me          |4.90.3000|  1 |  4 | 90 |3000|                    |
+|Windows NT 4.0      |4.00.1381|  2 |  4 |  0 |1381|                    |
+|Windows 2000        |5.00.2195|  2 |  5 |  0 |2195|                    |
+|Windows XP          |5.01.2600|  2 |  5 |  1 |2600|                    |
++--------------------+---------+----+----+----+----+--------------------+
+
+PFID = dwPlatformId
+MJRV = dwMajorVersion
+MNRV = dwMinorVersion
+BNUM = dwBuildNumber
+*/
+
+/* check the OS which GIVEIO should be necessary */
+static int is_winnt(void)
+{
+       OSVERSIONINFO osvi;
+
+       osvi.dwOSVersionInfoSize = sizeof(osvi);
+       if( !GetVersionEx(&osvi) )
+               return 0;
+
+       switch (osvi.dwPlatformId)
+       {
+       case VER_PLATFORM_WIN32_NT:
+               return 1;
+       case VER_PLATFORM_WIN32_WINDOWS:
+               return 0;
+       case VER_PLATFORM_WIN32s:
+               return 0;
+       }
+
+       /* unknown */
+       return 0;
+}
+
+/**-----------------------------------------------------**/
+
+/*  connect to local service control manager */
+static SC_HANDLE hSCMan = NULL;
+static int OpenServiceControlManager(void)
+{
+       if(hSCMan==NULL)
+       {
+               /*  connect to local service control manager */
+               if ((hSCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL) 
+                       return GetLastError();
+       }
+       return 0;
+}
+
+static void ClseServiceControlManager(void)
+{
+       if(hSCMan==NULL)
+               CloseServiceHandle(hSCMan);
+       hSCMan = NULL;
+}
+
+/**-----------------------------------------------------**/
+/* #define MAX_PATH 256 */
+static DWORD DriverInstall(LPCTSTR lpFname,LPCTSTR lpDriver)
+{
+       BOOL dwStatus = 0;
+       SC_HANDLE hService = NULL;
+       char *address;
+       char fullpath[MAX_PATH];
+
+       /*  connect to local service control manager */
+       if(OpenServiceControlManager())
+               return 1;
+
+       /* get full path of driver file in current directry */
+       GetFullPathName(lpFname,MAX_PATH,fullpath,&address);
+
+       /* add to service control manager's database */
+       if ((hService = CreateService(hSCMan, lpDriver, 
+               lpDriver, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
+               SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, fullpath, 
+               NULL, NULL, NULL, NULL, NULL)) == NULL)
+               dwStatus = GetLastError();
+       else CloseServiceHandle(hService);
+
+       return dwStatus;
+}
+
+static DWORD DriverStart(LPCTSTR lpDriver)
+{
+       BOOL dwStatus = 0;
+       SC_HANDLE hService = NULL;
+
+       /*  connect to local service control manager */
+       if(OpenServiceControlManager())
+               return 1;
+
+       // get a handle to the service
+       if ((hService = OpenService(hSCMan, lpDriver, SERVICE_ALL_ACCESS)) != NULL) 
+       {
+               // start the driver
+               if (!StartService(hService, 0, NULL))
+                       dwStatus = GetLastError();
+       } else dwStatus = GetLastError();
+
+       if (hService != NULL) CloseServiceHandle(hService);
+
+       return dwStatus;
+} // DriverStart
+
+/**-----------------------------------------------------**/
+static DWORD DriverStop(LPCTSTR lpDriver)
+{
+   BOOL dwStatus = 0;
+   SC_HANDLE hService = NULL;
+   SERVICE_STATUS serviceStatus;
+
+       /*  connect to local service control manager */
+       if(OpenServiceControlManager())
+               return 1;
+
+
+   // get a handle to the service
+   if ((hService = OpenService(hSCMan, lpDriver, 
+      SERVICE_ALL_ACCESS)) != NULL) 
+   {
+      // stop the driver
+      if (!ControlService(hService, SERVICE_CONTROL_STOP,
+         &serviceStatus))
+            dwStatus = GetLastError();
+   } else dwStatus = GetLastError();
+
+   if (hService != NULL) CloseServiceHandle(hService);
+   return dwStatus;
+} // DriverStop
+
+/**-----------------------------------------------------**/
+static DWORD DriverRemove(LPCTSTR lpDriver)
+{
+   BOOL dwStatus = 0;
+   SC_HANDLE hService = NULL;
+
+       /*  connect to local service control manager */
+       if(OpenServiceControlManager())
+               return 1;
+
+   // get a handle to the service
+   if ((hService = OpenService(hSCMan, lpDriver, 
+      SERVICE_ALL_ACCESS)) != NULL) 
+   {
+      // remove the driver
+      if (!DeleteService(hService))
+         dwStatus = GetLastError();
+   } else dwStatus = GetLastError();
+
+   if (hService != NULL) CloseServiceHandle(hService);
+   return dwStatus;
+} // DriverRemove
+
+/*****************************************************************************/
+
+const char giveio_dname[] = "\\\\.\\giveio"; /* device name      */
+const char giveio_fname[] = "giveio.sys";    /* driver-file name */
+const char giveio_sname[] = "giveio";        /* service name     */
+
+/*
+open & close "giveio" device for Direct I/O Access
+
+1st try : open giveio 
+2nd try : start service & open
+3rd try : install current "giveio.sys" file & start & open
+*/
+
+int giveio_start(void)
+{
+       HANDLE h;
+       int res;
+
+       /* escape when Win95/98/Me */
+       if(!is_winnt())
+               return GIVEIO_WIN95;
+
+
+       /* WinNT , try GIVEIO */
+       res = GIVEIO_OPEN;
+       while(1)
+       {
+               if(res>=GIVEIO_INSTALL)
+               {
+/* printf("Install\n"); */
+                       /* Install "GIVEIO.SYS" file in currect directry */
+                       if( DriverInstall(giveio_fname,giveio_sname) )
+                       {
+                               /* if install error , no retry */
+                               break;
+                       }
+               }
+               if(res>=GIVEIO_START)
+               {
+/* printf("Start\n"); */
+                       /* Start GIVEIO Service */
+                       if( DriverStart(giveio_sname) )
+                       {
+                               /* error , retry with install */
+                               res ++;
+                               continue;
+                       }
+               }
+/* printf("Open\n"); */
+               /* open driver */
+               h = CreateFile(giveio_dname, GENERIC_READ, 0, NULL,
+                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+               if(h != INVALID_HANDLE_VALUE)
+               {
+                       /* OK */
+                       CloseHandle(h);
+                       return res;
+               }
+               /* error , retry with Start,Install */
+               res++;
+       }
+
+       /* error */
+       return GIVEIO_ERROR;
+}
+
+int giveio_stop(int param)
+{
+       /* escape when Win95/98/Me */
+       if(!is_winnt())
+               return 0;
+
+       if(param>=GIVEIO_STOP)
+       {
+/* printf("Stop\n"); */
+               if( DriverStop(giveio_sname) )
+                       return param;
+               if(param>=GIVEIO_REMOVE)
+               {
+/* printf("Remove\n"); */
+                       if(DriverRemove(giveio_sname) )
+                               return param;
+               }
+       }
+
+       ClseServiceControlManager();
+
+       /* Okay */
+       return 0;
+}
+
diff --git a/client/tag/0.6.2/giveio.h b/client/tag/0.6.2/giveio.h
new file mode 100644 (file)
index 0000000..d37ced3
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef __GIVEIO_H__
+#define __GIVEIO_H__
+
+/* result of giveio_start() */
+#define GIVEIO_ERROR   0
+#define GIVEIO_WIN95   1  /* windows 95/98/Me, unnecessary */
+#define GIVEIO_OPEN    2  /* giveio opened                 */
+#define GIVEIO_START   3  /* giveio service start & opened */
+#define GIVEIO_INSTALL 4  /* giveio install,start & opened */
+int giveio_start(void);
+
+/* parameter of giveio_stop() */
+#define GIVEIO_STOP   3   /* giveio stop service         */
+#define GIVEIO_REMOVE 4   /* giveio stop & remove driver */
+int giveio_stop(int param);
+
+#endif
diff --git a/client/tag/0.6.2/hard_dozeu.h b/client/tag/0.6.2/hard_dozeu.h
new file mode 100644 (file)
index 0000000..4875388
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _HARD_DOZEU_H_
+#define _HARD_DOZEU_H_
+enum{
+       DIRECTION_INPUT = 0,
+       DIRECTION_OUTPUT,
+       DIRECTION_INPUT_8BIT = 0,
+       DIRECTION_OUTPUT_8BIT = 0xff,
+};
+
+enum{
+       WAVEFORM_BANK_CPU_6502_HIGH = 0,
+       WAVEFORM_BANK_CPU_FLASH_HIGH,
+       WAVEFORM_BANK_PPU,
+       WAVEFORM_BANK_CPU_6502_LOW,
+       WAVEFORM_BANK_UNDEF = 123
+};
+enum{
+       WAVEFORM_WAVE_READ_SINGLE = 0,
+       WAVEFORM_WAVE_WRITE_SINGLE,
+       WAVEFORM_WAVE_READ_MULTI,
+       WAVEFORM_WAVE_WRITE_MULTI,
+};     
+#endif
diff --git a/client/tag/0.6.2/hard_hongkongfc.h b/client/tag/0.6.2/hard_hongkongfc.h
new file mode 100644 (file)
index 0000000..64a8f98
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef _HONGKONGFC_HARD_H_
+#define _HONGKONGFC_HARD_H_
+/*
+DATA PORT
+BIT0-BIT7: DATA IN/OUT, ADDRESS, BUS CONTROL
+STATUS PORT:
+BIT7: DATA ½ÐÎϳÎǧ?
+CONTROL PORT:
+BIT~0: DATA PORT LATCH CLOCK
+  H->L ¤Ç LATCH
+BIT~1 2 3: DATA PORT SELECT
+BIT4: ³ä¤ê¹þ¤ßµö²Ä MUST BE 0
+BIT5: PORT DIRECTION
+  L PC->BUS
+  H BUS->PC
+*/
+enum{
+       BITNUM_CONTROL_DATA_LATCH = 0,
+       BITNUM_CONTROL_DATA_SELECT,
+       BITNUM_CONTROL_INTERRUPT = 4,
+       BITNUM_CONTROL_DIRECTION
+};
+/*
+DATA PORT SELECT
+0: DATA BUS DIRECTION PC->BUS
+1: DATA BUS DIRECTION BUS->PC
+2: WRITE->READ ¤ËÀڤ괹¤¨¤ë¤È DATA_SELECT_A23toA16 ¤¬ÇË»¤¹¤ë
+3: WRITE->READ ¤ËÀڤ괹¤¨¤ë¤È DATA_SELECT_CONTROL ¤¬ÇË»¤¹¤ë
+4: LATCH cartridge control
+5: LATCH A23-A16, fc ¤Ç¤Ï write data
+6: LATCH A15-A8
+7: LATCH A7-A0
+*/
+enum{
+       DATA_SELECT_WRITE = 0,
+       DATA_SELECT_READ,
+       DATA_SELECT_BREAK_DATA,
+       DATA_SELECT_BREAK_CONTROL,
+       DATA_SELECT_A7toA0 = 4,
+       DATA_SELECT_A15toA8,
+       DATA_SELECT_A23toA16,
+       DATA_SELECT_CONTROL,
+       DATA_SELECT_WRITEDATA = DATA_SELECT_A23toA16
+};
+enum{
+       BITNUM_PPU_OUTPUT = 0,
+       BITNUM_PPU_SELECT,
+       BITNUM_PPU_RW,
+       //bit3̤»ÈÍÑ
+       BITNUM_WRITEDATA_OUTPUT = 4, //b0 L ¤Ç½ÐÎÏ
+       BITNUM_WRITEDATA_LATCH, //b1 L->H
+       BITNUM_CPU_RW, //b2
+       BITNUM_CPU_M2 //b3
+};
+#endif
diff --git a/client/tag/0.6.2/hard_onajimi.h b/client/tag/0.6.2/hard_onajimi.h
new file mode 100644 (file)
index 0000000..0ac8186
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _HARD_ONAJIMI_H_
+#define _HARD_ONAJIMI_H_
+/*
+STROB: CPU/PPU ADDRESS BUS control
+L Address reset, address = 0
+H Address Enable
+*/
+enum{
+       ADDRESS_RESET = 1,
+       ADDRESS_ENABLE = 0
+};
+/*
+D0: CPU/PPU ADDRESS BUS increment
+D1: CPU/PPU DATA SHIFT
+D2: CPU/PPU DATA WRITE DATA
+D3: CPU/PPU DATA DIRECTION
+D4: PPU /WR + CPU ¦Õ2
+D5: PPU /CS
+D6: CPU ROM area /CS
+D7: CPU /WR
+*/
+enum BITNUM{
+       BITNUM_ADDRESS_INCREMENT = 0,
+       BITNUM_DATA_SHIFT_RIGHT,
+       BITNUM_DATA_WRITE_DATA,
+       BITNUM_DATA_DIRECTION,
+       BITNUM_CPU_M2,
+       BITNUM_PPU_SELECT,
+       BITNUM_CPU_RAMROM_SELECT,
+       BITNUM_CPU_RW,
+       BITNUM_PPU_RW = BITNUM_CPU_M2
+};
+/*
+D0: CPU/PPU ADDRESS BUS increment
+H->L address += 1
+
+D1: CPU/PPU DATA SHIFT (¥Ð¥¹¤ÎÀܳ¤¬È¿Å¾¤·¤Æ¤¤¤ë)
+L->H D01234567
+
+D2: CPU/PPU DATA WRITE DATA
+LSB->MSB ºÇ²¼°Ìbit¤«¤é½ç¤Ë¡£
+*/
+enum{
+       ADDRESS_NOP = 1 << BITNUM_ADDRESS_INCREMENT,
+       DATA_SHIFT_NOP = 0 << BITNUM_DATA_SHIFT_RIGHT
+};
+/*
+D3: CPU/PPU DATA DIRECTION
+H FC read
+L FC write
+*/
+enum{
+       DATA_DIRECTION_WRITE = 0,
+       DATA_DIRECTION_READ = 1
+};
+/*
+D4: PPU /WE + CPU M2
+H PPU read + CPU bus enable (for MMC5)
+L PPU write + CPU bus disable
+*/
+enum{
+       PPU_WRITE__CPU_DISABLE = 0,
+       PPU_READ__CPU_ENABLE
+};
+/*
+D5: PPU /RD + PPU A13
+H disable
+L enable
+*/
+enum{
+       PPU_ENABLE = 0,
+       PPU_DISABLE
+};
+/*
+D6: CPU ROM select (~A15)
+H RAM IO select, use $0000-$7fff
+L ROM select, use $8000-$ffff
+*/
+enum{
+       CPU_ROM_SELECT = 0,
+       CPU_RAM_SELECT
+};
+/*
+D7: CPU W/~R
+L write
+H read
+*/
+enum{
+       CPU_WRITE = 0,
+       CPU_READ
+};
+/*
+BUSY: CPU/PPU DATA READ DATA
+LSB->MSB ºÇ²¼°Ìbit¤«¤é½ç¤Ë¡£
+*/
+#endif
diff --git a/client/tag/0.6.2/meg.ico b/client/tag/0.6.2/meg.ico
new file mode 100644 (file)
index 0000000..d2d452b
Binary files /dev/null and b/client/tag/0.6.2/meg.ico differ
diff --git a/client/tag/0.6.2/memory_manage.c b/client/tag/0.6.2/memory_manage.c
new file mode 100644 (file)
index 0000000..a72000d
--- /dev/null
@@ -0,0 +1,69 @@
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "memory_manage.h"
+enum{
+       MANAGE_NUM = 0x100
+};
+
+struct manage{
+       const char *file, *function;
+       int line;
+       void *addr;
+       int size;
+};
+static const struct manage EMPTY = {
+       .file = NULL, .line = 0, .function = NULL,
+       .addr = NULL, .size = 0
+};
+static struct manage management[MANAGE_NUM];
+void mm_init(void)
+{
+       int i;
+       for(i = 0; i < MANAGE_NUM; i++){
+               management[i] = EMPTY;
+       }
+}
+void *mm_malloc(const char *file, int line, const char *function, int size)
+{
+       int i;
+       struct manage *t = management;
+       for(i = 0; i < MANAGE_NUM; i++){
+               if(t->addr == NULL){
+                       t->addr = malloc(size);
+                       t->size = size;
+                       t->file = file;
+                       t->line = line;
+                       t->function = function;
+                       return t->addr;
+               }
+               t++;
+       }
+       assert(0);
+       return NULL;
+}
+void mm_free(void *addr)
+{
+       int i;
+       struct manage *t = management;
+       for(i = 0; i < MANAGE_NUM; i++){
+               if(t->addr == addr){
+                       free(addr);
+                       *t = EMPTY;
+                       return;
+               }
+               t++;
+       }
+       assert(0);
+}
+void mm_end(void)
+{
+       int i;
+       struct manage *t = management;
+       for(i = 0; i < MANAGE_NUM; i++){
+               if(t->addr != NULL){
+                       printf("**free forgot** %s:%d %s() size %d\n", t->file, t->line, t->function, t->size);
+               }
+               t++;
+       }
+}
diff --git a/client/tag/0.6.2/memory_manage.h b/client/tag/0.6.2/memory_manage.h
new file mode 100644 (file)
index 0000000..4c8b2ac
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef _MEMORY_MANAGE_H_
+#define _MEMORY_MANAGE_H_
+void *mm_malloc(const char *file, int line, const char *function, int size);
+void mm_free(void *addr);
+#if DEBUG == 0
+  #define mm_init(a)
+  #define mm_end(a)
+#include <stdlib.h>
+  #define Malloc(size) malloc(size)
+  #define Free(addr) free(addr)
+#else
+  void mm_init(void);
+  void mm_end(void);
+  #define Malloc(size) mm_malloc(__FILE__, __LINE__, __FUNCTION__, size)
+  #define Free(addr) mm_free(addr)
+#endif
+#endif
diff --git a/client/tag/0.6.2/paralellport.h b/client/tag/0.6.2/paralellport.h
new file mode 100644 (file)
index 0000000..d454256
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+famicom ROM cartridge utility - unagi
+¥Ñ¥é¥ì¥ë¥Ý¡¼¥È¶¦Í­ÄêµÁ
+*/
+#ifndef _PARALELL_PORT_INLINE_H_
+#define _PARALELL_PORT_INLINE_H_
+#include "giveio.h"
+#include <windows.h>
+#define ASM_ENABLE (0)
+enum{
+       PORT_DATA = 0x0378,
+       PORT_BUSY,
+       PORT_CONTROL
+};
+
+int _inp(int);
+#if ASM_ENABLE==0
+void _outp(int, int);
+#else
+static inline void _outp(int address, int data){
+       asm(
+               " movl %0,%%edx\n"
+               " movl %1,%%eax\n"
+               " out %%al,%%dx\n"
+               :: "q"(address), "q"(data): "%edx", "%eax"
+       );
+}
+#endif
+
+#endif
diff --git a/client/tag/0.6.2/profile/profile.mak b/client/tag/0.6.2/profile/profile.mak
new file mode 100644 (file)
index 0000000..3a9fb7f
--- /dev/null
@@ -0,0 +1,9 @@
+include ../file.mak
+CFLAGS += -O2 -pg -DDEBUG=0
+VPATH = ..
+$(TARGET): $(OBJ)
+       $(CC) -pg -o $@ $(OBJ)
+
+include ../rule.mak
+#---- depend file ----
+-include unagi.d
diff --git a/client/tag/0.6.2/reader_dozeu.h b/client/tag/0.6.2/reader_dozeu.h
new file mode 100644 (file)
index 0000000..6edf4f5
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _READER_DOZEU_H_
+#define _READER_DOZEU_H_
+const struct reader_driver DRIVER_DOZEU;
+#endif
diff --git a/client/tag/0.6.2/reader_hongkongfc.c b/client/tag/0.6.2/reader_hongkongfc.c
new file mode 100644 (file)
index 0000000..f9db794
--- /dev/null
@@ -0,0 +1,401 @@
+/*
+famicom ROM cartridge utility - unagi
+hongkong FC driver
+
+Copyright (C) 2008 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+»ÅÍÍÉÔÌÀÍ×ÁÇ:
+  * 74138 ¤Î channel select ¤À¤¬¡¢¥Ñ¥é¥ì¥ë¥Ý¡¼¥È¤Î¥Ç¡¼¥¿¤ÎÊý¸þ¤òÊѹ¹¤¹¤ë¤È¡¢ÆÃÄê¤Î¥Á¥ã¥ó¥Í¥ë¤Î¥Ç¡¼¥¿¤¬Ç˲õ¤µ¤ì¤ë
+    * Ç˲õ¤µ¤ì¤ë¤¬¡¢Ç˲õÀ褬ÀßÄê¤Ç¤­¤ë¤é¤·¤¯¤½¤ì¤Ë¤·¤¿
+*/
+#include "type.h"
+#include "paralellport.h"
+#include "reader_master.h"
+#include "reader_hongkongfc.h"
+#include "hard_hongkongfc.h"
+
+enum{
+       PORT_CONTROL_MASK_XOR = 0x03, //bit01 invert
+       PORT_CONTROL_READ = 0,
+       PORT_CONTROL_WRITE
+};
+
+static inline int busy_get(void)
+{
+       int d = _inp(PORT_BUSY);
+       d >>= 7;
+       return d ^ 1;
+}
+
+static inline void port_control_write(int s, int rw)
+{
+       if(rw == PORT_CONTROL_READ){ 
+               //H:BUS->PC
+               s = bit_set(s, BITNUM_CONTROL_DIRECTION);
+       }else{
+               //L:PC->BUS
+               s = bit_clear(s, BITNUM_CONTROL_DIRECTION);
+       }
+       s = bit_clear(s, BITNUM_CONTROL_INTERRUPT);
+       s ^= PORT_CONTROL_MASK_XOR;
+       _outp(PORT_CONTROL, s);
+}
+
+static inline void data_port_latch(int select, long data)
+{
+       select <<= BITNUM_CONTROL_DATA_SELECT;
+       select = bit_set(select, BITNUM_CONTROL_DATA_LATCH);
+       port_control_write(select, PORT_CONTROL_WRITE);
+       _outp(PORT_DATA, data);
+       select = bit_clear(select, BITNUM_CONTROL_DATA_LATCH);
+       port_control_write(select, PORT_CONTROL_WRITE);
+}
+
+enum{ADDRESS_CPU_OPEN, ADDRESS_CPU_CLOSE};
+static inline void address_set(long address)
+{
+       long address_h = address >> 8;
+       long address_l = address & 0xff;
+       data_port_latch(DATA_SELECT_A15toA8, address_h);
+       data_port_latch(DATA_SELECT_A7toA0, address_l);
+}
+
+static inline u8 data_port_get(long address, int bus)
+{
+       address_set(address);
+       if(bus != 0){
+               data_port_latch(DATA_SELECT_CONTROL, bus);
+       }
+       port_control_write(DATA_SELECT_BREAK_DATA << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_WRITE);
+       int s = DATA_SELECT_READ << BITNUM_CONTROL_DATA_SELECT;
+       s = bit_set(s, BITNUM_CONTROL_DATA_LATCH);
+       port_control_write(s, PORT_CONTROL_READ);
+       return (u8) _inp(PORT_DATA);
+}
+
+/*
+ËÜÂΠA23-A16 port ¤Ë latch ¤µ¤»¤¿¤¢¤È¤Ë¡¢
+fc adapater ÆâÉô¤Ë¤µ¤é¤Ë latch ¤µ¤»¤ë¡£
+*/
+static void data_port_set(int c, long data)
+{
+       data_port_latch(DATA_SELECT_WRITEDATA, data);
+       data_port_latch(DATA_SELECT_CONTROL, c);
+       c = bit_set(c, BITNUM_WRITEDATA_LATCH);
+       data_port_latch(DATA_SELECT_CONTROL, c);
+}
+
+// /A15 ¤À¤±¤ò»ÈÍѤ¹¤ë
+static const int BUS_CONTROL_CPU_READ = (
+       (1 << BITNUM_PPU_OUTPUT) |
+       (1 << BITNUM_PPU_RW) |
+       (1 << BITNUM_PPU_SELECT) |
+       (1 << BITNUM_WRITEDATA_OUTPUT) |
+       (0 << BITNUM_WRITEDATA_LATCH) |
+       (1 << BITNUM_CPU_M2) |
+       (1 << BITNUM_CPU_RW)
+);
+static const int BUS_CONTROL_PPU_READ = (
+       (0 << BITNUM_PPU_OUTPUT) |
+       (1 << BITNUM_PPU_RW) |
+       (0 << BITNUM_PPU_SELECT) |
+       (1 << BITNUM_WRITEDATA_OUTPUT) |
+       (0 << BITNUM_WRITEDATA_LATCH) |
+       (1 << BITNUM_CPU_M2) |
+       (1 << BITNUM_CPU_RW)
+);
+//static const int BUS_CONTROL_BUS_STANDBY = BUS_CONTROL_CPU_READ; //¥¨¥é¡¼¤Ë¤Ê¤ë
+#define BUS_CONTROL_BUS_STANDBY BUS_CONTROL_CPU_READ
+/*
+namcot ¤Î SRAM ÉÕ¥«¡¼¥È¥ê¥Ã¥¸¤Ï¦Õ2¤ò0x80²ó¾å¤²¤ë¤È½ÐÎϤ¬°ÂÄꤹ¤ë
+RAM ¥¢¥À¥×¥¿¤âƱÍÍ??
+ÉÔ°ÂÄê»þ¤Ï CPU ¤È PPU ¤Î data ¤¬º®¹ç¤µ¤ì¤Æ¤¤¤ëʪ¤¬¤Ç¤Æ¤¤¤ëµ¤¤¬¤¹¤ë
+*/
+static void hk_init(void)
+{
+       int c = BUS_CONTROL_CPU_READ;
+       int i = 0x80;
+       while(i != 0){
+               c = bit_set(c, BITNUM_CPU_M2);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               c = bit_clear(c, BITNUM_CPU_M2);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               i--;
+       }
+}
+
+static void hk_cpu_read(long address, long length, u8 *data)
+{
+       //fc bus ½é´ü²½
+       data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_CPU_READ);
+       //A15 ¤òȿž¤·¡¢ /ROMCS ¤Ë¤·¤¿¤â¤Î¤òÅϤ¹
+       address ^= ADDRESS_MASK_A15;
+       while(length != 0){
+               *data = data_port_get(address, 0);
+               address++;
+               data++;
+               length--;
+       }
+}
+
+//patch. charcter ¤Î½ñ¤­¹þ¤ß¤Î°ÂÄ꤬²þÁ±¤µ¤ì¤¿¤éºï½ü¤¹¤ë
+int hongkong_flash_patch = 0;
+static void hk_ppu_read(long address, long length, u8 *data)
+{
+       if(hongkong_flash_patch == 0){
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
+       }else{
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_PPU_READ);
+       }
+       
+       address &= ADDRESS_MASK_A0toA12; //PPU charcter data area mask
+       address |= ADDRESS_MASK_A15; //CPU area disk
+       while(length != 0){
+               if(hongkong_flash_patch == 0){
+                       *data = data_port_get(address, BUS_CONTROL_PPU_READ);
+               }else{
+                       *data = data_port_get(address, 0); 
+               }
+               address++;
+               data++;
+               length--;
+               if(hongkong_flash_patch == 0){
+                       data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
+               }
+       }
+}
+
+static inline void cpu_romcs_set(long address)
+{
+       data_port_latch(DATA_SELECT_A15toA8, address >> 8);
+}
+
+static void hk_cpu_write_6502(long address, long length, const uint8_t *data)
+{
+       while(length != 0){
+               int c = BUS_CONTROL_BUS_STANDBY;
+               //Á´¤Æ¤Î¥Ð¥¹¤ò»ß¤á¤ë
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               // /rom ¤ò H ¤Ë¤·¤Æ¥Ð¥¹¤ò»ß¤á¤ë
+               address_set(address | ADDRESS_MASK_A15);
+               
+               //¦Õ2 = L, R/W=L, address set, data set
+               c = bit_clear(c, BITNUM_CPU_M2);
+               data_port_set(c, *data); //latch¤Ï¤³¤Î´Ø¿ôÆâÉô¤Ç¹Ô¤¦
+               if(address & ADDRESS_MASK_A15){
+                       cpu_romcs_set(address & ADDRESS_MASK_A0toA14);
+               }
+               c = bit_clear(c, BITNUM_CPU_RW);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //wait(wait_msec);
+               //¦Õ2 = H, data out
+               c = bit_set(c, BITNUM_CPU_M2);
+               c = bit_clear(c, BITNUM_WRITEDATA_OUTPUT);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //wait(wait_msec);
+               //¦Õ2 = L, H ¤Ë¤¹¤ë¤Þ¤Ç R/W, address, Data ¤òÍ­¸ú¾õÂ֤ˤ¹¤ë
+               c = bit_clear(c, BITNUM_CPU_M2);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //wait(wait_msec);
+               //¦Õ2 = H, R/W = H, address disable, data out disable
+               if(address & ADDRESS_MASK_A15){
+                       //address & ADDRESS_MASK_A15 ¤ÇÆ°¤¤¤Æ¤¿..?
+                       cpu_romcs_set(address | ADDRESS_MASK_A15);
+               }
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
+               address += 1;
+               data += 1;
+               length -= 1;
+       }
+}
+
+//onajimi ¤À¤È /CS ¤È /OE ¤¬Æ±¤¸¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¬¡¢hongkong¤À¤È»ß¤á¤é¤ì¤ë¡£½ñ¤­¹þ¤ß»þ¤Ë output enable ¤Ï H ¤Ç¤¢¤ë¤Ù¤­¡£
+static void hk_ppu_write(long address, long length, const uint8_t *data)
+{
+       while(address != 0){
+               int c = BUS_CONTROL_BUS_STANDBY;
+               c = bit_clear(c, BITNUM_CPU_M2); //¤¿¤Ö¤ó¤¤¤ë
+               //c = bit_clear(c, BITNUM_CPU_RW);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //cpu rom ¤ò»ß¤á¤¿¥¢¥É¥ì¥¹¤òÅϤ¹
+               address_set((address & ADDRESS_MASK_A0toA12) | ADDRESS_MASK_A15);
+               data_port_set(c, *data); 
+       //      data_port_latch(DATA_SELECT_CONTROL, c);
+               //CS down
+               c = bit_clear(c, BITNUM_PPU_SELECT);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //WE down
+               c = bit_clear(c, BITNUM_WRITEDATA_OUTPUT);
+               c = bit_clear(c, BITNUM_PPU_RW);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //WE up
+               c = bit_set(c, BITNUM_PPU_RW);
+               data_port_latch(DATA_SELECT_CONTROL, c);
+               //CS up
+       //      c = bit_set(c, BITNUM_WRITEDATA_OUTPUT);
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
+               
+               address += 1;
+               data += 1;
+               length -= 1;
+       }
+}
+
+#if 0
+static const int FLASH_CPU_WRITE = (
+       (1 << BITNUM_PPU_OUTPUT) |
+       (1 << BITNUM_PPU_RW) |
+       (1 << BITNUM_PPU_SELECT) |
+       (1 << BITNUM_WRITEDATA_OUTPUT) |
+       (0 << BITNUM_WRITEDATA_LATCH) |
+       (0 << BITNUM_CPU_M2) |
+       (1 << BITNUM_CPU_RW)
+);
+
+static void hk_cpu_flash_write(long address, long data)
+{
+       int c = FLASH_CPU_WRITE;
+       //Á´¤Æ¤Î¥Ð¥¹¤ò»ß¤á¤ë
+       data_port_latch(DATA_SELECT_CONTROL, c);
+       address_set(address | ADDRESS_MASK_A15);
+       data_port_set(c, data);
+/*
+W29C020
+During the byte-load cycle, the addresses are latched by the falling 
+edge of either CE or WE,whichever occurs last. The data are latched 
+by the rising edge of either CE or WE, whicheveroccurs first.
+W49F002
+#CS or #WE ¤¬¹ß¤ê¤¿¤È¤­¤Ë address latch
+#CS or #WE ¤¬¾å¤¬¤Ã¤¿¤È¤­¤Ë data latch
+
+hongkong ·Ï¤Ï address ¤È /ROMCS ¤¬Æ±¤¸¥Ð¥¤¥È¤Ç¡¢ /CS À©¸æ¤Ë¤¹¤ë¤È
+hongkong ¥Ç¡¼¥¿Ç˲õ+¥¢¥É¥ì¥¹ÉÔ°ÂÄê¤Ë¤Ê¤ë¤Î¤Ç¡¢/WE À©¸æ¤Ë¤·¤Ê¤¤¤ÈÆ°¤«¤Ê¤¤¡£
+*/
+       //CS down
+       cpu_romcs_set(address & ADDRESS_MASK_A0toA14);
+       //WE down
+       c = bit_clear(c, BITNUM_WRITEDATA_OUTPUT);
+       c = bit_clear(c, BITNUM_CPU_RW);
+//     c = bit_clear(c, BITNUM_CPU_M2);
+       data_port_latch(DATA_SELECT_CONTROL, c);
+       //WE up
+       data_port_latch(DATA_SELECT_CONTROL, FLASH_CPU_WRITE);
+       //CS up
+       cpu_romcs_set(address | ADDRESS_MASK_A15);
+}
+#endif
+
+const struct reader_driver DRIVER_HONGKONGFC = {
+       .name = "hongkongfc",
+       .open_or_close = paralellport_open_or_close,
+       .init = hk_init,
+       .cpu_read = hk_cpu_read,
+       .ppu_read = hk_ppu_read,
+       .cpu_write_6502 = hk_cpu_write_6502,
+       .ppu_write = hk_ppu_write,
+       .flash_support = NG,
+       .cpu_flash_config = NULL, .cpu_flash_erase = NULL, .cpu_flash_program = NULL,
+       .ppu_flash_config = NULL, .ppu_flash_erase = NULL, .ppu_flash_program = NULL
+};
+
+#ifdef TEST
+#include "giveio.h"
+#include <stdio.h>
+#include <stdlib.h>
+static void data_show(u8 *d, int length)
+{
+       int sum = 0;
+       int offset = 0;
+       while(length != 0){
+               char safix;
+               switch(offset & 0xf){
+               default:
+                       safix = ' ';
+                       break;
+               case 7:
+                       safix = '-';
+                       break;
+               case 0xf:
+                       safix = '\n';
+                       break;
+               }
+               printf("%02x%c", *d, safix);
+               sum += *d;
+               d++;
+               offset++;
+               length--;
+       }
+       printf("sum 0x%06x", sum);
+}
+
+int main(int c, char **v)
+{
+       const int gg = giveio_start();
+       switch(gg){
+       case GIVEIO_OPEN:
+       case GIVEIO_START:
+       case GIVEIO_WIN95:
+               break;
+       default:
+       case GIVEIO_ERROR:
+               printf("Can't Access Direct IO %d\n", gg);
+               return 0;
+       }
+
+       long d = strtol(v[2], NULL, 0x10);
+
+       switch(v[1][0]){
+       case 'w':
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_BUS_STANDBY);
+               port_control_write(DATA_SELECT_WRITE << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_WRITE);
+               _outp(PORT_DATA, d);
+               break;
+       case 'c':
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_CPU_READ);
+               address_set(d ^ ADDRESS_MASK_A15);
+               port_control_write(DATA_SELECT_BREAK_DATA << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_WRITE);
+               port_control_write(DATA_SELECT_READ << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_READ);
+               printf("%02x\n", _inp(PORT_DATA));
+               break;
+       case 'C':{
+               const long length = 0x1000;
+               u8 data[length];
+               hk_cpu_read(d, length, data);
+               data_show(data, length);
+               }
+               break;
+       case 'p':
+               data_port_latch(DATA_SELECT_CONTROL, BUS_CONTROL_PPU_READ);
+               address_set(d | ADDRESS_MASK_A15, ADDRESS_RESET);
+               port_control_write(DATA_SELECT_READ << BITNUM_CONTROL_DATA_SELECT, PORT_CONTROL_READ);
+               printf("%02x\n", _inp(PORT_DATA));
+               break;
+       case 'P':{
+               const long length = 0x200;
+               u8 data[length];
+               hk_ppu_read(d, length, data);
+               data_show(data, length);
+               }
+               break;
+       }
+       
+       if(gg != GIVEIO_WIN95){
+               giveio_stop(GIVEIO_STOP);
+       }
+       return 0;
+}
+#endif
diff --git a/client/tag/0.6.2/reader_hongkongfc.h b/client/tag/0.6.2/reader_hongkongfc.h
new file mode 100644 (file)
index 0000000..c568bce
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _READER_HONGKONGFC_H_
+#define _READER_HONGKONGFC_H_
+const struct reader_driver DRIVER_HONGKONGFC;
+#endif
diff --git a/client/tag/0.6.2/reader_kazzo.c b/client/tag/0.6.2/reader_kazzo.c
new file mode 100644 (file)
index 0000000..a7fdfde
--- /dev/null
@@ -0,0 +1,333 @@
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+#include <usb.h>
+#include <kazzo_request.h>
+#include <kazzo_task.h>
+#include "type.h"
+#include "memory_manage.h"
+#include "reader_master.h"
+#include "usb_device.h"
+#include "reader_kazzo.h"
+#include "widget.h"
+
+static inline usb_dev_handle *device_open(void)
+{
+       usb_dev_handle *handle = NULL;
+       const unsigned char rawVid[2] = {USB_CFG_VENDOR_ID};
+       const unsigned char rawPid[2] = {USB_CFG_DEVICE_ID};
+       char vendor[] = {USB_CFG_VENDOR_NAME, 0};
+       char product[] = {USB_CFG_DEVICE_NAME, 0};
+       int vid, pid;
+
+       /* compute VID/PID from usbconfig.h so that there is a central source of information */
+       vid = (rawVid[1] << 8) | rawVid[0];
+       pid = (rawPid[1] << 8) | rawPid[0];
+
+       if(usbOpenDevice(&handle, vid, vendor, pid, product, NULL, NULL, NULL) == 0){
+               return handle;
+       }
+       return NULL;
+}
+
+struct reader_handle{
+       usb_dev_handle *handle;
+       void (*except)(const wgChar *str);
+};
+
+static const struct reader_handle *kazzo_open(void (*except)(const wgChar *str), const struct textcontrol *log)
+{
+       struct reader_handle *h;
+       usb_dev_handle *usb = device_open();
+       if(usb == NULL){
+               return NULL;
+       }
+       h = Malloc(sizeof(struct reader_handle));
+       h->handle = usb;
+       h->except = except;
+       return h;
+}
+
+static void kazzo_close(const struct reader_handle *h)
+{
+       usb_close(h->handle);
+       Free((void *) h);
+}
+
+static void throw(const struct reader_handle *h)
+{
+#ifdef _UNICODE
+               size_t length = strlen(usb_strerror());
+               wchar_t *mm = Malloc(sizeof(wchar_t) * (length + 1));
+               mbstowcs(mm, usb_strerror(), length + 1);
+               h->except(mm);
+               Free(mm);
+#else
+               h->except(usb_strerror());
+#endif
+}
+
+enum{
+       TIMEOUT = 4000
+};
+//-------- read sequence --------
+static void device_read(const struct reader_handle *h, enum request r, enum index index, long address, long length, uint8_t *data)
+{
+       int cnt = usb_control_msg(
+               h->handle, 
+               USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 
+               r, address, 
+               index, (char *) data, length, TIMEOUT
+       );
+       if(cnt != length){
+               throw(h);
+//             puts(__FUNCTION__);
+//             puts(usb_strerror());
+//             exit(1);
+       }
+}
+static void read_main(const struct reader_handle *h, const struct gauge *g, const enum request r, enum index index, long address, long length, uint8_t *data)
+{
+       const int packet = READ_PACKET_SIZE;
+       while(length >= packet){
+               device_read(
+                       h, r, index, address, packet, data
+               );
+               data += packet;
+               address += packet;
+               length -= packet;
+               g->value_add(g->bar, g->label, packet);
+       }
+       if(length != 0){
+               device_read(
+                       h, r, index, address, length, data
+               );
+               g->value_add(g->bar, g->label, packet);
+       }
+}
+static void kazzo_cpu_read(const struct reader_handle *h, const struct gauge *g, long address, long length, uint8_t *data)
+{
+       read_main(h, g, REQUEST_CPU_READ, INDEX_IMPLIED, address, length, data);
+//     read_main(REQUEST_CPU_READ_6502, address, length, data);
+}
+static void kazzo_ppu_read(const struct reader_handle *h, const struct gauge *g, long address, long length, uint8_t *data)
+{
+       read_main(h, g, REQUEST_PPU_READ, INDEX_IMPLIED, address, length, data);
+}
+//-------- write sequence --------
+/*
+When host send data that contains 0xff many times, v-usb losts some 
+bits. To prevent losting bits, mask data xor 0xa5;
+*/
+static void device_write(const struct reader_handle *h, enum request w, enum index index, long address, long length, const uint8_t *data)
+{
+       uint8_t *d = Malloc(length);
+       int i;
+       memcpy(d, data, length);
+       for(i = 0; i < length; i++){
+               d[i] ^= 0xa5;
+       }
+       int cnt = usb_control_msg(
+               h->handle, 
+               USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT,
+               w, address, 
+               index, (char *) d, length, TIMEOUT
+       );
+       if(cnt != length){
+               throw(h);
+//             puts(__FUNCTION__);
+//             puts(usb_strerror());
+//             exit(1);
+       }
+       Free(d);
+}
+
+static void kazzo_init(const struct reader_handle *h)
+{
+       device_write(h, REQUEST_PHI2_INIT, INDEX_IMPLIED, 0, 0, NULL);
+}
+
+static void write_memory(const struct reader_handle *h, enum request r, long address, long length, const uint8_t *data)
+{
+       while(length != 0){
+               long l = length >= FLASH_PACKET_SIZE ? FLASH_PACKET_SIZE : length;
+               device_write(h, r, INDEX_IMPLIED, address, l, data);
+               address += l;
+               data += l;
+               length -= l;
+       }
+}
+static void kazzo_cpu_write_6502(const struct reader_handle *h, long address, long length, const uint8_t *data)
+{
+       write_memory(h, REQUEST_CPU_WRITE_6502, address, length, data);
+}
+
+static void kazzo_ppu_write(const struct reader_handle *h, long address, long length, const uint8_t *data)
+{
+       write_memory(h, REQUEST_PPU_WRITE, address, length, data);
+}
+
+static inline void pack_short_le(long l, uint8_t *t)
+{
+       t[0] = l & 0xff;
+       t[1] = (l >> 8) & 0xff;
+}
+static void flash_config(const struct reader_handle *h, enum request r, enum index index, long c000x, long c2aaa, long c5555, long unit, bool retry)
+{
+       const int size = 2 * 4 + 1;
+       uint8_t buf[size];
+       uint8_t *t = buf;
+       assert(unit >= 1 && unit < 0x400);
+       pack_short_le(c000x, t);
+       t += sizeof(uint16_t);
+       pack_short_le(c2aaa, t);
+       t += sizeof(uint16_t);
+       pack_short_le(c5555, t);
+       t += sizeof(uint16_t);
+       pack_short_le(unit, t);
+       t += sizeof(uint16_t);
+       *t = retry == true ? 1 : 0;
+       device_write(h, r, index, 0, size, buf);
+}
+static void kazzo_cpu_flash_config(const struct reader_handle *h, long c000x, long c2aaa, long c5555, long unit, bool retry)
+{
+       flash_config(h, REQUEST_FLASH_CONFIG_SET, INDEX_CPU, c000x, c2aaa, c5555, unit, retry);
+}
+static void kazzo_ppu_flash_config(const struct reader_handle *h, long c000x, long c2aaa, long c5555, long unit, bool retry)
+{
+       flash_config(h, REQUEST_FLASH_CONFIG_SET, INDEX_PPU, c000x, c2aaa, c5555, unit, retry);
+}
+
+static inline void flash_execute(const struct reader_handle *h, enum request p, enum request s, enum index index, long address, const uint8_t *data, int size, bool dowait, bool skip)
+{
+       uint8_t status;
+       int filled = 1;
+       if(skip == true){
+               uint8_t *filldata = Malloc(size);
+               memset(filldata, 0xff, size);
+               filled = memcmp(filldata, data, size);
+               if(0){ //nesasm fill 0 to unused area. When this routine is enabled, programming will speed up and compare mode will not work.
+                       memset(filldata, 0, size);
+                       filled &= memcmp(filldata, data, size);
+               }
+               Free(filldata);
+       }
+       if(filled != 0){
+               device_write(h, p, index, address, size, data);
+       }
+       if(dowait == true){
+               do{
+                       wait(10);
+                       device_read(h, s, index, 0, 1, &status);
+               }while(status != KAZZO_TASK_FLASH_IDLE);
+       }
+}
+static void kazzo_cpu_flash_erase(const struct reader_handle *h, long address, bool dowait)
+{
+       flash_execute(h, REQUEST_FLASH_ERASE, REQUEST_FLASH_STATUS, INDEX_CPU, address, NULL, 0, dowait, false);
+}
+static void kazzo_ppu_flash_erase(const struct reader_handle *h, long address, bool dowait)
+{
+       flash_execute(h, REQUEST_FLASH_ERASE, REQUEST_FLASH_STATUS, INDEX_PPU, address, NULL, 0, dowait, false);
+}
+
+static void dump(const uint8_t *w, const uint8_t *r, long length)
+{
+       while(length != 0){
+               if(memcmp(r, w, 0x10) != 0){
+                       int i;
+                       printf("* ");
+                       for(i = 0; i < 0x10; i+=4){
+                               printf("%02x %02x %02x %02x-", w[i], w[i+1], w[i+2], w[i+3]);
+                       }
+                       puts("");
+                       printf("  ");
+                       for(i = 0; i < 0x10; i+=4){
+                               printf("%02x %02x %02x %02x-", r[i], r[i+1], r[i+2], r[i+3]);
+                       }
+                       puts("");
+               }
+               w += 0x10;
+               r += 0x10;
+               length -= 0x10;
+       }
+}
+static long flash_program(const struct reader_handle *h, const struct gauge *g, enum index index, long address, long length, const uint8_t *data, bool dowait, bool skip)
+{
+       enum request p = REQUEST_FLASH_PROGRAM;
+       enum request s = REQUEST_FLASH_STATUS;
+       if(dowait == false){
+               flash_execute(h, p, s, index, address, data, FLASH_PACKET_SIZE, dowait, skip);
+               g->value_add(g->bar, g->label, FLASH_PACKET_SIZE);
+               return FLASH_PACKET_SIZE;
+       }
+       long count = 0;
+       uint8_t *d = Malloc(FLASH_PACKET_SIZE);
+       while(length >= FLASH_PACKET_SIZE){
+               flash_execute(h, p, s, index, address, data, FLASH_PACKET_SIZE, dowait, skip);
+               if(0){
+                       //device_read(handle, REQUEST_FLASH_BUFFER_GET, index, 0, FLASH_PACKET_SIZE, d);
+                       if(memcmp(d, data, FLASH_PACKET_SIZE) != 0){
+                               puts("packet send error");
+                               dump(data, d, FLASH_PACKET_SIZE);
+                       }
+               }
+               g->value_add(g->bar, g->label, FLASH_PACKET_SIZE);
+               address += FLASH_PACKET_SIZE;
+               data += FLASH_PACKET_SIZE;
+               count += FLASH_PACKET_SIZE;
+               length -= FLASH_PACKET_SIZE;
+       }
+       Free(d);
+       return count;
+}
+static long kazzo_cpu_flash_program(const struct reader_handle *h, const struct gauge *g, long address, long length, const uint8_t *data, bool dowait, bool skip)
+{
+       return flash_program(h, g, INDEX_CPU, address, length, data, dowait, skip);
+}
+static long kazzo_ppu_flash_program(const struct reader_handle *h, const struct gauge *g, long address, long length, const uint8_t *data, bool dowait, bool skip)
+{
+       return flash_program(h, g, INDEX_PPU, address, length, data, dowait, skip);
+}
+
+static void kazzo_flash_status(const struct reader_handle *h, uint8_t s[2])
+{
+       read_main(h, &GAUGE_DUMMY, REQUEST_FLASH_STATUS, INDEX_BOTH, 0, 2, s);
+}
+static void kazzo_cpu_flash_device_get(const struct reader_handle *h, uint8_t s[2])
+{
+       read_main(h, &GAUGE_DUMMY, REQUEST_FLASH_DEVICE, INDEX_CPU, 0, 2, s);
+}
+static void kazzo_ppu_flash_device_get(const struct reader_handle *h, uint8_t s[2])
+{
+       read_main(h, &GAUGE_DUMMY, REQUEST_FLASH_DEVICE, INDEX_PPU, 0, 2, s);
+}
+static uint8_t kazzo_vram_connection(const struct reader_handle *h)
+{
+       uint8_t s;
+       read_main(h, &GAUGE_DUMMY, REQUEST_VRAM_CONNECTION, INDEX_IMPLIED, 0, 1, &s);
+       return s;
+}
+const struct reader_driver DRIVER_KAZZO = {
+       .cpu = {
+               .memory_read = kazzo_cpu_read, 
+               .memory_write = kazzo_cpu_write_6502,
+               .flash_config = kazzo_cpu_flash_config,
+               .flash_erase = kazzo_cpu_flash_erase,
+               .flash_program = kazzo_cpu_flash_program,
+               .flash_device_get = kazzo_cpu_flash_device_get
+       }, .ppu = {
+               .memory_read = kazzo_ppu_read,
+               .memory_write = kazzo_ppu_write,
+               .flash_config = kazzo_ppu_flash_config,
+               .flash_erase = kazzo_ppu_flash_erase,
+               .flash_program = kazzo_ppu_flash_program,
+               .flash_device_get = kazzo_ppu_flash_device_get
+       }, .control  = {
+               .name = wgT("kazzo"),
+               .open = kazzo_open, .close = kazzo_close,
+               .init = kazzo_init,
+               .flash_status = kazzo_flash_status,
+               .vram_connection = kazzo_vram_connection
+       }
+};
diff --git a/client/tag/0.6.2/reader_kazzo.h b/client/tag/0.6.2/reader_kazzo.h
new file mode 100644 (file)
index 0000000..3a831ae
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _READER_KAZZO_H_
+#define _READER_KAZZO_H_
+extern const struct reader_driver DRIVER_KAZZO;
+#endif
diff --git a/client/tag/0.6.2/reader_master.c b/client/tag/0.6.2/reader_master.c
new file mode 100644 (file)
index 0000000..cf0d4eb
--- /dev/null
@@ -0,0 +1,55 @@
+#include <assert.h>
+#include <string.h>
+#include "giveio.h"
+#include "reader_master.h"
+#include "reader_onajimi.h"
+#include "reader_hongkongfc.h"
+//#include "reader_dozeu.h"
+#include "reader_kazzo.h"
+
+int paralellport_open_or_close(enum reader_control oc)
+{
+       static int giveio_status;
+       switch(oc){
+       case READER_OPEN:
+               giveio_status = giveio_start();
+               switch(giveio_status){
+               case GIVEIO_OPEN:
+               case GIVEIO_START:
+               case GIVEIO_WIN95:
+                       break;
+               default:
+               case GIVEIO_ERROR:
+                       //printf("%s Can't Access Direct IO %d\n", __FILE__, giveio_status);
+                       return NG;
+               }
+               break;
+       case READER_CLOSE:
+               if(giveio_status != GIVEIO_WIN95){
+                       giveio_stop(GIVEIO_STOP);
+               }
+               break;
+       default:
+               assert(0);
+               break;
+       }
+       return OK;
+}
+
+const struct reader_driver *reader_driver_get(const char *name)
+{
+       static const struct reader_driver *DRIVER_LIST[] = {
+               &DRIVER_ONAJIMI, &DRIVER_HONGKONGFC, //&DRIVER_DOZEU,
+               &DRIVER_KAZZO,
+               NULL
+       };
+       const struct reader_driver **d;
+       d = DRIVER_LIST;
+       while(*d != NULL){
+               if(strcmp(name, (*d)->name) == 0){
+                       return *d;
+               }
+               d++;
+       }
+       return NULL;
+}
diff --git a/client/tag/0.6.2/reader_master.h b/client/tag/0.6.2/reader_master.h
new file mode 100644 (file)
index 0000000..eae5af8
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef _READER_MASTER_H_
+#define _READER_MASTER_H_
+#include "type.h"
+#ifdef WIN32
+ #include <windows.h>
+#else
+ #include <unistd.h>
+#endif
+
+struct textcontrol;
+struct gauge;
+struct reader_handle;
+
+struct reader_memory_access{
+       void (*memory_read)(const struct reader_handle *h, const struct gauge *g, long address, long length, uint8_t *data);
+       void (*memory_write)(const struct reader_handle *h, long address, long length, const uint8_t *data);
+       void (*flash_config)(const struct reader_handle *h, long c000x, long c2aaa, long c5555, long unit, bool retry);
+       void (*flash_erase)(const struct reader_handle *h, long address, bool wait);
+       long (*flash_program)(const struct reader_handle *h, const struct gauge *g, long address, long length, const uint8_t *data, bool wait, bool skip);
+       void (*flash_device_get)(const struct reader_handle *h, uint8_t s[2]);
+};
+struct reader_control{
+       const wgChar *name;
+       const struct reader_handle *(*open)(void (*except)(const wgChar *str), const struct textcontrol *log);
+       void (*close)(const struct reader_handle *h);
+       void (*init)(const struct reader_handle *h);
+       void (*flash_status)(const struct reader_handle *h, uint8_t s[2]);
+       uint8_t (*vram_connection)(const struct reader_handle *h);
+};
+struct reader_driver{
+       const struct reader_control control;
+       const struct reader_memory_access cpu, ppu;
+};
+
+static inline void wait(long msec)
+{
+       if(msec == 0){
+               return;
+       }
+#ifdef WIN32
+       Sleep(msec);
+#else
+       usleep(msec * 1000);
+#endif
+}
+#endif
diff --git a/client/tag/0.6.2/reader_onajimi.c b/client/tag/0.6.2/reader_onajimi.c
new file mode 100644 (file)
index 0000000..eed56dc
--- /dev/null
@@ -0,0 +1,389 @@
+/*
+famicom ROM cartridge utility - unagi
+emuste.net ¤Ç¤ª¤Ê¤¸¤ß¤Î¤â¤Î¤Î¥Ï¡¼¥É¥É¥é¥¤¥Ð
+
+Copyright (C) 2008 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+memo:
+* -O0 ¤Ê¤é inline asm ¤Ç¤âÈ¿±þ¤Ç¤­¤ë¤¬¡¢-O2 ¤À¤ÈÆ°¤«¤Ê¤¤
+ * Í½ÁÛ¤ËÈ¿¤·¤Æ out ¤ÏÆ°¤¯¤¬¡¢ in ¤Ë wait ¤¬É¬Íפߤ¿¤¤
+* gcc ¤Î¥¢¥»¥ó¥Ö¥é¤Ï x86 ¤Ç¤¢¤í¤¦¤È src,dst ¤Î½ç¤Çȿž¤·¤Æ¤¤¤ë
+* http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2A_i.pdf
+ * out,in ¤Î¥¢¥É¥ì¥¹¤Ë dx ¤ò»È¤ï¤Ê¤¤¤È 8bit ¥¢¥É¥ì¥¹¤Ë¤Ê¤ë
+ * out,in ¤Î¥Ç¡¼¥¿¤Ï¥ì¥¸¥¹¥¿¤Ç¥Ç¡¼¥¿Éý¤¬ÊѤï¤ë al:8bit, ax:16bit, eax:32bit
+*/
+#include "type.h"
+#include "paralellport.h"
+#include "hard_onajimi.h"
+#include "reader_master.h"
+#include "reader_onajimi.h"
+
+static inline void bus_control(int data)
+{
+#if ASM_ENABLE==0
+       _outp(PORT_DATA, data);
+#else
+       asm(
+               " movl %0,%%edx\n"
+               " movl %1,%%eax\n"
+               " out %%al,%%dx\n"
+               :: "i"(PORT_DATA), "q"(data): "%edx", "%eax"
+       );
+#endif
+}
+
+/*
+CONTROL bit0 STROBE
+¥Ç¡¼¥¿¤¬È¿Å¾¤¹¤ë
+*/
+static inline void address_control(int data)
+{
+       data &= 0x01;
+       data ^= 0x01;
+#if ASM_ENABLE==0
+       _outp(PORT_CONTROL, data);
+#else
+       asm(
+               " movl %0,%%edx\n"
+               " movl %1,%%eax\n"
+               " out %%al,%%dx\n"
+               :: "i"(PORT_CONTROL), "q"(data): "%edx", "%eax"
+       );
+#endif
+}
+
+/* address control data & function */
+static long past_address = 0;
+
+static void address_reset(void)
+{
+       address_control(ADDRESS_RESET);
+       address_control(ADDRESS_ENABLE);
+       past_address = 0;
+}
+
+/*
+H->L ¤Çaddressincrement
+*/
+static inline void address_increment(int data)
+{
+       data = bit_set(data, BITNUM_ADDRESS_INCREMENT);
+       bus_control(data);
+
+       data = bit_clear(data, BITNUM_ADDRESS_INCREMENT);
+       bus_control(data);
+       past_address += 1;
+       past_address &= ADDRESS_MASK_A0toA14;
+}
+
+static void address_set(long address, int control)
+{
+       address &= ADDRESS_MASK_A0toA14;
+       long increment_count = address - past_address;
+       if(increment_count < 0){
+               address_reset();
+               increment_count = address;
+       }
+               
+       while(increment_count != 0){
+               address_increment(control);
+               increment_count -= 1;
+       }
+}
+
+/*
+STATUS bit7 BUSY
+¥Ç¡¼¥¿¤¬È¿Å¾¤¹¤ë
+*/
+static inline int data_bit_get(void)
+{
+#if ASM_ENABLE==1
+       int data;
+       asm(
+               " xorl %%eax,%%eax\n"
+               " movl %1,%%edx\n"
+               " in %%dx,%%al\n"
+               " movl %%eax,%0"
+               :"=q"(data) : "i"(PORT_BUSY) :"%edx", "%eax"
+       );
+#else
+       int data = _inp(PORT_BUSY);
+#endif
+       data >>= 7;
+       data &= 0x01;
+       return data ^ 0x01;
+}
+
+/* 
+L->H ¤Çshift 
+*/
+static inline void data_shift(int control)
+{
+       control = bit_clear(control, BITNUM_DATA_SHIFT_RIGHT);
+       bus_control(control);
+       control = bit_set(control, BITNUM_DATA_SHIFT_RIGHT);
+       bus_control(control);
+}
+
+/*ºÇ¾å°Ìbit¤«¤é½çÈ֤ˤȤë*/
+static u8 data_get(int control)
+{
+       int data = 0;
+       int i;
+       //fcbus 8bit data load, shift count reset
+       control = bit_set(control, BITNUM_DATA_DIRECTION);
+       data_shift(control);
+       //shift mode
+       control = bit_clear(control, BITNUM_DATA_DIRECTION);
+       bus_control(control);
+       for(i = 0; i < 8; i++){
+               data |= (data_bit_get() << i);
+               data_shift(control);
+       }
+       return (u8) data;
+}
+
+//¤³¤³¤Î data ¤Ï 0 or 1
+static inline int writedata_set(long data)
+{
+       data &= 1;
+       return data << BITNUM_DATA_WRITE_DATA;
+}
+
+static void data_set(int control, long data)
+{
+       int i;
+       for(i = 0; i < 8; i++){
+               control = bit_clear(control, BITNUM_DATA_WRITE_DATA);
+               control |= writedata_set(data >> i);
+               bus_control(control);
+               data_shift(control);
+       }
+}
+
+static const int BUS_CONTROL_INIT = (
+       ADDRESS_NOP | DATA_SHIFT_NOP |
+       (DATA_DIRECTION_READ << BITNUM_DATA_DIRECTION) |
+       (PPU_DISABLE << BITNUM_PPU_SELECT) |
+       (PPU_WRITE__CPU_DISABLE << BITNUM_CPU_M2) |
+       (CPU_RAM_SELECT << BITNUM_CPU_RAMROM_SELECT) |
+       (CPU_READ << BITNUM_CPU_RW)
+);
+static void reader_init(void)
+{
+       int c = BUS_CONTROL_INIT;
+       int i = 0x80;
+       bus_control(c);
+       address_reset();
+       /*
+       namcot bus °ÂÄê½èÃÖ
+       reader_hongkong »²¾È
+       */
+       while(i != 0){
+               c = bit_set(c, BITNUM_CPU_M2);
+               bus_control(c);
+               c = bit_clear(c, BITNUM_CPU_M2);
+               bus_control(c);
+               i--;
+       }
+}
+
+static const int BUS_CONTROL_CPU_READ = (
+       ADDRESS_NOP | DATA_SHIFT_NOP |
+       (DATA_DIRECTION_READ << BITNUM_DATA_DIRECTION) |
+       (PPU_DISABLE << BITNUM_PPU_SELECT) |
+       (PPU_READ__CPU_ENABLE << BITNUM_CPU_M2) | //H
+       (CPU_RAM_SELECT << BITNUM_CPU_RAMROM_SELECT) |
+       (CPU_READ << BITNUM_CPU_RW)
+);
+
+static const int BUS_CONTROL_PPU_READ = (
+       ADDRESS_NOP | DATA_SHIFT_NOP |
+       (DATA_DIRECTION_READ << BITNUM_DATA_DIRECTION) |
+       (PPU_READ__CPU_ENABLE << BITNUM_CPU_M2) |
+       (PPU_ENABLE << BITNUM_PPU_SELECT) |
+       (CPU_RAM_SELECT << BITNUM_CPU_RAMROM_SELECT) |
+       (CPU_READ << BITNUM_CPU_RW)
+);
+
+static const int BUS_CONTROL_BUS_WRITE = (
+       ADDRESS_NOP | DATA_SHIFT_NOP |
+       (DATA_DIRECTION_WRITE << BITNUM_DATA_DIRECTION) |
+       (PPU_READ__CPU_ENABLE << BITNUM_CPU_M2) |
+       (PPU_DISABLE << BITNUM_PPU_SELECT) |
+       (CPU_RAM_SELECT << BITNUM_CPU_RAMROM_SELECT) |
+       (CPU_READ << BITNUM_CPU_RW)
+);
+
+static void fc_bus_read(long address, long length, u8 *data, int control, int m2_control)
+{
+       address_set(address, control);
+       if(m2_control == M2_CONTROL_TRUE){
+               control = bit_clear(control, BITNUM_CPU_M2);
+               bus_control(control); //H->L: mapper ¤¬¥¢¥É¥ì¥¹¤ò¼è¤Ã¤Æ¤¯¤ë
+       }
+       while(length != 0){
+               if(m2_control == M2_CONTROL_TRUE){
+                       //L->H: mapper ¤¬ data ¤ò½Ð¤¹
+                       control = bit_set(control, BITNUM_CPU_M2);
+               }
+               *data = data_get(control);
+               if(m2_control == M2_CONTROL_TRUE){
+                       //H->L: ¤ª¤ä¤¹¤ß
+                       control = bit_clear(control, BITNUM_CPU_M2);
+                       bus_control(control);
+                       //L->H: increment
+                       control = bit_set(control, BITNUM_CPU_M2);
+               }
+               address_increment(control);
+
+               if(m2_control == M2_CONTROL_TRUE){
+                       //H->L: mapper ¤¬¥¢¥É¥ì¥¹¤ò¼è¤Ã¤Æ¤¯¤ë
+                       control = bit_clear(control, BITNUM_CPU_M2);
+                       bus_control(control);
+               }
+
+               data++;
+               length--;
+       }
+       control = bit_set(control, BITNUM_CPU_M2);
+}
+
+static void cpu_read(long address, long length, u8 *data)
+{
+       int control = BUS_CONTROL_CPU_READ;
+       if(address & ADDRESS_MASK_A15){
+               control = bit_clear(control, BITNUM_CPU_RAMROM_SELECT);
+       }
+       fc_bus_read(address, length, data, control, M2_CONTROL_TRUE);
+}
+
+static void ppu_read(long address, long length, u8 *data)
+{
+       fc_bus_read(address, length, data, BUS_CONTROL_PPU_READ, M2_CONTROL_FALSE);
+}
+/*
+6502 write cycle
+t   |01234
+----+-----
+¦Õ2 |HLHLH
+/ROM|HHxxH
+R/W |HHLLH
+
+0 H bus:addressset
+1 H->L bus:data set, mapper:address get
+2 L->H bus:data write
+3 H->L mapper: data write enable
+4 L->H mapper: data get, bus:close
+
+H:1, L:0, x:ROMareaaccess»þ0, ¤½¤ì°Ê³°1
+*/
+static void cpu_write_6502(long address, long length, const uint8_t *data)
+{
+       while(length != 0){
+               int control = BUS_CONTROL_BUS_WRITE;
+               //addressÀßÄê + Á´¤Æ¤Î¥Ð¥¹¤ò»ß¤á¤ë
+               address_set(address, control);
+
+               //¦Õ2 = L, R/W=L, data set, dataout
+               control = bit_clear(control, BITNUM_CPU_M2);
+               data_set(control, *data);
+               control = bit_clear(control, BITNUM_CPU_RW);
+               bus_control(control);
+               if(address & ADDRESS_MASK_A15){
+                       control = bit_clear(control, BITNUM_CPU_RAMROM_SELECT);
+               }
+               //wait(wait_msec);
+               
+               //¦Õ2 = H, data out
+               control = bit_set(control, BITNUM_CPU_M2);
+               bus_control(control);
+               //wait(wait_msec);
+               //¦Õ2 = L, H ¤Ë¤¹¤ë¤Þ¤Ç R/W, address, Data ¤òÍ­¸ú¾õÂ֤ˤ¹¤ë
+               control = bit_clear(control, BITNUM_CPU_M2);
+               bus_control(control);
+               //wait(wait_msec);
+               //¦Õ2 = H, R/W = H, address disable, data out disable
+               bus_control(BUS_CONTROL_BUS_WRITE);
+               
+               address += 1;
+               data += 1;
+               length--;
+       }
+}
+
+static void ppu_write(long address, long length, const uint8_t *data)
+{
+       while(length != 0){
+               int control = BUS_CONTROL_BUS_WRITE;
+
+               address_set(address, control);
+               bus_control(control);
+               data_set(control, *data);
+               control = bit_clear(control, BITNUM_PPU_RW);
+               control = bit_clear(control, BITNUM_PPU_SELECT);
+               bus_control(control);
+               bus_control(BUS_CONTROL_BUS_WRITE);
+               
+               address += 1;
+               data += 1;
+               length -= 1;
+       }
+}
+
+/*
+static const int BUS_CONTROL_CPU_FLASH_WRITE = (
+       ADDRESS_NOP | DATA_SHIFT_NOP |
+       (DATA_DIRECTION_READ << BITNUM_DATA_DIRECTION) |
+       (PPU_DISABLE << BITNUM_PPU_SELECT) |
+       (PPU_READ__CPU_ENABLE << BITNUM_CPU_M2) | //H
+       (CPU_RAM_SELECT << BITNUM_CPU_RAMROM_SELECT) |
+       (CPU_READ << BITNUM_CPU_RW)
+);
+
+static void cpu_flash_write(long address, long data)
+{
+       int control = BUS_CONTROL_BUS_WRITE;
+       control = bit_clear(control, BITNUM_CPU_M2);
+       address_set(address, control);
+       
+       //WE down
+       control = bit_clear(control, BITNUM_CPU_RW);
+       data_set(control, data);
+       //CS down
+       control = bit_clear(control, BITNUM_CPU_RAMROM_SELECT);
+       bus_control(control);
+       //CS up
+       control = bit_set(control, BITNUM_CPU_RAMROM_SELECT);
+       bus_control(control);
+       //WE up
+       control = bit_set(control, BITNUM_CPU_RW);
+       bus_control(control);
+}*/
+
+const struct reader_driver DRIVER_ONAJIMI = {
+       .name = "onajimi",
+       .open_or_close = paralellport_open_or_close,
+       .init = reader_init,
+       .cpu_read = cpu_read,
+       .cpu_write_6502 = cpu_write_6502,
+       .ppu_read = ppu_read,
+       .ppu_write = ppu_write,
+       .flash_support = NG,
+       .cpu_flash_config = NULL, .cpu_flash_erase = NULL, .cpu_flash_program = NULL,
+       .ppu_flash_config = NULL, .ppu_flash_erase = NULL, .ppu_flash_program = NULL
+};
diff --git a/client/tag/0.6.2/reader_onajimi.h b/client/tag/0.6.2/reader_onajimi.h
new file mode 100644 (file)
index 0000000..6e67b47
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _READER_ONAJIMI_H_
+#define _READER_ONAJIMI_H_
+const struct reader_driver DRIVER_ONAJIMI;
+#endif
diff --git a/client/tag/0.6.2/release/release.mak b/client/tag/0.6.2/release/release.mak
new file mode 100644 (file)
index 0000000..f395b24
--- /dev/null
@@ -0,0 +1,10 @@
+include ../file.mak
+CFLAGS += -O2 -DDEBUG=0 -DNDEBUG -fomit-frame-pointer 
+VPATH = ..
+$(TARGET): $(OBJ)
+       $(CC) -o $@ $(OBJ) $(LDFLAG)
+       strip $@
+
+include ../rule.mak
+#---- depend file ----
+-include unagi.d
diff --git a/client/tag/0.6.2/release/unagi.cfg b/client/tag/0.6.2/release/unagi.cfg
new file mode 100644 (file)
index 0000000..7a08fa8
--- /dev/null
@@ -0,0 +1,7 @@
+#\8eg\97p\82·\82é\83n\81[\83h\82Ì\83R\83\81\83\93\83g\82ð\8aO\82µ\82Ä\82­\82¾\82³\82¢\r
+#DRIVER kazzo\r
+#DRIVER hongkongfc\r
+#DRIVER onajimi\r
+#hongkong fc \82Ì flash \82Ì\8f\91\82«\8d\9e\82Ý\82ª\82Å\82«\82È\82¢\8fê\8d\87\82Í\83R\83\81\83\93\83g\82ð\8aO\82µ\82Ä\r
+#\8e\8e\82µ\82Ä\82Ý\82Ä\82­\82¾\82³\82¢\r
+#HONGKONG_FLASH 0.5.3\r
diff --git a/client/tag/0.6.2/romimage.c b/client/tag/0.6.2/romimage.c
new file mode 100644 (file)
index 0000000..f1a7f82
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+famicom ROM cartridge utility - unagi
+iNES header/buffer control
+*/
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "memory_manage.h"
+#include "type.h"
+#include "file.h"
+#include "crc32.h"
+#include "widget.h"
+#include "romimage.h"
+
+enum{
+       NES_HEADER_SIZE = 0x10,
+       PROGRAM_ROM_MIN = 0x4000,
+       CHARCTER_ROM_MIN = 0x2000
+};
+static const uint8_t NES_HEADER_INIT[NES_HEADER_SIZE] = {
+       'N', 'E', 'S', 0x1a, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0, 0, 0
+};
+
+static 
+void nesheader_set(const struct romimage *r, uint8_t *header)
+{
+       memcpy(header, NES_HEADER_INIT, NES_HEADER_SIZE);
+       header[4] = r->cpu_rom.size / PROGRAM_ROM_MIN;
+       header[5] = r->ppu_rom.size / CHARCTER_ROM_MIN;
+       if(r->mirror == MIRROR_VERTICAL){
+               header[6] |= 0x01;
+       }
+       if((r->cpu_ram.size != 0) || (r->backupram == true)){
+               header[6] |= 0x02;
+       }
+       //4 screen は無視
+       header[6] |= (r->mappernum & 0x0f) << 4;
+       header[7] |= r->mappernum & 0xf0;
+}
+
+/*
+return値: error count
+*/
+static int mirroring_fix(const struct textcontrol *l, struct memory *m, long min)
+{
+       long mirror_size = m->size / 2;
+       while(mirror_size >= min){
+               const uint8_t *halfbuf;
+               halfbuf = m->data;
+               halfbuf += mirror_size;
+               if(memcmp(m->data, halfbuf, mirror_size) != 0){
+                       const long ret = mirror_size * 2;
+                       if(m->size != ret){
+                               l->append(l->object, wgT("mirroring %s ROM fixed\n"), m->name);
+                               m->size = ret;
+                       }
+                       return 0;
+               }
+               mirror_size /= 2;
+       }
+       
+       uint8_t *ffdata;
+       int ret = 0;
+       ffdata = Malloc(min);
+       memset(ffdata, 0xff, min);
+       if(memcmp(ffdata, m->data, min) == 0){
+               l->append(l->object, wgT("error: data is all 0xff\n"));
+               ret = 1;
+       }else if(m->size != min){
+               l->append(l->object, wgT("mirroring %s ROM fixed\n"), m->name);
+               m->size = min;
+       }
+       Free(ffdata);
+       
+       return ret;
+}
+
+//hash は sha1 にしたいが他のデータベースにあわせて crc32 にしとく
+static void rominfo_print(const struct textcontrol *l, const struct memory *m)
+{
+       if(m->size != 0){
+               const uint32_t crc = crc32_get(m->data, m->size);
+               l->append(l->object, wgT("%s ROM: size 0x%06x, crc32 0x%08x\n"), m->name, m->size, (const int) crc);
+       }else{
+               l->append(l->object, wgT("%s RAM\n"), m->name);
+       }
+}
+
+uint32_t nesfile_create(const struct textcontrol *l, struct romimage *r, const wgChar *romfilename)
+{
+       int error = 0;
+       //RAM adapter bios size 0x2000 は変更しない
+       if(r->cpu_rom.size >= PROGRAM_ROM_MIN){
+               error += mirroring_fix(l, &(r->cpu_rom), PROGRAM_ROM_MIN);
+       }
+       if(r->ppu_rom.size != 0){
+               error += mirroring_fix(l, &(r->ppu_rom), CHARCTER_ROM_MIN);
+       }
+       if((DEBUG == 0) && (error != 0)){
+               return 0;
+       }
+       //修正済み ROM 情報表示
+       l->append(l->object, wgT("%s, mapper %d\n"), romfilename, (int) r->mappernum);
+       rominfo_print(l, &(r->cpu_rom));
+       rominfo_print(l, &(r->ppu_rom));
+
+       FILE *f;
+       uint8_t header[NES_HEADER_SIZE];
+       nesheader_set(r, header);
+#ifdef _UNICODE
+       f = _wfopen(romfilename, L"wb");
+#else
+       f = fopen(romfilename, "wb");
+#endif
+       fseek(f, 0, SEEK_SET);
+       //RAM adapter bios には NES ヘッダを作らない
+       if(r->cpu_rom.size >= PROGRAM_ROM_MIN){ 
+               fwrite(header, sizeof(uint8_t), NES_HEADER_SIZE, f);
+       }
+       uint32_t crc = crc32_get(r->cpu_rom.data, r->cpu_rom.size);
+       fwrite(r->cpu_rom.data, sizeof(uint8_t), r->cpu_rom.size, f);
+       if(r->ppu_rom.size != 0){
+               fwrite(r->ppu_rom.data, sizeof(uint8_t), r->ppu_rom.size, f);
+               crc = crc32_update(crc, r->ppu_rom.data, r->ppu_rom.size);
+       }
+       fclose(f);
+       return crc;
+}
+
+/*
+static inline void memory_malloc(struct memory *m)
+{
+       m->data = NULL;
+       if(m->size != 0){
+               m->data = Malloc(m->size);
+       }
+}
+
+
+bool nesbuffer_malloc(struct romimage *r, int mode)
+{
+       switch(mode){
+       case MODE_ROM_DUMP:
+               memory_malloc(&(r->cpu_rom));
+               memory_malloc(&(r->ppu_rom));
+               break;
+       case MODE_RAM_READ:
+               memory_malloc(&(r->cpu_ram));
+               break;
+       }
+       return true;
+}*/
+
+static inline void memory_free(struct memory *m)
+{
+       if(m->data != NULL){
+               Free(m->data);
+               m->data = NULL;
+       }
+}
+void nesbuffer_free(struct romimage *r, int mode)
+{
+       memory_free(&(r->cpu_rom));
+       memory_free(&(r->ppu_rom));
+}
+
+void backupram_create(const struct memory *r, const wgChar *ramfilename)
+{
+       buf_save(r->data, ramfilename, r->size);
+}
+
+/*
+memory size は 2乗されていく値が正常値.
+ただし、region の最小値より小さい場合は test 用として正常にする
+*/
+int memorysize_check(const long size, int region)
+{
+       long min = 0;
+       switch(region){
+       case MEMORY_AREA_CPU_ROM:
+               min = PROGRAM_ROM_MIN;
+               break;
+       case MEMORY_AREA_CPU_RAM:
+               min = 0x800; //いまのところ. taito 系はもっと小さいような気がする
+               break;
+       case MEMORY_AREA_PPU:
+               min = CHARCTER_ROM_MIN;
+               break;
+       default:
+               assert(0);
+       }
+       if(size <= min){
+               return OK;
+       }
+       switch(size){
+       case 0x004000: //128K bit
+       case 0x008000: //256K
+       case 0x010000: //512K
+       case 0x020000: //1M
+       case 0x040000: //2M
+       case 0x080000: //4M
+       case 0x100000: //8M
+               return OK;
+       }
+       return NG;
+}
+
+/*
+romimage が bank の定義値より小さい場合は romarea の末尾に張る。 
+同じデータを memcpy したほうが安全だが、とりあえずで。
+*/
+static void nesfile_datapointer_set(const uint8_t *buf, struct memory *m, long size)
+{
+       uint8_t *data;
+       assert((size % CHARCTER_ROM_MIN) == 0);
+       assert((m->size % CHARCTER_ROM_MIN) == 0);
+       data = Malloc(size);
+       m->data = data;
+       if(size < m->size){
+               long fillsize = m->size - size;
+               assert(fillsize >= 0); //fillsize is minus
+               memset(data, 0xff, fillsize); //ROM の未使用領域は 0xff が基本
+               data += fillsize;
+               size -= fillsize;
+       }
+       memcpy(data, buf, size);
+}
+
+//flashmemory device capacity check が抜けてるけどどこでやるか未定
+bool nesfile_load(const struct textcontrol *l, const wgChar *file, struct romimage *r)
+{
+       int imagesize;
+       uint8_t *buf;
+       
+       buf = buf_load_full(file, &imagesize);
+       if(buf == NULL || imagesize < (NES_HEADER_SIZE + PROGRAM_ROM_MIN)){
+//             printf("%s ROM image open error\n", errorprefix);
+               return false;
+       }
+       //nes header check
+       if(memcmp(buf, NES_HEADER_INIT, 4) != 0){
+               l->append(l->object, wgT("NES header identify error\n"));
+               Free(buf);
+               return false;
+       }
+       //vram mirroring set
+       if((buf[6] & 1) == 0){
+               r->mirror = MIRROR_HORIZONAL;
+       }else{
+               r->mirror = MIRROR_VERTICAL;
+       }
+       //mapper number check
+       {
+               long mapper = (buf[6] >> 4) & 0x0f;
+               mapper |= buf[7] & 0xf0;
+               r->mappernum = mapper;
+       }
+       //NES/CPU/PPU imagesize check
+       long cpusize, ppusize;
+       {
+               long offset = NES_HEADER_SIZE;
+               //CPU
+               cpusize = ((long) buf[4]) * PROGRAM_ROM_MIN;
+               offset += cpusize;
+               r->cpu_rom.size = cpusize;
+               //PPU
+               ppusize = ((long) buf[5]) * CHARCTER_ROM_MIN;
+               offset += ppusize;
+               r->ppu_rom.size = ppusize;
+               //NESfilesize
+               if(offset != imagesize){
+                       l->append(l->object, wgT("NES header filesize error\n"));
+                       Free(buf);
+                       return false;
+               }
+       }
+       /*
+       image pointer set/ memcpy
+       */
+       {
+               uint8_t *d;
+               d = buf;
+               d += NES_HEADER_SIZE;
+               nesfile_datapointer_set(d, &r->cpu_rom, cpusize);
+               d += cpusize;
+               if(ppusize != 0){
+                       nesfile_datapointer_set(d, &r->ppu_rom, ppusize);
+               }else{
+                       r->ppu_rom.data = NULL;
+                       r->ppu_rom.size = 0;
+               }
+       }
+
+       Free(buf);
+       return true;
+}
diff --git a/client/tag/0.6.2/romimage.h b/client/tag/0.6.2/romimage.h
new file mode 100644 (file)
index 0000000..ef3e6da
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _ROMIAMGE_H_
+#define _ROMIAMGE_H_
+
+enum trastype{
+       TRANSTYPE_EMPTY,
+       TRANSTYPE_TOP,
+       TRANSTYPE_BOTTOM,
+       TRANSTYPE_FULL,
+};
+enum memory_attribute{
+       MEMORY_ATTR_READ, MEMORY_ATTR_WRITE, MEMORY_ATTR_NOTUSE
+};
+struct memory{
+       const wgChar *name;
+       int size, offset;
+       enum memory_attribute attribute;
+       enum trastype transtype;
+       uint8_t *data;
+};
+/*
+ROM image 内 struct memory のモード別の使い方
+MODE_ROM_DUMP
+       cpu_rom ROM 読み込みバッファ, file out
+       ppu_rom ROM 読み込みバッファ, file out
+       cpu_ram 未使用
+MODE_RAM_READ
+       cpu_rom 未使用
+       ppu_rom 未使用
+       cpu_ram RAM 読み込みバッファ. file out
+MODE_RAM_WRITE
+       cpu_rom 未使用
+       ppu_rom 未使用
+       cpu_ram RAM 書き込みバッファ. . file in
+MODE_ROM_PROGRAM
+       cpu_rom ROM 書き込みバッファ, file in
+       ppu_rom ROM 書き込みバッファ, file in
+       cpu_ram 未使用
+*/
+enum vram_mirroring{
+       MIRROR_HORIZONAL = 0,
+       MIRROR_VERTICAL,
+       MIRROR_PROGRAMABLE = MIRROR_HORIZONAL
+};
+struct romimage{
+       struct memory cpu_rom, ppu_rom, cpu_ram;
+       long mappernum;
+       enum vram_mirroring mirror;
+       int backupram;
+};
+
+enum{
+       MEMORY_AREA_CPU_RAM, MEMORY_AREA_CPU_ROM, MEMORY_AREA_PPU
+};
+
+bool nesbuffer_malloc(struct romimage *r, int mode);
+uint32_t nesfile_create(const struct textcontrol *l, struct romimage *r, const wgChar *romfilename);
+void nesbuffer_free(struct romimage *r, int mode);
+void backupram_create(const struct memory *r, const wgChar *ramfilename);
+int memorysize_check(const long size, int region);
+bool nesfile_load(const struct textcontrol *l, const wgChar *file, struct romimage *r);
+#endif
diff --git a/client/tag/0.6.2/rule.mak b/client/tag/0.6.2/rule.mak
new file mode 100644 (file)
index 0000000..89ab0dc
--- /dev/null
@@ -0,0 +1,8 @@
+all: $(TARGET) unagi.d
+unagi.d:
+       $(CC) -MM $(CFLAGS) ../*.c > $@
+clean: 
+       rm -f $(OBJ) $(TARGET) unagi.d
+unagi.res.o: unagi.rc unagi.ico
+       windres -I.. -i $< -o $@
+all: $(TARGET) unagi.d
diff --git a/client/tag/0.6.2/script.h b/client/tag/0.6.2/script.h
new file mode 100644 (file)
index 0000000..2568a77
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _SCRIPT_H_
+#define _SCRIPT_H_
+struct st_config;
+void script_load(const struct st_config *config);
+
+struct st_variable{
+       int type;
+       char variable;
+       long value;
+};
+
+struct st_expression{
+       struct st_variable left, right;
+       int operator;
+};
+
+struct script{
+       int opcode;
+       int line;
+       long value[4];
+       struct st_expression expression;
+       char variable;
+};
+
+enum{
+       VALUE_EXPRESSION = 0x1000000,
+       VALUE_VARIABLE,
+       VALUE_CONTANT_CPU_STEP_START,
+       VALUE_CONTANT_CPU_STEP_END,
+       VALUE_CONTANT_PPU_STEP_START,
+       VALUE_CONTANT_PPU_STEP_END,
+       VALUE_TRANSTYPE_EMPTY,
+       VALUE_TRANSTYPE_TOP,
+       VALUE_TRANSTYPE_BOTTOM,
+       VALUE_TRANSTYPE_FULL,
+       VALUE_UNDEF
+};
+enum{
+       EXPRESSION_TYPE_VARIABLE,
+       EXPRESSION_TYPE_VALUE
+};
+
+#endif
diff --git a/client/tag/0.6.2/script_engine.c b/client/tag/0.6.2/script_engine.c
new file mode 100644 (file)
index 0000000..b736453
--- /dev/null
@@ -0,0 +1,1430 @@
+/*
+famicom ROM cartridge utility - unagi
+script engine
+
+Copyright (C) 2008-2009 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+todo: 
+* ÊÑ¿ô´ÉÍý¤Î¥°¥í¡¼¥Ð¥ëÃͤò¡¢logical_test(), excute() ¥í¡¼¥«¥ë¤Ë¤·¤¿¤¤
+*/
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "memory_manage.h"
+#include "type.h"
+#include "file.h"
+#include "reader_master.h"
+#include "textutil.h"
+#include "config.h"
+#include "header.h"
+#include "script_syntax.h"
+#include "script.h"
+
+/*
+MAPPER num
+MIRROR [HV]
+CPU_ROMSIZE num
+CPU_RAMSIZE num
+PPU_ROMSIZE num
+DUMP_START
+CPU_READ address size
+CPU_WRITE address data -> ÊÑ¿ôŸ³«+±é»»»Ò»ÈÍѲÄǽ
+PPU_READ address size
+STEP_START variable start end step -> for(i=start;i<end;i+=step)
+STEP_END
+DUMP_END
+*/
+//#include "syntax.h"
+
+//ÊÑ¿ô´ÉÍý
+//step ¤ÎÊÑ¿ô¤Ï¾®Ê¸»ú¤Î a-z ¤Ç¤Ï¤¸¤Þ¤ë¤³¤È¡£2ʸ»úÌܰʹߤÏ̵»ë¤¹¤ë
+struct variable_manage{
+       char name;
+       long start,end,step;
+       long val;
+       const struct script *Continue;
+};
+
+enum{
+       STEP_MAX = 3,
+       VARIABLE_MAX = STEP_MAX
+};
+
+static const struct variable_manage VARIABLE_INIT = {
+       .name = '\0', 
+       .start = 0, .end = 0, .step = 0,
+       .val = 0,
+       .Continue = NULL
+};
+static struct variable_manage variable_bank[VARIABLE_MAX];
+static int variable_num = 0;
+
+static void variable_init_single(int num)
+{
+       memcpy(&variable_bank[num], &VARIABLE_INIT, sizeof(struct variable_manage));
+}
+
+static void variable_init_all(void)
+{
+       int i;
+       variable_num = 0;
+       for(i = 0; i < VARIABLE_MAX; i++){
+               variable_init_single(i);
+       }
+}
+
+static int variable_get(char name, long *val)
+{
+       int i;
+       struct variable_manage *v;
+       v = variable_bank;
+       for(i = 0; i < variable_num; i++){
+               if(v->name == name){
+                       *val = v->val;
+                       return OK;
+               }
+               v++;
+       }
+       return NG;
+}
+
+static int expression_value_get(const struct st_variable *v, long *data)
+{
+       if(v->type == EXPRESSION_TYPE_VARIABLE){
+               if(variable_get(v->variable, data) == NG){
+                       return NG;
+               }
+       }else{
+               *data = v->value;
+       }
+       return OK;
+}
+
+//ÊÑ¿ôŸ³«
+static int expression_calc(const struct st_expression *e, long *val)
+{
+       long left, right;
+       if(expression_value_get(&e->left, &left) == NG){
+               return NG;
+       }
+       if(e->operator == OPERATOR_NONE){
+               *val = left;
+               return OK;
+       }
+       if(expression_value_get(&e->right, &right) == NG){
+               return NG;
+       }
+       switch(e->operator){
+       case OPERATOR_PLUS:
+               *val = left + right;
+               break;
+       case OPERATOR_SHIFT_LEFT:
+               *val = left >> right;
+               //*val &= 1;
+               break;
+       case OPERATOR_SHIFT_RIGHT:
+               *val = left << right;
+               break;
+       case OPERATOR_AND:
+               *val = left & right;
+               break;
+       case OPERATOR_OR:
+               *val = left | right;
+               break;
+       case OPERATOR_XOR:
+               *val = left ^ right;
+               break;
+       }
+       
+       return OK;
+}
+
+static int step_new(char name, long start, long end, long step, const struct script *Continue)
+{
+       if(variable_num >= VARIABLE_MAX){
+               return NG; //ÊÑ¿ôÄêµÁ¤¬Â¿¤¹¤®
+       }
+       struct variable_manage *v;
+       int i;
+       v = variable_bank;
+       for(i = 0; i < variable_num; i++){
+               if(v->name == name){
+                       return NG; //ÊÑ¿ô̾½ÅÊ£
+               }
+               v++;
+       }
+       v = variable_bank;
+       v += variable_num;
+       v->name = name;
+       v->start = start;
+       v->end = end;
+       v->step = step;
+       v->val = start;
+       v->Continue = Continue;
+       variable_num++;
+       return OK;
+}
+
+static const struct script *step_end(const struct script *Break)
+{
+       //¸½ºß¤Î¥ë¡¼¥×¤ÎÂоÝÊÑ¿ô¤òÆÀ¤ë
+       struct variable_manage *v;
+       v = variable_bank;
+       v += (variable_num - 1);
+       //ÊÑ¿ô¹¹¿·
+       v->val += v->step;
+       if(v->val < v->end){
+               return v->Continue;
+       }
+       //¥ë¡¼¥×¤¬½ª¤ï¤Ã¤¿¤Î¤Ç¤½¤ÎÊÑ¿ô¤òÇË´þ¤¹¤ë
+       variable_init_single(variable_num - 1);
+       variable_num--;
+       return Break;
+}
+
+//int syntax_check(char **text, int text_num, struct script *s, int mode);
+/*
+logical_check() ÍÑ¥µ¥Ö´Ø¿ô¤È¥Ç¡¼¥¿
+*/
+static const char LOGICAL_ERROR_PREFIX[] = "logical error:";
+enum{
+       SCRIPT_PPUSIZE_0 = 0,
+       SCRIPT_MEMORYSIZE = 10,
+};
+struct logical_romsize{
+       const struct script *data[SCRIPT_MEMORYSIZE], *constant;
+       int count;
+};
+static int logical_flashsize_set(int region, struct logical_romsize *l, const struct script *s)
+{
+       //PPU Íѥǡ¼¥¿¤Î 0 ¤Ï size 0, Äê¿ô 0 ¤È¤·¤ÆͽÌ󤵤ì¤Æ¤ª¤ê¡¢0¤Î¾ì¹ç¤Ï¤³¤³¤ò¾å½ñ¤­¤¹¤ë
+       if((region == MEMORY_AREA_PPU) && (s->value[0] == 0)){
+               l->data[SCRIPT_PPUSIZE_0] = s;
+               return OK;
+       }
+       if(l->count >= SCRIPT_MEMORYSIZE){
+               const char *opstr;
+               opstr = OPSTR_CPU_ROMSIZE; //warning Âкö
+               switch(region){
+               case MEMORY_AREA_CPU_ROM:
+                       opstr = OPSTR_CPU_ROMSIZE;
+                       break;
+               case MEMORY_AREA_PPU:
+                       opstr = OPSTR_PPU_ROMSIZE;
+                       break;
+               default:
+                       assert(0);
+               }
+               printf("%d:%s %s override count over\n", s->line, LOGICAL_ERROR_PREFIX, opstr);
+               return NG;
+       }
+       l->data[l->count] = s;
+       l->count += 1;
+       return OK;
+}
+
+static int logical_flashsize_get(long transtype, long size, struct logical_romsize *l)
+{
+       int i;
+       for(i = 0; i < l->count; i++){
+               const struct script *s;
+               s = l->data[i];
+               if((s->value[0] == size) && (
+                       (s->value[1] == transtype) || 
+                       (s->value[1] == VALUE_TRANSTYPE_FULL)
+               )){
+                       l->constant = s;
+                       return OK;
+               }else if((s->value[0] == size) && (s->value[1] == VALUE_TRANSTYPE_EMPTY)){
+                       l->constant = s;
+                       return OK;
+               }
+       }
+       printf("%s flashsize not found\n", LOGICAL_ERROR_PREFIX);
+       return NG;
+}
+
+static long constant_get(long val, const struct script *cpu, const struct script *ppu)
+{
+       switch(val){
+       case VALUE_CONTANT_CPU_STEP_START:
+               return cpu->value[2];
+       case VALUE_CONTANT_CPU_STEP_END:
+               return cpu->value[3];
+       case VALUE_CONTANT_PPU_STEP_START:
+               return ppu->value[2];
+       case VALUE_CONTANT_PPU_STEP_END:
+               return ppu->value[3];
+       }
+       assert(0);
+       return -1;
+}
+
+static void logical_print_capacityerror(int line, const char *area)
+{
+       printf("%d:%s %s area flash memory capacity error\n", line, LOGICAL_ERROR_PREFIX, area);
+}
+
+static inline void logical_print_illgalarea(int line, const char *area, long address)
+{
+       printf("%d:%s illgal %s area $%06x\n", line, LOGICAL_ERROR_PREFIX, area, (int) address);
+}
+
+static inline void logical_print_illgallength(int line, const char *area, long length)
+{
+       printf("%d:%s illgal %s length $%04x\n", line, LOGICAL_ERROR_PREFIX, area, (int) length);
+}
+
+static inline void logical_print_overdump(int line, const char *area, long start, long end)
+{
+       printf("%d:%s %s area over dump $%06x-$%06x\n", line, LOGICAL_ERROR_PREFIX, area, (int)start ,(int)end);
+}
+
+static inline void logical_print_access(int line, const char *area, const char *rw, long addr, long len)
+{
+       printf("%d:%s %s $%04x $%02x\n", line, area, rw, (int) addr, (int) len);
+}
+
+static inline void logical_print_byteerror(int line, const char *area, long data)
+{
+       printf("%d:%s write data byte range over, %s $%x\n", line, LOGICAL_ERROR_PREFIX, area, (int) data);
+}
+
+static int dump_length_conform(const char *name, long logicallength, long configlength)
+{
+       if(configlength != logicallength){
+               printf("%s %s dump length error\n", LOGICAL_ERROR_PREFIX, name);
+               printf("%s: 0x%06x, dump length: 0x%06x\n", name, (int) configlength, (int) logicallength);
+               return 1;
+       }
+       return 0;
+}
+static inline int is_region_cpurom(long address)
+{
+       return (address >= 0x8000) && (address < 0x10000);
+}
+
+static inline int is_region_cpuram(long address)
+{
+       return (address >= 0x6000) && (address < 0x8000);
+}
+
+static inline int is_region_ppurom(long address)
+{
+       return (address >= 0) && (address < 0x2000);
+}
+
+static inline int is_data_byte(long data)
+{
+       return (data >= 0) && (data < 0x100);
+}
+
+//¤³¤ì¤À¤± is ·Ï¤Ç <= ±é»»»Ò¤ò»ÈÍѤ·¤Æ¤¤¤ë¤Î¤ÇÃí°Õ
+static inline int is_range(long data, long start, long end)
+{
+       return (data >= start) && (data <= end);
+}
+static const char STR_REGION_CPU[] = "cpu";
+static const char STR_REGION_PPU[] = "ppu";
+static const char STR_ACCESS_READ[] = "read";
+static const char STR_ACCESS_WRITE[] = "write";
+
+enum{
+       SETTING, DUMP, END, STEP_THOUGH
+};
+static int command_mask(const int region, const long address, const long offset, long size, struct flash_order *f)
+{
+       const char *str_region = STR_REGION_CPU;
+       if(region == MEMORY_AREA_PPU){
+               str_region = STR_REGION_PPU;
+       }
+       switch(region){
+       case MEMORY_AREA_CPU_ROM:
+               switch(offset){
+               case 0x8000: case 0xa000: case 0xc000:
+                       break;
+               default:
+                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, str_region);
+                       return NG;
+               }
+               switch(size){
+               case 0x2000: case 0x4000: case 0x8000:
+                       break;
+               default:
+                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, str_region);
+                       return NG;
+               }
+               break;
+       case MEMORY_AREA_PPU:
+               switch(offset){
+               case 0x0000: case 0x0400: case 0x0800: case 0x0c00:
+               case 0x1000: case 0x1400: case 0x1800: case 0x1c00:
+                       break;
+               default:
+                       printf("%s %s_COMMAND area offset error\n", LOGICAL_ERROR_PREFIX, str_region);
+                       return NG;
+               }
+               switch(size){
+               case 0x0400: case 0x0800: case 0x1000: case 0x2000: 
+                       break;
+               default:
+                       printf("%s %s_COMMAND area mask error\n", LOGICAL_ERROR_PREFIX, str_region);
+                       return NG;
+               }
+               break;
+       default:
+               assert(0); //unknown memory area
+       }
+
+       const long mask = size - 1;
+       const long data = (address & mask) | offset;
+       switch(address){
+       case 0:
+               f->command_0000 = data;
+               break;
+       case 0x2aaa: case 0x02aa: 
+               f->command_2aaa = data;
+               break;
+       case 0x5555: case 0x0555:
+               f->command_5555 = data;
+               break;
+       default:
+               printf("%s %s_COMMAND unknown commnand address\n", LOGICAL_ERROR_PREFIX, str_region);
+               return NG;
+       }
+       return OK;
+}
+
+enum{
+       STEP_VALIABLE = 0, STEP_START, STEP_END, STEP_NEXT,
+       STEP_NUM
+};
+static const struct script SCRIPT_PPU_ROMSIZE_0 = {
+       .opcode = SCRIPT_OPCODE_PPU_ROMSIZE,
+       .line = -1,
+       .value = {0, VALUE_TRANSTYPE_EMPTY, 0, 0},
+       //.expression, .variable Ì¤ÄêµÁ
+};
+
+static int logical_check(const struct script *s, const struct st_config *c, struct romimage *r)
+{
+       //(CPU|PPU)_(READ|PROGRAM|RAMRW) ¤Î length ²Ã»»ÃÍ
+       long cpu_romsize = 0, cpu_ramsize = 0, ppu_romsize = 0;
+       //DUMP_START Ä¾¸å¤Ë ROM or RAM image ¤ò³«¤¯¥Õ¥é¥°
+       //use program mode or ram write mode
+       int imagesize = 0; //for write or program mode
+       int status = SETTING;
+       //override (CPU|PPU)_ROMSIZE pointer. Program mode only
+       struct logical_romsize script_cpu_flashsize = {
+               .constant = NULL,
+               .count = 0
+       };
+       struct logical_romsize script_ppu_flashsize = {
+               .constant = NULL,
+               .count = 1
+       };
+       script_ppu_flashsize.data[0] = &SCRIPT_PPU_ROMSIZE_0;
+       //logical error count. Ìá¤êÃÍ
+       int error = 0;
+       
+       variable_init_all();
+       while(s->opcode != SCRIPT_OPCODE_DUMP_END){
+               if((status == DUMP) && (s->opcode < SCRIPT_OPCODE_DUMP_START)){
+                       printf("%d:%s config script include DUMP_START area\n", s->line, LOGICAL_ERROR_PREFIX);
+                       error += 1;
+               }
+
+               //romimage open for write or program mode
+               if((imagesize == 0) && (status == DUMP)){
+                       switch(c->mode){
+                       case MODE_RAM_WRITE: //CPU_RAMSIZE check
+                               assert(r->cpu_ram.attribute == MEMORY_ATTR_READ);
+                               r->cpu_ram.data = buf_load_full(c->ramimage, &imagesize);
+                               if(r->cpu_ram.data == NULL){
+                                       printf("%s RAM image open error\n", LOGICAL_ERROR_PREFIX);
+                                       imagesize = -1;
+                                       error += 1;
+                               }else if(r->cpu_ram.size != imagesize){
+                                       printf("%s RAM image size is not same\n", LOGICAL_ERROR_PREFIX);
+                                       Free(r->cpu_ram.data);
+                                       r->cpu_ram.data = NULL;
+                                       imagesize = -1;
+                                       error += 1;
+                               }
+                               break;
+                       case MODE_ROM_PROGRAM: //MAPPER check
+                               assert(c->cpu_flash_driver->program != NULL);
+                               assert(r->cpu_rom.attribute == MEMORY_ATTR_READ);
+                               assert(r->ppu_rom.attribute == MEMORY_ATTR_READ);
+                               if(nesfile_load(LOGICAL_ERROR_PREFIX, c->romimage, r)== false){
+                                       error += 1;
+                               }
+                               //Äê¿ôÀë¸À¥¨¥é¡¼¤Ï̵¸Â¥ë¡¼¥×¤Î²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¥¹¥¯¥ê¥×¥ÈÆâÉô¥Á¥§¥Ã¥¯¤ò¤»¤º¤Ë»ß¤á¤ë
+                               if(logical_flashsize_get(c->transtype_cpu, r->cpu_rom.size, &script_cpu_flashsize) == NG){
+                                       return error + 1;
+                               }
+                               if(logical_flashsize_get(c->transtype_ppu, r->ppu_rom.size, &script_ppu_flashsize) == NG){
+                                       return error + 1;
+                               }
+                               //flash memory capacity check
+                               if(r->cpu_rom.size > c->cpu_flash_driver->capacity){
+                                       logical_print_capacityerror(s->line, r->cpu_rom.name);
+                                       error += 1;
+                               }
+                               if((r->ppu_rom.size != 0) && (r->ppu_rom.size > c->ppu_flash_driver->capacity)){
+                                       logical_print_capacityerror(s->line, r->ppu_rom.name);
+                                       error += 1;
+                               }
+                               imagesize = -1;
+                               break;
+                       default: 
+                               imagesize = -1;
+                               break;
+                       }
+               }
+       
+               switch(s->opcode){
+               case SCRIPT_OPCODE_COMMENT:
+                       break;
+               case SCRIPT_OPCODE_MAPPER:
+                       r->mappernum = s->value[0];
+                       break;
+               case SCRIPT_OPCODE_MIRROR:
+                       r->mirror = s->value[0];
+                       break;
+               case SCRIPT_OPCODE_CPU_ROMSIZE:{
+                       const long size = s->value[0];
+                       r->cpu_rom.size = size;
+                       if(memorysize_check(size, MEMORY_AREA_CPU_ROM)){
+                               printf("%s %s length error\n", LOGICAL_ERROR_PREFIX, OPSTR_CPU_ROMSIZE);
+                               error += 1;
+                       }
+                       }break;
+               case SCRIPT_OPCODE_CPU_FLASHSIZE:
+                       if(logical_flashsize_set(MEMORY_AREA_CPU_ROM, &script_cpu_flashsize, s) == NG){
+                               error += 1;
+                       }break;
+               case SCRIPT_OPCODE_CPU_RAMSIZE:
+                       //memory size ¤Ï̤³ÎÄêÍ×ÁǤ¬Â¿¤¤¤Î¤Ç check ¤òÈ´¤¯
+                       r->cpu_ram.size = s->value[0];
+                       break;
+               case SCRIPT_OPCODE_CPU_COMMAND:
+                       if(command_mask(MEMORY_AREA_CPU_ROM, s->value[0], s->value[1], s->value[2], &(r->cpu_flash)) == NG){
+                               error += 1;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_ROMSIZE:{
+                       const long size = s->value[0];
+                       r->ppu_rom.size = size;
+                       if(memorysize_check(size, MEMORY_AREA_PPU)){
+                               printf("%s %s length error\n", LOGICAL_ERROR_PREFIX, OPSTR_PPU_ROMSIZE);
+                               error += 1;
+                       }
+                       }break;
+               case SCRIPT_OPCODE_PPU_FLASHSIZE:
+                       if(logical_flashsize_set(MEMORY_AREA_PPU, &script_ppu_flashsize, s) == NG){
+                               error += 1;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_COMMAND:
+                       if(command_mask(MEMORY_AREA_PPU, s->value[0], s->value[1], s->value[2], &(r->ppu_flash)) == NG){
+                               error += 1;
+                       }
+                       break;
+               case SCRIPT_OPCODE_DUMP_START:
+                       status = DUMP;
+                       break;
+               case SCRIPT_OPCODE_CPU_READ:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       const long end = address + length - 1;
+                       
+                       assert(r->cpu_rom.attribute == MEMORY_ATTR_WRITE);
+                       //length filter. 0 ¤Ï¤À¤á
+                       if(!is_range(length, 1, 0x4000)){
+                               logical_print_illgallength(s->line, STR_REGION_CPU, length);
+                               error += 1;
+                       }
+                       //address filter
+                       else if(!is_region_cpurom(address)){
+                               logical_print_illgalarea(s->line, STR_REGION_CPU, address);
+                               error += 1;
+                       }else if(end >= 0x10000){
+                               logical_print_overdump(s->line, STR_REGION_CPU, address, end);
+                               error += 1;
+                       }
+                       cpu_romsize += length;
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_CPU_WRITE:{
+                       const long address = s->value[0];
+                       long data;
+                       if(expression_calc(&s->expression, &data) == NG){
+                               printf("%d:%s expression calc error\n", s->line, LOGICAL_ERROR_PREFIX);
+                               error += 1;
+                       }
+                       if(address < 0x5000 || address >= 0x10000){
+                               logical_print_illgalarea(s->line, STR_REGION_CPU, address);
+                               error += 1;
+                       }else if(!is_data_byte(data)){
+                               logical_print_byteerror(s->line, STR_REGION_CPU, data);
+                               error += 1;
+                       }
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_CPU_RAMRW:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       const long end = address + length - 1;
+                       switch(c->mode){
+                       case MODE_RAM_READ:
+                               assert(r->cpu_ram.attribute == MEMORY_ATTR_WRITE);
+                               break;
+                       case MODE_RAM_WRITE:
+                               assert(r->cpu_ram.attribute == MEMORY_ATTR_READ);
+                               break;
+                       }
+                       //length filter. 0 ¤Ï¤À¤á
+                       if(!is_range(length, 1, 0x2000)){
+                               logical_print_illgallength(s->line, STR_REGION_CPU, length);
+                               error += 1;
+                       }
+                       //address filter
+                       else if(address < 0x5c00 || address >= 0xc000){
+                               logical_print_illgalarea(s->line, STR_REGION_CPU, address);
+                               error += 1;
+                       }else if(0 && end >= 0x8000){
+                               logical_print_overdump(s->line, STR_REGION_CPU, address, end);
+                               error += 1;
+                       }
+                       cpu_ramsize += length;
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_CPU_PROGRAM:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       const long end = address + length - 1;
+                       
+                       assert(r->cpu_rom.attribute == MEMORY_ATTR_READ);
+                       assert(r->ppu_rom.attribute == MEMORY_ATTR_READ);
+                       //length filter.
+                       if(!is_range(length, 0x80, 0x4000)){
+                               logical_print_illgallength(s->line, STR_REGION_CPU, length);
+                               error += 1;
+                       }
+                       //address filter
+                       else if(!is_region_cpurom(address)){
+                               logical_print_illgalarea(s->line, STR_REGION_CPU, address);
+                               error += 1;
+                       }else if(end >= 0x10000){
+                               logical_print_overdump(s->line, STR_REGION_CPU, address, end);
+                               error += 1;
+                       }
+                       cpu_romsize += length;
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_RAMFIND:
+                       //¥ë¡¼¥×ÆâÉô¤ËÆþ¤Ã¤Æ¤¿¤é¥¨¥é¡¼
+                       if(variable_num != 0){
+                               printf("%d:%s PPU_RAMTEST must use outside loop\n", s->line, LOGICAL_ERROR_PREFIX);
+                               error += 1;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_SRAMTEST:
+               case SCRIPT_OPCODE_PPU_READ:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       const long end = address + length - 1;
+                       assert(r->ppu_rom.attribute == MEMORY_ATTR_WRITE);
+                       //length filter. 0 ¤òÍÆǧ¤¹¤ë
+                       long min = 0;
+                       if(s->opcode == SCRIPT_OPCODE_PPU_SRAMTEST){
+                               min = 1;
+                       }
+                       if(!is_range(length, min, 0x2000)){
+                               logical_print_illgallength(s->line, STR_REGION_PPU, length);
+                               error += 1;
+                       }
+                       //address filter
+                       else if(!is_region_ppurom(address)){
+                               logical_print_illgalarea(s->line, STR_REGION_PPU, address);
+                               error += 1;
+                       }else if (end >= 0x2000){
+                               logical_print_overdump(s->line, STR_REGION_PPU, address, end);
+                               error += 1;
+                       }
+                       //dump length update
+                       if((s->opcode == SCRIPT_OPCODE_PPU_READ) && is_region_ppurom(address)){
+                               ppu_romsize += length;
+                       }
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_WRITE:{
+                       if(DEBUG==0){
+                               break;
+                       }
+                       const long address = s->value[0];
+                       long data;
+                       if(expression_calc(&s->expression, &data) == NG){
+                               printf("%d:%s expression calc error\n", s->line, LOGICAL_ERROR_PREFIX);
+                               error += 1;
+                       }
+                       status = DUMP;
+                       if(!is_region_ppurom(address)){
+                               logical_print_illgalarea(s->line, STR_REGION_PPU, address);
+                               error += 1;
+                       }else if(!is_data_byte(data)){
+                               logical_print_byteerror(s->line, STR_REGION_PPU, data);
+                               error += 1;
+                       }
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_PROGRAM:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       const long end = address + length - 1;
+                       
+                       assert(r->ppu_rom.attribute == MEMORY_ATTR_READ);
+                       assert(r->ppu_rom.size != 0);
+
+                       //length filter.
+                       if(!is_range(length, 0x80, 0x1000)){
+                               logical_print_illgallength(s->line, STR_REGION_PPU, length);
+                               error += 1;
+                       }
+                       //address filter
+                       else if(!is_region_ppurom(address)){
+                               logical_print_illgalarea(s->line, STR_REGION_PPU, address);
+                               error += 1;
+                       }else if(end >= 0x2000){
+                               logical_print_overdump(s->line, STR_REGION_PPU, address, end);
+                               error += 1;
+                       }
+                       ppu_romsize += length;
+                       status = DUMP;
+                       }
+                       break;
+               case SCRIPT_OPCODE_STEP_START:{
+                       const struct step_syntax{
+                               long start, end;
+                               int constant;
+                               const char *name;
+                       } RANGE[STEP_NUM] = {
+                               {.start = 0, .end = 0, .constant = NG, .name = "variable"},
+                               {.start = 0, .end = 0xff, .constant = OK, .name = "start"},
+                               {.start = 0, .end = 0x100, .constant = OK, .name = "end"},
+                               {.start = 1, .end = 0x100, .constant = NG, .name = "next"}
+                       };
+                       int i;
+                       for(i = STEP_START; i < STEP_NUM; i++){
+                               const struct step_syntax *ss;
+                               ss = &RANGE[i];
+                               //Äê¿ôobject ¤ò¼Â¿ô¤ËÊÑ´¹¤¹¤ë¤¿¤á¡¢const ¤ò³°¤·¤Æ½ñ¤­´¹¤¨¤ë
+                               long *v;
+                               v = (long *) &s->value[i];
+                               if((ss->constant == OK) && (is_range(*v, VALUE_CONTANT_CPU_STEP_START, VALUE_CONTANT_PPU_STEP_END))){
+                                       //VALUE_CONSTANT_xxx ¤ò¼ÂºÝ¤Ë»È¤ï¤ì¤ëÄê¿ô¤Ë¤·¤Æ¡¢¥¹¥¯¥ê¥×¥È¥Ç¡¼¥¿¤òÄ¥¤êÂؤ¨¤ë
+                                       *v = constant_get(*v, script_cpu_flashsize.constant, script_ppu_flashsize.constant);
+                               }
+                               if(!is_range(*v, ss->start, ss->end)){
+                                       printf("%d:%s step %s must %d-0x%x 0x%x\n", s->line, ss->name, LOGICAL_ERROR_PREFIX, (int) ss->start, (int) ss->end, (int) *v);
+                                       error += 1;
+                               }
+                       }
+                       //charcter RAM ¤ÎÍͤˠstep ÆâÉô¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¤Îscript¾õÂÖ¤ÎÊѹ¹
+                       if(s->value[STEP_START] >= s->value[STEP_END]){
+                               status = STEP_THOUGH;
+                       }
+                       //¥ë¡¼¥×¤ÎÌá¤êÀè¤Ï¤³¤ÎÌ¿Îá¤Î¼¡¤Ê¤Î¤Ç s[1]
+                       else if(step_new(s->variable, s->value[STEP_START], s->value[STEP_END], s->value[STEP_NEXT], &s[1]) == NG){
+                               printf("%d:%s step loop too much\n", s->line, LOGICAL_ERROR_PREFIX);
+                               error += 1;
+                               return error;
+                       }else{
+                               status = DUMP;
+                       }
+                       }break;
+               case SCRIPT_OPCODE_DUMP_END:
+                       status = END;
+                       break;
+               }
+               
+               //status Ê̤ˠscript ¤ÎÀ©¸æ. while ¤òÈ´¤±¤ë¤Î¤Ç switch ¤ò»È¤¨¤Ê¤¤
+               if(status == END){
+                       break;
+               }else if(status == STEP_THOUGH){
+                       int stepcount = 1;
+                       int end = 0;
+                       while(s->opcode != SCRIPT_OPCODE_DUMP_END){
+                               switch(s->opcode){
+                               case SCRIPT_OPCODE_STEP_START:
+                                       stepcount++;
+                                       break;
+                               case SCRIPT_OPCODE_STEP_END:
+                                       stepcount--;
+                                       if(stepcount == 0){
+                                               end = 1;
+                                       }
+                                       break;
+                               }
+                               s++;
+                               if(end == 1){
+                                       break;
+                               }
+                       }
+                       status = DUMP;
+               }
+               //opcode Ê̤ˠscript ¤ÎÀ©¸æ. while ¤òÈ´¤±¤ë¤Î¤Ç switch ¤ò»È¤¨¤Ê¤¤
+               if(s->opcode == SCRIPT_OPCODE_STEP_END){
+                       if(variable_num == 0){
+                               printf("%d:%s loop closed, missing STEP_START\n", s->line, LOGICAL_ERROR_PREFIX);
+                               return error + 1;
+                       }
+                       s = step_end(&s[1]);
+                       status = DUMP;
+               }else if(s->opcode == SCRIPT_OPCODE_DUMP_END){
+                       break;
+               }else{
+                       s++;
+               }
+       }
+       
+       //loop open conform
+       if(variable_num != 0){
+               printf("%d:%s loop opened, missing STEP_END\n", s->line, LOGICAL_ERROR_PREFIX);
+               error += 1;
+       }
+       //dump length conform
+       error += dump_length_conform(OPSTR_CPU_ROMSIZE, cpu_romsize, r->cpu_rom.size);
+       error += dump_length_conform(OPSTR_CPU_RAMSIZE, cpu_ramsize, r->cpu_ram.size);
+       error += dump_length_conform(OPSTR_PPU_ROMSIZE, ppu_romsize, r->ppu_rom.size);
+       
+       //command line config override
+       if(c->mirror != CONFIG_OVERRIDE_UNDEF){
+               r->mirror = c->mirror;
+       }
+       if(c->backupram != CONFIG_OVERRIDE_UNDEF){
+               r->backupram = 1;
+       }
+       if(c->mapper != CONFIG_OVERRIDE_UNDEF){
+               //program mode ¤Ç mapper Êѹ¹¤òËɤ°
+               assert(c->mode == MODE_ROM_DUMP);
+               r->mappernum = c->mapper;
+       }
+       if(c->syntaxtest == 1){
+               if(error == 0){
+                       printf("syntax ok!\n");
+               }
+               error += 1;
+       }
+       return error;
+}
+
+/*
+execute() ÍÑ¥µ¥Ö´Ø¿ô¤È¥Ç¡¼¥¿
+*/
+static int execute_connection_check(const struct reader_driver *d)
+{
+       int ret = OK;
+       const int testsize = 0x80;
+       int testcount = 3;
+       uint8_t *master, *reload;
+       master = Malloc(testsize);
+       reload = Malloc(testsize);
+
+       d->cpu_read(0xfee0, testsize, master);
+       
+       while(testcount != 0){
+               d->cpu_read(0xfee0, testsize, reload);
+               if(memcmp(master, reload, testsize) != 0){
+                       ret = NG;
+                       break;
+               }
+               testcount--;
+       }
+       
+       Free(master);
+       Free(reload);
+       return ret;
+}
+
+enum {PPU_TEST_RAM, PPU_TEST_ROM};
+const uint8_t PPU_TEST_DATA[] = "PPU_TEST_DATA";
+static int ppu_ramfind(const struct reader_driver *d)
+{
+       const long length = sizeof(PPU_TEST_DATA);
+       const long testaddr = 123;
+       uint8_t writedata[length];
+       //ppu ram data fill 0
+       memset(writedata, 0, length);
+       d->ppu_write(testaddr, length, writedata);
+       
+       //ppu test data write
+       d->ppu_write(testaddr, length, PPU_TEST_DATA);
+
+       d->ppu_read(testaddr, length, writedata);
+       if(memcmp(writedata, PPU_TEST_DATA, length) == 0){
+               return PPU_TEST_RAM;
+       }
+       return PPU_TEST_ROM;
+}
+
+static int ramtest(const int region, const struct reader_driver *d, long address, long length, uint8_t *writedata, uint8_t *testdata, const long filldata)
+{
+       memset(writedata, filldata, length);
+       switch(region){
+       case MEMORY_AREA_CPU_RAM:
+               d->cpu_write_6502(address, length, writedata);
+               break;
+       case MEMORY_AREA_PPU:
+               d->ppu_write(address, length, writedata);
+               break;
+       default:
+               assert(0);
+       }
+       switch(region){
+       case MEMORY_AREA_CPU_RAM:
+               d->cpu_read(address, length, testdata);
+               break;
+       case MEMORY_AREA_PPU:
+               d->ppu_read(address, length, testdata);
+               break;
+       default:
+               assert(0);
+       }
+       if(memcmp(writedata, testdata, length) == 0){
+               return 0;
+       }
+       return 1;
+}
+
+static const long SRAMTESTDATA[] = {0xff, 0xaa, 0x55, 0x00};
+static int sramtest(const int region, const struct reader_driver *d, long address, long length)
+{
+       uint8_t *writedata, *testdata;
+       int error = 0;
+       int i;
+       testdata = Malloc(length);
+       writedata = Malloc(length);
+       for(i = 0; i < sizeof(SRAMTESTDATA) / sizeof(long); i++){
+               const long filldata = SRAMTESTDATA[i];
+               error += ramtest(region, d, address, length, testdata, writedata, filldata);
+       }
+       Free(testdata);
+       Free(writedata);
+       return error;
+}
+
+static void readbuffer_print(const struct memory *m, long length)
+{
+       if(length >= 0x10){
+               length = 0x10;
+       }
+       printf("%s ROM 0x%05x:", m->name, m->offset);
+       int offset = 0;
+       const uint8_t *data;
+       data = m->data;
+       while(length != 0){
+               char safix;
+               switch(offset & 0xf){
+               default:
+                       safix = ' ';
+                       break;
+               case 0x7:
+                       safix = '-';
+                       break;
+               case 0xf:
+                       safix = ';';
+                       break;
+               }
+               printf("%02x%c", (int) *data, safix);
+               data++;
+               offset++;
+               length--;
+       }
+}
+
+static void checksum_print(const uint8_t *data, long length)
+{
+       int sum = 0;
+       while(length != 0){
+               sum += (int) *data;
+               data++;
+               length--;
+       }
+       printf(" 0x%06x\n", sum);
+}
+
+static void read_result_print(const struct memory *m, long length)
+{
+       readbuffer_print(m, length);
+       checksum_print(m->data, length);
+       fflush(stdout);
+}
+
+static void execute_program_begin(const struct memory *m, const long length)
+{
+       int tail = m->offset + (int) length - 1;
+       printf("writing %s area 0x%06x-0x%06x ... ", m->name, m->offset, tail);
+       fflush(stdout);
+}
+
+static const char STR_OK[] = "OK";
+static const char STR_NG[] = "NG";
+
+//memcmp ¤ÎÌá¤êÃͤ¬Æþ¤ë¤Î¤Ç 0 ¤¬Àµ¾ï
+static void execute_program_finish(int result)
+{
+       const char *str;
+       str = STR_NG;
+       if(result == 0){
+               str = STR_OK;
+       }
+       printf("%s\n", str);
+       fflush(stdout);
+}
+static const char EXECUTE_ERROR_PREFIX[] = "execute error:";
+static const char EXECUTE_PROGRAM_PREPARE[] = "%s device initialize ... ";
+static const char EXECUTE_PROGRAM_DONE[] = "done\n";
+static void execute_cpu_ramrw(const struct reader_driver *d, const struct memory *ram, int mode, long address, long length)
+{
+       if(mode == MODE_RAM_WRITE){
+               d->cpu_write_6502(address, length, ram->data);
+/*             const uint8_t *writedata;
+               long a = address;
+               long l = length;
+               writedata = ram->data;
+               while(l != 0){
+                       d->cpu_write_6502(a++, *writedata, wait);
+                       writedata += 1;
+                       l--;
+               }*/
+               uint8_t *compare;
+               compare = Malloc(length);
+               d->cpu_read(address, length, compare);
+               if(memcmp(ram->data, compare, length) == 0){
+                       printf("RAM data write success\n");
+               }else{
+                       printf("RAM data write failed\n");
+               }
+               Free(compare);
+       }else{
+               d->cpu_read(address, length, ram->data);
+       }
+}
+
+static int execute(const struct script *s, const struct st_config *c, struct romimage *r)
+{
+       const struct reader_driver *const d = c->reader;
+       switch(d->open_or_close(READER_OPEN)){
+       case OK:
+               d->init();
+               break;
+       case NG:
+               printf("%s driver open error\n", EXECUTE_ERROR_PREFIX);
+               return NG;
+       default:
+               assert(0);
+       }
+       if(execute_connection_check(d) == NG){
+               printf("%s maybe connection error\n", EXECUTE_ERROR_PREFIX);
+               d->open_or_close(READER_CLOSE);
+               return NG;
+       }
+       uint8_t *program_compare;
+       program_compare = NULL;
+       if(c->mode == MODE_ROM_PROGRAM){
+               printf("flashmemory/SRAM program mode. To abort programming, press Ctrl+C\n");
+               int size = r->cpu_rom.size;
+               if(size < r->ppu_rom.size){
+                       size = r->ppu_rom.size;
+               }
+               program_compare = Malloc(size);
+       }
+       struct memory cpu_rom, ppu_rom, cpu_ram;
+       cpu_rom = r->cpu_rom;
+       ppu_rom = r->ppu_rom;
+       cpu_ram = r->cpu_ram;
+       
+       int status = DUMP;
+       int programcount_cpu = 0, programcount_ppu = 0;
+       int flashcommand_change_cpu = 0, flashcommand_change_ppu = 0;
+       variable_init_all();
+       while(s->opcode != SCRIPT_OPCODE_DUMP_END){
+               //printf("%s\n", SCRIPT_SYNTAX[s->opcode].name);
+               switch(s->opcode){
+               case SCRIPT_OPCODE_CPU_COMMAND:
+                       command_mask(MEMORY_AREA_CPU_ROM, s->value[0], s->value[1], s->value[2], &(r->cpu_flash));
+                       flashcommand_change_cpu = 1;
+                       break;
+               case SCRIPT_OPCODE_CPU_READ:{
+                       struct memory *m;
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       m = &cpu_rom;
+                       d->cpu_read(address, length, m->data);
+                       read_result_print(m, length);
+                       m->data += length;
+                       m->offset += length;
+                       }break;
+               case SCRIPT_OPCODE_CPU_WRITE:{
+                       long data;
+                       uint8_t d8;
+                       expression_calc(&s->expression, &data);
+                       d8 = data & 0xff;
+                       d->cpu_write_6502(s->value[0], 1, &d8);
+                       }
+                       break;
+               case SCRIPT_OPCODE_CPU_RAMRW:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       if(c->mode == MODE_RAM_WRITE){
+                               if(sramtest(MEMORY_AREA_CPU_RAM, d, address, length) != 0){
+                                       printf("SRAM test NG\n");
+                                       status = END;
+                                       break;
+                               }
+                       }
+                       execute_cpu_ramrw(d, &cpu_ram, c->mode, address, length);
+                       read_result_print(&cpu_ram, length);
+                       cpu_ram.data += length;
+                       cpu_ram.offset += length;
+                       }
+                       break;
+               case SCRIPT_OPCODE_CPU_PROGRAM:{
+                       if(c->cpu_flash_driver->id_device == FLASH_ID_DEVICE_DUMMY){
+                               break;
+                       }
+                       if(flashcommand_change_cpu != 0){
+                               r->cpu_flash.config(
+                                       r->cpu_flash.command_0000,
+                                       r->cpu_flash.command_2aaa,
+                                       r->cpu_flash.command_5555,
+                                       r->cpu_flash.pagesize,
+                                       false
+                               );
+                               flashcommand_change_cpu = 0;
+                       }
+                       if(programcount_cpu++ == 0){
+                               printf(EXECUTE_PROGRAM_PREPARE, cpu_rom.name);
+                               fflush(stdout);
+                               //device ¤Ë¤è¤Ã¤Æ¤Ï erase
+                               c->cpu_flash_driver->init(&(r->cpu_flash), c->cpu_flash_driver->erase_wait);
+                               printf(EXECUTE_PROGRAM_DONE);
+                               fflush(stdout);
+                       }
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       execute_program_begin(&cpu_rom, length);
+                       c->cpu_flash_driver->program(
+                               &(r->cpu_flash),
+                               address, length,
+                               &cpu_rom
+                       );
+                       int result;
+                       if(1){
+                               d->cpu_read(address, length, program_compare);
+                               result = memcmp(program_compare, cpu_rom.data, length);
+                               execute_program_finish(result);
+                       }else{
+                               puts("skip");
+                               result = 1;
+                       }
+                       cpu_rom.data += length;
+                       cpu_rom.offset += length;
+                       
+                       if((DEBUG==0) && (result != 0)){
+                               status = END;
+                       }
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_COMMAND:
+                       command_mask(MEMORY_AREA_PPU, s->value[0], s->value[1], s->value[2], &(r->ppu_flash));
+                       flashcommand_change_ppu = 1;
+                       break;
+               case SCRIPT_OPCODE_PPU_RAMFIND:
+                       if(ppu_ramfind(d) == PPU_TEST_RAM){
+                               printf("PPU_RAMFIND: charcter RAM found\n");
+                               r->ppu_rom.size = 0;
+                               status = END;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_SRAMTEST:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       printf("PPU_SRAMTEST: 0x%06x-0x%06x ", (int)ppu_rom.offset, (int) (ppu_rom.offset + length) - 1);
+                       if(sramtest(MEMORY_AREA_PPU, d, address, length) == 0){
+                               printf("%s\n", STR_OK);
+                       }else{
+                               printf("%s\n", STR_NG);
+                               //status = END;
+                       }
+                       }break;
+               case SCRIPT_OPCODE_PPU_READ:{
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       if(length == 0){
+                               /*for mmc2,4 protect.
+                               ¤³¤Î¤È¤­¤Ï1byteÆɤ߹þ¤ó¤Ç¡¢¤½¤ÎÆâÍƤϥХåե¡¤Ë¤¤¤ì¤Ê¤¤*/
+                               uint8_t dummy;
+                               d->ppu_read(address, 1, &dummy);
+                       }else{
+                               d->ppu_read(address, length, ppu_rom.data);
+                               read_result_print(&ppu_rom, length);
+                       }
+                       ppu_rom.data += length;
+                       ppu_rom.offset += length;
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_WRITE:
+                       if(DEBUG == 1){
+                               long data;
+                               uint8_t d8;
+                               expression_calc(&s->expression, &data);
+                               d8 = data;
+                               d->ppu_write(s->value[0], 1, &d8);
+                       }
+                       break;
+               case SCRIPT_OPCODE_PPU_PROGRAM:{
+                       if(c->ppu_flash_driver->id_device == FLASH_ID_DEVICE_DUMMY){
+                               break;
+                       }
+                       if(flashcommand_change_ppu != 0){
+                               r->ppu_flash.config(
+                                       r->ppu_flash.command_0000,
+                                       r->ppu_flash.command_2aaa,
+                                       r->ppu_flash.command_5555,
+                                       r->ppu_flash.pagesize,
+                                       false
+                               );
+                               flashcommand_change_ppu = 0;
+                       }
+                       if(programcount_ppu++ == 0){
+                               printf(EXECUTE_PROGRAM_PREPARE, ppu_rom.name);
+                               fflush(stdout);
+                               c->ppu_flash_driver->init(&(r->ppu_flash), c->ppu_flash_driver->erase_wait);
+                               printf(EXECUTE_PROGRAM_DONE);
+                               fflush(stdout);
+                       }
+                       const long address = s->value[0];
+                       const long length = s->value[1];
+                       execute_program_begin(&ppu_rom, length);
+                       c->ppu_flash_driver->program(
+                               &(r->ppu_flash),
+                               address, length,
+                               &ppu_rom
+                       );
+                       d->ppu_read(address, length, program_compare);
+                       const int result = memcmp(program_compare, ppu_rom.data, length);
+                       execute_program_finish(result);
+                       ppu_rom.data += length;
+                       ppu_rom.offset += length;
+                       
+                       if((DEBUG==0) && (result != 0)){
+                               status = END;
+                       }
+                       }
+                       break;
+               case SCRIPT_OPCODE_STEP_START:{
+                       if(s->value[STEP_START] >= s->value[STEP_END]){
+                               status = STEP_THOUGH;
+                       }else{
+                               //¥ë¡¼¥×¤ÎÌá¤êÀè¤Ï¤³¤ÎÌ¿Îá¤Î¼¡¤Ê¤Î¤Ç &s[1]
+                               step_new(s->variable, s->value[STEP_START], s->value[STEP_END], s->value[STEP_NEXT], &s[1]);
+                       }
+                       }break;
+               case SCRIPT_OPCODE_DUMP_END:
+                       status = END;
+                       break;
+               }
+               if(status == END){
+                       break;
+               }else if(status == STEP_THOUGH){
+                       //¤³¤Ô¤Ú
+                       int stepcount = 1;
+                       int end = 0;
+                       while(s->opcode != SCRIPT_OPCODE_DUMP_END){
+                               switch(s->opcode){
+                               case SCRIPT_OPCODE_STEP_START:
+                                       stepcount++;
+                                       break;
+                               case SCRIPT_OPCODE_STEP_END:
+                                       stepcount--;
+                                       if(stepcount == 0){
+                                               end = 1;
+                                       }
+                                       break;
+                               }
+                               s++;
+                               if(end == 1){
+                                       break;
+                               }
+                       }
+                       status = DUMP;
+               }
+               
+               if(s->opcode == SCRIPT_OPCODE_STEP_END){
+                       s = step_end(++s);
+               }else{
+                       s++;
+               }
+       }
+       d->open_or_close(READER_CLOSE);
+       if(program_compare != NULL){
+               Free(program_compare);
+       }
+       return OK;
+}
+
+void script_load(const struct st_config *c)
+{
+       struct script *s;
+       {
+               int scriptsize = 0;
+               char *buf;
+               
+               buf = buf_load_full(c->script, &scriptsize);
+               if(buf == NULL){
+                       printf("scriptfile open error\n");
+                       return;
+               }
+               char **text;
+               text = Malloc(sizeof(char*) * TEXT_MAXLINE);
+               const int text_num = text_load(buf, scriptsize, text);
+               if(text_num == 0){
+                       printf("script line too much\n");
+                       Free(buf);
+                       Free(text);
+                       return;
+               }
+               s = Malloc(sizeof(struct script) * (text_num + 1));
+               //logical_check, execute ¶¦¤Ë s->opcode ¤¬ DUMP_END ¤Ë¤Ê¤ë¤Þ¤Ç³¤±¤ë¡£DUMP_END ¤ÎÆþ¤ì˺¤ìÍѤËËöÈø¤Îscript¤Ëɬ¤º DUMP_END ¤ò¤¤¤ì¤ë
+               {
+                       struct script *k;
+                       k = s;
+                       k += text_num;
+                       k->opcode = SCRIPT_OPCODE_DUMP_END;
+               }
+               const int error = syntax_check(text, text_num, s, c->mode);
+               Free(buf);
+               Free(text);
+               if(error != 0){
+                       Free(s);
+                       return;
+               }
+       }
+       struct romimage r = {
+               .cpu_rom = {
+                       .size = 0, .offset = 0,
+                       .data = NULL,
+                       .attribute = MEMORY_ATTR_NOTUSE,
+                       .name = "program"
+               },
+               .ppu_rom = {
+                       .size = 0, .offset = 0,
+                       .data = NULL,
+                       .attribute = MEMORY_ATTR_NOTUSE,
+                       .name = "charcter"
+               },
+               .cpu_ram = {
+                       .size = 0, .offset = 0,
+                       .data = NULL,
+                       .attribute = MEMORY_ATTR_NOTUSE,
+                       .name = STR_REGION_CPU
+               },
+               //device ¤Ë±þ¤¸¤¿´Ø¿ô¥Ý¥¤¥ó¥¿¤ò flash_order ¤ËÅϤ¹
+               .cpu_flash = {
+                       .command_0000 = 0x8000,
+                       .command_2aaa = 0,
+                       .command_5555 = 0,
+                       .pagesize = c->cpu_flash_driver->pagesize,
+                       .command_mask = c->cpu_flash_driver->command_mask,
+                       .config = c->reader->cpu_flash_config,
+                       .erase = c->reader->cpu_flash_erase,
+                       .program = c->reader->cpu_flash_program,
+                       .write = NULL //c->reader->cpu_write_6502
+               },
+               .ppu_flash = {
+                       .command_0000 = 0,
+                       .command_2aaa = 0,
+                       .command_5555 = 0,
+                       .pagesize = c->ppu_flash_driver->pagesize,
+                       .command_mask = c->ppu_flash_driver->command_mask,
+                       .config = c->reader->ppu_flash_config,
+                       .erase = c->reader->ppu_flash_erase,
+                       .program = c->reader->ppu_flash_program,
+                       .write = NULL //c->reader->ppu_write
+               },
+               .mappernum = 0,
+               .mirror = MIRROR_PROGRAMABLE
+       };
+       //attribute ¤Ï¤½¤Î struct data ¤ËÂФ·¤Æ¤Î RW ¤Ê¤Î¤ÇÍ×Ãí°Õ
+       switch(c->mode){
+       case MODE_ROM_DUMP:
+               r.cpu_rom.attribute = MEMORY_ATTR_WRITE;
+               r.ppu_rom.attribute = MEMORY_ATTR_WRITE;
+               break;
+       case MODE_RAM_READ:
+               r.cpu_ram.attribute = MEMORY_ATTR_WRITE;
+               break;
+       case MODE_RAM_WRITE:
+               r.cpu_ram.attribute = MEMORY_ATTR_READ;
+               break;
+       case MODE_ROM_PROGRAM:
+               r.cpu_rom.attribute = MEMORY_ATTR_READ;
+               r.ppu_rom.attribute = MEMORY_ATTR_READ;
+               break;
+       default:
+               assert(0);
+       }
+       
+       if(logical_check(s, c, &r) == 0){
+               //dump RAM Îΰè¼èÆÀ
+               if(nesbuffer_malloc(&r, c->mode) == false){
+                       Free(s);
+                       if((c->mode == MODE_RAM_WRITE) && (r.cpu_ram.data != NULL)){
+                               Free(r.cpu_ram.data);
+                       }
+                       return;
+               }
+               //script execute!!
+               if(execute(s, c, &r) == OK){
+                       //À®²Ì½ÐÎÏ
+                       switch(c->mode){
+                       case MODE_ROM_DUMP:
+                               nesfile_create(&r, c->romimage);
+                               break;
+                       case MODE_RAM_READ:
+                               backupram_create(&(r.cpu_ram), c->ramimage);
+                               break;
+                       }
+               }
+               //dump RAM Îΰè²òÊü
+               nesbuffer_free(&r, c->mode);
+               if((c->mode == MODE_RAM_WRITE) && (r.cpu_ram.data != NULL)){
+                       Free(r.cpu_ram.data);
+               }
+       }
+       Free(s);
+}
diff --git a/client/tag/0.6.2/script_syntax.c b/client/tag/0.6.2/script_syntax.c
new file mode 100644 (file)
index 0000000..ac7e9d6
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+famicom ROM cartridge utility - unagi
+script syntax data and function
+
+Copyright (C) 2008-2009 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include "type.h"
+#include "textutil.h"
+#include "script.h"
+#include "script_syntax.h"
+
+static int syntax_check_expression(char **word, int word_num, struct st_expression *e)
+{
+       if(word_num == 0){
+               return NG;
+       }
+       //left
+       if(value_get(word[0], &(e->left.value)) == OK){
+               e->left.type = EXPRESSION_TYPE_VALUE;
+       }else{
+               e->left.type = EXPRESSION_TYPE_VARIABLE;
+               e->left.variable = word[0][0];
+       }
+       word_num--;
+       if(word_num == 0){
+               e->operator = OPERATOR_NONE;
+               return OK;
+       }
+       //operator
+       e->operator = operator_get(word[1]);
+       if(e->operator == OPERATOR_ERROR){
+               return NG;
+       }
+       word_num--;
+       if(word_num == 0){
+               return NG;
+       }
+       //right
+       if(value_get(word[2], &(e->right.value)) == OK){
+               e->right.type = EXPRESSION_TYPE_VALUE;
+       }else{
+               e->right.type = EXPRESSION_TYPE_VARIABLE;
+               e->right.variable = word[2][0];
+       }
+       return OK;
+}
+
+static int strto_enum(const char **t, const char *word, int start, long *val)
+{
+       long i = start;
+       while(*t != NULL){
+               if(strcmp(*t, word) == 0){
+                       *val = i;
+                       return OK;
+               }
+               i++;
+               t++;
+       }
+       return NG;
+}
+
+#include "syntax_data.h"
+static const char SYNTAX_ERROR_PREFIX[] = "syntax error:";
+
+/*
+return: error count, ¤³¤³¤Ç¤Ï 0 or 1
+*/
+static int syntax_check_phase(char **word, int word_num, struct script *s, const int mode)
+{
+       int i = sizeof(SCRIPT_SYNTAX) / sizeof(SCRIPT_SYNTAX[0]);
+       const struct script_syntax *syntax;
+       const char *opword;
+       opword = word[0];
+       syntax = SCRIPT_SYNTAX;
+       while(i != 0){
+               if(strcmp(syntax->name, opword) == 0){
+                       int j;
+                       
+                       s->opcode = syntax->script_opcode;
+                       if((mode & syntax->permittion) == 0){
+                               printf("%d:%s opcode %s is not allowed on current mode\n", s->line, SYNTAX_ERROR_PREFIX, syntax->name);
+                               return 1;
+                       };
+                       {
+                               int compare = 0;
+                               switch(syntax->compare){
+                               case SYNTAX_COMPARE_EQ:
+                                       compare = (syntax->argc == (word_num - 1));
+                                       break;
+                               case SYNTAX_COMPARE_GT:
+                                       compare = ((word_num - 1) >= syntax->argc);
+                                       compare &= (word_num <= 5);
+                                       break;
+                               }
+                               if(!compare){
+                                       printf("%d:%s parameter number not match %s\n", s->line, SYNTAX_ERROR_PREFIX, opword);
+                                       return 1;
+                               }
+                       }
+                       //opcode pointer ¤ò¤º¤é¤·¤Æñ¸ì¤Îµ¯ÅÀ¤ò°ú¿ô¤À¤±¤Ë¤¢¤ï¤»¤ë
+                       word++;
+                       word_num--;
+                       for(j = 0; j < word_num; j++){
+                               switch(syntax->argv_type[j]){
+                               case SYNTAX_ARGVTYPE_NULL:
+                                       printf("%d:%s ARGV_NULL select\n", s->line, SYNTAX_ERROR_PREFIX);
+                                       return 1;
+                               case SYNTAX_ARGVTYPE_VALUE:
+                                       if(value_get(word[j], &(s->value[j])) == NG){
+                                               printf("%d:%s value error %s %s\n", s->line, SYNTAX_ERROR_PREFIX, opword, word[j]);
+                                               return 1;
+                                       }
+                                       break;
+                               case SYNTAX_ARGVTYPE_HV:
+                                       switch(word[j][0]){
+                                       case 'H':
+                                       case 'h':
+                                               s->value[j] = MIRROR_HORIZONAL;
+                                               break;
+                                       case 'V':
+                                       case 'v':
+                                               s->value[j] = MIRROR_VERTICAL;
+                                               break;
+                                       case 'A':
+                                       case 'a':
+                                               s->value[j] = MIRROR_PROGRAMABLE;
+                                               break;
+                                       default:
+                                               printf("%d:%s unknown scroll mirroring type %s\n", s->line, SYNTAX_ERROR_PREFIX, word[j]);
+                                               return 1;
+                                       }
+                                       break;
+                               case SYNTAX_ARGVTYPE_EXPRESSION:
+                                       s->value[j] = VALUE_EXPRESSION;
+                                       //Ì¿Îá̾¤Îñ¸ì¤Èñ¸ì¿ô¤ò½ü³°¤·¤ÆÅϤ¹
+                                       if(syntax_check_expression(&word[j], word_num - 1, &s->expression) == NG){
+                                               printf("%d:%s expression error\n", s->line, SYNTAX_ERROR_PREFIX);
+                                               return 1;
+                                       }
+                                       //°Ü¹Ô¤Îñ¸ì¤ÏÆɤޤʤ¤¤³¤È¤Ë¤¹¤ë(¤Þ¤º¤¤¤«¤â)
+                                       return 0;
+                               case SYNTAX_ARGVTYPE_VARIABLE:{
+                                       const char v = word[j][0];
+                                       if(v >= 'a' && v <= 'z'){
+                                               s->value[j] = VALUE_VARIABLE;
+                                               s->variable = v;
+                                       }else{
+                                               printf("%d:%s variable must use [a-z] %s\n", s->line, SYNTAX_ERROR_PREFIX, word[j]);
+                                               return 1;
+                                       }
+                                       }break;
+                               case SYNTAX_ARGVTYPE_CONSTANT:{
+                                       if(value_get(word[j], &(s->value[j])) == OK){
+                                               break;
+                                       }else if(strto_enum(STR_CONSTANTNAME, word[j], VALUE_CONTANT_CPU_STEP_START, &(s->value[j])) == OK){
+                                               break;
+                                       }else{
+                                               printf("%d:%s constant error %s %s\n", s->line, SYNTAX_ERROR_PREFIX, opword, word[j]);
+                                               return 1;
+                                       }
+                                       }break;
+                               case SYNTAX_ARGVTYPE_TRANSTYPE:{
+                                       if(strto_enum(STR_TRANSTYPE, word[j], VALUE_TRANSTYPE_EMPTY, &(s->value[j])) == NG){
+                                               printf("%d:%s unknown trans type %s\n", s->line, SYNTAX_ERROR_PREFIX, word[j]);
+                                               return 1;
+                                       }
+                                       }break;
+                               default:
+                                       s->value[j] = VALUE_UNDEF;
+                                       break;
+                               }
+                       }
+                       //opcode found and ÆþÎÏʸ»ú¼ïÀµ¾ï
+                       return 0;
+               }
+               syntax++;
+               i--;
+       }
+       printf("%d:%s unknown opcode %s\n", s->line, SYNTAX_ERROR_PREFIX, opword);
+       return 1;
+}
+
+/*
+return: error count
+*/
+int syntax_check(char **text, int text_num, struct script *s, int mode)
+{
+       int error = 0;
+       int i;
+       mode = 1<< mode; //permittion ¤Ï bitflag ¤Ê¤Î¤Ç¤³¤³¤ÇÊÑ´¹¤¹¤ë
+       for(i = 0; i < text_num; i++){
+               char *word[TEXT_MAXWORD];
+               const int n = word_load(text[i], word);
+               s->line = i + 1;
+               switch(word[0][0]){
+               case '#':
+               case '\0':
+                       s->opcode = SCRIPT_OPCODE_COMMENT;
+                       break;
+               default:
+                       error += syntax_check_phase(word, n, s, mode);
+                       break;
+               }
+               s++;
+       }
+       return error;
+}
+
diff --git a/client/tag/0.6.2/script_syntax.h b/client/tag/0.6.2/script_syntax.h
new file mode 100644 (file)
index 0000000..0050cf7
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _SYNTAX_H_
+#define _SYNTAX_H_
+#include "config.h"
+#include "header.h"
+enum script_opcode{
+       SCRIPT_OPCODE_MAPPER,
+       SCRIPT_OPCODE_MIRROR,
+       SCRIPT_OPCODE_CPU_ROMSIZE,
+       SCRIPT_OPCODE_CPU_RAMSIZE,
+       SCRIPT_OPCODE_CPU_FLASHSIZE,
+       SCRIPT_OPCODE_PPU_ROMSIZE,
+       SCRIPT_OPCODE_PPU_FLASHSIZE,
+       SCRIPT_OPCODE_DUMP_START,
+       SCRIPT_OPCODE_CPU_COMMAND,
+       SCRIPT_OPCODE_CPU_READ,
+       SCRIPT_OPCODE_CPU_WRITE,
+       SCRIPT_OPCODE_CPU_RAMRW,
+       SCRIPT_OPCODE_CPU_PROGRAM,
+       SCRIPT_OPCODE_PPU_COMMAND,
+       SCRIPT_OPCODE_PPU_RAMFIND,
+       SCRIPT_OPCODE_PPU_SRAMTEST,
+       SCRIPT_OPCODE_PPU_READ,
+       SCRIPT_OPCODE_PPU_WRITE,
+       SCRIPT_OPCODE_PPU_PROGRAM,
+       SCRIPT_OPCODE_STEP_START,
+       SCRIPT_OPCODE_STEP_END,
+       SCRIPT_OPCODE_DUMP_END,
+       SCRIPT_OPCODE_COMMENT,
+       SCRIPT_OPCODE_NUM
+};
+extern const char OPSTR_CPU_ROMSIZE[];
+extern const char OPSTR_CPU_RAMSIZE[];
+extern const char OPSTR_CPU_FLASHSIZE[];
+extern const char OPSTR_PPU_ROMSIZE[];
+extern const char OPSTR_PPU_FLASHSIZE[];
+extern const char OPSTR_CPU_RAMRW[];
+struct script;
+int syntax_check(char **text, int text_num, struct script *s, int mode);
+#endif
diff --git a/client/tag/0.6.2/syntax_data.h b/client/tag/0.6.2/syntax_data.h
new file mode 100644 (file)
index 0000000..7de29cd
--- /dev/null
@@ -0,0 +1,229 @@
+//included from syntax.c only
+enum syntax_argvtype{
+       SYNTAX_ARGVTYPE_NULL,
+       SYNTAX_ARGVTYPE_VALUE,
+       SYNTAX_ARGVTYPE_HV,
+       SYNTAX_ARGVTYPE_EXPRESSION,
+       SYNTAX_ARGVTYPE_VARIABLE,
+       SYNTAX_ARGVTYPE_CONSTANT,
+       SYNTAX_ARGVTYPE_TRANSTYPE
+};
+enum syntax_compare{
+       SYNTAX_COMPARE_EQ,
+       SYNTAX_COMPARE_GT
+};
+enum{
+       SYNTAX_ARGV_TYPE_NUM = 4
+};
+enum syntax_permittion{
+       PERMITTION_ROM_DUMP = 1 << MODE_ROM_DUMP,
+       PERMITTION_RAM_READ = 1 << MODE_RAM_READ,
+       PERMITTION_RAM_WRITE = 1 << MODE_RAM_WRITE,
+       PERMITTION_ROM_PROGRAM = 1 << MODE_ROM_PROGRAM,
+       PERMITTION_ALL = 0xffff
+};
+struct script_syntax{
+       const char *name;
+       enum script_opcode script_opcode;
+       enum syntax_permittion permittion;
+       int argc;
+       enum syntax_compare compare;
+       const enum syntax_argvtype *argv_type;
+};
+//¤³¤ì¤é¤Îʸ»úÎó¤Ï script_engine.c ¤Ç¤â»ÈÍѤ¹¤ë
+const char OPSTR_CPU_ROMSIZE[] = "CPU_ROMSIZE";
+const char OPSTR_CPU_RAMSIZE[] = "CPU_RAMSIZE";
+const char OPSTR_CPU_FLASHSIZE[] = "CPU_FLASHSIZE";
+const char OPSTR_PPU_ROMSIZE[] = "PPU_ROMSIZE";
+const char OPSTR_PPU_FLASHSIZE[] = "PPU_FLASHSIZE";
+const char OPSTR_CPU_RAMRW[] = "CPU_RAMRW";
+
+static const enum syntax_argvtype 
+ARGV_TYPE_VALUE_ONLY[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_NULL,
+       SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_HV[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_HV, SYNTAX_ARGVTYPE_NULL,
+       SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_NULL[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL,
+       SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_ADDRESS_EXPRESSION[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE,
+       SYNTAX_ARGVTYPE_EXPRESSION, SYNTAX_ARGVTYPE_EXPRESSION, SYNTAX_ARGVTYPE_EXPRESSION
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_ADDRESS_LENGTH[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE,
+       SYNTAX_ARGVTYPE_NULL, SYNTAX_ARGVTYPE_NULL
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_STEP_START[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VARIABLE, SYNTAX_ARGVTYPE_CONSTANT,
+       SYNTAX_ARGVTYPE_CONSTANT, SYNTAX_ARGVTYPE_VALUE
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_ADDRESS_COMMAND[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE,
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_NULL
+};
+static const enum syntax_argvtype 
+ARGV_TYPE_FLASHSIZE[SYNTAX_ARGV_TYPE_NUM] = {
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_TRANSTYPE,
+       SYNTAX_ARGVTYPE_VALUE, SYNTAX_ARGVTYPE_VALUE
+};
+static const struct script_syntax SCRIPT_SYNTAX[] = {
+       {
+               name: "MAPPER",
+               script_opcode: SCRIPT_OPCODE_MAPPER,
+               permittion: PERMITTION_ROM_DUMP | PERMITTION_ROM_PROGRAM,
+               argc: 1, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_VALUE_ONLY
+       },{
+               name: "MIRROR",
+               script_opcode: SCRIPT_OPCODE_MIRROR,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 1, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_HV
+       },{
+               name: OPSTR_CPU_ROMSIZE,
+               script_opcode: SCRIPT_OPCODE_CPU_ROMSIZE,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 1, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_VALUE_ONLY
+       },{
+               name: OPSTR_CPU_RAMSIZE,
+               script_opcode: SCRIPT_OPCODE_CPU_RAMSIZE,
+               permittion: PERMITTION_RAM_READ | PERMITTION_RAM_WRITE,
+               argc: 1, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_VALUE_ONLY
+       },{
+               name: OPSTR_CPU_FLASHSIZE,
+               script_opcode: SCRIPT_OPCODE_CPU_FLASHSIZE,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc: 4, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_FLASHSIZE
+       },{
+               name: OPSTR_PPU_ROMSIZE,
+               script_opcode: SCRIPT_OPCODE_PPU_ROMSIZE,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 1, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_VALUE_ONLY
+       },{
+               name: OPSTR_PPU_FLASHSIZE,
+               script_opcode: SCRIPT_OPCODE_PPU_FLASHSIZE,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc: 4, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_FLASHSIZE
+       },{
+               name: "CPU_COMMAND",
+               script_opcode: SCRIPT_OPCODE_CPU_COMMAND,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc:3, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_COMMAND
+       },{
+               name: "PPU_COMMAND",
+               script_opcode: SCRIPT_OPCODE_PPU_COMMAND,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc:3, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_COMMAND
+       },{
+               name: "DUMP_START",
+               script_opcode: SCRIPT_OPCODE_DUMP_START,
+               permittion: PERMITTION_ALL,
+               argc: 0, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_NULL
+       },{
+               name: "CPU_READ",
+               script_opcode: SCRIPT_OPCODE_CPU_READ,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+       },{
+               name: "CPU_WRITE",
+               script_opcode: SCRIPT_OPCODE_CPU_WRITE,
+               permittion: PERMITTION_ALL,
+               argc: 2, compare: SYNTAX_COMPARE_GT,
+               argv_type: ARGV_TYPE_ADDRESS_EXPRESSION
+       },{
+               name: OPSTR_CPU_RAMRW,
+               script_opcode: SCRIPT_OPCODE_CPU_RAMRW,
+               permittion: PERMITTION_RAM_READ | PERMITTION_RAM_WRITE,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+       },{
+               name: "CPU_PROGRAM",
+               script_opcode: SCRIPT_OPCODE_CPU_PROGRAM,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+       },{
+               name: "PPU_RAMFIND",
+               script_opcode: SCRIPT_OPCODE_PPU_RAMFIND,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 0, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_NULL
+       },{
+               name: "PPU_SRAMTEST",
+               script_opcode: SCRIPT_OPCODE_PPU_SRAMTEST,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+       },{
+               name: "PPU_READ",
+               script_opcode: SCRIPT_OPCODE_PPU_READ,
+               permittion: PERMITTION_ROM_DUMP,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH
+       },
+#if DEBUG==1
+       {
+               name: "PPU_WRITE",
+               script_opcode: SCRIPT_OPCODE_PPU_WRITE,
+               permittion: PERMITTION_ROM_DUMP | PERMITTION_ROM_PROGRAM,
+               argc: 2, compare: SYNTAX_COMPARE_GT,
+               argv_type: ARGV_TYPE_ADDRESS_EXPRESSION
+       },
+#endif
+       {
+               name: "PPU_PROGRAM",
+               script_opcode: SCRIPT_OPCODE_PPU_PROGRAM,
+               permittion: PERMITTION_ROM_PROGRAM,
+               argc: 2, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_ADDRESS_LENGTH,
+       },
+       {
+               name: "STEP_START",
+               script_opcode: SCRIPT_OPCODE_STEP_START,
+               permittion: PERMITTION_ALL,
+               argc: 4, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_STEP_START
+       },{
+               name: "STEP_END",
+               script_opcode: SCRIPT_OPCODE_STEP_END,
+               permittion: PERMITTION_ALL,
+               argc: 0, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_NULL
+       },{
+               name: "DUMP_END",
+               script_opcode: SCRIPT_OPCODE_DUMP_END,
+               permittion: PERMITTION_ALL,
+               argc: 0, compare: SYNTAX_COMPARE_EQ,
+               argv_type: ARGV_TYPE_NULL
+       }
+};
+
+static const char *STR_TRANSTYPE[] = {
+       "EMPTY", "TOP", "BOTTOM", "FULL", NULL
+};
+
+static const char *STR_CONSTANTNAME[] = {
+       "C_START", "C_END",
+       "P_START", "P_END", NULL
+};
diff --git a/client/tag/0.6.2/textutil.c b/client/tag/0.6.2/textutil.c
new file mode 100644 (file)
index 0000000..5c1662f
--- /dev/null
@@ -0,0 +1,208 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "type.h"
+#include "textutil.h"
+#ifndef DEBUG
+ #define DEBUG 0
+#endif
+
+#define PRINT(msg) \
+       if(DEBUG == 1){ \
+               printf("%s %s\n",  __FUNCTION__, msg);\
+       }
+
+int text_load(char *buf, int length, char **text)
+{
+       int line = 0;
+       char pastdata = '#';
+       
+       text[line] = buf;
+       line++;
+       while(length != 0){
+               //Àµ³Î¤Ê¹Ô¿ôÇÄ°®¤È¼êÈ´¤­¤Î¤¿¤á CR only ¤Î²þ¹Ô¥³¡¼¥É¤ò̤¥µ¥Ý¡¼¥È¤È¤¹¤ë
+               int current_lf = 0;
+               
+               switch(*buf){
+               case '\n':
+                       *buf = '\0';
+                       current_lf = 1;
+                       break;
+               case '\r':
+                       *buf = '\0';
+                       break;
+               }
+               switch(pastdata){
+               case '\0':
+                       if(line >= TEXT_MAXLINE){
+                               PRINT("line over")
+                               return 0;
+                       }
+                       if(current_lf == 0){
+                               text[line] = buf;
+                               line++;
+                       }
+                       break;
+               }
+               pastdata = *buf;
+               buf++;
+               length--;
+       }
+       buf--;
+       *buf = '\0';
+       return line;
+}
+
+int word_load(char *buf, char **text)
+{
+       int word = 0;
+       char pastdata = '#';
+       
+       switch(*buf){
+       case '\t':
+       case ' ':
+               break;
+       case '#': //¹ÔƬ¥³¥á¥ó¥È
+               text[word] = buf;
+               return 1;
+       default:
+               text[word] = buf;
+               word++;
+               break;
+       }
+       
+       while(*buf != '\0'){
+               int current_spc = 0;
+               switch(*buf){
+               case '\t':
+               case ' ':
+                       *buf = '\0';
+                       current_spc = 1;
+                       break;
+               }
+               switch(pastdata){
+               case '\0':
+                       if(word >= TEXT_MAXWORD){
+                               PRINT("word over")
+                               return 0;
+                       }
+                       if(current_spc == 0){
+                               /*if(*buf == '#'){
+                                       return word;
+                               }*/
+                               text[word] = buf;
+                               word++;
+                       }
+                       break;
+               }
+               pastdata = *buf;
+               buf++;
+       }
+       return word;
+}
+
+int value_get(const char *str, long *val)
+{
+       int base = 10;
+       int sign = 1;
+       //-¤¬¤Ä¤¤¤Æ¤ë¤«
+       switch(*str){
+       case '\0':
+               return NG;
+       case '-':
+               sign = -1;
+               str++;
+               if(*str == '\0'){
+                       return NG;
+               }
+               break;
+       }
+       //0x, 0b, $, % ¤¬¤Ä¤¤¤Æ¤ë¤«
+       switch(*str){
+       case '0':
+               switch(str[1]){
+               case '\0':
+                       //¤¿¤ó¤Ê¤ë 0 ¤Ê¤Î¤Ç OK
+                       break;
+               case 'x':
+                       base = 0x10;
+                       str += 2;
+                       break;
+               case 'b':
+                       base = 2;
+                       str += 2;
+                       break;
+               case '0': case '1': case '2': case '3':
+               case '4': case '5': case '6': case '7':
+               case '8': case '9':
+                       //C¤Ê¤é8¿Ê¿ô°·¤¤¤À¤±¤É10¿Ê¿ô°·¤¤¤Ë¤¹¤ë
+                       break;
+               default:
+                       return NG;
+               }
+               break;
+       case '$':
+               base = 0x10;
+               str += 1;
+               break;
+       case '%':
+               base = 2;
+               str += 1;
+               break;
+       }
+       //¤³¤Î»þÅÀ¤Ç¤Î str ¤Ï ¿ô»ú¤ÎÀèƬ¤È¤·¤Æ¤¿¾ì½ê
+       char *error;
+       *val = strtol(str, &error, base);
+       if(error[0] != '\0'){
+               //x01
+               //4M\0
+               if((error[1] == '\0') && (base == 10)){
+                       switch(error[0]){
+                       case 'K':
+                               *val *= 0x400;
+                               break;
+                       case 'M':
+                               *val *= 0x20000;
+                               break;
+                       default:
+                               return NG;
+                       }
+               }else{
+                       return NG;
+               }
+       }
+       
+       if(sign == -1){
+               *val = -(*val);
+       }
+       return OK;
+}
+
+struct operator_cmp{
+       char *str;
+       int operator;
+};
+static const struct operator_cmp CMP[] = {
+       {"+", OPERATOR_PLUS},
+       {">>", OPERATOR_SHIFT_LEFT},
+       {"<<", OPERATOR_SHIFT_RIGHT},
+       {"&", OPERATOR_AND},
+       {"|", OPERATOR_OR},
+       {"^", OPERATOR_XOR}
+};
+
+int operator_get(char *str)
+{
+       const struct operator_cmp *c;
+       int i = OPERATOR_ERROR;
+       c = CMP;
+       while(i != 0){
+               if(strcmp(c->str, str) == 0){
+                       return c->operator;
+               }
+               c++;
+               i--;
+       }
+       return OPERATOR_ERROR;
+}
+
diff --git a/client/tag/0.6.2/textutil.h b/client/tag/0.6.2/textutil.h
new file mode 100644 (file)
index 0000000..98f7588
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _TEXTUTIL_H_
+#define _TEXTUTIL_H_
+enum{
+       TEXT_MAXLINE = 0x100,
+       TEXT_MAXWORD = 10
+};
+int text_load(char *buf, int length, char **text);
+int word_load(char *buf, char **text);
+int value_get(const char *str, long *val);
+
+enum{
+       OPERATOR_PLUS,
+       OPERATOR_SHIFT_LEFT,
+       OPERATOR_SHIFT_RIGHT,
+       OPERATOR_AND,
+       OPERATOR_OR,
+       OPERATOR_XOR,
+       OPERATOR_ERROR,
+       OPERATOR_NONE,
+};
+
+int operator_get(char *str);
+#endif
diff --git a/client/tag/0.6.2/type.h b/client/tag/0.6.2/type.h
new file mode 100644 (file)
index 0000000..7243298
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef _TYPE_H_
+#define _TYPE_H_
+#include <stdint.h>
+#ifndef __cplusplus 
+  #include <stdbool.h>
+#endif
+
+enum{
+       OK = 0, NG
+};
+#ifdef _UNICODE
+  #include <wchar.h>
+  typedef wchar_t wgChar;
+  #define wgT(x) L##x
+#else
+  typedef char wgChar;
+  #define wgT(x) x
+#endif
+#endif
diff --git a/client/tag/0.6.2/unagi.c b/client/tag/0.6.2/unagi.c
new file mode 100644 (file)
index 0000000..58fc3b0
--- /dev/null
@@ -0,0 +1,332 @@
+/*
+famicom ROM cartridge utility - unagi
+command line interface, config file parser
+
+Copyright (C) 2008-2009 ±·³«È¯¶¨Æ±Áȹç
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License any later version.
+
+This library 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "memory_manage.h"
+#include "type.h"
+#include "reader_master.h"
+#include "giveio.h"
+#include "file.h"
+#include "script.h"
+#include "header.h"
+#include "textutil.h"
+#include "config.h"
+#include "flashmemory.h"
+
+static int flag_get(const char *flag, struct st_config *c)
+{
+       while(*flag != '\0'){
+               switch(*flag){
+               case 'S': case 's':
+                       c->backupram = CONFIG_OVERRIDE_TRUE;
+                       break;
+               case 'H': case 'h':
+                       c->mirror = MIRROR_HORIZONAL;
+                       break;
+               case 'V': case 'v':
+                       c->mirror = MIRROR_VERTICAL;
+                       break;
+               case '_':
+                       break;
+               case 'r':
+                       c->syntaxtest = 1;
+                       break;
+               default:
+                       return NG;
+               }
+               flag++;
+       }
+       return OK;
+}
+//patch... for reader_hongkongfc.c
+extern int hongkong_flash_patch;
+static const char PREFIX_CONFIG_ERROR[] = "config error:";
+static int config_file_load(struct st_config *c)
+{
+       char *buf;
+       int size = 0;
+       c->reader = NULL;
+       buf = buf_load_full("unagi.cfg", &size);
+       if(buf == NULL){
+               printf("%s config file open error\n", PREFIX_CONFIG_ERROR);
+               return NG;
+       }
+       char **text;
+       text = Malloc(sizeof(char*) * TEXT_MAXLINE);
+       const int text_num = text_load(buf, size, text);
+       if(text_num == 0){
+               printf("%s script line too much\n", PREFIX_CONFIG_ERROR);
+               Free(buf);
+               Free(text);
+               return NG;
+       }
+       int i;
+       for(i=0; i<text_num; i++){
+               char *word[TEXT_MAXWORD];
+               word_load(text[i], word);
+               if(word[0][0] == '#'){
+                       continue;
+               }
+               if(strcmp("DRIVER", word[0]) == 0){
+                       c->reader = reader_driver_get(word[1]);
+               }else if(strcmp("HONGKONG_FLASH", word[0]) == 0){
+                       hongkong_flash_patch = 0;
+                       if(strcmp("0.5.3", word[1]) == 0){
+                               hongkong_flash_patch = 1;
+                       }
+               }else if((DEBUG == 1) && (strcmp("WRITE_WAIT", word[0]) == 0)){
+                       if(value_get(word[1], &(c->write_wait)) == NG){
+                               printf("%s write_wait parameter is illigal", PREFIX_CONFIG_ERROR);
+                               Free(buf);
+                               Free(text);
+                               return NG;
+                       }
+               }else if(strcmp("TEST_DEVICE", word[0]) == 0){
+                       if(DEBUG == 1){
+                               strncpy(c->flash_test_device, word[1], CONFIG_STR_LENGTH);
+                       }
+               }else if(strcmp("TEST_MAPPER", word[0]) == 0){
+                       if(DEBUG == 1){
+                               strncpy(c->flash_test_mapper, word[1], CONFIG_STR_LENGTH);
+                       }
+               }else{
+                       printf("%s unknown config title %s", PREFIX_CONFIG_ERROR, word[1]);
+                       Free(buf);
+                       Free(text);
+                       return NG;
+               }
+       }
+       
+       Free(text);
+       if(c->reader == NULL){
+               printf("%s hardware not selected or not found\n", PREFIX_CONFIG_ERROR);
+               Free(buf);
+               return NG;
+       }
+       Free(buf);
+       return OK;
+}
+
+static int flash_pointer_init(const char *device, const struct flash_driver **f)
+{
+       *f = flash_driver_get(device);
+       if(*f == NULL){
+               printf("%s unknown flash device %s\n", PREFIX_CONFIG_ERROR, device);
+               return NG;
+       }
+       return OK;
+}
+
+enum{
+       ARGC_MODE = 1,
+       ARGC_SCRIPTFILE,
+       //DUMP MODE
+       ARGC_DUMP_OUT_NESFILE,
+       ARGC_DUMP_FLAG,
+       ARGC_DUMP_MAPPER,
+       //RAM RW MODE
+       ARGC_READ_OUT_RAMFILE = ARGC_DUMP_OUT_NESFILE,
+       ARGC_WRITE_IN_RAMFILE = ARGC_DUMP_OUT_NESFILE,
+       ARGC_RW_NUM,
+       //PROGRAM MODE
+       ARGC_PROGRAM_IN_NESFILE = ARGC_DUMP_OUT_NESFILE,
+       ARGC_PROGRAM_CPU_DEVICE,
+       ARGC_PROGRAM_PPU_DEVICE,
+       //TESTMODE
+       ARGC_TEST_OPTION = ARGC_SCRIPTFILE,
+       ARGC_TEST_FILE,
+       ARGC_TEST_NUM
+};
+
+static int config_init(const int argc, const char **argv, struct st_config *c)
+{
+       c->script = argv[ARGC_SCRIPTFILE];
+       c->romimage = NULL;
+       c->ramimage = NULL;
+       c->mapper = CONFIG_OVERRIDE_UNDEF;
+       c->mirror = CONFIG_OVERRIDE_UNDEF;
+       c->backupram = CONFIG_OVERRIDE_UNDEF;
+       c->mapper = CONFIG_OVERRIDE_UNDEF;
+       c->syntaxtest = 0;
+       c->cpu_flash_driver = &FLASH_DRIVER_UNDEF;
+       c->ppu_flash_driver = &FLASH_DRIVER_UNDEF;
+       c->write_wait = 0;
+       //mode ÊÌ target file ½é´ü²½
+       switch(argv[ARGC_MODE][0]){
+       case 'd':
+               c->mode = MODE_ROM_DUMP;
+               c->romimage = argv[ARGC_DUMP_OUT_NESFILE];
+               break;
+       case 'r':
+               c->mode = MODE_RAM_READ;
+               c->ramimage = argv[ARGC_READ_OUT_RAMFILE];
+               break;
+       case 'w':
+               c->mode = MODE_RAM_WRITE;
+               c->ramimage = argv[ARGC_WRITE_IN_RAMFILE];
+               break;
+       case 'f':
+               c->mode = MODE_ROM_PROGRAM;
+               c->romimage = argv[ARGC_PROGRAM_IN_NESFILE];
+               //ÍÆÎ̤¬¾¯¤Ê¤¤ ROM ¤ÎµÍ¤áÊý¤Î¥«¥¹¥¿¥Þ¥¤¥º
+               switch(argv[ARGC_MODE][1]){
+               case '\0':
+                       c->transtype_cpu = VALUE_TRANSTYPE_TOP;
+                       c->transtype_ppu = VALUE_TRANSTYPE_TOP;
+                       break;
+               case 't':
+                       c->transtype_cpu = VALUE_TRANSTYPE_TOP;
+                       break;
+               case 'b':
+                       c->transtype_cpu = VALUE_TRANSTYPE_BOTTOM;
+                       break;
+               default:
+                       printf("%s unkown flash trans mode cpu %c\n", PREFIX_CONFIG_ERROR, argv[ARGC_MODE][1]);
+                       return NG;
+               }
+               if(argv[ARGC_MODE][1] == '\0'){
+                       break;
+               }
+               switch(argv[ARGC_MODE][2]){
+               case '\0':
+               case 't':
+                       c->transtype_ppu = VALUE_TRANSTYPE_TOP;
+                       break;
+               case 'b':
+                       c->transtype_ppu = VALUE_TRANSTYPE_BOTTOM;
+                       break;
+               default:
+                       printf("%s unkown flash trans mode ppu %c\n", PREFIX_CONFIG_ERROR, argv[ARGC_MODE][2]);
+                       return NG;
+               }
+               break;
+       case 't':
+               if(DEBUG == 1){
+                       c->mode = MODE_TEST;
+                       break;
+               }
+               //²¼¤Ø
+       default:
+               printf("%s unkown mode %s\n", PREFIX_CONFIG_ERROR, argv[ARGC_MODE]);
+               return NG;
+       };
+       if(config_file_load(c) == NG){
+               return NG;
+       }
+       /*mode ÊÌ argc check. 
+       DEBUG==0  argc: 4,5,6
+       DEBUG==1  argc: 3,4,5,6
+       */
+       switch(c->mode){
+       case MODE_ROM_DUMP:{
+               int flag_error = OK, mapper_error = OK;
+               switch(argc){
+               case 3:
+                       return NG;
+               case 5:
+                       flag_error = flag_get(argv[ARGC_DUMP_FLAG], c);
+                       break;
+               case 6:
+                       flag_error = flag_get(argv[ARGC_DUMP_FLAG], c);
+                       mapper_error = value_get(argv[ARGC_DUMP_MAPPER], &c->mapper);
+                       break;
+               }
+               if(flag_error != OK){
+                       printf("%s unknown flag %s\n", PREFIX_CONFIG_ERROR, argv[ARGC_DUMP_FLAG]);
+                       return NG;
+               }
+               if(mapper_error != OK){
+                       printf("%s unknown mapper %s\n", PREFIX_CONFIG_ERROR, argv[ARGC_DUMP_MAPPER]);
+                       return NG;
+               }
+               }break;
+       case MODE_RAM_READ:
+       case MODE_RAM_WRITE:
+               if(argc != ARGC_RW_NUM){
+                       printf("%s too many argument\n", PREFIX_CONFIG_ERROR);
+                       return NG;
+               }
+               break;
+       case MODE_ROM_PROGRAM:
+               if(c->reader->flash_support == false){
+                       puts("this reader is not supported flash memory programming mode");
+                       return NG;
+               }
+               switch(argc){
+               case 3:
+               case 4:
+                       printf("%s few argument\n", PREFIX_CONFIG_ERROR);
+                       return NG;
+               case 5:
+                       if(flash_pointer_init(argv[ARGC_PROGRAM_CPU_DEVICE], &(c->cpu_flash_driver)) == NG){
+                               return NG;
+                       }
+                       break;
+               case 6:
+                       if(flash_pointer_init(argv[ARGC_PROGRAM_CPU_DEVICE], &(c->cpu_flash_driver)) == NG){
+                               return NG;
+                       }
+                       if(flash_pointer_init(argv[ARGC_PROGRAM_PPU_DEVICE], &(c->ppu_flash_driver)) == NG){
+                               return NG;
+                       }
+                       break;
+               }
+               break;
+       }
+
+       return OK;
+}
+
+#include "version.h"
+int main(int c, char **v)
+{
+       struct st_config config;
+       int config_result = NG;
+       mm_init();
+       switch(c){
+       case 3: //t testmode target
+               if(DEBUG == 0){
+                       goto usage;
+               }
+               //²¼¤Ø
+       case 4: //mode script target
+       case 5:
+               //mode script target flag
+               //mode script target cpu_flash_device
+       case 6:
+               //mode script target flag mapper
+               //mode script target cpu_flash_device ppu_flash_device
+               config_result = config_init(c, (const char **) v, &config);
+               break;
+       usage:
+       default:
+               printf("famicom ROM cartridge utility - unagi version %s\n", STR_VERSION);
+               printf("%s [mode] [mapper script] [target file] [flag]\n", v[0]);
+               printf("mode - [d]ump ROM / [r]ead RAM/ [w]rite RAM/ [f]lash memory program\n");
+               break;
+       }
+       if((config.mode != MODE_TEST) && (config_result == OK)){
+               script_load(&config);
+       }
+       mm_end();
+       return 0;
+}
diff --git a/client/tag/0.6.2/unagi.ico b/client/tag/0.6.2/unagi.ico
new file mode 100644 (file)
index 0000000..c9badff
Binary files /dev/null and b/client/tag/0.6.2/unagi.ico differ
diff --git a/client/tag/0.6.2/unagi.rc b/client/tag/0.6.2/unagi.rc
new file mode 100644 (file)
index 0000000..86089e8
--- /dev/null
@@ -0,0 +1 @@
+UNAGI ICON "unagi.ico"
diff --git a/client/tag/0.6.2/unagi.txt b/client/tag/0.6.2/unagi.txt
new file mode 100644 (file)
index 0000000..5708591
--- /dev/null
@@ -0,0 +1,107 @@
+famicom ROM cartridge utility - unagi
+client version 0.6.x
+by 鰻開発協同組合
+公式サイト http://unagi.sourceforge.jp/
+
+--はじめに--
+famicom ROM cartridge のデータ転送を行います。 ハードウェアは国内で有
+名な2種類に対応しています。
+
+--特徴--
+他の読み出しプログラムではマッパ別の対応はプログラムに内蔵されており、
+未対応のマッパの追加ができるのはプログラマだけでした。unagi ではマッパ
+対応をスクリプトに記載することによってユーザーが追加することができます。
+バンク切り替えの仕様をしることによって技術的な興味がわくかもしれません。
+
+コマンドラインでの無味乾燥なインタフェースによりビギナーお断りとなって
+おります。
+
+--動作環境--
+パラレルポートと読み出しハードを接続した Windows 環境
+* Windows XP にて動作確認しています。たぶん Win95 までなら大丈夫。
+* パラレルポートアドレスは 0x0378 固定です。USB 接続のものは使えるか分
+  かりません。
+USBと読み出しハードを接続した Windows 環境
+GIVEIO.SYS をインストールした環境
+* パッケージには含まれていませんので別途用意してください。
+
+cmd.exe, rxvt などのコマンドラインシェル
+
+--ハードウェアの選択--
+クライアントについている unagi.cfg をテキストエディタで編集して使用す
+るハードを選んでください。行頭に # がついているものは無視されます。
+
+== hongkong fc での問題 == 
+キャラクタROM/RAM 判定の PPU_RAMFIND が正しく動作しない場合やキャラク
+タROM領域の書き込みが安定しない場合はコメントを外して試してみてくださ
+い。根本的な対処方法は不明です。
+
+--コマンドライン引数--
+unagi.exe [mode] [script file] [target file] ...
+== d ROM DUMP MODE ==
+ROM イメージを作成します。
+unagi.exe d [script file] [dump file] [flag] [mapper]
+script file - 対応するマッパの ROM スクリプトファイルを指定します。
+dump file   - 出力する ROM イメージファイルを指定します。
+以下は、通常は必要ありません。
+flag        - 出力するヘッダを設定します。複数の場合はスペースをいれずに              記述します。
+  S カートリッジに backup RAM がついている場合
+  V スクリプトの設定を無視して mirroring を Vertical にする
+  H スクリプトの設定を無視して mirroring を Horizonal にする
+  _ mapper変更だけを適用する場合
+mapper      - スクリプトの設定を無視してマッパ番号を設定します。
+
+== r RAM READ MODE ==
+バックアップ RAM イメージを PC 上に作成します。
+unagi.exe r [script file] [dump file]
+script file - 対応するマッパの RAM スクリプトファイルを指定します。
+dump file   - 出力する RAM イメージファイルを指定します。
+
+== w RAM WRITE MODE ==
+バックアップ RAM イメージをカートリッジへ転送します。
+unagi.exe w [script file] [ram file]
+script file - 対応するマッパの RAM スクリプトファイルを指定します。
+ram file    - 入力する RAM イメージファイルを指定します。
+
+== f flashmemory/SRAM PROGRAM MODE ==
+カートリッジ上の ROM を flashmemory か SRAM に交換した上で、ROM イメー
+ジデータを代替デバイスに転送するモードです。制限は多いですが、一応動作
+実績があります。
+
+--スクリプト仕様--
+ROM dump script パッケージの syntax.txt を参照してください。
+
+--ライセンス--
+unagi クライアントのバイナリとソースコード(例外有り)は下記が適用されま
+す。unagi スクリプトは naruko が作成したものは下記が適用されます。
+GNU General Public License v2
+
+例外物
+- GIVEIO.SYSアクセスライブラリに含まれる giveio.c, giveio.h
+えふ・ぴー・じー・えー・ぱーく管理人の「さとう」さんのご厚意によりソー
+スコードも配布ソースに含めてよい許可をいただいております。二次配布など
+の取り扱いはさとうさんの許可を得てください。
+
+- GIVEIO.SYS
+配布パッケージにも含めませんし、作者が誰なのかもわからないのでパッケー
+ジに含めないでください。
+
+- client_test.c
+実験的なソースが入っているのと、なくても RELEASE ビルドは可能なこと、
+無断転用でのトラブルを防ぐために非公開にしました。個別に要望があれば
+ソースは公開します。
+
+--謝辞--
+* 資料提供をしてくれた color さん, VirtuaNES のソース, nesdev
+* GIVEIO.SYSアクセスライブラリのさとうさん
+* ハードウェアを貸してくれたカシオン
+* アイコンを描いてくれたひろひろきさん
+* プログラミング環境の mingw と rxvt
+* 各種実験に協力してくださっているばくてんさん
+
+--使用ライブラリ--
+[LibUSB-Win32]
+Copyright (c) 2002-2004 Stephan Meyer, <ste_meyer@web.de>
+Copyright (c) 2000-2004 Johannes Erdfelt, <johannes@erdfelt.com>
+Copyright (c) Thomas Sailer, <sailer@ife.ee.ethz.ch>
+[opendevice.c]  (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
diff --git a/client/tag/0.6.2/usb_device.c b/client/tag/0.6.2/usb_device.c
new file mode 100644 (file)
index 0000000..7729942
--- /dev/null
@@ -0,0 +1,200 @@
+/* Name: opendevice.c -> renamed as usb_device.[ch]
+ * Project: V-USB host-side library
+ * Author: Christian Starkjohann
+ * Creation Date: 2008-04-10
+ * Tabsize: 4
+ * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: opendevice.c 740 2009-04-13 18:23:31Z cs $
+ */
+#include <stdio.h>
+#include "usb_device.h"
+
+enum{
+       MATCH_SUCCESS = 1,
+       MATCH_FAILED = 0,
+       MATCH_ABORT = -1
+};
+/* private interface: match text and p, return MATCH_SUCCESS, MATCH_FAILED, or MATCH_ABORT. */
+static int  _shellStyleMatch(char *text, char *p)
+{
+       int last, matched, reverse;
+
+    for(; *p; text++, p++){
+        if(*text == 0 && *p != '*')
+            return MATCH_ABORT;
+        switch(*p){
+        case '\\':
+            /* Literal match with following character. */
+            p++;
+            /* FALLTHROUGH */
+        default:
+            if(*text != *p)
+                return MATCH_FAILED;
+            continue;
+        case '?':
+            /* Match anything. */
+            continue;
+        case '*':
+            while(*++p == '*')
+                /* Consecutive stars act just like one. */
+                continue;
+            if(*p == 0)
+                /* Trailing star matches everything. */
+                return MATCH_SUCCESS;
+            while(*text)
+                if((matched = _shellStyleMatch(text++, p)) != MATCH_FAILED)
+                    return matched;
+            return MATCH_ABORT;
+        case '[':
+            reverse = p[1] == '^';
+            if(reverse) /* Inverted character class. */
+                p++;
+            matched = MATCH_FAILED;
+            if(p[1] == ']' || p[1] == '-')
+                if(*++p == *text)
+                    matched = MATCH_SUCCESS;
+            for(last = *p; *++p && *p != ']'; last = *p)
+                if (*p == '-' && p[1] != ']' ? *text <= *++p && *text >= last : *text == *p)
+                    matched = MATCH_SUCCESS;
+            if(matched == reverse)
+                return MATCH_FAILED;
+            continue;
+        }
+    }
+    return *text == 0;
+}
+
+/* public interface for shell style matching: returns 0 if fails, 1 if matches */
+static int shellStyleMatch(char *text, char *pattern)
+{
+    if(pattern == NULL) /* NULL pattern is synonymous to "*" */
+        return 1;
+    return _shellStyleMatch(text, pattern) == MATCH_SUCCESS;
+}
+
+/* ------------------------------------------------------------------------- */
+
+int usbGetStringAscii(usb_dev_handle *dev, int index, char *buf, int buflen)
+{
+char    buffer[256];
+int     rval, i;
+
+    if((rval = usb_get_string_simple(dev, index, buf, buflen)) >= 0) /* use libusb version if it works */
+        return rval;
+    if((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) + index, 0x0409, buffer, sizeof(buffer), 5000)) < 0)
+        return rval;
+    if(buffer[1] != USB_DT_STRING){
+        *buf = 0;
+        return 0;
+    }
+    if((unsigned char)buffer[0] < rval)
+        rval = (unsigned char)buffer[0];
+    rval /= 2;
+    /* lossy conversion to ISO Latin1: */
+    for(i=1;i<rval;i++){
+        if(i > buflen)              /* destination buffer overflow */
+            break;
+        buf[i-1] = buffer[2 * i];
+        if(buffer[2 * i + 1] != 0)  /* outside of ISO Latin1 range */
+            buf[i-1] = '?';
+    }
+    buf[i-1] = 0;
+    return i-1;
+}
+
+/* ------------------------------------------------------------------------- */
+
+int usbOpenDevice(
+       usb_dev_handle **device, int vendorID, char *vendorNamePattern,
+       int productID, char *productNamePattern, 
+       char *serialNamePattern, FILE *printMatchingDevicesFp, 
+       FILE *warningsFp
+)
+{
+       struct usb_bus *bus;
+       struct usb_device *dev;
+       usb_dev_handle *handle = NULL;
+       int errorCode = USBOPEN_ERR_NOTFOUND;
+
+    usb_init();
+    usb_find_busses();
+    usb_find_devices();
+    for(bus = usb_get_busses(); bus; bus = bus->next){
+        for(dev = bus->devices; dev; dev = dev->next){  /* iterate over all devices on all busses */
+            if((vendorID == 0 || dev->descriptor.idVendor == vendorID)
+                        && (productID == 0 || dev->descriptor.idProduct == productID)){
+                char    vendor[256], product[256], serial[256];
+                int     len;
+                handle = usb_open(dev); /* we need to open the device in order to query strings */
+                if(!handle){
+                    errorCode = USBOPEN_ERR_ACCESS;
+                    if(warningsFp != NULL)
+                        fprintf(warningsFp, "Warning: cannot open VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());
+                    continue;
+                }
+                /* now check whether the names match: */
+                len = vendor[0] = 0;
+                if(dev->descriptor.iManufacturer > 0){
+                    len = usbGetStringAscii(handle, dev->descriptor.iManufacturer, vendor, sizeof(vendor));
+                }
+                if(len < 0){
+                    errorCode = USBOPEN_ERR_ACCESS;
+                    if(warningsFp != NULL)
+                        fprintf(warningsFp, "Warning: cannot query manufacturer for VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());
+                }else{
+                    errorCode = USBOPEN_ERR_NOTFOUND;
+                    /* printf("seen device from vendor ->%s<-\n", vendor); */
+                    if(shellStyleMatch(vendor, vendorNamePattern)){
+                        len = product[0] = 0;
+                        if(dev->descriptor.iProduct > 0){
+                            len = usbGetStringAscii(handle, dev->descriptor.iProduct, product, sizeof(product));
+                        }
+                        if(len < 0){
+                            errorCode = USBOPEN_ERR_ACCESS;
+                            if(warningsFp != NULL)
+                                fprintf(warningsFp, "Warning: cannot query product for VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());
+                        }else{
+                            errorCode = USBOPEN_ERR_NOTFOUND;
+                            /* printf("seen product ->%s<-\n", product); */
+                            if(shellStyleMatch(product, productNamePattern)){
+                                len = serial[0] = 0;
+                                if(dev->descriptor.iSerialNumber > 0){
+                                    len = usbGetStringAscii(handle, dev->descriptor.iSerialNumber, serial, sizeof(serial));
+                                }
+                                if(len < 0){
+                                    errorCode = USBOPEN_ERR_ACCESS;
+                                    if(warningsFp != NULL)
+                                        fprintf(warningsFp, "Warning: cannot query serial for VID=0x%04x PID=0x%04x: %s\n", dev->descriptor.idVendor, dev->descriptor.idProduct, usb_strerror());
+                                }
+                                if(shellStyleMatch(serial, serialNamePattern)){
+                                    if(printMatchingDevicesFp != NULL){
+                                        if(serial[0] == 0){
+                                            fprintf(printMatchingDevicesFp, "VID=0x%04x PID=0x%04x vendor=\"%s\" product=\"%s\"\n", dev->descriptor.idVendor, dev->descriptor.idProduct, vendor, product);
+                                        }else{
+                                            fprintf(printMatchingDevicesFp, "VID=0x%04x PID=0x%04x vendor=\"%s\" product=\"%s\" serial=\"%s\"\n", dev->descriptor.idVendor, dev->descriptor.idProduct, vendor, product, serial);
+                                        }
+                                    }else{
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                usb_close(handle);
+                handle = NULL;
+            }
+        }
+        if(handle)  /* we have found a deice */
+            break;
+    }
+    if(handle != NULL){
+        errorCode = 0;
+        *device = handle;
+    }
+    if(printMatchingDevicesFp != NULL)  /* never return an error for listing only */
+        errorCode = 0;
+    return errorCode;
+}
+
diff --git a/client/tag/0.6.2/usb_device.h b/client/tag/0.6.2/usb_device.h
new file mode 100644 (file)
index 0000000..79c12f6
--- /dev/null
@@ -0,0 +1,77 @@
+/* Name: opendevice.h
+ * Project: V-USB host-side library
+ * Author: Christian Starkjohann
+ * Creation Date: 2008-04-10
+ * Tabsize: 4
+ * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: opendevice.h 755 2009-08-03 17:01:21Z cs $
+ */
+
+/*
+General Description:
+This module offers additional functionality for host side drivers based on
+libusb or libusb-win32. It includes a function to find and open a device
+based on numeric IDs and textual description. It also includes a function to
+obtain textual descriptions from a device.
+
+To use this functionality, simply copy opendevice.c and opendevice.h into your
+project and add them to your Makefile. You may modify and redistribute these
+files according to the GNU General Public License (GPL) version 2 or 3.
+*/
+
+#ifndef __OPENDEVICE_H_INCLUDED__
+#define __OPENDEVICE_H_INCLUDED__
+
+#include <usb.h>    /* this is libusb, see http://libusb.sourceforge.net/ */
+#include <stdio.h>
+
+int usbGetStringAscii(usb_dev_handle *dev, int index, char *buf, int buflen);
+/* This function gets a string descriptor from the device. 'index' is the
+ * string descriptor index. The string is returned in ISO Latin 1 encoding in
+ * 'buf' and it is terminated with a 0-character. The buffer size must be
+ * passed in 'buflen' to prevent buffer overflows. A libusb device handle
+ * must be given in 'dev'.
+ * Returns: The length of the string (excluding the terminating 0) or
+ * a negative number in case of an error. If there was an error, use
+ * usb_strerror() to obtain the error message.
+ */
+
+int usbOpenDevice(usb_dev_handle **device, int vendorID, char *vendorNamePattern, int productID, char *productNamePattern, char *serialNamePattern, FILE *printMatchingDevicesFp, FILE *warningsFp);
+/* This function iterates over all devices on all USB busses and searches for
+ * a device. Matching is done first by means of Vendor- and Product-ID (passed
+ * in 'vendorID' and 'productID'. An ID of 0 matches any numeric ID (wildcard).
+ * When a device matches by its IDs, matching by names is performed. Name
+ * matching can be done on textual vendor name ('vendorNamePattern'), product
+ * name ('productNamePattern') and serial number ('serialNamePattern'). A
+ * device matches only if all non-null pattern match. If you don't care about
+ * a string, pass NULL for the pattern. Patterns are Unix shell style pattern:
+ * '*' stands for 0 or more characters, '?' for one single character, a list
+ * of characters in square brackets for a single character from the list
+ * (dashes are allowed to specify a range) and if the lis of characters begins
+ * with a caret ('^'), it matches one character which is NOT in the list.
+ * Other parameters to the function: If 'warningsFp' is not NULL, warning
+ * messages are printed to this file descriptor with fprintf(). If
+ * 'printMatchingDevicesFp' is not NULL, no device is opened but matching
+ * devices are printed to the given file descriptor with fprintf().
+ * If a device is opened, the resulting USB handle is stored in '*device'. A
+ * pointer to a "usb_dev_handle *" type variable must be passed here.
+ * Returns: 0 on success, an error code (see defines below) on failure.
+ */
+
+/* usbOpenDevice() error codes: */
+#define USBOPEN_SUCCESS         0   /* no error */
+#define USBOPEN_ERR_ACCESS      1   /* not enough permissions to open device */
+#define USBOPEN_ERR_IO          2   /* I/O error */
+#define USBOPEN_ERR_NOTFOUND    3   /* device not found */
+
+
+/* Obdev's free USB IDs, see USB-IDs-for-free.txt for details */
+
+#define USB_VID_OBDEV_SHARED        5824    /* obdev's shared vendor ID */
+#define USB_PID_OBDEV_SHARED_CUSTOM 1500    /* shared PID for custom class devices */
+#define USB_PID_OBDEV_SHARED_HID    1503    /* shared PID for HIDs except mice & keyboards */
+#define USB_PID_OBDEV_SHARED_CDCACM 1505    /* shared PID for CDC Modem devices */
+#define USB_PID_OBDEV_SHARED_MIDI   1508    /* shared PID for MIDI class devices */
+
+#endif /* __OPENDEVICE_H_INCLUDED__ */
diff --git a/client/tag/0.6.2/version.h b/client/tag/0.6.2/version.h
new file mode 100644 (file)
index 0000000..59e51cf
--- /dev/null
@@ -0,0 +1,8 @@
+//include from unagi.c only
+static const char STR_VERSION[] = "0.6.1 "
+#if DEBUG==1
+"debug "
+#else
+"release "
+#endif
+"build";
diff --git a/client/tag/0.6.2/widget.c b/client/tag/0.6.2/widget.c
new file mode 100644 (file)
index 0000000..74bb441
--- /dev/null
@@ -0,0 +1,22 @@
+#include <stddef.h>
+#include "type.h"
+#include "widget.h"
+
+static void gauge_range_nothing(void *a, int b)
+{
+}
+static void gauge_value_nothing(void *a, void *b, int c)
+{
+}
+static void label_nothing(void *a, const wgChar *str, ...)
+{
+}
+const struct gauge GAUGE_DUMMY = {
+       .bar = NULL, .label = NULL,
+       .range_set = gauge_range_nothing,
+       .value_set = gauge_value_nothing,
+       .value_add = gauge_value_nothing,
+       .label_set = label_nothing
+};
+
+
diff --git a/client/tag/0.6.2/widget.h b/client/tag/0.6.2/widget.h
new file mode 100644 (file)
index 0000000..f6c9c59
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _WIDGET_H_
+#define _WIDGET_H_
+#ifndef __cplusplus 
+  #include <stdarg.h>
+#else
+  #include <cstdarg>
+#endif
+
+struct gauge{
+       void *bar, *label;
+       void (*range_set)(void *, int range);
+       void (*value_set)(void *, void *, int value);
+       void (*value_add)(void *, void *, int value);
+       void (*label_set)(void *, const wgChar *str, ...);
+};
+struct textcontrol{
+       void *object;
+       void (*append)(void *, const wgChar *, ...);
+       void (*append_va)(void *, const wgChar *, va_list);
+};
+extern const struct gauge GAUGE_DUMMY;
+#endif