summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-09-02 18:16:10 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-09-02 18:16:10 +0000
commit53986b365cf820d2dd7d7070cfe88b7330fb408d (patch)
tree6aa540d2c09183604e70a9d60641911e6f435ff9
parente73f287b5aa14a209627617cbab2f219be59b775 (diff)
downloadrockbox-53986b365cf820d2dd7d7070cfe88b7330fb408d.tar.gz
rockbox-53986b365cf820d2dd7d7070cfe88b7330fb408d.zip
rbutil: removed the wx version of rbutil.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14581 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/Makefile78
-rwxr-xr-xrbutil/Makefile.macosx218
-rw-r--r--rbutil/archos.icobin21606 -> 0 bytes
-rw-r--r--rbutil/autodetection.cpp274
-rw-r--r--rbutil/autodetection.h90
-rwxr-xr-xrbutil/bootloaders.cpp549
-rwxr-xr-xrbutil/bootloaders.h51
-rw-r--r--rbutil/copying.txt370
-rw-r--r--rbutil/credits.h52
-rwxr-xr-xrbutil/h100sums.h23
-rwxr-xr-xrbutil/h120sums.h23
-rwxr-xr-xrbutil/h300sums.h17
-rw-r--r--rbutil/icons/Makefile39
-rw-r--r--rbutil/icons/bin2c.c172
-rw-r--r--rbutil/icons/bootloader_btn.pngbin3345 -> 0 bytes
-rw-r--r--rbutil/icons/doom_btn.pngbin2286 -> 0 bytes
-rw-r--r--rbutil/icons/font_btn.pngbin1926 -> 0 bytes
-rw-r--r--rbutil/icons/rbinstall_btn.pngbin3026 -> 0 bytes
-rw-r--r--rbutil/icons/rembootloader_btn.pngbin3693 -> 0 bytes
-rw-r--r--rbutil/icons/remrb_btn.pngbin3634 -> 0 bytes
-rw-r--r--rbutil/icons/talkfile_btn.pngbin3776 -> 0 bytes
-rw-r--r--rbutil/icons/themes_btn.pngbin2238 -> 0 bytes
-rw-r--r--rbutil/install_3d.xpm70
-rw-r--r--rbutil/install_dialogs.cpp948
-rw-r--r--rbutil/install_dialogs.h261
-rw-r--r--rbutil/installlog.cpp150
-rw-r--r--rbutil/installlog.h61
-rwxr-xr-xrbutil/irivertools.cpp604
-rwxr-xr-xrbutil/irivertools.h66
-rwxr-xr-xrbutil/md5sum.cpp298
-rwxr-xr-xrbutil/md5sum.h51
-rw-r--r--rbutil/rblogo.xpm254
-rw-r--r--rbutil/rbutil-rc.rc27
-rw-r--r--rbutil/rbutil.cbp196
-rw-r--r--rbutil/rbutil.cpp783
-rw-r--r--rbutil/rbutil.h176
-rw-r--r--rbutil/rbutil.ini299
-rw-r--r--rbutil/rbutil.iss55
-rwxr-xr-xrbutil/rbutil.r2675
-rw-r--r--rbutil/rbutilApp.cpp288
-rw-r--r--rbutil/rbutilApp.h53
-rw-r--r--rbutil/rbutilCtrls.cpp628
-rw-r--r--rbutil/rbutilCtrls.h286
-rw-r--r--rbutil/rbutilFrm.cpp1164
-rw-r--r--rbutil/rbutilFrm.h135
-rw-r--r--rbutil/rbutilFrm_XPM.xpm666
-rwxr-xr-xrbutil/rbutilqt/irivertools/mksums.pl (renamed from rbutil/mksums.pl)0
-rw-r--r--rbutil/talkfile.cpp204
-rw-r--r--rbutil/talkfile.h101
-rw-r--r--rbutil/wizard.xpm689
-rw-r--r--rbutil/wx_pch.h43
51 files changed, 0 insertions, 13187 deletions
diff --git a/rbutil/Makefile b/rbutil/Makefile
deleted file mode 100644
index fe3b5b74a1..0000000000
--- a/rbutil/Makefile
+++ /dev/null
@@ -1,78 +0,0 @@
1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id$
8#
9
10# Unix-style Makefile for rbutil
11
12#detect cygwin
13ifneq ($(strip $(shell gcc -v 2>&1 | grep "cygwin")),)
14 __CYGWIN__ := 1
15endif
16
17CXX=$(shell $(PREFIX)wx-config --version=2.8 --cxx)
18INC = `$(PREFIX)wx-config --version=2.8 --cxxflags`
19LIBS = `$(PREFIX)wx-config --version=2.8 --libs`
20CFLAGS= -Wall -Wundef -DRBUTIL -D_LARGEFILE64_SOURCE
21OBJS=rbutil.o rbutilApp.o rbutilFrm.o rbutilCtrls.o install_dialogs.o bootloaders.o installlog.o ipodpatcher/ipodpatcher.o sansapatcher/sansapatcher.o irivertools.o md5sum.o autodetection.o talkfile.o
22
23ifdef __CYGWIN__
24OBJS+=ipodpatcher/ipodio-win32.o sansapatcher/sansaio-win32.o
25CFLAGS+= -mno-cygwin -mwindows
26else
27OBJS+=ipodpatcher/ipodio-posix.o sansapatcher/sansaio-posix.o
28endif
29
30
31EXTRAOBJS = $(wildcard icons/*.o)
32
33SILENT = @
34
35# Install with / as root by default
36ifndef DESTDIR
37 DESTDIR=""
38endif
39
40# type "make WIN=1" for a Windows build using the Debian mingw cross-compiler
41ifdef WIN
42 CROSS=i586-mingw32msvc-
43 WINDRES=i586-mingw32msvc-windres
44 EXT=.exe
45 PREFIX=/usr/i586-mingw32msvc/bin/
46 OBJS+=rbutil-rc.o
47endif
48
49.PHONY: all
50all: icons rbutil$(EXT)
51
52.cpp.o :
53 $(SILENT) echo CXX $<
54 $(SILENT) $(CXX) $(CFLAGS) $(INC) -c -o $@ $<
55
56.c.o :
57 $(SILENT) echo CC $<
58 $(SILENT) $(CC) $(CFLAGS) $(INC) -c -o $@ $<
59
60rbutil-rc.o: rbutil-rc.rc
61 $(WINDRES) -O coff -F pe-i386 -o $@ $<
62
63rbutil$(EXT): $(OBJS)
64 $(SILENT) echo CXX $<
65 $(SILENT) $(CXX) -o $@ $(OBJS) $(EXTRAOBJS) $(LIBS)
66
67.PHONY: icons
68icons:
69 $(SILENT) $(MAKE) -C icons
70
71.PHONY: clean
72clean:
73 rm -f rbutil rbutil.exe $(OBJS) *~
74 make -C icons clean
75
76.PHONY: install
77install:
78 install -D rbutil$(EXT) $(DESTDIR)/usr/bin/rbutil$(EXT)
diff --git a/rbutil/Makefile.macosx b/rbutil/Makefile.macosx
deleted file mode 100755
index 6939280e16..0000000000
--- a/rbutil/Makefile.macosx
+++ /dev/null
@@ -1,218 +0,0 @@
1# =========================================================================
2# This makefile was generated by
3# Bakefile 0.2.1 (http://bakefile.sourceforge.net)
4# Do not modify, all changes will be overwritten!
5# =========================================================================
6
7
8
9
10srcdir = /Users/dave/rockbox/rockbox-devel/rbutil
11top_srcdir = /Users/dave/src/wxMac-2.8.0/
12BK_DEPS = /Users/dave/src/wxMac-2.8.0/osx_build/bk-deps
13wx_top_builddir = /Users/dave/src/wxMac-2.8.0/osx_build
14
15prefix = /usr/local
16exec_prefix = ${prefix}
17INSTALL = /usr/bin/install -c
18EXEEXT =
19WINDRES =
20REZ = /Developer/Tools/Rez
21SETFILE = /Developer/Tools/SetFile
22NM = nm
23LIBS = -lz -lpthread -liconv
24LDFLAGS_GUI =
25CXX = g++
26CXXFLAGS = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -Wall -Wundef -Wno-ctor-dtor-privacy -O2 -fno-strict-aliasing -fno-common
27CPPFLAGS = -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -I${wx_top_builddir}/lib/wx/include/mac-ansi-release-static-2.8 -I${top_srcdir}/include -fpascal-strings -I${top_srcdir}/src/mac/carbon/morefilex -I/Developer/Headers/FlatCarbon
28RBUTIL_CFLAGS = $(CXXFLAGS) -DRBUTIL -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -I${wx_top_builddir}/lib/wx/include/mac-ansi-release-static-2.8 -I${top_srcdir}/include -fpascal-strings -I${top_srcdir}/src/mac/carbon/morefilex -I/Developer/Headers/FlatCarbon
29LDFLAGS = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System
30WX_LIB_FLAVOUR =
31TOOLKIT = MAC
32TOOLKIT_LOWERCASE = mac
33TOOLKIT_VERSION =
34TOOLCHAIN_FULLNAME = mac-ansi-release-static-2.8
35EXTRALIBS = -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System -lz -lpthread -liconv
36EXTRALIBS_GUI = -framework WebKit
37HOST_SUFFIX =
38SAMPLES_RPATH_FLAG =
39SAMPLES_RPATH_POSTLINK =
40
41### Variables: ###
42
43DESTDIR =
44WX_RELEASE = 2.8
45WX_VERSION = $(WX_RELEASE).0
46LIBDIRNAME = $(wx_top_builddir)/lib
47RBUTIL_CXXFLAGS = -DRBUTIL -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
48 $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
49 -I$(srcdir) $(__DLLFLAG_p) $(CPPFLAGS) $(CXXFLAGS)
50RBUTIL_OBJECTS = \
51 $(__rbutil_os2_lib_res) \
52 rbutil.o rbutilApp.o rbutilFrm.o install_dialogs.o bootloaders.o installlog.o \
53 rbutilCtrls.o ipodpatcher/ipodpatcher.o ipodpatcher/ipodio-posix.o \
54 sansapatcher/sansapatcher.o sansapatcher/sansaio-posix.o \
55 md5sum.o irivertools.o autodetection.o talkfile.o \
56 $(__rbutil___win32rc)
57
58### Conditionally set variables: ###
59
60#CXXC = $(CXX)
61CXXC = $(BK_DEPS) $(CXX)
62#PORTNAME = base
63PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
64WXBASEPORT = _carbon
65#WXDEBUGFLAG = d
66#WXDEBUGFLAG = d
67#WXUNICODEFLAG = u
68#WXUNIVNAME = univ
69EXTRALIBS_FOR_BASE = $(EXTRALIBS)
70#EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
71EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
72#EXTRALIBS_FOR_GUI =
73__rbutil___mac_setfilecmd = \
74 $(SETFILE) -a C rbutil$(EXEEXT)
75__rbutil___mac_rezcmd = $(__MACOSX_RESOURCES_p_1)
76#__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
77#__WXUNIV_DEFINE_p_1 = -d __WXUNIVERSAL__
78#__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
79#__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
80#__EXCEPTIONS_DEFINE_p_1 = -d wxNO_EXCEPTIONS
81#__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
82#__RTTI_DEFINE_p = -DwxNO_RTTI
83#__RTTI_DEFINE_p_1 = -d wxNO_RTTI
84#__RTTI_DEFINE_p_2 = --define wxNO_RTTI
85#__THREAD_DEFINE_p = -DwxNO_THREADS
86#__THREAD_DEFINE_p_1 = -d wxNO_THREADS
87#__THREAD_DEFINE_p_2 = --define wxNO_THREADS
88#__DLLFLAG_p = -DWXUSINGDLL
89#__DLLFLAG_p_1 = -d WXUSINGDLL
90#__DLLFLAG_p_2 = --define WXUSINGDLL
91COND_PLATFORM_OS2_1___rbutil___os2_emxbindcmd = $(NM) rbutil$(EXEEXT) | if \
92 grep -q pmwin.763 ; then emxbind -ep rbutil$(EXEEXT) ; fi
93#__rbutil___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___rbutil___os2_emxbindcmd)
94#__RCDEFDIR_p = -i \
95# $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
96#__RCDEFDIR_p_1 = --include-dir \
97# $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
98#__rbutil_os2_lib_res = \
99# $(top_srcdir)/include/wx/os2/wx.res
100__rbutil_bundle___depname = rbutil_bundle
101#____rbutil_BUNDLE_TGT_REF_DEP = \
102# rbutil.app/Contents/PkgInfo
103____rbutil_BUNDLE_TGT_REF_DEP = \
104 rbutil.app/Contents/PkgInfo
105COND_MONOLITHIC_0___WXLIB_CORE_p = \
106 -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
107__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
108COND_MONOLITHIC_0___WXLIB_BASE_p = \
109 -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
110__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
111
112__WXLIB_ADV_p = -lwx_mac_adv$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
113__WXLIB_NET_p = -lwx_base_carbon_net-$(WX_RELEASE)$(HOST_SUFFIX)
114__WXLIB_HTML_p = -lwx_mac_html-$(WX_RELEASE)$(HOST_SUFFIX)
115
116#__rbutil___win32rc = rbutil_rc.o
117COND_MONOLITHIC_1___WXLIB_MONO_p = \
118 -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
119#__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
120__LIB_TIFF_p \
121 = \
122 -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
123__LIB_JPEG_p \
124 = \
125 -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
126__LIB_PNG_p \
127 = \
128 -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
129#__LIB_ZLIB_p = \
130# -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
131#__LIB_ODBC_p = \
132# -lwxodbc$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
133COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
134 -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
135#__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p)
136__LIB_EXPAT_p = \
137 -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
138COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1 = $(REZ) -d __DARWIN__ -t APPL -d \
139 __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) \
140 $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) -i $(srcdir) $(__DLLFLAG_p_1) -i \
141 $(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \
142 rbutil$(EXEEXT) Carbon.r rbutil.r
143__MACOSX_RESOURCES_p_1 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1)
144
145### Targets: ###
146
147all: rbutil$(EXEEXT) $(__rbutil_bundle___depname) data
148
149install: all
150
151uninstall:
152
153install-strip: install
154
155clean:
156 rm -rf ./.deps ./.pch
157 rm -f $(RBUTIL_OBJECTS)
158 rm -f rbutil$(EXEEXT)
159 rm -rf rbutil.app
160
161distclean: clean
162 rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
163
164rbutil$(EXEEXT): $(RBUTIL_OBJECTS) $(__rbutil___win32rc)
165 $(CXX) -o $@ $(RBUTIL_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__WXLIB_ADV_p) $(__WXLIB_NET_p) $(__WXLIB_HTML_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
166 $(__rbutil___mac_rezcmd)
167 $(__rbutil___mac_setfilecmd)
168 $(__rbutil___os2_emxbindcmd)
169 $(SAMPLES_RPATH_POSTLINK)
170
171rbutil.app/Contents/PkgInfo: rbutil$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
172 mkdir -p rbutil.app/Contents
173 mkdir -p rbutil.app/Contents/MacOS
174 mkdir -p rbutil.app/Contents/Resources
175
176
177 sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
178 -e "s/EXECUTABLE/rbutil/" \
179 -e "s/VERSION/$(WX_VERSION)/" \
180 $(top_srcdir)/src/mac/carbon/Info.plist.in >rbutil.app/Contents/Info.plist
181
182
183 echo -n "APPL????" >rbutil.app/Contents/PkgInfo
184
185
186 ln -f rbutil$(EXEEXT) rbutil.app/Contents/MacOS/rbutil
187
188
189 cp -f $(top_srcdir)/src/mac/carbon/wxmac.icns rbutil.app/Contents/Resources/wxmac.icns
190
191rbutil_bundle: $(____rbutil_BUNDLE_TGT_REF_DEP)
192
193data:
194 @mkdir -p .
195 @for f in rbutil.ini; do \
196 if test ! -f ./$$f -a ! -d ./$$f ; \
197 then x=yep ; \
198 else x=`find $(srcdir)/$$f -newer ./$$f -print` ; \
199 fi; \
200 case "$$x" in ?*) \
201 cp -pRf $(srcdir)/$$f . ;; \
202 esac; \
203 done
204
205.cpp.o :
206 $(CXXC) $(RBUTIL_CXXFLAGS) -c -o $@ $<
207
208.c.o :
209 $(CC) $(RBUTIL_CFLAGS) -c -o $@ $<
210
211rbutil_rc.o: $(srcdir)/rbutil.rc
212 $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
213
214
215# Include dependency info, if present:
216-include .deps/*.d
217
218.PHONY: all install uninstall clean distclean rbutil_bundle data
diff --git a/rbutil/archos.ico b/rbutil/archos.ico
deleted file mode 100644
index 6c2171337e..0000000000
--- a/rbutil/archos.ico
+++ /dev/null
Binary files differ
diff --git a/rbutil/autodetection.cpp b/rbutil/autodetection.cpp
deleted file mode 100644
index 85bfc21b11..0000000000
--- a/rbutil/autodetection.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: autodetection.cpp
10 *
11 * Copyright (C) 2008 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "autodetection.h"
22#include "bootloaders.h"
23/***************************************************
24* General autodetection code
25****************************************************/
26
27bool ipodpatcherDetect(UsbDeviceInfo* tempdevice)
28{
29 /* use ipodpatcher for ipod detecting */
30 struct ipod_t ipod;
31 int n = ipod_scan(&ipod);
32 if(n == 1) /* we found an ipod */
33 {
34 wxString temp(ipod.targetname,wxConvUTF8);
35 int index = gv->plat_bootloadername.Index(temp); // use the bootloader names..
36 tempdevice->device_index = index;
37 tempdevice->status=DEVICEFOUND;
38
39 /* find mount point if possible */
40#if !(defined( __WXMSW__ ) || defined( __DARWIN__)) //linux code
41 wxString tmp = resolve_mount_point(wxString(ipod.diskname,wxConvUTF8)+wxT("2"));
42 if( tmp != wxT("") )
43 tempdevice->path = tmp;
44#endif
45 return true;
46
47 }
48 else if (n > 1) /* to many ipods */
49 {
50 tempdevice->status = TOMANYDEVICES;
51 return true;
52 }
53 else /* no ipod */
54 {
55 return false;
56 }
57
58}
59
60bool sansapatcherDetect(UsbDeviceInfo* tempdevice)
61{
62 /* scann for sansas */
63 struct sansa_t sansa;
64 int n = sansa_scan(&sansa);
65 if(n==1)
66 {
67 tempdevice->device_index = gv->plat_id.Index(wxT("sansae200"));
68 tempdevice->status = DEVICEFOUND;
69 /* find mount point if possible */
70#if !(defined( __WXMSW__ ) || defined( __DARWIN__)) //linux code
71 wxString tmp = resolve_mount_point(wxString(sansa.diskname,wxConvUTF8)+wxT("1"));
72 if( tmp != wxT("") )
73 tempdevice->path = tmp;
74#endif
75 return true;
76 }
77 else if (n > 1)
78 {
79 tempdevice->status = TOMANYDEVICES;
80 return true;
81 }
82 else
83 {
84 return false;
85 }
86}
87
88
89bool rockboxinfoDetect(wxString filename,UsbDeviceInfo* tempdevice)
90{
91 wxTextFile rockboxinfo(filename);
92 rockboxinfo.Open();
93 wxString line = rockboxinfo.GetFirstLine();
94 wxString targetstring;
95 if(line.StartsWith(wxT("Target: "), &targetstring))
96 {
97 int index = gv->plat_id.Index(targetstring);
98 if(index < 0) return false;
99
100 tempdevice->device_index = index;
101 wxString myPath;
102 if(filename.EndsWith(wxT(".rockbox" PATH_SEP "rockbox-info.txt"),&myPath));
103 tempdevice->path = myPath;
104
105 tempdevice->status = DEVICEFOUND;
106
107 return true;
108 }
109 else
110 {
111 return false;
112 }
113
114
115}
116
117
118bool detectDevices(UsbDeviceInfo* tempdevice)
119{
120 tempdevice->device_index= 0;
121 tempdevice->path=wxT("");
122 tempdevice->status =NODEVICE;
123
124 /* try ipodpatcher */
125 if(ipodpatcherDetect(tempdevice))
126 {
127 return true;
128 }
129
130 /* try sansapatcher */
131 if(sansapatcherDetect(tempdevice))
132 {
133 return true;
134 }
135
136 /*try via files on the devices */
137 wxArrayString mountpoints = getPossibleMountPoints();
138
139 for(unsigned int i=0;i<mountpoints.GetCount();i++)
140 {
141 if(wxDir::Exists(mountpoints[i]))
142 {
143 /*check for rockbox-info.txt */
144 wxString filename;
145 filename.Printf("%s" PATH_SEP ".rockbox" PATH_SEP "rockbox-info.txt",mountpoints[i].c_str());
146 if(wxFile::Exists(filename))
147 {
148 if(rockboxinfoDetect(filename,tempdevice))
149 return true;
150 }
151
152 }
153 }
154
155 return false;
156}
157
158
159
160
161
162/***************************************************
163* Windows code for autodetection
164****************************************************/
165#if defined( __WXMSW__ )
166
167wxArrayString getPossibleMountPoints()
168{
169 wxArrayString tempList;
170 tempList.Add(wxT("D:\\"));
171 tempList.Add(wxT("E:\\"));
172 tempList.Add(wxT("F:\\"));
173 tempList.Add(wxT("G:\\"));
174 tempList.Add(wxT("H:\\"));
175 tempList.Add(wxT("I:\\"));
176 tempList.Add(wxT("J:\\"));
177 tempList.Add(wxT("K:\\"));
178 tempList.Add(wxT("L:\\"));
179 tempList.Add(wxT("M:\\"));
180 tempList.Add(wxT("N:\\"));
181 tempList.Add(wxT("O:\\"));
182 tempList.Add(wxT("P:\\"));
183 tempList.Add(wxT("Q:\\"));
184 tempList.Add(wxT("R:\\"));
185 tempList.Add(wxT("S:\\"));
186 tempList.Add(wxT("T:\\"));
187 tempList.Add(wxT("U:\\"));
188 tempList.Add(wxT("V:\\"));
189 tempList.Add(wxT("W:\\"));
190 tempList.Add(wxT("X:\\"));
191 tempList.Add(wxT("Y:\\"));
192 tempList.Add(wxT("Z:\\"));
193
194 return tempList;
195}
196
197
198#endif /* windows code */
199
200/**********************************************************
201* Linux code for autodetection
202*******************************************************/
203#if !(defined( __WXMSW__ ) || defined( __DARWIN__))
204
205wxArrayString getPossibleMountPoints()
206{
207 wxArrayString tempList;
208
209 FILE *fp = fopen( "/proc/mounts", "r" );
210 if( !fp ) return tempList;
211 char *dev, *dir;
212 while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF )
213 {
214 wxString directory = wxString( dir, wxConvUTF8 );
215 tempList.Add(directory);
216 free( dev );
217 free( dir );
218 }
219 fclose( fp );
220
221 return tempList;
222}
223
224wxString resolve_mount_point( const wxString device )
225{
226 FILE *fp = fopen( "/proc/mounts", "r" );
227 if( !fp ) return wxT("");
228 char *dev, *dir;
229 while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF )
230 {
231 if( wxString( dev, wxConvUTF8 ) == device )
232 {
233 wxString directory = wxString( dir, wxConvUTF8 );
234 free( dev );
235 free( dir );
236 return directory;
237 }
238 free( dev );
239 free( dir );
240 }
241 fclose( fp );
242 return wxT("");
243}
244
245
246
247#endif /* linux code */
248
249/**********************************************************
250* MAC code for autodetection
251*******************************************************/
252#if defined( __DARWIN__)
253
254wxArrayString getPossibleMountPoints()
255{
256 wxArrayString tempList;
257
258 wxDir volumes;
259
260 if(volumes.Open(wxT("/Volumes")))
261 {
262 wxString filename;
263 bool cont = volumes.GetFirst(&filename, wxEmptyString, wxDIR_DIRS);
264 while ( cont )
265 {
266 tempList.Add(filename);
267 cont = dir.GetNext(&filename);
268 }
269 }
270 return tempList;
271
272}
273
274#endif /* Mac Code */
diff --git a/rbutil/autodetection.h b/rbutil/autodetection.h
deleted file mode 100644
index cfd0dbab96..0000000000
--- a/rbutil/autodetection.h
+++ /dev/null
@@ -1,90 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: autodetection.h
10 *
11 * Copyright (C) 2008 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#ifndef AUTODETECTION_H_INCLUDED
22#define AUTODETECTION_H_INCLUDED
23
24
25/**************************************
26* General code for USB Device detection
27***************************************/
28#include "rbutil.h"
29
30#define TOMANYDEVICES 2
31#define NODEVICE 1
32#define DEVICEFOUND 0
33
34struct UsbDeviceInfo
35{
36 int device_index;
37 wxString path;
38 int status;
39};
40
41
42bool detectDevices(UsbDeviceInfo* tempdevice);
43
44wxArrayString getPossibleMountPoints(); /* this funktion has to be implemented for every OS */
45
46
47/********************************
48* Windows header for USB Device detection and information
49**************************************/
50
51#if defined( __WXMSW__ )
52
53
54#endif /*__WXMSW__ */
55
56
57/************************************************************************+
58*Linux header for autodetection
59**************************************************************************/
60
61
62#if !(defined( __WXMSW__ ) || defined( __DARWIN__))
63
64wxString resolve_mount_point( const wxString device );
65
66
67#endif /* Linux Code */
68
69
70
71
72/************************************************************************+
73*MAc header for autodetection
74**************************************************************************/
75
76
77#if defined( __DARWIN__)
78
79
80
81#endif /* MAc Code */
82
83
84
85
86
87
88
89
90#endif
diff --git a/rbutil/bootloaders.cpp b/rbutil/bootloaders.cpp
deleted file mode 100755
index 4ac4828307..0000000000
--- a/rbutil/bootloaders.cpp
+++ /dev/null
@@ -1,549 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: bootloaders.cpp
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "bootloaders.h"
22
23
24
25int verbose =0;
26// reserves memory for ipodpatcher
27bool initIpodpatcher()
28{
29 if (ipod_alloc_buffer(&sectorbuf,BUFFER_SIZE) < 0) return true;
30 else return false;
31}
32// uses ipodpatcher for add and rem of bootloader
33bool ipodpatcher(int mode,wxString bootloadername)
34{
35 wxString src,dest,buf;
36
37 struct ipod_t ipod;
38
39 int n = ipod_scan(&ipod);
40 if (n == 0)
41 {
42 ERR_DIALOG(wxT("[ERR] No ipods found."), wxT("Scanning for Ipods"));
43 return false;
44 }
45 if (n > 1)
46 {
47 ERR_DIALOG(wxT("[ERR] to many ipods found."), wxT("Scanning for Ipods"));
48 return false;
49 }
50
51 // downloading files
52 if(mode == BOOTLOADER_ADD)
53 {
54 src = gv->bootloader_url + wxT("/ipod/")
55 + bootloadername + wxT(".ipod");
56 dest = gv->stdpaths->GetUserDataDir()
57 + wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
58 if ( DownloadURL(src, dest) )
59 {
60 wxRemoveFile(dest);
61 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
62 return false;
63 }
64 }
65
66 if (ipod_open(&ipod, 0) < 0)
67 {
68 ERR_DIALOG(wxT("[ERR] could not open ipod"), wxT("open Ipod"));
69 return false;
70 }
71
72 if (read_partinfo(&ipod,0) < 0)
73 {
74 ERR_DIALOG(wxT("[ERR] could not read partitiontable"), wxT("reading partitiontable"));
75 return false;
76 }
77
78 if (ipod.pinfo[0].start==0)
79 {
80 ERR_DIALOG(wxT("[ERR] No partition 0 on disk"), wxT("reading partitiontable"));
81 int i;
82 double sectors_per_MB = (1024.0*1024.0)/ipod.sector_size;
83
84 buf.Printf(wxT("[INFO] Part Start Sector End Sector Size (MB) Type\n"));
85 ERR_DIALOG(buf, wxT("reading partitiontable"));
86 for ( i = 0; i < 4; i++ ) {
87 if (ipod.pinfo[i].start != 0) {
88 buf.Printf(wxT("[INFO] %d %10ld %10ld %10.1f %s (0x%02x)\n"),
89 i,
90 ipod.pinfo[i].start,
91 ipod.pinfo[i].start+ipod.pinfo[i].size-1,
92 ipod.pinfo[i].size/sectors_per_MB,
93 get_parttype(ipod.pinfo[i].type),
94 ipod.pinfo[i].type);
95 ERR_DIALOG(buf, wxT("reading partitiontable"));
96 }
97 }
98 return false;
99 }
100
101 read_directory(&ipod);
102
103 if (ipod.nimages <= 0)
104 {
105 ERR_DIALOG(wxT("[ERR] Failed to read firmware directory"), wxT("reading directory"));
106 return false;
107 }
108 if (getmodel(&ipod,(ipod.ipod_directory[0].vers>>8)) < 0)
109 {
110 buf.Printf(wxT("[ERR] Unknown version number in firmware (%08x)\n"),
111 ipod.ipod_directory[0].vers );
112 ERR_DIALOG(buf, wxT("reading directory"));
113 return false;
114 }
115
116 if (ipod.macpod)
117 {
118 WARN_DIALOG(wxT("Warning this is a MacPod, Rockbox doesnt work on this. Convert it to WinPod"),wxT("MacPod"));
119 }
120
121
122 if(mode == BOOTLOADER_ADD)
123 {
124 if (ipod_reopen_rw(&ipod) < 0) {
125 ERR_DIALOG(wxT("[ERR] Could not open Ipod in RW mode"), wxT("Bootloader add"));
126 return false;
127 }
128
129 if (add_bootloader(&ipod, (char*)dest.c_str(), FILETYPE_DOT_IPOD)==0) {
130
131 } else {
132 ERR_DIALOG(wxT("[ERR] failed to add Bootloader"), wxT("Bootloader add"));
133 return false;
134 }
135 }
136 else if(mode == BOOTLOADER_REM)
137 {
138 if (ipod_reopen_rw(&ipod) < 0) {
139 ERR_DIALOG(wxT("[ERR] Could not open Ipod in RW mode"), wxT("Bootloader add"));
140 return false;
141 }
142
143 if (ipod.ipod_directory[0].entryOffset==0) {
144 ERR_DIALOG(wxT("[ERR] No bootloader detected.\n"), wxT("Bootloader del"));
145 return false;
146 } else {
147 if (delete_bootloader(&ipod)==0) {
148
149 } else {
150 ERR_DIALOG(wxT("[ERR] --delete-bootloader failed.\n"), wxT("Bootloader del"));
151 return false;
152 }
153 }
154 }
155
156 ipod_close(&ipod);
157 return true;
158}
159
160// reserves memory for sansapatcher
161bool initSansaPatcher()
162{
163 if (sansa_alloc_buffer(&sectorbuf,BUFFER_SIZE) < 0) return true;
164 else return false;
165}
166
167
168// sansainstallation
169bool sansapatcher(int mode,wxString bootloadername)
170{
171 wxString src,dest,buf;
172
173 struct sansa_t sansa;
174
175 int n = sansa_scan(&sansa);
176 if (n == 0)
177 {
178 ERR_DIALOG(wxT("[ERR] No Sansa found."), wxT("Scanning for Sansa"));
179 return false;
180 }
181 if (n > 1)
182 {
183 ERR_DIALOG(wxT("[ERR] to many Sansa found."), wxT("Scanning for Sansa"));
184 return false;
185 }
186
187 // downloading files
188 if(mode == BOOTLOADER_ADD)
189 {
190 src = gv->bootloader_url + wxT("/sandisk-sansa/e200/")
191 + bootloadername;
192 dest = gv->stdpaths->GetUserDataDir()
193 + wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
194 if ( DownloadURL(src, dest) )
195 {
196 wxRemoveFile(dest);
197 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Download"));
198 return false;
199 }
200 }
201
202 if (sansa_open(&sansa, 0) < 0)
203 {
204 ERR_DIALOG(wxT("[ERR] could not open sansa"), wxT("open Sansa"));
205 return false;
206 }
207
208 if (sansa_read_partinfo(&sansa,0) < 0)
209 {
210 ERR_DIALOG(wxT("[ERR] could not read partitiontable"), wxT("reading partitiontable"));
211 return false;
212 }
213
214 int i = is_e200(&sansa);
215 if (i < 0) {
216 ERR_DIALOG(wxT("[ERR] Disk is not an E200 (%d), aborting.\n"), wxT("Checking Disk"));
217 return false;
218 }
219
220 if (sansa.hasoldbootloader)
221 {
222 ERR_DIALOG(wxT("[ERR] ************************************************************************\n"
223 "[ERR] *** OLD ROCKBOX INSTALLATION DETECTED, ABORTING.\n"
224 "[ERR] *** You must reinstall the original Sansa firmware before running\n"
225 "[ERR] *** sansapatcher for the first time.\n"
226 "[ERR] *** See http://www.rockbox.org/twiki/bin/view/Main/SansaE200Install\n"
227 "[ERR] ************************************************************************\n"),wxT("Checking Disk"));
228 return false;
229 }
230
231 if(mode == BOOTLOADER_ADD)
232 {
233 if (sansa_reopen_rw(&sansa) < 0) {
234 ERR_DIALOG(wxT("[ERR] Could not open Sansa in RW mode"), wxT("Bootloader add"));
235 return false;
236 }
237
238 if (sansa_add_bootloader(&sansa, (char*)dest.c_str(), FILETYPE_MI4)==0) {
239
240 } else {
241 ERR_DIALOG(wxT("[ERR] failed to add Bootloader"), wxT("Bootloader add"));
242 }
243
244 }
245 else if(mode == BOOTLOADER_REM)
246 {
247 if (sansa_reopen_rw(&sansa) < 0) {
248 ERR_DIALOG(wxT("[ERR] Could not open Sansa in RW mode"), wxT("Bootloader Remove"));
249 }
250
251 if (sansa_delete_bootloader(&sansa)==0) {
252
253 } else {
254 ERR_DIALOG(wxT("[ERR] failed to remove Bootloader"), wxT("Bootloader remove"));
255 }
256 }
257
258 sansa_close(&sansa);
259 return true;
260}
261
262// gigabeatinstallation
263bool gigabeatf(int mode,wxString bootloadername,wxString deviceDir)
264{
265 wxString path1,path2;
266 wxString err;
267 wxString src,dest;
268
269 path1 = deviceDir
270 + wxT("" PATH_SEP "GBSYSTEM" PATH_SEP "FWIMG" PATH_SEP "FWIMG01.DAT");
271
272 if(mode == BOOTLOADER_ADD)
273 {
274 //Files downloaden
275 src = gv->bootloader_url + wxT("/gigabeat/") + bootloadername;
276 dest = gv->stdpaths->GetUserDataDir()
277 + wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
278 if( DownloadURL(src, dest) )
279 {
280 wxRemoveFile(dest);
281 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
282 return false;
283 }
284
285
286 if(!wxFileExists(path1))
287 {
288 ERR_DIALOG(wxT("[ERR] Coud not find ")+path1, wxT("Bootloader add"));
289 return false;
290 }
291 path2 = path1;
292 path2.Append(wxT(".ORIG"));
293 if(!wxFileExists(path2))
294 {
295 if(!wxRenameFile(path1,path2,false))
296 {
297 ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
298 + path2, wxT("Bootloader add"));
299 return false;
300 }
301 }
302
303
304 if(!wxCopyFile(dest,path1))
305 {
306 ERR_DIALOG(wxT("[ERR] Coud not copy ") + dest + wxT(" to ")
307 + path2, wxT("Bootloader add"));
308 return false;
309 }
310 }
311 else if(mode == BOOTLOADER_REM)
312 {
313 path2 = path1;
314 path2.Append(wxT(".ORIG"));
315 if(!wxFileExists(path2))
316 {
317 ERR_DIALOG(wxT("[ERR] Coud not find ") + path1,
318 wxT("Bootloader del"));
319 return false;
320 }
321 if(!wxRenameFile(path2,path1,true))
322 {
323 ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
324 + path2, wxT("Bootloader del"));
325 return false;
326 }
327 }
328 return true;
329}
330
331// iaudio bootloader install
332bool iaudiox5(int mode,wxString bootloadername,wxString deviceDir)
333{
334 wxString path1,path2;
335 wxString err;
336 wxString src,dest;
337
338 path1 = deviceDir + wxT("" PATH_SEP "FIRMWARE" PATH_SEP)
339 + bootloadername;
340
341 if(mode == BOOTLOADER_ADD)
342 {
343 //Files downloaden
344 src = gv->bootloader_url + wxT("/iaudio/") + bootloadername;
345 dest = gv->stdpaths->GetUserDataDir()
346 + wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
347 if( DownloadURL(src, dest) )
348 {
349 wxRemoveFile(dest);
350 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
351 return false;
352 }
353
354 // copy file
355 if(!wxCopyFile(dest,path1))
356 {
357 ERR_DIALOG(wxT("[ERR] Coud not copy ")+dest+wxT(" to ")+path2,
358 wxT("Bootloader add"));
359 return false;
360 }
361
362 return true; // install ready
363 }
364 else
365 return false; //no uninstallation possible
366}
367
368// H10 install
369bool h10(int mode,wxString bootloadername,wxString deviceDir)
370{
371 wxString err,src,dest,path1,path2;
372
373 int pos = bootloadername.Find('/');
374 if(pos == wxNOT_FOUND) pos = 0;
375 wxString firmwarename = bootloadername.SubString(pos,bootloadername.Length());
376 //wxString firmDir = gv->curbootloader.SubString(0,pos);
377
378 if(mode == BOOTLOADER_ADD)
379 {
380 //Files downloaden
381 src = gv->bootloader_url + wxT("/iriver/") + bootloadername;
382 dest = gv->stdpaths->GetUserDataDir()
383 + wxT("" PATH_SEP "download" PATH_SEP) + firmwarename;
384 if( DownloadURL(src, dest) )
385 {
386 wxRemoveFile(dest);
387 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
388 return false;
389 }
390
391 path1 = deviceDir + wxT("SYSTEM" PATH_SEP) + firmwarename;
392 path2 = deviceDir + wxT("SYSTEM" PATH_SEP "Original.mi4");
393
394 if(!wxFileExists(path1)) //Firmware dosent exists on player
395 {
396 path1 = deviceDir + wxT("SYSTEM" PATH_SEP "H10EMP.mi4"); //attempt other firmwarename
397 if(!wxFileExists(path1)) //Firmware dosent exists on player
398 {
399 ERR_DIALOG(wxT("[ERR] File ") + path1 + wxT(" does not Exist"),
400 wxT("Bootloader add"));
401 return false;
402 }
403 }
404 if(!wxFileExists(path2)) //there is already a original firmware
405 {
406 if(!wxRenameFile(path1,path2,false)) //rename Firmware to Original
407 {
408 ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
409 + path2, wxT("Bootloader add"));
410 return false;
411 }
412 }
413
414 if(!wxCopyFile(dest,path1)) // copy file
415 {
416 ERR_DIALOG(wxT("[ERR] Coud not copy ") + dest + wxT(" to ") + path1,
417 wxT("Bootloader add"));
418 return false;
419 }
420
421 return true; //install ready
422
423 }
424 else if(mode == BOOTLOADER_REM)
425 {
426 path1 = deviceDir + wxT("SYSTEM" PATH_SEP) + firmwarename;
427 path2 = gv->curdestdir + wxT("SYSTEM" PATH_SEP "Original.mi4");
428 if(!wxFileExists(path1)) //Firmware dosent exists on player
429 {
430 path1 = deviceDir + wxT("" PATH_SEP "SYSTEM" PATH_SEP "H10EMP.mi4"); //attempt other firmwarename
431 if(!wxFileExists(path1)) //Firmware dosent exists on player
432 {
433 ERR_DIALOG(wxT("[ERR] File ") + path1 + wxT(" does not Exist"),
434 wxT("Bootloader rem"));
435 return false;
436 }
437 }
438
439 if(!wxFileExists(path2)) //Original Firmware dosent exists on player
440 {
441 ERR_DIALOG(wxT("[ERR] File ") + path2 + wxT(" does not Exist"),
442 wxT("Bootloader rem"));
443 return false;
444 }
445
446 if(!wxRenameFile(path2,path1,true)) //rename Firmware to Original
447 {
448 ERR_DIALOG(wxT("[ERR] Coud not rename ") + path2 + wxT(" to ")
449 + path1, wxT("Bootloader add"));
450 return false;
451 }
452
453 }
454 // shouldn't get here
455 return false;
456}
457
458// FWPatcher
459bool fwpatcher(int mode,wxString bootloadername,wxString deviceDir,wxString firmware)
460{
461 if(mode == BOOTLOADER_ADD)
462 {
463 char md5sum_str[32];
464 wxString src,dest,err;
465 int series,table_entry;
466
467 if (!FileMD5(firmware, md5sum_str)) {
468 ERR_DIALOG(wxT("Could not open firmware"), wxT("Open Firmware"));
469 return false;
470 }
471 else {
472 /* Check firmware against md5sums in h120sums and h100sums */
473 series = 0;
474 table_entry = intable(md5sum_str, &h120pairs[0],
475 sizeof(h120pairs)/sizeof(struct sumpairs));
476 if (table_entry >= 0) {
477 series = 120;
478 }
479 else {
480 table_entry = intable(md5sum_str, &h100pairs[0],
481 sizeof(h100pairs)/sizeof(struct sumpairs));
482 if (table_entry >= 0) {
483 series = 100;
484 }
485 else {
486 table_entry =
487 intable(md5sum_str, &h300pairs[0],
488 sizeof(h300pairs)/sizeof(struct sumpairs));
489 if (table_entry >= 0)
490 series = 300;
491 }
492 }
493 if (series == 0) {
494 ERR_DIALOG(wxT("Could not detect firmware type"), wxT("Detect Player out of Firmware"));
495 return false;
496 }
497 else
498 {
499 //Download bootloader
500 src = gv->bootloader_url + wxT("/iriver/")
501 + bootloadername;
502 dest = gv->stdpaths->GetUserDataDir()
503 + wxT("" PATH_SEP "download" PATH_SEP)
504 + bootloadername;
505 if( DownloadURL(src, dest) )
506 {
507 wxRemoveFile(dest);
508 ERR_DIALOG(wxT("Unable to download ") + src,
509 wxT("Install"));
510 return false;
511 }
512
513 if(!PatchFirmware(firmware,dest,series, table_entry)) // Patch firmware
514 {
515 ERR_DIALOG(wxT("Patching Firmware failed"),
516 wxT("Patching Firmware"));
517 return false;
518 }
519 }
520
521 // Load patched Firmware to player
522 src = gv->stdpaths->GetUserDataDir()
523 + wxT("" PATH_SEP "download" PATH_SEP "new.hex");
524
525 if(gv->curplat == wxT("h100"))
526 dest = deviceDir + wxT("" PATH_SEP "ihp_100.hex");
527 else if(gv->curplat == wxT("h120"))
528 dest = deviceDir + wxT("" PATH_SEP "ihp_120.hex");
529 else if(gv->curplat == wxT("h300"))
530 dest = deviceDir + wxT("" PATH_SEP "H300.hex");
531
532 if(!wxRenameFile(src,dest))
533 {
534 ERR_DIALOG(wxT("Copying Firmware to Device failed"),
535 wxT("Copying Firmware"));
536 return false;
537 }
538 else
539 {
540 return true;
541 }
542 }
543
544 }
545 else
546 {
547 return false; //no uninstall possible
548 }
549}
diff --git a/rbutil/bootloaders.h b/rbutil/bootloaders.h
deleted file mode 100755
index d5bda126cc..0000000000
--- a/rbutil/bootloaders.h
+++ /dev/null
@@ -1,51 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: bootloaders.h
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22
23#ifndef BOOTLOADERS_H_INCLUDED
24#define BOOTLOADERS_H_INCLUDED
25
26#include <wx/string.h>
27#include "irivertools.h"
28#include "md5sum.h"
29
30#include "rbutil.h"
31#include "installlog.h"
32
33extern "C" {
34 // Ipodpatcher
35 #include "ipodpatcher/ipodpatcher.h"
36 // Sansapatcher
37 #include "sansapatcher/sansapatcher.h"
38};
39
40
41bool initIpodpatcher();
42bool initSansaPatcher();
43bool ipodpatcher(int mode,wxString bootloadername);
44bool sansapatcher(int mode,wxString bootloadername);
45bool gigabeatf(int mode,wxString bootloadername,wxString deviceDir);
46bool iaudiox5(int mode,wxString bootloadername,wxString deviceDir);
47bool fwpatcher(int mode,wxString bootloadername,wxString deviceDir,wxString firmware);
48bool h10(int mode,wxString bootloadername,wxString deviceDir);
49
50
51#endif // BOOTLOADERS_H_INCLUDED
diff --git a/rbutil/copying.txt b/rbutil/copying.txt
deleted file mode 100644
index d57cce3cfb..0000000000
--- a/rbutil/copying.txt
+++ /dev/null
@@ -1,370 +0,0 @@
1
2 GNU GENERAL PUBLIC LICENSE
3
4 Version 2, June 1991
5
6 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
7 675 Mass Ave, Cambridge, MA 02139, USA
8 Everyone is permitted to copy and distribute verbatim copies
9 of this license document, but changing it is not allowed.
10
11 Preamble
12
13 The licenses for most software are designed to take away your
14freedom to share and change it. By contrast, the GNU General Public
15License is intended to guarantee your freedom to share and change free
16
17software--to make sure the software is free for all its users. This
18General Public License applies to most of the Free Software
19Foundation's software and to any other program whose authors commit to
20using it. (Some other Free Software Foundation software is covered by
21the GNU Library General Public License instead.) You can apply it to
22your programs, too.
23
24 When we speak of free software, we are referring to freedom, not
25price. Our General Public Licenses are designed to make sure that you
26
27have the freedom to distribute copies of free software (and charge for
28this service if you wish), that you receive source code or can get it
29if you want it, that you can change the software or use pieces of it
30in new free programs; and that you know you can do these things.
31
32 To protect your rights, we need to make restrictions that forbid
33anyone to deny you these rights or to ask you to surrender the rights.
34These restrictions translate to certain responsibilities for you if you
35
36distribute copies of the software, or if you modify it.
37
38 For example, if you distribute copies of such a program, whether
39gratis or for a fee, you must give the recipients all the rights that
40you have. You must make sure that they, too, receive or can get the
41source code. And you must show them these terms so they know their
42rights.
43
44 We protect your rights with two steps: (1) copyright the software, and
45(2) offer you this license which gives you legal permission to copy,
46
47distribute and/or modify the software.
48
49 Also, for each author's protection and ours, we want to make certain
50that everyone understands that there is no warranty for this free
51software. If the software is modified by someone else and passed on, we
52want its recipients to know that what they have is not the original, so
53that any problems introduced by others will not reflect on the original
54authors' reputations.
55
56 Finally, any free program is threatened constantly by software
57
58patents. We wish to avoid the danger that redistributors of a free
59program will individually obtain patent licenses, in effect making the
60program proprietary. To prevent this, we have made it clear that any
61patent must be licensed for everyone's free use or not licensed at all.
62
63 The precise terms and conditions for copying, distribution and
64modification follow.
65
66 GNU GENERAL PUBLIC LICENSE
67 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
68
69 0. This License applies to any program or other work which contains
70a notice placed by the copyright holder saying it may be distributed
71under the terms of this General Public License. The "Program", below,
72refers to any such program or work, and a "work based on the Program"
73means either the Program or any derivative work under copyright law:
74that is to say, a work containing the Program or a portion of it,
75either verbatim or with modifications and/or translated into another
76
77language. (Hereinafter, translation is included without limitation in
78the term "modification".) Each licensee is addressed as "you".
79
80Activities other than copying, distribution and modification are not
81covered by this License; they are outside its scope. The act of
82running the Program is not restricted, and the output from the Program
83is covered only if its contents constitute a work based on the
84Program (independent of having been made by running the Program).
85
86Whether that is true depends on what the Program does.
87
88 1. You may copy and distribute verbatim copies of the Program's
89source code as you receive it, in any medium, provided that you
90conspicuously and appropriately publish on each copy an appropriate
91copyright notice and disclaimer of warranty; keep intact all the
92notices that refer to this License and to the absence of any warranty;
93and give any other recipients of the Program a copy of this License
94along with the Program.
95
96You may charge a fee for the physical act of transferring a copy, and
97you may at your option offer warranty protection in exchange for a fee.
98
99 2. You may modify your copy or copies of the Program or any portion
100of it, thus forming a work based on the Program, and copy and
101distribute such modifications or work under the terms of Section 1
102above, provided that you also meet all of these conditions:
103
104 a) You must cause the modified files to carry prominent notices
105
106 stating that you changed the files and the date of any change.
107
108 b) You must cause any work that you distribute or publish, that in
109 whole or in part contains or is derived from the Program or any
110 part thereof, to be licensed as a whole at no charge to all third
111 parties under the terms of this License.
112
113 c) If the modified program normally reads commands interactively
114 when run, you must cause it, when started running for such
115 interactive use in the most ordinary way, to print or display an
116
117 announcement including an appropriate copyright notice and a
118 notice that there is no warranty (or else, saying that you provide
119 a warranty) and that users may redistribute the program under
120 these conditions, and telling the user how to view a copy of this
121 License. (Exception: if the Program itself is interactive but
122 does not normally print such an announcement, your work based on
123 the Program is not required to print an announcement.)
124
125These requirements apply to the modified work as a whole. If
126
127identifiable sections of that work are not derived from the Program,
128and can be reasonably considered independent and separate works in
129themselves, then this License, and its terms, do not apply to those
130sections when you distribute them as separate works. But when you
131distribute the same sections as part of a whole which is a work based
132on the Program, the distribution of the whole must be on the terms of
133this License, whose permissions for other licensees extend to the
134
135entire whole, and thus to each and every part regardless of who wrote it.
136
137Thus, it is not the intent of this section to claim rights or contest
138your rights to work written entirely by you; rather, the intent is to
139exercise the right to control the distribution of derivative or
140collective works based on the Program.
141
142In addition, mere aggregation of another work not based on the Program
143with the Program (or with a work based on the Program) on a volume of
144a storage or distribution medium does not bring the other work under
145
146the scope of this License.
147
148 3. You may copy and distribute the Program (or a work based on it,
149under Section 2) in object code or executable form under the terms of
150Sections 1 and 2 above provided that you also do one of the following:
151
152 a) Accompany it with the complete corresponding machine-readable
153 source code, which must be distributed under the terms of Sections
154 1 and 2 above on a medium customarily used for software interchange; or,
155
156 b) Accompany it with a written offer, valid for at least three
157
158 years, to give any third party, for a charge no more than your
159 cost of physically performing source distribution, a complete
160 machine-readable copy of the corresponding source code, to be
161 distributed under the terms of Sections 1 and 2 above on a medium
162 customarily used for software interchange; or,
163
164 c) Accompany it with the information you received as to the offer
165 to distribute corresponding source code. (This alternative is
166 allowed only for noncommercial distribution and only if you
167
168 received the program in object code or executable form with such
169 an offer, in accord with Subsection b above.)
170
171The source code for a work means the preferred form of the work for
172making modifications to it. For an executable work, complete source
173code means all the source code for all modules it contains, plus any
174associated interface definition files, plus the scripts used to
175control compilation and installation of the executable. However, as a
176special exception, the source code distributed need not include
177
178anything that is normally distributed (in either source or binary
179form) with the major components (compiler, kernel, and so on) of the
180operating system on which the executable runs, unless that component
181itself accompanies the executable.
182
183If distribution of executable or object code is made by offering
184access to copy from a designated place, then offering equivalent
185access to copy the source code from the same place counts as
186distribution of the source code, even though third parties are not
187
188compelled to copy the source along with the object code.
189
190 4. You may not copy, modify, sublicense, or distribute the Program
191except as expressly provided under this License. Any attempt
192otherwise to copy, modify, sublicense or distribute the Program is
193void, and will automatically terminate your rights under this License.
194However, parties who have received copies, or rights, from you under
195this License will not have their licenses terminated so long as such
196parties remain in full compliance.
197
198 5. You are not required to accept this License, since you have not
199signed it. However, nothing else grants you permission to modify or
200distribute the Program or its derivative works. These actions are
201prohibited by law if you do not accept this License. Therefore, by
202modifying or distributing the Program (or any work based on the
203Program), you indicate your acceptance of this License to do so, and
204all its terms and conditions for copying, distributing or modifying
205
206the Program or works based on it.
207
208 6. Each time you redistribute the Program (or any work based on the
209Program), the recipient automatically receives a license from the
210original licensor to copy, distribute or modify the Program subject to
211these terms and conditions. You may not impose any further
212restrictions on the recipients' exercise of the rights granted herein.
213You are not responsible for enforcing compliance by third parties to
214this License.
215
216 7. If, as a consequence of a court judgment or allegation of patent
217
218infringement or for any other reason (not limited to patent issues),
219conditions are imposed on you (whether by court order, agreement or
220otherwise) that contradict the conditions of this License, they do not
221excuse you from the conditions of this License. If you cannot
222distribute so as to satisfy simultaneously your obligations under this
223License and any other pertinent obligations, then as a consequence you
224may not distribute the Program at all. For example, if a patent
225
226license would not permit royalty-free redistribution of the Program by
227all those who receive copies directly or indirectly through you, then
228the only way you could satisfy both it and this License would be to
229refrain entirely from distribution of the Program.
230
231If any portion of this section is held invalid or unenforceable under
232any particular circumstance, the balance of the section is intended to
233apply and the section as a whole is intended to apply in other
234circumstances.
235
236It is not the purpose of this section to induce you to infringe any
237patents or other property right claims or to contest validity of any
238such claims; this section has the sole purpose of protecting the
239integrity of the free software distribution system, which is
240implemented by public license practices. Many people have made
241generous contributions to the wide range of software distributed
242through that system in reliance on consistent application of that
243system; it is up to the author/donor to decide if he or she is willing
244
245to distribute software through any other system and a licensee cannot
246impose that choice.
247
248This section is intended to make thoroughly clear what is believed to
249be a consequence of the rest of this License.
250
251 8. If the distribution and/or use of the Program is restricted in
252certain countries either by patents or by copyrighted interfaces, the
253original copyright holder who places the Program under this License
254may add an explicit geographical distribution limitation excluding
255
256those countries, so that distribution is permitted only in or among
257countries not thus excluded. In such case, this License incorporates
258the limitation as if written in the body of this License.
259
260 9. The Free Software Foundation may publish revised and/or new versions
261of the General Public License from time to time. Such new versions will
262be similar in spirit to the present version, but may differ in detail to
263address new problems or concerns.
264
265Each version is given a distinguishing version number. If the Program
266
267specifies a version number of this License which applies to it and "any
268later version", you have the option of following the terms and conditions
269either of that version or of any later version published by the Free
270Software Foundation. If the Program does not specify a version number of
271this License, you may choose any version ever published by the Free Software
272Foundation.
273
274 10. If you wish to incorporate parts of the Program into other free
275programs whose distribution conditions are different, write to the author
276
277to ask for permission. For software which is copyrighted by the Free
278Software Foundation, write to the Free Software Foundation; we sometimes
279make exceptions for this. Our decision will be guided by the two goals
280of preserving the free status of all derivatives of our free software and
281of promoting the sharing and reuse of software generally.
282
283 NO WARRANTY
284
285 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
286FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
287
288OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
289PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
290OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
291MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
292TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
293PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
294REPAIR OR CORRECTION.
295
296 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
297
298WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
299REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
300INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
301OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
302TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
303YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
304PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
305
306POSSIBILITY OF SUCH DAMAGES.
307
308 END OF TERMS AND CONDITIONS
309
310 Appendix: How to Apply These Terms to Your New Programs
311
312 If you develop a new program, and you want it to be of the greatest
313possible use to the public, the best way to achieve this is to make it
314free software which everyone can redistribute and change under these terms.
315
316 To do so, attach the following notices to the program. It is safest
317to attach them to the start of each source file to most effectively
318
319convey the exclusion of warranty; and each file should have at least
320the "copyright" line and a pointer to where the full notice is found.
321
322 <one line to give the program's name and a brief idea of what it does.>
323 Copyright (C) 19yy <name of author>
324
325 This program is free software; you can redistribute it and/or modify
326 it under the terms of the GNU General Public License as published by
327 the Free Software Foundation; either version 2 of the License, or
328
329 (at your option) any later version.
330
331 This program is distributed in the hope that it will be useful,
332 but WITHOUT ANY WARRANTY; without even the implied warranty of
333 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
334 GNU General Public License for more details.
335
336 You should have received a copy of the GNU General Public License
337 along with this program; if not, write to the Free Software
338 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
339
340Also add information on how to contact you by electronic and paper mail.
341
342If the program is interactive, make it output a short notice like this
343when it starts in an interactive mode:
344
345 Gnomovision version 69, Copyright (C) 19yy name of author
346 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
347 This is free software, and you are welcome to redistribute it
348 under certain conditions; type `show c' for details.
349
350The hypothetical commands `show w' and `show c' should show the appropriate
351
352parts of the General Public License. Of course, the commands you use may
353be called something other than `show w' and `show c'; they could even be
354mouse-clicks or menu items--whatever suits your program.
355
356You should also get your employer (if you work as a programmer) or your
357school, if any, to sign a "copyright disclaimer" for the program, if
358necessary. Here is a sample; alter the names:
359
360 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
361 `Gnomovision' (which makes passes at compilers) written by James Hacker.
362
363 <signature of Ty Coon>, 1 April 1989
364 Ty Coon, President of Vice
365
366This General Public License does not permit incorporating your program into
367proprietary programs. If your program is a subroutine library, you may
368consider it more useful to permit linking proprietary applications with the
369library. If this is what you want to do, use the GNU Library General
370Public License instead of this License.
diff --git a/rbutil/credits.h b/rbutil/credits.h
deleted file mode 100644
index b1246201d3..0000000000
--- a/rbutil/credits.h
+++ /dev/null
@@ -1,52 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: credits.h
10 *
11 * Copyright (C) 2006 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#ifndef CREDITS_H_INCLUDED
22#define CREDITS_H_INCLUDED
23
24#define RBUTIL_FULLNAME "The Rockbox Utility"
25#define RBUTIL_VERSION "Version 0.3.2.6"
26
27static const wxString rbutil_developers[] = {
28 wxT("Christi Alice Scarborough"),
29 wxT("Dave Chapman"),
30 wxT("Dominik Wenger"),
31 wxT("Bryan Childs"),
32 wxT("Dave Hooper"),
33 wxT("")
34};
35
36#define RBUTIL_WEBSITE "http://www.rockbox.org/"
37#define RBUTIL_COPYRIGHT wxT("© 2005-2007 The Rockbox Team\n" \
38 "Released under the GNU General Public License v2.")
39#define RBUTIL_DESCRIPTION wxT("Installer and housekeeping utility for " \
40 "the Rockbox open source digital audio player firmware.")
41
42
43class AboutDlg: public wxDialog
44{
45 public:
46 AboutDlg(rbutilFrm *parent);
47 ~AboutDlg();
48};
49
50#include <wx/hyperlink.h>
51
52#endif // CREDITS_H_INCLUDED
diff --git a/rbutil/h100sums.h b/rbutil/h100sums.h
deleted file mode 100755
index ebbdcc28db..0000000000
--- a/rbutil/h100sums.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/* Checksums of firmwares for ihp_100 */
2/* order: unpatched, patched */
3
4/* 1.63eu */
5{"86103cb05658970b43ce1f40f93d53a8", "4938420d83aa6da3764d33e5a008c8d4"},
6/* 1.63k */
7{"70127fa9ee69afab7645297fbb61636d", "044b737ddb74436353e290d3fbcc3333"},
8/* 1.63us */
9{"7a504a450c76a0dda757fdb6b5531b22", "e51883ed89d49f5677b0a976aef7b154"},
10/* 1.65eu */
11{"478dc657b97e77d1b4944ef26c3dcb8e", "528917d9e5b34a3e5bcac8fe1f4bd7a9"},
12/* 1.65k */
13{"97ba82fb8099bb23ca0c78fc119f8cce", "ef24f69a679e5eba2216045cb24d8b15"},
14/* 1.65us */
15{"d3725865e0948cd5f604b00db2ec89aa", "76d83812b9e1856f768ba913eeba44e1"},
16/* 1.66eu */
17{"fc59f742fe383da3e4d17a660c46afb9", "2aa9d16d3e166a7575fc652db8588daa"},
18/* 1.66k */
19{"22d214401994c276ec6878288caa0dba", "a87dbe604ea98d035450a34b6e184a08"},
20/* 1.66us */
21{"0ae247f567aeafcafecf823a50cbf33e", "f7668e8949f1a78e8ecd685db78b6824"},
22/* 1.66jp */
23{"8bfc8ae5805c270597232efeafade5fd", "72613b75c5196f63e99e41b7a88d7241"},
diff --git a/rbutil/h120sums.h b/rbutil/h120sums.h
deleted file mode 100755
index 09da891ae1..0000000000
--- a/rbutil/h120sums.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/* Checksums of firmwares for ihp_120 */
2/* order: unpatched, patched */
3
4/* 1.63eu */
5{"14488347a171480c63c94bc7b885225d", "15f09130a1aa02c25f820e8cc68259a4"},
6/* 1.63k */
7{"3401fe8845e569156abfaddf05ca7771", "55e4cb20e36f4da06ad80b31aaaa3054"},
8/* 1.63us */
9{"d9078209105c186cee5246055fdb99c9", "dbdd012a3d821d26f907879cca71e9f4"},
10/* 1.65eu */
11{"c9e71aac4a498f1e2f0e684c2d554ea1", "43454df30c176e55d0df7e3c48e67785"},
12/* 1.65k */
13{"360c0c565266f84e9bca610c596f3207", "d8cb7d9f586186bf9780ee761fc8a677"},
14/* 1.65us */
15{"b9e516d4b8a0265605f46f254897bfb0", "99c5666e990dc782b9daefcb1a087ec0"},
16/* 1.66eu */
17{"a094999b41781f4322a57b9be7fa4534", "e26d2574f39cee0adcdd54fb9f316293"},
18/* 1.66k */
19{"79daba973bb31b60b4b87c2ef497587d", "e76121ba9efe72ecfbb6392eaefe6d96"},
20/* 1.66us */
21{"7fa020a3104c76fbbfcb8313e287dbe2", "12194678a2fdd0814d2e0bb57c8e8e6e"},
22/* 1.66jp */
23{"271d151eb6586929da24b3458ea965fe", "51716393ea0605d225e70a6be29dfdbd"},
diff --git a/rbutil/h300sums.h b/rbutil/h300sums.h
deleted file mode 100755
index 1c6581a6d1..0000000000
--- a/rbutil/h300sums.h
+++ /dev/null
@@ -1,17 +0,0 @@
1/* Checksums of firmwares for ihp_300 */
2/* order: unpatched, patched */
3
4/* 1.28eu */
5{"0b2083d37f24899b82d21a14d2b38060", "9cd7e291a66f55335c619d63f3a7634b"},
6/* 1.28k */
7{"c6f854ae3d8f48e8982819a4b5302fb0", "90967247ba3f1bcb257432a4d78553bf"},
8/* 1.28jp */
9{"7fcd7bca6b98a34134e2518a616f4e85", "cfd22c20e473727148f11f83d0028fb3"},
10/* 1.29eu */
11{"27d90fc316709c096979ab24c914ee31", "5982302507d57c2a96e9480c242b5de0"},
12/* 1.29k */
13{"44416d97737fc47cd417a64d44064768", "1303e22ef5b1af866aa4def03d6c5f5a"},
14/* 1.29jp */
15{"1ac242c645572a0a5de99ae2b23453b8", "ce433c404ff7531f5852ce3cb61143ee"},
16/* 1.30eu */
17{"8d2d775b018f0532235d38f5317ae10c", "7fb49041294b3e6aea3894218d6d64cf"},
diff --git a/rbutil/icons/Makefile b/rbutil/icons/Makefile
deleted file mode 100644
index 8eb630f427..0000000000
--- a/rbutil/icons/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id$
8#
9CC = gcc
10CXX = $(shell $(PREFIX)wx-config --version=2.8 --cxx)
11INC = `$(PREFIX)wx-config --version=2.8 --cxxflags`
12LIBS = `$(PREFIX)wx-config --version=2.8 --libs`
13
14CFLAGS = -Wall -Wundef -DRBUTIL -D_LARGEFILE64_SOURCE
15ICONS := $(wildcard *.png)
16HEADERS := $(subst .png,.h,$(ICONS))
17OBJS := $(subst .png,.o,$(ICONS))
18CXXSOURCES = $(subst .png,.cpp,$(ICONS))
19SILENT = @
20BIN2C = ./bin2c
21
22all: $(OBJS)
23
24
25bin2c: bin2c.c
26 $(SILENT) echo CC $<
27 $(SILENT) $(CC) -o $@ $<
28
29%.cpp: %.png bin2c
30 $(SILENT) echo BIN2C $<
31 $(SILENT) $(BIN2C) $<
32
33%.o: %.cpp
34 $(SILENT) echo CXX $<
35 $(SILENT) $(CXX) $(CFLAGS) $(INC) -c -o $@ $<
36
37clean:
38 $(SILENT) echo cleaning icons.
39 $(SILENT) rm -f bin2c $(OBJS) $(HEADERS) $(CXXSOURCES)
diff --git a/rbutil/icons/bin2c.c b/rbutil/icons/bin2c.c
deleted file mode 100644
index 99400444ef..0000000000
--- a/rbutil/icons/bin2c.c
+++ /dev/null
@@ -1,172 +0,0 @@
1 // bin2c.c
2 //
3 // convert a binary file into a C source vector
4 //
5 // put into the public domain by Sandro Sigala
6 //
7 // syntax: bin2c [-c] [-z] <input_file> <output_file>
8 //
9 // -c add the "const" keyword to definition
10 // -z terminate the array with a zero (useful for embedded C strings)
11 //
12 // examples:
13 // bin2c -c myimage.png myimage_png.cpp
14 // bin2c -z sometext.txt sometext_txt.cpp
15
16 #include <ctype.h>
17 #include <stdio.h>
18 #include <stdlib.h>
19 #include <string.h>
20
21 #ifndef PATH_MAX
22 #define PATH_MAX 1024
23 #endif
24
25 int useconst = 0;
26 int zeroterminated = 0;
27
28 int myfgetc(FILE *f)
29 {
30 int c = fgetc(f);
31 if (c == EOF && zeroterminated) {
32 zeroterminated = 0;
33 return 0;
34 }
35 return c;
36 }
37
38
39 void process(const char *ifname, const char *ofname)
40 {
41 FILE *ifile, *ofile;
42 /* modified */
43 int counter=0;
44 char buf2[PATH_MAX];
45 char* cp2;
46 char* cp3;
47 if ((cp3 = strrchr(ofname, '/')) != NULL)
48 ++cp3;
49 else {
50 if ((cp3 = strrchr(ofname, '\\')) != NULL)
51 ++cp3;
52 else
53 cp3 = (char*) ofname;
54 }
55
56 strcpy(buf2, cp3);
57 cp2 = strrchr(buf2, '.');
58 *cp2 = '.';
59 cp2++;
60 *cp2 = 'h';
61 cp2++;
62 *cp2 ='\0';
63
64
65 ifile = fopen(ifname, "rb");
66 if (ifile == NULL) {
67 fprintf(stderr, "cannot open %s for reading\n", ifname);
68 exit(1);
69 }
70 ofile = fopen(ofname, "wb");
71 if (ofile == NULL) {
72 fprintf(stderr, "cannot open %s for writing\n", ofname);
73 exit(1);
74 }
75 char buf[PATH_MAX], *p;
76 const char *cp;
77 if ((cp = strrchr(ifname, '/')) != NULL)
78 ++cp;
79 else {
80 if ((cp = strrchr(ifname, '\\')) != NULL)
81 ++cp;
82 else
83 cp = ifname;
84 }
85 strcpy(buf, cp);
86 for (p = buf; *p != '\0'; ++p)
87 if (!isalnum(*p))
88 *p = '_';
89 fprintf(ofile,"#include \"%s\" \n\n",buf2);
90 fprintf(ofile, "%sunsigned char %s[] = {\n", useconst ? "const " : "", buf);
91 int c, col = 1;
92 while ((c = myfgetc(ifile)) != EOF) {
93 counter++;
94 if (col >= 78 - 6) {
95 fputc('\n', ofile);
96 col = 1;
97 }
98 fprintf(ofile, "0x%.2x, ", c);
99 col += 6;
100
101 }
102 fprintf(ofile, "\n};\n");
103
104 /* modified */
105 fprintf(ofile,"int %s_length = %i; \n",buf,counter);
106
107
108 FILE *o2file;
109 o2file = fopen(buf2, "wb");
110 if (o2file == NULL) {
111 fprintf(stderr, "cannot open %s for writing\n", buf2);
112 exit(1);
113 }
114
115 fprintf(o2file, "#ifndef __%s__ \n", buf);
116 fprintf(o2file, "#define __%s__ \n", buf);
117
118 fprintf(o2file, "extern %sunsigned char %s[]; \n\n", useconst ? "const " : "", buf);
119 fprintf(o2file, "extern int %s_length; \n\n", buf);
120
121 fprintf(o2file, "#endif \n");
122
123 fclose(ifile);
124 fclose(ofile);
125 fclose(o2file);
126 }
127
128 void usage(void)
129 {
130 fprintf(stderr, "usage: bin2c <input_files> \n");
131 exit(1);
132 }
133
134 int main(int argc, char **argv)
135 {
136 if (argc < 2) {
137 usage();
138 }
139 int i;
140 for(i = 1;i < argc ; i++)
141 {
142 char buf[PATH_MAX];
143 char* cp;
144 strcpy(buf, argv[i]);
145 cp = strrchr(buf, '.');
146 cp++;
147 strcpy(cp,"cpp");
148 process(argv[i], buf);
149 }
150
151
152 /*
153 while (argc > 3) {
154 if (!strcmp(argv[1], "-c")) {
155 useconst = 1;
156 --argc;
157 ++argv;
158 } else if (!strcmp(argv[1], "-z")) {
159 zeroterminated = 1;
160 --argc;
161 ++argv;
162 } else {
163 usage();
164 }
165 }
166 if (argc != 3) {
167 usage();
168 }
169 process(argv[1], argv[2]);
170 */
171 return 0;
172 }
diff --git a/rbutil/icons/bootloader_btn.png b/rbutil/icons/bootloader_btn.png
deleted file mode 100644
index 3590c9c4b9..0000000000
--- a/rbutil/icons/bootloader_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/doom_btn.png b/rbutil/icons/doom_btn.png
deleted file mode 100644
index c086024e14..0000000000
--- a/rbutil/icons/doom_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/font_btn.png b/rbutil/icons/font_btn.png
deleted file mode 100644
index dd47a2912a..0000000000
--- a/rbutil/icons/font_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/rbinstall_btn.png b/rbutil/icons/rbinstall_btn.png
deleted file mode 100644
index c37ebec263..0000000000
--- a/rbutil/icons/rbinstall_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/rembootloader_btn.png b/rbutil/icons/rembootloader_btn.png
deleted file mode 100644
index 8abf1da30e..0000000000
--- a/rbutil/icons/rembootloader_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/remrb_btn.png b/rbutil/icons/remrb_btn.png
deleted file mode 100644
index bd484b96c1..0000000000
--- a/rbutil/icons/remrb_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/talkfile_btn.png b/rbutil/icons/talkfile_btn.png
deleted file mode 100644
index 64e2763c94..0000000000
--- a/rbutil/icons/talkfile_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/icons/themes_btn.png b/rbutil/icons/themes_btn.png
deleted file mode 100644
index 264ba79460..0000000000
--- a/rbutil/icons/themes_btn.png
+++ /dev/null
Binary files differ
diff --git a/rbutil/install_3d.xpm b/rbutil/install_3d.xpm
deleted file mode 100644
index c077e61143..0000000000
--- a/rbutil/install_3d.xpm
+++ /dev/null
@@ -1,70 +0,0 @@
1/* WxBitmapButton1 XPM */
2static char *install_3d_xpm[]={
3"56 46 20 1",
4" c None",
5"0 c #BEBABE",
6"1 c #BEC3BE",
7"2 c #000011",
8"3 c #AEAAAE",
9"4 c #9E9A9E",
10"5 c #010101",
11"6 c #79869E",
12"7 c #C7BAC7",
13"8 c #5155FF",
14"9 c #8E8A8E",
15"a c #AEAEB6",
16"b c #202496",
17"c c #B6AEB6",
18"d c #CFC7CF",
19"e c #9696AE",
20"f c #7992B6",
21"g c #717986",
22"h c #28FF20",
23"i c #A69EA6",
24" 0",
25" 0101010101010101010101010101010101010101010101010101012",
26" 1010101010101010101010101010101010101010101010101010102",
27" 1001000100010001000100010001000100010001000100010001002",
28" 3030410331304103313041033130410331304103313041033130312",
29" 0101010100101010100101010010101010010101001010101001002",
30" 3030303030303030313030303030303031303030303030303130302",
31" 0101030010101301001015555555555555555300101013101001032",
32" 3041303140303045503050101010101010010530403030403040302",
33" 0103010300130153510350552552525252520563010310131013012",
34" 3030374131303530503051288888888888851566373040303130302",
35" 0301031303005305155150588888881818850296031013030300132",
36" 3030403030453051305555558888883838851266a03030304131302",
37" 0373030303151503050301558888880818850566030313730303032",
38" 3131303030355030513135b58888888838851566c03040313030412",
39" 330333d33303535555035bb58888888818820566330333033373332",
40" 30303040303035303055bbb58888888888851546303130303030302",
41" 3333333333333555555bbbb58888888888850566333333333333332",
42" 30303030373035bbbb5bbb35888888888885126e303030413030302",
43" 33333333333335bbbb5bb33588888888888505fg333333333333332",
44" 33303330333035bbbb5b33355555555555551566a33033303330332",
45" 3333333333333533335333351111110dhh110566333333333333332",
46" 3333333333333533335333355252552555252555333333333333332",
47" 3333333333333533335335051001001000100100533333333333332",
48" 4333433343334533435353350 10 10 10 10 10563343334333432",
49" 3333333333333533335335351001001055555500566333333333332",
50" 3343434333434545335353450101010105505551566c43433343432",
51" 3333333333333533535335350 10 00 10555555566333333333332",
52" 4343434343434545435353455555555555555555666343434343432",
53" 333333333333353353533335666666666666666fge6333333333332",
54" 434343434343454543534355666egf66966669gfgf4343434343432",
55" 34333433343335335453356555555552a3a7aaa7343334333433342",
56" 4343434343434545435356654000305555555343434343434343432",
57" 3434343434343534345566665555555300303534343434343434342",
58" 434343434343454343566egc4555505555555553434343434343432",
59" 443444344434455555egfga44455555555545555443444344434442",
60" 434343434343434666666ce34346555555555555534343434343432",
61" 4444444444444446666644444444666666555555564444444444442",
62" 4343434343434343i34a43434340434743666666666343434343432",
63" 444444444444444444i44444444444444444444444i444444444442",
64" 4443444344434443444344434443444344434443444344434443442",
65" 4444444444444444444444444444444444444444444444444444442",
66" 4344444443444444434444444344444443444444434444444344442",
67" 4444444444444444444444444444444444444444444444444444442",
68" 4444444444444444444444444444444444444444444444444444442",
69"12222222222222222222222222222222222222222222222222222222"};
70
diff --git a/rbutil/install_dialogs.cpp b/rbutil/install_dialogs.cpp
deleted file mode 100644
index 331a07df4a..0000000000
--- a/rbutil/install_dialogs.cpp
+++ /dev/null
@@ -1,948 +0,0 @@
1
2#include "install_dialogs.h"
3#include "wizard.xpm"
4
5
6
7////////////////////////////////////////////////
8//// Bootloader Installation
9/////////////////////////////////////////////////
10
11IMPLEMENT_CLASS( bootloaderInstallDlg, wxDialog )
12
13BEGIN_EVENT_TABLE( bootloaderInstallDlg, wxDialog )
14
15END_EVENT_TABLE()
16
17bootloaderInstallDlg::bootloaderInstallDlg( )
18{
19 Init();
20}
21
22bootloaderInstallDlg::bootloaderInstallDlg( wxWindow* parent,
23 wxWindowID id, const wxString& caption,
24 const wxPoint& pos, const wxSize& size, long style )
25{
26 Init();
27 Create(parent, id, caption, pos, size, style);
28}
29
30void bootloaderInstallDlg::CreateControls()
31{
32 // A top-level sizer
33 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
34 this->SetSizer(topSizer);
35
36 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
37 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
38
39 // bitmap
40 wxBitmap sidebmp(wizard_xpm);
41 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
42 sideimage->SetBitmap(sidebmp);
43 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
44
45 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
46 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
47
48 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
49 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
50
51 m_firmwarepos = new FirmwarePositionCtrl(this,ID_FIRMWARE);
52 wxBoxSizer3->Add(m_firmwarepos, 0, wxALIGN_LEFT|wxALL, 5);
53
54 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
55 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
56
57}
58
59//init the local variables
60void bootloaderInstallDlg::Init()
61{
62
63}
64
65// create the window
66bool bootloaderInstallDlg::Create( wxWindow* parent,
67 wxWindowID id, const wxString& caption,
68 const wxPoint& pos, const wxSize& size, long style )
69{
70
71 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
72 return false;
73 CreateControls();
74 GetSizer()->Fit(this);
75 GetSizer()->SetSizeHints(this);
76 Centre();
77 return true;
78}
79
80
81
82// tranver data from the controls
83bool bootloaderInstallDlg::TransferDataFromWindow()
84{
85
86 if( m_devicepos->IsShown())
87 {
88 gv->curdestdir = m_devicepos->getDevicePos();
89 if(!wxDirExists(gv->curdestdir))
90 {
91 WARN_DIALOG(wxT("The Devicepostion is not valid"),
92 wxT("Select a Deviceposition"));
93 gv->curdestdir = wxT("");
94 return false;
95 }
96 }
97
98 if(m_firmwarepos->IsShown())
99 {
100 gv->curfirmware = m_firmwarepos->getFirmwarePos();
101 if(!wxFileExists(gv->curfirmware))
102 {
103 WARN_DIALOG(wxT("The Firmware position is not valid"),
104 wxT("Select a original Firmware"));
105 gv->curfirmware = wxT("");
106 return false;
107 }
108 }
109
110 return true;
111
112}
113
114// tranver data to the controls
115bool bootloaderInstallDlg::TransferDataToWindow()
116{
117 if(gv->curplat == wxT(""))
118 {
119 WARN_DIALOG(wxT("You have not selected a audio device"),
120 wxT("Select a Device"));
121 return false;
122 }
123 int index = gv->plat_id.Index(gv->curplat);
124
125 if(!gv->plat_needsbootloader[index])
126 {
127 WARN_DIALOG(wxT("This Device doesnt need a Bootloader"),
128 wxT("Bootloader"));
129 return false;
130 }
131
132 if(gv->plat_bootloadermethod[index] != wxT("ipodpatcher") && gv->plat_bootloadermethod[index] != wxT("sansapatcher"))
133 {
134 m_devicepos->Show(true);
135 }else
136 {
137 m_devicepos->Show(false);
138 }
139 if(gv->plat_bootloadermethod[index] == wxT("fwpatcher"))
140 {
141 m_firmwarepos->Show(true);
142 }else
143 {
144 m_firmwarepos->Show(false);
145 }
146
147 m_devicepos->setDefault();
148 m_firmwarepos->setDefault();
149 return true;
150}
151////////////////////////////////////////////////
152//// Talk file creation
153/////////////////////////////////////////////////
154
155
156IMPLEMENT_CLASS( talkInstallDlg, wxDialog )
157
158BEGIN_EVENT_TABLE( talkInstallDlg, wxDialog )
159 EVT_BUTTON(ID_BROWSE_ENC_BTN, talkInstallDlg::OnBrowseEncBtn)
160 EVT_BUTTON(ID_BROWSE_TTS_BTN, talkInstallDlg::OnBrowseTtsBtn)
161END_EVENT_TABLE()
162
163talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator )
164{
165 m_talkCreator = talkcreator;
166 Init();
167}
168
169talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator, wxWindow* parent,
170 wxWindowID id, const wxString& caption,
171 const wxPoint& pos, const wxSize& size, long style )
172{
173 m_talkCreator = talkcreator;
174 Init();
175 Create(parent, id, caption, pos, size, style);
176}
177
178void talkInstallDlg::CreateControls()
179{
180 // A top-level sizer
181 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
182 this->SetSizer(topSizer);
183
184 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
185 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
186
187 // bitmap
188 wxBitmap sidebmp(wizard_xpm);
189
190 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
191 sideimage->SetBitmap(sidebmp);
192 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
193
194 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
195 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
196
197 // Device position
198 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
199 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
200
201 // Encoder
202 wxStaticBox* WxStaticBoxSizer2_StaticBoxObj = new wxStaticBox(this,
203 wxID_ANY, wxT("Encoder"));
204 wxStaticBoxSizer* WxStaticBoxSizer2 =
205 new wxStaticBoxSizer(WxStaticBoxSizer2_StaticBoxObj,wxVERTICAL);
206 wxBoxSizer3->Add(WxStaticBoxSizer2,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
207
208 m_Enc = new wxComboBox(this,ID_ENC_CBX,wxT("lame"),
209 wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedEnc(),wxCB_READONLY);
210 m_Enc->SetToolTip(wxT("Select your Encoder."));
211 m_Enc->SetHelpText(wxT("Select your Encoder."));
212 WxStaticBoxSizer2->Add(m_Enc,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
213
214 wxStaticText* enc_desc = new wxStaticText( this, wxID_STATIC,
215 wxT("Select the Encoder executable"), wxDefaultPosition,
216 wxDefaultSize, 0 );
217 WxStaticBoxSizer2->Add(enc_desc, 0, wxALIGN_LEFT|wxALL, 5);
218
219 wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
220 WxStaticBoxSizer2->Add(horizontalSizer, 0, wxGROW|wxALL, 5);
221
222 m_EncExe = new wxTextCtrl(this,wxID_ANY,gv->pathToEnc);
223 m_EncExe->SetToolTip(wxT("Type the folder where your Encoder exe is"));
224 m_EncExe->SetHelpText(wxT("Type the folder where your Encoder exe is"));
225 horizontalSizer->Add(m_EncExe,0,wxGROW | wxALL,5);
226
227 m_browseEncBtn = new wxButton(this, ID_BROWSE_ENC_BTN, wxT("Browse"),
228 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
229 wxT("BrowseEncBtn"));
230 m_browseEncBtn->SetToolTip(wxT("Browse for your Encoder Exe"));
231 m_browseEncBtn->SetHelpText(wxT("Browse for your Encoder exe"));
232 horizontalSizer->Add(m_browseEncBtn,0,wxGROW | wxALL,5);
233
234 wxStaticText* enc_desc_opt = new wxStaticText( this, wxID_STATIC,
235 wxT("Encoder Options"), wxDefaultPosition,
236 wxDefaultSize, 0 );
237 WxStaticBoxSizer2->Add(enc_desc_opt, 0, wxALIGN_LEFT|wxALL, 5);
238
239 m_EncOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getEncOpts(wxT("lame")));
240 m_EncOpts->SetToolTip(wxT("Encoder Options"));
241 m_EncOpts->SetHelpText(wxT("Encoder Options"));
242 WxStaticBoxSizer2->Add(m_EncOpts, 0, wxALIGN_LEFT|wxALL, 5);
243
244 // TTS
245 wxStaticBox* WxStaticBoxSizer3_StaticBoxObj = new wxStaticBox(this,
246 wxID_ANY, wxT("Text to Speach"));
247 wxStaticBoxSizer* WxStaticBoxSizer3 =
248 new wxStaticBoxSizer(WxStaticBoxSizer3_StaticBoxObj,wxVERTICAL);
249 wxBoxSizer3->Add(WxStaticBoxSizer3,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
250
251 m_Tts = new wxComboBox(this,ID_TTS_CBX,wxT("espeak"),
252 wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedTTS(),wxCB_READONLY);
253 m_Tts->SetToolTip(wxT("Select your TTS."));
254 m_Tts->SetHelpText(wxT("Select your TTS."));
255 WxStaticBoxSizer3->Add(m_Tts,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
256
257 wxStaticText* tts_desc = new wxStaticText( this, wxID_STATIC,
258 wxT("Select the TTS executable"), wxDefaultPosition,
259 wxDefaultSize, 0 );
260 WxStaticBoxSizer3->Add(tts_desc, 0, wxALIGN_LEFT|wxALL, 5);
261
262 wxBoxSizer* horizontalSizer2 = new wxBoxSizer(wxHORIZONTAL);
263 WxStaticBoxSizer3->Add(horizontalSizer2, 0, wxGROW|wxALL, 5);
264
265 m_TtsExe = new wxTextCtrl(this,wxID_ANY,gv->pathToTts);
266 m_TtsExe->SetToolTip(wxT("Type the folder where your TTS exe is"));
267 m_TtsExe->SetHelpText(wxT("Type the folder where your TTS exe is"));
268 horizontalSizer2->Add(m_TtsExe,0,wxGROW | wxALL,5);
269
270 m_browseTtsBtn = new wxButton(this, ID_BROWSE_TTS_BTN, wxT("Browse"),
271 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
272 wxT("BrowseEncBtn"));
273 m_browseTtsBtn->SetToolTip(wxT("Browse for your Encoder Exe"));
274 m_browseTtsBtn->SetHelpText(wxT("Browse for your Encoder exe"));
275 horizontalSizer2->Add(m_browseTtsBtn,0,wxGROW | wxALL,5);
276
277 wxStaticText* tts_desc_opt = new wxStaticText( this, wxID_STATIC,
278 wxT("TTS Options"), wxDefaultPosition,
279 wxDefaultSize, 0 );
280 WxStaticBoxSizer3->Add(tts_desc_opt, 0, wxALIGN_LEFT|wxALL, 5);
281
282 m_TtsOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getTTsOpts(wxT("espeak")));
283 m_TtsOpts->SetToolTip(wxT("TTS Options"));
284 m_TtsOpts->SetHelpText(wxT("TTS Options"));
285 WxStaticBoxSizer3->Add(m_TtsOpts, 0, wxALIGN_LEFT|wxALL, 5);
286
287 m_OverwriteWave = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Wav"));
288 m_OverwriteWave->SetToolTip(wxT("Overwrite Wavefiles"));
289 m_OverwriteWave->SetHelpText(wxT("Overwrite Wavefiles"));
290 wxBoxSizer3->Add(m_OverwriteWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
291
292 m_OverwriteTalk = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Talk"));
293 m_OverwriteTalk->SetToolTip(wxT("Overwrite Talkfiles"));
294 m_OverwriteTalk->SetHelpText(wxT("Overwrite Talkfiles"));
295 wxBoxSizer3->Add(m_OverwriteTalk,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
296
297 m_RemoveWave = new wxCheckBox(this,wxID_ANY,wxT("Remove Wav"));
298 m_RemoveWave->SetToolTip(wxT("Remove Wavfiles"));
299 m_RemoveWave->SetHelpText(wxT("Remove Wavfiles"));
300 wxBoxSizer3->Add(m_RemoveWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
301
302 m_Recursive = new wxCheckBox(this,wxID_ANY,wxT("Recursive"));
303 m_Recursive->SetToolTip(wxT("Recursive"));
304 m_Recursive->SetHelpText(wxT("Recursive"));
305 wxBoxSizer3->Add(m_Recursive,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
306
307 m_StripExtensions = new wxCheckBox(this,wxID_ANY,wxT("Strip Extensions"));
308 m_StripExtensions->SetToolTip(wxT("Strip Extensions"));
309 m_StripExtensions->SetHelpText(wxT("Strip Extensions"));
310 wxBoxSizer3->Add(m_StripExtensions,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
311
312 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
313 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
314
315 // controls at the bottom
316 wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
317 topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5);
318
319}
320
321//init the local variables
322void talkInstallDlg::Init()
323{
324
325}
326
327// create the window
328bool talkInstallDlg::Create( wxWindow* parent,
329 wxWindowID id, const wxString& caption,
330 const wxPoint& pos, const wxSize& size, long style )
331{
332
333 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
334 return false;
335 CreateControls();
336 GetSizer()->Fit(this);
337 GetSizer()->SetSizeHints(this);
338 Centre();
339 return true;
340}
341
342void talkInstallDlg::OnBrowseEncBtn(wxCommandEvent& event)
343{
344 const wxString& temp = wxFileSelector(
345 wxT("Please select the location of your encoder"), wxT(""),
346 wxT(""),wxT(""),wxT("*.*"),0, this);
347
348 if (!temp.empty())
349 {
350 m_EncExe->SetValue(temp);
351 }
352}
353
354void talkInstallDlg::OnBrowseTtsBtn(wxCommandEvent& event)
355{
356 const wxString& temp = wxFileSelector(
357 wxT("Please select the location of your TTS engine"), wxT(""),
358 wxT(""),wxT(""),wxT("*.*"),0, this);
359
360
361 if (!temp.empty())
362 {
363 m_TtsExe->SetValue(temp);
364 }
365}
366
367// tranver data from the controls
368bool talkInstallDlg::TransferDataFromWindow()
369{
370 gv->curdestdir = m_devicepos->getDevicePos();
371 if(!wxDirExists(gv->curdestdir))
372 {
373 WARN_DIALOG(wxT("The Devicepostion is not valid"),
374 wxT("Select a Deviceposition"));
375 gv->curdestdir = wxT("");
376 return false;
377 }
378 m_talkCreator->setDir(gv->curdestdir);
379
380 gv->pathToEnc = m_EncExe->GetValue();
381 if(!wxFileExists(gv->pathToEnc))
382 {
383 WARN_DIALOG(wxT("The Encoder exe is not valid"),
384 wxT("Select an Encoder"));
385 gv->pathToEnc = wxT("");
386 return false;
387 }
388 m_talkCreator->setEncexe(gv->pathToEnc);
389
390 gv->pathToTts = m_TtsExe->GetValue();
391 if(!wxFileExists(gv->pathToTts))
392 {
393 WARN_DIALOG(wxT("The TTs exe is not valid"),
394 wxT("Select an TTS engine"));
395 gv->pathToTts = wxT("");
396 return false;
397 }
398 m_talkCreator->setTTSexe(gv->pathToTts);
399
400 m_talkCreator->setTTsType(m_Tts->GetValue());
401 m_talkCreator->setEncType(m_Enc->GetValue());
402
403
404 m_talkCreator->setOverwriteTalk(m_OverwriteWave->IsChecked());
405 m_talkCreator->setOverwriteWav(m_OverwriteTalk->IsChecked());
406 m_talkCreator->setRemoveWav(m_RemoveWave->IsChecked());
407 m_talkCreator->setRecursive(m_Recursive->IsChecked());
408 m_talkCreator->setStripExtensions(m_StripExtensions->IsChecked());
409
410 m_talkCreator->setEncOpts(m_EncOpts->GetValue());
411 m_talkCreator->setTTsOpts(m_TtsOpts->GetValue());
412
413 return true;
414}
415
416// tranver data to the controls
417bool talkInstallDlg::TransferDataToWindow()
418{
419 m_devicepos->setDefault();
420
421 m_OverwriteWave->SetValue(true);
422 m_OverwriteTalk->SetValue(true);
423 m_RemoveWave->SetValue(true);
424 m_Recursive->SetValue(true);
425 m_StripExtensions->SetValue(false);
426
427
428
429 return true;
430}
431
432////////////////////////////////////////////////
433//// Font Installation
434/////////////////////////////////////////////////
435
436
437IMPLEMENT_CLASS( fontInstallDlg, wxDialog )
438
439BEGIN_EVENT_TABLE( fontInstallDlg, wxDialog )
440
441END_EVENT_TABLE()
442
443fontInstallDlg::fontInstallDlg( )
444{
445 Init();
446}
447
448fontInstallDlg::fontInstallDlg( wxWindow* parent,
449 wxWindowID id, const wxString& caption,
450 const wxPoint& pos, const wxSize& size, long style )
451{
452 Init();
453 Create(parent, id, caption, pos, size, style);
454}
455
456void fontInstallDlg::CreateControls()
457{
458 // A top-level sizer
459 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
460 this->SetSizer(topSizer);
461
462 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
463 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
464
465 // bitmap
466 wxBitmap sidebmp(wizard_xpm);
467
468 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
469 sideimage->SetBitmap(sidebmp);
470 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
471
472 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
473 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
474
475 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
476 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
477
478
479 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
480 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
481
482 // controls at the bottom
483 wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
484 topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5);
485
486}
487
488//init the local variables
489void fontInstallDlg::Init()
490{
491
492}
493
494// create the window
495bool fontInstallDlg::Create( wxWindow* parent,
496 wxWindowID id, const wxString& caption,
497 const wxPoint& pos, const wxSize& size, long style )
498{
499
500 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
501 return false;
502 CreateControls();
503 GetSizer()->Fit(this);
504 GetSizer()->SetSizeHints(this);
505 Centre();
506 return true;
507}
508
509
510// tranver data from the controls
511bool fontInstallDlg::TransferDataFromWindow()
512{
513 gv->curdestdir = m_devicepos->getDevicePos();
514 if(!wxDirExists(gv->curdestdir))
515 {
516 WARN_DIALOG(wxT("The Devicepostion is not valid"),
517 wxT("Select a Deviceposition"));
518 gv->curdestdir = wxT("");
519 return false;
520 }
521
522 return true;
523}
524
525// tranver data to the controls
526bool fontInstallDlg::TransferDataToWindow()
527{
528 m_devicepos->setDefault();
529 return true;
530}
531
532////////////////////////////////////////////////
533//// Rockbox DeInstallation
534/////////////////////////////////////////////////
535
536IMPLEMENT_CLASS( rockboxDeInstallDlg, wxDialog )
537
538BEGIN_EVENT_TABLE( rockboxDeInstallDlg, wxDialog )
539
540END_EVENT_TABLE()
541
542rockboxDeInstallDlg::rockboxDeInstallDlg( )
543{
544 Init();
545}
546
547rockboxDeInstallDlg::rockboxDeInstallDlg( wxWindow* parent,
548 wxWindowID id, const wxString& caption,
549 const wxPoint& pos, const wxSize& size, long style )
550{
551 Init();
552 Create(parent, id, caption, pos, size, style);
553}
554
555void rockboxDeInstallDlg::CreateControls()
556{
557 // A top-level sizer
558 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
559 this->SetSizer(topSizer);
560
561 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
562 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
563
564 // bitmap
565 wxBitmap sidebmp(wizard_xpm);
566
567 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
568 sideimage->SetBitmap(sidebmp);
569 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
570
571 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
572 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
573
574 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
575 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
576
577 // Full deinstallation ?
578 wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
579 wxT("Rockbox Utility normally uninstalls Rockbox using an uninstall\n"
580 "file created during installation. This means that when Rockbox is\n"
581 "uninstalled all your configuration files are preserved. However,\n"
582 "you can also perform a full uninstall, which will completely\n"
583 "remove all traces of Rockbox from your system, and can be used\n"
584 "even if Rockbox was previously installed manually."));
585 wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
586
587 wxCheckBox* FullCheckBox = new wxCheckBox(this, ID_FULL_CHCKBX,
588 wxT("Perform a full uninstall"));
589 wxBoxSizer3->Add(FullCheckBox, 0, wxALL, 5);
590
591 // controls at the bottom
592 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
593 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
594
595}
596
597//init the local variables
598void rockboxDeInstallDlg::Init()
599{
600
601}
602
603// create the window
604bool rockboxDeInstallDlg::Create( wxWindow* parent,
605 wxWindowID id, const wxString& caption,
606 const wxPoint& pos, const wxSize& size, long style )
607{
608 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
609 return false;
610 CreateControls();
611 GetSizer()->Fit(this);
612 GetSizer()->SetSizeHints(this);
613 Centre();
614 return true;
615}
616
617
618// tranver data from the controls
619bool rockboxDeInstallDlg::TransferDataFromWindow()
620{
621
622 gv->curdestdir = m_devicepos->getDevicePos();
623 if(!wxDirExists(gv->curdestdir))
624 {
625 WARN_DIALOG(wxT("The Devicepostion is not valid"),
626 wxT("Select a Deviceposition"));
627 gv->curdestdir = wxT("");
628 return false;
629 }
630
631 wxCheckBox* fullchkbx = (wxCheckBox*) FindWindow(ID_FULL_CHCKBX);
632 gv->curisfull = fullchkbx->IsChecked();
633
634 return true;
635}
636
637// tranver data to the controls
638bool rockboxDeInstallDlg::TransferDataToWindow()
639{
640 m_devicepos->setDefault();
641 return true;
642}
643
644////////////////////////////////////////////////
645//// Themes Installation
646/////////////////////////////////////////////////
647
648IMPLEMENT_CLASS( themesInstallDlg, wxDialog )
649
650BEGIN_EVENT_TABLE( themesInstallDlg, wxDialog )
651
652END_EVENT_TABLE()
653
654themesInstallDlg::themesInstallDlg( )
655{
656
657}
658
659themesInstallDlg::themesInstallDlg( wxWindow* parent,
660 wxWindowID id, const wxString& caption,
661 const wxPoint& pos, const wxSize& size, long style )
662{
663 Create(parent, id, caption, pos, size, style);
664}
665
666void themesInstallDlg::CreateControls()
667{
668 // A top-level sizer
669 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
670 this->SetSizer(topSizer);
671
672 wxBoxSizer* topHoriSizer = new wxBoxSizer(wxHORIZONTAL);
673 topSizer->Add(topHoriSizer, 0, wxALIGN_LEFT|wxALL, 5);
674
675 // bitmap
676 wxBitmap sidebmp(wizard_xpm);
677
678 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
679 sideimage->SetBitmap(sidebmp);
680 topHoriSizer->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
681
682 wxBoxSizer* mainVertiSizer = new wxBoxSizer(wxVERTICAL);
683 topHoriSizer->Add(mainVertiSizer, 0, wxGROW|wxALL, 5);
684
685 wxBoxSizer* wxBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
686 mainVertiSizer->Add(wxBoxSizer4, 0, wxGROW|wxALL, 0);
687
688 wxBoxSizer* wxBoxSizer5 = new wxBoxSizer(wxVERTICAL);
689 wxBoxSizer4->Add(wxBoxSizer5, 0, wxGROW|wxALL, 0);
690
691 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
692 wxBoxSizer5->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
693
694 m_theme = new ThemeCtrl(this,ID_THEME);
695 wxBoxSizer5->Add(m_theme, 0, wxALIGN_LEFT|wxALL, 5);
696
697 // controls at the bottom
698 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
699 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
700
701
702}
703
704
705// create the window
706bool themesInstallDlg::Create( wxWindow* parent,
707 wxWindowID id, const wxString& caption,
708 const wxPoint& pos, const wxSize& size, long style )
709{
710
711 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
712 return false;
713 CreateControls();
714 GetSizer()->Fit(this);
715 GetSizer()->SetSizeHints(this);
716 Centre();
717 return true;
718}
719
720
721// tranver data from the controls
722bool themesInstallDlg::TransferDataFromWindow()
723{
724
725 gv->curdestdir = m_devicepos->getDevicePos();
726 if(!wxDirExists(gv->curdestdir))
727 {
728 WARN_DIALOG(wxT("The Devicepostion is not valid"),
729 wxT("Select a Deviceposition"));
730 gv->curdestdir = wxT("");
731 return false;
732 }
733
734 gv->themesToInstall.Clear();
735 gv->themesToInstall = m_theme->getThemesToInstall();
736
737 if(gv->themesToInstall.GetCount() == 0)
738 {
739 WARN_DIALOG(wxT("You have not selected a Theme to Install"), wxT("Select a Theme"));
740 return false;
741 }
742
743 return true;
744}
745
746// tranver data to the controls
747bool themesInstallDlg::TransferDataToWindow()
748{
749 if(gv->curplat == wxT(""))
750 {
751 WARN_DIALOG(wxT("You have not selected a audio device"),
752 wxT("Select a Device"));
753 return false;
754 }
755
756 m_devicepos->setDefault();
757 m_theme->setDevice(gv->curplat);
758 return true;
759}
760////////////////////////////////////////////////
761//// Rockbox Installation
762/////////////////////////////////////////////////
763
764IMPLEMENT_CLASS( rockboxInstallDlg, wxDialog )
765
766BEGIN_EVENT_TABLE( rockboxInstallDlg, wxDialog )
767 EVT_RADIOBOX(ID_BUILD_BOX, rockboxInstallDlg::OnBuildBox)
768END_EVENT_TABLE()
769
770rockboxInstallDlg::rockboxInstallDlg( )
771{
772}
773
774rockboxInstallDlg::rockboxInstallDlg( wxWindow* parent,
775 wxWindowID id, const wxString& caption,
776 const wxPoint& pos, const wxSize& size, long style )
777{
778 Create(parent, id, caption, pos, size, style);
779}
780
781void rockboxInstallDlg::CreateControls()
782{
783 // A top-level sizer
784 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
785 this->SetSizer(topSizer);
786
787 wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
788 topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
789
790 // bitmap
791 wxBitmap sidebmp(wizard_xpm);
792
793 ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
794 sideimage->SetBitmap(sidebmp);
795 wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
796
797 wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
798 wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
799
800 m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
801 wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
802
803 // Build information
804 wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
805 wxT("Please select the Rockbox version you would like "
806 "to install on your audio\ndevice:"));
807 wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
808
809 wxArrayString array;
810 array.Add(wxT("Rockbox stable version (") + gv->last_release + wxT(")"));
811 array.Add(wxT("Archived Build"));
812 array.Add(wxT("Current Build "));
813
814 wxRadioBox* BuildRadioBox = new wxRadioBox(this, ID_BUILD_BOX, wxT("Version"),
815 wxDefaultPosition, wxDefaultSize, array, 0, wxRA_SPECIFY_ROWS);
816 wxBoxSizer3->Add(BuildRadioBox, 0, wxGROW | wxALL, 5);
817
818 wxStaticBox* WxStaticBox1 = new wxStaticBox(this, wxID_ANY, wxT("Details:"));
819 wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBox1,
820 wxVERTICAL);
821 wxStaticText* DetailText = new wxStaticText(this, ID_DETAIL_TXT, wxT(""));
822 wxBoxSizer3->Add(WxStaticBoxSizer2, 1, wxGROW | wxALL, 5);
823 WxStaticBoxSizer2->Add(DetailText, 1, wxGROW | wxALL, 5);
824
825 wxStaticText* WxStaticText2 = new wxStaticText(this, wxID_ANY,
826 wxT("Rockbox Utility stores copies of Rockbox it has downloaded on the\n"
827 "local hard disk to save network traffic. If your local copy is\n"
828 "no longer working, tick this box to download a fresh copy.") );
829 wxBoxSizer3->Add(WxStaticText2, 0 , wxALL, 5);
830
831 wxCheckBox* NoCacheCheckBox = new wxCheckBox(this, ID_NOCACHE_CHCKBX,
832 wxT("Don't use locally cached copies of Rockbox") );
833 wxBoxSizer3->Add(NoCacheCheckBox, 0, wxALL, 5);
834 // controls at the bottom
835 OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
836 topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
837
838}
839
840// create the window
841bool rockboxInstallDlg::Create( wxWindow* parent,
842 wxWindowID id, const wxString& caption,
843 const wxPoint& pos, const wxSize& size, long style )
844{
845
846 if (!wxDialog::Create( parent, id, caption, pos, size, style ))
847 return false;
848 CreateControls();
849 GetSizer()->Fit(this);
850 GetSizer()->SetSizeHints(this);
851 Centre();
852 return true;
853}
854
855void rockboxInstallDlg::OnBuildBox(wxCommandEvent& event)
856{
857 wxString str;
858 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
859 wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
860 wxStaticText* DetailText = (wxStaticText*)FindWindow(ID_DETAIL_TXT);
861
862 switch(BuildRadioBox->GetSelection() )
863 {
864 case BUILD_RELEASE:
865 str = _("This is the last released version of Rockbox, and is the\n"
866 "recommended version to install.");
867 NoCacheCheckBox->Enable();
868 break;
869 case BUILD_DAILY:
870 str = _("These are automatically built each day from the current\n"
871 "development source code. This generally has more features\n"
872 "than the last release but may be much less stable. Features\n"
873 "may change regularly.");
874 NoCacheCheckBox->Enable();
875 break;
876 case BUILD_BLEEDING:
877 str = _("This is the absolute up to the minute Rockbox built after\n"
878 "the last change was made.\n\n"
879 "Note: This option will always download a fresh copy from the\n"
880 "web server.\n");
881 NoCacheCheckBox->Enable(false);
882 break;
883 default:
884 break;
885 }
886
887 DetailText->SetLabel(str);
888
889 this->GetSizer()->Layout();
890 this->GetSizer()->Fit(this);
891 this->GetSizer()->SetSizeHints(this);
892 Refresh();
893}
894
895
896// tranver data from the controls
897bool rockboxInstallDlg::TransferDataFromWindow()
898{
899 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
900 wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
901
902 gv->curdestdir = m_devicepos->getDevicePos();
903 if(!wxDirExists(gv->curdestdir))
904 {
905 WARN_DIALOG(wxT("The Devicepostion is not valid"),
906 wxT("Select a Deviceposition"));
907 gv->curdestdir = wxT("");
908 return false;
909 }
910
911 gv->curbuild = BuildRadioBox->GetSelection();
912 gv->nocache = (gv->curbuild == BUILD_BLEEDING) ? true :
913 NoCacheCheckBox->IsChecked();
914
915 return true;
916}
917
918// tranver data to the controls
919bool rockboxInstallDlg::TransferDataToWindow()
920{
921 m_devicepos->setDefault();
922
923 if(gv->curplat == wxT(""))
924 {
925 WARN_DIALOG(wxT("You have not selected a audio device"),
926 wxT("Select a Device"));
927 return false;
928 }
929
930 wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
931
932 int index =gv->plat_id.Index(gv->curplat);
933
934 wxCommandEvent updateradiobox(wxEVT_COMMAND_RADIOBOX_SELECTED,
935 ID_BUILD_BOX);
936
937 if (gv->plat_released[index] )
938 {
939 BuildRadioBox->Enable(BUILD_RELEASE, true);
940 BuildRadioBox->SetSelection(BUILD_RELEASE);
941 } else {
942 BuildRadioBox->Enable(BUILD_RELEASE, false);
943 BuildRadioBox->SetSelection(BUILD_BLEEDING);
944
945 }
946 wxPostEvent(this, updateradiobox);
947 return true;
948}
diff --git a/rbutil/install_dialogs.h b/rbutil/install_dialogs.h
deleted file mode 100644
index 87c557a26f..0000000000
--- a/rbutil/install_dialogs.h
+++ /dev/null
@@ -1,261 +0,0 @@
1#ifndef INSTALL_DIALOGS_H_INCLUDED
2#define INSTALL_DIALOGS_H_INCLUDED
3
4#include "rbutil.h"
5#include "talkfile.h"
6
7#include "rbutilCtrls.h"
8class bootloaderInstallDlg : public wxDialog
9{
10 DECLARE_CLASS( bootloaderInstallDlg )
11 DECLARE_EVENT_TABLE()
12public:
13enum {
14 ID_DEVICEPOS = 1002,
15 ID_FIRMWARE = 1003,
16 }; //End of Enum
17public:
18 bootloaderInstallDlg( );
19 bootloaderInstallDlg( wxWindow* parent,
20 wxWindowID id = wxID_ANY,
21 const wxString& caption = wxT("Bootloader Installation"),
22 const wxPoint& pos = wxDefaultPosition,
23 const wxSize& size = wxDefaultSize,
24 long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
25 // Member initialization
26 void Init();
27 //Creation
28 bool Create( wxWindow* parent,
29 wxWindowID id = wxID_ANY,
30 const wxString& caption = wxT("Bootloader Installation"),
31 const wxPoint& pos = wxDefaultPosition,
32 const wxSize& size = wxDefaultSize,
33 long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
34 // Creates the controls and sizers
35 void CreateControls();
36
37 bool TransferDataFromWindow();
38 bool TransferDataToWindow();
39
40private:
41
42 DevicePositionCtrl* m_devicepos;
43 FirmwarePositionCtrl* m_firmwarepos;
44
45
46};
47
48class talkInstallDlg : public wxDialog
49{
50 DECLARE_CLASS( talkInstallDlg )
51 DECLARE_EVENT_TABLE()
52public:
53enum {
54 ID_DEVICEPOS = 1002,
55 ID_BROWSE_ENC_BTN = 1003,
56 ID_BROWSE_TTS_BTN = 1004,
57 ID_TTS_CBX = 1005,
58 ID_ENC_CBX = 1006,
59 }; //End of Enum
60public:
61 talkInstallDlg(TalkFileCreator* talkcreator);
62 talkInstallDlg(TalkFileCreator* talkcreator, wxWindow* parent,
63 wxWindowID id = wxID_ANY,
64 const wxString& caption = wxT("Talk file creation"),
65 const wxPoint& pos = wxDefaultPosition,
66 const wxSize& size = wxDefaultSize,
67 long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
68 /// Member initialization
69 void Init();
70 /// Creation
71 bool Create( wxWindow* parent,
72 wxWindowID id = wxID_ANY,
73 const wxString& caption = wxT("Talk file creation"),
74 const wxPoint& pos = wxDefaultPosition,
75 const wxSize& size = wxDefaultSize,
76 long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
77 /// Creates the controls and sizers
78 void CreateControls();
79
80 void OnBrowseEncBtn(wxCommandEvent& event);
81 void OnBrowseTtsBtn(wxCommandEvent& event);
82
83 bool TransferDataFromWindow();
84 bool TransferDataToWindow();
85
86private:
87 TalkFileCreator* m_talkCreator;
88
89 DevicePositionCtrl* m_devicepos;
90
91 wxTextCtrl* m_EncExe;
92 wxButton* m_browseEncBtn;
93 wxTextCtrl* m_EncOpts;
94 wxComboBox* m_Enc;
95
96 wxTextCtrl* m_TtsExe;
97 wxButton* m_browseTtsBtn;
98 wxTextCtrl* m_TtsOpts;
99 wxComboBox* m_Tts;
100
101
102 wxCheckBox* m_OverwriteWave;
103 wxCheckBox* m_OverwriteTalk;
104 wxCheckBox* m_RemoveWave;
105 wxCheckBox* m_Recursive;
106 wxCheckBox* m_StripExtensions;
107
108};
109
110
111class fontInstallDlg : public wxDialog
112{
113 DECLARE_CLASS( fontInstallDlg )
114 DECLARE_EVENT_TABLE()
115public:
116enum {
117 ID_DEVICEPOS = 1002,
118 }; //End of Enum
119public:
120 fontInstallDlg( );
121 fontInstallDlg( wxWindow* parent,
122 wxWindowID id = wxID_ANY,
123 const wxString& caption = wxT("Font Installation"),
124 const wxPoint& pos = wxDefaultPosition,
125 const wxSize& size = wxDefaultSize,
126 long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
127 /// Member initialization
128 void Init();
129 /// Creation
130 bool Create( wxWindow* parent,
131 wxWindowID id = wxID_ANY,
132 const wxString& caption = wxT("Font Installation"),
133 const wxPoint& pos = wxDefaultPosition,
134 const wxSize& size = wxDefaultSize,
135 long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
136 /// Creates the controls and sizers
137 void CreateControls();
138
139 bool TransferDataFromWindow();
140 bool TransferDataToWindow();
141
142private:
143 DevicePositionCtrl* m_devicepos;
144};
145
146
147class rockboxDeInstallDlg : public wxDialog
148{
149 DECLARE_CLASS( rockboxDeInstallDlg )
150 DECLARE_EVENT_TABLE()
151public:
152enum {
153 ID_DEVICEPOS = 1002,
154 ID_FULL_CHCKBX = 1003,
155 }; //End of Enum
156public:
157 rockboxDeInstallDlg( );
158 rockboxDeInstallDlg( wxWindow* parent,
159 wxWindowID id = wxID_ANY,
160 const wxString& caption = wxT("Rockbox Deinstallation"),
161 const wxPoint& pos = wxDefaultPosition,
162 const wxSize& size = wxDefaultSize,
163 long style =wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
164 /// Member initialization
165 void Init();
166 /// Creation
167 bool Create( wxWindow* parent,
168 wxWindowID id = wxID_ANY,
169 const wxString& caption = wxT("Rockbox Deinstallation"),
170 const wxPoint& pos = wxDefaultPosition,
171 const wxSize& size = wxDefaultSize,
172 long style =wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
173 /// Creates the controls and sizers
174 void CreateControls();
175
176 bool TransferDataFromWindow();
177 bool TransferDataToWindow();
178
179private:
180 DevicePositionCtrl* m_devicepos;
181};
182
183class themesInstallDlg : public wxDialog
184{
185 DECLARE_CLASS( themesInstallDlg )
186 DECLARE_EVENT_TABLE()
187public:
188enum {
189 ID_DEVICE = 1001,
190 ID_DEVICEPOS = 1002,
191 ID_THEME = 1006,
192 }; //End of Enum
193public:
194 themesInstallDlg( );
195 themesInstallDlg( wxWindow* parent,
196 wxWindowID id = wxID_ANY,
197 const wxString& caption = wxT("Themes Installation"),
198 const wxPoint& pos = wxDefaultPosition,
199 const wxSize& size = wxDefaultSize,
200 long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
201 // Creation
202 bool Create( wxWindow* parent,
203 wxWindowID id = wxID_ANY,
204 const wxString& caption = wxT("Themes Installation"),
205 const wxPoint& pos = wxDefaultPosition,
206 const wxSize& size = wxDefaultSize,
207 long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
208 // Creates the controls and sizers
209 void CreateControls();
210
211 bool TransferDataFromWindow();
212 bool TransferDataToWindow();
213
214private:
215 wxString currentPreview;
216 DevicePositionCtrl* m_devicepos;
217 ThemeCtrl* m_theme;
218
219};
220
221class rockboxInstallDlg : public wxDialog
222{
223 DECLARE_CLASS( rockboxInstallDlg )
224 DECLARE_EVENT_TABLE()
225public:
226enum {
227 ID_DEVICEPOS = 1002,
228 ID_BUILD_BOX = 1006,
229 ID_DEVICE_POS_CTRL = 1007,
230 ID_DETAIL_TXT = 1008,
231 ID_NOCACHE_CHCKBX =1009,
232
233 }; //End of Enum
234public:
235 rockboxInstallDlg( );
236 rockboxInstallDlg( wxWindow* parent,
237 wxWindowID id = wxID_ANY,
238 const wxString& caption = wxT("Rockbox Installation"),
239 const wxPoint& pos = wxDefaultPosition,
240 const wxSize& size = wxDefaultSize,
241 long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
242 // Creation
243 bool Create( wxWindow* parent,
244 wxWindowID id = wxID_ANY,
245 const wxString& caption = wxT("Rockbox Installation"),
246 const wxPoint& pos = wxDefaultPosition,
247 const wxSize& size = wxDefaultSize,
248 long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
249 // Creates the controls and sizers
250 void CreateControls();
251
252 void OnBuildBox(wxCommandEvent& event);
253
254 bool TransferDataFromWindow();
255 bool TransferDataToWindow();
256
257private:
258 DevicePositionCtrl* m_devicepos;
259};
260
261#endif // INSTALL_DIALOGS_H_INCLUDED
diff --git a/rbutil/installlog.cpp b/rbutil/installlog.cpp
deleted file mode 100644
index 7f6fa999f6..0000000000
--- a/rbutil/installlog.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: installlog.cpp
10 *
11 * Copyright (C) 2006 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "installlog.h"
22#include "rbutil.h"
23
24InstallLog::InstallLog(wxString logname, bool CreateLog)
25{
26 wxString buf;
27 dirtyflag = true;
28
29 if (! CreateLog && ! wxFileExists(logname) ) return;
30
31 logfile = new wxFileConfig(wxEmptyString, wxEmptyString, logname);
32
33
34 if (!logfile)
35 {
36 wxLogWarning(_("Failed to create install log file: ") + logname);
37 return;
38 }
39
40 logfile->SetPath(wxT("/InstallLog"));
41 if (logfile->Exists(wxT("Version")) &&
42 logfile->Read(wxT("Version"), 0l) != LOGFILE_VERSION )
43 {
44 wxLogWarning(_("Logfile version mismatch: ") + logname);
45 delete logfile;
46 return;
47 }
48
49 logfile->Write(wxT("Version"), LOGFILE_VERSION);
50 dirtyflag = false;
51}
52
53InstallLog::~InstallLog()
54{
55 if (dirtyflag) return;
56
57 delete logfile;
58}
59
60unsigned int InstallLog::WriteFile(wxString filepath, bool isDir)
61{
62 wxString key, buf;
63 long installcount = 0;
64
65 if (dirtyflag) return true;
66
67 filepath.Replace(PATH_SEP, wxT("/") );
68
69 if (filepath.GetChar(0) == '/')
70 filepath = filepath.Right(filepath.Len() - 1);
71
72 logfile->SetPath(wxT("/FilePaths"));
73 installcount = logfile->Read(filepath, 0l);
74
75 if (isDir)
76 {
77 filepath.Append(wxT("/" DIRECTORY_KLUDGE) ); // Needed for empty dirs
78 }
79
80 logfile->Write(filepath, ++installcount);
81
82 return false;
83}
84
85unsigned int InstallLog::WriteFile(wxArrayString filepaths)
86{
87 unsigned long i;
88 unsigned int finalrc = false;
89 wxString thisone;
90
91 if (dirtyflag) return true;
92
93 for (i = 0; i < filepaths.GetCount(); i++);
94 {
95 if ( WriteFile(filepaths[i]) )
96 {
97 finalrc++;
98 }
99 }
100
101 return finalrc;
102}
103
104wxArrayString* InstallLog::GetInstalledFiles()
105{
106 wxString curdir = wxT("");
107
108 if (dirtyflag) return NULL;
109 workingAS.Clear();
110
111 EnumerateCurDir(wxT(""));
112
113 wxArrayString* out = new wxArrayString(workingAS);
114 return out;
115}
116
117void InstallLog::EnumerateCurDir(wxString curdir)
118{
119 bool contflag;
120 wxString curname, buf, buf2, pathcache;
121 long dummy;
122
123 buf = wxT("/FilePaths/") + curdir;
124 pathcache = logfile->GetPath();
125 logfile->SetPath(buf);
126
127 contflag = logfile->GetFirstGroup(curname, dummy);
128 while (contflag)
129 {
130 buf = curdir + wxT("/") + curname;
131 buf2 = buf; buf2.Replace(wxT("/"), PATH_SEP);
132 workingAS.Add(buf2);
133 EnumerateCurDir(buf);
134 contflag = logfile->GetNextGroup(curname, dummy);
135 }
136
137 contflag = logfile->GetFirstEntry(curname, dummy);
138 while (contflag)
139 {
140 if (curname != wxT(DIRECTORY_KLUDGE) )
141 {
142 buf = curdir + wxT("" PATH_SEP) + curname;
143 workingAS.Add(buf);
144 }
145 contflag = logfile->GetNextEntry(curname, dummy);
146 }
147
148 logfile->SetPath(pathcache);
149}
150
diff --git a/rbutil/installlog.h b/rbutil/installlog.h
deleted file mode 100644
index cb85e08359..0000000000
--- a/rbutil/installlog.h
+++ /dev/null
@@ -1,61 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: installlog.h
10 *
11 * Copyright (C) 2006 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22#ifndef INSTALLLOG_H_INCLUDED
23#define INSTALLLOG_H_INCLUDED
24
25#include <wx/wxprec.h>
26#ifdef __BORLANDC__
27 #pragma hdrstop
28#endif
29#ifndef WX_PRECOMP
30 #include <wx/wx.h>
31#endif
32
33#include <wx/confbase.h>
34#include <wx/fileconf.h>
35
36#define LOGFILE_VERSION 1
37#define DIRECTORY_KLUDGE "_DIRECTORY_MARKER_RECORD_KLUDGE_"
38class InstallLog
39{
40 // Class variables
41 wxFileConfig* logfile;
42
43 // Methods
44 public:
45 InstallLog(wxString logname, bool CreateLog = true);
46 ~InstallLog();
47 unsigned int WriteFile(wxString filepath, bool isDir = false);
48 unsigned int WriteFile(wxArrayString filepaths);
49 wxArrayString* GetInstalledFiles();
50
51 private:
52 bool dirtyflag;
53 wxArrayString workingAS;
54// long dummy;
55
56 private:
57 void EnumerateCurDir(wxString curdir);
58}; // InstallLog
59
60
61#endif // INSTALLLOG_H_INCLUDED
diff --git a/rbutil/irivertools.cpp b/rbutil/irivertools.cpp
deleted file mode 100755
index 9b7cd5a4f3..0000000000
--- a/rbutil/irivertools.cpp
+++ /dev/null
@@ -1,604 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: irivertools.cpp
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "irivertools.h"
22
23
24const unsigned char munge[] = {
25 0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84,
26 0x4d, 0x73, 0x74, 0x61
27};
28
29const unsigned char header_modify[] = "* IHPFIRM-DECODED ";
30
31const char * const models[] = { "iHP-100", "iHP-120/iHP-140", "H300 series",
32 NULL };
33
34/* aligns with models array; expected min firmware size */
35const unsigned int firmware_minsize[] = { 0x100000, 0x100000, 0x200000 };
36/* aligns with models array; expected max firmware size */
37const unsigned int firmware_maxsize[] = { 0x200000, 0x200000, 0x400000 };
38
39const unsigned char header[][16] = {
40 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
41 { 0x20, 0x03, 0x08, 0x27, 0x24, 0x00, 0x02, 0x30, 0x19, 0x17, 0x65, 0x73,
42 0x85, 0x32, 0x83, 0x22 },
43 { 0x20, 0x04, 0x03, 0x27, 0x20, 0x50, 0x01, 0x70, 0x80, 0x30, 0x80, 0x06,
44 0x30, 0x19, 0x17, 0x65 }
45};
46
47/* begin mkboot.c excerpt */
48unsigned char image[0x400000 + 0x220 + 0x400000/0x200];
49
50bool mkboot(wxString infile, wxString outfile,wxString bootloader,int origin)
51{
52 wxString err;
53 int i;
54 int len,bllen;
55 int actual_length, total_length, binary_length, num_chksums;
56
57 memset(image, 0xff, sizeof(image));
58
59 /* First, read the iriver original firmware into the image */
60 wxFile f;
61 if(!f.Open(infile))
62 {
63 ERR_DIALOG(wxT("Could not open: ") + infile, wxT("mkboot"));
64 return false;
65 }
66 i = f.Read(image,16);
67 if(i < 16) {
68 ERR_DIALOG(wxT("reading header failed"), wxT("mkboot"));
69 return false;
70 }
71
72 /* This is the length of the binary image without the scrambling
73 overhead (but including the ESTFBINR header) */
74 binary_length = image[4] + (image[5] << 8) +
75 (image[6] << 16) + (image[7] << 24);
76
77 /* Read the rest of the binary data, but not the checksum block */
78 len = binary_length+0x200-16;
79 i = f.Read(image+16, len);
80 if(i < len) {
81 ERR_DIALOG(wxT("reading firmware failed"),wxT("mkboot"));
82 return false;
83 }
84
85 f.Close();
86 /* Now, read the boot loader into the image */
87 if(!f.Open(bootloader))
88 {
89 ERR_DIALOG(wxT("Could not open: ") + bootloader, wxT("mkboot"));
90 return false;
91 }
92
93 bllen = f.Length();
94
95 i = f.Read(image+0x220 + origin, bllen);
96 if(i < bllen) {
97 ERR_DIALOG(wxT("reading bootloader failed"), wxT("mkboot"));
98 return false;
99 }
100
101 f.Close();
102
103 if(!f.Open(outfile,wxFile::write))
104 {
105 ERR_DIALOG(wxT("Could not open: ") + outfile, wxT("mkboot"));
106 return false;
107 }
108
109 /* Patch the reset vector to start the boot loader */
110 image[0x220 + 4] = image[origin + 0x220 + 4];
111 image[0x220 + 5] = image[origin + 0x220 + 5];
112 image[0x220 + 6] = image[origin + 0x220 + 6];
113 image[0x220 + 7] = image[origin + 0x220 + 7];
114
115 /* This is the actual length of the binary, excluding all headers */
116 actual_length = origin + bllen;
117
118 /* Patch the ESTFBINR header */
119 image[0x20c] = (actual_length >> 24) & 0xff;
120 image[0x20d] = (actual_length >> 16) & 0xff;
121 image[0x20e] = (actual_length >> 8) & 0xff;
122 image[0x20f] = actual_length & 0xff;
123
124 image[0x21c] = (actual_length >> 24) & 0xff;
125 image[0x21d] = (actual_length >> 16) & 0xff;
126 image[0x21e] = (actual_length >> 8) & 0xff;
127 image[0x21f] = actual_length & 0xff;
128
129 /* This is the length of the binary, including the ESTFBINR header and
130 rounded up to the nearest 0x200 boundary */
131 binary_length = (actual_length + 0x20 + 0x1ff) & 0xfffffe00;
132
133 /* The number of checksums, i.e number of 0x200 byte blocks */
134 num_chksums = binary_length / 0x200;
135
136 /* The total file length, including all headers and checksums */
137 total_length = binary_length + num_chksums + 0x200;
138
139 /* Patch the scrambler header with the new length info */
140 image[0] = total_length & 0xff;
141 image[1] = (total_length >> 8) & 0xff;
142 image[2] = (total_length >> 16) & 0xff;
143 image[3] = (total_length >> 24) & 0xff;
144
145 image[4] = binary_length & 0xff;
146 image[5] = (binary_length >> 8) & 0xff;
147 image[6] = (binary_length >> 16) & 0xff;
148 image[7] = (binary_length >> 24) & 0xff;
149
150 image[8] = num_chksums & 0xff;
151 image[9] = (num_chksums >> 8) & 0xff;
152 image[10] = (num_chksums >> 16) & 0xff;
153 image[11] = (num_chksums >> 24) & 0xff;
154
155 i = f.Write(image,total_length);
156 if(i < total_length) {
157 ERR_DIALOG(wxT("writing bootloader failed"), wxT("mkboot"));
158 return false;
159 }
160
161 f.Close();
162
163 return true;
164}
165
166/* end mkboot.c excerpt */
167
168
169int intable(char *md5, struct sumpairs *table, int len)
170{
171 int i;
172 for (i = 0; i < len; i++) {
173 if (strncmp(md5, table[i].unpatched, 32) == 0) {
174 return i;
175 }
176 }
177 return -1;
178}
179
180
181
182
183static int testheader( const unsigned char * const data )
184{
185 const unsigned char * const d = data+16;
186 const char * const * m = models;
187 int index = 0;
188 while( *m )
189 {
190 if( memcmp( header[ index ], d, 16 ) == 0 )
191 return index;
192 index++;
193 m++;
194 };
195 return -1;
196};
197
198static void modifyheader( unsigned char * data )
199{
200 const unsigned char * h = header_modify;
201 int i;
202 for( i=0; i<512; i++ )
203 {
204 if( *h == '\0' )
205 h = header_modify;
206 *data++ ^= *h++;
207 };
208};
209
210int iriver_decode(wxString infile_name, wxString outfile_name, unsigned int modify,
211 enum striptype stripmode )
212{
213 wxString err;
214 wxFile infile;
215 wxFile outfile;
216 int i = -1;
217 unsigned char headerdata[512];
218 unsigned long dwLength1, dwLength2, dwLength3, fp = 0;
219 unsigned char blockdata[16+16];
220 unsigned char out[16];
221 unsigned char newmunge;
222 signed long lenread;
223 int s = 0;
224 unsigned char * pChecksums, * ppChecksums = 0;
225 unsigned char ck;
226
227 if(!infile.Open(infile_name))
228 {
229 ERR_DIALOG(wxT("Could not open: ") + infile_name, wxT("iriver_decode"));
230 return -1;
231 }
232 if(!outfile.Open(outfile_name,wxFile::write))
233 {
234 ERR_DIALOG(wxT("Could not open: ") + outfile_name,
235 wxT("iriver_decode"));
236 return -1;
237 }
238 lenread = infile.Read( headerdata, 512);
239 if( lenread != 512 )
240 {
241 ERR_DIALOG(wxT("This doesn't look like a valid encrypted iHP "
242 "firmware - reason: header length\n"),wxT("iriver_decode"));
243
244 infile.Close();
245 outfile.Close();
246 return -1;
247 };
248
249 i = testheader( headerdata );
250 if( i == -1 )
251 {
252 ERR_DIALOG( wxT( "This firmware is for an unknown model, or is not"
253 " a valid encrypted iHP firmware\n" ),wxT("iriver_decode"));
254 infile.Close();
255 outfile.Close();
256 return -1;
257 };
258 fprintf( stderr, "Model %s\n", models[ i ] );
259
260 dwLength1 = headerdata[0] | (headerdata[1]<<8) |
261 (headerdata[2]<<16) | (headerdata[3]<<24);
262 dwLength2 = headerdata[4] | (headerdata[5]<<8) |
263 (headerdata[6]<<16) | (headerdata[7]<<24);
264 dwLength3 = headerdata[8] | (headerdata[9]<<8) |
265 (headerdata[10]<<16) | (headerdata[11]<<24);
266
267 if( dwLength1 < firmware_minsize[ i ] ||
268 dwLength1 > firmware_maxsize[ i ] ||
269 dwLength2 < firmware_minsize[ i ] ||
270 dwLength2 > dwLength1 ||
271 dwLength3 > dwLength1 ||
272 dwLength2>>9 != dwLength3 ||
273 dwLength2+dwLength3+512 != dwLength1 )
274 {
275 ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
276 "iHP firmware - reason: file 'length' data\n" ),wxT("iriver_decode"));
277 infile.Close();
278 outfile.Close();
279 return -1;
280 };
281
282 pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
283
284 if( modify )
285 {
286 modifyheader( headerdata );
287 };
288
289 if( stripmode == STRIP_NONE )
290 outfile.Write( headerdata, 512);
291
292 memset( blockdata, 0, 16 );
293
294 ck = 0;
295 while( ( fp < dwLength2 ) &&
296 ( lenread = infile.Read( blockdata+16, 16) == 16) )
297 {
298 fp += 16;
299
300 for( i=0; i<16; ++i )
301 {
302 newmunge = blockdata[16+i] ^ munge[i];
303 out[i] = newmunge ^ blockdata[i];
304 blockdata[i] = newmunge;
305 ck += out[i];
306 }
307
308 if( fp > ESTF_SIZE || stripmode != STRIP_HEADER_CHECKSUM_ESTF )
309 {
310 outfile.Write( out+4, 12);
311 outfile.Write( out, 4);
312 }
313 else
314 {
315 if( ESTF_SIZE - fp < 16 )
316 {
317 memcpy( out+4, blockdata+16, 12 );
318 memcpy( out, blockdata+28, 4 );
319 outfile.Write( blockdata+16+ESTF_SIZE-fp, ESTF_SIZE-fp);
320 }
321 }
322
323
324 if( s == 496 )
325 {
326 s = 0;
327 memset( blockdata, 0, 16 );
328 *ppChecksums++ = ck;
329 ck = 0;
330 }
331 else
332 s+=16;
333 };
334
335 if( fp != dwLength2 )
336 {
337 ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
338 "iHP firmware - reason: 'length2' mismatch\n" ),wxT("iriver_decode"));
339 infile.Close();
340 outfile.Close();
341 return -1;
342 };
343
344 fp = 0;
345 ppChecksums = pChecksums;
346 while( ( fp < dwLength3 ) &&
347 ( lenread = infile.Read( blockdata, 32 ) ) > 0 )
348 {
349 fp += lenread;
350 if( stripmode == STRIP_NONE )
351 outfile.Write( blockdata, lenread );
352 if( memcmp( ppChecksums, blockdata, lenread ) != 0 )
353 {
354 ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
355 "iHP firmware - reason: Checksum mismatch!" ),wxT("iriver_decode"));
356 infile.Close();
357 outfile.Close();
358 return -1;
359 };
360 ppChecksums += lenread;
361 };
362
363 if( fp != dwLength3 )
364 {
365 ERR_DIALOG(wxT( "This doesn't look like a valid encrypted "
366 "iHP firmware - reason: 'length3' mismatch\n" ),wxT("iriver_decode"));
367 infile.Close();
368 outfile.Close();
369 return -1;
370 };
371
372
373 fprintf( stderr, "File decoded correctly and all checksums matched!\n" );
374 switch( stripmode )
375 {
376 default:
377 case STRIP_NONE:
378 fprintf(stderr, "Output file contains all headers and "
379 "checksums\n");
380 break;
381 case STRIP_HEADER_CHECKSUM:
382 fprintf( stderr, "NB: output file contains only ESTFBINR header"
383 " and decoded firmware code\n" );
384 break;
385 case STRIP_HEADER_CHECKSUM_ESTF:
386 fprintf( stderr, "NB: output file contains only raw decoded "
387 "firmware code\n" );
388 break;
389 };
390
391 infile.Close();
392 outfile.Close();
393 return 0;
394
395};
396
397int iriver_encode(wxString infile_name, wxString outfile_name, unsigned int modify )
398{
399 wxString err;
400 wxFile infile;
401 wxFile outfile;
402 int i = -1;
403 unsigned char headerdata[512];
404 unsigned long dwLength1, dwLength2, dwLength3, fp = 0;
405 unsigned char blockdata[16+16];
406 unsigned char out[16];
407 unsigned char newmunge;
408 signed long lenread;
409 int s = 0;
410 unsigned char * pChecksums, * ppChecksums;
411 unsigned char ck;
412
413 if(!infile.Open(infile_name,wxFile::read))
414 {
415 ERR_DIALOG(wxT("Could not open: ") + infile_name, wxT("iriver_decode"));
416 return -1;
417 }
418 if(!outfile.Open(outfile_name,wxFile::write))
419 {
420 ERR_DIALOG(wxT("Could not open: ") + outfile_name,
421 wxT("iriver_decode"));
422 return -1;
423 }
424
425 lenread = infile.Read( headerdata, 512 );
426 if( lenread != 512 )
427 {
428 ERR_DIALOG(wxT("This doesn't look like a valid decoded "
429 "iHP firmware - reason: header length\n"), wxT("iriver_decode"));
430 infile.Close();
431 outfile.Close();
432 };
433
434 if( modify )
435 {
436 modifyheader( headerdata ); /* reversible */
437 };
438
439 i = testheader( headerdata );
440 if( i == -1 )
441 {
442 ERR_DIALOG(wxT("This firmware is for an unknown model, or is not"
443 " a valid decoded iHP firmware\n"), wxT("iriver_decode"));
444 infile.Close();
445 outfile.Close();
446 };
447 fprintf( stderr, "Model %s\n", models[ i ] );
448
449 dwLength1 = headerdata[0] | (headerdata[1]<<8) |
450 (headerdata[2]<<16) | (headerdata[3]<<24);
451 dwLength2 = headerdata[4] | (headerdata[5]<<8) |
452 (headerdata[6]<<16) | (headerdata[7]<<24);
453 dwLength3 = headerdata[8] | (headerdata[9]<<8) |
454 (headerdata[10]<<16) | (headerdata[11]<<24);
455
456 if( dwLength1 < firmware_minsize[i] ||
457 dwLength1 > firmware_maxsize[i] ||
458 dwLength2 < firmware_minsize[i] ||
459 dwLength2 > dwLength1 ||
460 dwLength3 > dwLength1 ||
461 dwLength2+dwLength3+512 != dwLength1 )
462 {
463 ERR_DIALOG(wxT("This doesn't look like a valid decoded iHP"
464 " firmware - reason: file 'length' data\n"), wxT("iriver_decode"));
465 infile.Close();
466 outfile.Close();
467 };
468
469 pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
470
471 outfile.Write( headerdata, 512);
472
473 memset( blockdata, 0, 16 );
474 ck = 0;
475 while( ( fp < dwLength2 ) &&
476 ( lenread = infile.Read( blockdata+16, 16) ) == 16 )
477 {
478 fp += 16;
479 for( i=0; i<16; ++i )
480 {
481 newmunge = blockdata[16+((12+i)&0xf)] ^ blockdata[i];
482 out[i] = newmunge ^ munge[i];
483 ck += blockdata[16+i];
484 blockdata[i] = newmunge;
485 };
486 outfile.Write( out, 16);
487
488 if( s == 496 )
489 {
490 s = 0;
491 memset( blockdata, 0, 16 );
492 *ppChecksums++ = ck;
493 ck = 0;
494 }
495 else
496 s+=16;
497 };
498
499 if( fp != dwLength2 )
500 {
501 ERR_DIALOG(wxT("This doesn't look like a valid decoded "
502 "iHP firmware - reason: 'length1' mismatch\n"), wxT("iriver_decode"));
503 infile.Close();
504 outfile.Close();
505 };
506
507 /* write out remainder w/out applying descrambler */
508 fp = 0;
509 lenread = dwLength3;
510 ppChecksums = pChecksums;
511 while( ( fp < dwLength3) &&
512 ( lenread = outfile.Write( ppChecksums, lenread) ) > 0 )
513 {
514 fp += lenread;
515 ppChecksums += lenread;
516 lenread = dwLength3 - fp;
517 };
518
519 if( fp != dwLength3 )
520 {
521 ERR_DIALOG(wxT("This doesn't look like a valid decoded "
522 "iHP firmware - reason: 'length2' mismatch\n"), wxT("iriver_decode"));
523 infile.Close();
524 outfile.Close();
525 };
526
527 fprintf( stderr, "File encoded successfully and checksum table built!\n" );
528
529 infile.Close();
530 outfile.Close();
531 return 0;
532
533};
534
535bool PatchFirmware(wxString firmware,wxString bootloader,int series, int table_entry)
536{
537 wxString name1, name2, name3;
538
539 char md5sum_str[32];
540 struct sumpairs *sums;
541 int origin;
542
543 /* get pointer to the correct bootloader.bin */
544 switch(series) {
545 case 100:
546 sums = &h100pairs[0];
547 origin = 0x1f0000;
548 break;
549 case 120:
550 sums = &h120pairs[0];
551 origin = 0x1f0000;
552 break;
553 case 300:
554 sums = &h300pairs[0];
555 origin = 0x3f0000;
556 break;
557 }
558
559 name1 = gv->stdpaths->GetUserDataDir()
560 + wxT("" PATH_SEP "download" PATH_SEP "firmware.bin"),
561 /* descrambled file */
562 name2 = gv->stdpaths->GetUserDataDir()
563 + wxT("" PATH_SEP "download" PATH_SEP "new.bin");
564 /* patched file */
565 name3 = gv->stdpaths->GetUserDataDir()
566 + wxT("" PATH_SEP "download" PATH_SEP "new.hex");
567 if (iriver_decode(firmware, name1, FALSE, STRIP_NONE) == -1) {
568 ERR_DIALOG(wxT("Error in descramble"), wxT("Descramble Firmware"));
569 wxRemoveFile(name1);
570 wxRemoveFile(name2);
571 wxRemoveFile(name3);
572 return false;
573 }
574 if (!mkboot(name1, name2, bootloader, origin)) {
575 ERR_DIALOG(wxT("Error in patching"),wxT("Patching Firmware"));
576 wxRemoveFile(name1);
577 wxRemoveFile(name2);
578 wxRemoveFile(name3);
579 return false;
580 }
581 if (iriver_encode(name2, name3, FALSE) == -1) {
582 ERR_DIALOG(wxT("Error in scramble"),wxT("Scramble Firmware"));
583 wxRemoveFile(name1);
584 wxRemoveFile(name2);
585 wxRemoveFile(name3);
586 return false;
587 }
588 /* now md5sum it */
589 if (!FileMD5(name3, md5sum_str)) {
590 ERR_DIALOG(wxT("Error in checksumming"),wxT("Checksumming Firmware"));
591 wxRemoveFile(name1);
592 wxRemoveFile(name2);
593 wxRemoveFile(name3);
594 return false;
595 }
596 if (strncmp(sums[table_entry].patched, md5sum_str, 32) == 0) {
597 /* delete temp files */
598 wxRemoveFile(name1);
599 wxRemoveFile(name2);
600 }
601
602 return true;
603}
604
diff --git a/rbutil/irivertools.h b/rbutil/irivertools.h
deleted file mode 100755
index d646cf1d6c..0000000000
--- a/rbutil/irivertools.h
+++ /dev/null
@@ -1,66 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: irivertools.h
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22#ifndef IRIVERTOOLS_H_INCLUDED
23#define IRIVERTOOLS_H_INCLUDED
24
25#include "rbutil.h"
26#include "installlog.h"
27#include "md5sum.h"
28
29#define ESTF_SIZE 32
30
31struct sumpairs {
32 char *unpatched;
33 char *patched;
34};
35
36/* precalculated checksums for H110/H115 */
37static struct sumpairs h100pairs[] = {
38#include "h100sums.h"
39};
40
41/* precalculated checksums for H120/H140 */
42static struct sumpairs h120pairs[] = {
43#include "h120sums.h"
44};
45
46/* precalculated checksums for H320/H340 */
47static struct sumpairs h300pairs[] = {
48#include "h300sums.h"
49};
50
51
52enum striptype
53{
54 STRIP_NONE,
55 STRIP_HEADER_CHECKSUM,
56 STRIP_HEADER_CHECKSUM_ESTF
57};
58
59/* protos for iriver.c */
60
61int intable(char *md5, struct sumpairs *table, int len);
62
63bool PatchFirmware(wxString firmware,wxString bootloader,int series, int table_entry);
64
65
66#endif // IRIVERTOOLS_H_INCLUDED
diff --git a/rbutil/md5sum.cpp b/rbutil/md5sum.cpp
deleted file mode 100755
index e1c23c9867..0000000000
--- a/rbutil/md5sum.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: md5sum.cpp
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22/*
23 * RFC 1321 compliant MD5 implementation
24 *
25 * Copyright (C) 2001-2003 Christophe Devine
26 *
27 * This program is free software; you can redistribute it and/or modify
28 * it under the terms of the GNU General Public License as published by
29 * the Free Software Foundation; either version 2 of the License, or
30 * (at your option) any later version.
31 *
32 * This program is distributed in the hope that it will be useful,
33 * but WITHOUT ANY WARRANTY; without even the implied warranty of
34 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 * GNU General Public License for more details.
36 *
37 * You should have received a copy of the GNU General Public License
38 * along with this program; if not, write to the Free Software
39 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
40 */
41
42
43#include "md5sum.h"
44
45
46#define GET_UINT32(n,b,i) \
47{ \
48 (n) = ( (uint32) (b)[(i) ] ) \
49 | ( (uint32) (b)[(i) + 1] << 8 ) \
50 | ( (uint32) (b)[(i) + 2] << 16 ) \
51 | ( (uint32) (b)[(i) + 3] << 24 ); \
52}
53
54#define PUT_UINT32(n,b,i) \
55{ \
56 (b)[(i) ] = (uint8) ( (n) ); \
57 (b)[(i) + 1] = (uint8) ( (n) >> 8 ); \
58 (b)[(i) + 2] = (uint8) ( (n) >> 16 ); \
59 (b)[(i) + 3] = (uint8) ( (n) >> 24 ); \
60}
61
62void md5_starts( md5_context *ctx )
63{
64 ctx->total[0] = 0;
65 ctx->total[1] = 0;
66
67 ctx->state[0] = 0x67452301;
68 ctx->state[1] = 0xEFCDAB89;
69 ctx->state[2] = 0x98BADCFE;
70 ctx->state[3] = 0x10325476;
71}
72
73void md5_process( md5_context *ctx, uint8 data[64] )
74{
75 uint32 X[16], A, B, C, D;
76
77 GET_UINT32( X[0], data, 0 );
78 GET_UINT32( X[1], data, 4 );
79 GET_UINT32( X[2], data, 8 );
80 GET_UINT32( X[3], data, 12 );
81 GET_UINT32( X[4], data, 16 );
82 GET_UINT32( X[5], data, 20 );
83 GET_UINT32( X[6], data, 24 );
84 GET_UINT32( X[7], data, 28 );
85 GET_UINT32( X[8], data, 32 );
86 GET_UINT32( X[9], data, 36 );
87 GET_UINT32( X[10], data, 40 );
88 GET_UINT32( X[11], data, 44 );
89 GET_UINT32( X[12], data, 48 );
90 GET_UINT32( X[13], data, 52 );
91 GET_UINT32( X[14], data, 56 );
92 GET_UINT32( X[15], data, 60 );
93
94#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
95
96#define P(a,b,c,d,k,s,t) \
97{ \
98 a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
99}
100
101 A = ctx->state[0];
102 B = ctx->state[1];
103 C = ctx->state[2];
104 D = ctx->state[3];
105
106#define F(x,y,z) (z ^ (x & (y ^ z)))
107
108 P( A, B, C, D, 0, 7, 0xD76AA478 );
109 P( D, A, B, C, 1, 12, 0xE8C7B756 );
110 P( C, D, A, B, 2, 17, 0x242070DB );
111 P( B, C, D, A, 3, 22, 0xC1BDCEEE );
112 P( A, B, C, D, 4, 7, 0xF57C0FAF );
113 P( D, A, B, C, 5, 12, 0x4787C62A );
114 P( C, D, A, B, 6, 17, 0xA8304613 );
115 P( B, C, D, A, 7, 22, 0xFD469501 );
116 P( A, B, C, D, 8, 7, 0x698098D8 );
117 P( D, A, B, C, 9, 12, 0x8B44F7AF );
118 P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
119 P( B, C, D, A, 11, 22, 0x895CD7BE );
120 P( A, B, C, D, 12, 7, 0x6B901122 );
121 P( D, A, B, C, 13, 12, 0xFD987193 );
122 P( C, D, A, B, 14, 17, 0xA679438E );
123 P( B, C, D, A, 15, 22, 0x49B40821 );
124
125#undef F
126
127#define F(x,y,z) (y ^ (z & (x ^ y)))
128
129 P( A, B, C, D, 1, 5, 0xF61E2562 );
130 P( D, A, B, C, 6, 9, 0xC040B340 );
131 P( C, D, A, B, 11, 14, 0x265E5A51 );
132 P( B, C, D, A, 0, 20, 0xE9B6C7AA );
133 P( A, B, C, D, 5, 5, 0xD62F105D );
134 P( D, A, B, C, 10, 9, 0x02441453 );
135 P( C, D, A, B, 15, 14, 0xD8A1E681 );
136 P( B, C, D, A, 4, 20, 0xE7D3FBC8 );
137 P( A, B, C, D, 9, 5, 0x21E1CDE6 );
138 P( D, A, B, C, 14, 9, 0xC33707D6 );
139 P( C, D, A, B, 3, 14, 0xF4D50D87 );
140 P( B, C, D, A, 8, 20, 0x455A14ED );
141 P( A, B, C, D, 13, 5, 0xA9E3E905 );
142 P( D, A, B, C, 2, 9, 0xFCEFA3F8 );
143 P( C, D, A, B, 7, 14, 0x676F02D9 );
144 P( B, C, D, A, 12, 20, 0x8D2A4C8A );
145
146#undef F
147
148#define F(x,y,z) (x ^ y ^ z)
149
150 P( A, B, C, D, 5, 4, 0xFFFA3942 );
151 P( D, A, B, C, 8, 11, 0x8771F681 );
152 P( C, D, A, B, 11, 16, 0x6D9D6122 );
153 P( B, C, D, A, 14, 23, 0xFDE5380C );
154 P( A, B, C, D, 1, 4, 0xA4BEEA44 );
155 P( D, A, B, C, 4, 11, 0x4BDECFA9 );
156 P( C, D, A, B, 7, 16, 0xF6BB4B60 );
157 P( B, C, D, A, 10, 23, 0xBEBFBC70 );
158 P( A, B, C, D, 13, 4, 0x289B7EC6 );
159 P( D, A, B, C, 0, 11, 0xEAA127FA );
160 P( C, D, A, B, 3, 16, 0xD4EF3085 );
161 P( B, C, D, A, 6, 23, 0x04881D05 );
162 P( A, B, C, D, 9, 4, 0xD9D4D039 );
163 P( D, A, B, C, 12, 11, 0xE6DB99E5 );
164 P( C, D, A, B, 15, 16, 0x1FA27CF8 );
165 P( B, C, D, A, 2, 23, 0xC4AC5665 );
166
167#undef F
168
169#define F(x,y,z) (y ^ (x | ~z))
170
171 P( A, B, C, D, 0, 6, 0xF4292244 );
172 P( D, A, B, C, 7, 10, 0x432AFF97 );
173 P( C, D, A, B, 14, 15, 0xAB9423A7 );
174 P( B, C, D, A, 5, 21, 0xFC93A039 );
175 P( A, B, C, D, 12, 6, 0x655B59C3 );
176 P( D, A, B, C, 3, 10, 0x8F0CCC92 );
177 P( C, D, A, B, 10, 15, 0xFFEFF47D );
178 P( B, C, D, A, 1, 21, 0x85845DD1 );
179 P( A, B, C, D, 8, 6, 0x6FA87E4F );
180 P( D, A, B, C, 15, 10, 0xFE2CE6E0 );
181 P( C, D, A, B, 6, 15, 0xA3014314 );
182 P( B, C, D, A, 13, 21, 0x4E0811A1 );
183 P( A, B, C, D, 4, 6, 0xF7537E82 );
184 P( D, A, B, C, 11, 10, 0xBD3AF235 );
185 P( C, D, A, B, 2, 15, 0x2AD7D2BB );
186 P( B, C, D, A, 9, 21, 0xEB86D391 );
187
188#undef F
189#undef S
190#undef P
191
192
193 ctx->state[0] += A;
194 ctx->state[1] += B;
195 ctx->state[2] += C;
196 ctx->state[3] += D;
197}
198
199void md5_update( md5_context *ctx, uint8 *input, uint32 length )
200{
201 uint32 left, fill;
202
203 if( ! length ) return;
204
205 left = ctx->total[0] & 0x3F;
206 fill = 64 - left;
207
208 ctx->total[0] += length;
209 ctx->total[0] &= 0xFFFFFFFF;
210
211 if( ctx->total[0] < length )
212 ctx->total[1]++;
213
214 if( left && length >= fill )
215 {
216 memcpy( (void *) (ctx->buffer + left),
217 (void *) input, fill );
218 md5_process( ctx, ctx->buffer );
219 length -= fill;
220 input += fill;
221 left = 0;
222 }
223
224 while( length >= 64 )
225 {
226 md5_process( ctx, input );
227 length -= 64;
228 input += 64;
229 }
230
231 if( length )
232 {
233 memcpy( (void *) (ctx->buffer + left),
234 (void *) input, length );
235 }
236}
237
238static uint8 md5_padding[64] =
239{
240 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
244};
245
246void md5_finish( md5_context *ctx, uint8 digest[16] )
247{
248 uint32 last, padn;
249 uint32 high, low;
250 uint8 msglen[8];
251
252 high = ( ctx->total[0] >> 29 )
253 | ( ctx->total[1] << 3 );
254 low = ( ctx->total[0] << 3 );
255
256 PUT_UINT32( low, msglen, 0 );
257 PUT_UINT32( high, msglen, 4 );
258
259 last = ctx->total[0] & 0x3F;
260 padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
261
262 md5_update( ctx, md5_padding, padn );
263 md5_update( ctx, msglen, 8 );
264
265 PUT_UINT32( ctx->state[0], digest, 0 );
266 PUT_UINT32( ctx->state[1], digest, 4 );
267 PUT_UINT32( ctx->state[2], digest, 8 );
268 PUT_UINT32( ctx->state[3], digest, 12 );
269}
270
271int FileMD5(wxString name, char *md5)
272{
273 int i, read;
274 md5_context ctx;
275 unsigned char md5sum[16];
276 unsigned char block[32768];
277
278 wxFile file;
279
280 file.Open(name);
281
282 if (!file.IsOpened()) {
283 ERR_DIALOG(wxT("Could not open patched firmware for checksum check"), wxT("Open Firmware"));
284 return 0;
285 }
286 md5_starts(&ctx);
287 while ( !file.Eof() ) {
288 read = file.Read(block, sizeof(block));
289 md5_update(&ctx, block, read);
290 }
291 file.Close();
292 md5_finish(&ctx, md5sum);
293 for (i = 0; i < 16; ++i)
294 {
295 sprintf(md5 + 2*i, "%02x", md5sum[i]);
296 }
297 return 1;
298}
diff --git a/rbutil/md5sum.h b/rbutil/md5sum.h
deleted file mode 100755
index f7ea439b6f..0000000000
--- a/rbutil/md5sum.h
+++ /dev/null
@@ -1,51 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: md5sum.h
10 *
11 * Copyright (C) 2007 Dominik Wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22#ifndef MD5SUM_H_INCLUDED
23#define MD5SUM_H_INCLUDED
24
25#ifndef uint8
26#define uint8 unsigned char
27#endif
28
29
30#ifndef uint32
31#define uint32 unsigned long int
32#endif
33
34#include "rbutil.h"
35
36
37typedef struct
38{
39 uint32 total[2];
40 uint32 state[4];
41 uint8 buffer[64];
42}
43md5_context;
44
45void md5_starts( md5_context *ctx );
46void md5_update( md5_context *ctx, uint8 *input, uint32 length );
47void md5_finish( md5_context *ctx, uint8 digest[16] );
48
49int FileMD5(wxString name, char *md5);
50
51#endif // MD5SUM_H_INCLUDED
diff --git a/rbutil/rblogo.xpm b/rbutil/rblogo.xpm
deleted file mode 100644
index d14f01517f..0000000000
--- a/rbutil/rblogo.xpm
+++ /dev/null
@@ -1,254 +0,0 @@
1/* WxStaticBitmap1_XPM XPM */
2static char * rblogo_xpm[] = {
3"400 123 128 2",
4" c #FFC500",
5". c #DBA500",
6"+ c #C79600",
7"@ c #A1B4C5",
8"# c #798C9C",
9"$ c #8C8F92",
10"% c #6B7176",
11"& c #B38700",
12"* c #876601",
13"= c #B3C3D2",
14"- c #392B00",
15"; c #E7E7E7",
16"> c #EBB200",
17", c #9CB1C4",
18"' c #FFC800",
19") c #8497A9",
20"! c #4A4D4F",
21"~ c #2D2E30",
22"{ c #FEFEFE",
23"] c #CCD8E2",
24"^ c #E3AC00",
25"/ c #745801",
26"( c #BBC9D6",
27"_ c #97ADC1",
28": c #A5B9CA",
29"< c #C7C7C7",
30"[ c #C6D2DD",
31"} c #8AA1B6",
32"| c #493801",
33"1 c #C1CDD9",
34"2 c #654D00",
35"3 c #A37B00",
36"4 c #9A7400",
37"5 c #F4B800",
38"6 c #BECBD8",
39"7 c #5A4401",
40"8 c #AABCCC",
41"9 c #D5D5D5",
42"0 c #B8B8B8",
43"a c #A6A6A6",
44"b c #ACBECD",
45"c c #FFC300",
46"d c #93AABE",
47"e c #000000",
48"f c #FCBE00",
49"g c #98ABBD",
50"h c #A2B6C7",
51"i c #FFD200",
52"j c #FFCC00",
53"k c #AC8200",
54"l c #AFC1D0",
55"m c #EFB500",
56"n c #B2C1CE",
57"o c #757D86",
58"p c #F2F2F2",
59"q c #6E5300",
60"r c #191300",
61"s c #A8BACA",
62"t c #FABD00",
63"u c #D09D01",
64"v c #92A3B4",
65"w c #AEBFCE",
66"x c #171718",
67"y c #DCE0E4",
68"z c #261D00",
69"A c #A8BCCC",
70"B c #B8C6D3",
71"C c #616468",
72"D c #AFBECC",
73"E c #ABB0B5",
74"F c #A1AEB9",
75"G c #BE8F00",
76"H c #AABED0",
77"I c #969DA4",
78"J c #8F6C00",
79"K c #A7BBCD",
80"L c #F7BB00",
81"M c #8FA6BB",
82"N c #9BA9B6",
83"O c #7E5F01",
84"P c #ACBDCB",
85"Q c #54595D",
86"R c #0B0B0C",
87"S c #B7CADA",
88"T c #F9C000",
89"U c #130E00",
90"V c #ABB9C5",
91"W c #A5B7C7",
92"X c #424446",
93"Y c #0C0900",
94"Z c #FCC000",
95"` c #9D7B0F",
96" . c #FFC000",
97".. c #080A10",
98"+. c #FDC200",
99"@. c #B3C6D5",
100"#. c #FFC202",
101"$. c #A7B6C3",
102"%. c #DFE8EF",
103"&. c #9DAFBF",
104"*. c #98A5B0",
105"=. c #FAC500",
106"-. c #ACBBC8",
107";. c #393A3C",
108">. c #232425",
109",. c #1C1D1E",
110"'. c #B7C7D5",
111"). c #ECF4FA",
112"!. c #F7BE05",
113"~. c #070500",
114"{. c #644F0B",
115"]. c #FFC100",
116"^. c #050506",
117"/. c #080909",
118"(. c #101011",
119"_. c #FEBF00",
120":. c #FDC100",
121"<. c #F5BF00",
122"[. c #8A6B0B",
123"}. c #8E6F0D",
124"|. c #FCC003",
125"1. c #FFC102",
126"2. c #B78F0B",
127"3. c #716027",
128"4. c #FEC304",
129"5. c #F7C10D",
130"6. c #977E20",
131"7. c #FBC303",
132"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e ",
133"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e ",
134"e e ~.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 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 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 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 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 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 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 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 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 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 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 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 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 r r r r r r r r r r r r r r r r r Y e e ",
135"e e - _. ._._._._._._._._._._._._._.c ]._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.].' ]._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. J e e ",
136"e e - ].c ].].].].].].].].].].].].].L f ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].c c ].].].].].].].].].].].].].].].].].].].].].].].].]. m 3 > c ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].' J e e ",
137"e e - .]. . . . . . . . . . . .].t | 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . .> m . . . . . . . . . . . . . . . . . . . . . . . . .' 3 e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
138"e e - .]. . . . . . . . . . . .c L ~.O ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u | 7 * & ^ t j c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j t ^ . G 3 k k + ^ > j . . . . . . . . . . . . . . . . . . . . . .c t - / ]. . . . . . . . . . . . . . . . . . . . . . . . - z m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
139"e e - .]. . . . . . . . . . . ' T ~.O j ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u - z Y e Y - J > ' . . . . . . . . . . . . . . . . . . . . . . . . . .c ' u O | r e e e e e e ~.z 7 J . c ' ' ]. . .].' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' T z 7 j ' . . . . . . . ' ' ' ' ' ' ' ' ' ' ' ' ' i G e J i ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
140"e e - .]. . . . . . . . . .' k 2 q e - / / / / / / / / / / / / / / / / / / / q / ^ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]._.L m ^ G / z e U / ^ ' c . . . . . . . . . . . . . . . . . . . . . . . =.G | e e z q 4 G . . u & * | r e e - 4 . ' ' c 5 / / / / / / / / / / / / / / / / q U z / q 4 .]. . . .c 5 J q / / / / / / / / / / / / O - e 7 / q G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
141"e e - .]. . . . . . . . . .j / ~.r e Y r r r r r r r r r r r r r r r r r r r r r u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' ' ' j i i T G | e r 4 +.' . . . . . . . . . . . . . . . . . . . .].' ^ 7 e U / u ' i i j ' ' ' j j i =.+ O - e Y 2 + j > e Y r r r r r r r r r r r r r r r ~.Y r Y 7 .c . . . m | U r r r r r r r r r r r r U e r r r U 4 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
142"e e - .]. . . . . . . . . .].5 m > e / L m m m m m m m m m m m m m m m m m m m m _.].].].]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j > + J q | | | 7 O & . ' i G - e | ^ ' . . . . . . . . . . . . . . . . . .].' k r e / > j i T u 3 / | | | 7 q J + 5 i +.+ 7 ~.e 7 G e J L m m m m m m m m m m m m m > z 7 5 m 5 . . . . . ._.m m m m m m m m m m m m m _.q e G L m m L ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
143"e e - .]. . . . . . . . . . .c T e O j c c c c c c c c c c c c c c c c c c c . . .c ' ' . . . . . . . . . . . . . . . . . . . . . . . . ' . q z e e e e e e e e e U 7 k +.i T * e r + j ]. . . . . . . . . . . . . . . .c ' * e z + j j 5 4 | Y e e e e e e e e e z 2 + ' i . q ~.~.e 4 j c c c c c c c c c c c T z 2 ' c . . . . . . .c c c c c c c c c c c m r | c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
144"e e - .]. . . . . . . . . . . .c L e O ' 5 - - - - - - - - - - - - - - - - - - - - - - 7 / 3 + 5 j c . . . . . . . . . . . . . . . . . . . . .' > / Y e e e e e e e e e e e e e e - + j j G r ~.k j . . . . . . . . . . . . . .]. O e | > j ' & z e e e e e e e e e e e e e e e - G j j . | e 4 j + - - - - - - - - - - - G ].z 7 ]. . . . . . . . .' u - - - - - - - - - - - z e 4 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
145"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e ~.- J L ' . . . . . . . . . . . . . . . . . .].j G z e e e e e e e e e e e e e e e e e Y * j . - e k ' ]. . . . . . . . . . . .].j J e 7 ].j L q e e e e e e e e e e e e e e e e e e e 7 > i 4 & j & e e e e e e e e e e e 3 c z 7 ]. . . . . . . . .' q e e e e e e e e e e e e z m c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
146"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 - u ' ]. . . . . . . . . . . . . . . .].j 3 ~.e e e e e e e e e e e e e e e e e e e e 2 L i > - ~.G ' . . . . . . . . . . .j & e | L j ^ | e e e e e e e e e e e e e e e e e e e e e z + ' ' .' & e e e e e e e e e e e 3 c z 7 ]. . . . . . . .c m r e e e e e e e e e e e e O ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
147"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 U & ' . . . . . . . . . . . . . .].' 3 ~.e e e e e e e e e e e e e e e e e e e e e e 7 <.j . z r . . . . . . . . . . . U z > i ^ - e e e e e e e e e e e e e e e e e e e e e e e Y k ' c ' & e e e e e e e e e e e 3 c z 7 ]. . . . . . . .j 4 e e e e e e e e e e e e Y . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
148"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 U + ' . . . . . . . . . . . . .j & ~.e e e e e e e e e e e e e e e e e e e e e e e e / ' j + ~.| T c . . . . . . .c T | e + j L | 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 J ' & e e e e e e e e e e e 3 c z 7 ]. . . . . . .c t | e e e e e e e e e e e e 7 c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
149"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e z ^ . . . . . . . . . . . . z 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 4 ' ' J e J ' . . . . . . .' 4 e J j +.2 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 3 j & e e e e e e e e e e e 3 c z 7 ]. . . . . . .' u e e e e e e e e e e e e ~.& ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
150"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e 7 c . . . . . . . . .c +.| 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 r . ' c | Y ^ . . . . . > U - L i 3 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 q j & e e e e e e e e e e e 3 c z 7 ]. . . . . . .' q e e e e e e e e e e e e - c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
151"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e e k ' . . . . . . . . .j 4 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 | .j G e / ' . . . .].' q e G j ^ r 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 q j & e e e e e e e e e e e 3 c z 7 ]. . . . . .c m z e e e e e e e e e e e e 4 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
152"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e e z 5 c . . . . . . . ^ r 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 e 3 j | Y . ' . . .' . e 7 j 2 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 e q j & e e e e e e e e e e e 3 c z 7 ]. . . . . .j 4 e e e e e e e e e e e e z ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
153"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e e e 3 ' . . . . . .].' / 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 e e z > j + e J ' . . .' q e u j + ~.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 e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .c Z | e e e e e e e e e e e e q ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
154"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e e e - c c . . . . . ^ U 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 e e e J j :.- r L ]. . . Y 7 ' 7 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 e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .' u ~.e e e e e e e e e e e Y u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
155"e e - .]. . . . . . . . . . . .c L e O ' m ~.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 e e e e Y + ' . . . . .' / 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 e e e e z 5 j 3 e 3 ' .' O e + i + Y 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 e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .' / e e e e e e e e e e e e | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
156"e e - .]. . . . . . . . . . . .c L ~.O ' m ~.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 e e e e e * ' ]. . . . ^ z 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 e e e e e 3 j m r | m z - ' ' 2 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 e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . .c m z e e e e e e e e e e e e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
157"e e - .]. . . . . . . . . . . .].f 4 + m ~.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 e e e e e - t c . . .' 4 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 e e e e e e | _.j q e u j & e k i . U 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 e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . .j 3 e e e e e e e e e e e e - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
158"e e - .]. . . . . . . . . . . . . .' c m ~.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 e e e e e ~.^ . .c t - 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 e e e e e ~.+ i u e J i 7 U ^ j J 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 e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . .c c 7 e e e e e e e e e e e e * j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
159"e e - .]. . . . . . . . . . . . . . . .c m ~.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 e e e e e e & ' . . u e e e e e e e e e e e e e e e Y 7 k u G O z e e e e e e e e e e e e e e e O ' t - z > U 2 ' - e e e e e e e e e e e e e e e e ~.- 2 O 2 - ~.e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . u ~.e e e e e e e e e e e U ^ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
160"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e r - - - - - - - U e e e e e e e e e e e e e e e e * ' . .j O e e e e e e e e e e e e e e - + ' i i j j > 2 e e e e e e e e e e e e e e z f j O Y / ~.k i + Y e e e e e e e e e e e e e e e - G L j j j T + | e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . .' O e e e e e e e e e e e e q ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
161"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i L & - e e e e e e e e e e e e e e 2 j .c _.- e e e e e e e e e e e e e - ^ j Z + & ^ ' ' ' O e e e e e e e e e e e e e ~.+ j + U e r > j * e e e e e e e e e e e e e e e O +.' c .c ' :.* ~.e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. .c 5 z e e e e e e e e e e e ~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
162"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e | + G G G G G . 5 i <.2 e e e e e e e e e e e e e | j .' u U e e e e e e e e e e e e r u ' c L - e U * T ' 7 e e e e e e e e e e e e e / j ].- e | j t | e e e e e e e e e e e e e e O ' c ' m > . . .c ' 3 ~.e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. .j k e e e e e e e e e e e e | ].c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
163"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e e e e e e e e e z 3 j L - e e e e e e e e e e e e - L c j 4 e e e e e e e e e e e e e J j .c L z - | e | L j . r e e e e e e e e e e e e | _.j q e * j ^ Y e e e e e e e e e e e e e 7 c L O Y 7 c c . .].j 3 ~.e e e e e q j & e e e e e e e e e e e 3 c z 7 ].c c 7 e e e e e e e e e e e e & i ' ' ' ' ' ' ' ' ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
164"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e | u + + + + G 4 z e 3 i k e e e e e e e e e e e e - 5 c 2 e e e e e e e e e e e e - L c .c L z 2 ' O e / ' ' O e e e e e e e e e e e e r . j + | u j & e e e e e e e e e e e e e z . > | e 7 + ].]. . . .].' J e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . ~.e e e e e e e e e e e Y O [.[.* * * * * * * * 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
165"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i ' ' ' ' ' j m z r ^ - e e e e e e e e e e e z . ' 5 z e e e e e e e e e e e e k ' . .c L z 7 ' ' 7 e G j ^ r e e e e e e e e e e e e & ' c ' c ' q e e e e e e e e e e e e e J j c | e 3 ' . . . . . .c 7 e e e e q j & e e e e e e e e e e e 3 c z 7 .' O e e e e e e e e e e e e e e e e e e e e e e e e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
166"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 ' . . . . ._.' & e 4 i q e e e e e e e e e e e r . j u e e e e e e e e e e e e z m c . .c L z 7 ' ^ U | ].j 2 e e e e e e e e e e e e O . . . - e e e e e e e e e e e e z t ].' 4 e * j ]. . . . . . . . . > z e e e q j & e e e e e e e e e e e 3 c z 7 c t z e e e e e e e e e e e R Q C C C C C C C C C Q e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
167"e e - .]. . . ._. ' ' ' c . . . . .c m ~.e e e e e e e e e e 2 ' . . . . . .c 5 r 7 j 4 e e e e e e e e e e e r . j 3 e e e e e e e e e e e e / ' ]. . .c L z 7 .j / e u i + e e e e e e e e e e e e | ]. . ^ r e e e e e e e e e e e e 4 ' > r - <. . . . . . . . . . .' & e e e q j & e e e e e e e e e e e 3 c z 7 j & e e e e e e e e e e e e X [ 6 ( ( ( 6 6 1 6 [ $.e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
168"e e - .]. . . . . q | O + ].c . . . .c m ~.e e e e e e e e e e 2 ' . . . . . .c .| z ' G e e e e e e e e e e e r . i q e e e e e e e e e e e ~.G ' . . .c L z 7 ]. . e O j m z e e e e e e e e e e e r L ]. .' G Y e e e e e e e e e e e r . ' j 4 e k ' . . . . . . . . . . .].' / e e q j & e e e e e e e e e e e 3 c z 7 c 7 e e e e e e e e e e e e ) S = = = = = = @.= S F e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
169"e e - .]. . . .j O e e e ~.7 . c f . .c m ~.e e e e e e e e e e 2 ' . . . . . .]. q Y ' ^ e e e e e e e e e e e r . i | e e e e e e e e e e e z m c . . .c L z 7 ].c f | z .' q e e e e e e e e e e e Y . .j J e e e e e e e e e e e e 7 ' c t - z .]. . . . . . . . . . . . . > z e q j & e e e e e e e e e e e 3 c z 7 ' . Y e e e e e e e e e e e >., , , , , , , , , , h ) e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
170"e e - .]. . . .j O e z z e e r & t t _.c m ~.e e e e e e e e e e 2 ' . . . . . .].' / ~.f ^ e e e e e e e e e e e r ^ t - e e e e e e e e e e e 7 j . . . .c L z 7 ]. .j J e + i 3 e e e e e e e e e e e e k ' ].' / e e e e e e e e e e e e 3 ' u e * ' . . . . . . . . . . . . . .' k e q j & e e e e e e e e e e e 3 c z 7 i * e e e e e e e e e e e e % H , , @ @ , @ , , , : v e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
171"e e - .]. . . .j O e 2 & 7 Y e U k m L c m ~.e e e e e e e e e e 2 ' . . . . . . .j 4 e . ^ e e e e e e e e e e e r ^ . U e e e e e e e e e e e * ' . . . .c L z 7 ]. .' + ~.* i . U e e e e e e e e e e e * j c t | e e e e e e e e e e e Y ^ c ' O e + ' . . . . . . . . . . . . . .].T G . ' & e e e e e e e e e e e 3 c z 2 .- e e e e e e e e e e e ,.*.b : : : s s s W : : H N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
172"e e - .]. . . .j O e r * J 2 Y e r G > t > ~.e e e e e e e e e e 2 ' . . . . . . .j J e > ^ e e e e e e e e e e e z m + e e e e e e e e e e e e + . . . .c L z 7 ]. .c t r 7 c z e e e e e e e e e e e 2 j m z e e e e e e e e e e e - :.c ' - - 5 . . . . . . . . . . . . . . .].' ' & e e e e e e e e e e e 3 c z q G e e e e e e e e e e e e Q l s s s s : 8 s s s : H N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
173"e e - .]. . . .' k ~.e | * * 7 e e 7 u > ^ ~.e e e e e e e e e e 2 ' . . . . . .]. q Y ' ^ e e e e e e e e e e e - k e e e e e e e e e e e ~.^ . . . .c L z 7 ]. . .' | z m ' | e e e e e e e e e e e | ].' ^ Y e e e e e e e e e e e / ^ U 2 j . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c z 2 2 e e e e e e e e e e e e *.A : : : s : : s s s W H *.e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
174"e e - .]. . . . .t 7 e Y / 4 3 z e U 4 . . ~.e e e e e e e e e e 2 ' . . . . . .]. q Y u e e e e e e e e e e e - J e e e e e e e e e e e z m . . . .c L z 7 ]. . .' O ~.^ j * e e e e e e e e e e e - m ' u e e e e e e e e e e e e k j ' & e 4 ' . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c z - U e e e e e e e e e e e e N : @ W h h h @ @ @ W h K v e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
175"e e - .]. . . . .t + r e - 3 G q e e 7 + u ~.e e e e e e e e e e 2 ' . . . . . .c .| z ' & e e e e e e e e e e e | i q e e e e e e e e e e e 7 _.c . . . .c L z 7 ]. . .' k e + i k e e e e e e e e e e e z ^ j & e e e e e e e e e e e ~.+ ' j J e u . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e e e e v , d _ _ _ _ _ _ &., &.h ) e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
176"e e - .]. . . . .L m * e e O + 4 ~.e - 3 G ~.e e e e e e e e e e 2 ' . . . . . .c 5 r 7 j J e e e e e e e e e e e 7 j 7 e e e e e e e e e e e q ]. . . . .c L z 7 ]. . .' u e 3 i u e e e e e e e e e e e U . i 4 e e e e e e e e e e e z ^ ' 2 Y f ]. . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e e e e F @.l l l l l l l = l l @.N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
177"e e - .]. . . . .f m . - e z & 3 U e z 4 k ~.e e e e e e e e e e 2 ' . . . . . .' G e 3 i 7 e e e e e e e e e e e * ' - e e e e e e e e e e e * j . . . . .c L z 7 ]. . . ^ ~.* j . Y e e e e e e e e e e e u i * e e e e e e e e e e e - L f | - c . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e ~.7 e F = w w l l l l l = l w @.F e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
178"e e - .]. . . . . .L m 3 e e / J e e z J 4 ~.e e e e e e e e e e 2 ' . . . . .c j 7 U ^ L z e e e e e e e e e e e k - e e e e e e e e e e e 3 j . . . . .c L z 7 ]. . . > z 2 j ^ z e e e e e e e e e e e G i q e e e e e e e e e e e | j c 5 r 2 . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 - e e e e e e e e e e e z k e F l 8 8 8 8 8 8 8 b 8 8 l *.e - ' . . ' ' ' ' ' ' ' ' ' ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' ' ' ' ' ' ' ' ]. .].c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . .].c c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
179"e e - .]. . . . . ._.5 . | e z 7 e e - * 4 ~.e e e e e e e e e e 2 ' ]. ' ' j j 3 e / i 3 e e e e e e e e e e e e u f r e e e e e e e e e e e k ' . . . . .c L z 7 ]. . .c 5 - | j m - e e e e e e e e e e e & i 2 e e e e e e e e e e e 2 j c > e * ' . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 m U e e e e e e e e e e e O + e F = w w w w w w w w w b '.N e - ' ' j 5 . k * 7 | z z z z | 7 * & ^ t ' . . . . . . . . . . . . . . . . . . . . . . . . . j t ^ G J 2 | z z z z - 7 O 4 u > ' ' .c c #.#.#.#.#.#.#.#.#.#.c c c c c #.c c . . . . . . . . . . c #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.1._. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
180"e e - .]. . . . . . .f 5 k ~.e Y e e | * J ~.e e e e e e e e e e 2 j t + G 3 J 7 e - m T - e e e e e e e e e e e r L L Y e e e e e e e e e e Y + ' . . . . .c L z 7 ]. . .c _.| z ' _.| e e e e e e e e e e e 4 i | e e e e e e e e e e e O j . e k ' . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e k 4 e e e e e e e e e e e Y u + e F = w w w w w w w w l b = F e - j + / - e e e e e e e e e e e e e Y | * . ' ' c . . . . . . . . . . . . . . . . . . .c ' ' . * | Y e e e e e e e e e e e e e z 2 k J 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 2 ^ . . . . . . . .' 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
181"e e - .]. . . . . . ._.L ^ | e e e Y 2 * J ~.e e e e e e e e e e 2 j > - e ~.~.U 2 ^ i J e e e e e e e e e e e e | ].5 Y e e e e e e e e e e U + ' . . . . .c L z 7 ]. . .c c 7 z j _.| e e e e e e e e e e e 4 i - e e e e e e e e e e e 4 ' G e G ' . . . .]. ]. . . . . . . . . . . . . .' & e e e e e e e e e e e 4 | e e e e e e e e e e e | i G e F @.l w w w l l n l w w = F e r 7 ~.e ^.>.~ % # o # # # ) ) # C ~ ,.^.e Y 7 + =.' . . . . . . . . . . . . . . . . .' t & 7 Y e e ,.~ C $ I I *.*.*.I ) o X >...e e ~.e e e e e e e e e e e e e e e e e e e e {.' ]. . . . . . .' u U e e e e e e e e e e e e e e e e e e e 7 f c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
182"e e - .]. . . . . . . .f L 3 e e e z q O 4 ~.e e e e e e e e e e 2 j ^ z 7 G u 5 i j & U e e e e e e e e e e e e * j u ~.e e e e e e e e e e r ^ . . . . .c L z 7 ]. . .]. 7 r _.' 2 e e e e e e e e e e e * i - e e e e e e e e e e e 3 ' ' 3 ~.u ' . . .].L . 5 ]. . . . . . . . . . . . .' & e e e e e e e e e e ~.7 Y e e e e e e e e e e e k i G e F @.= w 8 b w w l l w b @.N e e e x C ) l @.@., # ) , d , d d _ h F % Q (.e ~.7 u ' c . . . . . . . . . . . . . G - e e (.Q # -.S l 1 H h @.S 1 = H : [ ( I o ;.e e e /.% % % % % % o % % % % % % o o o x e 2.' . . . . .c +.| e X o % % % % % % % % % % % o C % ! e r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
183"e e - .]. . . . . . . ._.f u z e e | 2 * 3 ~.e e e e e e e e e e 2 i m z 3 i c m + q ~.e e e e e e e e e e e e Y + j + ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e q z e e e e e e e e e e e k ' ' 4 ~.u ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e U e e e e e e e e e e e - 5 j G e F = l n b b w b b b b H @.N e x % $.S @.A -.w g o ) d M d M M d , &.} S $.% ,.e Y O L ' . . . . . . . . . .].' > 2 ~.e >.% F = @.8 8 8 b s @ 8 b b P s h @.l @.y N N Q (.e $ %.] ] ] ] ] ] ] ] ] ] [ %.%.).C e - !.c . . . .j 3 e >.( %.] ] ] y ] ] ] ] ] [ ] %.@.1 ~ e J ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
184"e e - .]. . . . . . . . . G e e e | 2 J & ~.e e e e e e e e e e z 2 7 Y - 7 - z ~.e e e e e e e e e e e e e e - .' u ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e ~.+ ' * r . . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e J ' ' G e F = w l l l l = b b b b @.*.~ F S w 8 w s -.w g o ) d M _ } M M &.N ) = 1 ] @ Q ^.e | . ' . . . . . . . .c ' G z e /.% P @.H A s s s 8 : l : s 8 8 : W @ l w n 1 M S ).E ;.x V [ 6 1 1 1 1 1 ( ( ( B [ ] ] n ~ e }.j . . . > z e # ] 1 ( 6 6 [ 6 ( ( 6 6 = 1 [ l % e - <. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
185"e e - .]. . . . . . . . . / e e e z / 3 G ~.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 e e e e J ' u ~.e e e e e e e e e e z > . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e e + ' 2 z > . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e & j ' G e F = b b l l l B l w w b b B $.= b 8 8 w 8 s b g o ) M M @ M M M _ N ) = 1 1 H S ) >.e r + ' . . . . . .c J ~.e X F @.H b A A A A A A h = A 8 w = s : @ s 8 w [ v = %.] [ o % [ ( 6 6 1 6 1 ( 6 ( = [ ] ] '.$ e r . ' .]. q e X B [ 6 '.( 6 1 6 ( ( 6 6 = 1 ] I /.~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
186"e e - .]. . . . . . . .].t z e e e Y 2 k + ~.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 e e e Y ^ u ~.e e e e e e e e e e z > c . .]. ' T z 2 ' ' i O Y m i / e e e e e e e e e e e / <.z e e e e e e e e e e e u j i q z > j j u e & j . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e q j G e F l 8 b l l l n n l w b 8 ( K K w 8 A b b D w g o ) d } , } M _ _ N ) = 6 1 s P l V X e R & j . . . . / e ^.C = l A A b A A A A A A : s h b w w 8 l K h W 8 [ v @.y 1 1 ] E n 1 6 6 1 1 1 ( 1 1 B [ ] ] n 6 ! e 7 .' + e (.N @.1 1 ( ( ( 1 ( '.( 6 6 = [ y ;.e q ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
187"e e - .]. . . . . . . .' G ~.e U U e | k + ~.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 e e e / ' ]. u ~.e e e e e e e e e e - ' . .].L . . . u z | . . . . . > 2 Y + > 7 e e e e e e e e e e e 2 u r e e e e e e e e e e e k ^ ^ 7 r + . . . . ^ & e 4 ^ . . . ^ _. . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e r > j G e F = b 8 l l l = w n l l w ( : A 8 8 8 b A P w g o ) d M _ M M M _ N ) l 6 6 8 w h @.@.Q e U u ' . .c c q e (.# S b 8 b A A A A A 8 K : = s , A b w : = = 8 W s [ v @.%.1 6 1 [ 1 6 6 1 1 6 6 ( 6 1 6 ] ] [ n = V x e & j L - e % 6 n [ 1 ( ( ( ( ( ( ( ( ( = ] $ e z > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
188"e e - .]. . . . . . . .j O e e | - e U 4 G ~.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 e e r . ' . u ~.e e e e e e e e e e - ' . . . r U U U e ~.U U U U U U Y e U U ~.e e e e e e e e e e e ~.U e e e e e e e e e e e e U U U ~.e U U U U U U U e Y U U U Y - L c . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e k i G e F = b 8 l l l = w w w l n ( : 8 b 8 8 w A -.b g o # M M _ M M M _ N ) l 1 1 s w h w w @.Q e r . ' ].' O e (.$ @.8 8 8 b A A A A K 8 8 : l w h s 8 8 h : b n s 8 [ v = %.1 6 1 1 1 6 6 6 1 6 ( '.'.( ( [ ] ] n D ] o e - T J e ;.n D = [ 1 ( ( 6 '.( ( ( 6 ( '.n ,.e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
189"e e - .]. . . . . . .c _.| e ~./ 7 e e q k ~.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 e e O j . . u ~.e e e e e e e e e e - ' . .c > * O * O U - * * * * * J - ~./ J - e e e e e e e e e e e - O U e e e e e e e e e e e 2 * * - U / * * * * * q e 7 * * * O 4 t ]. . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e | i G e F = w b l l l = w w w w w 6 W A w 8 A b b P w d o # } } d M M M _ N ) = 6 6 8 w h w P H @.! e | !.j 3 e (.$ S 8 8 8 s b K A A A b s K K : w : A b l s : h b 8 w [ v = %.1 6 [ 1 6 6 6 6 1 1 1 '.( ( '.[ ] ] D D ( y X e 2 r e E [ -.D [ 1 ( ( ( ( ( ( ( 6 ( 1 Q e 7 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
190"e e - .]. . . . . . . ^ r e z O q z e - 3 ~.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 e - m c . . u ~.e e e e e e e e e e z 5 c . .c j j j =.z 2 i j j j j i O Y m i / e e e e e e e e e e e / T z e e e e e e e e e e e u i i q z m i j j j i . e G i j j j ' . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e U . + e F = w b w l l = w l w b b 6 W A w 8 8 b 8 P l d o # } } M M M M _ N ) = 6 6 8 w h w b K l -.~ e O . U e o S b 8 s 8 P 8 K : A A 8 8 A K h = : K b l 8 W @ b 8 w [ v = %.1 6 1 6 6 6 6 6 1 1 1 B ( ( B [ ] ] n D = %.E e e e Q %.1 D D [ 1 6 ( ( 6 ( 6 ( 6 [ ) e U . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
191"e e - .]. . . . . . .' G e e | * O 7 e Y O Y 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 ~.G ' . . . u ~.e e e e e e e e e e z > . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e e + ' 2 z ^ . . .' u 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 J u e F = w H l l l l w l w b b 1 : K b 8 8 w : s l g o # d M M d M M _ N ) l 1 1 8 w h w b A s S I /.U z e Q @.b b 8 8 8 8 b K : A A A b 8 K h w : s b l b A @ 8 s b [ v = %.1 6 1 6 6 6 6 1 1 1 1 6 6 6 B [ ] ] n n B y ] Q e ,.-.%.1 n D [ 6 6 ( ( ( ( 6 ( 1 6 ~ e [.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
192"e e - .]. . . . . . .' J e e 2 * J J r e | Y 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 * ' . . . . u ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e ~.+ ' q r ^ . . .' u 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 F = b b l l l = w w w b b ( : 8 l 8 K l 8 s b g o ) d _ } d M M &.v ) l 6 1 8 w h w P b 8 8 S C e e >.W H b b s b 8 s b K : A A A A 8 8 K b h b b b : l b : s b [ v = %.1 6 1 6 6 6 6 1 1 6 1 ( ( ( B [ ] ] D D ( y ] $.,.o [ y 1 D D 1 1 ( ( ( ( ( ( ( [ % e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
193"e e - .]. . . . . . . 7 e U O * 4 G | e U 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 7 +.c . . . . + ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y ^ i q e e e e e e e e e e e q t z e e e e e e e e e e e G ' 4 Y u ' . . .' u 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 F = b b l w b = w w w b b 6 W 8 8 l b 8 w D w g o } , _ M M M } d ) ) l 6 1 8 w : w b 8 b 8 l -.>.e $ @.8 b b b b b 8 8 A : : : : : s 8 K H H = @.@.H l l : W 8 6 v = %.[ 1 1 6 1 1 ( 1 1 6 1 6 ( ( B [ [ [ -.D = y [ B $ B [ y 1 D D 1 [ 6 ( ( ( 6 ( 1 E (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
194"e e - .]. . . . . . .c z e z J * 3 u 3 e e U Y U Y e e e e e e e e e e e e e e e e e e e e e e e e z 5 . . . . . u ~.e e e e e e e e e e z > . . . . . ._.. ^ ]. . . .].' 2 U 5 j 2 e e e e e e e e e e e O i - e e e e e e e e e e e 3 ' ' 4 ~.u ' . . .' u 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 r e F @.w b l = l = w w w b s 1 W P W w @.h b @.'.) C o # o ) , d ) } ) ) l ( ( s b : w b K w w w S % ;.l K 8 8 K b 8 8 8 A 8 K K K 8 8 A l S W ) ) ) ) v l S : W 8 1 v = y [ 1 1 ( 1 [ ( ( 1 6 ( [ 6 6 B [ ] y D n b ] ] 1 w = [ y [ n D 6 1 1 1 6 B 6 1 1 X e {.' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
195"e e - .]. . . . . .c > r e - J J & . > z e 4 + u + 4 - e e e e e e e e e e e e e e e e e e e e e e U u ' . . . . .c > Y e e e e e e e e e e U u . . . . . . . . . . .c c 7 z j .| e e e e e e e e e e e 4 i - e e e e e e e e e e e 3 ' ' & e + ' . . .' u 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 F = b b b b b = b b b w w B s s 8 8 b @.D % X x e e e e >.X o M d v ) = 1 [ W 8 s w b K b b 8 l $.V b s s 8 b 8 8 8 b b K A A : s l @.$ ! ~ e e e e (.X C &.l b 1 v = ] 1 1 [ 1 ( [ 6 6 1 6 6 1 ( 6 B 1 [ y = = B ] [ B D = [ y 1 = D ( 6 6 6 ( ( 6 [ $ e x > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
196"e e - .]. . . . . . + Y e - J J + > 4 Y ~.u i i i j L O e e e e e e e e e e e e e e e e e e e e e e O ' ]. . . . .c 5 Y e e e e e e e e e e U u ' . . . . . . . . . . . . .c ].| z ' _.| e e e e e e e e e e e 4 i - e e e e e e e e e e e * ' + e & ' . . .' u 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 F = l w b b b l b b b w w n b A b w l o ,.e e r - | | - Y e ^.~ # g ) = 1 [ : s s w b K w w 8 b b l 8 8 8 8 8 8 8 8 8 l : : A A @.*.;.^.e ~.z | | | z e e (.% D ] v = y 1 1 1 6 6 1 6 1 [ ( '.6 [ 1 ( ( 1 ] B ( [ 1 6 6 6 ( 6 1 1 6 1 [ ( 6 6 6 B [ n >.e ` ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
197"e e - .]. . . . . .' k e e | * 4 u / e e ~.u + 2 J m ' ' / e e e e e e e e e e e e e e e e e e e e e z m . . . .c 5 U e e e e e e e e e e ~.& ' . . . . . . . . . . . . .c 5 - | j m - e e e e e e e e e e e k i 7 e e e e e e e e e e e / j > e 4 ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e Y Y e e e e e e e e e e e e e F = l w b b b l w w w b w B l = @.$.! e e | k ^ ' ^ 4 3 k }.z e ^.% } = 6 1 8 8 : w b K b w b b s w 8 8 8 b b b 8 8 8 l 8 s 8 S o (.e r * u T m 3 3 3 k 2 ~.e ;.( g = y 1 6 6 6 6 1 6 6 [ ( '.6 6 1 6 ( ( 1 '.B [ B B ( 6 1 ( ( 6 6 1 1 6 6 ( ( '.[ C e | 4.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
198"e e - .]. . . . . .' 4 e e - * k / e e z z u & e e - m ' > z e e e e e e e e e e e e e e e e e e e e e k ' . . . .c t - e e e e e e e e e e e k j . . . . . . . . . . . . . m z 7 j > z e e e e e e e e e e e G i 7 e e e e e e e e e e e 7 i c m Y / . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e q | e e e e e e e e e e e e e ) @.l l w w w w w w w P : '.s [ @ ;.e x & j . 4 J q O + O e e % 1 '.( b b : w b s 8 b w b s 8 8 8 8 8 8 8 b 8 8 K 8 b @.% e e q m ' ' > 4 4 * q 3 & - e >.v S y [ 1 1 1 6 [ ( 6 [ 6 ( 1 6 1 1 1 1 1 6 6 1 B ( 1 6 6 1 6 6 6 1 1 1 1 6 ( [ *.e Y u ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
199"e e - .]. . . . . .j J e e - J * U e | k q + 5 r e e J ' j * e e e e e e e e e e e e e e e e e e e e e | ' . . . .c f - e e e e e e e e e e e J j . . . . . . . . . . . . . ^ Y O j . U e e e e e e e e e e e + i / e e e e e e e e e e e | c L - | . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e ~.u 3 e e e e e e e e e e e e e ! S l l l l l l l l l l w = : [ ! e ~ u j c . . u q 2 4 4 7 & 4 e ^.) [ ( s P K b 8 8 8 8 b 8 A 8 8 8 8 s s s 8 8 8 8 K @.$ e e J ' . . . * q O k * q u | e ~ ( y 1 1 1 1 6 [ 6 6 [ 6 ( 1 6 6 6 1 1 [ 1 6 6 1 1 1 ( 6 1 1 1 6 6 1 1 1 1 1 ( ~ e * ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
200"e e - .]. . . . . .j / e e r J 2 e 7 + 3 O u ' q e e - c ' G Y e z O q U | 2 e e e e e e e e e e e e e U u ' . . .].].7 e e e e e e e e e e e O ' ]. . . . . . . . . . . . . . e 4 i u e e e e e e e e e e e Y u i * e e e e e e e e e e e z > ].7 z . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e z > U e e e e e e e e e e e e ,.g H h h h h : h h h W 8 l l o e x . j . . . . ._.5 . * 7 k 2 & 4 e >.n 1 : s b s 8 8 8 8 b 8 s 8 8 8 8 8 s s s s s 8 H @ >.e * ' c . . . ._.L m G q O 3 2 u - e o %.1 6 6 ( ( 1 ( 6 1 B = '.B '.= B @.B = n l = B B n = B B B B = = = B = 1 % e - m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
201"e e - .]. . . . . .j / e e U / J * G & 4 O J i & e e r > ^ r e 7 i m z 4 ' r e e e e e e e e e e e e e * ' ]. . .]. q e e e e e e e e e e e 7 ].c . . . . . . . . . . . .' G e G i & e e e e e e e e e e e z ^ j 3 e e e e e e e e e e e U u ' ' O e ^ c . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e ~.u ' 2 e e e e e e e e e e e e e % @.s : : : s W W W h h b P ,.e 6.j . . . . . . .c c j + | & 7 u | e o ] W W w s s 8 8 8 s 8 : s s s s b s s s s s 8 l % e | T . . . . . .].c J q 3 / G e ,.6 [ 6 1 6 B 1 ( 6 [ = l B B F ( B B 6 B ( = B = B = = n B B B B B = B 6 E (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
202"e e - .]. . . . . .' J e e e 7 4 G G k 3 J | .5 z e U . ' ^ r e 7 .^ z J j / e e e e e e e e e e e e e z 5 c . . .' * e e e e e e e e e e e - 5 c . . . . . . . . . . . .' J e . j J e e e e e e e e e e e - m j G e e e e e e e e e e e e & j j 3 e & ' . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e Y e / i & e e e e e e e e e e e e e ;.8 s s s s w s s s W , @.o e | 5.c . . . . . . . . . .j + 7 3 / G e >.1 b s : b 8 : s 8 b s : s s s : s s 8 s s s b s x e G ' . . . . . . . . . .c j * J q & 7 e $ ] 1 6 6 B 1 6 1 y ( = B B $ I 1 B ( ( B n 1 ( D B 6 = n B B 1 B n B 1 X e 2 ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
203"e e - .]. . . . . .' 4 e e e - J k G G + G Y + i 7 e z t ' + Y e | t ^ z J i G e e e e e e e e e e e e e e G ' . . .j 3 e e e e e e e e e e e Y ^ . . . . . . . . . . . .' 7 z > j 7 e e e e e e e e e e e | .' . e e e e e e e e e e e e J ' ' u ~.O j . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e O | z L L z e e e e e e e e e e e e ^.v b @ W W W $.@ W $.8 l ! e 4 j . . . . . . . . . . . .j * J 2 + | e $ 6 = b l w w w w l l l w w l l w w l b w l @.I e >.!.c . . . . . . . . . . .].L 2 3 / & e ;.'.1 ( '.'.'.'.( 1 = l = S # ;.'.= = '.@.l n P s b @.= = = = = = n 6 # e r ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
204"e e - .]. . . . . . + Y e e Y O k + . > . e O j & e 7 ' j * e e | L ^ z J j t - e e e e e e e e e e e e e 7 ' . . .' G e e e e e e e e e e e e + . . . . . . . . . . .].c z | ]. - e e e e e e e e e e e 2 j ^ U e e e e e e e e e e e | c c .z | c c .' u e & ' . . . . . . . . . . ' & e e e e e e e e e e e & 3 e G i / e e e e e e e e e e e e e Q H g &.&.g &.g &.g , $.>.Y u ' . . . . . . . . . . . . . q J k O e % @.h : h h h h h h h h : h h h h h h h h h H Q e 3.' ]. . . . . . . . . . . . .' 4 J / u U /.D ( B B B B B ( 1 n l = 6 ) e o 1 l n = = B D D D n n B n n n = B B ,.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
205"e e - .]. . . . . .].5 z e e e | k u > t > e z c ^ - u j > z e e | t ^ z J ' ' * e e e e e e e e e e e e e r . . .' u U e e e e e e e e e e e J ' . . . . . . . . . . . u ~.O i ^ r e e e e e e e e e e e * j c 5 - e e e e e e e e e e e U 5 c j 2 Y ^ .' u e & ' . . . . . . . . .+.^ > ' & e e e e e e e e e e e 3 > e q j u e e e e e e e e e e e e e >.h l b l s l P D B ] F e z m c . . . . . . . . . . . . .c 2 3 3 ` e Q : , , _ _ _ _ _ _ &.g d _ _ _ _ _ _ _ _ _ h X e 3 j . . . . . . . . . . . . .' G O * G - e I v ) v v v } v &.} ) } v o e ,.) } } } ) ) # # # # # # # # # # ) ! e | f c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
206"e e - .]. . . . . . .].O e e e ~.7 + m m ~.~.G _.^ ' 2 e e e 7 _.^ z J ' . Y e e e e e e e e e e e e e J j . . > z e e e e e e e e e e e 7 j . . . . . . . . . . .j 3 e & i k e e e e e e e e e e e e 3 ' c .7 e e e e e e e e e e e e & ' & e & ' .' u e & ' . . . . . . . . . ~.q j & e e e e e e e e e e e 3 j 7 U t :.| e e e e e e e e e e e e e # @.b w 8 = l n 1 y E e - j . . . . . . . . . . . . . . O 4 3 ` e ! P W W @ @ @ @ @ @ h @ , @ @ @ @ @ @ @ @ @ H X e 2.' . . . . . . . . . . . . .' + * 4 k | e ) g d g g d M g $.v v v g o e e C , N v } v # # # ) ) ) ) # # ) o (.e 2.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
207"e e - .]. . . . . . . .u z e e e e z * u u z 2 u ' 5 q e e e e 7 ^ z J ' ].c 7 e e e e e e e e e e e e e - L c .].' | e e e e e e e e e e e z 5 c . . . . . . . . .c 7 U 5 j / e e e e e e e e e e e Y u .j O e e e e e e e e e e e e q j > U | .' u e & ' . . . . . . .c c | e q j & e e e e e e e e e e e 3 i 3 e k i 4 e e e e e e e e e e e e e ! @.n = 8 B = = 6 [ 0 e z f c . . . . . . . . . . . . .c 2 3 3 3 e Q l W h h h h h h h @ h h @ @ @ h h @ @ @ @ H X e k j . . . . . . . . . . . . .' G O * G - e F = w P P s W D [ s @ W H # e /.# l P W , W v v d &.V @ &.g d &.$.! e 7 c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
208"e e - .]. . . . . . .f 5 3 U e e e e e e U + i ' c > | e e e e e 7 ' ^ z J ' .j k e e e e e e e e e e e e e e + ' . .j 2 e e e e e e e e e e e ~.G ' . . . . . . . . . ^ ~.2 j 5 - e e e e e e e e e e e r L c .j 3 e e e e e e e e e e e e - m ' q e . ' u e & ' . . . . . . .j k e e q j & e e e e e e e e e e e 3 j ^ U 7 j ^ r e e e e e e e e e e e e R &.@.= 8 B = l '.1 -.x U . . . . . . . . . . . . . ^ q J k J e C l W W @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ l X e J ' . . . . . . . . . . . . .' 4 J / . r ^.&.b b h : s h 8 1 W , @ H # e Q = h s @ _ , ) } } M _ , _ _ d _ W } x e & ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
209"e e - .]. . . . . . . .5 ^ 3 - Y ~.e e ~.U k G * ^ f z e e e e e 7 j ^ z J ' . > z e e e e e e e e e e e e e 2 ' . .' 3 e e e e e e e e e e e e O ' ]. . . . .j ' . .j O e + j u e e e e e e e e e e e e | c ]. .' + Y e e e e e e e e e e e e & ' ' + e q ' ' u e & ' . . . . . . > z e e q j & e e e e e e e e e e e 3 ' j 7 U ^ i 7 e e e e e e e e e e e e e % 6 = s ( '.l 6 [ [ ! e k j . . . . . . . . . . . .j * J 2 u 7 e o = &.8 h h h h h h h h @ @ @ @ W @ , @ @ @ : o e | +.]. . . . . . . . . . . .].L 2 3 q u e >.@ @ s s W h h s 6 W , h H # x &.: h 8 h , , } } } M _ , , _ d _ s h % e z m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._._. ._. . . ._.f _.' J e e ",
210"e e - .]. . . . . . . .t > u k / 7 | | 2 / Y e e k i 2 e e e e e 2 j ^ z J ' . .j 2 e e e e e e e e e e e e e r . . u e e e e e e e e e e e e z 5 c . .].t O 3 c ' ^ Y 7 j / e e e e e e e e e e e e O . .c L z e e e e e e e e e e e e | ].' 7 e + i u e & ' . . . . .c ' 2 e e e q j & e e e e e e e e e e e 3 ' ' & e k i G e e e e e e e e e e e e e ~ = '.: '.( b ( ] ] C e 7 c . . . . . . . . . .j + 7 3 / . ~.>.g 8 = d @ @ @ @ @ @ @ @ W @ @ @ @ @ @ @ @ @ , @ R ~.. . . . . . . . . . .c j * * q & / e % S n : h s W h 8 1 h , W K o % l W @ s h , , } M } d _ _ _ , _ d : , , ~ e O ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f t L f L .t L L 5 t ' * e e ",
211"e e - .]. . . . . . . ._.5 ^ + 3 J O O * O ~.e e 2 j & e e e e e 2 j ^ z J ' . . + e e e e e e e e e e e e e e 4 ' .c 5 r e e e e e e e e e e e e k ' . .c L r 7 j 2 e + j > r 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 & ' ^ U - 5 . e & ' . . . . .' 3 e e e e q j & e e e e e e e e e e e 3 ' c 5 r | ' m z e e e e e e e e e e e e ^.) 1 : '.B l ( [ ] N x e + ' . . . . . . .].c j u | & 7 . / e X = W @ s @ @ @ @ @ @ @ @ @ @ @ @ W @ , @ @ @ h 8 ! e q ' ]. . . . . . .].]. 4 2 3 q u /.R ) = 8 : w : s h 8 [ h _ @ h I W : W @ h h , @ } M M d _ _ _ _ d _ _ , , # ^.~.u ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.L 5 t m c 5 5 L m L ' J e e ",
212"e e - .]. . . . . . . . .f 5 ^ u G 3 4 4 J ~.e e z c ^ Y e e e e 2 j ^ z J ' . .c L - e e e e e e e e e e e e e - T c ].c 7 e e e e e e e e e e e e - Z c .c L z 2 i 3 e 2 ' j J e e e e e e e e e e e e Y u ' . . .' * e e e e e e e e e e e e e - 5 ' & e - 4 e & ' . . . .' u U e e e e q j & e e e e e e e e e e e 3 ' ].' / ~.^ j / e e e e e e e e e e e e e Q 6 8 = ( w ( [ [ H C e - 5 . . . . ._.L ^ * 7 k 2 k 2.e (.v K h @ s h h h h h h h h @ @ @ @ h h @ @ @ @ h A v (.e & j ]. . . . ._.t 5 u q / 3 7 ^ 7 e ! l : s 8 b s s @ 8 [ h , @ @ s W W W @ : @ , @ } } d _ d _ _ _ d _ d , _ h Q e | 7.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].L m > t 5 > ^ > > ^ 5 ' J e e ",
213"e e - .]. . . . . . . . . .f L m ^ . u + & ~.e e Y u f - e e e e 2 j ^ z J ' . . .' J e e e e e e e e e e e e e e + .' 4 e e e e e e e e e e e e e k j .c L z | J e z > j ^ z e e e e e e e e e e e e - L c . . .' + e e e e e e e e e e e e e e / j ].' & r e e & ' . . .' > z e e e e e q j & e e e e e e e e e e e 3 ' .' G e J i + Y e e e e e e e e e e e e x V w l 6 b 6 ] 1 : g ~ e 7 |. . . . . 2 2 4 4 7 k u r e % w , @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W , H % e r u ' ]. . . ^ * q O k J 2 ^ {.e >.&.8 W W 8 s P 8 h 8 [ W , @ , s s @ W @ P @ _ , } } d , d _ _ , d d _ _ _ , g >.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.f f ].f ^ ^ 5 f t ].' J e e ",
214"e e - .]. . . . . . . . . . . .f L 5 m m . ~.e e e 4 i q e e e e 2 j ^ z J ' . . .' u U e e e e e e e e e e e e e q j .' + Y e e e e e e e e e e e e z > ' c L z e e | ^ ' ' 2 e e e e e e e e e e e e e / j . . . . > z e e e e e e e e e e e e e e 4 j c ' m * e & ' . .' ^ - e e e e e e q j & e e e e e e e e e e e 3 ' .c t z - _.' - e e e e e e e e e e e e e o @.n 6 b 6 ] 1 W h F x e | ^ j ' ]. . 4 J 2 O . & (.e Q 8 h @ @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W , , H Q e U 3 ' c ^ 4 4 * 2 3 . 7 e x *.l : s 8 s : s b h 8 [ W , @ @ @ W W h @ s W , , } } M _ d _ _ _ _ _ _ _ _ _ : o e r ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]. . .].]. .].].].].].].].f > 5 ]. .].].' J e e ",
215"e e - .]. . . . . . . . . . . . . . ._.c > ~.e e e 2 i 4 e e e e 2 j ^ z J ' . . .]. | e e e e e e e e e e e e e z ^ c t - e e e e e e e e e e e e e | m ' f 4 O & +.j ' J e e e e e e e e e e e e e ~.G ' . . . .c 7 e e e e e e e e e e e e e e ~.4 ' j . e & ' j + z e e e e e e e q j & e e e e e e e e e e e 3 ' . .' O e u i J e e e e e e e e e e e e e ;.l = 6 b 6 ] 1 W _ S *.,.e r * . i u * & u G 7 e e C s W @ @ @ @ W @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W @ , h w Q e e 7 G 5 i k 2 3 + u 4 r e ,.I @.W h h s 8 W W : @ s 6 W , h @ @ W W @ , s s , , } } M _ d _ _ d _ , _ _ _ d , h X e 2 ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f t .t 5 t t 5 m L c t 5 L 5 t m > ^ ^ f c ].c c ].' J e e ",
216"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e | c + Y e e e 2 j ^ z J ' . . . .' 3 e e e e e e e e e e e e e e 3 ' .j / e e e e e e e e e e e e e e - ^ ' i i j j t O e e e e e e e e e e e e e e r L c . . . . .j 4 e e e e e e e e e e e e e e e e 7 u ' . e G j > O U e e e e e e e e q j & e e e e e e e e e e e 3 ' . . u e * j ^ Y e e e e e e e e e e e e /.I ( 6 b ( ] [ W , l @.F ! e e U | {./ O {.- e e x o 8 h @ @ @ @ @ W @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h , @ @ h 8 o ,.e e z 2 | {./ | U e e ;.N l = W @ , h P W , @ , h ( : @ : h @ W W h , h s @ , } } d &.d , _ d d _ _ _ _ _ _ , ) (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .L 5 f t m L ^ t m ^ t L ^ . m u u u u . . . ^ ^ > _.^ u t > q e e ",
217"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e z > > r e e e 2 j ^ z J ' . . . . > r e e e e e e e e e e e e e | +.]. u e e e e e e e e e e e e e e e r O + u u 3 - e e e e e e e e e e e e e e e q ]. . . . . . ^ r e e e e e e e e e e e e e e e e ~.7 q e 2 q U e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . .c L - z c 2 e e e e e e e e e e e e e C ( 6 b ( ] [ h , = 8 l '.) ! x e e e e e e ~ Q &.H h @ @ @ W h @ @ @ @ @ @ @ @ @ h 8 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ H &.C ~ e e e e e e (.X # h : b ( w @ , , 6 B &.h , W B h , @ s h W W h h , 8 h @ } } d _ _ , _ _ d _ _ _ _ _ _ _ : % e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .m m m 5 > 5 ^ L > . 5 . ^ u ^ . . u u + + ^ + + + + + G + u / e e ",
218"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e ~.u j z e e e 2 j ^ z J ' . . . .]. q e e e e e e e e e e e e e ~.u c L - e e e e e e e e e e e e e e e e Y U U e e e e e e e e e e e e e e e e e G ' . . . . . . .' 7 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 e e e e q j & e e e e e e e e e e e 3 ' . . .j J e + i k e e e e e e e e e e e e e >.n 6 b ( ] [ W , = P 8 8 w S v I # % o # ) @ H , h @ @ @ @ W h @ @ @ @ @ @ @ @ K ) % K @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h l @ # # o o o # v H @.&., s ( w W @ , '.B @ W @ : ( W , @ s @ @ h W w g W @ @ } } _ _ _ , _ _ d _ _ _ _ _ _ _ , , ~ e * ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .> m > ^ . 5 . m m ^ . ^ . G . u t + G u u + G G k k & k . G O e e ",
219"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e + i | e e e 2 j ^ z J ' . . . . .' G ~.e e e e e e e e e e e e e / j .' J 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 e e e e e e - t c . . . . . . .' k 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 e e e e q j & e e e e e e e e e e e 3 ' . . .' u ~./ j L z e e e e e e e e e e e e ^.# [ b ( ] 6 W , l 8 8 P s w : [ '.@ : K l h @ , h @ @ @ @ W h @ @ @ @ @ @ @ h K X ^.*.: @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h A 8 K : : K : , = , , : B b s W h w l W : h K 6 s @ h s @ @ s 8 n M _ , @ } M ) , _ , _ _ d , , , _ _ _ _ _ h # ^.Y . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f ^ > c m . 5 m . . f c t ^ 5 > _.^ . + + .. ^ . > . & t ^ * e e ",
220"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 3 j 2 e e e 2 j ^ z J ' . . . . .c f - e e e e e e e e e e e e e z > ^ r 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 e e e e e J ' . . . . . . . . > z 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 e e e q j & e e e e e e e e e e e 3 ' . . .].' - z > j / e e e e e e e e e e e e e ! [ b ( ] 1 W , l 8 s P s w @ ( D g , , W , , @ @ @ @ @ @ W h @ @ @ @ @ @ @ A $ e e ! H h @ @ @ @ @ @ h @ @ @ @ @ @ @ @ , @ h @ , , @ @ , P , , : w : : : : : : s s @ : @.@ , h = W d h K 6 M d d , } } ~ o , _ _ _ d d _ , , _ d d _ _ : ! e | c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c c .c c ].]. . . .c c c .c .c c c ' ].j J e e ",
221"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 4 j * e e e 2 j ^ z J ' . . . . . .' * e e e e e e e e e e e e e e k ' .' q 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 e e e e r > c . . . . . . . . .' * 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 e e e q j & e e e e e e e e e e e 3 ' . . . .' 3 e G i + e e e e e e e e e e e e e (.$.= ( [ [ W , l w 8 P s 8 @ ( n g , , W , , @ @ @ @ @ @ W W h h @ @ @ @ h W ~ e e e % H @ @ @ @ @ @ @ @ @ @ @ @ @ @ h @ W @ h s b @ @ h s &._ : s 8 h s : @ h s h : 8 6 , d _ 8 8 h d g @ , @ _ , _ Q e >.} M d _ _ d } M , , , } M M , g ,.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]. . .].]. .].].]. . ._. .].f f ].].].].].]. .]. .c c .c c c ]._.L ].c c c ].c ]. .c c . c .c ].' J e e ",
222"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 4 j O e e e 2 j ^ z J ' . . . . . . . ~.e e e e e e e e e e e e e | ]. . Y 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 e e e * ' . . . . . . . . . . ^ r 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 e e q j & e e e e e e e e e e e 3 ' . . . . ^ ~.2 j L | e e e e e e e e e e e e e o S 6 [ [ W , 8 w w 8 n W @ ( D g , , W , @ @ @ , @ @ @ @ @ @ W @ @ @ @ l C e - [.e (.v A h h h h h h h @ @ , , @ , @ @ W _ @ l ( @ _ @ W , , b W l @ 8 P h W l @ : W ] n &._ , s 6 @ &.d -.W , h # R e e C _ M d : h M } _ h n d M } _ , % e z > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .t _.].t t ].f f t c 5 . f ].> m ].f L t f t ].L .m 5 L > > _.^ . c > > > t 5 ^ Z c m ^ 5 +.^ m ].m ^ c .J e e ",
223"e e - .]. . . . . . . . . . . . . . . .c m ~.e - | e 4 j O e e e 2 j ^ z J ' . . . . . .c Z 7 e e e e e e e e e e e e e Y . ].' q 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 e e z ^ . . . . . . . . . . .' O 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 e e q j & e e e e e e e e e e e 3 ' . . . .c c 7 U m j J e e e e e e e e e e e e e ~ @.6 [ 6 h , K b P : D s @ ( n g , , s , , @ , , @ @ @ @ @ @ h @ @ @ H o e Y u j {.e >.&.K , @ @ @ @ @ W @ , , @ @ @ s @ d , b 6 s , @ , d , W W = : b P , @ 8 h w w = W @ , h @ W W @ g n P h : ;.e | U /.# _ _ 8 d , } _ _ W _ g } K K d ;.e / ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 > t L > ^ L ^ ^ ^ t ^ + t ].u > _.u u . . ^ ' u ^ + G ^ + G + L + + c + & 4 ^ + k u . & 3 . . 3 u ' u 3 . + 7 e e ",
224"e e - .]. . . . . . . . . . . . . . . .c m e / . .| k i O e e e 7 j ^ z J ' . . . . . . .j 3 e e e e e e e e e e e e e e O j .' . r 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 e J ' . . . . . . . . . . . . > z 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 e q j & e e e e e e e e e e e 3 ' . . . . .j k e k i . U e e e e e e e e e e e e /.) [ ] 1 @ , b P P s P h h ( n &., , W , , W @ @ @ , @ @ @ @ W @ @ H # R e 4 j 5 | e ~ &.: @ @ @ , @ @ @ @ @ , , @ W @ _ , : n W &.&.( , _ 8 @ @ s = n @ h b @ @ s [ W &._ : 8 D , , &.8 8 K o e z . - e ~ _ d @.s M } , h W d _ M d _ @.v ^.~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].L ^ L . L 5 . . 5 ^ > m u m . . f G m u k ^ T 3 & & & . u G u ].. G ' L + > u 4 k & ^ G k > 4 5 . G 3 4 & 7 e e ",
225"e e - .]. . . . . . . . . . . . . . . .c m e G i u | . i 2 e e e 7 j ^ z J ' . . . . . . . > z e e e e e e e e e e e e e - m _.j J 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 - L c . . . . . . . . . . . . .j 3 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 e q j & e e e e e e e e e e e 3 ' . . . . .c m U 7 ' | e e e e e e e e e e e e e Q ] ] [ @ , b 8 8 P D s @ 6 n &., , s , , @ @ @ @ , , @ @ @ h @ H I ,.e / c .' ^ z e >.&.H @ @ h h @ @ h W @ @ h @ , @ , W P P , , B h @ B : @ w l b s l = ( 8 b '.: : h = n = W @ , = = &.,.e & * * - e % h b b , M @ 8 : , K , : , K l C e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.^ u ^ > . u m u c . ^ ].+ . G & 5 G ].+ + G + 3 u 3 & m & 3 G t & J m k J & u & * ^ u 3 * ^ + 4 k . k O 4 & / e e ",
226"e e - .]. . . . . . . . . . . . . . . .c m e & i / 4 ' L z e e e 7 j ^ z J ' . . . . . . . .' 2 e e e e e e e e e e e e e e & ' .c L - 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 Y + ' . . . . . . . . . . . . . .]. 7 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 q j & e e e e e e e e e e e 3 ' . . . . . .' 7 Y ^ j & e e e e e e e e e e e e e ,.n y [ @ , l s : 8 8 8 h 6 n _ , @ s , h s @ @ @ @ @ @ @ @ h l o (.e {.4.c . . .' ^ - e ,.I H h @ h h h h @ @ @ @ P d , , , h 8 , _ _ d _ @ , , H @ @ @ W h 8 @ : @ _ , , , , s , _ d h @.Q e 7 + 2 . | e x } h M d } M d _ d d } _ _ M _ d >.e }.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].Z 5 f c L L c f ._.f c t ]._.5 5 _.t .f +.5 L Z c 5 5 f m m T ].5 m t 5 5 > f f > _.5 m m +.^ 5 L > t J e e ",
227"e e - .]. . . . . . . . . . . . . . . .c m e 2 ' j i j * e e e e 2 j ^ z J ' . . . . . . . .' G e e e e e e e e e e e e e e 7 . .' u U 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 * ' ]. . . . . . . . . . . . . . . . > z 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 ~.k j & e e e e e e e e e e e 3 ' . . . . . .' G e 3 j ^ z e e e e e e e e e e e e e $ y [ : @ b : : b 8 l , '.D _ &., W &., h h h h @ h h @ A 8 % /.e q 7. . . . . .' ^ | e x % b K , @ @ @ @ , , , _ h = , &.&.@ h P } M M M } } M } _ # % } } } M v ) ) ) } } ) ) ) } } o e U u 2 + q G {.e X } # # # ) ) # # ) # # # # # # % e (.u ' . . . . . . . . . . . . . . . . . .].]. . . . . .].]. . . . . . .].]. .c c .].].].]. .]. . .c c .]. .].].].].]. .c c ].c c c .c c .c c c ].].c ].].c c . .c ]. .].c c ' J e e ",
228"e e - .]. . . . . . . . . . . . . . . .c m ~.~.O k k O ~.e e e e 2 j ^ z J ' . . . . . . . . 5 - e e e e e e e e e e e e e Y ^ . .' 3 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 7 +.c . . . . . . . . . . . . . . . . .' + U 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 U & ' & e e e e e e e e e e e 3 ' . . . . . . m z - ' ' q e e e e e e e e e e e e e X [ *.Q : K , , h , s _ w h M d g , d _ _ _ _ _ _ _ , : ) ;.e ~.[. . . . . . . .' !.q ^.e ;.) : , _ _ &.g g g M h s M d d _ s B } g g g M M s g C x # g g &.&.} } } M } } ) } v g v ~ e }.3 * & q j . r e % ) ) # ) ) # ) } ) # # # # } } X e 7 c .].c c . . . .c c ].].c c > u u ^ c c c ^ . c ].c c ].c .c f u ^ ]. ^ 5 c c c c > ^ c c c .c c c c ].c ' u m ]. c c ].c c c ].].c c c c c . ' J e e ",
229"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 j ^ z J ' . . . . . . . . .' O e e e e e e e e e e e e e e * j c c ' 4 e e e e e e e e e e e e e e e e e e e e e e e | m . . . . . . . . . . . . . . . . . . .j & Y e e e e e e e e e e e e e e e e e e e e e e e z + j .' & e e e e e e e e e e e 3 ' . . . . . .].' / ~.. j G ~.e e e e e e e e e e e e x B < e ;.N b A l W b _ ( n d &.&.h _ , @ @ , , H 8 *.Q (.e z G ' c . . . . . . . . .c k z e /.Q v h K h , , , M W [ g g _ d @ = ) M d , h v o ~ e Q , M M s s } } M A , , d M d ] % e - u 7 . 7 ^ c j }.e >.) } ) d , } ) } : d M ) ) _ d v ,.e 3 5 > .m . ^ f ].].f . ^ m > ^ u 5 t . & > ^ u ^ > k L u . t . c ^ L + + L k m ].. G u 3 4 t . + u c u G > . u + c u + 4 . + & 5 & . u ].u G . u m m . 5 & . ^ ^ _.u q e e ",
230"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i m z 4 i j . . . . . . .' u U e e e e e e e e e e e e e - ^ 5 m m 5 j 4 ~.e e e e e e e e e e e e e e e e e e e e | 5 ' . . . . . . . . . . . . . . . . . . . .].' G U 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 e e e 3 ' . . .].' j j i u e J i j - e e e e e e e e e e e e e C I e e ^.! # B @.l h 1 = d &., h , h h : H 8 # Q /.e /./ > j ]. . . . . . . . . . . .c ' > / Y e ^.! o @ H h h w _ @ @ : b , h '.} d , ) % ~ e e /.$ # # o # ) I o o o ) # I # o o x e 2./ k O 4 ' .c !.| e X o o # # *.# % o # # o o o o *.! e z u . . . u ^ . c L + + + + G > + u & ^ k . G m Z G 5 + k u G ' G > . u ].& > > G k ^ G G t 3 G + 5 + k 3 k & G & & . J & + + & 3 & & & G G 3 k ^ ^ & & 3 3 4 u +.k + 7 e e ",
231"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e z 2 7 Y - 2 7 & . . . . . . . | e e e e e e e e e e e e e e r r r U - ' ' k r e e e e e e e e e e e e e e e e e e 2 L . . . . . . . . . . . . . . . . . . . . . . .' + z e e e e e e e e e e e e e e e e e e Y O 5 ' . . .' & e e e e e e e e e e e 3 ' . .c 5 7 - - - - e r - - U e e e e e e e e e e e e e ^.R e ~.U e /.>.! $ I $.$.d g g &.d } v # X >./.e ~.{.u ' . . . . . . . . . . . . . . .c ' u {.U e ^.,.;.o I v N d &.h W g } F # Q >.(.e e e e e ..............................^.e {.& q G 7 T c . .' + Y e /.............................^.e e 7 . > ^ G + L & ^ L G G k k + 5 & 5 ^ u k k > k > > 4 f + & * G & ^ k > + k _. 4 u t G 4 G j u & G 3 5 . 3 k / 4 > u J k t J 4 + u 4 4 3 k J G . 4 3 u 4 3 4 4 k & G & * & | e e ",
232"e e - .]. . . . . . . . . . . . . . . .c m r U U U U U U U U U U r z z ~.r z r 4 . . . . . . .' k Y U U U U U U U U U U U U e r q 2 2 O ].' . 7 e e e e e e e e e e e e e e e z k . . . . . . . . . . . . ._. ' ' ' ' ' ' ' ' ' ' i <.O U e e e e e e e e e e e e e e e | + ' . . . . & Y U U U U U U U U U U k ' . .c m | z z z z z e r z z U U U U U U U U U U U U U U U z 7 ^ O z e e e e e >.~ ~ ~ ~ >.^.e e e e z O u ' ' ]. . . . . . . . . . . . . . . . . .].' ' ^ [.- ~.e e e e ,.~ ~ ;.~ >./.e e e e r {.7 - - - z z z z z z z z z z z z z z z z - > & ^ G u . . . .' [.z z z z z z z z z z z z z z z z z - z - + Z u G > ].+ > _.. . . G k G 5 ^ & G ^ 3 & . ' . & > 5 G k m > 3 4 ^ + G 5 5 & + ^ G k m c c u > u f ].c + & G u L ^ ^ . k & 5 + k m u . . ^ . 4 4 m G + . t 3 + + + u ' q e e ",
233"e e - .]. . . . . . . . . . . . . . . . .f . . . . . . . . . . . ^ 5 . z * L > L . . . . . . . .].t . . . . . . . . . . . . ^ 7 U L i i j . . . T G | U e e e e e e e e e ~.z J > ' . . . . . . . . . . . . . . .' k | 7 7 7 7 7 7 7 7 7 7 7 7 z e e e e e e e e e e e e U 7 G :.' . . . . . .].5 . . . . . . . . . . . 5 ]. . . ._.m m m m L + e / f > . . . . . . . . . . . . . . ^ m m ' m u }.7 z z z z z r z z z z 7 }.u m j . . . . . . . . . . . . . . . . . . . . . . .c j L . 3 {.- z z z z r z z z z | O G > L m m m m m m m m m m m m m m m m > > > m c ' . . . . . .|.> > m m m m m m m m > > > > > > > m m > f c c . c .c c ' u ^ j ].c ' ' m + _. ' c ]. ' ^ 4 u .' ' ].].' c ' ' ]. . . c . . . ' ].c c c ' ' ]. ' ]. c <.G L ' c ].' _. ' J e e ",
234"e e - .]. . . . . . . . . . . . . . . . . . ' > z J j c . . . . . . . . .c i G e * j . . . . . .c ' ' u 4 q | - - - - 2 * G t ' . . . . . . . . . . . . . . . .j 4 z - - - - - - - - - - - - - - - - - - - - - - | q 4 . ' ' c . . . . . . . .c c . . . . .c ' T - z :. c . . ' ' ' ' ' ' . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' c c . . . . . . . . . . .c ]. . . . . . . . . . . .].]. . . . . . .c . . . . . . . . . . .f c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c . . . . . . . . . . .' J e e ",
235"e e - .]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > - 3 ' . . . . . . . . . . . . . . . . . . . . . . . .c t - q ]. . . . . . . . . j ' t 5 5 5 5 j ' ]. . . . . . . . . . . . . . . . . . .].t 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 t ' j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .j J e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
236"e e - .]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.m L ]. . . . . . . . . . . . . . . . . . . . . . . . . .c > . . . . . . . . . . . . .].c c c c c c . . . . . . . . . . . . . . . . . . . . . .].c c c c c c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c > J + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
237"e e - ].c ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].c c ].].].].].].].].].].].].].].].].].].].].].].].].].].]. ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].]. j .].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].' J e e ",
238"e e - j J e e ",
239"e e r 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 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 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 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 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 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 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 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 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 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 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 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 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 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 q - e e ",
240"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e ",
241"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e ",
242"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 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 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 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 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 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 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 ~ 0 ! 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 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 e e e e e e e e e e e e e e e e e e Q I ;.e e e e e e e >.I ;.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 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 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 e e e e e e e e e e e e e e e e ",
243"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 e e e e e e R ^.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 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 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 e e e e e e e e e e e R 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 e e e ~ p o e e e e e e e e e e e e e e e e e e e e e X { % e e ^.e e e e e e e e e e R ^.e e e e e e e e e (.9 9 e /.e e e e e e e e e e e e e R ^.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 e e e e e % { { C e e e e e e e ;.{ C 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 e e 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 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 e e e e e e e e e e e ",
244"e e e e e e e e e e e e e e e e e e e e R o y 9 % ^.e e e e e e e e % < E y < X e e e e e e e e e /.o y 9 % ^.e e e e e e e e $ 0 < y % e e e e e e e e e e e e e e e e e e e e (.I y 0 >.e e e e e e e e e % 9 y $ R e e e e e e e e ! < ~ e o 0 /.e e e e e e e % < < X e e e e e e e e ;.0 ; 0 ~ e e e e e e e e X < ; E >.e e e e e e e e e e e e e e e e e e e >.< C e e e e e e e (.E o e ~ < ! e e e e e e e ;.{ C ~ < o e e e e e e e e ,.a ; < ! e e e e e e e e R < p E ; E >.e e e e e e e e e ,.I ; < ! e e e e e e e e $ < >.C 9 X e e e e e e e e e e e e e e e e e e % p { 0 (.e e e e e e e ~ 9 ! e e e e e e e >.E < E e e e e e e e (.I 0 < 9 % a ; 0 ~ e e e e e e e (.a I e I 0 e o 0 ,.e e e e e e e R $ y < a 0 x e e e e e e e ~ 0 0 I e e e e e e e e ,.I ; < ! e e e e e e e e e e e e e e e e e e e e ",
245"e e e e e e e e e e e e e e e e e e e e $ { < 9 { o e e e e e e e e $ { p 0 p p ;.e e e e e e e e $ { < < { $ e e e e e e e e 0 { 9 y { C 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 % { 9 < { I e e e e e e e e % { ;.e a { /.e e e e e e e a { ; ;.e e e e e e e ~ p p < ; ! e e e e e e e ;.p ; E { 9 x 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 x p a e X { % e e e e e e e ;.{ o < { ;.e e e e e e e R < { 0 ; { ! e e e e e e e R < { y < { < (.e e e e e e e R < { 0 ; { ! e e e e e e e X { 9 ; < (.e e e e e e e e e e e e e e e e e e o { { $ e e e e e e e e ;.{ C e e e e e e e ~ p { a e e e e e e e x 9 { < y { { < { 9 /.e e e e e e e E p ! ; { ! < 9 /.e e e e e e e I { < 9 { { x e e e e e e e ! { { $ e e e e e e e (.< { 0 y { ! e e e e e e e e e e e e e e e e e e e ",
246"e e e e e e e e e e e e e e e e e e e R { E ^.(.< p (.e e e e e e e I { Q e X { $ e e e e e e e ,.p { E 0 { ; ,.e e e e e e e < p ,.,.p a e e e e e e e e e e e e e e e e e e e o { < I ~ e e e e e e e (.y 9 (.e a { ~ e e e e e e e % { ;.e a { /.e e e e e e e a p ~ e e e e e e e e $ { ;.e x e e e e e e e e I { < a y { % 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 x p a e X { % e e e e e e e ;.{ ; { C e e e e e e e e Q { ; a < { 0 e e e e e e e R < p >.e o { Q e e e e e e e ! { % e ~ p 0 e e e e e e e e o { p ;.e e e e e e e e e e e e e e e e e e e R 0 p R e e e e e e e e ;.{ C e e e e e e e ~ { a e e e e e e e e x y < e ! { I e o { X e e e e e e e % { < p { < { $ e e e e e e e >.p E ^./.0 { x e e e e e e e X { $ e e e e e e e e ! { ; a < { 0 e e e e e e e e e e e e e e e e e e e ",
247"e e e e e e e e e e e e e e e e e e e R { $ e e I { ,.e e e e e e e I { ;.e (.{ I e e e e e e e >.{ { y y ; 9 ~ e e e e e e e < y (./.; 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 ,.p E e e o { ;.e e e e e e e % { ;.e a { /.e e e e e e e a p (.e e e e e e e e a { (.e e e e e e e e e e E { ; ; y ; o 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 x p a e X { % e e e e e e e ;.{ { { Q e e e e e e e e % { p ; y ; 0 e e e e e e e R 9 9 e e Q { C e e e e e e e C { X e (.9 9 e e e e e e e e C { ; x e e e e e e e e e e e e e e e e e e e e E p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e >.p { p ; { { X e e e e e e e ~ { $ e e I { x e e e e e e e X { % e e e e e e e e C { p y y ; E /.e e e e e e e e e e e e e e e e e e ",
248"e e e e e e e e e e e e e e e e e e e ^.< { % o { E e e e e e e e e $ { < Q 0 { C e e e e e e e /.< { $ I $ ,.^.e e e e e e e < y (.R ; E e e e e e e e e e e e e e e e e e e e a < % y y R e e e e e e e a { o C p 9 (.e e e e e e e ! { E C ; p /.e e e e e e e a p x e e e e e e e e Q { 0 C $ >.e e e e e e e C { < o E ;.R 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 9 p C E { % e e e e e e e ;.{ $ 9 p ~ e e e e e e e >.p ; o E C x e e e e e e e R < { I Q y p ~ e e e e e e e >.p 9 Q I { o e e e e e e e ,.y { { I e e e e e e e e e e e e e e e e e e e e 0 p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e e < { E $ { ; R e e e e e e e /.9 { % o p { x e e e e e e e X { % e e e e e e e e >.p ; o a % (.e e e e e e e e e e e e e e e e e e e ",
249"e e e e e e e e e e e e e e e e e e e e ~ 9 { { < >.e e e e e e e e $ { p { { $ /.e e e e e e e e ~ < { { 0 R e e e e e e e e < y (.R ; E e e e e e e e e e e e e e e e e e e e Q p { { o e e e e e e e e ,.< { { 9 ;.e e e e e e e e ^.$ { { p p /.e e e e e e e a p x e e e e e e e e ^.$ { { { Q e e e e e e e /.$ { { p X 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 X ; { p { % e e e e e e e ;.{ C ;.{ 9 x e e e e e e e Q p { { $ e e e e e e e e R < { p { p C e e e e e e e e e Q p { { I R e e e e e e e I { ! a { ! e e e e e e e e e e e e e e e e e e e 0 p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e e o { C ! { a e e e e e e e e e ;.y { { p { x e e e e e e e ! { % e e e e e e e e e Q ; { { $ e e e e e e e e e e e e e e e e e e e e ",
250"e e e e e e e e e e e e e e e e e e e e e (.X ;.R e e e e e e e e e I { X X ~ e e e e e e e e e e e (.X ;.R e e e e e e e e e x ,.e e ,.x 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 e /.;.X (.e e e e e e e e e e ^.;.;.,.,.e e e e e e e e x ,.^.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 e e e e e e e e e e e C { o e e e e e e e e e ,.X >.>.(.e e e e e e e /.>.(.e x >.R e e e e e e e e x ! ~ ^.e e e e e e e e e ,.,.>.X >.e e e e e e e e e e e x ! ~ ^.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 x ,.e e e e e e e e e /.>.(.e e e e e e e ^.>.x e e e e e e e e ^.,.x e /.>.(.e (.>.R e e e e e e e e R >./.^.>.(.e e e e e e e e e e (.! ~ x >.^.e e e e e e e /.>.(.e e e e e e e e e e ,.X ~ ^.e e e e e e e e e e e e e e e e e e e e ",
251"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 e e e e e I { ~ 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e e /.p p ~ 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e ",
252"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 e e e e e X C (.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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e e ^.C ~ 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e ",
253"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e ",
254"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 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 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 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 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 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 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 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 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 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 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 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 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 e e e e e e e e e e e e e e e e e e e e e e e "};
diff --git a/rbutil/rbutil-rc.rc b/rbutil/rbutil-rc.rc
deleted file mode 100644
index 3202cefc49..0000000000
--- a/rbutil/rbutil-rc.rc
+++ /dev/null
@@ -1,27 +0,0 @@
1#define RBUTIL 1
2#include <wx/msw/wx.rc>
3RBUTIL VERSIONINFO
4FILEVERSION 0,3,2,6
5PRODUCTVERSION 0,3,2,6
6FILEOS 0x00000004
7FILETYPE 0x00000001
8BEGIN
9 BLOCK "StringFileInfo"
10 BEGIN
11 BLOCK "FFFF0000"
12 BEGIN
13 VALUE "FileVersion", "0.3.2.6\0"
14 VALUE "ProductVersion", "0.3.2.6\0"
15 VALUE "CompanyName", "Rockbox Team\0"
16 VALUE "FileDescription", "Rockbox Utility\0"
17 VALUE "InternalName", "rbutil\0"
18 VALUE "LegalCopyright", "(C) 2005 - 2007 Rockbox Team\0"
19 VALUE "ProductName", "Rockbox Utility\0"
20 END
21 END
22 BLOCK "VarFileInfo"
23 BEGIN
24 VALUE "Translation", 0xFFFF, 0x0000
25 END
26END
27RBUTIL_ICON ICON archos.ico
diff --git a/rbutil/rbutil.cbp b/rbutil/rbutil.cbp
deleted file mode 100644
index 2db68ceac7..0000000000
--- a/rbutil/rbutil.cbp
+++ /dev/null
@@ -1,196 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2<CodeBlocks_project_file>
3 <FileVersion major="1" minor="6" />
4 <Project>
5 <Option title="rbutil" />
6 <Option pch_mode="0" />
7 <Option compiler="gcc" />
8 <MakeCommands>
9 <Build command="$make -f $makefile all" />
10 <CompileFile command="$make -f $makefile $file" />
11 <Clean command="$make -f $makefile clean" />
12 <DistClean command="$make -f $makefile distclean" />
13 </MakeCommands>
14 <Build>
15 <Target title="Release">
16 <Option output="rbutil.exe" prefix_auto="0" extension_auto="0" />
17 <Option type="0" />
18 <Option compiler="gcc" />
19 <Option projectResourceIncludeDirsRelation="0" />
20 <ExtraCommands>
21 <Add before="cmd /c cd icons &amp;&amp; bin2c.exe *.png" />
22 <Add after="upx --best --compress-icons=0 rbutil.exe" />
23 </ExtraCommands>
24 <MakeCommands>
25 <Build command="$make -f $makefile all" />
26 <CompileFile command="$make -f $makefile $file" />
27 <Clean command="$make -f $makefile clean" />
28 <DistClean command="$make -f $makefile distclean" />
29 </MakeCommands>
30 </Target>
31 <Target title="Debug">
32 <Option output="rbutil.exe" prefix_auto="0" extension_auto="0" />
33 <Option type="0" />
34 <Option compiler="gcc" />
35 <Compiler>
36 <Add option="-g" />
37 </Compiler>
38 <MakeCommands>
39 <Build command="$make -f $makefile all" />
40 <CompileFile command="$make -f $makefile all" />
41 <Clean command="$make -f $makefile clean" />
42 <DistClean command="$make -f $makefile distclean" />
43 </MakeCommands>
44 </Target>
45 <Environment>
46 <Variable name="WX_CFG" value="" />
47 </Environment>
48 </Build>
49 <VirtualTargets>
50 <Add alias="All" targets="default;" />
51 </VirtualTargets>
52 <Compiler>
53 <Add option="-W" />
54 <Add option="-g" />
55 <Add option="-pipe" />
56 <Add option="-mthreads" />
57 <Add option="-Winvalid-pch" />
58 <Add option='-include &quot;wx_pch.h&quot;' />
59 <Add option="-D__GNUWIN32__" />
60 <Add option="-D__WXMSW__" />
61 <Add option="-DUSE_PCH" />
62 <Add option="-DRBUTIL" />
63 <Add directory="$(#WX.include)" />
64 <Add directory="$(#WX.lib)\gcc_lib$(WX_CFG)\msw" />
65 <Add directory="$(#WX)\contrib\include" />
66 <Add directory=".\" />
67 </Compiler>
68 <ResourceCompiler>
69 <Add directory="$(#WX.include)" />
70 </ResourceCompiler>
71 <Linker>
72 <Add library="wxmsw28" />
73 <Add library="winspool" />
74 <Add library="winmm" />
75 <Add library="shell32" />
76 <Add library="comctl32" />
77 <Add library="ctl3d32" />
78 <Add library="odbc32" />
79 <Add library="advapi32" />
80 <Add library="wsock32" />
81 <Add library="opengl32" />
82 <Add library="glu32" />
83 <Add library="ole32" />
84 <Add library="oleaut32" />
85 <Add library="uuid" />
86 <Add library="libwxzlib" />
87 <Add library="libwxregex" />
88 <Add library="libwxpng" />
89 <Add library="libwxjpeg" />
90 <Add library="libwxtiff" />
91 <Add directory="$(#WX.lib)\gcc_lib$(WX_CFG)" />
92 <Add directory="$(#WX.lib)" />
93 <Add directory=".\" />
94 </Linker>
95 <Unit filename="Makefile" />
96 <Unit filename="archos.ico" />
97 <Unit filename="autodetection.cpp" />
98 <Unit filename="autodetection.h" />
99 <Unit filename="bootloaders.cpp" />
100 <Unit filename="bootloaders.h" />
101 <Unit filename="copying.txt" />
102 <Unit filename="credits.h" />
103 <Unit filename="fonts_3d.xpm" />
104 <Unit filename="h100sums.h" />
105 <Unit filename="h120sums.h" />
106 <Unit filename="h300sums.h" />
107 <Unit filename="icons\bin2c.c">
108 <Option compilerVar="CC" />
109 <Option compile="0" />
110 <Option link="0" />
111 </Unit>
112 <Unit filename="icons\bootloader_btn.cpp" />
113 <Unit filename="icons\bootloader_btn.h" />
114 <Unit filename="icons\bootloader_btn.png" />
115 <Unit filename="icons\talkfile_btn.cpp" />
116 <Unit filename="icons\talkfile_btn.h" />
117 <Unit filename="icons\talkfile_btn.png" />
118 <Unit filename="icons\doom_btn.cpp" />
119 <Unit filename="icons\doom_btn.h" />
120 <Unit filename="icons\doom_btn.png" />
121 <Unit filename="icons\font_btn.cpp" />
122 <Unit filename="icons\font_btn.h" />
123 <Unit filename="icons\font_btn.png" />
124 <Unit filename="icons\rbinstall_btn.cpp" />
125 <Unit filename="icons\rbinstall_btn.h" />
126 <Unit filename="icons\rbinstall_btn.png" />
127 <Unit filename="icons\rembootloader_btn.cpp" />
128 <Unit filename="icons\rembootloader_btn.h" />
129 <Unit filename="icons\rembootloader_btn.png" />
130 <Unit filename="icons\remrb_btn.cpp" />
131 <Unit filename="icons\remrb_btn.h" />
132 <Unit filename="icons\remrb_btn.png" />
133 <Unit filename="icons\themes_btn.cpp" />
134 <Unit filename="icons\themes_btn.h" />
135 <Unit filename="icons\themes_btn.png" />
136 <Unit filename="install_3d.xpm" />
137 <Unit filename="install_dialogs.cpp" />
138 <Unit filename="install_dialogs.h" />
139 <Unit filename="installlog.cpp" />
140 <Unit filename="installlog.h" />
141 <Unit filename="ipodpatcher\ipodio-win32.c">
142 <Option compilerVar="CC" />
143 <Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\ipodpatcher\ipodio-win32.o" />
144 </Unit>
145 <Unit filename="ipodpatcher\ipodio.h" />
146 <Unit filename="ipodpatcher\ipodpatcher.c">
147 <Option compilerVar="CC" />
148 <Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\ipodpatcher\ipodpatcher.o\n" />
149 </Unit>
150 <Unit filename="ipodpatcher\ipodpatcher.h" />
151 <Unit filename="ipodpatcher\parttypes.h" />
152 <Unit filename="irivertools.cpp" />
153 <Unit filename="irivertools.h" />
154 <Unit filename="md5sum.cpp" />
155 <Unit filename="md5sum.h" />
156 <Unit filename="rblogo.xpm" />
157 <Unit filename="rbutil-rc.rc">
158 <Option compilerVar="WINDRES" />
159 </Unit>
160 <Unit filename="rbutil.cpp" />
161 <Unit filename="rbutil.h" />
162 <Unit filename="rbutil.ini" />
163 <Unit filename="rbutil.iss" />
164 <Unit filename="rbutilApp.cpp" />
165 <Unit filename="rbutilApp.h" />
166 <Unit filename="rbutilCtrls.cpp" />
167 <Unit filename="rbutilCtrls.h" />
168 <Unit filename="rbutilFrm.cpp" />
169 <Unit filename="rbutilFrm.h" />
170 <Unit filename="rbutilFrm_XPM.xpm" />
171 <Unit filename="sansapatcher\parttypes.h" />
172 <Unit filename="sansapatcher\sansaio-win32.c">
173 <Option compilerVar="CC" />
174 <Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -DRBUTIL -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\sansapatcher\sansaio-win32.o" />
175 </Unit>
176 <Unit filename="sansapatcher\sansaio.h" />
177 <Unit filename="sansapatcher\sansapatcher.c">
178 <Option compilerVar="CC" />
179 <Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -DRBUTIL -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\sansapatcher\sansapatcher.o" />
180 </Unit>
181 <Unit filename="sansapatcher\sansapatcher.h" />
182 <Unit filename="themes_3d.xpm" />
183 <Unit filename="tools2_3d.xpm" />
184 <Unit filename="tts.cpp">
185 <Option compiler="gcc" use="0" buildCommand="gcc -Wall -g tts.cpp -I$FLITEDIR/include -L$FLITEDIR/lib \n -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex -lflite -lm" />
186 </Unit>
187 <Unit filename="tts.h" />
188 <Unit filename="uninstall_3d.xpm" />
189 <Unit filename="untools2_3d.xpm" />
190 <Unit filename="wizard.xpm" />
191 <Unit filename="wx_pch.h" />
192 <Extensions>
193 <code_completion />
194 </Extensions>
195 </Project>
196</CodeBlocks_project_file>
diff --git a/rbutil/rbutil.cpp b/rbutil/rbutil.cpp
deleted file mode 100644
index 058ca10a27..0000000000
--- a/rbutil/rbutil.cpp
+++ /dev/null
@@ -1,783 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutil.cpp
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "rbutil.h"
22#include "installlog.h"
23
24/* this function gets a Bitmap from embedded memory */
25wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length)
26{
27 wxMemoryInputStream istream( data,length);
28 return wxBitmap(wxImage(istream, wxBITMAP_TYPE_ANY, -1), -1);
29}
30
31// This class allows us to return directories as well as files to
32// wxDir::Traverse
33class wxDirTraverserIncludeDirs : public wxDirTraverser
34{
35public:
36 wxDirTraverserIncludeDirs(wxArrayString& files) : m_files(files) { }
37
38 virtual wxDirTraverseResult OnFile(const wxString& filename)
39 {
40 m_files.Add(filename);
41 return wxDIR_CONTINUE;
42 }
43
44 virtual wxDirTraverseResult OnDir(const wxString& dirname)
45 {
46 m_files.Add(dirname);
47 return wxDIR_CONTINUE;
48 }
49
50private:
51 wxArrayString& m_files;
52};
53
54wxDEFINE_SCOPED_PTR_TYPE(wxZipEntry);
55
56const wxChar* _rootmatch[] = {
57 wxT("rockbox.*"),
58 wxT("ajbrec.ajz"),
59 wxT("archos.mod"),
60 wxT(".scrobbler.*"),
61 wxT("battery_bench.txt"),
62 wxT("battery.dummy"),
63};
64const wxArrayString* rootmatch = new wxArrayString(
65 (size_t) (sizeof(_rootmatch) / sizeof(wxChar*)), _rootmatch);
66
67bool InstallTheme(wxString Themesrc)
68{
69 wxString dest,src,err;
70
71 int pos = Themesrc.Find('/',true);
72 wxString themename = Themesrc.SubString(pos+1,Themesrc.Length());
73
74 src = gv->themes_url + wxT("/") + Themesrc;
75 dest = gv->stdpaths->GetUserDataDir()
76 + wxT("" PATH_SEP "download" PATH_SEP) + themename;
77 if( DownloadURL(src, dest) )
78 {
79 wxRemoveFile(dest);
80 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install Theme"));
81 return false;
82 }
83
84 if(!checkZip(dest))
85 {
86 ERR_DIALOG(wxT("The Zip ") + dest
87 + wxT(" does not contain the correct dir structure"),
88 wxT("Install Theme"));
89 return false;
90 }
91
92 if(UnzipFile(dest,gv->curdestdir, true))
93 {
94 ERR_DIALOG(wxT("Unable to unzip ") + dest + wxT(" to ")
95 + gv->curdestdir, wxT("Install Theme"));
96 return false;
97 }
98
99 return true;
100}
101
102bool checkZip(wxString zipname)
103{
104
105 wxZipEntryPtr entry;
106
107 wxFFileInputStream* in_file = new wxFFileInputStream(zipname);
108 wxZipInputStream* in_zip = new wxZipInputStream(*in_file);
109
110 entry.reset(in_zip->GetNextEntry());
111
112 wxString name = entry->GetName();
113 if(entry->IsDir())
114 {
115 if( 0==name.Cmp(wxT(".rockbox"))
116 || 0==name.Cmp(wxT(".rockbox\\"))
117 || 0==name.Cmp(wxT(".rockbox/")) )
118 return true;
119 }
120 else
121 {
122 if( name.StartsWith(wxT(".rockbox/"))
123 || name.StartsWith(wxT(".rockbox\\")) )
124 return true;
125 }
126
127 return false;
128
129}
130
131int DownloadURL(wxString src, wxString dest)
132{
133 int input, errnum = 0, success = false;
134 wxString buf, errstr;
135 wxLogVerbose(wxT("=== begin DownloadURL(%s,%s)"), src.c_str(),
136 dest.c_str());
137
138 buf = wxT("Fetching ") + src;
139 wxProgressDialog* progress = new wxProgressDialog(wxT("Downloading"),
140 buf, 100, NULL, wxPD_APP_MODAL |
141 wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_ELAPSED_TIME |
142 wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
143 progress->SetSize(500,200);
144 progress->Update(0);
145
146
147 input = true;
148 wxURL* in_http = new wxURL(src);
149
150 if(gv->proxy_url != wxT(""))
151 in_http->SetProxy(gv->proxy_url);
152
153 if (in_http->GetError() == wxURL_NOERR)
154 {
155
156 wxFFileOutputStream* os = new wxFFileOutputStream(dest);
157 input = false;
158 if (os->IsOk())
159 {
160 wxInputStream* is = in_http->GetInputStream();
161 input = true;
162 if (is)
163 {
164 size_t filesize = is->GetSize();
165 input = true;
166 if (is->IsOk())
167 {
168 char buffer[FILE_BUFFER_SIZE + 1];
169 size_t current = 0;
170
171 while (! is->Eof())
172 {
173 is->Read(buffer, FILE_BUFFER_SIZE);
174 input = true;
175 if (is->LastRead() )
176 {
177 os->Write(buffer, is->LastRead());
178 input = false;
179 if (os->IsOk())
180 {
181 current += os->LastWrite();
182 if (!progress->Update(current * 100 / filesize))
183 {
184 errstr = wxT("Download aborted by user");
185 errnum = 1000;
186 break;
187 }
188
189 } else
190 {
191 errnum = os->GetLastError();
192 errstr = wxT("Can't write to output stream (")
193 + stream_err_str(errnum) + wxT(")");
194
195 break;
196 }
197
198 } else
199 {
200 errnum = is->GetLastError();
201 if (errnum == wxSTREAM_EOF)
202 {
203 errnum = 0;
204 break;
205 }
206 errstr = wxT("Can't read from input stream (")
207 + stream_err_str(errnum) + wxT(")");
208 }
209 }
210
211 os->Close();
212 if (! errnum)
213 {
214 errnum = os->GetLastError();
215 errstr = wxT("Can't close output file (")
216 + stream_err_str(errnum) + wxT(")");
217
218 input = false;
219 }
220
221 if (! errnum) success = true;
222
223 } else
224 {
225 errnum = is->GetLastError();
226 errstr = wxT("Can't get input stream size (")
227 + stream_err_str(errnum) + wxT(")");
228 }
229 } else
230 {
231 errnum = in_http->GetError();
232 errstr.Printf(wxT("Can't get input stream (%d)"), errnum);
233 }
234 delete is;
235 } else
236 {
237 errnum = os->GetLastError();
238 errstr = wxT("Can't create output stream (")
239 + stream_err_str(errnum) + wxT(")");
240 }
241 delete os;
242 } else
243 {
244 errstr.Printf(wxT("Can't open URL %s (%d)"), src.c_str(),
245 in_http->GetError() );
246 errnum = 100;
247 }
248
249 delete in_http;
250 delete progress;
251
252 if (!success)
253 {
254 if (errnum == 0) errnum = 999;
255 if (input)
256 {
257 ERR_DIALOG(errstr + wxT(" reading\n") + src, wxT("Download URL"));
258 } else
259 {
260 ERR_DIALOG(errstr + wxT("writing to download\n/") + dest,
261 wxT("Download URL"));
262 }
263
264 }
265
266 wxLogVerbose(wxT("=== end DownloadURL"));
267 return errnum;
268}
269
270int UnzipFile(wxString src, wxString destdir, bool isInstall)
271{
272
273 wxZipEntryPtr entry;
274 wxString in_str, progress_msg, buf,subdir;
275 int errnum = 0, curfile = 0, totalfiles = 0;
276 InstallLog* log = NULL;
277
278 wxLogVerbose(wxT("===begin UnzipFile(%s,%s,%i)"),
279 src.c_str(), destdir.c_str(), isInstall);
280
281 wxFFileInputStream* in_file = new wxFFileInputStream(src);
282 wxZipInputStream* in_zip = new wxZipInputStream(*in_file);
283 if (in_file->Ok() )
284 {
285 if (! in_zip->IsOk() )
286 {
287 errnum = in_zip->GetLastError();
288 ERR_DIALOG(wxT("Can't open ZIP stream ") + src
289 + wxT(" for reading (") + stream_err_str(errnum)
290 + wxT(")"), wxT("Unzip File") );
291 delete in_zip;
292 delete in_file;
293 return true;
294 }
295
296 totalfiles = in_zip->GetTotalEntries();
297 if (! in_zip->IsOk() )
298 {
299 errnum = in_zip->GetLastError();
300 ERR_DIALOG( wxT("Error Getting total ZIP entries for ")
301 + src + wxT(" (") + stream_err_str(errnum) + wxT(")"),
302 wxT("Unzip File") );
303 delete in_zip;
304 delete in_file;
305 return true;
306 }
307 } else
308 {
309 errnum = in_file->GetLastError();
310 ERR_DIALOG(wxT("Can't open ") + src + wxT(" (")
311 + stream_err_str(errnum) + wxT(")"), wxT("Unzip File") );
312 delete in_zip;
313 delete in_file;
314 return true;
315 }
316
317 wxProgressDialog* progress = new wxProgressDialog(wxT("Unpacking archive"),
318 wxT("Preparing to unpack the downloaded files to your audio"
319 "device"), totalfiles, NULL, wxPD_APP_MODAL |
320 wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_ELAPSED_TIME |
321 wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
322 progress->Update(0);
323
324 // We're not overly worried if the logging fails
325 if (isInstall)
326 {
327 log = new InstallLog(destdir + wxT("" PATH_SEP UNINSTALL_FILE));
328 }
329
330 while (! errnum &&
331 (entry.reset(in_zip->GetNextEntry()), entry.get() != NULL) )
332 {
333
334
335 curfile++;
336 wxString name = entry->GetName();
337 // set progress
338 progress_msg = wxT("Unpacking ") + name;
339 if (! progress->Update(curfile, progress_msg) )
340 {
341 MESG_DIALOG(wxT("Unpacking cancelled by user"));
342 errnum = 1000;
343 break;
344 }
345
346 in_str = destdir + wxT("" PATH_SEP) + name;
347
348 subdir = wxPathOnly(in_str);
349 if(!(wxDirExists(subdir)))
350 {
351 if (! wxMkdir(subdir, 0777) )
352 {
353 buf = wxT("Unable to create directory ") + subdir;
354 errnum = 100;
355 break;
356 }
357 log->WriteFile(subdir, true); // Directory
358 }
359
360 if(entry->IsDir())
361 {
362 if(!wxDirExists(name))
363 {
364 if(!wxMkdir(name, 0777) )
365 {
366 buf = wxT("Unable to create directory ") + name;
367 errnum = 100;
368 break;
369 }
370 }
371 log->WriteFile(name, true); // Directory
372 continue; // this is just a directory, nothing else to do
373 }
374
375 // its a file, copy it
376 wxFFileOutputStream* out = new wxFFileOutputStream(in_str);
377 if (! out->IsOk() )
378 {
379 buf = wxT("Can't open file ") + in_str + wxT(" for writing");
380 delete out;
381 errnum = 100;
382 break;
383 } else if (isInstall)
384 {
385 log->WriteFile(name);
386 }
387
388 in_zip->Read(*out);
389 if (! out->IsOk()) {
390 buf.Printf(wxT("Can't write to %s (%d)"), in_str.c_str(),
391 errnum = out->GetLastError() );
392 }
393
394 if (!in_zip->IsOk() && ! in_file->GetLastError() == wxSTREAM_EOF)
395 {
396 buf.Printf(wxT("Can't read from %s (%d)"), src.c_str(),
397 errnum = in_file->GetLastError() );
398 }
399
400 if (! out->Close() && errnum == 0)
401 {
402 buf.Printf(wxT("Unable to close %s (%d)"), in_str.c_str(),
403 errnum = out->GetLastError() );
404
405 }
406
407 delete out;
408
409 }
410
411 delete in_zip; delete in_file; delete progress;
412
413 if (errnum)
414 {
415 ERR_DIALOG(buf, wxT("Unzip File"));
416 }
417
418 if (log) delete log;
419 wxLogVerbose(wxT("=== end UnzipFile"));
420 return(errnum);
421
422}
423
424int Uninstall(const wxString dir, bool isFullUninstall) {
425 wxString buf, uninst;
426 unsigned int i;
427 bool errflag = false;
428 InstallLog *log = NULL;
429 wxArrayString* FilesToRemove = NULL;
430
431 wxLogVerbose(wxT("=== begin Uninstall(%s,%i)"), dir.c_str(), isFullUninstall);
432
433 wxProgressDialog* progress = new wxProgressDialog(wxT("Uninstalling"),
434 wxT("Reading uninstall data from jukebox"), 100, NULL,
435 wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH |
436 wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
437 progress->Update(0);
438
439 if (! isFullUninstall)
440 {
441
442 buf = dir + wxT("" PATH_SEP UNINSTALL_FILE);
443 log = new InstallLog(buf, false); // Don't create the log
444 FilesToRemove = log->GetInstalledFiles();
445 if (log) delete log;
446
447 if (FilesToRemove == NULL || FilesToRemove->GetCount() < 1) {
448 wxLogNull lognull;
449 if ( wxMessageDialog(NULL,
450 wxT("Rockbox Utility can't find any uninstall data on this "
451 "jukebox.\n"
452 "Would you like to attempt a full uninstall?\n"
453 "(WARNING: A full uninstall removes all files in your Rockbox "
454 "folder)"),
455 wxT("Standard uninstall not possible"),
456 wxICON_EXCLAMATION | wxYES_NO | wxNO_DEFAULT).ShowModal()
457 == wxID_YES)
458 {
459 isFullUninstall = true;
460 }
461 else {
462 MESG_DIALOG(wxT("Uninstall cancelled by user"));
463 delete progress;
464 return 1000;
465 }
466 }
467 }
468
469 if (isFullUninstall )
470 {
471 buf = dir + wxT("" PATH_SEP ".rockbox");
472 if (rm_rf(buf) )
473 {
474 WARN_DIALOG(wxT("Unable to completely remove Rockbox directory"),
475 wxT("Full uninstall") );
476 errflag = true;
477 }
478
479 wxDir* root = new wxDir(dir);
480 wxArrayString* special = new wxArrayString();
481 // Search for files for deletion in the jukebox root
482 for (i = 0; i < rootmatch->GetCount(); i++)
483 {
484 const wxString match = (*rootmatch)[i];
485 root->GetAllFiles(dir, special, match, wxDIR_FILES);
486 }
487 delete root;
488
489 // Sort in reverse order so we get directories last
490 special->Sort(true);
491
492 for (i = 0; i < special->GetCount(); i++)
493 {
494
495 if (wxDirExists((*special)[i]) )
496 {
497 // We don't check the return code since we don't want non
498 // empty dirs disappearing.
499 wxRmdir((*special)[i]);
500
501 } else if (wxFileExists((*special)[i]) )
502 {
503 if (! wxRemoveFile((*special)[i]) )
504 {
505 WARN_DIALOG(wxT("Can't delete ") + (*special)[i],
506 wxT("Full uninstall"));
507 errflag = true;
508 }
509 }
510 // Otherwise there isn't anything there, so we don't have to worry.
511 }
512 delete special;
513 } else
514 {
515 wxString instplat, this_path_sep;
516 unsigned int totalfiles, rc;
517 totalfiles = FilesToRemove->GetCount();
518 FilesToRemove->Sort(true); // Reverse alphabetical ie dirs after files
519
520 for (i = 0; i < totalfiles; i++)
521 {
522 // If we're running on the device, let's not delete our own
523 // installation, eh?
524 if (gv->portable &&
525 FilesToRemove->Item(i).StartsWith(PATH_SEP
526 wxT("RockboxUtility")) )
527 {
528 continue;
529 }
530
531 wxString* buf2 = new wxString;
532 buf = dir + FilesToRemove->Item(i);
533 buf2->Format(wxT("Deleting %s"), buf.c_str());
534
535 if (! progress->Update((i + 1) * 100 / totalfiles, *buf2) )
536 {
537 WARN_DIALOG(wxT("Cancelled by user"), wxT("Normal Uninstall"));
538 delete progress;
539 return true;
540 }
541
542 if (wxDirExists(buf) )
543 {
544 // If we're about to attempt to remove .rockbox. delete
545 // install data first
546 *buf2 = dir + wxT("" PATH_SEP ".rockbox");
547 if ( buf.IsSameAs(buf2->c_str()) )
548 {
549 *buf2 = dir +wxT("" PATH_SEP UNINSTALL_FILE);
550 wxRemoveFile(*buf2);
551 }
552
553 if ( (rc = ! wxRmdir(buf)) )
554 {
555 buf = buf.Format(wxT("Can't remove directory %s"),
556 buf.c_str());
557 errflag = true;
558 WARN_DIALOG(buf.c_str(), wxT("Standard uninstall"));
559 }
560 } else if (wxFileExists(buf) )
561 {
562 if ( (rc = ! wxRemoveFile(buf)) )
563 {
564 buf = buf.Format(wxT("Can't delete file %s"),
565 buf.c_str());
566 errflag = true;
567 WARN_DIALOG(buf.c_str(), wxT("Standard uninstall"));
568 }
569 } else
570 {
571 errflag = true;
572 buf = buf.Format(wxT("Can't find file or directory %s"),
573 buf.c_str() );
574 WARN_DIALOG(buf.c_str(), wxT("Standard uninstall") );
575 }
576
577 uninst = uninst.AfterFirst('\n');
578 }
579 if (errflag)
580 {
581 ERR_DIALOG(wxT("Unable to remove some files"),
582 wxT("Standard uninstall")) ;
583 }
584
585 if (FilesToRemove != NULL) delete FilesToRemove;
586 }
587
588 delete progress;
589 wxLogVerbose(wxT("=== end Uninstall"));
590 return errflag;
591}
592
593
594wxString stream_err_str(int errnum)
595{
596 wxString out;
597
598 switch (errnum) {
599 case wxSTREAM_NO_ERROR:
600 out = wxT("wxSTREAM_NO_ERROR");
601 break;
602 case wxSTREAM_EOF:
603 out = wxT("wxSTREAM_EOF");
604 break;
605 case wxSTREAM_WRITE_ERROR:
606 out = wxT("wxSTREAM_WRITE_ERROR");
607 break;
608 case wxSTREAM_READ_ERROR:
609 out = wxT("wxSTREAM_READ_ERROR");
610 break;
611 default:
612 out = wxT("UNKNOWN");
613 break;
614 }
615 return out;
616}
617
618bool InstallRbutil(wxString dest)
619{
620 wxArrayString filestocopy;
621 wxString str, buf, dstr, localpath, destdir;
622 unsigned int i;
623 wxDir dir;
624 bool copied_exe = false, made_rbdir = false;
625 InstallLog* log;
626
627 buf = dest + wxT("" PATH_SEP ".rockbox");
628
629 if (! wxDirExists(buf) )
630 {
631 wxMkdir(buf);
632 made_rbdir = true;
633 }
634
635 buf = dest + wxT("" PATH_SEP UNINSTALL_FILE);
636 log = new InstallLog(buf);
637 if (made_rbdir) log->WriteFile(wxT(".rockbox"), true);
638
639 destdir = dest + wxT("" PATH_SEP "RockboxUtility");
640 if (! wxDirExists(destdir) )
641 {
642 if (! wxMkdir(destdir, 0777) )
643 {
644 WARN_DIALOG( wxT("Unable to create directory for installer (")
645 + destdir + wxT(")"), wxT("Portable install") );
646 return false;
647 }
648 log->WriteFile(wxT("RockboxUtility"), true);
649 }
650
651 dir.GetAllFiles(gv->ResourceDir, &filestocopy, wxT("*"),
652 wxDIR_FILES);
653 if (filestocopy.GetCount() < 1)
654 {
655 WARN_DIALOG(wxT("No files to copy"), wxT("Portable install") );
656 return false;
657 }
658
659 // Copy the contents of the program directory
660 for (i = 0; i < filestocopy.GetCount(); i++)
661 {
662 if (filestocopy[i].AfterLast(PATH_SEP_CHR) == EXE_NAME)
663 {
664 copied_exe = true;
665 }
666
667 dstr = destdir + wxT("" PATH_SEP)
668 + filestocopy[i].AfterLast(PATH_SEP_CHR);
669 if (! wxCopyFile(filestocopy[i], dstr) )
670 {
671 WARN_DIALOG( wxT("Error copying file (")
672 + filestocopy[i].c_str() + wxT(" -> ")
673 + dstr + wxT(")"), wxT("Portable Install") );
674 return false;
675 }
676 buf = dstr;
677 buf.Replace(dest, wxEmptyString, false);
678 log->WriteFile(buf);
679 }
680
681 if (! copied_exe)
682 {
683 str = gv->AppDir + wxT("" PATH_SEP EXE_NAME);
684 dstr = destdir + wxT("" PATH_SEP EXE_NAME);
685 if (! wxCopyFile(str, dstr) )
686 {
687 WARN_DIALOG(wxT("Can't copy program binary ")
688 + str + wxT(" -> ") + dstr, wxT("Portable Install") );
689 return false;
690 }
691 buf = dstr;
692 buf.Replace(dest, wxEmptyString, false);
693 log->WriteFile(buf);
694 }
695
696 // Copy the local ini file so that it knows that it's a portable copy
697 gv->UserConfig->Flush();
698 dstr = destdir + wxT("" PATH_SEP "RockboxUtility.cfg");
699 if (! wxCopyFile(gv->UserConfigFile, dstr) )
700 {
701 WARN_DIALOG(wxT("Unable to install user config file (")
702 + gv->UserConfigFile + wxT(" -> ") + dstr + wxT(")"),
703 wxT("Portable Install") );
704 return false;
705 }
706 buf = dstr;
707 buf.Replace(dest, wxEmptyString, false);
708 log->WriteFile(buf);
709
710 delete log;
711 return true;
712}
713
714bool rm_rf(wxString file)
715{
716 wxLogVerbose(wxT("=== begin rm-rf(%s)"), file.c_str() );
717
718 wxString buf;
719 wxArrayString selected;
720 wxDirTraverserIncludeDirs wxdtid(selected);
721 unsigned int rc = 0, i;
722 bool errflag = false;
723
724 if (wxFileExists(file) )
725 {
726 rc = ! wxRemoveFile(file);
727 } else if (wxDirExists(file) )
728 {
729 wxDir* dir = new wxDir(file);;
730 dir->Traverse(wxdtid);
731 delete dir;
732 // Sort into reverse alphabetical order for deletion in correct order
733 // (directories after files)
734 selected.Sort(true);
735 selected.Add(file);
736
737 wxProgressDialog* progress = new wxProgressDialog(wxT("Removing files"),
738 wxT("Deleting files"), selected.GetCount(), NULL,
739 wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH |
740 wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
741
742 for (i = 0; i < selected.GetCount(); i++)
743 {
744 wxLogVerbose(selected[i]);
745 if (progress != NULL)
746 {
747 buf = wxT("Deleting ") + selected[i];
748 if (! progress->Update(i, buf))
749 {
750 WARN_DIALOG(wxT("Cancelled by user"), wxT("Erase Files"));
751 delete progress;
752 return true;
753 }
754 }
755
756 if (wxDirExists(selected[i]) )
757 {
758 if ((rc = ! wxRmdir(selected[i])) )
759 {
760 errflag = true;
761 WARN_DIALOG(wxT("Can't remove directory ") + selected[i],
762 wxT("Erase files"));
763 }
764 } else if ((rc = ! wxRemoveFile(selected[i])) )
765 {
766 errflag = true;
767 WARN_DIALOG(wxT("Error deleting file ") + selected[i],
768 wxT("Erase files"));
769 }
770 }
771 delete progress;
772 } else
773 {
774 WARN_DIALOG(wxT("Can't find expected file ") + file,
775 wxT("Erase files"));
776 return true;
777 }
778
779 wxLogVerbose(wxT("=== end rm-rf"));
780 return rc ? true : false;
781}
782
783
diff --git a/rbutil/rbutil.h b/rbutil/rbutil.h
deleted file mode 100644
index eb31986ace..0000000000
--- a/rbutil/rbutil.h
+++ /dev/null
@@ -1,176 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutil.h
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include <wx/wxprec.h>
22#ifdef __BORLANDC__
23 #pragma hdrstop
24#endif
25#ifndef WX_PRECOMP
26 #include <wx/wx.h>
27#endif
28
29#ifndef __rbutil_HPP_
30#define __rbutil_HPP_
31
32#include <wx/config.h>
33#include <wx/confbase.h>
34#include <wx/fileconf.h>
35#include <wx/stdpaths.h>
36#include <wx/wfstream.h>
37#include <wx/filesys.h>
38#include <wx/fs_inet.h>
39#include <wx/fs_zip.h>
40#include <wx/progdlg.h>
41#include <wx/protocol/http.h>
42#include <wx/string.h>
43#include <wx/url.h>
44#include <wx/ptr_scpd.h>
45#include <wx/zipstrm.h>
46#include <wx/dir.h>
47#include <wx/filefn.h>
48#include <wx/sstream.h>
49#include <wx/msgdlg.h>
50#include <wx/log.h>
51#include <wx/file.h>
52#include <wx/wizard.h>
53#include <wx/event.h>
54#include <wx/statline.h>
55#include <wx/valgen.h>
56#include <wx/thread.h>
57#include <wx/regex.h>
58#include <wx/tokenzr.h>
59#include <wx/notebook.h>
60#include <wx/html/htmlwin.h>
61#include <wx/hyperlink.h>
62#include <wx/mstream.h>
63
64#ifdef __WXMSW__
65#define PATH_SEP "\\"
66#define PATH_SEP_CHR '\\'
67#define EXE_NAME wxT("rbutil.exe")
68#else
69#define PATH_SEP wxT("/")
70#define PATH_SEP_CHR '/'
71#define EXE_NAME wxT("rbutil")
72#endif
73
74#define UNINSTALL_FILE wxT(".rockbox" PATH_SEP ".rbutil_install_data")
75#define MAX_PLATFORMS 50
76#define SYSTEM_CONFIG rbutil.ini
77#define FILE_BUFFER_SIZE 1024
78
79//WX_DEFINE_OBJARRAY(bool, wxArrayBool);
80
81class GlobalVars
82{
83public:
84 // Program configuration data (rbutil.ini and environment)
85 wxFileConfig* GlobalConfig;
86 wxFileConfig* UserConfig;
87 wxString UserConfigFile;
88 wxString GlobalConfigFile;
89 wxString AppDir;
90 wxString ResourceDir;
91
92 wxString* ErrStr;
93 wxStandardPaths* stdpaths;
94 wxArrayString plat_id;
95 wxArrayString plat_name;
96 wxArrayInt plat_released;
97 wxArrayInt plat_needsbootloader;
98 wxArrayString plat_bootloadermethod;
99 wxArrayString plat_bootloadername;
100 wxArrayString plat_resolution;
101 wxArrayString plat_manualname;
102 wxString download_url;
103 wxString daily_url;
104 wxString bleeding_url;
105 wxString server_conf_url;
106 wxString font_url;
107 wxString last_release;
108 wxString prog_name;
109 wxString bootloader_url;
110 wxString themes_url;
111 wxString manual_url;
112 wxString doom_url;
113 wxString proxy_url;
114
115
116 // User configuration data.
117 wxString curplat;
118 // unsigned int curplatnum;
119 wxString curdestdir;
120 wxString curfirmware;
121 unsigned int curbuild;
122 bool curisfull;
123 bool nocache;
124 bool portable;
125 wxString curresolution;
126 wxArrayString themesToInstall;
127 wxString pathToTts;
128 wxString pathToEnc;
129
130
131
132 // Global system variables
133 wxFFile* logfile;
134 wxLogStderr* logstderr;
135 wxLogChain* logchain;
136 wxLogGui* loggui;
137};
138
139extern GlobalVars* gv;
140
141
142wxString wxFindAppPath(const wxString& argv0, const wxString& cwd,
143 const wxString& appVariableName);
144int DownloadURL(wxString src, wxString dest);
145int UnzipFile(wxString src, wxString destdir, bool isInstall = false);
146int Uninstall(const wxString dir, bool isFullUninstall = false);
147bool InstallRbutil(wxString dest);
148bool InstallTheme(wxString src);
149bool checkZip(wxString zipname);
150wxString stream_err_str(int errnum);
151bool rm_rf(wxString file);
152
153wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length);
154
155
156#define ERR_DIALOG(msg, title) \
157 wxLogError(wxT("%s: %s"), ((wxString) title).c_str(), ((wxString) msg).c_str())
158
159#define WARN_DIALOG(msg, title) \
160 wxLogWarning(wxT("%s: %s"), ((wxString) title).c_str(), ((wxString) msg).c_str())
161
162#define MESG_DIALOG(msg) \
163 wxLogMessage(msg)
164
165#define INFO_DIALOG(msg) \
166 wxLogInfo(msg)
167
168#define BUILD_RELEASE 0
169#define BUILD_DAILY 1
170#define BUILD_BLEEDING 2
171
172#define BOOTLOADER_ADD 0
173#define BOOTLOADER_REM 1
174
175
176#endif
diff --git a/rbutil/rbutil.ini b/rbutil/rbutil.ini
deleted file mode 100644
index 1ab45ecdcc..0000000000
--- a/rbutil/rbutil.ini
+++ /dev/null
@@ -1,299 +0,0 @@
1[general]
2download_url=http://www.rockbox.org/download/
3daily_url=http://download.rockbox.org/daily/
4bleeding_url=http://build.rockbox.org/dist/build-
5server_conf_url=http://www.rockbox.org/daily/build-info
6font_url=http://www.rockbox.org/daily/fonts/rockbox-fonts-
7last_release=2.5
8prog_name=rockbox
9bootloader_url=http://download.rockbox.org/bootloader
10themes_url=http://www.rockbox-themes.org/
11manual_url=http://download.rockbox.org/manual
12doom_url=http://download.rockbox.org/useful/rockdoom.zip
13
14[platforms]
15platform1=player
16platform2=recorder
17platform3=recorder8mb
18platform4=recorderv2
19platform5=fmrecorder
20platform6=fmrecorder8mb
21platform7=ondiosp
22platform8=ondiofm
23platform9=h100
24platform10=h120
25platform11=h300
26platform12=h10_5gbums
27platform13=h10_5gbmtp
28platform14=h10
29platform15=ipod3g
30platform16=ipod4gray
31platform17=ipodcolor
32platform18=ipodvideo
33platform19=ipodmini1g
34platform20=ipodmini2g
35platform21=ipodnano
36platform22=iaudiox5
37platform23=iaudiom5
38platform24=iaudiox5v
39platform25=gigabeatf
40platform26=sansae200
41
42[player]
43name=Archos Jukebox Player 6000, Jukebox Studio 5/10/20
44platform=player
45released=yes
46needsbootloader=no
47bootloadermethod=
48bootloadername=
49resolution=11x2x1
50manualname=
51
52[recorder]
53name=Archos Jukebox Recorder 10, 20
54platform=recorder
55released=yes
56needsbootloader=no
57bootloadermethod=
58bootloadername=
59resolution=112x64x1
60manualname=
61
62[recorder8mb]
63name=Archos Jukebox Recorder 10, 20 (with 8mb memory)
64platform=recorder8mb
65released=no
66needsbootloader=no
67bootloadermethod=
68bootloadername=
69resolution=112x64x1
70manualname=rockbox-recorder
71
72[recorderv2]
73name=Archos Jukebox Recorder v2 (20GB)
74platform=recorderv2
75released=yes
76needsbootloader=no
77bootloadermethod=
78bootloadername=
79resolution=112x64x1
80manualname=
81
82[fmrecorder]
83name=Archos Jukebox Recorder FM
84platform=fmrecorder
85released=yes
86needsbootloader=no
87bootloadermethod=
88bootloadername=
89resolution=112x64x1
90manualname=
91
92[fmrecorder8mb]
93name=Archos Jukebox Recorder FM (with 8mb memory)
94platform=fmrecorder8mb
95released=no
96needsbootloader=no
97bootloadermethod=
98bootloadername=
99resolution=112x64x1
100manualname=rockbox-fmrecorder
101
102[ondiosp]
103name=Archos Ondio SP
104platform=ondiosp
105released=yes
106needsbootloader=no
107bootloadermethod=
108bootloadername=
109resolution=112x64x1
110manualname=
111
112[ondiofm]
113name=Archos Ondio FM
114platform=ondiofm
115released=yes
116needsbootloader=no
117bootloadermethod=
118bootloadername=
119resolution=112x64x1
120manualname=
121
122[h100]
123name=Iriver iHP100, iHP110
124platform=h100
125released=no
126needsbootloader=yes
127bootloadermethod=fwpatcher
128bootloadername=bootloader-h100.bin
129resolution=160x128x2
130manualname=rockbox-h100
131
132[h120]
133name=Iriver iHP120, iHP140, H120, H140
134platform=h120
135released=no
136needsbootloader=yes
137bootloadermethod=fwpatcher
138bootloadername=bootloader-h120.bin
139resolution=160x128x2
140manualname=rockbox-h100
141
142[h300]
143name=Iriver H320, H340
144platform=h300
145released=no
146needsbootloader=yes
147bootloadermethod=fwpatcher
148bootloadername=bootloader-h300.bin
149resolution=220x176x16
150manualname=rockbox-h300
151
152[h10_5gbums]
153name=Iriver H10 (5/6GB) UMS
154platform=h10_5gb
155released=no
156needsbootloader=yes
157bootloadermethod=h10
158bootloadername=H10.mi4
159resolution=128x128x16
160manualname=
161
162[h10_5gbmtp]
163name=Iriver H10 (5/6GB) MTP
164platform=h10_5gb
165released=no
166needsbootloader=yes
167bootloadermethod=h10
168bootloadername=H10_5GB-MTP/H10.mi4
169resolution=128x128x16
170manualname=
171
172[h10]
173name=Iriver H10 (20GB)
174platform=h10
175released=no
176needsbootloader=yes
177bootloadermethod=h10
178bootloadername=H10_20GC.mi4
179resolution=160x128x16
180manualname=
181
182[ipodcolor]
183name=Apple Ipod Colour/Photo/U2 (4th gen)
184platform=ipodcolor
185released=no
186needsbootloader=yes
187bootloadermethod=ipodpatcher
188bootloadername=ipodcolor
189resolution=220x176x16
190manualname=
191
192[ipodnano]
193name=Apple Ipod Nano (1st gen)
194platform=ipodnano
195released=no
196needsbootloader=yes
197bootloadermethod=ipodpatcher
198bootloadername=ipodnano
199resolution=176x132x16
200manualname=
201
202[ipod4gray]
203name=Apple Ipod (4th gen, greyscale)
204platform=ipod4gray
205released=no
206needsbootloader=yes
207bootloadermethod=ipodpatcher
208bootloadername=ipod4g
209resolution=160x128x2
210manualname=
211
212[ipodvideo]
213name=Apple Ipod Video (5th gen)
214platform=ipodvideo
215released=no
216needsbootloader=yes
217bootloadermethod=ipodpatcher
218bootloadername=ipodvideo
219resolution=320x240x16
220manualname=
221
222[ipod3g]
223name=Apple Ipod (3rd gen)
224platform=ipod3g
225released=no
226needsbootloader=yes
227bootloadermethod=ipodpatcher
228bootloadername=ipod3g
229resolution=160x128x2
230manualname=
231
232[ipodmini1g]
233name=Apple Ipod Mini (1st gen)
234platform=ipodmini1g
235released=no
236needsbootloader=yes
237bootloadermethod=ipodpatcher
238bootloadername=ipodmini
239resolution=138x110x2
240manualname=rockbox-ipodmini2g
241
242[ipodmini2g]
243name=Apple Ipod Mini (2nd gen)
244platform=ipodmini2g
245released=no
246needsbootloader=yes
247bootloadermethod=ipodpatcher
248bootloadername=ipodmini2g
249resolution=138x110x2
250manualname=rockbox-ipodmini2g
251
252[iaudiox5]
253name=Cowon iAudio X5 , X5L
254platform=iaudiox5
255released=no
256needsbootloader=yes
257bootloadermethod=iaudio
258bootloadername=x5_fw.bin
259resolution=160x128x16
260manualname=
261
262[iaudiox5v]
263name=Cowon iAudio X5V
264platform=iaudiox5
265released=no
266needsbootloader=yes
267bootloadermethod=iaudio
268bootloadername=x5v_fw.bin
269resolution=160x128x2
270manualname=
271
272[iaudiom5]
273name=Cowon iAudio M5 , M5L
274platform=iaudiom5
275released=no
276needsbootloader=yes
277bootloadermethod=iaudio
278bootloadername=m5_fw.bin
279resolution=160x128x16
280manualname=
281
282[gigabeatf]
283name=Toshiba Gigabeat F , X
284platform=gigabeatf
285needsbootloader=yes
286bootloadermethod=gigabeatf
287bootloadername=FWIMG01.DAT
288resolution=240x320x16
289manualname=
290
291[sansae200]
292name=Sandisk Sansa E200
293platform=sansae200
294released=no
295needsbootloader=yes
296bootloadermethod=sansapatcher
297bootloadername=PP5022.mi4
298resolution=176x220x16
299manualname=
diff --git a/rbutil/rbutil.iss b/rbutil/rbutil.iss
deleted file mode 100644
index d945d85336..0000000000
--- a/rbutil/rbutil.iss
+++ /dev/null
@@ -1,55 +0,0 @@
1; Script generated by the Inno Setup Script Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4#define MyAppName "Rockbox Utility"
5#define MyAppVerName "Rockbox Utility v0.2.1"
6#define MyAppPublisher "Rockbox Team"
7#define MyAppURL "http://www.rockbox.org/"
8#define MyAppExeName "rbutil.exe"
9#define MyAppUrlName "rbutil.url"
10
11[Setup]
12AppName={#MyAppName}
13AppVerName={#MyAppVerName}
14AppPublisher={#MyAppPublisher}
15AppPublisherURL={#MyAppURL}
16AppSupportURL={#MyAppURL}
17AppUpdatesURL={#MyAppURL}
18DefaultDirName={pf}\{#MyAppName}
19DefaultGroupName={#MyAppName}
20LicenseFile=copying.txt
21OutputBaseFilename=rbutil-0.2.1-setup
22Compression=lzma/ultra
23SolidCompression=true
24OutputDir=.
25AppCopyright=© 2005-6 Rockbox Team
26AppID={{BDAF1E02-1CC9-48BB-AE03-95D87F65BF4A}
27
28[Languages]
29Name: english; MessagesFile: compiler:Default.isl
30
31[Tasks]
32Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
33Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
34
35[Files]
36Source: rbutil.exe; DestDir: {app}; Flags: ignoreversion
37; NOTE: Don't use "Flags: ignoreversion" on any shared system files
38Source: rbutil.ini; DestDir: {app}; Flags: ignoreversion
39
40[INI]
41Filename: {app}\{#MyAppUrlName}; Section: InternetShortcut; Key: URL; String: {#MyAppURL}
42
43[Icons]
44Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
45Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {app}\{#MyAppUrlName}
46Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
47Name: {userdesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
48Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: quicklaunchicon
49
50[Run]
51Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent
52
53[UninstallDelete]
54Type: files; Name: {app}\{#MyAppUrlName}
55
diff --git a/rbutil/rbutil.r b/rbutil/rbutil.r
deleted file mode 100755
index e7c39a882c..0000000000
--- a/rbutil/rbutil.r
+++ /dev/null
@@ -1,2675 +0,0 @@
1data 'vers' (2) {
2$"0100 2000 0000 0531 2E30 6430 0531 2E30"
3$"6430"} ;
4
5data 'vers' (1) {
6$"0100 2000 0000 0531 2E30 6430 0531 2E30"
7$"6430"} ;
8
9data 'ICN#' (-16455, "Item Icon") {
10 $"FFFF FFFF F700 001D BB00 002B D700 0057"
11 $"ED00 009D BB00 0539 DD00 1261 F700 A4E1"
12 $"FFFE 539F 8100 A52F 8102 AED7 8105 4BAB"
13 $"8103 BD12 810E 4A65 8105 2492 8102 F926"
14 $"810B 5FA9 8114 0B7E 8108 05AC 8100 0021"
15 $"8100 0027 8100 0021 8100 0021 8100 0021"
16 $"81FF FFE1 8100 0FE1 8122 0AE1 8108 2FA1"
17 $"8141 0DE1 8104 0B61 8100 9DA1 FFFF FFFF"
18 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
19 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
20 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
21 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
22 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
23 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
24 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
25 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
26};
27
28data 'icl4' (-16455, "Item Icon") {
29 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
30 $"F333 333F 0000 0000 0000 0000 0003 3E0F"
31 $"F333 333F 0000 0000 0000 0000 00A4 3AEF"
32 $"F333 333F 0000 0000 0000 0000 0DCA 3EEF"
33 $"F333 333F 0000 0000 0000 0000 E1C5 FE0F"
34 $"F333 333F 0000 0000 000C CDCB 1DEA E00F"
35 $"F333 333F 0000 0000 0CCC 1CB1 C3FD 000F"
36 $"F333 333F 0000 0000 D02C CB1D A9E0 000F"
37 $"FFFF FFFF FFFF FFFC C2C3 BCD3 EDDF FFFF"
38 $"F000 000F 0000 00CC 2DAB 02BF 2DDD 666F"
39 $"F000 000F 0000 0C1D BBB1 BEAB BDCB D66F"
40 $"F000 000F 0000 CCD4 E2CB BAEE B42C CD6F"
41 $"F000 000F 0000 C2BA BD2E FF3B DCC2 DCDD"
42 $"F000 000F 0000 D3BD D2CC 2DCD 02D0 DCEB"
43 $"F000 000F 0000 0EAC CDB2 CCCC 20D2 CDDB"
44 $"F000 000F 0000 CBBB 3AAE E2D2 CC2C C2DC"
45 $"F000 000F 0000 BC2E DD4A EEAE EBBB BBCD"
46 $"F000 000F 000C DEDD 00CD DAEA AAEF 35DC"
47 $"F000 000F 000B D000 0000 CCD4 DEBE EADC"
48 $"F000 000F 0000 0000 0000 0000 00F0 0BCD"
49 $"F000 000F 0000 0000 0000 0000 00F0 0FEE"
50 $"F000 000F 0000 0000 0000 0000 00F0 000F"
51 $"F000 000F 0000 0000 0000 0000 00F0 000F"
52 $"F000 000F 0000 0000 0000 0000 00F0 000F"
53 $"F000 000F FFFF FFFF FFFF FFFF FFF0 000F"
54 $"F000 000F 1111 1111 1111 F999 99F0 000F"
55 $"F000 000F 1111 1111 1111 F898 99F0 000F"
56 $"F000 000F 1111 1111 1111 F999 98F0 000F"
57 $"F000 000F 1111 1111 1111 F989 99F0 000F"
58 $"F000 000F 1111 1111 1111 F899 89F0 000F"
59 $"F000 000F 1111 1111 1111 F989 98F0 000F"
60 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
61};
62
63data 'icl8' (-16455, "Item Icon") {
64 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
65 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
66 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
67 $"0000 0000 0000 0000 0000 00DB 22FC 00FF"
68 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
69 $"0000 0000 0000 0000 0000 DB21 6BDB FCFF"
70 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
71 $"0000 0000 0000 0000 0081 2BDA 6BB2 FCFF"
72 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
73 $"0000 0000 0000 0000 FB03 5581 FDFB 00FF"
74 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
75 $"0000 0007 2C32 325E 0358 88DE FC00 00FF"
76 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
77 $"002B 0832 0832 5803 3988 ADFB 0000 00FF"
78 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
79 $"3208 3208 5658 0934 88AD FC00 0000 00FF"
80 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FF32"
81 $"0833 3964 5809 3388 AD32 FBFF FFFF FFFF"
82 $"FF00 0000 0000 00FF 0000 0000 0000 3208"
83 $"3339 8858 0934 82DF 3933 3281 D2D2 D2FF"
84 $"FF00 0000 0000 00FF 0000 0000 002C 0833"
85 $"6488 5E09 3388 B35E 6433 3233 81D2 D2FF"
86 $"FF00 0000 0000 00FF 0000 0000 F608 395D"
87 $"8858 0934 82E0 8888 5E39 332C 3281 D2FF"
88 $"FF00 0000 0000 00FF 0000 0000 F739 5E8E"
89 $"820F 5788 FFFD 645E 3357 0E32 3332 81F9"
90 $"FF00 0000 0000 00FF 0000 0000 3965 8833"
91 $"3933 3332 3357 320E 2C0E 322C 0E2D 815D"
92 $"FF00 0000 0000 00FF 0000 0000 F5FC 8808"
93 $"325D 5D34 320E 082C 0E2C 3233 3232 FA58"
94 $"FF00 0000 0000 00FF 0000 0000 2B58 3464"
95 $"88DE 8988 885E 5D33 3232 3332 335E F954"
96 $"FF00 0000 0000 00FF 0000 0000 5D33 5D82"
97 $"FA5D 8789 8EAC 89AC 885E 645E 5D64 5654"
98 $"FF00 0000 0000 00FF 0000 002C 8187 5756"
99 $"0000 F632 8189 B2DE 89B2 88AC 8888 F9F8"
100 $"FF00 0000 0000 00FF 0000 0081 562B 0000"
101 $"0000 0000 F6F7 325D 815E FB88 88FC 5656"
102 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
103 $"0000 0000 0000 0000 0000 FF00 005D 57F8"
104 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
105 $"0000 0000 0000 0000 0000 FF00 00FD AB88"
106 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
107 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
108 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
109 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
110 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
111 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
112 $"FF00 0000 0000 00FF FFFF FFFF FFFF FFFF"
113 $"FFFF FFFF FFFF FFFF FFFF FF00 0000 00FF"
114 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
115 $"0505 0505 FFE6 E6E6 E6E6 FF00 0000 00FF"
116 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
117 $"0505 0505 FFE5 E6E5 E6E6 FF00 0000 00FF"
118 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
119 $"0505 0505 FFE6 E6E6 E6E5 FF00 0000 00FF"
120 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
121 $"0505 0505 FFE6 E5E6 E6E6 FF00 0000 00FF"
122 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
123 $"0505 0505 FFE6 E6E6 E5E6 FF00 0000 00FF"
124 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
125 $"0505 0505 FFE5 E6E6 E6E6 FF00 0000 00FF"
126 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
127 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
128};
129
130data 'icm#' (-16455, "Item Icon") {
131 $"F24B D007 B028 5557 81B1 124A 8236 1005"
132 $"8000 1ABD 8030 557D FFFF FFFF FFFF FFFF"
133 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
134};
135
136data 'icm4' (-16455, "Item Icon") {
137 $"A33F CDCC DCCD CAAE A333 0000 0000 CDEE"
138 $"333A 0000 CCCB 2E0D EDCE CDCD DB2B DB6F"
139 $"D00D 00C2 BBEA BCD5 D00D 00BD 2D2D CC2D"
140 $"D00D 0CDC CCDB BADC D00D 0000 0000 0DCE"
141 $"D00D 0000 0000 0D0D D00D B1BB 1BF9 FD0D"
142 $"D00D 1111 1199 8D0D ECDB BB1B B1F9 FECE"
143};
144
145data 'icm8' (-16455, "Item Icon") {
146 $"DDDA DADD F8F8 F8F8 F8F8 F8F8 F864 8EAC"
147 $"DB23 23DC 0000 0000 0000 0000 F85C 89FB"
148 $"DC23 23DB 0000 0000 F608 3234 5E82 2AFA"
149 $"FBF8 F8FB F8F8 5633 335D 3488 575D EFF1"
150 $"F900 00FA 0000 2C63 5E34 FD64 5D2C 33AA"
151 $"FA00 00F9 0000 395E 5D5D 5733 0832 33F9"
152 $"F900 00FA 00F6 F92C 2B32 5D88 8888 88F8"
153 $"FA00 00F9 0000 0000 0000 0000 00FA F781"
154 $"F900 00FA 0000 0000 0000 0000 00F9 00F9"
155 $"FA00 00F9 3559 5335 5959 E9E7 E7FA 00FA"
156 $"F900 00FA 0505 0505 0505 E8E6 E6F9 00F9"
157 $"FBF8 F8FB 592F 5959 2F59 E9E7 E7FB F8FB"
158};
159
160data 'icns' (-16455, "Item Icon") {
161 $"6963 6E73 0000 9AB8 4943 4E23 0000 0108"
162 $"FFFF FFFF F700 001D BB00 002B D700 0057"
163 $"ED00 009D BB00 0539 DD00 1261 F700 A4E1"
164 $"FFFE 539F 8100 A52F 8102 AED7 8105 4BAB"
165 $"8103 BD12 810E 4A65 8105 2492 8102 F926"
166 $"810B 5FA9 8114 0B7E 8108 05AC 8100 0021"
167 $"8100 0027 8100 0021 8100 0021 8100 0021"
168 $"81FF FFE1 8100 0FE1 8122 0AE1 8108 2FA1"
169 $"8141 0DE1 8104 0B61 8100 9DA1 FFFF FFFF"
170 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
171 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
172 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
173 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
174 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
175 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
176 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
177 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
178 $"6963 6C34 0000 0208 FFFF FFFF FFFF FFFF"
179 $"FFFF FFFF FFFF FFFF F333 333F 0000 0000"
180 $"0000 0000 0003 3E0F F333 333F 0000 0000"
181 $"0000 0000 00A4 3AEF F333 333F 0000 0000"
182 $"0000 0000 0DCA 3EEF F333 333F 0000 0000"
183 $"0000 0000 E1C5 FE0F F333 333F 0000 0000"
184 $"000C CDCB 1DEA E00F F333 333F 0000 0000"
185 $"0CCC 1CB1 C3FD 000F F333 333F 0000 0000"
186 $"D02C CB1D A9E0 000F FFFF FFFF FFFF FFFC"
187 $"C2C3 BCD3 EDDF FFFF F000 000F 0000 00CC"
188 $"2DAB 02BF 2DDD 666F F000 000F 0000 0C1D"
189 $"BBB1 BEAB BDCB D66F F000 000F 0000 CCD4"
190 $"E2CB BAEE B42C CD6F F000 000F 0000 C2BA"
191 $"BD2E FF3B DCC2 DCDD F000 000F 0000 D3BD"
192 $"D2CC 2DCD 02D0 DCEB F000 000F 0000 0EAC"
193 $"CDB2 CCCC 20D2 CDDB F000 000F 0000 CBBB"
194 $"3AAE E2D2 CC2C C2DC F000 000F 0000 BC2E"
195 $"DD4A EEAE EBBB BBCD F000 000F 000C DEDD"
196 $"00CD DAEA AAEF 35DC F000 000F 000B D000"
197 $"0000 CCD4 DEBE EADC F000 000F 0000 0000"
198 $"0000 0000 00F0 0BCD F000 000F 0000 0000"
199 $"0000 0000 00F0 0FEE F000 000F 0000 0000"
200 $"0000 0000 00F0 000F F000 000F 0000 0000"
201 $"0000 0000 00F0 000F F000 000F 0000 0000"
202 $"0000 0000 00F0 000F F000 000F FFFF FFFF"
203 $"FFFF FFFF FFF0 000F F000 000F 1111 1111"
204 $"1111 F999 99F0 000F F000 000F 1111 1111"
205 $"1111 F898 99F0 000F F000 000F 1111 1111"
206 $"1111 F999 98F0 000F F000 000F 1111 1111"
207 $"1111 F989 99F0 000F F000 000F 1111 1111"
208 $"1111 F899 89F0 000F F000 000F 1111 1111"
209 $"1111 F989 98F0 000F FFFF FFFF FFFF FFFF"
210 $"FFFF FFFF FFFF FFFF 6963 6C38 0000 0408"
211 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
212 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
213 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
214 $"0000 0000 0000 0000 0000 00DB 22FC 00FF"
215 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
216 $"0000 0000 0000 0000 0000 DB21 6BDB FCFF"
217 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
218 $"0000 0000 0000 0000 0081 2BDA 6BB2 FCFF"
219 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
220 $"0000 0000 0000 0000 FB03 5581 FDFB 00FF"
221 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
222 $"0000 0007 2C32 325E 0358 88DE FC00 00FF"
223 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
224 $"002B 0832 0832 5803 3988 ADFB 0000 00FF"
225 $"FF23 2323 2323 23FF 0000 0000 0000 0000"
226 $"3208 3208 5658 0934 88AD FC00 0000 00FF"
227 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FF32"
228 $"0833 3964 5809 3388 AD32 FBFF FFFF FFFF"
229 $"FF00 0000 0000 00FF 0000 0000 0000 3208"
230 $"3339 8858 0934 82DF 3933 3281 D2D2 D2FF"
231 $"FF00 0000 0000 00FF 0000 0000 002C 0833"
232 $"6488 5E09 3388 B35E 6433 3233 81D2 D2FF"
233 $"FF00 0000 0000 00FF 0000 0000 F608 395D"
234 $"8858 0934 82E0 8888 5E39 332C 3281 D2FF"
235 $"FF00 0000 0000 00FF 0000 0000 F739 5E8E"
236 $"820F 5788 FFFD 645E 3357 0E32 3332 81F9"
237 $"FF00 0000 0000 00FF 0000 0000 3965 8833"
238 $"3933 3332 3357 320E 2C0E 322C 0E2D 815D"
239 $"FF00 0000 0000 00FF 0000 0000 F5FC 8808"
240 $"325D 5D34 320E 082C 0E2C 3233 3232 FA58"
241 $"FF00 0000 0000 00FF 0000 0000 2B58 3464"
242 $"88DE 8988 885E 5D33 3232 3332 335E F954"
243 $"FF00 0000 0000 00FF 0000 0000 5D33 5D82"
244 $"FA5D 8789 8EAC 89AC 885E 645E 5D64 5654"
245 $"FF00 0000 0000 00FF 0000 002C 8187 5756"
246 $"0000 F632 8189 B2DE 89B2 88AC 8888 F9F8"
247 $"FF00 0000 0000 00FF 0000 0081 562B 0000"
248 $"0000 0000 F6F7 325D 815E FB88 88FC 5656"
249 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
250 $"0000 0000 0000 0000 0000 FF00 005D 57F8"
251 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
252 $"0000 0000 0000 0000 0000 FF00 00FD AB88"
253 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
254 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
255 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
256 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
257 $"FF00 0000 0000 00FF 0000 0000 0000 0000"
258 $"0000 0000 0000 0000 0000 FF00 0000 00FF"
259 $"FF00 0000 0000 00FF FFFF FFFF FFFF FFFF"
260 $"FFFF FFFF FFFF FFFF FFFF FF00 0000 00FF"
261 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
262 $"0505 0505 FFE6 E6E6 E6E6 FF00 0000 00FF"
263 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
264 $"0505 0505 FFE5 E6E5 E6E6 FF00 0000 00FF"
265 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
266 $"0505 0505 FFE6 E6E6 E6E5 FF00 0000 00FF"
267 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
268 $"0505 0505 FFE6 E5E6 E6E6 FF00 0000 00FF"
269 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
270 $"0505 0505 FFE6 E6E6 E5E6 FF00 0000 00FF"
271 $"FF00 0000 0000 00FF 0505 0505 0505 0505"
272 $"0505 0505 FFE5 E6E6 E6E6 FF00 0000 00FF"
273 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
274 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
275 $"696C 3332 0000 0670 9E00 83FF 0000 90FF"
276 $"058E EA44 FF00 0083 FF00 008F FF06 8FEA"
277 $"AB8E 4400 0083 FF00 008E FF07 5ABE AB8E"
278 $"4544 0000 83FF 0000 8DFF 0864 FE91 6945"
279 $"44FF 0000 83FF 0000 88FF 0DE2 E1CB B8A1"
280 $"FEB1 6245 44FF FF00 0083 FF00 0086 FF0A"
281 $"E2E6 E9EF B89F FEC1 6245 4480 FF01 0000"
282 $"83FF 0000 85FF 0AD9 E4E9 EBB8 9FFE C362"
283 $"4544 81FF 8D00 0BD7 E3DE BA8F A2FE C662"
284 $"45D0 6183 0083 FF00 0083 FF0D DAE5 D4B3"
285 $"679A FEC8 6245 A5C9 D361 8200 83FF 0000"
286 $"82FF 0FDC E2D4 A469 9EF2 C962 4579 9BC2"
287 $"D2D0 6181 0083 FF00 0081 FF11 E8DD D2B3"
288 $"6AA0 F3C7 5C1B 5D89 9CB5 CDD5 D361 8000"
289 $"83FF 0000 81FF 14DF C29C 657A DEB3 6A0D"
290 $"2082 ADBD C3D1 D5D7 D069 8800 83FF 0000"
291 $"81FF 14AE 8170 B9C5 C1CE C7B2 AFDA E7EA"
292 $"E1D9 D8D9 D469 8600 83FF 0000 81FF 14EE"
293 $"5C75 EBD4 9FB3 C4DE E7EC EBE3 E4DD D6CE"
294 $"C672 9C00 83FF 0000 81FF 14C6 A2C7 886F"
295 $"4D61 6F7F 9094 C1DB CCC1 C0B7 AB82 A200"
296 $"83FF 0000 81FF 1499 BFAE 5C8A 856D 504E"
297 $"5A5B 556C 8F8B 8C95 888F A400 83FF 0000"
298 $"80FF 15CA 667C 8C9F FFFF DCB5 8251 4A43"
299 $"3F4B 535E 6860 8FA6 0083 FF00 0080 FF02"
300 $"669F C283 FF0C DCC3 A88D 847B 686D 5A5E"
301 $"8FAF 0083 FF00 008F FF06 00FF FF81 8FB5"
302 $"0083 FF00 008F FF06 00FF FF22 4444 0083"
303 $"FF00 008F FF00 0081 FF01 0000 83FF 0000"
304 $"8FFF 0000 81FF 0100 0083 FF00 008F FF00"
305 $"0081 FF01 0000 83FF 9100 81FF 0100 0083"
306 $"FF00 0089 FF84 0081 FF01 0000 83FF 0000"
307 $"89FF 8400 81FF 0100 0083 FF00 0089 FF84"
308 $"0081 FF01 0000 83FF 0000 89FF 8400 81FF"
309 $"0100 0083 FF00 0089 FF84 0081 FF01 0000"
310 $"83FF 0000 89FF 8400 81FF 9E00 A500 90FF"
311 $"0301 0044 FF86 008F FF04 0900 0001 4486"
312 $"008E FF05 67BC 0001 1944 8600 8DFF 0666"
313 $"E49D 7119 44FF 8600 88FF 0BC9 BEA7 9B82"
314 $"E489 4419 44FF FF86 0086 FF0A CFB6 B9BB"
315 $"9B79 E493 4419 4480 FF86 0085 FF0A B2AC"
316 $"B6B5 9B7D E497 4419 4481 FF8D 000B AFAF"
317 $"A06E 5180 E49A 4419 9B62 8300 83FF 0000"
318 $"83FF 0DB2 B397 682E 76E4 9D44 1963 96A1"
319 $"6282 0083 FF00 0082 FF0F BEB0 9953 307E"
320 $"CF9C 4619 3459 8BA6 9C62 8100 83FF 0000"
321 $"81FF 11E0 B191 672E 7ED0 9A44 0E2A 3C55"
322 $"7BA0 A8A2 6280 0083 FF00 0081 FF14 C576"
323 $"4B2D 51B5 864F 040E 3461 818A 9FA8 A7A1"
324 $"687C 0083 FF00 0081 FF14 722D 3A7D 8683"
325 $"9998 8C85 A0B3 B9AE A9AA AAA5 687E 0083"
326 $"FF00 0081 FF14 E844 38B3 A962 6F7D 9DB2"
327 $"BEBC B5B7 AFA5 9B95 7392 0083 FF00 0081"
328 $"FF14 C283 9A44 3D1E 2934 4455 5C8E AC9A"
329 $"8B89 7D75 829A 0083 FF00 0081 FF14 6E8B"
330 $"8044 746B 4522 222F 302E 425C 5558 6055"
331 $"8E9E 0083 FF00 0080 FF15 B466 5A81 9FFF"
332 $"FFD6 9F5B 231B 1310 202B 333C 378E A000"
333 $"83FF 0000 80FF 0266 9FC2 83FF 0CD6 B692"
334 $"6F66 5B47 4931 3B8E A600 83FF 0000 8FFF"
335 $"0600 FFFF 728E AB00 83FF 0000 8FFF 0600"
336 $"FFFF 2244 4400 83FF 0000 8FFF 0000 81FF"
337 $"0100 0083 FF00 008F FF00 0081 FF01 0000"
338 $"83FF 0000 8FFF 0000 81FF 0100 0083 FF91"
339 $"0081 FF01 0000 83FF 0000 89FF 0000 827B"
340 $"0000 81FF 0100 0083 FF00 0089 FF00 0082"
341 $"7B00 0081 FF01 0000 83FF 0000 89FF 0000"
342 $"827B 0000 81FF 0100 0083 FF00 0089 FF00"
343 $"0082 7B00 0081 FF01 0000 83FF 0000 89FF"
344 $"0000 827B 0000 81FF 0100 0083 FF00 0089"
345 $"FF00 0082 7B00 0081 FF9E 00A5 0090 FF03"
346 $"0F43 44FF 8600 8FFF 0417 4316 0F44 8600"
347 $"8EFF 0565 C416 0F1A 4486 008D FF06 5567"
348 $"A76C 1A44 FF86 0088 FF0B BCA9 9293 3E67"
349 $"4D23 1A44 FFFF 8600 86FF 0AC6 9A98 9893"
350 $"3167 4A23 1A44 80FF 8600 85FF 0A9C 8E99"
351 $"9593 3767 4F23 1A44 81FF 8D00 0B92 8F86"
352 $"5747 3967 5223 1A7A 6183 0083 FF00 0083"
353 $"FF0D 9591 7C51 2A32 6753 231A 4B78 8361"
354 $"80FF 0100 0083 FF00 0082 FF13 A98B 7D41"
355 $"2C37 6353 241A 2C44 6D8A 8061 FFFF 0000"
356 $"83FF 0000 81FF 14DA 9278 5427 3761 5122"
357 $"1124 323F 6084 8D86 61FF 0000 83FF 0000"
358 $"81FF 14B7 5B3C 2730 5956 2A0A 0C2C 4F65"
359 $"6C85 8D89 8869 8800 83FF 0000 81FF 1461"
360 $"202F 6A76 7683 8378 748C 9A9D 918E 8E8C"
361 $"8869 5500 83FF 0000 81FF 14E7 2230 9694"
362 $"5354 5F80 95A2 9E9A 9D94 8881 7A73 4400"
363 $"83FF 0000 81FF 14C6 4651 3538 191F 2A36"
364 $"444A 7591 8173 7268 6081 FF00 83FF 0000"
365 $"81FF 0859 6A49 2277 683C 1A1D 8028 0838"
366 $"4D47 484F 478E FF00 83FF 0000 80FF 15A8"
367 $"654A 7F9F FFFF D39A 551C 140E 0B1B 262B"
368 $"3330 8E9A 0083 FF00 0080 FF02 659F C283"
369 $"FF0C D3B2 8E69 5F56 4243 2B35 8E9F 0083"
370 $"FF00 008F FF06 00FF FF6B 8EA7 0083 FF00"
371 $"008F FF06 00FF FF22 4444 0083 FF00 008F"
372 $"FF00 0081 FF01 0000 83FF 0000 8FFF 0000"
373 $"81FF 0100 0083 FF00 008F FF00 0081 FF01"
374 $"0000 83FF 9100 81FF 0100 0083 FF91 0081"
375 $"FF01 0000 83FF 9100 81FF 0100 0083 FF91"
376 $"0081 FF01 0000 83FF 9100 81FF 0100 0083"
377 $"FF91 0081 FF01 0000 83FF 9100 81FF 9E00"
378 $"6C38 6D6B 0000 0408 FFFF FFFF FFFF FFFF"
379 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
380 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
381 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
382 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
383 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
384 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
385 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
386 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
387 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
388 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
389 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
390 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
391 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
392 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
393 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
394 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
395 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
396 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
397 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
398 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
399 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
400 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
401 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
402 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
403 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
404 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
405 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
406 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
407 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
408 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
409 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
410 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
411 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
412 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
413 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
414 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
415 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
416 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
417 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
418 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
419 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
420 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
421 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
422 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
423 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
424 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
425 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
426 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
427 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
428 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
429 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
430 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
431 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
432 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
433 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
434 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
435 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
436 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
437 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
438 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
439 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
440 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
441 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
442 $"FFFF FFFF FFFF FFFF 6963 6823 0000 0248"
443 $"FFFF FFFF FFFF FFFF FFFF FFFF F770 0000"
444 $"0001 EEB0 0000 0001 F5D0 0000 0001 EF70"
445 $"0000 0001 DBB0 0000 0001 F570 0000 0001"
446 $"FED0 0000 0001 D5B0 0000 0001 EF70 0000"
447 $"0001 FAD0 0000 0001 FFFF FFFF FFFF FFFF"
448 $"FFFF FFFF C010 0000 01FF C010 0000 01FF"
449 $"C010 0000 01EF C010 0000 01FF C010 0000"
450 $"01FB C010 0000 01DF C010 0000 01FF C010"
451 $"0000 01FF C010 0000 01FF C010 0000 0181"
452 $"C010 0000 0181 C010 0000 0181 C010 0000"
453 $"0181 C010 0000 0181 C010 0000 0181 C010"
454 $"0000 0181 C010 0000 0181 C010 0000 0181"
455 $"C010 0000 0181 C010 0000 0181 C010 0000"
456 $"0181 C010 0000 0181 C01F FFFF FF81 C01F"
457 $"FFFF FF81 C010 0003 FF81 C011 1113 D581"
458 $"C010 4443 6F81 C012 000B BB81 C010 8883"
459 $"DD81 C014 2203 6B81 C011 004B BD81 C010"
460 $"1103 F781 C014 0423 5B81 FFFF FFFF FFFF"
461 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
462 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
463 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
464 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
465 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
466 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
467 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
468 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
469 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
470 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
471 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
472 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
473 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
474 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
475 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
476 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
477 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
478 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
479 $"6963 6834 0000 0488 FFFF FFFF FFFF FFFF"
480 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
481 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
482 $"FFFF FFFF FFFF FFFF FF33 3333 333F 0000"
483 $"0000 0000 0000 0000 0000 0000 0000 000F"
484 $"FF33 3333 333F 0000 0000 0000 0000 0000"
485 $"0000 0000 0000 000F FF33 3333 333F 0000"
486 $"0000 0000 0000 0000 0000 0000 0000 000F"
487 $"FF33 3333 333F 0000 0000 0000 0000 0000"
488 $"0000 0000 0000 000F FF33 3333 333F 0000"
489 $"0000 0000 0000 0000 0000 0000 0000 000F"
490 $"FF33 3333 333F 0000 0000 0000 0000 0000"
491 $"0000 0000 0000 000F FF33 3333 333F 0000"
492 $"0000 0000 0000 0000 0000 0000 0000 000F"
493 $"FF33 3333 333F 0000 0000 0000 0000 0000"
494 $"0000 0000 0000 000F FF33 3333 333F 0000"
495 $"0000 0000 0000 0000 0000 0000 0000 000F"
496 $"FF33 3333 333F 0000 0000 0000 0000 0000"
497 $"0000 0000 0000 000F FFFF FFFF FFFF FFFF"
498 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
499 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
500 $"FFFF FFFF FFFF FFFF FF00 0000 000F 0000"
501 $"0000 0000 0000 0000 0000 000F F666 666F"
502 $"FF00 0000 000F 0000 0000 0000 0000 0000"
503 $"0000 000F F666 666F FF00 0000 000F 0000"
504 $"0000 0000 0000 0000 0000 000F F666 666F"
505 $"FF00 0000 000F 0000 0000 0000 0000 0000"
506 $"0000 000F F666 666F FF00 0000 000F 0000"
507 $"0000 0000 0000 0000 0000 000F F666 666F"
508 $"FF00 0000 000F 0000 0000 0000 0000 0000"
509 $"0000 000F F666 666F FF00 0000 000F 0000"
510 $"0000 0000 0000 0000 0000 000F F666 666F"
511 $"FF00 0000 000F 0000 0000 0000 0000 0000"
512 $"0000 000F FFFF FFFF FF00 0000 000F 0000"
513 $"0000 0000 0000 0000 0000 000F FFFF FFFF"
514 $"FF00 0000 000F 0000 0000 0000 0000 0000"
515 $"0000 000F F000 000F FF00 0000 000F 0000"
516 $"0000 0000 0000 0000 0000 000F F000 000F"
517 $"FF00 0000 000F 0000 0000 0000 0000 0000"
518 $"0000 000F F000 000F FF00 0000 000F 0000"
519 $"0000 0000 0000 0000 0000 000F F000 000F"
520 $"FF00 0000 000F 0000 0000 0000 0000 0000"
521 $"0000 000F F000 000F FF00 0000 000F 0000"
522 $"0000 0000 0000 0000 0000 000F F000 000F"
523 $"FF00 0000 000F 0000 0000 0000 0000 0000"
524 $"0000 000F F000 000F FF00 0000 000F 0000"
525 $"0000 0000 0000 0000 0000 000F F000 000F"
526 $"FF00 0000 000F 0000 0000 0000 0000 0000"
527 $"0000 000F F000 000F FF00 0000 000F 0000"
528 $"0000 0000 0000 0000 0000 000F F000 000F"
529 $"FF00 0000 000F 0000 0000 0000 0000 0000"
530 $"0000 000F F000 000F FF00 0000 000F 0000"
531 $"0000 0000 0000 0000 0000 000F F000 000F"
532 $"FF00 0000 000F 0000 0000 0000 0000 0000"
533 $"0000 000F F000 000F FF00 0000 000F FFFF"
534 $"FFFF FFFF FFFF FFFF FFFF FFFF F000 000F"
535 $"FF00 0000 000F FFFF FFFF FFFF FFFF FFFF"
536 $"FFFF FFFF F000 000F FF00 0000 000F 1111"
537 $"1111 1111 1111 11FF 9999 999F F000 000F"
538 $"FF00 0000 000F 1111 1111 1111 1111 11FF"
539 $"9989 898F F000 000F FF00 0000 000F 1111"
540 $"1111 1111 1111 11FF 8998 999F F000 000F"
541 $"FF00 0000 000F 1111 1111 1111 1111 11FF"
542 $"9899 989F F000 000F FF00 0000 000F 1111"
543 $"1111 1111 1111 11FF 9989 998F F000 000F"
544 $"FF00 0000 000F 1111 1111 1111 1111 11FF"
545 $"8999 899F F000 000F FF00 0000 000F 1111"
546 $"1111 1111 1111 11FF 9899 989F F000 000F"
547 $"FF00 0000 000F 1111 1111 1111 1111 11FF"
548 $"9999 899F F000 000F FF00 0000 000F 1111"
549 $"1111 1111 1111 11FF 8989 989F F000 000F"
550 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
551 $"FFFF FFFF FFFF FFFF 6963 6838 0000 0908"
552 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
553 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
554 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
555 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
556 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
557 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
558 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
559 $"0000 0000 0000 0000 0000 0000 0000 0000"
560 $"0000 0000 0000 0000 0000 0000 0000 00FF"
561 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
562 $"0000 0000 0000 0000 0000 0000 0000 0000"
563 $"0000 0000 0000 0000 0000 0000 0000 00FF"
564 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
565 $"0000 0000 0000 0000 0000 0000 0000 0000"
566 $"0000 0000 0000 0000 0000 0000 0000 00FF"
567 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
568 $"0000 0000 0000 0000 0000 0000 0000 0000"
569 $"0000 0000 0000 0000 0000 0000 0000 00FF"
570 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
571 $"0000 0000 0000 0000 0000 0000 0000 0000"
572 $"0000 0000 0000 0000 0000 0000 0000 00FF"
573 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
574 $"0000 0000 0000 0000 0000 0000 0000 0000"
575 $"0000 0000 0000 0000 0000 0000 0000 00FF"
576 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
577 $"0000 0000 0000 0000 0000 0000 0000 0000"
578 $"0000 0000 0000 0000 0000 0000 0000 00FF"
579 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
580 $"0000 0000 0000 0000 0000 0000 0000 0000"
581 $"0000 0000 0000 0000 0000 0000 0000 00FF"
582 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
583 $"0000 0000 0000 0000 0000 0000 0000 0000"
584 $"0000 0000 0000 0000 0000 0000 0000 00FF"
585 $"FFFF 2323 2323 2323 2323 23FF 0000 0000"
586 $"0000 0000 0000 0000 0000 0000 0000 0000"
587 $"0000 0000 0000 0000 0000 0000 0000 00FF"
588 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
589 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
590 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
591 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
592 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
593 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
594 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
595 $"0000 0000 0000 0000 0000 0000 0000 0000"
596 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
597 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
598 $"0000 0000 0000 0000 0000 0000 0000 0000"
599 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
600 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
601 $"0000 0000 0000 0000 0000 0000 0000 0000"
602 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
603 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
604 $"0000 0000 0000 0000 0000 0000 0000 0000"
605 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
606 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
607 $"0000 0000 0000 0000 0000 0000 0000 0000"
608 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
609 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
610 $"0000 0000 0000 0000 0000 0000 0000 0000"
611 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
612 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
613 $"0000 0000 0000 0000 0000 0000 0000 0000"
614 $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF"
615 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
616 $"0000 0000 0000 0000 0000 0000 0000 0000"
617 $"0000 0000 0000 00FF FFFF FFFF FFFF FFFF"
618 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
619 $"0000 0000 0000 0000 0000 0000 0000 0000"
620 $"0000 0000 0000 00FF FFFF FFFF FFFF FFFF"
621 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
622 $"0000 0000 0000 0000 0000 0000 0000 0000"
623 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
624 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
625 $"0000 0000 0000 0000 0000 0000 0000 0000"
626 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
627 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
628 $"0000 0000 0000 0000 0000 0000 0000 0000"
629 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
630 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
631 $"0000 0000 0000 0000 0000 0000 0000 0000"
632 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
633 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
634 $"0000 0000 0000 0000 0000 0000 0000 0000"
635 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
636 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
637 $"0000 0000 0000 0000 0000 0000 0000 0000"
638 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
639 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
640 $"0000 0000 0000 0000 0000 0000 0000 0000"
641 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
642 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
643 $"0000 0000 0000 0000 0000 0000 0000 0000"
644 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
645 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
646 $"0000 0000 0000 0000 0000 0000 0000 0000"
647 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
648 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
649 $"0000 0000 0000 0000 0000 0000 0000 0000"
650 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
651 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
652 $"0000 0000 0000 0000 0000 0000 0000 0000"
653 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
654 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
655 $"0000 0000 0000 0000 0000 0000 0000 0000"
656 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
657 $"FFFF 0000 0000 0000 0000 00FF 0000 0000"
658 $"0000 0000 0000 0000 0000 0000 0000 0000"
659 $"0000 0000 0000 00FF FF00 0000 0000 00FF"
660 $"FFFF 0000 0000 0000 0000 00FF FFFF FFFF"
661 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
662 $"FFFF FFFF FFFF FFFF FF00 0000 0000 00FF"
663 $"FFFF 0000 0000 0000 0000 00FF FFFF FFFF"
664 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
665 $"FFFF FFFF FFFF FFFF FF00 0000 0000 00FF"
666 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
667 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
668 $"E6E6 E6E6 E6E6 E6FF FF00 0000 0000 00FF"
669 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
670 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
671 $"E6E6 E5E6 E5E6 E5FF FF00 0000 0000 00FF"
672 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
673 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
674 $"E5E6 E6E6 E6E6 E6FF FF00 0000 0000 00FF"
675 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
676 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
677 $"E6E6 E6E5 E6E5 E6FF FF00 0000 0000 00FF"
678 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
679 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
680 $"E6E5 E6E6 E6E6 E5FF FF00 0000 0000 00FF"
681 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
682 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
683 $"E6E6 E6E6 E5E6 E6FF FF00 0000 0000 00FF"
684 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
685 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
686 $"E5E6 E6E6 E6E5 E6FF FF00 0000 0000 00FF"
687 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
688 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
689 $"E6E6 E6E5 E6E6 E6FF FF00 0000 0000 00FF"
690 $"FFFF 0000 0000 0000 0000 00FF 0505 0505"
691 $"0505 0505 0505 0505 0505 0505 0505 FFFF"
692 $"E6E5 E6E6 E5E6 E6FF FF00 0000 0000 00FF"
693 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
694 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
695 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
696 $"6968 3332 0000 052A DF00 86FF 0000 A0FF"
697 $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF"
698 $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF"
699 $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF"
700 $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF"
701 $"8000 86FF 0000 A0FF E000 86FF 0000 98FF"
702 $"8800 86FF 0000 98FF 8800 86FF 0000 98FF"
703 $"8800 86FF 0000 98FF 8800 86FF 0000 98FF"
704 $"8800 86FF 0000 98FF 8800 86FF 0000 98FF"
705 $"8800 86FF 0000 98FF 8800 86FF 0000 98FF"
706 $"8800 86FF 0000 98FF 0100 0083 FF80 0086"
707 $"FF00 0098 FF01 0000 83FF 8000 86FF 0000"
708 $"98FF 0100 0083 FF80 0086 FF00 0098 FF01"
709 $"0000 83FF 8000 86FF 0000 98FF 0100 0083"
710 $"FF80 0086 FF00 0098 FF01 0000 83FF 8000"
711 $"86FF 0000 98FF 0100 0083 FF80 0086 FF00"
712 $"0098 FF01 0000 83FF 8000 86FF 0000 98FF"
713 $"0100 0083 FF80 0086 FF00 0098 FF01 0000"
714 $"83FF 8000 86FF 0000 98FF 0100 0083 FF80"
715 $"0086 FF00 0098 FF01 0000 83FF 8000 86FF"
716 $"0000 98FF 0100 0083 FF80 0086 FF9B 0083"
717 $"FF80 0086 FF9B 0083 FF80 0086 FF00 008F"
718 $"FF88 0083 FF80 0086 FF00 008F FF88 0083"
719 $"FF80 0086 FF00 008F FF88 0083 FF80 0086"
720 $"FF00 008F FF88 0083 FF80 0086 FF00 008F"
721 $"FF88 0083 FF80 0086 FF00 008F FF88 0083"
722 $"FF80 0086 FF00 008F FF88 0083 FF80 0086"
723 $"FF00 008F FF88 0083 FF80 0086 FF00 008F"
724 $"FF88 0083 FFAE 00E9 00A0 FF8A 00A0 FF8A"
725 $"00A0 FF8A 00A0 FF8A 00A0 FF8A 00A0 FF8A"
726 $"00A0 FF8A 00A0 FF8A 00A0 FF8A 00A0 FFE0"
727 $"0086 FF00 0098 FF88 0086 FF00 0098 FF88"
728 $"0086 FF00 0098 FF88 0086 FF00 0098 FF88"
729 $"0086 FF00 0098 FF88 0086 FF00 0098 FF88"
730 $"0086 FF00 0098 FF88 0086 FF00 0098 FF88"
731 $"0086 FF00 0098 FF88 0086 FF00 0098 FF01"
732 $"0000 83FF 8000 86FF 0000 98FF 0100 0083"
733 $"FF80 0086 FF00 0098 FF01 0000 83FF 8000"
734 $"86FF 0000 98FF 0100 0083 FF80 0086 FF00"
735 $"0098 FF01 0000 83FF 8000 86FF 0000 98FF"
736 $"0100 0083 FF80 0086 FF00 0098 FF01 0000"
737 $"83FF 8000 86FF 0000 98FF 0100 0083 FF80"
738 $"0086 FF00 0098 FF01 0000 83FF 8000 86FF"
739 $"0000 98FF 0100 0083 FF80 0086 FF00 0098"
740 $"FF01 0000 83FF 8000 86FF 0000 98FF 0100"
741 $"0083 FF80 0086 FF00 0098 FF01 0000 83FF"
742 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
743 $"8000 86FF 0000 8FFF 0100 0084 7B01 0000"
744 $"83FF 8000 86FF 0000 8FFF 0100 0084 7B01"
745 $"0000 83FF 8000 86FF 0000 8FFF 0100 0084"
746 $"7B01 0000 83FF 8000 86FF 0000 8FFF 0100"
747 $"0084 7B01 0000 83FF 8000 86FF 0000 8FFF"
748 $"0100 0084 7B01 0000 83FF 8000 86FF 0000"
749 $"8FFF 0100 0084 7B01 0000 83FF 8000 86FF"
750 $"0000 8FFF 0100 0084 7B01 0000 83FF 8000"
751 $"86FF 0000 8FFF 0100 0084 7B01 0000 83FF"
752 $"8000 86FF 0000 8FFF 0100 0084 7B01 0000"
753 $"83FF AE00 E900 A0FF 8A00 A0FF 8A00 A0FF"
754 $"8A00 A0FF 8A00 A0FF 8A00 A0FF 8A00 A0FF"
755 $"8A00 A0FF 8A00 A0FF 8A00 A0FF E000 86FF"
756 $"0000 98FF 0100 0083 FF80 0086 FF00 0098"
757 $"FF01 0000 83FF 8000 86FF 0000 98FF 0100"
758 $"0083 FF80 0086 FF00 0098 FF01 0000 83FF"
759 $"8000 86FF 0000 98FF 0100 0083 FF80 0086"
760 $"FF00 0098 FF01 0000 83FF 8000 86FF 0000"
761 $"98FF 0100 0083 FF80 0086 FF00 0098 FF88"
762 $"0086 FF00 0098 FF88 0086 FF00 0098 FF01"
763 $"0000 83FF 8000 86FF 0000 98FF 0100 0083"
764 $"FF80 0086 FF00 0098 FF01 0000 83FF 8000"
765 $"86FF 0000 98FF 0100 0083 FF80 0086 FF00"
766 $"0098 FF01 0000 83FF 8000 86FF 0000 98FF"
767 $"0100 0083 FF80 0086 FF00 0098 FF01 0000"
768 $"83FF 8000 86FF 0000 98FF 0100 0083 FF80"
769 $"0086 FF00 0098 FF01 0000 83FF 8000 86FF"
770 $"0000 98FF 0100 0083 FF80 0086 FF00 0098"
771 $"FF01 0000 83FF 8000 86FF 0000 98FF 0100"
772 $"0083 FF80 0086 FF00 0098 FF01 0000 83FF"
773 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
774 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
775 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
776 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
777 $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF"
778 $"8000 86FF 9B00 83FF AE00 6838 6D6B 0000"
779 $"0908 FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
780 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
781 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
782 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
783 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
784 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
785 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
786 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
787 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
788 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
789 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
790 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
791 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
792 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
793 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
794 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
795 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
796 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
797 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
798 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
799 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
800 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
801 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
802 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
803 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
804 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
805 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
806 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
807 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
808 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
809 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
810 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
811 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
812 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
813 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
814 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
815 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
816 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
817 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
818 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
819 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
820 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
821 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
822 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
823 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
824 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
825 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
826 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
827 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
828 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
829 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
830 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
831 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
832 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
833 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
834 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
835 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
836 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
837 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
838 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
839 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
840 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
841 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
842 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
843 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
844 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
845 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
846 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
847 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
848 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
849 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
850 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
851 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
852 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
853 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
854 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
855 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
856 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
857 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
858 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
859 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
860 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
861 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
862 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
863 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
864 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
865 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
866 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
867 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
868 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
869 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
870 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
871 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
872 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
873 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
874 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
875 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
876 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
877 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
878 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
879 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
880 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
881 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
882 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
883 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
884 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
885 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
886 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
887 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
888 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
889 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
890 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
891 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
892 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
893 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
894 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
895 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
896 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
897 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
898 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
899 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
900 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
901 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
902 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
903 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
904 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
905 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
906 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
907 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
908 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
909 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
910 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
911 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
912 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
913 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
914 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
915 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
916 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
917 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
918 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
919 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
920 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
921 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
922 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
923 $"FFFF 6963 7323 0000 0048 F557 D001 700E"
924 $"E024 9A9B 0175 9299 0162 923E 0001 9004"
925 $"0000 9BBC 102C 8434 5AFD FFFF FFFF FFFF"
926 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
927 $"FFFF FFFF FFFF FFFF FFFF 6963 7334 0000"
928 $"0088 AA3F DDDD DDDD DDAE A333 0000 0000"
929 $"0C3E 333A 0000 000C DBEC A333 0000 0CBC"
930 $"2A00 EDDF DDDB D2CB ECFF D00D 00CD BBBA"
931 $"B2D6 D00D 00B2 DDBB DCCB D00D 00D4 D2D2"
932 $"CC2D D00D 00BD CCE5 3EEC D00D 0C00 0000"
933 $"CBCB D00D 0000 0000 0D0D D00D 0000 0000"
934 $"0D00 D00D ABAB ABAF 9F00 D00D 1111 11B8"
935 $"9900 D00D 1111 1189 9F00 EDDA 8291 ABAF"
936 $"9FDD 6963 7338 0000 0108 DEDC DBB3 F9FA"
937 $"F9FA F9FA F9FA F9FA 8FFB DC23 23DB 0000"
938 $"0000 0000 0000 0032 6A88 DB23 23DC 0000"
939 $"0000 0000 F52B 3357 882B DC23 23DB 0000"
940 $"0000 F608 3234 33AD F600 FCFA F9AC F9FA"
941 $"F95D 0E5D 3457 8833 F1F2 FA00 00F9 0000"
942 $"0733 825E 33AD 6432 33EF F900 00FA 0000"
943 $"5D5E 5D33 825D 3332 2C57 FA00 00F9 0000"
944 $"5739 5D64 5D33 3232 335C F900 00FA 00F5"
945 $"5D57 F732 828E 8988 88F9 FA00 00F9 00F6"
946 $"F600 0000 F5F6 4F5D F85D F900 00FA 0000"
947 $"0000 0000 0000 00FA 0056 FA00 00FA 0000"
948 $"0000 0000 0000 00F9 0000 F900 00F9 8359"
949 $"8359 8359 ADD1 E8EA 0000 FA00 00FA 0505"
950 $"0505 0505 5FE5 E6E8 0000 F900 00F9 0505"
951 $"0505 0505 7DE6 E6D1 0000 ACF9 FAFC 8359"
952 $"8359 8359 ADD1 E8E9 FAF9 6973 3332 0000"
953 $"026C 0340 8080 4087 8005 5E51 80FF FF80"
954 $"86FF 06AA B457 80FF FF80 83FF 09F1 E1C1"
955 $"A94E D180 FFFF 8081 FF0B ECE6 DFBE BA4D"
956 $"D1FF 4080 8040 8080 4FA6 DCAD B3BC 65B4"
957 $"1900 80FF FF80 FFFF E9CF 87A7 B848 8FC6"
958 $"B719 80FF FF80 FFFF B58B A0C9 7D8B CFD4"
959 $"D89E 80FF FF80 FFFF ADAC A280 A5BE DBD4"
960 $"C79A 80FF FF80 FFF2 8F8E C5B4 7655 516E"
961 $"7A82 80FF FF80 FFD9 D880 FF09 F7DB C479"
962 $"B280 80FF FF80 86FF 0680 FF9A 80FF FF80"
963 $"86FF 0580 FFFF 80FF FF84 8000 4080 0005"
964 $"FFFF 80FF FF80 83FF 0080 8000 05FF FF80"
965 $"FFFF 8083 FF00 8080 0005 FFFF 4080 8040"
966 $"8380 0040 8000 0180 8081 0087 8001 0151"
967 $"8100 86FF 028B 0129 8100 83FF 05E2 D0B3"
968 $"943A D181 0081 FF0B D9BA B19E 952F D1FF"
969 $"4080 8040 8080 4F85 A369 8B98 378E 1900"
970 $"80FF FF80 FFFF D491 417F 9326 4893 9219"
971 $"80FF FF80 FFFF 774C 6C96 5E5A 94A0 A986"
972 $"80FF FF80 FFFF 9D73 7346 6589 ABA3 9280"
973 $"80FF FF80 FFED 6F7A BAA2 5028 253F 4A6A"
974 $"80FF FF80 FFD9 D880 FF09 F5D2 B569 9E73"
975 $"80FF FF80 86FF 0680 FF9A 80FF FF80 86FF"
976 $"0580 FFFF 80FF FF84 8009 403E 3E1F FFFF"
977 $"80FF FF80 83FF 0980 7B7B 3EFF FF80 FFFF"
978 $"8083 FF09 807B 7B3E FFFF 4080 8040 8380"
979 $"0540 3E3E 1F80 8081 0087 8001 1551 8100"
980 $"86FF 0290 202D 8100 83FF 05D9 C97F 6039"
981 $"D181 0081 FF0B CEA2 9759 4927 D1FF 4080"
982 $"8040 8080 4F6F 8657 474C 2976 5980 80FF"
983 $"FF80 FFFF C676 343F 4B1D 3977 7ED8 80FF"
984 $"FF80 FFFF 6540 536B 4C4E 7B85 8D79 80FF"
985 $"FF80 FFFF 8654 6638 5072 908A 7974 80FF"
986 $"FF80 FFEA 5D63 BB9E 4A20 1F36 3E65 80FF"
987 $"FF80 FFD9 D880 FF09 F4D0 B266 9B6F 80FF"
988 $"FF80 86FF 0680 FF9A 80FF FF80 86FF 0680"
989 $"FFFF 80FF FF80 8700 05FF FF80 FFFF 8087"
990 $"0005 FFFF 80FF FF80 8700 05FF FF40 8080"
991 $"4087 0001 8080 7338 6D6B 0000 0108 FFFF"
992 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
993 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
994 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
995 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
996 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
997 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
998 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
999 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1000 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1001 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1002 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1003 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1004 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1005 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1006 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1007 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF 6963"
1008 $"6D23 0000 0038 F24B D007 B028 5557 81B1"
1009 $"124A 8236 1005 8000 1ABD 8030 557D FFFF"
1010 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1011 $"FFFF FFFF FFFF 6963 6D34 0000 0068 A33F"
1012 $"CDCC DCCD CAAE A333 0000 0000 CDEE 333A"
1013 $"0000 CCCB 2E0D EDCE CDCD DB2B DB6F D00D"
1014 $"00C2 BBEA BCD5 D00D 00BD 2D2D CC2D D00D"
1015 $"0CDC CCDB BADC D00D 0000 0000 0DCE D00D"
1016 $"0000 0000 0D0D D00D B1BB 1BF9 FD0D D00D"
1017 $"1111 1199 8D0D ECDB BB1B B1F9 FECE 6963"
1018 $"6D38 0000 00C8 DDDA DADD F8F8 F8F8 F8F8"
1019 $"F8F8 F864 8EAC DB23 23DC 0000 0000 0000"
1020 $"0000 F85C 89FB DC23 23DB 0000 0000 F608"
1021 $"3234 5E82 2AFA FBF8 F8FB F8F8 5633 335D"
1022 $"3488 575D EFF1 F900 00FA 0000 2C63 5E34"
1023 $"FD64 5D2C 33AA FA00 00F9 0000 395E 5D5D"
1024 $"5733 0832 33F9 F900 00FA 00F6 F92C 2B32"
1025 $"5D88 8888 88F8 FA00 00F9 0000 0000 0000"
1026 $"0000 00FA F781 F900 00FA 0000 0000 0000"
1027 $"0000 00F9 00F9 FA00 00F9 3559 5335 5959"
1028 $"E9E7 E7FA 00FA F900 00FA 0505 0505 0505"
1029 $"E8E6 E6F9 00F9 FBF8 F8FB 592F 5959 2F59"
1030 $"E9E7 E7FB F8FB 6974 3332 0000 245A 0000"
1031 $"0000 FF00 FF00 FF00 FB00 95FF 8100 C9FF"
1032 $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF"
1033 $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF"
1034 $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF"
1035 $"818E 81EA 8144 81FF 8500 95FF 8100 C5FF"
1036 $"818F 81EA 81AB 818E 8144 8500 95FF 8100"
1037 $"C5FF 818F 81EA 81AB 818E 8144 8500 95FF"
1038 $"8100 C5FF 818F 81EA 81AB 818E 8144 8500"
1039 $"95FF 8100 C5FF 818F 81EA 81AB 818E 8144"
1040 $"8500 95FF 8100 C1FF 815A 81BE 81AB 818E"
1041 $"8145 8144 8500 95FF 8100 C1FF 815A 81BE"
1042 $"81AB 818E 8145 8144 8500 95FF 8100 C1FF"
1043 $"815A 81BE 81AB 818E 8145 8144 8500 95FF"
1044 $"8100 C1FF 815A 81BE 81AB 818E 8145 8144"
1045 $"8500 95FF 8100 BDFF 8164 81FE 8191 8169"
1046 $"8145 8144 81FF 8500 95FF 8100 BDFF 8164"
1047 $"81FE 8191 8169 8145 8144 81FF 8500 95FF"
1048 $"8100 BDFF 8164 81FE 8191 8169 8145 8144"
1049 $"81FF 8500 95FF 8100 BDFF 8164 81FE 8191"
1050 $"8169 8145 8144 81FF 8500 95FF 8100 A9FF"
1051 $"81E2 81E1 81CB 81B8 81A1 81FE 81B1 8162"
1052 $"8145 8144 85FF 8500 95FF 8100 A9FF 81E2"
1053 $"81E1 81CB 81B8 81A1 81FE 81B1 8162 8145"
1054 $"8144 85FF 8500 95FF 8100 A9FF 81E2 81E1"
1055 $"81CB 81B8 81A1 81FE 81B1 8162 8145 8144"
1056 $"85FF 8500 95FF 8100 A9FF 81E2 81E1 81CB"
1057 $"81B8 81A1 81FE 81B1 8162 8145 8144 85FF"
1058 $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF"
1059 $"81B8 819F 81FE 81C1 8162 8145 8144 89FF"
1060 $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF"
1061 $"81B8 819F 81FE 81C1 8162 8145 8144 89FF"
1062 $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF"
1063 $"81B8 819F 81FE 81C1 8162 8145 8144 89FF"
1064 $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF"
1065 $"81B8 819F 81FE 81C1 8162 8145 8144 89FF"
1066 $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB"
1067 $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF"
1068 $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB"
1069 $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF"
1070 $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB"
1071 $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF"
1072 $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB"
1073 $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF"
1074 $"BD00 81D7 81E3 81DE 81BA 818F 81A2 81FE"
1075 $"81C6 8162 8145 81D0 8161 CD00 81D7 81E3"
1076 $"81DE 81BA 818F 81A2 81FE 81C6 8162 8145"
1077 $"81D0 8161 CD00 81D7 81E3 81DE 81BA 818F"
1078 $"81A2 81FE 81C6 8162 8145 81D0 8161 CD00"
1079 $"81D7 81E3 81DE 81BA 818F 81A2 81FE 81C6"
1080 $"8162 8145 81D0 8161 9500 95FF 8100 95FF"
1081 $"81DA 81E5 81D4 81B3 8167 819A 81FE 81C8"
1082 $"8162 8145 81A5 81C9 81D3 8161 9100 95FF"
1083 $"8100 95FF 81DA 81E5 81D4 81B3 8167 819A"
1084 $"81FE 81C8 8162 8145 81A5 81C9 81D3 8161"
1085 $"9100 95FF 8100 95FF 81DA 81E5 81D4 81B3"
1086 $"8167 819A 81FE 81C8 8162 8145 81A5 81C9"
1087 $"81D3 8161 9100 95FF 8100 95FF 81DA 81E5"
1088 $"81D4 81B3 8167 819A 81FE 81C8 8162 8145"
1089 $"81A5 81C9 81D3 8161 9100 95FF 8100 91FF"
1090 $"81DC 81E2 81D4 81A4 8169 819E 81F2 81C9"
1091 $"8162 8145 8179 819B 81C2 81D2 81D0 8161"
1092 $"8D00 95FF 8100 91FF 81DC 81E2 81D4 81A4"
1093 $"8169 819E 81F2 81C9 8162 8145 8179 819B"
1094 $"81C2 81D2 81D0 8161 8D00 95FF 8100 91FF"
1095 $"81DC 81E2 81D4 81A4 8169 819E 81F2 81C9"
1096 $"8162 8145 8179 819B 81C2 81D2 81D0 8161"
1097 $"8D00 95FF 8100 91FF 81DC 81E2 81D4 81A4"
1098 $"8169 819E 81F2 81C9 8162 8145 8179 819B"
1099 $"81C2 81D2 81D0 8161 8D00 95FF 8100 8DFF"
1100 $"81E8 81DD 81D2 81B3 816A 81A0 81F3 81C7"
1101 $"815C 811B 815D 8189 819C 81B5 81CD 81D5"
1102 $"81D3 8161 8900 95FF 8100 8DFF 81E8 81DD"
1103 $"81D2 81B3 816A 81A0 81F3 81C7 815C 811B"
1104 $"815D 8189 819C 81B5 81CD 81D5 81D3 8161"
1105 $"8900 95FF 8100 8DFF 81E8 81DD 81D2 81B3"
1106 $"816A 81A0 81F3 81C7 815C 811B 815D 8189"
1107 $"819C 81B5 81CD 81D5 81D3 8161 8900 95FF"
1108 $"8100 8DFF 81E8 81DD 81D2 81B3 816A 81A0"
1109 $"81F3 81C7 815C 811B 815D 8189 819C 81B5"
1110 $"81CD 81D5 81D3 8161 8900 95FF 8100 8DFF"
1111 $"81DF 81C2 819C 8165 817A 81DE 81B3 816A"
1112 $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5"
1113 $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF"
1114 $"81DF 81C2 819C 8165 817A 81DE 81B3 816A"
1115 $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5"
1116 $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF"
1117 $"81DF 81C2 819C 8165 817A 81DE 81B3 816A"
1118 $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5"
1119 $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF"
1120 $"81DF 81C2 819C 8165 817A 81DE 81B3 816A"
1121 $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5"
1122 $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF"
1123 $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7"
1124 $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8"
1125 $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF"
1126 $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7"
1127 $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8"
1128 $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF"
1129 $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7"
1130 $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8"
1131 $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF"
1132 $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7"
1133 $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8"
1134 $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF"
1135 $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4"
1136 $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6"
1137 $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF"
1138 $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4"
1139 $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6"
1140 $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF"
1141 $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4"
1142 $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6"
1143 $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF"
1144 $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4"
1145 $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6"
1146 $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF"
1147 $"81C6 81A2 81C7 8188 816F 814D 8161 816F"
1148 $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0"
1149 $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF"
1150 $"81C6 81A2 81C7 8188 816F 814D 8161 816F"
1151 $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0"
1152 $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF"
1153 $"81C6 81A2 81C7 8188 816F 814D 8161 816F"
1154 $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0"
1155 $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF"
1156 $"81C6 81A2 81C7 8188 816F 814D 8161 816F"
1157 $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0"
1158 $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF"
1159 $"8199 81BF 81AE 815C 818A 8185 816D 8150"
1160 $"814E 815A 815B 8155 816C 818F 818B 818C"
1161 $"8195 8188 818F 81A4 8100 95FF 8100 8DFF"
1162 $"8199 81BF 81AE 815C 818A 8185 816D 8150"
1163 $"814E 815A 815B 8155 816C 818F 818B 818C"
1164 $"8195 8188 818F 81A4 8100 95FF 8100 8DFF"
1165 $"8199 81BF 81AE 815C 818A 8185 816D 8150"
1166 $"814E 815A 815B 8155 816C 818F 818B 818C"
1167 $"8195 8188 818F 81A4 8100 95FF 8100 8DFF"
1168 $"8199 81BF 81AE 815C 818A 8185 816D 8150"
1169 $"814E 815A 815B 8155 816C 818F 818B 818C"
1170 $"8195 8188 818F 81A4 8100 95FF 8100 89FF"
1171 $"81CA 8166 817C 818C 819F 85FF 81DC 81B5"
1172 $"8182 8151 814A 8143 813F 814B 8153 815E"
1173 $"8168 8160 818F 81A6 8100 95FF 8100 89FF"
1174 $"81CA 8166 817C 818C 819F 85FF 81DC 81B5"
1175 $"8182 8151 814A 8143 813F 814B 8153 815E"
1176 $"8168 8160 818F 81A6 8100 95FF 8100 89FF"
1177 $"81CA 8166 817C 818C 819F 85FF 81DC 81B5"
1178 $"8182 8151 814A 8143 813F 814B 8153 815E"
1179 $"8168 8160 818F 81A6 8100 95FF 8100 89FF"
1180 $"81CA 8166 817C 818C 819F 85FF 81DC 81B5"
1181 $"8182 8151 814A 8143 813F 814B 8153 815E"
1182 $"8168 8160 818F 81A6 8100 95FF 8100 89FF"
1183 $"8166 819F 81C2 95FF 81DC 81C3 81A8 818D"
1184 $"8184 817B 8168 816D 815A 815E 818F 81AF"
1185 $"8100 95FF 8100 89FF 8166 819F 81C2 95FF"
1186 $"81DC 81C3 81A8 818D 8184 817B 8168 816D"
1187 $"815A 815E 818F 81AF 8100 95FF 8100 89FF"
1188 $"8166 819F 81C2 95FF 81DC 81C3 81A8 818D"
1189 $"8184 817B 8168 816D 815A 815E 818F 81AF"
1190 $"8100 95FF 8100 89FF 8166 819F 81C2 95FF"
1191 $"81DC 81C3 81A8 818D 8184 817B 8168 816D"
1192 $"815A 815E 818F 81AF 8100 95FF 8100 C5FF"
1193 $"8100 85FF 8181 818F 81B5 8100 95FF 8100"
1194 $"C5FF 8100 85FF 8181 818F 81B5 8100 95FF"
1195 $"8100 C5FF 8100 85FF 8181 818F 81B5 8100"
1196 $"95FF 8100 C5FF 8100 85FF 8181 818F 81B5"
1197 $"8100 95FF 8100 C5FF 8100 85FF 8122 8544"
1198 $"8100 95FF 8100 C5FF 8100 85FF 8122 8544"
1199 $"8100 95FF 8100 C5FF 8100 85FF 8122 8544"
1200 $"8100 95FF 8100 C5FF 8100 85FF 8122 8544"
1201 $"8100 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1202 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1203 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1204 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1205 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1206 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1207 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1208 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1209 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1210 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1211 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1212 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1213 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1214 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1215 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1216 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1217 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1218 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1219 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1220 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1221 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1222 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1223 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1224 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1225 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1226 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1227 $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF"
1228 $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF"
1229 $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF"
1230 $"FF00 FF00 FF00 FB00 FF00 FF00 FF00 FF00"
1231 $"9500 C9FF 8101 8100 8144 81FF A100 C9FF"
1232 $"8101 8100 8144 81FF A100 C9FF 8101 8100"
1233 $"8144 81FF A100 C9FF 8101 8100 8144 81FF"
1234 $"A100 C5FF 8109 8500 8101 8144 A100 C5FF"
1235 $"8109 8500 8101 8144 A100 C5FF 8109 8500"
1236 $"8101 8144 A100 C5FF 8109 8500 8101 8144"
1237 $"A100 C1FF 8167 81BC 8100 8101 8119 8144"
1238 $"A100 C1FF 8167 81BC 8100 8101 8119 8144"
1239 $"A100 C1FF 8167 81BC 8100 8101 8119 8144"
1240 $"A100 C1FF 8167 81BC 8100 8101 8119 8144"
1241 $"A100 BDFF 8166 81E4 819D 8171 8119 8144"
1242 $"81FF A100 BDFF 8166 81E4 819D 8171 8119"
1243 $"8144 81FF A100 BDFF 8166 81E4 819D 8171"
1244 $"8119 8144 81FF A100 BDFF 8166 81E4 819D"
1245 $"8171 8119 8144 81FF A100 A9FF 81C9 81BE"
1246 $"81A7 819B 8182 81E4 8189 8144 8119 8144"
1247 $"85FF A100 A9FF 81C9 81BE 81A7 819B 8182"
1248 $"81E4 8189 8144 8119 8144 85FF A100 A9FF"
1249 $"81C9 81BE 81A7 819B 8182 81E4 8189 8144"
1250 $"8119 8144 85FF A100 A9FF 81C9 81BE 81A7"
1251 $"819B 8182 81E4 8189 8144 8119 8144 85FF"
1252 $"A100 A1FF 81CF 81B6 81B9 81BB 819B 8179"
1253 $"81E4 8193 8144 8119 8144 89FF A100 A1FF"
1254 $"81CF 81B6 81B9 81BB 819B 8179 81E4 8193"
1255 $"8144 8119 8144 89FF A100 A1FF 81CF 81B6"
1256 $"81B9 81BB 819B 8179 81E4 8193 8144 8119"
1257 $"8144 89FF A100 A1FF 81CF 81B6 81B9 81BB"
1258 $"819B 8179 81E4 8193 8144 8119 8144 89FF"
1259 $"A100 9DFF 81B2 81AC 81B6 81B5 819B 817D"
1260 $"81E4 8197 8144 8119 8144 8DFF A100 9DFF"
1261 $"81B2 81AC 81B6 81B5 819B 817D 81E4 8197"
1262 $"8144 8119 8144 8DFF A100 9DFF 81B2 81AC"
1263 $"81B6 81B5 819B 817D 81E4 8197 8144 8119"
1264 $"8144 8DFF A100 9DFF 81B2 81AC 81B6 81B5"
1265 $"819B 817D 81E4 8197 8144 8119 8144 8DFF"
1266 $"BD00 85AF 81A0 816E 8151 8180 81E4 819A"
1267 $"8144 8119 819B 8162 CD00 85AF 81A0 816E"
1268 $"8151 8180 81E4 819A 8144 8119 819B 8162"
1269 $"CD00 85AF 81A0 816E 8151 8180 81E4 819A"
1270 $"8144 8119 819B 8162 CD00 85AF 81A0 816E"
1271 $"8151 8180 81E4 819A 8144 8119 819B 8162"
1272 $"9500 95FF 8100 95FF 81B2 81B3 8197 8168"
1273 $"812E 8176 81E4 819D 8144 8119 8163 8196"
1274 $"81A1 8162 9100 95FF 8100 95FF 81B2 81B3"
1275 $"8197 8168 812E 8176 81E4 819D 8144 8119"
1276 $"8163 8196 81A1 8162 9100 95FF 8100 95FF"
1277 $"81B2 81B3 8197 8168 812E 8176 81E4 819D"
1278 $"8144 8119 8163 8196 81A1 8162 9100 95FF"
1279 $"8100 95FF 81B2 81B3 8197 8168 812E 8176"
1280 $"81E4 819D 8144 8119 8163 8196 81A1 8162"
1281 $"9100 95FF 8100 91FF 81BE 81B0 8199 8153"
1282 $"8130 817E 81CF 819C 8146 8119 8134 8159"
1283 $"818B 81A6 819C 8162 8D00 95FF 8100 91FF"
1284 $"81BE 81B0 8199 8153 8130 817E 81CF 819C"
1285 $"8146 8119 8134 8159 818B 81A6 819C 8162"
1286 $"8D00 95FF 8100 91FF 81BE 81B0 8199 8153"
1287 $"8130 817E 81CF 819C 8146 8119 8134 8159"
1288 $"818B 81A6 819C 8162 8D00 95FF 8100 91FF"
1289 $"81BE 81B0 8199 8153 8130 817E 81CF 819C"
1290 $"8146 8119 8134 8159 818B 81A6 819C 8162"
1291 $"8D00 95FF 8100 8DFF 81E0 81B1 8191 8167"
1292 $"812E 817E 81D0 819A 8144 810E 812A 813C"
1293 $"8155 817B 81A0 81A8 81A2 8162 8900 95FF"
1294 $"8100 8DFF 81E0 81B1 8191 8167 812E 817E"
1295 $"81D0 819A 8144 810E 812A 813C 8155 817B"
1296 $"81A0 81A8 81A2 8162 8900 95FF 8100 8DFF"
1297 $"81E0 81B1 8191 8167 812E 817E 81D0 819A"
1298 $"8144 810E 812A 813C 8155 817B 81A0 81A8"
1299 $"81A2 8162 8900 95FF 8100 8DFF 81E0 81B1"
1300 $"8191 8167 812E 817E 81D0 819A 8144 810E"
1301 $"812A 813C 8155 817B 81A0 81A8 81A2 8162"
1302 $"8900 95FF 8100 8DFF 81C5 8176 814B 812D"
1303 $"8151 81B5 8186 814F 8104 810E 8134 8161"
1304 $"8181 818A 819F 81A8 81A7 81A1 8168 817C"
1305 $"8100 95FF 8100 8DFF 81C5 8176 814B 812D"
1306 $"8151 81B5 8186 814F 8104 810E 8134 8161"
1307 $"8181 818A 819F 81A8 81A7 81A1 8168 817C"
1308 $"8100 95FF 8100 8DFF 81C5 8176 814B 812D"
1309 $"8151 81B5 8186 814F 8104 810E 8134 8161"
1310 $"8181 818A 819F 81A8 81A7 81A1 8168 817C"
1311 $"8100 95FF 8100 8DFF 81C5 8176 814B 812D"
1312 $"8151 81B5 8186 814F 8104 810E 8134 8161"
1313 $"8181 818A 819F 81A8 81A7 81A1 8168 817C"
1314 $"8100 95FF 8100 8DFF 8172 812D 813A 817D"
1315 $"8186 8183 8199 8198 818C 8185 81A0 81B3"
1316 $"81B9 81AE 81A9 85AA 81A5 8168 817E 8100"
1317 $"95FF 8100 8DFF 8172 812D 813A 817D 8186"
1318 $"8183 8199 8198 818C 8185 81A0 81B3 81B9"
1319 $"81AE 81A9 85AA 81A5 8168 817E 8100 95FF"
1320 $"8100 8DFF 8172 812D 813A 817D 8186 8183"
1321 $"8199 8198 818C 8185 81A0 81B3 81B9 81AE"
1322 $"81A9 85AA 81A5 8168 817E 8100 95FF 8100"
1323 $"8DFF 8172 812D 813A 817D 8186 8183 8199"
1324 $"8198 818C 8185 81A0 81B3 81B9 81AE 81A9"
1325 $"85AA 81A5 8168 817E 8100 95FF 8100 8DFF"
1326 $"81E8 8144 8138 81B3 81A9 8162 816F 817D"
1327 $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5"
1328 $"819B 8195 8173 8192 8100 95FF 8100 8DFF"
1329 $"81E8 8144 8138 81B3 81A9 8162 816F 817D"
1330 $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5"
1331 $"819B 8195 8173 8192 8100 95FF 8100 8DFF"
1332 $"81E8 8144 8138 81B3 81A9 8162 816F 817D"
1333 $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5"
1334 $"819B 8195 8173 8192 8100 95FF 8100 8DFF"
1335 $"81E8 8144 8138 81B3 81A9 8162 816F 817D"
1336 $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5"
1337 $"819B 8195 8173 8192 8100 95FF 8100 8DFF"
1338 $"81C2 8183 819A 8144 813D 811E 8129 8134"
1339 $"8144 8155 815C 818E 81AC 819A 818B 8189"
1340 $"817D 8175 8182 819A 8100 95FF 8100 8DFF"
1341 $"81C2 8183 819A 8144 813D 811E 8129 8134"
1342 $"8144 8155 815C 818E 81AC 819A 818B 8189"
1343 $"817D 8175 8182 819A 8100 95FF 8100 8DFF"
1344 $"81C2 8183 819A 8144 813D 811E 8129 8134"
1345 $"8144 8155 815C 818E 81AC 819A 818B 8189"
1346 $"817D 8175 8182 819A 8100 95FF 8100 8DFF"
1347 $"81C2 8183 819A 8144 813D 811E 8129 8134"
1348 $"8144 8155 815C 818E 81AC 819A 818B 8189"
1349 $"817D 8175 8182 819A 8100 95FF 8100 8DFF"
1350 $"816E 818B 8180 8144 8174 816B 8145 8522"
1351 $"812F 8130 812E 8142 815C 8155 8158 8160"
1352 $"8155 818E 819E 8100 95FF 8100 8DFF 816E"
1353 $"818B 8180 8144 8174 816B 8145 8522 812F"
1354 $"8130 812E 8142 815C 8155 8158 8160 8155"
1355 $"818E 819E 8100 95FF 8100 8DFF 816E 818B"
1356 $"8180 8144 8174 816B 8145 8522 812F 8130"
1357 $"812E 8142 815C 8155 8158 8160 8155 818E"
1358 $"819E 8100 95FF 8100 8DFF 816E 818B 8180"
1359 $"8144 8174 816B 8145 8522 812F 8130 812E"
1360 $"8142 815C 8155 8158 8160 8155 818E 819E"
1361 $"8100 95FF 8100 89FF 81B4 8166 815A 8181"
1362 $"819F 85FF 81D6 819F 815B 8123 811B 8113"
1363 $"8110 8120 812B 8133 813C 8137 818E 81A0"
1364 $"8100 95FF 8100 89FF 81B4 8166 815A 8181"
1365 $"819F 85FF 81D6 819F 815B 8123 811B 8113"
1366 $"8110 8120 812B 8133 813C 8137 818E 81A0"
1367 $"8100 95FF 8100 89FF 81B4 8166 815A 8181"
1368 $"819F 85FF 81D6 819F 815B 8123 811B 8113"
1369 $"8110 8120 812B 8133 813C 8137 818E 81A0"
1370 $"8100 95FF 8100 89FF 81B4 8166 815A 8181"
1371 $"819F 85FF 81D6 819F 815B 8123 811B 8113"
1372 $"8110 8120 812B 8133 813C 8137 818E 81A0"
1373 $"8100 95FF 8100 89FF 8166 819F 81C2 95FF"
1374 $"81D6 81B6 8192 816F 8166 815B 8147 8149"
1375 $"8131 813B 818E 81A6 8100 95FF 8100 89FF"
1376 $"8166 819F 81C2 95FF 81D6 81B6 8192 816F"
1377 $"8166 815B 8147 8149 8131 813B 818E 81A6"
1378 $"8100 95FF 8100 89FF 8166 819F 81C2 95FF"
1379 $"81D6 81B6 8192 816F 8166 815B 8147 8149"
1380 $"8131 813B 818E 81A6 8100 95FF 8100 89FF"
1381 $"8166 819F 81C2 95FF 81D6 81B6 8192 816F"
1382 $"8166 815B 8147 8149 8131 813B 818E 81A6"
1383 $"8100 95FF 8100 C5FF 8100 85FF 8172 818E"
1384 $"81AB 8100 95FF 8100 C5FF 8100 85FF 8172"
1385 $"818E 81AB 8100 95FF 8100 C5FF 8100 85FF"
1386 $"8172 818E 81AB 8100 95FF 8100 C5FF 8100"
1387 $"85FF 8172 818E 81AB 8100 95FF 8100 C5FF"
1388 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1389 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1390 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1391 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1392 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1393 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1394 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1395 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1396 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1397 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1398 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1399 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1400 $"8100 C5FF 8100 8DFF 8500 95FF CD00 8DFF"
1401 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1402 $"8500 95FF CD00 8DFF 8500 95FF 8100 ADFF"
1403 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1404 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1405 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1406 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1407 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1408 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1409 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1410 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1411 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1412 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1413 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1414 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1415 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1416 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1417 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1418 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1419 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1420 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1421 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1422 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1423 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1424 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1425 $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF"
1426 $"8100 917B 8100 8DFF FF00 FF00 FF00 FB00"
1427 $"FF00 FF00 FF00 FF00 9500 C9FF 810F 8143"
1428 $"8144 81FF A100 C9FF 810F 8143 8144 81FF"
1429 $"A100 C9FF 810F 8143 8144 81FF A100 C9FF"
1430 $"810F 8143 8144 81FF A100 C5FF 8117 8143"
1431 $"8116 810F 8144 A100 C5FF 8117 8143 8116"
1432 $"810F 8144 A100 C5FF 8117 8143 8116 810F"
1433 $"8144 A100 C5FF 8117 8143 8116 810F 8144"
1434 $"A100 C1FF 8165 81C4 8116 810F 811A 8144"
1435 $"A100 C1FF 8165 81C4 8116 810F 811A 8144"
1436 $"A100 C1FF 8165 81C4 8116 810F 811A 8144"
1437 $"A100 C1FF 8165 81C4 8116 810F 811A 8144"
1438 $"A100 BDFF 8155 8167 81A7 816C 811A 8144"
1439 $"81FF A100 BDFF 8155 8167 81A7 816C 811A"
1440 $"8144 81FF A100 BDFF 8155 8167 81A7 816C"
1441 $"811A 8144 81FF A100 BDFF 8155 8167 81A7"
1442 $"816C 811A 8144 81FF A100 A9FF 81BC 81A9"
1443 $"8192 8193 813E 8167 814D 8123 811A 8144"
1444 $"85FF A100 A9FF 81BC 81A9 8192 8193 813E"
1445 $"8167 814D 8123 811A 8144 85FF A100 A9FF"
1446 $"81BC 81A9 8192 8193 813E 8167 814D 8123"
1447 $"811A 8144 85FF A100 A9FF 81BC 81A9 8192"
1448 $"8193 813E 8167 814D 8123 811A 8144 85FF"
1449 $"A100 A1FF 81C6 819A 8598 8193 8131 8167"
1450 $"814A 8123 811A 8144 89FF A100 A1FF 81C6"
1451 $"819A 8598 8193 8131 8167 814A 8123 811A"
1452 $"8144 89FF A100 A1FF 81C6 819A 8598 8193"
1453 $"8131 8167 814A 8123 811A 8144 89FF A100"
1454 $"A1FF 81C6 819A 8598 8193 8131 8167 814A"
1455 $"8123 811A 8144 89FF A100 9DFF 819C 818E"
1456 $"8199 8195 8193 8137 8167 814F 8123 811A"
1457 $"8144 8DFF A100 9DFF 819C 818E 8199 8195"
1458 $"8193 8137 8167 814F 8123 811A 8144 8DFF"
1459 $"A100 9DFF 819C 818E 8199 8195 8193 8137"
1460 $"8167 814F 8123 811A 8144 8DFF A100 9DFF"
1461 $"819C 818E 8199 8195 8193 8137 8167 814F"
1462 $"8123 811A 8144 8DFF BD00 8192 818F 8186"
1463 $"8157 8147 8139 8167 8152 8123 811A 817A"
1464 $"8161 CD00 8192 818F 8186 8157 8147 8139"
1465 $"8167 8152 8123 811A 817A 8161 CD00 8192"
1466 $"818F 8186 8157 8147 8139 8167 8152 8123"
1467 $"811A 817A 8161 CD00 8192 818F 8186 8157"
1468 $"8147 8139 8167 8152 8123 811A 817A 8161"
1469 $"9500 95FF 8100 95FF 8195 8191 817C 8151"
1470 $"812A 8132 8167 8153 8123 811A 814B 8178"
1471 $"8183 8161 89FF 8500 95FF 8100 95FF 8195"
1472 $"8191 817C 8151 812A 8132 8167 8153 8123"
1473 $"811A 814B 8178 8183 8161 89FF 8500 95FF"
1474 $"8100 95FF 8195 8191 817C 8151 812A 8132"
1475 $"8167 8153 8123 811A 814B 8178 8183 8161"
1476 $"89FF 8500 95FF 8100 95FF 8195 8191 817C"
1477 $"8151 812A 8132 8167 8153 8123 811A 814B"
1478 $"8178 8183 8161 89FF 8500 95FF 8100 91FF"
1479 $"81A9 818B 817D 8141 812C 8137 8163 8153"
1480 $"8124 811A 812C 8144 816D 818A 8180 8161"
1481 $"85FF 8500 95FF 8100 91FF 81A9 818B 817D"
1482 $"8141 812C 8137 8163 8153 8124 811A 812C"
1483 $"8144 816D 818A 8180 8161 85FF 8500 95FF"
1484 $"8100 91FF 81A9 818B 817D 8141 812C 8137"
1485 $"8163 8153 8124 811A 812C 8144 816D 818A"
1486 $"8180 8161 85FF 8500 95FF 8100 91FF 81A9"
1487 $"818B 817D 8141 812C 8137 8163 8153 8124"
1488 $"811A 812C 8144 816D 818A 8180 8161 85FF"
1489 $"8500 95FF 8100 8DFF 81DA 8192 8178 8154"
1490 $"8127 8137 8161 8151 8122 8111 8124 8132"
1491 $"813F 8160 8184 818D 8186 8161 81FF 8500"
1492 $"95FF 8100 8DFF 81DA 8192 8178 8154 8127"
1493 $"8137 8161 8151 8122 8111 8124 8132 813F"
1494 $"8160 8184 818D 8186 8161 81FF 8500 95FF"
1495 $"8100 8DFF 81DA 8192 8178 8154 8127 8137"
1496 $"8161 8151 8122 8111 8124 8132 813F 8160"
1497 $"8184 818D 8186 8161 81FF 8500 95FF 8100"
1498 $"8DFF 81DA 8192 8178 8154 8127 8137 8161"
1499 $"8151 8122 8111 8124 8132 813F 8160 8184"
1500 $"818D 8186 8161 81FF 8500 95FF 8100 8DFF"
1501 $"81B7 815B 813C 8127 8130 8159 8156 812A"
1502 $"810A 810C 812C 814F 8165 816C 8185 818D"
1503 $"8189 8188 8169 8188 8100 95FF 8100 8DFF"
1504 $"81B7 815B 813C 8127 8130 8159 8156 812A"
1505 $"810A 810C 812C 814F 8165 816C 8185 818D"
1506 $"8189 8188 8169 8188 8100 95FF 8100 8DFF"
1507 $"81B7 815B 813C 8127 8130 8159 8156 812A"
1508 $"810A 810C 812C 814F 8165 816C 8185 818D"
1509 $"8189 8188 8169 8188 8100 95FF 8100 8DFF"
1510 $"81B7 815B 813C 8127 8130 8159 8156 812A"
1511 $"810A 810C 812C 814F 8165 816C 8185 818D"
1512 $"8189 8188 8169 8188 8100 95FF 8100 8DFF"
1513 $"8161 8120 812F 816A 8576 8583 8178 8174"
1514 $"818C 819A 819D 8191 858E 818C 8188 8169"
1515 $"8155 8100 95FF 8100 8DFF 8161 8120 812F"
1516 $"816A 8576 8583 8178 8174 818C 819A 819D"
1517 $"8191 858E 818C 8188 8169 8155 8100 95FF"
1518 $"8100 8DFF 8161 8120 812F 816A 8576 8583"
1519 $"8178 8174 818C 819A 819D 8191 858E 818C"
1520 $"8188 8169 8155 8100 95FF 8100 8DFF 8161"
1521 $"8120 812F 816A 8576 8583 8178 8174 818C"
1522 $"819A 819D 8191 858E 818C 8188 8169 8155"
1523 $"8100 95FF 8100 8DFF 81E7 8122 8130 8196"
1524 $"8194 8153 8154 815F 8180 8195 81A2 819E"
1525 $"819A 819D 8194 8188 8181 817A 8173 8144"
1526 $"8100 95FF 8100 8DFF 81E7 8122 8130 8196"
1527 $"8194 8153 8154 815F 8180 8195 81A2 819E"
1528 $"819A 819D 8194 8188 8181 817A 8173 8144"
1529 $"8100 95FF 8100 8DFF 81E7 8122 8130 8196"
1530 $"8194 8153 8154 815F 8180 8195 81A2 819E"
1531 $"819A 819D 8194 8188 8181 817A 8173 8144"
1532 $"8100 95FF 8100 8DFF 81E7 8122 8130 8196"
1533 $"8194 8153 8154 815F 8180 8195 81A2 819E"
1534 $"819A 819D 8194 8188 8181 817A 8173 8144"
1535 $"8100 95FF 8100 8DFF 81C6 8146 8151 8135"
1536 $"8138 8119 811F 812A 8136 8144 814A 8175"
1537 $"8191 8181 8173 8172 8168 8160 8181 81FF"
1538 $"8100 95FF 8100 8DFF 81C6 8146 8151 8135"
1539 $"8138 8119 811F 812A 8136 8144 814A 8175"
1540 $"8191 8181 8173 8172 8168 8160 8181 81FF"
1541 $"8100 95FF 8100 8DFF 81C6 8146 8151 8135"
1542 $"8138 8119 811F 812A 8136 8144 814A 8175"
1543 $"8191 8181 8173 8172 8168 8160 8181 81FF"
1544 $"8100 95FF 8100 8DFF 81C6 8146 8151 8135"
1545 $"8138 8119 811F 812A 8136 8144 814A 8175"
1546 $"8191 8181 8173 8172 8168 8160 8181 81FF"
1547 $"8100 95FF 8100 8DFF 8159 816A 8149 8122"
1548 $"8177 8168 813C 811A 811D 8928 8138 814D"
1549 $"8147 8148 814F 8147 818E 81FF 8100 95FF"
1550 $"8100 8DFF 8159 816A 8149 8122 8177 8168"
1551 $"813C 811A 811D 8928 8138 814D 8147 8148"
1552 $"814F 8147 818E 81FF 8100 95FF 8100 8DFF"
1553 $"8159 816A 8149 8122 8177 8168 813C 811A"
1554 $"811D 8928 8138 814D 8147 8148 814F 8147"
1555 $"818E 81FF 8100 95FF 8100 8DFF 8159 816A"
1556 $"8149 8122 8177 8168 813C 811A 811D 8928"
1557 $"8138 814D 8147 8148 814F 8147 818E 81FF"
1558 $"8100 95FF 8100 89FF 81A8 8165 814A 817F"
1559 $"819F 85FF 81D3 819A 8155 811C 8114 810E"
1560 $"810B 811B 8126 812B 8133 8130 818E 819A"
1561 $"8100 95FF 8100 89FF 81A8 8165 814A 817F"
1562 $"819F 85FF 81D3 819A 8155 811C 8114 810E"
1563 $"810B 811B 8126 812B 8133 8130 818E 819A"
1564 $"8100 95FF 8100 89FF 81A8 8165 814A 817F"
1565 $"819F 85FF 81D3 819A 8155 811C 8114 810E"
1566 $"810B 811B 8126 812B 8133 8130 818E 819A"
1567 $"8100 95FF 8100 89FF 81A8 8165 814A 817F"
1568 $"819F 85FF 81D3 819A 8155 811C 8114 810E"
1569 $"810B 811B 8126 812B 8133 8130 818E 819A"
1570 $"8100 95FF 8100 89FF 8165 819F 81C2 95FF"
1571 $"81D3 81B2 818E 8169 815F 8156 8142 8143"
1572 $"812B 8135 818E 819F 8100 95FF 8100 89FF"
1573 $"8165 819F 81C2 95FF 81D3 81B2 818E 8169"
1574 $"815F 8156 8142 8143 812B 8135 818E 819F"
1575 $"8100 95FF 8100 89FF 8165 819F 81C2 95FF"
1576 $"81D3 81B2 818E 8169 815F 8156 8142 8143"
1577 $"812B 8135 818E 819F 8100 95FF 8100 89FF"
1578 $"8165 819F 81C2 95FF 81D3 81B2 818E 8169"
1579 $"815F 8156 8142 8143 812B 8135 818E 819F"
1580 $"8100 95FF 8100 C5FF 8100 85FF 816B 818E"
1581 $"81A7 8100 95FF 8100 C5FF 8100 85FF 816B"
1582 $"818E 81A7 8100 95FF 8100 C5FF 8100 85FF"
1583 $"816B 818E 81A7 8100 95FF 8100 C5FF 8100"
1584 $"85FF 816B 818E 81A7 8100 95FF 8100 C5FF"
1585 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1586 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1587 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1588 $"8100 85FF 8122 8544 8100 95FF 8100 C5FF"
1589 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1590 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1591 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1592 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1593 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1594 $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF"
1595 $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF"
1596 $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF"
1597 $"8100 C5FF 8100 8DFF 8500 95FF CD00 8DFF"
1598 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1599 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1600 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1601 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1602 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1603 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1604 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1605 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1606 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1607 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1608 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1609 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1610 $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF"
1611 $"8500 95FF CD00 8DFF FF00 FF00 FF00 FB00"
1612 $"7438 6D6B 0000 4008 FFFF FFFF FFFF FFFF"
1613 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1614 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1615 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1616 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1617 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1618 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1619 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1620 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1621 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1622 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1623 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1624 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1625 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1626 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1627 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1628 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1629 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1630 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1631 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1632 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1633 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1634 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1635 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1636 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1637 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1638 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1639 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1640 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1641 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1642 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1643 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1644 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1645 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1646 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1647 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1648 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1649 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1650 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1651 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1652 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1653 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1654 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1655 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1656 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1657 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1658 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1659 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1660 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1661 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1662 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1663 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1664 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1665 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1666 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1667 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1668 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1669 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1670 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1671 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1672 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1673 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1674 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1675 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1676 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1677 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1678 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1679 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1680 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1681 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1682 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1683 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1684 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1685 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1686 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1687 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1688 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1689 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1690 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1691 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1692 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1693 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1694 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1695 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1696 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1697 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1698 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1699 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1700 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1701 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1702 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1703 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1704 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1705 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1706 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1707 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1708 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1709 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1710 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1711 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1712 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1713 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1714 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1715 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1716 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1717 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1718 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1719 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1720 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1721 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1722 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1723 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1724 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1725 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1726 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1727 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1728 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1729 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1730 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1731 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1732 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1733 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1734 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1735 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1736 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1737 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1738 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1739 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1740 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1741 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1742 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1743 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1744 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1745 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1746 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1747 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1748 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1749 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1750 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1751 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1752 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1753 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1754 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1755 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1756 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1757 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1758 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1759 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1760 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1761 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1762 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1763 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1764 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1765 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1766 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1767 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1768 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1769 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1770 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1771 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1772 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1773 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1774 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1775 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1776 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1777 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1778 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1779 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1780 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1781 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1782 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1783 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1784 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1785 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1786 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1787 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1788 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1789 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1790 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1791 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1792 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1793 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1794 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1795 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1796 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1797 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1798 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1799 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1800 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1801 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1802 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1803 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1804 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1805 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1806 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1807 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1808 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1809 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1810 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1811 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1812 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1813 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1814 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1815 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1816 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1817 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1818 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1819 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1820 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1821 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1822 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1823 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1824 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1825 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1826 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1827 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1828 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1829 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1830 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1831 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1832 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1833 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1834 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1835 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1836 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1837 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1838 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1839 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1840 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1841 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1842 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1843 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1844 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1845 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1846 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1847 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1848 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1849 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1850 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1851 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1852 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1853 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1854 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1855 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1856 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1857 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1858 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1859 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1860 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1861 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1862 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1863 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1864 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1865 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1866 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1867 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1868 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1869 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1870 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1871 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1872 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1873 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1874 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1875 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1876 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1877 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1878 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1879 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1880 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1881 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1882 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1883 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1884 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1885 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1886 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1887 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1888 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1889 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1890 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1891 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1892 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1893 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1894 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1895 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1896 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1897 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1898 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1899 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1900 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1901 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1902 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1903 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1904 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1905 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1906 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1907 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1908 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1909 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1910 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1911 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1912 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1913 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1914 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1915 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1916 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1917 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1918 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1919 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1920 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1921 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1922 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1923 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1924 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1925 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1926 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1927 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1928 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1929 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1930 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1931 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1932 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1933 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1934 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1935 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1936 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1937 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1938 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1939 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1940 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1941 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1942 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1943 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1944 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1945 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1946 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1947 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1948 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1949 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1950 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1951 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1952 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1953 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1954 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1955 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1956 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1957 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1958 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1959 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1960 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1961 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1962 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1963 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1964 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1965 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1966 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1967 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1968 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1969 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1970 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1971 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1972 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1973 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1974 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1975 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1976 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1977 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1978 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1979 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1980 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1981 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1982 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1983 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1984 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1985 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1986 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1987 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1988 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1989 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1990 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1991 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1992 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1993 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1994 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1995 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1996 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1997 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1998 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
1999 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2000 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2001 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2002 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2003 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2004 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2005 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2006 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2007 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2008 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2009 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2010 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2011 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2012 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2013 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2014 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2015 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2016 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2017 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2018 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2019 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2020 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2021 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2022 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2023 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2024 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2025 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2026 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2027 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2028 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2029 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2030 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2031 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2032 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2033 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2034 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2035 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2036 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2037 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2038 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2039 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2040 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2041 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2042 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2043 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2044 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2045 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2046 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2047 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2048 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2049 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2050 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2051 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2052 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2053 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2054 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2055 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2056 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2057 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2058 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2059 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2060 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2061 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2062 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2063 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2064 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2065 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2066 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2067 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2068 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2069 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2070 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2071 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2072 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2073 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2074 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2075 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2076 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2077 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2078 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2079 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2080 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2081 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2082 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2083 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2084 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2085 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2086 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2087 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2088 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2089 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2090 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2091 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2092 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2093 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2094 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2095 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2096 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2097 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2098 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2099 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2100 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2101 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2102 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2103 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2104 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2105 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2106 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2107 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2108 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2109 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2110 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2111 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2112 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2113 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2114 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2115 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2116 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2117 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2118 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2119 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2120 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2121 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2122 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2123 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2124 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2125 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2126 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2127 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2128 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2129 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2130 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2131 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2132 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2133 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2134 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2135 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2136 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2137 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2138 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2139 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2140 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2141 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2142 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2143 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2144 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2145 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2146 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2147 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2148 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2149 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2150 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2151 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2152 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2153 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2154 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2155 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2156 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2157 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2158 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2159 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2160 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2161 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2162 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2163 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2164 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2165 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2166 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2167 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2168 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2169 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2170 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2171 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2172 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2173 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2174 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2175 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2176 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2177 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2178 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2179 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2180 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2181 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2182 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2183 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2184 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2185 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2186 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2187 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2188 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2189 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2190 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2191 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2192 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2193 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2194 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2195 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2196 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2197 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2198 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2199 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2200 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2201 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2202 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2203 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2204 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2205 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2206 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2207 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2208 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2209 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2210 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2211 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2212 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2213 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2214 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2215 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2216 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2217 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2218 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2219 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2220 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2221 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2222 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2223 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2224 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2225 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2226 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2227 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2228 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2229 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2230 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2231 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2232 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2233 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2234 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2235 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2236 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2237 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2238 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2239 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2240 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2241 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2242 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2243 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2244 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2245 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2246 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2247 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2248 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2249 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2250 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2251 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2252 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2253 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2254 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2255 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2256 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2257 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2258 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2259 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2260 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2261 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2262 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2263 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2264 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2265 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2266 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2267 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2268 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2269 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2270 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2271 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2272 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2273 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2274 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2275 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2276 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2277 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2278 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2279 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2280 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2281 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2282 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2283 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2284 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2285 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2286 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2287 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2288 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2289 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2290 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2291 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2292 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2293 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2294 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2295 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2296 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2297 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2298 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2299 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2300 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2301 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2302 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2303 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2304 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2305 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2306 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2307 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2308 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2309 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2310 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2311 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2312 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2313 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2314 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2315 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2316 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2317 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2318 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2319 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2320 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2321 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2322 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2323 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2324 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2325 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2326 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2327 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2328 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2329 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2330 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2331 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2332 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2333 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2334 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2335 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2336 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2337 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2338 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2339 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2340 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2341 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2342 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2343 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2344 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2345 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2346 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2347 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2348 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2349 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2350 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2351 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2352 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2353 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2354 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2355 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2356 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2357 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2358 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2359 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2360 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2361 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2362 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2363 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2364 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2365 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2366 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2367 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2368 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2369 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2370 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2371 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2372 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2373 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2374 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2375 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2376 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2377 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2378 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2379 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2380 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2381 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2382 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2383 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2384 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2385 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2386 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2387 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2388 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2389 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2390 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2391 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2392 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2393 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2394 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2395 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2396 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2397 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2398 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2399 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2400 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2401 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2402 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2403 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2404 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2405 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2406 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2407 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2408 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2409 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2410 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2411 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2412 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2413 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2414 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2415 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2416 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2417 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2418 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2419 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2420 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2421 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2422 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2423 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2424 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2425 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2426 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2427 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2428 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2429 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2430 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2431 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2432 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2433 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2434 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2435 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2436 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2437 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2438 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2439 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2440 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2441 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2442 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2443 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2444 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2445 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2446 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2447 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2448 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2449 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2450 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2451 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2452 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2453 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2454 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2455 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2456 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2457 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2458 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2459 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2460 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2461 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2462 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2463 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2464 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2465 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2466 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2467 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2468 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2469 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2470 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2471 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2472 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2473 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2474 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2475 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2476 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2477 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2478 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2479 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2480 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2481 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2482 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2483 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2484 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2485 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2486 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2487 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2488 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2489 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2490 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2491 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2492 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2493 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2494 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2495 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2496 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2497 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2498 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2499 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2500 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2501 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2502 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2503 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2504 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2505 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2506 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2507 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2508 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2509 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2510 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2511 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2512 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2513 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2514 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2515 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2516 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2517 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2518 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2519 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2520 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2521 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2522 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2523 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2524 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2525 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2526 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2527 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2528 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2529 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2530 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2531 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2532 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2533 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2534 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2535 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2536 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2537 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2538 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2539 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2540 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2541 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2542 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2543 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2544 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2545 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2546 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2547 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2548 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2549 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2550 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2551 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2552 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2553 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2554 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2555 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2556 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2557 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2558 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2559 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2560 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2561 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2562 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2563 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2564 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2565 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2566 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2567 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2568 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2569 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2570 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2571 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2572 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2573 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2574 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2575 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2576 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2577 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2578 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2579 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2580 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2581 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2582 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2583 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2584 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2585 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2586 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2587 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2588 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2589 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2590 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2591 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2592 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2593 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2594 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2595 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2596 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2597 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2598 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2599 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2600 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2601 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2602 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2603 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2604 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2605 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2606 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2607 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2608 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2609 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2610 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2611 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2612 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2613 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2614 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2615 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2616 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2617 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2618 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2619 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2620 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2621 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2622 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2623 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2624 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2625 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2626 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2627 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2628 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2629 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2630 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2631 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2632 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2633 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2634 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2635 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2636 $"FFFF FFFF FFFF FFFF"
2637};
2638
2639data 'ics#' (-16455, "Item Icon") {
2640 $"F557 D001 700E E024 9A9B 0175 9299 0162"
2641 $"923E 0001 9004 0000 9BBC 102C 8434 5AFD"
2642 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2643 $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
2644};
2645
2646data 'ics4' (-16455, "Item Icon") {
2647 $"AA3F DDDD DDDD DDAE A333 0000 0000 0C3E"
2648 $"333A 0000 000C DBEC A333 0000 0CBC 2A00"
2649 $"EDDF DDDB D2CB ECFF D00D 00CD BBBA B2D6"
2650 $"D00D 00B2 DDBB DCCB D00D 00D4 D2D2 CC2D"
2651 $"D00D 00BD CCE5 3EEC D00D 0C00 0000 CBCB"
2652 $"D00D 0000 0000 0D0D D00D 0000 0000 0D00"
2653 $"D00D ABAB ABAF 9F00 D00D 1111 11B8 9900"
2654 $"D00D 1111 1189 9F00 EDDA 8291 ABAF 9FDD"
2655};
2656
2657data 'ics8' (-16455, "Item Icon") {
2658 $"DEDC DBB3 F9FA F9FA F9FA F9FA F9FA 8FFB"
2659 $"DC23 23DB 0000 0000 0000 0000 0032 6A88"
2660 $"DB23 23DC 0000 0000 0000 F52B 3357 882B"
2661 $"DC23 23DB 0000 0000 F608 3234 33AD F600"
2662 $"FCFA F9AC F9FA F95D 0E5D 3457 8833 F1F2"
2663 $"FA00 00F9 0000 0733 825E 33AD 6432 33EF"
2664 $"F900 00FA 0000 5D5E 5D33 825D 3332 2C57"
2665 $"FA00 00F9 0000 5739 5D64 5D33 3232 335C"
2666 $"F900 00FA 00F5 5D57 F732 828E 8988 88F9"
2667 $"FA00 00F9 00F6 F600 0000 F5F6 4F5D F85D"
2668 $"F900 00FA 0000 0000 0000 0000 00FA 0056"
2669 $"FA00 00FA 0000 0000 0000 0000 00F9 0000"
2670 $"F900 00F9 8359 8359 8359 ADD1 E8EA 0000"
2671 $"FA00 00FA 0505 0505 0505 5FE5 E6E8 0000"
2672 $"F900 00F9 0505 0505 0505 7DE6 E6D1 0000"
2673 $"ACF9 FAFC 8359 8359 8359 ADD1 E8E9 FAF9"
2674};
2675
diff --git a/rbutil/rbutilApp.cpp b/rbutil/rbutilApp.cpp
deleted file mode 100644
index 1901a62df1..0000000000
--- a/rbutil/rbutilApp.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutilApp.cpp
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "rbutilApp.h"
22#include "bootloaders.h"
23
24GlobalVars* gv = new GlobalVars();
25
26IMPLEMENT_APP(rbutilFrmApp)
27
28bool rbutilFrmApp::OnInit()
29{
30 wxString buf = wxT("");
31
32 wxLogVerbose(wxT("=== begin rbutilFrmApp::Oninit()"));
33
34
35 gv->stdpaths = new wxStandardPaths();
36
37 // Get application directory
38 // DANGER! GetDataDir() doesn't portably return the application directory
39 // We want to use the form below instead, but not until wxWidgets 2.8 is
40 // released. *Datadir gives the wrong dir for this on Linux/Mac even on Wx2.8 *
41 gv->AppDir = gv->stdpaths->GetExecutablePath().BeforeLast(PATH_SEP_CHR);
42 // buf = gv->stdpaths->GetDataDir(); buf.Append(PATH_SEP);
43 // gv->AppDir = buf.BeforeLast(PATH_SEP_CHR).c_str();
44
45 buf = gv->stdpaths->GetUserDataDir();
46 if (! wxDirExists(buf) )
47 {
48 wxLogNull lognull;
49 if (! wxMkdir(buf, 0777))
50 {
51 wxLogFatalError(wxT("Can't create data directory %s"),
52 buf.c_str());
53 }
54 }
55
56 buf += PATH_SEP wxT("rbutil.log");
57 gv->logfile = new wxFFile(buf, wxT("w"));
58 if (! gv->logfile->IsOpened() )
59 wxLogFatalError(wxT("Unable to open log file"));
60
61 gv->loggui = new wxLogGui();
62 gv->loggui->SetActiveTarget(gv->loggui);
63 gv->loggui->SetLogLevel(wxLOG_Message);
64 gv->logchain = new wxLogChain(
65 gv->logstderr = new wxLogStderr(gv->logfile->fp() ) );
66
67 buf = buf.Left(buf.Len() - 10);
68 buf.Append(wxT("download"));
69 if (! wxDirExists(buf) ) wxMkdir(buf, 0777);
70
71 wxFileSystem::AddHandler(new wxInternetFSHandler);
72 wxFileSystem::AddHandler(new wxZipFSHandler);
73
74 if (!ReadGlobalConfig(NULL))
75 {
76 ERR_DIALOG(gv->ErrStr->GetData(), wxT("Rockbox Utility"));
77 return FALSE;
78 }
79 ReadUserConfig();
80
81 wxInitAllImageHandlers(); //init Image handlers
82 initIpodpatcher(); // reserve mem for ipodpatcher
83 initSansaPatcher(); // reserve mem for sansapatcher
84
85 rbutilFrm *myFrame = new rbutilFrm(NULL);
86 SetTopWindow(myFrame);
87
88 myFrame->Show(TRUE);
89
90 wxLogVerbose(wxT("=== end rbUtilFrmApp::OnInit()"));
91 return TRUE;
92}
93
94int rbutilFrmApp::OnExit()
95{
96 wxLogVerbose(wxT("=== begin rbUtilFrmApp::OnExit()"));
97
98 WriteUserConfig();
99
100 gv->logfile->Close();
101 /* Enabling this code causes the program to crash. I
102 * have no idea why. (possibly because deleting non existing objects ? :-) )
103 wxLog::DontCreateOnDemand();
104 // Free a bunch of structures.
105 delete gv->GlobalConfig;
106 delete gv->ErrStr;
107 delete gv->stdpaths;
108 delete gv->platform;
109
110 delete gv->logstderr;
111 delete gv->logchain;
112 delete gv->logfile;
113 delete gv->loggui;
114*/
115 wxLogVerbose(wxT("=== end rbUtilFrmApp::OnExit()"));
116 return 0;
117}
118
119bool rbutilFrmApp::ReadGlobalConfig(rbutilFrm* myFrame)
120{
121 wxString buf, tmpstr, stack;
122 wxLogVerbose(wxT("=== begin rbutilFrmApp::ReadGlobalConfig(%p)"),
123 (void*) myFrame);
124
125 // Cross-platform compatibility: look for rbutil.ini in then in the app dir
126 // then in the user config dir (linux ~/) and
127 // then config dir (linux /etc/ )
128
129 buf = gv->AppDir + wxT("" PATH_SEP "rbutil.ini");
130 if (! wxFileExists(buf) )
131 {
132 buf = gv->stdpaths->GetUserConfigDir()
133 + wxT("" PATH_SEP ".rbutil" PATH_SEP "rbutil.ini");
134 if (! wxFileExists(buf) )
135 {
136 buf = gv->stdpaths->GetConfigDir()
137 + wxT("" PATH_SEP "rbutil.ini");
138 }
139 }
140
141 if (! wxFileExists(buf) )
142 {
143 gv->ErrStr = new wxString(wxT("Configuration file doesnt exist!"));
144 return false;
145 }
146
147
148 wxFileInputStream* cfgis = new wxFileInputStream(buf);
149
150 if (!cfgis->CanRead()) {
151 gv->ErrStr = new wxString(wxT("Unable to open configuration file"));
152 return false;
153 }
154
155 gv->GlobalConfig = new wxFileConfig(*cfgis);
156 gv->GlobalConfigFile = buf;
157
158 unsigned int i = 0;
159
160 stack = gv->GlobalConfig->GetPath();
161 gv->GlobalConfig->SetPath(wxT("/platforms"));
162 while(gv->GlobalConfig->Read(buf.Format(wxT("platform%d"), i + 1),
163 &tmpstr)) {
164 wxString cur = tmpstr;
165 //gv->plat_id.Add(tmpstr);
166 gv->GlobalConfig->Read(buf.Format(wxT("/%s/name"),
167 cur.c_str()), &tmpstr);
168 gv->plat_name.Add(tmpstr);
169 gv->GlobalConfig->Read(buf.Format(wxT("/%s/platform"),
170 cur.c_str()), &tmpstr);
171 gv->plat_id.Add(tmpstr);
172 gv->GlobalConfig->Read(buf.Format(wxT("/%s/released"),
173 cur.c_str()), &tmpstr);
174 gv->plat_released.Add( (tmpstr == wxT("yes")) ? true : false ) ;
175 gv->GlobalConfig->Read(buf.Format(wxT("/%s/needsbootloader"),
176 cur.c_str()), &tmpstr);
177 gv->plat_needsbootloader.Add( (tmpstr == wxT("yes")) ? true : false ) ;
178 gv->GlobalConfig->Read(buf.Format(wxT("/%s/bootloadermethod"),
179 cur.c_str()), &tmpstr);
180 gv->plat_bootloadermethod.Add(tmpstr);
181 gv->GlobalConfig->Read(buf.Format(wxT("/%s/bootloadername"),
182 cur.c_str()), &tmpstr);
183 gv->plat_bootloadername.Add(tmpstr);
184 gv->GlobalConfig->Read(buf.Format(wxT("/%s/resolution"),
185 cur.c_str()), &tmpstr);
186 gv->plat_resolution.Add(tmpstr);
187 gv->GlobalConfig->Read(buf.Format(wxT("/%s/manualname"),
188 cur.c_str()), &tmpstr);
189 gv->plat_manualname.Add(tmpstr);
190
191 i++;
192 }
193
194 gv->GlobalConfig->SetPath(wxT("/general"));
195 gv->GlobalConfig->Read(wxT("default_platform"), &tmpstr, wxT("cthulhu"));
196
197
198 gv->GlobalConfig->Read(wxT("last_release"), &tmpstr);
199 gv->last_release = tmpstr;
200
201 gv->GlobalConfig->Read(wxT("download_url"), &tmpstr);
202 gv->download_url = tmpstr;
203
204 gv->GlobalConfig->Read(wxT("daily_url"), &tmpstr);
205 gv->daily_url = tmpstr;
206
207 gv->GlobalConfig->Read(wxT("bleeding_url"), &tmpstr);
208 gv->bleeding_url = tmpstr;
209
210 gv->GlobalConfig->Read(wxT("server_conf_url"), &tmpstr);
211 gv->server_conf_url = tmpstr;
212
213 gv->GlobalConfig->Read(wxT("font_url"), &tmpstr);
214 gv->font_url = tmpstr;
215
216 gv->GlobalConfig->Read(wxT("prog_name"), &tmpstr);
217 gv->prog_name = tmpstr;
218
219 gv->GlobalConfig->Read(wxT("bootloader_url"), &tmpstr);
220 gv->bootloader_url = tmpstr;
221
222 gv->GlobalConfig->Read(wxT("themes_url"), &tmpstr);
223 gv->themes_url = tmpstr;
224
225 gv->GlobalConfig->Read(wxT("manual_url"), &tmpstr);
226 gv->manual_url = tmpstr;
227
228 gv->GlobalConfig->Read(wxT("doom_url"), &tmpstr);
229 gv->doom_url = tmpstr;
230
231#ifdef __WXMSW__
232 gv->curdestdir = wxT("D:\\");
233#else
234 gv->curdestdir = wxT("/mnt");
235#endif
236 gv->GlobalConfig->SetPath(stack);
237
238 wxLogVerbose(wxT("=== end rbutilFrmApp::ReadGlobalConfig()"));
239 return true;
240}
241
242void rbutilFrmApp::ReadUserConfig()
243{
244 wxString buf, str, stack;
245
246 buf = gv->AppDir + wxT("" PATH_SEP "RockboxUtility.cfg");
247
248 if (wxFileExists(buf) )
249 {
250 gv->portable = true;
251 }
252 else
253 {
254 gv->portable = false;
255 buf = gv->stdpaths->GetUserDataDir()
256 + wxT("" PATH_SEP "RockboxUtility.cfg");
257 }
258
259 gv->UserConfig = new wxFileConfig(wxEmptyString, wxEmptyString, buf);
260 gv->UserConfigFile = buf;
261 gv->UserConfig->Set(gv->UserConfig); // Store wxWidgets internal settings
262 stack = gv->UserConfig->GetPath();
263
264 gv->UserConfig->SetPath(wxT("/defaults"));
265 if (gv->UserConfig->Read(wxT("curdestdir"), &str) ) gv->curdestdir = str;
266 if (gv->UserConfig->Read(wxT("curplatform"), &str) ) gv->curplat = str;
267 if (gv->UserConfig->Read(wxT("curfirmware"), &str) ) gv->curfirmware = str;
268 if (gv->UserConfig->Read(wxT("proxy_url"), &str) ) gv->proxy_url = str;
269
270 if (gv->UserConfig->Read(wxT("pathToTts"), &str) ) gv->pathToTts = str;
271 if (gv->UserConfig->Read(wxT("pathToEnc"), &str) ) gv->pathToEnc = str;
272 gv->UserConfig->SetPath(stack);
273}
274
275void rbutilFrmApp::WriteUserConfig()
276{
277 gv->UserConfig->SetPath(wxT("/defaults"));
278 gv->UserConfig->Write(wxT("curdestdir"), gv->curdestdir);
279 gv->UserConfig->Write(wxT("curplatform"), gv->curplat);
280 gv->UserConfig->Write(wxT("curfirmware"), gv->curfirmware);
281 gv->UserConfig->Write(wxT("proxy_url"), gv->proxy_url);
282 gv->UserConfig->Write(wxT("pathToTts"), gv->pathToTts);
283 gv->UserConfig->Write(wxT("pathToEnc"), gv->pathToEnc);
284
285 delete gv->UserConfig;
286
287}
288
diff --git a/rbutil/rbutilApp.h b/rbutil/rbutilApp.h
deleted file mode 100644
index b20e39eb90..0000000000
--- a/rbutil/rbutilApp.h
+++ /dev/null
@@ -1,53 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutilApp.h
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include <wx/wxprec.h>
22#ifdef __BORLANDC__
23 #pragma hdrstop
24#endif
25#ifndef WX_PRECOMP
26 #include <wx/wx.h>
27#endif
28
29#include <wx/msgdlg.h>
30#include <wx/config.h>
31#include <wx/confbase.h>
32#include <wx/fileconf.h>
33#include <wx/string.h>
34#include <wx/wfstream.h>
35#include <wx/fs_inet.h>
36#include <wx/fs_zip.h>
37#include <wx/stdpaths.h>
38
39#include "rbutilFrm.h"
40#include "rbutil.h"
41
42class rbutilFrmApp:public wxApp
43{
44public:
45 bool OnInit();
46 int OnExit();
47 bool ReadGlobalConfig(rbutilFrm* myFrame);
48 void ReadUserConfig(void);
49 void WriteUserConfig(void);
50
51};
52
53
diff --git a/rbutil/rbutilCtrls.cpp b/rbutil/rbutilCtrls.cpp
deleted file mode 100644
index fdede634d3..0000000000
--- a/rbutil/rbutilCtrls.cpp
+++ /dev/null
@@ -1,628 +0,0 @@
1
2#include "rbutilCtrls.h"
3#include "bootloaders.h"
4#include "autodetection.h"
5
6/////////////////////////////////////////////////////////////
7//// Controls
8////////////////////////////////////////////////////////////////
9
10/////////////////////////////////////////////
11//// Image Ctrl
12//////////////////////////////////////////////
13
14BEGIN_EVENT_TABLE(ImageCtrl, wxControl)
15 EVT_PAINT(ImageCtrl::OnPaint)
16END_EVENT_TABLE()
17
18IMPLEMENT_DYNAMIC_CLASS(ImageCtrl, wxControl)
19
20bool ImageCtrl::Create(wxWindow* parent, wxWindowID id,
21 const wxPoint& pos, const wxSize& size, long style,
22 const wxValidator& validator)
23{
24 if (!wxControl::Create(parent, id, pos, size, style, validator)) return false;
25
26return true;
27}
28
29void ImageCtrl::OnPaint(wxPaintEvent& event)
30{
31 wxPaintDC dc(this);
32 dc.DrawBitmap(m_bitmap,0,0,false);
33}
34
35void ImageCtrl::SetBitmap(wxBitmap bmp)
36{
37 m_bitmap = bmp;
38 Refresh();
39
40}
41
42wxSize ImageCtrl::DoGetBestSize() const
43{
44 wxSize bestsize;
45 bestsize.x = m_bitmap.GetWidth();
46 bestsize.y = m_bitmap.GetHeight();
47 return bestsize;
48}
49
50
51
52/////////////////////////////////////////////
53//// Theme Control
54//////////////////////////////////////////////
55
56BEGIN_EVENT_TABLE(ThemeCtrl, wxPanel)
57 EVT_LISTBOX(ID_THEME_LST, ThemeCtrl::OnThemesLst)
58 EVT_BUTTON(ID_THEME_SELECT_ALL, ThemeCtrl::OnSelectAll)
59END_EVENT_TABLE()
60
61IMPLEMENT_DYNAMIC_CLASS(ThemeCtrl, wxPanel)
62
63bool ThemeCtrl::Create(wxWindow* parent, wxWindowID id,
64 const wxPoint& pos, const wxSize& size, long style,
65 const wxString title )
66{
67 if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
68
69 CreateControls();
70
71 GetSizer()->Fit(this);
72
73 GetSizer()->SetSizeHints(this);
74return true;
75}
76
77void ThemeCtrl::CreateControls()
78{
79 // A top-level sizer
80 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
81 this->SetSizer(topSizer);
82
83 wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
84 topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
85
86 //Device Selection
87 wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
88 horizontalSizer->Add(wxBoxSizer7,0,wxGROW | wxALL,0);
89
90 wxStaticText* m_desc = new wxStaticText( this, wxID_STATIC,
91 wxT("Select one or more Themes to install"), wxDefaultPosition,
92 wxDefaultSize, 0 );
93 wxBoxSizer7->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
94
95 m_themeList = new wxListBox(this,ID_THEME_LST,wxDefaultPosition,
96 wxDefaultSize,0,NULL,wxLB_EXTENDED);
97 wxBoxSizer7->Add(m_themeList, 0, wxALIGN_LEFT|wxALL, 5);
98
99 m_selectAllThemes = new wxButton(this, ID_THEME_SELECT_ALL,
100 wxT("Select All"));
101 wxBoxSizer7->Add(m_selectAllThemes, 0, wxALIGN_LEFT|wxALL, 5);
102
103 // Preview Picture
104 wxBoxSizer* wxBoxSizer9 = new wxBoxSizer(wxVERTICAL);
105 horizontalSizer->Add(wxBoxSizer9,0,wxGROW | wxALL,0);
106
107 wxStaticText* preview_desc= new wxStaticText(this,wxID_ANY,wxT("Preview:"));
108 wxBoxSizer9->Add(preview_desc,0,wxGROW | wxALL,5);
109
110 m_PreviewBitmap = new ImageCtrl(this,ID_PREVIEW_BITMAP );
111 wxBoxSizer9->Add(m_PreviewBitmap,0,wxALIGN_LEFT | wxALL,5);
112
113 wxStaticBox* groupbox= new wxStaticBox(this,wxID_ANY,wxT("Selected Theme:"));
114 wxStaticBoxSizer* styleSizer = new wxStaticBoxSizer( groupbox, wxVERTICAL );
115 topSizer->Add(styleSizer,0,wxGROW|wxALL,0);
116
117 // horizontal sizer
118 wxBoxSizer* wxBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
119 styleSizer->Add(wxBoxSizer8,0,wxGROW | wxALL,0);
120
121 // File size
122 wxStaticText* size_desc= new wxStaticText(this,wxID_ANY,wxT("Filesize:"));
123 wxBoxSizer8->Add(size_desc,0,wxGROW | wxALL,5);
124
125 m_size= new wxStaticText(this,ID_FILESIZE,wxT(""));
126 wxBoxSizer8->Add(m_size,0,wxGROW | wxALL,5);
127
128 // Description
129 wxStaticText* desc_desc= new wxStaticText(this,wxID_ANY,wxT("Description:"));
130 styleSizer->Add(desc_desc,0,wxGROW | wxALL,5);
131
132 m_themedesc= new wxTextCtrl(this,ID_DESC,wxT(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY);
133 styleSizer->Add(m_themedesc,0,wxGROW | wxALL,5);
134
135 topSizer->Fit(this);
136 topSizer->SetSizeHints(this);
137 Layout();
138
139}
140
141void ThemeCtrl::Init()
142{
143 m_Themes.Clear();
144 m_Themes_path.Clear();
145 m_Themes_size.Clear();
146 m_Themes_image.Clear();
147 m_Themes_desc.Clear();
148
149}
150
151void ThemeCtrl::setDevice(wxString device)
152{
153
154 int index = gv->plat_id.Index(device);
155 if(index == -1) return;
156
157 if(gv->plat_resolution[index] == m_currentResolution)
158 return;
159 else
160 m_currentResolution = gv->plat_resolution[index];
161
162 // load the themelist
163 Init();
164 m_size->SetLabel(wxT(""));
165 m_themedesc->SetValue(wxT(""));
166 m_themeList->Clear();
167
168 //get correct Themes list
169 wxString src,dest,err;
170
171 src = gv->themes_url + wxT("rbutil.php?res=") + m_currentResolution;
172 dest = gv->stdpaths->GetUserDataDir() + wxT("" PATH_SEP "download" PATH_SEP)
173 + m_currentResolution + wxT(".list");
174
175 if(DownloadURL(src, dest))
176 {
177 MESG_DIALOG(wxT("Unable to download themes list."));
178 return;
179 }
180
181 //read and parse Themes list
182 wxString themelistraw;
183 wxFFile themefile;
184 if(!themefile.Open(dest)) //open file
185 {
186 MESG_DIALOG(wxT("Unable to open themes list."));
187 return;
188 }
189 if(!themefile.ReadAll(&themelistraw)) //read complete file
190 {
191 MESG_DIALOG(wxT("Unable to read themes list."));
192 return;
193 }
194 wxRegEx reAll(wxT("<body >(.+)</body>")); //extract body part
195 if(! reAll.Matches(themelistraw))
196 {
197 MESG_DIALOG(wxT("Themes list is in wrong Format."));
198 return;
199 }
200 wxString lines = reAll.GetMatch(themelistraw,1);
201
202 // prepare text
203 lines.Replace(wxT("<br />"),wxT(""),true); //replace <br /> with nothing
204 lines.Replace(wxT("\n"),wxT(""),true); //replace \n with nothing
205 lines.Trim(true); //strip WS at end
206 lines.Trim(false); //strip WS at beginning
207 wxStringTokenizer tkz(lines,wxT("|")); //tokenize it
208
209 while ( tkz.HasMoreTokens() ) // read all entrys
210 {
211 m_Themes.Add(tkz.GetNextToken()); //Theme name
212 m_Themes_path.Add(tkz.GetNextToken()); //Theme path
213 m_Themes_size.Add(tkz.GetNextToken()); //File size
214 m_Themes_image.Add(tkz.GetNextToken()); //Screenshot
215 m_Themes_desc.Add(tkz.GetNextToken()); //Description
216
217 m_themeList->Append(m_Themes.Last());
218 }
219
220 this->GetSizer()->Layout();
221 this->GetSizer()->Fit(this);
222 this->GetSizer()->SetSizeHints(this);
223 m_parent->GetSizer()->Layout();
224 m_parent->GetSizer()->Fit(m_parent);
225 m_parent->GetSizer()->SetSizeHints(m_parent);
226}
227
228
229void ThemeCtrl::OnThemesLst(wxCommandEvent& event)
230{
231 ThemePreview();
232}
233
234void ThemeCtrl::ThemePreview()
235{
236 // wxCriticalSectionLocker locker(m_ThemeSelectSection);
237
238 wxArrayInt selected;
239 int numSelected = m_themeList->GetSelections(selected);
240 if(numSelected == 0) return;
241
242 int index = selected[0];
243
244 m_size->SetLabel(m_Themes_size[index]);
245 m_themedesc->SetValue(m_Themes_desc[index]);
246 // m_themedesc->Wrap(200); // wrap desc
247
248 wxString src,dest;
249
250 int pos = m_Themes_image[index].Find('/',true);
251 wxString filename = m_Themes_image[index](pos+1,m_Themes_image[index].Length());
252
253 dest = gv->stdpaths->GetUserDataDir()
254 + wxT("" PATH_SEP "download" PATH_SEP)
255 + m_currentResolution;
256
257 if(!wxDirExists(dest))
258 wxMkdir(dest);
259
260 //this is a URL no PATH_SEP
261 src = gv->themes_url + wxT("/data/") + m_currentResolution + wxT("/")
262 + filename;
263 dest = gv->stdpaths->GetUserDataDir() + wxT("" PATH_SEP "download" PATH_SEP)
264 + m_currentResolution + wxT("" PATH_SEP) + filename;
265
266 if(!wxFileExists(dest))
267 {
268 if(DownloadURL(src, dest))
269 {
270 MESG_DIALOG(wxT("Unable to download image."));
271 return;
272 }
273 }
274
275 m_currentimage = dest;
276 wxBitmap bmp;
277 bmp.LoadFile(m_currentimage,wxBITMAP_TYPE_PNG);
278 m_PreviewBitmap->SetBitmap(bmp);
279
280 Refresh();
281 this->GetSizer()->Layout();
282 this->GetSizer()->Fit(this);
283 this->GetSizer()->SetSizeHints(this);
284
285 m_parent->GetSizer()->Layout();
286 m_parent->GetSizer()->Fit(m_parent);
287 m_parent->GetSizer()->SetSizeHints(m_parent);
288
289}
290
291void ThemeCtrl::OnSelectAll(wxCommandEvent& event)
292{
293 for(unsigned int i=0; i < m_themeList->GetCount(); i++)
294 m_themeList->Select(i);
295 ThemePreview();
296}
297
298wxArrayString ThemeCtrl::getThemesToInstall()
299{
300 wxArrayString themes;
301 wxArrayInt selected;
302 int numSelected = m_themeList->GetSelections(selected);
303
304 for(int i=0; i < numSelected; i++)
305 {
306 themes.Add(m_Themes_path[selected[i]]);
307 }
308 return themes;
309
310 }
311
312/////////////////////////////////////////////
313//// Ok Cancel Control
314//////////////////////////////////////////////
315
316BEGIN_EVENT_TABLE(OkCancelCtrl, wxPanel)
317
318END_EVENT_TABLE()
319
320IMPLEMENT_DYNAMIC_CLASS(OkCancelCtrl, wxPanel)
321
322bool OkCancelCtrl::Create(wxWindow* parent, wxWindowID id,
323 const wxPoint& pos, const wxSize& size, long style,
324 const wxString title)
325{
326 if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
327
328 CreateControls();
329 GetSizer()->Fit(this);
330 GetSizer()->SetSizeHints(this);
331return true;
332}
333
334void OkCancelCtrl::CreateControls()
335{
336 // A top-level sizer
337 wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);
338 this->SetSizer(topSizer);
339
340 // The OK button
341 m_OkBtn = new wxButton ( this, wxID_OK, wxT("&OK"),
342 wxDefaultPosition, wxDefaultSize, 0 );
343 topSizer->Add(m_OkBtn, 0, wxALL, 5);
344 // The Cancel button
345 m_CancelBtn = new wxButton ( this, wxID_CANCEL,
346 wxT("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
347 topSizer->Add(m_CancelBtn, 0, wxALL, 5);
348
349 Layout();
350
351}
352
353
354/////////////////////////////////////////////
355//// Device Selector
356//////////////////////////////////////////////
357
358BEGIN_EVENT_TABLE(DeviceSelectorCtrl, wxPanel)
359 EVT_BUTTON(ID_AUTODETECT_BTN, DeviceSelectorCtrl::OnAutoDetect)
360 EVT_COMBOBOX(ID_DEVICE_CBX,DeviceSelectorCtrl::OnComboBox)
361END_EVENT_TABLE()
362
363IMPLEMENT_DYNAMIC_CLASS(DeviceSelectorCtrl, wxPanel)
364
365bool DeviceSelectorCtrl::Create(wxWindow* parent, wxWindowID id,
366 const wxPoint& pos, const wxSize& size, long style,
367 const wxString title)
368{
369 if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
370
371 CreateControls();
372 GetSizer()->Fit(this);
373 GetSizer()->SetSizeHints(this);
374 return true;
375}
376
377void DeviceSelectorCtrl::CreateControls()
378{
379 // A top-level sizer
380 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
381 this->SetSizer(topSizer);
382
383 //Device Selection
384 wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
385 topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
386 m_desc = new wxStaticText( this, wxID_STATIC,
387 wxT("Device:"), wxDefaultPosition,
388 wxDefaultSize, 0 );
389 horizontalSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
390
391 m_deviceCbx = new wxComboBox(this, ID_DEVICE_CBX,wxT("Select your Device"),
392 wxDefaultPosition,wxDefaultSize,gv->plat_name,wxCB_READONLY);
393
394 m_deviceCbx->SetToolTip(wxT("Select your Device."));
395 m_deviceCbx->SetHelpText(wxT("Select your Device."));
396
397 horizontalSizer->Add(m_deviceCbx, 0, wxALIGN_LEFT|wxALL, 5);
398
399 wxButton* m_autodetectBtn = new wxButton(this, ID_AUTODETECT_BTN, wxT("Autodetect"),
400 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
401 wxT("AutodetectBtn"));
402
403 m_autodetectBtn->SetToolTip(wxT("Click here to autodetect your Device."));
404 m_autodetectBtn->SetHelpText(wxT("Autodetection of the Device."));
405 // m_autodetectBtn->SetFocus();
406
407 horizontalSizer->Add(m_autodetectBtn,0,wxGROW | wxALL,5);
408 Layout();
409
410}
411
412wxString DeviceSelectorCtrl::getDevice()
413{
414 return m_currentDevice;
415}
416
417void DeviceSelectorCtrl::setDefault()
418{
419 int index = gv->plat_id.Index(gv->curplat);
420 if(index == -1) return;
421 m_deviceCbx->SetValue(gv->plat_name[index]);
422}
423
424void DeviceSelectorCtrl::OnComboBox(wxCommandEvent& event)
425{
426 int index = gv->plat_name.Index(m_deviceCbx->GetValue());
427
428 if(index == -1)
429 {
430 m_currentDevice = wxT("");
431 return;
432 }
433
434 gv->curplat = gv->plat_id[index];
435}
436
437void DeviceSelectorCtrl::OnAutoDetect(wxCommandEvent& event)
438{
439 if(!AutoDetect())
440 {
441 WARN_DIALOG(wxT("No Device detected. If you have a Device connected, select the correct one manually."),
442 wxT("Detecting a Device"));
443 }
444}
445
446
447bool DeviceSelectorCtrl::AutoDetect()
448{
449 UsbDeviceInfo device;
450
451 if(detectDevices(&device))
452 {
453
454 if(device.status == DEVICEFOUND)
455 {
456 m_deviceCbx->SetValue(gv->plat_name[device.device_index]);
457 gv->curplat=gv->plat_id[device.device_index];
458
459 if(device.path != wxT(""))
460 {
461 gv->curdestdir = device.path;
462 }
463 return true;
464 }
465 else if(device.status == TOMANYDEVICES)
466 {
467 WARN_DIALOG(wxT("More then one device detected, please connect only One"),
468 wxT("Detecting a Device"));
469 return true;
470 }
471 }
472 return false;
473}
474
475/////////////////////////////////////////////
476//// DevicePosition Selector
477//////////////////////////////////////////////
478
479BEGIN_EVENT_TABLE(DevicePositionCtrl, wxPanel)
480 EVT_BUTTON(ID_BROWSE_BTN, DevicePositionCtrl::OnBrowseBtn)
481END_EVENT_TABLE()
482
483IMPLEMENT_DYNAMIC_CLASS(DevicePositionCtrl, wxPanel)
484
485bool DevicePositionCtrl::Create(wxWindow* parent, wxWindowID id,
486 const wxPoint& pos, const wxSize& size, long style,
487 const wxString title)
488{
489 if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
490
491 CreateControls();
492 GetSizer()->Fit(this);
493 GetSizer()->SetSizeHints(this);
494return true;
495}
496
497void DevicePositionCtrl::CreateControls()
498{
499 // A top-level sizer
500 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
501 this->SetSizer(topSizer);
502
503 //Device Selection
504 m_desc = new wxStaticText( this, wxID_STATIC,
505 wxT("Select your Device in the Filesystem"), wxDefaultPosition,
506 wxDefaultSize, 0 );
507 topSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
508
509 wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
510 topSizer->Add(horizontalSizer, 0, wxGROW|wxALL, 5);
511
512 m_devicePos = new wxTextCtrl(this,wxID_ANY,gv->curdestdir);
513 m_devicePos->SetToolTip(wxT("Type the folder where your Device is here"));
514 m_devicePos->SetHelpText(wxT("Type the folder where your Device is here"));
515 horizontalSizer->Add(m_devicePos,0,wxGROW | wxALL,5);
516
517 m_browseBtn = new wxButton(this, ID_BROWSE_BTN, wxT("Browse"),
518 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
519 wxT("BrowseBtn"));
520 m_browseBtn->SetToolTip(wxT("Browse for your Device"));
521 m_browseBtn->SetHelpText(wxT("Browse for your Device"));
522 horizontalSizer->Add(m_browseBtn,0,wxGROW | wxALL,5);
523
524 topSizer->Fit(this);
525 Layout();
526
527}
528
529wxString DevicePositionCtrl::getDevicePos()
530{
531 return m_devicePos->GetValue();
532
533}
534
535void DevicePositionCtrl::setDefault()
536{
537 m_devicePos->SetValue(gv->curdestdir);
538}
539
540void DevicePositionCtrl::OnBrowseBtn(wxCommandEvent& event)
541{
542 const wxString& temp = wxDirSelector(
543 wxT("Please select the location of your audio device"), gv->curdestdir,
544 0, wxDefaultPosition, this);
545
546 if (!temp.empty())
547 {
548 m_devicePos->SetValue(temp);
549 }
550
551}
552
553/////////////////////////////////////////////
554//// FirmwarePosition Selector
555//////////////////////////////////////////////
556
557BEGIN_EVENT_TABLE(FirmwarePositionCtrl, wxPanel)
558 EVT_BUTTON(ID_BROWSE_BTN, FirmwarePositionCtrl::OnBrowseBtn)
559END_EVENT_TABLE()
560
561IMPLEMENT_DYNAMIC_CLASS(FirmwarePositionCtrl, wxControl)
562
563bool FirmwarePositionCtrl::Create(wxWindow* parent, wxWindowID id,
564 const wxPoint& pos, const wxSize& size, long style,
565 const wxString title)
566{
567 if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
568
569 CreateControls();
570 GetSizer()->Fit(this);
571 GetSizer()->SetSizeHints(this);
572return true;
573}
574
575void FirmwarePositionCtrl::CreateControls()
576{
577 // A top-level sizer
578 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
579 this->SetSizer(topSizer);
580
581 //Device Selection
582 m_desc = new wxStaticText( this, wxID_STATIC,
583 wxT("Select original Firmware from the Manufacturer"), wxDefaultPosition,
584 wxDefaultSize, 0 );
585 topSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
586
587 wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
588 topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
589
590 m_firmwarePos = new wxTextCtrl(this,wxID_ANY,gv->curdestdir);
591 m_firmwarePos->SetToolTip(wxT("Type the folder where the original Firmware is here"));
592 m_firmwarePos->SetHelpText(wxT("Type the folder where the original Firmware is here"));
593 horizontalSizer->Add(m_firmwarePos,0,wxGROW | wxALL,5);
594
595 m_browseBtn = new wxButton(this, ID_BROWSE_BTN, wxT("Browse"),
596 wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
597 wxT("BrowseBtn"));
598 m_browseBtn->SetToolTip(wxT("Browse for the original Firmware"));
599 m_browseBtn->SetHelpText(wxT("Browse for the original Firmware"));
600 horizontalSizer->Add(m_browseBtn,0,wxGROW | wxALL,5);
601
602 Layout();
603
604}
605
606wxString FirmwarePositionCtrl::getFirmwarePos()
607{
608 return m_firmwarePos->GetValue();
609
610}
611
612void FirmwarePositionCtrl::setDefault()
613{
614 m_firmwarePos->SetValue(gv->curfirmware);
615}
616
617void FirmwarePositionCtrl::OnBrowseBtn(wxCommandEvent& event)
618{
619 wxString temp = wxFileSelector(
620 wxT("Please select the location of the original Firmware"), gv->curdestdir,wxT(""),wxT(""),wxT("*.hex"));
621
622 if (!temp.empty())
623 {
624 m_firmwarePos->SetValue(temp);
625 }
626
627}
628
diff --git a/rbutil/rbutilCtrls.h b/rbutil/rbutilCtrls.h
deleted file mode 100644
index 7998dc69a4..0000000000
--- a/rbutil/rbutilCtrls.h
+++ /dev/null
@@ -1,286 +0,0 @@
1#ifndef RBUTILCTRLS_H_INCLUDED
2#define RBUTILCTRLS_H_INCLUDED
3
4#include "rbutil.h"
5
6
7class ImageCtrl: public wxControl
8{
9DECLARE_DYNAMIC_CLASS(ImageCtrl)
10DECLARE_EVENT_TABLE()
11
12public:
13 // Constructors
14 ImageCtrl() { }
15 ImageCtrl(wxWindow* parent, wxWindowID id,
16 const wxPoint& pos = wxDefaultPosition,
17 const wxSize& size = wxDefaultSize,
18 long style = wxNO_BORDER,
19 const wxValidator& validator = wxDefaultValidator)
20 {
21 Create(parent, id, pos, size, style, validator);
22 }
23 // Creation
24 bool Create(wxWindow* parent, wxWindowID id,
25 const wxPoint& pos = wxDefaultPosition,
26 const wxSize& size = wxDefaultSize,
27 long style = wxNO_BORDER,
28 const wxValidator& validator = wxDefaultValidator);
29
30 // Event handlers
31 void OnPaint(wxPaintEvent& event);
32
33 wxSize DoGetBestSize() const ;
34
35 void SetBitmap(wxBitmap bmp);
36
37protected:
38 wxBitmap m_bitmap;
39
40};
41
42class ThemeCtrl: public wxPanel
43{
44DECLARE_DYNAMIC_CLASS(ThemeCtrl)
45DECLARE_EVENT_TABLE()
46public:
47enum {
48 ID_DESC = 10001,
49 ID_FILESIZE= 10002,
50 ID_INSTALLCHECKBOX= 10003,
51 ID_PREVIEW_BITMAP = 10004,
52 ID_THEME_LST = 10005,
53 ID_THEME_SELECT_ALL = 10006
54 }; //End of Enum
55
56public:
57 // Constructors
58 ThemeCtrl() { Init(); }
59 ThemeCtrl(wxWindow* parent, wxWindowID id,
60 const wxPoint& pos = wxDefaultPosition,
61 const wxSize& size = wxDefaultSize,
62 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
63 const wxString title = wxT(""))
64 {
65 Init();
66 Create(parent, id, pos, size, style, title);
67 }
68 // Creation
69 bool Create(wxWindow* parent, wxWindowID id,
70 const wxPoint& pos = wxDefaultPosition,
71 const wxSize& size = wxDefaultSize,
72 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
73 const wxString title = wxT(""));
74
75 // Creates the controls and sizers
76 void CreateControls();
77 // Common initialization
78 void Init();
79 // Event handlers
80 void OnThemesLst(wxCommandEvent& event);
81 void OnSelectAll(wxCommandEvent& event);
82 void OnCheckBox(wxCommandEvent& event);
83
84 void setDevice(wxString device);
85 wxArrayString getThemesToInstall();
86
87protected:
88 void ThemePreview(void);
89
90 wxString m_currentimage;
91 wxString m_currentResolution;
92
93 wxStaticText* m_desc;
94 wxListBox* m_themeList;
95 wxButton* m_selectAllThemes;
96 wxStaticText* m_size;
97 wxTextCtrl* m_themedesc;
98 ImageCtrl* m_PreviewBitmap;
99
100 wxArrayString m_Themes;
101 wxArrayString m_Themes_path;
102 wxArrayString m_Themes_size;
103 wxArrayString m_Themes_image;
104 wxArrayString m_Themes_desc;
105
106};
107
108class OkCancelCtrl: public wxPanel
109{
110DECLARE_DYNAMIC_CLASS(OkCancelCtrl)
111DECLARE_EVENT_TABLE()
112
113public:
114 // Constructors
115 OkCancelCtrl() { Init(); }
116 OkCancelCtrl(wxWindow* parent, wxWindowID id,
117 const wxPoint& pos = wxDefaultPosition,
118 const wxSize& size = wxDefaultSize,
119 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
120 const wxString title = wxT(""))
121 {
122 Init();
123 Create(parent, id, pos, size, style, title);
124 }
125 // Creation
126 bool Create(wxWindow* parent, wxWindowID id,
127 const wxPoint& pos = wxDefaultPosition,
128 const wxSize& size = wxDefaultSize,
129 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
130 const wxString title = wxT(""));
131
132 // Creates the controls and sizers
133 void CreateControls();
134 // Common initialization
135 void Init() { }
136
137protected:
138 wxButton* m_OkBtn;
139 wxButton* m_CancelBtn;
140
141};
142
143class DeviceSelectorCtrl: public wxPanel
144{
145DECLARE_DYNAMIC_CLASS(DeviceSelectorCtrl)
146DECLARE_EVENT_TABLE()
147public:
148enum {
149 ID_DEVICE_CBX = 10001,
150 ID_AUTODETECT_BTN= 10002,
151 }; //End of Enum
152
153public:
154 // Constructors
155 DeviceSelectorCtrl() { }
156 DeviceSelectorCtrl(wxWindow* parent, wxWindowID id,
157 const wxPoint& pos = wxDefaultPosition,
158 const wxSize& size = wxDefaultSize,
159 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
160 const wxString title = wxT(""))
161 {
162 Create(parent, id, pos, size, style, title);
163 }
164 // Creation
165 bool Create(wxWindow* parent, wxWindowID id,
166 const wxPoint& pos = wxDefaultPosition,
167 const wxSize& size = wxDefaultSize,
168 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
169 const wxString title = wxT(""));
170
171 // Creates the controls and sizers
172 void CreateControls();
173 // Event handlers
174 void OnAutoDetect(wxCommandEvent& event);
175 void OnComboBox(wxCommandEvent& event);
176 // Accessors
177 wxString getDevice();
178 void setDefault();
179
180 bool AutoDetect();
181
182protected:
183 wxString m_currentDevice;
184 wxComboBox* m_deviceCbx;
185 wxStaticText* m_desc;
186 wxButton* m_autodetectBtn;
187
188};
189
190
191class DevicePositionCtrl: public wxPanel
192{
193DECLARE_DYNAMIC_CLASS(DevicePositionCtrl)
194DECLARE_EVENT_TABLE()
195public:
196enum {
197 ID_BROWSE_BTN = 10003,
198 }; //End of Enum
199
200public:
201 // Constructors
202 DevicePositionCtrl() { Init(); }
203 DevicePositionCtrl(wxWindow* parent, wxWindowID id,
204 const wxPoint& pos = wxDefaultPosition,
205 const wxSize& size = wxDefaultSize,
206 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
207 const wxString title = wxT(""))
208 {
209 Init();
210 Create(parent, id, pos, size, style, title);
211 }
212 // Creation
213 bool Create(wxWindow* parent, wxWindowID id,
214 const wxPoint& pos = wxDefaultPosition,
215 const wxSize& size = wxDefaultSize,
216 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
217 const wxString title = wxT(""));
218
219 // Creates the controls and sizers
220 void CreateControls();
221 // Common initialization
222 void Init() { }
223 // Event handlers
224 void OnBrowseBtn(wxCommandEvent& event);
225 // Accessors
226 wxString getDevicePos();
227
228 void setDefault();
229
230protected:
231 wxTextCtrl* m_devicePos;
232 wxStaticText* m_desc;
233 wxButton* m_browseBtn;
234
235};
236
237
238class FirmwarePositionCtrl: public wxPanel
239{
240DECLARE_DYNAMIC_CLASS(FirmwarePositionCtrl)
241DECLARE_EVENT_TABLE()
242public:
243enum {
244 ID_BROWSE_BTN = 10004,
245 }; //End of Enum
246
247public:
248 // Constructors
249 FirmwarePositionCtrl() { Init(); }
250 FirmwarePositionCtrl(wxWindow* parent, wxWindowID id,
251 const wxPoint& pos = wxDefaultPosition,
252 const wxSize& size = wxDefaultSize,
253 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
254 const wxString title = wxT(""))
255 {
256 Init();
257 Create(parent, id, pos, size, style, title);
258 }
259 // Creation
260 bool Create(wxWindow* parent, wxWindowID id,
261 const wxPoint& pos = wxDefaultPosition,
262 const wxSize& size = wxDefaultSize,
263 long style = wxNO_BORDER|wxTAB_TRAVERSAL,
264 const wxString title = wxT(""));
265
266 // Creates the controls and sizers
267 void CreateControls();
268 // Common initialization
269 void Init() { }
270 // Event handlers
271 void OnBrowseBtn(wxCommandEvent& event);
272 // Accessors
273 wxString getFirmwarePos();
274 void setDefault();
275
276protected:
277 wxTextCtrl* m_firmwarePos;
278 wxStaticText* m_desc;
279 wxButton* m_browseBtn;
280
281};
282
283
284
285#endif
286
diff --git a/rbutil/rbutilFrm.cpp b/rbutil/rbutilFrm.cpp
deleted file mode 100644
index 306f955d46..0000000000
--- a/rbutil/rbutilFrm.cpp
+++ /dev/null
@@ -1,1164 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutilFrm.cpp
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "rbutilFrm.h"
22#include "credits.h"
23
24#include "rbutilFrm_XPM.xpm"
25#include "icons/rbinstall_btn.h"
26#include "icons/remrb_btn.h"
27#include "icons/font_btn.h"
28#include "icons/bootloader_btn.h"
29#include "icons/rembootloader_btn.h"
30#include "icons/themes_btn.h"
31#include "icons/doom_btn.h"
32#include "icons/talkfile_btn.h"
33
34#include "rblogo.xpm"
35
36#include "bootloaders.h"
37#include "install_dialogs.h"
38
39
40
41//----------------------------------------------------------------------------
42// rbutilFrm
43//----------------------------------------------------------------------------
44
45BEGIN_EVENT_TABLE(rbutilFrm,wxFrame)
46 EVT_BUTTON (ID_INSTALL_BTN, rbutilFrm::OnInstallBtn)
47 EVT_BUTTON (ID_REMOVE_BTN, rbutilFrm::OnRemoveBtn)
48 EVT_BUTTON (ID_FONT_BTN, rbutilFrm::OnFontBtn)
49 EVT_BUTTON (ID_THEMES_BTN, rbutilFrm::OnThemesBtn)
50 EVT_BUTTON (ID_BOOTLOADER_BTN, rbutilFrm::OnBootloaderBtn)
51 EVT_BUTTON (ID_BOOTLOADERREMOVE_BTN, rbutilFrm::OnBootloaderRemoveBtn)
52 EVT_BUTTON (ID_DOOM_BTN, rbutilFrm::OnDoomBtn)
53 EVT_BUTTON (ID_TALK_BTN, rbutilFrm::OnTalkBtn)
54
55 EVT_CLOSE(rbutilFrm::rbutilFrmClose)
56 EVT_MENU(ID_FILE_EXIT, rbutilFrm::OnFileExit)
57 EVT_MENU(ID_FILE_ABOUT, rbutilFrm::OnFileAbout)
58 EVT_MENU(ID_FILE_WIPECACHE, rbutilFrm::OnFileWipeCache)
59 EVT_MENU(ID_PORTABLE_INSTALL, rbutilFrm::OnPortableInstall)
60
61 EVT_MENU(ID_FILE_PROXY, rbutilFrm::OnFileProxy)
62
63 EVT_UPDATE_UI (ID_MANUAL, rbutilFrm::OnManualUpdate)
64
65END_EVENT_TABLE()
66
67rbutilFrm::rbutilFrm( wxWindow *parent, wxWindowID id, const wxString &title,
68 const wxPoint &position, const wxSize& size, long style )
69 : wxFrame( parent, id, title, position, size, style)
70{
71 wxLogVerbose(wxT("=== begin rbutilFrm::rbutilFrm(...)"));
72 CreateGUIControls();
73 wxLogVerbose(wxT("=== end rbutilFrm::rbutilFrm"));
74}
75
76rbutilFrm::~rbutilFrm() {}
77
78void rbutilFrm::CreateGUIControls(void)
79{
80 wxLogVerbose(wxT("=== begin rbutilFrm::CreateGUIControls()"));
81
82 wxBoxSizer* WxBoxSizer1 = new wxBoxSizer(wxVERTICAL);
83 this->SetSizer(WxBoxSizer1);
84 this->SetAutoLayout(TRUE);
85
86 wxPanel* mainPanel = new wxPanel(this,wxID_ANY);
87 WxBoxSizer1->Add(mainPanel,1,wxGROW|wxALL,0);
88 wxBoxSizer* WxBoxSizer0 = new wxBoxSizer(wxVERTICAL);
89 mainPanel->SetSizer(WxBoxSizer0);
90 mainPanel->SetAutoLayout(TRUE);
91
92 wxBitmap rockboxbmp(rblogo_xpm);
93 ImageCtrl* rockboxbmpCtrl = new ImageCtrl(mainPanel,wxID_ANY);
94 rockboxbmpCtrl->SetBitmap(rockboxbmp);
95
96 WxBoxSizer0->Add(rockboxbmpCtrl,0,wxALIGN_CENTER_HORIZONTAL | wxALL,5);
97
98 myDeviceSelector = new DeviceSelectorCtrl(mainPanel,wxID_ANY);
99 myDeviceSelector->setDefault();
100 myDeviceSelector->AutoDetect();
101 WxBoxSizer0->Add(myDeviceSelector,0,wxGROW|wxALL,5);
102
103
104 wxNotebook* tabwindow = new wxNotebook(mainPanel,wxID_ANY);
105 WxBoxSizer0->Add(tabwindow,1,wxGROW|wxALL,5);
106
107 wxPanel* installpage = new wxPanel(tabwindow,wxID_ANY);
108 wxPanel* themepage = new wxPanel(tabwindow,wxID_ANY);
109 wxPanel* uninstallpage = new wxPanel(tabwindow,wxID_ANY);
110 wxPanel* manualpage = new wxPanel(tabwindow,wxID_ANY);
111 tabwindow->AddPage(installpage,wxT("Installation"),true);
112 tabwindow->AddPage(themepage,wxT("Extras"));
113 tabwindow->AddPage(uninstallpage,wxT("Uninstallation"));
114 tabwindow->AddPage(manualpage,wxT("Manual"));
115
116 /*********************
117 Install Page
118 ***********************/
119
120 wxBoxSizer* WxBoxSizer2 = new wxBoxSizer(wxVERTICAL);
121 installpage->SetSizer(WxBoxSizer2);
122 installpage->SetAutoLayout(TRUE);
123
124 wxStaticBox* WxStaticBoxSizer3_StaticBoxObj = new wxStaticBox(installpage,
125 wxID_ANY, wxT("Please choose an option"));
126 wxStaticBoxSizer* WxStaticBoxSizer3 =
127 new wxStaticBoxSizer(WxStaticBoxSizer3_StaticBoxObj,wxHORIZONTAL);
128 WxBoxSizer2->Add(WxStaticBoxSizer3,1,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
129
130 wxFlexGridSizer* WxFlexGridSizer1 = new wxFlexGridSizer(2,2,0,0);
131 WxStaticBoxSizer3->Add(WxFlexGridSizer1,0,wxGROW | wxALL,0);
132
133
134 wxBitmap BootloaderInstallButton (wxGetBitmapFromMemory(bootloader_btn_png,bootloader_btn_png_length));
135 WxBitmapButton4 = new wxBitmapButton(installpage, ID_BOOTLOADER_BTN,
136 BootloaderInstallButton, wxPoint(0,0), wxSize(64,54),
137 wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator,wxT("Bootloader Installation"));
138 WxBitmapButton4->SetToolTip(wxT("Click here to install the Rockbox bootloader"));
139 WxFlexGridSizer1->Add(WxBitmapButton4, 0,
140 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
141
142 wxStaticText* WxStaticText5 = new wxStaticText(installpage, wxID_ANY,
143 wxT("Bootloader installation\n\n"
144 "Before Rockbox can be installed on your audio player, you "
145 "may have to\ninstall a bootloader.\nThis is only necessary the first time "
146 "Rockbox is installed."));
147 WxFlexGridSizer1->Add(WxStaticText5, 0,
148 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
149
150 wxBitmap WxBitmapButton1_BITMAP (wxGetBitmapFromMemory(rbinstall_btn_png,rbinstall_btn_png_length));
151 WxBitmapButton1 = new wxBitmapButton(installpage, ID_INSTALL_BTN,
152 WxBitmapButton1_BITMAP, wxPoint(0,0), wxSize(64,54),
153 wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator,
154 wxT("Rockbox Installation"));
155 WxBitmapButton1->SetToolTip(wxT("Click here to install Rockbox"));
156 WxFlexGridSizer1->Add(WxBitmapButton1,0,
157 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
158
159 WxStaticText2 = new wxStaticText(installpage, ID_WXSTATICTEXT2,
160 wxT("Install Rockbox on your audio player"));
161 WxFlexGridSizer1->Add(WxStaticText2,0,
162 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
163
164 /*********************+
165 Extras Page
166 ***********************/
167
168 wxBoxSizer* WxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
169 themepage->SetSizer(WxBoxSizer3);
170 themepage->SetAutoLayout(TRUE);
171
172 wxStaticBox* WxStaticBoxSizer4_StaticBoxObj = new wxStaticBox(themepage,
173 wxID_ANY, wxT("Please choose an option"));
174 wxStaticBoxSizer* WxStaticBoxSizer4 =
175 new wxStaticBoxSizer(WxStaticBoxSizer4_StaticBoxObj,wxHORIZONTAL);
176 WxBoxSizer3->Add(WxStaticBoxSizer4,1,wxALIGN_CENTER_HORIZONTAL |wxGROW| wxALL, 5);
177
178 wxFlexGridSizer* WxFlexGridSizer2 = new wxFlexGridSizer(2,2,0,0);
179 WxStaticBoxSizer4->Add(WxFlexGridSizer2,0,wxGROW | wxALL,0);
180
181 wxBitmap FontInstallButton (wxGetBitmapFromMemory(font_btn_png,font_btn_png_length));
182 WxBitmapButton3 = new wxBitmapButton(themepage, ID_FONT_BTN,
183 FontInstallButton, wxPoint(0,0), wxSize(64,54),
184 wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Font installation"));
185 WxBitmapButton3->SetToolTip(wxT("Click here to install the most up to date "
186 "Rockbox fonts."));
187 WxFlexGridSizer2->Add(WxBitmapButton3, 0,
188 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
189
190 wxStaticText* WxStaticText4 = new wxStaticText(themepage, wxID_ANY,
191 wxT("Install the Rockbox fonts package\n\n"
192 "This step is needed for many Themes. You "
193 "will not need to download these\nagain unless you uninstall "
194 "Rockbox."));
195 WxFlexGridSizer2->Add(WxStaticText4, 0,
196 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
197
198 wxBitmap ThemesInstallButton (wxGetBitmapFromMemory(themes_btn_png,themes_btn_png_length));
199 WxBitmapButton5 = new wxBitmapButton(themepage, ID_THEMES_BTN,
200 ThemesInstallButton, wxPoint(0,0), wxSize(64,54),
201 wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Theme installation"));
202 WxBitmapButton5->SetToolTip(wxT("Click here to install themes for Rockbox."));
203 WxFlexGridSizer2->Add(WxBitmapButton5, 0,
204 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
205
206 wxStaticText* WxStaticText6 = new wxStaticText(themepage, wxID_ANY,
207 wxT("Install more Themes for Rockbox.\n\n"));
208 WxFlexGridSizer2->Add(WxStaticText6, 0,
209 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
210
211 wxBitmap DoomInstallButton (wxGetBitmapFromMemory(doom_btn_png,doom_btn_png_length));
212 WxBitmapButton6 = new wxBitmapButton(themepage, ID_DOOM_BTN,
213 DoomInstallButton, wxPoint(0,0), wxSize(64,54),
214 wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Freedoom installation"));
215 WxBitmapButton6->SetToolTip(wxT("Click here to install the freedoom wad files."));
216 WxFlexGridSizer2->Add(WxBitmapButton6, 0,
217 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
218
219 wxStaticText* WxStaticText7 = new wxStaticText(themepage, wxID_ANY,
220 wxT("Install the freedoom wad files.\n\n"));
221 WxFlexGridSizer2->Add(WxStaticText7, 0,
222 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
223
224 wxBitmap TalkInstallButton (wxGetBitmapFromMemory(talkfile_btn_png,talkfile_btn_png_length));
225 WxBitmapButton7 = new wxBitmapButton(themepage, ID_TALK_BTN,
226 TalkInstallButton, wxPoint(0,0), wxSize(64,54),
227 wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Create Talk Files"));
228 WxBitmapButton7->SetToolTip(wxT("Click here to create Talk files."));
229 WxFlexGridSizer2->Add(WxBitmapButton7, 0,
230 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
231
232 wxStaticText* WxStaticText8 = new wxStaticText(themepage, wxID_ANY,
233 wxT("Create Talk Files.\n\n"));
234 WxFlexGridSizer2->Add(WxStaticText8, 0,
235 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
236
237
238
239 /*********************+
240 Uninstall Page
241 ***********************/
242
243 wxBoxSizer* WxBoxSizer4 = new wxBoxSizer(wxVERTICAL);
244 uninstallpage->SetSizer(WxBoxSizer4);
245 uninstallpage->SetAutoLayout(TRUE);
246
247 wxStaticBox* WxStaticBoxSizer5_StaticBoxObj = new wxStaticBox(uninstallpage,
248 wxID_ANY, wxT("Please choose an option"));
249 wxStaticBoxSizer* WxStaticBoxSizer5 =
250 new wxStaticBoxSizer(WxStaticBoxSizer5_StaticBoxObj,wxHORIZONTAL);
251 WxBoxSizer4->Add(WxStaticBoxSizer5,1,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
252
253 wxFlexGridSizer* WxFlexGridSizer3 = new wxFlexGridSizer(2,2,0,0);
254 WxStaticBoxSizer5->Add(WxFlexGridSizer3,0,wxGROW | wxALL,0);
255
256 wxBitmap WxBitmapButton2_BITMAP (wxGetBitmapFromMemory(remrb_btn_png,remrb_btn_png_length));
257 WxBitmapButton2 = new wxBitmapButton(uninstallpage, ID_REMOVE_BTN,
258 WxBitmapButton2_BITMAP, wxPoint(0,0), wxSize(64,54),
259 wxRAISED_BORDER | wxBU_AUTODRAW,wxDefaultValidator, wxT("Rockbox uninstallation"));
260 WxBitmapButton2->SetToolTip(wxT("Click here to uninstall Rockbox"));
261 WxFlexGridSizer3->Add(WxBitmapButton2,0,
262 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
263
264 WxStaticText3 = new wxStaticText(uninstallpage, ID_WXSTATICTEXT3,
265 wxT("Remove Rockbox from your audio player"));
266 WxFlexGridSizer3->Add(WxStaticText3,0,
267 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
268
269 wxBitmap WxBitmapButton4_BITMAP (wxGetBitmapFromMemory(rembootloader_btn_png,rembootloader_btn_png_length));
270 WxBitmapButton4 = new wxBitmapButton(uninstallpage, ID_BOOTLOADERREMOVE_BTN,
271 WxBitmapButton4_BITMAP, wxPoint(0,0), wxSize(64,54),
272 wxRAISED_BORDER | wxBU_AUTODRAW, wxDefaultValidator,
273 wxT("Bootloader uninstallation"));
274 WxBitmapButton4->SetToolTip(wxT("Click here to uninstall the Bootloader"));
275 WxFlexGridSizer3->Add(WxBitmapButton4,0,
276 wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL,5);
277
278 WxStaticText4 = new wxStaticText(uninstallpage, ID_WXSTATICTEXT4,
279 wxT("Remove Rockbox Bootloader from your audio player"));
280 WxFlexGridSizer3->Add(WxStaticText4,0,
281 wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL,5);
282
283
284 /*****************
285 * Manual Page
286 ******************/
287
288 wxBoxSizer* WxBoxSizer5 = new wxBoxSizer(wxVERTICAL);
289 manualpage->SetSizer(WxBoxSizer5);
290 manualpage->SetAutoLayout(TRUE);
291
292 manuallink = new wxHyperlinkCtrl(manualpage,wxID_ANY,wxT("Rockbox PDF Manual"),wxT("http://www.rockbox.org"));
293 WxBoxSizer5->Add(manuallink,1,wxGROW | wxALL, 5);
294
295 manual =new wxHtmlWindow(manualpage,ID_MANUAL);
296 WxBoxSizer5->Add(manual,10,wxGROW | wxALL, 5);
297
298
299 /**********
300 ** rest of the controls
301 **********/
302
303 WxMenuBar1 = new wxMenuBar();
304 wxMenu *ID_FILE_MENU_Mnu_Obj = new wxMenu(0);
305 WxMenuBar1->Append(ID_FILE_MENU_Mnu_Obj, wxT("&File"));
306
307 ID_FILE_MENU_Mnu_Obj->Append(ID_FILE_WIPECACHE,
308 wxT("&Empty local download cache"), wxT(""), wxITEM_NORMAL);
309 if (! gv->portable )
310 {
311 ID_FILE_MENU_Mnu_Obj->Append(ID_PORTABLE_INSTALL,
312 wxT("&Install Rockbox Utility on device"), wxT(""), wxITEM_NORMAL);
313 }
314 ID_FILE_MENU_Mnu_Obj->Append(ID_FILE_PROXY, wxT("Set &Proxy"), wxT(""),
315 wxITEM_NORMAL);
316 ID_FILE_MENU_Mnu_Obj->Append(ID_FILE_ABOUT, wxT("&About"), wxT(""),
317 wxITEM_NORMAL);
318 ID_FILE_MENU_Mnu_Obj->Append(ID_FILE_EXIT, wxT("E&xit\tCtrl+X"), wxT(""),
319 wxITEM_NORMAL);
320
321 this->SetMenuBar(WxMenuBar1);
322 Layout();
323 GetSizer()->Fit(this);
324 GetSizer()->SetSizeHints(this);
325 if (gv->portable)
326 {
327 this->SetTitle(wxT("Rockbox Utility (portable)"));
328 } else
329 {
330 this->SetTitle(wxT("Rockbox Utility"));
331 }
332 this->Center();
333 wxIcon rbutilFrm_ICON (rbutilFrm_XPM);
334 this->SetIcon(rbutilFrm_XPM);
335 this->SetToolTip(wxT("Install Rockbox"));
336
337 wxLogVerbose(wxT("=== end rbutilFrm::CreateGUIControls"));
338}
339
340void rbutilFrm::OnManualUpdate(wxUpdateUIEvent& event)
341{
342 wxString tmp = wxT("/rockbox-") + gv->curplat;
343
344 int index = GetDeviceId(false);
345 if(index < 0) {
346 curManualDevice = tmp;
347 wxString pdflink;
348 pdflink = gv->manual_url;
349 manuallink->SetURL(pdflink);
350 manual->SetPage(wxT("<p><b>no device selected</b> &mdash; "
351 "You can find an overview of available manuals at "
352 "<a href='http://www.rockbox.org/manual.shtml'>"
353 "http://www.rockbox.org/manual.shtml</a></p>"));
354 return;
355 }
356
357 if(gv->plat_manualname[index] != wxT(""))
358 tmp = wxT("/") + gv->plat_manualname[index];
359
360 if( tmp == curManualDevice)
361 return;
362
363 curManualDevice = tmp;
364
365 // construct link to pdf
366 wxString pdflink;
367 pdflink = gv->manual_url + tmp + wxT(".pdf");
368 manuallink->SetURL(pdflink);
369
370 // construct link to html
371 wxString htmllink;
372 htmllink = gv->manual_url + tmp + wxT("/rockbox-build.html");
373 if(gv->proxy_url == wxT(""))
374 if(manual->LoadPage(htmllink)) return;
375 manual->SetPage(wxT("<p>unable to display manual &mdash;"
376 "please use the PDF link above</p>"));
377
378
379}
380
381
382void rbutilFrm::OnFileProxy(wxCommandEvent& event)
383{
384
385 wxTextEntryDialog proxydlg(this,wxT("Please enter your Proxy in the Format: URL:PORT"),wxT("Proxy Configuration"), gv->proxy_url);
386
387 if(proxydlg.ShowModal() == wxID_OK)
388 {
389 gv->proxy_url = proxydlg.GetValue();
390 }
391
392}
393
394
395void rbutilFrm::rbutilFrmClose(wxCloseEvent& event)
396{
397 wxLogVerbose(wxT("=== begin rbutilFrm::rbutilFrmClose(event)"));
398 Destroy();
399 wxLogVerbose(wxT("=== end rbutilFrm::rbutilFrmClose"));
400}
401
402
403
404/*
405 * OnFileExit
406 */
407void rbutilFrm::OnFileExit(wxCommandEvent& event)
408{
409 wxLogVerbose(wxT("=== begin rbutilFrm::OnFileExit(event)"));
410 Close();
411 wxLogVerbose(wxT("=== end rbutilFrm::OnFileExit"));
412}
413
414// The routines this code uses are in the wxWidgets documentation, but
415// not yet the library (2.7.0-1). This code can be re-enabled later.
416
417void rbutilFrm::OnFileAbout(wxCommandEvent& event)
418{
419/*
420 wxAboutDialogInfo *info = new wxAboutDialogInfo();
421
422 info->SetName(wxT(RBUTIL_FULLNAME));
423 info->SetVersion(wxT(RBUTIL_VERSION));
424 info->SetCopyright(wxT(RBUTIL_COPYRIGHT));
425 info->SetDescription(wxT(RBUTIL_DESCRIPTION));
426 info->SetWebSite(wxT(RBUTIL_WEBSITE));
427
428 long i = 0;
429 while (rbutil_developers[i] != "")
430 {
431 info->AddDeveloper(wxT(rbutil_developers[i++]));
432 }
433
434 wxAboutBox(*info);
435 delete info;
436*/
437
438 AboutDlg(this).ShowModal();
439}
440
441void rbutilFrm::OnFileWipeCache(wxCommandEvent& event)
442{
443 wxString cacheloc, datadir;
444
445 datadir = gv->stdpaths->GetUserDataDir();
446 if (datadir == wxT(""))
447 {
448 ERR_DIALOG(wxT("Can't locate user data directory. Unable to delete "
449 "cache."), wxT("Delete download cache.") );
450 return;
451 }
452
453 cacheloc = datadir + wxT("" PATH_SEP "download");
454
455 if (! rm_rf(cacheloc) )
456 {
457 wxMessageDialog* msg = new wxMessageDialog(this, wxT("Local download cache has been deleted.")
458 , wxT("Cache deletion"), wxOK |wxICON_INFORMATION);
459 msg->ShowModal();
460 delete msg;
461 }
462 else {
463 MESG_DIALOG(wxT("Errors occured deleting the local download cache."));
464 }
465
466 wxMkdir(cacheloc, 0777);
467}
468
469void rbutilFrm::OnBootloaderRemoveBtn(wxCommandEvent& event)
470{
471 wxLogVerbose(wxT("=== begin rbutilFrm::OnBootloaderRemoveBtn(event)"));
472
473 int index = GetDeviceId(true);
474 if(index < 0)
475 return;
476
477 wxString bootloadermethod = gv->plat_bootloadermethod[index];
478
479 if(!gv->plat_needsbootloader[index])
480 {
481 WARN_DIALOG(wxT("This Device doesnt need a Bootloader"),
482 wxT("Bootloader"));
483 return;
484 }
485
486 // really deinstall ?
487 wxMessageDialog msg(this,wxT("Do you really want to deinstall the Bootloader ?"),wxT("Bootloader deinstallation"),wxOK|wxCANCEL);
488 if(msg.ShowModal() != wxID_OK )
489 return;
490
491
492 if(bootloadermethod == wxT("ipodpatcher"))
493 {
494 wxString bootloadername = wxT("bootloader-");
495 bootloadername.Append(gv->plat_bootloadername[index] );
496 if(ipodpatcher(BOOTLOADER_REM,bootloadername))
497 {
498 MESG_DIALOG(wxT("The Bootloader has been uninstalled.") );
499 }
500 else
501 {
502 MESG_DIALOG(wxT("The Uninstallation failed.") );
503 }
504 }
505 else if(bootloadermethod == wxT("sansapatcher"))
506 {
507 if(sansapatcher(BOOTLOADER_REM,gv->plat_bootloadername[index]))
508 {
509 MESG_DIALOG(wxT("The Bootloader has been uninstalled.") );
510 }
511 else
512 {
513 MESG_DIALOG(wxT("The Uninstallation failed.") );
514 }
515 }
516 else if(bootloadermethod== wxT("gigabeatf"))
517 {
518
519 if(gigabeatf(BOOTLOADER_REM,gv->plat_bootloadername[index],gv->curdestdir))
520 {
521 MESG_DIALOG(wxT("The Bootloader has been uninstalled."));
522 }
523 else
524 MESG_DIALOG(wxT("The Uninstallation failed.") );
525 }
526 else if(bootloadermethod == wxT("iaudio") )
527 {
528 MESG_DIALOG(wxT("To uninstall the Bootloader on this Device,\n"
529 "you need to download and install an Original Firmware from the Manufacturer."));
530 }
531 else if(bootloadermethod == wxT("fwpatcher"))
532 {
533 MESG_DIALOG(wxT("To uninstall the Bootloader on this Device,\n"
534 "you need to download and install an original Firmware from the Manufacturer.\n"
535 "To do this, you need to boot into the original Firmware."));
536 }
537 else if(bootloadermethod == wxT("h10"))
538 {
539 if(h10(BOOTLOADER_REM,gv->plat_bootloadername[index],gv->curdestdir))
540 {
541 MESG_DIALOG(wxT("The Bootloader has been uninstalled."));
542 }
543 else
544 MESG_DIALOG(wxT("The Uninstallation failed.") );
545 }
546 else
547 {
548 MESG_DIALOG(wxT("Unsupported Bootloader Uninstall method.") );
549 }
550
551 wxLogVerbose(wxT("=== end rbutilFrm::OnBootloaderRemoveBtn"));
552}
553
554void rbutilFrm::OnBootloaderBtn(wxCommandEvent& event)
555{
556 wxLogVerbose(wxT("=== begin rbutilFrm::OnBootloaderBtn(event)"));
557
558 int index = GetDeviceId(true);
559 if(index < 0)
560 return;
561
562 wxString bootloadermethod = gv->plat_bootloadermethod[index];
563
564 if(!gv->plat_needsbootloader[index])
565 {
566 WARN_DIALOG(wxT("This Device doesnt need a Bootloader"),
567 wxT("Bootloader"));
568 return;
569 }
570
571 // Bootloader dialog
572 if(bootloadermethod != wxT("ipodpatcher") && bootloadermethod != wxT("sansapatcher") )
573 {
574 bootloaderInstallDlg dialog(NULL, wxID_ANY,wxT("Bootloader Installation"));
575 if (dialog.ShowModal() != wxID_OK)
576 return;
577 }
578
579 // really install ?
580 wxMessageDialog msg(this,wxT("Do you really want to install the Bootloader ?"),wxT("Bootloader installation"),wxOK|wxCANCEL);
581 if(msg.ShowModal() != wxID_OK )
582 return;
583
584
585 if(bootloadermethod == wxT("ipodpatcher"))
586 {
587 wxString bootloadername = wxT("bootloader-");
588 bootloadername.Append(gv->plat_bootloadername[index] );
589 if(ipodpatcher(BOOTLOADER_ADD,bootloadername))
590 {
591 MESG_DIALOG(wxT("The Bootloader has been installed on your device.") );
592 }
593 else
594 {
595 MESG_DIALOG(wxT("The installation has failed.") );
596 }
597 }
598 else if(bootloadermethod == wxT("sansapatcher"))
599 {
600 if(sansapatcher(BOOTLOADER_ADD,gv->plat_bootloadername[index]))
601 {
602 MESG_DIALOG(wxT("The Bootloader has been installed on your device.") );
603 }
604 else
605 {
606 MESG_DIALOG(wxT("The installation has failed.") );
607 }
608
609 }
610 else if(bootloadermethod== wxT("gigabeatf"))
611 {
612
613 if(gigabeatf(BOOTLOADER_ADD,gv->plat_bootloadername[index],gv->curdestdir))
614 {
615 MESG_DIALOG(wxT("The Bootloader has been installed on your device."));
616 }
617 else
618 MESG_DIALOG(wxT("The installation has failed.") );
619 }
620 else if(bootloadermethod == wxT("iaudio") )
621 {
622 if(iaudiox5(BOOTLOADER_ADD,gv->plat_bootloadername[index],gv->curdestdir))
623 {
624 MESG_DIALOG(wxT("The Bootloader has been installed on your device.\n"
625 "Now turn OFF your Device, unplug USB,and insert Charger\n"
626 "Your Device will automatically upgrade the flash with the Rockbox bootloader"));
627 }
628 else
629 MESG_DIALOG(wxT("The installation has failed.") );
630 }
631 else if(bootloadermethod == wxT("fwpatcher"))
632 {
633 if(fwpatcher(BOOTLOADER_ADD,gv->plat_bootloadername[index],gv->curdestdir,gv->curfirmware))
634 {
635 MESG_DIALOG(wxT("The Bootloader has been patched and copied on your device.\n"
636 "Now use the Firmware upgrade option of your Device\n"));
637 }
638 else
639 MESG_DIALOG(wxT("The installation has failed.") );
640 }
641 else if(bootloadermethod == wxT("h10"))
642 {
643 if(h10(BOOTLOADER_ADD,gv->plat_bootloadername[index],gv->curdestdir))
644 {
645 MESG_DIALOG(wxT("The Bootloader has been patched and copied on your device.\n"));
646 }
647 else
648 MESG_DIALOG(wxT("The installation has failed.") );
649 }
650 else
651 {
652 MESG_DIALOG(wxT("Unsupported Bootloader Install method.") );
653 }
654
655
656
657 wxLogVerbose(wxT("=== end rbutilFrm::OnBootloaderBtn"));
658
659}
660
661void rbutilFrm::OnInstallBtn(wxCommandEvent& event)
662{
663 wxString src, dest, buf;
664 wxDateTime date;
665 wxTimeSpan day(24);
666 wxLogVerbose(wxT("=== begin rbutilFrm::OnInstallBtn(event)"));
667 wxFileSystem fs;
668 wxFileConfig* buildinfo;
669 wxDateSpan oneday;
670
671 int index = GetDeviceId(true);
672 if(index < 0)
673 return;
674
675 // rockbox install dialog
676 rockboxInstallDlg dialog(NULL, wxID_ANY,
677 wxT("Rockbox Installation"));
678 if (dialog.ShowModal() != wxID_OK)
679 return;
680
681 // really install
682 wxMessageDialog msg(this,wxT("Do you really want to install Rockbox ?"),wxT("rockbox installation"),wxOK|wxCANCEL);
683 if(msg.ShowModal() != wxID_OK )
684 return;
685
686
687 switch (gv->curbuild)
688 {
689 case BUILD_RELEASE:
690 // This is a URL - don't use PATH_SEP
691 src = gv->download_url + gv->prog_name + wxT("-")
692 + gv->last_release + wxT("-") + gv->curplat + wxT(".zip");
693 dest = gv->stdpaths->GetUserDataDir() + wxT("download" PATH_SEP)
694 + gv->prog_name + wxT("-") + gv->last_release + wxT("-")
695 + gv->curplat + wxT(".zip");
696 break;
697 case BUILD_DAILY:
698 dest = gv->stdpaths->GetUserDataDir()
699 + PATH_SEP + wxT("download") + PATH_SEP + wxT("build-info");
700 if (DownloadURL(gv->server_conf_url, dest)) {
701 WARN_DIALOG(wxT("Unable to download build status."),
702 wxT("Install"));
703 buf = wxT("");
704 } else
705 {
706 buildinfo = new wxFileConfig(wxEmptyString,
707 wxEmptyString, dest);
708 buf = buildinfo->Read(wxT("/dailies/date"));
709 buildinfo->DeleteAll();
710
711 if (buf.Len() != 8) {
712 dest = wxT("Invalid build date: ") + buf;
713 WARN_DIALOG(dest, wxT("Install"));
714 buf = wxT("");
715 }
716 }
717
718 if (buf == wxT("")) {
719 WARN_DIALOG(wxT("Can't get date of latest build from "
720 "server. Using yesterday's date."), wxT("Install") );
721 date = wxDateTime::Now();
722 date.Subtract(oneday.Day());
723 buf = date.Format(wxT("%Y%m%d")); // yes, we want UTC
724 }
725
726 src = gv->daily_url + gv->curplat + wxT("/") + gv->prog_name
727 + wxT("-") + gv->curplat + wxT("-") + buf + wxT(".zip");
728
729 dest = gv->stdpaths->GetUserDataDir() + PATH_SEP wxT("download")
730 + gv->prog_name + wxT("-") + gv->curplat + wxT("-")
731 + buf + wxT(".zip");
732 break;
733 case BUILD_BLEEDING:
734 src = gv->bleeding_url + gv->curplat + wxT("/")
735 + gv->prog_name + wxT(".zip");
736 dest = gv->stdpaths->GetUserDataDir()
737 + PATH_SEP wxT("download") PATH_SEP
738 + gv->prog_name + wxT(".zip");
739 break;
740 default:
741 ERR_DIALOG(wxT("Something seriously odd has happened."),
742 wxT("Install"));
743 return;
744 break;
745 }
746
747 if (gv->nocache || ( ! wxFileExists(dest) ) )
748 {
749 if ( DownloadURL(src, dest) )
750 {
751 wxRemoveFile(dest);
752 ERR_DIALOG(wxT("Unable to download ")+src, wxT("Install"));
753 return;
754 }
755 }
756
757 if ( !UnzipFile(dest, gv->curdestdir, true) )
758 {
759 wxMessageDialog* msg = new wxMessageDialog(this, wxT("Rockbox has been installed on your device.")
760 ,wxT("Installation"), wxOK |wxICON_INFORMATION);
761 msg->ShowModal();
762 delete msg;
763 } else
764 {
765 wxRemoveFile(dest);
766 ERR_DIALOG(wxT("Unable to unzip ")+dest, wxT("Install"));
767 }
768
769
770 wxLogVerbose(wxT("=== end rbutilFrm::OnInstallBtn"));
771}
772
773void rbutilFrm::OnFontBtn(wxCommandEvent& event)
774{
775 wxString src, dest, buf;
776 wxDateTime date;
777 wxTimeSpan day(24);
778 wxLogVerbose(wxT("=== begin rbutilFrm::OnFontBtn(event)"));
779 wxFileSystem fs;
780 wxFileConfig* buildinfo;
781 wxDateSpan oneday;
782
783 int index = GetDeviceId(true);
784 if(index < 0)
785 return;
786
787 // font install dialog
788 fontInstallDlg dialog(NULL, wxID_ANY,
789 wxT("Font Installation"));
790 if (dialog.ShowModal() != wxID_OK)
791 return;
792
793 // really install ?
794 wxMessageDialog msg(this,wxT("Do you really want to install the Fonts ?"),wxT("Font installation"),wxOK|wxCANCEL);
795 if(msg.ShowModal() != wxID_OK )
796 return;
797
798
799 buf = gv->curdestdir + wxT("" PATH_SEP ".rockbox");
800 if (! wxDirExists(buf) )
801 {
802 WARN_DIALOG(wxT("Rockbox is not yet installed on ") + buf
803 + wxT(" - install Rockbox first."),
804 wxT("Can't install fonts") );
805 return;
806 }
807
808 dest = gv->stdpaths->GetUserDataDir()
809 + wxT( "" PATH_SEP "download" PATH_SEP "build-info");
810 if (DownloadURL(gv->server_conf_url, dest))
811 {
812 WARN_DIALOG(wxT("Unable to download build status."),
813 wxT("Font Install"));
814 buf = wxT("");
815 } else
816 {
817 buildinfo = new wxFileConfig(wxEmptyString,
818 wxEmptyString, dest);
819 buf = buildinfo->Read(wxT("/dailies/date"));
820 buildinfo->DeleteAll();
821
822 if (buf.Len() != 8) {
823 WARN_DIALOG(wxT("Invalid build date: ") + buf, wxT("Font Install"));
824 buf = wxT("");
825 }
826 }
827
828 if (buf == wxT("")) {
829 WARN_DIALOG(wxT("Can't get date of latest build from "
830 "server. Using yesterday's date."),
831 wxT("Font Install") );
832 date = wxDateTime::Now();
833 date.Subtract(oneday.Day());
834 buf = date.Format(wxT("%Y%m%d")); // yes, we want UTC
835 }
836
837 src = gv->font_url + buf + wxT(".zip");
838
839 dest = gv->stdpaths->GetUserDataDir() + wxT( "" PATH_SEP "download"
840 PATH_SEP "rockbox-fonts-") + buf + wxT(".zip");
841
842 if ( ! wxFileExists(dest) )
843 {
844 if ( DownloadURL(src, dest) )
845 {
846 wxRemoveFile(dest);
847 ERR_DIALOG(wxT("Unable to download ") + src, wxT("Font Install"));
848 return;
849 }
850 }
851
852 if ( !UnzipFile(dest, gv->curdestdir, true) )
853 {
854 wxMessageDialog* msg = new wxMessageDialog(this, wxT("The Rockbox fonts have been installed on your device.")
855 ,wxT("Installation"), wxOK |wxICON_INFORMATION);
856 msg->ShowModal();
857 delete msg;
858 } else
859 {
860 wxRemoveFile(dest);
861 ERR_DIALOG(wxT("Unable to unzip ") + dest, wxT("Font Install"));
862 }
863
864 wxLogVerbose(wxT("=== end rbutilFrm::OnFontBtn"));
865}
866
867void rbutilFrm::OnDoomBtn(wxCommandEvent& event)
868{
869 wxString src, dest, buf;
870 wxLogVerbose(wxT("=== begin rbutilFrm::OnDoomBtn(event)"));
871
872 int index = GetDeviceId(true);
873 if(index < 0)
874 return;
875
876 // font install dialog, reused
877 fontInstallDlg dialog(NULL, wxID_ANY,
878 wxT("Freedoom wad file Installation"));
879 if (dialog.ShowModal() != wxID_OK)
880 return;
881
882 // really install ?
883 wxMessageDialog msg(this,wxT("Do you really want to install the Freedoom wads ?"),wxT("Freedoom installation"),wxOK|wxCANCEL);
884 if(msg.ShowModal() != wxID_OK )
885 return;
886
887 buf = gv->curdestdir + wxT("" PATH_SEP ".rockbox");
888 if (! wxDirExists(buf) )
889 {
890 WARN_DIALOG(wxT("Rockbox is not yet installed on ") + buf
891 + wxT(" - install Rockbox first."),
892 wxT("Can't install freedoom wads") );
893 return;
894 }
895
896 src = gv->doom_url;
897
898 dest = gv->stdpaths->GetUserDataDir() + wxT("" PATH_SEP "download" PATH_SEP
899 "rockdoom.zip");
900
901 if ( ! wxFileExists(dest) )
902 {
903 if ( DownloadURL(src, dest) )
904 {
905 wxRemoveFile(dest);
906 ERR_DIALOG(wxT("Unable to download ") + src,
907 wxT("Freedoom Install"));
908 return;
909 }
910 }
911
912 if ( !UnzipFile(dest, gv->curdestdir, true) )
913 {
914 wxMessageDialog* msg = new wxMessageDialog(this, wxT("The Freedoom wads have been installed on your device.")
915 ,wxT("Installation"), wxOK |wxICON_INFORMATION);
916 msg->ShowModal();
917 delete msg;
918 } else
919 {
920 wxRemoveFile(dest);
921 ERR_DIALOG(wxT("Unable to unzip ") + dest, wxT("Freedoom Install"));
922 }
923
924
925 wxLogVerbose(wxT("=== end rbutilFrm::OnDoomBtn"));
926}
927
928
929void rbutilFrm::OnThemesBtn(wxCommandEvent& event)
930{
931 wxString src, dest, buf;
932 wxLogVerbose(wxT("=== begin rbutilFrm::OnThemesBtn(event)"));
933
934 int index = GetDeviceId(true);
935 if(index < 0)
936 return;
937
938 // Theme install dialog
939 themesInstallDlg dialog(NULL, wxID_ANY,
940 wxT("Theme Installation"));
941 if (dialog.ShowModal() != wxID_OK)
942 return;
943
944 // really install ?
945 wxMessageDialog msg(this,wxT("Do you really want to install the selected Themes ?"),wxT("Theme installation"),wxOK|wxCANCEL);
946 if(msg.ShowModal() != wxID_OK )
947 return;
948
949 bool success=true;
950 for(unsigned int i=0 ;i < gv->themesToInstall.GetCount();i++)
951 {
952 if(!InstallTheme(gv->themesToInstall[i]))
953 {
954 MESG_DIALOG(wxT("The Themes installation has failed") );
955 success=false;
956 break;
957 }
958 }
959 if(success)
960 {
961 MESG_DIALOG(wxT("The Theme installation completed successfully.") );
962 }
963
964
965 wxLogVerbose(wxT("=== end rbutilFrm::OnThemesBtn(event)"));
966}
967
968
969void rbutilFrm::OnRemoveBtn(wxCommandEvent& event)
970{
971 wxLogVerbose(wxT("=== begin rbutilFrm::OnRemoveBtn(event)"));
972
973 int index = GetDeviceId(true);
974 if(index < 0)
975 return;
976
977 // Rockbox deinstall dialog
978 rockboxDeInstallDlg dialog(NULL, wxID_ANY,
979 wxT("Rockbox Deinstallation"));
980 if (dialog.ShowModal() != wxID_OK)
981 return;
982
983 // really install ?
984 wxMessageDialog msg(this,wxT("Do you really want to deinstall Rockbox ?"),wxT("Rockbox deinstallation"),wxOK|wxCANCEL);
985 if(msg.ShowModal() != wxID_OK )
986 return;
987
988
989 if (Uninstall(gv->curdestdir, gv->curisfull) )
990 {
991 MESG_DIALOG(
992 wxT("The uninstallation wizard was cancelled or completed with "
993 "some errors.") );
994 } else {
995 wxMessageDialog* msg = new wxMessageDialog(this, wxT("The uninstall wizard completed successfully\n"
996 "Depending on which Device you own, you also have to uninstall the Bootloader")
997 ,wxT("Uninstallation"), wxOK |wxICON_INFORMATION);
998 msg->ShowModal();
999 delete msg;
1000 }
1001
1002 wxLogVerbose(wxT("=== end rbutilFrm::OnRemoveBtn"));
1003}
1004
1005void rbutilFrm::OnPortableInstall(wxCommandEvent& event)
1006{
1007 wxString src, dest, buf;
1008 wxLogVerbose(wxT("=== begin rbutilFrm::OnPortableInstall(event)"));
1009 wxFileSystem fs;
1010 wxDateSpan oneday;
1011
1012 int index = GetDeviceId(true);
1013 if(index < 0)
1014 return;
1015
1016 //portable install dialog ( reused font dialog)
1017 fontInstallDlg dialog(NULL, wxID_ANY,
1018 wxT("Rockbox Utility Portable Installation"));
1019 if (dialog.ShowModal() != wxID_OK)
1020 return;
1021
1022 // really install ?
1023 wxMessageDialog msg(this,wxT("Do you really want a portable install of rbutil ?"),wxT("rbutil installation"),wxOK|wxCANCEL);
1024 if(msg.ShowModal() != wxID_OK )
1025 return;
1026
1027 if ( InstallRbutil(gv->curdestdir) )
1028 {
1029 MESG_DIALOG(wxT("The Rockbox Utility has been installed on your device."));
1030
1031 } else
1032 {
1033 ERR_DIALOG(wxT("Installation failed"), wxT("Portable Install"));
1034 }
1035
1036 wxLogVerbose(wxT("=== end rbutilFrm::OnUnstallPortable"));
1037}
1038
1039void rbutilFrm::OnTalkBtn(wxCommandEvent& event)
1040{
1041 wxLogVerbose(wxT("=== begin rbutilFrm::OnTalkBtn(event)"));
1042
1043 TalkFileCreator talk;
1044
1045 talkInstallDlg dialog(&talk,NULL,wxID_ANY);
1046
1047 if (dialog.ShowModal() != wxID_OK)
1048 return;
1049
1050 // really install ?
1051 wxMessageDialog msg(this,wxT("Do you really want to create Talkfiles ?"),wxT("Talk file creation"),wxOK|wxCANCEL);
1052 if(msg.ShowModal() != wxID_OK )
1053 return;
1054
1055 if(talk.createTalkFiles())
1056 {
1057 MESG_DIALOG(wxT("Talk files have been successfully created."));
1058 }
1059 else
1060 {
1061 ERR_DIALOG(wxT("Talkfile creation failed"), wxT("Talk file creation"));
1062 }
1063
1064 wxLogVerbose(wxT("=== end rbutilFrm::OnTalkBtn"));
1065}
1066
1067int rbutilFrm::GetDeviceId(bool detect)
1068{
1069 int index = gv->plat_id.Index(gv->curplat);
1070 if(index < 0 && detect)
1071 {
1072 if( wxMessageBox(wxT("No device selected. Do you want to autodetect "
1073 "the device?"),
1074 wxT("Warning"), wxYES_NO ) == wxYES )
1075 {
1076 myDeviceSelector->AutoDetect();
1077 index = gv->plat_id.Index(gv->curplat);
1078 if(index < 0)
1079 {
1080 WARN_DIALOG( wxT("Aborting"), wxT("Auto detection failed") );
1081 return index;
1082 }
1083 else
1084 {
1085 if( wxMessageBox(wxT("Found ") + gv->plat_name[index] +
1086 wxT(". Do you want to continue?"),
1087 wxT("Device found"), wxYES_NO ) == wxYES )
1088 return index;
1089 else
1090 return -1;
1091 }
1092 }
1093 else
1094 {
1095 return -1;
1096 }
1097 }
1098 return index;
1099}
1100
1101AboutDlg::AboutDlg(rbutilFrm* parent)
1102 : wxDialog(parent, -1, wxT("About"), wxDefaultPosition, wxDefaultSize,
1103 wxDEFAULT_DIALOG_STYLE)
1104{
1105 wxBoxSizer* WxBoxSizer1 = new wxBoxSizer(wxVERTICAL);
1106 this->SetSizer(WxBoxSizer1);
1107 this->SetAutoLayout(TRUE);
1108
1109 wxBoxSizer* WxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
1110
1111 wxBitmap WxBitmap1 = wxBitmap(rbutilFrm_XPM);
1112 wxStaticBitmap* WxStaticBitmap1 = new wxStaticBitmap(this, wxID_ANY,
1113 WxBitmap1);
1114 WxBoxSizer2->Add(WxStaticBitmap1, 0, wxALL | wxCENTER, 5);
1115
1116 wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
1117 wxT(RBUTIL_FULLNAME), wxDefaultPosition, wxDefaultSize,
1118 wxALIGN_CENTER | wxST_NO_AUTORESIZE );
1119 WxBoxSizer2->Add(WxStaticText1, 0, wxALL | wxCENTER, 5);
1120 WxBoxSizer1->Add(WxBoxSizer2, 0, wxALL, 5);
1121
1122 wxStaticText* WxStaticText2 = new wxStaticText(this, wxID_ANY,
1123 wxT(RBUTIL_VERSION "\n" RBUTIL_DESCRIPTION "\n\n" RBUTIL_COPYRIGHT));
1124 WxStaticText2->Wrap(400);
1125 WxBoxSizer1->Add(WxStaticText2, 0, wxALL, 5);
1126
1127 wxHyperlinkCtrl* WxHyperlink1 = new wxHyperlinkCtrl(this, wxID_ANY,
1128 wxT(RBUTIL_WEBSITE), wxT(RBUTIL_WEBSITE) );
1129 WxBoxSizer1->Add(WxHyperlink1, 0, wxALL, 5);
1130
1131 wxStaticBox* WxStaticBox1 = new wxStaticBox(this, wxID_ANY, wxT("Contributors:"));
1132 wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBox1,
1133 wxVERTICAL);
1134 wxTextCtrl* WxTextCtrl1 = new wxTextCtrl(this, wxID_ANY, wxEmptyString,
1135 wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
1136
1137 long i = 0;
1138 while ( rbutil_developers[i] != wxT(""))
1139 {
1140 WxTextCtrl1->AppendText(rbutil_developers[i++]);
1141 WxTextCtrl1->AppendText(wxT("\n"));
1142 }
1143
1144 WxBoxSizer1->Add(WxStaticBoxSizer2, 1, wxGROW | wxALL, 5);
1145 WxStaticBoxSizer2->Add(WxTextCtrl1, 1, wxGROW | wxALL, 0);
1146
1147 wxStdDialogButtonSizer* WxStdDialogButtonSizer1 = new wxStdDialogButtonSizer();
1148 wxButton* WxOKButton = new wxButton(this, wxID_OK);
1149 WxStdDialogButtonSizer1->AddButton(WxOKButton);
1150 WxStdDialogButtonSizer1->Realize();
1151
1152 WxBoxSizer1->Add(WxStdDialogButtonSizer1, 0, wxALL | wxCENTER, 5);
1153
1154 GetSizer()->Fit(this);
1155 GetSizer()->SetSizeHints(this);
1156
1157//this->Center();
1158 this->Show();
1159
1160}
1161
1162AboutDlg::~AboutDlg()
1163{
1164}
diff --git a/rbutil/rbutilFrm.h b/rbutil/rbutilFrm.h
deleted file mode 100644
index 7341323bd9..0000000000
--- a/rbutil/rbutilFrm.h
+++ /dev/null
@@ -1,135 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: rbutilFrm.h
10 *
11 * Copyright (C) 2005 Christi Alice Scarborough
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#ifndef __rbutilFrm_HPP_
22#define __rbutilFrm_HPP_
23
24#include <wx/wxprec.h>
25#ifdef __BORLANDC__
26 #pragma hdrstop
27#endif
28#ifndef WX_PRECOMP
29 #include <wx/wx.h>
30#endif
31
32#include <wx/menu.h>
33#include <wx/stattext.h>
34#include <wx/bmpbuttn.h>
35#include <wx/statbmp.h>
36#include <wx/panel.h>
37
38#include <wx/frame.h>
39#include <wx/valgen.h>
40//#include <wx/aboutdlg.h>
41#include <wx/richtext/richtextctrl.h>
42
43#include "rbutil.h"
44#include "rbutilCtrls.h"
45
46
47class rbutilFrm : public wxFrame
48{
49private:
50 DECLARE_EVENT_TABLE()
51public:
52 rbutilFrm( wxWindow *parent, wxWindowID id = 1,
53 const wxString &title = wxT("Rockbox Utility"),
54 const wxPoint& pos = wxDefaultPosition,
55 const wxSize& size = wxDefaultSize,
56 long style = wxCAPTION | wxRESIZE_BORDER | wxSYSTEM_MENU |
57 wxMINIMIZE_BOX|wxMAXIMIZE_BOX | wxCLOSE_BOX);
58 virtual ~rbutilFrm();
59public:
60 DeviceSelectorCtrl* myDeviceSelector;
61 wxHyperlinkCtrl* manuallink;
62 wxHtmlWindow* manual;
63 wxString curManualDevice;
64
65 wxMenuBar *WxMenuBar1;
66 wxStaticText *WxStaticText3;
67 wxBitmapButton *WxBitmapButton2;
68 wxStaticText *WxStaticText2;
69 wxBitmapButton *WxBitmapButton1;
70 wxBitmapButton *WxBitmapButton3;
71 wxBitmapButton *WxBitmapButton4;
72 wxBitmapButton *WxBitmapButton5;
73 wxBitmapButton *WxBitmapButton6;
74 wxBitmapButton *WxBitmapButton7;
75 wxFlexGridSizer *WxFlexGridSizer1;
76 wxStaticBoxSizer *WxStaticBoxSizer3;
77 wxStaticBitmap *WxStaticBitmap1;
78 wxBoxSizer *WxBoxSizer2;
79 wxPanel *WxPanel1;
80 wxBoxSizer *WxBoxSizer1;
81public:
82 enum {
83 ID_FILE_MENU = 1033,
84 ID_FILE_EXIT = 1034,
85 ID_FILE_ABOUT = 1035,
86 ID_FILE_WIPECACHE = 1036,
87 ID_PORTABLE_INSTALL = 1037,
88
89 ID_WXSTATICTEXT3 = 1032,
90 ID_WXSTATICTEXT4 = 1032,
91 ID_REMOVE_BTN = 1039,
92 ID_BOOTLOADERREMOVE_BTN = 1038,
93 ID_WXSTATICTEXT2 = 1029,
94 ID_INSTALL_BTN = 1028,
95 ID_WXSTATICBITMAP1 = 1053,
96 ID_FONT_BTN = 1128,
97 ID_THEMES_BTN = 1139,
98 ID_DOOM_BTN = 1140,
99 ID_TALK_BTN = 1141,
100 ID_BOOTLOADER_BTN = 1129,
101 ID_WXPANEL1 = 1064,
102
103 ID_MANUAL = 1065,
104 ID_FILE_PROXY = 1066,
105
106 ID_DUMMY_VALUE_
107 }; //End of Enum
108public:
109 void rbutilFrmClose(wxCloseEvent& event);
110 void CreateGUIControls(void);
111 void OnFileExit(wxCommandEvent& event);
112 void OnFileAbout(wxCommandEvent &event);
113 void OnFileWipeCache(wxCommandEvent &event);
114 void OnLocationBtn(wxCommandEvent& event);
115 void OnInstallBtn(wxCommandEvent& event);
116 void OnRemoveBtn(wxCommandEvent& event);
117 void OnFontBtn(wxCommandEvent& event);
118 void OnThemesBtn(wxCommandEvent& event);
119 void OnBootloaderBtn(wxCommandEvent& event);
120 void OnPortableInstall(wxCommandEvent& event);
121 void OnBootloaderRemoveBtn(wxCommandEvent& event);
122 void OnManualUpdate(wxUpdateUIEvent& event);
123 void OnFileProxy(wxCommandEvent& event);
124 void OnDoomBtn(wxCommandEvent& event);
125 void OnTalkBtn(wxCommandEvent& event);
126
127 int GetDeviceId(bool);
128
129};
130
131#endif
132
133
134
135
diff --git a/rbutil/rbutilFrm_XPM.xpm b/rbutil/rbutilFrm_XPM.xpm
deleted file mode 100644
index 84d3d52444..0000000000
--- a/rbutil/rbutilFrm_XPM.xpm
+++ /dev/null
@@ -1,666 +0,0 @@
1/* rbutilFrm XPM */
2static char *rbutilFrm_XPM[]={
3"32 32 630 2",
4" c None",
5" 0 c #F7F8FD",
6" 1 c #EBEEF5",
7" 2 c #E4E9F8",
8" 3 c #FAFCFE",
9" 4 c #FAFBFD",
10" 5 c #7085D8",
11" 6 c #204DC6",
12" 7 c #2350C7",
13" 8 c #7C95D6",
14" 9 c #F3F7FD",
15" a c #8C9ED8",
16" b c #1F4FD1",
17" c c #2153D3",
18" d c #1645BF",
19" e c #001F94",
20" f c #687AB7",
21" g c #FFFFFE",
22" h c #FCFCFD",
23" i c #FDFDFE",
24" j c #FEFEFE",
25" k c #F4F6FC",
26" l c #F5F7FC",
27" m c #DEE2F6",
28" n c #2B54CF",
29" o c #1B4ECF",
30" p c #1B4AC5",
31" q c #153DB6",
32" r c #062793",
33" s c #7788B7",
34" t c #D5D8E0",
35" u c #DCDCE5",
36" v c #E4E2EB",
37" w c #E5E2E9",
38" x c #F4F4F6",
39" y c #F7F6F9",
40" z c #F9F9FA",
41" A c #FEFEFF",
42" B c #C6CDF0",
43" C c #6C86D4",
44" D c #6989D4",
45" E c #BECFED",
46" F c #F9FAFE",
47" G c #FEFFFF",
48" H c #7F96D4",
49" I c #0532B3",
50" J c #1342BC",
51" K c #1A48C2",
52" L c #072BA3",
53" M c #394C9D",
54" N c #CCBEBC",
55" O c #D7D0D0",
56" P c #C4C4CE",
57" Q c #B7BCC6",
58" R c #B4B9C4",
59" S c #C3C6D0",
60" T c #D1D3DE",
61" U c #D8DBE4",
62" V c #DDDFE3",
63" W c #9EA7D4",
64" X c #3559C6",
65" Y c #194BC4",
66" Z c #1240B9",
67" & c #002397",
68"0 c #8191C7",
69"00 c #FDFEFE",
70"01 c #EEF1F9",
71"02 c #3048A1",
72"03 c #4B5B9A",
73"04 c #4059A0",
74"05 c #0B288B",
75"06 c #16338B",
76"07 c #A8ADBE",
77"08 c #EDC5B8",
78"09 c #E5BDAD",
79"0a c #DAB6A6",
80"0b c #D5B6A7",
81"0c c #BDB0B3",
82"0d c #AEB2C0",
83"0e c #C7CBD7",
84"0f c #D3D7DE",
85"0g c #97A8C8",
86"0h c #2E50B9",
87"0i c #1D4ECC",
88"0j c #184AC6",
89"0k c #173EB1",
90"0l c #08248F",
91"0m c #000A5E",
92"0n c #E0E0EB",
93"0o c #F2F2F7",
94"0p c #B7B4CC",
95"0q c #FFFBFF",
96"0r c #CED1E1",
97"0s c #6B7588",
98"0t c #6179B2",
99"0u c #8198CD",
100"0v c #97A3D6",
101"0w c #9DAADB",
102"0x c #A5AED1",
103"0y c #C9C6D4",
104"0z c #C5BEC3",
105"0A c #C5CACC",
106"0B c #C2C3C9",
107"0C c #C7C5CA",
108"0D c #627BBC",
109"0E c #204CCC",
110"0F c #1949C5",
111"0G c #1746C1",
112"0H c #1439AB",
113"0I c #072282",
114"0J c #080D53",
115"0K c #CFCEE5",
116"0L c #FAF9F9",
117"0M c #F5F0F1",
118"0N c #F7F9FD",
119"0O c #BCBFCC",
120"0P c #A9B4CB",
121"0Q c #5474C9",
122"0R c #6B6F83",
123"0S c #757679",
124"0T c #6B738C",
125"0U c #6B78A2",
126"0V c #6E81B2",
127"0W c #778CB9",
128"0X c #8E9DCC",
129"0Y c #A3B2DD",
130"0Z c #AFB8D6",
131"0& c #2C4395",
132"1 c #082887",
133"10 c #0E3095",
134"11 c #0F33A7",
135"12 c #0C2C9C",
136"13 c #071A67",
137"14 c #191955",
138"15 c #BEBDD9",
139"16 c #EEEDF0",
140"17 c #F9F8FB",
141"18 c #D1D8E8",
142"19 c #BBBEC3",
143"1a c #889FE5",
144"1b c #5C6994",
145"1c c #918B6C",
146"1d c #8C886D",
147"1e c #8F846F",
148"1f c #8F8471",
149"1g c #878274",
150"1h c #7E7C79",
151"1i c #7B7B7E",
152"1j c #5268AC",
153"1k c #688AD7",
154"1l c #798699",
155"1m c #959AAC",
156"1n c #9FA9C8",
157"1o c #495181",
158"1p c #0B1765",
159"1q c #131455",
160"1r c #161547",
161"1s c #ACACC5",
162"1t c #FBFAFB",
163"1u c #EBE8ED",
164"1v c #F7F8FF",
165"1w c #B8BAC4",
166"1x c #ACB5CB",
167"1y c #5474C4",
168"1z c #7E7B73",
169"1A c #93896C",
170"1B c #8A836C",
171"1C c #8B846E",
172"1D c #918870",
173"1E c #928D70",
174"1F c #958D71",
175"1G c #968D73",
176"1H c #4D6AB1",
177"1I c #8399C5",
178"1J c #C4C0B8",
179"1K c #F8F7F7",
180"1L c #EDF4FF",
181"1M c #B0ABAA",
182"1N c #353448",
183"1O c #16134E",
184"1P c #161638",
185"1Q c #C5C5CC",
186"1R c #EAE5EB",
187"1S c #FAFBFF",
188"1T c #D9DBED",
189"1U c #B6B6BA",
190"1V c #7F94D5",
191"1W c #576895",
192"1X c #98896B",
193"1Y c #96886C",
194"1Z c #95886B",
195"1& c #93896D",
196"2 c #8F8672",
197"20 c #8A8673",
198"21 c #948F6F",
199"22 c #768092",
200"23 c #5B7DD7",
201"24 c #B3B5B8",
202"25 c #D1CFD3",
203"26 c #F7FFFF",
204"27 c #C9D0DF",
205"28 c #A09088",
206"29 c #5B5255",
207"2a c #3B3852",
208"2b c #94949D",
209"2c c #F8F8F9",
210"2d c #EFEEF5",
211"2e c #F5F9FF",
212"2f c #B3B4C0",
213"2g c #A0A9B2",
214"2h c #4D78EB",
215"2i c #3C63D6",
216"2j c #5D72B4",
217"2k c #6576A3",
218"2l c #707B91",
219"2m c #827F86",
220"2n c #887F7B",
221"2o c #8B8071",
222"2p c #918871",
223"2q c #5873B6",
224"2r c #91A3D4",
225"2s c #B9B7B5",
226"2t c #EAF0F5",
227"2u c #E8F2FC",
228"2v c #B1AFBA",
229"2w c #84736E",
230"2x c #93807A",
231"2y c #665E65",
232"2z c #D8D9E2",
233"2A c #EAEAEF",
234"2B c #F8FAFE",
235"2C c #D4DEF0",
236"2D c #9C9C9F",
237"2E c #6D81BE",
238"2F c #436EE8",
239"2G c #5E87ED",
240"2H c #3867DA",
241"2I c #4069DB",
242"2J c #456CDF",
243"2K c #4261D2",
244"2L c #4663C3",
245"2M c #5871BC",
246"2N c #5C73B8",
247"2O c #5D80D7",
248"2P c #B2B6BB",
249"2Q c #C3C3CE",
250"2R c #FCFFFF",
251"2S c #CFD9E9",
252"2T c #9C8F8E",
253"2U c #7C6E66",
254"2V c #927C7C",
255"2W c #83819D",
256"2X c #FCFCFF",
257"2Y c #F9F6FA",
258"2Z c #ECEBF1",
259"2& c #FBFFFF",
260"3 c #B9BCC9",
261"30 c #AAB0C3",
262"31 c #4870EB",
263"32 c #2B5DE1",
264"33 c #4F72CE",
265"34 c #3C62CB",
266"35 c #4E73D6",
267"36 c #5777DA",
268"37 c #456ED4",
269"38 c #7393E1",
270"39 c #4D77F4",
271"3a c #3060F1",
272"3b c #7C94C8",
273"3c c #A8A6A6",
274"3d c #E6E9EF",
275"3e c #EDFAFF",
276"3f c #BBBDC7",
277"3g c #8C7A74",
278"3h c #827670",
279"3i c #90847E",
280"3j c #ECECF0",
281"3k c #ECE5EC",
282"3l c #DAE0EF",
283"3m c #ACB0B3",
284"3n c #869EDC",
285"3o c #577EDE",
286"3p c #B0C0E7",
287"3q c #EFF4FF",
288"3r c #E4EAFF",
289"3s c #9EC0FC",
290"3t c #3265E4",
291"3u c #3366E5",
292"3v c #4871DC",
293"3w c #3660DB",
294"3x c #5075E7",
295"3y c #8C9097",
296"3z c #B3B4B6",
297"3A c #D8E4F1",
298"3B c #A89A92",
299"3C c #837069",
300"3D c #91817A",
301"3E c #E0DDD8",
302"3F c #F8F5F6",
303"3G c #F6F2F2",
304"3H c #B9BCC7",
305"3I c #A8ACC0",
306"3J c #BBCCEC",
307"3K c #F8F9FA",
308"3L c #DCD3CD",
309"3M c #EEECEF",
310"3N c #D9D8D9",
311"3O c #E2E4DB",
312"3P c #A4BADE",
313"3Q c #3161E4",
314"3R c #5F85F4",
315"3S c #6387ED",
316"3T c #8597D5",
317"3U c #A4A8AA",
318"3V c #DEE2E9",
319"3W c #F4FFFF",
320"3X c #BEC3CC",
321"3Y c #8D7C6F",
322"3Z c #7A6D65",
323"3& c #A2928E",
324"4 c #FDFBFB",
325"40 c #FCFCFE",
326"41 c #D1D6EB",
327"42 c #F7FAFD",
328"43 c #B2B4C6",
329"44 c #D0D4E4",
330"45 c #F9FCFF",
331"46 c #E7EBF4",
332"47 c #C3C4CE",
333"48 c #B6B3C1",
334"49 c #989BA1",
335"4a c #E7E7E4",
336"4b c #E9ECF7",
337"4c c #3B61D1",
338"4d c #92A0D0",
339"4e c #C7CACC",
340"4f c #A0A6B2",
341"4g c #B2B4BA",
342"4h c #FAFFFF",
343"4i c #E2EAF6",
344"4j c #A9A3A4",
345"4k c #7F6F64",
346"4l c #85776E",
347"4m c #CAC4C0",
348"4n c #EAEDFA",
349"4o c #5A80EA",
350"4p c #2D64E7",
351"4q c #4778E8",
352"4r c #788FC7",
353"4s c #B4B7CA",
354"4t c #CBCCD7",
355"4u c #E7EAE9",
356"4v c #C6CDD5",
357"4w c #AEB3B9",
358"4x c #8A8C8B",
359"4y c #C0C5C5",
360"4z c #B8C4E3",
361"4A c #2859CF",
362"4B c #2855CD",
363"4C c #7989A5",
364"4D c #A4A69F",
365"4E c #D6DAE0",
366"4F c #CBD1DD",
367"4G c #938781",
368"4H c #84756D",
369"4I c #9B8985",
370"4J c #F6F3F2",
371"4K c #F7F9FE",
372"4L c #5C7CE7",
373"4M c #205CF1",
374"4N c #1C5DEA",
375"4O c #0641C7",
376"4P c #072DAA",
377"4Q c #8593C5",
378"4R c #B1B1B5",
379"4S c #BCC0C2",
380"4T c #F7FBFD",
381"4U c #E3E3E1",
382"4V c #C6BCA9",
383"4W c #AAB4CC",
384"4X c #4168D4",
385"4Y c #7AA1DF",
386"4Z c #9AB2E2",
387"4& c #A4ADBD",
388"5 c #BDB8BB",
389"50 c #E8F4FE",
390"51 c #B5B2B9",
391"52 c #82736C",
392"53 c #817770",
393"54 c #BFB4B2",
394"55 c #FFFEFE",
395"56 c #9FB3ED",
396"57 c #1857E7",
397"58 c #185ADE",
398"59 c #1656DD",
399"5a c #1244C2",
400"5b c #112D9F",
401"5c c #959EC7",
402"5d c #D0D1D3",
403"5e c #A7AFB2",
404"5f c #ACAEB5",
405"5g c #B5B2B6",
406"5h c #B0AEB5",
407"5i c #948C8B",
408"5j c #8990B2",
409"5k c #7792D9",
410"5l c #ABABB5",
411"5m c #BAB5B4",
412"5n c #8B95AE",
413"5o c #A8B1D8",
414"5p c #E7EEFF",
415"5q c #D7DEE7",
416"5r c #9E918A",
417"5s c #80736A",
418"5t c #898078",
419"5u c #EBE9E8",
420"5v c #EEF1FA",
421"5w c #3262E5",
422"5x c #1457E6",
423"5y c #1653D9",
424"5z c #1852D7",
425"5A c #1039BB",
426"5B c #2E46A6",
427"5C c #BDC4CB",
428"5D c #CECDD4",
429"5E c #AEB4BF",
430"5F c #A2A6B2",
431"5G c #A4A3A7",
432"5H c #ABADB5",
433"5I c #C1C1CF",
434"5J c #D4D0DE",
435"5K c #DBD8E5",
436"5L c #B7BAC3",
437"5M c #586DB4",
438"5N c #2A5BD4",
439"5O c #2457CF",
440"5P c #375FCF",
441"5Q c #6F7AB3",
442"5R c #8C7C77",
443"5S c #928274",
444"5T c #B4A6A2",
445"5U c #FDFDFD",
446"5V c #A6B3EA",
447"5W c #1037B9",
448"5X c #1C4CD1",
449"5Y c #1E53DC",
450"5Z c #1547CB",
451"5& c #1331A4",
452"6 c #7788BA",
453"60 c #CBCBD3",
454"61 c #C6C6D4",
455"62 c #BABDCA",
456"63 c #B5B9C7",
457"64 c #BABDC7",
458"65 c #AEB4C0",
459"66 c #C8BBC1",
460"67 c #C5BDC7",
461"68 c #CDCDD0",
462"69 c #6C7AB2",
463"6a c #204ED0",
464"6b c #1E53D9",
465"6c c #164BC8",
466"6d c #0C33B1",
467"6e c #001B87",
468"6f c #3F4877",
469"6g c #8A7971",
470"6h c #E2DDDA",
471"6i c #4B5DA9",
472"6j c #02126B",
473"6k c #0F2079",
474"6l c #152C8F",
475"6m c #0B2596",
476"6n c #3A4CA9",
477"6o c #CBCED8",
478"6p c #CFD2D5",
479"6q c #CAD2D9",
480"6r c #D1D1D8",
481"6s c #DBCECD",
482"6t c #C5C2CF",
483"6u c #C3C3D2",
484"6v c #CBC5CD",
485"6w c #D6D5DF",
486"6x c #A5AFC9",
487"6y c #2B4DB9",
488"6z c #1B50D9",
489"6A c #174AC5",
490"6B c #1547BF",
491"6C c #1636AA",
492"6D c #031D7B",
493"6E c #192066",
494"6F c #9A8F99",
495"6G c #FDFCFC",
496"6H c #6778B7",
497"6I c #001B72",
498"6J c #041E7A",
499"6K c #00166D",
500"6L c #000F66",
501"6M c #1D2364",
502"6N c #908886",
503"6O c #B4A89F",
504"6P c #C1B7B3",
505"6Q c #DDD6D4",
506"6R c #EBE2DB",
507"6S c #E2DFE4",
508"6T c #E7E7F3",
509"6U c #D4D6E2",
510"6V c #E9D2C8",
511"6W c #6A7AA7",
512"6X c #1549C7",
513"6Y c #184AC8",
514"6Z c #1545C2",
515"6& c #1544BD",
516"7 c #0F309F",
517"70 c #05196E",
518"71 c #231F64",
519"72 c #C6C1C9",
520"73 c #AAB6E3",
521"74 c #001D80",
522"75 c #102874",
523"76 c #27397E",
524"77 c #162769",
525"78 c #21274C",
526"79 c #393D43",
527"7a c #6F695C",
528"7b c #897C73",
529"7c c #7A6D69",
530"7d c #96827C",
531"7e c #AA958B",
532"7f c #BFB1AC",
533"7g c #DBCFC9",
534"7h c #DFD4D1",
535"7i c #344B90",
536"7j c #0B38B0",
537"7k c #1A46BF",
538"7l c #1A4AC3",
539"7m c #123FB6",
540"7n c #08288F",
541"7o c #08115A",
542"7p c #3E3B6F",
543"7q c #F7F7F7",
544"7r c #E1E6F7",
545"7s c #04228A",
546"7t c #131C4C",
547"7u c #74696C",
548"7v c #847675",
549"7w c #897872",
550"7x c #766B61",
551"7y c #6C625B",
552"7z c #675E57",
553"7A c #46463B",
554"7B c #595645",
555"7C c #645F4B",
556"7D c #7A6C60",
557"7E c #615249",
558"7F c #2D2E34",
559"7G c #0D1C65",
560"7H c #0D155F",
561"7I c #17236A",
562"7J c #172B7C",
563"7K c #0B2582",
564"7L c #081C6E",
565"7M c #11104A",
566"7N c #65678F",
567"7O c #B4C0E3",
568"7P c #4A5B97",
569"7Q c #6976AA",
570"7R c #8283A2",
571"7S c #807B88",
572"7T c #80767D",
573"7U c #9D8A84",
574"7V c #928075",
575"7W c #8E7D73",
576"7X c #746C61",
577"7Y c #605D4F",
578"7Z c #625E51",
579"7& c #594F48",
580"8 c #332F34",
581"80 c #1B1E58",
582"81 c #110C4C",
583"82 c #120D3F",
584"83 c #15103F",
585"84 c #16123D",
586"85 c #22225B",
587"86 c #8081A9",
588"87 c #F8FCFF",
589"88 c #E6EBF9",
590"89 c #D5DBEF",
591"8a c #D5DAE8",
592"8b c #E7E5E7",
593"8c c #EAE3DF",
594"8d c #D2CAC5",
595"8e c #BBACA8",
596"8f c #AA938F",
597"8g c #948079",
598"8h c #927D76",
599"8i c #9C857A",
600"8j c #766F73",
601"8k c #524F6B",
602"8l c #332F5D",
603"8m c #171656",
604"8n c #17154A",
605"8o c #1A1744",
606"8p c #282E71",
607"8q c #D3D5E3",
608"8r c #FBFAFA",
609"8s c #FBFAF9",
610"8t c #F0EDED",
611"8u c #DAD3CF",
612"8v c #C1B7AF",
613"8w c #968F8B",
614"8x c #7E736F",
615"8y c #8A7570",
616"8z c #55506E",
617"8A c #151C6A",
618"8B c #151964",
619"8C c #30378A",
620"8D c #EDEFF6",
621"8E c #F0F3F9",
622"8F c #9FA9C6",
623"8G c #9396B4",
624"8H c #455687",
625"8I c #071F7B",
626"8J c #00106C",
627"8K c #7C81B7",
628"8L c #F9FAFC",
629"8M c #F6F7FD",
630"8N c #EFF2F9",
631"8O c #B8C1DD",
632"8P c #939FCA",
633"8Q c #F7F7FB",
634" 0 1 2 3 ",
635" 4 5 6 7 8 9 ",
636" a b c d e f g h i j j k l j ",
637" m n o p q r s t u v w x y z g A B C D E F ",
638" G H I J K L M N O P Q R S T U V W X Y Z &0 00",
639" 0102030405060708090a0b0c0d0e0f0g0h0i0j0k0l0m0n",
640" 0o0p0q0r0s0t0u0v0w0x0y0z0A0B0C0D0E0F0G0H0I0J0K",
641" 0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0&1 101112131415",
642" j161718191a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s",
643" 1t1u1v1w1x1y1z1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q",
644" 1R1S1T1U1V1W1X1Y1Z1&2 202122232425262728292a2b j",
645" 2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z ",
646" j2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X ",
647" 2Y2Z2&3 303132333435363738393a3b3c3d3e3f3g3h3i3j ",
648" j3k 3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z2&3A3B3C3D3E ",
649" 3F3G G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3&4 ",
650" 4041423d434445464748494a4b4c4d4e4f4g4h4i4j4k4l4m ",
651" 4n4o4p4q4r4s4t4u4v4w4x4y 4z4A4B4C4D4E4h4F4G4H4I4J ",
652" 4K4L4M4N4O4P4Q4R4S 4T4U4V4W4X4Y4Z4&5 3K505152535455 ",
653" j565758595a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u ",
654" 5v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U ",
655" 5V5W5X5Y5Z5&6 606162636465666768696a6b6c6d6e6f6g6h ",
656" 6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G ",
657" 6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6&7 707172 ",
658" 737475767778797a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q ",
659" 7r7s7t7u7v7w7x7y7z7A7B7C7D7E7F7G7H7I7J7K7L7M7N j ",
660" A7O7P7Q7R7S7T7U7V7W7X7Y7Z7&8 8081828384848586 i ",
661" A 48788898a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q ",
662" j8r8s8t8u8v8w8x8y8z8A8B8C8D ",
663" 8E8F8G8H8I8J8K8L ",
664" A8M8N8O8P8Q ",
665" "};
666
diff --git a/rbutil/mksums.pl b/rbutil/rbutilqt/irivertools/mksums.pl
index 99786fe161..99786fe161 100755
--- a/rbutil/mksums.pl
+++ b/rbutil/rbutilqt/irivertools/mksums.pl
diff --git a/rbutil/talkfile.cpp b/rbutil/talkfile.cpp
deleted file mode 100644
index 345b327802..0000000000
--- a/rbutil/talkfile.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: tts.cpp
10 *
11 * Copyright (C) 2007 Dominik wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "talkfile.h"
22
23TalkFileCreator::TalkFileCreator()
24{
25 m_supportedTTS.Add(wxT("espeak"));
26 m_supportedTTSOpts.Add(wxT(""));
27
28 m_supportedEnc.Add(wxT("lame"));
29 m_supportedEncOpts.Add(wxT("--vbr-new -t --nores -S"));
30
31}
32
33bool TalkFileCreator::initEncoder()
34{
35 if(::wxFileExists(m_EncExec))
36 {
37 return true;
38 }
39 else
40 {
41 return false;
42 }
43}
44
45bool TalkFileCreator::initTTS()
46{
47 if(::wxFileExists(m_TTSexec))
48 {
49 return true;
50 }
51 else
52 {
53 return false;
54 }
55}
56
57bool TalkFileCreator::createTalkFiles()
58{
59 if(!initTTS())
60 {
61 MESG_DIALOG(wxT("Init of TTS engine failed") );
62 return false;
63 }
64 if(!initEncoder())
65 {
66 MESG_DIALOG(wxT("Init of encoder failed") );
67 return false;
68 }
69
70 // enumerate the dirs
71 wxDir talkdir(m_dir);
72 TalkTraverser traverser(this);
73 if(talkdir.Traverse(traverser) == (size_t)-1)
74 return false;
75 else
76 return true;
77
78
79}
80
81bool TalkFileCreator::voice(wxString text,wxString wavfile)
82{
83 if(m_curTTS == wxT("espeak"))
84 {
85 wxArrayString out;
86 wxArrayString err;
87 wxExecute(m_TTSexec+wxT(" ")+m_TTSOpts+wxT(" -w \"")+wavfile+wxT("\" \"")+text+wxT("\""),out,err);
88 return true;
89 }
90 else
91 {
92 MESG_DIALOG(wxT("Unsupported TTS engine") );
93 return false;
94 }
95}
96
97bool TalkFileCreator::encode(wxString input,wxString output)
98{
99 if(m_curEnc == wxT("lame"))
100 {
101 wxArrayString out;
102 wxArrayString err;
103 wxExecute(m_EncExec+wxT(" ")+m_EncOpts+wxT(" \"")+input+wxT("\" \"")+output+wxT("\""),out,err);
104 return true;
105 }
106 else
107 {
108 MESG_DIALOG(wxT("Unsupported encoder") );
109 return false;
110 }
111
112}
113
114wxString TalkFileCreator::getTTsOpts(wxString ttsname)
115{
116 int index = m_supportedTTS.Index(ttsname);
117
118 return m_supportedTTSOpts[index];
119}
120
121wxString TalkFileCreator::getEncOpts(wxString encname)
122{
123 int index = m_supportedEnc.Index(encname);
124
125 return m_supportedEncOpts[index];
126}
127
128wxDirTraverseResult TalkTraverser::OnFile(const wxString& file)
129{
130 if(file.EndsWith(wxT(".talk")) || file.EndsWith(wxT(".talk.wav")))
131 {
132 return wxDIR_CONTINUE;
133 }
134
135 wxFileName fname(file);
136 wxString toSpeak;
137 if(m_talkcreator->m_stripExtensions)
138 {
139 toSpeak = fname.GetName();
140 }
141 else
142 {
143 toSpeak = fname.GetName()+fname.GetExt();
144 }
145 wxString filename = file+ wxT(".talk");
146 wxString wavname = filename + wxT(".wav");
147
148 if(!wxFileExists(filename) || m_talkcreator->m_overwriteTalk)
149 {
150 if(!wxFileExists(wavname) || m_talkcreator->m_overwriteWav)
151 {
152 if(!m_talkcreator->voice(toSpeak,wavname))
153 {
154 return wxDIR_STOP;
155 }
156 }
157 if(!m_talkcreator->encode(wavname,filename))
158 {
159 return wxDIR_STOP;
160 }
161 }
162
163 if(m_talkcreator->m_removeWav)
164 {
165 wxRemoveFile(wavname);
166 }
167
168 return wxDIR_CONTINUE;
169}
170
171wxDirTraverseResult TalkTraverser::OnDir(const wxString& dirname)
172{
173 wxFileName fname(dirname,wxEmptyString);
174 wxArrayString dirs=fname.GetDirs();
175 wxString toSpeak = dirs[dirs.GetCount()-1];
176
177 wxString filename = dirname + wxT("" PATH_SEP "_dirname.talk");
178 wxString wavname = filename + wxT(".wav");
179
180 if(!wxFileExists(filename) || m_talkcreator->m_overwriteTalk)
181 {
182 if(!wxFileExists(wavname) || m_talkcreator->m_overwriteWav)
183 {
184 if(!m_talkcreator->voice(toSpeak,wavname))
185 {
186 return wxDIR_STOP;
187 }
188 }
189 if(!m_talkcreator->encode(wavname,filename))
190 {
191 return wxDIR_STOP;
192 }
193 }
194
195 if(m_talkcreator->m_removeWav)
196 {
197 wxRemoveFile(wavname);
198 }
199
200 if(!m_talkcreator->m_recursive)
201 return wxDIR_IGNORE;
202 else
203 return wxDIR_CONTINUE;
204}
diff --git a/rbutil/talkfile.h b/rbutil/talkfile.h
deleted file mode 100644
index 9d6d28a2fe..0000000000
--- a/rbutil/talkfile.h
+++ /dev/null
@@ -1,101 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: tts.h
10 *
11 * Copyright (C) 2007 Dominik wenger
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21
22#ifndef _TALKFILE_H
23#define _TALKFILE_H
24
25#include "rbutil.h"
26
27class TalkFileCreator
28{
29 friend class TalkTraverser;
30public:
31 TalkFileCreator();
32 ~TalkFileCreator() {};
33
34 bool createTalkFiles();
35
36 void setTTSexe(wxString exe){m_TTSexec=exe;}
37 void setEncexe(wxString exe){m_EncExec=exe;}
38
39 wxArrayString getSupportedTTS(){return m_supportedTTS;}
40 void setTTsType(wxString tts) {m_curTTS = tts; }
41 wxString getTTsOpts(wxString ttsname);
42 void setTTsOpts(wxString opts) {m_TTSOpts=opts;}
43
44 wxArrayString getSupportedEnc(){return m_supportedEnc;}
45 void setEncType(wxString enc) {m_curEnc =enc; }
46 wxString getEncOpts(wxString encname);
47 void setEncOpts(wxString opts) {m_EncOpts=opts;}
48
49 void setDir(wxString dir){m_dir = dir; }
50
51 void setOverwriteTalk(bool ov) {m_overwriteTalk = ov;}
52 void setOverwriteWav(bool ov) {m_overwriteWav = ov;}
53 void setRemoveWav(bool ov) {m_removeWav = ov;}
54 void setRecursive(bool ov) {m_recursive = ov;}
55 void setStripExtensions(bool ov) {m_stripExtensions = ov;}
56
57private:
58
59 bool initTTS();
60 bool stopTTS();
61 bool initEncoder();
62
63 bool encode(wxString input,wxString output);
64 bool voice(wxString text,wxString wavfile);
65
66 wxString m_dir;
67
68 wxString m_curTTS;
69 wxString m_TTSexec;
70 wxArrayString m_supportedTTS;
71 wxArrayString m_supportedTTSOpts;
72 wxString m_TTSOpts;
73
74 wxString m_curEnc;
75 wxString m_EncExec;
76 wxArrayString m_supportedEnc;
77 wxArrayString m_supportedEncOpts;
78 wxString m_EncOpts;
79
80 bool m_overwriteTalk;
81 bool m_overwriteWav;
82 bool m_removeWav;
83 bool m_recursive;
84 bool m_stripExtensions;
85};
86
87
88class TalkTraverser: public wxDirTraverser
89{
90 public:
91 TalkTraverser(TalkFileCreator* talkcreator) : m_talkcreator(talkcreator) { }
92
93 virtual wxDirTraverseResult OnFile(const wxString& filename);
94
95 virtual wxDirTraverseResult OnDir(const wxString& dirname);
96
97 private:
98 TalkFileCreator* m_talkcreator;
99};
100
101#endif
diff --git a/rbutil/wizard.xpm b/rbutil/wizard.xpm
deleted file mode 100644
index d19402a414..0000000000
--- a/rbutil/wizard.xpm
+++ /dev/null
@@ -1,689 +0,0 @@
1/* XPM */
2static char * wizard_xpm[] = {
3"200 430 256 2",
4" c #040B0E",
5". c #0B080D",
6"+ c #090B07",
7"@ c #030D15",
8"# c #140F0D",
9"$ c #0D1214",
10"% c #071515",
11"& c #0A1319",
12"* c #181008",
13"= c #09141E",
14"- c #081424",
15"; c #101411",
16"> c #14140B",
17", c #061630",
18"' c #1C1406",
19") c #0F1B1E",
20"! c #061A3D",
21"~ c #151A1F",
22"{ c #101C26",
23"] c #161D16",
24"^ c #1B1B16",
25"/ c #211911",
26"( c #131D2F",
27"_ c #251B0C",
28": c #0F202F",
29"< c #171C31",
30"[ c #142225",
31"} c #13222B",
32"| c #10223D",
33"1 c #0A234C",
34"2 c #0F214C",
35"3 c #2B1F0B",
36"4 c #0E2447",
37"5 c #172832",
38"6 c #152838",
39"7 c #11294B",
40"8 c #18264A",
41"9 c #122755",
42"0 c #1A2B2E",
43"a c #1D283B",
44"b c #0E2B54",
45"c c #1E2D24",
46"d c #312711",
47"e c #102D4C",
48"f c #372511",
49"g c #272A2D",
50"h c #292B25",
51"i c #172E46",
52"j c #1C2F38",
53"k c #1A2F3F",
54"l c #34291C",
55"m c #3C2B0F",
56"n c #342C27",
57"o c #422B11",
58"p c #1C3645",
59"q c #0F3864",
60"r c #223448",
61"s c #18395A",
62"t c #223942",
63"u c #233A3C",
64"v c #1D3A52",
65"w c #40341E",
66"x c #4A3113",
67"y c #32373B",
68"z c #463415",
69"A c #2C3C31",
70"B c #203D4D",
71"C c #353831",
72"D c #4C3811",
73"E c #4D3A0C",
74"F c #164770",
75"G c #244558",
76"H c #0E4A81",
77"I c #1E486B",
78"J c #064E8D",
79"K c #2A484E",
80"L c #024F96",
81"M c #284855",
82"N c #2E4846",
83"O c #264862",
84"P c #334A3E",
85"Q c #584117",
86"R c #4A4531",
87"S c #2A4D5F",
88"T c #3F4841",
89"U c #574220",
90"V c #464540",
91"W c #3F484B",
92"X c #57471C",
93"Y c #554729",
94"Z c #564824",
95"` c #23577E",
96" . c #345764",
97".. c #335769",
98"+. c #315770",
99"@. c #5F4F25",
100"#. c #39595C",
101"$. c #5F4F2B",
102"%. c #625020",
103"&. c #694C24",
104"*. c #664E24",
105"=. c #644E2C",
106"-. c #4A5457",
107";. c #68501C",
108">. c #46584F",
109",. c #605133",
110"'. c #644F33",
111"). c #5C5435",
112"!. c #5E523F",
113"~. c #475D46",
114"{. c #6D5318",
115"]. c #66542A",
116"^. c #535752",
117"/. c #645530",
118"(. c #5A5743",
119"_. c #29638D",
120":. c #59584B",
121"<. c #3E6678",
122"[. c #5D5F4B",
123"}. c #406774",
124"|. c #36688B",
125"1. c #5C6052",
126"2. c #3D6782",
127"3. c #45686C",
128"4. c #306B96",
129"5. c #4D695D",
130"6. c #60605B",
131"7. c #775F23",
132"8. c #416597",
133"9. c #646053",
134"0. c #5C6359",
135"a. c #6E5F3E",
136"b. c #79601E",
137"c. c #76602F",
138"d. c #516D59",
139"e. c #5C6661",
140"f. c #556870",
141"g. c #6C6350",
142"h. c #62676C",
143"i. c #5C6B6B",
144"j. c #3A75A5",
145"k. c #3E769F",
146"l. c #457599",
147"m. c #5B7181",
148"n. c #497792",
149"o. c #53777A",
150"p. c #517492",
151"q. c #5E727A",
152"r. c #57796B",
153"s. c #547684",
154"t. c #50778A",
155"u. c #66726A",
156"v. c #896D2B",
157"w. c #5A758A",
158"x. c #736F6A",
159"y. c #8F6C33",
160"z. c #836E4C",
161"A. c #8A7034",
162"B. c #877041",
163"C. c #8A713B",
164"D. c #906E41",
165"E. c #4882AE",
166"F. c #5482A2",
167"G. c #93753E",
168"H. c #598299",
169"I. c #907935",
170"J. c #90793B",
171"K. c #618099",
172"L. c #917A43",
173"M. c #5F868D",
174"N. c #6B8282",
175"O. c #917A49",
176"P. c #648782",
177"Q. c #628593",
178"R. c #8E7C52",
179"S. c #508AB5",
180"T. c #6C848E",
181"U. c #897E66",
182"V. c #5C8AAB",
183"W. c #618AA2",
184"X. c #7C8689",
185"Y. c #88887E",
186"Z. c #6093B9",
187"`. c #6694B3",
188" + c #6994AC",
189".+ c #8B8F75",
190"++ c #6C989E",
191"@+ c #7492AC",
192"#+ c #709995",
193"$+ c #6E98A5",
194"%+ c #7E949F",
195"&+ c #7996A5",
196"*+ c #829593",
197"=+ c #699CC1",
198"-+ c #679EBC",
199";+ c #7498B9",
200">+ c #6E9CB4",
201",+ c #6E9CBB",
202"'+ c #6EA5C4",
203")+ c #73A4BD",
204"!+ c #70A4CA",
205"~+ c #76A3C3",
206"{+ c #7CA8B9",
207"]+ c #85A6B9",
208"^+ c #77ADCA",
209"/+ c #96A5A5",
210"(+ c #78ACD2",
211"_+ c #7FABCA",
212":+ c #8DAEAA",
213"<+ c #8AABC9",
214"[+ c #7CB4D9",
215"}+ c #85B2D3",
216"|+ c #7EB6D5",
217"1+ c #90B0CD",
218"2+ c #8EB6D1",
219"3+ c #8FB8C9",
220"4+ c #87BBD4",
221"5+ c #82BEE3",
222"6+ c #85BEDD",
223"7+ c #8FBCDD",
224"8+ c #8DC5E5",
225"9+ c #94C2E3",
226"0+ c #88C8E6",
227"a+ c #A2C1D1",
228"b+ c #94C6DF",
229"c+ c #8EC9E1",
230"d+ c #9DC7CC",
231"e+ c #96C8DA",
232"f+ c #8FD0ED",
233"g+ c #9ACDE8",
234"h+ c #8ED3EA",
235"i+ c #95D0E9",
236"j+ c #A0CBEA",
237"k+ c #9AD1E3",
238"l+ c #A2CEE1",
239"m+ c #95DAF1",
240"n+ c #A2D4EE",
241"o+ c #9DD8F0",
242"p+ c #9CDBEC",
243"q+ c #A4DAEC",
244"r+ c #A7DAE6",
245"s+ c #A3E3F5",
246"t+ c #AAE1F3",
247"u+ c #ADE3E9",
248"v+ c #A9E4EF",
249"w+ c #B6E3F8",
250"x+ c #AAEAFB",
251"y+ c #B3E9FC",
252"z+ c #C6E8DE",
253"A+ c #BBE9FD",
254"B+ c #BAF0FC",
255"C+ c #C2F7FD",
256"D+ c #CBFDFC",
257"E+ c #D6FFFA",
258"F+ c #E1FFFC",
259"G+ c #EEFFFE",
260"Q.Q.$+Q.Q.Q.Q.Q.Q.Q.s.s.s.}.s.s.M.M.}...+.O O O r e e 8 7 | | | ( ( | a { ) % & ~ ) ~ ) ) ) & ~ [ [ [ u N r.d.P c [ 0 j u M <.n.F.V.V.V.V.F.F.F.F.F.F.F.p.F.n.l.l.p.p.n.p.p.p.p.n.n.p.2.2.2.n.2.n.2.n.n.n.n.t.n.n.n.n.n.n.n.F.H.H.H.W.W.`. +>+ +>+-+`.-+-+=+Z.`.,+=+=+=+Z.=+=+=+;+;+!+,+,+~+~+~+~+~+~+~+~+~+_+~+_+_+~+_+_+_+_+_+_+_+_+_+_+_+_+_+_+(+_+_+_+_+_+(+_+_+(+(+_+_+_+_+_+(+(+(+(+(+(+(+(+(+(+(+(+_+(+_+",
261"3.r.o.o.o.r.o.o.o.o.r.3.#.3.#.3.3.3.f.+.m.<.2.O +.O H 8.8.F I s s e e i | < - - - = = ( = = & { ~ $ = ) c N A c ) ) { : k B ..p.V.V.V.@+K.V.V.W.Q.W.W.H.F.H.F.V.F.F.F.F.F.F.F.F.K.F.l.n.n.n.l.l.|.n.n.2.n.n.t.2.p.n.n.n.n.n.t.n.n.H.F.H.H.H.W.W.W.W.>+>+`.`.Z.`.`.-+,+=+;+Z.;+=+=+=+=+=+=+=+-+,+,+~+'+'+'+'+'+)+~+'+^+'+~+~+~+_+~+(+!+(+!+_+!+_+^+^+(+^+(+^+(+_+(+(+_+_+(+(+(+(+(+_+<+(+(+(+_+_+_+_+(+(+<+(+<+(+",
262"K N N N N P #.P P #.P #.N K K M N . .+.<.m.f.+.+.p.p.p.p.p.8.|.2.` ` I v e < | < , ( < ( ( ~ = { ~ ) = [ [ [ % % = ( ( a B -.p.V.`.Z.Z.;+@+W.Q.Q.M.W.Q.W.W.H.W.V.W.K.W.W.V.H.F.F.V.F.H.n.n.n.n.n.n.n.n.n.n.n.n.n.n.t.n.n.t.t.n.n.n.n.n.n.H.H.W.W.H.H.W.W.W.`.V.-+`. +Z.Z.=+=+=+!+=+=+-+`.=+=+=+-+-+`.,+,+>+)+>+~+;+_+!+~+~+!+!+~+~+~+~+!+~+!+!+~+'+!+'+!+'+'+'+'+~+!+'+'+~+~+~+!+!+!+!+;+(+!+!+!+~+~+!+!+!+!+!+",
263"p t p j 5 0 c 0 j c u c u N t K M B G +.+.<.+.m.+.8.S.;+K.K.p.p.p.p.p.p.8.+.I I s s e e | : ( ( { - { { : : { & = { ( a r r O p.V.V.W. +`.W.++o.o.o.o.M.o.M.M.Q.Q.W.W.W.W.W.W.V.@+H.W.F.W.H.F.F.F.F.n.F.n.H.n.n.n.n.n.n.n.n.}.n.n.n.n.n.n.n.n.n.H.n.H.H.W.W.W.H.W.W.W.W.W. +>+,+-+-+-+=+=+Z.Z.`.Z.`.=+=+,+=+;+,+,+=+,+,+!+'+,+,+!+!+=+!+~+!+;+=+;+=+!+!+~+~+!+~+=+=+=+~+,+=+!+=+!+;+!+!+!+~+'+'+!+!+!+(+!+!+!+!+",
264"+.B p i | : ( ( { } ) [ [ 0 u u t G S +.2.p.2.2.p.p.K. +W.H.K.K.p.p.p.p.p.p.p.8.+.8.I O O v v 7 a | | < | | | - , , a i r G +.p.F.Z.V. + +Q.o.#.#.#.5.3.3.3.o.o.s.Q.Q.H.Q.W.Q.V.W.Q.W.W.V.H.V.F.F.V.H.W.F.W.H.F.H.l.n.n.n.n.n.n.k.l.l.H.n.n.n.n.n.F.n.n.H.n.H.M.n.W.W.W.W.-+W.-+W.>+W.`.`.`.`.`.`.`.Z.`.`.Z.Z.`.`.,+`.`.,+,+,+,+=+=+=+=+;+;+!+!+=+,+-+=+=+;+=+,+!+=+=+=+!+=+=+!+=+!+!+!+!+!+!+'+~+!+=+!+!+!+!+!+",
265"<.S O s v e i | : } } ) [ [ [ j y O +.+.2.p.p.p.p.K.W.Q.t.K.H.p.K.K.H.n.w.p.p.p.p.p.p.p.2.2.I O I s s s q q q s 7 e s s I +.` p.V.V.`.V.-+Q.#.u u c u N K K #.#.5.3.3.o.s.Q.Q.Q.W.W.$+W.W.V.V.V.W.W.V.V.W.W.V.W.F.V.F.F.F.F.F.F.l.l.n.n.E.n.E.F.k.n.n.n.n.n.n.n.H.n.n.n.n.H.W.H.W.H.-+W.W.-+V.W.V.Z.`.Z.V.V.V.V.`.V.`.`.`.`.`.Z.`.Z.;+=+=+=+Z.;+=+=+=+=+=+=+,+=+=+;+;+;+;+=+!+Z.!+!+;+!+;+=+'+=+!+=+!+!+!+!+~+!+",
266"p.+.+.` +.I O s s k 6 } ) { { } k r +.m.m.m.w.w.K.w.H.H.H.n.H.H.n.H.K.F.H.t.H.K.F.l.F.p.p.p.p.8.p.|.8.` 8.8.8.8.F 8.8.8.8.p.8.S.;+Z.=+Z.-+M.N [ { ) [ [ 0 0 t u u N #.#.3.}.o.o.s.Q.M.Q.Q.Q.$+W.W.W.W.W.W.W.V.V.W.V.V.V.F.F.S.F.F.F.E.F.H.F.F.F.F.F.k.n.H.n.n.n.n.n.n.H.F.n.H.H.H.H.H.H.H.F.V.V.W.W.W.Z.Z.V.V.F.V.F.V.V.V.V.V.`.`.`.Z.Z.Z.;+Z.,+Z.Z.=+=+=+=+=+=+=+=+=+=+-+=+=+=+!+!+Z.!+!+=+!+=+'+!+,+~+,+;+!+!+",
267"m.2.p.p.2.p.` 8.+.O v 6 : - ( ~ a r ..}.}.3.o.3.m.t.m.w.s.q.s.t.p.w.t.w.t.n.H.n.H.W.W.W.K.p.p.p.p.p.p.j.p.E.K.p.8.2.p.p.@+8.;+S.;+!+!+'+-+H.K 5 { } ) } 5 ) { : [ c 0 u N #.#.3.o.}.o.s.s.M.Q.Q.Q.Q.W.$+ + +W. +V.V.`.`.V.V.V.V.S.V.F.W.W.V.F.F.F.F.F.F.n.n.n.H.n.S.n.n.n.H.n.n.n.n.n.H.n.H.n.F.F.F.V.H.W.W.F.F.F.V.F.V.F.V.V.V.W.V.V.V.Z.Z.`.`.>+`.;+;+;+Z.Z.`.`.=+Z.=+=+=+=+!+Z.=+!+=+=+!+-+!+=+-+!+=+!+!+=+;+",
268"2.p.2.p.p.p.p.|.|.2.+.I e i | { { a S 3. . . . .#. . .<.}.3.}.}.<.m.s.s.s.w.H.W.Q.W.Q.W.W.F.V.F.F.F.K.V.;+;+;+V.p.p.j.p.;+;+V.;+;+(+(+^+{+Q.M k : 6 : 5 5 : : : = } [ [ c t u N N #.#.5.3.3.3.s.M.M.M.Q.H.W.W.W. +V.W. +`.W.W.V.V.V.V.V.V.W.`.W.V.V.V.V.F.F.F.F.H.H.F.W.F.F.F.H.n.H.n.n.n.n.n.n.n.n.n.n.H.H.n.F.n.V.F.V.F.F.S.F.S.F.S.F.F.S.F.V.`.V.Z.Z.Z.Z.Z.`.Z.;+Z.Z.,+=+;+=+!+Z.!+=+=+=+=+=+!+!+!+=+=+!+!+!+",
269"t.m.2.p.2.p.p.p.p.p.8.+.O B k a } r S K M G O G S M S S ......+.....f.}.<.2.V.$+t.H.Q.H.F.K.V.p.V.F.V.F.;+;+;+V.;+V.;+V.V.;+;+=+!+'+)+{+)+n.O v i i i p 6 a 6 6 : : { : ) } [ 0 u u u K N N #.#.3.3.o.o.o.M.M.Q.W.@+W.W.W. +`.`.V.Z.-+W.-+-+V.V.Z.V.-+W.V.V.W.W.F.W.W.-+W.W.n.H.n.n.H.n.F.n.n.n.n.n.H.n.n.n.n.n.n.n.n.n.n.S.n.S.F.F.F.F.E.F.F.F.F.F.H.V.V.`.V.V.Z.Z.`.`.Z.Z.=+=+Z.=+Z.Z.=+;+=+;+=+=+=+!+!+!+S.=+",
270"<.t.2.t.p.p.p.t.n.p.p.w.<. .N 0 g 5 B G O I +.+.+.+.I 2.+.+.+.+.2...+.+.2.w.F.W.2.n.F.H.F.l.;+E.;+V.;+F.Z.~+)+`.V.V.;+S.Z.;+`.,+'+-+)+$+>+H._.` I I v I i i r r a 6 : 6 : 6 } [ } 5 } 0 0 u A N N K #.3.3.3.o.o.s.W.W.Q.Q.Q.W.Z.Z.Z.`.W.W.-+`.`.`.Z.Z.V.-+V.-+W.-+W.-+W.W.W.F.W.W.n.F.n.S.n.n.n.n.n.n.n.n.n.k.n.n.n.k.n.n.n.n.k.F.n.E.n.F.F.n.F.n.n.n.H.n.F.F.H.F.V.V.V. +V.Z.;+Z.Z.;+!+Z.=+Z.=+=+=+=+Z.!+=+!+;+",
271"}.}.m.2.2.p.n.H.H.Q.Q.M.5.>.0 [ ) a r O ` 2.8.2.p.8.2.p.8.p.p.p.2.p.p.p.2.n.K.E.E.E.E.V.F.E.V.;+;+S.@+`.-+>+)+>+Z.Z.Z.`.`.>+>+>+>+>+-+-+`.F.p.|.2.|.` +.I O G B s v k a i i i 6 6 6 6 [ [ [ 0 0 u u u N N K #.3.o.M.M.M.o.s.M. +;+(+'+$+M.Q. +`.=+`.`.Z.-+W.-+W.-+F.-+W.-+-+F.-+V.S.V.V.W.V.F.n.k.n.k.k.|.k.|.|.|.n.n.|.4.|.|.n.n.k.n.n.k.n.|.k.k.k.n.n.n.n.k.n.F.F.F.F.F.V.V.V.;+S.;+S.;+=+Z.;+=+Z.!+S.;+!+Z.=+",
272"3.#.#.<.n.t.t.M.s.o.o.r.P A [ ) & < s m.+.p.p.p.p.p.p.p.p.m.p.m.m.p.2.p.m.p.K.E.!+(+(+=+;+@+V.;+;+Z.`. +~+>+)+@+,+ +;+>+-+,+,+,+,+,+,+-+,+V.K.l.p.l.|.p.|.2.2.+.O O O v v v p v p i 6 p 5 [ 5 5 [ [ [ 0 0 c u K #.3.o.o.>.#.o. +^+3+++M.o.H.W.`.'+-+=+=+=+=+`.-+-+-+-+-+W.-+V.W.W.S.-+F.-+F.V.F.F.n.n.k.n.k.k.k.n.k.k.k.k.|.|.|.<.|.|.n.2.n.k.|.n.|.|.n.|.k.|.k.|.n.n.n.n.n.F.F.F.V.V.Z.Z.Z.Z.Z.=+Z.;+Z.!+Z.;+=+",
273"N K K S s.o.o.3.3.5.#.N c % % ~ ( i s +.m.2.p.w.m.p.m.s.s.w.m.2.m.m.}.m.t.s.8.Z.5+j+b+)+ +V.Z.Z.=+@+>+>+>+)+,+-+ +>+)+>+>+,+!+;+,+~+>+ +`.;+;+S.V.F.F.l.p.l.p.l.p.|.|.+.` I I O v v B p p p p k j 6 : { { } [ 0 u >.>.P A N 3.M.:+#+P.3.#.}.W. +-+'+-+=+=+=+=+=+Z.Z.-+-+-+Z.-+-+-+V.-+Z.`.-+V.V.V.V.V.W.V.F.S.F.F.S.k.n.n.n.k.|.n.2.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.2.k.n.n.|.n.l.F.l.E.F.F.V.V.V.;+Z.Z.;+Z.Z.;+",
274"0 } 0 M 3.3.>.P N c 0 5 : ~ & = < 7 +.8.m.m.2.p.f.t.<.s.}.}.f.}...f.3.3.3.3.n.!+j+o+e+{+>+`.`.;+=+,+,+,+;+>+~+,+,+>+~+)+)+>+'+~+>+,+,+~+Z.Z.;+Z.;+V.V.V.F.F.F.l.l.p.p.|.2.2.|.` ` O O G B B B p p k k : : 6 } } 5 u u [ ] 0 N 5.r.r.P N K .Q. +~+~+'+!+!+!+!+!+!+!+-+-+=+-+-+-+-+-+Z.Z.`.-+`.-+V.V.-+F.Z.V.V.V.W.V.V.V.F.H.E.n.k.n.k.|.n.n.n.k.|.|.|.|.2.2.<.|.|.|.2.|.|.|.|.|.|.n.2.l.n.n.F.l.F.F.V.V.V.;+`.Z.",
275"k k 6 p K N 0 } } - : i 6 : : < i s +...2.2.s.3.}.f.f.#.-. . .......#.#. . .2.`.4+e+3+{+,+;+;+`.,+,+,+;+~+;+;+=+'+~+>+~+,+~+-+-+,+~+;+,+,+,+;+@+;+Z.`.Z.;+V.V.V.K.E.p.F.l.l.l.p.l.|.|.` +.+.O O G G p r r k 6 6 k 5 [ ) } % [ u u c 0 [ p <.t. +>+)+)+~+~+)+)+'+~+'+'+!+!+!+!+-+=+=+!+'+=+=+=+=+-+Z.-+-+Z.V.-+W.-+-+-+V.F.-+F.F.F.k.n.n.k.k.n.n.k.|.|.|.|.|.2.|.|.|.|.2.|.|.|.|.|.|.|.|.|.|.|.k.n.l.F.n.F.F.V.V.",
276"W y r B t B 5 ( ( < 6 v O r i e s ` m.<.f.f. .f.#. .M .K M W . .K W K B G +.H.{+$+)+>+`.Z.,+,+,+-+!+,+=+,+,+,+,+~+-+'+>+>+)+~+,+,+;+~+,+=+=+`. +`.;+ +`.`.;+`.`.Z.Z.V.F.V.F.F.p.p.p.l.p._.|.|.+.+.O O v M B B r r a { { { { 6 6 6 6 k B ..t.W.>+>+>+<+~+'+)+'+!+^+'+'+'+^+!+^+'+'+'+'+'+!+'+-+-+=+=+-+=+Z.=+-+-+V.-+`.V.`.V.S.V.V.S.F.H.V.F.H.k.n.n.|.|.2.2.|.|.|.|.|.2.|.2.|.k.|.k.|.2.|.|.|.|.|.n.k.n.n.F.n.",
277"K K K M K B G r v r v r O +.O s O +...}... .#.W M K t M G M M M K G B O s I ` n.-+-+-+-+-+>+Z.,+,+,+-+=+,+-+,+,+-+,+,+ +~+>+,+,+,+'+-+,+!+,+,+'+,+,+>+,+,+ +-+`.=+@+;+;+;+V.S.;+S.V.E.p.E.p.p.p.p.p.2.8.+.+.+.O I I s 7 | i i e s s I I O <.n.Q.W.`.,+'+_+_+!+^+'+!+_+~+_+~+^+'+^+_+~+_+'+^+~+_+'+!+=+!+!+=+=+=+=+-+-+-+-+-+-+`.Z.Z.V.W.V.W.Z.F.F.E.k.k.k.k.|.k.|.|.|.|.|.|.|.|.k.k.n.2.|.|.|.|.|.|.|.|.|.|.k.n.",
278"M G S I I I 8.s H s O W ..m.I 8.p.m.3.#. .}. .M M B r W r B r B r s I F ` 8.j.F.V.`.`.`.-+>+=+,+,+;+;+,+,+>+>+>+-+,+-+>+~+'+,+;+,+'+-+,+,+=+,+~+~+=+=+,+,+,+,+ +=+=+Z.Z.=+,+Z.;+Z.;+Z.@+S.V.F.p.E.p.p.8.p.2.p.8.2.8.I I F I F F 8.` ` 8.2.2.l.F.V.;+=+!+~+_+~+_+_+!+(+!+^+~+_+'+^+(+!+(+!+(+!+_+~+(+!+'+^+!+~+!+!+=+=+=+`.-+Z.`.`.=+`.-+Z.W.-+V.V.W.V.H.n.F.n.k.n.k.|.|.|.k.k.|.n.F.k.|.n.|.|.n.|.|.2.|.|.|.|.|.",
279"q q F 8.8.8.8.8.8.E.t.-.M -.p.p.p.<.#. .M S K M r B G v O s s I ` ` 8.8.E.E.Z.;+=+,+>+>+>+,+;+,+,+,+,+,+;+,+-+;+>+~+>+-+-+,+)+=+,+-+>+~+!+;+=+-+,+;+;+,+,+~+,+-+-+,+,+'+,+,+,+Z.,+`.;+Z.;+;+Z.Z.K.S.p.F.p.p.p.p.p.p.p.8.p.8.|.8.p.p.p.p.4.p.F.V.Z.=+<+~+^+~+_+~+!+_+~+~+_+^+^+_+~+'+^+^+_+_+(+(+(+(+(+!+!+^+!+'+'+^+'+!+!+!+-+-+=+-+=+Z.`.Z.V.`. +S.`.V.-+F.V.F.S.n.k.k.n.n.F.n.W.W.n.|.2.2.|.|.2.n.|.|.|.2.|.|.",
280"8.8.;+8.<+;+]+]+]+*+M.>.j O |.V. +M. .G O +.S O O I O F ` 8.8.8.8.E.8.;+;+Z.;+;+;+;+;+;+,+>+,+,+`.,+,+-+~+,+,+;+>+;+<+>+-+,+>+;+;+~+>+>+>+~+~+'+'+!+,+~+,+~+~+,+-+-+>+-+,+~+>+,+~+-+,+=+Z.Z.;+;+Z.;+S.;+V.V.F.V.E.;+p.p.p.p.V.E.E.p.E.p.F.S.Z.;+!+!+(+!+^+_+^+^+!+(+_+~+!+!+^+^+_+!+^+^+(+_+!+!+(+_+_+_+(+^+^+^+'+^+~+!+'+^+!+'+;+=+!+=+=+=+Z.`.`.`.Z.W.`.V.-+F.V.W.V.V.V.S.F.F.W.-+n.n.k.n.|.|.|.|.|.2.|.<.|.|.",
281";+]+>+$+{+++++P.#+o.o.K 6 v 2.W.M.o.G O O O ` I +.8.8.p.8.E.l.;+;+;+;+;+;+`.`.-+-+-+=+,+,+-+,+,+,+-+>+>+>+,+~+,+,+>+>+,+>+,+~+-+,+,+~+,+~+)+,+,+,+,+!+=+~+-+-+'+~+~+'+~+!+-+-+!+=+~+;+>+)+,+=+=+,+Z.,+;+Z.@+;+V.;+;+;+Z.;+V.;+;+;+Z.@+V.V.;+!+!+!+(+)+_+_+!+(+!+(+<+(+!+_+_+_+'+!+^+!+!+)+_+^+^+^+[+(+(+_+^+(+(+(+!+(+(+!+!+(+!+(+!+!+!+,+=+-+=+=+Z.Z.-+V.-+`.W.-+`.`.S.V.W.S.F.V.W.W.k.n.n.n.k.|.|._.|.|.2.|.|.",
282"Q.$+%+#+P.M.M.o.3.3. .G i s ` H.M.}.O 8.8.8.p.8.F.E.E.;+;+;+;+V.;+@+`.`.-+>+>+>+,+,+=+,+,+Z. +,+>+,+,+-+>+>+,+,+-+,+-+,+,+,+,+-+,+,+,+>+,+,+,+~+=+,+,+=+,+~+-+)+-+,+,+~+)+~+-+~+;+!+!+'+'+-+-+~+,+=+=+,+=+Z.=+Z.!+!+;+Z.V.V.;+!+~+=+Z.;+Z.=+(+_+^+(+_+(+^+'+_+(+(+(+<+!+(+!+(+^+_+_+^+_+(+~+^+'+)+^+^+^+_+^+^+_+_+^+'+^+_+(+(+!+(+!+!+(+~+!+!+!+!+!+=+=+=+Z.=+`.Z.Z.-+`.-+V.`.Z.`.W.V.V.V.F.n.n.k.n.k.|.|.|.2._.",
283"s.s.}.}.<. .2.+.2.` |.+.` ` 2.n.p.p.2.p.p.p.;+V.;+K.;+V.V.;+;+;+`.`.`.>+`.`.`.-+,+ +>+>+,+,+,+,+,+,+-+,+>+>+,+,+;+,+,+,+,+,+~+>+~+;+,+~+~+=+!+,+~+'+~+~+;+-+~+-+'+~+~+-+~+'+~+'+!+~+~+,+~+~+)+-+~+~+'+,+-+~+!+;+!+!+!+;+=+,+(+<+^+~+,+Z.,+'+~+^+!+<+_+^+_+_+!+_+(+(+(+<+~+^+_+_+~+^+~+(+'+^+~+^+_+_+!+!+^+~+(+(+^+_+_+(+(+<+(+(+(+(+_+^+(+_+(+!+!+!+!+!+!+!+=+'+=+=+`.`.`.-+`.W.-+`.`.S.S.-+-+V.S.F.k.k.k.|.k.|.",
284"2.2.n.2.2.2.2.|.p.p.p.p.p.p.p.n.K.p.p.E.;+;+V.;+V.;+;+;+;+V.`.`.;+`.`. +-+ + +`.,+`.`.,+,+=+=+,+,+ +,+-+-+>+>+>+,+,+>+,+,+,+,+,+-+~+-+>+,+-+'+>+)+-+'+-+~+>+~+,+'+~+~+-+~+~+,+,+~+~+'+'+'+~+)+'+)+)+~+~+,+~+!+!+<+!+!+,+!+-+^+_+^+~+~+!+~+'+~+_+!+(+!+(+_+^+!+_+_+(+!+(+!+~+_+^+^+^+)+_+!+_+!+!+~+_+~+!+^+_+!+(+(+[+(+(+!+<+(+(+^+(+(+^+!+^+(+[+(+(+(+!+(+^+!+!+!+!+!+=+=+=+=+-+Z.Z.-+`.Z.V.V.W.S.W.S.S.E.E.p.E.",
285"n.K.p.p.p.H.p.p.p.F.p.p.p.F.F.K.F.V.V.@+Z.V.Z.`. +`.V.`.;+ + +;+ + +`.>+ +-+;+ +`. +,+`.,+,+;+;+>+,+,+>+>+~+)+)+>+)+,+>+,+,+~+-+~+-+,+'+'+,+-+'+>+)+>+~+;+~+,+~+-+'+~+)+,+-+~+~+'+'+~+'+~+'+~+'+~+!+'+~+!+!+<+!+!+!+~+!+;+~+^+(+<+^+'+~+~+^+!+!+_+!+<+_+!+_+_+(+_+_+(+!+<+(+!+!+(+^+^+^+^+(+<+^+(+~+^+_+!+_+^+(+_+_+_+(+(+(+_+^+^+^+_+(+^+^+^+_+_+_+(+^+!+(+(+(+!+^+!+(+'+!+!+=+-+=+=+-+-+-+Z.=+`.Z.Z.V.V.;+S.V.",
286"n.F.K.F.W.H.F.V.H.K.H.H.W.W.V.W.W.@+V.@+`.@+`.`. + + +;+;+Z.`.;+`. +`.>+ +`.,+,+,+-+>+-+,+=+,+,+,+,+,+;+-+,+>+-+ +~+=+,+,+,+,+-+,+,+,+>+~+,+,+!+-+~+>+'+~+,+~+~+-+'+'+'+~+'+~+,+~+'+~+'+~+~+~+'+~+'+'+~+~+!+~+<+~+(+~+!+<+!+~+^+!+!+'+^+!+'+~+(+(+!+(+^+'+^+_+!+_+(+!+(+~+^+_+(+(+(+(+_+^+!+(+!+(+~+_+_+(+_+_+(+(+(+}+_+(+(+(+(+^+[+_+_+(+_+(+(+(+^+^+^+(+(+(+(+(+^+(+!+^+!+(+!+(+'+=+!+=+!+=+=+=+=+=+=+Z.;+S.;+",
287"H.H.n.H.H.H.H.H.n.H.H.H.H.F.H.@+V.V.;+`. +`. +`.`.`.;+`.;+,+ +>+ +>+>+`.,+-+`.`.`. + +,+;+>+,+,+>+,+-+-+,+,+,+>+,+,+,+-+-+;+>+>+,+~+>+'+>+'+'+-+,+'+~+,+,+!+,+~+~+-+'+~+~+~+'+~+)+)+'+~+~+~+~+~+'+!+'+^+'+~+!+!+_+~+!+!+!+~+^+~+!+^+~+!+!+_+!+~+~+^+'+_+^+^+!+^+(+_+<+^+^+^+!+<+<+_+_+_+(+(+(+(+^+(+(+(+^+}+(+^+_+}+^+(+_+^+_+}+(+_+(+(+}+(+(+}+(+(+(+(+(+(+[+^+^+(+(+[+(+(+(+(+(+!+(+_+(+!+(+!+(+!+!+!+(+;+!+=+",
288"t.H.H.n.H.t.H.K.n.H.F.H.K.F.F.V.V.V.V.@+`.;+`. +`.Z.;+Z.;+`.`. +>+ + +@+@+ +,+-+=+,+ +>+;+,+,+,+>+,+,+,+-+,+;+;+,+,+,+,+'+!+~+;+,+,+,+-+>+-+)+~+,+'+'+'+>+~+'+)+)+~+)+'+-+~+'+~+~+)+'+)+'+!+~+~+~+~+~+'+~+)+~+!+~+_+~+'+<+~+^+)+_+_+~+_+!+_+!+_+_+_+!+!+^+^+_+_+!+(+_+)+(+(+(+!+(+(+(+_+(+(+(+(+_+^+^+(+(+}+(+^+^+^+^+^+_+[+^+^+(+^+^+^+_+<+(+(+}+(+(+[+^+^+(+[+^+[+(+(+[+(+(+(+(+}+(+(+[+(+(+(+(+(+(+(+(+(+(+(+",
289"H.t.H.t.F.H.K.p.K.p.K.F.F.W.W.V.V.@+;+V.@+Z. +`.`. +Z.;+`.,+,+,+ +>+;+,+=+,+,+;+ +,+>+,+,+,+,+,+'+>+,+,+>+~+=+,+;+>+,+,+,+,+,+~+,+=+'+)+'+~+;+,+~+>+,+)+'+'+>+~+~+,+!+~+~+'+'+'+'+~+~+'+'+)+'+'+'+'+'+~+!+<+~+'+^+~+^+~+!+~+!+^+'+!+_+!+_+^+_+(+!+!+(+_+!+'+^+_+<+_+_+^+'+(+(+(+_+_+_+^+_+(+<+}+^+^+(+(+(+(+}+_+^+_+^+^+_+)+^+_+^+_+(+(+(+(+(+}+(+}+(+(+[+(+}+_+|+^+|+[+(+[+(+[+[+(+[+(+[+[+[+[+[+[+(+(+(+(+(+(+",
290"p.H.H.t.K.n.F.p.F.p.K.K.H.K.K.;+V.V.;+V. +;+ + +`. +`.`.`.`. +>+`. +,+ +Z.`.,+;+,+,+>+,+=+,+>+>+-+>+>+,+,+>+,+>+;+>+>+,+,+,+-+,+~+,+'+-+,+!+~+~+~+'+-+'+)+~+~+~+'+-+'+~+'+)+>+)+~+~+,+~+~+^+)+'+'+'+^+~+!+~+~+~+'+'+^+_+'+_+~+^+(+!+_+!+!+!+^+_+(+~+!+_+_+~+^+_+(+(+(+^+_+(+(+(+(+(+(+_+_+[+(+(+[+(+^+^+_+(+(+_+!+^+^+^+^+~+'+_+^+^+_+^+}+_+(+^+(+|+}+}+|+[+[+(+[+(+[+|+}+[+}+[+}+[+|+(+|+|+[+[+(+[+[+7+[+[+}+[+",
291"H.p.n.H.H.K.K.H.K.K.F.F.V.V.F.V.V.@+V.@+Z.`. + + +`.`.,+ + +,+`.,+;+ +>+>+>+,+Z.`.,+,+`.,+>+>+>+ +-+>+>+,+>+>+,+-+,+~+;+,+,+~+-+,+!+,+>+~+,+=+'+-+>+)+>+~+~+~+~+~+~+~+~+>+)+'+~+~+-+!+'+'+'+'+'+'+'+~+'+~+~+_+~+_+_+~+'+_+'+^+!+^+^+_+_+(+^+_+^+~+(+_+^+_+_+_+^+^+^+_+(+(+(+(+(+^+(+_+^+(+(+(+_+(+^+[+^+^+^+[+_+^+'+~+!+~+^+^+)+'+_+^+^+)+^+<+(+^+(+(+(+^+^+(+}+[+}+|+|+|+(+}+(+(+|+(+[+}+[+[+7+[+[+[+(+}+[+[+}+",
292"H.H.K.n.H.H.K.n.H.H.F.W.H.V.F.V.V.@+V.@+`.`. +>+ + + + +,+;+`.`.Z.;+`.>+>+`.>+,+,+,+,+`.,+,+>+-+-+,+,+>+,+,+>+>+,+,+-+~+,+,+~+,+,+=+!+-+,+~+=+~+~+~+'+'+'+~+-+,+,+'+~+!+'+'+'+~+!+~+~+~+'+~+~+~+'+^+!+_+!+'+^+'+~+_+_+'+^+!+~+_+~+^+~+<+'+'+(+^+'+!+!+(+(+(+(+_+_+!+<+(+~+_+^+(+^+^+(+(+_+_+^+_+(+_+(+[+(+(+!+_+_+^+^+^+!+~+~+_+)+'+^+)+^+^+^+(+_+}+}+[+[+[+(+(+[+}+|+[+|+[+}+[+[+|+}+(+(+[+}+[+(+[+[+(+7+}+|+|+",
293"n.H.F.H.H.H.F.H.H.F.H.W.W.W.W.W.`.V.`.`. + +`. +>+ +`.,+`.-+ +,+ +,+ +,+>+>+,+,+`. +-+>+,+,+ + +>+=+,+-+,+=+,+>+,+,+;+,+;+~+,+,+-+>+>+-+-+,+~+,+,+~+,+>+'+-+~+~+'+,+'+)+-+'+'+'+~+~+'+-+~+!+~+'+~+!+_+!+^+_+~+_+)+<+'+^+~+^+^+~+(+!+'+^+^+^+'+(+(+_+_+~+^+!+!+(+(+_+!+(+(+(+(+^+(+(+(+(+(+[+}+}+(+(+^+_+(+^+[+(+(+(+(+(+^+(+(+~+~+^+'+^+'+^+_+^+^+^+^+}+[+[+[+}+|+[+[+|+(+[+[+[+|+(+[+[+7+(+[+}+[+[+[+[+[+|+^+}+",
294"H.t.F.n.H.Q.F.F.Q.F.F.V.K.W.W.W.W. +V.`.`. +`. + + + +>+`.,+>+,+`.,+`.`.-+`.`.,+`. +`.,+ +,+;+,+>+;+,+-+ +=+=+,+,+-+>+'+,+)+>+>+)+~+,+~+'+,+~+'+-+!+!+>+~+'+-+'+'+)+~+~+)+)+'+'+~+~+~+'+~+'+~+^+)+'+'+~+~+'+'+_+'+~+'+'+~+~+(+~+_+_+~+_+)+<+)+_+(+(+(+~+_+<+!+!+(+(+_+_+(+(+!+_+(+(+<+(+(+(+^+}+(+(+(+_+(+(+^+^+(+(+(+(+[+!+(+(+'+^+)+^+!+(+_+^+^+^+^+^+|+|+|+[+^+}+[+[+}+[+|+(+|+[+(+[+}+[+[+[+[+[+7+^+|+[+|+|+",
295"p.H.H.H.F.H.F.F.F.F.K.H.V.V.W.W. +V. +`. +`. +`.;+;+`.`. + +`. +>+`.,+-+ +@+;+;+,+>+>+>+,+;+,+;+,+,+,+,+-+>+>+,+-+~+,+,+,+,+,+)+,+,+~+>+>+)+-+-+,+,+~+~+)+>+~+>+'+~+'+)+-+)+)+'+'+~+~+>+'+~+'+)+'+'+^+)+'+_+_+!+^+'+~+^+^+^+'+(+'+!+^+_+_+^+_+_+_+^+'+^+(+!+(+_+_+(+(+(+<+(+(+(+_+<+(+(+(+(+(+(+}+}+}+(+(+^+(+(+(+}+[+[+^+[+(+^+[+^+(+^+^+(+(+(+^+[+^+|+^+[+|+|+[+|+[+|+5+(+[+[+[+[+}+|+[+}+[+7+[+[+[+|+|+[+[+[+",
296"F.H.H.W.F.H.K.W.W.F.V.V.K.W.W.V.@+V. +`. + + +`.V.`. +,+`. +,+>+>+ +;+,+-+,+`.;+;+,+,+-+,+,+,+;+,+@+;+;+~+,+,+,+>+,+,+,+,+~+;+~+-+>+'+>+>+>+)+~+~+,+~+~+~+'+~+~+'+)+'+)+'+~+,+~+-+~+!+~+)+'+!+^+)+~+~+<+'+'+)+<+'+!+!+_+~+_+'+^+^+'+~+'+'+^+)+^+!+^+_+)+^+<+(+(+^+'+(+(+_+}+(+(+(+(+(+(+^+(+^+(+[+(+(+(+}+(+[+}+[+_+|+(+^+[+(+^+[+[+[+(+^+[+^+(+^+[+_+[+^+^+^+|+|+|+[+[+5+7+5+[+[+[+[+[+[+(+[+}+7+[+[+[+|+5+|+[+",
297"K.K.H.H.H.K.H.H.F.F.V.W.V.H.V.W.V.V.`.V.;+W.`.@+@+@+,+`.;+,+ +>+ +;+-+ + +`.;+-+>+,+,+>+,+,+,+-+,+,+~+,+-+-+-+,+,+,+~+;+>+>+~+@+>+,+>+)+)+>+~+,+,+~+,+,+~+>+)+~+>+)+>+~+~+'+~+-+~+~+~+)+^+~+~+)+'+)+)+'+'+'+^+'+'+^+^+!+^+^+<+~+^+~+^+!+_+'+^+^+)+_+'+<+^+'+_+'+_+(+_+!+_+_+_+_+(+(+_+(+(+(+[+^+^+^+(+(+(+(+_+[+_+[+(+[+[+^+(+(+(+(+[+[+[+^+[+[+[+[+[+|+|+|+|+6+|+6+6+6+5+5+[+[+7+|+}+[+7+[+7+[+[+|+|+6+[+|+|+6+",
298"K.l.H.H.F.F.F.K.K.W.K.W.W.W.V.@+V.W. + +`.W. + +`.`. +`.`.-+ +`.`.@+`.>+,+,+ +,+ +>+@+ +>+-+,+,+-+>+-+>+;+,+,+,+,+,+-+~+;+'+'+~+~+>+>+-+~+>+>+-+,+~+~+~+~+~+)+~+~+~+~+'+~+'+~+'+'+~+'+'+'+_+'+)+)+^+'+~+~+~+)+^+'+'+)+(+~+^+^+~+^+!+^+!+!+'+)+^+!+(+'+'+^+'+_+^+^+!+_+(+^+^+!+_+_+(+_+^+^+(+[+(+(+(+[+[+(+[+[+(+[+[+(+[+[+|+[+[+[+[+[+[+[+[+6+|+|+5+[+|+|+^+|+6+|+6+5+6+6+6+7+5+7+7+[+5+7+[+[+5+6+6+5+7+5+6+6+6+",
299"p.K.F.K.H.F.K.F.F.H.W.W.W.F.W.V. +`.W.`. +&+`.`. + +>+ +;+ +>+>+,+`. +,+ +`.,+ +,+,+,+,+,+>+ +,+`.,+>+,+>+,+,+,+,+,+~+,+-+>+>+>+)+,+'+>+-+~+~+>+~+-+>+>+)+'+,+~+)+~+~+'+'+~+'+'+~+'+~+'+~+~+'+)+'+'+'+'+'+'+'+)+)+^+^+)+^+~+'+_+!+'+)+^+^+^+^+'+^+^+^+)+(+_+^+!+!+(+(+!+(+^+^+(+(+^+(+(+(+^+^+|+[+[+(+(+[+[+|+[+[+|+6+[+|+[+|+[+|+|+|+[+7+5+|+6+5+5+6+5+6+6+6+6+5+5+6+6+6+6+5+[+5+5+5+[+7+5+7+|+7+|+4+6+6+5+6+6+",
300"F.F.F.K.H.F.K.H.F.H.H.F.W.W.W.W.V.`.W. + + + +`.;+`. + +`.`. + + + + +,+>+ +,+`.`.>+`.,+`.-+>+>+-+,+>+,+>+,+-+>+ +>+;+>+,+-+-+,+'+,+~+,+,+>+~+,+~+'+~+>+>+'+'+,+)+'+~+-+'+~+~+'+~+~+~+'+'+~+'+)+'+~+'+^+'+^+'+^+^+'+_+~+^+)+^+_+_+^+)+'+'+'+)+~+~+^+^+)+(+!+_+_+^+(+_+!+(+(+^+^+(+[+(+[+(+|+|+[+|+|+[+[+[+[+5+|+[+|+6+[+6+5+[+5+[+[+6+5+5+6+6+6+6+6+6+5+5+6+6+0+6+8+6+6+6+8+5+5+5+7+9+5+5+5+5+5+5+5+6+7+6+6+7+5+",
301"K.K.K.H.H.H.H.F.W.H.W.W.W.V.Q.`.W.V. +W.`.V.`. +`.`.;+`. +>+>+>+,+;+;+ +>+-+`.@+>+`.>+>+>+ +`.,+,+,+,+>+,+-+,+-+)+;+=+,+~+,+~+~+,+=+=+'+)+~+>+~+>+>+-+~+~+)+-+!+,+'+)+~+-+'+'+'+)+'+)+,+~+'+'+'+'+'+~+~+'+)+)+'+'+~+!+^+'+'+'+'+'+~+^+_+_+^+^+^+^+~+^+(+^+^+(+(+(+^+(+^+^+[+(+[+(+[+[+[+|+[+|+6+|+5+6+|+6+5+[+7+5+6+5+5+5+5+5+7+9+7+5+5+5+6+6+6+5+5+6+6+6+0+6+6+5+5+5+5+5+5+7+8+5+8+5+5+5+5+5+5+8+8+6+6+7+6+5+6+",
302"H.H.H.H.K.F.K.H.H.H.Q.F.W.V.W.V.@+W. +W. + +`.W. + + + +>+ + +>+`.`.;+`. +>+-+`.>+ +`.>+>+,+;+;+;+Z.,+>+>+>+ +,+>+>+~+,+,+-+-+,+,+)+>+,+-+!+,+'+'+,+,+~+'+)+)+'+-+'+'+)+,+'+>+~+,+;+~+,+~+'+'+'+'+'+'+'+'+'+-+)+'+)+,+'+^+'+'+!+(+!+'+(+!+!+!+!+(+!+'+[+(+[+[+[+[+[+[+(+[+[+[+[+|+|+|+5+5+|+5+0+|+6+6+5+6+6+5+8+6+5+6+5+5+0+6+5+5+9+5+8+8+0+0+0+8+5+0+0+6+0+0+b+c+0+0+8+8+5+5+8+5+8+8+8+8+8+8+7+5+6+6+6+7+6+6+5+",
303"F.H.F.F.F.V.K.F.H.F.F.Q.V.W.W.W.W. +W.;+V.;+`. +>+`.`.`. +>+>+$+>+ +`.-+`. + + +>+,+>+ +,+`.`.,+=+,+>+-+~+,+,+>+-+,+,+,+~+>+>+'+,+~+~+~+,+,+)+>+,+)+~+-+-+~+,+,+~+'+)+~+'+~+!+-+'+!+'+~+-+^+)+~+~+'+'+-+)+'+'+'+'+!+!+^+'+~+_+^+!+'+(+!+_+^+^+[+^+[+[+[+[+[+|+[+|+5+[+[+|+6+6+6+5+5+5+5+6+5+6+6+8+5+0+8+8+5+0+0+0+0+5+0+8+8+0+0+8+8+8+8+0+5+6+8+5+8+5+9+0+0+5+5+5+8+b+0+8+0+b+0+0+8+0+8+8+9+5+8+8+9+7+9+5+5+|+6+",
304"F.H.K.K.p.;+p.F.H.H.V.H.V.H.W.V.V. +W.@+`.@+`. +$+ + +Z.`.`.>+`.-+`. + +,+,+,+,+,+>+,+>+>+,+ +>+ +,+ + +~+,+,+>+,+,+,+>+~+'+,+~+,+-+-+~+,+,+,+)+,+>+)+)+>+~+>+>+,+,+)+>+>+'+~+=+-+,+'+)+>+'+)+'+'+)+)+^+)+~+!+'+'+^+!+^+^+!+(+^+(+(+[+(+^+(+^+[+|+[+^+|+|+5+6+5+6+7+5+5+5+0+6+6+5+0+6+6+5+0+5+0+8+5+0+0+0+8+0+8+5+8+g+0+f+8+8+8+5+8+0+g+0+0+0+0+0+9+5+5+5+8+8+9+9+f+8+8+8+8+8+8+0+8+0+8+5+8+5+5+5+5+5+5+9+5+6+6+",
305"H.K.F.K.F.K.H.H.H.V.F.W.Q.W.F.@+W.W. + +V.V. +`. + +`.@+;+`.`. +`.>+;+,+`.;+`.>+ +,+>+>+,+>+>+-+-+>+,+,+,+,+,+>+,+,+-+'+>+,+-+,+=+,+>+>+>+,+>+>+-+,+>+~+=+>+-+)+)+-+-+'+'+)+-+~+~+!+=+'+'+'+^+^+~+^+^+~+(+^+_+!+(+!+[+(+^+[+(+[+(+[+(+[+[+|+[+5+5+|+6+|+6+6+6+6+5+0+5+8+8+5+0+5+0+0+0+0+0+0+0+0+8+f+f+f+f+f+f+f+f+f+f+f+f+f+8+f+f+f+f+0+g+8+8+8+8+8+0+8+8+0+8+8+5+9+0+8+8+8+8+8+5+8+5+8+8+8+8+8+0+0+8+8+5+8+6+6+",
306"F.F.K.K.F.W.F.F.H.F.K.V.W.W.W.V.`.W.`.@+`.V. +`.`. +`.`.,+-+`. +,+>+`.>+`. +,+,+ +>+>+ +>+,+>+ +>+>+,+-+-+,+,+,+-+-+-+-+>+)+>+)+,+,+>+>+)+-+-+{+-+,+,+>+,+)+,+,+~+>+-+'+'+'+~+^+~+~+!+!+^+'+)+(+^+^+!+(+(+(+(+^+[+[+(+[+[+[+[+|+|+[+|+5+|+6+6+6+5+5+5+5+0+8+0+0+8+0+8+0+f+0+0+8+0+0+f+f+f+f+f+f+g+8+f+c+f+i+0+g+g+f+f+i+f+f+f+f+0+8+f+f+f+f+f+f+0+8+8+8+8+f+f+5+f+8+8+0+f+8+8+g+0+8+8+5+f+5+j+5+8+5+5+8+7+8+5+6+",
307"p.F.H.F.H.K.K.K.K.F.V.W.V.K.V.W.W.V.@+`.W.`.V.`. + + +;+@+ + +;+;+`. +`.>+>+`.,+,+>+>+,+,+>+>+,+,+,+>+ +>+>+-+`.,+,+,+,+'+>+-+-+-+-+-+,+,+>+>+-+>+-+,+=+'+>+~+~+!+!+~+'+'+^+'+(+!+^+~+^+^+^+(+^+(+^+[+[+[+[+|+[+[+|+|+|+6+[+5+5+5+8+5+6+0+6+6+0+0+0+0+0+0+0+0+8+f+f+f+f+f+f+f+f+f+0+h+f+h+h+f+f+h+o+f+f+h+f+i+f+f+o+i+f+h+f+f+m+f+f+f+f+f+f+c+f+f+f+f+f+0+f+f+f+g+8+0+g+8+8+f+5+8+9+f+8+f+5+8+8+8+0+8+5+5+7+8+0+",
308"l.F.H.K.F.H.F.H.K.V.H.H.V.W.W. +W.V.W.`. + +@+@+Z.`. +`. + +`. + +>+&+>+ + + +;+,+-+>+`.,+ + +,+`.,+>+>+-+>+>+ +>+>+=+>+>+>+>+>+)+,+'+-+!+~+>+-+'+)+~+~+~+'+'+'+_+~+'+!+'+^+^+^+(+(+(+(+[+^+[+(+[+[+[+7+5+7+7+[+5+5+6+6+6+6+6+6+6+0+0+0+0+0+0+0+0+f+f+0+0+f+f+0+f+f+f+c+h+f+h+f+h+f+h+h+f+m+f+f+f+m+h+m+h+m+m+h+m+o+m+m+m+m+f+f+o+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+g+f+0+f+0+f+f+5+8+5+8+9+8+f+8+8+8+8+8+5+6+6+6+",
309"p.n.K.F.H.F.H.W.F.K.V.F.V.V.V.V.`.W. +W.W.`.Z.`.@+W.W. +;+;+@+`.,+`.`. +`.`.;+`. + +-+-+-+,+,+ + +>+>+,+ +>+>+>+,+,+ +,+~+-+~+=+,+'+-+,+,+'+'+~+>+'+~+!+!+~+_+_+(+^+(+(+[+(+(+[+|+[+[+|+|+5+7+5+5+6+6+5+5+0+5+6+5+5+5+6+0+0+0+8+0+8+0+0+f+0+f+f+f+0+f+f+f+i+f+f+f+f+h+f+f+h+m+h+h+m+h+m+m+o+h+o+m+f+o+m+o+m+f+o+i+m+m+o+m+f+o+m+m+o+o+o+o+m+m+m+o+f+o+f+f+f+h+f+f+f+g+f+f+f+f+n+8+f+f+5+f+0+8+8+8+8+5+8+8+8+7+6+",
310"8.k.n.F.H.H.H.H.F.H.F.W.W.V.V.K.Z.V. +`.W.W.;+`.;+;+W. +`.`.;+`.`.`. + +;+`.>+ +>+ +>+@+;+;+;+,+,+,+>+>+)+>+,+>+)+!+,+,+'+-+~+=+,+~+'+~+=+!+'+!+~+'+(+(+!+(+(+^+^+|+^+(+[+[+[+|+|+[+|+|+5+5+5+5+5+8+5+8+5+0+0+0+0+0+0+0+f+f+f+f+0+c+f+h+h+i+i+f+h+f+i+h+h+h+m+h+h+m+m+m+m+m+m+o+h+m+o+p+m+o+f+o+m+m+o+m+q+s+m+m+m+q+m+o+m+o+o+f+m+m+m+m+o+o+f+m+o+o+o+o+o+f+m+h+f+f+g+0+g+f+f+8+f+8+8+8+8+f+0+8+0+8+8+6+6+5+7+5+",
311"_.4.4.n.F.H.F.W.K.V.K.F.V.V.F.;+K.@+V.W.`.@+@+V. +W.;+ + + + +;+@+ +`. + +,+ +,+ +>+>+>+`.;+-+Z.,+=+=+-+>+)+,+~+-+,+~+-+)+~+~+~+!+~+~+!+!+'+_+^+(+(+_+(+(+(+[+(+7+(+5+5+5+6+6+0+6+6+6+0+0+0+5+8+f+8+0+8+f+f+f+0+0+f+f+f+f+f+f+f+f+f+i+f+f+f+f+h+m+o+f+o+o+m+o+o+m+p+p+s+p+o+s+o+o+q+m+m+o+o+s+m+m+p+m+s+s+m+t+t+m+s+o+m+o+m+s+m+m+q+m+m+m+m+o+o+m+m+o+f+o+o+f+f+m+f+f+f+0+f+f+f+f+f+f+8+8+8+8+8+8+0+6+8+8+6+5+6+",
312"` _.4.l.l.F.F.V.V.K.V.K.@+V.V.V.V.@+@+`.V.V.;+;+;+`.W. +`.`. +>+,+ +,+-+`.,+>+ + +>+,+;+=+;+,+=+,+,+,+!+,+~+,+~+~+'+~+~+'+!+!+_+(+(+(+_+(+(+(+(+[+[+|+[+5+[+5+[+6+7+[+7+5+0+0+4+0+0+6+0+0+f+f+8+f+f+f+f+f+f+f+f+m+f+f+h+h+m+o+o+m+o+o+o+m+m+o+o+m+p+o+m+m+m+o+o+s+s+p+m+m+o+s+t+m+m+o+m+m+o+x+s+m+s+m+m+t+s+m+t+m+t+t+s+t+o+s+q+m+q+s+m+p+m+o+f+o+m+o+m+o+o+o+f+f+g+n+g+8+f+g+f+8+f+8+f+0+8+0+8+8+0+6+6+6+5+6+6+",
313"_._._.|.k.p.F.F.F.;+F.;+V.W.V.;+;+`.V.`.>+ + +`.`. +,+ +@+ +`.-+>+ +;+;+>+ + +,+,+,+>+,+,+=+-+,+~+~+!+,+!+'+!+!+'+_+_+!+^+^+(+(+^+^+_+(+|+[+7+5+[+7+|+6+5+6+5+5+9+5+8+0+5+8+0+0+c+0+f+f+0+h+f+f+f+f+f+h+h+f+f+m+h+m+m+m+m+m+m+m+o+m+m+m+m+q+s+o+s+s+m+s+q+s+s+m+s+s+s+t+t+t+t+s+y+y+m+y+y+m+y+y+s+s+y+x+m+t+t+s+s+s+s+t+s+s+o+s+m+m+p+s+m+s+m+m+m+o+o+f+o+f+f+i+f+f+f+f+f+g+0+g+f+8+g+f+8+0+8+8+6+6+8+8+7+6+7+6+",
314"_._._._.4.j.E.V.V.V.@+K.Z.@+V. + +,+;+V.`. + +$+Z.;+`. +;+`. + +>+>+`.;+!+-+=+=+;+~+)+;+)+~+'+'+'+_+^+~+!+~+~+(+(+(+^+(+(+_+(+[+[+[+|+|+|+[+6+7+5+6+6+6+5+0+0+0+0+8+8+f+0+c+i+c+f+f+i+i+f+h+f+m+m+m+o+o+o+o+o+m+m+p+m+o+t+o+o+m+t+s+o+y+s+m+s+o+s+s+t+m+x+s+s+s+s+s+s+m+x+m+y+m+s+x+s+s+x+m+x+y+y+m+y+y+x+x+o+y+m+x+s+o+y+m+y+s+t+t+p+q+o+o+p+s+m+m+o+m+o+o+o+i+f+h+h+f+f+f+0+f+g+8+f+0+8+8+5+9+8+6+6+6+6+5+7+5+",
315"` _.4._._.8.k.l.F.V.V.;+V.`. +`.`.@+`. +>+`.>+`.@+`.>+-+Z.;+;+>+,+-+;+=+,+,+,+,+!+,+)+'+!+~+~+_+~+_+(+(+^+^+(+(+(+^+}+}+(+5+[+[+}+6+6+6+6+0+6+5+5+8+0+8+8+b+8+8+8+8+f+8+8+f+f+f+i+h+h+h+i+m+m+o+o+o+m+m+m+o+m+m+p+p+s+s+s+s+s+t+s+y+x+s+o+y+y+w+y+m+x+x+s+s+x+t+y+y+y+y+x+y+x+w+y+o+y+y+y+y+y+o+y+y+x+m+x+x+x+s+y+o+x+m+s+y+m+t+o+s+t+m+m+o+o+m+o+o+o+o+o+o+f+f+i+i+f+f+h+f+f+8+f+0+8+f+8+8+0+8+5+8+8+5+6+6+5+|+",
316"|.` _.4._._.4.k.F.V.V. +@+ +$+`.`. +`. + +`.@+ + +,+ +>+-+,+;+,+;+=+!+~+'+)+~+'+~+_+_+)+_+(+!+_+(+_+^+(+(+}+}+}+[+[+|+4+|+6+6+6+4+6+8+0+6+7+0+0+8+0+0+0+0+0+f+f+f+f+f+i+h+h+m+h+h+o+o+m+p+p+m+o+m+s+m+t+s+s+y+m+s+m+s+t+m+y+x+y+m+y+y+m+x+y+x+y+y+y+m+x+x+x+y+m+x+m+x+y+x+y+x+y+y+y+y+y+y+y+y+w+y+w+y+y+o+x+x+m+y+x+x+y+m+y+s+s+y+s+o+t+s+o+o+m+o+o+o+o+o+o+o+f+f+i+h+0+c+c+i+f+f+8+8+0+0+b+8+8+6+6+6+8+|+6+6+[+",
317"_._._._._._._.4.j.E.V.Z.`.-+ +>+`.;+,+-+>+>+,+,+>+-+=+=+,+-+!+=+'+'+~+'+)+!+(+~+^+'+~+_+!+_+_+(+[+[+(+|+|+[+[+[+[+|+6+7+6+6+8+6+8+8+4+b+b+0+8+8+f+c+c+c+c+h+0+f+f+f+h+h+m+p+p+o+q+p+p+p+p+m+o+m+s+s+s+m+s+y+s+s+x+x+x+x+y+x+x+x+y+m+y+y+y+y+y+y+y+y+y+y+m+y+x+y+y+x+y+y+y+y+x+y+y+y+y+y+x+y+y+x+y+x+y+y+y+y+y+y+x+y+y+y+y+x+o+y+o+t+s+s+o+m+m+o+o+o+o+m+m+f+i+h+o+c+c+k+h+0+f+c+c+c+c+8+8+8+5+6+6+6+8+6+4+|+|+6+",
318"_.` 8.` _.8._._.|.k.l.V.`.-+>+-+Z.`.,+`.,+,+,+,+>+~+~+~+~+'+~+~+~+^+^+^+'+'+(+!+^+^+(+}+^+[+(+(+(+6+|+5+|+6+4+}+5+6+5+7+6+0+0+8+8+0+0+8+8+8+f+f+c+c+i+i+c+i+i+f+f+n+o+o+p+p+p+m+m+m+o+m+s+s+s+y+o+y+m+y+m+y+y+s+y+y+y+x+y+y+y+x+y+x+x+x+x+y+y+y+y+y+y+x+B+y+x+x+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+x+x+y+y+o+y+y+o+y+s+o+y+y+s+s+y+o+o+s+t+m+m+s+m+o+m+m+o+f+o+i+f+h+h+c+c+0+i+f+8+8+c+c+6+0+8+8+7+7+6+7+6+6+4+|+",
319"8.H ` _._._._._.4._.j.E.Z.`.-+>+;+;+;+,+,+'+~+!+!+-+,+'+'+'+^+!+~+_+~+~+^+(+(+(+[+}+[+(+[+}+}+6+|+7+7+|+5+6+6+6+6+8+0+5+5+8+4+0+c+c+0+c+c+c+c+h+i+h+i+i+i+m+f+f+f+m+m+p+m+p+m+m+p+t+m+t+s+s+y+s+x+y+y+y+y+y+s+y+x+y+y+y+x+y+x+y+B+y+B+y+x+x+y+B+x+B+B+B+B+y+y+y+B+A+B+y+y+y+y+y+x+y+y+y+y+y+y+y+x+y+y+y+x+y+y+y+x+m+y+y+t+s+o+y+m+y+m+o+s+t+m+o+m+m+i+o+f+o+i+h+h+c+f+f+0+g+c+c+0+6+6+5+5+6+7+6+6+5+7+6+|+|+|+|+",
320"` 8.8.8._._.4.4._._._.4.F.Z.,+>+'+)+~+,+,+,+~+~+~+~+~+^+~+_+^+(+^+^+(+(+_+(+[+(+[+(+7+}+|+|+}+6+6+6+9+5+5+8+6+6+9+8+0+8+b+8+0+0+f+c+0+0+8+f+c+k+i+k+h+o+f+m+o+m+o+s+m+p+s+s+s+m+s+y+s+y+s+s+y+y+o+y+y+y+y+y+x+y+x+x+y+y+y+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+C+B+C+A+B+y+B+y+y+y+y+B+y+y+y+y+y+y+y+y+y+x+y+y+y+y+x+o+y+s+s+s+o+s+o+y+o+m+t+m+o+m+o+f+m+h+i+i+i+i+c+c+i+0+f+c+0+0+8+0+8+7+8+7+|+4+6+6+|+|+}+}+}+",
321"_._._._.8.4._._.4._.8.j.j.F.Z.'+,+=+'+'+~+'+'+'+!+(+'+_+^+(+(+^+(+[+|+^+|+(+}+7+5+|+5+6+6+6+6+6+6+6+6+8+8+5+0+8+0+0+8+0+f+i+8+i+f+i+i+g+h+f+f+f+h+m+m+o+q+m+m+s+m+s+s+s+s+s+t+t+s+s+o+y+y+y+x+y+y+y+x+y+y+y+y+y+y+B+B+B+B+B+B+C+B+B+B+B+B+B+B+B+C+A+B+C+C+C+C+A+C+C+B+B+B+B+y+y+B+y+C+A+y+y+y+y+y+y+y+y+w+m+x+x+m+y+x+s+o+s+y+m+o+y+m+s+o+m+q+o+o+i+o+k+k+i+f+i+0+f+i+0+c+0+0+g+8+6+6+6+5+5+5+6+6+6+[+7+}+[+^+^+",
322"_._._._.4.|.|.4.4.4.4.k.j.l.F.Z.;+!+~+'+_+_+^+^+^+(+^+^+^+_+(+^+}+[+|+|+|+[+|+|+6+|+6+6+6+6+6+5+0+0+c+8+0+8+8+8+b+c+g+0+f+i+0+i+f+f+f+g+i+m+m+o+h+m+m+m+q+p+o+t+t+t+m+s+y+s+s+o+y+x+y+y+x+y+x+x+y+y+x+y+B+y+B+B+B+B+C+C+B+C+B+C+B+C+A+C+C+A+C+C+D+C+C+C+C+C+C+D+C+C+C+B+C+C+A+C+B+B+y+B+y+y+C+y+y+x+y+x+y+y+y+x+x+o+y+m+y+y+o+x+m+y+m+m+t+m+m+i+f+f+h+h+k+i+0+g+8+8+g+8+8+8+8+b+8+6+5+5+|+6+6+6+6+7+[+[+}+[+(+}+",
323"_._.8.8.j.4.4.4.4.|._.4.4.k.k.V.,+~+^+_+!+^+_+!+(+^+[+|+(+[+}+[+[+|+6+5+6+|+6+6+6+8+6+0+6+6+5+8+5+8+8+8+8+g+0+f+0+f+0+h+h+h+i+f+m+o+o+f+o+o+m+o+o+o+m+s+m+y+x+m+y+x+y+y+s+y+y+y+x+y+y+y+y+A+B+B+B+B+B+B+B+B+B+B+C+C+C+C+C+C+C+C+D+C+D+D+C+D+C+C+D+D+C+D+C+C+C+C+C+C+C+B+B+B+B+B+C+B+B+C+y+B+y+y+y+y+y+y+y+y+x+x+x+x+y+y+s+m+s+m+y+o+q+p+m+p+o+f+f+h+h+c+f+0+g+8+8+0+f+0+4+8+6+0+6+2+7+6+5+6+|+|+}+}+[+}+[+(+(+(+",
324"4.4._.4.j.4.j.k.k.4.4.8.4.|.4.k.V.`.'+^+^+^+_+(+}+^+}+|+[+|+|+4+|+|+6+6+8+6+6+7+6+6+|+0+0+8+5+8+8+0+0+8+0+i+8+g+f+i+i+i+c+m+m+o+o+f+m+m+p+t+m+o+t+m+o+x+s+y+y+s+y+y+y+y+x+y+y+y+x+x+x+y+B+B+A+B+B+C+C+C+C+C+B+C+C+C+C+D+C+C+D+C+D+C+C+D+D+D+E+D+D+C+D+C+D+F+C+C+C+C+C+C+B+B+B+y+B+B+y+B+B+B+B+B+y+y+y+y+y+o+y+m+y+y+t+y+o+y+o+s+s+m+m+h+m+o+o+h+i+c+h+f+8+0+0+0+8+8+8+8+8+8+6+8+6+|+7+6+6+6+|+6+|+2+}+|+[+}+(+(+",
325"k.4.4.4.4.8.j.k.4.8.8.4.4.4.4.4.k.Z.Z.'+(+^+(+(+[+|+|+|+7+7+7+|+4+6+6+6+5+6+9+5+8+b+0+6+7+5+f+0+8+8+b+f+f+c+c+f+i+i+i+f+m+o+i+m+m+m+o+o+s+s+t+m+s+s+x+o+t+x+m+y+y+y+y+y+y+y+y+y+B+B+B+B+C+B+B+B+C+C+C+C+C+D+C+C+C+C+E+D+D+D+D+D+D+D+D+D+D+D+E+D+D+D+C+C+C+C+C+C+B+F+C+C+C+A+C+B+B+B+y+y+B+y+y+y+y+x+y+y+y+x+x+y+m+m+y+s+s+m+t+o+m+m+q+p+k+p+i+i+i+f+0+8+8+8+0+8+8+6+0+5+6+6+8+6+6+4+6+4+4+[+|+4+4+|+[+(+}+(+^+_+",
326"_.4.j.k.j.4.k.k._.4.4.4.|.k.4.4.k.F.S.-+[+|+|+[+[+6+|+|+|+|+6+|+6+6+8+0+5+5+0+8+8+b+8+0+b+0+b+0+b+0+c+i+i+h+f+f+f+f+m+f+m+m+p+o+t+s+m+y+o+x+o+y+y+m+x+x+y+y+x+x+y+y+y+y+B+y+B+B+B+C+B+B+C+C+C+C+D+D+D+C+D+C+D+D+D+D+C+E+D+D+D+D+D+D+D+D+D+D+D+D+D+F+D+C+D+D+E+C+B+C+B+C+C+C+B+B+C+y+B+y+B+B+y+y+y+y+y+m+y+y+m+y+y+s+t+m+m+m+s+m+p+f+i+m+i+i+g+f+c+b+f+9+8+8+5+8+0+4+c+0+6+6+|+6+6+6+|+|+7+}+}+^+^+|+}+(+}+_+^+^+",
327"4.4.4.4.4.j.k.k.4.4.4.k.4.4.4.4.k.k.n.`.'+_+|+|+4+|+|+6+6+|+5+7+|+8+6+8+0+6+8+4+0+8+b+8+f+i+f+b+f+g+i+h+o+f+h+i+m+m+o+m+m+s+t+s+m+o+y+y+x+y+x+x+x+y+y+y+y+y+B+y+C+B+C+B+B+B+B+C+C+D+C+C+D+D+C+D+C+D+D+D+D+D+D+D+D+D+D+D+D+D+E+E+D+E+D+E+D+D+D+D+E+D+D+C+D+D+D+C+C+B+B+D+B+B+B+B+B+y+B+y+y+y+y+y+y+x+y+x+x+s+y+s+s+o+s+y+o+o+o+q+o+h+h+f+i+i+c+8+8+0+8+5+9+5+0+0+8+6+6+|+0+|+6+6+4+4+|+|+|+|+^+}+|+^+(+^+^+(+_+_+",
328"_.4.k.4.4.k.|.4.j.j.j.j.k.j.j.4.4.4.4.S.`.!+6+6+6+6+6+5+6+6+6+5+5+5+0+8+0+6+0+8+0+8+i+0+g+f+f+f+0+g+i+f+o+o+m+p+m+m+t+s+s+s+s+x+x+x+x+x+y+y+x+y+y+x+B+B+B+B+C+C+B+C+C+C+C+C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+E+D+E+D+D+E+E+E+D+E+D+D+D+D+D+D+D+D+C+D+E+C+C+B+C+B+C+A+C+B+y+C+y+y+y+y+y+y+y+y+y+f+x+s+m+x+s+m+m+s+p+m+m+m+m+f+h+f+h+i+g+g+8+8+8+8+5+7+6+4+8+6+4+4+6+6+4+|+|+4+|+^+4+[+^+}+}+^+_+_+)+^+!+'+",
329"4.4.4.8.4.4.4.j.k.4.j.k.j.j.j.j.j.8.j.k.E.Z._+7+6+6+6+8+6+6+0+8+8+8+8+8+8+0+8+c+b+g+f+i+f+i+m+h+f+f+f+m+o+o+q+m+t+t+s+y+y+o+y+y+y+y+x+y+B+y+B+B+B+B+B+B+B+B+C+C+D+C+C+D+C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+E+D+D+D+D+C+D+E+D+D+D+D+E+D+E+D+D+D+D+D+E+D+E+E+D+C+D+C+C+B+C+A+C+B+B+B+C+A+y+y+y+y+y+y+y+y+y+y+x+x+x+s+o+y+p+s+o+o+q+o+i+i+o+i+h+f+0+0+0+5+8+5+0+8+8+6+6+6+4+6+}+|+6+|+4+4+4+^+(+_+_+|+)+^+^+^+!+'+)+'+~+",
330"4.k.4.4.j.4.4.j.k.4.j.j.j.j.j.4.8.j.8.4.k.E.=+}+6+6+5+5+0+5+8+5+8+8+0+0+g+f+0+f+0+g+f+f+o+i+o+p+m+o+o+s+s+y+t+o+y+o+m+x+y+y+x+y+x+B+y+B+x+B+B+B+B+B+C+C+B+C+C+C+D+D+E+D+D+D+D+D+D+D+D+D+E+D+E+D+E+D+E+D+D+D+E+E+C+D+E+E+E+D+D+E+D+F+E+D+D+E+D+D+D+D+C+D+C+D+C+C+B+C+C+A+C+B+B+y+A+B+y+y+x+y+y+y+x+x+y+o+s+t+s+m+p+p+m+o+f+h+o+i+i+i+i+c+i+c+8+8+8+8+6+6+6+|+|+4+6+4+^+4+4+|+|+^+^+(+|+[+^+^+^+^+~+(+'+)+~+)+'+~+",
331"j.4.4.4.k.4.j.k.k.j.j.j.j.j.j.j.j.j.j.j.4.k.S.=+(+6+8+8+8+c+0+8+8+8+i+f+f+i+i+f+i+i+i+o+f+m+s+m+m+s+s+t+y+m+w+y+y+x+y+y+y+B+y+B+B+B+B+B+C+C+C+C+C+C+D+C+C+D+D+D+D+D+E+D+D+D+E+E+D+F+E+D+E+E+E+E+E+F+E+F+E+E+E+E+E+D+E+D+D+E+E+D+E+D+D+E+E+D+D+D+D+C+D+C+B+C+C+C+B+B+C+B+B+B+B+B+B+y+x+y+y+x+x+m+x+y+m+s+o+m+m+m+o+m+o+f+i+o+f+i+f+f+0+b+8+8+6+0+5+6+6+6+6+6+6+^+4+|+|+^+|+(+^+^+^+4+^+)+)+'+^+~+)+_+)+~+'+~+>+,+",
332"j.j.j.|.|.4.j.k.k.4.j.j.j.j.j.j.j.j.j.j.k.|.j.S.=+[+5+5+8+b+f+g+0+g+f+i+i+i+h+m+m+m+m+m+o+m+x+s+t+s+y+m+y+x+y+y+y+y+A+x+B+y+B+B+B+C+C+C+C+C+D+C+D+D+D+D+D+D+D+D+E+E+E+D+D+E+D+E+D+D+F+D+D+D+E+D+E+D+D+E+D+E+E+D+E+D+E+E+F+D+E+D+E+E+F+D+D+E+D+D+E+D+C+C+y+y+B+B+A+B+B+B+B+y+y+y+y+B+y+x+y+y+x+y+m+x+s+m+s+p+m+m+i+i+h+f+h+h+h+f+0+b+f+b+6+0+6+0+7+7+6+6+|+4+|+[+^+|+|+^+|+|+^+_+^+)+^+^+)+)+^+'+)+~+)+)+-+~+>+,+",
333"j.k.n.k._.k.j.E.4.j.j.j.j.j.j.j.j.j.E.E.4.j.4.k.S.=+5+f+f+f+f+f+g+f+i+h+h+p+p+p+m+q+o+y+y+x+s+y+y+y+x+y+y+y+y+y+B+A+B+B+C+C+A+C+D+C+D+C+D+C+D+D+C+D+D+D+D+D+D+D+D+E+E+E+E+E+E+E+E+E+D+E+E+E+E+E+D+E+E+E+E+D+E+E+E+E+D+E+D+E+D+E+E+D+D+D+E+C+C+D+D+C+C+B+B+B+y+B+B+B+y+y+B+y+B+y+y+y+x+m+y+x+y+m+s+m+m+p+m+q+q+i+o+f+f+h+g+g+8+0+b+0+b+8+6+8+9+|+6+[+5+5+|+|+[+^+}+_+}+[+^+_+_+^+)+^+^+'+~+'+)+<+~+)+~+,+>+>+,+-+",
334"k.k.|.4._.j.k.j.j.j.j.E.E.j.S.j.E.E.E.E.E.j.8.j.k.S.(+0+g+g+f+f+o+o+m+o+m+m+m+p+s+x+s+s+o+x+x+x+y+y+y+x+x+y+y+B+B+B+B+C+C+D+C+D+D+C+D+D+D+D+D+D+D+D+D+D+E+D+F+D+E+E+F+E+E+E+E+E+E+E+E+E+E+D+E+E+E+F+E+E+E+D+E+E+D+E+E+E+F+D+D+D+E+E+D+D+D+D+C+D+D+C+B+C+B+x+x+x+y+B+y+C+y+y+y+y+x+x+y+x+x+m+m+y+s+s+m+o+h+f+m+h+h+f+g+f+0+g+b+8+9+5+8+6+6+6+7+5+5+}+[+}+[+^+}+_+^+(+}+_+^+~+~+~+_+_+_+'+)+)+)+)+~+-+~+)+>+>+>+,+",
335"k.k.4.4.4.j.E.j.k.k.j.E.E.E.S.S.E.E.E.k.k.j.j.j.j.j.=+|+f+f+m+m+o+p+p+m+q+p+s+y+s+o+y+y+y+y+x+y+y+y+B+B+B+B+C+C+C+C+C+C+C+D+E+D+D+D+D+D+D+E+D+D+E+D+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+D+D+E+C+D+D+C+C+B+B+B+B+C+B+x+p+x+x+x+y+x+x+x+x+x+y+x+m+m+s+s+m+f+m+o+o+o+m+i+f+i+g+0+0+g+0+0+8+5+8+5+7+6+6+5+[+|+7+}+(+^+^+^+(+(+_+^+_+~+^+~+~+~+'+'+<+~+)+)+>+>+>+-+,+>+>+,+ +",
336"|.4.4.4.j.j.j.E.F.k.E.k.j.j.S.E.E.E.E.E.E.k.j.j.j.j.E.!+6+o+o+s+m+o+y+s+y+o+x+y+x+y+y+y+y+B+B+B+B+A+B+A+C+C+C+C+D+D+D+C+D+C+D+D+D+D+D+E+D+E+E+E+F+E+F+E+E+E+F+E+F+D+E+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+E+E+D+E+D+D+D+C+D+E+B+B+B+A+y+C+x+B+x+p+m+m+x+B+y+y+y+x+m+y+m+x+m+m+s+p+o+m+h+f+i+f+c+g+8+g+8+8+6+8+8+8+5+6+6+6+|+|+|+[+[+(+}+_+_+^+^+^+^+^+^+_+~+)+'+'+'+)+~+)+>+>+~+'+,+>+,+>+@+>+-+>+",
337"4.j.j.4.j.j.j.j.E.k.k.j.j.E.E.E.j.E.E.j.E.E.j.j.j.j.j.S.[+f+m+s+y+s+m+y+y+y+y+y+A+x+y+y+B+B+B+B+B+D+C+C+D+C+D+D+C+D+E+C+E+E+D+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+E+F+E+F+E+F+F+E+E+E+E+E+E+E+F+E+F+E+E+E+E+E+E+D+E+E+E+D+E+E+D+D+E+D+E+D+E+C+C+C+B+C+B+y+y+B+y+y+t+s+p+p+m+s+m+x+o+o+y+s+y+o+p+p+m+m+p+o+i+h+0+c+f+f+g+5+6+5+8+6+6+6+6+7+6+4+6+6+|+|+^+(+^+(+(+!+^+_+^+^+^+'+-+'+'+)+)+~+,+!+;+,+>+@+,+~+@+;+,+;+&+ +",
338"j.j.j.j.k.j.j.E.E.k.k.j.j.S.E.j.E.S.S.E.j.E.E.j.j.j.j.j.Z.|+f+t+o+y+x+x+y+y+y+y+B+B+B+B+B+C+C+C+C+C+C+C+D+D+D+D+D+D+D+D+D+E+E+E+D+E+E+F+E+E+E+E+F+F+F+E+F+F+F+F+F+F+F+E+E+F+F+G+E+E+E+E+F+E+E+E+E+E+F+F+E+E+E+E+E+D+E+D+E+E+D+D+D+C+C+C+C+C+y+B+y+y+B+C+B+x+y+y+s+p+h+h+s+o+y+m+s+m+m+s+m+m+i+i+k+i+8+c+f+8+8+0+8+9+6+5+5+6+7+|+6+4+|+|+4+^+^+(+}+(+)+_+(+!+(+'+~+~+>+)+'+>+)+~+'+~+@+~+@+)+,+;+,+,+`.`. +`. + +",
339"j.j.E.E.E.j.j.E.S.k.j.j.j.S.E.E.j.S.F.E.E.j.E.E.S.E.j.k.j.Z.0+m+y+y+B+y+B+C+B+C+B+C+B+C+C+C+D+D+D+C+D+C+D+D+D+E+D+D+E+D+E+E+E+D+E+D+F+F+F+E+F+F+E+E+E+F+E+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+E+F+F+E+E+E+F+E+F+E+E+E+D+E+D+D+E+D+C+D+C+C+B+C+B+B+B+y+y+y+x+y+x+x+o+m+h+f+f+s+m+o+t+m+m+o+o+i+h+h+f+f+c+8+0+b+8+8+4+8+7+|+4+8+|+7+|+5+[+[+^+^+|+_+_+'+^+'+_+_+^+~+'+'+~+~+,+~+,+>+)+>+)+>+,+ + +>+`.`. +@+`.`. + +",
340"k.E.E.k.k.j.j.S.S.F.j.j.S.S.E.E.j.S.F.k.k.j.S.S.E.S.E.j.8.j.(+f+x+y+B+B+B+B+C+C+D+C+D+C+D+D+D+C+E+D+D+D+D+D+E+E+E+E+F+D+E+E+E+E+F+E+E+F+F+E+F+G+F+G+F+F+F+G+G+F+F+F+G+F+F+F+F+G+E+F+E+E+E+E+E+E+F+E+E+E+E+E+E+E+E+D+D+D+D+D+C+D+C+C+B+A+B+B+B+y+y+x+B+y+y+y+x+x+s+p+h+f+0+m+m+s+m+p+h+h+h+i+i+c+8+8+6+8+0+8+8+7+[+6+6+|+|+|+[+|+|+|+^+(+|+_+(+^+_+~+~+'+_+~+^+-+)+'+,+~+-+>+)+>+,+>+>+ + + +-+ + +;+`. +W. +`.V.",
341"E.E.E.k.j.j.E.S.V.j.j.j.S.E.S.E.S.E.E.E.j.E.j.E.E.k.j.j.j.j.S.5+o+B+B+B+C+C+C+C+D+C+D+D+D+E+D+F+D+E+E+E+D+F+E+E+E+E+D+E+E+F+F+E+E+F+F+F+F+F+G+F+G+F+F+F+F+F+F+F+G+G+F+F+F+G+F+F+F+E+F+F+F+F+E+F+E+E+E+E+E+C+E+E+E+D+D+D+D+C+D+C+C+C+B+B+A+B+y+x+y+y+x+x+x+s+y+m+t+o+m+f+h+q+m+h+o+q+i+c+c+i+f+0+8+8+6+6+5+7+6+5+[+|+}+|+|+}+^+[+|+^+[+(+!+'+'+!+'+'+'+_+'+'+,+)+>+>+,+{+>+~+ +>+>+`.`. +,+`. +`.;+W. +W. +V.@+ +",
342"k.k.j.E.j.j.E.E.S.E.8.E.S.E.E.E.S.S.E.j.j.j.E.E.j.E.j.j.j.j.j.!+5+x+C+C+E+C+D+D+E+D+D+D+E+D+E+E+E+E+E+E+F+E+E+E+F+E+E+F+E+F+F+F+G+F+G+G+F+F+F+E+F+G+G+G+F+G+G+F+F+G+G+F+F+F+F+G+F+F+F+E+E+F+F+F+E+F+E+E+E+E+E+C+E+C+C+C+C+C+C+C+A+C+A+B+y+B+y+x+y+y+x+t+t+m+t+s+s+q+o+f+m+p+o+c+f+f+i+0+0+0+8+8+6+6+6+b+6+6+6+7+7+[+[+|+[+}+(+_+^+_+_+_+(+~+_+<+)+-+'+~+)+~+~+'+>+>+,+>+>+,+>+,+>+ + + + +;+ + + +W. +W.@+W.W.W.",
343"j.j.E.j.E.E.E.E.E.S.8.E.E.E.j.S.E.S.k.E.j.E.S.j.E.S.E.E.S.j.j.j.[+f+B+C+D+E+D+C+E+D+E+E+E+E+E+E+E+F+E+F+E+E+E+E+E+F+F+F+F+F+E+F+E+G+F+F+G+G+F+F+G+F+F+F+G+F+F+F+G+F+E+G+F+F+E+E+F+E+E+F+E+E+E+F+E+C+E+D+C+D+D+E+D+D+D+C+C+A+B+B+B+y+y+B+y+y+y+y+x+x+o+s+s+o+s+o+o+f+o+o+f+i+h+i+b+0+0+c+6+8+8+6+6+6+6+|+6+}+6+|+^+4+|+(+(+(+^+^+^+^+(+(+~+'+'+)+'+,+)+)+,+>+>+>+-+,+>+>+)+ +;+ +@+;+ + + + + +`.V.@+W.@+W.K.W.W.",
344"j.j.j.S.S.E.S.E.j.S.S.S.E.E.j.;+E.E.E.j.S.S.S.E.S.E.E.S.S.j.j.j.E.[+m+D+D+D+F+D+E+F+D+F+E+E+F+E+E+F+E+G+E+F+F+F+E+F+F+G+F+F+F+G+F+G+G+G+G+G+G+F+G+G+F+F+F+F+F+F+G+G+E+F+F+F+F+E+F+F+C+E+F+E+E+E+E+E+C+D+C+D+D+C+D+C+C+C+C+B+A+y+y+B+x+B+y+y+t+y+y+y+o+o+s+o+m+m+m+m+f+h+h+i+f+0+8+f+8+4+b+5+5+7+|+4+|+|+|+}+^+[+^+_+}+|+_+'+~+~+'+^+'+^+_+,+'+)+-+-+>+~+,+,+-+ +>+$+>+,+,+ +`.`.W.@+W.W. +W.W. +W.V.W.@+V.@+@+W.",
345"S.j.E.S.S.j.S.j.S.S.S.E.E.E.E.S.E.S.j.E.j.S.S.S.S.S.S.S.k.j.j.j.j.S.0+B+D+F+D+E+F+F+E+E+F+G+E+F+F+F+F+F+G+F+F+F+F+F+F+G+G+G+G+F+G+G+G+F+G+G+G+G+G+F+G+F+G+G+G+G+G+F+F+F+F+F+E+F+F+F+E+E+D+E+E+E+E+D+D+D+C+C+C+C+B+A+C+C+B+y+B+B+x+x+y+x+y+x+o+t+s+m+m+m+o+m+o+p+k+f+i+c+c+c+b+8+0+8+6+0+6+6+6+5+|+|+|+|+^+4+}+^+(+(+(+_+'+'+'+~+~+'+'+~+'+~+,+'+>+>+>+>+>+>+ +-+ + +>+ + +>+ +@+Z.V.`. + +K.@+V.V.@+V.K.K.H.W.K.",
346"E.j.S.S.E.E.E.j.j.S.S.E.E.S.E.E.S.E.E.E.E.S.S.j.S.S.S.S.S.j.k.j.j.j.(+f+C+E+F+E+F+F+F+F+F+G+G+G+G+G+G+F+G+G+G+G+F+G+F+G+G+F+G+G+G+F+G+G+G+F+F+F+G+G+G+F+F+F+F+F+G+G+E+F+E+F+E+E+F+F+E+E+E+C+D+D+D+D+C+D+B+C+C+B+C+B+B+A+B+y+A+y+y+y+y+x+y+s+s+t+p+t+m+m+p+m+o+h+i+f+f+f+b+6+0+8+0+6+6+6+6+6+|+6+[+|+^+|+^+^+_+'+^+_+!+(+^+^+'+~+~+'+,+,+'+~+>+~+,+-+>+,+ + + +`. +`.`.`. +W.`.@+@+Q.W.W.V.V.@+W.V.@+F.W.W.W.W.K.",
347"j.j.S.S.E.S.j.j.S.j.;+j.S.S.E.E.E.E.E.S.E.E.S.j.E.S.S.S.S.S.j.j.8.j.E.[+x+D+D+F+F+F+F+F+F+G+F+F+F+G+G+G+G+G+G+G+G+F+G+G+G+G+F+G+G+G+G+G+F+G+G+G+G+F+F+G+F+F+E+F+F+F+F+C+F+D+E+E+E+D+D+C+E+E+C+C+C+C+C+C+C+B+B+B+B+B+B+B+y+y+x+y+x+t+y+y+o+p+m+m+o+h+i+h+o+o+f+o+i+c+c+4+6+5+|+c+4+4+6+6+7+(+}+[+}+(+[+_+^+^+'+_+~+_+_+)+~+~+~+-+-+,+'+~+,+-+,+,+`.,+>+>+,+`. + +`. +&+ +`. +Q.W.V.W.W.;+K.W.W.F.@+F.@+K.H.H.H.W.",
348"E.E.j.S.S.j.S.S.S.S.S.S.;+S.E.;+j.E.S.j.S.S.S.j.S.E.E.S.S.E.k.j.j._.j.E.f+B+F+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+F+F+G+G+G+F+F+G+G+F+F+E+F+F+F+E+E+E+E+E+E+E+E+D+D+E+D+C+D+C+C+B+B+C+B+y+B+y+B+y+y+y+x+s+s+t+o+s+o+p+p+m+o+i+o+h+i+m+c+i+b+8+0+6+6+5+|+0+4+6+|+|+6+|+(+(+_+^+(+(+^+^+)+^+!+)+_+^+>+)+~+)+>+>+ +,+;+,+>+,+`.`. + +@+`.`.`.`.`. +;+V.V.W.W.@+W.W.V.W.W.W.V.K.K.K.K.Q.W.K.H.",
349"j.E.S.j.S.S.S.j.E.j.S.j.S.S.S.S.S.S.S.S.S.Z.S.S.S.j.E.E.-+k.E.j.j.j.j.j.(+m+C+F+F+F+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+F+F+F+F+F+G+C+F+E+E+E+E+E+D+D+E+D+D+D+D+C+C+B+C+C+C+C+A+B+y+y+B+y+x+x+t+s+y+y+y+s+x+o+q+p+o+o+i+i+c+o+b+f+i+c+c+|+4+4+6+8+8+6+|+|+4+|+6+|+_+_+(+(+^+^+_+^+)+^+_+'+'+^+~+~+,+-+,+>+,+-+,+-+,+ + + +`.-+`.`. + + +W.W.@+W. +W.W.W.V.Q.W.W.H.W.Q.Q.K.V.V.W.H.K.H.K.",
350"S.j.j.S.S.S.8.S.j.j.E.S.S.S.S.Z.S.E.j.S.(+S.Z.E.S.E.E.S.E.E.E.E.j.j.j.j.j.5+x+D+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+G+G+G+F+F+F+F+E+F+F+E+F+E+E+D+E+D+D+E+E+E+C+C+C+C+C+A+C+B+B+B+B+y+y+y+y+x+s+o+m+m+s+o+m+s+m+q+h+f+h+f+c+8+f+4+0+c+b+4+^+|+|+6+7+7+|+^+|+^+|+|+^+^+_+^+'+'+^+'+^+'+-+'+~+,+,+,+-+)+'+,+ + + + +,+,+`.`. + +@+W.`.W. + + +V.W.W.W.W.W.K.V.K.K.K.K.W.V.W.K.K.H.H.Q.H.H.K.",
351"S.S.j.j.S.!+j.S.S.8.j.E.E.E.S.S.;+S.j.S.=+Z.Z.E.S.E.E.S.E.E.j.j.j.E.k.j.8.S.f+C+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+F+F+F+G+C+F+F+F+E+E+E+D+E+E+D+D+E+D+C+C+C+C+C+A+B+B+B+B+B+B+y+y+v+y+x+s+m+x+m+s+y+o+m+q+o+i+h+k+h+i+c+0+c+0+4+b+0+6+|+'+|+6+|+6+[+^+|+^+^+4+^+(+(+^+^+)+)+_+)+'+)+'+'+'+,+,+~+,+ +>+>+>+ +,+;+ +`.>+ +W.;+`.`.W.`.V.@+W.W.W.@+H.@+V.K.@+K.W.W.W.K.K.H.H.K.K.Q.K.H.m.t.",
352"E.E.j.S.;+j.j.!+j.S.S.S.E.S.;+E.S.8.S.S.S.S.S.E.E.S.E.E.E.S.E.E.j.E.j.j.8.j.5+x+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+F+G+G+G+G+G+E+F+G+F+C+F+E+C+E+C+D+D+D+D+D+D+C+B+C+B+B+y+y+B+B+y+y+x+x+y+s+y+s+t+o+q+o+p+m+o+m+h+k+c+0+k+c+0+b+8+c+6+|+4+0+6+^+^+|+|+|+|+|+^+|+^+^+^+'+_+~+'+'+)+)+^+)+'+)+)+'+,+`.>+ +,+-+`.,+,+ +`.;+ +`. +`. +@+V.;+V.W.W.@+Q. +W.W.H.K.W.K.V.K.H.K.F.K.H.m.H.s.w.Q.s.H.w.w.",
353"S.j.S.S.S.j.j.(+Z.S.S.E.E.S.S.Z.S.j.j.S.S.S.S.E.S.S.E.E.E.V.k.j.E.j.j.j.4.j.E.f+C+G+G+G+G+G+G+G+G+E+F+G+G+G+G+G+G+G+G+G+G+G+G+G+F+G+F+G+G+F+E+F+F+E+E+E+D+E+E+E+E+E+D+D+C+C+D+A+C+A+B+y+x+B+y+y+x+B+t+x+s+m+s+t+m+p+m+m+h+k+p+i+c+0+0+c+0+c+4+6+6+6+^+^+6+c+^+^+!+4+^+4+^+^+!+^+^+^+^+^+_+_+)+^+'+^+)+>+>+>+>+>+`. + +,+`. + + + +;+`.W.`.V.`.W.W.V.@+W.K. +W.W.W.H.Q.K.V.W.H.H.K.H.H.H.K.H.K.t.w.K.H.s.w.m.m.s.",
354"E.S.S.S.j.S.S.S.S.Z.S.S.S.S.S.S.S.S.E.j.S.Z.S.E.E.E.j.j.S.S.j.j.j.j.k.j.8.j.j.!+s+F+G+G+G+G+G+G+G+E+F+F+G+G+G+G+G+G+G+G+G+G+G+G+F+G+F+F+F+F+F+F+F+E+E+E+D+E+D+D+C+E+C+D+C+B+C+B+C+y+B+B+x+y+x+t+s+s+t+o+s+p+s+i+o+i+k+i+f+f+i+c+0+8+0+c+6+4+|+|+6+4+^+^+6+|+[+)+^+|+^+4+'+^+^+(+^+'+'+^+~+~+'+'+~+>+)+)+-+>+,+>+ + + + +;+`.W.>+ + +`. + +W.W.@+ +W.V.K.@+K.V.W.K.K.V.K.K.K.H.H.t.K.H.s.K.s.K.m.w.w.m.w.m.m.m.m.",
355"S.j.S.S.S.j.!+Z.S.Z.Z.S.Z.S.E.S.Z.S.S.S.S.Z.E.E.S.k.j.E.S.k.j.E.j.E.j.4.j.8.4.k.6+B+G+G+G+G+G+G+G+F+E+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+E+E+C+E+E+E+E+D+E+D+D+D+D+C+C+B+B+t+B+B+y+y+t+y+o+m+s+m+s+s+p+p+p+o+o+i+f+i+i+c+c+c+i+b+4+c+6+6+4+|+|+|+|+^+'+^+6+^+4+-+)+'+^+'+^+^+!+'+'+^+'+'+'+^+,+'+{+>+ +>+)+ + + +W.W.H.W. +W. +`.`.`. +V.W. +W.W.H.W.@+V.K.V.K.F.K.F.H.K.K.K.w.Q.w.Q.m.K.w.s.s.t.m.K.w.m.s.q.f.q.",
356"S.S.S.8.S.S.S.S.S.S.Z.E.S.V.E.E.S.S.S.S.S.S.S.E.S.j.E.E.E.4.j.j.j.E.4.4.j.j.4.4.E.m+F+G+G+G+G+G+G+z+E+E+G+G+G+G+G+G+G+G+G+G+F+G+F+F+F+F+E+E+E+E+C+E+D+C+C+C+C+E+B+C+C+B+B+y+y+B+B+y+o+y+t+o+s+m+p+m+o+i+m+m+i+i+i+i+e+c+6+0+0+|+}+4+4+|+|+[+(+[+[+|+'+^+|+^+4+-+)+!+^+~+^+^+)+)+'+)+)+)+~+'+,+,+>+>+>+ + + + +H.n.F.n.Q.>+V.W. +W.V. + +W. +W.W.W.H.K.V.H.H.K.K.K.K.H.H.n.w.K.t.w.t.m.s.w.q.s.s.m.m.w.m.m.m.m.f.",
357"j.S.S.j.S.S.(+S.S.S.Z.j.E.E.E.j.E.S.S.S.S.S.E.V.E.E.E.E.E.8.E.E.k.k.4.8.j._._._.k.(+C+G+G+G+G+G+G+E+E+F+F+G+G+G+G+G+G+G+G+G+G+F+F+F+F+C+E+E+E+E+E+D+D+D+C+E+C+B+B+B+B+B+y+y+t+w+y+t+o+w+m+m+s+q+p+k+h+h+i+i+c+f+c+c+0+4+4+4+4+|+|+|+^+^+|+}+}+|+^+^+^+^+^+^+^+`.-+)+'+-+!+_+'+'+>+,+'+'+-+)+>+>+ +W.W.Q.H. +W.n.t.t.t.H.W.W.W.W. +W.@+W.W.W.Q.H.H.H.W.H.H.H.H.H.K.t.K.m.w.K.w.w.w.m.Q.m.m.t.q.m.f.m.m.m.f.f.f.f.",
358"E.j.j.S.(+S.S.S.E.S.E.j.S.S.E.E.S.E.S.Z.E.S.S.F.E.j.S.l.k.j.E.E.k.j.j.j.j._.4._.4.j.f+C+G+G+G+G+G+E+E+E+E+F+G+G+G+G+G+G+G+G+G+F+F+E+F+E+D+D+D+D+C+C+E+C+B+B+C+B+A+A+y+y+s+y+m+t+y+o+m+o+q+i+o+i+m+i+8+c+i+0+c+c+c+4+6+6+|+^+^+^+^+^+_+_+^+^+<+^+[+^+)+^+'+'+>+`.-+>+)+>+~+,+>+~+'+>+>+>+>+>+W. + +n.n.H.H.V.K.2.t.t.t.}.W.W.W.K.W.W.W.Q.W.V.Q.Q.H.w.H.Q.Q.s.H.s.w.s.H.w.m.w.w.w.w.m.m.q.q.m.f.m.f.f.m.f.f.f.f.f.",
359"E.S.j.j.S.;+S.E.j.E.E.E.E.;+j.S.S.j.S.S.E.S.F.E.j.j.S.F.j.j.E.k.4.j.j.j.j.8.j._.4.4.=+B+G+G+G+G+G+F+E+E+F+F+G+G+G+G+G+G+G+G+F+F+F+F+D+E+E+D+C+C+D+C+B+C+B+B+A+B+B+y+x+B+t+o+t+s+m+p+m+o+h+h+c+i+i+c+8+g+b+4+6+6+6+6+^+|+|+(+^+4+)+'+^+'+^+'+)+-+)+'+^+)+)+)+-+-+>+;+,+,+,+,+>+>+ +>+W.>+>+W.Q. +F.}.t.Q.W. +F.n.n.t.}.n.Q.W.V.H.@+K.K.W.W.K.K.Q.K.H.T.w.w.K.w.K.s.w.w.T.s.t.w.m.m.m.f.m.f.f.m.f.f.m.f.f.f.i.f.h.",
360"j.j.S.!+S.E.S.j.j.S.E.E.S.E.j.S.S.E.Z.E.k.S.E.j.j.E.S.4.j.k.E.E.k.j.E.4.4.j._.` 4._.j.6+C+G+G+G+G+G+E+E+z+E+F+G+G+G+G+G+G+G+F+F+E+D+E+C+D+D+C+C+B+C+B+y+y+B+A+y+x+B+s+s+m+m+m+s+m+k+m+h+c+c+6+c+0+4+5+0+6+6+|+6+6+6+^+[+|+_+^+)+)+^+)+)+{+`.>+>+)+)+)+>+{+ +&+~+>+>+{+>+>+>+>+>+ + +H. +>+H.H.W.F.2.H.Q.Q.H.H.t.}.n.n.n.n.H.K.H.W.H.H.K.Q.H.t.s.t.w.H.t.s.m.m.m.t.s.t.w.m.s.m.f.m.m.f.m.f.f.f.m.h.f.h.f.h.i.f.h.",
361"E.E.j.E.S.E.E.l.j.E.E.E.V.S.j.S.E.E.S.V.k.E.E.E.E.E.k.4.j.k.k.k.k.k.k.4.j.k._._._._._.S.i+C+G+G+G+G+G+F+E+z+F+G+G+G+G+G+G+F+F+D+F+B+E+D+C+C+E+A+B+B+y+v+B+t+x+x+s+s+t+q+q+o+m+p+k+f+c+i+c+8+8+6+6+|+|+7+|+|+4+4+4+^+^+'+_+'+~+)+)+)+>+$+`. +-+$+{+$+$+++$+$+$+++++++M.P.++W.>+,+`.W.t. +W.H.n.H.n.n.n.n.n.s.H.n.}.}.t.<.t.H.H.H.K.H.m.Q.K.m.Q.Q.s.s.m.w.m.s.s.s.q.m.m.f.q.m.m.q.f.f.f.f.f.h.f.h.h.f.f.i.f.f.h.f.",
362"j.j.S.S.S.E.k.E.j.S.E.E.F.j.E.S.E.S.E.k.j.j.E.F.l.l.j.4.k.k.j.k.|.k.k.4.k.4._._._.` ` 4.=+t+G+G+G+G+G+G+F+F+G+G+G+G+G+G+F+F+F+F+u+E+C+D+C+B+C+C+B+x+y+t+x+y+t+y+o+m+m+o+o+q+o+m+h+b+c+c+c+4+6+4+|+|+|+4+|+^+4+4+^+_+^+'+~+'+-+-+)+>+>+$+>+Q.$+$+++++P.P.P.P.P.P.r.P.P.P.o.Q. + +W.W.t.W.W.Q.n.H.n.n.t.t.t.}.M.n.<.t.s.<.t.Q.w.H.w.H.m.s.H.m.w.w.w.q.M.q.w.m.f.q.s.m.m.s.m.f.f.q.f.f.f.f.f.f.f.f.h.f.f.e.e.e.e.e.",
363"E.j.S.S.E.E.j.E.k.E.S.E.j.j.j.E.E.F.l.l.j.E.E.k.k.k.4.j.k.4.4.k._.4.j.k.|._._.` _._.|._.E.f+F+G+G+G+G+G+G+G+G+G+G+G+F+F+F+F+F+D+C+C+D+C+B+C+A+C+v+t+B+s+t+s+s+s+s+p+q+o+i+o+i+i+8+0+c+c+6+6+|+(+^+_+|+^+4+)+^+{+)+'+>+)+'+)+>+>+&+W.$+ +M.M.++P.P.r.r.r.o.r.r.d.5.~.~.5.o.Q.W.>+ +H.n.H.W.H.t.n.H.Q.t.Q.n.}.t.n.n.2.2.t.K.t.t.w.w.s.t.K.m.t.m.s.w.s.m.s.q.f.s.o.f.f.m.f.f.m.q.f.i.i.e.h.f.h.f.f.f.i.i.-.h.-.h.^.",
364"E.S.V.F.F.E.j.j.j.E.V.k.j.E.8.;+E.E.j.j.l.l.E.k.k.|.4.4.4.4.4._._._.j.E.|.` 8.H _._.` ` j.(+y+F+G+G+G+G+G+G+G+G+G+G+G+G+E+D+F+u+D+D+C+C+A+B+u+q+k+c+x+s+q+t+p+p+o+o+o+o+c+k+c+c+6+8+6+|+6+|+|+[+}+^+|+^+)+{+)+{+)+)+>+>+>+>+ +W.$+M.P.M.M.P.r.r.d.d.~.~.P P P P A N P P 3.M.Q. +`.F.n.n.H.Q.}.n.H.H.n.s.<.<.s.t.n.t.<.m.w.w.K.w.w.m.m.m.m.m.m.s.m.s.m.t.m.f.f.q.h.f.f.f.f.f.h.m.h.f.f.f.h.f.h.e.-.-.e.0.6.6.^.6.",
365"S.S.S.E.E.p.E.E.j.E.S.p.j.S.j.j.E.E.j.l.E.j.k.4.k.k.|.k.4.4._._._.4.4.4._.H 4._.|.` ` ` _.E.0+F+G+G+G+G+G+G+G+G+G+F+G+E+F+E+E+r+D+B+B+B+C+d+e+^+6+f+t+o+m+p+q+o+p+m+o+b+0+c+b+6+4+4+4+|+6+[+(+_+^+^+(+'+'+'+'+-+$+>+&+$+$+$+++M.P.P.r.d.5.d.~.~.A A A u u c c c 0 0 u N 3.M.$+W.W.W.n.n.Q.H.<.t.H.H.s.n.<.t.H.t.w.w.w.w.w.m.m.m.p.m.m.m.q.m.m.f.f.m.w.f.m.q.f.i.f.h.f.f.m.f.h.f.f.f.e.e.i.-.e.e.e.e.^.0.^.^.h.^.",
366"S.S.E.E.S.E.j.E.E.V.E.k.j.j.E.E.E.E.E.E.l.j.k.j.E.4.4.4.4.k.4._._.4.k.4._.` j._._.` F ` _.8.S.y+F+G+G+G+G+G+G+G+z+F+G+E+D+C+B+k+B+t+C+B+u+++-+[+0+f+m+t+o+o+i+o+p+i+f+b+8+0+4+6+8+|+|+}+_+(+_+^+^+)+^+)+{+$+{+{+$+$+$+M.P.P.P.P.5.~.~.~.P A c ] ] % ] [ 0 0 0 0 0 u u N #.o.M.M.Q.H.n.2.n.t.}.H.Q.n.s.2.t.t.t.t.t.w.w.w.w.m.s.m.s.m.m.m.q.q.m.m.f.f.m.f.m.f.f.h.f.f.f.i.f.f.i.i.e.e.e.-.e.0.>.0.^.6.0.^.^.6.^.^.",
367"E.F.F.E.j.E.j.S.E.E.E.j.j.8.E.j.S.V.E.F.4.4.4.k.k.|.4.4.k.4.4._.4._._._.` _.4._.` F H ` H _.j.8+E+G+G+G+G+G+G+G+F+F+E+C+u+r+e+4+e+e+t+B+v+n.S.5+f+f+q+m+m+m+i+f+k+k+8+8+8+6+|+4+4+|+|+[+_+_+(+'+^+)+{+++$+++++++P.P.P.r.r.5.5.P P c c c ] ] % % % % % [ 0 [ 0 j 0 u u P #.o.M.M.Q.W.t.n.t.<.n.H.t.s.t.m.w.w.s.s.w.w.w.m.m.t.m.m.m.q.q.q.f.f.f.f.f.q.f.f.f.h.h.f.i.i.i.f.e.e.i.e.e.>.e.6.6.^.9.6.6.-.6.6.6.6.6.6.",
368"E.E.j.j.S.8.;+S.l.l.j.j.j.j.S.E.E.l.k.l._.8.4.k.k.k._.4.k.|.4._.4.4._._.|._.4._.` I F ` F _.j.!+B+E+G+G+G+G+F+G+F+F+E+r+e+3+^+6+|+|+c+s+r+n.=+f+y+h+i+q+q+c+c+f+h+4+8+8+6+7+(+|+4+^+^+[+^+)+^+)+{+++{+++#+#+P.r.r.d.d.~.P P c c % ) % % % % + & ) ) ) c 5 0 5 j u u N P r.M.Q.H.K.w.n.t.t.t.t.H.m.w.w.w.w.w.m.m.m.m.m.q.m.m.f.f.f.q.q.f.f.f.h.f.f.h.q.f.f.h.f.f.i.e.e.f.>.h.-.6.6.6.^.h.0.^.e.6.h.-.6.6.^.^.6.",
369"l.E.p.j.S.j.k.F.k.8.l.j.j.E.p.l.k.k.|._._._._.n.|._.4.k.k._.4._.k.` |._._._.|.` ` ` H ` F H _.E.m+E+F+G+G+F+G+F+F+E+D+d+ +=+0+m+0+^+'+c+h+-+-+6+m+i+k+f+f+c+0+c+h+c+8+c+7+|+|+|+^+^+^+3+^+{+{+++++#+#+r.r.d.5.~.P A c c ] ] ] ] ] ~ [ [ [ % % [ % ) 5 0 j j 0 j u N #.5.P.M.H.s.K.s.t.t.t.s.s.s.w.m.s.m.m.m.m.f.m.q.f.q.f.m.m.q.f.f.q.h.m.h.i.q.f.i.i.f.f.i.e.>.e.6.6.0.0.6.h.^.0.6.^.6.1.^.6.6.6.^.6.6.^.6.",
370"k.j.l.j.l.j.E.l.4.j.j.j.E.E.4.|.l.|._.8.4.4.k.k._._.j.k.k._.4._._.` _.|._._.|.` F I F _.` F H 4.[+x+E+z+G+F+F+F+E+E+C+v+-+!+o+x+i+4+>+^+0+|+W.^+i+h+c+c+0+8+0+8+c+8+6+b+7+7+^+|+^+{+{+++#+#+#+P.r.d.d.~.P A c c c ] ] % ] ] ] h h h c c 0 [ % % ) ) [ 0 0 u p j t u u N 5.M.M.H.s.H.s.w.w.s.w.T.w.w.m.q.f.q.q.f.q.f.q.f.q.f.h.h.h.f.f.q.f.f.q.i.i.i.e.0.e.6.e.e.0.>.6.^.6.-.0.^.0.^.0.6.6.0.0.^.-.h.6.-.6.6.^.",
371"E.k.j.k.j.k.l.k.k.j.l.j.E.l.|.4.4._.8.4.4.k._._._.k.k.4._._._._.` _._.|.|.|.` F ` H ` _.F H F 8.E.m+D+F+F+F+E+E+F+C+E+r+)+=+o+y+s+e+>+-+6+0+`.-+^+3+3+^+4+6+8+c+8+6+8+0+6+4+4+{+{+++#+#+r.r.d.~.P P c c ] ] > > ] ] l l d w w l l h ] c C g % % ) ) [ 0 j j j j u u N P 3.o.M.s.w.s.m.m.Q.m.m.m.m.m.q.q.q.q.q.q.h.q.f.q.m.f.m.m.q.q.i.i.i.h.f.e.e.e.5.e.e.^.6.6.^.i.>.e.e.6.e.0.>.6.h.-.h.^.6.6.6.6.6.6.-.6.6.",
372"k.E.l.l.j.S.k.4.l.4.4.k.l.4.4.j.4.|.4.j.4.4._._.4.E.n.|.F _._.` H _._.` |.` ` I F F ` ` I F F H j.5+x+E+F+F+E+C+C+C+B+r+^+=+6+q+p+k+$+F.^+6+^+-+-+>+>+!+|+|+8+4+c+6+|+6+|+3+#+#+#+P.5.d.~.P c c ] ] % % % ] ] d w w w w w w A c ] ^ [ [ A y ) @ & ) ) [ 5 j j j j u u K N 3.P.o.Q.m.s.Q.q.m.m.m.m.q.m.m.m.f.f.h.q.m.f.h.q.q.h.f.f.f.i.i.e.i.6.e.e.6.^.e.^.e.^.0.e.6.e.>.e.^.0.^.0.e.6.6.6.-.6.^.6.6.V h.6.6.-.6.",
373"E.l.l.j.j.F.l.j.k.4.k.F.|.8.j.k.k.k.|.4._.4.4.4.4.k.` ` ` ` _.F _.` I ` ` ` ` ` F F F F F F ` H _.S.m+D+E+E+E+B+A+B+B+o+c+^+-+c+p+h+Q.n.[+0+^+-+-+V.Z.'+|+6+|+|+4+4+6+^+4+:+#+r.d.P P c c ] ] ] % % > ] h P R Z Y R w C l ] _ ] ] ; % ] W j $ % % ) ) 0 0 j u t p u u N N 3.o.Q.M.m.m.m.w.q.q.m.m.m.m.m.f.f.q.f.f.h.f.o.i.f.i.i.i.h.i.e.e.6.e.6.0.0.6.6.6.0.e.0.:.0.^.e.0.0.0.e.^.^.6.-.6.9.^.6.-.6.^.:.^.6.6.6.",
374"k.k.l.|.j.k._.8.|._.k.E.|.4.k.k.|._._._._.4.4._.|.|.` ` ` _._.H ` ` F F ` ` ` F ` F F q F F H F _.j.[+x+D+C+u+r+y+y+s+p+h+4+`.^+3+{+n.k.(+f+4+^+!+=+!+(+|+|+|+|+^+|+|+|+4+#+r.P A ] % % ] + > ] h l n C C R R w d c ] ] > % % % ] % % c T g $ % ) ) 0 0 t 0 u j u u N N 3.o.s.Q.s.m.m.m.m.f.f.m.h.h.m.f.h.f.q.q.q.f.i.i.i.e.i.e.-.e.^.e.-.6.e.0.e.e.e.6.6.e.0.0.6.6.^.0.0.0.h.6.^.9.6.>.:.0.:.6.6.6.:.0.^.:.:.",
375"k.l.|.4.j.4.8.|._._.4.k.|.k.k.|.` _.` ` _.k._._.|.` ` ` H _.` ` ` F F ` _.` ` F ` F F H q q F F F _.S.f+v+r+g+y+y+x+s+s+p+e+`.-+>+`.E.Z.0+0+0+6+5+(+[+|+^+}+(+[+|+^+[+^+3+#+~.c ] % % $ ] h l w w w R h R C c ] ] > % > % ; % ] ] ) % c P c & % ) ) 0 0 0 j u p t u N K }.s.M.o.q.f.m.f.f.h.m.m.m.f.h.m.f.q.q.f.f.i.i.5.0.e.^.0.0.e.e.6.6.e.^.0.0.6.6.6.^.6.^.6.6.-.6.^.0.6.^.6.6.0.6.:.6.:.0.6.^.6.^.6.:.1.1.",
376"k.k.4.4.j.4.4._._.4.k.|._.|.|._._.` ` _.4.|._._._.` ` F _._._.` F F F ` |.I F ` F F I q q H q ` F ` |.)+e+4+m+x+t+t+t+s+m+e+-+=+Z.=+=+(+0+e+4+4+6+|+)+,+^+}+_+!+[+^+}+4+{+#+P ] ] ^ l n l T R R C l c ] c ] ) % % % & % % ; % % ] ~ ] A T c $ % ) ) 0 u p t j p t u N N 3.}.Q.s.s.h.f.h.m.h.f.q.f.q.q.q.i.i.i.i.i.e.e.e.0.e.^.e.6.0.0.0.0.0.0.0.0.0.e.e.0.0.0.e.6.e.6.6.^.6.6.^.6.6.6.:.6.:.^.1.1.:.1.:.^.^.:.",
377"4.j.4.j.8.k.|._.` 4.|.4._.` _.` _.+.` _._._.` |.` ` F H _._.` ` ` F F _.` F F F I F q q H q H F F ` |.n.n.!+o+o+s+y+m+p+i+0+|+!+[+[+[+8+c+{+{+)+^+3+>+V.!+^+_+^+~+^+^+^+)+++o.h n C w R w C l c c ] ] ] % ; % ] % % % % > % % ] % % ) A P C $ % % % ) 0 j j u t u u u N #.3.q.o.M.m.f.m.h.f.q.q.f.q.f.i.e.e.5.5.0.6.e.0.0.^.6.h.6.^.e.0.0.0.0.^.e.^.0.6.e.^.1.^.1.0.^.6.^.6.6.6.6.6.6.^.0.6.6.1.:.1.0.:.0.:.:.^.",
378"_.4.4.k.4.k.|.|.` 4.4._.` _._.` _.` ` _._._._._.` ` F _._._.` F F F ` ` I F F F F F q q q q H F q F ` +.2.=+f+o+m+q+o+k+c+c+0+6+6+4+)+4+4+$+Q.-+-+)+Q.H.-+!+_+'+~+^+)+)+)+++N.T w w C l ] h ] ] ] > % % % ) ) % ] % ) % > % % ] ] ) ] A T g % ) ) 0 u u j t u N N N #.3.}.s.o.m.f.q.q.q.q.i.e.e.e.e.5.1.1.d.1.6.6.e.0.0.6.e.0.6.e.6.6.e.e.6.0.e.0.0.0.e.0.0.1.0.^.e.^.6.^.:.^.6.:.^.6.^.^.6.^.:.^.^.:.^.:.^.",
379"|.|.|.|.|._._._.` _.j._.` _._.` _._.` _._.` ` ` F ` H _.` ` F F F F F ` I ` F F q q q H q q F q F F O O B |.^+f+h+i+k+h+c+0+0+6+c+3+>+)+6+-+<.n. +$+>+n.`.)+~+)+'+'+)+)+{+:+#+T n h ^ ) ; > ] > % % % % ; % % & ) ) % % % % % ] [ c P >.g & % % [ ) 0 u u t u u N N N #.3.o.M.Q.q.q.f.f.i.e.e.e.e.e.e.0.0.0.0.0.6.h.0.0.0.6.6.e.6.6.6.h.6.6.e.^.6.0.0.>.6.^.0.>.1.0.6.6.^.:.0.9.:.e.^.^.:.6.:.:.^.^.6.:.:.:.:.",
380"` |.k.|.|.` ` ` ` _.j._.` ` ` ` _.` ` ` ` ` |.` F ` _._.` ` F F F F F F ` ` q F q q q q F q q q q q s I 6 G V.6+0+f+c+c+4+6+5+|+4+$+n.>+)+>+n.<.W.W.$+n.H.>+>+>+>+ +{+>+>+++#+A ^ & $ ; & % % % % ~ & $ ) ) % @ = ) ; % % + % ] [ c A >.u % % % ) [ j u j t u N N N N K 3.s.T.M.T.f.i.i.i.e.e.^.6.9.e.0.0.e.e.e.6.h.6.6.6.h.6.h.-.0.1.e.6.6.e.e.6.0.^.e.e.6.6.6.0.1.^.6.6.^.6.^.:.6.6.^.(.^.^.9.^.:.^.6.^.1.:.",
381"_._.` |.|.` _.F ` _.k.|.` |.F H _._.` F ` ` I F F ` ` I I F F q F F F F _.F q q q q q q q q 7 e e e e v : { 2.-+c+8+6+6+6+|+4+6+4+)+n.W.)+>+t.2.n.H.Q.t.n. +,+ +W.$+>+ +>+#+#+A ) ) % % % ] % @ % ) = & & % ) & & ) ) % + % % % ] ] ] P P A c % % ) [ 0 t u u u u u N N #.3.q.M.T.o.e.e.>.0.0.0.0.1.0.0.e.e.6.6.6.h.6.6.h.e.6.6.6.6.0.1.0.0.e.0.6.-.6.6.6.6.^.^.^.0.>.0.^.6.6.^.:.:.:.:.:.6.:.6.!.6.^.:.^.:.:.^.",
382"_._.` |.` ` _.` ` 4.|.|._.` ` _.` F F H F I ` F ` I F F F F F F F F F F ` F q q F q b b s e e e i : e | : = v F.(+}+4+|+_+|+^+)+^+{+n.n.-+W.n.2.H.H.t.}.n.Q. +>+W.V.`.Q. +$+#+P ^ ) % & ) ) $ $ % ~ ) ) ) g { ) [ ) $ + + % % ] ] c P N c % % ) 0 u u u u u N N u N N 3.s.M.N.q.0.0.1.0.1.0.^.0.1.0.e.e.e.6.0.6.6.6.6.6.h.6.e.0.0.6.6.0.e.6.6.6.0.6.^.0.0.0.6.:.:.0.^.^.1.0.^.:.:.1.:.^.:.^.:.V 6.!.^.!.:.!.",
383"_.+.` |.` _.|._._.|.` ` ` ` ` ` ` F F I F I F ` I I F F F F q F q H F ` F F q q F s b b 4 i | : : - | 4 - @ 6 |.=+[+|+|+^+^+4+)+)+>+Q.n.Q.>+Q.n.H.H.Q.<.}.H.`.W.`.Q.W.W.W.++#+>.[ ~ ~ & & ) ) ; ) = } [ ) ) } g [ ] ) % % % c P P c + % ) c 0 u u u u u K K N #.3.M.P.P.0.e.0.0.e.0.0.0.e.0.h.6.0.6.1.0.e.e.0.e.e.6.e.6.0.0.0.^.6.6.e.-.e.^.1.1.:.^.6.^.6.0.^.6.6.^.:.[.1.^.6.:.[.:.:.:.^.6.:.^.!.^.:.",
384"_.` _.` ` _.|.` ` ` ` ` ` ` ` F ` H F F F F q F F F ` F q q q q F F F F q q 9 q s e | i : { : - ( | | e ( @ { v F.^+^+^+!+^+)+)+)+)+Q.<.H.W.H.<.H.H.n.<.2.n. +Q.W.W.W.H.H.M.#+5.] { ) ) $ ~ ] h ; ~ } 0 [ [ } 0 [ ) ; % + + & @ % % u N [ & ) [ p u u u u u K N N N 5.M.N.u.0.6.6.0.6.6.0.6.6.0.h.6.0.6.0.0.0.0.1.1.0.6.0.6.e.0.0.^.6.6.0.0.0.0.1.1.1.0.:.:.:.:.^.^.:.:.:.:.:.:.:.:.:.(.^.!.!.V :.(.:.:.:.",
385"` ` |.` ` |.|.F ` +.` ` F F ` F F F I F F F F ` F ` ` I q q q q q F q q b 9 b e i : : { { - - : ( | | e ( @ - 6 2.`.)+^+)+^+)+>+)+$+W.}.n.W.W.<.n.H.H.n.n.H.W.W.W.K.W.H.K.$+#+r.% { { g & } [ [ ~ [ [ [ ] [ [ ) ; ; + + + % % % % % % c N c % % ) 0 0 0 t K u u K N N #.3.P.u.5.0.e.6.6.0.e.0.1.6.6.0.e.e.e.x.6.6.0.1.d.0.0.6.>.0.0.0.6.6.0.1.^.6.^.6.1.^.^.0.:.1.^.9.(.:.:.:.:.:.(.^.:.^.!.:.^.^.!.:.(.R :.(.",
386"_.` _.` ` ` I I F ` ` ` ` F ` H F F F F F F F ` ` ` I F q 9 H q ` F b b 7 7 | : : { { - ) : , | | 4 4 7 | & @ { G n.,+)+>+>+-+>+>+$+H.n.n.n.W.o.n.W.H.n.n.t.Q.H.W.K.H.Q.K.*+*+P.) { } } = ) [ { { ~ ] [ % ] ; % ; + % % > ] % % c N c % ) 0 u u t t u K u K #.#.o.P.q.0.1.0.6.0.0.e.0.0.0.1.1.0.0.0.0.6.i.0.0.0.0.6.6.9.:.0.1.1.1.0.1.0.1.^.6.1.:.:.^.:.1.^.6.:.^.:.:.:.:.(.^.:.^.^.!.(.:.V ^.(.:.:.R ",
387"|.` +.I ` ` ` F ` I O ` ` F F q q F F F F F ` F ` I F q q q H _.` b 7 4 | ( : : ) ~ = = - - ( | 4 4 b e | = % = 6 2.W.-+>+>+Q.>+Q.W.W.n.<.F.V.n.t.H.H.w.H.H.H.Q.w.Q.T.K.T.$+P.u.g { a ~ ~ [ ~ ) & & % > + ; + % % % % % % % ] ] ] u P [ % % % 0 u u t K u N N K N #.o.o.i.e.0.1.1.6.0.0.6.0.1.1.0.0.0.0.6.6.6.1.1.6.6.6.6.0.0.~.[.~.1.:.0.^.6.6.:.9.^.6.:.1.(.:.:.0.:.6.^.9.(.:.:.(.(.:.:.:.:.:.R (.R :.:.",
388"|.` ` F I F I ` F F F I ` I q q F F F F F ` F F F F b q 9 F ` |.O e 7 | ( - = { { { - ( ( | | | 4 4 1 b | = & : O n.`.`.W. +W.W.W.W.H.n.Q.H.H.H.K.K.w.H.m.w.H.K.w.s.T.H.Q.M.P.y g ~ ) % ; $ $ ; + % & ; % + % % % % % ) ] % % [ N P ) ; % ) u u t K u K K K N #.3.P.o.5.6.0.d.1.6.6.0.6.6.0.0.0.0.6.6.6.6.6.6.1.0.0.9.6.1.0.1.[.~.1.6.6.6.:.^.:.g.:.6.^.^.1.^.^.:.(.(.:.!.6.!.^.:.!.:.:.T (.:.:.R (.:.:.",
389"` +.` ` ` ` I F F F F I F I F F F F F q F F F F F q q q q q ` I b | ( - - { = - = ( ( < | | | | | b b 8 7 { % & - e |.F.$+W.W.W. +H.K.H.t.Q.w.K.w.K.Q.w.T.t.w.q.T.t.T.s.s.M.o.N.A % ) $ ; ; % + + + @ % [ % > % % % % ) ) 0 0 [ [ [ 0 N u % % % ) t K B K K u K N K N 5.o.o.e.e.0.0.1.6.x.6.u.1.6.0.0.0.h.6.6.6.x.1.9.9.1.0.1.1.1.d.1.1.0.:.:.6.^.:.:.:.:.:.:.:.[.:.[.^.:.:.(.^.!.V !.6.T :.(.(.(.R :.(.R R !.",
390"F ` F ` ` ` I ` I I q F I F F ` F F q q F q q s F q q q q F s i | ( , { = { ~ ( : ( ( | | 8 7 7 e 4 b b 4 ( $ = 6 +.F.W.Q.W.Q.W.Q.H.H.H.Q.s.K.Q.w.w.K.m.s.w.s.q.m.m.s.T.s.o.N.u % + + + + + % [ 0 [ % % % % % [ 0 c c [ c c u W c + % % [ B K K K K K K N N #.5.o.5.6.0.0.6.6.0.0.9.0.0.6.1.u.0.6.6.6.1.9.0.1.[.1.:.1.1.1.1.1.1.1.^.:.0.^.0.^.:.6.:.:.:.:.^.(.^.:.:.R :.!.9.!.(.(.:.R (.(.R :.(.!.(.(.",
391"` ` ` I ` I F I F F F I F q F ` I F q q F q F s F q q F s e e | - - = ~ = { = ( ( : : | ! | 7 | | 7 7 4 b | = & & : S t.H.Q.W.Q.Q.H.K.m.s.s.m.T.m.T.w.q.T.q.q.T.m.q.q.q.Q.T.q.M.P + + $ % 0 c [ % % $ ) ) ) c c 0 c u N #.P % % % % 5 . .K K K K K N N #.o.N.e.0.6.e.0.0.6.0.e.6.6.6.6.6.6.6.6.6.6.6.9.[.1.[.1.1.1.1.0.~.1.:.1.0.:.0.:.(.:.:.^.^.:.^.(.:.:.!.:.^.!.:.(.(.:.:.(.:.R (.:.!.!.R (.!.",
392"` ` I I I I F F F q F I F F ` +.I I q F q q q s q q q I s e ( : = = = { = { = - ( ( ( | | | 4 7 | 7 7 7 7 e { & & : p <.K.H.W.Q.Q.s.H.w.w.s.m.w.m.T.m.m.w.m.m.q.q.m.m.q.m.H.s.++#.+ + % + ; % [ 0 c % ) ) [ { 0 [ [ 0 u N P P c % % @ } B }. .K .K #.#.5.P #.3.i.e.6.6.6.0.6.6.9.6.6.6.1.1.1.e.6.0.0.0.6.1.[.1.[.[.[.[.0.0.1.1.:.^.:.:.:.:.:.:.:.:.^.:.:.:.:.:.^.!.^.:.!.:.R :.R :.:.:.R :.V !.!.!.R ",
393"I ` F I I I F s F I I ` I F I I q F q q q b q q b q q I v | - { = { ~ ) $ $ & { - : ( ( | 7 | 7 1 7 b 1 9 | ( @ & = 6 O n.s.w.T.m.Q.q.q.T.q.Q.q.s.m.m.m.q.q.T.q.m.m.t.H. +Q.Q.$+5.% % % % ) [ % % [ [ [ ) ) [ } [ 0 u u u u N N N ) = : p ..}.o.}.#...#.K #.3.#.5.N.3.e.6.6.0.u.1.1.0.6.0.1.1.[.9.9.1.1.9.9.9.9.[.[.1.1.1.1.^.>.:.1.1.:.^.:.:.6.:.:.(.(.:.(.:.:.^.!.:.:.(.V !.(.:.R (.R !.(.R (.!.!.Y ,.!.",
394"I F F F I I F q F F I F F s F s q q q q 9 9 b b b q q I 6 : { ~ & ) ~ % ; + . % = - - ( < | 8 | 7 4 b 7 b 7 : = & = ( r <.w.w.w.m.T.w.m.m.q.q.T.m.m.m.q.m.m.m.w.K.K.%+>+{+&+$+#+r.; % % % % ] ] [ c [ [ [ [ c ) ) c 0 u u u P c u u 0 0 5 B G ..n.t.o.}.}.}.}. .#.#.#.5.i.e.6.6.0.1.1.5.1.1.1.1.1.0.1.9.9.:.1.:.1.0.6.(.[.1.:.1.1.:.:.1.:.(.[.[.(.:.:.:.:.[.(.:.!.^.(.:.:.:.:.(.(.!.!.(.(.(.R (.(.R ).).).R ,.,.",
395"I F F I I I F q F s F q q F q b q b q 9 9 q q b q q F e : } ) & % % ; . $ . & = - - < | 8 1 8 8 1 4 b | - @ & - r S t.w.m.w.m.m.m.q.q.q.m.h.T.m.w.m.K.@+@+ +]+ +$+++$+++#+u.% ] [ [ [ [ 0 c c [ u c [ [ c u u u u c N u u 0 t t M .}.}.<.o.M.t.3.}.}.}.}. .}.3.3.i.5.0.1.0.1.1.1.0.u.1.1.1.1.6.6.9.9.1.1.:.6.:.1.:.[.:.:.^.1.^.(.:.:.:.(.:.9.V ^.(.(.(.!.^.!.:.(.R :.(.R :.(.R (.!.!.(.R (.!.R (.Y ).Y Y ",
396"I F F I I F s q s F F q q q q q q e q 9 9 q q 9 q q s i : - ~ . + + ; + + @ @ @ = - ( < 4 4 4 1 1 4 b | - $ $ = ( M f.w.m.m.T.q.m.q.m.m.w.p.w.K.@+]+$+>+$+$+$+++{+++++++#+~.] [ c u c c c j 0 c t u 0 u u u u 0 0 u u u M .. .#.}.}.}.}.<.}.3.o.n.}.n.}.}.o.}.o.o.5.0.1.[.d.0.u.0.0.1.1.1.1.1.:.6.(.1.0.^.1.6.(.:.:.[.:.:.6.(.:.[.:.:.:.(.(.(.(.:.:.:.(.!.:.:.(.(.:.:.(.(.R (.!.R !.(.!.Y ).).Y ).).Y Z Y ",
397"I F F I s F F q q F F q q q e q q q q q 9 q q q b s i 6 } $ ; + + + . + + . + . . @ = - , | | ! 2 1 b 4 e : & @ @ : r +.m.m.m.m.K.m.m.w.w.@+@+<+&+&+$+>+++M.$+++M.P.++$+#+#+P [ 0 c [ u 0 0 c u u N u c 0 0 u 0 p B M }.}.}.<.}.}.}.}.}.3.}.}.}.3.o.t.M.M.++++M.M.o.e.e.1.1.1.0.1.0.0.1.[.1.[.6.6.:.0.1.[.1.(.(.9.[.[.(.(.:.:.:.[.:.:.:.^.^.(.(.(.R (.(.(.:.:.(.R (.(.R (.(.(.,.).).).R (.R ).Y R Y Z @.Y Z ",
398"I F F F F F e F q F q q q q s s q e 9 9 q 9 b 9 b e 5 } ~ + + + + + + @ @ - ! 4 4 7 4 7 | 7 | & & - 6 O h.m.q.q.T.K.@+@+@+<+&+$+ +&+++T.M.M.o.N.N.N.N.N.*+P.c ] 0 c 0 u u N u u u N 0 u 0 0 p G ....}.}.n.}.n.}.n.}.}.}.M.}.M.o.M.M.M.++++#+#+#+P.r.5.0.1.1.9.1.6.:.0.0.[.:.1.^.9.:.9.:.[.1.1.[.[.[.[.1.:.:.:.(.[.:.:.:.(.(.!.(.(.(.[.(.(.R (.(.(.R (.(.).!.R !.R ).).).).Y Y Y Z Y Y Z U Y ",
399"F I F s F q F q q q q q q q q q e q q b q b q b e 6 = ) + ; + + ; $ + + + + @ - , | 4 4 4 4 7 8 4 - @ @ & a r <.f.m.m.K.w.H.T. +&+&+T.N.o.q.o.N.o.u.o.u.u.u.P.P.r.c 0 c u K u N N u 0 0 c 0 j B S <.<.n.n.M.n.t.n.M.n.}.M.}.M.n.M.M.M.++$+++++#+#+#+#+u.0.[.1.6.0.[.9.:.1.1.:.1.1.:.1.:.6.0.1.:.(.(.(.[.[.:.(.:.:.:.(.(.(.:.:.(.!.:.(.[.(.(.(.(.).!.(.(.!.(.R (.(.(.).).Y ).Z Z ).Y ).Y Y U U Y U ",
400"I F q F q e q q s q 9 q q b e q b b b 9 9 9 b 7 | { % % + + + + + + + . + + . @ - , | | 4 8 4 8 | - @ = & - r ..q.q.q.T.T.Q.T.N.M.q.q.i.i.u.e.e.i.h.i.u.u.u.N.N.3.c N N u u P c c 0 [ j B .}.<.<.t.}.n.n.t.}.M.}.M.H.t.M.M.M.++++++++#+++#+#+#+#+#+r.r.0.1.0.6.6.:.9.9.[.1.0.:.1.:.1.(.:.^.1.:.(.(.:.:.(.1.(.:.(.:.(.(.(.(.!.:.(.:.(.(.(.(.(.(.!.(.!.(.!.).).).Y !.Y ).Y ).Z X Z X Y U Y U U U Y ",
401"I I q q q q s q s s b b q b q b b q 9 q 9 9 b e { % + + + + + . + + + @ @ - - < 4 | 4 1 2 8 | = @ @ ( r +.w.m.s.s.s.q.o.q.i.i.i.i.x.h.e.x.h.x.h.e.0.0.o.u.5.P P u N c c c 0 j B +.<.<.t.t.n.M.n.}.t.}.n.n.n.n.M.M.++++++++#+#+#+#+#+#+#+P.r.r.u.1.1.0.6.:.6.9.[.:.0.:.^.0.:.9.(.1.:.[.:.[.).[.(.:.:.[.:.(.:.(.(.(.:.:.:.!.!.!.(.R (.!.R (.!.R ).).).(.R ).).).Y Z Z X Y z Y Y U Z Q w '.U Z ",
402"I q s q q q q F q q b 4 b b q b b q b b b 9 4 | ) + + + + + . @ + + + . + + + . @ - , ! | 7 8 1 8 | - @ @ - i +.m.q.f.q.q.h.q.e.h.h.i.i.0.u.e.u.i.6.h.u.x.6.i.P.5.A A c c [ 6 B G ..<.n.n.t.t.o.}.}.n.t.n.n.H.H.M.W.++++++#+#+#+#+P.r.r.u.u.u.u.u.1.1.1.1.1.6.6.^.:.[.[.:.:.:.1.1.1.(.9.:.[.[.[.[.(.(.(.~.).[.(.(.(.!.(.(.!.R (.:.!.(.!.(.(.).).).(.R ).Y ).Z Z Z Z Z Z Z X Z U U Y Y Z X U Y U Z ",
403"q q q q q q q s e q b 9 q b b q b 9 q 9 1 1 | : & + + + + + + + + . % % . . + + @ @ - , | 4 4 8 4 4 | - @ $ - a +.m.q.h.h.q.h.x.h.i.i.x.h.h.i.5.0.e.u.e.e.e.u.i.r.d.c [ 0 p K ..<.<.<.M.s.t.H.Q.n.n.n.o.M.M.++M.M.++++#+#+#+P.P.r..+u.u.[.d.u.d.[.1.0.6.1.:.[.:.:.6.6.^.:.1.1.1.1.[.[.[.(.(.:.[.(.(.(.(.(.(.[.(.(.(.(.(.).!.(.(.(.!.(.!.R (.).!.(.).).).Y ).Z ).Z X Z Z z Y Z Z X U X U Z U '.U Y U ",
404"q q q b q q q q q b 9 q q q b q b b b 9 1 1 | ) @ + + . . @ & + + + . @ . , , | 4 4 4 1 e ( - - ( v 2.m.q.x.q.i.e.u.h.i.e.e.h.h.i.e.e.e.u.e.6.h.i.P.5.0 u M .}.}.t.n.t.t.t.n.H.M.M.H.++W.++++$+++++P.P.P.r.u.r.u.e.1.1.1.0.[.[.[.d.9.6.6.0.0.^.1.:.1.6.9.:.[.[.[.^.(.(.(.:.(.:.(.[.(.(.(.(.(.(.).~.(.(.(.!.(.!.!.!.(.(.(.!.(.).).Y Y Z Z Z Y U Z Z E Z z Z Y Z z Z U Z U Z U Y U Y Y ",
405"q 9 b q q q q q 9 q 9 b s q b q b q b b 1 | : @ + . . . + + . . $ + . + + . @ @ - , | | 7 4 | 8 | = @ & < r +.q.q.q.u.i.u.i.u.e.x.e.e.h.x.u.i.i.h.u.e.u.u.N.3.#.}.}.}.}.t.t.}.t.M.H.M.H.W.M.++++++++#+#+P.P.r.r.u.u.1.6.0.0.0.1.[.[.1.1.1.[.6.^.9.(.[.[.[.[.:.:.:.9.(.[.:.1.1.1.[.(.:.:.(.(.(.(.(.:.(.(.(.(.R (.!.(.,.R (.).).R (.!.Y ).Y ).).Z Z Z z Z Y Y Y Y Z z Z Z @.Z Z Y Z Z Y Z Z Z Z ",
406"q q 9 q b b q b b b b q q b 9 b b 9 9 1 7 | ) @ + @ + + . . . + . @ , | 4 4 1 | 4 4 ( @ @ ( a ..N.e.h.h.i.u.i.h.i.e.u.e.i.h.h.h.x.e.i.6.e.5.N.f.}.n.}.t.M.o.M.M.t.M.++$+>+++++++#+#+P.M.u.u.u.0.1.[.1.1.9.1.1.9.1.1.[.1.1.1.:.1.0.:.:.9.:.1.1.1.^.(.:.:.:.(.:.(.:.(.:.:.:.(.(.:.(.(.(.(.(.(.(.(.(.,.(.,.!.!.,.'.,.).Y Y Z Y Y Y Y Z Z Y Z z Z z Y Y Y U Y Z U X U U U Y Y Y Y Y ",
407"q b q b q b b b q b b b q b q 9 9 1 1 b | : @ + . + + + . . % + + . + . @ @ - | | 8 | 8 8 | ( = = = ( ..o.q.q.h.i.i.x.i.e.u.e.e.6.h.i.h.i.6.x.6.e.i.N.s.t.n.M.M.M.++M.$+++++{+#+++++#+#+P.o.P.d.u.0.0.1.[.[.1.9.1.9.6.9.9.1.1.[.[.1.1.1.(.9.g.:.:.[.(.(.[.:.9.:.:.9.9.(.(.:.:.!.(.(.(.!.!.).!.(.(.(.(.!.!.(.).(.).!.!.,.,.Y Y Z Z X Z U Y Y z Z Z Z Y Z Z U U U X Z U Z Z '.Y Y Y Z U Z ",
408"q q q b b 9 b 1 1 1 1 b b b 1 1 1 1 1 b | ) @ + ; + + . . . . + + + + . . - , 4 1 | | 8 4 < = @ = ( S q.h.i.h.h.i.0.x.h.x.e.i.e.x.e.6.x.i.h.x.6.u.N.o.M.M.$+{+++++++++++:+#+++#+#+r.r.u.0.0.1.u.1.d.1.1.[.[.1.1.9.6.6.6.9.1.1.:.1.:.1.[.:.:.(.:.:.:.:.[.(.(.!.(.:.!.(.(.:.:.:.(.[.[.(.(.(.(.!.(.!.(.(.!.,.).).Y Y Y Y ).Z Y Y Y Z Y Z z Y Y z Y z Y Y Y Z U Z X Z Y Y Y Y Y Z Z Y Y Y ",
409"b q e q b b b b 1 1 1 1 9 9 b b b 1 b 4 | - - } % @ + . . . ; + + + @ @ - ( | | 7 4 8 | | = % = ( O s.q.h.i.f.u.i.e.e.h.i.h.i.e.u.e.e.6.6.h.e.e.o.++++{+d+:+d+:+:+:+#+#+#+P.P.d.u.u.1.0.0.1.1.0.[.d.[.1.1.9.:.:.1.:.9.6.1.:.1.:.1.:.:.:.(.1.:.:.9.[.(.[.(.(.9.!.!.(.9.!.:.(.(.(.(.(.(.).!.!.(.!.!.,.,.,.Y ).Y Y Y Y Z Y Y Y Z z Y Y Y Y Y Y Z Y Z Z Z Z X Z Y Y Y '.Y Y U Y Y Z U '.",
410"9 q b b b b b 1 1 b 1 b b 1 9 1 1 1 1 7 | b _.s.>.) % ; + + . + . . + . % + + + . . - , 4 4 | 4 8 4 | - % & ( i m.q.h.h.q.h.i.e.u.h.e.x.i.6.u.6.x.e.6.h.h.e.o.++:+d+++{+++++#+#+P.r.u.u.0.1.[.1.0.9.0.1.1.1.1.0.1.1.1.1.9.9.0.:.:.:.9.[.[.(.1.[.1.:.(.[.:.:.:.[.[.(.(.(.(.9.!.!.9.!.:.(.(.(.(.!.(.).).).).).Y ,.Y Y '.Z Y Y Z Z X Y Y Z Z Z Z X Z X Z Y U Z Z Z U Y Z Z Y Y Y U U '.Y Y Y ).Y Y ",
411"9 9 9 q b q b b b b b 1 b 9 1 9 9 1 1 7 7 H j+z+d.h % % . . . + . . + . + + + + . @ @ - | | 4 | 4 4 | - @ & ( i <.q.h.h.x.i.h.e.h.u.h.i.h.i.e.e.e.i.u.6.6.u.o.#+#+d+#+:+#+P.P.r.u.1.0.0.u.0.0.1.9.9.6.0.9.6.9.^.0.1.[.[.:.9.(.6.1.1.:.:.(.1.:.:.(.9.9.:.9.(.(.:.:.9.9.(.:.(.(.:.:.!.(.(.(.(.!.!.(.R (.Y ).Y Y Y Y X U U U z Z Z z Z Z Z X X z Y Z Y Y Y Y Z Y Y Y Z Y Z Z Z Z Z Y Y Y '.'.Y Z Y ",
412"b b b 7 1 1 9 b 1 e b 4 1 1 9 9 1 1 b 4 b E.A+:+).c ^ ; + + . + + + + . @ @ + . . . @ - 4 4 1 | 8 8 i { @ & - k f.q.q.f.e.u.x.u.i.e.6.u.h.h.x.6.6.h.0.u.e.e.i.P.#+#+++#+P.u.0.1.u.e.6.6.0.[.[.1.0.1.6.^.6.6.1.:.0.0.6.1.[.9.[.(.:.:.[.9.:.[.[.9.(.(.(.(.:.(.(.g.:.(.9.(.(.(.!.!.!.(.(.!.).!.).,.).).Y Z X Z Z Z Y Z U Y Z Z Z Z Z Z w Z Z X Z Y Z Z Z Z Y Z Y Y Y Y Y Y Z Z X Y '.Y Y Y Y Y ).Z ",
413"b b b b 1 9 9 b b b b 1 1 2 2 9 2 2 b 8 s ]+z+d.c h h + # + + . @ + + . @ . @ @ , | b 7 | 8 8 8 ( @ = ( a .q.e.h.h.e.i.h.e.x.h.i.u.e.i.i.e.u.0.0.e.u.i.N.P.#+P.5.u.1.u.0.0.1.e.0.0.0.1.0.0.1.[.1.:.^.6.1.:.0.1.[.[.[.(.g.:.g.(.(.(.[.(.(.(.[.~.).[.(.(.(.(.9.!.!.(.(.:.(.(.!.).).).).Y Z Z Z Z Z Z X X U X Z Z X X Z Y Z Z Z Z Z Y Z Z z Y Y Y Y Z R Y Y Y Y Y Z ).Z Z Z U Y '.Y '.,.X '.",
414"b b b b b b 1 1 b 9 9 2 1 9 2 2 9 2 7 | i t.P.~.T C ] ] + + + + + + + + + @ . + @ @ @ - | e s | < | | : @ @ - a .q.u.e.h.e.e.i.i.i.h.h.e.e.x.e.1.e.e.u.e.e.e.i.o.i.u.e.e.5.1.0.0.1.6.9.1.1.1.1.0.0.[.~.[.:.:.1.:.9.1.:.:.(.9.(.6.:.:.[.[.[.[.[.:.(.[.(.).[.(.(.(.(.(.).).).(.).).Y ).Y Z Z Z Z Z Z Z X Z Z X Z Z Z Y Z X Z Y Z Y Y Z Z Y Z X Z Y Y Y Y Z Y Y Y Y Y Y Z Z X Z Z '.Y '.Y U '.X Z ",
415"b b b 1 b q 9 b 1 1 9 2 1 9 2 2 1 4 4 6 : M o.r.1.T ] ; + + . + . + + . @ - | e e | | 8 | 6 & & - i S q.i.h.i.h.h.e.6.x.6.i.i.i.e.u.u.e.e.0.0.0.e.u.u.i.u.6.u.[.1.6.0.1.1.1.1.1.1.0.1.1.1.[.1.1.0.6.(.6.:.1.:.g.(.9.(.:.[.:.[.(.[.(.:.(.[.).[.).g.).).g.(.(.).).$.).Y ,.U Z @.@.Z U Z Z X Z Z X Z U Y Y Z Z Y Y D R Y Z Z Y Z Z Z Z Z Y Z Z Z Z Y Y Y Z Y Z Z Z X Z Y '.Z U '.=.Z =.",
416"b b 1 b b 1 1 b b b 2 2 9 2 9 2 1 4 4 : : +.X.r.d.T ] + + + + . + . + + + + + + + + @ @ @ , | i | | | | | : & ; = 6 S f.i.h.i.u.h.u.e.e.6.h.6.e.e.0.6.e.e.u.e.0.0.0.0.0.0.9.0.1.1.1.1.1.1.1.1.1.6.9.1.[.1.:.[.(.(.6.[.(.(.9.:.[.[.:.(.[.(.(.(.(.(.(.:.!.[.[.(.).).).).)./.).).Z @.@.Z Y ,.Z Z Z Y Z X Z X Z Z X Z Z Z Z Z Z Y Y Y U Y Y Z Y Y Z X Z Y Y Z Z Z Z ).Y Y X Y Y ,.Y =.U Z '.=.Q U =.'.'.",
417"b b 1 1 9 1 9 1 b 1 1 1 9 2 1 1 4 1 | ( ( <.N.r.[.c ] + . . + % % @ @ @ @ - , | | a < | | 6 & ) k ..m.h.u.h.i.u.e.e.x.e.e.6.6.0.h.h.h.e.0.0.0.6.0.0.6.6.0.1.1.1.1.1.[.[.g.6.9.:.^.9.1.(.1.:.:.1.(.(.[.9.:.[.[.[.(.[.(.(.(.(.(.[.(.[.(.(.).).).).).$.@.Z X @.Z Z Z Y Z U Z X Z X U Z Z Z Z Z Z Z Z Z Z Y Y Z Y Z Y Y Y Z Y Y ).Z Y Y Z Z ).Y Z Z Z Z Y Y $.Z =.'.=.@.*.=.*.*.U &.=.",
418"7 1 1 1 9 9 1 b 1 7 1 1 1 1 1 1 4 1 | - = M 3.>.A ] + + + + + + . @ & % + + . . @ @ = - , | | | 6 | | 8 | - @ = 6 .f.f.u.u.e.u.e.e.e.0.e.x.e.0.6.h.6.e.0.e.e.6.6.e.0.6.0.0.0.1.1.0.1.1.[.0.1.:.:.:.9.(.0.:.(.1.:.(.[.[.(.(.[.(.(.(.[.(.(.).!.).,.).).).).Y ).Z @.$.@.@.@.Z Z Y Z Y Z Z X X X Z Z Z Z Z Z Y Y Z Z Z Z Y Y Z Y Z Z Z Y Z Y Y Y Z Z Y Y Z Y Y ).Z Y ,.Y Y Z Z X Z =.Z *.Z &.&.=.&.*.",
419"4 1 2 1 2 1 1 4 1 1 4 1 1 1 4 4 b b a & @ [ c c ] > + + + + + + . + + . @ ~ @ % + @ @ & $ @ = - , | | | | < < | ( - @ = 6 ..f.i.i.i.u.e.i.x.x.6.0.e.h.h.h.x.0.0.e.0.6.6.6.6.1.0.0.6.6.1.1.1.1.1.:.1.:.g.:.[.1.9.:.9.9.(.[.(.(.(.(.(.[.).(.).(.).).).).).Y ).Z Z Y Y Z Z Z X @.@.Z Z Z Z Z Z X X X Z Z @.X X Z Z Y Y Y Z Z Y Y Z Z Y Y Z Z Z X Y Y Y Y ,.Y ).Y ).Z Y X Z Z Y Z Y '.=.Z X =.=.=.=.*.=.&.*.*.",
420"1 4 1 1 1 1 b 1 1 1 1 1 7 1 b 1 1 4 | & @ ; ; + + + @ { ~ $ + . = = = @ @ - , 4 | 8 | < | | 7 a - @ @ a S f.i.x.i.0.0.e.e.e.h.e.0.0.6.6.h.e.0.6.0.6.0.1.1.1.1.1.1.1.1.1.:.1.1.:.1.:.:.:.(.[.(.(.:.!.:.1.(.).(.).).).).).$.).).Y Y Y Y Z X X X w Z X Z Z X Z X Z Z Z Z Z Z X X X X @.X Z X Z Y Z ).Y Z Z Z Z Z Z Z Y Z Z Z Z Y ).Y Y ).Y ).Y Y Y ).Z ).=.Y $.Z Z $.=.X *.Q *.@.=.=.&.Q &.",
421"1 1 7 1 b 4 4 1 4 1 4 1 4 1 1 1 1 b 6 ) + + + . + $ ) % @ . = - - & = = , | 4 < ! | < | < | ( @ $ ( O 3.q.i.e.e.e.e.0.6.0.x.0.e.0.e.0.6.6.h.6.e.0.1.1.1.1.1.1.1.9.^.1.:.:.9.[.[.[.[.g.!.9.!.!.(.(.).).).$.).).).).$.Z @.X Z Z X Z Z Z Z Z X w Z X @.Z X Z Z X @.$.X @.Z X X @.X Z @.Z Z Z Y Z Z Z Z ).Y Z Z Y ,.Y @.Z ,.Z X $.Y Y Y Y Y R ).Z Z Z Y $.Y Y Z *.=.$.$.*.*.&.=.Q *.&.*.",
422"4 | 7 e 4 e 1 4 4 4 4 1 2 2 1 1 1 1 i % . + + + % ) ; + + @ @ - - - - - - , | | i < ! a | < | ( @ % { r f.f.h.h.e.0.u.0.6.e.e.0.0.0.0.e.e.6.h.6.6.0.1.1.[.1.1.^.:.1.1.9.9.(.[.[.[.(.(.(.!.(.(.,.).).).).).Z Z @.X Y @.X @.X Z Z X Z Z @.Z Z Z X Z @.X X X Z Z Z X X @.X Z @.U Y Z Y Z Y Y Y Z Z Z @.Z Z Z ).@.Y =.Z Z Z ,.Y Z $.Z Z Y ).Z Z Y ).Z $.Z @.$.=.Z *.*.*.*.*.*.&.=.=.%.Q &.",
423"1 4 4 | e | 1 1 1 4 1 2 2 1 1 8 4 4 i = + . + @ & % @ @ - - - - @ - , 8 4 | | | < | ( | | ( @ @ ( t .i.e.e.h.e.1.u.e.6.6.6.0.0.0.6.6.0.6.6.:.6.6.1.1.[.(.1.1.[.(.(.[.).[.).).(.).,./.$./.).$.Z X X @.X X @.X X @.@.X @.@.Z Z @.X Z X Z Z Z X X X Z Z X X Z Z Z Z =.Z Z Y '.'.Z Z $.Z Z Z @.Z Z Z Z Z X Z @.X '.'.U '.'.$.Z Y ).Z Y ).Y Z Z Z Z Z $.Z $.Z ,.*.*.*.%.*.=.*.Q X X z ",
424"4 1 7 4 e ! 1 1 1 4 ! 1 1 ! 4 4 1 b | { & . + @ = & - , , - , - - ( | 4 8 < ( | | ( a < a ( = j -.f.e.0.e.e.0.0.e.6.6.0.0.0.0.6.0.1.0.0.9.0.6.:.(.1.g.(.:.(.).).).).).)./.).).$.$.@.*.@.@.Z @.X @.@.X @.%.%.X @.X X @.@.Z Z X Z X @.X Z @.@.X Z Z Z X Z Z Z Y Z Z '.Y U '.Y Z Z Z $.Z Z ).Z Z Z ).,.Z =.@.Z ).Y Y Y ).Y Y ).).Y $.).Y Y Z =.Z @.$.$.*.=.*.*.&.*.&.Q *.Q z m f ",
425"1 1 1 4 4 1 1 4 1 4 1 1 2 1 4 4 7 1 e : ) + + . = & @ @ . . - ( < | , , , , | 4 | 4 | | ( < | < a | ( = & 6 M h.e.0.0.e.e.6.6.1.e.6.0.0.6.0.1.1.9.:.1.:.[.[.g.).(.(.).).).).@.%.].=.$.@.X @.X X @.@.*.@.@.X Z Z Z X X Z %.@.X @.%.X %.@.Z Z @.X @.X Z X Z *.=.Z Z Z Y Y Z Z '.Z Z Z Y Y Z Z Z Z ).Z Z $./.Z Z Y '.'.Z @.X Z U '.Z ).).Y '.=.$.U Z =.=.=.@.%.%.=.=.=.*.*.*.*.*.U z w f / * ",
426"1 1 1 1 b 1 1 1 4 4 1 2 2 8 1 1 8 1 b e : @ + + @ $ $ % = $ @ @ @ - , | | | | , , ! 7 4 | | ( ( a ( | ( < a ( & $ $ [ B h.e.6.6.0.0.0.0.1.0.0.0.1.1.[.[.[.[.(.[.(.(.(.)./.$.).).].@.@.@.%.*.&.=.X X @.*.X *.X X X %.X @.X $.@.%.@.X @.@.X %.@.X %.@.@.X @.@.Z Z Z Z X Z X @.Z '.'.Z Z Y Z $.X $.@.Z ,.Y @.Z /.Z Z $.$.$.'.U '.Y ,.$.$.Z =.Z Y ,.Z ,.Y @.@.Z =.*.=.@.@.*.*.*.].%.*.=.U z w d _ / * # ",
427"4 1 1 7 1 1 1 4 7 4 1 1 4 1 9 2 9 9 7 e k { . @ @ & @ $ & ) & - | e v e | | : | 4 e e 7 | ( < 6 ( ( } a < | ( ) % % : y e.0.0.0.6.e.6.9.9.9.[.[.1.[.[.(.[.).(.).,.$.@.$.$.$.%.%.%.@.%.%.%.@.=.=.=.*.Q Z @.X @.@.@.X %.%.%.&.*.@.X @.X X @.%.%.@.@.X @.@.X Z X Z $.U *.*.@.Z Z Z Z Z Z Z Z Z ,.Z Z Y R Y Y Z ).,.$.Y Z '.X =.*.=.Z Z '.=.Z $.$.=.$.=.=.=.X *.=.@.&.&.&.*.=.=.U *.Z z w f _ ' # # # * ",
428"4 4 4 4 1 4 4 4 1 7 4 1 4 7 1 9 8 7 e e e | | 6 { % % % % $ @ & = : 5 = - , O O O i | i : 4 b 7 e 4 | | | : 6 a : : < a < ~ ) ] } y -.0.0.0.1.[.1.1.1.[.[.(.(.(.).).).Z @.@.@.@.%.X @.=.%.*.*.*.].%.;.%.*.*.$.$.@.U $.*.X X @.@.X X %.X U *.*.$.@.X @.X X X X @.X %.@.@.@.=.X $.X X X $.Z Z Z X @.X Z Z Y Y $.$.Y ,.Y Z Z '.@.$.X =.*.X *.=.=.X '.=.Z Z $.X $.U ,.=.*.&.&.@.=.*.*.=.U '.U w w f _ ' * * * + # * ",
429"4 7 b | 1 7 4 1 4 4 1 7 4 4 1 b b b 7 e i i i p } { { ) = = - ( : 6 6 i e v S G G v i | 7 e s 7 7 | | ( ( ( ( < < < | < } [ l h g W >.1.9.[.[.[.[.(.).).).)./.$./.@.$.$.].%.*.Q *.;.*.*.%.%.*.*.&.*.%.%.$.=.=.$.U $.U Z @.@.@.X $.@.@.$.=.=.=.X X %.X %.%.%.@.@.X @.X @.@.X $.Z U =.=.'.Y $.=.$.Z $.$.Y ,.Z Y Y ,.Y Z '.'.Z Z @.$.@.$.*.$.@.X $.Z =.=.$.@.@.%.@.X *.=.=.&.*.*.Z Q U '.x f f _ ' * * * . # * ' ' ",
430"4 7 4 7 7 4 e 4 7 7 b 8 4 7 8 b 8 8 b 7 e e v v 6 5 i 6 : - : 6 6 i e v e v O v v v e | 7 e s | | < ( ( 6 : : a ( a | | } h C w R R !.!.!.)././.).).,.$.@.Z Z @.@.%.%.X @.@.@.;.%.;.X *.*.X X @.*.*.*.@.*.*.*.X *.*.Z *.X @.$.X $.@.*.*.*.*.*.@.@.%.%.X X X @.@.@.@.X =.Y Z @.@.X X Z Z Z X *.X $.Z $.Y ).Z $.Z $.).Y Y $.=.Z @.*.@.*.*.@.$.Z =.$.*.=.=.*.*.%.@.@.@.&.*.*.*.@.Z U z w f / * * * * * * * * ' _ 3 ",
431"1 7 1 7 1 4 4 7 4 7 7 4 4 8 4 7 b b e 7 e e e e i v G 6 i i i k v s v s s v v v e e e e 7 s e i < ( ( ( ( ( : ( | < ( a g h R '.Y !.Y ,.,.).@.@.%.].%.@.@.@.%.@.$.X X *.%.;.%.X *.X *.X Z *.@.@.%.X %.@.X X @.*.*.X *.X *.@.@.=.Z Z @.@.*.@.$.=.Z @.%.%.@.%.@.@.Z Z @.Z $.$.Z @.Z $.Y '.Z X =.Z Z Z Z Z =.,.Z @.Z @.$.Y Z Z @.@.@.*.*.@.$.@.$.*.=.=.*.*.*.%.;.*.*.@.X $.X U Y w w f / * * * + + * * ' _ _ _ f f ",
432"7 4 4 7 4 1 4 4 7 b b 7 7 7 4 7 7 b b e b 7 e s e s O v e v v s i s e s I s e q s I s e e e | | < | : ( a ( : ( < | < ( 6 C R =.Z Y =.=.@.@.%.@.%.].@.$.X Z $.X =.].%.X @.*.;.X *.X X X X U *.Z %.%.;.%.*.*.*.X =.X *.*.*.@.@.*.$.Z X %.X @.@.$.@.@.$.Z @.%.X @.@.U =.Z Z X @.%.@.X U =.Z @.@.$.$.$.$.Y '.=.Z ).Z @.).Z $.Z *.X @.@.=.*.X *.$.=.*.$.@.@.*.%.;.%.*.@.X X Z z w l ' _ * * # * * * * _ _ f f f o x ",
433"7 4 4 7 4 4 1 4 4 7 | 4 e | e 7 9 b 4 b 4 7 q b q s s s s F s v v e v I I v I s v v s e | | : : | : ( | ( { ( ( ( < | | a g R Y Y $.$.@.%.%.%.%.@.%.X X @.@.@.=.*.*.*.*.&.X @.*.Q *.E X $.@.@.@.@.X %.%.@.@.@.*.*.$.=.=.@.*.=.$.*.=.$.@.@.@.=.*.@.*.@.].Z *.*.@.Z $.*.$.$.Z X Z Z '.,.U '.Z Z $.Y Y Z '.=.Z Z Z Z X @.).,.=.Z @.%.%.Q =.*.=.&.*.*.*.=.*.%.;.%.*.Z Z X z d d _ ' > # * + * * * * _ _ 3 f o x D D ",
434"4 4 4 7 4 7 7 7 b b 7 4 e 7 7 7 b b e 7 4 b 7 1 b b e s v s q I s s v I v I e s s s v i ( | ( ( | ( ( ( < ( a ( < ( ( ( a 5 V $.$.Z ,.$.@.@.%.%.*.$.%.X @.=.*.@.*.X ;.X *.*.%.X X U D X X %.@.@.@.@.X %.*.*.*.@.*.=.=.=.$.@.=.Z ].@.*.].*.=.*.=.@.*.@.*.$.X =.=.=.Y '.,.,.Z $.Z X Z ,.Z '.Z $.Y '.Y $.'.U ,.@./.).Z @.X Z $.$.$.Q *.*.*.@.=.*.@.*.*.@.@.@.X X Q Y w w d _ ' * # * * * * * / _ 3 f o o o E x &.Q ",
435"4 4 4 b 4 4 7 7 7 7 4 7 b 7 4 b b 7 7 7 7 7 7 7 b b b e e s e q F s s s e v s e e e 6 | : ( ( ( ( ( : ( ( ( < < ( < | a a g T Y Z $.X $.$.%.%.@.$.Q X %.X *.X *.*.;.%.%.*.%.X @.@.z Z X @.X X =.@.@.@.@.@.].@.@.$.@.@.@.@.*.*.*.@.].@.$.'.=.=.=.=.%.*.'.$.$.X =.'.=.Z Z Z ,.Y ,.Y =.X Z Z @.Z $.Z $.Z Y Y @.Z Z Z Y ,.$.$.=.*.=.=.@.*.%.*.*.*.;.%.;.;.%.X X Q z f d 3 ' > * . * # # * / _ _ f f o o E E E ;.Q {.",
436"7 4 4 4 b 4 7 7 4 b b 4 7 7 4 7 7 b e 7 7 4 4 b 4 b 4 b b q 7 q s s s e e e e | | | ( | : ( ( < ( ( : : ( { : : : ( ( < | a C ).$.$.%.X @.%.%.X =.@.*.*.@.@.@.*.%.X *.Z %.%.X Q X X X X *.$.@.X @.%.@.].@.*.=.*.@.].@.@.@.=.$.%.%.@.@.%.=.=.=.=.=.$.@.=.$.$.$.Z $.=.@.@.X $.Z $.U =.$.@.Z ,.Z $.Z Y =.$.Y $.$.$./.Z $.$.X $.*.X *.@.*.*.*.*.&.*.*.=.Q X X z w d _ > > + > * * * * / _ f f f o x D E E Q {.{.;.;.",
437"7 7 4 b 4 7 7 7 7 7 7 7 4 7 7 7 7 7 7 | 4 4 4 4 | 4 4 4 7 b b e e q e e 7 | | | | ( : : ( : : a ( ( : ( ( ( : ( : ( < | a a C Y Z @.*.;.*.=.X =.X *.@.*.%.*.*.X %.%.X *.X Q &.X D Z X X $.$.@.%.%.@.*.@.=.$.].$.*.@.@.@.$.@.].*.@.@.].*.*.*.*.*.*.@.$./.$.$.$.@.=.$.Z $.$.X $.U $.Z X Z '.Z '.Z $.@.$.Y $.Y Z ).Y ,.Z @.=.*.@.*.@.*.%.;.;.;.%.*.X U U z w d _ ' > + * * * * * _ _ _ f f o x E D Q E {.{.E ;.{.{.",
438"4 4 7 b 4 7 7 4 7 7 7 e 7 7 7 7 7 b 7 | 4 4 4 4 4 7 | 7 4 7 7 4 | e | | | | : : | , ( ( ( ( } : } ( ( ( : ( ( < ( ( < < < a C R $.Z *.*.%.*.$.$.X =.=.*.;.%.*.*.%.%.@.*.%.X X $.X X X X Q /.$.%.%.@.*.=.$.'.=.$.$.$.$.@.=.@.@.].].].].%././.].].]./.=.=.%.@.$.$.*.$.@.Z $.X @.=.=.$.Z @.Z X =.Z =.$.@.$.$.$.Z ,.Y $.=.@.*.&.*.].%.*.%.%.%.;.*.Q Q z m 3 ' > * * * + ' ' ' _ _ 3 f o o o D E Q ;.Q {.;.;.{.{.{.{.",
439"b b 4 b b 4 7 7 7 4 b | 7 | 7 7 7 7 e e , | | , | | 7 | | | | 7 | | | | | : : : : ( a : < < < { : : } ( ( ( ( ( ( | < | a k y Y Y Z @.%./.].@.X *.*.*.%.X *.*.X %.X %.X X %.X *.X X X @.$.=.@.@.@.@.$.].$.@.=.$.'.$.=.$.@.*.@.@.$.*.].*.*./.].].].*.=.].@.%.$.,.).Y Z @.=.$.X @.Q *.@.@.*.@.Z $.@.Z Z $.Z Y ,.Y $.$.*.*.=.=.].*.].c.*.;.%.*.U z w f ' ' ' + * + * * * _ _ 3 o o x x D Q Q Q Q ;.{.&.{.{.{.{.{.{.",
440"1 1 7 7 1 7 4 7 e 7 7 | e 7 e 7 7 7 i | | | | | | | ( | ( | ( | ( | : | ( : { ( ( ( a : ( ( ( } { ( : ( ( : : : ( ( ( ( < a j Y Z Z '.*.%.c.@.$.@.%.%.%.*.*.Q @.@.X %.%.X X %.X X X Z Z @.=./.$.].$.$.@.@.Z =.$.'.$.@.=.@.@.@.@.$.*.%.].=.*.*.*.=.=.=.$.$.$.$.'.$.,.,.$.Z $.@.@.X *.X X @.*.U $.).).Y /.Z Y $.=.@.@.%.*.*.=.=.%.@.%.%.X X z w d ' ' > + + ' * * ' ' _ _ f m o E E Q ;.;.;.;.&.{.;.{.{.{.{.{.{.{.",
441"b 4 7 e 7 4 7 4 1 7 7 b 1 7 4 7 e e e | | | | | | : 6 : : : | , | ( < | , ( ( : : 6 } ( ( ( ( ( ( { ( = { - ( < ( ( ( < | a y R @.$.$./.].*.@./.*.*.%.%.%.@.@.Z /.@.%.X X *.X %.X X $.$.=.$.@.%.$.$.$.$.$.$.Z '.'.*.@.@.,.=.'.=.$.@.].'.=.=./.=.*.*.$.'.$./.).$.,.$.@.X @.X Z @.=.Z @.@.X @.@.Y Z Z /.Y $.@.=.=.@.;.*.c.*.&.*.*.*.U X E w d _ ' > + + * * * * * _ _ f f o x E Q E ;.E {.{.{.;.{.{.{.{.{.b.{.7.{.",
442"7 4 7 7 7 b 4 7 7 7 7 7 4 b 7 7 8 7 e | | < | | i | | ( : : : | ( ( ( : : : { ( { : ~ { = { < ( ( = { ( ( { - { { ( | ( < a 0 R Z @.$.].].=.*.*.*.*.X %.@.@.@.@.$.@.%.X Q *.Q X X @.@././.$.@.].@.]./.,.@.$.$.Z Z =.=.@.=.&.=.*.$.$.*.'.'.=.]././.].@.$.$.@.$.$.$.=.$.@.$.X $.X $.$.@.@.Z Z @.=.,.,.$.Z $.=.*.&.].;.*.*.*.*.*.Z X z w d ' > > * * * # * * * _ _ f o o o x E Q ;.;.;.{.{.{.{.;.{.{.{.7.{.7.7.y.{.",
443"e 7 4 b 7 7 4 7 7 7 7 7 7 7 7 7 b 7 7 | ( | ( ( i , | | ( : : : ( : : : ( { ( { ( { { { { { = = = ~ ( = { = ( < - : ( ( | | 6 R Z =.=.*.@.*.$.@.$./.*.$.*.Z @.@.@.].$.@.@.X X @.$.$.$.$.@.@./.$.).$.$.$./.@.@.=.'.].Z '.$./.*.].].]./.=.a.*.*.].].].].%.@.].].$.$.'.@.=.'.=.X $.Z X Z '.'.*.=.*.X Z $.$.$.@.*.].;.c.*.*.;.X Z z f 3 ' ' > * + + * * * _ _ _ f f o x x Q Q E ;.E {.E {.{.{.{.{.{.{.{.7.b.b.7.7.b.",
444"4 7 7 e b e 7 7 8 b 8 b 7 7 7 4 7 8 7 | | ( | | | : : , | ( : ( : : ( { : { { = - ( @ & @ ~ = = = & = ~ - ~ - ( ( { ( ( ( | 6 C $.@.@.@.X $.=.*.*./.*.].@.@.Z ).$.].$.$.$.@.X @.@././.=.,.$.$.$./.$.$.).$.$.].].,.$.$.$.@.].%.%.%.*.c.*.=.a.*.%.*.%.].].@.].].$.$.'.@.*.=.'.=.@.@.@.@.X Y *.Z *.*.@.@.]././.*.].%.%.@.X Z z m d ' * * + + * * * * / _ _ f f o o E E E Q ;.&.{.;.{.{.;.{.{.{.{.{.{.y.{.7.7.7.7.b.",
445"7 7 7 e e 7 | e 7 7 7 | 4 b 7 7 7 7 e | : , | < ( , < : : ( ( - : - : : } ~ ~ = = . @ = @ @ @ = @ & & = & - ( - { { ( ( | | a C Y %.@.@.$.$.,.,.].*.].$.*.$.).Z /./.@.$.@.%.$./.,.$.$.,.$.).@.@.)./.).Z ).$.@.$.Z /.$.@.].%.%.%.c.%.*.=.&.*.*.*.].].].*.].@.].$.$.$.$.$.U =.=.@.Q *.@.@.@.$.*.*.%.%.;.%.@.].].*.%.%.Z z d d ' > + * + * * * * * / _ f f o x E D Q Q {.E ;.;.{.{.&.{.;.;.{.{.{.{.{.b.b.b.b.7.y.b.",
446"7 7 7 | 7 e 4 7 7 7 7 e 7 7 7 7 b 8 7 | a | < | | < ( : : | : ( : ( { ~ & $ @ . . . . . . @ . & @ = = - - - - ( ( < < a a V Y @.X @.@.$.$.,.].].]./.@.@./.Z @././././.@./.$.$.,.$.,.$././.@.).*.).$.).$.$./.Y ,.$.@.%.%.%.].].].].].c.%.c.%.]./.$.].].@.@.$.$.@.%.@.=.=.=.$.$.=.@.%.*.*.*.*.%.].%.*.*.*.].=.U z w d ^ > + * + * * * ' ' _ f 3 o o E E E E Q Q {.;.;.;.;.{.{.{.{.{.{.{.{.{.{.b.b.b.b.b.7.7.7.",
447"7 | e 7 4 1 b 1 8 7 7 4 | 7 e 4 7 7 7 7 ( ( ( ( < ( | < ( { ( ( ( = & @ & . . @ . @ @ # @ @ @ = - - - - , ( | | | y !.Z ,.)./.).)././.$.'.=.$.@./.@.@./.@./.$.].$.'.'.]./.].].$./.Z @.$.@.$.$./.@././.$.$.%.*.].@.].].].]./.*.*.].].$.@./.].*././.].@.$.@.@.%.X %.*.@.%.%.%.%.%.%.%.%.%.].].].@.X z w d / * * * # + * * * ' 3 3 3 f o m E D E E {.Q {.Q {.{.;.{.{.{.{.{.{.{.{.b.b.{.b.b.b.7.7.7.7.7.",
448"7 | 7 7 e 7 7 b 1 7 | 7 | | 7 e 7 8 7 | | | | , ( : : , ( : { = = @ @ . @ @ @ @ + . + $ . . @ = - - { < < < a a y !.Y ,.).).).).)./.$.$.$./.@.,.)././.@.@./.$.$.$.,./.=.=.$.$././.@.$.$.@.@.@.Z )././.].%.].].].].].*.*./.].%.].@.].*.].].$././././.@.$.$.%.@.@.*.*.%.;.;.;.;.%.c.%.].@.Z U z w 3 * > + + + * . * * ' _ 3 3 m o D D E E ;.;.;.{.;.;.{.{.E {.{.{.{.{.{.b.{.{.b.b.{.7.b.b.7.7.A.7.y.",
449"4 7 b 7 4 | 4 7 7 8 e e e 7 7 4 7 7 e e i ( | | | | ( : : { = $ $ @ @ @ @ - - - , , , - - @ @ + @ . @ = = - - , ( | | y !.).,.a.).).).,.,.'.,.].$.$.@.$./.*./.).$.].*.$.$.,.=./.'.'.'.,./.$.$.$.$.)./.).).a.].=.$.$.$.=.=.*./.].;.%.*.@.*.].*.$.*.$././.$.$.*.@.$.@.@.@.@.;.%.%.%.%.*.%.@.*.U w d l ' # * # + + * > * * _ 3 3 m o D D D Q X {.;.;.;.%.{.{.{.{.{.{.{.b.{.y.{.{.{.y.{.b.b.7.7.b.b.7.y.v.b.",
450"4 7 4 7 b 7 4 1 b b 4 7 7 7 e 7 7 7 v i , ( | , < ( ( : { ) @ @ @ . - , , ! ! ! , ! ! ! , , - @ @ @ @ = = < , ( | a t !.(.).(.).a.a.,.,.,.).]./.$.].$.@.].=.).$./.].].$.)././.,.).=.,.)./.Z @.@./.@.,.,./.%.%.$.=.=.*.].*.*./.*.%.*.*.&.].].=.=././.@./.'.*.%.@.=.*.%.%.*.c.*.*.;.*.%.U z z l ' ' * + * + # * * * _ _ 3 f m m E E Q Q ;.;.;.;.%.{.{.{.{.{.{.{.{.{.{.b.{.b.y.{.b.{.7.b.b.b.b.b.b.b.y.b.",
451"7 | b b 7 7 e 7 4 7 7 7 7 e 4 7 b e e 6 | | ( ( < , { & @ - , ! ! 4 e e b 2 2 2 2 2 ! ! , - @ . . . @ @ = - < | a | y :.'.!.a.).).).,.!.,.*.$.].].$.].].].,.$./.].*.$././.$.$./.].,.'.,.)././.$.$././.].@.@.].*./.].].*.%.].=./.*.*.]./.&.*.].@.].].].@.@.=.].*.*.*.*.c.*.&.].%.%.X z w _ ' ' ' + + * * * ' * _ _ _ f o o x D E E ;.Q ;.;.;.;.{.{.{.{.b.{.b.;.7.b.{.{.b.{.b.b.b.v.b.v.b.A.7.b.y.b.b.y.",
452"b 7 4 1 b 4 | 7 1 8 7 7 7 e e e 7 s e | : | ( : ( < { & @ @ - , ! 2 2 q 4.k.` s 9 1 9 9 9 b b ! ! - @ @ . . @ . @ = - , , | | k ^.!.!.).).,.,.,.,.,./.$.]./.$.].@./.'.$.$.$.$.$.$.=./././.]././.$.Z $.$.).$.$.$.$.].$././.$.*.*.*.].%.*././.*.&./.*.].%.@.]./.%.].*.%.].*.c.;.*.].=.=.&.$.Y w d _ > > + * + # + * / / 3 3 f o o E E E Q ;.;.{.E {.{.{.;.;.{.{.{.{.b.b.7.7.b.b.b.b.y.b.y.b.y.b.b.v.7.A.b.y.y.v.v.",
453"| 7 4 7 7 e b | 4 7 7 b 7 7 | 4 4 e e i | : : ( ( = @ @ @ - , ! 2 q H S.V.|.I q 9 9 9 9 b b b q 7 ! , @ @ . @ @ - - - < < | r V '.).).).).g.(.,.,./.]./.@./.$./.*./.,.=./.]././.,./.$./.$.,.'.).).,.'.$.$.$.$.$.X ].].@.].*.].].].].].=.*.*.].&.].%.].].a.].].].c.].].].].].].=.*.=.Y f f _ ' + * # * * * * ' _ _ 3 3 m D D D E ;.E {.E {.{.{.{.{.;.;.;.{.{.{.{.b.7.7.y.b.v.b.b.b.7.7.7.v.7.A.7.v.b.y.v.y.v.v.",
454"4 | e 7 4 e 7 e 7 7 7 b 4 7 e e | 7 7 | < < ( ~ = = @ - , ! ! 2 9 j.S.=+n.I s 1 9 2 2 9 9 b b b 7 7 , - @ . @ @ . - - , ! < 8 y :.'.,./.a.!.,.(.'.'./.].].$./.$./.].].=.=./.@./.$.,.,.,./.$./.$.$.).$./.,./.$.=.$.].@.=.].].].].@.*.&.*.*.*.*.].*.].].%.%./.].c.].c.c.].c.].].=.,.U w 3 / ' + > + * # * * / _ 3 f f m z z E Q *.;.{.{.{.{.{.{.{.;.{.%.;.;.7.{.b.{.{.b.7.7.b.b.v.b.y.y.7.b.v.A.v.7.A.v.y.b.y.y.v.",
455"4 e | 7 b 4 e i | 8 8 | | 4 4 | 7 7 | ( | ( ( = = - - , ! 2 1 H j.S.-+|.I q 1 2 2 9 2 2 1 4 b 7 b 4 4 , @ @ . @ - @ - - < 8 | r !.)././.).!.a.'.,.,.=.$.$././.@.].].].].*.]./.,.,.,.,.$.$./.Z /.)./.).,.Y ).,.=./.@.$.$.$.].%.*.*.].].&.*.].]./.=.=.=.*.].c.].].&.].=.*.@.@.'.w w d 3 > * * + + ' * * / _ 3 f f o z z U X Q ;.Q ;.;.{.{.{.{.{.{.{.;.7.c.{.{.b.{.{.b.7.{.7.7.b.7.7.b.v.v.I.7.v.A.v.y.y.v.y.y.C.G.",
456"4 7 | | 7 e e | 7 7 1 e 7 7 b 7 7 b e a ( < - @ - , , , ! b H S.S.V.+.v 4 4 1 1 2 1 2 2 9 1 7 b b b b | - @ @ @ @ - - - , < 8 y ^.)./.,.a.,.(.,.,.,.'./.=./././././././.=././.,.,.!.,.).$./.$.@.$.@.).).$.,.,.=.=.=././.$.=.].].].].].].%.].].*.*.&.=.c././.].c.'.a.=.'.Z z w l / * * > # * ' * * ' _ _ f o m z Q Q X ;.;.*.;.*.;.{.{.{.{.{.{.7.7.7.b.c.c.7.7.7.c.7.b.7.b.7.7.7.v.b.b.7.I.A.v.A.v.v.v.v.I.A.y.A.",
457"7 4 4 b 4 | e e 4 8 8 8 7 7 4 7 | 7 7 i ( - = @ - , ! 4 q _.S.-+n.F e 1 ! 1 2 2 1 1 2 2 1 4 4 4 7 7 7 | - @ - @ @ @ < < | | r R )././.!.a.'.(.,.,./.'././././.).].,.'.=.=.'.a.'.'.!./.).Z /./.Z /.$.$.,.$.].=.*.*.].*.=.=.%.%.].*.*.&.*.*.].=.a.*.*.=././.].].*.=.U Y w d / ' * * # # # * * ' _ _ 3 f f o E E Q Q ;.{.%.;.&.;.;.{.{.{.7.{.c.{.c.{.7.7.7.7.b.7.7.7.7.7.7.v.7.v.b.b.v.v.b.v.y.y.C.y.v.v.A.v.v.A.",
458"7 b 7 4 7 e e e 4 8 4 | 7 e 7 7 | e 7 i { = @ , , ! ! q H S.`.|.s 4 1 b b 1 ! ! 1 1 2 1 1 1 1 1 8 8 7 e ( - @ @ @ , - , , ! a y !.(.).a.,.!.,.).,.,./.=.].$.$././././.'.=./.,.,.'.'.,.)./.@.@./.,.$./.$.$.$.].].].%.].*.].c./.*.].=.a.*.].*.c.&.*.c.*.=././.]./.Y Y m l / / # # # * # * * ' / 3 f f o o x x Q ;.;.;.;.{.%.{.c.;.{.7.7.{.c.7.7.b.7.7.7.7.7.{.7.b.7.7.v.A.c.A.y.7.v.v.b.I.7.A.A.7.y.A.v.v.v.v.A.A.",
459"4 4 4 4 b e e | 7 | 4 7 7 4 7 e e 7 7 a { - , , 2 2 b q E.S.` e 1 b 1 q b q 1 1 2 2 2 4 1 1 b b 7 7 7 e i ( @ @ . - - - , | | r :.!.,.).).).,.).,.$.'./.$.]./.,.,.,.=./.,.'.'.,.,.'.,././././.$.$.,.$.,.,.$.].@.].%.c.%.*.].].].a.=.&.].c.;.].]./.=./.=./.@.Z Y w d / ' * * * * * * ' / / _ 3 f m m x x U Q Q E {.X {.{.{.7.b.7.7.{.{.{.b.7.c.7.b.c.7.b.b.7.y.b.v.b.b.A.A.7.A.v.A.v.A.A.I.A.y.y.7.v.v.b.A.A.v.y.",
460"4 4 b 4 7 4 7 7 7 7 1 4 7 4 4 4 7 7 7 a - , , ! 2 2 q F k.I e q e q q q e b b b 1 4 1 1 4 1 7 7 7 7 | i | ( = @ @ @ - , , ! a t (.,.!.!.).).,.$.=./.=././.$.,.,.$.,././.a.,.'././.,.,.)./.@.].=././.$.$././.].%.%.%.]./.=.].].%.%.].].*.%.c.].].c././.$.Z Y w d ' _ > * # # # # * / / _ f m m z D E Q Q *.;.;.{.;.;.{.{.{.;.{.{.7.7.b.b.b.b.b.7.b.7.c.b.b.b.7.7.7.A.b.I.I.7.A.v.b.I.y.y.A.A.C.y.y.v.v.v.v.b.v.y.",
461"4 4 4 7 7 8 1 4 b 4 7 7 4 4 | 7 | | e | - , ! ! 2 b b F s e 7 q s s e q e q e 4 e | 4 7 7 4 | 7 i 8 i 7 i | - @ @ @ - - , | | y (.g.'.!.!.,.,.'.,.,.,.=.,.,.'.=.,.$./.].$.a.,.,././.,./././.]./.=.,././.$.$./.=.*.].].].].].].].c.;.c.].].]./.].].$.Y Y z d _ > > > * # * * / / _ _ f m m z D E X X %.;.;.;.;.*.;.;.{.{.{.{.{.7.{.{.b.{.7.b.b.7.7.c.7.v.b.v.b.v.v.b.A.b.I.v.v.v.y.C.C.A.v.y.y.A.A.v.v.v.v.v.b.v.",
462"b b 4 4 7 7 4 4 7 8 7 e 7 4 4 8 7 7 4 | , ! ! 2 1 b 7 b 1 1 q v s q e q e b e e | | e s O 7 | 8 8 8 i | i | - @ - @ - - , < | y !.).,.,.).,.,.=.=.,.,./.=.,.,./.=.'./.=./.,.,.,.'./.).Z /./.].].=.,.@./.).$.=.=.c.].%.].].].c.*.].*.].]././.$.Z X Y w _ ' ] > + # # * # / / _ 3 f f m z D X X %.%.{.{.%.;.{.{.&.;.;.{.{.b.{.b.b.{.7.b.{.7.7.b.7.A.c.c.v.b.v.b.b.A.A.A.A.b.v.A.v.v.A.A.A.A.y.A.v.A.v.y.y.A.v.y.y.",
463"| 7 b e | 8 b 7 4 4 4 4 7 7 7 7 4 8 | | , ! ! ! 4 1 4 1 1 q e F e q e q e b e e i i 6 M G a 7 i 8 i 8 i | a ( @ @ - - , < | a N ).).,.!.,.)./.=.,././././.=.,././.,.'.,.'.,.a.,.$.)./.)./././././.=.,.,.=.=.a.*.*.%.%.c./.*./.].a./.c./.$.,.Y Y w d / ' > * # ; * ' / / / / _ f f z z X X X %.{.%.{.%.{.{.{.{.{.;.&.7.b.b.b.b.7.b.b.b.b.7.7.b.7.7.7.A.7.y.v.y.y.7.A.A.v.I.v.v.A.A.v.A.A.y.A.A.A.y.y.A.A.y.y.C.C.",
464"| | 4 7 4 4 b 7 4 7 4 4 1 4 7 4 | b 7 | , ! , ! 1 ! 1 1 e q e e e e b 4 e e B B 6 : k t B B r r | i i | 7 i a @ = @ - , , 8 | C (.).).,.,.=././.'.'.'.'././.,./.]././.,.'.!.g.).$.)./.,.,././.]./.=./.,.].%.].].].c.%.c.].].a.].=.'./.,.Y Y w d _ ' > * > + * > > ' _ _ f f w z z X X X ;.;.*.%.7.{.7.%.7.b.b.7.b.7.7.7.7.7.7.7.b.b.b.7.7.C.7.L.c.7.A.b.b.b.v.y.A.y.A.A.I.v.v.A.J.J.A.A.A.A.A.A.C.A.A.C.C.c.B.c.",
465"7 e 7 4 | 4 4 4 7 7 4 b b 7 8 7 1 b 8 ! ! ! , ! ! 1 4 q e q e q e e e e s G K K [ { } 6 y B M B p a 8 a 7 a } @ - - - , ! 8 a T ).).).).,.,.'.'./.=.=.]././.$.$.)./.,./.).a.).).,.).,.,.$.$.].a././.=.a.].c.%.c.]./.].].a.=.]./.,.,.Y Y w 3 _ / * ; # + # / * / _ 3 l m m z z Z X X X %.*.*.{.%.%.c.%.c.{.b.7.b.b.b.7.7.7.7.7.7.7.b.7.7.7.7.A.7.A.7.7.v.v.v.y.7.y.y.A.v.A.v.I.v.J.A.I.G.y.A.C.C.A.A.A.y.B.B.z.z.",
466"1 4 4 4 | | 4 4 4 7 | 4 4 4 7 7 8 b 7 4 , ! 1 ! ! 1 b e b b b e b 7 4 e G .N u ) ) % - a y y p B a 7 7 7 a : @ @ - , , | 8 a V !.,.,./.$././.'./.*.'.'.,.).).=.,.,.a./.)./.).).)./././.'.'./.,./.,.=.a.%.c.].a.a.a.].c.).a./.,.).R w l / ] ; # # # / * > / ' _ 3 d m z z X X X Q %.*.%.%.*.;.c.%.c.c.c.7.b.7.b.7.7.b.b.b.7.7.7.C.7.A.7.I.7.A.c.A.A.A.v.v.v.y.v.v.v.A.v.A.y.I.v.v.G.v.G.C.A.J.C.A.C.C.A.B.B.c.z.",
467"4 4 4 7 | e 7 1 | 7 4 | 7 7 4 4 1 8 4 ! ! ! 1 ! 1 4 e b 4 e 4 7 4 e 4 v ..u u 0 [ & @ @ & { 5 j p r a 7 a r { = - - - | ! ! a V ).,.$.,././.=.]././././.=.$././.'.).).)./.)./.)./.).'.a./././.a.=.a.'.*.].%.c.&.a.=./.)./.,.Y Y R l _ ' > * * # / * > ^ / _ l l w m z Y D X X *.%.%.;.*.{.c.;.7.;.;.{.{.7.7.7.7.b.7.b.b.7.I.7.A.7.A.7.A.c.A.A.v.7.A.7.A.v.v.v.y.y.y.v.A.y.v.y.v.G.v.D.v.A.C.C.A.A.A.A.C.C.B.B.B.",
468"4 4 4 7 7 e 4 4 4 7 4 7 | 4 | 7 1 8 7 7 ! ! ! ! 1 1 1 7 4 4 7 4 e | e u K j j 0 [ & @ @ @ & } r r | i a a ( = - , - , 8 8 5 R '.'.$.,.$././.$./.,.,.,.$.$././.,.).).).).).).a./.).,.,./.=./.a.=.].a.].a.].a.c.a.=.a.$.Y R w d ] ^ ; > # # / > ' / 3 l l d d w z Y D Z X *.;.*.c.%.c.c.7.7.c.7.7.;.7.{.%.7.7.c.7.7.7.I.c.7.I.7.7.I.7.I.7.A.A.A.A.y.A.C.y.A.y.y.v.v.v.v.y.A.y.I.v.y.D.y.C.A.A.A.A.v.v.A.y.C.B.D.",
469"4 b b 7 | 4 7 b 7 4 4 | b 4 7 | 7 4 4 | , ! ! 1 b 4 1 4 1 4 4 ! e 6 k 5 j K K t ) @ @ @ = = - : K G a i a a = - , - , ! ! 4 y !.Y ,.,.].=.=././././.$./.,./././.,.'.).)././.).)./.].].a./.a.].a.=.a.].c.].a.]./.].$.Z Y w d ^ > * # * ; * # ^ / ] d l l d Y z Y Z X @.@.@.%.;.c.*.c.%.%.7.%.{.7.7.b.7.c.b.%.c.c.7.c.c.c.7.7.L.I.c.c.A.A.A.A.v.v.v.A.A.A.A.G.G.v.y.y.v.I.v.v.A.y.A.y.y.C.A.y.A.A.v.A.A.A.y.C.y.A.",
470"4 4 4 b e 7 | 7 | b 1 4 7 4 | 4 | 4 1 4 | ! ! b 7 4 4 4 4 4 1 4 v 6 6 : 5 W u K & @ = @ : : k 6 K M a a a a < , , ! , ! 8 | j !.).$.,.,.,.,.$.$.$.'.'./.,.$.,./.).$.).).)./.).).)././.].].a./.a.].c.a./.a.].a./.).Y w d ] ' # # # # * ^ / / / l l c C R R R (.).).).,.].c.].%.c.].c.c.c.%.7.%.7.c.7.7.c.7.I.7.c.7.7.C.c.I.7.7.I.7.L.c.C.C.A.A.A.v.A.v.v.I.G.y.v.I.y.G.J.I.I.A.A.y.y.y.c.A.A.A.A.A.y.A.y.y.y.7.v.",
471"4 4 1 4 7 7 7 7 4 1 4 4 4 | 7 | 1 1 4 e i ! , 4 4 4 | ! ! 4 1 e .5 } - p B K [ & = = : 6 k p j S W 7 a a < - , , ! ! ! | | V Y *./.'.'.'.=././.=././.$.].=.$.).$.Y ).).,.)./.)./.,.,.,.]./.a.a.a.].].c./.).$.R w l ' ^ * / # ~ / / ^ ^ c C T #.i.q.N.P.++#+*+*+P.N.u.u.U.[.a.a.c.c.%.c.c.c.7.7.7.c.7.7.c.c.c.c.I.7.c.I.c.7.I.7.A.A.A.C.7.A.A.y.A.A.J.I.I.v.G.G.A.A.I.v.y.A.A.y.y.y.y.v.A.I.v.A.A.A.y.y.y.y.A.v.",
472"4 1 1 4 4 4 4 b b 1 4 4 1 4 7 7 7 7 b e | 4 1 4 ! | ! ! | ! 1 s G ) : : t t t u & = = } 6 k p p S a i a a a < , , ! < 1 ! < V !.$./././.,.'.'./.=.=./.$.].*.@.,./.).).).$.)./.).).).'.a.=.a.].a.).].a.).).Y w d ] > > ; ; # / ^ ^ g y W 3.M.N.$+{+{+3+3+3+3+3+3+3+3+/+{+:+*+P.U.a.c.7.c.c.%.7.7.7.c.7.I.7.7.I.%.7.b.L.7.I.c.I.c.A.7.A.C.L.A.A.A.v.J.A.v.I.v.y.y.v.A.A.J.G.A.G.C.C.C.C.A.J.A.A.v.A.A.y.y.A.v.G.v.",
473"4 4 4 4 1 7 4 4 4 4 4 4 4 b 8 8 | 4 7 7 , ! | ! 4 ! 4 ! 4 ! 4 s v - | p M K N u [ & : ( 5 t k B W a | g a - < , ! ! ! 8 | a V ,.,./.a.)./././.'.a.,.,.'.,./.=.).).Z ).).).,.).a.)./.a.,.a./.a./././.Y Y w l ] ^ * # $ # / ^ [ y -.q.T.$+{+{+e+e+e+e+e+k+r+k+r+r+l+k+k+l+e+3+{+:+#+.+d.c.c.c.L.c.c.7.7.7.c.7.%.I.7.7.c.I.7.I.7.I.C.L.A.A.A.A.C.C.A.I.J.A.I.J.G.G.G.G.G.I.v.A.y.y.y.y.A.A.I.v.v.A.A.A.y.A.C.G.A.J.",
474"4 4 1 4 4 1 7 7 | | 4 4 8 1 8 1 7 7 7 e , ! ! ! , 4 ! ! | ! 1 e 6 : B ..M K K u [ ) = ( : 6 j K B a < a a ( , < | 8 4 4 | g !.).).$./.,.,.'./.'.'././.'.'./././.).$.).,.).,.).).).).].].a././.,.Y R l l ^ ' ; # ~ ^ ~ 0 u -.s.H.&+{+3+e+k+e+k+r+p+p+q+p+r+p+r+v+r+q+r+r+r+r+l+d+:+:+*+.+a.a.L.7.L.%.I.7.I.7.c.A.7.I.c.I.c.I.c.A.A.C.C.C.C.J.A.A.C.A.A.G.G.I.I.G.A.A.A.J.G.G.A.A.A.A.A.A.A.A.A.y.y.A.A.A.C.A.A.A.",
475"4 4 4 1 7 4 | 7 4 4 4 1 1 4 1 8 1 4 4 | | ! ! ! ! ! , ! , , 4 s p v S }.}.}. .p 5 } & & = } k M p a a a < , < | < | 8 7 | y !.$./.).,./.).]./.,.,./././.,.'.'.).,.).).).,.(.,./.,./.,./.=.'.Y Y l l / * > $ ^ ~ y M f.Q.&+{+{+3+c+e+h+k+p+p+p+p+q+t+s+s+s+t+s+t+y+x+v+y+y+o+q+p+e+3+d+:+#+R.d./.L.c.L.c.L.c.I.c.C.].I.c.7.C.7.A.b.A.A.v.J.J.v.A.A.A.G.v.I.J.v.I.G.J.I.J.I.I.A.A.A.A.v.A.C.y.A.y.C.C.C.A.A.C.G.G.",
476"4 4 4 7 7 | 7 7 4 | 1 b 1 4 4 8 b 4 b | | , ! ! ! ! | , | ! e O t G S <.n.<.S p p [ = = { = p M 6 a a a a | , | ! | 7 8 i V )./././.,././.]./.,.,./././.).,.,./.,.$.).).,.,.,./.,./.,.,.Y w l l / ^ ; # ~ u .T.M.$+$+3+3+e+k+k+m+r+p+r+p+r+s+s+s+s+t+v+v+y+y+t+t+y+v+t+B+t+t+v+v+p+k+d+3+:+.+R.c.L.c.L.7.L.c.L.A.L.7.I.L.C.7.C.A.A.C.A.C.A.I.I.A.J.J.G.J.J.G.I.I.J.J.C.C.I.I.v.I.L.A.A.C.A.A.7.A.G.O.C.y.C.C.C.",
477"4 4 7 4 4 | 4 4 | 4 4 4 4 8 8 4 4 4 | e 4 , , , , ! | , , ! e ..B G +.n.|.+.G B p p : : : i B r a 5 g a < | | 4 | e v | a V ,.,.'.'./.$././.,.a./.'.).).a.).,.,.,.,./.,.'.'.,.).,.'.'.R n l / / > * ^ [ W T.&+{+3+3+e+k+k+p+p+p+r+p+v+s+s+s+s+r+t+t+v+B+v+v+y+v+B+t+y+w+w+y+y+y+s+v+r+r+e+3+:+#+R.~.L.R.c.L.I.7.R.I.I.7.J.J.C.A.A.A.y.C.C.C.A.y.C.A.G.J.G.G.I.v.J.I.J.L.J.A.J.J.J.J.L.J.y.v.A.A.G.C.G.A.A.A.A.A.",
478"4 4 4 | 4 4 4 1 4 4 8 4 ! 8 4 | 7 4 1 4 | , , , ! , , , | 4 s .K G I |.I O G G G G G p p B #.t a g 5 ( | | | 7 4 s e i y !.'.'.=.'.)./.$./.,.,.a./.$.).).(.)./././.a.,.!.'.'.'.Y w w l / / ; / ; # [ 3.$+{+c+c+k+p+p+p+r+r+r+p+p+s+p+r+s+t+y+B+v+v+x+x+y+x+y+y+x+y+B+t+y+y+y+t+y+v+v+v+r+k+e+:+:+.+c.I.L.c.L.L.L.I.I.I.L.L.C.A.A.A.I.A.A.A.C.C.G.C.A.A.J.J.J.J.J.I.J.L.L.J.J.A.J.J.J.I.A.A.G.C.J.L.C.J.A.L.C.A.",
479"4 7 7 4 4 4 4 4 4 4 4 8 4 4 4 | 7 7 b b 4 , , , , , , , , , I S ..G +.O p v S ......<. .S s.}.y g a } i | e e e e s 7 e y !.,.,.,.)./.)./././.).).a.,.!.!.,.,.,.).a.'.,.a.,.!.Y w d / # # # # # / ] W &+^+c+e+e+h+k+r+p+p+s+s+s+r+v+v+s+s+v+t+t+x+x+v+y+t+B+y+y+B+t+y+y+y+A+t+B+y+A+y+y+y+t+k+e+:+:+r.c.R.I.L.L.L.L.L.L.J.J.L.J.J.I.A.L.C.J.A.C.C.A.C.C.L.A.A.J.J.J.I.G.v.G.J.J.J.J.J.A.J.J.A.J.J.J.A.I.J.J.L.L.",
480"4 7 4 4 4 4 4 7 4 4 4 4 4 7 1 4 7 | 7 7 | , , , , , , , | ! I S ..<...p v B S ..<.n.}.<.n.s.K k a a : i e e e q 7 7 | j R a./.]./.,.@./.,./././.,.a.$.).!.!.,.a.).).!.'.R w l l ] ^ > # ~ ~ ^ ^ ^ u $+3+3+b+4+e+k+h+k+p+k+q+t+t+t+y+t+B+t+x+x+y+y+x+v+x+y+t+y+y+B+B+y+B+y+B+y+y+y+y+B+t+y+A+r+t+k+d+:+.+R.c.L.c.L.I.L.L.L.I.J.J.J.J.J.J.J.I.A.A.L.L.A.A.J.A.A.A.v.v.v.C.y.A.J.J.J.I.I.L.L.L.G.G.J.J.J.I.J.J.C.A.",
481"4 7 4 b 4 4 4 7 7 4 4 4 4 7 4 4 4 4 7 e | , , , , , , , , ! I 2.+.2.S p G S ....-+n.W.n.t. .j g a : i e s s s s q b i C ).)././.'./././.a.,.,.,./.).).).!.!.).).,.,.'.Y V n n ~ ~ ) g 0 g 0 y N W q.{+3+4+4+e+c+c+c+k+e+i+i+i+k+r+v+v+t+x+v+t+B+t+y+y+y+y+y+y+y+y+y+y+y+B+y+B+B+y+B+y+y+w+t+w+t+r+a+d+:+d.c.L.I.L.L.I.L.L.I.L.J.I.I.L.I.J.J.I.L.J.J.A.I.A.A.A.A.v.A.y.C.C.C.C.A.J.L.L.L.C.L.J.I.G.J.A.J.J.L.J.L.",
482"4 4 4 4 4 4 4 4 4 4 4 7 | 4 4 4 4 4 4 1 | , , , , , , , , ! I +.|.<...G +.+.<.}.-+n.M.n. .j 5 g ( 6 v s e s s s s 7 a V /./.)./.a.).).,.'./.a.,././.).).(.(.(.,.Y R w l g j r -...f.f.o.M.M.M.$+W.{+|+4+4+c+e+c+3+6+4+3+4+4+4+e+e+p+s+y+y+x+t+y+t+x+y+w+A+A+A+A+y+B+y+A+A+y+A+A+A+A+A+y+A+y+y+t+s+q+a+d+/+.+a.I.B.L.L.L.L.I.L.L.I.I.I.I.I.J.J.L.J.J.J.J.L.C.A.A.v.A.A.y.C.A.A.A.v.v.J.J.C.B.G.J.G.J.A.L.J.J.J.J.",
483"4 4 4 4 4 4 4 7 b 1 4 7 4 4 4 4 1 7 1 7 | - - , - , , , , , F O I 2...}.n.n.n.W.n.H.<.M k 6 } 6 | e e s v O I F s e y !.'.a.,.,.'.'./.a./././.a.a.).a.!.,.).,.R V C -.#.s.K.@+@+&+&+>+{+{+{+4+{+4+b+4+4+c+c+e+e+c+e+4+4+4+3+3+4+4+b+g+q+s+B+y+t+y+y+A+y+y+A+A+y+B+y+A+y+y+A+B+B+y+B+A+A+B+y+t+B+t+y+q+l+3+*+.+L.c.L.L.L.L.L.L.I.L.L.I.L.I.I.J.J.J.J.A.J.J.v.I.J.L.A.A.A.A.C.J.v.A.A.A.A.c.C.B.A.J.A.L.C.L.J.I.J.",
484"4 1 1 4 4 | 4 1 1 1 4 4 4 4 4 4 1 1 7 4 | , , , , , , - , , | e I O 2.<.n.n.n.M.n.<.O 6 a } ( | e s s I I O s I 7 i V ,.'.,.).).a.,././.].a./.a.a.g.,.(.(.:.V ^.f.Q.W.>+]+{+|+4+6+b+b+c+c+e+i+c+0+h+h+h+h+h+k+i+h+k+c+e+4+4+{+{+^+3+2+g+o+t+B+t+B+t+y+y+v+y+y+y+A+B+B+y+B+A+A+A+y+B+A+A+A+A+w+B+t+y+r+r+l+/+*+R.O.L.L.I.L.L.L.I.L.I.I.L.L.I.J.I.I.J.I.I.J.I.A.A.L.A.A.J.J.A.C.J.C.C.A.v.y.y.C.A.C.C.c.C.c.I.J.J.",
485"4 4 ! 4 4 7 7 4 2 2 4 1 4 | 7 4 4 b 1 4 | , - , , , , , , , , , e I +.|.n.|.n.<.G k | ( a < 4 v s s F F I I I s O y !.,.,.,./.,.,.,.'.a.a.a.a.[.g.(.6.^.i.q.Q. +$+{+3+4+c+b+e+c+h+i+i+k+k+p+k+q+k+k+i+h+p+p+m+q+k+p+k+c+e+e+3+3+]+{+3+3+b+k+q+B+y+y+B+B+B+B+B+y+B+y+A+B+A+A+B+B+B+A+A+A+y+y+y+w+B+t+t+B+r+k+:+.+R.B.L.L.L.C.L.L.I.J.L.I.J.L.L.L.I.I.I.J.J.J.A.J.A.A.A.A.J.L.A.C.C.A.J.J.A.A.A.C.J.C.J.C.A.C.C.A.",
486"4 4 1 4 4 4 4 4 1 2 1 2 2 4 4 4 b 4 1 1 | , , , , , , , , , ! , , e v I +.+.I G 6 : ( ( | , e s I G I I ` +.F s t R ).,.a.,.).).).a.a.a.a.[.[.1.u.N.T.Q.>+]+{+6+4+c+e+c+h+h+h+i+h+m+m+m+p+p+p+o+s+q+q+p+p+p+p+m+p+p+p+m+h+h+c+e+{+{+)+{+4+b+i+q+t+y+w+w+y+y+A+A+y+y+A+B+A+A+A+A+B+A+A+A+y+y+y+w+y+A+t+t+w+w+e+/+U.L.I.L.L.L.I.L.I.I.J.J.J.A.J.L.L.L.I.J.J.J.G.G.G.A.J.J.A.L.J.J.J.J.J.J.J.J.J.J.J.C.C.J.C.A.C.A.",
487"4 4 4 4 b 1 4 1 4 1 1 1 1 b 4 4 4 4 4 b 1 < - - , , , ! ! , , , , , e e e | | | , - - , | e s I I I ` F ` I s i y (.,.,.'.!.a.a.,.a.(.[.1.u.N.*+&+&+^+1+4+c+0+b+h+k+h+k+k+p+p+p+p+q+p+p+p+s+q+s+q+p+q+p+m+p+o+t+s+p+s+p+q+k+k+c+b+2+]+]+]+]+e+i+t+y+B+y+y+y+y+y+A+B+y+A+B+B+A+A+A+B+A+y+A+y+y+y+w+y+w+y+r+q+l+a+#+R.R.I.L.I.L.L.L.J.J.J.J.A.A.A.L.J.L.J.J.L.L.A.I.J.J.L.J.I.A.J.J.L.J.J.L.J.J.I.J.J.J.L.J.L.J.C.",
488"4 4 4 4 4 4 4 4 4 1 1 1 4 4 4 4 4 1 1 1 7 | - , , , , , , , , , , , , , , , , , - , - ( e e I I O ` |.` ` O e y R )./.a./.,.g.g.9.g.u.N.%+&+{+{+|+4+c+e+e+k+k+k+k+k+p+p+k+p+p+p+p+q+s+p+p+m+t+s+s+m+t+t+t+s+s+p+s+s+s+s+s+s+p+p+k+c+4+{+^+]+3+0+k+s+B+B+B+B+A+B+y+B+y+A+A+B+A+A+A+A+A+B+A+A+y+y+w+y+t+y+B+r+r+l+/+.+R.R.L.L.L.I.I.I.J.A.J.J.I.J.C.J.L.L.L.L.L.J.v.J.A.I.I.J.I.A.J.C.C.J.J.J.J.I.J.J.I.L.L.L.J.J.",
489"2 4 1 ! 1 4 4 4 7 ! 4 4 4 4 4 4 4 4 1 7 4 i - - , , , , , - - , - , , , , - , - , - | | e v I I ` +.` ` +.s a V (./.a.a.a.).[.x.i.M.*+{+^+4+4+c+c+k+e+h+h+i+p+p+m+p+p+p+m+p+o+t+q+m+p+s+s+s+m+t+o+s+s+s+s+v+s+t+t+t+t+s+s+s+v+q+p+k+e+e+3+^+^+2+i+k+s+y+y+y+y+y+B+y+B+B+A+A+B+y+B+y+x+y+y+y+y+B+y+y+A+t+t+t+t+r+d+:+.+R.L.I.L.L.I.J.C.A.A.J.A.I.J.J.C.C.G.G.L.C.L.L.C.L.J.I.J.C.J.J.J.A.J.J.I.I.I.L.L.R.L.J.I.J.",
490"4 4 4 1 1 1 1 ! | 4 2 4 1 4 4 1 1 4 1 b 7 | - - , , , , , , , - , - , - , - , - , : i v v I I ` ` ` ` ` O r y !.).a./.a.a.1.u.%+]+^+3+e+e+c+h+k+h+h+k+p+q+h+q+p+p+p+p+p+q+s+o+s+s+t+s+o+t+s+x+s+s+m+y+t+t+s+x+x+s+x+t+s+s+s+s+t+t+p+p+e+e+4+4+4+6+e+q+t+B+y+A+y+B+y+y+y+A+A+A+A+A+A+y+B+y+y+w+y+w+t+B+y+t+t+t+q+l+/+.+R.R.L.R.I.L.I.C.G.A.L.C.A.J.J.L.C.G.A.J.C.J.A.A.I.J.J.C.C.L.J.I.I.J.L.L.L.L.L.L.L.L.I.I.J.",
491"1 1 1 4 4 1 1 1 1 4 4 2 4 4 4 4 4 1 8 1 b | - @ - , , - , , , , , , , - - : - : | i B I O I +.I ` ` ` I O y V (.[.).[.[.e.X.]+{+3+e+4+h+k+h+k+p+k+p+m+o+o+q+p+q+q+s+p+s+m+v+s+t+t+s+s+t+s+v+s+s+s+t+s+y+s+x+s+s+t+t+s+t+t+t+s+v+s+v+p+p+h+e+3+4+4+0+i+q+y+A+B+A+y+y+A+A+B+A+B+y+y+B+y+y+B+v+y+w+y+B+t+t+A+t+t+r+r+d+:+.+L.L.L.L.L.L.L.G.L.L.J.J.A.J.L.L.L.G.G.J.J.A.A.A.A.J.A.L.L.L.L.J.J.L.L.I.L.I.L.L.L.L.J.J.",
492"8 1 ! 1 1 4 4 1 1 1 4 1 ! 4 4 7 8 1 b 2 b 7 < - - - , , - , , - - , - : : } 6 6 e G I G ` I ` ` ` ` ` I p V 9.g.[.a.[.e.Q.>+^+4+4+c+c+c+c+h+k+h+p+q+p+p+q+p+m+m+r+s+p+s+m+s+m+v+s+s+s+s+y+m+x+t+s+x+s+y+t+x+y+s+x+y+x+x+x+y+s+s+s+s+s+p+p+h+c+4+^+4+6+i+t+y+y+A+A+y+y+A+B+y+y+B+A+B+A+y+A+t+B+t+w+y+B+v+B+w+t+w+q+d+/+.+R.R.R.L.L.L.L.L.L.L.L.J.A.J.L.G.J.J.C.L.C.J.C.A.L.A.A.J.L.L.J.I.I.J.J.J.L.I.L.I.L.L.C.A.",
493"4 ! 1 ! 1 1 1 8 1 1 4 4 b b 4 8 1 4 8 b 4 e , - @ - - , : , , : : - - 6 B B B B I G I G ` G I F F F ` G W :.!.[.(.(.:.f.]+^+7+6+6+0+4+0+6+6+0+h+o+m+q+o+s+o+t+s+s+p+s+s+t+s+v+s+s+s+s+t+s+t+s+x+y+t+y+s+x+t+y+y+y+s+y+t+t+s+y+t+t+t+s+v+p+p+k+c+3+4+4+e+k+t+B+y+A+B+y+y+y+y+B+A+y+A+y+A+w+B+w+B+x+v+t+t+t+v+t+r+r+l+d+:+.+L.L.L.O.J.J.L.J.L.J.L.J.J.J.L.L.C.J.A.C.C.A.L.A.J.J.L.L.L.L.I.L.I.I.L.L.L.L.C.C.J.J.A.",
494"1 8 2 2 2 2 1 1 4 b 7 7 7 b 4 7 1 4 4 7 4 7 | - = - - 6 5 { : : 6 6 6 B B G O O +.` I +.G ` +.I ` F I G >.!.!.(.Y T W &+<+^+^+4+4+|+|+^+|+|+|+6+b+i+p+m+s+m+p+m+s+s+r+s+t+t+o+t+t+x+s+y+x+y+s+s+x+s+y+y+y+t+y+m+x+x+x+x+y+s+x+y+s+o+t+s+r+p+k+h+e+3+|+4+e+o+t+B+y+A+y+y+B+y+y+y+y+A+y+y+w+s+t+A+y+B+x+y+v+t+B+w+r+r+d+/+.+L.R.L.L.I.I.L.L.O.J.L.J.J.J.J.J.J.C.J.A.A.A.G.A.J.J.J.L.L.L.J.L.L.J.L.I.L.L.L.L.J.J.I.",
495"4 1 ! 4 4 1 1 4 4 e b b b 4 7 7 7 7 7 1 b b 8 | | - 6 B u K p p p p G ..S +.+.+.+.<.|.2.2.+.|.` ` |.` #.0.:.(.R C g p.'+)+)+4+^+^+^+)+)+'+'+!+[+[+8+g+q+t+s+v+s+s+s+s+s+s+x+s+x+x+v+x+s+t+s+y+x+y+y+x+m+y+x+x+y+y+y+y+x+y+y+y+x+y+x+s+v+s+s+p+p+c+c+4+^+6+e+q+q+B+B+A+t+B+B+y+A+w+y+y+y+t+B+B+t+t+t+t+v+t+v+t+t+t+r+l+d+.+.+I.L.L.I.J.J.L.L.L.J.L.L.L.L.L.L.J.J.J.G.G.A.J.C.I.J.L.C.J.L.A.C.C.A.I.A.L.C.G.A.I.J.",
496"! 4 8 4 ! 1 4 4 b | 7 4 e 7 7 7 7 1 7 4 b b b e s i v G K N M .+...2.k.n.n.n.H.F.n.-+W.-+H.W.F.F.W.n.M.o.q.f.i.e... +^+)+)+)+)+)+~+,+>+>+>+>+>+~+[+5+f+o+m+t+s+s+s+s+t+t+s+t+s+x+t+y+y+y+t+y+s+t+y+y+y+y+y+x+x+y+y+y+s+x+y+s+x+t+y+s+x+s+s+m+p+h+e+4+4+|+4+i+o+t+B+B+w+t+y+y+y+y+t+t+y+y+t+v+B+w+v+y+v+v+t+r+t+r+w+d+d+.+R.L.R.L.I.I.J.J.L.G.L.L.L.L.L.J.J.I.J.J.L.J.J.J.L.J.J.L.L.J.C.A.C.A.J.C.C.L.C.D.A.J.J.",
497"4 ! 4 4 4 4 4 7 7 7 4 e 4 4 1 4 7 e 7 e e 7 q s v G I +.}.}.n.H.n.H.-+>+-+-+-+)+-+-+-+)+)+^+)+^+'+-+)+>+>+Q.$+W.W.@+_+}+^+)+{+{+>+&+ +>+`.$+ + +>+ +~+|+b+o+s+t+t+s+t+s+s+y+s+x+o+y+y+t+y+x+s+y+y+y+y+y+y+x+y+y+y+x+y+y+y+x+y+y+y+s+y+s+s+s+s+p+q+m+e+4+^+|+b+e+t+t+y+y+y+y+y+w+w+y+y+y+t+x+y+y+v+y+v+v+B+u+t+t+t+r+q+l+:+.+R.L.R.L.L.J.J.L.L.G.J.J.L.L.L.L.I.J.J.J.I.L.I.L.L.L.L.O.O.C.L.A.A.J.A.C.G.D.A.G.L.L.",
498"1 1 4 1 4 7 4 7 ! b b 7 7 8 1 b 1 b 4 7 e s s I |.2.|.W.W.>+>+-+)+-+)+^+^+4+4+^+6+|+0+6+|+0+|+6+6+|+4+^+4+)+4+)+)+4+4+2+4+^+)+{+)+{+ + + + + +W. + +@+!+^+0+h+p+t+s+x+x+s+t+y+s+x+s+x+y+t+y+y+o+x+y+y+y+y+y+y+x+y+x+y+x+y+x+y+y+y+y+y+v+x+t+x+s+q+m+k+c+4+4+4+c+k+t+B+t+t+y+x+t+w+y+t+y+y+v+s+y+t+t+v+v+s+v+t+r+r+r+r+l+/+.+O.L.L.J.J.J.J.J.L.L.J.J.J.J.L.L.L.J.L.L.I.I.L.L.L.O.L.L.O.L.L.O.J.A.A.L.G.G.G.J.L.L.",
499"4 4 4 2 2 4 7 4 1 4 7 4 4 4 7 8 7 7 e s s +.|.n.n.W.-+-+)+-+^+|+|+|+0+|+6+6+4+0+6+^+6+6+6+6+0+0+0+6+6+c+b+6+4+c+4+4+6+6+4+4+4+4+^+)+]+$+ + +Q. +Q.Q.W.W.-+^+c+m+m+s+s+s+x+s+s+y+t+x+s+s+y+y+y+y+y+o+y+o+y+y+x+y+x+x+x+y+x+y+x+x+y+y+x+x+y+x+s+p+s+p+m+k+4+|+^+4+c+p+t+A+t+B+t+x+x+v+x+v+v+s+t+s+w+B+t+t+B+r+w+w+t+r+w+l+d+.+R.O.L.O.L.J.J.L.J.J.O.I.I.J.L.L.L.L.L.I.R.L.L.L.L.L.L.L.L.O.O.O.O.L.L.B.C.C.C.C.C.G.",
500"7 4 4 4 4 4 7 4 4 4 b 4 b 1 7 e e s F ` |.F.V.-+-+)+-+^+[+[+[+|+6+0+|+6+6+6+0+|+0+6+0+c+4+c+4+0+0+0+8+0+c+c+0+0+0+8+b+b+c+c+4+c+4+4+^+{+{+&+ +$+Q.W.W.K.@+`.)+4+h+s+s+t+y+y+s+x+y+y+x+x+s+x+y+y+y+y+y+y+x+y+x+y+y+y+y+y+y+y+y+y+y+y+y+s+t+s+s+p+t+s+p+h+c+4+}+}+4+k+v+B+t+v+B+t+y+v+x+t+t+v+t+v+t+t+t+t+t+v+r+r+t+r+r+l+a+/+R.L.L.L.L.L.L.L.O.L.O.O.L.I.O.O.L.L.L.L.L.L.R.I.I.L.L.O.L.L.L.O.L.L.J.L.L.C.L.L.L.C.",
501"| 7 4 4 7 4 | e 4 4 4 1 1 7 e s I ` n.F.`.-+'+!+^+|+[+[+[+|+6+6+|+6+6+0+4+6+6+0+6+0+4+6+0+0+c+c+c+c+0+0+c+c+c+c+c+h+h+0+c+c+k+k+c+c+e+6+3+^+{+>+$+$+T.Q.Q.W. +^+6+f+t+x+y+t+y+t+s+s+y+y+y+y+x+y+y+y+y+y+y+y+y+y+y+y+y+y+x+y+y+y+s+y+y+y+x+t+t+s+s+p+p+k+c+6+4+2+^+c+k+t+v+y+t+B+s+t+B+v+v+v+v+t+v+B+r+r+r+w+s+t+r+r+r+l+a+/+.+O.L.L.L.J.J.L.L.O.L.L.L.L.L.L.L.J.L.L.L.I.L.L.L.I.L.L.L.R.O.O.L.J.I.J.L.L.J.L.J.J.",
502"4 4 2 4 4 e e v 7 4 4 e 7 s O +.p.F.`.-+~+_+^+(+[+|+6+4+6+4+6+4+6+6+6+0+6+0+8+0+5+0+c+0+0+0+0+0+h+h+i+h+i+i+f+i+c+c+k+h+c+f+h+k+c+h+c+0+e+e+{+{+{+$+$+ +T.Q.W.W.'+5+f+s+y+t+y+y+y+y+t+y+s+y+y+x+x+x+y+A+x+y+y+y+y+B+y+B+y+x+x+y+y+s+s+y+x+x+t+s+s+o+m+p+k+c+4+2+^+4+e+t+v+v+x+t+y+t+t+v+x+y+s+s+t+t+t+y+r+r+l+t+q+r+r+l+a+/+R.O.O.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.R.I.R.L.L.L.L.L.L.R.I.R.L.J.J.L.L.L.L.O.L.L.L.I.",
503"4 1 1 1 4 7 s e b b e s O 2.l.F.`.-+'+~+}+(+|+|+|+6+|+6+4+0+4+5+5+0+0+7+0+c+0+8+c+g+f+i+c+i+h+h+h+c+h+h+h+h+h+f+h+h+f+c+h+c+f+h+h+h+i+k+h+k+h+4+4+^+{+&+ +H.Q.Q. +^+8+f+y+y+x+v+x+s+x+y+y+x+y+y+y+y+x+B+y+B+x+B+y+y+y+y+B+y+y+y+y+y+y+t+y+v+x+x+t+s+q+p+h+k+c+|+^+)+c+k+s+y+v+B+r+t+y+t+v+v+t+r+t+t+t+q+t+t+q+w+l+w+r+r+d+/+U.O.L.L.L.L.L.I.R.L.L.L.L.I.L.I.I.L.L.R.L.I.R.L.L.L.L.L.O.L.L.L.J.J.L.L.R.L.L.L.L.L.",
504"4 ! ! 4 4 e s 7 7 q ` 2.n.K.;+-+,+'+^+(+^+}+|+|+|+5+6+6+4+0+4+0+5+8+0+8+8+0+f+0+0+0+0+f+8+c+k+k+h+c+e+h+h+i+h+i+h+h+f+h+h+h+f+i+f+k+h+h+h+k+c+h+4+4+3+{+{+&+Q.Q.W.=+[+0+m+y+y+t+y+y+s+y+y+y+y+x+x+y+B+x+B+y+y+B+B+x+B+y+y+y+y+y+y+y+y+t+y+s+s+x+y+m+t+p+m+m+k+e+4+)+4+e+r+v+s+t+y+v+s+r+r+v+v+v+q+t+t+q+t+r+r+v+r+l+l+l+a+/+R.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.I.R.L.R.L.L.L.L.L.L.L.L.R.O.L.O.L.I.L.L.L.L.L.L.L.L.",
505"| 4 4 4 | e e | I 2.n.F.`.,+~+<+)+^+(+^+[+|+|+6+5+6+6+4+0+6+8+8+8+8+8+8+0+c+c+c+i+i+i+c+i+i+f+0+i+h+h+i+i+i+i+i+i+f+h+c+h+k+p+i+h+m+m+h+h+p+k+h+e+h+4+6+{+)+$+ + +>+^+7+i+p+x+v+y+x+x+x+y+y+x+y+B+x+B+y+x+B+x+y+y+y+y+y+y+y+y+y+x+y+x+x+s+x+y+s+s+t+m+q+q+q+h+h+4+4+^+3+h+r+t+x+v+q+B+t+t+t+t+q+q+w+r+r+r+t+q+r+q+w+r+l+l+:+U.L.L.O.O.O.O.L.O.L.L.L.L.I.L.L.L.I.L.L.L.R.L.L.L.L.I.R.L.L.R.L.R.L.L.L.L.L.L.O.O.L.",
506"| ! 4 ! | | 7 s 2.H. +$+'+'+^+_+_+^+^+^+|+|+|+|+[+6+6+4+b+6+8+c+8+8+8+b+8+c+h+c+c+c+f+h+h+h+k+h+i+i+i+i+f+i+h+k+k+i+h+h+f+f+p+k+h+h+p+k+h+k+p+c+h+k+h+8+e+4+{+{+{+>+'+[+0+m+y+x+y+y+y+y+y+y+x+y+y+x+y+x+B+y+y+B+y+y+y+y+y+y+y+y+s+y+y+y+t+s+t+s+s+t+s+s+p+q+k+k+c+^+)+{+c+r+u+t+t+t+s+t+t+q+t+w+q+q+t+t+r+r+q+r+r+l+l+l+a+/+U.O.L.L.L.L.O.J.L.L.L.L.L.L.L.R.L.L.L.L.I.L.L.I.L.L.L.O.R.L.R.L.R.L.L.I..+I.R.O.O.L.",
507"4 1 | 4 4 7 q ` F.`. +,+>+)+^+^+|+}+}+|+4+4+|+4+6+6+6+8+6+b+b+8+0+0+c+0+0+f+c+i+c+h+c+h+c+k+h+h+k+h+o+i+m+f+n+h+h+k+h+o+m+m+h+m+f+k+p+m+m+f+p+h+p+h+k+e+c+e+4+3+^+^+)+^+|+c+m+t+y+x+y+y+y+y+y+y+B+y+x+y+x+B+x+y+y+y+y+y+y+x+x+y+y+x+t+y+v+x+x+t+y+s+s+o+p+p+p+h+e+e+4+)+4+c+t+s+v+t+q+w+q+t+q+q+q+r+r+r+q+w+r+l+w+l+l+l+l+/+U.R.O.R.L.O.G.L.J.L.L.I.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.I.R.I..+I.I.I.R.L.L.L.L.",
508"1 1 4 4 ! 7 I l.W. + +`.>+'+!+^+|+|+4+|+4+4+6+4+6+6+6+c+6+8+8+8+8+c+c+c+c+i+c+i+c+k+k+k+h+h+k+h+i+h+h+i+f+f+f+h+h+k+h+p+p+p+o+o+m+m+h+f+m+p+k+p+k+h+h+h+c+c+6+4+3+4+4+4+^+5+f+m+y+y+t+x+y+y+y+x+x+y+B+y+B+y+y+y+y+y+y+y+y+y+y+x+y+x+s+x+t+y+s+s+s+o+s+t+p+p+p+h+h+e+^+)+^+e+r+t+v+r+p+q+q+r+p+q+q+q+q+r+r+l+r+r+l+r+l+l+a+/+z.O.O.D.G.L.G.G.A.J.L.J.I.L.R.L.R.I.O.L.J.L.J.I.G.G.L.L.R.L.R.L.I.L.L..+I.L.L.I.L.L.",
509"4 ! 2 1 4 e _.H.W.W.`. +`.`.-+!+'+[+[+|+6+|+4+4+|+6+6+6+c+0+8+9+b+8+0+c+f+c+h+c+h+h+h+h+h+k+h+h+h+i+i+i+m+m+i+p+i+h+p+k+p+m+p+p+o+o+o+o+o+m+m+p+m+p+p+k+k+k+c+c+c+4+4+4+^+^+5+i+s+x+x+y+x+x+x+y+y+x+y+y+y+B+y+y+y+y+y+y+y+y+s+y+t+y+y+y+s+s+y+s+t+s+t+m+q+p+p+k+e+h+e+{+{+3+b+q+t+t+q+w+r+t+r+w+l+w+r+q+q+r+l+l+r+l+r+a+a+/+z.O.O.G.B.G.A.A.A.A.L.L.L.L.L.O.L.L.J.L.O.L.J.J.J.J.L.J.J.O.L.R.L.I.I.L.L.R.R.L.O.L.",
510"4 ! 2 4 1 s |.H.H.W.W.W.W. +W.=+,+_+}+|+4+4+6+4+6+6+6+6+6+4+8+8+c+c+8+8+c+f+i+i+f+h+h+i+h+k+i+i+f+m+h+i+h+m+f+k+i+i+m+h+k+m+m+m+m+q+m+m+p+p+p+p+p+m+p+h+h+k+k+c+c+4+c+{+4+^+|+5+f+y+x+y+y+y+x+x+y+x+x+y+y+x+y+x+B+y+y+y+y+y+y+x+y+s+s+y+s+s+t+x+t+s+t+m+s+p+m+p+k+c+c+4+)+^+e+l+t+t+p+w+p+q+r+q+q+l+l+l+l+r+r+l+l+l+l+a+a+Y.z.G.G.G.D.G.G.C.A.A.C.J.A.J.L.L.L.L.L.L.L.L.L.J.L.J.L.L.J.O.O.L.L.R.L.L.L.L.L.L.R.L.",
511"! 4 ! 4 4 q |.H.H.Q.H.W.V.F.V.W.Z.=+!+}+6+6+4+c+4+c+6+0+8+0+8+8+0+8+f+c+f+c+f+h+c+h+k+k+i+h+k+m+h+i+o+i+o+k+p+f+h+m+m+p+m+k+p+p+p+m+p+p+m+m+m+p+p+p+m+p+p+p+h+c+c+h+e+c+4+4+^+6+g+o+t+y+t+y+y+x+y+y+y+x+y+y+y+y+y+y+x+y+y+y+t+y+x+v+x+x+t+y+x+m+s+s+s+t+q+q+p+p+k+c+4+4+)+{+3+k+q+r+q+p+q+q+q+n+q+q+r+l+q+l+l+l+k+k+a+a+/+U.O.O.O.G.G.C.C.y.D.C.C.C.A.L.B.O.O.O.O.O.L.L.L.L.L.O.L.O.L.L.O.O.L.R.L.R.O.O.O.L.L.O.",
512"! 4 4 4 1 F l.H.H.H.H.H.H.Q.H.H.F.V.=+!+^+4+4+c+4+c+|+6+6+0+8+8+c+8+c+c+c+h+c+k+h+f+f+h+h+h+i+i+f+h+m+h+h+h+m+m+h+p+p+p+m+m+m+o+p+q+p+q+p+p+m+m+p+p+p+h+h+k+p+k+e+0+c+4+4+|+^+[+5+f+m+x+x+y+y+x+x+y+y+y+y+x+B+s+x+y+y+t+o+y+y+t+y+y+v+x+s+s+v+s+o+t+o+o+s+q+m+m+k+h+4+4+<+)+{+e+m+t+q+q+q+q+r+l+w+k+k+l+q+q+l+l+l+k+a+a+/+z.O.G.O.L.L.A.C.A.G.C.O.B.L.A.C.B.B.O.L.L.L.O.L.L.L.O.O.O.O.O.O.L.L.L.L.R.L.O.O.L.O.O.",
513"4 ! 4 2 9 I 2.n.t.H.H.t.H.H.n.H.H.F.V.Z.!+^+4+4+c+8+c+6+8+8+0+c+0+c+c+c+g+8+h+f+c+h+h+f+f+f+h+f+h+o+i+f+m+m+k+i+q+k+m+m+m+o+k+m+p+p+p+m+q+p+p+p+p+p+k+p+k+h+h+h+h+e+h+c+4+4+4+4+|+8+o+t+y+y+y+y+y+y+y+y+y+t+y+y+y+x+x+x+x+y+t+x+s+s+s+s+s+t+y+t+t+s+s+s+o+m+p+k+p+e+c+4+{+{+{+4+l+q+r+r+q+q+l+l+l+w+l+k+l+l+k+l+l+e+g+1+Y.R.O.O.O.O.L.L.L.L.J.L.J.G.C.L.C.A.G.C.C.C.D.O.O.D.O.O.O.O.D.O.G.L.J.L.L.O.O.L.L.L.L.O.",
514"4 4 ! 2 2 F 2.n.p.n.t.t.n.Q.n.n.n.p.p.V.Z.!+^+|+4+4+c+4+c+6+8+c+0+0+g+c+i+c+c+c+h+c+i+i+h+o+h+o+f+f+o+o+i+m+m+m+m+k+o+q+m+o+p+m+p+p+p+m+o+p+p+p+m+m+h+m+p+p+p+k+k+h+e+c+4+4+4+4+^+|+f+m+s+y+y+t+y+w+y+s+y+t+y+s+y+t+y+y+s+y+o+y+t+y+s+x+s+s+s+s+y+o+o+s+t+o+m+o+m+k+e+4+]+{+$+3+e+q+q+r+q+q+n+q+k+k+n+l+l+l+k+a+l+a+a+a+U.R.L.L.O.O.L.L.L.L.J.G.L.L.C.L.L.G.G.D.y.y.y.D.B.O.O.O.D.O.D.R.D.D.G.J.L.O.O.L.O.O.O.O.",
515"! 4 ! ! 9 I 2.t.p.t.p.t.t.n.t.t.H.p.p.l.E.V.!+^+6+8+4+c+b+6+c+b+8+8+0+f+g+c+h+h+c+f+h+k+k+f+o+i+h+o+f+f+o+f+o+f+m+m+p+m+p+m+o+p+m+p+p+q+p+p+p+p+p+m+q+p+p+h+p+p+m+k+4+c+c+c+4+6+6+|+5+8+o+n+y+y+s+x+s+x+s+t+s+y+t+y+s+t+y+m+t+y+x+s+s+s+y+s+t+y+m+t+t+o+p+p+p+h+k+k+h+b+4+{+>+{+3+l+q+k+r+k+r+l+k+l+l+l+e+e+e+k+a+a+a+/+U.G.O.G.G.L.O.L.L.L.J.J.L.L.G.A.L.O.O.B.C.C.G.O.D.B.O.O.G.O.O.R.L.L.O.O.O.O.G.L.L.O.O.O.",
516"! ! 1 ! 8 q 2.2.w.t.s.t.t.n.t.n.n.p.p.p.n.n.Z.=+^+6+4+0+e+8+0+c+b+8+8+0+f+f+c+i+h+h+h+h+h+c+f+i+f+m+m+f+m+f+o+k+p+m+k+h+o+o+o+p+o+o+m+m+s+p+p+p+p+p+o+p+p+p+m+p+p+p+e+c+c+c+c+4+6+6+5+8+f+y+s+y+y+y+t+x+s+B+t+y+s+y+x+x+y+y+s+o+x+t+t+s+s+s+m+t+s+s+t+q+q+q+q+m+h+k+c+4+3+{+$+{+3+e+q+k+k+k+k+k+k+l+k+k+k+l+e+e+e+a+a+Y.R.O.O.O.D.G.L.O.L.L.L.G.G.J.G.G.L.O.L.L.A.A.G.O.D.D.G.B.O.D.R.O.D.L.O.O.O.G.O.O.R.R.O.O.",
517"! ! ! 8 8 s 2.<.n.2.t.<.<.t.<.t.<.n.w.n.n.n.l.F.=+!+6+b+c+4+b+8+8+8+8+b+c+c+g+i+c+k+i+f+i+i+h+o+m+i+i+m+o+m+o+m+o+p+m+q+p+p+m+m+p+s+s+q+m+o+p+p+s+o+s+m+p+m+q+p+h+p+h+e+c+c+b+8+b+|+|+5+0+m+s+x+s+y+B+t+v+t+x+s+x+s+y+t+m+s+t+y+o+s+s+t+t+s+t+s+s+o+o+o+o+m+m+k+p+h+i+b+4+2+&+%+{+e+r+q+k+k+r+k+k+l+e+a+e+a+a+a+a+a+/+U.O.O.O.D.O.L.G.L.G.G.G.J.L.J.J.J.L.O.O.O.O.O.O.B.O.G.O.G.O.R.O.O.O.D.O.O.O.G.L.O.L.L.R.R.",
518"! < , 8 ! s +.<.<.2.t.t.<.p.<.n.<.n.<.p.2.n.l.p.S.;+(+|+c+c+b+8+8+g+8+b+0+0+f+i+c+k+h+f+f+i+h+i+o+o+i+i+i+f+f+f+f+m+m+m+m+p+q+m+m+m+m+p+p+s+p+p+p+o+q+s+p+m+o+q+o+p+m+k+i+c+c+c+c+4+4+|+6+f+o+y+t+y+v+y+x+x+x+t+x+s+s+v+s+s+m+t+y+o+s+s+s+s+q+s+s+s+t+t+q+k+m+i+k+k+e+b+e+^+%+*+*+d+e+r+k+k+e+d+k+b+e+a+e+e+3+e+d+a+Y.R.G.G.O.D.O.L.G.G.B.L.L.G.L.L.G.L.O.O.L.L.G.O.G.O.O.G.G.G.O.O.D.D.D.O.G.O.O.G.L.O.O.L.O.R.",
519"! , | ! ! 8 ` 2.n.<.<.<.p.2.p.<.2.<.n.2.2.2.2.l.l.S.=+(+6+0+c+0+c+8+8+8+g+c+c+c+h+0+c+c+h+h+k+i+f+h+i+m+f+o+o+o+q+q+p+p+p+o+m+p+p+p+p+p+p+p+m+m+s+o+o+p+p+p+m+m+p+p+r+h+h+k+e+c+e+c+4+|+6+0+f+o+y+t+y+s+y+t+t+x+t+s+t+y+s+s+s+y+o+t+t+s+r+t+s+s+r+q+m+m+p+m+q+q+i+i+i+c+b+3+{+X.*+3+k+k+k+k+k+k+e+e+e+e+3+a+3+3+a+/+U.O.O.O.G.D.G.D.J.G.G.O.O.L.L.L.L.G.O.G.L.O.O.L.L.G.G.L.L.L.G.O.R.D.O.G.O.O.O.L.L.O.O.O.O.R.",
520", , < ! ! 8 I +.<.<.t.<.<.<.2.t.m.<.<.t.t.<.m.2.n.k.S.=+}+6+b+8+c+c+0+8+8+g+f+0+h+f+f+c+i+f+h+h+f+o+i+o+m+f+m+m+i+o+m+m+p+p+p+p+q+o+o+s+s+p+q+o+q+o+o+o+s+p+p+o+p+m+p+p+h+h+c+c+e+c+c+|+}+6+0+o+x+x+y+s+x+v+t+x+t+x+s+t+y+t+m+s+t+o+t+t+s+s+q+s+s+t+q+o+q+m+i+p+k+k+k+c+e+3+{+*+*+:+e+g+l+l+l+l+e+a+3+a+e+a+3+/+a+Y.R.L.G.C.L.D.L.O.B.O.D.D.L.L.L.L.L.G.O.O.G.O.O.L.L.O.G.G.L.L.O.O.R.D.D.O.O.O.O.L.L.O.O.O.R.R.",
521", < , ! ! 8 I +.<.<.<.<.2.2.<.2.2.<.<.}.<.2.}.}.<.p.l.S.=+[+5+b+8+0+b+c+0+0+8+i+c+c+c+i+i+h+i+i+i+f+o+h+i+h+o+o+m+m+k+q+p+p+m+o+m+s+p+p+m+p+p+s+m+s+m+p+p+p+o+p+k+p+p+k+p+k+k+h+h+4+c+4+4+|+8+f+o+s+x+t+s+x+s+t+s+t+t+s+o+s+t+t+x+o+s+s+p+q+s+s+o+q+p+p+p+k+k+k+i+i+c+l+c+3+]+X.*+%+a+l+c+e+b+e+e+3+e+3+3+3+3+]+/+U.R.L.C.L.O.O.O.C.G.D.B.C.G.G.G.G.G.O.O.G.O.L.G.O.O.L.O.O.G.O.O.L.L.O.G.O.O.O.O.L.O.O.L.L.R.R.",
522"- , - , , , s ..<.}.}.<.<.2.<.<.2.<.<.}.}.}.}.<.<.2.p.k.V.!+[+8+j+f+b+b+8+0+8+8+f+i+c+f+i+i+h+k+h+f+f+f+o+f+i+k+o+m+m+m+m+p+p+t+m+p+p+p+p+p+p+p+p+s+m+m+p+p+o+m+q+k+m+m+m+k+k+c+h+c+c+6+4+4+|+0+i+p+x+y+t+x+s+y+s+s+t+s+t+s+s+o+s+t+m+t+s+o+m+t+o+t+q+o+o+o+o+k+k+k+c+b+b+3+{+*+*+*+a+l+b+l+b+2+e+a+3+3+/+a+/+/+Y.D.O.G.G.O.O.O.O.G.C.G.D.D.G.B.D.C.C.O.O.G.G.O.G.G.O.O.O.O.O.O.L.L.L.O.O.O.O.R.R.L.L.O.O.L.R.R.",
523"- - , - - < e +...<...<.<.<.<.<.}.2.<.<.}.}.}.}.}.}.2.2.l.S.!+[+6+b+b+8+0+b+8+8+0+c+i+c+i+h+h+f+h+h+o+o+f+o+m+o+k+p+m+p+p+m+m+m+p+m+m+o+s+m+o+p+m+p+s+p+p+s+p+p+p+m+p+k+p+m+h+k+k+c+b+c+4+4+4+|+c+o+o+s+x+t+y+s+t+t+s+y+o+t+o+m+s+m+t+s+o+s+s+s+q+o+o+q+l+o+l+k+k+i+k+b+b+b+]+%+*+*+d+e+e+a+a+e+2+3+a+3+3+/+/+Y.U.z.B.O.B.L.L.G.G.L.J.L.G.B.C.D.y.L.C.G.C.B.B.y.G.O.D.D.O.G.O.R.O.L.L.O.O.O.O.L.L.L.L.L.O.R.O.O.",
524"- - - - - < | O +.+.<.....<...<...<.+.<.<.}.}. .}.}.2.2.p.l.S.!+[+0+c+b+8+0+c+b+0+f+g+c+i+c+h+h+f+i+h+m+f+o+f+m+o+k+p+p+m+m+m+o+s+p+s+o+s+p+o+o+o+p+o+m+m+m+p+m+p+p+m+m+h+p+h+h+e+h+c+c+4+4+4+|+6+h+q+v+v+s+o+x+t+t+s+o+y+o+t+p+s+p+q+p+q+q+o+m+s+q+o+o+q+o+o+i+e+c+l+b+b+4+3+*+*+*+3+d+e+e+3+3+3+3+3+/+]+/+X.z.D.D.O.G.C.L.O.L.J.J.J.C.J.G.J.G.G.O.B.L.L.G.B.G.G.O.O.D.G.G.G.R.G.O.O.O.O.L.L.R.R.L.L.L.L.L.O.O.",
525"- - - - - , < s +.+.+.+.....<.....+.}. ...<. .<.}...<.<.<.l.p.Z.!+|+b+g+c+8+8+0+g+8+g+i+f+i+i+i+h+f+i+i+m+i+h+o+h+m+m+h+p+p+q+p+p+m+o+p+m+t+o+o+q+m+p+p+p+p+o+p+p+p+p+p+m+h+k+i+h+c+e+b+c+0+4+4+4+6+f+o+t+v+s+o+s+s+s+t+o+t+s+o+s+o+o+q+s+p+s+p+o+m+q+p+o+o+k+k+k+k+c+b+2+b+]+%+*+*+:+e+3+e+a+3+3+]+a+]+/+Y.U.z.R.O.G.L.C.G.L.R.O.G.G.L.L.O.O.C.L.O.O.O.O.O.A.G.L.J.D.O.G.O.D.O.O.O.O.R.O.L.L.L.L.L.O.O.O.O.O.L.",
526"- - - - @ - < e O -.+.f.+.+.....<.+.<. ...+.....2...<...}.2._.p.;+!+|+9+j+0+g+0+f+0+8+b+g+8+g+k+k+h+i+i+i+o+h+o+i+k+p+p+o+m+p+m+p+m+o+t+m+o+o+o+t+p+q+m+o+m+q+o+o+m+m+k+o+m+p+i+i+h+c+0+4+4+4+6+^+|+0+m+t+t+s+t+o+t+s+t+o+t+p+q+v+s+o+p+s+p+q+p+p+o+q+p+p+o+o+i+b+b+c+b+2+a+3+*+*+*+{+e+d+3+3+3+3+/+]+/+Y.U.z.z.D.G.G.L.C.O.L.O.G.G.J.G.C.L.L.O.O.O.D.O.O.O.D.L.L.O.O.D.D.O.D.O.D.D.G.O.O.R.O.L.O.O.O.O.O.O.R.R.",
527"- @ - = @ - , i s +.O -.........+.+. .<......... .......<...2.4.k.Z.!+[+0+g+c+c+b+8+g+0+0+i+c+c+h+k+h+h+f+i+o+h+p+m+o+h+p+p+m+m+o+s+m+m+m+m+m+m+o+o+m+q+p+q+m+o+m+k+p+m+m+f+i+f+k+k+c+b+c+0+4+4+|+4+4+f+m+s+t+s+t+s+t+o+s+m+q+s+p+q+p+q+q+q+m+p+q+p+m+k+k+k+k+i+f+l+e+b+b+4+]+%+N.*+:+3+3+3+a+]+]+]+/+X.U.z.D.D.O.C.L.O.O.L.O.G.O.O.O.O.O.L.O.O.O.O.O.O.O.G.L.L.O.O.D.O.G.G.O.O.O.O.O.O.O.O.O.L.L.O.O.O.O.O.R.O.",
528"- @ @ @ @ @ , < v S +.S S -.........S +... . . . . ... . .}...+.8.|.S.!+[+8+c+f+8+f+8+g+0+f+f+c+h+i+f+i+f+f+o+h+h+h+p+m+o+p+p+m+o+p+p+q+m+t+t+p+p+m+m+m+m+m+p+q+m+k+h+m+o+f+m+f+h+h+c+c+c+0+4+4+|+^+|+0+o+s+t+s+q+p+s+o+t+m+p+m+p+t+m+o+o+q+p+m+k+k+o+p+o+i+k+e+c+e+b+3+b+3+3+%+X.*+3+3+3+a+]+]+/+/+X.z.D.D.z.D.C.A.C.B.B.B.O.D.D.O.D.O.O.L.O.O.O.O.O.O.O.L.C.L.O.R.O.D.G.G.O.O.O.O.R.O.O.D.O.O.O.O.R.R.R.O.R.R.",
529"@ - - @ @ - - , i O S ..S ..O S -...S +... ...........+.....S G O F 8.S.(+6+c+c+c+8+f+8+8+0+c+h+f+f+i+f+f+f+f+h+h+m+h+i+h+h+p+p+p+m+p+m+p+m+m+m+o+q+p+p+p+k+o+m+q+m+p+o+h+o+i+m+h+k+h+c+c+4+c+4+4+|+}+|+0+o+s+q+s+t+q+t+s+v+s+s+q+p+q+p+q+q+k+q+m+o+k+o+k+k+k+h+k+b+a+4+2+3+]+%+*+*+:+]+3+]+a+]+/+X.U.U.D.D.D.B.C.C.G.B.O.D.D.B.B.D.B.B.B.B.B.L.O.O.L.R.O.O.O.O.O.L.O.J.O.G.O.O.O.O.O.O.O.O.O.G.O.O.O.O.O.R.R.O.",
530"@ @ @ @ . . @ - ( r S -.S -...S S S -.S S .. ...S ..+...S r G r i e F 8.S.(+0+b+b+9+0+8+f+0+0+c+c+f+i+i+i+h+i+k+m+p+i+o+q+h+o+i+q+o+m+o+m+p+p+m+m+p+p+m+m+m+o+m+h+o+h+o+o+o+k+k+h+k+k+c+e+c+4+e+3+4+_+^+6+f+m+t+s+s+p+q+q+q+r+p+q+q+q+p+o+o+k+q+k+m+k+n+o+i+k+c+b+c+j+3+2+3+]+%+*+*+:+]+3+]+/+%+X.U.D.z.D.C.D.D.D.D.D.y.B.B.B.B.B.D.D.O.B.C.B.B.B.D.O.O.D.D.O.O.O.R.O.O.O.O.O.O.R.R.O.R.R.O.R.O.R.R.D.O.O.D.R.R.",
531"@ - @ @ @ @ @ - ( k M M S S W S S S S ..S M .S S S -.M W r k : a a s I j.Z.[+8+f+i+b+0+8+0+f+0+f+i+h+f+f+i+i+h+k+h+h+m+h+q+p+p+m+m+q+m+p+h+o+p+q+o+m+p+p+m+o+f+m+f+m+f+f+h+m+o+k+h+h+c+0+b+c+6+4+4+4+^+|+8+q+p+q+s+t+p+p+p+m+p+m+o+p+p+k+q+o+i+m+k+o+i+k+k+c+l+b+j+3+b+3+3+]+*+*+:+:+3+/+]+/+Y.U.z.z.B.R.B.B.D.C.C.C.B.G.O.O.O.G.C.B.B.G.B.C.C.L.R.O.O.O.O.O.L.R.O.R.R.O.O.R.R.R.R.R.O..+R.R.R..+R.R.R.R.R.U.R.",
532"- - @ @ @ @ @ = - a B W M M .S S M O S S W K S S G r r 6 a } } 6 6 a s ` k.=+[+8+i+g+b+c+c+h+0+8+f+h+h+f+h+h+f+i+m+i+o+h+h+o+k+p+h+p+i+p+p+p+m+h+p+p+h+p+h+o+o+m+i+m+m+i+h+h+m+i+h+k+i+0+c+c+6+c+3+4+)+^+5+f+p+p+p+t+p+p+p+p+p+p+q+k+m+i+q+q+k+o+k+k+i+k+l+i+b+b+c+2+2+3+]+]+T.%+*+*+{+/+]+X.U.D.D.D.B.O.B.B.B.D.D.D.B.B.B.O.R.B.L.L.B.C.B.G.C.G.B.D.O.R.L.R.O.R.R.R.R.R.R.R.R..+.+.+.+.+/+.+.+/+.+.+/+.+.+U..+",
533"@ @ @ @ @ . @ = < r M K K M M W S M S K S M M M y k : ( } ( : } 5 a | s _.E.!+6+8+c+0+8+8+8+c+f+0+c+c+c+f+f+i+f+i+h+i+o+q+o+m+m+p+o+m+m+h+m+h+p+i+i+p+i+o+m+k+k+p+h+i+h+p+k+i+i+k+h+b+k+c+4+c+4+|+4+|+_+^+b+o+t+s+p+t+q+q+p+p+o+o+o+n+p+h+k+i+k+i+k+k+i+i+b+c+b+b+3+3+3+]+]+*+*+%+:+]+/+X.Y.z.B.R.R.z.D.B.B.y.c.D.D.O.O.D.O.D.G.L.O.L.O.B.O.C.R.O.R.O.O.R.R.R..+R.U..+/+.+/+.+.+z+.+z+/+z+/+z+/+z+/+d+/+/+/+/+",
534"@ @ . . @ @ . @ @ - 6 B K K M M M M M M M G G j j 5 } : : } ( : : 6 ( | 8 s 4.S.(+8+f+c+c+c+8+8+g+f+g+f+c+g+f+i+i+g+o+i+f+h+p+k+m+h+o+o+p+i+o+o+m+m+o+m+m+i+m+p+h+i+h+o+i+h+h+p+h+i+i+c+k+k+c+4+c+4+3+^+'+!+|+c+k+p+p+m+s+p+q+k+k+o+k+k+q+m+h+h+k+h+k+k+e+i+b+b+2+b+4+3+]+]+%+%+*+%+/+%+/+U.D.D.B.B.O.B.z.y.B.D.B.B.D.D.B.D.R.O.O.O.B.O.L.O.O.O.R.R..+R..+.+.+:+.+/+/+/+z+/+z+/+d+/+a+/+a+d+a+a+d+d+a+r+l+r+d+d+",
535". @ @ @ @ @ @ @ - , r B K B M B B W G B t t 5 5 [ } { : : } } } : } 6 a 7 F 8.Z.(+8+c+8+8+8+b+8+8+0+0+f+f+f+f+f+h+f+f+h+o+h+m+k+o+f+m+i+p+m+h+k+h+h+h+k+p+o+h+k+h+i+f+i+i+k+h+k+k+h+h+0+0+c+c+c+4+4+3+<+~+~+6+o+q+q+p+p+q+p+o+q+q+o+o+i+i+k+k+i+k+c+c+i+e+j+b+b+3+3+3+1+]+X.*+%+*+%+Y.U.U.D.R.B.D.B.B.D.B.C.y.C.B.c.C.B.B.D.O.R.z.O.O.R.R..+.+.+.+.+:+:+:+:+:+d+d+d+d+d+a+d+a+a+z+r+r+r+r+r+w+r+w+r+r+r+r+p+p+",
536"@ @ . @ @ @ . @ - 6 p K r M W v M y y 6 } } ) } } { - : { } } ( ( : a a s 8.j.=+5+c+g+g+8+b+g+f+c+8+0+c+i+i+i+h+h+f+f+h+h+m+m+m+i+p+i+k+p+m+k+m+q+m+h+k+h+h+k+o+i+f+f+i+i+i+h+k+i+k+h+c+c+4+4+4+0+^+^+)+'+(+h+m+q+o+h+o+q+m+h+k+k+q+k+o+h+k+k+k+k+c+8+b+7+3+b+3+2+{+]+%+X.*+*+*+Y.Y.z.B.O.B.O.B.R.R.B.c.B.y.B.B.B.y.B.B.B.O.O.R.R.R..+:+.+:+d+d+d+d+z+d+u+d+d+d+d+r+l+r+r+r+r+r+r+r+r+r+r+r+r+w+l+t+s+r+r+t+",
537"@ @ @ . @ @ . . - ( y r K r B p r 6 : } : ) { ) { = { { { : { } } : : 6 | s 8.j.!+7+8+8+0+0+0+c+b+c+i+f+f+i+i+k+i+f+f+f+h+h+h+h+o+h+p+h+i+o+f+i+i+i+k+f+i+h+m+h+h+h+h+i+i+f+i+h+k+h+e+c+0+c+c+6+4+{+3+)+{+)+6+k+p+q+q+k+o+k+p+h+o+k+k+k+l+i+c+c+b+b+b+8+e+b+2+2+1+a+]+%+X.Y.Y.Y.Y.z.D.G.L.O.B.R.O.B.O.B.C.R.O.B.y.D.D.C.D.O.R.R..+.+:+z+d+d+d+d+d+d+k+r+r+r+v+r+r+r+r+t+w+w+t+t+r+r+w+w+t+t+t+v+v+v+t+v+v+t+",
538"@ @ . . . @ @ . - - k p t W k 6 : } { = - - { { { { - : = { ( : } } : : ( 7 F 8.S.(+5+g+c+c+8+0+8+0+8+0+8+f+f+k+h+i+i+i+h+o+i+h+i+h+o+o+i+o+o+f+o+f+m+o+k+h+h+i+f+i+h+h+c+h+c+h+c+i+c+c+c+4+c+4+0+|+{+)+>+>+|+c+h+q+o+k+o+k+p+k+i+i+i+i+i+g+c+i+e+8+b+7+2+b+2+3+]+]+%+X.Y.Y..+U.z.z.L.L.O.O.C.O.R.R.R.C.C.B.O.B.B.O.B.C.B.B.R..+:+z+d+d+d+u+r+u+p+r+v+r+r+p+s+q+t+t+r+r+r+q+t+t+t+v+r+t+t+v+t+t+t+v+y+x+v+v+",
539". @ . @ . @ @ . . = 6 k j j } ) = = = = = - = { ) { { { { { : { } } } } 6 a s H j.Z.[+8+b+b+c+8+0+8+0+g+f+c+h+f+k+h+i+h+k+h+f+f+h+h+f+h+h+f+f+f+f+f+f+h+f+i+i+i+i+i+i+k+h+c+i+c+i+c+g+c+0+0+4+4+4+4+4+]+{+>+'+c+q+m+k+o+h+m+k+k+k+k+k+k+l+g+g+b+0+b+7+b+4+3+3+1+1+]+/+x.u.U.U.R.z.B.O.O.O.B.O.B.B.O.B.B.O.O.D.O.G.B.B.R.z.R..+:+:+d+d+k+k+k+k+q+q+k+q+p+s+r+p+s+r+r+t+s+s+t+v+s+t+t+x+t+v+y+v+t+y+y+v+t+x+y+",
540". @ @ @ @ @ @ = 6 } ) = { = { = { = = { { ) ) = { { } : { } } } [ } 6 i s 8.E.!+5+8+8+8+b+8+b+0+0+0+0+0+0+i+h+k+f+g+h+h+f+f+h+f+f+h+f+i+f+i+g+i+h+i+i+f+i+i+k+h+c+h+f+i+i+f+c+c+c+c+c+c+6+4+|+4+)+{+$+>+^+e+o+k+k+k+h+h+i+i+k+k+c+b+b+c+b+b+b+2+3+2+2+3+1+]+%+X.U.U.z.U.B.z.D.B.C.D.B.B.O.O.C.C.C.O.R.R.z.O.O.z.O.z..+.+r+e+k+k+k+k+n+g+o+o+q+t+p+t+t+r+y+t+t+v+v+s+t+t+v+x+v+x+y+t+y+v+v+B+w+y+B+s+y+",
541"@ @ . . . . @ = = = = = & = = { = = { = = ) = { { ~ : { { } : } : 5 a r i s 8.S.(+6+b+c+8+c+0+b+b+8+g+0+f+f+c+h+h+f+f+i+h+i+i+i+i+f+h+f+f+f+f+f+i+i+h+i+f+h+h+h+h+c+i+c+c+c+f+c+c+c+8+0+3+|+4+^+^+{+ + +)+0+k+p+k+o+k+k+k+k+i+i+k+8+b+j+2+9+2+b+2+2+4+1+/+1+X.x.z.z.z.z.z.D.z.D.B.O.B.B.B.B.L.C.R.O.R.U.R.D.O.O.z.R..+d+3+e+e+e+k+i+e+i+k+k+o+k+q+t+r+t+t+x+v+v+t+B+s+B+y+t+s+v+s+y+y+y+t+w+y+y+t+B+t+",
542" @ + . @ @ = @ @ @ = = = = = = ) ) { - ) ) ) ~ { { { } } [ 6 5 6 6 a s F l.Z.[+8+c+c+c+c+8+c+0+8+8+c+f+0+f+0+i+f+i+h+f+i+h+i+f+i+h+i+f+c+f+f+i+h+k+c+k+k+e+h+k+h+k+c+8+f+c+b+c+4+0+e+4+4+3+)+$+$+ + +|+k+p+k+k+k+i+i+k+e+c+e+b+c+b+b+b+4+4+b+2+2+1+]+%+X.z.z.z.D.z.z.O.z.B.C.C.O.O.O.B.R.B.O.R.R.z.z.z.z.R.R..+:+d+3+c+b+b+l+g+l+b+b+c+i+k+i+o+q+s+q+t+v+v+t+t+t+s+v+y+y+y+v+t+A+A+t+y+t+y+y+y+y+",
543". . @ @ % . . $ @ % = = { = & = = = = = - { ) ) } } } { } } 5 } 6 5 k k i s ` j.=+7+8+b+c+b+b+8+8+8+0+8+b+b+c+i+c+c+h+f+c+f+f+h+c+f+i+f+c+f+i+i+0+h+h+k+c+0+f+c+c+e+c+c+b+c+b+0+b+c+4+6+2+4+|+3+^+&+Q. +<+c+k+p+i+i+k+k+c+h+c+0+c+4+b+3+4+2+2+2+1+3+]+1+X.x.g.z.g.a.z.z.z.z.B.R.R.R.U.R.R.R.R.R.R.R.R.R.D.O.R.R..+:+3+e+3+l+b+j+e+b+b+b+j+b+j+b+l+k+k+q+s+t+y+y+y+w+B+y+t+t+t+x+y+y+t+w+w+A+A+t+y+y+",
544"@ . . . $ @ @ @ @ & @ = = = @ & & ) = = = - { ) ) = { } { } } 5 5 6 5 6 6 a i I 8.E.(+6+b+0+0+8+8+8+8+0+f+0+g+0+f+f+0+c+i+c+i+f+f+c+c+i+f+c+f+0+i+c+0+c+h+h+c+c+f+f+h+c+c+0+0+c+0+0+0+c+4+4+4+4+{+)+{+Q.Q.{+4+k+k+k+c+e+k+e+e+e+b+b+b+4+b+3+2+4+3+<+]+]+%+Y.U.U.U.U.x.U.U..+.+.+.+.+.+.+.+.+.+.+U..+U.R.R.R.R.R.R.#+:+2+b+2+j+3+j+2+2+b+3+e+4+b+4+b+e+e+k+o+k+s+r+x+t+t+B+w+B+t+t+y+A+y+y+y+y+w+y+t+y+",
545" @ @ @ @ @ @ @ . @ @ = @ @ = = = ) = = = - { { ) ) } } ~ { } { } [ g ( 6 5 k a a i I 4.Z.(+8+2+b+c+6+8+8+8+0+c+0+0+8+c+c+c+0+g+c+c+0+f+h+h+0+f+0+i+c+f+i+f+8+c+0+f+0+0+8+8+f+c+c+8+b+c+4+6+c+4+4+^+4+{+>+&+m.@+3+b+n+i+k+i+c+e+c+c+c+e+4+3+4+b+4+3+3+3+]+a+]+/+Y.*+/+*+/+*+*+:+#+*+#+:+:+:+:+/+:+.+/+.+.+.+.+.+R..+.+:+3+3+3+b+2+7+a+b+2+2+4+2+a+2+2+2+2+3+b+b+i+k+t+t+y+B+w+t+w+t+B+t+y+y+w+w+w+y+A+A+y+",
546" . % @ @ @ = = = @ @ = = = = = = = = = { } } { { [ } } } } } } 5 6 k a a s ` j.!+5+8+b+b+6+8+8+8+0+8+8+0+0+f+0+c+0+0+0+c+0+8+0+c+c+c+0+f+c+c+c+c+f+c+0+8+c+c+0+0+8+0+c+6+0+0+8+6+4+4+4+4+^+{+$+++q.K.1+b+g+c+c+b+c+b+b+3+8+4+b+3+2+3+2+3+3+3+3+3+:+d+:+:+d+:+d+:+d+d+3+d+e+e+e+d+d+d+d+d+:+d+:+/+/+/+.+*+.+:+{+3+3+4+2+7+2+a+2+a+2+7+2+a+3+3+4+3+2+4+a+e+r+r+w+v+B+t+A+w+A+s+y+y+y+y+y+w+y+w+y+",
547"@ @ @ @ @ = @ @ @ % = = & ) = = { = { { { { { : : ) } [ { 5 } 6 5 6 j 6 k a a s |.S.!+6+8+6+c+4+6+b+4+0+0+0+0+8+0+0+g+c+0+g+8+g+8+f+0+f+g+0+0+0+8+8+0+0+c+0+0+f+b+8+c+0+8+c+4+8+4+0+c+4+3+^+3+{+{+%+q.T.]+b+e+k+b+c+c+c+b+0+3+b+4+b+b+b+e+h+e+e+e+e+e+e+e+h+d+k+k+e+e+k+k+k+d+e+k+k+e+a+d+k+d+d+d+3+d+d+3+:+:+3+3+3+4+a+3+3+4+1+3+2+2+1+2+4+2+3+3+2+3+1+4+4+b+g+o+q+t+y+t+y+t+B+t+y+w+w+w+y+A+B+A+",
548"@ @ @ @ @ % $ @ @ @ & = @ @ = % & & { { ) { ) ) { { : } } { } 0 ~ 5 5 6 5 g 6 j a r I l.Z.^+b+b+6+0+6+8+b+6+6+7+c+c+8+0+8+0+8+0+0+0+0+c+c+0+c+c+c+0+g+8+c+0+c+c+8+0+b+8+8+c+4+b+b+b+4+6+8+6+4+4+)+{+$+*+q.q.%+6+b+i+b+b+e+4+e+b+b+l+e+e+b+e+e+k+k+k+k+k+k+k+r+k+k+k+r+k+k+k+k+h+p+r+k+p+k+o+k+p+r+r+k+e+e+e+a+e+3+e+4+e+c+c+c+3+3+3+<+]+1+1+]+]+2+]+1+1+3+]+1+]+3+4+g+q+t+y+t+B+w+A+y+y+y+A+A+B+w+t+y+",
549"@ . @ @ $ @ $ @ & @ & @ = % = & ) ) { = ) { { { } } { } } { ( } } 5 5 } 5 j 5 g 5 0 a r ` F.!+[+6+c+b+6+6+6+9+9+0+6+6+0+8+8+8+0+8+5+8+8+0+8+0+8+0+0+c+0+c+0+c+c+8+0+8+0+0+8+8+8+8+8+6+8+4+4+4+4+4+4+{+{+$+N.N.@+1+c+b+b+b+b+b+b+b+e+c+k+k+k+h+k+k+h+k+k+h+h+k+h+h+k+k+h+k+k+k+m+k+k+k+r+r+m+k+k+i+h+o+k+k+k+k+k+e+e+b+e+b+e+e+e+b+3+e+3+2+]+3+]+3+]+3+]+]+1+3+]+]+1+1+3+j+l+q+B+t+y+y+A+w+w+A+A+w+y+A+A+",
550"@ @ % @ % $ = = @ = @ = & = = ) % { : { ) { { { { { } } ( } 5 [ } } 5 5 5 5 j j 5 6 i I 4.Z.(+|+6+8+6+7+5+5+6+8+5+8+6+0+8+9+8+0+8+9+9+8+b+0+8+8+0+0+0+c+0+8+0+b+8+8+8+8+6+b+8+6+0+b+8+6+6+4+^+4+^+{+{+T.N.i.N.3+b+b+e+c+e+e+i+c+k+i+k+k+e+i+h+k+h+k+k+k+h+k+k+p+k+p+k+p+m+k+q+k+h+h+h+k+o+o+p+q+k+q+o+q+k+k+p+h+o+i+k+c+k+k+i+i+e+e+e+b+3+3+]+1+]+]+1+]+]+]+1+]+]+1+]+2+j+n+o+y+t+y+y+y+y+y+A+A+B+A+y+",
551" @ % % & @ & @ = = & = % ) ) = = ) { ) } } { { { { a { g } } } { g } 5 5 6 6 6 5 0 } a s I k.Z.[+8+4+4+6+|+6+6+6+6+6+0+6+9+5+6+b+0+0+5+8+8+8+8+0+b+8+c+0+8+0+8+0+0+c+c+8+b+8+b+b+b+6+6+4+4+4+4+4+^+)+{+$+N.N.$+{+b+e+b+l+i+k+e+k+i+k+h+h+i+h+k+k+k+h+k+h+k+q+k+k+k+k+m+i+k+k+o+m+q+k+p+p+q+q+k+p+p+o+q+i+m+o+k+q+k+k+i+q+i+k+p+k+m+k+l+e+b+3+3+]+3+]+]+]+]+]+]+3+]+]+]+1+3+a+l+q+B+w+A+w+A+y+y+y+w+A+B+",
552"@ . @ @ & & @ @ & $ & & = ) = = { = ) - ) { [ { { { } } } 5 { g 5 5 [ ~ } } 6 } : 6 5 } 5 k v ` F.!+6+6+7+7+6+6+6+6+6+6+6+6+5+0+6+6+5+8+5+8+8+8+8+0+c+8+c+c+b+b+8+8+6+8+4+8+6+8+6+0+0+4+6+6+|+|+4+^+{+)+{+$+$+*+{+3+c+c+c+e+c+k+i+e+h+e+k+k+k+k+h+k+k+h+k+k+i+o+i+m+k+k+p+q+o+k+k+o+p+k+k+k+o+q+o+p+p+o+q+q+p+o+k+o+o+q+k+q+m+k+m+k+p+p+k+k+c+i+e+3+3+3+]+]+]+]+]+]+:+]+]+]+]+3+b+g+s+y+y+y+A+y+A+y+y+A+y+",
553"@ @ @ % @ @ % @ & @ @ @ = & = ) = = { = : - ~ } } { } ~ { } 6 5 5 0 5 5 0 0 5 : a { 5 } } } 5 : 6 i O 4.V.^+4+6+6+7+|+6+6+0+6+6+0+6+5+6+8+0+0+0+6+0+6+6+8+5+6+8+6+0+5+0+6+0+6+0+8+8+6+c+4+6+0+6+|+4+1+2+4+|+)+{+{+{+3+3+e+e+e+e+k+e+c+e+h+e+i+c+k+i+h+k+i+o+k+k+o+k+k+k+k+p+k+k+i+k+o+p+k+k+p+q+o+q+o+p+k+q+q+p+o+o+p+m+q+q+k+m+q+q+q+q+q+k+q+o+o+k+e+k+l+e+a+3+3+3+]+/+{+]+{+/+]+]+]+4+e+k+s+x+y+B+A+y+y+y+A+A+",
554" @ @ @ % @ & $ & = & = = = ) ~ = : { { { : { { { ( { a { } 5 5 0 5 j 5 0 0 [ 5 } 5 [ g } 0 6 6 a i F l.;+[+6+|+6+6+|+6+|+6+5+6+6+5+5+6+5+|+6+6+6+6+6+0+0+6+0+6+c+6+8+8+c+4+6+8+8+7+6+9+6+4+4+|+|+|+4+^+<+)+]+3+3+e+e+e+b+i+c+k+k+c+e+i+c+l+c+e+b+c+k+e+k+o+k+i+i+k+k+i+m+m+p+o+k+i+o+m+o+h+p+o+q+k+m+m+p+q+p+p+q+q+m+o+o+q+o+o+m+q+o+o+o+q+k+m+q+k+p+r+k+e+a+3+3+{+]+/+]+:+{+:+{+{+4+4+c+o+t+t+y+A+A+B+y+B+y+",
555"@ @ = @ @ @ & & & & $ & = = = = = } { : ) : ~ { ) { { : } } a 6 6 6 p k j 6 } 5 ~ } [ [ } } ( ~ } : | r 8.S.;+4+4+4+4+6+|+6+[+|+6+|+5+|+5+5+6+6+|+6+8+6+7+6+c+6+6+6+8+6+6+6+8+8+6+6+6+b+6+7+6+4+4+|+}+^+4+{+{+4+e+4+4+6+8+c+b+e+e+c+e+b+e+e+c+c+i+i+k+c+i+i+i+i+k+k+o+o+k+k+k+k+k+m+l+o+k+p+q+o+k+o+o+q+q+k+m+p+q+m+p+r+t+q+o+q+q+q+m+p+q+q+o+m+q+p+p+q+m+m+h+k+e+3+d+3+{+{+]+]+]+]+3+{+2+2+b+o+t+t+y+A+w+A+w+A+",
556"@ = & $ % @ = = = = & = = : { { - { { : } 6 [ : } ( } 5 6 [ 5 5 k j p k j k j 5 0 } 0 [ } } : { } } ( i s 4.Z.^+4+4+4+|+|+6+6+|+|+5+6+|+|+6+6+6+5+6+6+6+7+7+6+6+6+6+5+8+8+6+6+9+8+b+6+4+6+6+4+4+|+^+}+_+^+^+3+^+3+4+e+4+2+b+c+c+k+c+e+b+b+e+e+c+e+c+i+k+i+k+k+k+h+h+i+p+k+i+n+o+k+m+k+o+p+k+p+m+p+q+o+o+m+q+q+p+q+q+m+p+m+t+o+t+t+q+o+o+m+p+q+p+q+o+p+q+p+t+p+p+k+b+e+3+3+{+{+{+^+^+1+^+4+|+4+f+p+t+y+y+B+A+A+A+",
557"@ @ $ @ = = = & = { = { = ~ { { { { } { } [ } { 6 5 } 5 j k j j t p p k k k j 0 } } } } { { } { } } : a e ` l.=+^+4+|+4+|+^+|+6+|+|+|+6+6+|+|+6+6+6+6+6+5+5+7+6+6+6+0+6+6+0+6+6+6+6+4+6+6+|+6+|+4+4+^+^+3+{+^+3+6+4+|+b+3+4+4+e+e+k+c+c+c+g+i+e+c+e+c+h+e+i+i+h+k+k+k+i+o+q+i+i+o+k+p+p+k+h+k+q+o+o+q+q+q+p+h+o+q+m+q+m+p+q+t+q+q+t+t+p+q+q+t+q+p+q+q+t+t+q+p+r+s+q+k+d+d+e+3+4+3+]+^+^+^+4+4+b+g+q+s+y+A+A+A+A+",
558"& = & & = & = = & { { ( = { = ) : ( } } } } [ : k 6 6 k k p r r t M M p k p j 0 5 [ } ~ { { { { { [ } { 6 s 8.S.!+4+|+|+|+^+|+|+|+[+[+}+5+6+|+6+|+6+6+6+6+6+6+|+4+4+|+6+6+4+6+7+6+6+4+4+6+6+|+|+_+<+<+)+<+{+2+)+^+4+}+4+4+4+6+4+c+c+e+l+e+a+g+b+c+e+b+f+c+k+k+k+h+h+k+k+k+k+q+k+o+g+k+o+q+o+h+k+q+o+i+m+q+q+q+o+q+p+q+q+p+p+o+o+o+t+t+p+m+m+p+s+s+o+p+o+s+t+s+p+p+p+p+p+k+k+3+4+4+3+4+3+^+4+4+4+0+i+q+s+x+y+A+y+",
559"= = = @ ) = = = = ) ~ ) { ~ ) { { } : } } } } 6 r k j a r p K t G M M B t j 5 j 5 : } } ~ ~ } ~ [ { { } : a I l.`.^+4+4+4+[+(+[+[+}+}+5+|+|+6+|+5+|+6+6+7+6+7+6+|+6+6+4+4+6+6+|+|+4+6+6+4+4+|+}+|+^+3+{+{+4+^+^+{+<+<+2+2+4+3+4+2+2+b+c+c+c+b+g+g+g+c+e+k+i+i+i+k+k+k+h+k+q+i+o+k+q+l+k+n+i+k+m+m+k+p+p+m+q+o+q+q+q+p+s+o+o+t+t+q+q+p+o+q+t+o+q+q+t+t+s+q+p+p+s+o+s+p+r+r+p+i+b+3+4+^+4+4+^+4+4+4+b+h+p+t+y+y+A+",
560"@ = = - { ) { = { { : { } { { { { } : } : 5 0 6 p r p r r B K K S M K K K j j 5 5 { { } { { { { } { { { : a e ` F.=+^+^+^+}+_+}+[+|+|+|+|+|+5+|+|+|+|+6+5+6+4+|+6+6+6+6+6+4+4+4+6+4+4+4+4+4+4+_+^+)+^+{+<+]+<+^+{+3+)+^+]+^+3+3+7+6+7+j+e+l+e+l+e+l+c+c+e+k+i+k+k+h+k+h+i+k+k+o+i+o+o+i+o+i+o+o+m+o+q+q+m+p+o+o+o+s+m+q+s+m+p+o+o+w+s+s+t+t+o+o+s+q+q+m+t+t+q+s+q+t+p+p+r+q+p+i+e+e+4+4+4+4+^+4+|+4+b+h+t+y+y+A+",
561"= = = ) ) ) & { = { { = : : : ( ( } 5 5 5 5 j p B K t p B M S S S S S .K t j 6 g ( { { { ~ ) ~ { = = { { : | s 4.Z.'+4+4+}+[+(+}+(+[+|+[+[+|+[+7+[+5+[+|+4+|+4+|+6+5+7+7+6+6+7+7+|+|+^+|+}+_+|+4+)+{+_+{+^+{+{+{+^+^+3+1+^+<+_+{+1+}+2+9+b+g+c+k+c+b+c+k+c+l+i+h+e+p+k+k+o+o+k+k+p+k+p+i+o+n+i+q+q+o+o+q+q+o+q+p+o+q+o+q+t+o+t+q+m+q+o+o+p+s+s+q+o+t+t+n+t+m+q+p+q+t+t+m+p+q+q+h+e+e+4+4+|+4+|+2+6+4+b+i+o+y+y+",
562"& = = { { ) = ) ) = : ( ( 6 : : 6 6 k 6 p t u t S M K r B G S S S S S G G t p 5 } = ( ~ = ~ & ) = ) ) ~ { { < e I F.=+^+^+_+}+^+}+_+[+[+[+[+|+[+[+[+5+}+[+|+|+|+|+|+[+[+|+6+|+4+|+|+[+[+^+|+_+_+^+^+)+)+]+^+)+4+{+3+{+{+]+{+^+<+)+1+4+<+4+e+e+k+e+i+k+c+l+c+e+l+i+i+k+k+k+k+o+o+k+h+k+p+i+p+k+m+m+o+p+q+o+q+o+q+o+o+o+o+o+s+o+m+t+o+t+s+t+q+o+o+s+o+t+t+o+t+o+t+o+t+o+s+t+q+p+r+o+i+e+b+3+4+4+|+7+6+4+c+c+k+s+t+",
563"{ { - { { ) } ) [ } : ( 6 ( 6 6 a p 6 p B K K M S ..G B O ......S .G G B M t j ~ { = ~ = ) ) ) ) ) ) = % { ( 8 s _.V.~+}+<+^+(+(+(+(+(+(+_+}+^+|+}+}+|+|+[+5+7+7+|+|+7+|+4+4+|+4+}+}+}+}+_+<+_+)+<+]+_+>+]+{+{+{+{+)+]+^+)+]+{+{+{+<+{+2+4+e+e+k+l+c+e+e+k+h+c+k+k+i+i+i+i+k+k+h+k+o+k+p+k+m+o+k+q+o+m+q+q+q+o+s+s+t+t+s+p+s+t+t+s+o+q+o+o+t+s+o+s+o+o+t+t+o+y+t+o+s+t+s+o+t+m+p+p+k+e+c+4+4+4+4+4+6+4+4+h+k+t+",
564"= ) { - : : } ) [ [ 5 6 a a ( a p v k t S S K G +...O K S ........ .S G G K p 5 ~ { { ) = % ) ) ~ = ) { $ ~ { < | F l.;+(+}+}+_+(+^+(+}+[+[+[+^+|+^+|+|+}+|+[+[+[+}+[+|+|+^+4+^+|+}+_+^+^+^+_+)+)+)+]+]+>+>+{+{+)+]+)+{+{+)+{+{+$+{+{+)+<+3+6+b+b+a+h+h+e+e+k+e+c+i+i+k+k+k+i+k+q+k+o+i+m+k+p+o+o+k+k+o+o+o+p+q+q+o+q+q+v+q+q+m+q+t+m+t+t+t+t+t+o+s+s+t+t+o+o+t+o+t+s+q+s+m+t+t+q+p+p+k+e+b+4+4+4+{+6+4+4+c+c+o+",
565") { { : { { : : } : 5 6 k a 6 k p p B G .S G O ....G G +.+.+.+. . .M B B p j } } ~ ) ) ) = ~ ) & ) & = { ~ = ( < i ` E.)+_+_+^+^+(+(+[+^+^+^+}+^+|+^+_+|+}+^+|+|+[+(+[+^+[+|+4+4+^+[+_+_+^+)+<+]+>+>+>+$+$+$+)+{+<+)+{+{+{+>+{+{+$+]+]+{+)+{+4+8+b+l+e+i+i+c+i+l+b+g+h+k+i+k+h+h+h+i+k+k+p+i+h+p+o+o+q+q+p+o+o+o+p+m+p+o+s+m+t+s+s+t+o+t+m+q+s+s+t+o+s+t+y+o+t+t+o+r+s+o+t+s+o+t+t+q+p+h+c+c+e+e+4+3+|+4+4+6+b+",
566"} { } { } } } : } } 5 k k k r p B B G G S G G O <.f.O G O O +.+...G B p k k a { } { = = ) & & ) & ) % % = = = = ( | I p.Z.'+}+)+^+^+_+_+_+(+(+^+^+|+[+}+|+|+^+}+}+}+}+[+|+^+_+_+^+^+^+^+)+<+>+)+]+ +&+&+&+>+$+>+$+]+&+>+$+&+]+$+{+>+&+{+{+)+{+]+6+2+l+e+l+l+b+c+g+g+l+h+k+k+k+k+k+k+o+i+i+p+p+i+q+o+o+o+o+q+p+p+t+q+q+p+o+t+p+q+q+t+t+o+t+s+o+q+o+t+o+o+o+t+y+o+t+s+s+t+t+q+s+o+t+o+s+r+k+k+c+4+4+4+4+|+4+4+6+8+",
567"} } } } { } } [ 5 6 j p t p i B G G O O G G G +.+.+.M G S S G G G v v p j ( } { = ) { & & % % & & & % & & = = & = < 8 ` F.~+)+^+<+_+~+!+[+_+(+_+^+^+^+(+^+^+}+^+|+(+(+(+_+_+}+|+_+^+^+)+<+'+>+>+>+>+>+ +$+$+&+]+,+&+{+$+{+$+>+&+&+&+]+@+&+]+)+)+<+7+2+b+b+e+g+l+e+e+c+l+c+h+k+k+o+i+i+k+k+k+k+p+m+q+p+m+q+m+q+o+o+s+m+q+s+p+t+o+t+n+s+o+t+o+s+s+t+o+y+t+t+o+s+o+t+o+t+t+o+t+t+t+t+s+q+s+q+q+k+h+0+|+4+4+4+4+6+4+",
568": : 6 : : } 5 j 6 6 6 p p p v O G G S G v B B S +. ...S S S S G p a a k } ~ ) = { = = = & & & % % & $ $ $ & & @ & = , s p.Z.^+)+^+^+^+)+^+^+(+^+_+_+^+}+(+(+(+_+}+}+^+^+}+^+_+^+<+)+{+)+{+~+{+>+$+&+&+@+ +$+ +&+ +&+&+ +>+&+&+>+$+$+$+&+$+&+@+]+)+<+4+2+g+e+c+k+e+e+c+c+g+i+i+e+k+i+i+o+i+o+k+k+h+o+k+m+q+o+q+p+q+q+o+q+t+m+t+t+s+t+s+t+t+t+t+o+s+o+t+o+t+o+s+s+t+o+o+t+t+o+t+t+q+t+q+s+q+p+k+e+c+6+|+|+4+4+}+|+",
569"6 6 6 : } 5 5 k k r k p K B v G G S S G B B O O S ..S S K ..G B p k 6 : { { = ) = = = & $ & & % % % $ $ % $ & $ $ = { i F F.,+^+<+)+<+^+^+_+^+^+^+(+_+(+_+^+}+^+^+^+_+_+^+~+^+_+^+)+)+{+,+&+ +$+&+ +W. +Q.&+$+&+&+ +$+&+$+$+>+&+&+&+%+>+&+@+&+ +&+{+<+4+3+e+k+i+i+h+c+l+c+e+k+i+h+k+k+k+k+i+h+p+p+k+m+o+o+o+o+o+m+p+s+o+o+t+s+m+t+s+t+o+y+o+t+t+t+s+s+s+t+t+s+o+t+t+s+o+t+t+o+p+t+o+o+q+s+q+o+m+c+c+c+4+^+4+4+|+",
570": a 6 : } 0 6 k j p i v M B G S S S S M G G O S S S O S S S B r 6 : } { = [ = = @ = @ & $ $ @ $ & $ $ % & & ) $ & = ( s 4.Z.)+^+)+)+)+'+)+~+^+)+^+^+_+!+_+_+^+^+^+(+_+^+<+_+!+~+_+)+{+>+>+ + + + +Q.%+W.Q.W.&+&+&+$+&+&+&+$+&+&+$+&+&+&+&+@+&+&+>+&+<+2+2+e+e+l+e+c+e+i+c+k+e+c+g+i+i+k+k+i+k+m+k+k+h+m+o+q+q+q+q+p+t+o+o+t+t+o+s+t+o+y+t+o+x+o+s+t+s+m+t+s+o+t+t+s+t+s+t+o+t+t+o+y+r+q+t+r+r+c+b+c+4+4+4+4+^+",
571"6 : : : 6 j p t B p p B M S G S S ...... .S S +. .S v G G G r k ( : : : { { { @ @ $ $ % @ $ $ . & & @ % % ) ~ { | ` p.,+)+{+)+'+)+~+^+~+^+^+~+(+_+^+^+^+'+(+)+^+)+)+~+)+'+>+)+$+>+$+@+ +Q.%+W.Q.T.%+++Q.W.Q.Q.&+Q.Q.&+Q.Q.&+Q.$+T.@+$+Q.&+&+&+>+_+3+b+b+e+g+k+e+l+b+c+i+i+i+k+k+i+k+k+h+k+p+m+p+k+p+o+o+m+m+q+o+t+t+t+s+t+t+t+s+o+y+x+o+s+t+s+t+t+o+t+t+s+s+q+t+o+o+t+t+o+t+o+o+t+p+q+o+n+c+c+4+|+|+}+}+",
572": } : 6 6 k B K K p B G G G S ..S S ........S S G B v B B p : 6 } { { : { ) & $ @ @ $ + % + & $ % $ & $ & < s 8.`._+{+{+)+^+'+'+~+~+^+)+~+~+_+)+_+)+_+<+)+^+{+~+)+)+>+>+>+ + +@+W.W.T.Q.Q.M.Q.M.%+%+T.$+Q.&+Q.T.$+Q.%+Q.&+T.%+Q.$+Q.&+&+&+>+<+1+4+e+c+k+c+l+e+b+b+c+c+i+k+i+h+k+h+i+k+k+m+i+o+o+q+k+o+q+o+o+o+o+t+t+t+t+s+o+o+y+t+o+t+o+y+o+t+o+o+t+o+s+t+t+o+t+t+t+o+t+s+t+p+p+p+o+k+c+c+4+|+|+|+",
573"5 6 5 a i B G M M B M M B G G ..S S +.+.+.S S G G k 6 k p 6 : [ { { = { - = $ @ $ @ % $ + $ @ % % @ % $ % @ @ - | +.l.>+)+)+)+)+~+)+)+'+~+^+)+^+'+_+)+^+)+)+)+{+~+)+>+;+>+>+ +@+ +Q.@+T.Q.Q.T.T.T.Q.M.M.%+T.T.M.%+W.T.%+Q.T.&+K.%+T.T.%+&+T.@+@+>+)+2+2+e+c+l+c+b+g+c+c+h+c+i+i+k+i+k+k+i+o+i+n+o+o+o+m+p+o+t+o+s+t+m+y+o+y+t+s+x+o+t+y+t+t+t+o+y+t+t+t+t+o+o+o+t+o+o+t+t+s+p+p+s+q+q+p+i+c+b+7+2+2+_+",
574"6 k p p p v S M M G S S B G G ..S S S S S G G G p p 6 6 k } : ~ & = = = = @ $ $ @ @ & $ @ @ ; $ . - ( s p.`.{+{+~+>+~+_+]+-+~+^+)+)+'+_+)+)+)+<+~+)+)+)+>+ +&+ + +&+&+Q.W.K.T.H.T.T.T.T.Q.M.Q.Q.T.Q.T.&+K.T.M.T.T.Q.%+T.%+Q.T.Q.%+&+%+]+<+1+4+b+e+g+e+g+l+e+k+e+k+i+k+k+n+k+i+k+p+i+i+p+q+o+o+o+o+o+m+s+m+m+o+y+o+t+t+t+o+y+o+y+s+o+y+o+t+o+t+t+t+t+m+t+o+o+o+t+q+q+s+t+q+q+q+c+b+8+6+2+|+",
575"k p t t B O S S G +.S B O G +.S ..G G O G B p p p B p 5 : : = = @ @ @ & @ & $ @ % + % + ; & . - r ` F.`.~+)+>+{+>+>+_+>+)+'+'+~+>+<+~+)+>+{+>+]+>+>+ +>+$+Q.W.Q.M.Q.Q.t.m.m.q.T.T.T.T.T.T.Q.T.Q.T.T.T.%+M.T.X.M.M.T.%+T.%+Q.Q.W. +&+]+4+4+j+e+l+e+c+b+c+i+e+k+h+i+i+i+k+i+i+k+k+i+o+o+o+o+o+t+t+t+t+y+o+s+s+s+s+y+t+t+o+t+o+y+o+t+x+o+y+o+t+m+t+y+o+o+t+o+t+o+q+p+q+m+o+q+c+j+b+4+2+",
576"p B G B B O O +.S S S S O O O S +.G v p p p i p B p 6 } { { = ~ $ $ $ $ + + + + . + ; + ; + % @ $ @ a s n.V.@+~+>+>+-+>+)+>+)+)+~+'+>+{+~+~+,+>+>+&+>+ + + +W.@+@+K.%+T.w.T.q.T.q.T.X.T.Q.Q.N.T.T.T.Q.T.T.T.T.T.T.T.T.Q.T.T.X.T.%+T.Q. +@+]+^+2+6+k+e+k+l+e+h+c+c+i+l+n+h+k+i+o+m+q+i+k+o+o+q+o+q+o+p+o+t+y+t+t+y+o+y+t+t+s+s+o+t+y+o+s+m+s+t+t+o+o+t+s+o+t+o+s+s+q+m+r+q+q+k+k+b+b+4+4+",
577"B G M M G O O G +.S G S S S O S G G B p B p v p p 6 : : ~ = = = @ $ $ + + % + % + % + % & @ - i ` F.;+)+>+>+>+-+>+)+)+'+>+>+{+>+>+>+>+>+>+>+$+ + +W.W.Q.Q.Q.Q.s.T.q.q.h.f.h.N.w.N.T.T.M.N.M.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T. +@+<+_+4+4+k+k+e+c+e+e+e+e+h+k+k+h+k+g+k+h+q+o+q+o+m+p+m+p+q+s+t+o+s+x+o+y+o+y+s+t+t+s+t+m+t+t+t+o+o+t+o+t+m+n+t+o+t+q+q+o+t+m+o+o+o+p+k+k+b+4+",
578"M M M B M G G O S S G G O G G S B v i p i i i 6 6 6 { = & @ & & & @ $ @ & @ + + + % % + + % + + + + $ & < O p.@+>+>+,+>+-+>+$+ +,+,+-+>+>+,+>+;+`. + + +Q. +Q.@+Q.Q.Q.T.q.q.q.i.6.h.q.q.T.q.T.q.T.q.N.s.T.q.Q.T.X.T.T.X.T.T.T.T.T.T.T.T.w.K.K.V.;+^+4+c+c+e+k+c+b+c+e+c+i+i+i+i+g+i+h+h+h+p+p+p+p+o+o+q+o+s+t+t+s+o+y+o+w+y+s+t+t+t+s+t+t+o+y+o+t+s+t+m+o+t+o+n+o+s+q+q+q+q+p+o+o+i+k+e+b+",
579"S K K B v B G S ..S O v O G G G G p i i 6 6 6 : { { { = & $ @ @ @ & . + . + + . + + + + + . & . $ = i 2.H.>+>+>+&+ +>+>+>+ +>+ +-+;+>+;+ + + + +&+Q.@+K.Q.Q.Q.q.Q.s.s.i.x.V 6.h.X.q.N.N.M.N.N.q.X.N.T.q.T.q.T.q.T.X.q.T.T.T.T.Q.w.w.m.2.p.F. +^+|+b+c+k+k+c+e+i+b+b+g+i+l+i+p+k+k+o+i+o+h+k+q+t+o+t+t+o+s+t+y+s+y+s+o+t+s+s+y+o+t+t+t+o+t+y+o+m+t+p+o+q+s+q+q+p+q+o+o+k+p+p+p+h+c+b+",
580"S S K B B G G S ..S G p v B G v i k i 6 : : } { { = = & $ $ @ $ + + + $ . & @ % ) 6 O H. +>+>+ + + + +>+ +>+ +>+ +>+ +&+ + +W.W.W.Q.K.Q.T.Q.o.w.q.q.i.9.R (.h.q.q.N.q.q.m.T.q.q.X.X.q.T.N.N.T.q.X.T.q.T.m.m.m.<.2.......2.F.`.~+4+4+e+e+i+e+c+g+i+g+i+k+e+h+m+k+k+h+p+m+m+o+p+o+q+t+o+y+o+o+s+y+s+y+t+t+o+y+y+o+y+o+t+o+t+t+p+q+q+o+q+o+m+o+o+q+p+o+q+k+q+k+k+c+b+",
581"S S G M K G G S . .B p k v B B v k k : : : { { = ) ) % $ $ . + . + + + + + + + + $ @ $ $ $ { G m.W. +$+ + + + + + + + + + + + +W.W.W.W.@+K.Q.Q.T.M.q.T.o.q.f.6.V Y ).u.u.N.q.q.q.q.q.N.o.q.T.w.N.q.X.q.T.m.X.q.m.s.m.<...S ..S ..+.2.F.`.!+4+c+e+e+e+l+c+b+i+c+h+h+k+e+h+m+k+i+k+q+p+o+o+o+o+t+o+s+t+t+t+t+s+y+x+t+t+m+x+o+t+o+t+m+o+o+o+o+q+o+p+q+q+q+m+o+p+o+o+m+m+o+i+c+",
582"S S G M M G G S +. .M p k i v k i 6 6 : - = ) ) = & & @ % @ . @ @ + + + + . + + + + + + + # . $ ^ g r <.H. +$+$+ + + + + + + + +W. + +@+W.Q.Q.W.W.T.t.s.M.s.q.q.i.e.g.Y Y ).1.u.i.q.q.q.q.q.N.q.N.q.q.N.q.q.T.q.s.w.s.f.....S S M M K S G S 2.F.`.'+6+c+c+c+g+c+l+c+e+k+h+h+k+h+h+p+m+i+o+q+q+q+s+o+t+o+s+t+s+s+t+s+t+y+o+y+o+y+o+y+o+t+t+t+t+t+o+q+q+q+m+m+q+q+o+p+q+q+k+n+n+i+c+",
583"S S S M M S G G S S B p 6 i i k | 6 : ) ) = ) ) = ) % + + . + + + + + + + + + + + + . ; ] ~ y y ..w.Q.$+ + + + +W.W. +Q. + +W.@+Q.W.K.Q.Q.K.K.H.w.m.q.q.i.i.0.R Z @./.g.u.X.h.X.q.q.N.q.N.q.N.q.T.q.T.q.q.m.m.....S S M K G K M B B O +.2.F.`.'+}+b+l+e+l+c+e+c+h+c+k+h+k+k+i+i+k+h+i+m+m+m+s+o+t+o+s+t+y+s+t+x+o+y+t+y+o+t+o+t+t+o+o+o+o+o+o+o+o+q+p+o+o+q+q+o+o+q+o+k+k+l+",
584"G O G G M G B G O v r 6 6 k i { : : - ) = & @ & = & @ + + + @ @ $ + + + + + + + + + + $ + # . # ] h g y r S m.Q.$+Q. +Q. + +W.W.W.Q.W.Q.W.Q.W.Q.Q.T.t.w.Q.m.m.s.o.3.>.9.Y X %./.[.0.i.h.h.N.h.i.q.N.q.N.i.N.q.q.m.f...+.S S M M M K B B B r B B B +.2.n.Z._+|+c+e+e+c+k+c+e+h+e+h+h+k+k+i+q+o+k+q+q+q+p+o+s+y+s+s+y+s+t+t+t+s+s+t+y+t+t+t+o+t+t+t+t+o+o+o+o+k+q+q+o+o+q+q+o+p+p+q+o+i+",
585"G G O B B v k v r k 6 6 6 : : - - = & = @ & = = = @ + @ + . . $ $ . . + + + + + + + + + + + $ ~ ^ h c y y y W ..t.W.$+W. +Q.Q.W. +W.W.W.W.K.K.Q.Q.Q.H.T.w.m.w.m.q.f.e.6.Y Z @.%.@.(.x.h.q.i.i.N.i.q.q.i.q.q.q.f.m.......S G M B B B B t t B p p t B B +.|.F.`.~+4+c+k+k+c+b+f+b+h+e+k+i+f+f+g+o+o+i+p+m+o+s+t+m+o+t+o+t+t+s+y+t+t+y+o+t+o+w+t+t+o+o+o+o+q+o+o+o+o+i+i+n+o+o+q+k+q+o+k+k+",
586"G G G B B p k i | ( 6 6 : : = & = = = = = @ @ = @ . + + . % . + + ; ; + > ^ g y 0 j y y B f.p.H.&+Q.W.W.W.Q.Q.W.Q.K.W.Q.Q.H.M.q.t.w.T.q.q.m.f.f.1.(.Z @.@.*.*.).x.x.i.q.i.q.u.q.q.q.o.f.f.+...S W M W G r B p B B B t p p p p B v G +.2.F.`.^+|+4+b+g+e+c+c+h+c+k+k+k+f+f+i+p+i+q+q+q+o+t+s+y+o+y+y+o+s+s+s+s+y+t+o+s+o+t+o+t+s+s+n+o+o+n+o+o+q+q+k+k+h+o+o+k+o+k+k+",
587"G G B p p k 6 6 6 6 6 } : = & = & = = = = @ @ % + + + + + + + + + + . + . + + . + + $ ; h c c g g y y y y M m.K.W.W.H.Q.Q.Q.W.K.K.Q.Q.H.Q.T.s.Q.w.q.s.s.q.f.h.e.:.Z X @.*.%.%.).g.i.x.h.q.i.q.h.m.f.f.f.S -.r G B B B B B B p p p p p p t t p p p t B +.2.F.-+^+4+b+e+e+l+l+e+g+h+i+h+k+i+h+i+q+o+o+o+t+m+o+m+t+y+o+y+t+o+y+t+m+y+y+o+t+t+t+o+o+o+o+o+p+o+i+k+o+i+o+o+q+o+q+o+l+o+o+",
588"v v v i k k : ( ( 6 5 { - & % $ % @ @ @ @ @ @ @ + . + + + + + + + . + + + + + + ; ; ] ^ g h g y g g g y y G ..m.Q.Q.W.Q.Q.H.H.W.H.H.s.Q.s.s.m.T.s.q.q.3.o.f.e.^.Y Z @.].=.].].a.9.e.h.x.q.i.q.f.f...S G O G M B W p r p t k p p t p k p t k k k p p p M S 2.F.-+_+7+b+c+c+c+e+c+c+k+i+k+k+o+i+h+q+q+m+p+p+y+o+t+o+y+t+t+t+t+w+o+t+m+s+o+o+s+o+o+m+q+o+m+o+m+k+q+o+k+i+l+g+o+o+k+k+k+",
589"v i i 6 i : : : : { : = & & @ @ % & @ % @ . . . + @ + + + + + + + . + + + + ; > ^ h h h 0 c g g y h y y y +.w.K.T.Q.H.H.Q.H.t.Q.s.Q.q.H.m.s.m.m.s.s.f.i.f.^.(.Y @.].%.%.*.*.,.).x.u.i.f.f.3.-.-.O W S y B B p r r r p p p k a k k k 6 k p k i k p j p O +.2.F.-+^+4+b+b+g+i+l+g+g+i+i+i+k+i+k+h+i+q+q+t+o+t+t+y+o+o+y+y+o+s+t+y+o+y+t+t+o+s+o+o+m+k+k+o+n+m+h+i+h+o+o+o+l+k+n+o+o+",
590"i : : : : : = = = = { = & $ + + . . + @ + . . + + + + + + + * # # ] ] c g g h g g g j c C y y S m.w.T.t.s.K.w.s.w.Q.o.t.s.m.m.m.q.f.m.m.f.e.6.!.,.$.@.].%.%.].]./.).6.e.i.#.-. .S W G B B W B B t p p k k j j j j j k k r 6 k k r 6 k 5 j r O +.2.W.-+^+b+b+e+c+e+c+i+i+h+h+k+m+o+m+o+m+o+o+t+o+t+t+y+s+s+y+t+s+o+t+o+t+o+t+o+o+w+o+m+o+n+i+g+o+p+i+g+g+g+o+o+p+i+g+i+",
591": } { : { { { ) & & @ @ % + + + + + + + + + . + + + + + + . . . . + + $ # ~ h g ~ g g g h g g y h u C y W ..p.H.Q.H.s.H.w.t.s.s.s.s.t.m.o.q.3.f.f.-.i.^.!.U Z @.%.%.*.%.*.a.).:.i. . .M M K M W r B p t t p k p k p p k k t k 6 6 k a j k k j j k 6 p p O +.|.V.,+^+4+c+e+i+g+i+c+l+i+k+k+o+i+h+q+p+o+y+o+s+x+o+t+t+t+t+y+y+o+y+o+y+o+o+o+o+o+o+o+i+o+o+k+i+k+k+n+n+i+i+k+q+k+l+",
592": : { { { ) ~ & & & $ @ $ + + + + + + + . @ + + + + + + + + + . . + + + + + + . + # ~ ^ g ~ g g ~ n g h g g g g g c y N f.m.s.m.H.s.t.t.t.s.s.s.s.s.m.}.f.3.i.3.e.:.R Y U @.%.%.@.*.].].).(.>.W W M M M t t t r r B p k k k j k k k k k j j j 5 j k 5 5 6 j 0 j 0 j p B S +.p.V.;+}+8+b+i+c+i+h+k+h+k+h+o+i+o+q+q+o+o+s+o+y+y+t+s+o+t+m+t+o+t+o+o+t+s+o+o+o+n+q+n+g+i+k+o+h+h+g+g+n+g+i+o+i+k+",
593": { = { ~ { ) $ @ @ & $ % % + . . + + + + + + + + + + + + . + . > # g ] g / g h g c h h g y h y y C W M m.m.s.m.m.w.m.s.s.m.m.f.f.3.f.s.f.f.e.>.R Z X *.X %.@.X /.Z ).~.T K M M K t p B B t p k k k j k j k k 6 j k k k k k 6 6 5 6 6 j 5 0 0 j j j k p O +.|.V.,+}+b+b+k+k+e+k+k+i+k+i+k+h+m+m+p+t+o+t+o+o+m+t+s+o+t+t+t+m+t+o+o+o+o+k+q+o+o+i+i+n+o+k+o+k+i+k+i+i+l+g+k+o+",
594"{ { ) : ~ = & $ . & @ @ ; . . . . . + + + + + + + + + + + # # ^ ^ ^ ^ h ^ g ^ g g g g h g g g y c y K }.m.m.s.}.m.m.3.m.}.m.}.s.3.f.3.i.-.^.:.R U X Q Z @.Z Y ).~.C A N t t t t t B p p t j k k a k k 0 5 k a j j k 6 5 j k 6 5 5 5 0 j 0 j j p p k r v G +.|.W.,+2+8+b+i+h+c+k+i+k+o+q+i+q+o+o+t+o+t+t+y+y+o+s+t+t+o+t+m+s+s+o+o+n+o+q+g+o+k+i+i+f+i+i+k+g+g+i+i+k+i+k+k+",
595"- ) { & = = & @ $ . + . + + + + + . + + + + . + . . + + + + . > + + $ # ~ ~ ^ ] n ^ g g g g g g g y g y C y M -.m.m.m.q.}.3.s.}.f.}.f.f.f.i.#.i.-.:.Y U X X Z @.Z R ).A T W K t t B t B t k p k j k j 5 k 5 5 j 6 k k k 5 6 j k 6 5 g 6 a a 5 0 k j j k k k r r B O +.p.`.'+4+e+k+k+k+h+k+m+k+i+p+i+q+t+o+p+s+o+o+m+s+o+t+s+m+s+o+q+o+o+o+o+o+h+o+q+n+n+g+n+k+k+i+i+i+k+k+i+k+i+i+",
596"- & & & @ @ . @ @ . . + + + + + + + + + . + . . + + + + + + + > > * # # ] [ g ~ h ] g ~ g g h g h c C g y y M ..f.}.f.f.s.f.f.3.i.}.f.3.f.i.-.>.>.R Z X X X Y R R A T W u t t t t t t p p k j k 6 5 j 0 k 5 6 j 5 5 j j j 6 5 5 5 5 0 0 6 6 6 0 5 j 0 j k k a r r B O 2.n.`.^+4+e+i+k+i+k+h+k+i+m+m+m+p+o+o+q+o+t+t+m+t+o+o+o+s+m+t+o+o+q+p+o+i+g+o+i+n+i+h+h+c+i+i+i+g+k+i+k+k+k+",
597"& & & @ $ $ + + + + . + + + + . + + + . . + + . + + + + . + + + + > + > + $ ; ^ ^ ^ ^ / n h ~ h h c h C h h y y y -.}.q.3.3.f.}.3.3.3.f.f.-.3.-.>.>.R Z X Z Z Z R R A u u u B r t t t p k r k 5 6 5 5 5 0 5 5 6 5 0 j j j p 0 j j g 0 5 5 5 g 6 j 5 j k 6 6 k k k a r k B O 2.H.`.^+4+e+k+k+k+o+o+k+i+o+k+o+p+t+o+t+o+s+o+s+o+s+p+o+o+o+o+o+o+i+h+o+o+i+k+k+i+g+g+g+g+g+g+i+c+k+c+i+g+",
598"& & $ . @ @ @ + + + @ + + + . + + + + . . . + + + + + # > + > > + ; # ~ n ~ h ^ n g g h h h C c C y y y -. .f.f.f.f.f.f.f.-.f.-.f.-.-.T R R Z Z ~.w ~.A u u y t t t r B t p k 6 5 6 j 6 6 6 6 j 5 5 5 5 5 j p 0 p 0 5 j 0 0 0 0 5 5 5 5 5 5 5 k j 6 j t k k y r B +.<.F.-+^+8+b+g+k+o+o+q+k+m+q+q+o+o+o+s+m+o+s+s+p+o+t+q+o+q+o+p+q+l+i+g+i+i+i+l+k+c+i+i+c+b+g+g+g+g+g+b+g+",
599" @ @ & $ + + + . + + + + . . + + . + + + + + + + # + > * + > > + > > > ; * ~ / ~ n ^ ^ g g h h C h C C C W W #.3.3.#.f. .-.f. .f.-.-.-.T R R d Z d R A A t t B B t B B B k p 6 k 5 5 5 6 5 5 j j 6 6 5 p 5 k k j p j j j 5 5 j 5 5 j 0 0 0 5 5 6 5 6 k p 6 k j p p r G +.2.V.)+^+8+k+g+k+i+i+m+k+o+o+o+o+q+o+t+s+o+p+q+q+m+o+o+m+o+o+o+f+o+i+n+i+i+f+i+i+g+b+g+f+g+b+b+b+j+g+g+",
600"$ @ ; + . . @ + + + + + . + . + + + . . . + + + + + + * + + > # > ' > > + > + * # / ~ n g n ^ g g h h h C n A T W -.f.f.#.f. .f.-. .-.#.-.V C w R R A A A A u t B t p k k r k k k 6 k 6 } } 5 5 6 j k 6 6 6 5 p j p p p p 5 0 5 5 5 5 0 5 5 0 0 5 j 6 5 5 6 j j k j j p k p G +.p.V.~+}+c+i+k+q+k+q+k+q+q+o+m+q+q+q+m+s+m+o+q+m+p+o+i+n+g+o+i+o+h+i+i+g+i+l+i+g+g+g+c+f+g+j+g+j+j+g+",
601"@ @ + + . + . + . + + + + + + + . + + + + + + . * * + + + # ; # + + + + ' + > > # # # / # ^ g n g h h g y y C A y T -.3.-.f.-.-. .f.-.-.^.n A d A A A A A u t t k k p p j k k 6 5 5 6 6 } j 0 5 5 j 6 k 5 j 5 p t B p p k j k 6 6 6 k 0 5 6 0 5 j 5 0 0 5 5 6 6 k k 5 t j j p k G +.n.V.^+4+e+k+k+q+o+o+o+o+o+q+o+o+o+t+o+n+o+q+q+o+p+o+i+f+n+n+f+i+k+i+i+g+f+g+g+b+b+b+b+c+8+9+8+8+8+",
602" . + + + . + + + + + + + + + + + * + + + + * + ' > * # * * * > > > + # # # # # ^ / ^ ^ n g g h y n y y T T N -.f.-.-.-.-.-.-.W W y n C C A A A u p t t t p k k r j j 5 k 5 5 6 6 5 : 5 5 } 5 5 k 6 6 k p t B p k j j 0 6 j 5 6 0 j j 5 5 j k j 0 j 5 6 0 0 k 6 j j j t k t M 2.n. +|+0+k+l+k+q+k+q+k+o+q+n+o+o+q+q+o+o+o+h+o+k+o+i+i+k+g+g+i+i+k+c+g+i+g+g+8+g+f+g+g+c+g+g+b+g+",
603" . + . + + . + . + + + + . + + + + + + * + + + * + > > > ; # + * > > > * * * * # . / ~ ~ ~ n g g n y y V C T T #.-.-...-...W W y y n h l h y u t p p p k k k k k 6 6 6 6 6 5 } 5 j 5 5 } 0 0 5 0 j 5 j p p p p j k k j 0 j 5 j 0 j j 5 j j k 6 6 j 0 5 j k j 5 k k j j j j j B M 2.F.>+^+8+o+l+k+o+o+o+k+o+o+n+k+o+o+n+o+i+q+i+h+i+o+i+i+i+i+i+g+g+i+c+b+f+g+8+8+b+b+8+b+c+b+b+c+",
604" @ . + + . + + + . . + + + + + + + + # + + > + + # # # # # > * + + > + + ; # > * # # # # ~ g h n n h n y y V W V -.-.-.-.W W r y n n n j 0 u j j k k k t k k a 6 6 5 } 5 6 a 6 6 6 } 5 5 5 5 0 k 6 k k j p p v 6 6 6 5 5 p j k k j j j k k k j j 5 j j 5 0 k j 0 j j j j k r k p M S 2.V.)+}+c+o+o+o+o+o+i+n+o+f+o+o+o+o+p+i+o+n+i+g+i+i+l+g+i+i+i+g+g+i+b+8+g+g+j+9+j+8+b+8+j+9+8+",
605". @ . + + + + . + + + + + + + . + + . + + . . + + + # . + + * * + + # # # # * # # ; * * * * # # # * * # . / # # # ~ g g n y y y C W W -.-.-.W W y y y g c u j j r k k k r k r k a k j 5 6 6 } 6 : a } 5 k 6 6 6 5 j j k p k p k i 6 i 6 6 j 6 j k k j k k p j j k a j j j j g j 0 5 5 j 0 j j j k k k r G +.n.`.)+4+c+k+k+o+i+q+n+o+n+g+g+n+i+i+o+g+i+k+k+g+g+i+i+i+c+b+g+i+8+g+b+8+8+8+8+e+j+9+b+8+b+j+",
606". . + + + + + . + + + + + . + + + + + # . # * + + * * + # * * ; * * / # # # * * * * # * * * # . # # # ~ n g n n n W V T W -.W W y y n ^ g 0 0 j j j 6 k k 6 a 6 k 6 6 6 a a 5 6 5 6 5 0 5 a 6 k j j 6 6 k k k k k j 6 6 6 6 5 t p j j p p k j p t t t j j j j 0 j a 5 j 0 5 j j j 5 a j k k p B +.p.,+<+8+i+k+o+i+k+g+i+k+i+i+n+g+f+i+i+i+f+i+i+i+c+c+i+f+8+j+b+8+j+j+b+8+j+8+b+8+9+8+9+b+b+",
607" + + . . . + + + + + . + * + # + * + # + * * + * * * + * * ; ; > * * # ; # + + > * * * * * * # * ~ # g h y C N P W W y a g ~ g g 0 g j j j 5 j 5 6 k k a a 6 5 5 5 } } : 6 5 5 j 5 j j j 6 j j k a k p k t j j 5 5 5 p p t p p p t t t t p t j u t t y k k 5 j 5 j 5 5 6 6 g j 5 j 6 k r O 2.F.-+^+e+o+k+l+o+k+k+i+n+g+i+i+i+f+k+i+h+i+g+c+i+g+b+b+b+8+g+j+8+5+j+b+b+9+8+9+8+9+8+9+9+",
608" . . + + + + . + + + . + . + . + + + * * * + * + + + + * + + > > ' > ' ' * * ; * * * * > > + * * * * # . # * # # ~ n g y y y y y g ~ g ) } } 5 g j j k j 5 5 5 k 5 6 6 6 6 6 6 5 5 } 6 j 0 j 6 6 k t p 5 k k k k p p p p 5 5 j t t t t B t M B B B t p p t u j t j j k j 5 g 5 5 0 5 k 5 5 5 j j j k r G 2.V.)+4+b+o+n+m+g+i+c+i+i+i+k+i+f+i+i+i+0+c+c+c+f+0+g+8+9+8+j+b+8+9+8+b+9+8+9+j+2+j+2+b+",
609" + . + + . + + . + . + + + + . * + + + + + + + + + + > > ' ' * * > > * * > > ' > * > > * > > > * * # * * # # * # # / ~ g g y a ~ ~ ^ ~ { ~ } 5 6 5 6 k 6 5 j 6 5 6 a 5 } 5 } 5 5 6 6 6 0 p j j k 6 k j j k k p p p t t t j 5 p p t M B B M B B B K B t t t p t t u j j j 0 5 5 5 5 5 [ [ j 5 5 j j j p r ..p.V._+8+b+k+k+k+g+g+g+g+i+i+c+i+8+g+0+i+g+8+g+8+b+0+8+j+9+8+9+8+b+j+9+b+j+b+b+9+8+8+b+",
610"+ + + + . + + . + . + + + + + * + + > + > * * > * > > * * * * * ' / ' / / * * > * * ' * * * + * * * # * # # # # # / * ~ ~ ~ ~ ^ % ] ~ [ { } [ 5 6 5 5 : 6 5 6 5 0 } 6 6 5 [ 5 0 j 6 j j p p j p k k p 6 k k p p p B K t t t t B B M K B M t K M K t K B t t K t j u 5 k j } 5 } [ 0 j 5 5 6 : 6 j y p r M ..H.`.}+4+b+i+k+i+c+c+b+g+g+c+i+8+g+c+0+b+g+b+c+e+e+0+9+9+8+b+8+b+6+7+b+4+8+b+b+2+9+b+",
611" . . + + + + + + . + + + . + + + + # + + + + * > * ' + * > * * ' * ' ' ' ' > / ' > / > * * > + * * # > > * * * + * * * # * # # # ~ . & & % ) ) } { [ } 5 } 6 6 5 } 6 } } 5 5 0 } } 6 5 5 j j j p p p p 5 j k k p k p p p M K K K K B B M B t M K M M M K K K K K K K t t t k k j 5 0 [ 0 5 [ [ [ [ } 6 j k k j 6 p O 2.W.'+7+j+i+i+b+8+j+8+8+9+8+b+8+c+c+b+8+5+8+b+8+f+8+8+8+9+8+b+8+b+8+6+9+b+9+9+b+2+4+",
612" + + + + + . + . . + + . + + + > * + > * + ' > + * * ' > ' > ' ' ' ' ] _ ' ' / ' / * > ' ' ' ' ' * * * * + * * * * * # * * * # & . & # = { ~ } } [ [ 0 } } 6 6 } 6 5 } 6 6 5 6 5 6 6 j p p p p p k p p j k i k p B t B B S K M K K M M B M B K M G M K M K B M M M M t t t k j 6 0 } } } } 5 5 g [ [ j j k j 6 6 v O p.V.'+2+b+g+g+0+b+b+8+8+9+b+9+9+8+8+b+8+8+b+b+b+b+9+8+9+7+7+9+b+9+b+4+4+b+b+b+j+4+",
613". . + . + + + + + + + # + + * + + + + * + > * > ' ' ' ' ' _ _ ] _ _ _ _ ' _ ' _ ' ' ' ' ' ' ' * * * > > > + * + # # # ; $ . & & % = ) ) } ~ { 5 [ 5 5 } } } } 0 } 6 5 } 0 5 5 6 5 p u B t p p k j p p p p t B B B M M K M K M G G G M M .M M .S K S M M S M K B t t j j k 0 5 5 5 } } [ [ } [ 0 [ 5 0 5 5 5 6 v +.H. +4+4+b+b+b+8+9+8+j+8+9+8+8+8+9+j+9+c+c+6+8+7+6+b+4+c+b+7+7+b+7+b+j+3+2+4+b+b+",
614"+ + + + + . + . + + + + * * + > + ' > + * * * * ' ' _ ' ' _ _ 3 _ 3 _ ] 3 _ _ ' ' ' ' > _ ' ' ' ' ' ' ' > * + * + + + $ $ $ $ $ & ) { [ } } } : } } } 5 } 5 5 } 5 5 : 6 } 5 6 j k p t K K B p p k p p k k p K K B B G .K S .M K S S K .#. . .K . . .S S S O W G p t t t k 0 0 [ } [ [ { [ } [ } 5 } [ [ 5 [ 6 k O 2.F.~+|+b+b+j+8+9+8+9+8+9+8+9+8+6+8+8+9+8+6+9+b+7+8+6+8+b+9+7+b+2+b+6+b+2+2+2+b+",
615". . + + + + + . . + + + + # + + * * * > + > * * ' ' ' ] ' 3 3 _ d _ ] d d _ 3 _ _ _ 3 ] _ ' ' _ ' _ ' _ ' > ' ' + * + + % @ & $ % ) { [ ) [ : } } } } } } 6 } } 6 6 [ 0 0 5 j k k B p B K t t p r v p t p B t M B K K K S ...S . .S G . . .}. . . . . . .O S S G B p p t j k 6 0 0 ~ 0 } [ { } { } [ } } } [ 0 [ 5 k +.p.`.)+7+b+b+j+2+b+6+9+8+2+8+7+8+4+7+6+9+7+8+7+8+9+2+4+6+6+9+2+b+7+j+2+9+b+b+2+",
616". . + + . + + + + + . + # + + + + + # + + * > > ' ' ' ' _ _ 3 ] d _ d d 3 d 3 _ _ d ' 3 3 3 _ ] ' _ 3 ] _ ' ' > + > + # . & ; ; & = ) % ) { } } [ : : } [ [ 5 [ : : 6 } 6 6 } j 6 j p p t B K p K p p p p p B t K K G M K M .....+.+. .......}.}.}.}.}..... . . .+.O G B r p k p j j 6 [ 5 [ [ } } : : { { ~ } ~ } { } } } 6 r +.F. +_+6+b+8+9+j+6+7+8+7+8+7+b+4+9+6+9+7+8+4+b+8+9+9+2+b+8+2+3+b+7+2+2+4+b+4+",
617"+ . + + . + + + * + # * + * > + + * * > ' ' ' > 3 ] d d 3 d d d 3 d 3 d _ d d d 3 _ 3 3 3 3 _ _ ' _ ' _ ' > ' * + + % % $ % % & ) ) ~ ) } } } : : } } } 5 } 5 5 : g 6 6 5 j 6 p t B v B B B t p p k p p B t B K K K S M ...........+.....}.<.}.<.}.<.<.........S O G t p k k j p 6 [ 5 [ } } { } ~ { } { { ~ ) ) } [ } } ( r O 2.V.>+2+4+b+4+b+2+2+7+6+7+6+6+b+b+2+7+6+6+b+6+4+4+4+8+7+2+b+8+2+4+b+b+2+4+2+",
618"+ . . . + + + + + + + > > > + + > + ' > ' ' d _ _ d d d ] d 3 d d d d d d d d d d 3 3 d 3 3 3 3 3 _ ' ' > ; + . $ + % @ & ) = { } } } { : { { { } } } 5 6 g } 5 0 } k k k r p p B v v B B t K p B p p t B K K G M ... ...+.......<...<.<.<.n.2.<.<.+.<. .S S S O G y p k k 5 5 6 } } [ : { { } ~ { { { } } ~ ~ { { { ~ [ 5 r S p. +<+4+b+4+8+8+8+2+8+4+4+7+7+b+6+7+2+6+4+9+8+6+2+b+4+4+2+8+b+2+4+2+j+4+4+",
619" + + + + + + # * # + > > > + > > > ' ' ' 3 ' _ 3 d d d d f f f d d d d d d d f 3 d d d d d 3 3 _ ' ' ^ ; + ; $ $ @ & % & ) { = : ) { } } } { ( : : } 6 } 6 5 } 5 0 5 j k p p t p p k p p B t B B B t B p K B K K K S ........+.<.}.<.....<.<.<.2.+.2.+.....S +.S M G G r r k j 5 6 } ( ( { } ~ } ~ } { ~ ) ) ) } } ~ { } [ ~ } 5 M ..K.>+<+4+b+3+b+2+6+7+9+7+4+4+6+7+9+7+7+7+|+4+7+6+7+4+7+b+2+2+j+2+3+2+2+2+",
620"+ + + + + * + + # # # * + > * * * ' ' ' _ d d d ] d d d d f o o m f f d d d d m f m m d m d 3 _ / / * * $ ; % $ & = & ) { { : : ) [ } [ { 6 : } : } 5 5 0 j k k t t p B r r p v v p v p v B B M p B B B G S S ......}.....}.}.<.<.+.2.+.<.+.<.+.+.+.+.S G O B r r r k 6 6 } a { } { ~ { ~ { ) ~ { ~ ( = { ) ) ~ { { ~ } g : k S 2.W.>+1+b+3+4+2+4+4+b+4+4+2+4+4+7+6+4+b+7+2+7+6+7+4+7+2+6+2+2+7+b+2+e+4+",
621"+ + + + + + + + # # * * + + * > * ' > ' 3 3 ] d d d d m d m w m m m w m m m m m f m m d d m d _ / ' > ; % $ & $ % $ = & - { } ) { { } } } } } } } } 6 [ } } k 6 k j t t p B r r k k k p p k p t K M K B K G G S K ...}.+.<.....}.<.<...<.+.+.+...+.....+.O S B B M r B y j 5 } } { : { ~ ~ ~ { { = ) % ~ ) - ~ { { } ~ ) [ ~ { [ 0 t .p. +<+2+j+2+b+2+7+6+2+2+4+2+2+6+7+6+7+4+6+7+}+4+7+2+b+1+4+7+4+7+2+2+3+",
622" . + + + + # * * # + * * > ' ' ' _ _ _ d d d d d w m d m m m z z m w m m d m m m m m d 3 3 / / * # ; $ % $ & $ & & & = & = { ) : = ) : ) } } } { } } 6 5 0 0 k j p p k r r v i r v t t p B p B B K K B K B M K S ....}...<.}...}.2.2.}.+.}.....+.+.+...+.S O G M p B r B r 6 6 ( } ) { { ) [ ) ) ) = ) ) { ~ = ) = { ) ) ) [ [ ) } [ k M <.Q.-+^+3+7+4+4+1+6+4+b+6+4+4+4+7+4+7+7+2+2+2+4+2+7+4+2+3+a+2+4+2+2+4+",
623"+ + + # # > > ; + > # * + ' * * ' ' 3 _ d l d d z m m m z z z m m m z z m m o z z m w d _ _ ] ' # . $ & & & % & & = - = { - { { : } } } } } } 5 : 5 5 5 0 j j p r p k r i r v i p t p v p B B M M M M K .S S ..S ..}.}.2.<.}.}.}.2.<.2.....+.S +.2.+...S G O v v r r p k a { } { : ~ ~ ) % ] ) ) % = = & ) ) = ~ ~ ~ ) ) ) % ) ) [ } k +.n.@+]+}+4+2+3+4+2+}+}+2+4+4+2+4+7+2+2+6+4+6+a+4+4+2+7+|+4+2+3+4+2+3+",
624"+ + # . # * * # * > ' * ' _ _ 3 3 d d d m w m m d z z m z z z z z m z m o o m w d l / ] ' ; % $ @ $ % ) = ) & % $ ) = - { : { ) { ) } } } g } } : 6 k p p p p p k p k k k r p p p t t B B M S M S S M S S S .... .}.}.2.<.2.<.2.<.<.2...2.+.G S S ....+.+.B r r k p r k 6 a ( { = { = = ) & % ] ) ) ) & ~ & ~ ~ ~ ) % ) ) { ) ) ) ) } 6 B ..W.]+<+4+2+3+3+4+7+}+7+2+|+}+4+4+4+2+2+4+4+2+2+2+2+a+}+4+2+a+2+2+2+",
625"+ # * # * * > # * * * ' ' _ _ 3 d d d w m m m z z w z z z z m z D z z z z z w f l n / ^ > % % $ & ; ) % { ) ) % % ) & = = - { : { } } } } } } : 5 0 5 j t p k k k k k k k k p p B B M M B M G S S G .S ......+...}.}.<.}.2.<.<.2.<...+.....S +.G G +.S G O v r i k j a i a : { { ~ = { = & = & & & & & & & ~ & = = & ~ ) ~ ) { { ~ ~ ~ { r O p.W.{+2+4+2+4+<+2+2+}+}+4+4+2+3+2+7+7+2+|+4+2+|+4+4+3+3+2+2+2+4+3+",
626"+ + # # + # > > > ' ' _ _ 3 3 d f f f m w m z m z m z z w z z z D z z m w m l l ' ] > $ $ @ & % & % ) % [ ) [ ) % ~ & = { = { { } { : ) } 5 0 5 5 5 p p p p i k 5 j j k p k p p B B M K B .S +...S S S +...}.+.<.}.<.2.2.2.2.2.}.<.2.......S S S O +.G O v k | a a k : ( ( : { ~ = = = = ) & & & & & ) & $ % % % { & $ = { % ) ) ) ~ ~ } a B <.H.&+<+4+1+3+}+}+1+^+2+2+^+4+4+4+1+2+2+}+4+1+2+2+4+2+2+2+4+3+1+3+",
627"> > # * * * * ' ' _ _ d 3 f d o f f o w z z w z z m z z Z z z z z m w w f l ] ] ; ; $ @ $ & ) { ) } } [ } [ ) ) ) { ) } ) [ [ } : 6 5 5 6 p 5 p i p v k k 6 p 5 p p r B t t M G S G K S .S +.......+.+.}.....<.}.2.2.+.2.|.+.<...2.+.S G M G G v v i 6 6 6 a 6 } { } = ~ & ) & = & % $ $ & % % & $ @ ~ % % $ ) = ) ~ ~ % ) ) ~ ~ ~ } j S n. +{+]+3+}+1+}+^+4+2+2+2+}+1+2+|+^+2+2+2+3+2+4+2+}+4+2+1+1+2+1+",
628"* * + > ' ' ' 3 _ d d m f m f o o o x z m z m z z D z z z z z z z w l l _ ' ^ % & % @ % % @ = = = { ) [ [ } } [ ) ) = % [ } [ } j 6 6 6 5 j p k i i p k p 6 6 k p p p p B B M M S ..S S ....S +.....+.....+.....2.}.2.2...<.+.2.......+.G G B M B p i i | } } { : } } ) = { = & & & % % % & & & $ $ & ; % % ~ & & % & % ) ~ = ~ ) ) ~ ~ { g t .Q.{+{+3+^+1+2+<+^+|+2+1+|+^+2+2+}+}+1+}+2+3+1+2+1+2+1+1+1+^+3+",
629"+ + * * ' > d _ d d m z z z z z o z z z z z o z D X z z m z m w d l / ] ] ; & = @ = @ & % & = & = { = : [ } } 5 } [ { ) [ } } } } 6 j k k k p p p 6 i k k j 6 k k t p B p p M M S ..S +.+...+.+.....<.<.+...+...2...<.<.+.....+.+...2.+.O G G B B p 6 6 : } 5 } } ~ : { = { @ & & $ % @ @ % % ; $ & & ) $ $ % $ & % ; % $ & ~ & ~ ~ ) ~ ~ [ t -.w.Q.{+{+3+{+<+<+2+<+1+}+1+1+}+}+}+2+}+}+2+<+2+1+3+^+3+^+1+1+1+",
630"* * * * ' ' d d w m z E E E z z U U z U z z m z z X z w w w d l _ ] ' ] % ; @ = = @ = & ) - ~ { { { { ) 5 [ } } [ ) [ ) } [ 5 6 k p k k k k 6 i 6 i p j p p k p t t M t B G S S ......+.+.+.+.<.<...<.......+...+.<.+.+...+.+.+...+.G O B v v p p 6 6 5 0 5 } { & = = & $ & @ & $ $ $ & $ . $ $ ; @ @ & & @ & $ ~ ) $ % ~ ~ ) ~ ~ ~ ) [ [ [ 0 K m.K.]+<+4+3+^+<+^+<+^+_+}+1+1+2+1+2+1+}+}+}+2+2+1+2+3+<+1+]+2+",
631"* * ' ' _ 3 3 d m m Z E X X X z X D U z z z z z z z m f d d c ] ^ > ; % + $ & = - = & & & = ) ) { ) } } : } } } } ) } 5 : 5 j t t k r a i i 5 k 6 p p j t p B B B B M M M S ..<.<.+...<. . .<.}.<.<.<.......+.+.+.+.+.+.+.O G I G G v v i i 6 i : } } 5 : } = = & ) @ @ & . & + $ & & @ $ $ $ $ # & $ & & = & $ & ~ ~ $ % & ] % ) ) ) ) h c W f.T.W.{+]+]+3+1+1+_+2+<+1+^+^+^+^+1+1+1+}+]+^+1+3+]+<+3+]+2+]+",
632"' ' / _ 3 3 m d z m z E X E Z Z X D X X D X D Y w w w l ] / ] > $ % % & @ & @ $ @ = - = ) = - = = } { { [ : } } { } } : 6 : 5 k p p r k 6 k k 6 k k i k p p G G M B B M M .+.+...}.}...<.<.<.<.<.2.}.......+.S +.+.+...+.O O G v v v e i k 6 : : ( : 5 } : - = = $ $ $ . & . & + + + $ @ @ $ @ & . $ # & @ & @ & $ & ~ $ % % % ) ~ ~ ~ ) ~ 0 N -.q.@+$+{+1+{+{+2+<+_+<+1+3+3+1+^+<+_+2+4+3+^+1+<+3+<+1+1+<+3+",
633"/ _ f 3 f m z m f w z Z z Y Z Z Z D X Q D Z z z f d _ / / ; % & & $ @ & % & & & & = & { { } [ { } = } : : } } } } } } } } 6 6 6 p a 6 a 5 j k k i p B p p B B B M K M M .S ..+... .<.<...+...2.}.2.}...........O +.S G G G v v v v i k | : : ( : - : ) { = ~ = ) $ & . $ $ + % $ $ ; + $ ; ; $ $ & & ; $ $ # & $ & $ ~ % ~ $ & ~ ~ ~ 0 h T e.f.T.&+{+{+2+1+{+^+]+^+{+<+<+<+1+1+1+<+<+<+3+{+3+<+<+<+<+{+<+",
634"3 f f o m z z x o z z z z Z z Y Y Z E X X z w d l _ ] % $ $ & @ @ $ @ & % & % & & & ~ = - { } ) ) } { { ( : : : 5 5 } [ } } } 6 6 5 k k k k j k k r r B B p M G S G K G S .....+.<.+.<.+.+.<.+.+.}.+.}... .+.S S S S S O G v B v k k i 6 6 { - - { - = = ) = & & & $ & & @ & # + $ % $ $ # + ; + $ ; + ; % % $ ~ ; ; ; ; ; ] ~ ~ ~ ~ / g 0 T -.3.s.W.]+]+{+3+]+^+]+4+{+^+]+_+<+<+<+3+^+<+1+<+{+]+2+]+1+]+]+",
635"f f o z D z U x x D D D z Z z Z z X Z E Z w l / ; % ; $ & & & & & $ & = = & % % ) ) ) { } { } { } } { } [ a } 5 [ 5 5 5 5 : : } 0 6 6 6 6 5 k p p p B B B B G K S G S M ... .....+.+.<.+.+...2.+.<.+.+.<...+.+.S O S O G v p i p p p k 6 { - - = = = = = & % $ & . . . + $ $ $ & $ ; % $ $ % ; ; % $ > ; ~ ; ~ ] $ ^ ~ ~ ~ h g C T e.-.q.T.&+{+]+)+3+3+{+]+<+<+4+]+^+^+]+^+1+]+<+]+4+^+<+<+<+3+]+",
636"m m z z X D D E x D D X z Z z X z z z Y w d ^ ^ . & @ = = = & & = = = ) & = { ) { } } } } ) } } 5 [ 6 5 a 0 5 5 6 6 6 : } } : 6 6 j p k p B t M M M B G S S S S S .S ....+.+...+.+...+.+.+.+.+.+.+.S S O S G O G B p i k p i k 5 : } & & = & = @ & & $ @ $ . & & @ + + ; ; + ; > ; ; ] % $ $ $ ; ; ; ; ; ; ; # ; ; $ ^ ~ ^ ^ ^ ~ h C P ^.-.i.f.m.T.)+]+<+]+]+^+{+]+<+<+]+<+<+]+{+^+]+}+]+3+]+<+]+<+<+]+",
637"o z z z E Q E D E D D X X Z D Z z z Y w w l # . @ % & @ & @ - = = & % & = = { { { { } } } } } [ { } } k 6 k j 6 5 6 6 : } [ } } 5 5 6 5 k B p t M M M M S S .S S S S S +.+... .....+...+...I +.+.S S O O O G O G G B v k i 6 6 k k 6 : & & & @ & $ @ . @ . . . + @ + + + % + % ; ~ ) ] ] ] ; + ; ; ; ; ; $ # ~ ~ ] ; % $ ] ] ^ h A A T T ^.-.f.q.T.%+{+{+{+<+]+]+^+<+)+_+]+{+^+2+]+<+1+<+<+1+{+<+]+]+<+",
638"x x D U Q Q Q Q D D X X X Z z Z z z z w ] ^ $ . $ . @ @ @ = = = = % % = = ) { { : : { [ } } } [ : 5 5 6 k k 5 6 6 } 5 6 } } { } : 5 k p p B B B M K K . . . .S S S ..S ..+.+.+...S ..S .. .+.G I O O G O I B G B v e 6 6 6 6 | 6 : } { & & % & % $ $ $ $ . $ $ $ & + $ + % > % + ; # ^ ~ ] ; ~ $ > > % > ; $ ~ $ # ~ ^ ^ ~ ~ ^ h h c A ~.:.>.^.-.i.f.T.++$+]+{+<+{+]+]+<+]+1+<+]+]+1+]+{+]+]+]+]+3+{+]+]+]+",
639"U x U D D U Q Q E D E z Z z z X Z z w d / + @ @ . . @ @ & & = & ) ) ) } = } ) } : : : } : } : { } k a 6 6 a ( a 6 5 } } [ } 5 5 j p p B B B K B S S . ... . .S O S S +.+.+...+.+.S +.S S S +.G G v v p v v v i e | | : : : } : { { = & % @ & @ $ $ . $ . . + > > ^ ^ ~ ^ ; ^ ^ ; ; ; ; + ; $ $ ~ # ~ # ^ ] ] ] h c R ~.T -.^.^.^.-.h.q.T.&+{+]+{+]+]+_+<+)+<+]+<+3+)+1+]+3+{+<+<+{+3+]+]+]+",
640"z x &.D Q z X Q U X X D U X Z z R w l _ ^ + + + . & = = = { { } } } } } } : } 6 6 : 5 6 a 5 6 a a : : ( : } 0 5 } 0 [ 5 j k B B t B M G S . . ...+... .S S ..S +...+.+.+.+.S +.S S S G v v i i i p e i 6 | ( : 6 : { { - = ) & = @ % $ $ . @ . . $ . . $ . # + + + ; ; > ; ; ] ~ ~ ; ; > % $ $ ~ ; ; ~ ; ] ~ ] h h C A T T ^.-.-.>.^.-.-.q.T.%+]+]+]+]+]+{+]+]+<+]+<+]+]+<+<+<+]+]+]+]+]+]+]+]+",
641"x D x U x x Q Q E Q Q U D Z z z w h h # . $ + . . $ % = { { { { { } } } } : : 5 5 0 } } a 5 } a 6 5 : 6 [ } ( : 5 } 0 5 0 p k p M M M G G G +...+.<.<.........+.S +...+.+.+...S +.+.S G G v p i 6 6 i 6 i 6 ( ( - ( ( { ~ ( = = = @ @ = & @ @ $ . $ $ + + $ + $ # > + + + + > ^ ^ > > > ^ ^ # ; $ # $ $ ; % ; ^ ^ ] ^ g h A P T T ^.-.-.^.-.>.-.i.i.q.Q.&+{+{+{+]+]+)+{+]+)+]+<+<+]+]+]+]+{+]+<+]+]+]+]+",
642"Q Q x Q x x Q Q Q Q D x z w l h l ; $ . . @ @ & ) = ) ) { { : } } 0 5 5 0 5 6 6 } 5 a g a : 5 } 6 } } : : 6 5 5 j u p p M M M M M S S ..+.+.<.+.<.S ......+.S ....S S ..+.G O G G v v 6 p 6 | 6 : | ( = & { = { ( & ~ & @ & @ . & $ $ $ + . + + + $ + + # + . + $ $ $ # ; ] ] ] > ^ / ] ] ; $ ~ # ~ ; ] ^ ^ ^ h h C C R T :.>.V -.-.^.>.>.-.#.e.q.T.%+]+]+]+]+]+]+{+]+]+]+]+)+<+)+<+]+]+]+]+]+]+]+]+",
643"Q Q &.x Q x X X Q Q x z w d l ] $ # . $ . + @ . = = ) { { } : } } 0 5 6 6 5 6 : 6 6 } : : } } : } [ : : } 6 6 p p p t t B M G S S S .. .+.+.+.+.<...+.+.+.+.S +.S +.+.+...S O G p v 6 e 6 6 : : : : { - = = = - ~ & & & $ . . & . $ ; + + + ; + + # + ; $ $ + . . & # ; ] ] ; ] ] ] ^ ~ # # # ; ^ $ ^ ^ h h n V V T ^.T ^.-.^.>.-.e.-.>.^.e.i.q.&+$+]+{+{+]+]+>+]+]+{+{+]+]+]+]+]+]+{+]+]+]+]+&+",
644"Q Q x Q U x U Z U U x o l ^ # $ $ $ @ @ + . $ @ = ) { } { [ } 5 5 [ 5 k 6 6 6 a 5 a } a } 5 0 6 a : } a } j j p p t K K K M S K S +.S ..+.+.+.+.+.<.+.+.S +.S G S O S G G O I v v 6 i 6 | : : : { - { ) = = & = = & @ & & & $ @ $ $ $ $ % % + + + $ + # ; > # # $ + # . ] ; ] ] ] > > ] * ~ ~ ; ^ ; ^ ] h h C A T T >.T -.^.T -.-.>.-.-.-.-.-.e.f.q.T.$+%+{+$+{+]+@+)+@+]+]+]+]+]+<+]+&+]+{+]+&+]+]+",
645"Q Q &.x x w '.z U x w l _ * . . + + @ @ @ & ) ) ) ) } : } 6 j 5 6 k 6 a } { ( a } a : } 5 : 5 6 } k k p t B B K S K S S M G S +.+.+.+.+.+.+.+.+...+.S S G O O O G G O p e 6 i 6 : : } { - ( - @ & & = = & & . @ % . . + . + # $ $ . # . + > ^ ; ; # $ # + ; ] > ^ ; ; ; > ^ * # ; ; ] ] h c c R T ^.T W -.T >.-.-.^.-.-.-.-.e.>.-.e.i.T.%+$+]+]+{+]+]+<+]+]+>+]+@+]+]+]+]+$+]+%+]+]+&+",
646"Q U Q x '.w !.w Y x w l / $ + $ % @ $ % & & ) ) [ { ) : : : k k 6 6 5 6 5 6 6 : [ } 6 5 6 6 6 a 6 k p p t B M S . .S S S ..S ..+.+.+.+.+...+.+...S O G B v B v v B v i i : | 5 : : = ) & ~ = = & $ $ = = @ & . @ $ @ # $ . # . . # # + ; ; + ; ^ ^ ; ; $ . ; ; ] $ ^ ^ ; > > ^ ; ^ ^ ^ ^ h c R A P T T >.W -.T >.^.W -.-.^.-.-.-.^.^.i.f.q.%+%+$+]+]+]+&+@+<+]+<+]+]+]+]+]+]+]+{+%+%+%+]+",
647"U U w '.n V n V w w l / + # @ @ $ + $ % = = { { ~ ( } 5 6 6 6 6 5 5 5 } a 5 6 5 5 } 5 6 a 6 6 k t B B M M S S S ...S S S S +...I +.+.S +.S O S +.G G v p v s v p i 6 6 : : : } { { = = & . @ @ @ $ @ . & @ @ . . + @ $ + # @ . # # + ; ; > > ; > # # # # # # ^ # ; > > ] > ^ ; ] h h c A P T T W -.W ^.T -.T -.-.T -.>.^.-.-.e.-.e.e.i.T.&+%+%+&+]+]+]+]+&+&+]+@+]+%+]+%+]+%+{+{+%+%+",
648"U R V y -.W W y n n / # . + + . . + @ @ @ & $ % @ % = = = = { { : } 5 6 } : } [ 5 5 6 5 6 5 5 k 6 6 a 6 k p B M B M G S .....S . .S S S ..+.I O S G S O S G G B r e a e i i i 6 : } : ( { - - & & & $ $ % $ $ @ & . . $ & $ + . . $ . # . + . . + + > ; ] > ; > ; $ # $ ^ ; ^ # ; ; > ; > ] ^ c c C C R T W T W -.W V ^.T >.T -.>.-.>.>.^.>.>.-.e.i.q.N.&+&+{+%+]+$+$+]+]+]+]+]+]+]+:+$+]+]+/+%+%+]+",
649"n V r O s I O G W h ^ # # . . . . . % $ $ % $ % % = ~ ) & { = = } [ } } : } 5 j 5 k 6 k j 5 a k k r k k p B K M M G S S +.........S S S +.S G S O O G G G G G B k k : i 6 i 6 : : ( { = ~ { = & & $ @ & @ $ $ . + ; . $ . + . $ + + + + + > + > > ] ; ^ > # # ; ; > ; ; * > ] > c _ c A C A T P T T W W W W -.W -.-.-.^.^.>.>.1.>.6.-.>.^.h.f.q.T.*+]+]+$+]+]+$+&+]+@+]+&+]+&+/+:+&+]+%+/+%+",
650"r q 8.q 8.I I s r g ; @ . . . . + . @ @ @ & ~ % & = = ) = ) - ~ : { } { ( } } 5 5 j 6 k k k k p j p r p B B G M S S S O S S S ....+...O O O G G r v v B B B B v k 6 : : : : : : : ( { { { = = & $ $ $ $ % + + # . @ $ + $ @ . $ ; # + ; ; + + ; ; + $ ; > ; ^ > # * ; > > > ; ; > ] ] c c w A T W W T -.T >.W -.T ^.V W -.W -.W -.>.>.>.^.^.e.^.e.h.q.%+%+%+%+%+%+]+]+&+]+&+]+&+]+$+&+&+&+]+%+%+%+",
651"s s H H H H H I v : } . . . + . @ & = ~ % ~ = = & = & = & = ) { - ( { : 6 6 k 6 6 k j k p j B p t t B M .S S S S G +...+.....S S S S M G B B i v i v i i k 6 ( { ( { ( ( : { { = = $ & = @ & ; $ $ # + + $ + + ; $ + + > ; + + + ; ; > ; # > > ] > ^ ; ; > ; ; ; ; > ] 3 c l A A P A T W P T P W T T W T -.-.V -.-.-.-.-.-.-.>.-.-.e.-.i.q.q.%+]+]+%+]+&+&+]+&+]+@+]+&+]+]+]+%+%+%+%+%+",
652"H H H J 8.J F F s : { $ + . + + . . . @ = = ) ) = & & = = = = & ) = { { } 5 a 6 6 6 p t p B B B G M G G S .S S S .G S G S ......S S G M B r p i i i i i i a 5 } { { ) = { - = = & = $ $ & $ . + + ; + + + & $ @ . > > + ; > ; # ; > > + + + # ; ; ; > > ^ / + ; > > > > ; ] ] c A c C A P P T T P T T W W >.W T T -.T -.^.^.^.-.-.-.e.^.e.0.h.6.q.q.N.*+$+%+]+%+]+%+%+&+%+]+%+%+%+%+]+]+%+%+X.",
653"H J J L L J J q s i { & . . . . . + + % & & ~ = = ~ = ~ = = = { = = = ( ( : : a a p j B t K t M B G M S G S S S S G G G +.S S S S S O G G M r r 6 i 6 6 e ( 6 6 : ~ { - { = & & = = & & & . $ @ % . ; + + + @ . @ # ; + ; ; ; ^ # $ > ; + + > # / # ^ > ^ > # ; > > ; ; > ] ] ] l h C R T C A C W T T W -.W W -.T ^.-.T -.P W >.-.^.>.^.-.-.-.^.e.e.i.X.T.%+%+/+%+$+%+]+&+]+&+%+]+%+%+%+%+%+%+%+X.",
654"J L L J L J J F s i { = & . . + @ @ & & & ) & & = = ~ = = = ~ = = = ( : } : 6 p t K M M M M M S G .S I S +.S S S G G G S S S G G r r B v r 6 6 a ( : : { } : ~ { = { - = @ @ @ & @ & $ $ $ + + + . $ + + + $ > > > + ; ] ; ] ; ; . ^ ; # ^ ; ; ; ^ # $ + > > > ] _ l c c C C A A C W y W W T T T T T W W T -.^.-.>.-.T -.^.-.>.e.e.e.^.^.e.i.q.N.%+&+%+%+{+*+@+%+%+]+%+&+]+%+%+%+%+%+X.X.",
655"J L L L J J J q F i : { & @ . + + . $ @ % % & & & = ~ . = = = - ~ { = { { 6 6 6 p M M M M M M G S O S S G +.G +.+.G S G M G G G G B r v v a k a a ( : : : : : { { ~ { & & = & $ . $ $ . # + + ; + + . . . + ; + > > % ; ; > > ] ^ ^ > > . ; ] # > > > $ # # # # > ] ] c h C C h A C C y C T y W W T T W T T >.W W W >.T >.-.>.-.>.^.>.^.5.0.5.0.e.i.T.T.%+&+%+%+&+%+@+&+%+%+%+%+%+%+%+%+X.X.x.",
656"L L L L L J J F F e i : = & @ @ . . + . . @ @ $ % $ & = = ~ = = . - & & ~ { { 6 6 k B M M M G S G G S S S .G S O G S O S G M G S G O B r i e r k | : ( ( { = = = - - & = @ @ & @ $ $ . . @ # + + + + . $ + ; ; + + ] > > ; ^ ; ^ ^ ^ ; > # # ] ; ; # ; $ . . # > > / h l l l A C C A n y y T C T y W V T >.W >.T -.W -.W ^.^.>.^.-.-.e.^.5.e.0.e.i.i.X.T.%+%+%+&+]+%+%+%+&+%+@+%+%+%+%+%+X.X.x.",
657"L L L J L J H H F s e ( - @ . . $ @ $ & & & & & & & { { ) ~ & & = = : 6 6 p B G S S M M S S S G G K G G S +.S S G G G G G v p p a i 6 6 | 6 ( ( - = = = = = - = & $ . . $ $ . + + % ; + + + + $ + + $ > > > ; ^ ; / ^ ^ # # ; ; $ ; > * ; # * # # # # ] d c h c C h C c C V y y y u W V W W W W T T -.W -.-.V >.-.>.>.0.>.-.e.^.0.5.e.u.u.N.X.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+X.x.x.",
658"L L L L J L J H q q e e , - @ @ @ + . & $ # = = = ~ & $ ) ~ ) ~ = = ~ { } k j B G S S G G G G G G G G G G G M G G S G G B v v v i k 6 | < ( < ( = ) = = = @ = & = . = & $ . $ + $ $ + + + $ + + + ; + ; + + + + ; ; ] / > > ^ ^ ^ ] ^ / > > ; # ; * > ; # * * * * ; ^ h h n y g C u C y y V V C V V W V T W -.W T W V -.^.T -.#.>.1.~.e.^.e.e.i.h.e.u.q.X.T.*+%+&+%+%+%+%+%+%+%+%+%+X.X.X.h.x.z.",
659"L L L J L J H H H q q 7 4 , - . . . @ . + . & # ~ { = ~ & & & { = } { { { = = { 6 k t M S S O S S M G M .G B B B B M G G G v B r i a k a 6 : } - - - - = = ~ = ~ & @ @ @ @ . . @ $ $ . . . . + + + + + $ + ; ; ; + > > $ ; ; ] > ] * ^ ; ; > ^ ^ ; # ; > ; > + # * * ' * * # / ^ h / g n C h C y C C y y y T y V W W P T W -.^.-.>.>.>.>.^.^.>.>.0.e.e.e.6.0.i.h.i.N.X.%+%+%+%+%+%+%+%+%+%+%+X.@+@+X.x.x.a.",
660"L L L L L L J J H H q b 1 ! , - @ @ . @ . & & % [ ~ ~ ~ & & { { ) { ~ ~ = { : k B B G G S O G G G K M M K M G B B B B B v p p e i 6 | 6 ( : { = = = = @ = = @ . # @ . . $ @ $ @ $ + ; > + + + + ; > > ; ; + * # + + ; ^ ] # # ^ ^ > > ] ; > + # + ; * # > * ^ * / # * * ^ g g g h y n C C A V C W C T T T T -.P T T T V ^.W -.^.>.^.^.e.^.^.e.u.e.x.x.h.X.N.X.X.%+%+%+%+%+%+%+X.X.%+X.X.X.x.x.z.'.",
661"L L L L L L J J L q H q b ! ! , @ @ @ . @ ) [ c 0 [ ) ~ & ) } } } ( { { = 5 p B M S G S O S G .M K G K B B B B B p v p i 6 6 i : : : : { { = = = & # @ # . @ @ & @ @ @ $ . + + + + + ; + + + + + * ^ ] ^ + $ + ; ; ; ] # ~ ^ $ # ; # ^ ; > # * > * * / * / / ' ' * ' / * / / / n C h C C A C y y C T T T T W T -.W -.-.>.>.>.>.-.^.^.^.e.e.e.0.e.x.x.i.x.u.X.N.%+X.%+X.%+X.%+%+%+%+%+X.@+x.x.z.z.c.",
662"L L L L L L L L J J 9 q 9 1 ! , - @ . @ . @ & } 0 0 6 { = = ) } 5 5 : { { ( 6 p B S G G S G G G S M G K B K B B v i i i 6 6 | : ( : { : - ~ = { & & & % ) & . # . # # # . $ @ . + $ + > + ; > ; ; ; > > ] > # $ + + > + ^ ; ^ ~ ; ; # # * ^ ; # / > / * / * * _ _ ' ' ' / * / / h ^ n h C C C y y W y C T W T T T T W W -.W ^.>.>.>.>.^.-.e.>.e.e.i.i.h.u.u.u.X.X.T.X.%+%+%+X.%+X.X.X.X.X.x.x.g.z.D.c.",
663"L L L L L J L L L L J J q b ! ! , . @ . - { 6 6 5 } ~ ) { 6 } 5 0 g ~ { 6 p G M G K M G G G G B B B B B B p e v k k k : : : : { - & ) = = & ~ & ) ) % ; $ $ . + $ # . + + % % > + + ; % ; ] ^ > + ; $ $ > ; * ^ # # ^ ; ; ; ^ * * * * > / / / / ' ' 3 _ / / / * / / ^ h c l n y y C C C u C A W V W W -.T T >.W ^.>.>.-.^.>.e.e.e.i.h.i.u.i.x.i.N.N.X.%+X.T.X.%+X.X.%+X.X.X.x.x.'.D.c.C.",
664"L L L L L L L L J J 9 J 9 q 9 2 , , @ @ . . @ = : : a : { & ) { 6 j t 0 0 5 ( 6 i B G G G B M B B B B O B B B v i i k 6 6 : { { & { ) ) = & = = & & % ) ) [ ] ; ; + + . . . . @ . + > > > > ] % > + ; > ; $ ~ * ; # + $ > > ; > ^ # * / # ; > > * / / ' ' _ _ _ 3 _ d 3 _ / / / ' / ' / c h h C C C T C T W V C V T T V ^.^.>.T ^.>.>.>.-.e.>.e.6.e.6.h.h.u.h.x.X.X.X.X.%+X.@+X.%+X.X.X.X.x.z.g.D.z.{.y.",
665"L L L L L L L L L L J L J 9 9 2 ! - - @ @ - : : { = { = { 5 j t t t 5 5 6 i v B B B B B B v v v v p v k i k 6 6 6 : { { { = & & @ @ & & & = ~ & ) ] [ ) ) ; $ + . . & & . $ # + > % + ] % > > + + > ; ; ; / ; * > > ; $ ; ; ^ # # ; ; ^ * > > / * / ' _ _ _ 3 ] d _ _ 3 3 3 3 _ _ ] / ^ l h C A C C C V C T T T T -.T V >.T ^.>.^.0.^.e.^.e.e.i.h.u.u.x.q.u.i.i.N.N.X.X.X.X.X.%+X.X.X.x.x.U.'.D.&.y.c.",
666"L L L L L L L J J J J q q J 9 q 2 , - @ @ . . . @ - - { = = { : a k B t t j k 6 6 i k v B v v v i p i i i i i 6 6 6 : : : { = = = % % $ @ @ @ @ @ & & { [ h ) ) % + + + + . + ; + > + ; ; % > % + % + ; # $ ^ ; ; # > ; ; ^ ; $ / ^ # # * / / * / * * / / _ _ _ 3 3 3 d _ _ _ _ _ 3 3 _ ^ l h h C C C V V y V P R T V ^.V ^.>.-.^.-.-.^.i.^.e.6.i.i.e.u.u.x.u.u.X.X.X.X.%+X.X.X.X.X.X.x.x.g.z.'.D.c.y.c.",
667"L L L L L L L L L J L J J q J 9 9 ! , - @ @ @ . - @ - & & ) { i v r K M t j 6 6 6 6 i i i i 6 p 6 i i i | i : : : : : - = = = & & . @ @ @ @ = = ) [ ~ ) . + $ # + ; + ; % ; ; # ; ] ; > + ; $ ; # ~ # * / ; ; > ; ; # # ; # * / * * * / / / / / _ _ _ 3 _ ' 3 ] d 3 3 f _ _ _ _ _ / / l h C C C y V T T ^.T T V T ^.V ^.-.-.e.>.e.e.6.h.h.h.u.u.h.x.X.i.u.u.X.X.X.X.X.X.X.X.x.x.g.z.z.c.D.&.y.7.",
668"L L L L L L L J L L J J H J 9 9 9 2 ! , - . . . . @ @ @ @ & = : 6 p B M M K j 5 6 : : i | i i 6 6 5 6 | 6 : | : { : - = - = @ & ; $ % . . . @ . . @ @ % ] ~ & + + ; + + . + ; > > % ; $ ; ; ; ; ; > + . $ ; # ^ ; * / # # > > / * / * # * ' / ' _ _ ' / _ _ _ 3 3 3 _ d 3 3 d 3 d 3 _ l _ _ _ / l l l C C C C R A T T T ^.W V ^.^.^.-.6.6.i.e.6.x.e.e.u.u.i.x.x.N.u.N.X.X.X.X.X.X.X.x.x.U.z.&.c.c.c.c.c.c.",
669"J J L L J L L J J L L J L J J J 9 b ! , - @ @ . . @ . @ @ = { a r v B M M t p 6 : : : | 6 6 i 6 6 6 | | : { - - = & = . @ @ $ % . & @ $ @ @ $ . = & $ $ + + + # + ; % ; $ + ; . ; ; > > > + ; # # # ; ; ^ > ; / # ^ # ; / * / / ' ' _ ' _ _ _ _ _ _ 3 ' d 3 _ _ _ _ 3 3 _ 3 _ 3 h d _ 3 / ] l n n C V A T :.T V -.V -.^.^.-.0.-.e.e.h.h.h.x.u.e.i.x.u.N.x.Y.N.u.X.X.X.X.X.x.x.g.z.z.c.B.c.D.y.y.7.",
670"J J L L L L L L L J L J 9 J H 9 L 1 b ! , - . @ . @ . @ @ = - < e v G B G t p 5 } - = : : 6 6 | 6 : : - - { = = = & = = # & . . . . . . . . . @ @ @ . @ + . + > ; ; $ . $ # ; ; ; ; ; # ; # # # # # ^ ^ ; ; # # # / # / > / / / _ _ 3 3 _ _ f 3 3 3 3 3 _ l 3 _ d d l _ 3 3 3 d _ d _ ] l l n C C V R T R V V -.V ^.^.>.e.e.e.e.6.6.e.x.x.u.u.i.u.u.u.u.Y.N.X.X.x.x.x.x.x.z.z.z.&.C.c.c.c.c.A.",
671"H H J L J L L J L L L L J L L q J q b 1 ! , @ . . . - - < i i B G M p p : } ) - - : : 6 | : : = { = = = & = . @ @ @ @ . $ @ @ @ @ $ . . . # . + + ; ; + ; $ + + ; $ # $ ; ; > ; # . # ; ^ # ^ ~ $ * > / # / / > / ' / / _ 3 3 3 3 3 f f _ 3 f d d 3 d d 3 3 3 _ f l 3 _ _ _ _ _ d _ _ / h l C n C T V V -.V ^.^.^.6.^.>.0.0.i.e.u.e.e.x.x.u.u.u.u.X.u.X.X.X.x.Y.x.g.z.z.c.D.B.c.B.c.C.7.C.",
672"J J J J L L L L L L L J J J J H 9 J 9 9 1 , = @ . . . @ - - | i i v p i k } { = - = - { : : ( : = = = & % & . $ . $ + + . + + # . . . # + # + # + $ . . # $ # # > # # ~ > ; * > > > > ^ ; ^ ; # ^ * ' ' _ _ _ _ _ 3 3 d f f 3 f f f d d m d f f 3 f f f 3 _ 3 3 3 3 d 3 3 _ d _ ] l h n V V V V -.-.V ^.^.^.6.e.e.0.x.h.u.u.e.x.x.u.u.u.u.Y.x.X.x.X.x.U.z.z.z.c.c.c.c.D.c.B.B.C.C.",
673"L J J L J L J L J L L L L L L L J J q q b | , - @ @ . . @ . - < < i e i i 6 : { ) = = - { - { - = = = = & $ + + $ . $ % . . . + + + + # . + . . + + + + + # # . $ + ; ; ; ~ # * ; / $ $ / > ^ ' ^ # / ' ' / ' _ _ _ 3 d d d d d d m m d f f d m f f f f f 3 f 3 f f f l _ l _ 3 3 d _ _ l / l n n C V V V V ^.^.^.^.6.6.0.6.e.e.6.x.x.e.u.x.u.Y.u.u.x.x.x.U.U.g.z.z.D.B.B.c.B.c.B.c.C.C.C.",
674"J J J J L L L L L J L J L 9 L H q H J 9 q 7 , - @ @ . . . . @ - - , | | 6 : : : = & ) % & & - = = = = = & @ & @ . . + . + + + . . + + + > + + + $ ; # # > > + > ~ ^ # ; * # ~ # > ^ > / * * * / / _ _ d _ d d d d d m d m d d f m m d m m m f f f f f f 3 f f f _ f l 3 _ d _ _ / l l n n C V V V V ^.-.e.^.0.0.6.x.6.e.e.x.x.u.u.u.u.u.N.Y.x.Y.g.z.z.z.B.c.B.B.c.C.B.B.B.B.B.B.",
675"J J J J L L L L L L L L L J L L L J H H q q e , - . @ @ . @ - - ( < ( 6 } { { & % @ @ & @ & & & & @ @ $ . . $ + + + + . + # + + + # + + ; ; + + # # + + $ ; ; ^ # / / ~ ^ * # ] ' * ; * / / _ _ _ d _ d d d m d m m m m m d d m m f m f m m m f f f f 3 f _ f f 3 f _ 3 _ f 3 3 / / l h n n V W W ^.^.^.0.5.0.0.h.e.x.x.u.0.x.x.x.x.x.x.x.x.U.z.z.z.z.B.B.B.B.B.B.c.B.c.C.C.B.",
676"L J L J L L L L L L L L L L L J J H J q q q q | - = @ . @ @ . = - - , - { { ) = = % & = @ & @ @ & . . . . + + + + + + + + + + + . . + + + # + + + # # ; ; + # / ; ; ; # * # ^ # / > ' ' ' ' ' / _ _ _ d d d d d m d m z z m z m d m m m m m m m f o f f f f f f f 3 f f l 3 d 3 3 3 _ _ _ l l n n n V V W -.^.0.0.0.0.e.0.1.u.u.6.h.x.x.x.x.g.g.z.g.B.B.c.B.B.B.c.B.B.B.B.B.c.B.B.",
677"L L L L J L L L L L J L L L L L L L J J H q q e | : = @ + @ . @ @ - - { = = = = @ @ . . @ . @ . . + + + + + + + + + + . . . . # + ; + + > . $ $ ; + # # ; > > ; / # ] ] ^ # ^ * > * / / ' / / _ _ 3 l 3 d f m m f o m m w z m z z m m m m m o o o o o o o f f f f f f 3 f f f f f f f d 3 3 _ l n n y y V ^.V ^.e.6.u.0.u.e.x.6.x.x.9.U.g.g.g.x.a.z.B.c.C.B.B.B.B.B.c.B.B.B.L.C.B.",
678"L L J L L L L L L L L L L L J L J J H H H q F q v : : - = + . @ = - = { = & & . @ . & + # . + + + + + + + + + + + . + . + + + ; > + + $ . $ # ; > ; ; ] ; ^ # > > / ; / * ^ ' ' ' _ _ _ 3 _ 3 l f d m m m m w o z z z z D z m z o o m m o o o m m m m f o f f o f f f l f f 3 _ l l 3 l _ n n n n V C V V ^.^.6.6.6.6.6.9.9.x.g.9.g.z.z.z.z.a.c.c.B.c.z.B.c.B.B.B.c.B.B.B.B.",
679"L L L L J L L L L L L L J L L J L L J J J H H q F s i : = @ + . . $ @ & & @ & = % @ $ @ + + . + + + + + + . + . . # . # # + + + > + + ; # # ; * ; ; ; > > > ] $ / ^ > > ' * * ' ' _ _ _ 3 f f f d d d f m m z z x x w z D D z D D o o f o m m m o o m m o o f o o m m f o o f o f f f f l f l / / n n n y n n V V -.^.6.9.9.9.[.g.g.z.z.'.z.'.z.B.c.C.c.z.c.c.B.c.B.B.B.C.B.R.z.",
680"L L L L L L L L L L L L L J L L L L L J J H H H F q e i { = @ . . @ & & & % & & % @ @ . . . . + + + + + + + + . # + + . + # + + $ $ + + + > + + # ; > > > ] ; ^ * ^ ; # # * * / / / ' _ 3 3 _ 3 3 o m m m w f z m m o m x w m z z z z z z x z x m z z m x o m f o m o f o z o o o o o o m f f f f f f f / _ l n n n V n V V !.6.!.(.(.a.a.a.a.B.c.z.z.c.B.c.C.B.B.B.B.B.B.B.B.c.B.R.B.",
681"L J L L L L L L L L L L L L L L J L J J J J H H F F F s 6 { & . @ @ & @ $ $ + + + + + + + + + . + . + + + + + + # # ; + $ + > ; ; ; > ; ; ; ^ # # > ^ / ' > / / / ' _ _ _ 3 3 f m d m m w m z z w x z o m x o m z z z D x D D x x m D z m z o x m m x x o o w o o o x o o o o f f f f f f f l l n o l n !.w R !.!.,.,.a.a.a.c.c.c.B.c.B.B.B.c.B.c.B.c.B.B.a.B.z.B.z.z.",
682"L L J J L L L L L L L L L L J L J L L J J J J H _.H F I v 6 = @ + + . $ & @ & & $ $ + + + + + + + + + + + + . + . . . . . + + + # # + + ; ; > ; ; ^ ^ * / # / ^ * > + ; / ' ' ' _ _ _ f 3 f f f f o o z z w z x x w o w x x x z z m z z z z D D z m D z z z D m D D x x x o x x w z z o x o w o o f f f l f l f f w o o w U U Y ,./.=.c.c.c.B.B.a.L.B.L.B.R.B.B.B.B.B.B.B.R.B.B.B.B.B.",
683"L L L J L L L L 9 L L L J L L J J J J J J J J H H H F I s p { & . . + + @ ; @ & + . + + . . . * + + + + + + + + + + + + + + + + + + > + ; ; $ + ; ; # $ ^ ; $ ^ # # # * * / ' ' ' _ 3 3 d f f f f f o o o o z z o w x x x x z x o x m D m D m D z z z z z D x x x x m z x o x x z z x z x w x o x o x o o f f f f f o w w x U w Y U *.].c.].a.a.c.R.c.B.a.R.L.B.B.C.L.C.L.B.B.R.R.B.B.B.B.",
684"L L L L L L L L L L L L L J L J L J L J L J J J j.J _.F F e : % + + $ $ @ + + + + + + + + + + + + + + + + + > + > + > > + ; ; * # ; > > > ^ # ~ ^ # ; * / / * ' / _ _ _ _ 3 f f m m z o o o m x x x x x w x x o x z x x x o z m z z E D D z D z E D E D D D D D x x x D D D D z U x w z z z o x o o f o w z z U Y U X X %.*.].].c.c.c.C.a.B.R.B.c.R.c.R.B.C.L.L.B.R.R.R.B.B.B.B.",
685"L L L L L 9 L L L L 9 L L L L L L J L j.L J L L J J H H F s 6 ) % + + # @ & $ . # + + . + + + . + + + + + + + + + + + + + + + + + # + ; > * ; ; ^ ; ; ^ ~ / # # / * # * * / / _ ' _ 3 f f o o o m o z o x x x x o x x x w x o o x o x x x o D x D z z z x o D x D x Q D D D D U U z x E D z D U U x x U z z z w x o z z z z U E X U *.*.&.*.c.c.c.c.c.c.R.].R.R.R.B.R.c.L.c.R.R.R.R.R.R.O.O.R.",
686"L L L L L L L L L L L L L J L L L J J L L j.L J J J J _.F q e : @ + + + . . @ . + + + + . . + + + . + + + + + . + ; + . + > ; ; # > ; > > > / # # ^ # # / * * / _ _ _ _ _ 3 3 f f o o o z m z z D o x o x o x x x o o x x x E o o o x o D z z z x x x x D D x E E E D D D D E E X D X z U z E D z z z z z U U D U X X ;.X ;.;.;.c.c.c.c.c.B.B.c.R.c.L.].L.B.L.c.R.L.c.R.R.R.R.R.L.R.",
687"L L 9 L L L L L L L J L L J J L L L j.L J J J J J J J H F q e : = ; + + . . . . . + + + + . + + + + + + # . . # + ; + > ; # $ + + > ] > ] ] ^ ^ # ^ * * * / * / / * / _ _ f f 3 f o o o o z o o o o o x o x o o x x x x x o x o x x D x x x z D D x x x x x x E Q Q D X X X X Q X D X Q Q D U Q D X D X X D D D U X X X X %.;.;.7.;.c.c.c.c.c.].R.a.R.a.L.R.c.L.R.c.R.R.R.a.R.R.R.L.R.O.",
688"L L L L J L L L 9 L J L J L J L L J L J L j.L J j.J J H H q 1 e = % + . + + + . . . # + + + + + + + + . . + + + + + + + + + + + ; ; $ # ^ # ] > > > # ^ * * > * * / / * _ _ f _ _ _ f f f o m o o o o o x o x o o x x x x o x x x x E x x o o o x z z D x x x x x x Q Q E Q D X X Z z Q X Q X E X X D U U E X D X U D X X X X ;.;.;.%.;.c.c.c.c.c.c.C.c.R.c.L.a.L.R.R.a.L.R.c.R.R.R.R.R.R.R.R.R.",
689"L J L L L L L L L L J L L J L J L j.L J L L J L J H J H L q b | - @ + + . + . . . + + + + . + + + + . + + + + + + + * # + > ; ; > > > ~ # # ^ ; ] ^ ^ ^ # * / * * / * _ _ _ _ f f f f f f o f o o o o x o x x x o o o x x x x x x D x x x x x x x D D x D x x x x x x x D D E X D z Z X X X U X X Q Z X X Z X X X X X X E %.;.%.%.%.;.c.%.c.7.c.c.B.c.c.a.R.L.a.L.].L.R.R.R.R.a.R.R.L.R.R.R.R.R.R."};
diff --git a/rbutil/wx_pch.h b/rbutil/wx_pch.h
deleted file mode 100644
index c4da9a20ef..0000000000
--- a/rbutil/wx_pch.h
+++ /dev/null
@@ -1,43 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * Module: rbutil
9 * File: wx_pch.h
10 *
11 * Copyright (C) 2005 wxWidgets team
12 *
13 * All files in this archive are subject to the GNU General Public License.
14 * See the file COPYING in the source tree root for full license agreement.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#ifndef WX_PCH_H_INCLUDED
22#define WX_PCH_H_INCLUDED
23
24#if ( defined(USE_PCH) && !defined(WX_PRECOMP) )
25 #define WX_PRECOMP
26#endif // USE_PCH
27
28// basic wxWidgets headers
29#include <wx/wxprec.h>
30
31#ifdef __BORLANDC__
32 #pragma hdrstop
33#endif
34
35#ifndef WX_PRECOMP
36 #include <wx/wx.h>
37#endif
38
39#ifdef USE_PCH
40 // put here all your rarely-changing header files
41#endif // USE_PCH
42
43#endif // WX_PCH_H_INCLUDED