]> Shamusworld >> Repos - apple2/commitdiff
Moved stuff into trunk (part 2)...
authorShamus Hammons <jlhamm@acm.org>
Tue, 29 May 2007 02:37:11 +0000 (02:37 +0000)
committerShamus Hammons <jlhamm@acm.org>
Tue, 29 May 2007 02:37:11 +0000 (02:37 +0000)
58 files changed:
Makefile [new file with mode: 0755]
ROMs/apple2.rom [new file with mode: 0755]
ROMs/apple2c.rom [new file with mode: 0755]
ROMs/apple2e.rom [new file with mode: 0755]
apple2.cfg [new file with mode: 0755]
docs/gpl.txt [new file with mode: 0755]
res/apple2.ico [new file with mode: 0755]
res/apple2.rc [new file with mode: 0755]
src/apple2.cpp [new file with mode: 0755]
src/apple2.h [new file with mode: 0755]
src/applevideo.cpp [new file with mode: 0755]
src/applevideo.h [new file with mode: 0755]
src/ay8910.cpp [new file with mode: 0755]
src/ay8910.h [new file with mode: 0755]
src/charset.h [new file with mode: 0755]
src/dis65c02.cpp [new file with mode: 0755]
src/dis65c02.h [new file with mode: 0755]
src/fd-img-128x128.c [new file with mode: 0755]
src/firmware.h [new file with mode: 0755]
src/floppy.cpp [new file with mode: 0755]
src/floppy.h [new file with mode: 0755]
src/font14pt.h [new file with mode: 0755]
src/gui/button.cpp [new file with mode: 0755]
src/gui/button.h [new file with mode: 0755]
src/gui/draggablewindow.cpp [new file with mode: 0755]
src/gui/draggablewindow.h [new file with mode: 0755]
src/gui/element.cpp [new file with mode: 0755]
src/gui/element.h [new file with mode: 0755]
src/gui/font1.h [new file with mode: 0755]
src/gui/font14pt.h [new file with mode: 0755]
src/gui/gui.cpp [new file with mode: 0755]
src/gui/gui.h [new file with mode: 0755]
src/gui/guimisc.cpp [new file with mode: 0755]
src/gui/guimisc.h [new file with mode: 0755]
src/gui/menu.cpp [new file with mode: 0755]
src/gui/menu.h [new file with mode: 0755]
src/gui/textedit.cpp [new file with mode: 0755]
src/gui/textedit.h [new file with mode: 0755]
src/gui/window.cpp [new file with mode: 0755]
src/gui/window.h [new file with mode: 0755]
src/icon.h [new file with mode: 0755]
src/log.cpp [new file with mode: 0755]
src/log.h [new file with mode: 0755]
src/sdlemu_config.cpp [new file with mode: 0755]
src/sdlemu_config.h [new file with mode: 0755]
src/sdlemu_opengl.c [new file with mode: 0755]
src/sdlemu_opengl.h [new file with mode: 0755]
src/settings.cpp [new file with mode: 0755]
src/settings.h [new file with mode: 0755]
src/sound.cpp [new file with mode: 0755]
src/sound.h [new file with mode: 0755]
src/timing.cpp [new file with mode: 0755]
src/timing.h [new file with mode: 0755]
src/types.h [new file with mode: 0755]
src/v65c02.cpp [new file with mode: 0755]
src/v65c02.h [new file with mode: 0755]
src/video.cpp [new file with mode: 0755]
src/video.h [new file with mode: 0755]

diff --git a/Makefile b/Makefile
new file mode 100755 (executable)
index 0000000..4e1abb8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,165 @@
+#\r
+# Unified Makefile for Apple 2 SDL\r
+#\r
+# by James L. Hammons\r
+# (C) 2005 Underground Software\r
+# This software is licensed under the GPL v2\r
+#\r
+\r
+# Figure out which system we're compiling for, and set the appropriate variables\r
+\r
+ifeq "$(OSTYPE)" "msys"                                                        # Win32\r
+\r
+SYSTYPE    = __GCCWIN32__\r
+EXESUFFIX  = .exe\r
+GLLIB      = -lopengl32\r
+ICON       = obj/icon.o\r
+SDLLIBTYPE = --libs\r
+MSG        = Win32 on MinGW\r
+\r
+else\r
+#ifeq "$(OSTYPE)" "darwin"\r
+ifeq "darwin" "$(findstring darwin,$(OSTYPE))" # Should catch both 'darwin' and 'darwin7.0'\r
+\r
+SYSTYPE    = __GCCUNIX__ -D_OSX_\r
+EXESUFFIX  =\r
+GLLIB      =\r
+ICON       =\r
+SDLLIBTYPE = --static-libs\r
+MSG        = Mac OS X\r
+\r
+else                                                                                   # *nix\r
+\r
+SYSTYPE    = __GCCUNIX__\r
+EXESUFFIX  =\r
+GLLIB      = -lGL\r
+ICON       =\r
+SDLLIBTYPE = --libs\r
+MSG        = generic Unix/Linux\r
+\r
+endif\r
+endif\r
+\r
+CC         = gcc\r
+LD         = gcc\r
+TARGET     = apple2\r
+\r
+# Note that we use optimization level 2 instead of 3--3 doesn't seem to gain much over 2\r
+#CFLAGS   = -MMD -Wall -Wno-switch -O2 -D$(SYSTYPE) -ffast-math -fomit-frame-pointer `sdl-config --cflags`\r
+#CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -O2 -D$(SYSTYPE) \\r
+# No optimization and w/gcov flags, so that we get an accurate picture from gcov\r
+#CFLAGS   = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
+#              -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
+#CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
+#              -ffast-math -fomit-frame-pointer `sdl-config --cflags` -fprofile-arcs -ftest-coverage\r
+# No optimization for profiling with gprof...\r
+CFLAGS   = -MMD -Wall -Wno-switch -D$(SYSTYPE) \\r
+               -ffast-math `sdl-config --cflags` -pg -g\r
+CPPFLAGS = -MMD -Wall -Wno-switch -Wno-non-virtual-dtor -D$(SYSTYPE) \\r
+               -ffast-math `sdl-config --cflags` -pg -g\r
+#              -fomit-frame-pointer `sdl-config --cflags` -g\r
+#              -fomit-frame-pointer `sdl-config --cflags` -DLOG_UNMAPPED_MEMORY_ACCESSES\r
+\r
+LDFLAGS =\r
+\r
+#LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB)\r
+# Link in the gcov library (for profiling purposes)\r
+#LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -lgcov\r
+# Link in the gprof lib\r
+LIBS = -L/usr/local/lib -L/usr/lib `sdl-config $(SDLLIBTYPE)` -lstdc++ -lz $(GLLIB) -pg\r
+\r
+INCS = -I. -I./src -I/usr/local/include -I/usr/include\r
+\r
+OBJS = \\r
+       obj/button.o          \\r
+       obj/draggablewindow.o \\r
+       obj/draggablewindow2.o \\r
+       obj/element.o         \\r
+       obj/gui.o             \\r
+       obj/guimisc.o         \\r
+       obj/menu.o            \\r
+       obj/textedit.o        \\r
+       obj/window.o          \\r
+                          \\r
+       obj/applevideo.o      \\r
+       obj/ay8910.o          \\r
+       obj/dis65c02.o        \\r
+       obj/floppy.o          \\r
+       obj/log.o             \\r
+       obj/sdlemu_config.o   \\r
+       obj/sdlemu_opengl.o   \\r
+       obj/settings.o        \\r
+       obj/sound.o           \\r
+       obj/timing.o          \\r
+       obj/v65c02.o          \\r
+       obj/video.o           \\r
+       obj/apple2.o          \\r
+       $(ICON)\r
+\r
+all: checkenv message obj $(TARGET)$(EXESUFFIX)\r
+       @echo\r
+       @echo "*** Looks like it compiled OK... Give it a whirl!"\r
+\r
+# Check the compilation environment, barf if not appropriate\r
+\r
+checkenv:\r
+       @echo\r
+       @echo -n "*** Checking compilation environment... "\r
+ifeq "" "$(shell which sdl-config)"\r
+       @echo\r
+       @echo\r
+       @echo "It seems that you don't have the SDL development libraries installed. If you"\r
+       @echo "have installed them, make sure that the sdl-config file is somewhere in your"\r
+       @echo "path and is executable."\r
+       @echo\r
+#Is there a better way to break out of the makefile?\r
+       @break\r
+else\r
+       @echo "OK"\r
+endif\r
+\r
+message:\r
+       @echo\r
+       @echo "*** Building Apple 2 SDL for $(MSG)..."\r
+       @echo\r
+\r
+clean:\r
+       @echo -n "*** Cleaning out the garbage..."\r
+       @rm -rf obj\r
+       @rm -f ./$(TARGET)$(EXESUFFIX)\r
+       @echo "done!"\r
+\r
+obj:\r
+       @mkdir obj\r
+\r
+# This is only done for Win32 at the moment...\r
+\r
+ifneq "" "$(ICON)"\r
+$(ICON): res/$(TARGET).rc res/$(TARGET).ico\r
+       @echo "*** Processing icon..."\r
+       @windres -i res/$(TARGET).rc -o $(ICON) --include-dir=./res\r
+endif\r
+\r
+obj/%.o: src/%.c\r
+       @echo "*** Compiling $<..."\r
+       @$(CC) $(CFLAGS) $(INCS) -c $< -o $@\r
+\r
+obj/%.o: src/%.cpp\r
+       @echo "*** Compiling $<..."\r
+       @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
+\r
+#GUI compilation...\r
+obj/%.o: src/gui/%.cpp\r
+       @echo "*** Compiling $<..."\r
+       @$(CC) $(CPPFLAGS) $(INCS) -c $< -o $@\r
+\r
+$(TARGET)$(EXESUFFIX): $(OBJS)\r
+       @echo "*** Linking it all together..."\r
+       @$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)\r
+#      strip --strip-all vj$(EXESUFFIX)\r
+#      upx -9 vj$(EXESUFFIX)\r
+\r
+# Pull in dependencies autogenerated by gcc's -MMD switch\r
+# The "-" in front in there just in case they haven't been created yet\r
+\r
+-include obj/*.d\r
diff --git a/ROMs/apple2.rom b/ROMs/apple2.rom
new file mode 100755 (executable)
index 0000000..cb94b9f
Binary files /dev/null and b/ROMs/apple2.rom differ
diff --git a/ROMs/apple2c.rom b/ROMs/apple2c.rom
new file mode 100755 (executable)
index 0000000..73055d3
Binary files /dev/null and b/ROMs/apple2c.rom differ
diff --git a/ROMs/apple2e.rom b/ROMs/apple2e.rom
new file mode 100755 (executable)
index 0000000..65bb648
Binary files /dev/null and b/ROMs/apple2e.rom differ
diff --git a/apple2.cfg b/apple2.cfg
new file mode 100755 (executable)
index 0000000..ece7b9c
--- /dev/null
@@ -0,0 +1,141 @@
+#
+# Apple 2 configuration file
+#
+
+# Apple ROM paths
+
+BIOSROM = ./ROMs/apple2.rom
+diskROM = ./ROMs/disk.rom
+ROMs = ./ROMs
+
+# Auto state loading/saving upon starting/quitting Apple2 (1 - use, 0 - don't use)
+
+autoSaveState = 1
+#This is the default--we don't advertise it just yet... ;-)
+#autoStateFilename = ./apple2auto.state
+
+# TEMPORARY disk image load paths
+
+#floppyImage1 = ./disks/dos33.dsk
+#floppyImage1 = ./disks/prodos.dsk
+#floppyImage1 = ./disks/temp.nib
+#floppyImage1 = ./disks/temp.dsk
+# Yes
+#floppyImage1 = ./disks/bt1_boot.dsk
+# Yes
+#floppyImage1 = ./disks/bt2_boot.dsk
+# No
+#floppyImage1 = ./disks/bt3_boot.dsk
+# Yes
+#floppyImage1 = ./disks/Sabotage.dsk
+# ???
+#floppyImage1 = ./disks/airheart.dsk
+# Yes
+#floppyImage1 = ./disks/drol.dsk
+# Yes
+#floppyImage1 = ./disks/karateka.dsk
+# Yes
+#floppyImage1 = ./disks/wolfenstein_dos32.nib
+# Yes, keys???
+#floppyImage1 = ./disks/MidnightMagic_etc.dsk
+# ???
+#floppyImage1 = ./disks/battle_chess_1.dsk
+# Yes 
+#floppyImage1 = ./disks/MoebiusI-1.dsk
+# Yes, but crashes on the attract mode
+#floppyImage1 = ./disks/MoebiusIIA.dsk
+# Yes
+#floppyImage1 = ./disks/wind_walker_1.dsk
+# Yes
+#floppyImage1 = ./disks/dino_eggs.dsk
+#floppyImage1 = ./disks/mockingboard1.dsk
+#floppyImage1 = ./disks/mockingboard2.dsk
+# Yes, but have to load manually
+#floppyImage1 = ./disks/ultima_ii-1.dsk
+#floppyImage2 = ./disks/ultima_ii-2.dsk
+# Yes, autoloads!
+floppyImage1 = ./disks/u2prog-patched.dsk
+floppyImage2 = ./disks/u2player-jlh.dsk
+
+
+# OpenGL options: 1 - use OpenGL rendering, 0 - use old style rendering
+
+useOpenGL = 1
+
+# OpenGL filtering type: 1 - blurry, 0 - sharp
+
+glFilterType = 0
+
+# Display options: 1 - fullscreen, 0 - windowed
+
+fullscreen = 0
+
+# Backend renderer (OpenGL dependent): 0 - regular, 1 - "TV" style
+
+#renderType = 0
+
+# NTSC/PAL options: 1 - NTSC, 0 - PAL
+
+hardwareTypeNTSC = 1
+
+# Framskip options: 0 - no skip, 1-N - draw every Nth frame
+# Note: Skipping frames may cause strange visual side effects--don't bother
+#       reporting these unless they occur with a frameskip value of 0!
+
+frameSkip = 0
+
+# Joystick options: 1 - use joystick, 0 - don't use
+
+useJoystick = 0
+
+# Joyport option: If joystick is enabled above, set the port (0 - 3) here 
+
+joyport = 0
+
+# Jaguar joypad key assignments
+# Note: It would be nicer to be able to have a single left side to store all this in...
+# E.g. p1keys = 34, 32, 22, etc. instead of what we have here...
+
+p1k_up = 273           # SDLK_UP
+p1k_down = 274         # SDLK_DOWN
+p1k_left = 276         # SDLK_LEFT
+p1k_right = 275                # SDLK_RIGHT
+p1k_c = 122                    # SDLK_z
+p1k_b = 120                    # SDLK_x
+p1k_a = 99                     # SDLK_c
+p1k_option = 39                # SDLK_QUOTE
+p1k_pause = 13         # SDLK_RETURN
+p1k_0 = 256                    # SDLK_KP0
+p1k_1 = 257                    # SDLK_KP1
+p1k_2 = 258                    # SDLK_KP2
+p1k_3 = 259                    # SDLK_KP3
+p1k_4 = 260                    # SDLK_KP4
+p1k_5 = 261                    # SDLK_KP5
+p1k_6 = 262                    # SDLK_KP6
+p1k_7 = 263                    # SDLK_KP7
+p1k_8 = 264                    # SDLK_KP8
+p1k_9 = 265                    # SDLK_KP9
+p1k_pound = 267                # SDLK_KP_DIVIDE
+p1k_star = 268         # SDLK_KP_MULTIPLY
+
+p2k_up = 273           # SDLK_UP
+p2k_down = 274         # SDLK_DOWN
+p2k_left = 276         # SDLK_LEFT
+p2k_right = 275                # SDLK_RIGHT
+p2k_c = 122                    # SDLK_z
+p2k_b = 120                    # SDLK_x
+p2k_a = 99                     # SDLK_c
+p2k_option = 39                # SDLK_QUOTE
+p2k_pause = 13         # SDLK_RETURN
+p2k_0 = 256                    # SDLK_KP0
+p2k_1 = 257                    # SDLK_KP1
+p2k_2 = 258                    # SDLK_KP2
+p2k_3 = 259                    # SDLK_KP3
+p2k_4 = 260                    # SDLK_KP4
+p2k_5 = 261                    # SDLK_KP5
+p2k_6 = 262                    # SDLK_KP6
+p2k_7 = 263                    # SDLK_KP7
+p2k_8 = 264                    # SDLK_KP8
+p2k_9 = 265                    # SDLK_KP9
+p2k_pound = 267                # SDLK_KP_DIVIDE
+p2k_star = 268         # SDLK_KP_MULTIPLY
diff --git a/docs/gpl.txt b/docs/gpl.txt
new file mode 100755 (executable)
index 0000000..1bcc46f
--- /dev/null
@@ -0,0 +1,342 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+
diff --git a/res/apple2.ico b/res/apple2.ico
new file mode 100755 (executable)
index 0000000..836530c
Binary files /dev/null and b/res/apple2.ico differ
diff --git a/res/apple2.rc b/res/apple2.rc
new file mode 100755 (executable)
index 0000000..c891182
--- /dev/null
@@ -0,0 +1,9 @@
+#include "winresrc.h"\r
+\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_ICON1               ICON    DISCARDABLE     "apple2.ico"\r
diff --git a/src/apple2.cpp b/src/apple2.cpp
new file mode 100755 (executable)
index 0000000..b5a7ee9
--- /dev/null
@@ -0,0 +1,814 @@
+//\r
+// Apple 2 SDL Portable Apple Emulator\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// Loosely based on AppleWin by Tom Charlesworth which was based on AppleWin by\r
+// Oliver Schmidt which was based on AppleWin by Michael O'Brien. :-) Parts are\r
+// also derived from ApplePC. Too bad it was closed source--it could have been\r
+// *the* premier Apple II emulator out there.\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  11/12/2005  Initial port to SDL\r
+// JLH  11/18/2005  Wired up graphic soft switches \r
+// JLH  12/02/2005  Setup timer subsystem for more accurate time keeping\r
+// JLH  12/12/2005  Added preliminary state saving support\r
+//\r
+\r
+// STILL TO DO:\r
+//\r
+// - Port to SDL [DONE]\r
+// - GUI goodies\r
+// - Weed out unneeded functions [DONE]\r
+// - Disk I/O [DONE]\r
+// - 128K IIe related stuff\r
+// - State loading/saving\r
+//\r
+\r
+#include "apple2.h"\r
+\r
+#include <SDL.h>\r
+#include <fstream>\r
+#include <string>\r
+#include <iomanip>\r
+#include <iostream>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <time.h>\r
+#include "log.h"\r
+#include "video.h"\r
+#include "sound.h"\r
+#include "settings.h"\r
+#include "v65c02.h"\r
+#include "applevideo.h"\r
+#include "timing.h"\r
+#include "floppy.h"\r
+#include "firmware.h"\r
+\r
+#include "gui/gui.h"\r
+#include "gui/window.h"\r
+#include "gui/draggablewindow2.h"\r
+#include "gui/textedit.h"\r
+\r
+using namespace std;\r
+\r
+// Global variables\r
+\r
+uint8 ram[0x10000], rom[0x10000];                              // RAM & ROM spaces\r
+uint8 diskRom[0x100];                                                  // Disk ROM space\r
+V65C02REGS mainCPU;\r
+uint8 appleType = APPLE_TYPE_II;\r
+\r
+// Local variables\r
+\r
+static uint8 lastKeyPressed = 0;\r
+static bool keyDown = false;\r
+\r
+static FloppyDrive floppyDrive;\r
+\r
+enum { LC_BANK_1, LC_BANK_2 };\r
+\r
+static uint8 visibleBank = LC_BANK_1;\r
+static bool readRAM = false;\r
+static bool writeRAM = false;\r
+\r
+static bool running = true;                                            // Machine running state flag...\r
+static uint32 startTicks;\r
+\r
+static GUI * gui = NULL;\r
+\r
+// Local functions (technically, they're global...)\r
+\r
+bool LoadImg(char * filename, uint8 * ram, int size);\r
+uint8 RdMem(uint16 addr);\r
+void WrMem(uint16 addr, uint8 b);\r
+static void SaveApple2State(const char * filename);\r
+static bool LoadApple2State(const char * filename);\r
+\r
+// Local timer callback functions\r
+\r
+static void FrameCallback(void);\r
+static void BlinkTimer(void);\r
+\r
+// Test GUI function\r
+\r
+Element * TestWindow(void)\r
+{\r
+       Element * win = new DraggableWindow2(10, 10, 128, 128);\r
+//     ((DraggableWindow *)win)->AddElement(new TextEdit(4, 16, 92, 0, "u2prog.dsk", win));\r
+\r
+       return win;\r
+}\r
+\r
+Element * QuitEmulator(void)\r
+{\r
+       gui->Stop();\r
+       running = false;\r
+\r
+       return NULL;\r
+}\r
+\r
+/*\r
+ Small Apple II memory map:\r
+\r
+$C010 - Clear bit 7 of keyboard data ($C000)\r
+$C030 - Toggle speaker diaphragm\r
+$C051 - Display text\r
+$C054 - Select page 1\r
+$C056 - Select lo-res\r
+$C058 - Set annuciator-0 output to 0\r
+$C05A - Set annuciator-0 output to 0\r
+$C05D - Set annuciator-0 output to 1\r
+$C05F - Set annuciator-0 output to 1\r
+$C0E0 - Disk control stepper ($C0E0-7)\r
+$C0E9 - Disk control motor (on)\r
+$C0EA - Disk enable (drive 1)\r
+$C0EC - Disk R/W\r
+$C0EE - Disk set read mode\r
+*/\r
+\r
+//\r
+// V65C02 read/write memory functions\r
+//\r
+\r
+uint8 RdMem(uint16 addr)\r
+{\r
+       uint8 b;\r
+\r
+#if 0\r
+if (addr >= 0xC000 && addr <= 0xC0FF)\r
+       WriteLog("\n*** Read at I/O address %04X\n", addr);\r
+#endif\r
+#if 0\r
+if (addr >= 0xC080 && addr <= 0xC08F)\r
+       WriteLog("\n*** Read at I/O address %04X\n", addr);\r
+#endif\r
+\r
+       if ((addr & 0xFFF0) == 0xC000)\r
+       {\r
+               return lastKeyPressed | (keyDown ? 0x80 : 0x00);\r
+       }\r
+       else if ((addr & 0xFFF0) == 0xC010)\r
+       {\r
+//This is bogus: keyDown is set to false, so return val NEVER is set...\r
+//Fixed...\r
+//Also, this is IIe/IIc only...!\r
+               uint8 retVal = lastKeyPressed | (keyDown ? 0x80 : 0x00);\r
+               keyDown = false;\r
+               return retVal;\r
+       }\r
+       else if ((addr & 0xFFF0) == 0xC030)\r
+       {\r
+               ToggleSpeaker(GetCurrentV65C02Clock());\r
+//should it return something else here???\r
+               return 0x00;\r
+       }\r
+       else if (addr == 0xC050)\r
+       {\r
+               textMode = false;\r
+       }\r
+       else if (addr == 0xC051)\r
+       {\r
+               textMode = true;\r
+       }\r
+       else if (addr == 0xC052)\r
+       {\r
+               mixedMode = false;\r
+       }\r
+       else if (addr == 0xC053)\r
+       {\r
+               mixedMode = true;\r
+       }\r
+       else if (addr == 0xC054)\r
+       {\r
+               displayPage2 = false;\r
+       }\r
+       else if (addr == 0xC055)\r
+       {\r
+               displayPage2 = true;\r
+       }\r
+       else if (addr == 0xC056)\r
+       {\r
+               hiRes = false;\r
+       }\r
+       else if (addr == 0xC057)\r
+       {\r
+               hiRes = true;\r
+       }\r
+\r
+//Note that this is a kludge: The $D000-$DFFF 4K space is shared (since $C000-$CFFF is\r
+//memory mapped) between TWO banks, and that that $E000-$FFFF RAM space is a single bank.\r
+//[SHOULD BE FIXED NOW]\r
+//OK! This switch selects bank 2 of the 4K bank at $D000-$DFFF. One access makes it\r
+//visible, two makes it R/W.\r
+\r
+       else if ((addr & 0xFFFB) == 0xC080)\r
+       {\r
+//$C080 49280              OECG  R   Read RAM bank 2; no write\r
+               visibleBank = LC_BANK_2;\r
+               readRAM = true;\r
+               writeRAM = false;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC081)\r
+       {\r
+//$C081 49281 ROMIN        OECG  RR  Read ROM; write RAM bank 2\r
+               visibleBank = LC_BANK_2;\r
+               readRAM = false;\r
+               writeRAM = true;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC082)\r
+       {\r
+//$C082 49282              OECG  R   Read ROM; no write\r
+               visibleBank = LC_BANK_2;\r
+               readRAM = false;\r
+               writeRAM = false;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC083)\r
+       {\r
+//$C083 49283 LCBANK2      OECG  RR  Read/write RAM bank 2\r
+               visibleBank = LC_BANK_2;\r
+               readRAM = true;\r
+               writeRAM = true;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC088)\r
+       {\r
+//$C088 49288              OECG  R   Read RAM bank 1; no write\r
+               visibleBank = LC_BANK_1;\r
+               readRAM = true;\r
+               writeRAM = false;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC089)\r
+       {\r
+//$C089 49289              OECG  RR  Read ROM; write RAM bank 1\r
+               visibleBank = LC_BANK_1;\r
+               readRAM = false;\r
+               writeRAM = true;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC08A)\r
+       {\r
+//$C08A 49290              OECG  R   Read ROM; no write\r
+               visibleBank = LC_BANK_1;\r
+               readRAM = false;\r
+               writeRAM = false;\r
+       }\r
+       else if ((addr & 0xFFFB) == 0xC08B)\r
+       {\r
+//$C08B 49291              OECG  RR  Read/write RAM bank 1\r
+               visibleBank = LC_BANK_1;\r
+               readRAM = true;\r
+               writeRAM = true;\r
+       }\r
+       else if ((addr & 0xFFF8) == 0xC0E0)\r
+       {\r
+               floppyDrive.ControlStepper(addr & 0x07);\r
+       }\r
+       else if ((addr & 0xFFFE) == 0xC0E8)\r
+       {\r
+               floppyDrive.ControlMotor(addr & 0x01);\r
+       }\r
+       else if ((addr & 0xFFFE) == 0xC0EA)\r
+       {\r
+               floppyDrive.DriveEnable(addr & 0x01);\r
+       }\r
+       else if (addr == 0xC0EC)\r
+       {\r
+               return floppyDrive.ReadWrite();\r
+       }\r
+       else if (addr == 0xC0ED)\r
+       {\r
+               return floppyDrive.GetLatchValue();\r
+       }\r
+       else if (addr == 0xC0EE)\r
+       {\r
+               floppyDrive.SetReadMode();\r
+       }\r
+       else if (addr == 0xC0EF)\r
+       {\r
+               floppyDrive.SetWriteMode();\r
+       }\r
+\r
+//This sux...\r
+       if (addr >= 0xC100 && addr <= 0xCFFF)   // The $C000-$CFFF block is *never* RAM\r
+               b = rom[addr];\r
+       else if (addr >= 0xD000)\r
+       {\r
+               if (readRAM)\r
+               {\r
+                       if (addr <= 0xDFFF && visibleBank == LC_BANK_1)\r
+                               b = ram[addr - 0x1000];\r
+                       else\r
+                               b = ram[addr];\r
+               }\r
+               else\r
+                       b = rom[addr];\r
+       }\r
+       else\r
+               b = ram[addr];\r
+\r
+       return b;\r
+}\r
+\r
+/*\r
+A-9 (Mockingboard)\r
+APPENDIX F Assembly Language Program Listings\r
+\r
+                       1       *PRIMARY ROUTINES\r
+                       2       *FOR SLOT 4\r
+                       3       *\r
+                       4                       ORG     $9000\r
+                       5       *                               ;ADDRESSES\r
+                                                                               FOR FIRST\r
+                                                                               6522\r
+                       6       ORB             EQU     $C400           ;PORT B\r
+                       7       ORA             EQU     $C401           ;PORT A\r
+                       8       DDRB            EQU     $C402           ;DATA DIRECTION\r
+                                                                               REGISTER (A)\r
+                       9       DDRA            EQU     $C403           ;DATA DIRECTION\r
+                                                                               REGISTER (B)\r
+                       10      *                                       ;ADDRESSES\r
+                                                                               FOR SECOND\r
+                                                                               6522\r
+                       11      ORB2            EQU     $C480           ;PORT B\r
+                       12      ORA2            EQU     $C481           ;PORT A\r
+                       13      DDRB2   EQU     $C482           ;DATA DIRECTION\r
+                                                                               REGISTER (B)\r
+                       14      DDRA2   EQU     $C483           ;DATA DIRECTION\r
+                                                                               REGISTER (A)\r
+*/\r
+void WrMem(uint16 addr, uint8 b)\r
+{\r
+//temp...\r
+//extern V6809REGS regs;\r
+//if (addr >= 0xC800 && addr <= 0xCBFE)\r
+//if (addr == 0xC80F || addr == 0xC80D)\r
+//     WriteLog("WrMem: Writing address %04X with %02X [PC=%04X, $CB00=%02X]\n", addr, b, regs.pc, gram[0xCB00]);//*/\r
+\r
+#if 0\r
+if (addr >= 0xC000 && addr <= 0xC0FF)\r
+       WriteLog("\n*** Write at I/O address %04X\n", addr);\r
+#endif\r
+/*\r
+Check the BIKO version on Asimov to see if it's been cracked or not...\r
+\r
+7F3D: 29 07          AND   #$07       [PC=7F3F, SP=01EA, CC=---B-I--, A=01, X=4B, Y=00]\r
+7F3F: C9 06          CMP   #$06       [PC=7F41, SP=01EA, CC=N--B-I--, A=01, X=4B, Y=00]\r
+7F41: 90 03          BCC   $7F46      [PC=7F46, SP=01EA, CC=N--B-I--, A=01, X=4B, Y=00]\r
+[7F43: 4C 83 7E      JMP   $7E83] <- Skipped over... (Prints "THANK YOU VERY MUCH!")\r
+7F46: AA             TAX              [PC=7F47, SP=01EA, CC=---B-I--, A=01, X=01, Y=00]\r
+\r
+; INX here *ensures* 1 - 6!!! BUG!!!\r
+; Or is it? Could this be part of a braindead copy protection scheme? It's\r
+; awfully close to NOP ($EA)...\r
+; Nothing else touches it once it's been written... Hmm...\r
+\r
+7F47: E8             INX              [PC=7F48, SP=01EA, CC=---B-I--, A=01, X=02, Y=00]\r
+7F48: F8             SED              [PC=7F49, SP=01EA, CC=---BDI--, A=01, X=02, Y=00]\r
+7F49: 18             CLC              [PC=7F4A, SP=01EA, CC=---BDI--, A=01, X=02, Y=00]\r
+7F4A: BD 15 4E       LDA   $4E15,X    [PC=7F4D, SP=01EA, CC=---BDI--, A=15, X=02, Y=00]\r
+\r
+; 4E13: 03 00\r
+; 4E15: 25 25 15 15 10 20\r
+; 4E1B: 03 41 99 99 01 00 12\r
+; 4E22: 99 70\r
+\r
+7F4D: 65 FC          ADC   $FC        [PC=7F4F, SP=01EA, CC=---BDI--, A=16, X=02, Y=00]\r
+7F4F: 65 FC          ADC   $FC        [PC=7F51, SP=01EA, CC=---BDI--, A=17, X=02, Y=00]\r
+7F51: 65 FC          ADC   $FC        [PC=7F53, SP=01EA, CC=---BDI--, A=18, X=02, Y=00]\r
+7F53: 65 FC          ADC   $FC        [PC=7F55, SP=01EA, CC=---BDI--, A=19, X=02, Y=00]\r
+\r
+; NO checking is done on the raised stat! Aarrrgggghhhhh!\r
+\r
+7F55: 9D 15 4E       STA   $4E15,X    [PC=7F58, SP=01EA, CC=---BDI--, A=19, X=02, Y=00]\r
+7F58: D8             CLD              [PC=7F59, SP=01EA, CC=---B-I--, A=19, X=02, Y=00]\r
+\r
+; Print "ALAKAZAM!" and so on...\r
+\r
+7F59: 20 2C 40       JSR   $402C      [PC=402C, SP=01E8, CC=---B-I--, A=19, X=02, Y=00]\r
+*/\r
+#if 0\r
+if (addr == 0x7F47)\r
+       WriteLog("\n*** Byte %02X written at address %04X\n", b, addr);\r
+#endif\r
+/*\r
+CLR80STORE=$C000 ;80STORE Off- disable 80-column memory mapping (Write)\r
+SET80STORE=$C001 ;80STORE On- enable 80-column memory mapping (WR-only)\r
+\r
+CLRAUXRD = $C002 ;read from main 48K (WR-only)\r
+SETAUXRD = $C003 ;read from aux/alt 48K (WR-only)\r
+\r
+CLRAUXWR = $C004 ;write to main 48K (WR-only)\r
+SETAUXWR = $C005 ;write to aux/alt 48K (WR-only)\r
+\r
+CLRCXROM = $C006 ;use ROM on cards (WR-only)\r
+SETCXROM = $C007 ;use internal ROM (WR-only)\r
+\r
+CLRAUXZP = $C008 ;use main zero page, stack, & LC (WR-only)\r
+SETAUXZP = $C009 ;use alt zero page, stack, & LC (WR-only)\r
+\r
+CLRC3ROM = $C00A ;use internal Slot 3 ROM (WR-only)\r
+SETC3ROM = $C00B ;use external Slot 3 ROM (WR-only)\r
+\r
+CLR80VID = $C00C ;disable 80-column display mode (WR-only)\r
+SET80VID = $C00D ;enable 80-column display mode (WR-only)\r
+\r
+CLRALTCH = $C00E ;use main char set- norm LC, Flash UC (WR-only)\r
+SETALTCH = $C00F ;use alt char set- norm inverse, LC; no Flash (WR-only)\r
+*/\r
+       if (addr == 0xC00E)\r
+       {\r
+               alternateCharset = false;\r
+       }\r
+       else if (addr == 0xC00F)\r
+       {\r
+               alternateCharset = true;\r
+       }\r
+       else if ((addr & 0xFFF0) == 0xC010)             // Keyboard strobe\r
+       {\r
+               keyDown = false;\r
+       }\r
+       else if (addr == 0xC050)\r
+       {\r
+               textMode = false;\r
+       }\r
+       else if (addr == 0xC051)\r
+       {\r
+               textMode = true;\r
+       }\r
+       else if (addr == 0xC052)\r
+       {\r
+               mixedMode = false;\r
+       }\r
+       else if (addr == 0xC053)\r
+       {\r
+               mixedMode = true;\r
+       }\r
+       else if (addr == 0xC054)\r
+       {\r
+               displayPage2 = false;\r
+       }\r
+       else if (addr == 0xC055)\r
+       {\r
+               displayPage2 = true;\r
+       }\r
+       else if (addr == 0xC056)\r
+       {\r
+               hiRes = false;\r
+       }\r
+       else if (addr == 0xC057)\r
+       {\r
+               hiRes = true;\r
+       }\r
+       else if ((addr & 0xFFF8) == 0xC0E0)\r
+       {\r
+               floppyDrive.ControlStepper(addr & 0x07);\r
+       }\r
+       else if ((addr & 0xFFFE) == 0xC0E8)\r
+       {\r
+               floppyDrive.ControlMotor(addr & 0x01);\r
+       }\r
+       else if ((addr & 0xFFFE) == 0xC0EA)\r
+       {\r
+               floppyDrive.DriveEnable(addr & 0x01);\r
+       }\r
+       else if (addr == 0xC0EC)\r
+       {\r
+//change this to Write()? (and the other to Read()?) Dunno. Seems to work OK, but still...\r
+               floppyDrive.ReadWrite();\r
+       }\r
+       else if (addr == 0xC0ED)\r
+       {\r
+               floppyDrive.SetLatchValue(b);\r
+       }\r
+       else if (addr == 0xC0EE)\r
+       {\r
+               floppyDrive.SetReadMode();\r
+       }\r
+       else if (addr == 0xC0EF)\r
+       {\r
+               floppyDrive.SetWriteMode();\r
+       }\r
+//Still need to add missing I/O switches here...\r
+\r
+       if (addr >= 0xD000)\r
+       {\r
+               if (writeRAM)\r
+               {\r
+                       if (addr <= 0xDFFF && visibleBank == LC_BANK_1)\r
+                               ram[addr - 0x1000] = b;\r
+                       else\r
+                               ram[addr] = b;\r
+               }\r
+\r
+               return;\r
+       }\r
+\r
+       ram[addr] = b;\r
+}\r
+\r
+//\r
+// Load a file into RAM/ROM image space\r
+//\r
+bool LoadImg(char * filename, uint8 * ram, int size)\r
+{\r
+       FILE * fp = fopen(filename, "rb");\r
+\r
+       if (fp == NULL)\r
+               return false;\r
+\r
+       fread(ram, 1, size, fp);\r
+       fclose(fp);\r
+\r
+       return true;\r
+}\r
+\r
+static void SaveApple2State(const char * filename)\r
+{\r
+}\r
+\r
+static bool LoadApple2State(const char * filename)\r
+{\r
+       return false;\r
+}\r
+\r
+//\r
+// Main loop\r
+//\r
+int main(int /*argc*/, char * /*argv*/[])\r
+{\r
+       InitLog("./apple2.log");\r
+       LoadSettings();\r
+       srand(time(NULL));                                                                      // Initialize RNG\r
+\r
+       // Zero out memory\r
+//Need to bankify this stuff for the IIe emulation...\r
+       memset(ram, 0, 0x10000);\r
+       memset(rom, 0, 0x10000);\r
+\r
+       // Set up V65C02 execution context\r
+       memset(&mainCPU, 0, sizeof(V65C02REGS));\r
+       mainCPU.RdMem = RdMem;\r
+       mainCPU.WrMem = WrMem;\r
+       mainCPU.cpuFlags |= V65C02_ASSERT_LINE_RESET;\r
+\r
+       if (!LoadImg(settings.BIOSPath, rom + 0xD000, 0x3000))\r
+       {\r
+               WriteLog("Could not open file '%s'!\n", settings.BIOSPath);\r
+               return -1;\r
+       }\r
+\r
+//This is now included...\r
+/*     if (!LoadImg(settings.diskPath, diskRom, 0x100))\r
+       {\r
+               WriteLog("Could not open file '%s'!\nDisk II will be unavailable!\n", settings.diskPath);\r
+//             return -1;\r
+       }//*/\r
+\r
+//Load up disk image from config file (for now)...\r
+       floppyDrive.LoadImage(settings.diskImagePath1, 0);\r
+       floppyDrive.LoadImage(settings.diskImagePath2, 1);\r
+//     floppyDrive.LoadImage("./disks/temp.nib", 1);   // Load temp .nib file into second drive...\r
+\r
+//Kill the DOS ROM in slot 6 for now...\r
+//not\r
+       memcpy(rom + 0xC600, diskROM, 0x100);\r
+\r
+       WriteLog("About to initialize video...\n");\r
+       if (!InitVideo())\r
+       {\r
+               cout << "Aborting!" << endl;\r
+               return -1;\r
+       }\r
+\r
+       // Have to do this *after* video init but *before* sound init...!\r
+//Shouldn't be necessary since we're not doing emulation in the ISR...\r
+       if (settings.autoStateSaving)\r
+       {\r
+               // Load last state from file...\r
+               if (!LoadApple2State(settings.autoStatePath))\r
+                       WriteLog("Unable to use Apple2 state file \"%s\"!\n", settings.autoStatePath);\r
+       }\r
+\r
+\r
+#if 0\r
+// State loading!\r
+if (!LoadImg("./BT1_6502_RAM_SPACE.bin", ram, 0x10000))\r
+{\r
+       cout << "Couldn't load state file!" << endl;\r
+       cout << "Aborting!!" << endl;\r
+       return -1;\r
+}\r
+\r
+//A  P  Y  X  S     PC\r
+//-- -- -- -- ----- -----\r
+//00 75 3B 53 FD 01 41 44\r
+\r
+mainCPU.cpuFlags = 0;\r
+mainCPU.a = 0x00;\r
+mainCPU.x = 0x53;\r
+mainCPU.y = 0x3B;\r
+mainCPU.cc = 0x75;\r
+mainCPU.sp = 0xFD;\r
+mainCPU.pc = 0x4441;\r
+\r
+textMode = false;\r
+mixedMode = false;\r
+displayPage2 = false;\r
+hiRes = true;\r
+\r
+//kludge...\r
+readHiRam = true;\r
+//dumpDis=true;\r
+//kludge II...\r
+memcpy(ram + 0xD000, ram + 0xC000, 0x1000);\r
+#endif\r
+\r
+       WriteLog("About to initialize audio...\n");\r
+       SoundInit();\r
+       SDL_EnableUNICODE(1);                                           // Needed to do key translation shit\r
+\r
+       gui = new GUI(surface);                                         // Set up the GUI system object...\r
+       gui->AddMenuTitle("Apple2");\r
+       gui->AddMenuItem("Test!", TestWindow/*, hotkey*/);\r
+       gui->AddMenuItem("");\r
+       gui->AddMenuItem("Quit", QuitEmulator, SDLK_q);\r
+       gui->CommitItemsToMenu();\r
+\r
+       SetupBlurTable();                                                       // Set up the color TV emulation blur table\r
+       running = true;                                                         // Set running status...\r
+\r
+       InitializeEventList();                                          // Clear the event list before we use it...\r
+       SetCallbackTime(FrameCallback, 16666.66666667); // Set frame to fire at 1/60 s interval\r
+       SetCallbackTime(BlinkTimer, 250000);            // Set up blinking at 1/4 s intervals\r
+       startTicks = SDL_GetTicks();\r
+\r
+       WriteLog("Entering main loop...\n");\r
+       while (running)\r
+       {\r
+               double timeToNextEvent = GetTimeToNextEvent();\r
+               Execute65C02(&mainCPU, USEC_TO_M6502_CYCLES(timeToNextEvent));\r
+//We MUST remove a frame's worth of time in order for the CPU to function... !!! FIX !!!\r
+//(Fix so that this is not a requirement!)\r
+               mainCPU.clock -= USEC_TO_M6502_CYCLES(timeToNextEvent);\r
+               HandleNextEvent();\r
+       }\r
+\r
+       if (settings.autoStateSaving)\r
+       {\r
+               // Save state here...\r
+               SaveApple2State(settings.autoStatePath);\r
+       }\r
+floppyDrive.SaveImage();\r
+\r
+       SoundDone();\r
+       VideoDone();\r
+       SaveSettings();\r
+       LogDone();\r
+\r
+       return 0;\r
+}\r
+\r
+/*\r
+Apple II keycodes\r
+-----------------\r
+\r
+Key     Aln CTL SHF BTH\r
+-----------------------\r
+space  $A0     $A0     $A0 $A0         No xlation\r
+RETURN $8D     $8D     $8D     $8D             No xlation\r
+0              $B0     $B0     $B0     $B0             Need to screen shift+0 (?)\r
+1!             $B1 $B1 $A1 $A1         No xlation\r
+2"             $B2     $B2     $A2     $A2             No xlation\r
+3#             $B3     $B3     $A3     $A3             No xlation\r
+4$             $B4     $B4     $A4     $A4             No xlation\r
+5%             $B5     $B5     $A5     $A5             No xlation\r
+6&             $B6     $B6     $A6     $A6             No xlation\r
+7'             $B7     $B7     $A7     $A7             No xlation\r
+8(             $B8     $B8     $A8     $A8             No xlation\r
+9)             $B9     $B9     $A9     $A9             No xlation\r
+:*             $BA     $BA     $AA     $AA             No xlation\r
+;+             $BB     $BB     $AB     $AB             No xlation\r
+,<             $AC     $AC     $BC     $BC             No xlation\r
+-=             $AD     $AD     $BD     $BD             No xlation\r
+.>             $AE     $AE     $BE     $BE             No xlation\r
+/?             $AF     $AF     $BF     $BF             No xlation\r
+A              $C1     $81     $C1     $81\r
+B              $C2     $82     $C2     $82\r
+C              $C3     $83     $C3     $83\r
+D              $C4     $84     $C4     $84\r
+E              $C5     $85     $C5     $85\r
+F              $C6     $86     $C6     $86\r
+G              $C7     $87     $C7     $87\r
+H              $C8     $88     $C8     $88\r
+I              $C9     $89     $C9     $89\r
+J              $CA     $8A     $CA     $8A\r
+K              $CB     $8B     $CB     $8B\r
+L              $CC     $8C     $CC     $8C\r
+M              $CD     $8D     $DD     $9D             -> ODD\r
+N^             $CE     $8E     $DE     $9E             -> ODD\r
+O              $CF     $8F     $CF     $8F\r
+P@             $D0     $90     $C0     $80             Need to xlate CTL+SHFT+P & SHFT+P (?)\r
+Q              $D1     $91     $D1     $91\r
+R              $D2     $92     $D2     $92\r
+S              $D3     $93     $D3     $93\r
+T              $D4     $94     $D4     $94\r
+U              $D5     $95     $D5     $95\r
+V              $D6     $96     $D6     $96\r
+W              $D7     $97     $D7     $97\r
+X              $D8     $98     $D8     $98\r
+Y              $D9     $99     $D9     $99\r
+Z              $DA     $9A     $DA     $9A\r
+<-             $88     $88     $88     $88\r
+->             $95     $95     $95     $95\r
+ESC            $9B     $9B     $9B     $9B             No xlation\r
+\r
+*/\r
+static void FrameCallback(void)\r
+{\r
+       SDL_Event event;\r
+\r
+       while (SDL_PollEvent(&event))\r
+       {\r
+               switch (event.type)\r
+               {\r
+               case SDL_KEYDOWN:\r
+                       if (event.key.keysym.unicode != 0)\r
+                       {\r
+//Need to do some key translation here, and screen out non-apple keys as well...\r
+                               if (event.key.keysym.sym == SDLK_TAB)   // Prelim key screening...\r
+                                       break;\r
+\r
+                               lastKeyPressed = event.key.keysym.unicode;\r
+                               keyDown = true;\r
+                               //kludge: should have a caps lock thingy here...\r
+                               //or all uppercase for ][+...\r
+                               if (lastKeyPressed >= 'a' && lastKeyPressed <='z')\r
+                                       lastKeyPressed &= 0xDF;         // Convert to upper case...\r
+                       }\r
+\r
+                       // CTRL+RESET key emulation (mapped to CTRL+`)\r
+// This doesn't work...\r
+//                     if (event.key.keysym.sym == SDLK_BREAK && (event.key.keysym.mod & KMOD_CTRL))\r
+//                     if (event.key.keysym.sym == SDLK_PAUSE && (event.key.keysym.mod & KMOD_CTRL))\r
+                       if (event.key.keysym.sym == SDLK_BACKQUOTE && (event.key.keysym.mod & KMOD_CTRL))\r
+//NOTE that this shouldn't take place until the key is lifted... !!! FIX !!!\r
+//ALSO it seems to leave the machine in an inconsistent state vis-a-vis the language card...\r
+                               mainCPU.cpuFlags |= V65C02_ASSERT_LINE_RESET;\r
+\r
+                       if (event.key.keysym.sym == SDLK_RIGHT)\r
+                               lastKeyPressed = 0x15, keyDown = true;\r
+                       else if (event.key.keysym.sym == SDLK_LEFT)\r
+                               lastKeyPressed = 0x08, keyDown = true;\r
+\r
+                       // Use ALT+Q to exit, as well as the usual window decoration method\r
+                       if (event.key.keysym.sym == SDLK_q && (event.key.keysym.mod & KMOD_ALT))\r
+                               running = false;\r
+\r
+                       if (event.key.keysym.sym == SDLK_F12)\r
+                               dumpDis = !dumpDis;                             // Toggle the disassembly process\r
+                       else if (event.key.keysym.sym == SDLK_F11)\r
+                               floppyDrive.LoadImage("./disks/bt1_char.dsk");//Kludge to load char disk...\r
+else if (event.key.keysym.sym == SDLK_F9)\r
+{\r
+       floppyDrive.CreateBlankImage();\r
+//     SpawnMessage("Image cleared...");\r
+}//*/\r
+else if (event.key.keysym.sym == SDLK_F10)\r
+{\r
+       floppyDrive.SwapImages();\r
+//     SpawnMessage("Image swapped...");\r
+}//*/\r
+\r
+                       if (event.key.keysym.sym == SDLK_F2)// Toggle the palette\r
+                               TogglePalette();\r
+                       else if (event.key.keysym.sym == SDLK_F3)// Cycle through screen types\r
+                               CycleScreenTypes();\r
+\r
+//                     if (event.key.keysym.sym == SDLK_F5)    // Temp GUI launch key\r
+                       if (event.key.keysym.sym == SDLK_F1)    // GUI launch key\r
+//NOTE: Should parse the output to determine whether or not the user requested\r
+//      to quit completely... !!! FIX !!!\r
+                               gui->Run();\r
+\r
+                       break;\r
+               case SDL_QUIT:\r
+                       running = false;\r
+               }\r
+       }\r
+\r
+       HandleSoundAtFrameEdge();                                       // Sound stuff... (ick)\r
+       RenderVideoFrame();\r
+       SetCallbackTime(FrameCallback, 16666.66666667);\r
+\r
+       while (SDL_GetTicks() - startTicks < 16);       // Wait for next frame...\r
+       startTicks = SDL_GetTicks();\r
+}\r
+\r
+static void BlinkTimer(void)\r
+{\r
+       flash = !flash;\r
+       SetCallbackTime(BlinkTimer, 250000);            // Set up blinking at 1/4 sec intervals\r
+}\r
diff --git a/src/apple2.h b/src/apple2.h
new file mode 100755 (executable)
index 0000000..48d39ff
--- /dev/null
@@ -0,0 +1,12 @@
+//\r
+// Apple 2 SDL Portable Apple Emulator\r
+//\r
+\r
+#include "types.h"\r
+\r
+enum { APPLE_TYPE_II, APPLE_TYPE_IIE, APPLE_TYPE_IIC };\r
+\r
+// Global variables (exported)\r
+\r
+extern uint8 ram[0x10000], rom[0x10000];               // RAM & ROM pointers\r
+extern uint8 appleType;\r
diff --git a/src/applevideo.cpp b/src/applevideo.cpp
new file mode 100755 (executable)
index 0000000..e9bfaa9
--- /dev/null
@@ -0,0 +1,715 @@
+//\r
+// Apple 2 video support\r
+//\r
+// All the video modes that a real Apple 2 supports are handled here\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  12/01/2005  Added color TV/monochrome emulation to hi-res code\r
+// JLH  12/09/2005  Cleaned up color TV emulation code\r
+// JLH  12/09/2005  Fixed lo-res color TV/mono emulation modes\r
+//\r
+// STILL TO DO:\r
+//\r
+// - Fix LoRes mode green mono to skip every other scanline instead of fill\r
+//   like white mono does\r
+// - Double HiRes\r
+// - 80 column text\r
+// - Fix OSD text display so that it's visible no matter what background is there [DONE]\r
+//\r
+\r
+// Display routines seem MUCH slower now... !!! INVESTIGATE !!!\r
+\r
+#include "applevideo.h"\r
+\r
+#include <string.h>                                                            // for memset()\r
+#include <stdarg.h>                                                            // for va_* stuff\r
+#include <string>                                                              // for vsprintf()\r
+#include "apple2.h"\r
+#include "video.h"\r
+#include "charset.h"\r
+#include "font14pt.h"\r
+\r
+/* Reference: Technote tn-iigs-063 "Master Color Values"\r
+\r
+          Color  Color Register LR HR  DHR Master Color R,G,B\r
+          Name       Value      #  #   #      Value\r
+          ----------------------------------------------------\r
+          Black       0         0  0,4 0      $0000    (0,0,0)\r
+(Magenta) Deep Red    1         1      1      $0D03    (D,0,3)\r
+          Dark Blue   2         2      8      $0009    (0,0,9)\r
+ (Violet) Purple      3         3  2   9      $0D2D    (D,2,D)\r
+          Dark Green  4         4      4      $0072    (0,7,2)\r
+ (Gray 1) Dark Gray   5         5      5      $0555    (5,5,5)\r
+   (Blue) Medium Blue 6         6  6   C      $022F    (2,2,F)\r
+   (Cyan) Light Blue  7         7      D      $06AF    (6,A,F)\r
+          Brown       8         8      2      $0850    (8,5,0)\r
+          Orange      9         9  5   3      $0F60    (F,6,0)\r
+ (Gray 2) Light Gray  A         A      A      $0AAA    (A,A,A)\r
+          Pink        B         B      B      $0F98    (F,9,8)\r
+  (Green) Light Green C         C  1   6      $01D0    (1,D,0)\r
+          Yellow      D         D      7      $0FF0    (F,F,0)\r
+   (Aqua) Aquamarine  E         E      E      $04F9    (4,F,9)\r
+          White       F         F  3,7 F      $0FFF    (F,F,F)\r
+\r
+   LR: Lo-Res   HR: Hi-Res   DHR: Double Hi-Res */\r
+\r
+// Global variables\r
+\r
+bool flash;\r
+bool textMode;\r
+bool mixedMode;\r
+bool displayPage2;\r
+bool hiRes;\r
+bool alternateCharset;\r
+//void SpawnMessage(const char * text, ...);\r
+\r
+// Local variables\r
+\r
+// We set up the colors this way so that they'll be endian safe\r
+// when we cast them to a uint32.\r
+\r
+// "Master Color Values" palette\r
+\r
+static uint8 colors[16 * 4] = {\r
+       0x00, 0x00, 0x00, 0xFF,                         // Black\r
+       0xDD, 0x00, 0x33, 0xFF,                         // Deep Red (Magenta)\r
+       0x00, 0x00, 0x99, 0xFF,                         // Dark Blue\r
+       0xDD, 0x22, 0xDD, 0xFF,                         // Purple (Violet)\r
+       0x00, 0x77, 0x22, 0xFF,                         // Dark Green\r
+       0x55, 0x55, 0x55, 0xFF,                         // Dark Gray (Gray 1)\r
+       0x22, 0x22, 0xFF, 0xFF,                         // Medium Blue (Blue)\r
+       0x66, 0xAA, 0xFF, 0xFF,                         // Light Blue (Cyan)\r
+       0x88, 0x55, 0x00, 0xFF,                         // Brown\r
+       0xFF, 0x66, 0x00, 0xFF,                         // Orange\r
+       0xAA, 0xAA, 0xAA, 0xFF,                         // Light Gray (Gray 2)\r
+       0xFF, 0x99, 0x88, 0xFF,                         // Pink\r
+       0x11, 0xDD, 0x00, 0xFF,                         // Light Green (Green)\r
+       0xFF, 0xFF, 0x00, 0xFF,                         // Yellow\r
+       0x44, 0xFF, 0x99, 0xFF,                         // Aquamarine (Aqua)\r
+       0xFF, 0xFF, 0xFF, 0xFF                          // White\r
+};\r
+\r
+// This palette comes from ApplePC's colors (more realistic to my eye ;-)\r
+\r
+static uint8 altColors[16 * 4] = {\r
+       0x00, 0x00, 0x00, 0xFF,\r
+       0x7D, 0x20, 0x41, 0xFF,\r
+       0x41, 0x30, 0x7D, 0xFF,\r
+       0xBE, 0x51, 0xBE, 0xFF,\r
+       0x00, 0x5D, 0x3C, 0xFF,\r
+       0x7D, 0x7D, 0x7D, 0xFF,\r
+       0x41, 0x8E, 0xBA, 0xFF,\r
+       0xBE, 0xAE, 0xFB, 0xFF,\r
+       0x3C, 0x4D, 0x00, 0xFF,\r
+       0xBA, 0x6D, 0x41, 0xFF,\r
+       0x7D, 0x7D, 0x7D, 0xFF,\r
+       0xFB, 0x9E, 0xBE, 0xFF,\r
+       0x3C, 0xAA, 0x3C, 0xFF,\r
+       0xBA, 0xCB, 0x7D, 0xFF,\r
+       0x7D, 0xDB, 0xBA, 0xFF,\r
+       0xFB, 0xFB, 0xFB, 0xFF };\r
+\r
+// Lo-res starting line addresses\r
+\r
+static uint16 lineAddrLoRes[24] = {\r
+       0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,\r
+       0x0428, 0x04A8, 0x0528, 0x05A8, 0x0628, 0x06A8, 0x0728, 0x07A8,\r
+       0x0450, 0x04D0, 0x0550, 0x05D0, 0x0650, 0x06D0, 0x0750, 0x07D0 };\r
+\r
+// Hi-res starting line addresses\r
+\r
+static uint16 lineAddrHiRes[192] = {\r
+       0x2000, 0x2400, 0x2800, 0x2C00, 0x3000, 0x3400, 0x3800, 0x3C00,\r
+       0x2080, 0x2480, 0x2880, 0x2C80, 0x3080, 0x3480, 0x3880, 0x3C80,\r
+       0x2100, 0x2500, 0x2900, 0x2D00, 0x3100, 0x3500, 0x3900, 0x3D00,\r
+       0x2180, 0x2580, 0x2980, 0x2D80, 0x3180, 0x3580, 0x3980, 0x3D80,\r
+\r
+       0x2200, 0x2600, 0x2A00, 0x2E00, 0x3200, 0x3600, 0x3A00, 0x3E00,\r
+       0x2280, 0x2680, 0x2A80, 0x2E80, 0x3280, 0x3680, 0x3A80, 0x3E80,\r
+       0x2300, 0x2700, 0x2B00, 0x2F00, 0x3300, 0x3700, 0x3B00, 0x3F00,\r
+       0x2380, 0x2780, 0x2B80, 0x2F80, 0x3380, 0x3780, 0x3B80, 0x3F80,\r
+\r
+       0x2028, 0x2428, 0x2828, 0x2C28, 0x3028, 0x3428, 0x3828, 0x3C28,\r
+       0x20A8, 0x24A8, 0x28A8, 0x2CA8, 0x30A8, 0x34A8, 0x38A8, 0x3CA8,\r
+       0x2128, 0x2528, 0x2928, 0x2D28, 0x3128, 0x3528, 0x3928, 0x3D28,\r
+       0x21A8, 0x25A8, 0x29A8, 0x2DA8, 0x31A8, 0x35A8, 0x39A8, 0x3DA8,\r
+\r
+       0x2228, 0x2628, 0x2A28, 0x2E28, 0x3228, 0x3628, 0x3A28, 0x3E28,\r
+       0x22A8, 0x26A8, 0x2AA8, 0x2EA8, 0x32A8, 0x36A8, 0x3AA8, 0x3EA8,\r
+       0x2328, 0x2728, 0x2B28, 0x2F28, 0x3328, 0x3728, 0x3B28, 0x3F28,\r
+       0x23A8, 0x27A8, 0x2BA8, 0x2FA8, 0x33A8, 0x37A8, 0x3BA8, 0x3FA8,\r
+\r
+       0x2050, 0x2450, 0x2850, 0x2C50, 0x3050, 0x3450, 0x3850, 0x3C50,\r
+       0x20D0, 0x24D0, 0x28D0, 0x2CD0, 0x30D0, 0x34D0, 0x38D0, 0x3CD0,\r
+       0x2150, 0x2550, 0x2950, 0x2D50, 0x3150, 0x3550, 0x3950, 0x3D50,\r
+       0x21D0, 0x25D0, 0x29D0, 0x2DD0, 0x31D0, 0x35D0, 0x39D0, 0x3DD0,\r
+\r
+       0x2250, 0x2650, 0x2A50, 0x2E50, 0x3250, 0x3650, 0x3A50, 0x3E50,\r
+       0x22D0, 0x26D0, 0x2AD0, 0x2ED0, 0x32D0, 0x36D0, 0x3AD0, 0x3ED0,\r
+       0x2350, 0x2750, 0x2B50, 0x2F50, 0x3350, 0x3750, 0x3B50, 0x3F50,\r
+       0x23D0, 0x27D0, 0x2BD0, 0x2FD0, 0x33D0, 0x37D0, 0x3BD0, 0x3FD0 };\r
+\r
+uint16 appleHiresToMono[0x200] = {\r
+       0x0000, 0x3000, 0x0C00, 0x3C00, 0x0300, 0x3300, 0x0F00, 0x3F00,\r
+       0x00C0, 0x30C0, 0x0CC0, 0x3CC0, 0x03C0, 0x33C0, 0x0FC0, 0x3FC0, // $0x\r
+       0x0030, 0x3030, 0x0C30, 0x3C30, 0x0330, 0x3330, 0x0F30, 0x3F30,\r
+       0x00F0, 0x30F0, 0x0CF0, 0x3CF0, 0x03F0, 0x33F0, 0x0FF0, 0x3FF0, // $1x\r
+       0x000C, 0x300C, 0x0C0C, 0x3C0C, 0x030C, 0x330C, 0x0F0C, 0x3F0C,\r
+       0x00CC, 0x30CC, 0x0CCC, 0x3CCC, 0x03CC, 0x33CC, 0x0FCC, 0x3FCC, // $2x\r
+       0x003C, 0x303C, 0x0C3C, 0x3C3C, 0x033C, 0x333C, 0x0F3C, 0x3F3C,\r
+       0x00FC, 0x30FC, 0x0CFC, 0x3CFC, 0x03FC, 0x33FC, 0x0FFC, 0x3FFC, // $3x\r
+       0x0003, 0x3003, 0x0C03, 0x3C03, 0x0303, 0x3303, 0x0F03, 0x3F03,\r
+       0x00C3, 0x30C3, 0x0CC3, 0x3CC3, 0x03C3, 0x33C3, 0x0FC3, 0x3FC3, // $4x\r
+       0x0033, 0x3033, 0x0C33, 0x3C33, 0x0333, 0x3333, 0x0F33, 0x3F33,\r
+       0x00F3, 0x30F3, 0x0CF3, 0x3CF3, 0x03F3, 0x33F3, 0x0FF3, 0x3FF3, // $5x\r
+       0x000F, 0x300F, 0x0C0F, 0x3C0F, 0x030F, 0x330F, 0x0F0F, 0x3F0F,\r
+       0x00CF, 0x30CF, 0x0CCF, 0x3CCF, 0x03CF, 0x33CF, 0x0FCF, 0x3FCF, // $6x\r
+       0x003F, 0x303F, 0x0C3F, 0x3C3F, 0x033F, 0x333F, 0x0F3F, 0x3F3F,\r
+       0x00FF, 0x30FF, 0x0CFF, 0x3CFF, 0x03FF, 0x33FF, 0x0FFF, 0x3FFF, // $7x\r
+       0x0000, 0x1800, 0x0600, 0x1E00, 0x0180, 0x1980, 0x0780, 0x1F80,\r
+       0x0060, 0x1860, 0x0660, 0x1E60, 0x01E0, 0x19E0, 0x07E0, 0x1FE0, // $8x\r
+       0x0018, 0x1818, 0x0618, 0x1E18, 0x0198, 0x1998, 0x0798, 0x1F98,\r
+       0x0078, 0x1878, 0x0678, 0x1E78, 0x01F8, 0x19F8, 0x07F8, 0x1FF8, // $9x\r
+       0x0006, 0x1806, 0x0606, 0x1E06, 0x0186, 0x1986, 0x0786, 0x1F86,\r
+       0x0066, 0x1866, 0x0666, 0x1E66, 0x01E6, 0x19E6, 0x07E6, 0x1FE6, // $Ax\r
+       0x001E, 0x181E, 0x061E, 0x1E1E, 0x019E, 0x199E, 0x079E, 0x1F9E,\r
+       0x007E, 0x187E, 0x067E, 0x1E7E, 0x01FE, 0x19FE, 0x07FE, 0x1FFE, // $Bx\r
+       0x0001, 0x1801, 0x0601, 0x1E01, 0x0181, 0x1981, 0x0781, 0x1F81,\r
+       0x0061, 0x1861, 0x0661, 0x1E61, 0x01E1, 0x19E1, 0x07E1, 0x1FE1, // $Cx\r
+       0x0019, 0x1819, 0x0619, 0x1E19, 0x0199, 0x1999, 0x0799, 0x1F99,\r
+       0x0079, 0x1879, 0x0679, 0x1E79, 0x01F9, 0x19F9, 0x07F9, 0x1FF9, // $Dx\r
+       0x0007, 0x1807, 0x0607, 0x1E07, 0x0187, 0x1987, 0x0787, 0x1F87,\r
+       0x0067, 0x1867, 0x0667, 0x1E67, 0x01E7, 0x19E7, 0x07E7, 0x1FE7, // $Ex\r
+       0x001F, 0x181F, 0x061F, 0x1E1F, 0x019F, 0x199F, 0x079F, 0x1F9F,\r
+       0x007F, 0x187F, 0x067F, 0x1E7F, 0x01FF, 0x19FF, 0x07FF, 0x1FFF, // $Fx\r
+\r
+       // Second half adds in the previous byte's lo pixel\r
+\r
+       0x0000, 0x3000, 0x0C00, 0x3C00, 0x0300, 0x3300, 0x0F00, 0x3F00,\r
+       0x00C0, 0x30C0, 0x0CC0, 0x3CC0, 0x03C0, 0x33C0, 0x0FC0, 0x3FC0, // $0x\r
+       0x0030, 0x3030, 0x0C30, 0x3C30, 0x0330, 0x3330, 0x0F30, 0x3F30,\r
+       0x00F0, 0x30F0, 0x0CF0, 0x3CF0, 0x03F0, 0x33F0, 0x0FF0, 0x3FF0, // $1x\r
+       0x000C, 0x300C, 0x0C0C, 0x3C0C, 0x030C, 0x330C, 0x0F0C, 0x3F0C,\r
+       0x00CC, 0x30CC, 0x0CCC, 0x3CCC, 0x03CC, 0x33CC, 0x0FCC, 0x3FCC, // $2x\r
+       0x003C, 0x303C, 0x0C3C, 0x3C3C, 0x033C, 0x333C, 0x0F3C, 0x3F3C,\r
+       0x00FC, 0x30FC, 0x0CFC, 0x3CFC, 0x03FC, 0x33FC, 0x0FFC, 0x3FFC, // $3x\r
+       0x0003, 0x3003, 0x0C03, 0x3C03, 0x0303, 0x3303, 0x0F03, 0x3F03,\r
+       0x00C3, 0x30C3, 0x0CC3, 0x3CC3, 0x03C3, 0x33C3, 0x0FC3, 0x3FC3, // $4x\r
+       0x0033, 0x3033, 0x0C33, 0x3C33, 0x0333, 0x3333, 0x0F33, 0x3F33,\r
+       0x00F3, 0x30F3, 0x0CF3, 0x3CF3, 0x03F3, 0x33F3, 0x0FF3, 0x3FF3, // $5x\r
+       0x000F, 0x300F, 0x0C0F, 0x3C0F, 0x030F, 0x330F, 0x0F0F, 0x3F0F,\r
+       0x00CF, 0x30CF, 0x0CCF, 0x3CCF, 0x03CF, 0x33CF, 0x0FCF, 0x3FCF, // $6x\r
+       0x003F, 0x303F, 0x0C3F, 0x3C3F, 0x033F, 0x333F, 0x0F3F, 0x3F3F,\r
+       0x00FF, 0x30FF, 0x0CFF, 0x3CFF, 0x03FF, 0x33FF, 0x0FFF, 0x3FFF, // $7x\r
+       0x2000, 0x3800, 0x2600, 0x3E00, 0x2180, 0x3980, 0x2780, 0x3F80,\r
+       0x2060, 0x3860, 0x2660, 0x3E60, 0x21E0, 0x39E0, 0x27E0, 0x3FE0, // $8x\r
+       0x2018, 0x3818, 0x2618, 0x3E18, 0x2198, 0x3998, 0x2798, 0x3F98,\r
+       0x2078, 0x3878, 0x2678, 0x3E78, 0x21F8, 0x39F8, 0x27F8, 0x3FF8, // $9x\r
+       0x2006, 0x3806, 0x2606, 0x3E06, 0x2186, 0x3986, 0x2786, 0x3F86,\r
+       0x2066, 0x3866, 0x2666, 0x3E66, 0x21E6, 0x39E6, 0x27E6, 0x3FE6, // $Ax\r
+       0x201E, 0x381E, 0x261E, 0x3E1E, 0x219E, 0x399E, 0x279E, 0x3F9E,\r
+       0x207E, 0x387E, 0x267E, 0x3E7E, 0x21FE, 0x39FE, 0x27FE, 0x3FFE, // $Bx\r
+       0x2001, 0x3801, 0x2601, 0x3E01, 0x2181, 0x3981, 0x2781, 0x3F81,\r
+       0x2061, 0x3861, 0x2661, 0x3E61, 0x21E1, 0x39E1, 0x27E1, 0x3FE1, // $Cx\r
+       0x2019, 0x3819, 0x2619, 0x3E19, 0x2199, 0x3999, 0x2799, 0x3F99,\r
+       0x2079, 0x3879, 0x2679, 0x3E79, 0x21F9, 0x39F9, 0x27F9, 0x3FF9, // $Dx\r
+       0x2007, 0x3807, 0x2607, 0x3E07, 0x2187, 0x3987, 0x2787, 0x3F87,\r
+       0x2067, 0x3867, 0x2667, 0x3E67, 0x21E7, 0x39E7, 0x27E7, 0x3FE7, // $Ex\r
+       0x201F, 0x381F, 0x261F, 0x3E1F, 0x219F, 0x399F, 0x279F, 0x3F9F,\r
+       0x207F, 0x387F, 0x267F, 0x3E7F, 0x21FF, 0x39FF, 0x27FF, 0x3FFF  // $Fx\r
+};\r
+\r
+static uint8 blurTable[0x800][8];                              // Color TV blur table\r
+static uint32 * palette = (uint32 *)altColors;\r
+enum { ST_FIRST_ENTRY = 0, ST_COLOR_TV = 0, ST_WHITE_MONO, ST_GREEN_MONO, ST_LAST_ENTRY };\r
+static uint8 screenType = ST_COLOR_TV;\r
+\r
+// Local functions\r
+\r
+static void Render40ColumnTextLine(uint8 line);\r
+static void Render40ColumnText(void);\r
+static void RenderLoRes(uint16 toLine = 24);\r
+static void RenderHiRes(uint16 toLine = 192);\r
+\r
+\r
+void SetupBlurTable(void)\r
+{\r
+       // NOTE: This table only needs to be 7 bits wide instead of 11, since the\r
+       //       last four bits are copies of the previous four...\r
+\r
+       for(uint16 bitPat=0; bitPat<0x800; bitPat++)\r
+       {\r
+               uint16 w3 = bitPat & 0x888;\r
+               uint16 w2 = bitPat & 0x444;\r
+               uint16 w1 = bitPat & 0x222;\r
+               uint16 w0 = bitPat & 0x111;\r
+\r
+               uint16 blurred3 = (w3 | (w3 >> 1) | (w3 >> 2) | (w3 >> 3)) & 0x00FF;\r
+               uint16 blurred2 = (w2 | (w2 >> 1) | (w2 >> 2) | (w2 >> 3)) & 0x00FF;\r
+               uint16 blurred1 = (w1 | (w1 >> 1) | (w1 >> 2) | (w1 >> 3)) & 0x00FF;\r
+               uint16 blurred0 = (w0 | (w0 >> 1) | (w0 >> 2) | (w0 >> 3)) & 0x00FF;\r
+\r
+               for(int8 i=7; i>=0; i--)\r
+               {\r
+                       uint8 color = (((blurred0 >> i) & 0x01) << 3)\r
+                               | (((blurred1 >> i) & 0x01) << 2)\r
+                               | (((blurred2 >> i) & 0x01) << 1)\r
+                               | ((blurred3 >> i) & 0x01);\r
+                       blurTable[bitPat][7 - i] = color;\r
+               }\r
+       }\r
+}\r
+\r
+void TogglePalette(void)\r
+{\r
+       if (palette == (uint32 *)colors)\r
+       {\r
+               palette = (uint32 *)altColors;\r
+               SpawnMessage("Color TV palette");\r
+       }\r
+       else\r
+       {\r
+               palette = (uint32 *)colors;\r
+               SpawnMessage("\"Master Color Values\" palette");\r
+       }\r
+}\r
+\r
+void CycleScreenTypes(void)\r
+{\r
+       char scrTypeStr[3][40] = { "Color TV", "White monochrome", "Green monochrome" };\r
+\r
+       screenType++;\r
+\r
+       if (screenType == ST_LAST_ENTRY)\r
+               screenType = ST_FIRST_ENTRY;\r
+\r
+       SpawnMessage("%s", scrTypeStr[screenType]);\r
+}\r
+\r
+static uint32 msgTicks = 0;\r
+static char message[4096];\r
+\r
+void SpawnMessage(const char * text, ...)\r
+{\r
+       va_list arg;\r
+\r
+       va_start(arg, text);\r
+       vsprintf(message, text, arg);\r
+       va_end(arg);\r
+\r
+       msgTicks = 120;\r
+}\r
+\r
+static void DrawString2(uint32 x, uint32 y, uint32 color);\r
+static void DrawString(void)\r
+{\r
+//This approach works, and seems to be fast enough... Though it probably would\r
+//be better to make the oversized font to match this one...\r
+       for(uint32 x=7; x<=9; x++)\r
+               for(uint32 y=7; y<=9; y++)\r
+                       DrawString2(x, y, 0x00000000);\r
+\r
+       DrawString2(8, 8, 0x0020FF20);\r
+}\r
+\r
+static void DrawString2(uint32 x, uint32 y, uint32 color)\r
+{\r
+//uint32 x = 8, y = 8;\r
+       uint32 length = strlen(message), address = x + (y * VIRTUAL_SCREEN_WIDTH);\r
+//     uint32 color = 0x0020FF20;\r
+//This could be done ahead of time, instead of on each pixel...\r
+//(Now it is!)\r
+       uint8 nBlue = (color >> 16) & 0xFF, nGreen = (color >> 8) & 0xFF, nRed = color & 0xFF;\r
+\r
+       for(uint32 i=0; i<length; i++)\r
+       {\r
+               uint8 c = message[i];\r
+               c = (c < 32 ? 0 : c - 32);\r
+               uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;\r
+\r
+               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)\r
+               {\r
+                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)\r
+                       {\r
+/*                             uint8 fontTrans = font1[fontAddr++];\r
+//                             uint32 newTrans = (fontTrans * transparency / 255) << 24;\r
+                               uint32 newTrans = fontTrans << 24;\r
+                               uint32 pixel = newTrans | color;\r
+\r
+                               *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH)) = pixel;//*/\r
+\r
+                               uint8 trans = font1[fontAddr++];\r
+\r
+                               if (trans)\r
+                               {\r
+                                       uint32 existingColor = *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH));\r
+\r
+                                       uint8 eBlue = (existingColor >> 16) & 0xFF,\r
+                                               eGreen = (existingColor >> 8) & 0xFF,\r
+                                               eRed = existingColor & 0xFF;\r
+\r
+//This could be sped up by using a table of 5 + 5 + 5 bits (32 levels transparency -> 32768 entries)\r
+//Here we've modified it to have 33 levels of transparency (could have any # we want!)\r
+//because dividing by 32 is faster than dividing by 31...!\r
+                                       uint8 invTrans = 255 - trans;\r
+\r
+                                       uint32 bRed   = (eRed   * invTrans + nRed   * trans) / 255;\r
+                                       uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;\r
+                                       uint32 bBlue  = (eBlue  * invTrans + nBlue  * trans) / 255;\r
+\r
+//THIS IS NOT ENDIAN SAFE\r
+                                       *(scrBuffer + address + xx + (yy * VIRTUAL_SCREEN_WIDTH)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               address += FONT_WIDTH;\r
+       }\r
+}\r
+\r
+static void Render40ColumnTextLine(uint8 line)\r
+{\r
+       uint32 pixelOn = (screenType == ST_GREEN_MONO ? 0xFF61FF61 : 0xFFFFFFFF);\r
+\r
+       for(int x=0; x<40; x++)\r
+       {\r
+               uint8 chr = ram[lineAddrLoRes[line] + (displayPage2 ? 0x0400 : 0x0000) + x];\r
+\r
+               // Render character at (x, y)\r
+\r
+               for(int cy=0; cy<8; cy++)\r
+               {\r
+                       for(int cx=0; cx<7; cx++)\r
+                       {\r
+                               uint32 pixel = 0xFF000000;\r
+\r
+                               if (!alternateCharset)\r
+                               {\r
+                                       if (textChar[((chr & 0x3F) * 56) + cx + (cy * 7)])\r
+//                                             pixel = 0xFFFFFFFF;\r
+                                               pixel = pixelOn;\r
+\r
+                                       if (chr < 0x80)\r
+                                               pixel = pixel ^ (screenType == ST_GREEN_MONO ? 0x0061FF61 : 0x00FFFFFF);\r
+\r
+                                       if ((chr & 0xC0) == 0x40 && flash)\r
+                                               pixel = 0xFF000000;\r
+                               }\r
+                               else\r
+                               {\r
+                                       if (textChar2e[(chr * 56) + cx + (cy * 7)])\r
+//                                             pixel = 0xFFFFFFFF;\r
+                                               pixel = pixelOn;\r
+                               }\r
+\r
+//                             scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8) + (cx * 2) + 0 + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+//                             scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8) + (cx * 2) + 1 + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+                               scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 0 + (cy * VIRTUAL_SCREEN_WIDTH * 2)] = pixel;\r
+                               scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 1 + (cy * VIRTUAL_SCREEN_WIDTH * 2)] = pixel;\r
+\r
+                               if (screenType == ST_GREEN_MONO)\r
+                                       pixel = 0xFF000000;\r
+\r
+                               {\r
+                               scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 0 + (((cy * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+                               scrBuffer[(x * 7 * 2) + (line * VIRTUAL_SCREEN_WIDTH * 8 * 2) + (cx * 2) + 1 + (((cy * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+static void Render40ColumnText(void)\r
+{\r
+       for(uint8 line=0; line<24; line++)\r
+               Render40ColumnTextLine(line);\r
+}\r
+\r
+static void RenderLoRes(uint16 toLine/*= 24*/)\r
+{\r
+// NOTE: The green mono rendering doesn't skip every other line... !!! FIX !!!\r
+/*\r
+Note that these colors correspond to the bit patterns generated by the numbers 0-F in order:\r
+Color #s correspond to the bit patterns in reverse... Interesting!\r
+\r
+00 00 00 ->  0 [0000] -> 0 (lores color #)\r
+3c 4d 00 ->  8 [0001] -> 8?            BROWN\r
+00 5d 3c ->  4 [0010] -> 4?            DARK GREEN\r
+3c aa 3c -> 12 [0011] -> 12?   LIGHT GREEN (GREEN)\r
+41 30 7d ->  2 [0100] -> 2?            DARK BLUE\r
+7d 7d 7d -> 10 [0101] -> 10?   LIGHT GRAY\r
+41 8e ba ->  6 [0110] -> 6?            MEDIUM BLUE (BLUE)\r
+7d db ba -> 14 [0111] -> 14?   AQUAMARINE (AQUA)\r
+7d 20 41 ->  1 [1000] -> 1?            DEEP RED (MAGENTA)\r
+ba 6d 41 ->  9 [1001] -> 9?            ORANGE\r
+7d 7d 7d ->  5 [1010] -> 5?            DARK GRAY\r
+ba cb 7d -> 13 [1011] -> 13?   YELLOW\r
+be 51 be ->  3 [1100] -> 3             PURPLE (VIOLET)\r
+fb 9e be -> 11 [1101] -> 11?   PINK\r
+be ae fb ->  7 [1110] -> 7?            LIGHT BLUE (CYAN)\r
+fb fb fb -> 15 [1111] -> 15            WHITE\r
+*/\r
+       uint8 mirrorNybble[16] = { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 };\r
+\r
+//This is the old "perfect monitor" rendering code...\r
+/*     if (screenType != ST_COLOR_TV) // Not correct, but for now...\r
+//if (1)\r
+       {\r
+               for(uint16 y=0; y<toLine; y++)\r
+               {\r
+                       for(uint16 x=0; x<40; x++)\r
+                       {\r
+                               uint8 scrByte = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x];\r
+                               uint32 pixel = palette[scrByte & 0x0F];\r
+       \r
+                               for(int cy=0; cy<4; cy++)\r
+                                       for(int cx=0; cx<14; cx++)\r
+                                               scrBuffer[((x * 14) + cx) + (((y * 8) + cy) * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+       \r
+                               pixel = palette[scrByte >> 4];\r
+       \r
+                               for(int cy=4; cy<8; cy++)\r
+                                       for(int cx=0; cx<14; cx++)\r
+                                               scrBuffer[(x * 14) + (y * VIRTUAL_SCREEN_WIDTH * 8) + cx + (cy * VIRTUAL_SCREEN_WIDTH)] = pixel;\r
+                       }\r
+               }\r
+       }\r
+       else//*/\r
+\r
+       uint32 pixelOn = (screenType == ST_WHITE_MONO ? 0xFFFFFFFF : 0xFF61FF61);\r
+\r
+       for(uint16 y=0; y<toLine; y++)\r
+       {\r
+               // Do top half of lores screen bytes...\r
+\r
+               uint32 previous3Bits = 0;\r
+\r
+               for(uint16 x=0; x<40; x+=2)\r
+               {\r
+                       uint8 scrByte1 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 0] & 0x0F;\r
+                       uint8 scrByte2 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 1] & 0x0F;\r
+                       scrByte1 = mirrorNybble[scrByte1];\r
+                       scrByte2 = mirrorNybble[scrByte2];\r
+                       // This is just a guess, but it'll have to do for now...\r
+                       uint32 pixels = previous3Bits | (scrByte1 << 24) | (scrByte1 << 20) | (scrByte1 << 16)\r
+                               | ((scrByte1 & 0x0C) << 12) | ((scrByte2 & 0x03) << 12)\r
+                               | (scrByte2 << 8) | (scrByte2 << 4) | scrByte2;\r
+\r
+                       // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+                       // 0ppp 1111 1111 1111 11|11 1111 1111 1111\r
+                       // 31   27   23   19   15    11   7    3  0\r
+\r
+                       if (screenType == ST_COLOR_TV)\r
+                       {\r
+                               for(uint8 i=0; i<7; i++)\r
+                               {\r
+                                       uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+                                       pixels <<= 4;\r
+\r
+                                       for(uint8 j=0; j<4; j++)\r
+                                       {\r
+                                               uint8 color = blurTable[bitPat][j];\r
+\r
+                                               for(uint32 cy=0; cy<8; cy++)\r
+                                               {\r
+                                                       scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+//                                                     scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+                                               }\r
+                                       }\r
+                               }\r
+\r
+                               previous3Bits = pixels & 0x70000000;\r
+                       }\r
+                       else\r
+                       {\r
+                               for(int j=0; j<28; j++)\r
+                               {\r
+                                       for(uint32 cy=0; cy<8; cy++)\r
+                                       {\r
+                                               scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+//                                             scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+                                       }\r
+\r
+                                       pixels <<= 1;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               // Now do bottom half...\r
+\r
+               previous3Bits = 0;\r
+\r
+               for(uint16 x=0; x<40; x+=2)\r
+               {\r
+                       uint8 scrByte1 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 0] >> 4;\r
+                       uint8 scrByte2 = ram[lineAddrLoRes[y] + (displayPage2 ? 0x0400 : 0x0000) + x + 1] >> 4;\r
+                       scrByte1 = mirrorNybble[scrByte1];\r
+                       scrByte2 = mirrorNybble[scrByte2];\r
+                       // This is just a guess, but it'll have to do for now...\r
+                       uint32 pixels = previous3Bits | (scrByte1 << 24) | (scrByte1 << 20) | (scrByte1 << 16)\r
+                               | ((scrByte1 & 0x0C) << 12) | ((scrByte2 & 0x03) << 12)\r
+                               | (scrByte2 << 8) | (scrByte2 << 4) | scrByte2;\r
+\r
+                       // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+                       // 0ppp 1111 1111 1111 11|11 1111 1111 1111\r
+                       // 31   27   23   19   15    11   7    3  0\r
+\r
+                       if (screenType == ST_COLOR_TV)\r
+                       {\r
+                               for(uint8 i=0; i<7; i++)\r
+                               {\r
+                                       uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+                                       pixels <<= 4;\r
+\r
+                                       for(uint8 j=0; j<4; j++)\r
+                                       {\r
+                                               uint8 color = blurTable[bitPat][j];\r
+\r
+                                               for(uint32 cy=8; cy<16; cy++)\r
+                                               {\r
+                                                       scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+//                                                     scrBuffer[((x * 14) + (i * 4) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+                                               }\r
+                                       }\r
+                               }\r
+\r
+                               previous3Bits = pixels & 0x70000000;\r
+                       }\r
+                       else\r
+                       {\r
+                               for(int j=0; j<28; j++)\r
+                               {\r
+                                       for(uint32 cy=8; cy<16; cy++)\r
+                                       {\r
+                                               scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+//                                             scrBuffer[((x * 14) + j) + (((y * 16) + cy) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+                                       }\r
+\r
+                                       pixels <<= 1;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+static void RenderHiRes(uint16 toLine/*= 192*/)\r
+{\r
+       uint32 pixelOn = (screenType == ST_WHITE_MONO ? 0xFFFFFFFF : 0xFF61FF61);\r
+\r
+       for(uint16 y=0; y<toLine; y++)\r
+       {\r
+               uint16 previousLoPixel = 0;\r
+               uint32 previous3bits = 0;\r
+\r
+               for(uint16 x=0; x<40; x+=2)\r
+               {\r
+                       uint8 screenByte = ram[lineAddrHiRes[y] + (displayPage2 ? 0x2000 : 0x0000) + x];\r
+                       uint32 pixels = appleHiresToMono[previousLoPixel | screenByte];\r
+                       previousLoPixel = (screenByte << 2) & 0x0100;\r
+\r
+                       screenByte = ram[lineAddrHiRes[y] + (displayPage2 ? 0x2000 : 0x0000) + x + 1];\r
+                       uint32 pixels2 = appleHiresToMono[previousLoPixel | screenByte];\r
+                       previousLoPixel = (screenByte << 2) & 0x0100;\r
+\r
+                       pixels = previous3bits | (pixels << 14) | pixels2;\r
+\r
+                       // We now have 28 pixels (expanded from 14) in word: mask is $0F FF FF FF\r
+                       // 0ppp 1111 1111 1111 1111 1111 1111 1111\r
+                       // 31   27   23   19   15   11   7    3  0\r
+\r
+                       if (screenType == ST_COLOR_TV)\r
+                       {\r
+                               for(uint8 i=0; i<7; i++)\r
+                               {\r
+                                       uint16 bitPat = (pixels & 0x7F000000) >> 20;\r
+                                       pixels <<= 4;\r
+\r
+                                       for(uint8 j=0; j<4; j++)\r
+                                       {\r
+                                               uint8 color = blurTable[bitPat][j];\r
+#if 0\r
+//This doesn't seem to make things go any faster...\r
+//It's the OpenGL render that's faster... Hmm...\r
+                                               scrBuffer[(x * 14) + (i * 4) + j + (y * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+#else\r
+                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+                                               scrBuffer[(x * 14) + (i * 4) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = palette[color];\r
+#endif\r
+                                       }\r
+                               }\r
+\r
+                               previous3bits = pixels & 0x70000000;\r
+                       }\r
+                       else\r
+                       {\r
+                               for(int j=0; j<28; j++)\r
+                               {\r
+                                       scrBuffer[(x * 14) + j + (((y * 2) + 0) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+\r
+                                       if (screenType == ST_GREEN_MONO)\r
+                                               pixels &= 0x07FFFFFF;\r
+\r
+                                       scrBuffer[(x * 14) + j + (((y * 2) + 1) * VIRTUAL_SCREEN_WIDTH)] = (pixels & 0x08000000 ? pixelOn : 0xFF000000);\r
+                                       pixels <<= 1;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+void RenderVideoFrame(void)\r
+{\r
+//temp...\r
+/*RenderLoRes();\r
+RenderScreenBuffer();\r
+return;//*/\r
+\r
+       if (textMode)\r
+       {\r
+               // There's prolly more to it than this (like 80 column text), but this'll have to do for now...\r
+               Render40ColumnText();\r
+       }\r
+       else\r
+       {\r
+               if (mixedMode)\r
+               {\r
+                       if (hiRes)\r
+                       {\r
+                               RenderHiRes(160);\r
+                               Render40ColumnTextLine(20);\r
+                               Render40ColumnTextLine(21);\r
+                               Render40ColumnTextLine(22);\r
+                               Render40ColumnTextLine(23);\r
+                       }\r
+                       else\r
+                       {\r
+                               RenderLoRes(20);\r
+                               Render40ColumnTextLine(20);\r
+                               Render40ColumnTextLine(21);\r
+                               Render40ColumnTextLine(22);\r
+                               Render40ColumnTextLine(23);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       if (hiRes)\r
+                               RenderHiRes();\r
+                       else\r
+                               RenderLoRes();\r
+               }\r
+       }\r
+\r
+       if (msgTicks)\r
+       {\r
+               DrawString();\r
+               msgTicks--;\r
+       }\r
+\r
+       RenderScreenBuffer();\r
+}\r
diff --git a/src/applevideo.h b/src/applevideo.h
new file mode 100755 (executable)
index 0000000..975dced
--- /dev/null
@@ -0,0 +1,25 @@
+//\r
+// Apple 2 video support\r
+//\r
+\r
+#ifndef __APPLEVIDEO_H__\r
+#define __APPLEVIDEO_H__\r
+\r
+// Global variables (exported)\r
+\r
+extern bool flash;\r
+extern bool textMode;\r
+extern bool mixedMode;\r
+extern bool displayPage2;\r
+extern bool hiRes;\r
+extern bool alternateCharset;\r
+\r
+// Functions (exported)\r
+\r
+void SetupBlurTable(void);\r
+void TogglePalette(void);\r
+void CycleScreenTypes(void);\r
+void SpawnMessage(const char * text, ...);\r
+void RenderVideoFrame(void);\r
+\r
+#endif // __APPLEVIDEO_H__\r
diff --git a/src/ay8910.cpp b/src/ay8910.cpp
new file mode 100755 (executable)
index 0000000..d9e924e
--- /dev/null
@@ -0,0 +1,694 @@
+/***************************************************************************\r
+\r
+  ay8910.cpp\r
+\r
+  Emulation of the AY-3-8910 / YM2149 sound chip.\r
+\r
+  Based on various code snippets by Ville Hallik, Michael Cuddy,\r
+  Tatsuyuki Satoh, Fabrice Frances, Nicola Salmoria.\r
+\r
+***************************************************************************/\r
+\r
+// \r
+// From mame.txt (http://www.mame.net/readme.html)\r
+// \r
+// VI. Reuse of Source Code\r
+// --------------------------\r
+//    This chapter might not apply to specific portions of MAME (e.g. CPU\r
+//    emulators) which bear different copyright notices.\r
+//    The source code cannot be used in a commercial product without the written\r
+//    authorization of the authors. Use in non-commercial products is allowed, and\r
+//    indeed encouraged.  If you use portions of the MAME source code in your\r
+//    program, however, you must make the full source code freely available as\r
+//    well.\r
+//    Usage of the _information_ contained in the source code is free for any use.\r
+//    However, given the amount of time and energy it took to collect this\r
+//    information, if you find new information we would appreciate if you made it\r
+//    freely available as well.\r
+// \r
+\r
+// JLH: Commented out MAME specific crap\r
+\r
+#include <string.h>                                                            // for memset()\r
+#include "ay8910.h"\r
+\r
+#define MAX_OUTPUT 0x7FFF\r
+\r
+// See AY8910_set_clock() for definition of STEP\r
+#define STEP 0x8000\r
+\r
+struct AY8910\r
+{\r
+       int Channel;\r
+       int SampleRate;\r
+//     mem_read_handler PortAread;\r
+//     mem_read_handler PortBread;\r
+//     mem_write_handler PortAwrite;\r
+//     mem_write_handler PortBwrite;\r
+       int register_latch;\r
+       unsigned char Regs[16];\r
+       int lastEnable;\r
+       unsigned int UpdateStep;\r
+       int PeriodA,PeriodB,PeriodC,PeriodN,PeriodE;\r
+       int CountA,CountB,CountC,CountN,CountE;\r
+       unsigned int VolA,VolB,VolC,VolE;\r
+       unsigned char EnvelopeA,EnvelopeB,EnvelopeC;\r
+       unsigned char OutputA,OutputB,OutputC,OutputN;\r
+       signed char CountEnv;\r
+       unsigned char Hold,Alternate,Attack,Holding;\r
+       int RNG;\r
+       unsigned int VolTable[32];\r
+};\r
+\r
+/* register id's */\r
+#define AY_AFINE       (0)\r
+#define AY_ACOARSE     (1)\r
+#define AY_BFINE       (2)\r
+#define AY_BCOARSE     (3)\r
+#define AY_CFINE       (4)\r
+#define AY_CCOARSE     (5)\r
+#define AY_NOISEPER    (6)\r
+#define AY_ENABLE      (7)\r
+#define AY_AVOL                (8)\r
+#define AY_BVOL                (9)\r
+#define AY_CVOL                (10)\r
+#define AY_EFINE       (11)\r
+#define AY_ECOARSE     (12)\r
+#define AY_ESHAPE      (13)\r
+\r
+#define AY_PORTA       (14)\r
+#define AY_PORTB       (15)\r
+\r
+\r
+static struct AY8910 AYPSG[MAX_8910];          /* array of PSG's */\r
+\r
+\r
+void _AYWriteReg(int n, int r, int v)\r
+{\r
+       struct AY8910 *PSG = &AYPSG[n];\r
+       int old;\r
+\r
+       PSG->Regs[r] = v;\r
+\r
+       /* A note about the period of tones, noise and envelope: for speed reasons, *\r
+        * we count down from the period to 0, but careful studies of the chip      * \r
+        * output prove that it instead counts up from 0 until the counter becomes  * \r
+        * greater or equal to the period. This is an important difference when the * \r
+        * program is rapidly changing the period to modulate the sound.            * \r
+        * To compensate for the difference, when the period is changed we adjust   * \r
+        * our internal counter.                                                    * \r
+        * Also, note that period = 0 is the same as period = 1. This is mentioned  * \r
+        * in the YM2203 data sheets. However, this does NOT apply to the Envelope  * \r
+        * period. In that case, period = 0 is half as period = 1.                  */\r
+       switch (r)\r
+       {\r
+       case AY_AFINE:\r
+       case AY_ACOARSE:\r
+               PSG->Regs[AY_ACOARSE] &= 0x0F;\r
+               old = PSG->PeriodA;\r
+               PSG->PeriodA = (PSG->Regs[AY_AFINE] + 256 * PSG->Regs[AY_ACOARSE]) * PSG->UpdateStep;\r
+\r
+               if (PSG->PeriodA == 0) PSG->PeriodA = PSG->UpdateStep;\r
+\r
+               PSG->CountA += PSG->PeriodA - old;\r
+\r
+               if (PSG->CountA <= 0) PSG->CountA = 1;\r
+               break;\r
+       case AY_BFINE:\r
+       case AY_BCOARSE:\r
+               PSG->Regs[AY_BCOARSE] &= 0x0F;\r
+               old = PSG->PeriodB;\r
+               PSG->PeriodB = (PSG->Regs[AY_BFINE] + 256 * PSG->Regs[AY_BCOARSE]) * PSG->UpdateStep;\r
+\r
+               if (PSG->PeriodB == 0) PSG->PeriodB = PSG->UpdateStep;\r
+\r
+               PSG->CountB += PSG->PeriodB - old;\r
+\r
+               if (PSG->CountB <= 0) PSG->CountB = 1;\r
+               break;\r
+       case AY_CFINE:\r
+       case AY_CCOARSE:\r
+               PSG->Regs[AY_CCOARSE] &= 0x0F;\r
+               old = PSG->PeriodC;\r
+               PSG->PeriodC = (PSG->Regs[AY_CFINE] + 256 * PSG->Regs[AY_CCOARSE]) * PSG->UpdateStep;\r
+\r
+               if (PSG->PeriodC == 0) PSG->PeriodC = PSG->UpdateStep;\r
+\r
+               PSG->CountC += PSG->PeriodC - old;\r
+\r
+               if (PSG->CountC <= 0) PSG->CountC = 1;\r
+               break;\r
+       case AY_NOISEPER:\r
+               PSG->Regs[AY_NOISEPER] &= 0x1F;\r
+               old = PSG->PeriodN;\r
+               PSG->PeriodN = PSG->Regs[AY_NOISEPER] * PSG->UpdateStep;\r
+\r
+               if (PSG->PeriodN == 0) PSG->PeriodN = PSG->UpdateStep;\r
+\r
+               PSG->CountN += PSG->PeriodN - old;\r
+\r
+               if (PSG->CountN <= 0) PSG->CountN = 1;\r
+               break;\r
+       case AY_ENABLE:\r
+               if ((PSG->lastEnable == -1) ||\r
+                   ((PSG->lastEnable & 0x40) != (PSG->Regs[AY_ENABLE] & 0x40)))\r
+               {\r
+                       /* write out 0xff if port set to input */\r
+//                     if (PSG->PortAwrite)\r
+//                             (*PSG->PortAwrite)(0, (UINT8) ((PSG->Regs[AY_ENABLE] & 0x40) ? PSG->Regs[AY_PORTA] : 0xff));    // [TC: UINT8 cast]\r
+               }\r
+\r
+               if ((PSG->lastEnable == -1) ||\r
+                   ((PSG->lastEnable & 0x80) != (PSG->Regs[AY_ENABLE] & 0x80)))\r
+               {\r
+                       /* write out 0xff if port set to input */\r
+//                     if (PSG->PortBwrite)\r
+//                             (*PSG->PortBwrite)(0, (UINT8) ((PSG->Regs[AY_ENABLE] & 0x80) ? PSG->Regs[AY_PORTB] : 0xff));    // [TC: UINT8 cast]\r
+               }\r
+\r
+               PSG->lastEnable = PSG->Regs[AY_ENABLE];\r
+               break;\r
+       case AY_AVOL:\r
+               PSG->Regs[AY_AVOL] &= 0x1F;\r
+               PSG->EnvelopeA = PSG->Regs[AY_AVOL] & 0x10;\r
+               PSG->VolA = PSG->EnvelopeA ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_AVOL] ? PSG->Regs[AY_AVOL]*2+1 : 0];\r
+               break;\r
+       case AY_BVOL:\r
+               PSG->Regs[AY_BVOL] &= 0x1F;\r
+               PSG->EnvelopeB = PSG->Regs[AY_BVOL] & 0x10;\r
+               PSG->VolB = PSG->EnvelopeB ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_BVOL] ? PSG->Regs[AY_BVOL]*2+1 : 0];\r
+               break;\r
+       case AY_CVOL:\r
+               PSG->Regs[AY_CVOL] &= 0x1F;\r
+               PSG->EnvelopeC = PSG->Regs[AY_CVOL] & 0x10;\r
+               PSG->VolC = PSG->EnvelopeC ? PSG->VolE : PSG->VolTable[PSG->Regs[AY_CVOL] ? PSG->Regs[AY_CVOL]*2+1 : 0];\r
+               break;\r
+       case AY_EFINE:\r
+       case AY_ECOARSE:\r
+               old = PSG->PeriodE;\r
+               PSG->PeriodE = ((PSG->Regs[AY_EFINE] + 256 * PSG->Regs[AY_ECOARSE])) * PSG->UpdateStep;\r
+\r
+               if (PSG->PeriodE == 0) PSG->PeriodE = PSG->UpdateStep / 2;\r
+\r
+               PSG->CountE += PSG->PeriodE - old;\r
+\r
+               if (PSG->CountE <= 0) PSG->CountE = 1;\r
+               break;\r
+       case AY_ESHAPE:\r
+               /* envelope shapes:\r
+               C AtAlH\r
+               0 0 x x  \___\r
+\r
+               0 1 x x  /___\r
+\r
+               1 0 0 0  \\\\\r
+\r
+               1 0 0 1  \___\r
+\r
+               1 0 1 0  \/\/\r
+                         ___\r
+               1 0 1 1  \\r
+\r
+               1 1 0 0  ////\r
+                         ___\r
+               1 1 0 1  /\r
+\r
+               1 1 1 0  /\/\\r
+\r
+               1 1 1 1  /___\r
+\r
+               The envelope counter on the AY-3-8910 has 16 steps. On the YM2149 it\r
+               has twice the steps, happening twice as fast. Since the end result is\r
+               just a smoother curve, we always use the YM2149 behaviour.\r
+               */\r
+               PSG->Regs[AY_ESHAPE] &= 0x0F;\r
+               PSG->Attack = (PSG->Regs[AY_ESHAPE] & 0x04) ? 0x1F : 0x00;\r
+\r
+               if ((PSG->Regs[AY_ESHAPE] & 0x08) == 0)\r
+               {\r
+                       /* if Continue = 0, map the shape to the equivalent one which has Continue = 1 */\r
+                       PSG->Hold = 1;\r
+                       PSG->Alternate = PSG->Attack;\r
+               }\r
+               else\r
+               {\r
+                       PSG->Hold = PSG->Regs[AY_ESHAPE] & 0x01;\r
+                       PSG->Alternate = PSG->Regs[AY_ESHAPE] & 0x02;\r
+               }\r
+\r
+               PSG->CountE = PSG->PeriodE;\r
+               PSG->CountEnv = 0x1F;\r
+               PSG->Holding = 0;\r
+               PSG->VolE = PSG->VolTable[PSG->CountEnv ^ PSG->Attack];\r
+\r
+               if (PSG->EnvelopeA) PSG->VolA = PSG->VolE;\r
+               if (PSG->EnvelopeB) PSG->VolB = PSG->VolE;\r
+               if (PSG->EnvelopeC) PSG->VolC = PSG->VolE;\r
+               break;\r
+       case AY_PORTA:\r
+               if (PSG->Regs[AY_ENABLE] & 0x40)\r
+               {\r
+//                     if (PSG->PortAwrite)\r
+//                             (*PSG->PortAwrite)(0, PSG->Regs[AY_PORTA]);\r
+//                     else\r
+//                             logerror("PC %04x: warning - write %02x to 8910 #%d Port A\n",activecpu_get_pc(),PSG->Regs[AY_PORTA],n);\r
+               }\r
+               else\r
+               {\r
+//                     logerror("warning: write to 8910 #%d Port A set as input - ignored\n",n);\r
+               }\r
+               break;\r
+       case AY_PORTB:\r
+               if (PSG->Regs[AY_ENABLE] & 0x80)\r
+               {\r
+//                     if (PSG->PortBwrite)\r
+//                             (*PSG->PortBwrite)(0, PSG->Regs[AY_PORTB]);\r
+//                     else\r
+//                             logerror("PC %04x: warning - write %02x to 8910 #%d Port B\n",activecpu_get_pc(),PSG->Regs[AY_PORTB],n);\r
+               }\r
+               else\r
+               {\r
+//                     logerror("warning: write to 8910 #%d Port B set as input - ignored\n",n);\r
+               }\r
+               break;\r
+       }\r
+}\r
+\r
+\r
+// /length/ is the number of samples we require\r
+// NB. This should be called at twice the 6522 IRQ rate or (eg) 60Hz if no IRQ.\r
+void AY8910Update(int chip, int16 ** buffer, int length)       // [TC: Removed static]\r
+{\r
+       struct AY8910 * PSG = &AYPSG[chip];\r
+       INT16 * buf1, * buf2, * buf3;\r
+       int outn;\r
+\r
+       buf1 = buffer[0];\r
+       buf2 = buffer[1];\r
+       buf3 = buffer[2];\r
+\r
+       /* The 8910 has three outputs, each output is the mix of one of the three    *\r
+        * tone generators and of the (single) noise generator. The two are mixed    *\r
+        * BEFORE going into the DAC. The formula to mix each channel is:            *\r
+        * (ToneOn | ToneDisable) & (NoiseOn | NoiseDisable).                        *\r
+        * Note that this means that if both tone and noise are disabled, the output *\r
+        * is 1, not 0, and can be modulated changing the volume.                    *\r
+        *                                                                           *\r
+        * If the channels are disabled, set their output to 1, and increase the     *\r
+        * counter, if necessary, so they will not be inverted during this update.   *\r
+        * Setting the output to 1 is necessary because a disabled channel is locked *\r
+        * into the ON state (see above); and it has no effect if the volume is 0.   *\r
+        * If the volume is 0, increase the counter, but don't touch the output.     */\r
+       if (PSG->Regs[AY_ENABLE] & 0x01)\r
+       {\r
+               if (PSG->CountA <= length * STEP) PSG->CountA += length * STEP;\r
+               PSG->OutputA = 1;\r
+       }\r
+       else if (PSG->Regs[AY_AVOL] == 0)\r
+       {\r
+               /* note that I do count += length, NOT count = length + 1. You might think *\r
+                * it's the same since the volume is 0, but doing the latter could cause   *\r
+                * interferencies when the program is rapidly modulating the volume.       */\r
+               if (PSG->CountA <= length * STEP) PSG->CountA += length * STEP;\r
+       }\r
+\r
+       if (PSG->Regs[AY_ENABLE] & 0x02)\r
+       {\r
+               if (PSG->CountB <= length * STEP) PSG->CountB += length * STEP;\r
+               PSG->OutputB = 1;\r
+       }\r
+       else if (PSG->Regs[AY_BVOL] == 0)\r
+       {\r
+               if (PSG->CountB <= length * STEP) PSG->CountB += length * STEP;\r
+       }\r
+\r
+       if (PSG->Regs[AY_ENABLE] & 0x04)\r
+       {\r
+               if (PSG->CountC <= length * STEP) PSG->CountC += length * STEP;\r
+               PSG->OutputC = 1;\r
+       }\r
+       else if (PSG->Regs[AY_CVOL] == 0)\r
+       {\r
+               if (PSG->CountC <= length * STEP) PSG->CountC += length * STEP;\r
+       }\r
+\r
+       /* for the noise channel we must not touch OutputN - it's also not necessary *\r
+        * since we use outn.                                                        */\r
+       if ((PSG->Regs[AY_ENABLE] & 0x38) == 0x38)      /* all off */\r
+               if (PSG->CountN <= length * STEP) PSG->CountN += length * STEP;\r
+\r
+       outn = (PSG->OutputN | PSG->Regs[AY_ENABLE]);\r
+\r
+       /* buffering loop */\r
+       while (length)\r
+       {\r
+               int vola, volb, volc;\r
+               int left;\r
+\r
+               /* vola, volb and volc keep track of how long each square wave stays *\r
+                * in the 1 position during the sample period.                       */\r
+               vola = volb = volc = 0;\r
+\r
+               left = STEP;\r
+               do\r
+               {\r
+                       int nextevent;\r
+\r
+                       if (PSG->CountN < left) nextevent = PSG->CountN;\r
+                       else nextevent = left;\r
+\r
+                       if (outn & 0x08)\r
+                       {\r
+                               if (PSG->OutputA) vola += PSG->CountA;\r
+\r
+                               PSG->CountA -= nextevent;\r
+                               /* PeriodA is the half period of the square wave. Here, in each    *\r
+                                * loop I add PeriodA twice, so that at the end of the loop the    *\r
+                                * square wave is in the same status (0 or 1) it was at the start. *\r
+                                * vola is also incremented by PeriodA, since the wave has been 1  *\r
+                                * exactly half of the time, regardless of the initial position.   *\r
+                                * If we exit the loop in the middle, OutputA has to be inverted   *\r
+                                * and vola incremented only if the exit status of the square      *\r
+                                * wave is 1.                                                      */\r
+                               while (PSG->CountA <= 0)\r
+                               {\r
+                                       PSG->CountA += PSG->PeriodA;\r
+\r
+                                       if (PSG->CountA > 0)\r
+                                       {\r
+                                               PSG->OutputA ^= 1;\r
+\r
+                                               if (PSG->OutputA) vola += PSG->PeriodA;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountA += PSG->PeriodA;\r
+                                       vola += PSG->PeriodA;\r
+                               }\r
+\r
+                               if (PSG->OutputA) vola -= PSG->CountA;\r
+                       }\r
+                       else\r
+                       {\r
+                               PSG->CountA -= nextevent;\r
+                               while (PSG->CountA <= 0)\r
+                               {\r
+                                       PSG->CountA += PSG->PeriodA;\r
+\r
+                                       if (PSG->CountA > 0)\r
+                                       {\r
+                                               PSG->OutputA ^= 1;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountA += PSG->PeriodA;\r
+                               }\r
+                       }\r
+\r
+                       if (outn & 0x10)\r
+                       {\r
+                               if (PSG->OutputB) volb += PSG->CountB;\r
+\r
+                               PSG->CountB -= nextevent;\r
+\r
+                               while (PSG->CountB <= 0)\r
+                               {\r
+                                       PSG->CountB += PSG->PeriodB;\r
+\r
+                                       if (PSG->CountB > 0)\r
+                                       {\r
+                                               PSG->OutputB ^= 1;\r
+\r
+                                               if (PSG->OutputB) volb += PSG->PeriodB;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountB += PSG->PeriodB;\r
+                                       volb += PSG->PeriodB;\r
+                               }\r
+\r
+                               if (PSG->OutputB) volb -= PSG->CountB;\r
+                       }\r
+                       else\r
+                       {\r
+                               PSG->CountB -= nextevent;\r
+\r
+                               while (PSG->CountB <= 0)\r
+                               {\r
+                                       PSG->CountB += PSG->PeriodB;\r
+\r
+                                       if (PSG->CountB > 0)\r
+                                       {\r
+                                               PSG->OutputB ^= 1;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountB += PSG->PeriodB;\r
+                               }\r
+                       }\r
+\r
+                       if (outn & 0x20)\r
+                       {\r
+                               if (PSG->OutputC) volc += PSG->CountC;\r
+\r
+                               PSG->CountC -= nextevent;\r
+\r
+                               while (PSG->CountC <= 0)\r
+                               {\r
+                                       PSG->CountC += PSG->PeriodC;\r
+\r
+                                       if (PSG->CountC > 0)\r
+                                       {\r
+                                               PSG->OutputC ^= 1;\r
+\r
+                                               if (PSG->OutputC) volc += PSG->PeriodC;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountC += PSG->PeriodC;\r
+                                       volc += PSG->PeriodC;\r
+                               }\r
+\r
+                               if (PSG->OutputC) volc -= PSG->CountC;\r
+                       }\r
+                       else\r
+                       {\r
+                               PSG->CountC -= nextevent;\r
+\r
+                               while (PSG->CountC <= 0)\r
+                               {\r
+                                       PSG->CountC += PSG->PeriodC;\r
+\r
+                                       if (PSG->CountC > 0)\r
+                                       {\r
+                                               PSG->OutputC ^= 1;\r
+                                               break;\r
+                                       }\r
+\r
+                                       PSG->CountC += PSG->PeriodC;\r
+                               }\r
+                       }\r
+\r
+                       PSG->CountN -= nextevent;\r
+\r
+                       if (PSG->CountN <= 0)\r
+                       {\r
+                               /* Is noise output going to change? */\r
+                               if ((PSG->RNG + 1) & 0x00002)   /* (bit0^bit1)? */\r
+                               {\r
+                                       PSG->OutputN = ~PSG->OutputN;\r
+                                       outn = (PSG->OutputN | PSG->Regs[AY_ENABLE]);\r
+                               }\r
+\r
+                               /* The Random Number Generator of the 8910 is a 17-bit shift  *\r
+                                * register. The input to the shift register is bit0 XOR bit3 *\r
+                                * (bit0 is the output). This was verified on AY-3-8910 and   *\r
+                                * YM2149 chips.                                              *\r
+                                *                                                            *\r
+                                * The following is a fast way to compute bit17 = bit0^bit3.  *\r
+                                * Instead of doing all the logic operations, we only check   *\r
+                                * bit0, relying on the fact that after three shifts of the   *\r
+                                * register, what now is bit3 will become bit0, and will      *\r
+                                * invert, if necessary, bit14, which previously was bit17.   */\r
+                               if (PSG->RNG & 0x00001)\r
+                                       PSG->RNG ^= 0x24000; /* This version is called the "Galois configuration". */\r
+\r
+                               PSG->RNG >>= 1;\r
+                               PSG->CountN += PSG->PeriodN;\r
+                       }\r
+\r
+                       left -= nextevent;\r
+               }\r
+               while (left > 0);\r
+\r
+               /* update envelope */\r
+               if (PSG->Holding == 0)\r
+               {\r
+                       PSG->CountE -= STEP;\r
+\r
+                       if (PSG->CountE <= 0)\r
+                       {\r
+                               do\r
+                               {\r
+                                       PSG->CountEnv--;\r
+                                       PSG->CountE += PSG->PeriodE;\r
+                               }\r
+                               while (PSG->CountE <= 0);\r
+\r
+                               /* check envelope current position */\r
+                               if (PSG->CountEnv < 0)\r
+                               {\r
+                                       if (PSG->Hold)\r
+                                       {\r
+                                               if (PSG->Alternate)\r
+                                                       PSG->Attack ^= 0x1F;\r
+\r
+                                               PSG->Holding = 1;\r
+                                               PSG->CountEnv = 0;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               /* if CountEnv has looped an odd number of times (usually 1), *\r
+                                                * invert the output.                                         */\r
+                                               if (PSG->Alternate && (PSG->CountEnv & 0x20))\r
+                                                       PSG->Attack ^= 0x1F;\r
+\r
+                                               PSG->CountEnv &= 0x1F;\r
+                                       }\r
+                               }\r
+\r
+                               PSG->VolE = PSG->VolTable[PSG->CountEnv ^ PSG->Attack];\r
+                               /* reload volume */\r
+                               if (PSG->EnvelopeA) PSG->VolA = PSG->VolE;\r
+                               if (PSG->EnvelopeB) PSG->VolB = PSG->VolE;\r
+                               if (PSG->EnvelopeC) PSG->VolC = PSG->VolE;\r
+                       }\r
+               }\r
+\r
+#if 0\r
+               *(buf1++) = (vola * PSG->VolA) / STEP;\r
+               *(buf2++) = (volb * PSG->VolB) / STEP;\r
+               *(buf3++) = (volc * PSG->VolC) / STEP;\r
+#else  // [Tom's code...]\r
+               // Output PCM wave [-32768...32767] instead of MAME's voltage level [0...32767]\r
+               // - This allows for better s/w mixing\r
+\r
+               if (PSG->VolA)\r
+               {\r
+                       if (vola)\r
+                               *(buf1++) = (vola * PSG->VolA) / STEP;\r
+                       else\r
+                               *(buf1++) = -(int)PSG->VolA;\r
+               }\r
+               else\r
+                       *(buf1++) = 0;\r
+\r
+               if (PSG->VolB)\r
+               {\r
+                       if (volb)\r
+                               *(buf2++) = (volb * PSG->VolB) / STEP;\r
+                       else\r
+                               *(buf2++) = -(int)PSG->VolB;\r
+               }\r
+               else\r
+                       *(buf2++) = 0;\r
+\r
+               if (PSG->VolC)\r
+               {\r
+                       if (volc)\r
+                               *(buf3++) = (volc * PSG->VolC) / STEP;\r
+                       else\r
+                               *(buf3++) = -(int)PSG->VolC;\r
+               }\r
+               else\r
+                       *(buf3++) = 0;\r
+#endif\r
+               length--;\r
+       }\r
+}\r
+\r
+\r
+static void AY8910_set_clock(int chip, int clock)\r
+{\r
+       struct AY8910 * PSG = &AYPSG[chip];\r
+\r
+       /* The step clock for the tone and noise generators is the chip clock    *\r
+        * divided by 8; for the envelope generator of the AY-3-8910, it is half *\r
+        * that much (clock/16), but the envelope of the YM2149 goes twice as    *\r
+        * fast, therefore again clock/8.                                        *\r
+        * Here we calculate the number of steps which happen during one sample  *\r
+        * at the given sample rate. No. of events = sample rate / (clock/8).    *\r
+        * STEP is a multiplier used to turn the fraction into a fixed point     *\r
+        * number.                                                               */\r
+       PSG->UpdateStep = (unsigned int)(((double)STEP * PSG->SampleRate * 8 + clock / 2) / clock);     // [TC: unsigned int cast]\r
+}\r
+\r
+\r
+static void build_mixer_table(int chip)\r
+{\r
+       struct AY8910 * PSG = &AYPSG[chip];\r
+\r
+       /* calculate the volume->voltage conversion table                     */\r
+       /* The AY-3-8910 has 16 levels, in a logarithmic scale (3dB per step) */\r
+       /* The YM2149 still has 16 levels for the tone generators, but 32 for */\r
+       /* the envelope generator (1.5dB per step).                           */\r
+       double out = MAX_OUTPUT;\r
+\r
+       for(int i=31; i>0; i--)\r
+       {\r
+               PSG->VolTable[i] = (unsigned int)(out + 0.5);   /* round to nearest */  // [TC: unsigned int cast]\r
+               out /= 1.188502227;     /* = 10 ^ (1.5/20) = 1.5dB */\r
+       }\r
+\r
+       PSG->VolTable[0] = 0;\r
+}\r
+\r
+\r
+void AY8910_reset(int chip)\r
+{\r
+       int i;\r
+       struct AY8910 * PSG = &AYPSG[chip];\r
+\r
+       PSG->register_latch = 0;\r
+       PSG->RNG = 1;\r
+       PSG->OutputA = 0;\r
+       PSG->OutputB = 0;\r
+       PSG->OutputC = 0;\r
+       PSG->OutputN = 0xFF;\r
+       PSG->lastEnable = -1;   /* force a write */\r
+\r
+       for(i=0; i<AY_PORTA; i++)\r
+               _AYWriteReg(chip, i, 0);        /* AYWriteReg() uses the timer system; we cannot */\r
+                                                                       /* call it at this time because the timer system */\r
+                                                                       /* has not been initialized.                     */\r
+}\r
+\r
+// This stuff looks like Tom's code, so let's streamline and un-MSHungarianize this shit:\r
+// [DONE]\r
+\r
+void AY8910_InitAll(int clock, int sampleRate)\r
+{\r
+       for(int chip=0; chip<MAX_8910; chip++)\r
+       {\r
+               struct AY8910 * PSG = &AYPSG[chip];\r
+\r
+               memset(PSG, 0, sizeof(struct AY8910));\r
+               PSG->SampleRate = sampleRate;\r
+               AY8910_set_clock(chip, clock);\r
+               build_mixer_table(chip);\r
+       }\r
+}\r
+\r
+void AY8910_InitClock(int clock)\r
+{\r
+       for(int chip=0; chip<MAX_8910; chip++)\r
+               AY8910_set_clock(chip, clock);\r
+}\r
+\r
+uint8 * AY8910_GetRegsPtr(uint16 chipNum)\r
+{\r
+       if (chipNum >= MAX_8910)\r
+               return NULL;\r
+\r
+       return &AYPSG[chipNum].Regs[0];\r
+}\r
diff --git a/src/ay8910.h b/src/ay8910.h
new file mode 100755 (executable)
index 0000000..f9910ef
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef AY8910_H\r
+#define AY8910_H\r
+\r
+#include "types.h"\r
+\r
+#define MAX_8910 4\r
+\r
+void _AYWriteReg(int n, int r, int v);\r
+void AY8910_reset(int chip);\r
+void AY8910Update(int chip, int16 ** buffer, int length);\r
+\r
+void AY8910_InitAll(int nClock, int nSampleRate);\r
+void AY8910_InitClock(int nClock);\r
+uint8 * AY8910_GetRegsPtr(uint16 nAyNum);\r
+\r
+#endif\r
diff --git a/src/charset.h b/src/charset.h
new file mode 100755 (executable)
index 0000000..ba91c6e
--- /dev/null
@@ -0,0 +1,860 @@
+//\r
+// The Apple II/IIe video generator character set\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// While we could pack things into bytes, it doesn't cost too much to have everything\r
+// unpacked as we have it here.\r
+//\r
+\r
+// Apple II character set has 64 chars (56 bytes for each character)\r
+\r
+char textChar[0x0E00] = {\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+// Apple IIe/IIc character set has 256 chars (56 bytes for each character)\r
+\r
+char textChar2e[0x3800] = {\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,\r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,\r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,\r
+       0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+#if 0\r
+char textChar[0x7000] = {\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+\r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+\r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, \r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \r
+       0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, \r
+       0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+};\r
+#endif\r
diff --git a/src/dis65c02.cpp b/src/dis65c02.cpp
new file mode 100755 (executable)
index 0000000..6197659
--- /dev/null
@@ -0,0 +1,178 @@
+//\r
+// 65C02 disassembler\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+\r
+#include <stdio.h>\r
+#include <string>\r
+#include "dis65c02.h"\r
+//#include "types.h"\r
+#include "v65c02.h"\r
+#include "log.h"\r
+\r
+using namespace std;\r
+\r
+// External shit\r
+\r
+extern V65C02REGS mainCPU;//Hm. Shouldn't we pass this shit in?\r
+\r
+// Private globals variables\r
+\r
+static uint8 op_mat[256] = {\r
+       14, 6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  2,  3,  3,  2,  14, 10, 14, 0,  8,  9,  9,  13,\r
+       8,  6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  3,  3,  3,  2,  14, 10, 14, 0,  9,  9,  9,  13,\r
+       14, 6,  0,  0,  0,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  0,  3,  3,  2,  14, 10, 14, 0,  0,  9,  9,  13,\r
+       14, 6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  11, 8,  8,  13,\r
+       13, 7,  5,  0,  3,  3,  3,  2,  14, 10, 14, 0,  12, 9,  9,  13,\r
+       13, 6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  3,  3,  4,  2,  14, 10, 14, 0,  8,  9,  9,  13,\r
+       1,  6,  1,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  3,  3,  4,  2,  14, 10, 14, 0,  9,  9,  10, 13,\r
+       1,  6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  0,  3,  3,  2,  14, 10, 14, 0,  0,  9,  9,  13,\r
+       1,  6,  0,  0,  2,  2,  2,  2,  14, 1,  14, 0,  8,  8,  8,  13,\r
+       13, 7,  5,  0,  0,  3,  3,  2,  14, 10, 14, 0,  0,  9,  9,  13  };\r
+\r
+static uint8 mnemonics[256][6] = {\r
+       "BRK  ","ORA  ","???  ","???  ","TSB  ","ORA  ","ASL  ","RMB0 ",\r
+       "PHP  ","ORA  ","ASL  ","???  ","TSB  ","ORA  ","ASL  ","BBR0 ",\r
+       "BPL  ","ORA  ","ORA  ","???  ","TRB  ","ORA  ","ASL  ","RMB1 ",\r
+       "CLC  ","ORA  ","INC  ","???  ","TRB  ","ORA  ","ASL  ","BBR1 ",\r
+       "JSR  ","AND  ","???  ","???  ","BIT  ","AND  ","ROL  ","RMB2 ",\r
+       "PLP  ","AND  ","ROL  ","???  ","BIT  ","AND  ","ROL  ","BBR2 ",\r
+       "BMI  ","AND  ","AND  ","???  ","BIT  ","AND  ","ROL  ","RMB3 ",\r
+       "SEC  ","AND  ","DEC  ","???  ","BIT  ","AND  ","ROL  ","BBR3 ",\r
+       "RTI  ","EOR  ","???  ","???  ","???  ","EOR  ","LSR  ","RMB4 ",\r
+       "PHA  ","EOR  ","LSR  ","???  ","JMP  ","EOR  ","LSR  ","BBR4 ",\r
+       "BVC  ","EOR  ","EOR  ","???  ","???  ","EOR  ","LSR  ","RMB5 ",\r
+       "CLI  ","EOR  ","PHY  ","???  ","???  ","EOR  ","LSR  ","BBR5 ",\r
+       "RTS  ","ADC  ","???  ","???  ","STZ  ","ADC  ","ROR  ","RMB6 ",\r
+       "PLA  ","ADC  ","ROR  ","???  ","JMP  ","ADC  ","ROR  ","BBR6 ",\r
+       "BVS  ","ADC  ","ADC  ","???  ","STZ  ","ADC  ","ROR  ","RMB7 ",\r
+       "SEI  ","ADC  ","PLY  ","???  ","JMP  ","ADC  ","ROR  ","BBR7 ",\r
+       "BRA  ","STA  ","???  ","???  ","STY  ","STA  ","STX  ","SMB0 ",\r
+       "DEY  ","BIT  ","TXA  ","???  ","STY  ","STA  ","STX  ","BBS0 ",\r
+       "BCC  ","STA  ","STA  ","???  ","STY  ","STA  ","STX  ","SMB1 ",\r
+       "TYA  ","STA  ","TXS  ","???  ","STZ  ","STA  ","STZ  ","BBS1 ",\r
+       "LDY  ","LDA  ","LDX  ","???  ","LDY  ","LDA  ","LDX  ","SMB2 ",\r
+       "TAY  ","LDA  ","TAX  ","???  ","LDY  ","LDA  ","LDX  ","BBS2 ",\r
+       "BCS  ","LDA  ","LDA  ","???  ","LDY  ","LDA  ","LDX  ","SMB3 ",\r
+       "CLV  ","LDA  ","TSX  ","???  ","LDY  ","LDA  ","LDX  ","BBS3 ",\r
+       "CPY  ","CMP  ","???  ","???  ","CPY  ","CMP  ","DEC  ","SMB4 ",\r
+       "INY  ","CMP  ","DEX  ","???  ","CPY  ","CMP  ","DEC  ","BBS4 ",\r
+       "BNE  ","CMP  ","CMP  ","???  ","???  ","CMP  ","DEC  ","SMB5 ",\r
+       "CLD  ","CMP  ","PHX  ","???  ","???  ","CMP  ","DEC  ","BBS5 ",\r
+       "CPX  ","SBC  ","???  ","???  ","CPX  ","SBC  ","INC  ","SMB6 ",\r
+       "INX  ","SBC  ","NOP  ","???  ","CPX  ","SBC  ","INC  ","BBS6 ",\r
+       "BEQ  ","SBC  ","SBC  ","???  ","???  ","SBC  ","INC  ","SMB7 ",\r
+       "SED  ","SBC  ","PLX  ","???  ","???  ","SBC  ","INC  ","BBS7 " };\r
+\r
+//\r
+// Display bytes in mem in hex\r
+//\r
+static void DisplayBytes(uint16 src, uint32 dst)\r
+{\r
+       WriteLog("%04X: ", src);\r
+       uint8 cnt = 0;                                                                          // Init counter...\r
+\r
+       if (src > dst)\r
+               dst += 0x10000;                                                                 // That should fix the FFFF bug...\r
+\r
+       for(uint32 i=src; i<dst; i++)\r
+       {\r
+               WriteLog("%02X ", mainCPU.RdMem(i));\r
+               cnt++;                                                                                  // Bump counter...\r
+       }\r
+\r
+       for(int i=cnt; i<5; i++)                                                        // Pad the leftover spaces...\r
+               WriteLog("   ");\r
+}\r
+\r
+//\r
+// Decode a 65C02 instruction\r
+//\r
+int Decode65C02(uint16 pc)\r
+{\r
+/*\r
+ 0) illegal\r
+ 1) imm = #$00\r
+ 2) zp = $00\r
+ 3) zpx = $00,X\r
+ 4) zpy = $00,Y\r
+ 5) izp = ($00)\r
+ 6) izx = ($00,X)\r
+ 7) izy = ($00),Y\r
+ 8) abs = $0000\r
+ 9) abx = $0000,X\r
+10) aby = $0000,Y\r
+11) ind = ($0000)\r
+12) iax = ($0000,X)\r
+13) rel = $0000 (PC-relative)\r
+14) inherent\r
+*/\r
+       char outbuf[80];\r
+\r
+       uint16 addr = pc;\r
+       uint8 opcode = mainCPU.RdMem(addr++);                           // Get the opcode\r
+\r
+       switch (op_mat[opcode])                                                         // Decode the addressing mode...\r
+       {\r
+       case 0:                                                                                         // Illegal\r
+               sprintf(outbuf, "???");\r
+               break;\r
+       case 1:                                                                                         // Immediate\r
+               sprintf(outbuf, "%s #$%02X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 2:                                                                                         // Zero page\r
+               sprintf(outbuf, "%s $%02X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 3:                                                                                         // Zero page, X\r
+               sprintf(outbuf, "%s $%02X,X", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 4:                                                                                         // Zero page, Y\r
+               sprintf(outbuf, "%s $%02X,Y", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 5:                                                                                         // Zero page indirect\r
+               sprintf(outbuf, "%s ($%02X)", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 6:                                                                                         // Zero page, X indirect\r
+               sprintf(outbuf, "%s ($%02X,X)", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 7:                                                                                         // Zero page, Y indirect\r
+               sprintf(outbuf, "%s ($%02X),Y", mnemonics[opcode], mainCPU.RdMem(addr++));\r
+               break;\r
+       case 8:                                                                                         // Absolute\r
+               sprintf(outbuf, "%s $%04X", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+               break;\r
+       case 9:                                                                                         // Absolute, X\r
+               sprintf(outbuf, "%s $%04X,X", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+               break;\r
+       case 10:                                                                                        // Absolute, Y\r
+               sprintf(outbuf, "%s $%04X,Y", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+               break;\r
+       case 11:                                                                                        // Indirect\r
+               sprintf(outbuf, "%s ($%04X)", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+               break;\r
+       case 12:                                                                                        // Indirect, X\r
+               sprintf(outbuf, "%s ($%04X,X)", mnemonics[opcode], mainCPU.RdMem(addr++) | (mainCPU.RdMem(addr++) << 8));\r
+               break;\r
+       case 13:                                                                                        // Relative\r
+//             sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16)(int8)mainCPU.RdMem(addr));\r
+               sprintf(outbuf, "%s $%04X", mnemonics[opcode], addr + (int16)((int8)mainCPU.RdMem(addr)) + 1);\r
+               addr++;\r
+               break;\r
+       case 14:                                                                                        // Inherent\r
+               sprintf(outbuf, "%s ", mnemonics[opcode]);\r
+               break;\r
+       }\r
+\r
+       DisplayBytes(pc, addr);                                                         // Show bytes\r
+       WriteLog("%-16s", outbuf);                                                      // Display opcode & addressing, etc.\r
+\r
+       return addr - pc;\r
+}\r
diff --git a/src/dis65c02.h b/src/dis65c02.h
new file mode 100755 (executable)
index 0000000..16bb805
--- /dev/null
@@ -0,0 +1,15 @@
+//\r
+// DIS65C02.H\r
+//\r
+// by James L. Hammons\r
+// (C) 2004 Underground Software\r
+//\r
+\r
+#ifndef __DIS65C02_H__\r
+#define __DIS65C02_H__\r
+\r
+#include "types.h"\r
+\r
+int Decode65C02(uint16 pc);\r
+\r
+#endif // __DIS65C02_H__\r
diff --git a/src/fd-img-128x128.c b/src/fd-img-128x128.c
new file mode 100755 (executable)
index 0000000..52be964
--- /dev/null
@@ -0,0 +1,2217 @@
+/* GIMP RGBA C-Source image dump (fd-img-128x128.c) */\r
+\r
+uint8 floppyDiskImg[] = {\r
+//     128 / 256, 128 % 256,   // width (HI byte, LO byte)\r
+//     128 / 256, 128 % 256,   // height (HI byte, LO byte)\r
+       "\000\200\000\200"              // Same thing as above, just in octal... :-P\r
+  "\213\234\243\40`lq\321[ej\377\\fj\377\\fk\377[ej\377]fk\377[ej\377\\gl\377"\r
+  "[fk\377Zej\377Zej\377\\fk\377Zek\377^hj\377\\ej\377^jp\377^io\377^jp\377"\r
+  "`kp\377bmr\377ams\377[gl\377[fk\377[fk\377Zek\377Zfj\377[hm\377Zfk\377[g"\r
+  "l\377Zej\377Zej\377[ej\377]hm\377Zek\377\\fl\377^im\377[fk\377Zej\377Zek"\r
+  "\377[fl\377]hl\377\\in\377[fk\377Zfj\377[fk\377[fk\377Zej\377[fm\377[fm\377"\r
+  "[go\377[hp\377[fk\377]ip\377\\ho\377Zfm\377Zfl\377[fm\377[fm\377[fl\377["\r
+  "fl\377[fo\377[fm\377[ho\377[fn\377[fo\377\\hq\377[gp\377[fp\377\\jt\377["\r
+  "hr\377\\jq\377[js\377\\js\377\\jt\377^is\377\\jr\377`mt\377]go\377[hp\377"\r
+  "[io\377]iq\377]ir\377[go\377[hp\377]jq\377\\is\377[iq\377[iq\377\\kt\377"\r
+  "\\kt\377amt\377^ls\377_ls\377`mt\377]lt\377]kr\377]js\377`nx\377\\ku\377"\r
+  "]mv\377]mv\377^oy\377cqy\377bqz\377bpx\377`py\377ar~\377ar~\377`p{\377_p"\r
+  "{\377aq}\377_oz\377_p{\377ar~\377ar~\377`q|\377`p|\377`q|\377ar}\377bq{\377"\r
+  "br}\377ft}\377dt~\377hw~\377es|\377]ip\321&.6\40`lq\317\17\26\36\377\16\25"\r
+  "\37\377\16\27#\377\20\30#\377\16\26\"\377\20\27#\377\11\20\31\377\5\15\27"\r
+  "\377\3\12\25\377\2\12\24\377\4\14\26\377\3\10\20\377\2\7\22\377\5\10\20\377"\r
+  "\3\5\17\377\5\12\23\377\5\12\22\377\5\11\23\377\7\11\23\377\11\16\25\377"\r
+  "\13\21\30\377\3\11\17\377\2\3\13\377\2\3\14\377\3\6\13\377\2\7\16\377\3\12"\r
+  "\20\377\2\10\16\377\5\14\23\377\2\11\22\377\2\10\21\377\4\13\24\377\12\21"\r
+  "\31\377\5\14\26\377\4\10\21\377\4\14\25\377\3\10\17\377\2\7\15\377\2\10\20"\r
+  "\377\2\5\20\377\6\12\23\377\5\11\21\377\2\6\21\377\2\11\23\377\2\12\24\377"\r
+  "\2\10\22\377\2\3\21\377\2\7\22\377\3\7\20\377\5\16\32\377\5\16\30\377\2\11"\r
+  "\24\377\4\14\30\377\3\13\27\377\2\7\23\377\2\3\16\377\2\4\17\377\2\4\17\377"\r
+  "\2\3\15\377\2\6\15\377\2\3\16\377\2\5\16\377\2\7\21\377\2\4\20\377\2\4\17"\r
+  "\377\3\5\17\377\3\4\16\377\2\4\17\377\3\7\21\377\2\5\20\377\3\7\22\377\3"\r
+  "\7\21\377\3\11\24\377\3\10\21\377\5\10\17\377\4\12\22\377\6\11\21\377\4\7"\r
+  "\20\377\2\5\17\377\2\6\17\377\4\6\23\377\4\6\23\377\2\4\17\377\2\5\22\377"\r
+  "\4\7\23\377\3\6\23\377\2\10\24\377\3\13\24\377\3\10\22\377\3\10\25\377\7"\r
+  "\11\22\377\5\10\21\377\6\11\23\377\6\11\27\377\4\11\30\377\4\10\23\377\4"\r
+  "\7\23\377\6\13\25\377\3\7\22\377\4\10\21\377\4\10\20\377\5\11\21\377\11\14"\r
+  "\25\377\10\14\24\377\10\13\23\377\6\12\17\377\10\14\25\377\10\14\25\377\6"\r
+  "\12\22\377\6\12\22\377\6\13\22\377\5\12\20\377\6\12\20\377\7\14\23\377\7"\r
+  "\14\22\377\6\13\20\377\6\12\21\377\6\14\25\377\10\17\33\377\14\26\"\377\21"\r
+  "\34+\377\31#0\377\31&1\377\40+3\377#+5\377\30\",\377$*2\317Zhq\377\36$/\377"\r
+  "'/7\377%,5\377',7\377\36%0\377\21\26\36\377\12\17\24\377\3\11\21\377\2\10"\r
+  "\17\377\2\7\17\377\2\3\12\377\2\3\11\377\2\5\14\377\2\3\13\377\2\2\7\377"\r
+  "\2\2\10\377\2\2\10\377\2\2\5\377\2\2\5\377\2\2\4\377\1\1\1\377\1\1\1\377"\r
+  "\1\1\1\377\1\1\1\377\1\1\1\377\1\1\3\377\1\1\1\377\1\1\1\377\1\1\1\377\1"\r
+  "\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\2\1"\r
+  "\2\377\4\2\3\377\11\12\12\377\12\13\13\377\27\26\21\377\17\17\13\377\10\11"\r
+  "\11\377\15\15\13\377\16\17\16\377\23\23\16\377\22\22\20\377\31\27\25\377"\r
+  "\32\33\27\377#!\32\377!\40\32\377\25\24\20\377\24\22\16\377\24\24\16\377"\r
+  "\25\25\20\377\34\34\27\377\37\37\32\377''!\377*&\36\377&#\33\377%\"\35\377"\r
+  "+(\"\377((#\377-*#\377//,\37740&\37720.\377211\37732/\37773)\37751'\3776"\r
+  "41\37720.\37796/\377888\377666\377<::\377:99\377?>?\377ECA\377D?<\377EA>"\r
+  "\377BBB\377???\377@>=\377FF=\377B?9\377>;9\377AA6\377CA:\377CD=\377HK=\377"\r
+  "JLD\377NKH\377RMG\377KLK\377ILB\377NPA\377b_S\377`[Q\377]YP\377YVR\377ZU"\r
+  "L\377^ZS\377`f^\377ihh\377jii\377ji`\377ji_\377jjc\377jif\377jhj\377jhj\377"\r
+  "jhj\377jii\377jhj\377jii\377jig\377c^T\377420\377\7\12\25\377\34\"*\377&"\r
+  "+4\377'.7\377+2:\377&0:\377#)1\377Zhp\377\40'0\377*08\377'.6\377\"(3\377"\r
+  "\20\23\27\377AC@\377\232\227\223\377\257\252\244\377\257\256\257\377\277"\r
+  "\277\270\377\303\302\262\377\303\301\275\377\300\274\253\377\303\277\301"\r
+  "\377\303\300\303\377\303\300\303\377\303\300\303\377\303\300\303\377\303"\r
+  "\300\303\377\303\300\303\377\303\300\303\377\303\300\303\377\303\300\303"\r
+  "\377\303\300\303\377\303\300\303\377\303\301\270\377\303\300\303\377\303"\r
+  "\300\303\377\303\300\303\377\303\301\303\377\303\301\303\377\303\301\303"\r
+  "\377\303\301\303\377\303\301\303\377\303\301\303\377\303\301\303\377\304"\r
+  "\301\303\377\305\301\304\377\310\305\310\377\310\305\307\377\314\310\270"\r
+  "\377\313\311\307\377\307\305\307\377\312\307\310\377\313\310\312\377\316"\r
+  "\313\312\377\315\312\311\377\321\315\316\377\322\317\317\377\326\322\321"\r
+  "\377\325\322\321\377\317\313\312\377\316\311\312\377\316\313\312\377\317"\r
+  "\315\276\377\323\320\317\377\324\324\315\377\331\326\323\377\332\325\322"\r
+  "\377\330\324\321\377\330\324\311\377\333\330\317\377\331\326\326\377\334"\r
+  "\332\313\377\335\335\324\377\340\335\317\377\336\335\314\377\337\336\331"\r
+  "\377\336\333\312\377\337\332\303\377\340\333\327\377\341\335\336\377\337"\r
+  "\333\334\377\343\340\333\377\342\340\341\377\341\336\341\377\344\341\343"\r
+  "\377\343\340\342\377\346\343\345\377\351\346\346\377\351\344\344\377\351"\r
+  "\345\345\377\350\345\347\377\346\343\345\377\346\343\345\377\352\347\345"\r
+  "\377\350\343\343\377\346\341\342\377\347\344\341\377\350\344\343\377\350"\r
+  "\346\345\377\353\352\345\377\354\352\351\377\356\352\352\377\361\354\351"\r
+  "\377\355\352\355\377\354\352\350\377\356\355\347\377\371\365\361\377\371"\r
+  "\363\360\377\367\361\357\377\365\360\361\377\365\357\355\377\370\362\361"\r
+  "\377\371\371\367\377\376\372\375\377\376\372\376\377\376\373\371\377\376"\r
+  "\373\370\377\376\373\372\377\376\372\374\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\373\375\377\376\372\376\377\376\373\375\377\376"\r
+  "\373\374\377\372\365\362\377\337\333\334\377sof\377\16\21\31\377\"*2\377"\r
+  "*/8\377,08\377&,7\377#)1\377Zen\377%&-\377).7\377%*3\377\12\14\21\377\213"\r
+  "\211\212\377\376\373\375\377\376\372\376\377\376\372\376\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\373\375\377\376"\r
+  "\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+  "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+  "\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+  "\375\373\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\362\377\376\375\373\377\376\374\374\377\376"\r
+  "\374\374\377\376\374\373\377\376\376\366\377\376\374\373\377\376\375\373"\r
+  "\377\376\376\361\377\376\376\371\377\376\375\373\377\376\375\373\377\376"\r
+  "\376\370\377\376\376\371\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+  "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+  "\375\373\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+  "\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+  "\374\374\377\376\373\375\377\376\373\375\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\362\355\355\377FC?\377"\r
+  "\31\37&\377&-5\377$)3\377&.6\377#)1\377Zgq\377$(/\377',4\377\35#+\377PON"\r
+  "\377\362\356\361\377\376\372\376\377\376\374\374\377\376\375\373\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\375\373\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+  "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+  "\375\373\377\376\375\373\377\372\371\363\377\375\372\372\377\376\372\376"\r
+  "\377\230\224\224\377\17\23\27\377',5\377$)2\377%,5\377#)1\377Zeo\377\"%."\r
+  "\377'+3\377\14\21\33\377\206\203\205\377\376\372\376\377\376\372\376\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\375\373\377\376\375\373\377\376\373\375\377\372\372"\r
+  "\366\377\375\373\373\377\376\372\376\377\312\304\277\377\11\16\25\377$*5"\r
+  "\377%*1\377\40(4\377#)1\377Zen\377\37#.\377#)0\377\12\14\20\377\213\210\206"\r
+  "\377\376\372\376\377\376\374\374\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\373\375\377\376\374\374\377\376\373\375\377\376\372\376"\r
+  "\377\333\327\314\377\6\13\22\377\"*3\377%+1\377\40'0\377#)1\377Zem\377\37"\r
+  "%-\377%+3\377\14\15\20\377\217\214\211\377\376\372\376\377\376\374\374\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\375\373\377\376\374\374\377\376\375"\r
+  "\373\377\376\373\375\377\376\372\376\377\340\336\327\377\5\13\21\377#*3\377"\r
+  "$'/\377!)3\377#)1\377[is\377\37%/\377$*2\377\13\14\17\377\213\210\206\377"\r
+  "\376\373\370\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375"\r
+  "\373\377\376\375\373\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\340\336\317\377\5\13\21\377$+3\377%)/\377!'0\377#)1\377[js\377\37'1\377"\r
+  "$*2\377\13\14\16\377\213\210\206\377\376\375\366\377\376\375\373\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\340\336\316\377\3\10\17\377!*2\377#"\r
+  "(0\377\"(2\377#)1\377[is\377\37%.\377$*1\377\12\14\21\377\213\210\206\377"\r
+  "\376\372\376\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\375"\r
+  "\373\377\376\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377"\r
+  "\336\332\312\377\6\14\23\377#)3\377&,3\377\")1\377#)1\377[go\377\35#+\377"\r
+  "#(0\377\13\14\20\377\216\212\210\377\376\372\376\377\376\372\376\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\333\324\304\377\10\15\24\377%+4\377"\r
+  "$*2\377\37%.\377#)1\377Zgo\377\33\40(\377'-3\377\13\15\20\377\211\207\205"\r
+  "\377\376\372\376\377\376\372\376\377\376\373\375\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376"\r
+  "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\336\333\316\377\7\14\23\377%*3\377%+3\377!&/\377#)1\377Zgo\377\36$+"\r
+  "\377&+4\377\11\12\15\377\207\204\205\377\376\372\376\377\376\372\376\377"\r
+  "\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377"\r
+  "\376\373\375\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\333\326\315\377\12\17\25\377&+4"\r
+  "\377&+3\377#*2\377#)1\377Zeo\377\37#-\377'.5\377\13\14\16\377\211\207\205"\r
+  "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\374\374\377\376\372\376\377\376\373\375\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376\372\376"\r
+  "\377\324\316\303\377\11\16\25\377#+5\377',7\377\"'2\377#)1\377Zfp\377\37"\r
+  "%/\377,07\377\17\20\22\377\221\216\214\377\376\372\376\377\376\372\376\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\374\374\377\376\375\373\377\376\374\374\377"\r
+  "\376\373\375\377\376\372\376\377\376\373\375\377\376\373\375\377\376\373"\r
+  "\375\377\376\373\375\377\376\372\376\377\321\311\300\377\12\17\25\377#)4"\r
+  "\377&-4\377\")2\377#)1\377Zgq\377\35$,\377(/6\377\11\13\14\377\207\205\205"\r
+  "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\375\373\377\376\374\374\377\376\372\376"\r
+  "\377\376\373\375\377\376\375\373\377\376\375\373\377\376\373\375\377\376"\r
+  "\373\375\377\376\373\375\377\376\373\375\377\375\374\375\377\376\372\376"\r
+  "\377\327\321\310\377\10\15\23\377#*3\377'-5\377\40&.\377#)1\377Ydj\377\33"\r
+  "\40%\377&.4\377\13\14\15\377\213\211\207\377\376\372\376\377\376\372\376"\r
+  "\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\373\375\377\376\375\373\377\376\375\373\377\376\373\375\377\376"\r
+  "\373\375\377\374\374\376\377\376\372\376\377\330\321\304\377\5\13\21\377"\r
+  "&-6\377)/6\377\40%,\377#)1\377Zel\377\34\40(\377%-4\377\12\13\20\377\210"\r
+  "\206\210\377\376\372\376\377\376\372\376\377\376\373\375\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376\374\374"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+  "\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\375\373\377\376\375\373"\r
+  "\377\376\373\375\377\376\373\375\377\376\375\373\377\376\373\375\377\376"\r
+  "\372\376\377\327\317\302\377\7\15\23\377\"*3\377$+3\377\37$)\377#)1\377Y"\r
+  "di\377\33!%\377(-6\377\13\14\16\377\214\211\207\377\376\372\376\377\376\372"\r
+  "\376\377\376\373\375\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\314\306\270\377\7\15\24"\r
+  "\377!)1\377&-2\377\37#(\377#)1\377Ydi\377\33\37&\377(/7\377\14\15\21\377"\r
+  "\214\211\207\377\376\372\376\377\376\372\376\377\376\375\373\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+  "\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\314\305\270\377\11\14\22\377!)1\377&-4\377\40&-\377#)1\377"\r
+  "Ydi\377\33\36$\377)-6\377\13\14\22\377\212\205\205\377\376\372\376\377\376"\r
+  "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\374\374\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\327\320\302\377\11\16"\r
+  "\24\377%+4\377&-3\377\36&.\377#)1\377Ydi\377\34\36%\377&,6\377\15\15\16\377"\r
+  "\222\215\207\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374"\r
+  "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\374\374\377\376\374\374\377\376\372\376\377"\r
+  "\376\372\376\377\322\313\302\377\7\15\23\377%*4\377&+4\377\37&.\377#)1\377"\r
+  "Ydi\377\27\36$\377&,3\377\15\15\15\377\224\216\207\377\376\372\376\377\376"\r
+  "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\374\374\377\376\372\376\377\376\372\376"\r
+  "\377\376\375\373\377\376\373\375\377\376\373\375\377\376\372\376\377\376"\r
+  "\372\376\377\376\374\374\377\376\373\374\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\333\325\311\377\5\13"\r
+  "\21\377$*2\377%+1\377\")/\377#)1\377Ydi\377\34\40&\377&,5\377\16\16\15\377"\r
+  "\225\217\211\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374"\r
+  "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+  "\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\330\320\300\377\5\13\21\377$(1\377%+2\377\35\"(\377#)1\377"\r
+  "Ydi\377\34!'\377%+1\377\17\17\17\377\233\225\223\377\376\372\376\377\376"\r
+  "\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376"\r
+  "\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\373\375\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\374\374\377\376\374\374\377\376\374\374\377\376\373\375"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\315\304\271\377\7\14"\r
+  "\23\377!(2\377%*1\377\40%,\377#)1\377Ydi\377\36\"'\377&-5\377\17\17\17\377"\r
+  "\230\223\214\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\373\375\377\376\373\375\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\375\373\377\376\374"\r
+  "\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\320\311\300\377\7\14\22\377\32\",\377\36#+\377\22\31\40"\r
+  "\377!&-\377Ydi\377\37#(\377&+5\377\16\16\15\377\225\221\212\377\376\372\376"\r
+  "\377\376\372\376\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+  "\377\376\373\375\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\374\374\377\376\374\374\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\272\271\247"\r
+  "\377\5\7\15\377\6\13\25\377\1\2\4\377\4\4\4\377\32\34\"\377Ydi\377\36$'\377"\r
+  "(-6\377\21\21\21\377\235\232\224\377\376\372\376\377\376\372\376\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\374\374\377\376\373\375\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\375\373\377\376\374\374\377\376\372\376\377\376\372\376\377\376"\r
+  "\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\310\303\267\377\1\1\2\377\4\4\7<\1\1"\r
+  "\1\27\6\6\6\27\35\40%\27Ydi\377\37\")\377'-5\377\21\22\22\377\237\234\230"\r
+  "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\374\374\377\376\372\376\377\376\375\373\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\374\374\377\376\373\375\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\310\301\267\377\1\1\1\377\1\1\1)\0\0\0\0\0\0\0\0\0\0\0\0Ydi\377\35\40"\r
+  "'\377'.6\377\21\22\21\377\236\233\226\377\376\372\376\377\376\372\376\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376\372\376\377"\r
+  "\376\372\376\377\376\375\373\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\374\374\377\376\373"\r
+  "\375\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\274\266\260\377\1\1\1\377\1\1\1"\r
+  ")\0\0\0\0\0\0\0\0\0\0\0\0Ydi\377\37#)\377'/7\377\24\24\22\377\251\242\233"\r
+  "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\375\373"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+  "\375\373\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\373\375\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\274\270\266\377\1\1\1\377\1\1\1)\0\0\0\0\0\0\0\0\0\0\0\0Zdj\377\37#"\r
+  "+\377%*4\377\27\26\25\377\263\254\244\377\376\372\376\377\376\372\376\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\375\373\377\376\374\374\377\376\375\373\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376"\r
+  "\372\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\374\374\377\376\376\372\377\376\376"\r
+  "\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377"\r
+  "\376\376\372\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\272\260\250\377\1\1\1\377\1\1\1"\r
+  ")\0\0\0\0\0\0\0\0\0\0\0\0Zdj\377\37#)\377',4\377\31\31\30\377\272\263\253"\r
+  "\377\376\372\376\377\376\372\376\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376\377\376"\r
+  "\373\375\377\376\374\374\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\373\375\377\376"\r
+  "\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\373\375\377\376\375\373\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\375\373\377\376\373\375\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\374\374\377\376\374\374"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\375\373\377\376\373\375\377\376\372\376"\r
+  "\377\263\251\245\377\1\1\1\377\36\36\37<\207\206\205\27\207\206\205\27\207"\r
+  "\206\205\27Zej\377\37$*\377*/7\377\30\27\25\377\257\250\237\377\376\372\376"\r
+  "\377\376\372\376\377\376\375\373\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\374\374"\r
+  "\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\373\375\377\376\374\374\377\376\374\374"\r
+  "\377\376\375\373\377\376\376\372\377\376\374\374\377\376\374\374\377\376"\r
+  "\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\374\374"\r
+  "\377\376\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\227\224\224"\r
+  "\377\6\10\12\3778;@\377X[^\377X[^\377Y[^\377Yej\377\40$*\377,08\377\21\22"\r
+  "\23\377\235\231\225\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\376\372\377\376\376\372"\r
+  "\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+  "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373"\r
+  "\377\376\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376"\r
+  "\375\373\377\376\375\373\377\376\375\373\377\376\375\373\377\376\373\375"\r
+  "\377\376\373\375\377\376\373\375\377\376\374\374\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373\375"\r
+  "\377\376\375\373\377\376\372\376\377\376\372\376\377\376\373\375\377\376"\r
+  "\372\376\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\375\373\377\376\373\375\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377oi`\377\21\25\32\377&.6\377#)4\377\40&.\377\"&.\377Z"\r
+  "fl\377\37$+\377+19\377\22\30\40\377\202qj\377\375\366\370\377\376\372\376"\r
+  "\377\376\372\376\377\376\373\375\377\376\375\373\377\376\376\372\377\376"\r
+  "\376\372\377\376\376\372\377\376\376\372\377\376\374\374\377\376\374\374"\r
+  "\377\376\374\374\377\376\374\374\377\376\374\374\377\376\374\374\377\376"\r
+  "\374\374\377\376\374\374\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\373\375\377\376\374\374\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\375\372\372\377\376\372\375"\r
+  "\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\373\375\377\376\373\375"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\373\375\377\376\372\376\377\376\372\376\377\376"\r
+  "\373\375\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376"\r
+  "\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376"\r
+  "\372\376\377\376\372\376\377\342\335\334\377/.-\377\35$,\377*.6\377'.6\377"\r
+  "%)4\377\"&.\377Zek\377\40%,\377*08\377$)3\377\27\24\27\377\300\274\275\377"\r
+  "\373\367\371\377\376\372\376\377\376\372\376\377\376\372\376\377\376\373"\r
+  "\375\377\376\373\375\377\376\373\375\377\376\373\375\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\375\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\375\377"\r
+  "\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372"\r
+  "\376\377\376\372\376\377\376\372\376\377\376\372\376\377\376\372\376\377"\r
+  "\376\373\374\377\376\373\372\377\376\372\374\377\375\370\366\377\374\367"\r
+  "\364\377\374\367\364\377\373\366\364\377\376\372\373\377\373\367\367\377"\r
+  "\375\371\372\377\376\372\376\377\376\373\366\377\374\370\362\377\374\367"\r
+  "\370\377\375\371\367\377\372\365\363\377\374\370\366\377\371\363\363\377"\r
+  "\370\363\362\377\370\363\362\377\371\364\364\377\370\363\362\377\370\363"\r
+  "\362\377\366\360\357\377\366\360\357\377\366\361\360\377\370\363\364\377"\r
+  "\370\363\364\377\371\364\364\377\365\360\357\377\366\361\362\377\367\362"\r
+  "\363\377\371\364\364\377\371\364\364\377\373\366\364\377\372\366\370\377"\r
+  "\373\365\364\377\375\370\370\377\376\372\375\377\375\370\371\377\375\372"\r
+  "\372\377\364\356\356\377\317\313\314\377PMC\377\26\32!\377&,5\377&-4\377"\r
+  "%+3\377%+3\377\"&.\377[hp\377!'/\377*.7\377*/7\377\36#(\377\33\32\32\377"\r
+  "mhd\377\261\255\252\377\271\264\260\377\272\266\261\377\272\266\264\377\271"\r
+  "\263\255\377\271\265\263\377\272\266\267\377\262\260\260\377\263\261\263"\r
+  "\377\264\262\265\377\262\257\260\377\255\246\234\377\242\233\227\377\221"\r
+  "\214\206\377\217\216\212\377\217\215\211\377\216\213\206\377\211\206{\377"\r
+  "\211\203\200\377\203\177|\377\203\177y\377\201\177~\377yvr\377zws\377}yq"\r
+  "\377}wq\377qmo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377"\r
+  "omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377onm\377omn\377om"\r
+  "o\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377"\r
+  "omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377omo\377om"\r
+  "o\377omo\377omo\377omo\377omo\377ooj\377ooh\377onk\377li^\377kg[\377jf[\377"\r
+  "hd[\377nnh\377ifa\377mjf\377omo\377onm\377lh_\377jgb\377lka\377gcX\377ki"\r
+  "^\377d_X\377c_V\377c_V\377eaZ\377c_V\377c_W\377_ZP\377_YP\377_ZS\377c_Z\377"\r
+  "b^Z\377e`Z\377\\XP\377^[W\377`]Y\377e`Z\377eaZ\377ie[\377fdb\377hc[\377l"\r
+  "jb\377onm\377ljd\377nmg\377ZVO\377\26\26\27\377\20\26\36\377!'0\377'-4\377"\r
+  "'-7\377'-5\377&+3\377\"&.\377Zej\377\37#)\377*.6\377*.8\377).8\377\"'/\377"\r
+  "\23\26\33\377\24\26\27\377\25\27\27\377\26\27\31\377\25\27\30\377\26\26\27"\r
+  "\377\24\26\27\377\25\27\31\377\24\25\27\377\24\25\30\377\24\26\30\377\24"\r
+  "\26\30\377\23\24\25\377\21\23\24\377\17\22\21\377\17\21\23\377\20\22\24\377"\r
+  "\17\21\22\377\17\21\21\377\20\21\23\377\16\20\21\377\16\20\20\377\16\20\21"\r
+  "\377\16\17\23\377\16\20\26\377\17\20\25\377\16\20\26\377\14\17\31\377\14"\r
+  "\17\27\377\14\17\25\377\14\16\23\377\14\16\30\377\15\20\32\377\14\17\33\377"\r
+  "\14\17\37\377\14\17\33\377\14\24\40\377\15\22\34\377\15\17\33\377\14\17\32"\r
+  "\377\15\20\32\377\14\16\30\377\14\17\27\377\14\17\31\377\15\17\34\377\13"\r
+  "\16\36\377\14\22\35\377\14\22\33\377\14\17\31\377\15\24\33\377\15\21\33\377"\r
+  "\14\17\30\377\14\16\25\377\15\24\36\377\15\21\31\377\14\23\34\377\14\22\33"\r
+  "\377\13\22\36\377\14\23\33\377\14\24\34\377\14\21\31\377\14\22\33\377\13"\r
+  "\23\35\377\16\27\40\377\14\24\35\377\13\23\36\377\17\26\36\377\15\25\37\377"\r
+  "\14\25\40\377\13\24\40\377\20\30!\377\21\31\"\377\20\31\"\377\21\34%\377"\r
+  "\23\33'\377\26\36*\377\24\35(\377\23\35&\377\27\37+\377\25\35)\377\24\35"\r
+  ")\377\21\33%\377\22\34%\377\23\34(\377\26\36*\377\24\36(\377\22\34&\377\23"\r
+  "\34'\377\22\34'\377\27\37+\377\30\40+\377\25\37*\377\27\40+\377\30\40+\377"\r
+  "\26\36*\377\32!*\377\30!+\377\27\37*\377\27\35'\377\25\36)\377\26\35&\377"\r
+  "\25\35*\377\26\35&\377\25\36)\377\26\35&\377\26\35&\377\23\33%\377\23\33"\r
+  "%\377\24\33#\377\20\31#\377\22\27\40\377\20\30!\377\21\32%\377\30\40*\377"\r
+  "\35$,\377\")1\377%*1\377%*1\377%+2\377%+4\377$*3\377\"&.\377Zdj\377\37#+"\r
+  "\377'.6\377',6\377(/6\377'.6\377(/7\377'-5\377&-3\377)-8\377&,5\377&,4\377"\r
+  "&,3\377&-5\377%,4\377'+4\377&-4\377'-5\377',5\377',6\377(.4\377&+5\377)."\r
+  "7\377&+5\377(.6\377'/7\377&.6\377)/6\377)/7\377*.7\377(/7\377).7\377).7\377"\r
+  ").6\377)/7\377(16\377)08\377)/8\377(/7\377*08\377).8\377).8\377(/7\377)-"\r
+  "7\377*.6\377(.7\377)/7\377(-5\377'-6\377'-5\377).7\377&-5\377'-4\377(-4\377"\r
+  "&.3\377&-5\377'+6\377',6\377(-5\377&-4\377'-5\377&-5\377%*1\377$)1\377&-"\r
+  "2\377&,5\377&,3\377%+3\377%*3\377%,4\377$)2\377%*4\377&,2\377)/6\377(.6\377"\r
+  "&+4\377&+6\377(-6\377%-5\377&/6\377)-6\377*08\377)/7\377)/6\377(.6\377*."\r
+  "7\377*/8\377&-3\377).6\377'.7\377).7\377)/7\377'.6\377'.7\377).7\377)-9\377"\r
+  ")/7\377).7\377(.7\377(,6\377).6\377(.6\377).6\377&-4\377'-5\377&-5\377%+"\r
+  "3\377&*6\377%,5\377&,5\377'-6\377'-6\377%,4\377%+2\377%*3\377$*2\377$+2\377"\r
+  "$+1\377%,2\377$)1\377$*1\377$*1\377$*1\377%+2\377#*2\377&+4\377\"'1\377\""\r
+  "&.\377Zel\377\36\")\377&-4\377(-5\377(.5\377(-5\377&-5\377(.6\377'.6\377"\r
+  "&+5\377(.5\377'.5\377'.4\377)/6\377'.6\377(.6\377'-6\377'.6\377',6\377)-"\r
+  "8\377&.6\377(-5\377&-6\377&-6\377'.6\377'.7\377'-7\377'.6\377).8\377).7\377"\r
+  ").8\377*/7\377*.8\377).8\377).8\377).8\377)/6\377*.7\377*07\377*.6\377)."\r
+  "6\377'.7\377).8\377).8\377*06\377)/7\377(.6\377'-6\377).6\377(.6\377&/5\377"\r
+  "(-5\377'.6\377'.6\377'-4\377%,4\377%*3\377%+1\377%*3\377%,2\377%+1\377$*"\r
+  "1\377$*2\377%,2\377%-2\377#(2\377$+2\377%,3\377$*1\377&,2\377%*3\377$*2\377"\r
+  "%-3\377&.4\377&-5\377&+4\377(.5\377',3\377).6\377).6\377'/6\377&,6\377&."\r
+  "6\377'-6\377)/7\377*/9\377).6\377).6\377&-6\377&.6\377&+6\377(,6\377',6\377"\r
+  "&-6\377).6\377*.6\377'/6\377&,6\377)/6\377'-6\377'.6\377&-5\377(,6\377(-"\r
+  "6\377',6\377).5\377',6\377%+4\377%+2\377%+3\377$+2\377%,3\377$)1\377$)1\377"\r
+  "$*1\377%*2\377%*1\377$)1\377$)1\377#*1\377\"*2\377%-2\377$+2\377#)3\377%"\r
+  "*2\377&*4\377%)3\377\"&.\377Ydi\377\34!'\377&-5\377&-4\377(+5\377&,4\377"\r
+  "'-5\377'.5\377&,2\377%*3\377$+3\377&.4\377(-5\377&.6\377&,5\377(.5\377&,"\r
+  "5\377&-5\377',6\377'-6\377).6\377&-5\377(-6\377'-6\377',6\377'.4\377)-6\377"\r
+  ").6\377).6\377*.7\377).6\377(/6\377(.7\377'.6\377(.7\377'.7\377)/6\377*."\r
+  "6\377*.6\377(.6\377'.6\377(.8\377)07\377'-7\377)-6\377'+7\377'-4\377&+5\377"\r
+  "(.6\377',4\377&.4\377&-4\377(-6\377',6\377(-6\377$+3\377&+4\377&,3\377$*"\r
+  "1\377%+1\377%-2\377%*3\377&,2\377&*2\377%+3\377%,4\377$*1\377%*2\377$*1\377"\r
+  "%*1\377$)0\377%*3\377&-3\377%+4\377&*5\377&,4\377&-5\377&,5\377'-4\377(-"\r
+  "6\377)/6\377&.6\377&.5\377'-6\377)/7\377'/7\377'.6\377'.6\377(-6\377).6\377"\r
+  "'-6\377&,4\377)-7\377(-6\377'.5\377).7\377'.6\377&-6\377&-5\377&-5\377&-"\r
+  "4\377&-5\377%,4\377&-6\377'.4\377',5\377$*4\377%,4\377%+2\377'+6\377%+2\377"\r
+  "$*1\377$*3\377&,4\377&+3\377%+2\377%*1\377$)3\377\")2\377\"(2\377#*1\377"\r
+  "#+2\377#)2\377$*2\377%,2\377%*3\377!'1\377\"&.\377Ydi\377\35!%\377%+2\377"\r
+  "$+2\377',6\377&+4\377$*3\377&-3\377&,3\377&+5\377%*2\377&*4\377',4\377&,"\r
+  "5\377&,5\377',5\377&-5\377&-6\377&+4\377&-4\377&-5\377'-6\377&,4\377,06\377"\r
+  "&,3\377&-3\377&-5\377'.6\377',6\377)-6\377',3\377(.5\377(.8\377).6\377)."\r
+  "6\377*.6\377(.7\377&.6\377&.6\377'-7\377'/7\377'.6\377(.6\377).6\377'.6\377"\r
+  "'.6\377'.4\377'-5\377)/5\377',5\377&-5\377&.5\377&-5\377%*2\377\"'.\377$"\r
+  "+3\377$,4\377&-4\377&,3\377%,3\377$)0\377\36!+\377\30\34&\377\30\32\"\377"\r
+  "\33\37$\377\31\36%\377\31\37&\377\34%0\377\")1\377#*3\377$)0\377$*1\377%"\r
+  "+1\377\"&/\377$)0\377&+3\377&+2\377&,3\377&-4\377&+6\377(07\377(.5\377'-"\r
+  "6\377(06\377)/7\377&.6\377&-6\377(.6\377(.6\377'.6\377&.5\377&-6\377&,6\377"\r
+  "(-6\377%,4\377(.6\377'-5\377&+5\377&-5\377&,6\377',4\377&-6\377&-5\377%,"\r
+  "4\377%,3\377&+3\377%*2\377$*1\377#*2\377$+2\377#(2\377#*2\377%*4\377%*2\377"\r
+  "$)0\377%*2\377$)3\377#)2\377$)1\377%+1\377$*1\377#)2\377$)1\377$*1\377$*"\r
+  "2\377$)3\377\"(1\377\"&.\377Ydi\377\35!%\377&-4\377%+3\377&,4\377$,3\377"\r
+  "&-6\377%+2\377$*2\377',3\377&-4\377%+3\377%+2\377&-6\377&+5\377'-5\377%,"\r
+  "4\377%+3\377&-4\377%-4\377$+2\377&+2\377$+2\377&+5\377&-6\377(.6\377&.6\377"\r
+  "&.6\377(.6\377'-6\377',6\377'.6\377&.6\377'.4\377',6\377'.6\377&-6\377&."\r
+  "6\377&.6\377).6\377'/6\377&.6\377'.6\377(.6\377'-4\377&-6\377&.5\377&.6\377"\r
+  "&.5\377&.4\377&+5\377'.5\377&-5\377$+3\377$,3\377%+2\377#)1\377!&.\377\26"\r
+  "\31#\377\21\23\24\377\24\25\30\377\40\"#\377,..\377.4,\377/4+\377.4-\377"\r
+  "'(\"\377\26\32\35\377\21\23\24\377\20\25\34\377\34\"*\377%)0\377%+1\377%"\r
+  "+1\377%*1\377%*1\377(/6\377'.6\377(.6\377&-6\377&.6\377'.6\377'.6\377&.6"\r
+  "\377(/6\377(.6\377&.6\377'.6\377&.6\377'.6\377'.5\377&.6\377&-6\377&+6\377"\r
+  "&.6\377&,6\377&.4\377&-5\377&.5\377&-4\377'-6\377$+3\377&,3\377%+2\377%+"\r
+  "4\377%+1\377&-5\377%*3\377%+3\377$,2\377$*1\377$*1\377\"*2\377#*2\377%+1"\r
+  "\377%+1\377%*1\377#*3\377#*3\377#(2\377#)2\377\"*2\377!)0\377$)1\377$*1\377"\r
+  "$*1\377!%/\377\"&.\377Ydi\377\36!'\377&-3\377',4\377&,4\377&,4\377&-4\377"\r
+  "%*3\377$*1\377&+5\377%*2\377%+2\377%*1\377&,4\377%*2\377&*4\377$+2\377%+"\r
+  "3\377%,4\377$*2\377%+2\377$,2\377&,3\377%+2\377&-4\377&,4\377&-5\377'-6\377"\r
+  "&.6\377(-6\377(,5\377',6\377'-6\377'.6\377&,6\377&-4\377'.5\377(.6\377(-"\r
+  "6\377'.6\377(.6\377&.6\377(.6\377(-5\377',4\377&,6\377).6\377)/6\377&,5\377"\r
+  "&-6\377&-4\377#(0\377%*3\377&+4\377&+4\377\31\35#\377\21\20\26\377\37#\37"\r
+  "\377::3\377PTG\377[XP\377\\XM\377]XJ\377ZWK\377^XJ\377YWK\377]XJ\377ZXN\377"\r
+  "VTH\377CC;\377**(\377\25\26\31\377\24\27\33\377$*2\377$,3\377%,2\377#(/\377"\r
+  "#)0\377(,4\377',4\377'.5\377).6\377',6\377'-4\377'.6\377&.6\377'-6\377&-"\r
+  "6\377&-6\377'-6\377(-6\377(.6\377&-4\377'.6\377'-6\377$+3\377%,2\377%+3\377"\r
+  "&-6\377&+6\377'-5\377(.5\377'-6\377&+4\377&-4\377%*2\377%*3\377#+2\377%*"\r
+  "3\377%*3\377%*1\377$*1\377#*2\377$*3\377$*4\377$+2\377$)1\377$+2\377#*3\377"\r
+  "#)2\377#(2\377#)2\377$(0\377$)1\377$*2\377%-2\377\"(1\377\"&.\377Zek\377"\r
+  "\35\"(\377&-3\377&-4\377&+5\377%+3\377%,3\377%+2\377%-4\377&,4\377%*2\377"\r
+  "&,3\377&*5\377&+4\377$*3\377&*5\377$*2\377$*1\377%+2\377#*2\377$*2\377&-"\r
+  "4\377&.4\377%*3\377&,5\377&-5\377&+6\377%,4\377&,5\377&-4\377&-3\377&-6\377"\r
+  ").6\377',6\377'.6\377'.6\377(.6\377&.6\377&-6\377&,5\377&,5\377&,6\377&."\r
+  "6\377(.6\377'-4\377&+6\377&,4\377&.6\377&-4\377(.6\377*/7\377'+4\377&,3\377"\r
+  "\35$,\377\20\25\31\377()'\377KJB\377TUG\377URF\377RQG\377ROE\377QOE\377Q"\r
+  "NE\377RNE\377RNE\377QNE\377QNE\377OOF\377QOF\377RQH\377XTH\377RQI\377:90"\r
+  "\377\23\25\30\377\33\40%\377%*3\377&+2\377&.4\377&,5\377&-5\377).6\377(-"\r
+  "6\377',6\377'.6\377*/6\377&.6\377(-6\377&.6\377&.6\377'.6\377&.6\377&-6\377"\r
+  "&-6\377(-7\377&-6\377'-6\377',3\377&-6\377%*4\377&,5\377&*4\377&,4\377$+"\r
+  "3\377%+2\377%+1\377%*2\377%*2\377#*2\377$*2\377$*2\377$(0\377%*1\377#)3\377"\r
+  "$)3\377#*2\377$)2\377%*1\377%*2\377\")2\377#)3\377$+3\377#)1\377#'/\377\""\r
+  "'1\377#(0\377$+2\377!(0\377\"&.\377Yej\377\36\")\377&+3\377&+5\377%+3\377"\r
+  "%+2\377$*3\377&,4\377%,2\377%*3\377&*4\377%*1\377%*2\377&+3\377%*3\377%*"\r
+  "2\377%+3\377%,2\377%,3\377%*4\377$+4\377%+4\377&-3\377%*4\377&*4\377%-5\377"\r
+  "%,4\377%+5\377%,3\377%*4\377'-4\377$,4\377&-6\377',6\377'-6\377'-4\377'."\r
+  "5\377'.5\377&,4\377%*5\377%-5\377'-6\377(.6\377'-7\377&,6\377&,6\377'-6\377"\r
+  "&,6\377%+3\377&-3\377&-5\377&,4\377\30\34\"\377\34\40\37\377AE9\377WVI\377"\r
+  "SQF\377ROE\377ROE\377POF\377RPF\377SPG\377RSI\377QPG\377QPG\377RQH\377SP"\r
+  "G\377QOE\377ONE\377ONF\377RNE\377OOF\377XVI\377SRD\377++%\377\15\26\35\377"\r
+  "%*4\377(.6\377%,5\377$,4\377'+4\377&-6\377).6\377(-7\377(.6\377&.6\377&."\r
+  "6\377&.6\377&.5\377'.6\377&.5\377&-6\377&,4\377&,4\377&+4\377%+5\377%*4\377"\r
+  "%*5\377%*5\377&*6\377&+6\377&*6\377',4\377%+3\377$+2\377\"*2\377#)3\377#"\r
+  "*2\377$*2\377\"*2\377$*1\377$+2\377%+3\377&,5\377$*3\377$*1\377$*3\377$*"\r
+  "2\377#*2\377\")1\377%+1\377$)0\377%*3\377$*3\377%*2\377&,3\377\35#,\377\""\r
+  "&.\377Zek\377\34\")\377&-2\377%+2\377%,2\377$+2\377%+3\377&-6\377%+3\377"\r
+  "%,2\377%+1\377%*1\377%*1\377%+2\377%,3\377#*2\377#)2\377#*2\377$+2\377%*"\r
+  "2\377%,2\377%+4\377#*2\377%,2\377$*1\377$+2\377%+2\377%+2\377%+2\377$*2\377"\r
+  "&,4\377%*4\377&+4\377(-5\377'-5\377&-5\377&,5\377&.4\377%+3\377&-6\377&+"\r
+  "6\377&,4\377&+6\377&+6\377&+6\377(,6\377&.4\377&+5\377%-3\377&-4\377\")1"\r
+  "\377\27\32\37\377'+%\377WUG\377WWI\377ROE\377ROE\377ROE\377SPF\377YUM\377"\r
+  "TTF\377LLA\377FG@\377DD:\377CC:\377IIA\377LLI\377VTI\377a\\M\377YXO\377R"\r
+  "QI\377QME\377ONF\377RPF\377VTF\377>?4\377\27\31\31\377\37'.\377%+5\377&,"\r
+  "6\377(-6\377&.6\377&-6\377',6\377'.6\377&.6\377&.6\377&,5\377&-4\377%,4\377"\r
+  "&-6\377&-6\377%*3\377&,5\377&,5\377&+5\377%+4\377&,5\377$*2\377&*3\377%*"\r
+  "4\377%*2\377%*3\377&+4\377&+5\377%,2\377$*2\377$*3\377#*2\377$*1\377#)2\377"\r
+  "#+2\377\")1\377\"*2\377\")2\377#(0\377%*2\377$*2\377$*3\377\")1\377$*1\377"\r
+  "$)0\377#)2\377$*1\377%,2\377\"*2\377\"'/\377\"&.\377Zek\377\34\")\377%+1"\r
+  "\377',3\377',3\377&,2\377%*1\377&-5\377$*2\377%+2\377%*1\377#)2\377#*2\377"\r
+  "#*2\377#*2\377#*2\377#'1\377%*2\377$+2\377$*2\377$*1\377&-4\377%+3\377$*"\r
+  "3\377%*3\377%+3\377%*2\377%-5\377&-3\377&,5\377&+4\377%)5\377&+3\377%+2\377"\r
+  "$*1\377&-4\377'-5\377&,3\377%*3\377'.4\377&-4\377'-6\377&+6\377&-6\377&+"\r
+  "5\377',5\377&-6\377&+5\377%+4\377&-4\377\20\24\31\37711+\377WVH\377ROF\377"\r
+  "QOF\377RQF\377PPF\377KK@\377FE;\377BB8\377;>4\377;;2\377::0\377::0\377;:"\r
+  "0\377=<2\377>>6\377BA8\377FE=\377SQL\377]YT\377ZXR\377ONE\377POF\377QOF\377"\r
+  "USG\377EE;\377\25\27\27\377&*3\377'-7\377&,6\377$*4\377'/6\377&.6\377&-6"\r
+  "\377&.6\377&-6\377&,4\377&,5\377%*5\377&*4\377&-5\377&,5\377&+4\377'.4\377"\r
+  "'+4\377$+3\377#*2\377#*3\377&*2\377%*4\377$)1\377\")2\377$*1\377$*3\377$"\r
+  ")3\377$)1\377$*2\377\"*2\377#*2\377#)1\377\")1\377!(0\377\"*1\377#)1\377"\r
+  "#(2\377$+3\377#)2\377#*2\377$*1\377#*2\377$*1\377%*3\377%*3\377\"*2\377\""\r
+  "(2\377\36$-\377\"&.\377Zek\377\34\")\377&+3\377&,2\377%*1\377&+3\377&,4\377"\r
+  "$+2\377&,3\377%*2\377$*1\377%)3\377%*2\377$*3\377%,2\377%,2\377%*3\377$*"\r
+  "1\377%*1\377%*1\377$)0\377#)0\377%,3\377%,4\377$*2\377$*2\377%)3\377$*2\377"\r
+  "%+3\377%+3\377%*2\377%,4\377#+3\377%-4\377%*1\377&-2\377%,3\377&+3\377&,"\r
+  "4\377&,4\377&-5\377&.6\377'-5\377&-4\377&+5\377)-6\377'.6\377'-5\377&.7\377"\r
+  "\30\32\40\37797+\377VTF\377QOF\377RQF\377QPE\377II@\377CC:\377;<2\377;;1"\r
+  "\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8.\377:9.\377:8-\377"\r
+  "::0\377880\377KJ@\377\\ZT\377WXO\377NOF\377OOF\377SSG\377II>\377\30\31\30"\r
+  "\377%*3\377'-6\377'-6\377&-5\377&,5\377&-6\377'.7\377'.7\377%-5\377&-5\377"\r
+  "&+4\377&-4\377&,3\377$+3\377&-6\377$+4\377%*3\377%,4\377$*3\377$+4\377#*"\r
+  "2\377\"*2\377#)3\377#*3\377#*2\377$*2\377#*2\377#(2\377#+1\377$*1\377\"*"\r
+  "2\377$*1\377$(1\377#)1\377$+2\377$)1\377#*1\377#)1\377#*2\377%*2\377\"*2"\r
+  "\377#*2\377$*1\377%*4\377#'1\377\")1\377#)2\377\"&.\377\"&.\377Zeo\377\35"\r
+  "\"+\377$*1\377%*1\377$*1\377$+3\377%,3\377%+2\377%+2\377%*2\377#(2\377#)"\r
+  "2\377%+1\377%+1\377%*2\377%*2\377$(1\377%*1\377$*1\377%*2\377$*3\377$*1\377"\r
+  "$+1\377$*2\377$,2\377&*4\377%+4\377%)3\377%+2\377%*1\377%*2\377$)2\377&+"\r
+  "4\377%+2\377&,4\377$,3\377%-4\377%,3\377%,4\377&,4\377&-5\377&-4\377&,5\377"\r
+  "&-3\377',4\377#(1\377&-5\377&,5\377\31!)\377,+%\377SQG\377QPF\377RPF\377"\r
+  "PPD\377EF;\377==3\377<;0\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8"\r
+  "-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\37798.\37788/\377<=3\377XXR\377"\r
+  "[ZS\377PND\377QOE\377WTJ\377EB3\377\24\31\33\377'-8\377&-6\377&+6\377(-6"\r
+  "\377'-6\377'.5\377&,5\377%+5\377&-5\377',4\377%*5\377&+6\377&,5\377%+5\377"\r
+  "#*3\377#*3\377$*3\377$*4\377$,3\377%+3\377$*1\377$)4\377\"*2\377\"(0\377"\r
+  "#)2\377$*2\377$*2\377\")1\377\"'2\377\")0\377#*2\377$*1\377#)2\377$+3\377"\r
+  "\"(2\377$*1\377%)2\377%*2\377%,2\377$*1\377#*2\377\")2\377#)3\377$*3\377"\r
+  "!(0\377$*1\377$(/\377\"&.\377Zel\377\35!)\377$+1\377%,4\377&-4\377$,2\377"\r
+  "%+2\377$+3\377$,4\377&,3\377%+1\377%*1\377#(0\377%+2\377$+3\377%,5\377%)"\r
+  "2\377$)0\377$+2\377\"*2\377#(0\377#*1\377$*0\377$)0\377$*1\377#*2\377$)4"\r
+  "\377&+4\377#+2\377&-2\377%*1\377#(2\377%*2\377&*4\377%*1\377%*4\377&-3\377"\r
+  "&-4\377&+6\377%*3\377$*2\377$+2\377&+4\377&-5\377%,3\377%+2\377%+3\377\40"\r
+  "%.\377%%\40\377RQD\377OOF\377QPF\377PPD\377CC9\377;;2\377:8-\377:8-\377:"\r
+  "8-\377:8-\274:8-\247:8-\35:8-\3:8-\3:8-\3:8-\3:8-\3:8-K:8-\247:8-\247:8-"\r
+  "\364:8-\377:8-\377:8-\37777.\377KK?\377`]X\377PQG\377POF\377XWH\37700&\377"\r
+  "\33\40(\377*/9\377).7\377'+7\377%,5\377&.6\377&,6\377%,5\377$*3\377&,5\377"\r
+  "&-3\377$)0\377%+3\377%*3\377%*3\377#(3\377$*1\377%,3\377$+3\377#*2\377#'"\r
+  "0\377$*1\377\"*2\377#)2\377\"*2\377\")2\377\"(2\377#)2\377\")1\377\"(1\377"\r
+  "#(1\377$*1\377#*2\377\"'2\377$)3\377$+3\377$*4\377%*2\377#*2\377$*2\377$"\r
+  "*2\377$)4\377'+4\377%+1\377&*3\377%*2\377!&-\377\"&.\377Zem\377\35\37*\377"\r
+  "%+1\377%*2\377%*3\377%+2\377&-4\377%+3\377%(1\377$*2\377&,2\377&+3\377$,"\r
+  "2\377#+3\377#)0\377%*1\377$*2\377\")1\377#)1\377#*2\377#)2\377%+2\377&-4"\r
+  "\377$)1\377#*1\377#*2\377#)3\377%+5\377$+2\377%+1\377%,4\377$*4\377%,2\377"\r
+  "$*1\377#*2\377#)2\377$*1\377%*2\377%*3\377&+3\377#)2\377$*3\377&,4\377%*"\r
+  "3\377%+3\377$+2\377$*3\377\27\31\40\377LM?\377PPF\377PPF\377QQG\377DD:\377"\r
+  ";<2\377:8.\377:8-\377:8-\366:8-\260:8-\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-D:8-\260:8-\366:8-\377"\r
+  "98.\37799.\377QOE\377^]X\377PPF\377PPF\377OPB\377\34\35\31\377\37%,\377'"\r
+  ",6\377%*4\377$*3\377&,6\377&,6\377$*3\377%*2\377$*2\377%+4\377%*3\377#*2"\r
+  "\377$*2\377$*3\377$)1\377$*1\377#*2\377#)2\377#(2\377#(1\377\")2\377\"'2"\r
+  "\377\"&/\377\40'2\377#)2\377\"(0\377!(0\377$)1\377#)2\377$(2\377$*2\377\""\r
+  "(2\377\")2\377\"(2\377#)1\377$*2\377$*1\377#*2\377%*3\377&+5\377\"*2\377"\r
+  "$)2\377%+1\377%*2\377%*2\377#)0\377\"&.\377Zen\377\34\40+\377%+1\377&,3\377"\r
+  "%,3\377&,2\377',3\377%*1\377$*1\377$)1\377%,2\377'+3\377$*1\377\")1\377#"\r
+  "*2\377%-2\377#)2\377$*1\377#*2\377#*2\377$+1\377#*1\377#)1\377$,2\377$*1"\r
+  "\377%*3\377$)2\377#*2\377$,2\377%+3\377&,4\377%+2\377$+1\377$)2\377$+3\377"\r
+  "#*2\377$*2\377$,2\377#*2\377&*4\377%*3\377#*3\377%,3\377\")1\377%-2\377$"\r
+  "*1\377\36!(\377--'\377SSE\377RPF\377QPF\377GG>\377;;2\377:8-\377:8-\377:"\r
+  "8-\336:8-1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-1:8-\336:8-\377:8-\377"\r
+  "76*\377TTM\377ZXO\377QNE\377QPF\377??2\377\35\37!\377&,8\377&-3\377&,4\377"\r
+  "&-6\377&-5\377&.3\377#+2\377%*4\377#*2\377$*2\377%*3\377%+4\377#)2\377#)"\r
+  "2\377#)2\377#*2\377#)2\377\")1\377!(0\377#)2\377#+3\377\"(1\377\")1\377\""\r
+  ")1\377#(0\377!'/\377\"(1\377#(1\377#(1\377%)1\377$*1\377\"(2\377$)4\377#"\r
+  "*2\377$*1\377\"*2\377\"*2\377$*4\377%,3\377\")1\377%*4\377%+3\377$*3\377"\r
+  "$)1\377!%,\377\"&.\377Zen\377\34\40+\377&,2\377&-2\377%+2\377%,2\377%+3\377"\r
+  "%,3\377$*2\377$*1\377$*1\377$)0\377%*1\377#*2\377$)1\377$*1\377$(4\377#)"\r
+  "2\377#*2\377%(0\377%*3\377$)1\377$(3\377$*2\377#*2\377$)0\377\")1\377\"*"\r
+  "2\377\"*2\377$)2\377%*1\377$(1\377$*1\377$*1\377#*2\377$*1\377$*2\377$*2"\r
+  "\377%*3\377%*2\377%,3\377%,2\377%+1\377$*1\377$+2\377$+3\377\40\"!\377HH"\r
+  "?\377RPF\377SOE\377LKA\377<;1\377:8.\377:8-\377:8-\356:8-1\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-1:8-\356:8-\37798.\377::2\377"\r
+  "TPE\377SQF\377RNE\377UTK\377'&%\377!)2\377&-5\377$*4\377#*2\377$*2\377&+"\r
+  "5\377%*5\377$*2\377$*4\377$+2\377#*2\377$*1\377\"*1\377\"*1\377\"(1\377\""\r
+  "'1\377\"(2\377\"'1\377\")2\377#)1\377#(0\377\")1\377\"(2\377\"*2\377$*1\377"\r
+  "!'/\377#)1\377\")2\377#)1\377\"*2\377$*2\377#)2\377\"'1\377$)1\377$(0\377"\r
+  "\"'0\377\"'2\377#*3\377$*3\377#*3\377&*5\377%,4\377$*4\377#(2\377!'/\377"\r
+  "\"&.\377Zfo\377\36\",\377'-4\377%*2\377%+2\377&,3\377&,2\377%*1\377%+3\377"\r
+  "%,3\377%+2\377%+2\377&,2\377%,4\377%*1\377#*2\377$*3\377$*1\377#(1\377$*"\r
+  "2\377#)2\377$*1\377#)2\377$)1\377#(2\377%)1\377\"*2\377#*2\377$*2\377$*2"\r
+  "\377\")2\377$*1\377#(0\377#)1\377%*3\377$*1\377$*1\377$*1\377$*1\377$*1\377"\r
+  "#*2\377$,3\377%+2\377&-4\377&+5\377\37&.\377..#\377QPE\377POF\377ZXL\377"\r
+  "A@6\377:8-\377:8-\377:8-\343:8-7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-7:8-\343:8-\37755)\377ED;\377URI\377Q"\r
+  "OF\377OOF\377DD;\377\33\36'\377&,6\377!*1\377#)1\377%*2\377$*3\377\"*2\377"\r
+  "%+3\377$)0\377$*1\377$*3\377#)2\377!)1\377#(2\377\"(2\377\"(2\377$*1\377"\r
+  "#)0\377\"*2\377\"'/\377#)1\377\"'/\377\"(0\377!(1\377\"(0\377\")2\377$)1"\r
+  "\377%,3\377#)2\377#*2\377\"*2\377\"(1\377\"'/\377\")2\377\")2\377\")2\377"\r
+  "\"(2\377$)2\377%+3\377$+3\377#)3\377$*2\377$*2\377%*4\377#(/\377\"&.\377"\r
+  "Zfm\377\34!*\377',3\377&-4\377%-3\377%*1\377%,1\377%-4\377$+2\377%*1\377"\r
+  "%,3\377$*2\377$*1\377%+2\377%*2\377&*4\377%*2\377',4\377\"*2\377%-2\377%"\r
+  "*1\377#(0\377#)2\377#*1\377$)3\377%)1\377#(/\377#*2\377#*2\377#)1\377$+2"\r
+  "\377#(2\377$*1\377#*1\377$)2\377#*2\377%*1\377%*1\377$*1\377$*1\377%,2\377"\r
+  "&,5\377%+2\377%+2\377'-8\377\31!(\377?@5\377RPE\377PRH\377KLE\377:8.\377"\r
+  ":8-\377:8-\377:8-<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0nxx\246:8-\37787,\37767.\377OKB\377ROF"\r
+  "\377QPF\377HG=\377\40%&\377\"(0\377#)1\377#(2\377$*2\377\"*2\377\"(2\377"\r
+  "*/6\377&*1\377#*2\377#(2\377$)0\377\"(2\377\")2\377\"(0\377$*1\377\"'2\377"\r
+  "\"'0\377#*1\377\"(1\377\"'0\377\"'/\377\"'/\377\"'/\377\"&0\377\"'1\377\""\r
+  ")1\377$*2\377$*1\377\"(0\377\")2\377$)2\377$(0\377\"'/\377#*2\377#(2\377"\r
+  "#*2\377$*1\377#*2\377#*2\377#*2\377$+3\377%*4\377#*2\377$)0\377\"&.\377Z"\r
+  "gp\377\35\"-\377&,3\377%,1\377%+1\377&+3\377%,1\377#*2\377$+2\377&*1\377"\r
+  "&+3\377$*2\377#)1\377&+4\377&+2\377%+2\377$*1\377&+4\377#*2\377%-2\377$*"\r
+  "1\377%*1\377#(2\377$)1\377$)1\377#(1\377\"'0\377#*2\377#*1\377\"(1\377$*"\r
+  "1\377#*2\377%+3\377%)2\377&*4\377%+1\377$+3\377$*2\377$*1\377%*1\377%+3\377"\r
+  "'-5\377&*5\377#*2\377\"(0\377\36\"#\377OPA\377OOF\377NOG\377>=5\377:8-\377"\r
+  ":8-\377:8-\271:8-\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:8-\17:8-\27197,\37766,\377IH=\377VU"\r
+  "K\377QOE\377OMC\377$&\"\377\40&/\377$+2\377%+4\377%*1\377#)2\377#)2\377\""\r
+  "(1\377\"*1\377#)1\377#'0\377$+2\377#(1\377\"&0\377#'0\377\"(1\377#(2\377"\r
+  "#(1\377\"'1\377\"&/\377\"&/\377\"'0\377!(0\377#(0\377\"&0\377\"'0\377\"("\r
+  "1\377$)1\377\"(1\377\"'0\377\"(2\377#(2\377$)1\377#(1\377#)3\377\")1\377"\r
+  "$*1\377$*1\377%*1\377#*3\377#*2\377#*2\377%*3\377&,4\377%)2\377\"&.\377Z"\r
+  "el\377\34!)\377&-3\377&-2\377',3\377%*2\377#*2\377%+3\377%+1\377%*1\377$"\r
+  ",3\377%*3\377%+1\377%*2\377&*4\377%*2\377&+4\377%+2\377$*1\377%+1\377$+2"\r
+  "\377%*2\377$)3\377$)1\377$+3\377\")1\377$+4\377\"*1\377\"*2\377#*3\377#*"\r
+  "1\377$)1\377\")2\377#)2\377$*2\377%*3\377$*1\377#(2\377%*1\377$*1\377#*2"\r
+  "\377$)0\377$*0\377$*1\377\")0\377021\377RPC\377OOF\377KNE\377;:0\377:8-\377"\r
+  ":8-\366:8-^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\214\220^CC:\36665)\377<=7\377"\r
+  "WYR\377ONF\377QOE\3770/)\377\37%+\377\"(1\377\")1\377\40&.\377#(1\377#)1"\r
+  "\377#(0\377#)1\377#(0\377\"'0\377#'0\377\"'0\377\"&1\377\"'/\377\"&1\377"\r
+  "\"'1\377\"&/\377\"'0\377$)1\377\"'1\377#)1\377\"'1\377\"'/\377\"&1\377\""\r
+  "&0\377\"'/\377\"'2\377\"(2\377$*2\377#)1\377!(1\377!'1\377\")2\377\"*2\377"\r
+  "\")1\377\")2\377#*2\377$*1\377%*2\377$*1\377%*1\377%+1\377%*4\377!%.\377"\r
+  "\"&.\377Ydi\377\34!&\377%,3\377',3\377%+1\377%*1\377#)2\377&+2\377&+2\377"\r
+  "#)2\377%+1\377$*1\377$-0\377#*2\377#)2\377#(2\377'-5\377&,4\377%*1\377%*"\r
+  "1\377$*1\377%*1\377$*2\377$(1\377#)1\377#)1\377$*3\377\40'0\377!(/\377$)"\r
+  "1\377$)1\377#(1\377$+2\377%*1\377$)0\377$*1\377%*1\377%*1\377%*1\377$*1\377"\r
+  "\")2\377$+3\377$+2\377$*3\377\40$,\37712.\377QPE\377OOF\377AA9\37798.\377"\r
+  ":8-\377:8-\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^eb\326:8-"\r
+  "\37777.\377UUQ\377NNF\377QNE\377;;.\377\34\")\377\"'0\377\")2\377!(0\377"\r
+  "\"'0\377\")1\377\"*2\377#(0\377#(0\377#*1\377#(/\377\")2\377\"'1\377#)1\377"\r
+  "\"'0\377\"'1\377!&.\377!%.\377#)2\377\"(1\377\"(1\377\")2\377#(2\377\"&/"\r
+  "\377\"&2\377\"(0\377\")1\377\"'/\377\")1\377\"'0\377!&/\377#)2\377\"(2\377"\r
+  "$*2\377\"(1\377#(2\377%*2\377$*2\377%*1\377$*2\377$*1\377%+1\377#*2\377\40"\r
+  "&-\377\"&.\377Zek\377\34\40'\377&-3\377&+2\377%*2\377%+1\377$*1\377$*2\377"\r
+  "%*2\377#*2\377%*1\377%+2\377$*1\377%+1\377%*1\377$*1\377$)1\377%+4\377&,"\r
+  "5\377&-3\377#(0\377%*1\377%*1\377$*1\377%*1\377\")2\377#)2\377$'0\377$)1"\r
+  "\377%+1\377$)1\377#*2\377%*1\377#(2\377#(1\377#)1\377%*1\377$*1\377%,1\377"\r
+  "%*1\377#*2\377&,3\377%*3\377%*3\377\"&/\377<<3\377RQE\377NMD\377DE<\377>"\r
+  "=3\377:8-\377:8-=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r}\177\246"\r
+  ":8-\37798-\377EEA\377OOF\377PNE\377A@3\377\35\"(\377!&0\377#)1\377#)1\377"\r
+  "\"&/\377\40&/\377\"(0\377\")2\377\"(0\377#'/\377\"&/\377$)1\377\40(/\377"\r
+  "\"&/\377\"(0\377!'0\377\")1\377\"(2\377\"'/\377#(0\377#'/\377!'/\377\"(2"\r
+  "\377\"&/\377\"'0\377\"(2\377#)1\377\37&.\377!%/\377\"(0\377\"(0\377#(0\377"\r
+  "%*1\377$*1\377#)2\377\"(2\377\")2\377#)1\377$+2\377%+2\377$*3\377$*4\377"\r
+  "#)2\377#'/\377\"&.\377Zdj\377\35!(\377%+1\377%+2\377%*2\377%-3\377#*2\377"\r
+  "%*2\377%*2\377#*2\377$*1\377$)1\377\"*2\377#+2\377%*2\377%*2\377%*1\377$"\r
+  "*1\377%)1\377&+2\377$)0\377$(0\377$*1\377$)1\377$)1\377$*1\377$*1\377#)2"\r
+  "\377#*2\377#*2\377\"(1\377$)0\377%*1\377$*1\377$)1\377\"(1\377$)1\377#(0"\r
+  "\377#)2\377$)1\377#)2\377&,2\377&,4\377$*1\377\"(/\377A?6\377RRF\377LL@\377"\r
+  "==4\377:9.\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "nyy3QTO\37797-\377@A<\377PQF\377ONF\377GE;\377\30\40'\377\40&.\377\"(2\377"\r
+  "$)1\377\"(1\377\"(1\377\"(1\377#(1\377#(0\377#)0\377\"&.\377\")1\377!'/\377"\r
+  "\"'0\377\"'0\377\"&.\377#'/\377\"'/\377\"&.\377#'0\377\"&/\377\"&/\377\""\r
+  "'1\377\"'/\377\"(0\377#(1\377!(0\377!)1\377\"'0\377#'/\377$*1\377\"'/\377"\r
+  "$)1\377\"'2\377!'1\377!'1\377\")2\377\"(2\377#(3\377$*2\377\"*2\377#*2\377"\r
+  "%+2\377!'/\377\"&.\377Ydi\377\34\37'\377%*1\377%+1\377%*1\377&,2\377$*3\377"\r
+  "%-2\377#(3\377$*1\377$+3\377$)0\377$*1\377%)2\377%*3\377#*2\377$(1\377%+"\r
+  "4\377$*1\377%*2\377%+3\377%*1\377$+2\377$+2\377%*1\377\"(1\377#'1\377$*1"\r
+  "\377#(0\377\")1\377$*1\377%,2\377$)2\377$)0\377$)1\377$*1\377$)0\377\"'1"\r
+  "\377#)2\377#(0\377%*1\377\"(0\377$)1\377#(3\377\37&1\377CC;\377RRF\377JJ"\r
+  "?\377891\37787-\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\213\234\2433^da\377:8-\377BB7\377NPF\377PNE\377KJ@\377\37$*\377#)"\r
+  "0\377#(1\377\40&.\377\")1\377#(0\377\"&/\377\"(0\377\")0\377\"&/\377\"&/"\r
+  "\377\")1\377\"'1\377#)1\377#(0\377#'/\377\"(0\377\"'/\377\"&/\377\"(0\377"\r
+  "\"&.\377\"&1\377#'/\377#(0\377!&0\377#(0\377\"&.\377$)0\377\")1\377\"(0\377"\r
+  "!'/\377!&/\377\"&0\377\"&/\377\"*1\377\"*2\377#(2\377$+2\377\"(2\377\"(2"\r
+  "\377#*2\377$*1\377#*2\377#)1\377\"&.\377Ydi\377\36\40(\377&+5\377&-4\377"\r
+  "%*1\377%*1\377%*1\377$+2\377#*3\377%*2\377&+3\377$+2\377$*3\377#)1\377%*"\r
+  "1\377$*1\377%+1\377$*1\377$*1\377%*1\377$,2\377$*1\377$+2\377%*1\377$*2\377"\r
+  "\"(0\377#)1\377%*1\377%*1\377$)1\377#*1\377%*1\377#)2\377$)0\377#'1\377#"\r
+  "*2\377$*1\377$)1\377$)1\377$+1\377$)0\377$(0\377%*1\377$+2\377\34\".\377"\r
+  "=>7\377RRE\377JJ?\37799/\37787+\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\213\234\2433^da\377:8-\377BB:\377PPF\377NNF\377HH"\r
+  "<\377\32\"+\377\37&-\377\"&/\377!&0\377\"'/\377$)0\377\")2\377#)0\377!'/"\r
+  "\377\"'0\377#'/\377\"'/\377\"'1\377#'0\377\"'/\377\"(0\377\"'1\377\"'2\377"\r
+  "\"&/\377\"&.\377\"&0\377\"&/\377#)1\377\"'/\377!'/\377\"&/\377\"'1\377\""\r
+  "'1\377\"'/\377$(0\377\"'/\377!'0\377\"'/\377\"(0\377\"(2\377\"'0\377\"(0"\r
+  "\377\"'1\377\"(2\377\"'2\377\"'/\377$*1\377$*1\377\40$.\377\"&.\377Zdj\377"\r
+  "\35!(\377&+4\377$+2\377'+5\377&+3\377%*1\377%+3\377$+2\377$*2\377$+2\377"\r
+  "%+1\377%*2\377%+4\377%-3\377#*3\377$)1\377%*1\377%*1\377%*1\377%*1\377%*"\r
+  "2\377&+3\377$)0\377$+2\377$(0\377#)1\377'-3\377%+2\377%*1\377$*1\377#)2\377"\r
+  "%)3\377$)0\377#)2\377#)1\377$)1\377%*2\377\"'1\377#'0\377%+1\377%*2\377%"\r
+  "*1\377#)2\377!(2\377=>9\377RPE\377LK?\377=<3\377:8-\377:8-\377:8-3\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\2433^da\377:8-\377DE>"\r
+  "\377PQH\377PNF\377FF9\377\27\37&\377\35#*\377\")1\377\40&0\377\32\35(\377"\r
+  "\36%.\377#*2\377#(0\377#'0\377&)1\377$)0\377\40&0\377#(2\377\"&.\377\37&"\r
+  "-\377\"'0\377#+3\377\"&/\377!&0\377\"(0\377!&.\377\"&1\377\"&/\377\"(0\377"\r
+  "#'/\377#'0\377!'.\377#'/\377\"&/\377\"'/\377!&/\377\"(0\377#)1\377\"(0\377"\r
+  "\")2\377#(1\377#+2\377#*2\377\"&0\377\"&1\377\"'1\377\")2\377#)1\377$)0\377"\r
+  "\"&.\377Ydi\377\35!'\377%+1\377%*2\377%+4\377&+2\377%*1\377#*3\377$,2\377"\r
+  "%*3\377$+2\377%,2\377%*1\377$+2\377$+2\377#*2\377#)1\377%*1\377$)1\377%*"\r
+  "1\377$*2\377\"'0\377$)2\377$)1\377%*1\377#*2\377#*2\377$+2\377%*1\377$(0"\r
+  "\377$)0\377#(0\377\"(0\377\40(/\377!'/\377\"'1\377#(0\377#(1\377#(1\377#"\r
+  "'0\377$(1\377%+2\377%*1\377$)2\377#*2\377EC>\377RRC\377LL@\377::1\37797,"\r
+  "\377:8-\377:8-3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243"\r
+  "3^da\377:8-\377BB<\377OOF\377ROE\377EC8\377\32!)\377!'-\377\26\33!\377\23"\r
+  "\24\25\377\30\27\27\377\22\24\24\377\27\32\"\377#(0\377!&/\377&,2\377#*0"\r
+  "\377!(0\377!&/\377\"&.\377!&0\377\37&.\377\"'/\377\"'/\377!'/\377%*2\377"\r
+  "\"&1\377\"&2\377\"&/\377\40&.\377\"&.\377$(0\377!'.\377\"'/\377\40&/\377"\r
+  "\"'/\377\37'.\377\"'/\377\"'.\377#'/\377\"'/\377\"&.\377\36%-\377\"'1\377"\r
+  "#)1\377\"'0\377!&/\377\")1\377\"&0\377!&.\377\"&.\377Ydi\377\32\35%\377#"\r
+  "*2\377%*1\377%,3\377%*1\377$*1\377#)1\377%)1\377$*0\377%*1\377%*2\377$)1"\r
+  "\377$)0\377#*1\377$*1\377#)0\377$+2\377$*2\377%*1\377'-3\377$*2\377#)2\377"\r
+  "%)2\377#)1\377#*2\377$*3\377#)2\377$*1\377$)0\377$)0\377#(1\377$*1\377#)"\r
+  "0\377$*1\377\"'/\377$)0\377#(0\377#(1\377#(0\377$+2\377#(0\377#)1\377#*2"\r
+  "\377\37(0\377)-.\377RRC\377NNC\377<<3\37722%\377:8-\377:8-3\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\200^da\37798-\377DD<\377N"\r
+  "NF\377QPE\377142\377\35$,\377\31\40(\377-.&\377KL?\266MB)\206KG8\330-+&\377"\r
+  "\37%+\377$*3\377\"&/\377!&/\377\40'.\377!'0\377!(0\377!'0\377\"&.\377\"("\r
+  "0\377\"(0\377#)1\377\"'/\377\"&/\377\"&0\377!&.\377\37&-\377!&/\377!&.\377"\r
+  "\37&-\377!&.\377\37&.\377\"%-\377!&.\377\40&/\377!&.\377\40&.\377\37%,\377"\r
+  "\40&-\377!&.\377!&.\377!'/\377\"'/\377\"'/\377\"(2\377\40'/\377\34!)\377"\r
+  "\"&.\377Ydi\377\33\36&\377$*1\377%+2\377$*1\377$*1\377%*1\377%+2\377%+2\377"\r
+  "$)1\377$)1\377%+1\377#*2\377%*3\377%*1\377%,1\377$*1\377&*4\377%,2\377%+"\r
+  "1\377%*1\377%+2\377%+1\377%,4\377%,2\377$)2\377#)2\377%*1\377$*1\377#(2\377"\r
+  "$*1\377#*2\377#)1\377#)1\377$*1\377\")1\377#*1\377$*1\377$)1\377$*1\377$"\r
+  "*2\377\"(0\377$*1\377$*1\377#)1\377'*0\377RQC\377POF\377@@8\37787+\377:8"\r
+  "-\377:8-\272\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\210\214\326"\r
+  "@@6\377<:/\377LLH\377NNF\377SOB\377\"'/\377\40(2\377*-/\377LLA\314RNE\22"\r
+  "\0\0\0\0RNE&FC8\377\36\37\37\377\37&/\377\"'1\377\"&0\377\")1\377\"'1\377"\r
+  "!&.\377!&.\377\"&1\377\"&0\377\"&.\377#(0\377\"&/\377\"&/\377\"(0\377\"&"\r
+  "/\377!&0\377!&.\377!(0\377\40'0\377!&0\377\37&-\377\40&.\377\"(0\377\40&"\r
+  "/\377\"&.\377\40&-\377!&-\377!&.\377\37&.\377!&.\377\40&-\377!&.\377\"'/"\r
+  "\377!'/\377\"&1\377\37%-\377\"&.\377Ydi\377\35\40%\377%+1\377%,3\377%+1\377"\r
+  "$+2\377%+2\377%*1\377$+3\377$*3\377$*2\377%+3\377#*2\377&,3\377%*1\377%*"\r
+  "1\377#(0\377#)3\377%*2\377$*1\377$+2\377%+3\377%+1\377#)1\377#+1\377%+2\377"\r
+  "%+2\377$*1\377$*1\377\"(1\377$*1\377#(2\377\"'1\377\"&1\377#(0\377#)2\377"\r
+  "#)1\377\"(1\377$)0\377$*1\377#*2\377#)2\377'+4\377(-5\377#(0\377\24\34&\377"\r
+  "NL?\377TSH\377GG>\377>=3\377:8-\377:8-\354:8-B\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\213\234\243By\206\212\35497-\377<;0\377MNK\377PPE\377FD>\377\33$4"\r
+  "\377'-7\377687\377MMD\302\0\0\0\0\0\0\0\0RNE\12MJ@\377&'(\377\40&1\377\""\r
+  "&/\377\"(0\377\"(0\377\"&.\377#(0\377#(0\377\"&/\377\"&.\377\"&.\377!'/\377"\r
+  "#'/\377\"'1\377\"'1\377\"'0\377\"&0\377\"'/\377\"&0\377!'/\377!&/\377!&."\r
+  "\377\40'/\377\"&.\377\"'/\377\40&-\377\40&.\377\40&-\377\37&-\377!&.\377"\r
+  "\37&.\377\40&.\377!&/\377\40&-\377\37%,\377\"&.\377\37#*\377\"&.\377Ydi\377"\r
+  "\34\40'\377%+1\377%,1\377%*2\377#(2\377$*1\377%*2\377',4\377%*1\377%+1\377"\r
+  "%,2\377%,2\377$*2\377%*1\377%*1\377#*1\377#*2\377$*3\377%*2\377%*2\377%+"\r
+  "2\377%+1\377#)0\377(-5\377%*1\377%*1\377$*1\377$)0\377$)0\377$)0\377#'0\377"\r
+  "$*1\377\"(0\377#)1\377$)1\377$)0\377%)1\377#(0\377#)0\377$*1\377%*1\377\""\r
+  "'/\377\"'/\377$*1\377\37&0\377556\377VSF\377NKA\377>?5\377:8-\377:8-\377"\r
+  ":8-\233:8-\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\7\213\234\243\233MOH\37797-\377"\r
+  "CC<\377MMF\377SPD\37736;\377#*6\377).9\3779BE\377NMC\370MMD\200OP?>OMB\257"\r
+  "NLF\377*3:\377#)2\377$)0\377\"'1\377\"'/\377\"&,\377\40&/\377\"&/\377\"&"\r
+  "0\377\"&0\377!&.\377!%0\377\"&/\377\40&/\377$(0\377\"'0\377\"(2\377\"&/\377"\r
+  "\"&.\377\"&/\377!%.\377!%-\377!&/\377!&.\377\"&/\377\40&-\377\40%.\377\37"\r
+  "&-\377!&.\377!&,\377\36&-\377\37&-\377\37%-\377\40%-\377\40&.\377\"'.\377"\r
+  "\"$*\377\"&.\377Ydi\377\33\40'\377#(1\377%*3\377%*3\377$*2\377$*1\377%*3"\r
+  "\377%*2\377%+1\377&-2\377%*3\377$*2\377$*1\377$*1\377$*1\377#(1\377$)1\377"\r
+  "#*2\377%*1\377$*2\377#+3\377#*2\377%*1\377%*2\377\"*2\377%*1\377$*1\377$"\r
+  ")0\377$)1\377\"&.\377\"&/\377#)2\377$)1\377#(2\377#*2\377$*1\377#)1\377\""\r
+  "(0\377\"(0\377$*1\377%*2\377#(2\377#(/\377#*1\377&,3\377\"*1\377QMB\377N"\r
+  "MC\377BB9\377:9/\377:8-\377:8-\377:8-\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\200"\r
+  "t\177\201\377?>5\37787-\377HH?\377NNE\377PMC\377\37)5\377%,4\377%*3\377\35"\r
+  "#4\377jnk\377_]O\377TQ@\377om^\377R_g\377\27\37)\377\")2\377#'0\377#'/\377"\r
+  "#(0\377$(0\377\"&.\377\"(0\377!&/\377\"'0\377#(1\377!%/\377\"&/\377\"(1\377"\r
+  "#'/\377\"'/\377\40&/\377!&/\377\"&.\377!&.\377!&.\377\37&-\377\"&/\377!&"\r
+  ".\377\40%,\377\40&-\377\40%-\377\36&-\377\36&-\377\40&-\377\40$-\377\40&"\r
+  "-\377\40%-\377\36%,\377\40&-\377\37&,\377\"&.\377\"&.\377Ydi\377\35\40'\377"\r
+  "&+5\377%,3\377%+2\377$*1\377%+1\377%+1\377$*2\377$*1\377$*2\377%+1\377%+"\r
+  "1\377%+1\377%*1\377#*2\377$*1\377$*1\377$*1\377#(0\377#)0\377#)1\377$*1\377"\r
+  "#)0\377#*0\377#(0\377%*1\377$)1\377$)0\377$(0\377#)1\377#(0\377\"*2\377$"\r
+  ")1\377#(0\377#*3\377#*2\377#*2\377$)1\377#*2\377#(0\377$*1\377%*1\377$)1"\r
+  "\377$)0\377#*2\377\37'1\3775:B\377UQC\377LJ@\377==3\377:8-\377:8-\377:8-"\r
+  "\314:8-\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\213\234\243\37\200\216\223\324<;0\37798.\377BB;\377MME\377WTG"\r
+  "\377>DI\377\40(3\377&*5\377%+3\377\40&/\377!,:\377V[d\377gns\377HUc\377\31"\r
+  "\"*\377\"'-\377\"'1\377\"(1\377\"'0\377!(0\377\"&.\377\"&.\377\"'/\377#'"\r
+  "0\377\"(1\377\37&.\377\37$,\377\"'0\377\"&/\377\"'0\377\"&.\377!&.\377\37"\r
+  "'/\377\40'.\377\"&.\377\40&-\377\40'.\377\40%,\377\35%,\377\37&-\377\40&"\r
+  "-\377\40&-\377\"&/\377\40&-\377\36&-\377\37&-\377\40&-\377\36&-\377\37%-"\r
+  "\377!&/\377!&-\377\37#+\377\"&.\377Ydi\377\33\37%\377%*2\377$*2\377&+4\377"\r
+  "$*4\377$+1\377&-4\377&-3\377%,1\377$*1\377%*1\377#+2\377#*2\377%*1\377#*"\r
+  "2\377$*1\377$,2\377%*1\377$*1\377$*1\377$)1\377#*2\377#*2\377%+1\377#)1\377"\r
+  "#*1\377#)1\377$)0\377$*1\377$)0\377$*1\377\"*2\377\"'0\377$)1\377#*3\377"\r
+  "$+2\377$)1\377#(2\377#'2\377$)1\377$*1\377#(2\377$)1\377\")/\377$*1\377\""\r
+  ")1\377!,?\377KLO\377SNC\377EF<\377;:/\377:8-\377:8-\377:8-\312:8-\10\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\10\213\233"\r
+  "\242\312_fc\37787-\377<<4\377IKC\377POE\377URJ\377\35(7\377#)1\377%*2\377"\r
+  "#*2\377\"(0\377\40&.\377\26\36'\377\25\35)\377\33\40(\377\"(1\377$)2\377"\r
+  "$*1\377$)1\377#(1\377#(/\377\"&.\377\"'/\377#(1\377\")1\377#(0\377\40&0\377"\r
+  "\37&.\377\"'0\377\37&.\377\37'.\377!&.\377!&.\377!&.\377#'/\377\"&.\377!"\r
+  "&.\377\40'.\377\40%-\377\35$,\377\37&-\377\40&.\377!&.\377#(0\377\40$,\377"\r
+  "!&/\377\"&.\377\36$-\377\40&-\377!%-\377!&.\377\40&.\377\40$+\377\"&.\377"\r
+  "Ydi\377\34\40'\377&,4\377%+1\377&,3\377'-3\377&*4\377',3\377%*3\377&,2\377"\r
+  "%,2\377%*1\377$*2\377%*2\377$*1\377$*1\377%*3\377$*1\377%*1\377%*3\377%+"\r
+  "1\377$*1\377%+2\377#(2\377%)0\377#(0\377#*2\377$*1\377\"(1\377#(1\377$*1"\r
+  "\377\"(2\377#(0\377#(2\377$)1\377\"(2\377#)1\377$*2\377#)2\377$(1\377$(0"\r
+  "\377%+1\377%*1\377\"(1\377!&.\377\")0\377$)2\377$'.\377$;P\377URJ\377PME"\r
+  "\377FE<\377:90\377:8-\377:8-\377:8-\313:8-\36\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\213\234\243Y\212\232\241\313Y^Z\37797-\377:91\377HHB\377PND"\r
+  "\377UTJ\377+5A\377#'0\377$(2\377\")2\377#*1\377$)1\377\"(0\377#(1\377#)1"\r
+  "\377\40'/\377\40$+\377\"'0\377\"'2\377%*1\377#)1\377\"*2\377\"'2\377#(0\377"\r
+  "#(/\377\"&/\377\"&1\377!'/\377!'.\377#'0\377\"&.\377\"&.\377\"&1\377\"&2"\r
+  "\377#'1\377!&.\377\"'/\377\40'.\377\37&-\377#%.\377\"'/\377!&.\377\"'/\377"\r
+  "#'/\377!&/\377\40&.\377\37&-\377\36&-\377\40&-\377!&.\377!&.\377\40&.\377"\r
+  "!'/\377\"&-\377\"&.\377Ydi\377\35!'\377%+2\377%,2\377&,2\377&+2\377$*2\377"\r
+  "$+2\377#+2\377%*2\377&*4\377$)2\377%)1\377$*1\377%*2\377$*3\377%,3\377$*"\r
+  "1\377%*1\377%*1\377$*1\377\"(2\377$+2\377$)3\377%*0\377%)1\377%*1\377$*1"\r
+  "\377#)1\377%*1\377$*1\377$*1\377$*2\377#*2\377#*2\377\")2\377#)1\377#)2\377"\r
+  "$*2\377$*1\377%*1\377$*1\377$*1\377#)2\377%+2\377%*1\377#*1\377!)0\377\30"\r
+  "\40*\3779EZ\377[RF\377ONC\377@A8\377:8.\377:8-\377:8-\377=;1\316\177\215"\r
+  "\221uu\201\203\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243\20\213\234\243ut\200\202\374PSM\377"\r
+  ":8-\377:8.\377CB<\377MLD\377]WK\3777@N\377\35%0\377\40$+\377#*2\377#)1\377"\r
+  "#*2\377#)1\377#(0\377#(1\377$)1\377#)1\377\"(0\377#)1\377\"(1\377#(0\377"\r
+  "#)1\377\"'1\377$(0\377#'0\377#'/\377!&.\377\"&/\377\"'/\377\37&.\377\37&"\r
+  "-\377\40&.\377\"&0\377!&/\377\40&.\377\"&/\377!&.\377\"&.\377\37%.\377!&"\r
+  ".\377\40&.\377\"&.\377!&.\377\40'.\377!&.\377!$-\377\37&-\377\40&.\377!&"\r
+  ".\377\40&.\377\40&.\377\40&.\377\"&/\377!&/\377\40&.\377\"&.\377Ydi\377\33"\r
+  "\40%\377$*1\377%*3\377&,3\377%*1\377&,3\377'-3\377$*1\377&,2\377%+1\377%"\r
+  "+2\377%*1\377&-2\377$)3\377$*1\377$)1\377$*1\377%+1\377$)1\377$*1\377%*1"\r
+  "\377%*3\377\")1\377$+2\377#)2\377#)1\377#)2\377$+2\377&,2\377#*1\377$(1\377"\r
+  "%)3\377%*1\377$)0\377\"(1\377$*1\377#*2\377#)2\377#)2\377%*1\377$)1\377$"\r
+  "*1\377#*2\377#)2\377#)1\377!(0\377#+2\377\"(0\377\35(2\377DLZ\377SNE\377"\r
+  "QQC\377FC9\377:9/\377:8-\377:8-\377:8-\377Z`\\\355ahfl\213\234\243W\0\0\0"\r
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\234\243W\213\234\243l\202"\r
+  "\221\226\355irq\377;:/\37797-\377::1\377AA7\377LKB\377XUJ\3779G]\377\33'"\r
+  "2\377\"(/\377\"'1\377#(1\377!%0\377#'0\377$(1\377\")2\377#*2\377#)2\377\""\r
+  "'/\377$)0\377#*1\377#)1\377\"(1\377#'/\377\"(0\377#(0\377\"'0\377#(1\377"\r
+  "#'/\377!&.\377\"(0\377\"'1\377#(0\377!'/\377!'0\377\"&.\377!'/\377\"&/\377"\r
+  "#'/\377\"'/\377!&.\377!&.\377\40&-\377\"&/\377!&.\377\"&/\377\40%-\377\37"\r
+  "%.\377\40%.\377!'0\377!'.\377$(0\377$(0\377!&.\377!&.\377!&/\377#'0\377\""\r
+  "&.\377Ydi\377\34!'\377%*1\377%*1\377&*4\377&,3\377&,3\377&-3\377%*2\377%"\r
+  ",1\377$+2\377&+2\377%,3\377%*1\377%*2\377%*1\377#'/\377#)1\377$)2\377$*2"\r
+  "\377#)0\377%*2\377%+3\377%)3\377%*1\377$)0\377$)0\377#*2\377#)2\377#*2\377"\r
+  "#*1\377#'1\377#'0\377$)1\377$*1\377$)1\377#)0\377$+2\377%)1\377$*1\377%*"\r
+  "1\377\"(1\377$)0\377%*1\377#(0\377$*0\377$*0\377#)1\377#*2\377$)0\377\34"\r
+  "%5\3778EX\377[XK\377PNE\377GF>\377<:/\377:8.\377:8-\377:8-\377CC:\377IKC"\r
+  "\364`gd\306}\213\217\306}\213\217\306}\213\217\306}\213\217\306}\213\217"\r
+  "\306w\203\206\364LNG\377HIA\377:8-\37798-\377;;1\377FD;\377NLB\377]ZU\377"\r
+  ":G\\\377\35(8\377#)/\377#(0\377#*2\377$*2\377\")1\377#)1\377#(1\377#)2\377"\r
+  "#(0\377\"(0\377#)1\377\"'1\377$)1\377\"'1\377!)1\377\")1\377\"'1\377\"'/"\r
+  "\377\"'0\377\"&/\377\"'/\377!&.\377\"(0\377\"'/\377\"'/\377\"(0\377\"'/\377"\r
+  "\"&0\377$(0\377\"&0\377\"&0\377\"&0\377\"&0\377\40&.\377\"&.\377\"&.\377"\r
+  "\"&.\377\"(0\377!&.\377\"'1\377\40'0\377\"'/\377!'.\377\37&.\377\37$.\377"\r
+  "\40&.\377!(0\377\"'/\377\"&/\377\"&.\377Ydi\377\33\40%\377$*2\377%,1\377"\r
+  "&+3\377%+2\377#*2\377$+2\377%+1\377%,2\377&+4\377%,2\377%+1\377$+1\377$+"\r
+  "1\377%+1\377#)1\377$)1\377#)2\377%+3\377$*1\377#*2\377$+2\377%*2\377&+4\377"\r
+  "$*1\377$*1\377#(0\377$*2\377$)2\377%+1\377$*1\377%*1\377$*1\377#)2\377$)"\r
+  "1\377\"'1\377#)1\377$)1\377$)0\377$*1\377%*1\377$(0\377#(1\377\")2\377#("\r
+  "1\377$)1\377#'0\377$*3\377$*1\377\"'1\377\36&2\377>L[\377TYY\377POD\377J"\r
+  "J?\377BB8\377:90\37776,\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-\377:8-"\r
+  "\377:8-\377:8-\37787-\377:9.\377;;1\377??5\377II>\377SPD\377^b_\377;GY\377"\r
+  "\33#-\377\40'.\377#)2\377\"'1\377$+2\377$*1\377\"'0\377\")0\377\"(0\377\""\r
+  "(1\377#)1\377!)1\377#)2\377\")1\377\"(0\377!'0\377#(0\377\"(1\377\"'1\377"\r
+  "!'1\377\"'1\377!(0\377#)2\377\"&0\377\"&.\377#(0\377\"(1\377!)1\377\"'0\377"\r
+  "\"'0\377\"'/\377\40'/\377\"'0\377\"(0\377\"'.\377#'/\377!(/\377\"'0\377!"\r
+  "&.\377\40'/\377!&.\377\"&0\377\"&1\377!%/\377\"'/\377\"&1\377!&0\377#(0\377"\r
+  "!'/\377#(1\377!&.\377\"&.\377Ydi\377\34\37&\377%+3\377&-3\377&,2\377&,3\377"\r
+  "%*3\377$*2\377%,3\377$*1\377%*4\377%,2\377%+1\377$+2\377$*1\377$)0\377$*"\r
+  "1\377%+1\377%+1\377%*1\377%*1\377$*1\377$+2\377#(0\377%*2\377#*2\377#*2\377"\r
+  "%)2\377$)2\377$*4\377%,2\377%*3\377%*1\377$*1\377$*2\377#*2\377\")2\377#"\r
+  "(1\377$*3\377$*1\377$)1\377#(0\377#*2\377%*1\377%*1\377#*2\377#*2\377#)1"\r
+  "\377#'/\377#)1\377%*2\377#)0\377\36#+\377*7G\377W^d\377[XO\377USI\377LK?"\r
+  "\377EE:\377=>4\377:90\377<:/\377;9/\377::0\377::1\37798/\377:8/\377;9/\377"\r
+  "=<2\377CC9\377IH=\377TRG\377_`U\377]ci\377/:G\377\34#+\377$)1\377\"*2\377"\r
+  "\")2\377\")2\377\40'/\377!(1\377\"&2\377#(1\377#(1\377#)2\377#(0\377\")0"\r
+  "\377\"&/\377\"'/\377#)1\377#)1\377\")1\377\"&1\377\"&1\377!&/\377\"(0\377"\r
+  "\"'/\377#'0\377$(0\377\"&.\377\"&.\377\"&/\377!'0\377\"(1\377!&.\377!&.\377"\r
+  "!&.\377\"&/\377\"&.\377\"'0\377\"&.\377\")0\377#'/\377\"&/\377\"'/\377#'"\r
+  "/\377\"&/\377#(0\377#'/\377\"&/\377\"(1\377#(0\377#'0\377\"'0\377#'0\377"\r
+  "\"&0\377\"&.\377Ydi\377\34\40%\377%+1\377&,3\377&-2\377&,4\377&+3\377%*2"\r
+  "\377%*3\377%,2\377%*1\377%+1\377%+1\377%*2\377%)1\377$(1\377#*2\377%+1\377"\r
+  "%+1\377$)1\377%*1\377#)2\377%+2\377%*1\377&+3\377$*2\377$)1\377$)1\377&+"\r
+  "3\377$*2\377\"*2\377#*2\377%+1\377%*1\377#(1\377#*2\377$*3\377#(2\377#)2"\r
+  "\377$*1\377#)2\377#)1\377%*1\377#*2\377#(0\377#)2\377$*2\377$)1\377$)0\377"\r
+  "$(0\377\"'0\377#*1\377!'/\377\40%,\377\37(/\377>HT\377ell\377da\\\377YVK"\r
+  "\377PPD\377KI?\377IF=\377GG>\377HF:\377IH=\377KH?\377JF;\377II=\377NK?\377"\r
+  "YWL\377mok\377dpq\377@PY\377\35%/\377\35$,\377\"'.\377%*1\377%+2\377#)0\377"\r
+  "#)1\377%*1\377\"*2\377\"'2\377#'1\377#'0\377#'2\377#(2\377#'/\377\"&.\377"\r
+  "$(2\377$)1\377$(0\377#)1\377\"'2\377!(2\377!'2\377!'0\377#'1\377\"(0\377"\r
+  "\"(0\377#(0\377!(0\377!'/\377!'2\377\"(1\377\"&0\377\"&/\377\"&1\377\"&/"\r
+  "\377$(0\377!'0\377\"&1\377\"'/\377!(/\377\40'1\377\")1\377\"&.\377#(0\377"\r
+  "#)1\377#'0\377$(1\377\")1\377\")1\377$)0\377\"&0\377#'1\377$)2\377\"&.\377"\r
+  "Ydi\377\33!%\377%+2\377&.5\377&.4\377&-4\377&*3\377$(3\377%*2\377&*4\377"\r
+  "&,3\377&+3\377#*2\377$)0\377%+1\377$(2\377\"*2\377$*1\377$*3\377%,4\377#"\r
+  "*2\377#(2\377#)2\377#)2\377%*1\377&+2\377$)0\377$*1\377&(1\377%+3\377$*2"\r
+  "\377$*1\377$*1\377$*1\377%*2\377$*1\377!*1\377#*1\377$)1\377$*1\377\")1\377"\r
+  "#)1\377#(1\377\")2\377\")1\377\")2\377#*2\377#(/\377$*1\377#'/\377!(/\377"\r
+  "$*1\377#*1\377$*1\377#)1\377\36#)\377\33\40*\377*5F\377DPa\377bcd\377YZX"\r
+  "\377Z[T\377WXO\377ZWL\377\\WL\377Z[R\377\\\\Y\377_^W\377U_d\377CP`\377(2"\r
+  "B\377\31\37)\377\35\"(\377#(1\377%*1\377#)1\377#(0\377\40&.\377$(0\377\""\r
+  ")1\377$(1\377$*1\377\")2\377\"(0\377$)0\377$*1\377#(2\377\")2\377\"'0\377"\r
+  "\")2\377\"*1\377$)1\377$*1\377#)1\377\"'/\377#&/\377\"&0\377\"&1\377$)0\377"\r
+  "#'1\377#(1\377$(1\377\"(0\377\"&0\377!'/\377#'2\377\"'0\377\"(1\377\"&/\377"\r
+  "\"'2\377\"'0\377\")2\377%*1\377\"(0\377\"(2\377\"(0\377\"(0\377#(3\377#("\r
+  "2\377$*1\377%*2\377%*2\377%*4\377$*2\377#'0\377$)1\377$)0\377\"&.\377Ydi"\r
+  "\377\35!'\377&,4\377&,6\377&-6\377&-3\377%*2\377%+3\377&+4\377%*3\377%*3"\r
+  "\377$*1\377%,2\377%*1\377%+2\377$+2\377#*2\377%*3\377#(/\377#(0\377#*2\377"\r
+  "%*1\377#)2\377$)1\377%*3\377$*1\377%,3\377$*1\377&,3\377%*1\377%*2\377%*"\r
+  "3\377%,2\377$*2\377%+2\377$*1\377\"*2\377#*1\377#(1\377\"*2\377\")1\377%"\r
+  "*1\377#(2\377#*2\377#)1\377\"(0\377#)1\377\"(0\377#*2\377$)0\377#*2\377$"\r
+  "*1\377#(/\377$(0\377%+2\377\"'0\377\")1\377#(0\377\34#,\377\36$-\377$/>\377"\r
+  ".9I\3773<J\377:BN\377:BM\3773@M\377*6E\377&.8\377!)2\377\33\37%\377!&/\377"\r
+  "#)1\377\"(0\377#(1\377#)1\377#'/\377\"(0\377#)2\377#)1\377\")1\377#)2\377"\r
+  "#)1\377#(0\377#(0\377#(1\377\"*2\377#*2\377#*2\377\"(0\377\"(1\377!)1\377"\r
+  "\"(1\377#(1\377!'0\377$*1\377$)1\377\"&/\377\"&.\377#(1\377#'1\377\"(2\377"\r
+  "\"&0\377#(1\377\"'/\377\"(1\377\"'2\377\"&0\377\"'0\377\"'0\377\"(0\377\""\r
+  "(1\377\"(1\377$(1\377#(2\377\")1\377$+1\377$)0\377&,5\377$+3\377#+2\377#"\r
+  "*3\377$+2\377&+4\377&+6\377%)4\377$)0\377$)2\377\"&.\377Ydi\377\35!'\377"\r
+  "&-4\377&-6\377&-3\377',3\377&-2\377(.5\377%+2\377%+1\377%*1\377%+1\377%*"\r
+  "1\377%,2\377%)1\377$*2\377$*1\377$*1\377#)1\377#*2\377%*2\377$*2\377#*2\377"\r
+  "\"'/\377#*1\377#)1\377\"(1\377$*2\377$*2\377$)2\377%*1\377#*2\377&*2\377"\r
+  "$+2\377$+1\377$)0\377#)1\377%*1\377#)2\377#)2\377\"(0\377\"'1\377#)1\377"\r
+  "#)2\377%*1\377$)1\377$*1\377#)2\377#)1\377%)1\377\"&/\377#(1\377#*1\377#"\r
+  "(.\377#)0\377%*1\377$(1\377%*1\377$*1\377$)1\377$*2\377',4\377$(0\377%*2"\r
+  "\377&-6\377%,2\377\40)/\377$,3\377%*3\377#*2\377\"*2\377#)1\377\"(1\377#"\r
+  "(2\377#(0\377\"(0\377#(0\377\"&1\377#)1\377\")2\377\")1\377$*1\377\"*2\377"\r
+  "#(0\377#*2\377$)1\377\"(1\377#(0\377#(0\377$)1\377#'/\377#'0\377#'1\377#"\r
+  "(1\377\")1\377\"'/\377\")2\377$(0\377#)0\377#'0\377#(1\377\"'0\377\"(1\377"\r
+  "\")1\377\"*1\377\"'/\377#)1\377\"'0\377\")1\377\"(0\377!)1\377$)1\377$)1"\r
+  "\377$)0\377#*2\377$*1\377#*2\377$*2\377$,2\377&*5\377$*3\377$+3\377%*3\377"\r
+  "%+3\377&-4\377&-2\377#*2\377\"&.\377Ydi\377\33\40%\377&,5\377(,8\377&,6\377"\r
+  "&-5\377'.5\377$+4\377%+2\377$+2\377',3\377%-2\377%+1\377&,2\377$)0\377%*"\r
+  "1\377$*1\377$*1\377#+2\377$*1\377%*2\377$)2\377%+2\377\")2\377%+1\377$*1"\r
+  "\377$*1\377$)2\377#*2\377#(0\377$*1\377\"(0\377#)2\377$*1\377#)1\377#)0\377"\r
+  "\")0\377%*1\377$)1\377#)1\377\")0\377\"'1\377$*1\377#)2\377$)1\377$*3\377"\r
+  "#*2\377#(2\377\"'/\377#(1\377\")2\377#*2\377#)2\377#*2\377#*2\377%*1\377"\r
+  "\"*1\377$*1\377%*1\377$*1\377%+1\377&+4\377%*4\377%*2\377&.3\377%+2\377%"\r
+  "*1\377$*1\377$*1\377$*1\377$*1\377!(0\377\"'/\377#)2\377$)1\377#(0\377\""\r
+  "'/\377\"&.\377$)1\377#)2\377!)1\377#*2\377\"'2\377\"(0\377\"*2\377#)1\377"\r
+  "\"'0\377\"'/\377\"'/\377!'/\377\"'/\377\")1\377\"(1\377#(1\377#(0\377\"&"\r
+  "/\377\"'/\377$(0\377#'0\377\")1\377!(0\377\40(/\377\"(/\377\40'/\377\"(0"\r
+  "\377\"'1\377#)1\377\")1\377\")1\377$)1\377#*1\377#*1\377\"&1\377!&/\377#"\r
+  "*2\377$*2\377%*2\377$*2\377$,3\377&,4\377&,4\377&,5\377&-6\377%-5\377%,2"\r
+  "\377%,4\377%,4\377\"&.\377Ydi\377\36!'\377',4\377(.6\377&,6\377-29\377'+"\r
+  "6\377%+2\377%,2\377&+4\377%*1\377%+3\377$)2\377%*3\377$)1\377\"'2\377#)2"\r
+  "\377#*2\377%,4\377$*1\377#)1\377%+1\377%,1\377#)2\377$(0\377#(0\377$)1\377"\r
+  "!'0\377#*1\377%*1\377$*1\377$*1\377$)1\377%*2\377$*1\377$)1\377$)2\377$)"\r
+  "1\377$)0\377\"'/\377\"(0\377#*2\377\"*2\377#)2\377$*1\377$)1\377$(1\377\""\r
+  "'1\377\")1\377\"(0\377#)1\377%*1\377$)1\377%*1\377#(2\377$)1\377%*2\377&"\r
+  "-2\377%+1\377$*1\377#*2\377%+2\377%*1\377&*4\377$+0\377$*1\377%*1\377#*1"\r
+  "\377$)1\377$+2\377#*2\377%*1\377$*1\377#)1\377#(1\377!'.\377#)1\377\"(1\377"\r
+  "\"&/\377\"'0\377#'0\377\"'2\377#*2\377#'/\377\"'/\377\"'1\377\"(0\377\")"\r
+  "1\377\"(2\377!'/\377!)1\377#)1\377#)2\377#)2\377\"(1\377#)1\377#(1\377#("\r
+  "1\377$(0\377#(0\377\"&/\377!&.\377!'1\377\"'0\377\"(0\377#'/\377\"'0\377"\r
+  "$*1\377\"'2\377!*1\377#(1\377%*1\377%)1\377$*1\377$*3\377&*4\377&,4\377%"\r
+  ",2\377%*1\377&+5\377%-4\377&-7\377&+7\377&+6\377&-6\377&+6\377&,4\377\"&"\r
+  ".\377Ydi\377\35!'\377&,5\377',5\377)-6\377-18\377&-6\377%-2\377%,2\377&-"\r
+  "4\377%+2\377%+1\377$)2\377%*1\377%*1\377$*1\377#)2\377%*1\377%*2\377%*1\377"\r
+  "#)1\377$*1\377$*1\377$)1\377#*2\377$*1\377\"(2\377$*1\377$*1\377$*1\377$"\r
+  "*1\377%*1\377$)1\377%+2\377$*1\377$)1\377$*2\377$*1\377\"'0\377#(0\377#("\r
+  "0\377#(0\377\"(2\377\"*2\377#(0\377$)1\377$)1\377#)1\377#*2\377$)1\377$("\r
+  "1\377#)1\377$)1\377#*2\377$*2\377$)1\377%*2\377%+1\377#*2\377$*1\377$*1\377"\r
+  "%+2\377&-2\377%+2\377$)0\377%*1\377%*1\377%*1\377#)2\377#*2\377$)1\377#)"\r
+  "1\377$)0\377$)1\377#)2\377\"(1\377$)1\377#(0\377#)1\377\"*2\377#*2\377\""\r
+  ")2\377#'1\377\"&0\377#(0\377#)1\377\40&/\377\"'/\377\"(2\377\")1\377\"'0"\r
+  "\377\"&0\377\"'/\377#'0\377#(0\377$*1\377\"&/\377\"&/\377$(0\377\"'/\377"\r
+  "#)0\377\")1\377\"*2\377\")1\377\"(2\377\"'1\377\")1\377$(0\377#'1\377#*1"\r
+  "\377#+2\377$)3\377#(2\377\"*2\377$)2\377%*4\377%*3\377#(3\377&,5\377&-6\377"\r
+  "'-5\377&+3\377&+5\377%+5\377&.6\377'.6\377$*2\377\"&.\377Ydi\377\37#'\377"\r
+  "*.6\377)-6\377'-5\377&.6\377&-4\377&,5\377%,3\377%+1\377',3\377#)2\377%*"\r
+  "4\377%,3\377#*2\377#(0\377#*2\377%*1\377$(1\377#)2\377$)0\377%*1\377$)0\377"\r
+  "\"*2\377$*1\377$)1\377%+1\377$*1\377#*2\377$*1\377$*1\377%*1\377#)2\377#"\r
+  "'2\377%+2\377$*2\377#(1\377$)0\377#)0\377$*1\377%*1\377#)1\377#(/\377#'/"\r
+  "\377\")0\377$*3\377\"(1\377$)1\377$*2\377#*1\377#*2\377$(0\377$*1\377$+2"\r
+  "\377$*1\377$*1\377$*1\377#+1\377#*2\377%+1\377$*1\377$+1\377%+1\377$)1\377"\r
+  "%*3\377$*1\377\"*2\377$*1\377$*1\377#*2\377#)0\377#'1\377#)1\377#)2\377$"\r
+  "*1\377#)2\377\"'/\377#(0\377#(0\377#(2\377%*1\377\"*1\377#)3\377$)1\377\""\r
+  "(1\377\")1\377#)2\377#'/\377#'0\377\"'/\377\"'0\377#(1\377\"(0\377\"&/\377"\r
+  "!'0\377\"'/\377#)1\377\"'/\377\"(0\377\"(0\377\"&/\377#*1\377!)1\377\"(0"\r
+  "\377#(2\377\"(2\377\"(0\377\"(1\377\"*2\377#)2\377\")2\377#)1\377$*2\377"\r
+  "%*4\377%+4\377$)3\377%)5\377%*4\377&,6\377).8\377'-7\377'.7\377&.6\377'."\r
+  "6\377(.6\377&.6\377&,4\377\"&.\377Ydi\377\36\")\377'-5\377&+3\377&,4\377"\r
+  "&-3\377&-4\377&+4\377%+4\377%+2\377%+3\377$*1\377%+1\377$*2\377#*2\377#("\r
+  "0\377$*1\377$(1\377#*2\377$*1\377$*1\377$)1\377$)0\377$*1\377%,2\377$*1\377"\r
+  "#)2\377%*1\377$*2\377$*3\377#)1\377$)1\377#*2\377$*1\377$)3\377%*4\377#("\r
+  "0\377$(1\377\"(2\377#(2\377#)1\377#*2\377$*1\377#*1\377$)1\377$*2\377\"("\r
+  "2\377\40*1\377\"'/\377\"'1\377#*2\377#(1\377%*1\377#)2\377#*2\377#*2\377"\r
+  "$,2\377\37'.\377#*1\377$+2\377%*1\377%*1\377!(/\377$*1\377#'1\377\"'/\377"\r
+  "$)1\377#(1\377\")1\377$*1\377!(/\377!'/\377#*1\377#)2\377$)1\377$*1\377\""\r
+  ")1\377$*1\377#'1\377\"&/\377#)1\377#'0\377\")2\377\"(/\377!'/\377\")1\377"\r
+  "$)1\377\"&/\377\"(1\377\"(0\377\"&/\377!'/\377\"'/\377\"&/\377$)1\377#'/"\r
+  "\377\"'0\377!'.\377#(1\377\40(0\377\"'/\377#(2\377#(0\377\40'0\377\")2\377"\r
+  "\"(1\377\")1\377#)0\377#(0\377#)3\377#)2\377#)2\377$*1\377$(1\377#*2\377"\r
+  "%,4\377$+4\377%*5\377&+6\377&,4\377&.6\377&.6\377&,6\377(.6\377'.6\377'."\r
+  "6\377%*3\377\"&.\377Ydi\377\36!'\377&,2\377'-3\377&,4\377&,2\377&-2\377%"\r
+  "+1\377&-5\377&-4\377&,2\377%*1\377%+2\377$*2\377%*2\377$*2\377$)1\377$)1"\r
+  "\377#)1\377$*1\377$*2\377%*2\377%,2\377$*1\377#*2\377&,2\377$)1\377%+1\377"\r
+  "#*2\377$)1\377%+1\377$)2\377$*1\377$*1\377#)0\377$*1\377#*2\377#)2\377#'"\r
+  "2\377#(1\377\"(2\377#*2\377\"*2\377\")1\377#*2\377#)1\377#)2\377\")1\377"\r
+  "\")2\377\")2\377#)2\377#(0\377#*2\377$)0\377#*2\377\"'1\377$+2\377%*1\377"\r
+  "#*1\377!&0\377#)1\377#)0\377\34#+\377\24\32#\377\26\31#\377\30\36'\377#'"\r
+  "/\377$)0\377\"'/\377\"(0\377$)1\377$)1\377\"'/\377\"'1\377\"'2\377$(0\377"\r
+  "\"(2\377#)1\377\"'2\377\"'1\377#(0\377\"'1\377\"&/\377#)1\377#)2\377\")2"\r
+  "\377#(0\377!'.\377#)1\377#(3\377#'2\377#)2\377\"(0\377\"&0\377#)2\377#(2"\r
+  "\377#(0\377#(0\377$(1\377#)1\377\"'.\377\"(0\377$)1\377\")1\377\"&1\377\""\r
+  ")2\377\"'1\377$*1\377#)0\377\"*2\377$*3\377$*3\377%+1\377$)2\377%*4\377$"\r
+  "*2\377%*3\377$*3\377',5\377&,6\377&-6\377&,5\377&.6\377'-7\377'/6\377&+6"\r
+  "\377\")1\377\"&.\377Ydi\377\32\37%\377%*1\377%,2\377%*1\377$)1\377$*1\377"\r
+  "#*2\377%*2\377$*1\377%,2\377%*1\377&,2\377%+2\377%*1\377%*1\377%*1\377#*"\r
+  "2\377#*1\377%*1\377%*1\377%+1\377%*1\377$*1\377%*2\377$)1\377%)3\377%*1\377"\r
+  "#(0\377$*1\377%,2\377#*2\377#*2\377$*1\377$*1\377#+2\377$*1\377\")2\377#"\r
+  "(0\377#(/\377%*1\377$*3\377%,2\377#(1\377%)2\377$*3\377#)1\377$(0\377\"("\r
+  "0\377\"(0\377\"*2\377$)1\377#)2\377#)1\377$*1\377%*1\377$*2\377%,2\377$)"\r
+  "1\377$)1\377\35\")\377\24\26\33\377%&%\377210\377532\377)))\377\25\30\31"\r
+  "\377\33\36%\377#(1\377\"(0\377\")2\377\")1\377$)0\377\")2\377\"(2\377\"("\r
+  "2\377\")2\377\"'0\377\"&/\377\40'/\377#)1\377\")1\377!(0\377!(/\377\"(/\377"\r
+  "\")2\377\"*2\377\40)1\377\"'1\377#(0\377\"(0\377\"(1\377\"*2\377$)1\377\""\r
+  "'/\377\"(/\377#'0\377#)1\377#'/\377\"'0\377\")1\377#'1\377$)1\377\")1\377"\r
+  "\"'1\377!)1\377\"'1\377!(0\377#*2\377#*2\377$*2\377#(0\377%+2\377#)2\377"\r
+  "%*3\377%+4\377$*3\377$*3\377&,5\377$*4\377&+6\377&,6\377(,6\377&,4\377&-"\r
+  "5\377&+4\377\"(1\377\"&.\377Yej\377\33\37%\377&(0\377$)1\377$*1\377$*3\377"\r
+  "$*1\377$*1\377$)1\377%*1\377#*2\377$)0\377$*1\377$*1\377$*1\377$)3\377%+"\r
+  "1\377%+1\377$*1\377%+2\377%*3\377#'0\377$)0\377\"*2\377$*3\377%*1\377$)1"\r
+  "\377#*2\377$*1\377$*1\377$*1\377$*1\377$)1\377\"(0\377#*2\377%+2\377#*2\377"\r
+  "\"(2\377#(0\377$(0\377$*1\377$+2\377#*2\377#*2\377#*2\377$)1\377#(1\377$"\r
+  ")1\377$*1\377$)0\377!)2\377\"(1\377#(0\377\"(0\377#)2\377&-3\377%*1\377\""\r
+  ")2\377$)4\377\34\40&\377\35\37\37\377EE:\377YVH\377ZVH\377XUG\377YUG\377"\r
+  "TPA\377*)%\377\23\27\35\377#*2\377#(0\377!'.\377$(0\377#(1\377#(1\377$*1"\r
+  "\377\")0\377#)1\377\"'1\377\"(2\377#'0\377!'0\377#(0\377!(1\377!&.\377\""\r
+  "'1\377\"'1\377\"'2\377\"(1\377#(2\377\"(0\377\"(1\377\"*2\377#)1\377!(/\377"\r
+  "!&.\377\"'2\377\"(1\377#)2\377#(1\377\"'0\377\"&/\377$(1\377#)1\377$(0\377"\r
+  "#(1\377#)1\377\"'1\377(,5\377,06\377$*1\377#*2\377#)2\377$*1\377%+3\377#"\r
+  "*2\377$*3\377&*5\377%+4\377&*5\377&*5\377&-6\377&+6\377&*4\377%*2\377%*4"\r
+  "\377$)1\377\"&.\377Ydi\377\34\37&\377#'/\377%*1\377%+2\377$(2\377$*1\377"\r
+  "#)2\377#*2\377$*1\377$(1\377$*1\377%+1\377$*1\377%+2\377%*2\377#*2\377$+"\r
+  "2\377$*1\377#(2\377#(2\377#)2\377$)2\377$)1\377$)1\377$*1\377$*1\377#*2\377"\r
+  "$*2\377$*2\377%*1\377$(1\377#)1\377%+3\377$(0\377#(2\377\")2\377$*1\377#"\r
+  "*1\377#'/\377#)1\377$*1\377$)1\377#'1\377#*1\377$)0\377#(0\377$+2\377\"*"\r
+  "2\377#(0\377$)1\377#(0\377#*1\377#*1\377%*1\377\40'/\377#)0\377#(2\377\40"\r
+  "$.\377#\"\36\377SPB\377QOD\377MMC\377MME\377MME\377MME\377PNE\377RQD\377"\r
+  "01)\377\31\36%\377\")1\377\"'2\377#(0\377#'/\377#'1\377#)1\377\"(1\377!'"\r
+  "/\377#)2\377\")2\377\")2\377\"&0\377\"'0\377#(1\377\40'/\377\")1\377\"'/"\r
+  "\377#)1\377\"'1\377\"'0\377#(0\377\"'/\377!'/\377\"'/\377\"'0\377\"(2\377"\r
+  "\"'/\377!'0\377\"&0\377\"(1\377#'0\377#(0\377!'/\377#)2\377#)2\377\"'0\377"\r
+  "$)1\377#(2\377#)2\377$(1\377\"(0\377\")1\377#*3\377\"(2\377$*1\377$*2\377"\r
+  "%*4\377%+3\377$+3\377#*2\377$*4\377$*4\377%*5\377%+2\377&-5\377%*4\377%+"\r
+  "2\377\"&.\377Ydi\377\33\37%\377%(/\377%*1\377&+4\377$(1\377#)1\377\"'1\377"\r
+  "$)1\377$*1\377%*1\377%*1\377#'/\377$*1\377#)2\377\"(1\377$*1\377&+2\377$"\r
+  "*1\377$,2\377%+1\377%,1\377%*2\377%*2\377#*2\377$*1\377#*2\377$*1\377%,2"\r
+  "\377$*2\377%*1\377$*1\377#)1\377$*1\377%)2\377#*1\377#)2\377\"*2\377#*2\377"\r
+  "$*1\377$*1\377#)1\377$(0\377$*1\377#(2\377#)0\377$*1\377%+1\377#*2\377$*"\r
+  "1\377\")2\377#(0\377$)1\377$*1\377#*2\377#*1\377$*1\377$*3\377$'-\377FG;"\r
+  "\377LMC\377JKB\377KLB\377KLB\377KLB\377KLB\377JKB\377KKC\377RO@\377#\40\37"\r
+  "\377\40$-\377$(3\377\")1\377#(1\377\"(1\377!(0\377\"*1\377$*1\377#(2\377"\r
+  "$*1\377#(0\377#)2\377!)1\377#)0\377#(0\377#(2\377#)1\377\")2\377\40'/\377"\r
+  "#)0\377#+3\377#*2\377\"(0\377#(0\377\"&1\377\"'1\377!(0\377\37)/\377!&.\377"\r
+  "\"&0\377#)3\377\"&1\377\"'2\377\"'2\377\40)1\377\"'1\377#(1\377\")2\377$"\r
+  ")1\377#)0\377#)2\377#'/\377#*3\377\"*2\377\")2\377\"*2\377#*2\377$*3\377"\r
+  "#*2\377#*2\377$*1\377$*2\377%*3\377$*3\377&*5\377&*3\377#)0\377\"&.\377Y"\r
+  "di\377\32\36$\377%*1\377$*1\377%*1\377#'0\377$(1\377%*1\377#(0\377%*1\377"\r
+  "$*1\377#(1\377#)1\377$)1\377$*2\377%*2\377$*2\377\"*2\377$+2\377$*1\377%"\r
+  "+1\377$)0\377&+3\377%*4\377$*1\377#)1\377#*2\377$)1\377$)1\377#'/\377%(0"\r
+  "\377%*1\377$)1\377%,2\377%*1\377#*2\377#)2\377$*1\377\")1\377$*2\377%,2\377"\r
+  "#)1\377\")1\377#)1\377#(1\377\"'/\377#(0\377#'/\377\"'/\377\"(0\377#)2\377"\r
+  "\"(1\377$(1\377$*1\377#)0\377&,2\377%+2\377\32\40(\377450\377NNA\377KLB\377"\r
+  "KLB\377LMD\377LMD\377LMD\377LMD\377KLB\377KLB\377MNA\377<<5\377\35\"*\377"\r
+  "!&-\377$*1\377%+2\377%*1\377\"(1\377\")1\377\"'1\377\")1\377#*2\377$)1\377"\r
+  "#)2\377#(1\377$*1\377#)0\377\"(0\377!'1\377\"&/\377#(0\377#)1\377\"'0\377"\r
+  "#'/\377#(/\377\"(1\377#'/\377\"(0\377\"&.\377\"&.\377\"'/\377\"(0\377$)1"\r
+  "\377!)0\377\"&0\377\40&0\377\"&2\377\"'0\377\")1\377!)2\377$*1\377#*2\377"\r
+  "$)1\377#)2\377#'2\377\"(2\377#)2\377\"*2\377\"'1\377\")1\377%+3\377$+2\377"\r
+  "\"(2\377&+3\377#)2\377\")1\377#*2\377\"(/\377#'1\377\"&.\377Ydi\377\34\37"\r
+  "&\377%*1\377$*1\377$)0\377%*1\377#)1\377%*1\377$*1\377$*1\377\"(2\377\"'"\r
+  "1\377#)1\377#)1\377$(0\377%*1\377#(3\377$*2\377$+2\377$*1\377%+1\377%*1\377"\r
+  "%*1\377%*1\377#*2\377\")1\377$*2\377&,3\377%,4\377%+2\377$)1\377$)1\377#"\r
+  ")2\377%*1\377$*1\377\"*2\377#*1\377#*2\377#(1\377$*1\377#*2\377#)1\377\""\r
+  ")1\377#(0\377%*1\377#*2\377$)1\377$)3\377\"(0\377\"'1\377#*2\377$)3\377%"\r
+  "+3\377#(0\377\")1\377\40%,\377#(/\377\40',\377CD:\377LLC\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377GG>\377!&,\377\"'1\377\40"\r
+  "(0\377\40'/\377#*2\377#)2\377\")1\377!&/\377\"&0\377\"'1\377#)1\377\40'/"\r
+  "\377\"'.\377#)1\377\")1\377#)1\377\40)1\377\"'1\377\")1\377\")1\377#)2\377"\r
+  "#)2\377$)0\377\"'/\377#&1\377\"'0\377\"(1\377\"&1\377#'2\377\40&/\377#)1"\r
+  "\377$+1\377#'0\377\"(2\377\")2\377\"'/\377\"(2\377\")0\377!)1\377!(0\377"\r
+  "\"(1\377\"'1\377#*2\377#*2\377\"(2\377\"*2\377\")1\377\")1\377#+2\377%*1"\r
+  "\377#*2\377#+2\377#)2\377#*2\377#*2\377#(.\377\40$,\377\"&.\377Ydi\377\35"\r
+  "!&\377&+1\377#*2\377%*1\377$)1\377#'/\377\"&.\377\"&.\377$)0\377%*1\377\""\r
+  "&/\377#)1\377#)1\377\")2\377\"(1\377#)1\377$*1\377$*1\377#'1\377#)2\377%"\r
+  "*1\377%*3\377#(1\377#)0\377\"*2\377\"*2\377#)1\377#)1\377$*1\377$*1\377\""\r
+  "(0\377#*2\377%*1\377#*2\377#*2\377#*2\377#*2\377$*1\377$*1\377$*1\377#)2"\r
+  "\377#)1\377#*2\377$*1\377$*1\377$,2\377\"(0\377$)1\377\"(0\377#'1\377#)1"\r
+  "\377#(/\377#(1\377$)1\377#*2\377$*1\377$+1\377GF>\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377IJ<\377\"'-\377#*1\377#"\r
+  ")1\377#'0\377$)1\377!(1\377!'0\377#(1\377\"'0\377\"(0\377$*1\377\"'1\377"\r
+  "\"'/\377$*1\377\"'/\377$(1\377#(1\377$*1\377#*1\377!)1\377\"'/\377#)2\377"\r
+  "\"(2\377\"'0\377\"'0\377!'1\377\")0\377#'/\377\"&1\377\"'0\377!'/\377\"("\r
+  "0\377!'1\377!&0\377\"(2\377\")1\377\"'0\377\"&0\377\"&0\377\"'1\377$)0\377"\r
+  "\"'/\377#'1\377!&0\377#'0\377#'1\377#'0\377\"&0\377!'1\377\"(2\377\"'2\377"\r
+  "$(1\377%*1\377#)1\377#'0\377#'.\377\")1\377\"&.\377Ydi\377\33\37$\377&+1"\r
+  "\377#(2\377%*1\377$)1\377#(/\377#(/\377\"&.\377#(/\377#'/\377#'/\377$)1\377"\r
+  "\"'0\377#(0\377\40&.\377\"'/\377\"'/\377\"'0\377#(1\377#(2\377$+2\377&-3"\r
+  "\377%*1\377#)1\377\"*2\377\"(2\377#'0\377#)2\377$)1\377%*1\377$*1\377\"*"\r
+  "2\377$*1\377%*1\377#(0\377$)2\377#*1\377#)1\377$)1\377$)3\377#)1\377$)1\377"\r
+  "#*2\377$)1\377$)0\377\")1\377#)1\377\"(0\377\"(1\377#)1\377!(/\377$)0\377"\r
+  "#(0\377#(2\377\")2\377$)1\377\34#,\377BB<\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377IJ?\377&+0\377#*1\377\")1\377#"\r
+  "'1\377#(1\377!&0\377!&.\377#(/\377\40)0\377!)0\377\40)1\377\"(1\377#)0\377"\r
+  "#*1\377#(/\377\"&1\377\"&2\377\")2\377\"'1\377\40%0\377\"'1\377#)2\377\""\r
+  ")2\377#(0\377!'1\377\37'/\377\"&/\377#'/\377#)1\377\")1\377\40&.\377\37&"\r
+  ".\377!(0\377#(/\377#(0\377!(0\377#)1\377#'0\377\"'0\377\"*2\377$)0\377#("\r
+  "0\377$(0\377!&.\377\"(0\377#'/\377\")1\377#(1\377!'2\377#*2\377$)1\377\""\r
+  ")2\377#'0\377\")1\377#(2\377!&/\377!&/\377\"&.\377Ydi\377\35\37&\377%+1\377"\r
+  "%*1\377#'/\377\"'/\377#(/\377#'0\377\"&/\377\"&.\377\"&.\377#'/\377#'/\377"\r
+  "#(/\377!&.\377!&.\377#(0\377#(0\377%*1\377'+3\377&,2\377&,4\377%+2\377$)"\r
+  "1\377#*2\377#)2\377\"*2\377#(0\377$)0\377$)0\377%+1\377#*2\377$*1\377$*1"\r
+  "\377$*0\377$*1\377#)1\377$(0\377$(0\377#)1\377#(1\377#)0\377%*1\377$(0\377"\r
+  "#(/\377#(0\377$(1\377$*1\377#(/\377\")1\377\"'1\377$)0\377$(0\377%*2\377"\r
+  "&+2\377#(/\377\")0\377\"+1\377DD>\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377LLC\377GH=\377#(,\377#*1\377!'/\377\40&-\377"\r
+  "!(0\377\"(0\377\")1\377\"&.\377!&/\377\"&.\377!)0\377\"'2\377\"&/\377\"'"\r
+  "/\377\"*1\377\")2\377#(1\377#(2\377$(0\377#(1\377!(0\377#(1\377#*2\377#)"\r
+  "2\377\"&1\377\"&2\377#'0\377%'/\377$)0\377#(0\377#)0\377\"(1\377!(1\377\""\r
+  "&/\377\"&1\377\"'0\377$)1\377#)1\377\"(0\377\")1\377#'0\377\"&0\377#'0\377"\r
+  "\"&/\377#(0\377#'0\377#'/\377\"'0\377\"'2\377#(2\377#'1\377#'/\377\"&1\377"\r
+  "#*2\377#*2\377\"'/\377\37&/\377\"&.\377Ydi\377\32\37%\377$+2\377%*1\377#"\r
+  "*1\377#(1\377#'/\377#'/\377#'/\377$)0\377\"'/\377!&/\377\"(0\377$)0\377%"\r
+  "(0\377#&.\377#(/\377$)0\377%*1\377%*2\377%*1\377$)0\377$)0\377\"(1\377$)"\r
+  "0\377#*2\377$*1\377%)2\377$)1\377#(0\377%*1\377$*1\377#*2\377$*1\377$*1\377"\r
+  "#*2\377$*1\377$)0\377#)1\377#*2\377#(0\377#*2\377#(0\377#)1\377#(0\377$*"\r
+  "1\377%*1\377$*1\377#)1\377#)1\377%+2\377#(0\377$(1\377#(0\377$*1\377$)1\377"\r
+  "$)2\377#(1\377@A:\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KL"\r
+  "B\377KLB\377KLB\377KK>\377$*.\377\"(1\377\")0\377\"(1\377\"'2\377\"(1\377"\r
+  "#)0\377\"&0\377\"'0\377\")1\377\"(1\377\"&1\377#)1\377$)1\377#'2\377#)2\377"\r
+  "$*1\377$)1\377#(1\377\"(0\377\"&/\377\"(0\377$)1\377#(1\377$(1\377\"'0\377"\r
+  "$)1\377#)1\377#(0\377\"'/\377#'0\377\"&.\377\"'.\377!(/\377#'0\377\"(1\377"\r
+  "#'/\377\"(1\377\"'/\377\"'/\377\"'/\377#(0\377\"(0\377\"&0\377\"'/\377\""\r
+  "'/\377\"&/\377\")1\377\")1\377%)1\377#'1\377#)1\377#)1\377#)0\377\"*2\377"\r
+  "\"'.\377\36#+\377\"&.\377Ydi\377\33\40%\377&.3\377$*2\377#*2\377#*1\377#"\r
+  "'/\377\"&.\377\"&.\377#'/\377\"(/\377#'/\377!&.\377!&0\377%*1\377$)0\377"\r
+  "$+1\377$*1\377#(0\377$(1\377$)0\377%*1\377#*2\377$)0\377$*1\377#(2\377\""\r
+  "(1\377$)1\377$)1\377#)2\377$*1\377#)0\377$*1\377%*1\377$)1\377$)1\377#(1"\r
+  "\377$(0\377#)0\377\")1\377#)1\377#)2\377\")1\377$*1\377#*2\377\")2\377#*"\r
+  "2\377#'1\377$*1\377#*2\377$*1\377#'0\377%*1\377#*1\377$)1\377#)1\377$*2\377"\r
+  "\31\40)\377?@7\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377GH<\377!&*\377\36#-\377&-3\377$+4\377$)1\377\"(0\377#(0\377"\r
+  "$(1\377\"'.\377\"(/\377\"&/\377\"'0\377#(1\377%*1\377#*2\377$)0\377#)0\377"\r
+  "\"'1\377#)0\377#(0\377#'1\377$)0\377$)0\377\"'/\377#(1\377#(0\377#(0\377"\r
+  "\"'/\377\"'/\377$)1\377#(2\377#'/\377#(1\377#(0\377&,3\377\"'0\377$)1\377"\r
+  "#(1\377#(1\377#(0\377\"'/\377\"'/\377#'0\377\"&/\377$*1\377#(0\377!&0\377"\r
+  "\"(0\377\"(0\377\"'/\377%)2\377\"'1\377#)2\377#*2\377#)2\377!%,\377!'.\377"\r
+  "\"&.\377Ydi\377\32\37%\377&+3\377#(1\377\")0\377\"'.\377\"&.\377#(0\377\40"\r
+  "&/\377\"&.\377\"'/\377#'/\377#(/\377$)1\377$)0\377#)1\377\"'/\377#(/\377"\r
+  "%)0\377%)1\377%*1\377%+1\377%+1\377#(2\377$*1\377\"&1\377#(1\377$)1\377$"\r
+  ")0\377\")0\377$)1\377$*1\377$*1\377%*1\377#*2\377#*1\377$)1\377#(/\377#("\r
+  "0\377#)1\377#*2\377!*1\377$)0\377$*1\377$*1\377#)2\377#)1\377#*2\377$)0\377"\r
+  "#)1\377#'1\377#)1\377#)2\377$)1\377$)1\377!'0\377$)0\377\37$,\377B@9\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377GH"\r
+  "=\377&-/\377#(/\377$*1\377#)1\377$)0\377#'1\377$)1\377#(0\377#'0\377#*1\377"\r
+  "\")1\377\")1\377\"'/\377$)0\377\40'.\377\"(1\377\"(0\377\"'1\377!&0\377\""\r
+  "'1\377\"'2\377#(/\377#'/\377%*1\377\"&0\377\"(1\377$)1\377#'1\377\"'0\377"\r
+  "\40'/\377!'/\377!'/\377!'/\377#(0\377\"'/\377#(/\377#(/\377\"'/\377#)0\377"\r
+  "\"&/\377#'/\377#)0\377!)0\377$)1\377'-3\377#'/\377\"&0\377\"(0\377!'/\377"\r
+  "#(0\377%)1\377#(0\377#(0\377\"(2\377#(2\377\40&-\377\")0\377\"&.\377Ydi\377"\r
+  "\35\40'\377'-4\377%*1\377$*1\377\"&.\377!&.\377\"'1\377!'0\377\"&.\377$("\r
+  "1\377$*2\377#(1\377$)0\377\"'.\377\"(/\377\"'1\377\"(2\377#*2\377#)2\377"\r
+  "#*2\377#)2\377$)1\377&+3\377#(0\377\"(0\377#(1\377\"(0\377$)0\377$)0\377"\r
+  "$)1\377$*1\377$*1\377#*2\377\")1\377$*1\377$*1\377%*1\377$(1\377\"(1\377"\r
+  "$)0\377#)1\377#'/\377$)1\377$*1\377#(0\377#)0\377\")2\377#(0\377\"'0\377"\r
+  "$(1\377$)1\377#*2\377#)1\377#)1\377!'.\377#(.\377\35%+\377>?7\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377II?\377(."\r
+  "2\377$)0\377!(/\377\"'0\377$(0\377#(2\377\"(0\377#'1\377!&/\377\"(/\377\""\r
+  "*2\377#)1\377$)1\377#(0\377#)0\377#*1\377$)0\377#)1\377!(0\377#)1\377\"("\r
+  "0\377\"&/\377\"&/\377#(/\377\40&/\377!&0\377\"(/\377!'0\377\"(1\377\"*2\377"\r
+  "#)1\377\"'1\377\"'/\377\"&1\377!&0\377#)1\377#(1\377\"(0\377\"'/\377\"&1"\r
+  "\377#'/\377!&/\377!'.\377\"(0\377#'0\377!&/\377#'0\377\"'/\377\40(/\377\""\r
+  "&1\377#'/\377#'0\377#)2\377#(2\377%+1\377\"(.\377#(0\377\"&.\377Zek\377\30"\r
+  "\36&\377)39\377&,3\377%*1\377#*1\377#)1\377#*2\377!(/\377#)1\377%(0\377%"\r
+  ")1\377#'/\377\"(0\377#)1\377#'/\377$(1\377#)2\377#)1\377#)1\377$*1\377#("\r
+  "1\377$(0\377#)1\377\"'0\377$*1\377\")1\377\"(0\377#*2\377$*1\377#*2\377$"\r
+  "*1\377%*1\377%+1\377%*2\377$*1\377$*1\377$*1\377#)2\377$)1\377$*1\377#*2"\r
+  "\377\")1\377#)0\377$)1\377!'.\377!(/\377\"(2\377$)0\377#)1\377$)0\377#(0"\r
+  "\377#(/\377\"'0\377$)1\377$+1\377\")1\377\35$-\377>?8\377MOD\377KLB\377K"\r
+  "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FG<\377\36%'\377\""\r
+  "*2\377$*1\377#'2\377#)1\377\"&/\377&-5\377$+3\377\"(1\377#(0\377#)1\377\""\r
+  "&1\377!'0\377#)0\377$(0\377#)1\377#'2\377#'1\377\"(2\377\"&.\377#'/\377\""\r
+  "'0\377\"&/\377\")2\377\")1\377!&0\377\"'/\377#)1\377$)1\377#(0\377\"(0\377"\r
+  "\"'/\377#)2\377\"'1\377\"'/\377#'/\377#'/\377\"'/\377#)0\377!&.\377\"&.\377"\r
+  "\"&/\377#)0\377#(0\377!&/\377\"'/\377#(0\377#'0\377\"'0\377\40&0\377!'0\377"\r
+  "!(0\377#(2\377#)1\377#)1\377!%-\377\"(0\377\"&.\377Zfk\377\31\35%\377%-4"\r
+  "\377%*1\377$)0\377%*1\377#(/\377#)1\377$)0\377#(0\377#(0\377#'/\377#(1\377"\r
+  "$)1\377#'2\377#)1\377#'/\377$(0\377$)2\377#)2\377%*1\377#(2\377$)1\377$'"\r
+  "/\377#(1\377#'/\377\"(0\377\"(2\377$*1\377\"*2\377$*1\377%*1\377$*0\377$"\r
+  "+2\377$*2\377#*2\377#*2\377%*1\377%)1\377\")1\377$*1\377$*1\377#'2\377$*"\r
+  "1\377$*1\377#)1\377#(0\377\"(0\377\"&.\377#'/\377#)0\377\"(0\377$)2\377$"\r
+  ")2\377#(0\377#(1\377#(/\377\35%*\377>?7\377NPE\377MPE\377LNC\377KLB\377K"\r
+  "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377GH=\377\40',\377\36%.\377$)1\377"\r
+  "#(2\377#)2\377#'2\377\"*2\377#+2\377!&1\377!'/\377\")0\377\"(0\377\"'0\377"\r
+  "$)1\377#(1\377#'0\377#'2\377#)1\377#)0\377\"(0\377#'/\377\"'/\377\"(0\377"\r
+  "\")1\377#)0\377\")1\377\")1\377\"(0\377\"'0\377#(2\377!)2\377\"'1\377#'0"\r
+  "\377#(/\377\"&0\377#'0\377\"'/\377\"'1\377\"'/\377\"&.\377\"&.\377\"'/\377"\r
+  "\"&0\377\"'/\377\"'1\377\"(/\377!'0\377#(0\377#(/\377#'0\377#*1\377\"(0\377"\r
+  "\"(0\377#)1\377\"*2\377!(/\377#)0\377\"&.\377Ydi\377\33\36&\377%+1\377%-"\r
+  "1\377$)0\377%*1\377#(0\377$)1\377\"'2\377$)0\377$)0\377#'/\377#(0\377#(0"\r
+  "\377#(0\377$(1\377\"&1\377#'0\377#'/\377#(0\377$)2\377%*1\377#*2\377$)0\377"\r
+  "$*1\377$*1\377#*2\377$*1\377%*1\377$)1\377%*1\377%*1\377#*2\377#(0\377$)"\r
+  "1\377#*2\377#*2\377$*1\377$*1\377#*2\377\"*2\377%*1\377$*1\377%*1\377$*1"\r
+  "\377#)2\377#)1\377$)1\377\"'0\377\")2\377#*2\377#*1\377#'/\377\"(1\377#*"\r
+  "2\377\37%-\377\"*0\377\40$+\377HE;\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377FG<\377#(-\377#'/\377\"(/\377\37'0\377"\r
+  "\"'2\377!&/\377#(/\377#)2\377\")2\377\"*2\377\"(1\377\"'1\377$*1\377\"'/"\r
+  "\377!&.\377\"'/\377\"'0\377\"&/\377\"&/\377\"(0\377\"&.\377!(0\377\"'/\377"\r
+  "\"'1\377!&.\377\"'/\377\"'2\377\"'0\377!&/\377$)0\377\"'/\377#(/\377\"'/"\r
+  "\377\"&.\377#)1\377\")1\377#(/\377\"'/\377!(/\377#)3\377\"(0\377#'/\377\""\r
+  "'/\377#(1\377\"&/\377\"&0\377#(1\377\"(1\377\"(2\377#*3\377#*3\377\"&/\377"\r
+  "\40'/\377#)2\377\"*2\377\"(0\377\40'.\377\"&.\377Ydi\377\32\37$\377%*1\377"\r
+  "%+1\377%*1\377#*2\377%*1\377%)1\377#)2\377%*1\377%*1\377$)0\377#'/\377%)"\r
+  "1\377$*1\377$(0\377\")2\377$*1\377%)1\377$(0\377#'/\377$)0\377\"'/\377%+"\r
+  "1\377$*1\377$*1\377#*2\377$)0\377#(/\377$(0\377#'/\377#)1\377#'2\377#)2\377"\r
+  "#)2\377#*2\377$)1\377%*1\377\"*2\377\"*2\377\"(2\377%*1\377#*2\377$*1\377"\r
+  "#*2\377#)2\377%*1\377%*1\377%+2\377#)2\377#)0\377$)0\377#'/\377\")1\377$"\r
+  ")0\377$)2\377#)2\377\32\40%\3779:3\377KLB\377KLB\377LKB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377EF:\377!)*\377%)1\377\40&.\377\"'/\377"\r
+  "\")1\377#'/\377#(1\377\"'1\377\"(1\377#)1\377\")0\377#(/\377\"'/\377\"'/"\r
+  "\377\"'0\377#(0\377$)0\377\"'2\377\"'1\377\"&.\377#(0\377\"(0\377\"&/\377"\r
+  "\"&0\377!&0\377#)1\377!'/\377\"'/\377\"&0\377#'0\377!)1\377\"&.\377\"(0\377"\r
+  "#(0\377#)1\377\"(0\377#'1\377\"'/\377#'/\377\"'0\377\"'2\377#'0\377#'/\377"\r
+  "#)1\377#(/\377\"&.\377!'.\377\"'/\377\"(0\377#'/\377#)1\377\"(1\377\"'1\377"\r
+  "#)0\377$*1\377#)1\377$*1\377\"&.\377Ydi\377\33\40%\377&.3\377$+2\377$*1\377"\r
+  "$*1\377%+3\377%+3\377$)0\377#+2\377%+1\377%+2\377$*1\377$*1\377%+1\377#)"\r
+  "2\377\")1\377$*1\377$+2\377$)1\377$)1\377$*1\377\")1\377\"'/\377#)0\377!"\r
+  "'0\377\")1\377#*2\377$)0\377\"&/\377%*1\377#)2\377$(1\377$)1\377#*2\377$"\r
+  ")0\377$*1\377$)0\377#*2\377$)1\377\")2\377%)1\377#(0\377$(1\377$)0\377$)"\r
+  "0\377#*2\377$*1\377#(1\377$(0\377#(/\377\"'.\377%*1\377$*1\377#)0\377#'0"\r
+  "\377%)0\377\40%,\377>?7\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB"\r
+  "\377KLB\377KLB\377KLB\377HI;\377\37%*\377\37$,\377%*1\377#'1\377#(0\377!"\r
+  "&1\377#(0\377#(0\377$(1\377#*1\377\"(0\377#(1\377\"'1\377\")1\377\"&.\377"\r
+  "\"(0\377\"&/\377#)1\377$(1\377\"'2\377\"'1\377#)2\377',3\377!(/\377\"'0\377"\r
+  "\"(1\377!'.\377!&.\377\"&0\377\")1\377$*1\377\"(2\377\"'/\377$)0\377\"'1"\r
+  "\377\"&/\377\"(0\377\"'0\377\"(0\377#)1\377\"&1\377#)0\377!&1\377\"'1\377"\r
+  "#(0\377\"(0\377\"&0\377\"(1\377#'0\377%)2\377\"(/\377#)1\377#*2\377#(0\377"\r
+  "#*2\377\")0\377!&.\377\"&.\377Ydi\377\32\36%\377&.2\377$+2\377%*1\377%*1"\r
+  "\377%*1\377#*3\377$+3\377$)3\377%*2\377$+2\377%*1\377$*2\377%+1\377%+2\377"\r
+  "$)1\377#*2\377%*1\377$)1\377$)1\377%*1\377$*1\377\"(1\377#*1\377\40)1\377"\r
+  "\"(1\377\"(1\377&,3\377#*1\377%*1\377#)2\377#(0\377\")1\377$*/\377\")0\377"\r
+  "#*2\377$)1\377%*1\377#*2\377\"(0\377%*1\377$)0\377\"&0\377#'/\377$*1\377"\r
+  "\"*2\377\")1\377#)1\377%+1\377#*1\377\")1\377$*3\377$*2\377$(1\377\"&-\377"\r
+  "$(0\377\35\"*\377=>6\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377GF;\377\40(+\377\"(/\377$)0\377#)2\377#(1\377\"'/\377"\r
+  "$(2\377#(0\377\"(1\377\"(0\377!&.\377\"(1\377\")1\377\"*2\377\")1\377\"("\r
+  "1\377\"&1\377\"(1\377#)1\377\")2\377\"'/\377\"(0\377,/6\377\"(0\377\"&0\377"\r
+  "\"(0\377\"'/\377\"'0\377#(0\377\")1\377\"'/\377\"(0\377\"'/\377\"'1\377\""\r
+  "&/\377\")1\377#(0\377\"&.\377\"&0\377\"(0\377\"&/\377\"'0\377\"'/\377!)1"\r
+  "\377\"'/\377\"'/\377\"(1\377!)1\377#)1\377#*1\377\"(2\377\"'/\377\")1\377"\r
+  "#'2\377#)2\377!'/\377\37$-\377\"&.\377Zdj\377\36!(\377%+1\377%*1\377%+1\377"\r
+  "&,3\377&-2\377%,2\377%+2\377%+3\377',3\377%+2\377%*2\377&,3\377%,1\377#*"\r
+  "2\377$(1\377$)1\377$)2\377%)1\377$)1\377$*1\377#*2\377#'0\377$)1\377\"'0"\r
+  "\377#)1\377\"(1\377#(0\377#(1\377#)1\377#)1\377\"(2\377\")2\377$*1\377$*"\r
+  "1\377#*2\377%*1\377$*1\377#*2\377$*1\377#)2\377#)2\377#)2\377$*1\377#(1\377"\r
+  "#(2\377\")2\377%*1\377$*1\377#(0\377\"(2\377\"'/\377#(0\377$)0\377$)0\377"\r
+  "$)1\377\36\"*\377;;5\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377HI;\377#(+\377$)0\377#)0\377$(1\377\"'0\377\"&.\377"\r
+  "\"(1\377\"(0\377\"'/\377$)1\377$)0\377$)0\377$(1\377\"(0\377\"(/\377\"'1"\r
+  "\377\"&0\377\"(0\377\40'.\377!(/\377#)0\377#(0\377#'/\377\"'/\377$)1\377"\r
+  "\"'/\377\"'0\377#'0\377#(2\377\"&1\377\"'1\377\"(2\377!'/\377!&0\377\"&/"\r
+  "\377\"'/\377\"&.\377#(/\377$)1\377!)0\377\"'/\377!'/\377\"&/\377!'/\377#"\r
+  "(/\377#)1\377$(0\377$(0\377#)1\377\"'/\377#(0\377#'1\377#(/\377#(1\377#*"\r
+  "2\377!(0\377\37$+\377\"&.\377Ydi\377\36!'\377%*3\377%+1\377%,3\377&-4\377"\r
+  "%+1\377&-5\377&+5\377&-3\377'.5\377',3\377%+2\377&,3\377$*2\377%*2\377$*"\r
+  "1\377$+2\377#*2\377%*1\377%+2\377$)1\377$)1\377$)1\377#*2\377$*1\377&+4\377"\r
+  "%*3\377$)1\377$)0\377$+2\377$*1\377$*1\377#)1\377%*1\377$*1\377$)1\377$*"\r
+  "1\377$*1\377#)1\377#)1\377$*1\377$*1\377%*1\377$)1\377$)1\377$*1\377#*2\377"\r
+  "$)1\377\")1\377#(0\377#*1\377\"(0\377$*1\377#*1\377$*0\377%+1\377\35!*\377"\r
+  "994\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KL"\r
+  "B\377GF<\377\"',\377\"'1\377$)1\377$(0\377\"(1\377\"&.\377\"'1\377\"'/\377"\r
+  "\"'/\377#)1\377#(0\377#(2\377\"'2\377\"'/\377#'1\377!'/\377\"'0\377\"&0\377"\r
+  "\"&.\377\")1\377#)1\377#)1\377$)1\377!(0\377#(2\377\")1\377\"&.\377$(0\377"\r
+  "\"(2\377\")1\377\"(2\377\"'/\377!'.\377#(1\377\"&0\377\"(1\377\40&.\377\""\r
+  "&.\377\"&1\377\"'2\377\"'0\377\"'0\377#(0\377\"(1\377!'.\377#(1\377#)1\377"\r
+  "#(0\377\"(2\377\"(1\377$(1\377\"(2\377#(1\377\"(2\377\"(2\377\"(0\377!&."\r
+  "\377\"&.\377Zej\377\34!(\377%*2\377%+2\377&,5\377&-4\377%*2\377%+3\377&+"\r
+  "5\377&-5\377(.4\377&-3\377&-4\377%+2\377%*3\377%*3\377%*2\377%+4\377$*1\377"\r
+  "$*1\377$*1\377$)0\377%*3\377$)0\377$+2\377%+1\377#*2\377$*1\377#*2\377#)"\r
+  "2\377#)2\377#*2\377$*1\377%+2\377$*1\377$)0\377#)0\377#(0\377#)1\377#'0\377"\r
+  "%*1\377%+1\377$*1\377%*1\377$(0\377$(1\377$*2\377#)2\377#)2\377$*1\377$)"\r
+  "1\377%+1\377#)1\377#*1\377$+2\377\36$+\377\")1\377\37$+\377>?7\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FE;\377\""\r
+  "&*\377\40'/\377#)0\377#(/\377#(/\377#'/\377#(1\377\")1\377\"(0\377\"(/\377"\r
+  "#(2\377\")2\377#(0\377#(0\377#*2\377#*1\377#(/\377\")1\377\"'1\377#(1\377"\r
+  "#(1\377\"'0\377#'/\377$(1\377%)1\377$(0\377#'/\377#(0\377\"'1\377#(0\377"\r
+  "#)2\377#(0\377\")0\377\"(1\377#(1\377\"&.\377\"'0\377\"&0\377#(0\377!'/\377"\r
+  "\"(1\377#'1\377$*3\377$(1\377\"(0\377$*1\377\"'/\377\"(0\377\"'0\377#)1\377"\r
+  "\")1\377!)1\377&,4\377\"'0\377\"(1\377#(0\377!%-\377\"&.\377Ydi\377\36!'"\r
+  "\377&,4\377&,4\377',3\377(.6\377'-6\377(-5\377&-5\377'-6\377&-5\377&.3\377"\r
+  "&.5\377&,3\377&-5\377%+3\377$+3\377(.5\377&,2\377%,2\377$(3\377%*1\377$)"\r
+  "0\377#(2\377%,3\377#*2\377#*2\377#*2\377#*2\377$*1\377%*1\377%+3\377%*1\377"\r
+  "#)0\377%+1\377%*1\377#(1\377$)1\377#*2\377$(0\377$)0\377#)0\377#*2\377%*"\r
+  "1\377$*1\377$*1\377#)1\377\")1\377$+2\377#*2\377#(2\377%*1\377%*1\377#(/"\r
+  "\377$)0\377$)0\377$*1\377\37$*\377::4\377KLB\377KLB\377KLB\377KLB\377KLB"\r
+  "\377KLB\377KLB\377LKB\377KLB\377KLB\377EE;\377\"'*\377$+2\377$)1\377\"(0"\r
+  "\377\"'/\377#(0\377$)1\377\"(0\377\"(1\377#(1\377$)1\377#*2\377\"(0\377\""\r
+  "'/\377#*1\377\")1\377\"'0\377\")1\377\40)0\377\"'/\377#(0\377%*3\377\"'/"\r
+  "\377\"&/\377\"'/\377#'/\377\"'/\377\")1\377\"&0\377#(0\377\"'1\377\")2\377"\r
+  "\"'0\377\"'0\377\"'1\377\"&/\377!'0\377\"'0\377\"(0\377\"'1\377#'1\377$)"\r
+  "1\377\"(0\377\"'1\377\"&/\377$)1\377#)0\377\")1\377\"&/\377\"'1\377#*2\377"\r
+  "\"(2\377#(2\377#)1\377#)1\377#(0\377#'/\377\"&.\377Ydi\377\36!'\377&-3\377"\r
+  "%*2\377%+1\377'-5\377'-5\377(.6\377'.6\377&.5\377(.5\377'-5\377%,3\377%-"\r
+  "4\377&+5\377&+5\377%+2\377%,4\377%+2\377&+2\377&+3\377&+2\377%+1\377$+1\377"\r
+  "#)1\377$)1\377%*3\377$*1\377#*1\377#)1\377$)1\377$+2\377%*2\377%*4\377%*"\r
+  "3\377%*1\377#*2\377#(2\377$)1\377#)1\377#*2\377#)2\377#*2\377$*1\377\"*2"\r
+  "\377#)1\377#*1\377#*2\377#)2\377$(0\377#)2\377$*1\377%*1\377%+1\377%+1\377"\r
+  "$+3\377$)1\377\35\"+\377<<6\377LLB\377KLB\377KLB\377KLB\377KLB\377LLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377GF=\377\37'*\377\36&.\377#)2\377\")1\377#)0\377"\r
+  "#)2\377\")0\377$)0\377\"(0\377!(0\377#(1\377\"(2\377#*2\377#*1\377\"'/\377"\r
+  "\")1\377\"(0\377#(0\377#(0\377\")1\377\"(1\377#(2\377$)1\377#'1\377\"'/\377"\r
+  "#)2\377#'0\377\"(0\377$)1\377\"'0\377#)1\377#*2\377\"(1\377#'/\377#'/\377"\r
+  "#'/\377#(0\377#'/\377\")1\377\"&/\377\"&0\377\"&1\377\")1\377#(0\377#'/\377"\r
+  "\"(1\377\"(1\377#(1\377\"(1\377#'/\377#(0\377#)2\377\"(0\377#'1\377#)2\377"\r
+  "#)0\377#(/\377\"&.\377Ydi\377\35!&\377&.4\377&.2\377&-3\377%,3\377&-3\377"\r
+  "&.4\377&.3\377&.4\377&+6\377&-6\377&-6\377'-4\377&-3\377&-3\377&,4\377%,"\r
+  "4\377$)0\377%*2\377%,3\377%*1\377%,3\377%*1\377%*1\377\"*2\377$*1\377%*1"\r
+  "\377$)1\377#)2\377%,4\377#*2\377$*1\377$)1\377%)1\377%+1\377\")1\377$*1\377"\r
+  "%+1\377%-3\377%,3\377%*1\377$*1\377$+2\377%+2\377#*2\377#*2\377#*2\377%+"\r
+  "1\377#+2\377%*1\377#)1\377$)2\377$)1\377$)0\377#*3\377%*2\377$(.\377@@8\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377HG"\r
+  ":\377\"')\377\40'/\377%*2\377\"(1\377#(1\377\")1\377#)0\377\"*2\377\"'1\377"\r
+  "\"&0\377$)1\377#'2\377\40'0\377!&.\377\"'/\377!(/\377!'/\377\"*2\377\"(0"\r
+  "\377\"'0\377\"'1\377\"&.\377#(1\377#)1\377\"'/\377\40*1\377#)1\377#(0\377"\r
+  "\"'0\377\40'0\377\"(2\377\"'0\377\")2\377#(0\377\"'0\377\"&.\377#'/\377\""\r
+  "'1\377\"&/\377\"&0\377!&0\377\")1\377\"'1\377\"(0\377$)1\377#)0\377\"(0\377"\r
+  "\"(1\377\40(/\377\"'0\377\"(0\377\"&/\377\"'/\377#*1\377!*1\377\"(/\377\40"\r
+  "&.\377\"&.\377Ydi\377\35!&\377%+2\377&,4\377&.5\377'+6\377%*2\377(/4\377"\r
+  "&,4\377'-6\377'-6\377&.5\377&.4\377'.6\377'.4\377'.3\377&-4\377%+2\377&+"\r
+  "4\377&-3\377%+1\377$*1\377$*1\377#*2\377$*1\377#)1\377$*2\377%*3\377$(1\377"\r
+  "%*1\377$*2\377$+2\377#(0\377#)0\377$)1\377#)2\377$)1\377#(/\377$*0\377%*"\r
+  "1\377%+2\377%*1\377%*1\377%+2\377%+4\377\"*2\377#(0\377$*1\377$*1\377#(2"\r
+  "\377#)2\377#(0\377$*1\377&,5\377%+1\377#*2\377%,3\377!$.\377==7\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377FF=\377#("\r
+  ",\377$*3\377$*3\377\"(1\377\"&0\377#)1\377\"'/\377!'/\377#(1\377$)2\377#"\r
+  "'/\377#(2\377!&1\377\40'.\377#)0\377\"'1\377\"(1\377\")1\377\"'0\377\"'2"\r
+  "\377\"(0\377\"&.\377\")0\377%*2\377!(0\377!'/\377%*1\377#'1\377#'1\377\""\r
+  "'1\377#(1\377#(0\377!'/\377$)1\377\"'2\377\"(0\377#'/\377\"'/\377#'0\377"\r
+  "\"'.\377!)1\377#*2\377\"'/\377\"&.\377#(0\377\"(0\377#'/\377\"'/\377!'.\377"\r
+  "\"(0\377\40'/\377!&.\377\40'/\377#)0\377$*2\377%)2\377\"&0\377\"&.\377Ze"\r
+  "m\377\34!)\377&-3\377%+2\377',4\377(-5\377&+3\377&-2\377&.3\377',6\377'."\r
+  "6\377&.5\377',5\377%-5\377&,5\377&-6\377&-2\377&,3\377%+3\377%*1\377$*1\377"\r
+  "%+2\377$*2\377$)2\377%*1\377%,1\377%*1\377$)1\377%+1\377%)1\377%+1\377#*"\r
+  "2\377%,1\377%+1\377#)1\377#)1\377#'0\377$*1\377$)0\377$*1\377%*1\377%*1\377"\r
+  "#*2\377#)2\377#(2\377%*1\377$*1\377$*1\377%*1\377%*1\377%*4\377$*2\377$*"\r
+  "2\377#)2\377$*2\377$*1\377%+2\377#&/\377??8\377NLC\377KLB\377KLB\377KLB\377"\r
+  "LKB\377KLB\377KLB\377KLB\377KLB\377KLB\377EF;\377\36%(\377$)3\377%*1\377"\r
+  "#)1\377#'/\377\"'/\377#)1\377#)1\377#)2\377#)2\377\")1\377#*2\377\"'1\377"\r
+  "\"&0\377#(0\377\40(0\377$)1\377\"(0\377\"&.\377\"'/\377\"'0\377!'0\377\""\r
+  "&/\377\"&0\377$)0\377\40&.\377\"(1\377\"&0\377\")2\377#)1\377#'0\377!'0\377"\r
+  "\"'/\377#&0\377\")1\377$)0\377\"(1\377!'/\377\"&.\377\"'0\377\"&.\377#'0"\r
+  "\377$+1\377\"'/\377#(0\377\"'/\377\"'0\377\"(2\377\"'0\377!%.\377\"&0\377"\r
+  "\40&/\377#'1\377#)1\377\"(1\377\"'1\377#%.\377\"&.\377Yej\377\35!(\377%*"\r
+  "3\377&*4\377&+6\377'.6\377(,6\377&+5\377&.6\377&.6\377&,6\377'.5\377'.6\377"\r
+  "'-5\377&+3\377(-6\377&,4\377&-3\377%*1\377%*1\377%-2\377$+3\377$*2\377%+"\r
+  "1\377#*2\377$+2\377%+1\377$*1\377%*1\377$(0\377%*1\377%*1\377$*1\377$)1\377"\r
+  "$)1\377%*1\377%*1\377$*1\377$)1\377#*1\377$*1\377%*1\377$*1\377$)1\377#*"\r
+  "2\377%*1\377#+3\377#+3\377$+2\377$+1\377$)1\377$*2\377$*2\377%*1\377$+2\377"\r
+  "#*2\377$+1\377\33\40%\377<=4\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377"\r
+  "KLB\377KLB\377KLB\377KLB\377JG=\377\"&(\377\34\"+\377#)2\377#'1\377$)0\377"\r
+  "\"(1\377$)1\377\"&0\377!&/\377\"'1\377#)1\377#*2\377$)1\377\"'/\377!(/\377"\r
+  "\"(1\377$)1\377#'/\377$)0\377$)1\377$*1\377$)1\377\"'0\377\"&1\377#'0\377"\r
+  "\"&0\377#(0\377\"&1\377\"'0\377#'1\377$)3\377\"'/\377#(/\377#'/\377\"'1\377"\r
+  "#'/\377\"&1\377\40&.\377\"(0\377\"'/\377!'.\377%)1\377\"(/\377\")1\377!("\r
+  "1\377!(/\377\"&0\377\"&0\377\"'/\377!'/\377\"&1\377\"&0\377#'/\377#(1\377"\r
+  "\"'/\377#*1\377\40$-\377\"&.\377Ydi\377\35!&\377&,3\377&,4\377'-6\377'.4"\r
+  "\377'-5\377(.6\377(.6\377&,5\377&+4\377&-5\377&,6\377&.5\377&*5\377%+2\377"\r
+  "%*3\377%,2\377%*2\377%*1\377$+3\377%,2\377%+2\377#)2\377#)2\377%*2\377#*"\r
+  "1\377$)0\377#(0\377$*1\377#(0\377#(2\377%*1\377$)0\377$*3\377#*2\377#)3\377"\r
+  "%*3\377$*1\377$*1\377#*2\377$*1\377$*1\377%+1\377%*1\377$*1\377#*2\377$*"\r
+  "1\377%)1\377$*1\377%+1\377$,3\377$*1\377$*1\377%*1\377#*1\377$*1\377!(/\377"\r
+  "AC:\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377LKB\377KLB\377KLB\377LJ"\r
+  "B\377ROB\377(.1\377\")1\377$(2\377\"'/\377\")1\377\")1\377#(2\377$*2\377"\r
+  "\"(1\377$,4\377#'0\377#(1\377\"&0\377\"&2\377\"(1\377#(0\377\"&/\377\"(0"\r
+  "\377\"'/\377\"(0\377\"(2\377\"(1\377\"(0\377#(1\377\"&/\377\"&0\377\"'0\377"\r
+  "\"'0\377\"'1\377!&.\377\"'/\377$)1\377\"'0\377#*2\377#'1\377\"'/\377\"&/"\r
+  "\377!&.\377#(1\377\")1\377\"&/\377#'/\377\"'0\377$)1\377!'0\377\40&/\377"\r
+  "!'/\377\"&1\377!&.\377\"'0\377$)0\377\"'1\377\"&0\377!'/\377\"(/\377#(/\377"\r
+  "#(0\377\"&.\377Ydi\377\35!'\377&-4\377&+5\377',4\377'.4\377'-5\377'.5\377"\r
+  ").5\377',7\377(-5\377&-5\377&+5\377&.6\377&-6\377&,4\377%+4\377%+2\377%*"\r
+  "2\377$*2\377%*2\377%*1\377$,3\377$+2\377$*1\377%*1\377$,1\377%-2\377%*1\377"\r
+  "$*1\377$*1\377$*1\377#(0\377$*1\377$*3\377$*2\377$)2\377%*2\377%*1\377#*"\r
+  "2\377#*2\377$*1\377%*1\377%*1\377#*2\377$*3\377%,2\377%+1\377#)0\377$)0\377"\r
+  "$+2\377%*1\377%+1\377$*1\377%,2\377\"'.\377$)0\377!(1\377BA:\377LLB\377K"\r
+  "LB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KKB\377GD;\377#(."\r
+  "\377$*3\377\")1\377\40&/\377#)1\377\"'0\377#)1\377$(0\377\")1\377#*1\377"\r
+  "#)0\377#)1\377$)0\377\"(1\377\"*2\377\"(0\377\"(/\377\"'/\377\"'/\377\"*"\r
+  "1\377\"(0\377\"(1\377\"(0\377\"(0\377\"(1\377#(/\377\"&/\377\"(1\377#)1\377"\r
+  "!'/\377\"&/\377!(/\377\"'/\377\"'/\377$(0\377\"'/\377\"&0\377!&/\377\40'"\r
+  "/\377\"(2\377\"&0\377$)0\377#(1\377\"'/\377\"&/\377\"&/\377#(0\377#)2\377"\r
+  "#)0\377\"&1\377\40&.\377\40&/\377\"&.\377\"'/\377\40&.\377\"'/\377\"&0\377"\r
+  "\"&.\377Ydi\377\35!'\377&,3\377&+4\377&,6\377&-6\377&+4\377&-6\377&-6\377"\r
+  "',4\377'.6\377%-4\377%+2\377&-4\377&*3\377&+3\377%,3\377$+2\377%*3\377%+"\r
+  "1\377%+1\377%+2\377$+2\377%*1\377%*1\377#(/\377$)1\377$*3\377%*2\377%*4\377"\r
+  "$*1\377#)1\377#)1\377$*1\377#*2\377$*1\377%*1\377#(1\377#)1\377$+2\377$)"\r
+  "2\377\")1\377#*1\377$+1\377#)0\377#)2\377#*2\377#)2\377$)1\377\")1\377#*"\r
+  "2\377$*1\377#*2\377#*2\377&+2\377$)0\377#*2\377\37'1\377.6;\377SOB\377KL"\r
+  "B\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377KLB\377NLA\377=?>\377\36'"\r
+  "0\377$)0\377\"&.\377\")1\377#(0\377#(0\377\40&.\377!&.\377\"&/\377\"&.\377"\r
+  "\"&.\377\"&.\377#(1\377#(1\377#(0\377\"(0\377!&.\377#(0\377\"(0\377#'0\377"\r
+  "!(0\377\"'/\377!)0\377!&0\377\"'0\377\"&0\377\"'2\377\"'/\377\"&/\377!&."\r
+  "\377\"(0\377!(0\377\40&-\377\")1\377#'0\377#(2\377\")0\377\40'.\377!&.\377"\r
+  "#(1\377\"&.\377\"'1\377\"(2\377\"'2\377\"'/\377\40&.\377\"'0\377\"(0\377"\r
+  "!'0\377\"&1\377\"'2\377\"&/\377\"&/\377#'/\377#'/\377!&.\377\"%-\377\"&."\r
+  "\377Ydi\377\36!&\377%*2\377&+5\377'-4\377&.5\377&-5\377%+3\377&+5\377&-6"\r
+  "\377&+5\377&,2\377%+3\377&,5\377$*2\377$*2\377%*2\377%*1\377$*2\377%*3\377"\r
+  "#*2\377$*2\377#*2\377%*3\377#*2\377$*1\377#*2\377#)2\377#*2\377$)2\377$*"\r
+  "2\377#*1\377#)1\377$)1\377#*2\377\"*2\377#*2\377#)2\377#*1\377#)0\377%,3"\r
+  "\377\")1\377$)1\377%*1\377#)1\377#(2\377#'1\377%)1\377$)0\377$)1\377%+1\377"\r
+  "#)2\377\"'1\377#*1\377#*1\377\")1\377$)4\377$*1\377\40+9\377GKP\377NMC\377"\r
+  "KLB\377KLB\377KLB\377KLB\377KLB\377JKC\377HID\377OQQ\377#-:\377\"'0\377\""\r
+  "&0\377$(0\377!&1\377\"'1\377!&.\377\37&-\377!&.\377\"&/\377\"&0\377\"&.\377"\r
+  "\"(0\377\"(0\377#(0\377!&.\377\"'1\377\"'1\377\"'1\377\40(0\377\"'0\377\""\r
+  "'/\377\"'0\377!&/\377#(0\377\")1\377\"&0\377\40(0\377\"&.\377\"&/\377\"&"\r
+  "0\377\"&.\377!&0\377\"&/\377$)0\377#'/\377\"&/\377\"&0\377\"(0\377\40'.\377"\r
+  "#)0\377\"'/\377#)1\377\"'0\377\"&/\377\"&.\377!&0\377\"(/\377\"&/\377\40"\r
+  "&/\377!&.\377!'/\377\40&.\377\40&.\377\40'.\377!%-\377\40#+\377\36#+\377"\r
+  "\"&.\377Ydi\377\34\40&\377%*1\377%*1\377%*2\377%,2\377&+5\377%+3\377%*3\377"\r
+  "&-4\377&+2\377'+4\377&,5\377%+2\377%)1\377$)1\377#*2\377%*1\377$*1\377%*"\r
+  "1\377$*1\377$*1\377%+2\377$*1\377#)0\377%*1\377%*1\377$)1\377%*1\377$*1\377"\r
+  "%*1\377#)2\377#)2\377#(2\377$*3\377\")2\377$*1\377%)2\377#(0\377%*1\377%"\r
+  "*1\377\"(0\377\"(1\377$)0\377#)1\377$'0\377#'0\377#'0\377\"&.\377\"&.\377"\r
+  "#'/\377#(1\377#(1\377!(0\377$(0\377!)0\377\"*2\377\")1\377#'/\377-7C\377"\r
+  "[aa\377SQD\377JJ@\377KLB\377KLB\377LKA\377QPC\377ggc\3774?O\377\36$,\377"\r
+  "\"'0\377!&.\377!'.\377\40&.\377\40&-\377\40&-\377!&.\377\40&-\377\40'/\377"\r
+  "!&.\377#'/\377#(/\377\"&/\377\"&.\377!&/\377\"'1\377\"'/\377!(0\377\"(1\377"\r
+  "!'0\377!(0\377#'0\377#(1\377\"'/\377!(1\377!'.\377!'/\377#'0\377#'/\377\""\r
+  "&/\377!&.\377!&.\377!&.\377\"&.\377\"&1\377\"&.\377\"&.\377\"&.\377\"&.\377"\r
+  "!'0\377!&.\377\")0\377\"&.\377#'/\377!'.\377\40&-\377\"%-\377\"&.\377!&."\r
+  "\377!&.\377\"'/\377\"&.\377\"&.\377\37%-\377\40$,\377\37#*\377\36\")\377"\r
+  "\"&.\377Ydi\377\32\36$\377%*1\377%*1\377%+1\377%+1\377%*2\377%+2\377%+2\377"\r
+  "$*2\377%*1\377%,2\377#*2\377%*1\377#)1\377#(1\377#)1\377\"'/\377%*1\377$"\r
+  ")1\377#(1\377$)1\377$*1\377$(0\377#(0\377$)1\377$)1\377#*1\377!'.\377#(/"\r
+  "\377$(0\377\"(0\377\"(0\377\")1\377\"&.\377#(0\377#(0\377$)0\377\"'/\377"\r
+  "\"&.\377#(/\377!&.\377!&0\377!&.\377\"&0\377\"&/\377\"(/\377!&.\377!(0\377"\r
+  "!&.\377\40&.\377!&.\377#'/\377\"&.\377#(/\377!'.\377!'.\377!(0\377\"&.\377"\r
+  "\34!(\377%0=\377Qan\377jkk\377fbV\377db\\\377hf^\377UZ_\377.5?\377\32\36"\r
+  "(\377\40'/\377\40&.\377\37&-\377!&.\377!&/\377!%.\377\40&-\377\36$,\377\36"\r
+  "%-\377\36&-\377!'.\377\"'.\377\"'.\377\40&/\377\37&.\377\40&-\377\37%-\377"\r
+  "\40%-\377!&.\377!&.\377\"(/\377\"&.\377\")0\377!'.\377\37&.\377\40%.\377"\r
+  "!&.\377\"&0\377\"&.\377\"&.\377!&.\377\37&-\377\37&-\377\36&-\377\"&/\377"\r
+  "!&.\377\40&.\377!&.\377!&.\377\"'/\377#)0\377\"'.\377\40&.\377\40&.\377\""\r
+  "&.\377!'.\377!$-\377\"%-\377\40&.\377\40&-\377!&-\377\37&-\377!$,\377\40"\r
+  "$,\377\40'.\377\"&0\377\40$-\377!%-\377\"&.\377Ydi\377\32\35&\377$*1\377"\r
+  "%-2\377%+2\377%+1\377$+1\377%+1\377%+1\377$)0\377$(0\377\"(0\377!(/\377#"\r
+  "(/\377\"'/\377\40&-\377!&.\377!&.\377!(/\377\"&.\377\"&-\377!&.\377!'.\377"\r
+  "\"&/\377!&.\377\"&.\377!&/\377!&.\377!&,\377\40&.\377\40&-\377\"'/\377\""\r
+  "'/\377!'/\377\40&-\377\37'/\377!&0\377\"&.\377\"&.\377\40%-\377\37%-\377"\r
+  "\36&-\377\37%-\377\37&,\377\40%,\377\37%,\377!&+\377\40&.\377\37&-\377\36"\r
+  "$,\377\35#+\377\34$,\377!(/\377\40&.\377\40(-\377\40&.\377!&.\377\37%,\377"\r
+  "\40%-\377\36%,\377\35$+\377\26\33#\377\35&5\377*08\377',5\377\36%/\377\21"\r
+  "\32&\377\31\40(\377\35$+\377\36$,\377\37%,\377\40$,\377\40&-\377\37$,\377"\r
+  "\36$-\377\37#*\377\34#+\377\22\33#\377\33\",\377!&.\377\36$+\377\37%-\377"\r
+  "\37%,\377\36#+\377\36#+\377\37$,\377\37$,\377\37&-\377\37&-\377\37&-\377"\r
+  "!&.\377\37&-\377\37&-\377!%.\377!$-\377\40%-\377!%-\377!%-\377!&.\377\37"\r
+  "&-\377!&.\377\37&-\377\37&-\377!&/\377\40&.\377\40&-\377\40&.\377\40&-\377"\r
+  "\40&.\377\"&.\377\"'/\377!&.\377!&.\377\"&.\377#'-\377\37&-\377\37$,\377"\r
+  "\36&-\377\36&-\377!%,\377\36&-\377\40$+\377\36#+\377%,1\377!'.\377\37#,\377"\r
+  "\40$.\377\"&.\377NW[\317\21\27\37\377#)1\377&+3\377%+3\377%*2\377%+2\377"\r
+  "#(0\377\"'/\377\"'/\377!&.\377!&.\377!%-\377!%-\377\36&-\377\40%.\377\40"\r
+  "&-\377\36%,\377\37%-\377\37%,\377\37%,\377\40%-\377!%-\377\40%+\377\40%-"\r
+  "\377\37%,\377\37%-\377!%.\377\40$*\377\35#+\377\36$,\377\36\"*\377\35#*\377"\r
+  "\36#+\377\37\"+\377!$-\377\37%-\377\35$+\377\36$+\377\34$,\377\33!)\377\34"\r
+  "!)\377\35!)\377\35!(\377\35\")\377\36#*\377\36\")\377\34\40(\377\24\33\""\r
+  "\377\14\23\33\377'()\377\36\37#\377\21\26\37\377\31\36'\377\34\"(\377\32"\r
+  "\40)\377\36$,\377\34!)\377\35#*\377\33\40(\377\35\"+\377\35#+\377\31\40)"\r
+  "\377\33\"+\377\30\37)\377\32\37'\377\31\37(\377\33\40(\377\30\36'\377\32"\r
+  "\37(\377\31\37'\377\33\40)\377\33\"*\377\32\40*\377\30\35&\377\21\27\37\377"\r
+  "\23\24\26\377)*-\325\20\21\25\371\23\30\36\377\24\36$\377\30\37&\377\30\37"\r
+  "&\377\30\34%\377\27\34\"\377\30\34$\377\30\34#\377\32\35!\377\32\34!\377"\r
+  "\27\33\40\377\26\33\40\377\27\35\40\377\30\33!\377\27\33\40\377\30\35#\377"\r
+  "\30\35$\377\32\36#\377\30\33\"\377\27\36#\377\30\34#\377\27\33\"\377\30\34"\r
+  "\"\377\30\34#\377\27\35#\377\31\34\"\377\30\35#\377\30\35#\377\27\33\"\377"\r
+  "\31\34!\377\30\34#\377\30\33!\377\30\33\"\377\30\35\"\377\27\32!\377\30\33"\r
+  "\"\377\26\33\40\377\26\33\40\377\26\35!\377\26\32\37\377\26\33\40\377\26"\r
+  "\33\40\377\26\33\40\377\27\33\40\377\26\32\40\377\25\32\37\377\15\21\26\377"\r
+  "\4\10\15\377\24\27\33\317\1\1\1\40\2\5\7\321\23\26\34\377\"&/\377!&/\377"\r
+  "!%-\377\40$-\377\37$,\377\36#+\377\37$,\377\36#+\377\36#+\377\36\"*\377\36"\r
+  "#+\377\36#+\377\36#+\377\36#+\377\36\"*\377\36#*\377\36\"*\377\36\"*\377"\r
+  "\36\"+\377\36\"*\377\36\"*\377\36\"*\377\35\"*\377\36\"*\377\36\"*\377\36"\r
+  "\"*\377\35!)\377\36\"*\377\36\"*\377\35!)\377\36\"*\377\36\"*\377\36\"*\377"\r
+  "\35\"*\377\35\"*\377\22\25\31\377\11\14\17\377\12\13\16\377\11\13\16\377"\r
+  "\12\14\16\377\12\14\17\377\13\14\16\377\13\14\17\377\13\14\16\377\11\12\15"\r
+  "\377\3\7\12\377>>?\362{}{ZPNNu\21\21\26\377\5\7\12\377\10\11\13\377\10\12"\r
+  "\15\377\11\14\17\377\11\13\17\377\12\13\16\377\10\12\15\377\10\12\16\377"\r
+  "\12\14\17\377\11\14\20\377\11\14\21\377\11\14\20\377\11\13\16\377\10\12\15"\r
+  "\377\10\12\15\377\6\11\14\377\7\12\15\377\6\11\14\377\10\12\15\377\10\12"\r
+  "\15\377\6\11\14\377\4\6\12\377\1\3\4\377(((u\376\376\372(\27\30\32\201\1"\r
+  "\1\1\377\2\5\6\377\4\5\10\377\5\6\10\377\4\3\7\377\3\5\6\377\4\3\6\377\4"\r
+  "\2\4\377\3\3\1\377\3\2\1\377\3\1\1\377\2\1\1\377\3\3\1\377\1\1\1\377\1\1"\r
+  "\1\377\1\1\1\377\1\2\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1"\r
+  "\377\1\1\1\377\1\1\1\377\1\1\1\377\2\2\1\377\1\1\1\377\1\1\1\377\1\1\1\377"\r
+  "\2\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1"\r
+  "\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1\1\377\1\1"\r
+  "\1\377\1\1\1\377\1\1\1\377\1\1\1\377\2\2\4\321\1\1\1\40"\r
+};\r
diff --git a/src/firmware.h b/src/firmware.h
new file mode 100755 (executable)
index 0000000..db3e196
--- /dev/null
@@ -0,0 +1,218 @@
+//\r
+// This file was automagically generated by bin2c (by James L. Hammons)\r
+//\r
+\r
+char diskROM[0x100] = {                // Loads at $C600 (slot 6)\r
+       0xA2, 0x20, 0xA0, 0x00, 0xA2, 0x03, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C,\r
+       0x49, 0xFF, 0x29, 0x7E, 0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10,\r
+       0xE5, 0x20, 0x58, 0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x2B, 0xAA, 0xBD,\r
+       0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, 0x80, 0xC0,\r
+       0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, 0xFC, 0x88,\r
+       0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0xA9, 0x08, 0x85, 0x27, 0x18, 0x08, 0xBD, 0x8C,\r
+       0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF7, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3,\r
+       0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xDF, 0x49, 0xAD, 0xF0,\r
+       0x25, 0xD0, 0xD9, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD,\r
+       0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xBE, 0xA5, 0x40,\r
+       0xC5, 0x41, 0xD0, 0xB8, 0xB0, 0xB7, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59,\r
+       0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10,\r
+       0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB,\r
+       0x59, 0xD6, 0x02, 0xD0, 0x87, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00,\r
+       0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5,\r
+       0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x2B, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char hdROM[0x100] = {          // Loads at $C700 (slot 7)\r
+       0xA9, 0x20, 0xA9, 0x00, 0xA9, 0x03, 0xA9, 0x3C, 0xA9, 0x00, 0x8D, 0xF2, 0xC0, 0xA9, 0x70, 0x8D,\r
+       0xF3, 0xC0, 0xAD, 0xF0, 0xC0, 0x48, 0xAD, 0xF1, 0xC0, 0x18, 0xC9, 0x01, 0xD0, 0x01, 0x38, 0x68,\r
+       0x90, 0x03, 0x4C, 0x00, 0xC6, 0xA9, 0x70, 0x85, 0x43, 0xA9, 0x00, 0x85, 0x44, 0x85, 0x46, 0x85,\r
+       0x47, 0xA9, 0x08, 0x85, 0x45, 0xA9, 0x01, 0x85, 0x42, 0x20, 0x46, 0xC7, 0x90, 0x03, 0x4C, 0x00,\r
+       0xC6, 0xA2, 0x70, 0x4C, 0x01, 0x08, 0x18, 0xA5, 0x42, 0x8D, 0xF2, 0xC0, 0xA5, 0x43, 0x8D, 0xF3,\r
+       0xC0, 0xA5, 0x44, 0x8D, 0xF4, 0xC0, 0xA5, 0x45, 0x8D, 0xF5, 0xC0, 0xA5, 0x46, 0x8D, 0xF6, 0xC0,\r
+       0xA5, 0x47, 0x8D, 0xF7, 0xC0, 0xAd, 0xF0, 0xC0, 0x48, 0xA5, 0x42, 0xC9, 0x01, 0xD0, 0x03, 0x20,\r
+       0x7D, 0xC7, 0xAD, 0xF1, 0xC0, 0x18, 0xC9, 0x01, 0xD0, 0x01, 0x38, 0x68, 0x60, 0x98, 0x48, 0xA0,\r
+       0x00, 0xAD, 0xF8, 0xC0, 0x91, 0x44, 0xC8, 0xD0, 0xF8, 0xE6, 0x45, 0xA0, 0x00, 0xAD, 0xF8, 0xC0,\r
+       0x91, 0x44, 0xC8, 0xD0, 0xF8, 0x68, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xD7, 0x46\r
+};\r
+\r
+// Various firmware from the IIe ROM file...\r
+\r
+//Not sure what the heck this is...\r
+char slot2e[0x100] = {\r
+       0x2C, 0x58, 0xFF, 0x70, 0x0C, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x06, 0x01, 0x31, 0x8E, 0x94, 0x97, \r
+       0x9A, 0x85, 0x27, 0x86, 0x35, 0x8A, 0x48, 0x98, 0x48, 0x08, 0x78, 0x8D, 0xFF, 0xCF, 0x20, 0x58, \r
+       0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x8D, 0xF8, 0x07, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x26, 0xA8, \r
+       0x28, 0x50, 0x29, 0x1E, 0x38, 0x05, 0x5E, 0x38, 0x05, 0xB9, 0x8A, 0xC0, 0x29, 0x1F, 0xD0, 0x05, \r
+       0xA9, 0xEF, 0x20, 0x05, 0xC8, 0xE4, 0x37, 0xD0, 0x0B, 0xA9, 0x07, 0xC5, 0x36, 0xF0, 0x05, 0x85, \r
+       0x36, 0x18, 0x90, 0x08, 0xE4, 0x39, 0xD0, 0xF9, 0xA9, 0x05, 0x85, 0x38, 0xBD, 0x38, 0x07, 0x29, \r
+       0x02, 0x08, 0x90, 0x03, 0x4C, 0xBF, 0xC8, 0xBD, 0xB8, 0x04, 0x48, 0x0A, 0x10, 0x0E, 0xA6, 0x35, \r
+       0xA5, 0x27, 0x09, 0x20, 0x9D, 0x00, 0x02, 0x85, 0x27, 0xAE, 0xF8, 0x07, 0x68, 0x29, 0xBF, 0x9D, \r
+       0xB8, 0x04, 0x28, 0xF0, 0x06, 0x20, 0x63, 0xCB, 0x4C, 0xB5, 0xC8, 0x4C, 0xFC, 0xC8, 0x20, 0x00, \r
+       0xC8, 0xA2, 0x00, 0x60, 0x4C, 0x9B, 0xC8, 0x4C, 0xAA, 0xC9, 0x4A, 0x20, 0x9B, 0xC9, 0xB0, 0x08, \r
+       0x20, 0xF5, 0xCA, 0xF0, 0x06, 0x18, 0x90, 0x03, 0x20, 0xD2, 0xCA, 0xBD, 0xB8, 0x05, 0xAA, 0x60, \r
+       0xA2, 0x03, 0xB5, 0x36, 0x48, 0xCA, 0x10, 0xFA, 0xAE, 0xF8, 0x07, 0xBD, 0x38, 0x06, 0x85, 0x36, \r
+       0xBD, 0xB8, 0x04, 0x29, 0x38, 0x4A, 0x4A, 0x4A, 0x09, 0xC0, 0x85, 0x37, 0x8A, 0x48, 0xA5, 0x27, \r
+       0x48, 0x09, 0x80, 0x20, 0xED, 0xFD, 0x68, 0x85, 0x27, 0x68, 0x8D, 0xF8, 0x07, 0xAA, 0x0A, 0x0A, \r
+       0x0A, 0x0A, 0x85, 0x26, 0x8D, 0xFF, 0xCF, 0xA5, 0x36, 0x9D, 0x38, 0x06, 0xA2, 0x00, 0x68, 0x95, \r
+       0x36, 0xE8, 0xE0, 0x04, 0x90, 0xF8, 0xAE, 0xF8, 0x07, 0x60, 0xC1, 0xD0, 0xD0, 0xCC, 0xC5, 0x08\r
+};\r
+\r
+//This looks identical to diskROM\r
+char slot6e[0x100] = {\r
+       0xA2, 0x20, 0xA0, 0x00, 0xA2, 0x03, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C, \r
+       0x49, 0xFF, 0x29, 0x7E, 0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10, \r
+       0xE5, 0x20, 0x58, 0xFF, 0xBA, 0xBD, 0x00, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x2B, 0xAA, 0xBD, \r
+       0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, 0x80, 0xC0, \r
+       0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, 0xFC, 0x88, \r
+       0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0xA9, 0x08, 0x85, 0x27, 0x18, 0x08, 0xBD, 0x8C, \r
+       0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF7, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3, \r
+       0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xDF, 0x49, 0xAD, 0xF0, \r
+       0x25, 0xD0, 0xD9, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD, \r
+       0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xBE, 0xA5, 0x40, \r
+       0xC5, 0x41, 0xD0, 0xB8, 0xB0, 0xB7, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59, \r
+       0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, \r
+       0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, \r
+       0x59, 0xD6, 0x02, 0xD0, 0x87, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00, \r
+       0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5, \r
+       0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x2B, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+// Various firmware from the IIc\r
+\r
+char slot1[0x100] = {\r
+       0x2C, 0x89, 0xC1, 0x70, 0x0C, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x06, 0x01, 0x31, 0x9E, 0xA8, 0xB4, \r
+       0xBB, 0xDA, 0xA2, 0xC1, 0x4C, 0x1C, 0xC2, 0x90, 0x03, 0x4C, 0xE5, 0xC7, 0x0A, 0x7A, 0x5A, 0xBD, \r
+       0xB8, 0x04, 0xF0, 0x42, 0xA5, 0x24, 0xB0, 0x1C, 0xDD, 0xB8, 0x04, 0x90, 0x03, 0xBD, 0x38, 0x07, \r
+       0xDD, 0x38, 0x07, 0xB0, 0x0B, 0xC9, 0x11, 0xB0, 0x11, 0x09, 0xF0, 0x3D, 0x38, 0x07, 0x65, 0x24, \r
+       0x85, 0x24, 0x80, 0x06, 0xC5, 0x21, 0x90, 0x02, 0x64, 0x24, 0x7A, 0x5A, 0xBD, 0x38, 0x07, 0xDD, \r
+       0xB8, 0x04, 0xB0, 0x08, 0xC5, 0x24, 0xB0, 0x0E, 0xA9, 0x40, 0x80, 0x02, 0xA9, 0x1A, 0xC0, 0x80, \r
+       0x6A, 0x20, 0x9B, 0xC1, 0x80, 0xE4, 0x98, 0x20, 0x8A, 0xC1, 0xBD, 0xB8, 0x04, 0xF0, 0x17, 0x3C, \r
+       0xB8, 0x06, 0x30, 0x12, 0xBD, 0x38, 0x07, 0xFD, 0xB8, 0x04, 0xC9, 0xF8, 0x90, 0x04, 0x18, 0x65, \r
+       0x21, 0xAC, 0xA9, 0x00, 0x85, 0x24, 0x68, 0x7A, 0xFA, 0x60, 0x20, 0xA9, 0xC7, 0x90, 0xFA, 0x3C, \r
+       0xB8, 0x06, 0x10, 0x07, 0xC9, 0x91, 0xF0, 0x03, 0x20, 0xF0, 0xFD, 0x4C, 0xCD, 0xC7, 0x5A, 0x48, \r
+       0x20, 0xB6, 0xC2, 0x9E, 0xB8, 0x06, 0x80, 0x07, 0x5A, 0x20, 0xD9, 0xC7, 0x90, 0xFA, 0x90, 0x68, \r
+       0x7A, 0xA2, 0x00, 0x60, 0x5A, 0x48, 0x20, 0x8A, 0xC1, 0x80, 0xF4, 0x5A, 0x48, 0x4A, 0xD0, 0x15, \r
+       0x08, 0x20, 0xD3, 0xC7, 0x28, 0x90, 0x05, 0x29, 0x28, 0x0A, 0x80, 0x02, 0x29, 0x30, 0xC9, 0x10, \r
+       0xF0, 0xDD, 0x18, 0x80, 0xDA, 0xA2, 0x40, 0x68, 0x7A, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot2[0x100] = {\r
+       0x2C, 0x89, 0xC1, 0x70, 0x14, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x0E, 0x01, 0x31, 0x11, 0x13, 0x15, \r
+       0x17, 0x80, 0x8B, 0x80, 0x93, 0x80, 0x9D, 0x80, 0xA2, 0xDA, 0xA2, 0xC2, 0x5A, 0x48, 0x8E, 0xF8, \r
+       0x07, 0x50, 0x22, 0xA5, 0x36, 0x45, 0x38, 0xF0, 0x06, 0xA5, 0x37, 0xC5, 0x39, 0xF0, 0x03, 0x20, \r
+       0xB6, 0xC2, 0x8A, 0x45, 0x39, 0x05, 0x38, 0xD0, 0x07, 0xA9, 0x05, 0x85, 0x38, 0x38, 0x80, 0x05, \r
+       0xA9, 0x07, 0x85, 0x36, 0x18, 0xBD, 0xB8, 0x06, 0x89, 0x01, 0xD0, 0x03, 0x4C, 0x17, 0xC1, 0x90, \r
+       0xFB, 0x68, 0x80, 0x28, 0x3C, 0xB8, 0x03, 0x50, 0x1C, 0x20, 0x8F, 0xC1, 0x80, 0x1E, 0x68, 0x20, \r
+       0x70, 0xCC, 0x10, 0x1B, 0x20, 0xA9, 0xC7, 0xB0, 0xEB, 0x29, 0x5F, 0xC9, 0x51, 0xF0, 0x04, 0xC9, \r
+       0x52, 0xD0, 0x09, 0xA9, 0x98, 0x7A, 0xFA, 0x60, 0x18, 0x20, 0xA3, 0xC7, 0x20, 0x4C, 0xCC, 0x48, \r
+       0x20, 0xD9, 0xC7, 0xB0, 0x09, 0xBD, 0xB8, 0x06, 0x29, 0x10, 0xF0, 0xD2, 0x80, 0xF2, 0xA8, 0x68, \r
+       0x5A, 0x20, 0xB8, 0xC3, 0x68, 0xBC, 0x38, 0x06, 0xF0, 0x12, 0x09, 0x80, 0xC9, 0x91, 0xF0, 0xDC, \r
+       0xC9, 0xFF, 0xF0, 0xD8, 0xC9, 0x92, 0xF0, 0xD0, 0xC9, 0x94, 0xF0, 0xCD, 0x3C, 0xB8, 0x03, 0x50, \r
+       0xC4, 0x20, 0xED, 0xFD, 0x80, 0xC6, 0x20, 0x9A, 0xCF, 0xBC, 0x29, 0xC2, 0x20, 0x7C, 0xC3, 0x48, \r
+       0x88, 0x30, 0x04, 0xC0, 0x03, 0xD0, 0xF5, 0x20, 0x9A, 0xCF, 0x68, 0xBC, 0x2B, 0xC2, 0x99, 0xFB, \r
+       0xBF, 0x68, 0x99, 0xFA, 0xBF, 0x68, 0x9D, 0xB8, 0x06, 0x29, 0x01, 0xD0, 0x02, 0xA9, 0x09, 0x9D, \r
+       0x38, 0x06, 0x68, 0x9D, 0xB8, 0x04, 0x9E, 0xB8, 0x03, 0x60, 0x03, 0x07, 0xA0, 0xB0, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot3[0x100] = {\r
+       0x48, 0xDA, 0x5A, 0x80, 0x12, 0x38, 0x90, 0x18, 0x80, 0x1A, 0xEA, 0x01, 0x88, 0x2C, 0x2F, 0x32, \r
+       0x35, 0x4C, 0xAF, 0xC7, 0x4C, 0xB5, 0xC7, 0x20, 0x20, 0xCE, 0x20, 0xBE, 0xCD, 0x20, 0x58, 0xFC, \r
+       0x7A, 0xFA, 0x68, 0x18, 0xB0, 0x03, 0x4C, 0xF6, 0xFD, 0x4C, 0x1B, 0xFD, 0x4C, 0x41, 0xCF, 0x4C, \r
+       0x35, 0xCF, 0x4C, 0xC2, 0xCE, 0x4C, 0xB1, 0xCE, 0xA9, 0x06, 0xCD, 0xB3, 0xFB, 0xF0, 0x3C, 0x20, \r
+       0x60, 0xC3, 0xA9, 0xF8, 0x85, 0x37, 0x64, 0x36, 0xB2, 0x36, 0x92, 0x36, 0xE6, 0x36, 0xD0, 0xF8, \r
+       0xE6, 0x37, 0xD0, 0xF4, 0xDA, 0xAE, 0x78, 0x04, 0x3C, 0x81, 0xC0, 0x3C, 0x81, 0xC0, 0xFA, 0x60, \r
+       0xDA, 0xA2, 0x00, 0x2C, 0x11, 0xC0, 0x30, 0x02, 0xA2, 0x08, 0x2C, 0x12, 0xC0, 0x10, 0x02, 0xE8, \r
+       0xE8, 0x2C, 0x81, 0xC0, 0x2C, 0x81, 0xC0, 0x8E, 0x78, 0x04, 0xFA, 0x60, 0xAD, 0x13, 0xC0, 0x0A, \r
+       0xAD, 0x18, 0xC0, 0x08, 0x8D, 0x00, 0xC0, 0x8D, 0x03, 0xC0, 0xB9, 0x78, 0x04, 0x28, 0xB0, 0x03, \r
+       0x8D, 0x02, 0xC0, 0x10, 0x03, 0x8D, 0x01, 0xC0, 0x60, 0x09, 0x80, 0xC9, 0xFB, 0xB0, 0x06, 0xC9, \r
+       0xE1, 0x90, 0x02, 0x29, 0xDF, 0x60, 0x48, 0xA9, 0x08, 0x1C, 0xFB, 0x04, 0x68, 0x20, 0xED, 0xFD, \r
+       0x4C, 0x44, 0xFD, 0x20, 0x9D, 0xCC, 0x80, 0x09, 0x20, 0x9D, 0xCC, 0x24, 0x32, 0x30, 0x02, 0x29, \r
+       0x7F, 0x5A, 0x09, 0x00, 0x30, 0x15, 0x48, 0xAD, 0xFB, 0x04, 0x6A, 0x68, 0x90, 0x0D, 0x2C, 0x1E, \r
+       0xC0, 0x10, 0x08, 0x49, 0x40, 0x89, 0x60, 0xF0, 0x02, 0x49, 0x40, 0x2C, 0x1F, 0xC0, 0x10, 0x19, \r
+       0x48, 0x8D, 0x01, 0xC0, 0x98, 0x45, 0x20, 0x4A, 0xB0, 0x04, 0xAD, 0x55, 0xC0, 0xC8, 0x98, 0x4A, \r
+       0xA8, 0x68, 0x91, 0x28, 0x2C, 0x54, 0xC0, 0x7A, 0x60, 0x91, 0x28, 0x7A, 0x60, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot4[0x100] = {\r
+       0x80, 0x05, 0xA2, 0x03, 0x60, 0x38, 0x90, 0x18, 0x4C, 0xCF, 0xC5, 0x01, 0x20, 0x02, 0x02, 0x02, \r
+       0x02, 0x00, 0x3B, 0xDC, 0x93, 0x82, 0x69, 0xBD, 0x6B, 0x1A, 0x9C, 0x7C, 0x07, 0xA2, 0x80, 0xA0, \r
+       0x01, 0x9E, 0x7D, 0x04, 0x9E, 0x7D, 0x05, 0xA9, 0xFF, 0x9D, 0x7D, 0x06, 0xA9, 0x03, 0x9D, 0x7D, \r
+       0x07, 0xA2, 0x00, 0x88, 0x10, 0xEB, 0x20, 0x6B, 0xC4, 0xA9, 0x00, 0xAA, 0x20, 0x9A, 0xCF, 0x8A, \r
+       0x8D, 0x78, 0x04, 0x4A, 0x0D, 0x78, 0x04, 0xC9, 0x10, 0xB0, 0x1F, 0x29, 0x05, 0xF0, 0x01, 0x58, \r
+       0x69, 0x55, 0x08, 0x78, 0x8E, 0xFC, 0x07, 0x8D, 0x79, 0xC0, 0xA2, 0x08, 0xCA, 0x0A, 0x90, 0x03, \r
+       0x9D, 0x58, 0xC0, 0xD0, 0xF7, 0x8D, 0x78, 0xC0, 0x28, 0x18, 0x60, 0xA2, 0x80, 0x80, 0x02, 0xA2, \r
+       0x00, 0xBD, 0x7D, 0x04, 0x9D, 0x7C, 0x04, 0xBD, 0x7D, 0x05, 0x9D, 0x7C, 0x05, 0xCA, 0x10, 0xEF, \r
+       0x80, 0x0C, 0x9C, 0x7C, 0x04, 0x9C, 0x7C, 0x05, 0x9C, 0xFC, 0x04, 0x9C, 0xFC, 0x05, 0x9C, 0x7C, \r
+       0x06, 0x18, 0x60, 0xA9, 0x20, 0x1C, 0x7C, 0x07, 0x2D, 0x7C, 0x06, 0x1C, 0x7C, 0x06, 0x2C, 0xFC, \r
+       0x07, 0x30, 0x13, 0x2C, 0x63, 0xC0, 0x30, 0x02, 0x09, 0x80, 0x2C, 0x7C, 0x07, 0x10, 0x02, 0x09, \r
+       0x40, 0x8D, 0x7C, 0x07, 0x18, 0x60, 0x0D, 0x7C, 0x07, 0x29, 0xE0, 0x80, 0xF4, 0x6A, 0x6A, 0x29, \r
+       0x80, 0xAA, 0xAD, 0x78, 0x04, 0x9D, 0x7D, 0x04, 0xAD, 0x78, 0x05, 0x9D, 0x7D, 0x05, 0xAD, 0xF8, \r
+       0x04, 0x9D, 0x7D, 0x06, 0xAD, 0xF8, 0x05, 0x9D, 0x7D, 0x07, 0x18, 0x60, 0x48, 0x18, 0xA9, 0x0E, \r
+       0x2D, 0x7C, 0x07, 0xD0, 0x01, 0x38, 0x68, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \r
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot5[0x100] = {\r
+       0xA2, 0x20, 0xA2, 0x00, 0xA2, 0x03, 0xC9, 0x00, 0xB0, 0x17, 0x38, 0xB0, 0x01, 0x18, 0xA2, 0x05, \r
+       0x7E, 0x73, 0x04, 0x18, 0xA2, 0xC5, 0x8E, 0xF8, 0x07, 0xA2, 0x05, 0xAD, 0xFF, 0xCF, 0x4C, 0x97, \r
+       0xC7, 0xA2, 0x05, 0x86, 0x58, 0xA9, 0xC5, 0x8D, 0xF8, 0x07, 0x20, 0x76, 0xC5, 0xA0, 0x05, 0xB9, \r
+       0x70, 0xC5, 0x99, 0x42, 0x00, 0x88, 0x10, 0xF7, 0x20, 0x0A, 0xC5, 0xB0, 0x15, 0xAE, 0x00, 0x08, \r
+       0xCA, 0xD0, 0x0F, 0xAE, 0x01, 0x08, 0xF0, 0x0A, 0xA5, 0x58, 0x0A, 0x0A, 0x0A, 0x0A, 0xAA, 0x4C, \r
+       0x01, 0x08, 0xA2, 0x10, 0xBD, 0x5F, 0xC5, 0x9D, 0xDB, 0x07, 0xCA, 0x10, 0xF7, 0x80, 0xFE, 0xC3, \r
+       0xE8, 0xE5, 0xE3, 0xEB, 0xA0, 0xC4, 0xE9, 0xF3, 0xEB, 0xA0, 0xC4, 0xF2, 0xE9, 0xF6, 0xE5, 0xAE, \r
+       0x01, 0x50, 0x00, 0x08, 0x00, 0x00, 0xA2, 0x08, 0xBD, 0x83, 0xC5, 0x95, 0x00, 0xCA, 0x10, 0xF8, \r
+       0x4C, 0x00, 0x00, 0x20, 0x0D, 0xC5, 0x05, 0x07, 0x00, 0x60, 0x01, 0x00, 0x00, 0x00, 0xA2, 0x03, \r
+       0xA0, 0x00, 0x86, 0x3C, 0x8A, 0x0A, 0x24, 0x3C, 0xF0, 0x10, 0x05, 0x3C, 0x49, 0xFF, 0x29, 0x7E, \r
+       0xB0, 0x08, 0x4A, 0xD0, 0xFB, 0x98, 0x9D, 0x56, 0x03, 0xC8, 0xE8, 0x10, 0xE5, 0xA9, 0x08, 0x85, \r
+       0x27, 0xA0, 0x7F, 0x60, 0xB9, 0x00, 0x02, 0xC8, 0x4C, 0x99, 0xC3, 0xC1, 0xF0, 0xF0, 0xEC, 0xE5, \r
+       0xA0, 0xAF, 0xAF, 0xE3, 0x20, 0xD0, 0xF8, 0x20, 0x53, 0xF9, 0x85, 0x3A, 0x84, 0x3B, 0x60, 0x5A, \r
+       0xB0, 0x1C, 0xA0, 0xC4, 0xC4, 0x39, 0xD0, 0x04, 0xA4, 0x38, 0xF0, 0x12, 0xDA, 0x48, 0x29, 0x7F, \r
+       0xC9, 0x02, 0xB0, 0x06, 0x20, 0x3B, 0xC4, 0x20, 0x6B, 0xC4, 0x68, 0xFA, 0x7A, 0x60, 0x4C, 0x9D, \r
+       0xC7, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x52, 0xC5, 0x4C, 0x76, 0xC5, 0x00, 0x00, 0x00, 0xBF, 0x0A\r
+};\r
+\r
+char slot6[0x100] = {\r
+       0xA2, 0x20, 0xA0, 0x00, 0x64, 0x03, 0x64, 0x3C, 0xA9, 0x60, 0xAA, 0x86, 0x2B, 0x85, 0x4F, 0x5A, \r
+       0xBD, 0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0x7A, 0xB9, 0xEA, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, \r
+       0x80, 0xC0, 0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x20, 0xA8, \r
+       0xFC, 0x88, 0x10, 0xEB, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0x20, 0x8E, 0xC5, 0x64, 0x03, 0x18, \r
+       0x08, 0x28, 0xA6, 0x2B, 0xC6, 0x03, 0xD0, 0x0E, 0xBD, 0x88, 0xC0, 0xA5, 0x01, 0xC9, 0xC6, 0xD0, \r
+       0xA4, 0x4C, 0x00, 0xC5, 0x00, 0x00, 0x08, 0x88, 0xD0, 0x04, 0xF0, 0xE5, 0x80, 0xDF, 0xBD, 0x8C, \r
+       0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF0, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3, \r
+       0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xC2, 0x49, 0xAD, 0xF0, \r
+       0x25, 0xD0, 0xBC, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD, \r
+       0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0xA1, 0xA5, 0x40, \r
+       0xC5, 0x41, 0xD0, 0x9B, 0xB0, 0x9C, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59, \r
+       0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, \r
+       0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, \r
+       0x59, 0xD6, 0x02, 0xD0, 0xCD, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00, \r
+       0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5, \r
+       0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x4F, 0x90, 0xDB, 0x4C, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
+\r
+char slot7[0x100] = {\r
+       0x2C, 0x03, 0xC7, 0x70, 0x1B, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x15, 0x01, 0x9B, 0x1C, 0x1C, 0x1C, \r
+       0x1C, 0x88, 0x18, 0x80, 0x2A, 0x38, 0x78, 0xA2, 0xFF, 0x9A, 0x80, 0x26, 0x38, 0xA2, 0x03, 0x60, \r
+       0x8D, 0x78, 0x04, 0xA9, 0xC7, 0x8D, 0xF8, 0x07, 0x08, 0xC5, 0x39, 0xF0, 0xE8, 0x28, 0x4D, 0x7F, \r
+       0x04, 0xD0, 0x1A, 0xAD, 0xFF, 0x07, 0x48, 0xAD, 0x7F, 0x07, 0x48, 0xAD, 0x78, 0x04, 0x60, 0x8D, \r
+       0xF8, 0x07, 0x20, 0xD3, 0xC7, 0x70, 0x01, 0x60, 0xB0, 0x03, 0x6C, 0xCB, 0x00, 0xAD, 0x81, 0xC0, \r
+       0xAD, 0x81, 0xC0, 0x20, 0x84, 0xFE, 0x20, 0x2F, 0xFB, 0x20, 0x58, 0xFC, 0x20, 0x93, 0xFE, 0x20, \r
+       0x89, 0xFE, 0xA0, 0x10, 0xB9, 0x6F, 0xC7, 0x99, 0xDB, 0x07, 0x88, 0x10, 0xF7, 0x80, 0xFE, 0xC1, \r
+       0xF0, 0xF0, 0xEC, 0xE5, 0xD4, 0xE1, 0xEC, 0xEB, 0xA0, 0xCF, 0xE6, 0xE6, 0xEC, 0xE9, 0xEE, 0xE5, \r
+       0x8D, 0x28, 0xC0, 0x40, 0x8D, 0x28, 0xC0, 0x60, 0x8D, 0x28, 0xC0, 0x4C, 0x62, 0xFA, 0x8D, 0x28, \r
+       0xC0, 0x2C, 0x87, 0xC7, 0x4C, 0x04, 0xC8, 0x8D, 0x28, 0xC0, 0x4C, 0xF1, 0xC7, 0x8D, 0x28, 0xC0, \r
+       0x4C, 0xF6, 0xC7, 0x8D, 0x28, 0xC0, 0x4C, 0xF1, 0xC7, 0x8D, 0x28, 0xC0, 0x4C, 0x06, 0xC8, 0x8D, \r
+       0x28, 0xC0, 0x4C, 0x4E, 0xC3, 0x8D, 0x28, 0xC0, 0x4C, 0x97, 0xC3, 0x8D, 0x28, 0xC0, 0x4C, 0x00, \r
+       0xC1, 0x8D, 0x28, 0xC0, 0x4C, 0xA9, 0xD4, 0x8D, 0x28, 0xC0, 0x4C, 0x80, 0xC5, 0x8D, 0x28, 0xC0, \r
+       0x4C, 0x4F, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xAC, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xC3, 0xC2, 0x8D, \r
+       0x28, 0xC0, 0x4C, 0xF7, 0xC2, 0x8D, 0x28, 0xC0, 0x4C, 0xE0, 0xD4, 0x8D, 0x28, 0xC0, 0x6C, 0xED, \r
+       0x03, 0x20, 0x23, 0xCE, 0x80, 0x8E, 0x20, 0x4D, 0xCE, 0x80, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00\r
+};\r
diff --git a/src/floppy.cpp b/src/floppy.cpp
new file mode 100755 (executable)
index 0000000..9c0165c
--- /dev/null
@@ -0,0 +1,533 @@
+//\r
+// Apple 2 floppy disk support\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  12/03/2005  Created this file\r
+// JLH  12/15/2005  Fixed nybblization functions to work properly\r
+// JLH  12/27/2005  Added blank disk creation, fixed saving to work properly\r
+//\r
+\r
+#include "floppy.h"\r
+\r
+#include <stdio.h>\r
+#include <string>\r
+#include "apple2.h"\r
+#include "log.h"\r
+#include "applevideo.h"                                        // For message spawning... Though there's probably a better approach than this!\r
+\r
+using namespace std;\r
+\r
+// Useful enums\r
+\r
+enum { IO_MODE_READ, IO_MODE_WRITE };\r
+\r
+// FloppyDrive class variable initialization\r
+\r
+uint8 FloppyDrive::header[21] = {\r
+       0xD5, 0xAA, 0x96, 0xFF, 0xFE, 0x00, 0x00, 0x00,\r
+       0x00, 0x00, 0x00, 0xDE, 0xAA, 0xFF,     0xFF, 0xFF,\r
+       0xFF, 0xFF, 0xD5, 0xAA, 0xAD };\r
+uint8 FloppyDrive::doSector[16] = {\r
+       0x0, 0x7, 0xE, 0x6, 0xD, 0x5, 0xC, 0x4, 0xB, 0x3, 0xA, 0x2, 0x9, 0x1, 0x8, 0xF };\r
+uint8 FloppyDrive::poSector[16] = {\r
+       0x0, 0x8, 0x1, 0x9, 0x2, 0xA, 0x3, 0xB, 0x4, 0xC, 0x5, 0xD, 0x6, 0xE, 0x7, 0xF };\r
+\r
+// FloppyDrive class implementation...\r
+\r
+FloppyDrive::FloppyDrive(): motorOn(0), activeDrive(0), ioMode(IO_MODE_READ), phase(0), track(0)\r
+{\r
+       disk[0] = disk[1] = NULL;\r
+       diskSize[0] = diskSize[1] = 0;\r
+       diskType[0] = diskType[1] = DT_UNKNOWN;\r
+       imageDirty[0] = imageDirty[1] = false;\r
+       imageName[0][0] = imageName[1][0] = 0;                  // Zero out filenames\r
+}\r
+\r
+FloppyDrive::~FloppyDrive()\r
+{\r
+       if (disk[0])\r
+               delete[] disk[0];\r
+\r
+       if (disk[1])\r
+               delete[] disk[1];\r
+}\r
+\r
+bool FloppyDrive::LoadImage(const char * filename, uint8 driveNum/*= 0*/)\r
+{\r
+       if (driveNum > 1)\r
+       {\r
+               WriteLog("FLOPPY: Attempted to load image to drive #%u!\n", driveNum);\r
+               return false;\r
+       }\r
+\r
+       imageName[driveNum][0] = 0;                                     // Zero out filename, in case it doesn't load\r
+\r
+       FILE * fp = fopen(filename, "rb");\r
+\r
+       if (fp == NULL)\r
+       {\r
+               WriteLog("FLOPPY: Failed to open image file '%s' for reading...\n", filename);\r
+               return false;\r
+       }\r
+\r
+       if (disk[driveNum])\r
+               delete[] disk[driveNum];\r
+\r
+       fseek(fp, 0, SEEK_END);\r
+       diskSize[driveNum] = ftell(fp);\r
+       fseek(fp, 0, SEEK_SET);\r
+       disk[driveNum] =  new uint8[diskSize[driveNum]];\r
+       fread(disk[driveNum], 1, diskSize[driveNum], fp);\r
+\r
+       fclose(fp);\r
+//printf("Read disk image: %u bytes.\n", diskSize);\r
+       DetectImageType(filename, driveNum);\r
+       strcpy(imageName[driveNum], filename);\r
+\r
+       return true;\r
+}\r
+\r
+bool FloppyDrive::SaveImage(uint8 driveNum/*= 0*/)\r
+{\r
+       if (driveNum > 1)\r
+       {\r
+               WriteLog("FLOPPY: Attempted to save image to drive #%u!\n", driveNum);\r
+               return false;\r
+       }\r
+\r
+       if (!imageDirty[driveNum])\r
+       {\r
+               WriteLog("FLOPPY: No need to save unchanged image...\n");\r
+               return false;\r
+       }\r
+\r
+       if (imageName[driveNum][0] == 0)\r
+       {\r
+               WriteLog("FLOPPY: Attempted to save non-existant image!\n");\r
+               return false;\r
+       }\r
+\r
+       if (diskType[driveNum] == DT_NYBBLE)\r
+               memcpy(disk[driveNum], nybblizedImage[driveNum], 232960);\r
+       else\r
+               DenybblizeImage(driveNum);\r
+\r
+       FILE * fp = fopen(imageName[driveNum], "wb");\r
+\r
+       if (fp == NULL)\r
+       {\r
+               WriteLog("FLOPPY: Failed to open image file '%s' for writing...\n", imageName[driveNum]);\r
+               return false;\r
+       }\r
+\r
+       fwrite(disk[driveNum], 1, diskSize[driveNum], fp);\r
+       fclose(fp);\r
+\r
+       return true;\r
+}\r
+\r
+bool FloppyDrive::SaveImageAs(const char * filename, uint8 driveNum/*= 0*/)\r
+{\r
+//WARNING: Buffer overflow possibility\r
+       strcpy(imageName[driveNum], filename);\r
+       return SaveImage(driveNum);\r
+}\r
+\r
+void FloppyDrive::CreateBlankImage(uint8 driveNum/*= 0*/)\r
+{\r
+       if (disk[driveNum] != NULL)\r
+               delete disk[driveNum];\r
+\r
+       disk[driveNum] = new uint8[143360];\r
+       diskSize[driveNum] = 143360;\r
+       memset(disk[driveNum], 0x00, 143360);\r
+       memset(nybblizedImage[driveNum], 0x00, 232960); // Set it to 0 instead of $FF for proper formatting...\r
+       diskType[driveNum] = DT_DOS33;\r
+       strcpy(imageName[driveNum], "newblank.dsk");\r
+SpawnMessage("New blank image inserted in drive %u...", driveNum);\r
+}\r
+\r
+void FloppyDrive::SwapImages(void)\r
+{\r
+       uint8 nybblizedImageTmp[232960];\r
+       char imageNameTmp[MAX_PATH];\r
+\r
+       memcpy(nybblizedImageTmp, nybblizedImage[0], 232960);\r
+       memcpy(nybblizedImage[0], nybblizedImage[1], 232960);\r
+       memcpy(nybblizedImage[1], nybblizedImageTmp, 232960);\r
+\r
+       memcpy(imageNameTmp, imageName[0], MAX_PATH);\r
+       memcpy(imageName[0], imageName[1], MAX_PATH);\r
+       memcpy(imageName[1], imageNameTmp, MAX_PATH);\r
+\r
+       uint8 * diskTmp = disk[0];\r
+       disk[0] = disk[1];\r
+       disk[1] = diskTmp;\r
+\r
+       uint32 diskSizeTmp = diskSize[0];\r
+       diskSize[0] = diskSize[1];\r
+       diskSize[1] = diskSizeTmp;\r
+\r
+       uint8 diskTypeTmp = diskType[0];\r
+       diskType[0] = diskType[1];\r
+       diskType[1] = diskTypeTmp;\r
+\r
+       uint8 imageDirtyTmp = imageDirty[0];\r
+       imageDirty[0] = imageDirty[1];\r
+       imageDirty[1] = imageDirtyTmp;\r
+SpawnMessage("Drive 0: %s...", imageName[0]);\r
+}\r
+\r
+void FloppyDrive::DetectImageType(const char * filename, uint8 driveNum)\r
+{\r
+       diskType[driveNum] = DT_UNKNOWN;\r
+\r
+       if (diskSize[driveNum] == 232960)\r
+       {\r
+               diskType[driveNum] = DT_NYBBLE;\r
+               memcpy(nybblizedImage[driveNum], disk[driveNum], 232960);\r
+       }\r
+       else if (diskSize[driveNum] == 143360)\r
+       {\r
+               const char * ext = strrchr(filename, '.');\r
+\r
+               if (ext == NULL)\r
+                       return;\r
+WriteLog("FLOPPY: Found extension [%s]...\n", ext);\r
+\r
+//Apparently .dsk can house either DOS order OR PRODOS order... !!! FIX !!!\r
+//[DONE, see below why we don't need it]\r
+               if (strcasecmp(ext, ".po") == 0)\r
+                       diskType[driveNum] = DT_PRODOS;\r
+               else if ((strcasecmp(ext, ".do") == 0) || (strcasecmp(ext, ".dsk") == 0))\r
+               {\r
+                       diskType[driveNum] = DT_DOS33;\r
+//WriteLog("Detected DOS 3.3 disk!\n");\r
+/*\r
+This doesn't seem to be accurate... Maybe it's just a ProDOS disk in a DOS33 order...\r
+That would seem to be the case--just because it's a ProDOS disk doesn't mean anything\r
+WRT to the disk image itself.\r
+                       // This could really be a ProDOS order disk with a .dsk extension, so let's see...\r
+                       char fingerprint[3][4] = {\r
+                               { 0x04, 0x00, 0x00, 0x00 },             // @ $500\r
+                               { 0x03, 0x00, 0x05, 0x00 },             // @ $700\r
+                               { 0x02, 0x00, 0x04, 0x00 } };   // @ $900\r
+\r
+                       if ((strcmp((char *)(disk[driveNum] + 0x500), fingerprint[0]) == 0)\r
+                               && (strcmp((char *)(disk[driveNum] + 0x700), fingerprint[1]) == 0)\r
+                               && (strcmp((char *)(disk[driveNum] + 0x900), fingerprint[2]) == 0))\r
+                               diskType[driveNum] = DT_PRODOS;\r
+//*/\r
+               }\r
+\r
+               NybblizeImage(driveNum);\r
+       }\r
+WriteLog("FLOPPY: Detected image type %s...\n", (diskType[driveNum] == DT_NYBBLE ?\r
+       "Nybble image" : (diskType[driveNum] == DT_DOS33 ?\r
+       "DOS 3.3 image" : (diskType[driveNum] == DT_PRODOS ? "ProDOS image" : "unknown"))));\r
+}\r
+\r
+void FloppyDrive::NybblizeImage(uint8 driveNum)\r
+{\r
+       // Format of a sector is header (23) + nybbles (343) + footer (30) = 396\r
+       // (short by 20 bytes of 416 [413 if 48 byte header is one time only])\r
+// Hmph. Who'da thunk that AppleWin's nybblization routines would be wrong?\r
+// This is now correct, BTW\r
+       // hdr (21) + nybbles (343) + footer (48) = 412 bytes per sector\r
+       // (not incl. 64 byte track marker)\r
+\r
+       uint8 footer[48] = {\r
+               0xDE, 0xAA, 0xEB, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF,\r
+               0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+               0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+               0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+               0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\r
+               0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };\r
+\r
+       uint8 diskbyte[0x40] = {\r
+               0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6,\r
+               0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3,\r
+               0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC,\r
+               0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3,\r
+               0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE,\r
+               0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC,\r
+               0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,\r
+               0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF };\r
+\r
+       uint8 * img = nybblizedImage[driveNum];\r
+       memset(img, 0xFF, 232960);                                      // Doesn't matter if 00s or FFs...\r
+\r
+       for(uint8 trk=0; trk<35; trk++)\r
+       {\r
+               memset(img, 0xFF, 64);                                  // Write gap 1, 64 bytes (self-sync)\r
+               img += 64;\r
+\r
+               for(uint8 sector=0; sector<16; sector++)\r
+               {\r
+                       memcpy(img, header, 21);                        // Set up the sector header\r
+\r
+                       img[5] = ((trk >> 1) & 0x55) | 0xAA;\r
+                       img[6] =  (trk       & 0x55) | 0xAA;\r
+                       img[7] = ((sector >> 1) & 0x55) | 0xAA;\r
+                       img[8] =  (sector       & 0x55) | 0xAA;\r
+                       img[9] = (((trk ^ sector ^ 0xFE) >> 1) & 0x55) | 0xAA;\r
+                       img[10] = ((trk ^ sector ^ 0xFE)       & 0x55) | 0xAA;\r
+\r
+                       img += 21;\r
+                       uint8 * bytes = disk[driveNum];\r
+\r
+                       if (diskType[driveNum] == DT_DOS33)\r
+                               bytes += (doSector[sector] * 256) + (trk * 256 * 16);\r
+                       else if (diskType[driveNum] == DT_PRODOS)\r
+                               bytes += (poSector[sector] * 256) + (trk * 256 * 16);\r
+                       else\r
+                               bytes += (sector * 256) + (trk * 256 * 16);\r
+\r
+                       // Convert the 256 8-bit bytes into 342 6-bit bytes.\r
+\r
+                       for(uint16 i=0; i<0x56; i++)\r
+                       {\r
+                               img[i] = ((bytes[(i + 0xAC) & 0xFF] & 0x01) << 7)\r
+                                       | ((bytes[(i + 0xAC) & 0xFF] & 0x02) << 5)\r
+                                       | ((bytes[(i + 0x56) & 0xFF] & 0x01) << 5)\r
+                                       | ((bytes[(i + 0x56) & 0xFF] & 0x02) << 3)\r
+                                       | ((bytes[(i + 0x00) & 0xFF] & 0x01) << 3)\r
+                                       | ((bytes[(i + 0x00) & 0xFF] & 0x02) << 1);\r
+                       }\r
+\r
+                       img[0x54] &= 0x3F;\r
+                       img[0x55] &= 0x3F;\r
+                       memcpy(img + 0x56, bytes, 256);\r
+\r
+                       // XOR the data block with itself, offset by one byte,\r
+                       // creating a 343rd byte which is used as a cheksum.\r
+\r
+                       img[342] = 0x00;\r
+\r
+                       for(uint16 i=342; i>0; i--)\r
+                               img[i] = img[i] ^ img[i - 1];\r
+\r
+                       // Using a lookup table, convert the 6-bit bytes into disk bytes.\r
+\r
+                       for(uint16 i=0; i<343; i++)\r
+                               img[i] = diskbyte[img[i] >> 2];\r
+\r
+                       img += 343;\r
+\r
+                       // Done with the nybblization, now for the epilogue...\r
+\r
+                       memcpy(img, footer, 48);\r
+                       img += 48;\r
+               }\r
+       }\r
+}\r
+\r
+void FloppyDrive::DenybblizeImage(uint8 driveNum)\r
+{\r
+       uint8 decodeNybble[0x80] = {\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,\r
+               0x00, 0x00, 0x08, 0x0C, 0x00, 0x10, 0x14, 0x18,\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20,\r
+               0x00, 0x00, 0x00, 0x24, 0x28, 0x2C, 0x30, 0x34,\r
+               0x00, 0x00, 0x38, 0x3C, 0x40, 0x44, 0x48, 0x4C,\r
+               0x00, 0x50, 0x54, 0x58, 0x5C, 0x60, 0x64, 0x68,\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
+               0x00, 0x00, 0x00, 0x6C, 0x00, 0x70, 0x74, 0x78,\r
+               0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x80, 0x84,\r
+               0x00, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9C, 0xA0,\r
+               0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA8, 0xAC,\r
+               0x00, 0xB0, 0xB4, 0xB8, 0xBC, 0xC0, 0xC4, 0xC8,\r
+               0x00, 0x00, 0xCC, 0xD0, 0xD4, 0xD8, 0xDC, 0xE0,\r
+               0x00, 0xE4, 0xE8, 0xEC, 0xF0, 0xF4, 0xF8, 0xFC };\r
+\r
+       // Sanity checks...\r
+       if (disk[driveNum] == NULL || diskSize[driveNum] < 143360)\r
+       {\r
+               WriteLog("FLOPPY: Source disk image invalid! [drive=%u, disk=%08X, diskSize=%u]\n",\r
+                       driveNum, disk[driveNum], diskSize[driveNum]);\r
+               return;\r
+       }\r
+\r
+       uint8 * srcImg = nybblizedImage[driveNum];\r
+       uint8 * dstImg = disk[driveNum];\r
+       uint8 buffer[345];                                                      // 2 extra bytes for the unpack routine below...\r
+\r
+       for(uint8 trk=0; trk<35; trk++)\r
+       {\r
+               uint8 * trackBase = srcImg + (trk * 6656);\r
+\r
+               for(uint8 sector=0; sector<16; sector++)\r
+               {\r
+                       uint16 sectorStart = (uint16)-1;\r
+\r
+                       for(uint16 i=0; i<6656; i++)\r
+                       {\r
+                               if (trackBase[i] == header[0]\r
+                                       && trackBase[(i + 1) % 6656] == header[1]\r
+                                       && trackBase[(i + 2) % 6656] == header[2]\r
+                                       && trackBase[(i + 3) % 6656] == header[3]\r
+                                       && trackBase[(i + 4) % 6656] == header[4])\r
+                               {\r
+//Could also check the track # at +5,6...\r
+                                       uint8 foundSector = ((trackBase[(i + 7) % 6656] & 0x55) << 1)\r
+                                               | (trackBase[(i + 8) % 6656] & 0x55);\r
+\r
+                                       if (foundSector == sector)\r
+                                       {\r
+                                               sectorStart = (i + 21) % 6656;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       // Sanity check...\r
+                       if (sectorStart == (uint16)-1)\r
+                       {\r
+                               WriteLog("FLOPPY: Failed to find sector %u (track %u) in nybble image!\n",\r
+                                       sector, trk);\r
+                               return;\r
+                       }\r
+\r
+                       // Using a lookup table, convert the disk bytes into 6-bit bytes.\r
+\r
+                       for(uint16 i=0; i<343; i++)\r
+                               buffer[i] = decodeNybble[trackBase[(sectorStart + i) % 6656] & 0x7F];\r
+\r
+                       // XOR the data block with itself, offset by one byte.\r
+\r
+                       for(uint16 i=1; i<342; i++)\r
+                               buffer[i] = buffer[i] ^ buffer[i - 1];\r
+\r
+                       // Convert the 342 6-bit bytes into 256 8-bit bytes (at buffer + $56).\r
+\r
+                       for(uint16 i=0; i<0x56; i++)\r
+                       {\r
+                               buffer[0x056 + i] |= ((buffer[i] >> 3) & 0x01) | ((buffer[i] >> 1) & 0x02);\r
+                               buffer[0x0AC + i] |= ((buffer[i] >> 5) & 0x01) | ((buffer[i] >> 3) & 0x02);\r
+                               buffer[0x102 + i] |= ((buffer[i] >> 7) & 0x01) | ((buffer[i] >> 5) & 0x02);\r
+                       }\r
+\r
+                       uint8 * bytes = dstImg;\r
+\r
+                       if (diskType[driveNum] == DT_DOS33)\r
+                               bytes += (doSector[sector] * 256) + (trk * 256 * 16);\r
+                       else if (diskType[driveNum] == DT_PRODOS)\r
+                               bytes += (poSector[sector] * 256) + (trk * 256 * 16);\r
+                       else\r
+                               bytes += (sector * 256) + (trk * 256 * 16);//*/\r
+\r
+                       memcpy(bytes, buffer + 0x56, 256);\r
+               }\r
+       }\r
+}\r
+\r
+// Memory mapped I/O functions\r
+\r
+/*\r
+The DSK format is a byte-for-byte image of a 16-sector Apple II floppy disk: 35 tracks of 16\r
+sectors of 256 bytes each, making 143,360 bytes in total. The PO format is exactly the same\r
+size as DSK and is also organized as 35 sequential tracks, but the sectors within each track\r
+are in a different sequence. The NIB format is a nybblized format: a more direct representation\r
+of the disk's data as encoded by the Apple II floppy drive hardware. NIB contains 35 tracks of\r
+6656 bytes each, for a total size of 232,960 bytes. Although this format is much larger, it is\r
+also more versatile and can represent the older 13-sector disks, many copy-protected disks, and\r
+other unusual encodings.\r
+*/\r
+\r
+void FloppyDrive::ControlStepper(uint8 addr)\r
+{\r
+       // $C0E0 - 7\r
+/*\r
+What I can gather here:\r
+bits 1-2 are the "phase" of the track (which is 1/4 of a full track (?))\r
+bit 0 is the "do something" bit.\r
+*/\r
+       if (addr & 0x01)\r
+       {\r
+               uint8 newPhase = (addr >> 1) & 0x03;\r
+//WriteLog("*** Stepper change [%u]: track = %u, phase = %u, newPhase = %u\n", addr, track, phase, newPhase);\r
+\r
+               if (((phase + 1) & 0x03) == newPhase)\r
+                       phase += (phase < 79 ? 1 : 0);\r
+\r
+               if (((phase - 1) & 0x03) == newPhase)\r
+                       phase -= (phase > 0 ? 1 : 0);\r
+\r
+               if (!(phase & 0x01))\r
+               {\r
+                       track = ((phase >> 1) < 35 ? phase >> 1 : 34);\r
+                       currentPos = 0;\r
+               }\r
+//WriteLog("                        track = %u, phase = %u, newPhase = %u\n", track, phase, newPhase);\r
+SpawnMessage("Stepping to track %u...", track);\r
+       }\r
+\r
+//     return something if read mode...        \r
+}\r
+\r
+void FloppyDrive::ControlMotor(uint8 addr)\r
+{\r
+       // $C0E8 - 9\r
+       motorOn = addr;\r
+}\r
+\r
+void FloppyDrive::DriveEnable(uint8 addr)\r
+{\r
+       // $C0EA - B\r
+       activeDrive = addr;\r
+}\r
+\r
+uint8 FloppyDrive::ReadWrite(void)\r
+{\r
+SpawnMessage("%sing %s track %u, sector %u...", (ioMode == IO_MODE_READ ? "Read" : "Write"),\r
+       (ioMode == IO_MODE_READ ? "from" : "to"), track, currentPos / 396);\r
+       // $C0EC\r
+/*\r
+I think what happens here is that once a track is read its nybblized form\r
+is fed through here, one byte at a time--which means for DO disks, we have\r
+to convert the actual 256 byte sector to a 416 byte nybblized data "sector".\r
+Which we now do. :-)\r
+*/\r
+       if (ioMode == IO_MODE_WRITE && (latchValue & 0x80))\r
+       {\r
+               nybblizedImage[activeDrive][(track * 6656) + currentPos] = latchValue;\r
+               imageDirty[activeDrive] = true;\r
+       }\r
+\r
+       uint8 diskByte = nybblizedImage[activeDrive][(track * 6656) + currentPos];\r
+       currentPos = (currentPos + 1) % 6656;\r
+\r
+       return diskByte;\r
+}\r
+\r
+uint8 FloppyDrive::GetLatchValue(void)\r
+{\r
+       // $C0ED\r
+       return latchValue;\r
+}\r
+\r
+void FloppyDrive::SetLatchValue(uint8 value)\r
+{\r
+       // $C0ED\r
+       latchValue = value;\r
+}\r
+\r
+void FloppyDrive::SetReadMode(void)\r
+{\r
+       // $C0EE\r
+       ioMode = IO_MODE_READ;\r
+}\r
+\r
+void FloppyDrive::SetWriteMode(void)\r
+{\r
+       // $C0EF\r
+       ioMode = IO_MODE_WRITE;\r
+}\r
diff --git a/src/floppy.h b/src/floppy.h
new file mode 100755 (executable)
index 0000000..45e8ce4
--- /dev/null
@@ -0,0 +1,69 @@
+//\r
+// Apple 2 floppy disk support\r
+//\r
+\r
+#ifndef __FLOPPY_H__\r
+#define __FLOPPY_H__\r
+\r
+// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...\r
+#ifdef __GCCUNIX__\r
+#include <limits.h>\r
+#define MAX_PATH               _POSIX_PATH_MAX\r
+#else\r
+#include <stdlib.h>                                                            // for MAX_PATH on MinGW/Darwin\r
+#endif\r
+#include "types.h"\r
+\r
+enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };\r
+\r
+class FloppyDrive\r
+{\r
+       public:\r
+               FloppyDrive();\r
+               ~FloppyDrive();\r
+\r
+               bool LoadImage(const char * filename, uint8 driveNum = 0);\r
+               bool SaveImage(uint8 driveNum = 0);\r
+               bool SaveImageAs(const char * filename, uint8 driveNum = 0);\r
+               void CreateBlankImage(uint8 driveNum = 0);\r
+               void SwapImages(void);\r
+\r
+               // I/O functions ($C0Ex accesses)\r
+\r
+               void ControlStepper(uint8 addr);\r
+               void ControlMotor(uint8 addr);\r
+               void DriveEnable(uint8 addr);\r
+               uint8 ReadWrite(void);\r
+               uint8 GetLatchValue(void);\r
+               void SetLatchValue(uint8 value);\r
+               void SetReadMode(void);\r
+               void SetWriteMode(void);\r
+\r
+       protected:\r
+               void DetectImageType(const char * filename, uint8 driveNum);\r
+               void NybblizeImage(uint8 driveNum);\r
+               void DenybblizeImage(uint8 driveNum);\r
+\r
+       private:\r
+               char imageName[2][MAX_PATH];\r
+               uint8 * disk[2];\r
+               uint32 diskSize[2];\r
+               uint8 diskType[2];\r
+               bool imageDirty[2];\r
+               uint8 motorOn;\r
+               uint8 activeDrive;\r
+               uint8 ioMode;\r
+               uint8 latchValue;\r
+               uint8 phase;\r
+               uint8 track;\r
+\r
+               uint8 nybblizedImage[2][232960];\r
+               uint32 currentPos;\r
+\r
+               // And here are some private class variables (to reduce function redundancy):\r
+               static uint8 header[21];\r
+               static uint8 doSector[16];\r
+               static uint8 poSector[16];\r
+};\r
+\r
+#endif // __FLOPPY_H__\r
diff --git a/src/font14pt.h b/src/font14pt.h
new file mode 100755 (executable)
index 0000000..ab72f3f
--- /dev/null
@@ -0,0 +1,1640 @@
+#define FONT_WIDTH             8
+#define FONT_HEIGHT            16
+
+//
+// This file was automagically generated by rawfont2c (by James L. Hammons)
+//
+
+char font1[] = {
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x45, 0xFF, 0x55, 0x00, 0xE5, 0xB5, 0x00, 
+       0x00, 0x2F, 0xFF, 0x3F, 0x00, 0xCF, 0x9F, 0x00, 
+       0x00, 0x19, 0xFF, 0x29, 0x00, 0xB9, 0x89, 0x00, 
+       0x00, 0x04, 0xFE, 0x13, 0x00, 0xA3, 0x73, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x0F, 0x1E, 0x00, 0x1F, 0x0E, 
+       0x00, 0x00, 0x00, 0x7D, 0x8F, 0x00, 0xDC, 0x2F, 
+       0x00, 0x00, 0x00, 0xB9, 0x52, 0x17, 0xEF, 0x02, 
+       0x00, 0x00, 0x03, 0xF2, 0x16, 0x52, 0xB6, 0x00, 
+       0x00, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x71, 0xA9, 0x10, 0xCB, 0x4C, 0x0F, 
+       0x00, 0x00, 0x90, 0x7A, 0x00, 0xF0, 0x18, 0x00, 
+       0x00, 0x00, 0xB9, 0x4F, 0x1C, 0xEE, 0x00, 0x00, 
+       0x80, 0xF0, 0xFC, 0xF3, 0xF3, 0xFD, 0xF0, 0x6F, 
+       0x14, 0x4B, 0xDB, 0x20, 0x9F, 0x88, 0x20, 0x0B, 
+       0x00, 0x72, 0x97, 0x00, 0xD0, 0x39, 0x00, 0x00, 
+       0x00, 0xB6, 0x55, 0x14, 0xF2, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x45, 0xE9, 0xFF, 0xF2, 0xB8, 0x12, 
+       0x00, 0x13, 0xF3, 0xAE, 0xFF, 0x3C, 0x6F, 0x31, 
+       0x00, 0x48, 0xFF, 0x75, 0xFF, 0x20, 0x00, 0x4B, 
+       0x10, 0x27, 0xFF, 0x9A, 0xFF, 0x20, 0x00, 0x2A, 
+       0x00, 0x00, 0x9F, 0xF5, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x04, 0xAA, 0xFF, 0xA5, 0x07, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xEF, 0x99, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x92, 0xFB, 0x0B, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x75, 0xFF, 0x14, 
+       0x00, 0x3B, 0x6E, 0x66, 0xFF, 0xB1, 0xC0, 0x00, 
+       0x00, 0x26, 0xBA, 0xF8, 0xFF, 0xC9, 0x18, 0x13, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x60, 0xDF, 0xD5, 0x3F, 0x00, 0x00, 0xA5, 0xCB, 
+       0xFC, 0x75, 0xA0, 0xE6, 0x02, 0x48, 0xFB, 0x30, 
+       0xFF, 0x25, 0x56, 0xFF, 0x26, 0xDF, 0x88, 0x00, 
+       0xFF, 0x50, 0x82, 0xF3, 0x94, 0xDC, 0x09, 0x00, 
+       0x8C, 0xFB, 0xF8, 0x96, 0xFB, 0x43, 0x00, 0x00, 
+       0x00, 0x11, 0x10, 0xCE, 0x9F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x75, 0xE9, 0x36, 0xCA, 0xDE, 0x6E, 
+       0x00, 0x21, 0xF5, 0x59, 0xB0, 0xC6, 0x90, 0xFF, 
+       0x00, 0xB9, 0xB6, 0x00, 0xDB, 0x94, 0x54, 0xFF, 
+       0x5C, 0xF4, 0x1F, 0x00, 0xB7, 0xBF, 0x85, 0xF1, 
+       0xEB, 0x71, 0x00, 0x00, 0x2D, 0xDC, 0xEF, 0x5B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x6D, 0xE0, 0xDD, 0x5C, 0x00, 0x00, 
+       0x00, 0x2A, 0xFF, 0x6D, 0x91, 0xFA, 0x0D, 0x00, 
+       0x00, 0x47, 0xFF, 0x2D, 0x62, 0xFB, 0x0E, 0x00, 
+       0x00, 0x11, 0xF8, 0x90, 0xDC, 0x7E, 0x00, 0x00, 
+       0x00, 0x3D, 0xE0, 0xFD, 0x5B, 0x00, 0x00, 0x00, 
+       0x85, 0xF2, 0x75, 0xFB, 0x55, 0x00, 0x51, 0xFF, 
+       0xFE, 0x59, 0x00, 0x9A, 0xE4, 0x0F, 0x5D, 0xF5, 
+       0xFF, 0x26, 0x00, 0x17, 0xEF, 0xA7, 0x87, 0xB1, 
+       0xFF, 0x61, 0x00, 0x00, 0x61, 0xFF, 0xEE, 0x32, 
+       0xC7, 0xEC, 0x48, 0x17, 0x5D, 0xF9, 0xE8, 0x1A, 
+       0x12, 0xA2, 0xF1, 0xF7, 0xC4, 0x5D, 0xE9, 0xC8, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xBB, 0xFF, 0x2B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x9A, 0xFF, 0x0B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x79, 0xE9, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xC8, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x34, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0x8A, 0xF0, 0x7E, 
+       0x00, 0x00, 0x00, 0x00, 0xA6, 0xCF, 0x1E, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xF4, 0x1C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xCF, 0x95, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x19, 0xFF, 0x4E, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x41, 0xFF, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x3B, 0xFF, 0x30, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x0E, 0xFD, 0x5B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB7, 0xAC, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x37, 0xFB, 0x3A, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x71, 0xED, 0x53, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xD1, 0xA5, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x1B, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x34, 0xDA, 0xD8, 0x42, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x5E, 0xF3, 0x53, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x5E, 0xF2, 0x1E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xD3, 0x92, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x85, 0xE2, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0x0E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1A, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x64, 0xFE, 0x09, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x94, 0xD5, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x09, 0xE7, 0x79, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x8E, 0xDE, 0x0C, 0x00, 0x00, 
+       0x00, 0x1A, 0x9E, 0xEA, 0x2C, 0x00, 0x00, 0x00, 
+       0x47, 0xF1, 0x9D, 0x19, 0x00, 0x00, 0x00, 0x00, 
+       0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB6, 0xB5, 0x00, 0x00, 0x00, 
+       0x01, 0x87, 0x23, 0x94, 0x93, 0x25, 0x87, 0x00, 
+       0x17, 0xBE, 0xF1, 0x1F, 0x20, 0xF1, 0xBE, 0x16, 
+       0x00, 0x00, 0x2F, 0x5D, 0x5D, 0x2E, 0x00, 0x00, 
+       0x00, 0x19, 0xE1, 0x76, 0x77, 0xE1, 0x19, 0x00, 
+       0x00, 0x1C, 0xA3, 0x05, 0x06, 0xA3, 0x1C, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xC0, 0x09, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x27, 0xAF, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xB2, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x36, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x3E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x61, 0xC2, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x02, 0xD9, 0x46, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xC9, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0xD2, 0x4E, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xD1, 0x01, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xCB, 0x56, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x47, 0xD7, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xC2, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x3E, 0xDE, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x75, 0xDF, 0xD4, 0x53, 0x00, 0x00, 
+       0x00, 0x60, 0xEB, 0x3F, 0x58, 0xF8, 0x34, 0x00, 
+       0x00, 0xDA, 0x7D, 0x00, 0x00, 0xAE, 0xAA, 0x00, 
+       0x1F, 0xFF, 0x42, 0x00, 0x00, 0x73, 0xEE, 0x00, 
+       0x42, 0xFF, 0x28, 0x00, 0x00, 0x5A, 0xFF, 0x11, 
+       0x4D, 0xFF, 0x21, 0x00, 0x00, 0x52, 0xFF, 0x1C, 
+       0x43, 0xFF, 0x28, 0x00, 0x00, 0x59, 0xFF, 0x13, 
+       0x22, 0xFF, 0x40, 0x00, 0x00, 0x71, 0xF1, 0x00, 
+       0x00, 0xDF, 0x78, 0x00, 0x00, 0xA9, 0xAF, 0x00, 
+       0x00, 0x6A, 0xE5, 0x2E, 0x47, 0xF8, 0x3B, 0x00, 
+       0x00, 0x01, 0x86, 0xF0, 0xE6, 0x61, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x16, 0x65, 0xB8, 0x1C, 0x00, 0x00, 
+       0x00, 0xC1, 0xE8, 0xCF, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x29, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x2F, 0xB2, 0xE4, 0xE4, 0x9F, 0x12, 0x00, 
+       0x00, 0x51, 0x75, 0x2E, 0x3E, 0xE0, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0x11, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xC3, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x57, 0xF3, 0x2D, 0x00, 
+       0x00, 0x00, 0x00, 0x40, 0xEF, 0x44, 0x00, 0x00, 
+       0x00, 0x00, 0x2A, 0xED, 0x4F, 0x00, 0x00, 0x00, 
+       0x00, 0x0F, 0xDE, 0x91, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xAC, 0xFE, 0x28, 0x10, 0x10, 0x10, 0x02, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x24, 0xB9, 0xE2, 0xE9, 0xBD, 0x3B, 0x00, 
+       0x00, 0x23, 0x61, 0x30, 0x31, 0xBE, 0xF1, 0x09, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFE, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x19, 0xC4, 0x92, 0x00, 
+       0x00, 0x00, 0x4B, 0xF3, 0xFF, 0xA7, 0x01, 0x00, 
+       0x00, 0x00, 0x0A, 0x24, 0x5C, 0xF1, 0x7B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF2, 0x03, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x19, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFA, 0x08, 
+       0x00, 0x23, 0x57, 0x1A, 0x3B, 0xE8, 0x9E, 0x00, 
+       0x00, 0x2D, 0xDB, 0xF9, 0xEB, 0x94, 0x09, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x3B, 0xFE, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x04, 0xD2, 0xB2, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x73, 0xC4, 0x51, 0xFF, 0x20, 0x00, 
+       0x00, 0x1B, 0xEF, 0x2E, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0xAB, 0x8F, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x46, 0xE5, 0x0D, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x88, 0xFA, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xA5, 
+       0x11, 0x20, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x16, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4B, 0xF0, 0xF0, 0xF0, 0xF0, 0xB0, 0x00, 
+       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x17, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xEB, 0xC3, 0x5A, 0x00, 0x00, 
+       0x00, 0x0A, 0x21, 0x35, 0x84, 0xFC, 0x75, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF0, 0x04, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xFF, 0x19, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xF7, 0x07, 
+       0x00, 0x27, 0x46, 0x16, 0x49, 0xF0, 0x8D, 0x00, 
+       0x00, 0x38, 0xDB, 0xF9, 0xE4, 0x80, 0x03, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x32, 0xBA, 0xE8, 0xD3, 0x6D, 0x00, 
+       0x00, 0x2A, 0xF2, 0x7E, 0x27, 0x47, 0x5E, 0x00, 
+       0x00, 0xB4, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0F, 0xFC, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x3A, 0xFF, 0x53, 0xC0, 0xE7, 0x9D, 0x0A, 0x00, 
+       0x4C, 0xFF, 0xBB, 0x33, 0x4A, 0xF0, 0xA0, 0x00, 
+       0x48, 0xFF, 0x45, 0x00, 0x00, 0x7F, 0xFB, 0x09, 
+       0x2D, 0xFF, 0x25, 0x00, 0x00, 0x55, 0xFF, 0x1A, 
+       0x04, 0xF0, 0x4D, 0x00, 0x00, 0x74, 0xF3, 0x04, 
+       0x00, 0x87, 0xD4, 0x2D, 0x2D, 0xE1, 0x8D, 0x00, 
+       0x00, 0x05, 0x93, 0xEF, 0xF0, 0x93, 0x05, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x8C, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x0A, 0xE9, 0x36, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x75, 0xB6, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0xEA, 0x3D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x75, 0xCB, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x09, 0xE9, 0x62, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x6A, 0xF5, 0x0C, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xD9, 0xAC, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x2E, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x64, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x28, 0xAC, 0xE4, 0xE8, 0xB8, 0x33, 0x00, 
+       0x10, 0xEB, 0xA9, 0x2E, 0x3B, 0xCC, 0xEB, 0x06, 
+       0x48, 0xFF, 0x2D, 0x00, 0x00, 0x5C, 0xFF, 0x17, 
+       0x21, 0xFD, 0x9F, 0x03, 0x01, 0xAB, 0xC2, 0x00, 
+       0x00, 0x6A, 0xFC, 0xCE, 0xB7, 0xB7, 0x14, 0x00, 
+       0x00, 0x3E, 0xEE, 0xD8, 0xFF, 0xAF, 0x0F, 0x00, 
+       0x06, 0xE6, 0x83, 0x04, 0x7E, 0xFE, 0xB4, 0x00, 
+       0x3D, 0xFF, 0x2E, 0x00, 0x00, 0x90, 0xFF, 0x0F, 
+       0x45, 0xFF, 0x35, 0x00, 0x00, 0x5C, 0xFE, 0x11, 
+       0x0B, 0xE8, 0xBD, 0x23, 0x2F, 0xD0, 0xB5, 0x00, 
+       0x00, 0x2D, 0xC0, 0xF8, 0xED, 0x9A, 0x0D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x0C, 0x9A, 0xE6, 0xD5, 0x61, 0x00, 0x00, 
+       0x00, 0xAD, 0xCE, 0x31, 0x54, 0xF4, 0x4A, 0x00, 
+       0x20, 0xFF, 0x4B, 0x00, 0x00, 0x89, 0xBD, 0x00, 
+       0x49, 0xFF, 0x27, 0x00, 0x00, 0x56, 0xF7, 0x02, 
+       0x3C, 0xFF, 0x45, 0x00, 0x00, 0x6B, 0xFF, 0x16, 
+       0x05, 0xE1, 0xBE, 0x0C, 0x16, 0xCF, 0xFF, 0x1C, 
+       0x00, 0x35, 0xE2, 0xFA, 0xD5, 0x7F, 0xFF, 0x0D, 
+       0x00, 0x00, 0x03, 0x18, 0x02, 0x7D, 0xE4, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x97, 0x00, 
+       0x00, 0x26, 0x39, 0x1B, 0x8E, 0xF2, 0x20, 0x00, 
+       0x00, 0x3B, 0xDC, 0xF8, 0xD2, 0x3D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0x24, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0x24, 0x24, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x20, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x1B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x60, 0xF1, 0x03, 0x00, 
+       0x00, 0x00, 0x00, 0x24, 0xD5, 0x71, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x13, 0x1F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD5, 0xCE, 
+       0x00, 0x00, 0x00, 0x43, 0xCA, 0xD9, 0x57, 0x01, 
+       0x00, 0x36, 0xBC, 0xE3, 0x65, 0x04, 0x00, 0x00, 
+       0x08, 0x94, 0xFA, 0x95, 0x14, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x21, 0xA3, 0xF0, 0x81, 0x0E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x2B, 0xB0, 0xEC, 0x76, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xBD, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xCE, 0xD5, 0x51, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x58, 0xDA, 0xC9, 0x43, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x04, 0x67, 0xE5, 0xBC, 0x35, 
+       0x00, 0x00, 0x00, 0x00, 0x15, 0x98, 0xFA, 0x94, 
+       0x00, 0x00, 0x0F, 0x83, 0xF0, 0xA2, 0x21, 0x00, 
+       0x00, 0x77, 0xED, 0xAF, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0xBD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x2B, 0xB1, 0xDB, 0xEB, 0xDD, 0xA0, 0x1F, 0x00, 
+       0x50, 0xFF, 0x5F, 0x25, 0x43, 0xD6, 0xDA, 0x02, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5D, 0xFF, 0x18, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE4, 0x02, 
+       0x00, 0x00, 0x00, 0x00, 0x4F, 0xF1, 0x49, 0x00, 
+       0x00, 0x00, 0x00, 0x63, 0xEC, 0x3F, 0x00, 0x00, 
+       0x00, 0x00, 0x14, 0xF7, 0x59, 0x00, 0x00, 0x00, 
+       0x08, 0x00, 0x45, 0xF8, 0x21, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x0A, 0x83, 0xD6, 0xE9, 0xB6, 0x23, 
+       0x00, 0x09, 0xC8, 0xCD, 0x3F, 0x32, 0xC5, 0xC9, 
+       0x00, 0x86, 0xED, 0x1B, 0x8F, 0xE5, 0xDE, 0xFF, 
+       0x04, 0xEE, 0x84, 0x8E, 0xDE, 0x38, 0x7D, 0xFF, 
+       0x30, 0xFF, 0x50, 0xF8, 0x5F, 0x00, 0x53, 0xFF, 
+       0x49, 0xFF, 0x65, 0xFF, 0x2A, 0x00, 0x95, 0xFF, 
+       0x46, 0xFF, 0x71, 0xFF, 0x23, 0x0D, 0xE4, 0xFF, 
+       0x21, 0xFF, 0x74, 0xFF, 0x4D, 0x8E, 0x9D, 0xFF, 
+       0x00, 0xD1, 0xB2, 0xA6, 0xFD, 0xA5, 0x50, 0xFF, 
+       0x00, 0x42, 0xFC, 0x85, 0x31, 0x25, 0x41, 0x20, 
+       0x00, 0x00, 0x4A, 0xD0, 0xFA, 0xD8, 0x5F, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0F, 0x00, 0x00, 0xA5, 0xFB, 0x18, 0x00, 0x00, 
+       0x1F, 0x00, 0x10, 0xF3, 0xEC, 0x77, 0x00, 0x00, 
+       0x20, 0x00, 0x6B, 0xBA, 0x92, 0xD8, 0x00, 0x00, 
+       0x20, 0x00, 0xCD, 0x60, 0x38, 0xFF, 0x3B, 0x00, 
+       0x20, 0x30, 0xF8, 0x0F, 0x00, 0xDC, 0x9D, 0x00, 
+       0x20, 0x93, 0xAE, 0x00, 0x00, 0x83, 0xF3, 0x0C, 
+       0xF1, 0xED, 0xF7, 0xF0, 0xF0, 0xF5, 0xFF, 0x62, 
+       0x77, 0xE4, 0x21, 0x20, 0x20, 0x20, 0xC0, 0xC4, 
+       0xBB, 0x78, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF4, 0xC6, 0x43, 
+       0x00, 0x50, 0xFF, 0x2E, 0x15, 0x30, 0xB6, 0xF3, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFE, 
+       0x00, 0x50, 0xFF, 0x20, 0x01, 0x30, 0xCB, 0x81, 
+       0x00, 0x50, 0xFF, 0xF2, 0xFA, 0xFF, 0x82, 0x00, 
+       0x00, 0x50, 0xFF, 0x3C, 0x30, 0x70, 0xEE, 0x96, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x64, 0xFF, 
+       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x24, 0xA5, 0xFA, 
+       0x27, 0x50, 0xFF, 0xFF, 0xFF, 0xF8, 0xD5, 0x64, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x33, 0xB2, 0xEE, 0xF8, 0xDB, 0x74, 
+       0x08, 0x43, 0xF8, 0x9C, 0x2A, 0x16, 0x41, 0x5D, 
+       0x14, 0xDE, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x32, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4A, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x36, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x17, 0xE6, 0xBA, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x0A, 0x4F, 0xFC, 0xB6, 0x3A, 0x16, 0x30, 0x4B, 
+       0x00, 0x00, 0x3B, 0xB7, 0xF1, 0xF8, 0xD8, 0x6E, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xFF, 0xFD, 0xEB, 0xB3, 0x3E, 0x00, 
+       0x50, 0xFF, 0x2E, 0x14, 0x32, 0x9B, 0xFD, 0x4C, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xB6, 0xD2, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x54, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFA, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xBA, 0xB5, 
+       0x50, 0xFF, 0x2E, 0x18, 0x3E, 0xA7, 0xEF, 0x2A, 
+       0x50, 0xFF, 0xFF, 0xFD, 0xE8, 0xAA, 0x29, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0B, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x0E, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x1A, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x06, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x4B, 
+       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x0A, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x04, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x08, 0x00, 0x25, 0xA2, 0xE5, 0xFA, 0xE9, 0xB9, 
+       0x00, 0x38, 0xF3, 0xA8, 0x30, 0x14, 0x2C, 0x66, 
+       0x01, 0xD9, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x30, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4A, 0xFF, 0x25, 0x00, 0x00, 0xE8, 0xF0, 0xF0, 
+       0x34, 0xFF, 0x47, 0x00, 0x00, 0x1F, 0x66, 0xFF, 
+       0x03, 0xDF, 0xC0, 0x04, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x40, 0xF6, 0xC0, 0x43, 0x15, 0x63, 0xFF, 
+       0x00, 0x00, 0x2C, 0xA8, 0xEA, 0xFB, 0xE8, 0xB9, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x62, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x61, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x6E, 0xFF, 0xF2, 0xF0, 0xF0, 0xF5, 0xFF, 0x20, 
+       0x70, 0xFF, 0x3C, 0x20, 0x20, 0x66, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x63, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 
+       0x00, 0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1C, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFD, 0x09, 
+       0x00, 0x26, 0x53, 0x1E, 0x22, 0xC5, 0xB3, 0x00, 
+       0x00, 0x37, 0xD5, 0xF9, 0xF2, 0xA8, 0x13, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x9E, 0xB9, 0x03, 
+       0x50, 0xFF, 0x20, 0x00, 0x74, 0xD7, 0x0F, 0x00, 
+       0x50, 0xFF, 0x20, 0x4B, 0xEA, 0x24, 0x00, 0x00, 
+       0x50, 0xFF, 0x4C, 0xED, 0x41, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xC6, 0xD7, 0x0A, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x31, 0xD5, 0xB3, 0x03, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x1E, 0xE5, 0x9A, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x2E, 0xF0, 0x7E, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x41, 0xF8, 0x62, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0D, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xE5, 0x02, 0x00, 0x0C, 0xF6, 0xFF, 
+       0x50, 0xFF, 0xD7, 0x40, 0x00, 0x5A, 0xD6, 0xFF, 
+       0x50, 0xFF, 0x8C, 0x98, 0x00, 0xB0, 0x8A, 0xFF, 
+       0x50, 0xFF, 0x41, 0xEB, 0x12, 0xE5, 0x52, 0xFF, 
+       0x50, 0xFF, 0x20, 0xD7, 0xA5, 0xA4, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x8C, 0xFF, 0x58, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x41, 0xFC, 0x11, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x70, 0xFF, 0x90, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0xFA, 0x25, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0xBD, 0xB1, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x44, 0xFC, 0x42, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0xA3, 0xCF, 0x52, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x28, 0xFD, 0xB3, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0xA9, 0xFF, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x2D, 0xFE, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0xAF, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00, 
+       0x00, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48, 
+       0x09, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x0A, 0xF3, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCB, 
+       0x00, 0x7D, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x4B, 
+       0x00, 0x01, 0x75, 0xE0, 0xFA, 0xD3, 0x53, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF7, 0xD0, 0x44, 
+       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x29, 0xB3, 0xF0, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x27, 0xC8, 0xCF, 
+       0x00, 0x50, 0xFF, 0xF2, 0xF6, 0xF8, 0xAB, 0x1B, 
+       0x00, 0x50, 0xFF, 0x3C, 0x1B, 0x04, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00, 
+       0x06, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48, 
+       0x20, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x09, 0xF2, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x00, 0x79, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x47, 
+       0x00, 0x00, 0x77, 0xE3, 0xFE, 0xFF, 0x64, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0xA4, 0xEF, 0x82, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xE4, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xF9, 0xD5, 0x4C, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x1D, 0xA5, 0xF5, 0x09, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xFF, 0x11, 
+       0x0A, 0x50, 0xFF, 0x20, 0x17, 0xC0, 0xB1, 0x00, 
+       0x1C, 0x50, 0xFF, 0xF3, 0xFF, 0xA5, 0x0A, 0x00, 
+       0x0B, 0x50, 0xFF, 0x3C, 0xA2, 0xBB, 0x01, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x12, 0xE9, 0x74, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xF9, 0x30, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0xB5, 0xD6, 
+       0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4F, 0xCF, 0xF9, 0xF1, 0xCE, 0x5F, 0x00, 
+       0x20, 0xFB, 0x83, 0x19, 0x1F, 0x4E, 0x4F, 0x00, 
+       0x4A, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x12, 0xE6, 0xE3, 0x6F, 0x14, 0x00, 0x00, 0x00, 
+       0x00, 0x15, 0x88, 0xE7, 0xFB, 0xAD, 0x22, 0x00, 
+       0x00, 0x00, 0x00, 0x03, 0x50, 0xDC, 0xDE, 0x02, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0x17, 
+       0x3D, 0x86, 0x3B, 0x15, 0x32, 0xC3, 0xD1, 0x00, 
+       0x33, 0xB2, 0xE5, 0xFC, 0xEB, 0xA3, 0x19, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x10, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x52, 0xFF, 0x1C, 
+       0x33, 0xFF, 0x3E, 0x00, 0x00, 0x71, 0xFC, 0x07, 
+       0x03, 0xDE, 0xB7, 0x1F, 0x2F, 0xDC, 0xAE, 0x00, 
+       0x00, 0x2C, 0xBF, 0xF7, 0xF0, 0xA3, 0x10, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xB8, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xF3, 
+       0x57, 0xFD, 0x1D, 0x00, 0x00, 0x00, 0x6A, 0xBF, 
+       0x07, 0xEE, 0x7F, 0x00, 0x00, 0x00, 0xCF, 0x5D, 
+       0x00, 0x95, 0xE0, 0x02, 0x00, 0x36, 0xF0, 0x09, 
+       0x00, 0x34, 0xFF, 0x48, 0x00, 0x9D, 0x97, 0x00, 
+       0x00, 0x00, 0xD3, 0xAD, 0x0E, 0xF4, 0x35, 0x00, 
+       0x00, 0x00, 0x72, 0xFA, 0x80, 0xD2, 0x00, 0x00, 
+       0x00, 0x00, 0x16, 0xFB, 0xFD, 0x6F, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB0, 0xF9, 0x13, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xF4, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 
+       0xAC, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 
+       0x87, 0xA4, 0x00, 0x84, 0xFB, 0x0C, 0x1B, 0xE9, 
+       0x61, 0xCB, 0x00, 0xC5, 0xFF, 0x48, 0x44, 0xC0, 
+       0x3C, 0xF2, 0x0C, 0xF9, 0xBF, 0x88, 0x6D, 0x97, 
+       0x17, 0xFF, 0x61, 0xD2, 0x6F, 0xC8, 0x96, 0x6E, 
+       0x00, 0xF1, 0xC8, 0x93, 0x30, 0xFB, 0xCC, 0x45, 
+       0x00, 0xCC, 0xFF, 0x55, 0x02, 0xEF, 0xFF, 0x1C, 
+       0x00, 0xA7, 0xFF, 0x17, 0x00, 0xB3, 0xF3, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x81, 0xFE, 0x52, 0x00, 0x00, 0x00, 0x89, 0xC2, 
+       0x12, 0x90, 0xEC, 0x1A, 0x00, 0x4B, 0xE9, 0x1B, 
+       0x00, 0x07, 0xD2, 0xBB, 0x20, 0xEB, 0x46, 0x00, 
+       0x00, 0x00, 0x2C, 0xF7, 0xEB, 0x82, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xAC, 0xFF, 0x33, 0x00, 0x00, 
+       0x00, 0x00, 0x4C, 0xE9, 0xC4, 0xD5, 0x08, 0x00, 
+       0x00, 0x1E, 0xEB, 0x46, 0x1C, 0xEE, 0x92, 0x00, 
+       0x04, 0xC6, 0x84, 0x00, 0x00, 0x55, 0xFE, 0x46, 
+       0x8C, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x9F, 0xE6, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x58, 0xFE, 0x39, 0x00, 0x00, 0x00, 0x15, 0xE9, 
+       0x00, 0xB4, 0xD3, 0x05, 0x00, 0x00, 0xAD, 0xA2, 
+       0x00, 0x1F, 0xF4, 0x79, 0x00, 0x5C, 0xE7, 0x12, 
+       0x00, 0x00, 0x73, 0xF6, 0x3D, 0xEE, 0x51, 0x00, 
+       0x00, 0x00, 0x03, 0xCF, 0xFB, 0xA8, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x57, 0xFF, 0x28, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x13, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x10, 0x10, 0x10, 0x21, 0xE4, 0xA1, 
+       0x00, 0x00, 0x00, 0x00, 0x02, 0xB7, 0xC4, 0x07, 
+       0x00, 0x00, 0x00, 0x00, 0x83, 0xE0, 0x16, 0x00, 
+       0x00, 0x00, 0x00, 0x4D, 0xF1, 0x2D, 0x00, 0x00, 
+       0x00, 0x00, 0x24, 0xED, 0x4B, 0x00, 0x00, 0x00, 
+       0x00, 0x0B, 0xD3, 0x73, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA7, 0xA9, 0x10, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 
+       0x00, 0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x02, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0x25, 
+       0x00, 0x00, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x05, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x42, 0xDD, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xC6, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4A, 0xD6, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xCD, 0x54, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x52, 0xCF, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0xD4, 0x4C, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x5A, 0xC7, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x03, 0xDA, 0x43, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x62, 0xBF, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0xE0, 0x3A, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB6, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x32, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xAE, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x52, 0xF0, 0xF0, 0xF5, 0xFF, 0x20, 0x00, 
+       0x00, 0x0B, 0x20, 0x20, 0x20, 0x20, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x38, 0xA7, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xA5, 0xFA, 0x19, 0x00, 
+       0x00, 0x00, 0x00, 0x18, 0xF2, 0xB4, 0x81, 0x00, 
+       0x00, 0x00, 0x00, 0x7F, 0xA1, 0x34, 0xE7, 0x05, 
+       0x00, 0x00, 0x05, 0xE6, 0x34, 0x00, 0xC7, 0x5A, 
+       0x00, 0x00, 0x58, 0xC7, 0x00, 0x00, 0x5B, 0xC7, 
+       0x00, 0x00, 0xC5, 0x5A, 0x00, 0x00, 0x06, 0xE8, 
+       0x00, 0x31, 0xE8, 0x06, 0x00, 0x00, 0x00, 0x82, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x18, 0xCD, 0xBE, 0x03, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0C, 0xB6, 0x86, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x1E, 0xB1, 0xE9, 0xFC, 0xE3, 0x60, 0x00, 
+       0x00, 0x25, 0x55, 0x1A, 0x1D, 0xAE, 0xF6, 0x07, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1E, 
+       0x00, 0x12, 0x89, 0xD2, 0xEB, 0xF5, 0xFF, 0x20, 
+       0x08, 0xD7, 0xCA, 0x51, 0x29, 0x66, 0xFF, 0x20, 
+       0x44, 0xFF, 0x2E, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x2C, 0xFF, 0x87, 0x18, 0x47, 0xCF, 0xFF, 0x4B, 
+       0x00, 0x6B, 0xE7, 0xF6, 0xB7, 0x30, 0xAD, 0xF4, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16, 0x00, 
+       0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9, 0x00, 
+       0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9, 0x05, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF, 0x1B, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF, 0x11, 
+       0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1, 0x00, 
+       0x56, 0xFF, 0xBA, 0x28, 0x3C, 0xEF, 0x76, 0x00, 
+       0x8F, 0xEB, 0x58, 0xE4, 0xF2, 0x8E, 0x02, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x07, 0x89, 0xE4, 0xFA, 0xE4, 0x7C, 0x00, 
+       0x00, 0xA2, 0xEF, 0x52, 0x16, 0x33, 0x4D, 0x00, 
+       0x1A, 0xFE, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x1B, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA5, 0xF0, 0x5A, 0x17, 0x2A, 0x47, 0x00, 
+       0x00, 0x08, 0x8C, 0xE5, 0xFA, 0xE1, 0x74, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x84, 0xFF, 0x20, 
+       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD6, 0xFF, 0x20, 
+       0x16, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20, 
+       0x43, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20, 
+       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20, 
+       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x04, 0x87, 0xE9, 0xF7, 0xBB, 0x1E, 0x00, 
+       0x00, 0x92, 0xC7, 0x28, 0x28, 0xC9, 0xB9, 0x00, 
+       0x13, 0xFB, 0x3B, 0x00, 0x00, 0x5D, 0xFC, 0x08, 
+       0x44, 0xFF, 0xF1, 0xF0, 0xF0, 0xF5, 0xFF, 0x1C, 
+       0x48, 0xFF, 0x42, 0x20, 0x20, 0x20, 0x20, 0x04, 
+       0x1E, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA9, 0xE8, 0x4F, 0x16, 0x22, 0x65, 0x13, 
+       0x00, 0x08, 0x89, 0xE1, 0xFB, 0xE8, 0xB0, 0x11, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x59, 0xD4, 0xFA, 0xF4, 0xCD, 
+       0x00, 0x00, 0x21, 0xFC, 0x85, 0x1B, 0x16, 0x34, 
+       0x00, 0x00, 0x4E, 0xFF, 0x22, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x0D, 0xA9, 0xF6, 0xCF, 0x7F, 0xFF, 0x20, 
+       0x00, 0xA4, 0xD8, 0x29, 0x38, 0xD9, 0xFF, 0x20, 
+       0x15, 0xFC, 0x5B, 0x00, 0x00, 0x53, 0xFF, 0x20, 
+       0x43, 0xFF, 0x2A, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x2E, 0xFF, 0x46, 0x00, 0x00, 0x72, 0xFF, 0x20, 
+       0x01, 0xD8, 0xBF, 0x1D, 0x56, 0xE3, 0xFF, 0x1E, 
+       0x00, 0x2E, 0xD1, 0xF7, 0xB7, 0x66, 0xFF, 0x14, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xEF, 0x01, 
+       0x00, 0x4A, 0x3A, 0x14, 0x36, 0xDB, 0x8D, 0x00, 
+       0x00, 0x75, 0xDF, 0xFA, 0xE9, 0x92, 0x07, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A, 
+       0x00, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1, 
+       0x00, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 
+       0x04, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00, 
+       0x1C, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x5D, 0xFE, 0x0A, 0x00, 
+       0x2A, 0x54, 0x1F, 0x1A, 0xB6, 0xBF, 0x00, 0x00, 
+       0x35, 0xD1, 0xF5, 0xF5, 0xB8, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x32, 0xF4, 0x4D, 
+       0x00, 0x50, 0xFF, 0x20, 0x17, 0xE2, 0x7B, 0x00, 
+       0x00, 0x50, 0xFF, 0x26, 0xC5, 0xA9, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xB7, 0xEE, 0x0B, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x6F, 0xFD, 0x82, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x77, 0xFF, 0x5A, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0xA0, 0xF7, 0x38, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x06, 0xC4, 0xE8, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 
+       0x02, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x1F, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x45, 0xE8, 0x7A, 0x2E, 0xEB, 0xAA, 
+       0x50, 0xFF, 0x9E, 0x7C, 0xEF, 0x83, 0x79, 0xFF, 
+       0x50, 0xFF, 0x5F, 0x53, 0xFF, 0x5D, 0x51, 0xFF, 
+       0x50, 0xFF, 0x22, 0x50, 0xFF, 0x22, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A, 
+       0x10, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1, 
+       0x1F, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x05, 0x85, 0xE3, 0xFA, 0xD9, 0x6A, 0x00, 
+       0x04, 0x9C, 0xE8, 0x45, 0x16, 0x61, 0xFA, 0x6F, 
+       0x35, 0xFD, 0x62, 0x00, 0x00, 0x00, 0x94, 0xE6, 
+       0x66, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF, 
+       0x67, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF, 
+       0x3A, 0xFE, 0x61, 0x00, 0x00, 0x00, 0x93, 0xE6, 
+       0x20, 0xA2, 0xE6, 0x44, 0x16, 0x5E, 0xF9, 0x71, 
+       0x20, 0x07, 0x8A, 0xE5, 0xFA, 0xDA, 0x6D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16, 
+       0x00, 0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9, 
+       0x00, 0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF, 
+       0x00, 0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1, 
+       0x00, 0x50, 0xFF, 0xBA, 0x27, 0x3C, 0xEF, 0x76, 
+       0x00, 0x50, 0xFF, 0x74, 0xE5, 0xF1, 0x8E, 0x02, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x5A, 0xFF, 0x20, 
+       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD5, 0xFF, 0x20, 
+       0x1B, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20, 
+       0x5E, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x5C, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20, 
+       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20, 
+       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x44, 0xBE, 0xF8, 0xFF, 0x20, 
+       0x00, 0x50, 0xFF, 0xD3, 0x42, 0x5F, 0xFF, 0x20, 
+       0x00, 0x50, 0xFF, 0x4B, 0x00, 0x11, 0x38, 0x07, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x66, 0xDA, 0xFB, 0xF0, 0xC9, 0x1D, 
+       0x00, 0x2D, 0xFF, 0x82, 0x1C, 0x1C, 0x45, 0x13, 
+       0x00, 0x3F, 0xFF, 0x70, 0x03, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0xA1, 0xFE, 0xEB, 0x9D, 0x47, 0x01, 
+       0x00, 0x00, 0x00, 0x22, 0x71, 0xC1, 0xFF, 0xAD, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xFF, 
+       0x00, 0x36, 0x70, 0x2C, 0x14, 0x33, 0xBD, 0xE0, 
+       0x00, 0x2B, 0xB8, 0xE8, 0xFD, 0xEF, 0xAE, 0x25, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x15, 0x00, 0x48, 0xFF, 0x24, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x1D, 0xFE, 0x95, 0x26, 0x18, 0x31, 
+       0x00, 0x00, 0x00, 0x6F, 0xDE, 0xFB, 0xF8, 0xE0, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4C, 0xFF, 0x27, 0x00, 0x00, 0x8E, 0xFF, 0x20, 
+       0x26, 0xFF, 0x93, 0x37, 0x99, 0xE6, 0xFF, 0x20, 
+       0x00, 0x82, 0xF2, 0xEF, 0x97, 0x5A, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x63, 0xF4, 0x0C, 0x00, 0x00, 0x00, 0x63, 0xD1, 
+       0x0C, 0xF3, 0x63, 0x00, 0x00, 0x00, 0xC9, 0x6C, 
+       0x00, 0x9E, 0xC5, 0x00, 0x00, 0x2E, 0xF6, 0x10, 
+       0x00, 0x3B, 0xFF, 0x27, 0x00, 0x95, 0xA2, 0x00, 
+       0x00, 0x00, 0xD8, 0x89, 0x0A, 0xF0, 0x3D, 0x00, 
+       0x00, 0x00, 0x76, 0xE6, 0x63, 0xD7, 0x00, 0x00, 
+       0x00, 0x00, 0x18, 0xFB, 0xEF, 0x73, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB1, 0xF9, 0x14, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xD6, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 
+       0xAB, 0x93, 0x00, 0x7E, 0xFE, 0x0F, 0x00, 0xEB, 
+       0x7F, 0xBD, 0x00, 0xC1, 0xC1, 0x43, 0x14, 0xE1, 
+       0x54, 0xE7, 0x0A, 0xD5, 0x71, 0x79, 0x3C, 0xB1, 
+       0x28, 0xFF, 0x58, 0x9E, 0x3A, 0xAE, 0x64, 0x82, 
+       0x04, 0xF8, 0xC5, 0x61, 0x08, 0xDD, 0x8C, 0x52, 
+       0x00, 0xD1, 0xFF, 0x23, 0x00, 0xCB, 0xCC, 0x23, 
+       0x00, 0xA6, 0xE6, 0x00, 0x00, 0x94, 0xF2, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x56, 0xE9, 0xB0, 0x00, 0x00, 0x1B, 0xF1, 0x7A, 
+       0x11, 0x4E, 0xFF, 0x61, 0x00, 0xB0, 0xA6, 0x00, 
+       0x00, 0x00, 0x9D, 0xF2, 0x73, 0xEC, 0x15, 0x00, 
+       0x00, 0x00, 0x0D, 0xDF, 0xFF, 0x5E, 0x00, 0x00, 
+       0x00, 0x00, 0x13, 0xE8, 0xFF, 0x75, 0x00, 0x00, 
+       0x00, 0x00, 0xA9, 0xB2, 0x88, 0xF8, 0x2E, 0x00, 
+       0x00, 0x58, 0xEC, 0x17, 0x06, 0xD0, 0xD1, 0x06, 
+       0x18, 0xED, 0x56, 0x00, 0x00, 0x2C, 0xF8, 0x8B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x53, 0xE0, 
+       0x00, 0xC9, 0x99, 0x00, 0x00, 0x00, 0xBA, 0x79, 
+       0x00, 0x62, 0xF3, 0x0D, 0x00, 0x23, 0xF8, 0x16, 
+       0x00, 0x0A, 0xF0, 0x67, 0x00, 0x88, 0xA7, 0x00, 
+       0x00, 0x00, 0x93, 0xCE, 0x05, 0xE9, 0x3E, 0x00, 
+       0x00, 0x00, 0x2B, 0xFF, 0x8C, 0xD5, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xC4, 0xFF, 0x6C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x63, 0xF4, 0x0E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x9B, 0x99, 0x00, 0x00, 0x00, 
+       0x00, 0x12, 0x4D, 0xF7, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xE4, 0x62, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x10, 0x10, 0x10, 0x17, 0xD3, 0xA9, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x97, 0xD7, 0x0C, 0x00, 
+       0x00, 0x00, 0x00, 0x5C, 0xF4, 0x2A, 0x00, 0x00, 
+       0x00, 0x00, 0x2B, 0xF4, 0x59, 0x00, 0x00, 0x00, 
+       0x00, 0x0D, 0xD8, 0x93, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA9, 0xD1, 0x16, 0x10, 0x10, 0x10, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x7A, 0xDF, 0xFC, 0x84, 
+       0x00, 0x00, 0x00, 0x37, 0xFF, 0x6B, 0x15, 0x08, 
+       0x00, 0x00, 0x00, 0x4F, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x02, 0x53, 0xFF, 0x1D, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x90, 0xE8, 0x04, 0x00, 0x00, 
+       0x00, 0x70, 0xF7, 0xF4, 0x3B, 0x00, 0x00, 0x00, 
+       0x00, 0x0F, 0x29, 0xAF, 0xCF, 0x01, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x53, 0xFF, 0x1A, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x3F, 0xFF, 0x4D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x96, 0xF8, 0xF4, 0x7B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1D, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xB4, 0xF9, 0xD1, 0x50, 0x00, 0x00, 0x00, 
+       0x00, 0x0B, 0x19, 0x96, 0xF8, 0x0C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x4D, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x21, 0xFB, 0x62, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x61, 0xFE, 0xF4, 0x47, 
+       0x00, 0x00, 0x00, 0x14, 0xEE, 0x8A, 0x25, 0x09, 
+       0x00, 0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x7E, 0xFE, 0x11, 0x00, 0x00, 
+       0x00, 0xA8, 0xF7, 0xF2, 0x76, 0x00, 0x00, 0x00, 
+       0x00, 0x16, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x5D, 0xE2, 0x8F, 0x00, 0x00, 0x00, 0x00, 
+       0x10, 0xF6, 0x72, 0xA8, 0xE2, 0x4C, 0x5C, 0xDF, 
+       0x44, 0xFF, 0x26, 0x09, 0xA8, 0xFC, 0xFC, 0x8D, 
+       0x09, 0x20, 0x04, 0x00, 0x00, 0x0E, 0x12, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
diff --git a/src/gui/button.cpp b/src/gui/button.cpp
new file mode 100755 (executable)
index 0000000..b5af684
--- /dev/null
@@ -0,0 +1,211 @@
+//
+// BUTTON.CPP
+//
+// Graphical User Interface button class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/02/2006  Created this file
+//
+
+#include "button.h"
+#include "guimisc.h"                                                           // Various support functions
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//
+// Button class implementation
+//
+
+/*
+Some notes about this class:
+
+- Button colors are hardwired (for plain text buttons)
+*/
+
+Button::Button(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       Element * parent/*= NULL*/):
+       Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(false),
+       activatedSave(false), clickedSave(false), insideSave(false)
+{
+       // Should we make a local button bitmap here?
+}
+
+Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, SDL_Surface * upImg, Element * parent/*= NULL*/):
+       Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       buttonUp(upImg), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(false),
+       activatedSave(false), clickedSave(false), insideSave(false)
+{
+//     if (upImg == NULL)
+//             return;
+//
+//     uint32 width = ((Bitmap *)upImg)->width, height = ((Bitmap *)upImg)->height;
+//
+//     buttonUp = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height,
+//             32, MASK_R, MASK_G, MASK_B, MASK_A);
+//     memcpy(buttonUp->pixels, ((Bitmap *)upImg)->pixelData, width * height * 4);
+
+       // Should we make a local button bitmap here? NO--it's passed in!
+}
+
+Button::Button(uint32 x, uint32 y, SDL_Surface * bU, SDL_Surface * bH/*= NULL*/,
+       SDL_Surface * bD/*= NULL*/, Element * parent/*= NULL*/):
+       Element(x, y, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       buttonUp(bU), buttonDown(bD), buttonHover(bH), surfacesAreLocal(false),
+       activatedSave(false), clickedSave(false), insideSave(false)
+{
+       if (buttonUp)
+               extents.w = buttonUp->w,
+               extents.h = buttonUp->h;
+}
+
+Button::Button(uint32 x, uint32 y, uint32 w, uint32 h, std::string s, Element * parent/*= NULL*/):
+       Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(true),
+       activatedSave(false), clickedSave(false), insideSave(false)
+{
+       // Create the button surfaces here...
+}
+
+Button::Button(uint32 x, uint32 y, std::string s, Element * parent/*= NULL*/):
+       Element(x, y, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       buttonUp(NULL), buttonDown(NULL), buttonHover(NULL), surfacesAreLocal(true),
+       activatedSave(false), clickedSave(false), insideSave(false)
+{
+       extents.w = (s.length() + 2) * GetFontWidth();
+       extents.h = GetFontHeight();
+
+       // Create the button surfaces here...
+
+       buttonUp = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+       buttonDown = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+       buttonHover = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+
+       // Need to create backgrounds before we do this stuff...
+       SDL_FillRect(buttonUp, NULL, bgColor);
+       SDL_FillRect(buttonDown, NULL, fgColor);
+       SDL_FillRect(buttonHover, NULL, bgColor);
+
+       DrawStringTrans(buttonUp, GetFontWidth(), 0, fgColor, s.c_str());
+       DrawStringTrans(buttonDown, GetFontWidth(), 0, fgColor, s.c_str());
+       DrawStringTrans(buttonHover, GetFontWidth(), 0, fgColor, s.c_str());
+}
+
+Button::~Button()
+{
+       if (surfacesAreLocal)
+       {
+               if (buttonUp)
+                       SDL_FreeSurface(buttonUp);
+
+               if (buttonDown)
+                       SDL_FreeSurface(buttonDown);
+
+               if (buttonHover)
+                       SDL_FreeSurface(buttonHover);
+       }
+}
+
+void Button::HandleKey(SDLKey key)
+{
+}
+
+void Button::HandleMouseMove(uint32 x, uint32 y)
+{
+       SaveStateVariables();
+       inside = Inside(x, y);
+       CheckStateAndRedrawIfNeeded();
+}
+
+void Button::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       SaveStateVariables();
+
+       if (inside)
+       {
+               if (mouseDown)
+                       clicked = true;
+
+               if (clicked && !mouseDown)
+               {
+                       clicked = false, activated = true;
+
+                       // Send a message to our parent widget (if any) that we're activated
+                       if (parent)
+                               parent->Notify(this);
+               }
+       }
+       else
+               clicked = activated = false;
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void Button::Draw(void)
+{
+       if (buttonUp == NULL)
+               return;                                                                 // Bail out if no surface was created...
+
+       // Now, draw the appropriate button state!
+
+       SDL_Surface * picToShow = buttonUp;
+
+       if (buttonHover != NULL && inside && !clicked)
+               picToShow = buttonHover;
+
+       if (buttonDown != NULL && inside && clicked)
+               picToShow = buttonDown;
+
+       SDL_Rect rect = GetScreenCoords();
+
+//Need to do coverage list blitting here, to avoid unnecessary drawing when doing mouseovers
+//Also, need to add suport in Gui()...
+       SDL_BlitSurface(picToShow, NULL, screen, &rect);        // This handles alpha blending too! :-D
+
+       needToRefreshScreen = true;
+}
+
+void Button::Notify(Element *)
+{
+}
+
+bool Button::ButtonClicked(void)
+{
+       return activated;
+}
+
+void Button::SaveStateVariables(void)
+{
+       activatedSave = activated;
+       clickedSave = clicked;
+       insideSave = inside;
+}
+
+void Button::CheckStateAndRedrawIfNeeded(void)
+{
+       // Check to see if any of our state variables changed since we last saved them...
+       if (activated != activatedSave || clicked != clickedSave || inside != insideSave)
+               Draw();
+}
diff --git a/src/gui/button.h b/src/gui/button.h
new file mode 100755 (executable)
index 0000000..8009486
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// BUTTON.H
+//
+// Graphical User Interface button class
+//
+
+#ifndef __BUTTON_H__
+#define __BUTTON_H__
+
+#include <string>
+//#include <list>
+#include "element.h"
+
+//Apparently this approach doesn't work for inheritance... D'oh!
+//class Element;                                                                       // Forward declaration
+
+class Button: public Element
+{
+       public:
+               Button(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0, Element * parent = NULL);
+               Button(uint32 x, uint32 y, uint32 w, uint32 h, SDL_Surface * upImg, Element * parent = NULL);
+               Button(uint32 x, uint32 y, SDL_Surface * bU, SDL_Surface * bH = NULL, SDL_Surface * bD = NULL, Element * parent = NULL);
+               Button(uint32 x, uint32 y, uint32 w, uint32 h, std::string s, Element * parent = NULL);
+               Button(uint32 x, uint32 y, std::string s, Element * parent = NULL);
+               ~Button();
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(void);
+               virtual void Notify(Element *);
+               bool ButtonClicked(void);
+               void SaveStateVariables(void);
+               void CheckStateAndRedrawIfNeeded(void);
+
+       protected:
+               bool activated, clicked, inside;
+               SDL_Surface * buttonUp, * buttonDown, * buttonHover;
+
+       private:
+               bool surfacesAreLocal;
+               bool activatedSave, clickedSave, insideSave;
+};
+
+#endif // __BUTTON_H__
diff --git a/src/gui/draggablewindow.cpp b/src/gui/draggablewindow.cpp
new file mode 100755 (executable)
index 0000000..45635bf
--- /dev/null
@@ -0,0 +1,198 @@
+//
+// DRAGGABLEWINDOW.CPP
+//
+// Graphical User Interface draggable window class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  03/01/2006  Created this file
+//
+// STILL TO DO:
+//
+// - Check for parent's extents and clip movement against those extents
+//
+
+#include "draggablewindow.h"
+#include "button.h"
+#include "guimisc.h"                                                           // Various support functions
+#include <algorithm>
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+#define BACKGROUND_IMG_TEST
+//#define USE_COVERAGE_LISTS
+
+//
+// DraggableWindow class implementation
+//
+// NOTE: FG/BG colors are hard-wired
+//
+
+DraggableWindow::DraggableWindow(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       void (* f)(Element *)/*= NULL*/):
+       Element(x, y, w, h, 0x4D, 0xFF, 0x84, 0xFF, 0x1F, 0x84, 0x84, 0xFF), handler(f),
+       clicked(false),
+       cbWidth((closeBox[0] << 8) | closeBox[1]), cbHeight((closeBox[2] << 8) | closeBox[3]),
+       cbUp(SDL_CreateRGBSurfaceFrom(&closeBox[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A)),
+       cbDown(SDL_CreateRGBSurfaceFrom(&closeBoxDown[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A)),
+       cbHover(SDL_CreateRGBSurfaceFrom(&closeBoxHover[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A))
+{
+//Could probably move this into the initializer list as well...
+       closeButton = new Button(w - (cbWidth + 1), 1, cbUp, cbHover, cbDown, this);
+       list.push_back(closeButton);
+
+#ifdef BACKGROUND_IMG_TEST
+uint16 imgWidth = (floppyDiskImg[0] << 8) | floppyDiskImg[1];
+uint16 imgHeight = (floppyDiskImg[2] << 8) | floppyDiskImg[3];
+img = SDL_CreateRGBSurfaceFrom(&floppyDiskImg[4], imgWidth, imgHeight, 32, imgWidth * 4,
+       MASK_R, MASK_G, MASK_B, MASK_A);
+#endif
+
+       CreateBackstore();
+       Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+DraggableWindow::~DraggableWindow()
+{
+       for(uint32 i=0; i<list.size(); i++)
+               if (list[i])
+                       delete list[i];
+
+#ifdef BACKGROUND_IMG_TEST
+SDL_FreeSurface(img);
+#endif
+
+       SDL_FreeSurface(cbUp);
+       SDL_FreeSurface(cbDown);
+       SDL_FreeSurface(cbHover);
+}
+
+void DraggableWindow::HandleKey(SDLKey key)
+{
+       if (key == SDLK_ESCAPE)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+               SDL_PushEvent(&event);
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->HandleKey(key);
+}
+
+void DraggableWindow::HandleMouseMove(uint32 x, uint32 y)
+{
+       if (clicked)
+       {
+//Need to check whether or not we've run into the extents of the screen... !!! FIX !!!
+               RestoreScreenFromBackstore();
+               extents.x = x - offset.x;
+               extents.y = y - offset.y;
+               SDL_BlitSurface(screen, &extents, backstore, NULL);
+               Draw();
+
+               return;
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseMove(x - extents.x, y - extents.y);
+}
+
+void DraggableWindow::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       clicked = false;
+
+       if (mouseDown && Inside(x, y))
+       {
+               clicked = true;
+               offset.x = x - extents.x;
+               offset.y = y - extents.y;
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+       {
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+
+               if (list[i]->Inside(x - extents.x, y - extents.y))
+                       clicked = false;
+       }
+}
+
+void DraggableWindow::Draw(void)
+{
+#ifdef USE_COVERAGE_LISTS
+       // These are *always* top level and parentless, so no need to traverse up through
+       // the parent chain...
+       for(std::list<SDL_Rect>::iterator i=coverList.begin(); i!=coverList.end(); i++)
+               SDL_FillRect(screen, &(*i), bgColor);
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->Draw();
+#else
+       // These are *always* top level and parentless, so no need to traverse up through
+       // the parent chain...
+//Perhaps we can make these parentable, put the parent traversal in the base class?
+//Prolly.
+#ifdef BACKGROUND_IMG_TEST
+       SDL_Rect src, dst;
+       src.x = 0, src.y = 0, src.w = extents.w, src.h = extents.h;
+       dst.x = extents.x, dst.y = extents.y;
+       SDL_BlitSurface(img, &src, screen, &dst);
+
+       extern char textChar2e[];
+       uint8 * fontAddr = (uint8 *)textChar2e + ((128 + 32) * 7 * 8);
+       SetNewFont(Font(fontAddr, 7, 8));
+       DrawStringOpaque(screen, extents.x + 8, extents.y +  6, 0xFF000000, 0xFFFFFFFF, "Ultima III - Boo");
+       DrawStringOpaque(screen, extents.x + 8, extents.y + 14, 0xFF000000, 0xFFFFFFFF, "0123456789012345");
+       DrawStringOpaque(screen, extents.x + 8, extents.y + 22, 0xFF000000, 0xFFFFFFFF, "1234567890123456");
+       DrawStringOpaque(screen, extents.x + 8, extents.y + 30, 0xFF000000, 0xFFFFFFFF, "2345678901234567");
+       RestoreOldFont();
+#else
+       SDL_FillRect(screen, &extents, bgColor);
+#endif
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->Draw();
+#endif
+
+//Prolly don't need this since the close button will do this for us...
+       needToRefreshScreen = true;
+}
+
+void DraggableWindow::Notify(Element * e)
+{
+       if (e == closeButton)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+               SDL_PushEvent(&event);
+       }
+}
+
+void DraggableWindow::AddElement(Element * e)
+{
+       list.push_back(e);
+}
diff --git a/src/gui/draggablewindow.h b/src/gui/draggablewindow.h
new file mode 100755 (executable)
index 0000000..41e8966
--- /dev/null
@@ -0,0 +1,41 @@
+//
+// DRAGGABLEWINDOW.H
+//
+// Graphical User Interface window class
+//
+
+#ifndef __DRAGGABLEWINDOW_H__
+#define __DRAGGABLEWINDOW_H__
+
+#include "element.h"
+#include <vector>
+
+class Button;                                                                  // Forward declaration
+
+class DraggableWindow: public Element
+{
+       public:
+               DraggableWindow(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+                       void (* f)(Element *) = NULL);
+               ~DraggableWindow(); //Does this destructor need to be virtual? Not sure... Check!
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(void);
+               virtual void Notify(Element *);
+               void AddElement(Element * e);
+
+       protected:
+               void (* handler)(Element *);
+               Button * closeButton;
+               std::vector<Element *> list;
+               bool clicked;
+               SDL_Rect offset;
+
+       private:
+               uint16 cbWidth, cbHeight;
+               SDL_Surface * cbUp, * cbDown, * cbHover;
+               SDL_Surface * img;
+};
+
+#endif // __DRAGGABLEWINDOW_H__
diff --git a/src/gui/element.cpp b/src/gui/element.cpp
new file mode 100755 (executable)
index 0000000..bbaff3c
--- /dev/null
@@ -0,0 +1,307 @@
+//
+// ELEMENT.CPP
+//
+// Graphical User Interface base class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/02/2006  Created this file
+// JLH  02/13/2006  Added backbuffer and rendering functions
+// JLH  03/02/2006  Moved backbuffer destruction to destructor, added parent
+//                  corner discovery
+//
+
+#include "element.h"
+#include "guimisc.h"                                                           // Various support functions
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//#define DEBUG_ELEMENT
+
+#ifdef DEBUG_ELEMENT
+#include "log.h"
+#endif
+
+// Initialize class variables
+
+SDL_Surface * Element::screen = NULL;
+bool Element::needToRefreshScreen = false;
+
+Element::Element(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       Element * parentElement/*= NULL*/):     parent(parentElement), backstore(NULL)
+{
+       extents.x = x,
+       extents.y = y,
+       extents.w = w,
+       extents.h = h;
+       coverList.push_back(extents);
+}
+
+Element::Element(uint32 x, uint32 y, uint32 w, uint32 h,
+       uint8 fgR/*= 0xFF*/, uint8 fgG/*= 0xFF*/, uint8 fgB/*= 0xFF*/, uint8 fgA/*= 0xFF*/,
+       uint8 bgR/*= 0x00*/, uint8 bgG/*= 0x00*/, uint8 bgB/*= 0x00*/, uint8 bgA/*= 0xFF*/,
+       Element * parentElement/*= NULL*/): parent(parentElement), backstore(NULL)
+{
+       extents.x = x,
+       extents.y = y,
+       extents.w = w,
+       extents.h = h;
+       coverList.push_back(extents);
+
+       // This *should* allow us to store our colors in an endian safe way... :-/
+       uint8 * c = (uint8 *)&fgColor;
+       c[0] = fgR, c[1] = fgG, c[2] = fgB, c[3] = fgA;
+       c = (uint8 *)&bgColor;
+       c[0] = bgR, c[1] = bgG, c[2] = bgB, c[3] = bgA;
+}
+
+Element::~Element()
+{
+       if (backstore)
+       {
+               RestoreScreenFromBackstore();
+               SDL_FreeSurface(backstore);
+               needToRefreshScreen = true;
+       }
+}
+
+bool Element::Inside(uint32 x, uint32 y)
+{
+       return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
+               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false);
+}
+
+//Badly named--!!! FIX !!! [DONE]
+//SDL_Rect Element::GetParentCorner(void)
+SDL_Rect Element::GetScreenCoords(void)
+{
+       SDL_Rect rect;
+       rect.x = extents.x, rect.y = extents.y;
+
+       // First, traverse the parent tree to get the absolute screen address...
+
+       Element * currentParent = parent;
+
+       while (currentParent)
+       {
+               rect.x += currentParent->extents.x;
+               rect.y += currentParent->extents.y;
+               currentParent = currentParent->parent;
+       }
+
+       return rect;
+}
+
+#if 1
+//May use this in the future...
+SDL_Rect Element::GetParentRect(void)
+{
+       // If there is no parent, then return the entire screen as the parent's
+       // rectangle.
+
+       SDL_Rect rect;
+       rect.x = 0, rect.y = 0, rect.w = screen->w, rect.h = screen->h;
+
+       if (parent)
+       {
+               rect.x = parent->extents.x;
+               rect.y = parent->extents.y;
+               rect.w = parent->extents.w;
+               rect.h = parent->extents.h;
+       }
+
+       return rect;
+}
+#endif
+
+SDL_Rect Element::GetExtents(void)
+{
+       return extents;
+}
+
+void Element::CreateBackstore(void)
+{
+       backstore = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+               MASK_R, MASK_G, MASK_B, 0x00);
+       SDL_BlitSurface(screen, &extents, backstore, NULL);
+}
+
+void Element::RestoreScreenFromBackstore(void)
+{
+       SDL_Rect r;
+
+       r.x = extents.x;
+       r.y = extents.y;
+       SDL_BlitSurface(backstore, NULL, screen, &r);
+}
+
+void Element::SaveScreenToBackstore(void)
+{
+       SDL_BlitSurface(screen, &extents, backstore, NULL);
+}
+
+void Element::ResetCoverageList(void)
+{
+       // Setup our coverage list with the entire window area
+       coverList.empty();
+       coverList.push_back(extents);
+}
+
+void Element::AdjustCoverageList(SDL_Rect r)
+{
+//Prolly should have a bool here to set whether or not to do this crap, since it
+//takes a little time...
+
+       // Here's where we do the coverage list voodoo... :-)
+
+/*
+Steps:
+  o Check for intersection. If no intersection, then no need to divide rects.
+  o Loop through current rects. If rect is completely inside passed in rect, remove from list.
+  o Loop through remaining rects. If rect intersects, decompose to four rects and
+    exclude degenerate rects, push rest into the coverage list.
+
+*/
+//     std::list<Element *>::reverse_iterator ri;
+//     std::list<SDL_Rect>::iterator i;
+
+       // Loop through rects and remove those completely covered by passed in rect.
+/*     for(i=coverList.begin(); i!=coverList.end(); i++)
+       {
+//             if (RectanglesIntersect(r, *i))
+               if (RectangleFirstInsideSecond(*i, r))
+               {
+//This is not right--do a while loop instead of a for loop?
+                       // Remove it from the list...
+                       std::list<SDL_Rect>::iterator next = coverList.erase(i);
+               }
+       }
+*/
+       // Loop through rects and remove those completely covered by passed in rect.
+       std::list<SDL_Rect>::iterator i = coverList.begin();
+
+       while (i != coverList.end())
+       {
+               if (RectangleFirstInsideSecond(*i, r))
+                       i = coverList.erase(i);                         // This will also advance i to the next item!
+               else
+                       i++;
+       }
+
+//This may not be needed if nothing follows the loop below...!
+//     if (coverList.empty())
+//             return;
+
+       // Check for intersection. If no intersection, then no need to divide rects.
+       i = coverList.begin();
+
+       while (i != coverList.end())
+       {
+               if (RectanglesIntersect(r, *i))
+               {
+                       // Do the decomposition here. There will always be at least *one* rectangle
+                       // generated by this algorithm, so we know we're OK in removing the original
+                       // from the list. The general pattern looks like this:
+                       //
+                       // +------+
+                       // |1     |
+                       // +-+--+-+
+                       // |2|//|3|  <- Rectangle "r" is in the center
+                       // +-+--+-+
+                       // |4     |
+                       // +------+
+                       //
+                       // Even if r extends beyond the bounds of the rectangle under consideration,
+                       // that's OK because we test to see that the rectangle isn't degenerate
+                       // before adding it to the list.
+
+//Should probably use a separate list here and splice it in when we're done here...
+//Or, could use push_front() to avoid the problem... Neat! Doesn't require a separate list!
+//But, we need to remove the currently referenced rect... Another while loop!
+
+//This approach won't work--if no rect1 then we're screwed! [FIXED]
+//Now *that* will work...
+                       SDL_Rect current = *i;
+                       uint32 bottomOfRect1 = current.y;
+//                     uint32 rightOfRect2 = current.x;
+//                     uint32 leftOfRect3 = current.x + current.w;
+                       uint32 topOfRect4 = current.y + current.h;
+
+                       // Rectangle #1 (top)
+                       if (r.y > current.y)                            // Simple rectangle degeneracy test...
+                       {
+                               bottomOfRect1 = r.y;
+                               SDL_Rect rect = current;
+                               rect.h = r.y - current.y;
+                               coverList.push_front(rect);
+                       }
+
+                       // Rectangle #4 (bottom)
+                       if (r.y + r.h < current.y + current.h)
+                       {
+                               topOfRect4 = r.y + r.h;
+                               SDL_Rect rect = current;
+                               rect.y = r.y + r.h;
+                               rect.h = (current.y + current.h) - (r.y + r.h);
+                               coverList.push_front(rect);
+                       }
+
+                       // Rectangle #2 (left side)
+                       if (r.x > current.x)
+                       {
+                               SDL_Rect rect = current;
+                               rect.w = r.x - current.x;
+                               rect.y = bottomOfRect1;
+                               rect.h = topOfRect4 - bottomOfRect1;
+                               coverList.push_front(rect);
+                       }
+
+                       // Rectangle #3 (right side)
+                       if (r.x + r.w < current.x + current.w)
+                       {
+                               SDL_Rect rect;
+                               rect.x = r.x + r.w;
+                               rect.w = (current.x + current.w) - (r.x + r.w);
+                               rect.y = bottomOfRect1;
+                               rect.h = topOfRect4 - bottomOfRect1;
+                               coverList.push_front(rect);
+                       }
+
+                       i = coverList.erase(i);                         // This will also advance i to the next item!
+               }
+               else
+                       i++;
+       }
+}
+
+//
+// Class methods
+//
+
+void Element::SetScreen(SDL_Surface * s)
+{
+       screen = s;
+}
+
+bool Element::ScreenNeedsRefreshing(void)
+{
+       return needToRefreshScreen;
+}
+
+void Element::ScreenWasRefreshed(void)
+{
+       needToRefreshScreen = false;
+}
diff --git a/src/gui/element.h b/src/gui/element.h
new file mode 100755 (executable)
index 0000000..a090a96
--- /dev/null
@@ -0,0 +1,68 @@
+//
+// ELEMENT.H
+//
+// Graphical User Interface base class
+// All GUI elements are derived from this base class.
+//
+
+#ifndef __ELEMENT_H__
+#define __ELEMENT_H__
+
+// These are various GUI messages that can be sent to the SDL event handler
+
+enum { WINDOW_CLOSE, MENU_ITEM_CHOSEN, SCREEN_REFRESH_NEEDED };
+
+#include <SDL.h>
+#include <list>
+#include "types.h"
+
+class Element
+{
+       public:
+               Element(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+                       Element * parentElement = NULL);
+               Element(uint32 x, uint32 y, uint32 w, uint32 h,
+                       uint8 fgR = 0xFF, uint8 fgG = 0xFF, uint8 fgB = 0xFF, uint8 fgA = 0xFF,
+                       uint8 bgR = 0x00, uint8 bgG = 0x00, uint8 bgB = 0x00, uint8 bgA = 0xFF,
+                       Element * parentElement = NULL);
+               virtual ~Element();                                                     // Destructor cannot be pure virtual...
+               virtual void HandleKey(SDLKey key) = 0;         // These are "pure" virtual functions...
+               virtual void HandleMouseMove(uint32 x, uint32 y) = 0;
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) = 0;
+               virtual void Draw(void) = 0;
+               virtual void Notify(Element *) = 0;
+               bool Inside(uint32 x, uint32 y);
+//Badly named, though we may code something that does this...
+//             SDL_Rect GetParentCorner(void);
+               SDL_Rect GetScreenCoords(void);
+               SDL_Rect GetExtents(void);
+#if 1
+//May use this in the future...
+               SDL_Rect GetParentRect(void);
+#endif
+               void CreateBackstore(void);
+               void RestoreScreenFromBackstore(void);
+               void SaveScreenToBackstore(void);
+               void ResetCoverageList(void);
+//Need something to prevent this on Elements that don't have mouseover effects...
+               void AdjustCoverageList(SDL_Rect r);
+               // Class methods...
+               static void SetScreen(SDL_Surface *);
+               static bool ScreenNeedsRefreshing(void);
+               static void ScreenWasRefreshed(void);
+
+       protected:
+               SDL_Rect extents;
+               uint32 state;
+               Element * parent;
+               uint32 fgColor;
+               uint32 bgColor;
+               SDL_Surface * backstore;
+               std::list<SDL_Rect> coverList;
+
+               // Class variables...
+               static SDL_Surface * screen;
+               static bool needToRefreshScreen;
+};
+
+#endif // __ELEMENT_H__
diff --git a/src/gui/font1.h b/src/gui/font1.h
new file mode 100755 (executable)
index 0000000..3f4f75d
--- /dev/null
@@ -0,0 +1,262 @@
+//
+// This file was automagically generated by bin2c (by James L. Hammons)
+//
+
+char font1[0x4000] = {
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
+};
diff --git a/src/gui/font14pt.h b/src/gui/font14pt.h
new file mode 100755 (executable)
index 0000000..4a5b56e
--- /dev/null
@@ -0,0 +1,1640 @@
+#define FONT_WIDTH             8
+#define FONT_HEIGHT            16
+
+//
+// This file was automagically generated by rawfont2c (by James L. Hammons)
+//
+
+char font2[] = {
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x45, 0xFF, 0x55, 0x00, 0xE5, 0xB5, 0x00, 
+       0x00, 0x2F, 0xFF, 0x3F, 0x00, 0xCF, 0x9F, 0x00, 
+       0x00, 0x19, 0xFF, 0x29, 0x00, 0xB9, 0x89, 0x00, 
+       0x00, 0x04, 0xFE, 0x13, 0x00, 0xA3, 0x73, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x0F, 0x1E, 0x00, 0x1F, 0x0E, 
+       0x00, 0x00, 0x00, 0x7D, 0x8F, 0x00, 0xDC, 0x2F, 
+       0x00, 0x00, 0x00, 0xB9, 0x52, 0x17, 0xEF, 0x02, 
+       0x00, 0x00, 0x03, 0xF2, 0x16, 0x52, 0xB6, 0x00, 
+       0x00, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x71, 0xA9, 0x10, 0xCB, 0x4C, 0x0F, 
+       0x00, 0x00, 0x90, 0x7A, 0x00, 0xF0, 0x18, 0x00, 
+       0x00, 0x00, 0xB9, 0x4F, 0x1C, 0xEE, 0x00, 0x00, 
+       0x80, 0xF0, 0xFC, 0xF3, 0xF3, 0xFD, 0xF0, 0x6F, 
+       0x14, 0x4B, 0xDB, 0x20, 0x9F, 0x88, 0x20, 0x0B, 
+       0x00, 0x72, 0x97, 0x00, 0xD0, 0x39, 0x00, 0x00, 
+       0x00, 0xB6, 0x55, 0x14, 0xF2, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x45, 0xE9, 0xFF, 0xF2, 0xB8, 0x12, 
+       0x00, 0x13, 0xF3, 0xAE, 0xFF, 0x3C, 0x6F, 0x31, 
+       0x00, 0x48, 0xFF, 0x75, 0xFF, 0x20, 0x00, 0x4B, 
+       0x10, 0x27, 0xFF, 0x9A, 0xFF, 0x20, 0x00, 0x2A, 
+       0x00, 0x00, 0x9F, 0xF5, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x04, 0xAA, 0xFF, 0xA5, 0x07, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xEF, 0x99, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x92, 0xFB, 0x0B, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x75, 0xFF, 0x14, 
+       0x00, 0x3B, 0x6E, 0x66, 0xFF, 0xB1, 0xC0, 0x00, 
+       0x00, 0x26, 0xBA, 0xF8, 0xFF, 0xC9, 0x18, 0x13, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x60, 0xDF, 0xD5, 0x3F, 0x00, 0x00, 0xA5, 0xCB, 
+       0xFC, 0x75, 0xA0, 0xE6, 0x02, 0x48, 0xFB, 0x30, 
+       0xFF, 0x25, 0x56, 0xFF, 0x26, 0xDF, 0x88, 0x00, 
+       0xFF, 0x50, 0x82, 0xF3, 0x94, 0xDC, 0x09, 0x00, 
+       0x8C, 0xFB, 0xF8, 0x96, 0xFB, 0x43, 0x00, 0x00, 
+       0x00, 0x11, 0x10, 0xCE, 0x9F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x75, 0xE9, 0x36, 0xCA, 0xDE, 0x6E, 
+       0x00, 0x21, 0xF5, 0x59, 0xB0, 0xC6, 0x90, 0xFF, 
+       0x00, 0xB9, 0xB6, 0x00, 0xDB, 0x94, 0x54, 0xFF, 
+       0x5C, 0xF4, 0x1F, 0x00, 0xB7, 0xBF, 0x85, 0xF1, 
+       0xEB, 0x71, 0x00, 0x00, 0x2D, 0xDC, 0xEF, 0x5B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x6D, 0xE0, 0xDD, 0x5C, 0x00, 0x00, 
+       0x00, 0x2A, 0xFF, 0x6D, 0x91, 0xFA, 0x0D, 0x00, 
+       0x00, 0x47, 0xFF, 0x2D, 0x62, 0xFB, 0x0E, 0x00, 
+       0x00, 0x11, 0xF8, 0x90, 0xDC, 0x7E, 0x00, 0x00, 
+       0x00, 0x3D, 0xE0, 0xFD, 0x5B, 0x00, 0x00, 0x00, 
+       0x85, 0xF2, 0x75, 0xFB, 0x55, 0x00, 0x51, 0xFF, 
+       0xFE, 0x59, 0x00, 0x9A, 0xE4, 0x0F, 0x5D, 0xF5, 
+       0xFF, 0x26, 0x00, 0x17, 0xEF, 0xA7, 0x87, 0xB1, 
+       0xFF, 0x61, 0x00, 0x00, 0x61, 0xFF, 0xEE, 0x32, 
+       0xC7, 0xEC, 0x48, 0x17, 0x5D, 0xF9, 0xE8, 0x1A, 
+       0x12, 0xA2, 0xF1, 0xF7, 0xC4, 0x5D, 0xE9, 0xC8, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xBB, 0xFF, 0x2B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x9A, 0xFF, 0x0B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x79, 0xE9, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xC8, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x34, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0x8A, 0xF0, 0x7E, 
+       0x00, 0x00, 0x00, 0x00, 0xA6, 0xCF, 0x1E, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xF4, 0x1C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xCF, 0x95, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x19, 0xFF, 0x4E, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x41, 0xFF, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x3B, 0xFF, 0x30, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x0E, 0xFD, 0x5B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB7, 0xAC, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x37, 0xFB, 0x3A, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x71, 0xED, 0x53, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xD1, 0xA5, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x1B, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x34, 0xDA, 0xD8, 0x42, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x5E, 0xF3, 0x53, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x5E, 0xF2, 0x1E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xD3, 0x92, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x85, 0xE2, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0x0E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1A, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x64, 0xFE, 0x09, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x94, 0xD5, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x09, 0xE7, 0x79, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x8E, 0xDE, 0x0C, 0x00, 0x00, 
+       0x00, 0x1A, 0x9E, 0xEA, 0x2C, 0x00, 0x00, 0x00, 
+       0x47, 0xF1, 0x9D, 0x19, 0x00, 0x00, 0x00, 0x00, 
+       0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB6, 0xB5, 0x00, 0x00, 0x00, 
+       0x01, 0x87, 0x23, 0x94, 0x93, 0x25, 0x87, 0x00, 
+       0x17, 0xBE, 0xF1, 0x1F, 0x20, 0xF1, 0xBE, 0x16, 
+       0x00, 0x00, 0x2F, 0x5D, 0x5D, 0x2E, 0x00, 0x00, 
+       0x00, 0x19, 0xE1, 0x76, 0x77, 0xE1, 0x19, 0x00, 
+       0x00, 0x1C, 0xA3, 0x05, 0x06, 0xA3, 0x1C, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xC0, 0x09, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x27, 0xAF, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xB2, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x36, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x3E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x61, 0xC2, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x02, 0xD9, 0x46, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x58, 0xC9, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0xD2, 0x4E, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xD1, 0x01, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xCB, 0x56, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x47, 0xD7, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xC2, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x3E, 0xDE, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x75, 0xDF, 0xD4, 0x53, 0x00, 0x00, 
+       0x00, 0x60, 0xEB, 0x3F, 0x58, 0xF8, 0x34, 0x00, 
+       0x00, 0xDA, 0x7D, 0x00, 0x00, 0xAE, 0xAA, 0x00, 
+       0x1F, 0xFF, 0x42, 0x00, 0x00, 0x73, 0xEE, 0x00, 
+       0x42, 0xFF, 0x28, 0x00, 0x00, 0x5A, 0xFF, 0x11, 
+       0x4D, 0xFF, 0x21, 0x00, 0x00, 0x52, 0xFF, 0x1C, 
+       0x43, 0xFF, 0x28, 0x00, 0x00, 0x59, 0xFF, 0x13, 
+       0x22, 0xFF, 0x40, 0x00, 0x00, 0x71, 0xF1, 0x00, 
+       0x00, 0xDF, 0x78, 0x00, 0x00, 0xA9, 0xAF, 0x00, 
+       0x00, 0x6A, 0xE5, 0x2E, 0x47, 0xF8, 0x3B, 0x00, 
+       0x00, 0x01, 0x86, 0xF0, 0xE6, 0x61, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x16, 0x65, 0xB8, 0x1C, 0x00, 0x00, 
+       0x00, 0xC1, 0xE8, 0xCF, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x29, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x2F, 0xB2, 0xE4, 0xE4, 0x9F, 0x12, 0x00, 
+       0x00, 0x51, 0x75, 0x2E, 0x3E, 0xE0, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0x11, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xC3, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x57, 0xF3, 0x2D, 0x00, 
+       0x00, 0x00, 0x00, 0x40, 0xEF, 0x44, 0x00, 0x00, 
+       0x00, 0x00, 0x2A, 0xED, 0x4F, 0x00, 0x00, 0x00, 
+       0x00, 0x0F, 0xDE, 0x91, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xAC, 0xFE, 0x28, 0x10, 0x10, 0x10, 0x02, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x24, 0xB9, 0xE2, 0xE9, 0xBD, 0x3B, 0x00, 
+       0x00, 0x23, 0x61, 0x30, 0x31, 0xBE, 0xF1, 0x09, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFE, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x19, 0xC4, 0x92, 0x00, 
+       0x00, 0x00, 0x4B, 0xF3, 0xFF, 0xA7, 0x01, 0x00, 
+       0x00, 0x00, 0x0A, 0x24, 0x5C, 0xF1, 0x7B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF2, 0x03, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x19, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFA, 0x08, 
+       0x00, 0x23, 0x57, 0x1A, 0x3B, 0xE8, 0x9E, 0x00, 
+       0x00, 0x2D, 0xDB, 0xF9, 0xEB, 0x94, 0x09, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x3B, 0xFE, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x04, 0xD2, 0xB2, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x73, 0xC4, 0x51, 0xFF, 0x20, 0x00, 
+       0x00, 0x1B, 0xEF, 0x2E, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0xAB, 0x8F, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x46, 0xE5, 0x0D, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x88, 0xFA, 0xF0, 0xF0, 0xF5, 0xFF, 0xF2, 0xA5, 
+       0x11, 0x20, 0x20, 0x20, 0x66, 0xFF, 0x3C, 0x16, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4B, 0xF0, 0xF0, 0xF0, 0xF0, 0xB0, 0x00, 
+       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x17, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xEB, 0xC3, 0x5A, 0x00, 0x00, 
+       0x00, 0x0A, 0x21, 0x35, 0x84, 0xFC, 0x75, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF0, 0x04, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xFF, 0x19, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xF7, 0x07, 
+       0x00, 0x27, 0x46, 0x16, 0x49, 0xF0, 0x8D, 0x00, 
+       0x00, 0x38, 0xDB, 0xF9, 0xE4, 0x80, 0x03, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x32, 0xBA, 0xE8, 0xD3, 0x6D, 0x00, 
+       0x00, 0x2A, 0xF2, 0x7E, 0x27, 0x47, 0x5E, 0x00, 
+       0x00, 0xB4, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0F, 0xFC, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x3A, 0xFF, 0x53, 0xC0, 0xE7, 0x9D, 0x0A, 0x00, 
+       0x4C, 0xFF, 0xBB, 0x33, 0x4A, 0xF0, 0xA0, 0x00, 
+       0x48, 0xFF, 0x45, 0x00, 0x00, 0x7F, 0xFB, 0x09, 
+       0x2D, 0xFF, 0x25, 0x00, 0x00, 0x55, 0xFF, 0x1A, 
+       0x04, 0xF0, 0x4D, 0x00, 0x00, 0x74, 0xF3, 0x04, 
+       0x00, 0x87, 0xD4, 0x2D, 0x2D, 0xE1, 0x8D, 0x00, 
+       0x00, 0x05, 0x93, 0xEF, 0xF0, 0x93, 0x05, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x8C, 0xBA, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x0A, 0xE9, 0x36, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x75, 0xB6, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0xEA, 0x3D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x75, 0xCB, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x09, 0xE9, 0x62, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x6A, 0xF5, 0x0C, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xD9, 0xAC, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x2E, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x64, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x28, 0xAC, 0xE4, 0xE8, 0xB8, 0x33, 0x00, 
+       0x10, 0xEB, 0xA9, 0x2E, 0x3B, 0xCC, 0xEB, 0x06, 
+       0x48, 0xFF, 0x2D, 0x00, 0x00, 0x5C, 0xFF, 0x17, 
+       0x21, 0xFD, 0x9F, 0x03, 0x01, 0xAB, 0xC2, 0x00, 
+       0x00, 0x6A, 0xFC, 0xCE, 0xB7, 0xB7, 0x14, 0x00, 
+       0x00, 0x3E, 0xEE, 0xD8, 0xFF, 0xAF, 0x0F, 0x00, 
+       0x06, 0xE6, 0x83, 0x04, 0x7E, 0xFE, 0xB4, 0x00, 
+       0x3D, 0xFF, 0x2E, 0x00, 0x00, 0x90, 0xFF, 0x0F, 
+       0x45, 0xFF, 0x35, 0x00, 0x00, 0x5C, 0xFE, 0x11, 
+       0x0B, 0xE8, 0xBD, 0x23, 0x2F, 0xD0, 0xB5, 0x00, 
+       0x00, 0x2D, 0xC0, 0xF8, 0xED, 0x9A, 0x0D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x0C, 0x9A, 0xE6, 0xD5, 0x61, 0x00, 0x00, 
+       0x00, 0xAD, 0xCE, 0x31, 0x54, 0xF4, 0x4A, 0x00, 
+       0x20, 0xFF, 0x4B, 0x00, 0x00, 0x89, 0xBD, 0x00, 
+       0x49, 0xFF, 0x27, 0x00, 0x00, 0x56, 0xF7, 0x02, 
+       0x3C, 0xFF, 0x45, 0x00, 0x00, 0x6B, 0xFF, 0x16, 
+       0x05, 0xE1, 0xBE, 0x0C, 0x16, 0xCF, 0xFF, 0x1C, 
+       0x00, 0x35, 0xE2, 0xFA, 0xD5, 0x7F, 0xFF, 0x0D, 
+       0x00, 0x00, 0x03, 0x18, 0x02, 0x7D, 0xE4, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x97, 0x00, 
+       0x00, 0x26, 0x39, 0x1B, 0x8E, 0xF2, 0x20, 0x00, 
+       0x00, 0x3B, 0xDC, 0xF8, 0xD2, 0x3D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0x24, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x04, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x0B, 0x24, 0x24, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0A, 0x20, 0x20, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x1B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x60, 0xF1, 0x03, 0x00, 
+       0x00, 0x00, 0x00, 0x24, 0xD5, 0x71, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x13, 0x1F, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD5, 0xCE, 
+       0x00, 0x00, 0x00, 0x43, 0xCA, 0xD9, 0x57, 0x01, 
+       0x00, 0x36, 0xBC, 0xE3, 0x65, 0x04, 0x00, 0x00, 
+       0x08, 0x94, 0xFA, 0x95, 0x14, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x21, 0xA3, 0xF0, 0x81, 0x0E, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x2B, 0xB0, 0xEC, 0x76, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xBD, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xCE, 0xD5, 0x51, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0x58, 0xDA, 0xC9, 0x43, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x04, 0x67, 0xE5, 0xBC, 0x35, 
+       0x00, 0x00, 0x00, 0x00, 0x15, 0x98, 0xFA, 0x94, 
+       0x00, 0x00, 0x0F, 0x83, 0xF0, 0xA2, 0x21, 0x00, 
+       0x00, 0x77, 0xED, 0xAF, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0xBD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x2B, 0xB1, 0xDB, 0xEB, 0xDD, 0xA0, 0x1F, 0x00, 
+       0x50, 0xFF, 0x5F, 0x25, 0x43, 0xD6, 0xDA, 0x02, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5D, 0xFF, 0x18, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xE4, 0x02, 
+       0x00, 0x00, 0x00, 0x00, 0x4F, 0xF1, 0x49, 0x00, 
+       0x00, 0x00, 0x00, 0x63, 0xEC, 0x3F, 0x00, 0x00, 
+       0x00, 0x00, 0x14, 0xF7, 0x59, 0x00, 0x00, 0x00, 
+       0x08, 0x00, 0x45, 0xF8, 0x21, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x05, 0x10, 0x02, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x0A, 0x83, 0xD6, 0xE9, 0xB6, 0x23, 
+       0x00, 0x09, 0xC8, 0xCD, 0x3F, 0x32, 0xC5, 0xC9, 
+       0x00, 0x86, 0xED, 0x1B, 0x8F, 0xE5, 0xDE, 0xFF, 
+       0x04, 0xEE, 0x84, 0x8E, 0xDE, 0x38, 0x7D, 0xFF, 
+       0x30, 0xFF, 0x50, 0xF8, 0x5F, 0x00, 0x53, 0xFF, 
+       0x49, 0xFF, 0x65, 0xFF, 0x2A, 0x00, 0x95, 0xFF, 
+       0x46, 0xFF, 0x71, 0xFF, 0x23, 0x0D, 0xE4, 0xFF, 
+       0x21, 0xFF, 0x74, 0xFF, 0x4D, 0x8E, 0x9D, 0xFF, 
+       0x00, 0xD1, 0xB2, 0xA6, 0xFD, 0xA5, 0x50, 0xFF, 
+       0x00, 0x42, 0xFC, 0x85, 0x31, 0x25, 0x41, 0x20, 
+       0x00, 0x00, 0x4A, 0xD0, 0xFA, 0xD8, 0x5F, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0F, 0x00, 0x00, 0xA5, 0xFB, 0x18, 0x00, 0x00, 
+       0x1F, 0x00, 0x10, 0xF3, 0xEC, 0x77, 0x00, 0x00, 
+       0x20, 0x00, 0x6B, 0xBA, 0x92, 0xD8, 0x00, 0x00, 
+       0x20, 0x00, 0xCD, 0x60, 0x38, 0xFF, 0x3B, 0x00, 
+       0x20, 0x30, 0xF8, 0x0F, 0x00, 0xDC, 0x9D, 0x00, 
+       0x20, 0x93, 0xAE, 0x00, 0x00, 0x83, 0xF3, 0x0C, 
+       0xF1, 0xED, 0xF7, 0xF0, 0xF0, 0xF5, 0xFF, 0x62, 
+       0x77, 0xE4, 0x21, 0x20, 0x20, 0x20, 0xC0, 0xC4, 
+       0xBB, 0x78, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF4, 0xC6, 0x43, 
+       0x00, 0x50, 0xFF, 0x2E, 0x15, 0x30, 0xB6, 0xF3, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFE, 
+       0x00, 0x50, 0xFF, 0x20, 0x01, 0x30, 0xCB, 0x81, 
+       0x00, 0x50, 0xFF, 0xF2, 0xFA, 0xFF, 0x82, 0x00, 
+       0x00, 0x50, 0xFF, 0x3C, 0x30, 0x70, 0xEE, 0x96, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x64, 0xFF, 
+       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x24, 0xA5, 0xFA, 
+       0x27, 0x50, 0xFF, 0xFF, 0xFF, 0xF8, 0xD5, 0x64, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x33, 0xB2, 0xEE, 0xF8, 0xDB, 0x74, 
+       0x08, 0x43, 0xF8, 0x9C, 0x2A, 0x16, 0x41, 0x5D, 
+       0x14, 0xDE, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x32, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4A, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x36, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x17, 0xE6, 0xBA, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x0A, 0x4F, 0xFC, 0xB6, 0x3A, 0x16, 0x30, 0x4B, 
+       0x00, 0x00, 0x3B, 0xB7, 0xF1, 0xF8, 0xD8, 0x6E, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xFF, 0xFD, 0xEB, 0xB3, 0x3E, 0x00, 
+       0x50, 0xFF, 0x2E, 0x14, 0x32, 0x9B, 0xFD, 0x4C, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xB6, 0xD2, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x54, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x67, 0xFA, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0xBA, 0xB5, 
+       0x50, 0xFF, 0x2E, 0x18, 0x3E, 0xA7, 0xEF, 0x2A, 
+       0x50, 0xFF, 0xFF, 0xFD, 0xE8, 0xAA, 0x29, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0B, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x0E, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x1A, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x00, 
+       0x06, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0x4B, 
+       0x00, 0x50, 0xFF, 0x3C, 0x20, 0x20, 0x20, 0x0A, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x04, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x08, 0x00, 0x25, 0xA2, 0xE5, 0xFA, 0xE9, 0xB9, 
+       0x00, 0x38, 0xF3, 0xA8, 0x30, 0x14, 0x2C, 0x66, 
+       0x01, 0xD9, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x30, 0xFF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4A, 0xFF, 0x25, 0x00, 0x00, 0xE8, 0xF0, 0xF0, 
+       0x34, 0xFF, 0x47, 0x00, 0x00, 0x1F, 0x66, 0xFF, 
+       0x03, 0xDF, 0xC0, 0x04, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x40, 0xF6, 0xC0, 0x43, 0x15, 0x63, 0xFF, 
+       0x00, 0x00, 0x2C, 0xA8, 0xEA, 0xFB, 0xE8, 0xB9, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x62, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x61, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x6E, 0xFF, 0xF2, 0xF0, 0xF0, 0xF5, 0xFF, 0x20, 
+       0x70, 0xFF, 0x3C, 0x20, 0x20, 0x66, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x63, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 
+       0x00, 0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1C, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFD, 0x09, 
+       0x00, 0x26, 0x53, 0x1E, 0x22, 0xC5, 0xB3, 0x00, 
+       0x00, 0x37, 0xD5, 0xF9, 0xF2, 0xA8, 0x13, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x9E, 0xB9, 0x03, 
+       0x50, 0xFF, 0x20, 0x00, 0x74, 0xD7, 0x0F, 0x00, 
+       0x50, 0xFF, 0x20, 0x4B, 0xEA, 0x24, 0x00, 0x00, 
+       0x50, 0xFF, 0x4C, 0xED, 0x41, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xC6, 0xD7, 0x0A, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x31, 0xD5, 0xB3, 0x03, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x1E, 0xE5, 0x9A, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x2E, 0xF0, 0x7E, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x41, 0xF8, 0x62, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x10, 0x0D, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0xE5, 0x02, 0x00, 0x0C, 0xF6, 0xFF, 
+       0x50, 0xFF, 0xD7, 0x40, 0x00, 0x5A, 0xD6, 0xFF, 
+       0x50, 0xFF, 0x8C, 0x98, 0x00, 0xB0, 0x8A, 0xFF, 
+       0x50, 0xFF, 0x41, 0xEB, 0x12, 0xE5, 0x52, 0xFF, 
+       0x50, 0xFF, 0x20, 0xD7, 0xA5, 0xA4, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x8C, 0xFF, 0x58, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x41, 0xFC, 0x11, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x70, 0xFF, 0x90, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0xFA, 0x25, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0xBD, 0xB1, 0x00, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x44, 0xFC, 0x42, 0x50, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0xA3, 0xCF, 0x52, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x28, 0xFD, 0xB3, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0xA9, 0xFF, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x2D, 0xFE, 0xFF, 0x20, 
+       0x70, 0xFF, 0x20, 0x00, 0x00, 0xAF, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00, 
+       0x00, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48, 
+       0x09, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x0A, 0xF3, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCB, 
+       0x00, 0x7D, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x4B, 
+       0x00, 0x01, 0x75, 0xE0, 0xFA, 0xD3, 0x53, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xF7, 0xD0, 0x44, 
+       0x00, 0x50, 0xFF, 0x2E, 0x11, 0x29, 0xB3, 0xF0, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x59, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x27, 0xC8, 0xCF, 
+       0x00, 0x50, 0xFF, 0xF2, 0xF6, 0xF8, 0xAB, 0x1B, 
+       0x00, 0x50, 0xFF, 0x3C, 0x1B, 0x04, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x73, 0xDF, 0xF9, 0xD2, 0x50, 0x00, 
+       0x06, 0x79, 0xEF, 0x4A, 0x17, 0x68, 0xFB, 0x48, 
+       0x20, 0xF2, 0x73, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x53, 0xFF, 
+       0x3A, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x64, 0xFE, 
+       0x09, 0xF2, 0x74, 0x00, 0x00, 0x00, 0xA7, 0xCA, 
+       0x00, 0x79, 0xEE, 0x4A, 0x16, 0x68, 0xFB, 0x47, 
+       0x00, 0x00, 0x77, 0xE3, 0xFE, 0xFF, 0x64, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0xA4, 0xEF, 0x82, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xE4, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xFF, 0xF9, 0xD5, 0x4C, 0x00, 
+       0x00, 0x50, 0xFF, 0x2E, 0x1D, 0xA5, 0xF5, 0x09, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xFF, 0x11, 
+       0x0A, 0x50, 0xFF, 0x20, 0x17, 0xC0, 0xB1, 0x00, 
+       0x1C, 0x50, 0xFF, 0xF3, 0xFF, 0xA5, 0x0A, 0x00, 
+       0x0B, 0x50, 0xFF, 0x3C, 0xA2, 0xBB, 0x01, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x12, 0xE9, 0x74, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x59, 0xF9, 0x30, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0xB5, 0xD6, 
+       0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4F, 0xCF, 0xF9, 0xF1, 0xCE, 0x5F, 0x00, 
+       0x20, 0xFB, 0x83, 0x19, 0x1F, 0x4E, 0x4F, 0x00, 
+       0x4A, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x12, 0xE6, 0xE3, 0x6F, 0x14, 0x00, 0x00, 0x00, 
+       0x00, 0x15, 0x88, 0xE7, 0xFB, 0xAD, 0x22, 0x00, 
+       0x00, 0x00, 0x00, 0x03, 0x50, 0xDC, 0xDE, 0x02, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0x17, 
+       0x3D, 0x86, 0x3B, 0x15, 0x32, 0xC3, 0xD1, 0x00, 
+       0x33, 0xB2, 0xE5, 0xFC, 0xEB, 0xA3, 0x19, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x10, 0x10, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4C, 0xFF, 0x22, 0x00, 0x00, 0x52, 0xFF, 0x1C, 
+       0x33, 0xFF, 0x3E, 0x00, 0x00, 0x71, 0xFC, 0x07, 
+       0x03, 0xDE, 0xB7, 0x1F, 0x2F, 0xDC, 0xAE, 0x00, 
+       0x00, 0x2C, 0xBF, 0xF7, 0xF0, 0xA3, 0x10, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xB8, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xF3, 
+       0x57, 0xFD, 0x1D, 0x00, 0x00, 0x00, 0x6A, 0xBF, 
+       0x07, 0xEE, 0x7F, 0x00, 0x00, 0x00, 0xCF, 0x5D, 
+       0x00, 0x95, 0xE0, 0x02, 0x00, 0x36, 0xF0, 0x09, 
+       0x00, 0x34, 0xFF, 0x48, 0x00, 0x9D, 0x97, 0x00, 
+       0x00, 0x00, 0xD3, 0xAD, 0x0E, 0xF4, 0x35, 0x00, 
+       0x00, 0x00, 0x72, 0xFA, 0x80, 0xD2, 0x00, 0x00, 
+       0x00, 0x00, 0x16, 0xFB, 0xFD, 0x6F, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB0, 0xF9, 0x13, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xF4, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 
+       0xAC, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 
+       0x87, 0xA4, 0x00, 0x84, 0xFB, 0x0C, 0x1B, 0xE9, 
+       0x61, 0xCB, 0x00, 0xC5, 0xFF, 0x48, 0x44, 0xC0, 
+       0x3C, 0xF2, 0x0C, 0xF9, 0xBF, 0x88, 0x6D, 0x97, 
+       0x17, 0xFF, 0x61, 0xD2, 0x6F, 0xC8, 0x96, 0x6E, 
+       0x00, 0xF1, 0xC8, 0x93, 0x30, 0xFB, 0xCC, 0x45, 
+       0x00, 0xCC, 0xFF, 0x55, 0x02, 0xEF, 0xFF, 0x1C, 
+       0x00, 0xA7, 0xFF, 0x17, 0x00, 0xB3, 0xF3, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x81, 0xFE, 0x52, 0x00, 0x00, 0x00, 0x89, 0xC2, 
+       0x12, 0x90, 0xEC, 0x1A, 0x00, 0x4B, 0xE9, 0x1B, 
+       0x00, 0x07, 0xD2, 0xBB, 0x20, 0xEB, 0x46, 0x00, 
+       0x00, 0x00, 0x2C, 0xF7, 0xEB, 0x82, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xAC, 0xFF, 0x33, 0x00, 0x00, 
+       0x00, 0x00, 0x4C, 0xE9, 0xC4, 0xD5, 0x08, 0x00, 
+       0x00, 0x1E, 0xEB, 0x46, 0x1C, 0xEE, 0x92, 0x00, 
+       0x04, 0xC6, 0x84, 0x00, 0x00, 0x55, 0xFE, 0x46, 
+       0x8C, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x9F, 0xE6, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x58, 0xFE, 0x39, 0x00, 0x00, 0x00, 0x15, 0xE9, 
+       0x00, 0xB4, 0xD3, 0x05, 0x00, 0x00, 0xAD, 0xA2, 
+       0x00, 0x1F, 0xF4, 0x79, 0x00, 0x5C, 0xE7, 0x12, 
+       0x00, 0x00, 0x73, 0xF6, 0x3D, 0xEE, 0x51, 0x00, 
+       0x00, 0x00, 0x03, 0xCF, 0xFB, 0xA8, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x57, 0xFF, 0x28, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x13, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x10, 0x10, 0x10, 0x21, 0xE4, 0xA1, 
+       0x00, 0x00, 0x00, 0x00, 0x02, 0xB7, 0xC4, 0x07, 
+       0x00, 0x00, 0x00, 0x00, 0x83, 0xE0, 0x16, 0x00, 
+       0x00, 0x00, 0x00, 0x4D, 0xF1, 0x2D, 0x00, 0x00, 
+       0x00, 0x00, 0x24, 0xED, 0x4B, 0x00, 0x00, 0x00, 
+       0x00, 0x0B, 0xD3, 0x73, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA7, 0xA9, 0x10, 0x10, 0x10, 0x10, 0x10, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 
+       0x00, 0x00, 0x50, 0xFF, 0x2E, 0x10, 0x10, 0x02, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0xF2, 0xF0, 0xF0, 0x25, 
+       0x00, 0x00, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x05, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x42, 0xDD, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xC6, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x4A, 0xD6, 0x02, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0xCD, 0x54, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x52, 0xCF, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0xD4, 0x4C, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x5A, 0xC7, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x03, 0xDA, 0x43, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x62, 0xBF, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x05, 0xE0, 0x3A, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB6, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE5, 0x32, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xAE, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x52, 0xF0, 0xF0, 0xF5, 0xFF, 0x20, 0x00, 
+       0x00, 0x0B, 0x20, 0x20, 0x20, 0x20, 0x04, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x38, 0xA7, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0xA5, 0xFA, 0x19, 0x00, 
+       0x00, 0x00, 0x00, 0x18, 0xF2, 0xB4, 0x81, 0x00, 
+       0x00, 0x00, 0x00, 0x7F, 0xA1, 0x34, 0xE7, 0x05, 
+       0x00, 0x00, 0x05, 0xE6, 0x34, 0x00, 0xC7, 0x5A, 
+       0x00, 0x00, 0x58, 0xC7, 0x00, 0x00, 0x5B, 0xC7, 
+       0x00, 0x00, 0xC5, 0x5A, 0x00, 0x00, 0x06, 0xE8, 
+       0x00, 0x31, 0xE8, 0x06, 0x00, 0x00, 0x00, 0x82, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x18, 0xCD, 0xBE, 0x03, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x0C, 0xB6, 0x86, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x1E, 0xB1, 0xE9, 0xFC, 0xE3, 0x60, 0x00, 
+       0x00, 0x25, 0x55, 0x1A, 0x1D, 0xAE, 0xF6, 0x07, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFF, 0x1E, 
+       0x00, 0x12, 0x89, 0xD2, 0xEB, 0xF5, 0xFF, 0x20, 
+       0x08, 0xD7, 0xCA, 0x51, 0x29, 0x66, 0xFF, 0x20, 
+       0x44, 0xFF, 0x2E, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x2C, 0xFF, 0x87, 0x18, 0x47, 0xCF, 0xFF, 0x4B, 
+       0x00, 0x6B, 0xE7, 0xF6, 0xB7, 0x30, 0xAD, 0xF4, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16, 0x00, 
+       0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9, 0x00, 
+       0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9, 0x05, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF, 0x1B, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF, 0x11, 
+       0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1, 0x00, 
+       0x56, 0xFF, 0xBA, 0x28, 0x3C, 0xEF, 0x76, 0x00, 
+       0x8F, 0xEB, 0x58, 0xE4, 0xF2, 0x8E, 0x02, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x07, 0x89, 0xE4, 0xFA, 0xE4, 0x7C, 0x00, 
+       0x00, 0xA2, 0xEF, 0x52, 0x16, 0x33, 0x4D, 0x00, 
+       0x1A, 0xFE, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x47, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x1B, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA5, 0xF0, 0x5A, 0x17, 0x2A, 0x47, 0x00, 
+       0x00, 0x08, 0x8C, 0xE5, 0xFA, 0xE1, 0x74, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x84, 0xFF, 0x20, 
+       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD6, 0xFF, 0x20, 
+       0x16, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20, 
+       0x43, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20, 
+       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20, 
+       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x04, 0x87, 0xE9, 0xF7, 0xBB, 0x1E, 0x00, 
+       0x00, 0x92, 0xC7, 0x28, 0x28, 0xC9, 0xB9, 0x00, 
+       0x13, 0xFB, 0x3B, 0x00, 0x00, 0x5D, 0xFC, 0x08, 
+       0x44, 0xFF, 0xF1, 0xF0, 0xF0, 0xF5, 0xFF, 0x1C, 
+       0x48, 0xFF, 0x42, 0x20, 0x20, 0x20, 0x20, 0x04, 
+       0x1E, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA9, 0xE8, 0x4F, 0x16, 0x22, 0x65, 0x13, 
+       0x00, 0x08, 0x89, 0xE1, 0xFB, 0xE8, 0xB0, 0x11, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x59, 0xD4, 0xFA, 0xF4, 0xCD, 
+       0x00, 0x00, 0x21, 0xFC, 0x85, 0x1B, 0x16, 0x34, 
+       0x00, 0x00, 0x4E, 0xFF, 0x22, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x0D, 0xA9, 0xF6, 0xCF, 0x7F, 0xFF, 0x20, 
+       0x00, 0xA4, 0xD8, 0x29, 0x38, 0xD9, 0xFF, 0x20, 
+       0x15, 0xFC, 0x5B, 0x00, 0x00, 0x53, 0xFF, 0x20, 
+       0x43, 0xFF, 0x2A, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4B, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x2E, 0xFF, 0x46, 0x00, 0x00, 0x72, 0xFF, 0x20, 
+       0x01, 0xD8, 0xBF, 0x1D, 0x56, 0xE3, 0xFF, 0x1E, 
+       0x00, 0x2E, 0xD1, 0xF7, 0xB7, 0x66, 0xFF, 0x14, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xEF, 0x01, 
+       0x00, 0x4A, 0x3A, 0x14, 0x36, 0xDB, 0x8D, 0x00, 
+       0x00, 0x75, 0xDF, 0xFA, 0xE9, 0x92, 0x07, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A, 
+       0x00, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1, 
+       0x00, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 
+       0x04, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00, 
+       0x1C, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x43, 0xD8, 0x1B, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 
+       0x00, 0x05, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x1D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x5D, 0xFE, 0x0A, 0x00, 
+       0x2A, 0x54, 0x1F, 0x1A, 0xB6, 0xBF, 0x00, 0x00, 
+       0x35, 0xD1, 0xF5, 0xF5, 0xB8, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x32, 0xF4, 0x4D, 
+       0x00, 0x50, 0xFF, 0x20, 0x17, 0xE2, 0x7B, 0x00, 
+       0x00, 0x50, 0xFF, 0x26, 0xC5, 0xA9, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0xB7, 0xEE, 0x0B, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x6F, 0xFD, 0x82, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x77, 0xFF, 0x5A, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0xA0, 0xF7, 0x38, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x06, 0xC4, 0xE8, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 
+       0x02, 0x10, 0x10, 0x5B, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x1F, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x45, 0xE8, 0x7A, 0x2E, 0xEB, 0xAA, 
+       0x50, 0xFF, 0x9E, 0x7C, 0xEF, 0x83, 0x79, 0xFF, 
+       0x50, 0xFF, 0x5F, 0x53, 0xFF, 0x5D, 0x51, 0xFF, 
+       0x50, 0xFF, 0x22, 0x50, 0xFF, 0x22, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x50, 0xFF, 0x20, 0x50, 0xFF, 0x20, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x42, 0xB5, 0xF5, 0xE8, 0x5A, 
+       0x10, 0x50, 0xFF, 0xE4, 0x5F, 0x1B, 0xAA, 0xF1, 
+       0x1F, 0x50, 0xFF, 0x4E, 0x00, 0x00, 0x55, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x20, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x05, 0x85, 0xE3, 0xFA, 0xD9, 0x6A, 0x00, 
+       0x04, 0x9C, 0xE8, 0x45, 0x16, 0x61, 0xFA, 0x6F, 
+       0x35, 0xFD, 0x62, 0x00, 0x00, 0x00, 0x94, 0xE6, 
+       0x66, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF, 
+       0x67, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x59, 0xFF, 
+       0x3A, 0xFE, 0x61, 0x00, 0x00, 0x00, 0x93, 0xE6, 
+       0x20, 0xA2, 0xE6, 0x44, 0x16, 0x5E, 0xF9, 0x71, 
+       0x20, 0x07, 0x8A, 0xE5, 0xFA, 0xDA, 0x6D, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x40, 0xC1, 0xF7, 0xBD, 0x16, 
+       0x00, 0x50, 0xFF, 0xCB, 0x42, 0x25, 0xD8, 0xA9, 
+       0x00, 0x50, 0xFF, 0x3C, 0x00, 0x00, 0x72, 0xF9, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x53, 0xFF, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x5A, 0xFF, 
+       0x00, 0x50, 0xFF, 0x21, 0x00, 0x00, 0x8A, 0xE1, 
+       0x00, 0x50, 0xFF, 0xBA, 0x27, 0x3C, 0xEF, 0x76, 
+       0x00, 0x50, 0xFF, 0x74, 0xE5, 0xF1, 0x8E, 0x02, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x10, 0xAB, 0xF6, 0xD4, 0x5A, 0xFF, 0x20, 
+       0x00, 0xAA, 0xD8, 0x2A, 0x37, 0xD5, 0xFF, 0x20, 
+       0x1B, 0xFD, 0x5A, 0x00, 0x00, 0x51, 0xFF, 0x20, 
+       0x5E, 0xFF, 0x29, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x5C, 0xFF, 0x23, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x30, 0xFF, 0x41, 0x00, 0x00, 0x6E, 0xFF, 0x20, 
+       0x02, 0xDC, 0xB6, 0x1C, 0x5A, 0xDD, 0xFF, 0x20, 
+       0x00, 0x32, 0xD4, 0xF6, 0xA8, 0x5D, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x44, 0xBE, 0xF8, 0xFF, 0x20, 
+       0x00, 0x50, 0xFF, 0xD3, 0x42, 0x5F, 0xFF, 0x20, 
+       0x00, 0x50, 0xFF, 0x4B, 0x00, 0x11, 0x38, 0x07, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x66, 0xDA, 0xFB, 0xF0, 0xC9, 0x1D, 
+       0x00, 0x2D, 0xFF, 0x82, 0x1C, 0x1C, 0x45, 0x13, 
+       0x00, 0x3F, 0xFF, 0x70, 0x03, 0x00, 0x00, 0x00, 
+       0x00, 0x01, 0xA1, 0xFE, 0xEB, 0x9D, 0x47, 0x01, 
+       0x00, 0x00, 0x00, 0x22, 0x71, 0xC1, 0xFF, 0xAD, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xFF, 
+       0x00, 0x36, 0x70, 0x2C, 0x14, 0x33, 0xBD, 0xE0, 
+       0x00, 0x2B, 0xB8, 0xE8, 0xFD, 0xEF, 0xAE, 0x25, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+       0x00, 0x10, 0x5B, 0xFF, 0x2E, 0x10, 0x10, 0x10, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 0x00, 
+       0x15, 0x00, 0x48, 0xFF, 0x24, 0x00, 0x00, 0x00, 
+       0x03, 0x00, 0x1D, 0xFE, 0x95, 0x26, 0x18, 0x31, 
+       0x00, 0x00, 0x00, 0x6F, 0xDE, 0xFB, 0xF8, 0xE0, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x50, 0xFF, 0x20, 0x00, 0x00, 0x50, 0xFF, 0x20, 
+       0x4C, 0xFF, 0x27, 0x00, 0x00, 0x8E, 0xFF, 0x20, 
+       0x26, 0xFF, 0x93, 0x37, 0x99, 0xE6, 0xFF, 0x20, 
+       0x00, 0x82, 0xF2, 0xEF, 0x97, 0x5A, 0xFF, 0x20, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x63, 0xF4, 0x0C, 0x00, 0x00, 0x00, 0x63, 0xD1, 
+       0x0C, 0xF3, 0x63, 0x00, 0x00, 0x00, 0xC9, 0x6C, 
+       0x00, 0x9E, 0xC5, 0x00, 0x00, 0x2E, 0xF6, 0x10, 
+       0x00, 0x3B, 0xFF, 0x27, 0x00, 0x95, 0xA2, 0x00, 
+       0x00, 0x00, 0xD8, 0x89, 0x0A, 0xF0, 0x3D, 0x00, 
+       0x00, 0x00, 0x76, 0xE6, 0x63, 0xD7, 0x00, 0x00, 
+       0x00, 0x00, 0x18, 0xFB, 0xEF, 0x73, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xB1, 0xF9, 0x14, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0xD6, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 
+       0xAB, 0x93, 0x00, 0x7E, 0xFE, 0x0F, 0x00, 0xEB, 
+       0x7F, 0xBD, 0x00, 0xC1, 0xC1, 0x43, 0x14, 0xE1, 
+       0x54, 0xE7, 0x0A, 0xD5, 0x71, 0x79, 0x3C, 0xB1, 
+       0x28, 0xFF, 0x58, 0x9E, 0x3A, 0xAE, 0x64, 0x82, 
+       0x04, 0xF8, 0xC5, 0x61, 0x08, 0xDD, 0x8C, 0x52, 
+       0x00, 0xD1, 0xFF, 0x23, 0x00, 0xCB, 0xCC, 0x23, 
+       0x00, 0xA6, 0xE6, 0x00, 0x00, 0x94, 0xF2, 0x01, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x56, 0xE9, 0xB0, 0x00, 0x00, 0x1B, 0xF1, 0x7A, 
+       0x11, 0x4E, 0xFF, 0x61, 0x00, 0xB0, 0xA6, 0x00, 
+       0x00, 0x00, 0x9D, 0xF2, 0x73, 0xEC, 0x15, 0x00, 
+       0x00, 0x00, 0x0D, 0xDF, 0xFF, 0x5E, 0x00, 0x00, 
+       0x00, 0x00, 0x13, 0xE8, 0xFF, 0x75, 0x00, 0x00, 
+       0x00, 0x00, 0xA9, 0xB2, 0x88, 0xF8, 0x2E, 0x00, 
+       0x00, 0x58, 0xEC, 0x17, 0x06, 0xD0, 0xD1, 0x06, 
+       0x18, 0xED, 0x56, 0x00, 0x00, 0x2C, 0xF8, 0x8B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x53, 0xE0, 
+       0x00, 0xC9, 0x99, 0x00, 0x00, 0x00, 0xBA, 0x79, 
+       0x00, 0x62, 0xF3, 0x0D, 0x00, 0x23, 0xF8, 0x16, 
+       0x00, 0x0A, 0xF0, 0x67, 0x00, 0x88, 0xA7, 0x00, 
+       0x00, 0x00, 0x93, 0xCE, 0x05, 0xE9, 0x3E, 0x00, 
+       0x00, 0x00, 0x2B, 0xFF, 0x8C, 0xD5, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0xC4, 0xFF, 0x6C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x63, 0xF4, 0x0E, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x9B, 0x99, 0x00, 0x00, 0x00, 
+       0x00, 0x12, 0x4D, 0xF7, 0x2B, 0x00, 0x00, 0x00, 
+       0x00, 0xFF, 0xE4, 0x62, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x10, 0x10, 0x10, 0x17, 0xD3, 0xA9, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x97, 0xD7, 0x0C, 0x00, 
+       0x00, 0x00, 0x00, 0x5C, 0xF4, 0x2A, 0x00, 0x00, 
+       0x00, 0x00, 0x2B, 0xF4, 0x59, 0x00, 0x00, 0x00, 
+       0x00, 0x0D, 0xD8, 0x93, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xA9, 0xD1, 0x16, 0x10, 0x10, 0x10, 0x00, 
+       0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x7A, 0xDF, 0xFC, 0x84, 
+       0x00, 0x00, 0x00, 0x37, 0xFF, 0x6B, 0x15, 0x08, 
+       0x00, 0x00, 0x00, 0x4F, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x02, 0x53, 0xFF, 0x1D, 0x00, 0x00, 
+       0x00, 0x00, 0x01, 0x90, 0xE8, 0x04, 0x00, 0x00, 
+       0x00, 0x70, 0xF7, 0xF4, 0x3B, 0x00, 0x00, 0x00, 
+       0x00, 0x0F, 0x29, 0xAF, 0xCF, 0x01, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x53, 0xFF, 0x1A, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x3F, 0xFF, 0x4D, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x01, 0x96, 0xF8, 0xF4, 0x7B, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1D, 0x10, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0xB4, 0xF9, 0xD1, 0x50, 0x00, 0x00, 0x00, 
+       0x00, 0x0B, 0x19, 0x96, 0xF8, 0x0C, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x1F, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x4D, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x21, 0xFB, 0x62, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x61, 0xFE, 0xF4, 0x47, 
+       0x00, 0x00, 0x00, 0x14, 0xEE, 0x8A, 0x25, 0x09, 
+       0x00, 0x00, 0x00, 0x4B, 0xFF, 0x22, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x50, 0xFF, 0x20, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x7E, 0xFE, 0x11, 0x00, 0x00, 
+       0x00, 0xA8, 0xF7, 0xF2, 0x76, 0x00, 0x00, 0x00, 
+       0x00, 0x16, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x5D, 0xE2, 0x8F, 0x00, 0x00, 0x00, 0x00, 
+       0x10, 0xF6, 0x72, 0xA8, 0xE2, 0x4C, 0x5C, 0xDF, 
+       0x44, 0xFF, 0x26, 0x09, 0xA8, 0xFC, 0xFC, 0x8D, 
+       0x09, 0x20, 0x04, 0x00, 0x00, 0x0E, 0x12, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
new file mode 100755 (executable)
index 0000000..2841992
--- /dev/null
@@ -0,0 +1,413 @@
+//
+// GUI.CPP
+//
+// Graphical User Interface support
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/03/2006  Created this file
+// JLH  03/13/2006  Added functions to allow shutting down GUI externally
+// JLH  03/22/2006  Finalized basic multiple window support
+//
+// STILL TO DO:
+//
+// - Memory leak on quitting with a window active [DONE]
+// - Multiple window handling [DONE]
+//
+
+#include "gui.h"
+#include "menu.h"                                                              // Element class methods are pulled in here...
+#include "window.h"
+#include "video.h"
+
+// Debug support
+
+//#define DEBUG_MAIN_LOOP
+
+//#ifdef DEBUG_MAIN_LOOP
+#include "log.h"
+//#endif
+
+
+GUI::GUI(SDL_Surface * mainSurface): menuItem(new MenuItems())
+{
+       windowList.push_back(new Menu());
+       Element::SetScreen(mainSurface);
+}
+
+GUI::~GUI()
+{
+       // Clean up menuItem, if any
+
+       if (menuItem)
+               delete menuItem;
+
+       // Clean up the rest
+
+       for(std::list<Element *>::iterator i=windowList.begin(); i!=windowList.end(); i++)
+               if (*i)
+                       delete *i;
+}
+
+void GUI::AddMenuTitle(const char * title)
+{
+       menuItem->title = title;
+       menuItem->item.clear();
+}
+
+void GUI::AddMenuItem(const char * item, Element * (* a)(void)/*= NULL*/, SDLKey k/*= SDLK_UNKNOWN*/)
+{
+       menuItem->item.push_back(NameAction(item, a, k));
+}
+
+void GUI::CommitItemsToMenu(void)
+{
+//We could just do a simple check here to see if more than one item is in the list,
+//and if so fail. Make it so you build the menu first before allowing any other action. [DONE]
+
+//Right now, we just silently fail...
+       if (windowList.size() > 1)
+       {
+               WriteLog("GUI: Can't find menu--more than one item in windowList!\n");
+               return;
+       }
+
+       ((Menu *)(*windowList.begin()))->Add(*menuItem);
+}
+
+void GUI::Run(void)
+{
+       exitGUI = false;
+       showMouse = true;
+       SDL_Event event;
+       std::list<Element *>::iterator i;
+
+       SDL_EnableKeyRepeat(150, 75);
+
+       // Initial update... [Now handled correctly in the constructor]
+       for(i=windowList.begin(); i!=windowList.end(); i++)
+               (*i)->Draw();
+
+       RenderScreenBuffer();
+
+       // Main loop
+       while (!exitGUI)
+       {
+               if (SDL_PollEvent(&event))
+               {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog("An event was found!");
+#endif
+                       if (event.type == SDL_USEREVENT)
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_USEREVENT\n");
+#endif
+//Mebbe add another user event for screen refresh? Why not!
+                               if (event.user.code == WINDOW_CLOSE)
+                               {
+                                       for(i=windowList.begin(); i!=windowList.end(); i++)
+                                       {
+                                               if (*i == (Element *)event.user.data1)
+                                               {
+                                                       delete *i;
+                                                       windowList.erase(i);
+                                                       break;
+                                               }
+                                       }
+                               }
+                               else if (event.user.code == MENU_ITEM_CHOSEN)
+                               {
+                                       // Confused? Let me enlighten... What we're doing here is casting
+                                       // data1 as a pointer to a function which returns a Element pointer and
+                                       // which takes no parameters (the "(Element *(*)(void))" part), then
+                                       // derefencing it (the "*" in front of that) in order to call the
+                                       // function that it points to. Clear as mud? Yeah, I hate function
+                                       // pointers too, but what else are you gonna do?
+                                       Element * window = (*(Element *(*)(void))event.user.data1)();
+
+                                       if (window)
+                                               windowList.push_back(window);
+
+                                       while (SDL_PollEvent(&event));  // Flush the event queue...
+
+                                       event.type = SDL_MOUSEMOTION;
+                                       int mx, my;
+                                       SDL_GetMouseState(&mx, &my);
+                                       event.motion.x = mx, event.motion.y = my;
+                                   SDL_PushEvent(&event);                      // & update mouse position...!
+
+                                       oldMouse.x = mouse.x, oldMouse.y = mouse.y;
+                                       mouse.x = mx, mouse.y = my;             // This prevents "mouse flash"...
+                               }
+//There's a *small* problem with the following approach--if a window and a bunch of
+//child widgets send this message, we'll get a bunch of unnecessary refresh events...
+//This could be controlled by having the main window refresh itself intelligently...
+
+//What we could do instead is set a variable in Element and check it after the fact
+//to see whether or not a refresh is needed.
+//[This is what we do now.]
+
+//Dirty rectangle is also possible...
+                               else if (event.user.code == SCREEN_REFRESH_NEEDED)
+                                       RenderScreenBuffer();
+                       }
+                       else if (event.type == SDL_ACTIVEEVENT)
+                       {
+//Need to do a screen refresh here...
+                               if (event.active.state == SDL_APPMOUSEFOCUS)
+                                       showMouse = (event.active.gain ? true : false);
+
+                               RenderScreenBuffer();
+                       }
+                       else if (event.type == SDL_KEYDOWN)
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_KEYDOWN\n");
+#endif
+                               if (event.key.keysym.sym == SDLK_F1)
+                                       exitGUI = true;
+
+//Not sure that this is the right way to handle this...
+//Probably should only give this to the top level window...
+//                             for(i=windowList.begin(); i!=windowList.end(); i++)
+//                                     (*i)->HandleKey(event.key.keysym.sym);
+                               windowList.back()->HandleKey(event.key.keysym.sym);
+                       }
+                       else if (event.type == SDL_MOUSEMOTION)
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOUSEMOTION\n");
+#endif
+//This is for tracking a custom mouse cursor, which we're not doing--YET.
+                               oldMouse.x = mouse.x, oldMouse.y = mouse.y;
+                               mouse.x = event.motion.x, mouse.y = event.motion.y;
+
+//Not sure that this is the right way to handle this...
+//Right now, we should probably only do mouseover for the last item in the list...
+//And now we do!
+//Though, it seems to screw other things up. Maybe it IS better to pass it to all windows?
+//Or maybe to just the ones that aren't completely obscured?
+//Probably. Right now, a disk's close button that should be obscured by one sitting on
+//top of it gets redrawn. Not good.
+                               for(i=windowList.begin(); i!=windowList.end(); i++)
+                                       (*i)->HandleMouseMove(mouse.x, mouse.y);
+//                             windowList.back()->HandleMouseMove(mouse.x, mouse.y);
+                       }
+                       else if (event.type == SDL_MOUSEBUTTONDOWN)
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOUSEBUTTONDOWN\n");
+#endif
+//Not sure that this is the right way to handle this...
+// What we should do here is ensure that whatever has been clicked on gets moved to the
+// highest priority--in our current data schema that would be the end of the list... !!! FIX !!!
+//[DONE]
+
+/*
+
+We could do the following:
+
+- Go through list and find which window has been clicked on (if any). If more
+  than one is clicked on, take the one highest in the Z order (closer to the end
+  of the list).
+
+- If item is highest in Z order, pack click through to window and exit.
+
+- Otherwise, restore backing store on each window in reverse order.
+
+- Remove item clicked on from the list. Put removed item at the end of the list.
+
+- Go through list and pass click through to each window in the list. Also do a
+  blit to backing store and a Draw() for each window.
+
+Could also do a check (if not clicked on highest Z window) to see which windows
+it overlaps and just do restore/redraw for those that overlap. To wit:
+
+- Create new list containing only those windows that overlap the clicking on window.
+
+- Go through list and do a blit to backing store and a Draw() for each window.
+
+- Go through list and pass click through to each window in the list.
+
+*/
+
+#if 0
+#if 0
+                               for(i=windowList.begin(); i!=windowList.end(); i++)
+                                       (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+#else
+// We use the 1st algorithm here, since it's simpler. If we need to, we can optimize
+// to the 2nd...
+
+                               // Walk backward through the list and see if a window was hit.
+                               // This will automagically return us the window with the highest Z.
+
+                               std::list<Element *>::reverse_iterator ri;
+                               std::list<Element *>::iterator hit;// = windowList.end();
+
+                               for(ri=windowList.rbegin(); ri!=windowList.rend(); ri++)
+                               {
+                                       if ((*ri)->Inside(event.button.x, event.button.y))
+                                       {
+                                               // Here's a bit of STL weirdness: Converting from a reverse
+                                               // iterator to a regular iterator requires backing the iterator
+                                               // up a position after grabbing it's base() OR going forward
+                                               // one position with the reverse iterator before grabbing base().
+                                               // Ugly, but it get the job done...
+                                               hit = (++ri).base();
+                                               // Put it back where we found it, so the tests following this
+                                               // don't fail...
+                                               ri--;
+                                               break;
+                                       }
+                               }
+
+                               // If we hit the highest in the list, then pass the event through
+                               // to the window for handling. if we hit no windows, then pass the
+                               // event to all windows. Otherwise, we need to shuffle windows.
+
+//NOTE: We need to pass the click to all windows regardless of whether they're topmost or not...
+                               if (ri == windowList.rbegin())
+                               {
+                                       for(i=windowList.begin(); i!=windowList.end(); i++)
+                                               (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+                               }
+                               else if (ri == windowList.rend())
+                               {
+                                       for(i=windowList.begin(); i!=windowList.end(); i++)
+                                               (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+                               }
+                               else
+                               {
+// - Otherwise, restore backing store on each window in reverse order.
+                                       for(ri=windowList.rbegin(); ri!=windowList.rend(); ri++)
+                                               (*ri)->RestoreScreenFromBackstore();
+                                       // At this point, the screen has been restored...
+
+// - Remove item clicked on from the list. Put removed item at the end of the list.
+                                       windowList.push_back(*hit);
+                                       windowList.erase(hit);
+// - Go through list and pass click through to each window in the list. Also do a
+//  blit to backing store and a Draw() for each window.
+                                       for(i=windowList.begin(); i!= windowList.end(); i++)
+                                       {
+                                               // Grab bg into backstore
+                                               (*i)->SaveScreenToBackstore();
+                                               // Pass click
+                                               (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+                                               // Draw?
+                                               (*i)->Draw();
+                                       }
+                               }
+#endif
+#endif
+/*
+A slightly different way to handle this would be to loop through all windows, compare
+all those above it to see if they obscure it; if so then subdivide it's update rectangle
+to eliminate drawing the parts that aren't shown. The beauty of this approach is that
+you don't have to care what order the windows are drawn in and you don't need to worry
+about the order of restoring the backing store.
+
+You *do* still need to determine the Z-order of the windows, in order to get the subdivisions
+correct, but that's not too terrible.
+
+Also, when doing a window drag, the coverage lists for all windows have to be regenerated.
+*/
+                               std::list<Element *>::reverse_iterator ri;
+                               bool movedWindow = false;
+
+                               for(ri=windowList.rbegin(); ri!=windowList.rend(); ri++)
+                               {
+                                       if ((*ri)->Inside(event.button.x, event.button.y))
+                                       {
+                                               // Remove item clicked on from the list & put removed item at the
+                                               // end of the list, thus putting the window at the top of the Z
+                                               // order. But IFF window is not already topmost!
+                                               if (ri != windowList.rbegin())
+                                               {
+                                                       windowList.push_back(*ri);
+                                                       // Here's a bit of STL weirdness: Converting from a reverse
+                                                       // iterator to a regular iterator requires backing the iterator
+                                                       // up a position after grabbing it's base() OR going forward
+                                                       // one position with the reverse iterator before grabbing base().
+                                                       // Ugly, but it get the job done...
+                                                       windowList.erase((++ri).base());
+                                                       movedWindow = true;
+                                               }
+
+                                               break;
+                                       }
+                               }
+
+//Small problem here: we should only pass the *hit* to the topmost window and pass
+//*misses* to everyone else... Otherwise, you can have overlapping draggable windows
+//and be able to drag both by clicking on a point that intersects both...
+//(though that may be an interesting way to handle things!)
+                               // Pass the click on to all windows
+                               for(i=windowList.begin(); i!=windowList.end(); i++)
+                                       (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+
+//                             // & bail if nothing changed...
+                               if (movedWindow)
+//                                     return;
+{
+                               // Check for overlap/build coverage lists [O((n^2)/2) algorithm!]
+//One way to optimize this would be to only reset coverage lists from the point in
+//the Z order where the previous window was.
+                               for(i=windowList.begin(); i!=windowList.end(); i++)
+                               {
+                                       (*i)->ResetCoverageList();
+
+                                       // This looks odd, but it's just a consequence of iterator weirdness.
+                                       // Otherwise we could just stick a j+1 in the for loop below. :-P
+                                       std::list<Element *>::iterator j = i;
+                                       j++;
+
+                                       for(; j!=windowList.end(); j++)
+                                               (*i)->AdjustCoverageList((*j)->GetExtents());
+
+//                                     (*i)->HandleMouseButton(event.button.x, event.button.y, true);
+                                       (*i)->Draw();
+                               }
+}
+                       }
+                       else if (event.type == SDL_MOUSEBUTTONUP)
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog(" -- SDL_MOUSEBUTTONUP\n");
+#endif
+//Not sure that this is the right way to handle this...
+                               for(i=windowList.begin(); i!=windowList.end(); i++)
+                                       (*i)->HandleMouseButton(event.button.x, event.button.y, false);
+//I think we should only do topmost here...
+//Or should we???
+//                             windowList.back()->HandleMouseButton(event.button.x, event.button.y, false);
+                       }
+#ifdef DEBUG_MAIN_LOOP
+else
+       WriteLog(" -- Unknown event\n");
+#endif
+
+                       if (Element::ScreenNeedsRefreshing())
+                       {
+#ifdef DEBUG_MAIN_LOOP
+WriteLog("Screen refresh called!\n");
+#endif
+                               RenderScreenBuffer();
+                               Element::ScreenWasRefreshed();
+                       }
+               }
+       }
+
+       SDL_EnableKeyRepeat(0, 0);
+//     return false;
+}
+
+void GUI::Stop(void)
+{
+       exitGUI = true;
+}
diff --git a/src/gui/gui.h b/src/gui/gui.h
new file mode 100755 (executable)
index 0000000..05ab391
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// GUI.H
+//
+// Graphical User Interface support
+//
+
+#ifndef __GUI_H__
+#define __GUI_H__
+
+#include <SDL.h>
+#include <list>
+
+class Menu;                                                                            // Now *this* should work, since we've got pointers...
+class MenuItems;
+class Element;
+
+class GUI
+{
+       public:
+               GUI(SDL_Surface *);
+               ~GUI();
+               void AddMenuTitle(const char *);
+               void AddMenuItem(const char *, Element * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN);
+               void CommitItemsToMenu(void);
+               void Run(void);
+               void Stop(void);
+
+       private:
+//             Menu * mainMenu;
+               MenuItems * menuItem;
+               std::list<Element *> windowList;
+               bool exitGUI;
+               bool showMouse;
+               SDL_Rect mouse, oldMouse;
+};
+
+#endif // __GUI_H__
diff --git a/src/gui/guimisc.cpp b/src/gui/guimisc.cpp
new file mode 100755 (executable)
index 0000000..53b333d
--- /dev/null
@@ -0,0 +1,2808 @@
+//
+// GUIMISC.CPP
+//
+// Graphical User Interface support functions
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/02/2006  Created this file
+// JLH  03/13/2006  Abstracted out font to allow external fonts
+//
+
+#include "guimisc.h"
+#include "font14pt.h"
+//Can't do this...!
+//#include "charset.h" // For Apple II font (small)
+#include <string>
+#include <vector>
+
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+// Local variables
+// This will enable us to set up any font without having it embedded here...
+
+static Font font((uint8 *)font2, FONT_WIDTH, FONT_HEIGHT);
+static std::vector<Font> oldFontList;
+
+
+void SetNewFont(Font newFont)
+{
+       oldFontList.push_back(font);
+       font.data = newFont.data, font.width = newFont.width, font.height = newFont.height;
+}
+
+void RestoreOldFont(void)
+{
+       if (oldFontList.size() == 0)
+               return;
+
+       font = oldFontList.back();
+       oldFontList.pop_back();
+}
+
+uint32 GetFontWidth(void)
+{
+       return font.width;
+}
+
+uint32 GetFontHeight(void)
+{
+       return font.height;
+}
+
+//
+// Draw text at the given x/y coordinates with transparency (255 is fully opaque, 0 is fully transparent).
+//
+void DrawStringTrans(SDL_Surface * screen, uint32 x, uint32 y, uint32 color, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint8 * esColor = (uint8 *)&color;                      // Do things endian safe...!
+       uint8 trans = esColor[3];
+       uint32 length = strlen(string);
+
+       // Make a "stamp" surface (with built in alpha!) for constructing our font chars...
+       SDL_Surface * chr = SDL_CreateRGBSurface(SDL_SWSURFACE, font.width, font.height, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+       SDL_Rect rect;
+       rect.x = x, rect.y = y;
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint8 c = string[i];
+               uint32 fontAddr = (uint32)(c < 32 ? 0 : c - 32) * font.width * font.height;
+
+               for(uint32 yy=0; yy<font.height; yy++)
+               {
+                       for(uint32 xx=0; xx<font.width; xx++)
+                       {
+                               esColor[3] = (font.data[fontAddr++] * trans) / 255;
+                               ((uint32 *)chr->pixels)[xx + (yy * (chr->pitch / 4))] = color;
+                       }
+               }
+
+               SDL_BlitSurface(chr, NULL, screen, &rect);
+               rect.x += font.width;
+       }
+
+       SDL_FreeSurface(chr);
+}
+
+//
+// Draw text at given x/y coords using foreground/background color combination
+//
+void DrawStringOpaque(SDL_Surface * screen, uint32 x, uint32 y, uint32 fg, uint32 bg, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint8 * esColor = (uint8 *)&fg;                         // Do things endian safe...!
+       uint32 length = strlen(string);
+
+       SDL_Rect destRect;
+
+       destRect.x = x, destRect.y = y;
+       destRect.w = length * font.width, destRect.h = font.height;
+
+       SDL_FillRect(screen, &destRect, bg);
+
+       // Make a "stamp" surface (with built in alpha!) for constructing our font chars...
+       SDL_Surface * chr = SDL_CreateRGBSurface(SDL_SWSURFACE, font.width, font.height, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+       SDL_Rect rect;
+       rect.x = x, rect.y = y;
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint8 c = string[i];
+               uint32 fontAddr = (uint32)(c < 32 ? 0 : c - 32) * font.width * font.height;
+
+               for(uint32 yy=0; yy<font.height; yy++)
+               {
+                       for(uint32 xx=0; xx<font.width; xx++)
+                       {
+                               esColor[3] = font.data[fontAddr++];
+                               ((uint32 *)chr->pixels)[xx + (yy * (chr->pitch / 4))] = fg;
+                       }
+               }
+
+               SDL_BlitSurface(chr, NULL, screen, &rect);
+               rect.x += font.width;
+       }
+
+       SDL_FreeSurface(chr);
+}
+
+bool RectanglesIntersect(SDL_Rect r1, SDL_Rect r2)
+{
+       // The strategy here is to see if any of the sides of the smaller rect
+       // fall within the larger.
+
+/*
+    +-----------------+ r1
+    |                 |
+    |   +------+ r2   |
+    |   |      |      |
+    |   |      |      |
+    |   +------+      |
+    |                 |
+    +-----------------+
+
+*/
+
+//This approach fails if r2 is inside of r1. !!! FIX !!! [DONE]
+       if (RectangleFirstInsideSecond(r2, r1))
+               return true;
+
+       if ((r1.x > r2.x && r1.x < (r2.x + r2.w))
+               || ((r1.x + r1.w) > r2.x && (r1.x + r1.w) < (r2.x + r2.w))
+               || (r1.y > r2.y && r1.y < (r2.y + r2.h))
+               || ((r1.y + r1.h) > r2.y && (r1.y + r1.h) < (r2.y + r2.h)))
+               return true;
+
+       return false;
+}
+
+bool RectangleFirstInsideSecond(SDL_Rect r1, SDL_Rect r2)
+{
+       if ((r1.x > r2.x             && (r1.x + r1.w) > r2.x)
+               && (r1.x < (r2.x + r2.w) && (r1.x + r1.w) < (r2.x + r2.w))
+               && (r1.y > r2.y          && (r1.y + r1.h) > r2.y)
+               && (r1.y < (r2.y + r2.h) && (r1.y + r1.h) < (r2.y + r2.h)))
+               return true;
+
+       return false;
+}
+
+
+//
+// Various GUI bitmaps
+//
+
+// These representations *should* be endian safe.
+
+uint8 closeBox[] = {
+       15 / 256, 15 % 256,             // width (HI byte, LO byte)
+       15 / 256, 15 % 256,             // height (HI byte, LO byte)
+
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, 
+       0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+uint8 closeBoxHover[] = {
+       15 / 256, 15 % 256,             // width (HI byte, LO byte)
+       15 / 256, 15 % 256,             // height (HI byte, LO byte)
+
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, 
+       0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xBE, 0x63, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xFF, 0xB7, 0x52, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xFF, 0xAF, 0x40, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFF, 0xA2, 0x20, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xFB, 0x6B, 0x6B, 0xFF, 0xE7, 0x58, 0x58, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+uint8 closeBoxDown[] = {
+       15 / 256, 15 % 256,             // width (HI byte, LO byte)
+       15 / 256, 15 % 256,             // height (HI byte, LO byte)
+
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, 
+       0xED, 0x38, 0x38, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xBD, 0x6E, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xCC, 0x77, 0x00, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xE2, 0x86, 0x07, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xF7, 0x9D, 0x1F, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0xED, 0x38, 0x38, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xC0, 0x2B, 0x2B, 0xFF, 0xE2, 0x1D, 0x1D, 0xFF, 0xED, 0x38, 0x38, 0xFF, 
+       0x00, 0x00, 0x00, 0x00, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0xED, 0x38, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00
+};
+
+#include "fd-img-128x128.c"
+
+
+#if 0
+#include <stdarg.h>
+#include <sys/types.h>                                                         // For MacOS <dirent.h> dependency
+#include <dirent.h>
+#include <SDL.h>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <ctype.h>                                                                     // For toupper()
+#include "settings.h"
+#include "tom.h"
+#include "video.h"
+#include "clock.h"
+#include "font1.h"
+#include "font14pt.h"                                                          // Also 15, 16, 17, 18
+#include "guielements.h"
+#include "crc32.h"
+#include "zlib.h"
+#include "unzip.h"
+#include "sdlemu_opengl.h"
+#include "gui.h"
+
+using namespace std;                                                           // For STL stuff
+
+// Private function prototypes
+
+class Window;                                                                          // Forward declaration...
+
+//void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap, uint8 * alpha = NULL);
+void DrawTransparentBitmapDeprecated(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap);
+void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap);
+void DrawBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap);
+//Should call this FillScreenRectangle with a number representing the RGBA value to fill. !!! FIX !!!
+//void ClearScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h);
+void FillScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h, uint32 color);
+void DrawStringTrans(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 opacity, const char * text, ...);
+void DrawStringOpaque(uint32 * screen, uint32 x, uint32 y, uint32 color1, uint32 color2, const char * text, ...);
+void DrawString(uint32 * screen, uint32 x, uint32 y, bool invert, const char * text, ...);
+void DrawString2(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 transparency, const char * text, ...);
+Window * LoadROM(void);
+Window * ResetJaguar(void);
+Window * ResetJaguarCD(void);
+Window * RunEmu(void);
+Window * Quit(void);
+Window * About(void);
+Window * MiscOptions(void);
+
+int gzfilelength(gzFile gd);
+
+// External variables
+
+extern uint8 * jaguar_mainRam;
+extern uint8 * jaguar_mainRom;
+extern uint8 * jaguar_bootRom;
+extern uint8 * jaguar_CDBootROM;
+extern bool BIOSLoaded;
+extern bool CDBIOSLoaded;
+
+// Local global variables
+
+bool exitGUI = false;                                                          // GUI (emulator) done variable
+int mouseX = 0, mouseY = 0;
+uint32 background[1280 * 256];                                         // GUI background buffer
+
+char separator[] = "--------------------------------------------------------";
+
+//
+// Case insensitive string compare function
+// Taken straight out of Thinking In C++ by Bruce Eckel. Thanks Bruce!
+//
+
+int stringCmpi(const string &s1, const string &s2)
+{
+       // Select the first element of each string:
+       string::const_iterator p1 = s1.begin(), p2 = s2.begin();
+
+       while (p1 != s1.end() && p2 != s2.end())                // Don\92t run past the end
+       {
+               if (toupper(*p1) != toupper(*p2))                       // Compare upper-cased chars
+                       return (toupper(*p1) < toupper(*p2) ? -1 : 1);// Report which was lexically greater
+
+               p1++;
+               p2++;
+       }
+
+       // If they match up to the detected eos, say which was longer. Return 0 if the same.
+       return s2.size() - s1.size();
+}
+
+//
+// Local GUI classes
+//
+
+enum { WINDOW_CLOSE, MENU_ITEM_CHOSEN };
+
+class Element
+{
+       public:
+               Element(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0)
+                       { extents.x = x, extents.y = y, extents.w = w, extents.h = h; }
+               virtual void HandleKey(SDLKey key) = 0;         // These are "pure" virtual functions...
+               virtual void HandleMouseMove(uint32 x, uint32 y) = 0;
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) = 0;
+               virtual void Draw(uint32, uint32) = 0;
+               virtual void Notify(Element *) = 0;
+//Needed?              virtual ~Element() = 0;
+//We're not allocating anything in the base class, so the answer would be NO.
+               bool Inside(uint32 x, uint32 y);
+               // Class method
+//             static void SetScreenAndPitch(int16 * s, uint32 p) { screenBuffer = s, pitch = p; }
+               static void SetScreenAndPitch(uint32 * s, uint32 p) { screenBuffer = s, pitch = p; }
+
+       protected:
+               SDL_Rect extents;
+               uint32 state;
+               // Class variables...
+//             static int16 * screenBuffer;
+               static uint32 * screenBuffer;
+               static uint32 pitch;
+};
+
+// Initialize class variables (Element)
+//int16 * Element::screenBuffer = NULL;
+uint32 * Element::screenBuffer = NULL;
+uint32 Element::pitch = 0;
+
+bool Element::Inside(uint32 x, uint32 y)
+{
+       return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
+               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false);
+}
+
+
+//
+// Button class
+//
+
+class Button: public Element
+{
+       public:
+               Button(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+                       bgColor(0xFF00FF00), pic(NULL), elementToTell(NULL) {}
+               Button(uint32 x, uint32 y, uint32 w, uint32 h, uint32 * p): Element(x, y, w, h),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+                       bgColor(0xFF00FF00), pic(p), elementToTell(NULL) {}
+//             Button(uint32 x, uint32 y, uint32 * p): Element(x, y, 0, 0),
+               Button(uint32 x, uint32 y, uint32 * p, uint32 * pH = NULL, uint32 * pD = NULL): Element(x, y, 0, 0),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+                       bgColor(0xFF00FF00), pic(p), picHover(pH), picDown(pD), elementToTell(NULL)
+                       { if (pic) extents.w = pic[0], extents.h = pic[1]; }
+               Button(uint32 x, uint32 y, uint32 w, uint32 h, string s): Element(x, y, w, h),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+                       bgColor(0xFF00FF00), pic(NULL), text(s), elementToTell(NULL) {}
+               Button(uint32 x, uint32 y, string s): Element(x, y, 0, FONT_HEIGHT),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFFFFFF),
+                       bgColor(0xFF00FF00), pic(NULL), text(s), elementToTell(NULL)
+                       { extents.w = s.length() * FONT_WIDTH; }
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+               bool ButtonClicked(void) { return activated; }
+               void SetNotificationElement(Element * e) { elementToTell = e; }
+
+       protected:
+               bool activated, clicked, inside;
+               uint32 fgColor, bgColor;
+               uint32 * pic, * picHover, * picDown;
+               string text;
+               Element * elementToTell;
+};
+
+void Button::HandleMouseMove(uint32 x, uint32 y)
+{
+       inside = Inside(x, y);
+}
+
+void Button::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       if (inside)
+       {
+               if (mouseDown)
+                       clicked = true;
+
+               if (clicked && !mouseDown)
+               {
+                       clicked = false, activated = true;
+
+                       // Send a message that we're activated (if there's someone to tell, that is)
+                       if (elementToTell)
+                               elementToTell->Notify(this);
+               }
+       }
+       else
+               clicked = activated = false;
+}
+
+void Button::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       uint32 addr = (extents.x + offsetX) + ((extents.y + offsetY) * pitch);
+
+       if (text.length() > 0)                                                  // Simple text button
+//     if (pic == NULL)
+       {
+               for(uint32 y=0; y<extents.h; y++)
+               {
+                       for(uint32 x=0; x<extents.w; x++)
+                       {
+                               // Doesn't clip in y axis! !!! FIX !!!
+                               if (extents.x + x < pitch)
+                                       screenBuffer[addr + x + (y * pitch)] 
+//                                     = (clicked && inside ? fgColor : (inside ? 0x43F0 : bgColor));
+//43F0 -> 010000 11111 10000 -> 0100 0001 1111 1111 1000 0100 -> 41 FF 84
+                                               = (clicked && inside ? fgColor : (inside ? 0xFF84FF41 : bgColor));
+                       }
+               }
+
+               DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
+       }
+       else                                                                                    // Graphical button
+       {
+               uint32 * picToShow = pic;
+
+               if (picHover != NULL && inside && !clicked)
+                       picToShow = picHover;
+
+               if (picDown != NULL && inside && clicked)
+                       picToShow = picDown;
+
+               DrawTransparentBitmapDeprecated(screenBuffer, extents.x + offsetX, extents.y + offsetY, picToShow);
+       }
+}
+
+
+//
+// PushButton class
+//
+
+class PushButton: public Element
+{
+// How to handle?
+// Save state externally?
+//We pass in a state variable if we want to track it externally, otherwise we use our own
+//internal state var. Still need to do some kind of callback for pushbuttons that do things
+//like change from fullscreen to windowed... !!! FIX !!!
+
+       public:
+//             PushButton(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+//                     activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+//                     bgColor(0x03E0), pic(NULL), elementToTell(NULL) {}
+//             PushButton(uint32 x, uint32 y, bool * st, string s): Element(x, y, 8, 8), state(st),
+//                     inside(false), text(s) { if (st == NULL) state = &internalState; }
+               PushButton(uint32 x, uint32 y, bool * st, string s): Element(x, y, 16, 16), state(st),
+                       inside(false), text(s) { if (st == NULL) state = &internalState; }
+/*             Button(uint32 x, uint32 y, uint32 w, uint32 h, uint32 * p): Element(x, y, w, h),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+                       bgColor(0x03E0), pic(p), elementToTell(NULL) {}
+               Button(uint32 x, uint32 y, uint32 * p): Element(x, y, 0, 0),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+                       bgColor(0x03E0), pic(p), elementToTell(NULL)
+                       { if (pic) extents.w = pic[0], extents.h = pic[1]; }
+               Button(uint32 x, uint32 y, uint32 w, uint32 h, string s): Element(x, y, w, h),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+                       bgColor(0x03E0), pic(NULL), text(s), elementToTell(NULL) {}
+               PushButton(uint32 x, uint32 y, string s): Element(x, y, 0, 8),
+                       activated(false), clicked(false), inside(false), fgColor(0xFFFF),
+                       bgColor(0x03E0), pic(NULL), text(s), elementToTell(NULL)
+                       { extents.w = s.length() * 8; }*/
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+//             bool ButtonClicked(void) { return activated; }
+//             void SetNotificationElement(Element * e) { elementToTell = e; }
+
+       protected:
+               bool * state;
+               bool inside;
+//             bool activated, clicked, inside;
+//             uint16 fgColor, bgColor;
+//             uint32 * pic;
+               string text;
+//             Element * elementToTell;
+               bool internalState;
+};
+
+void PushButton::HandleMouseMove(uint32 x, uint32 y)
+{
+       inside = Inside(x, y);
+}
+
+void PushButton::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       if (inside && mouseDown)
+       {
+/*             if (mouseDown)
+                       clicked = true;
+
+               if (clicked && !mouseDown)
+               {
+                       clicked = false, activated = true;
+
+                       // Send a message that we're activated (if there's someone to tell, that is)
+                       if (elementToTell)
+                               elementToTell->Notify(this);
+               }*/
+               *state = !(*state);
+       }
+//     else
+//             clicked = activated = false;
+}
+
+void PushButton::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+/*     uint32 addr = (extents.x + offsetX) + ((extents.y + offsetY) * pitch);
+
+       for(uint32 y=0; y<extents.h; y++)
+       {
+               for(uint32 x=0; x<extents.w; x++)
+               {
+                       // Doesn't clip in y axis! !!! FIX !!!
+                       if (extents.x + x < pitch)
+                               screenBuffer[addr + x + (y * pitch)] 
+                                       = (clicked && inside ? fgColor : (inside ? 0x43F0 : bgColor));
+               }
+       }*/
+
+       if (*state)
+               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, &pbDown);
+       else
+               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, &pbUp);
+
+       if (text.length() > 0)
+               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY, false, "%s", text.c_str());
+}
+
+
+//
+// SlideSwitch class
+//
+
+class SlideSwitch: public Element
+{
+// How to handle?
+// Save state externally?
+//Seems to be handled the same as PushButton, but without sanity checks. !!! FIX !!!
+
+       public:
+               SlideSwitch(uint32 x, uint32 y, bool * st, string s1, string s2): Element(x, y, 16, 32), state(st),
+                       inside(false), text1(s1), text2(s2) {}
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+//             bool ButtonClicked(void) { return activated; }
+//             void SetNotificationElement(Element * e) { elementToTell = e; }
+
+       protected:
+               bool * state;
+               bool inside;
+//             bool activated, clicked, inside;
+//             uint16 fgColor, bgColor;
+//             uint32 * pic;
+               string text1, text2;
+//             Element * elementToTell;
+};
+
+void SlideSwitch::HandleMouseMove(uint32 x, uint32 y)
+{
+       inside = Inside(x, y);
+}
+
+void SlideSwitch::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       if (inside && mouseDown)
+       {
+/*             if (mouseDown)
+                       clicked = true;
+
+               if (clicked && !mouseDown)
+               {
+                       clicked = false, activated = true;
+
+                       // Send a message that we're activated (if there's someone to tell, that is)
+                       if (elementToTell)
+                               elementToTell->Notify(this);
+               }*/
+               *state = !(*state);
+       }
+//     else
+//             clicked = activated = false;
+}
+
+void SlideSwitch::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       DrawTransparentBitmapDeprecated(screenBuffer, extents.x + offsetX, extents.y + offsetY, (*state ? slideSwitchDown : slideSwitchUp));
+
+       if (text1.length() > 0)
+               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY, false, "%s", text1.c_str());
+
+       if (text2.length() > 0)
+               DrawString(screenBuffer, extents.x + offsetX + 24, extents.y + offsetY + 16, false, "%s", text2.c_str());
+}
+
+
+//
+// Window class
+//
+
+class Window: public Element
+{
+       public:
+/*             Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+                       fgColor(0x4FF0), bgColor(0xFE10)
+                       { close = new Button(w - 8, 1, closeBox); list.push_back(close); }*/
+               Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+                       void (* f)(Element *) = NULL): Element(x, y, w, h),
+//                     /*clicked(false), inside(false),*/ fgColor(0x4FF0), bgColor(0x1E10),
+//4FF0 -> 010011 11111 10000 -> 0100 1101 1111 1111 1000 0100 -> 4D FF 84
+//1E10 -> 000111 10000 10000 -> 0001 1111 1000 0100 1000 0100 -> 1F 84 84
+                       /*clicked(false), inside(false),*/ fgColor(0xFF84FF4D), bgColor(0xFF84841F),
+                       handler(f)
+                       { close = new Button(w - (CLOSEBOX_WIDTH + 1), 1, closeBox, closeBoxHover, closeBoxDown);
+                         list.push_back(close);
+                         close->SetNotificationElement(this); }
+               virtual ~Window();
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element * e);
+               void AddElement(Element * e);
+//             bool WindowActive(void) { return true; }//return !close->ButtonClicked(); }
+
+       protected:
+//             bool clicked, inside;
+               uint32 fgColor, bgColor;
+               void (* handler)(Element *);
+               Button * close;
+//We have to use a list of Element *pointers* because we can't make a list that will hold
+//all the different object types in the same list...
+               vector<Element *> list;
+};
+
+Window::~Window()
+{
+       for(uint32 i=0; i<list.size(); i++)
+               if (list[i])
+                       delete list[i];
+}
+
+void Window::HandleKey(SDLKey key)
+{
+       if (key == SDLK_ESCAPE)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+               SDL_PushEvent(&event);
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleKey(key);
+}
+
+void Window::HandleMouseMove(uint32 x, uint32 y)
+{
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseMove(x - extents.x, y - extents.y);
+}
+
+void Window::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+}
+
+void Window::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       uint32 addr = (extents.x + offsetX) + ((extents.y + offsetY) * pitch);
+
+       for(uint32 y=0; y<extents.h; y++)
+       {
+               for(uint32 x=0; x<extents.w; x++)
+               {
+                       // Doesn't clip in y axis! !!! FIX !!!
+                       if (extents.x + x < pitch)
+                               screenBuffer[addr + x + (y * pitch)] = bgColor;
+               }
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->Draw(extents.x, extents.y);
+}
+
+void Window::AddElement(Element * e)
+{
+       list.push_back(e);
+}
+
+void Window::Notify(Element * e)
+{
+       if (e == close)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+               SDL_PushEvent(&event);
+       }
+}
+
+
+//
+// Static text class
+//
+
+class Text: public Element
+{
+       public:
+//             Text(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+//                     fgColor(0x4FF0), bgColor(0xFE10) {}
+//             Text(uint32 x, uint32 y, string s, uint16 fg = 0x4FF0, uint16 bg = 0xFE10): Element(x, y, 0, 0),
+//                     fgColor(fg), bgColor(bg), text(s) {}
+//4FF0 -> 010011 11111 10000 -> 0100 1101 1111 1111 1000 0100 -> 4D FF 84
+//FE10 -> 111111 10000 10000 -> 1111 1111 1000 0100 1000 0100 -> FF 84 84
+               Text(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+                       fgColor(0xFF8484FF), bgColor(0xFF84FF4D) {}
+               Text(uint32 x, uint32 y, string s, uint32 fg = 0xFF8484FF, uint32 bg = 0xFF84FF4D):
+                       Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(s) {}
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y) {}
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+
+       protected:
+               uint32 fgColor, bgColor;
+               string text;
+};
+
+void Text::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       if (text.length() > 0)
+//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
+               DrawStringOpaque(screenBuffer, extents.x + offsetX, extents.y + offsetY, fgColor, bgColor, "%s", text.c_str());
+}
+
+
+//
+// Static image class
+//
+
+class Image: public Element
+{
+       public:
+               Image(uint32 x, uint32 y, const void * img): Element(x, y, 0, 0), image(img) {}
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y) {}
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+
+       protected:
+               uint32 fgColor, bgColor;
+               const void * image;
+};
+
+void Image::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       if (image != NULL)
+               DrawTransparentBitmap(screenBuffer, extents.x + offsetX, extents.y + offsetY, image);
+}
+
+
+//
+// TextEdit class
+//
+
+class TextEdit: public Element
+{
+       public:
+               TextEdit(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+                       fgColor(0xFF8484FF), bgColor(0xFF84FF4D), text(""), caretPos(0),
+                       maxScreenSize(10) {}
+               TextEdit(uint32 x, uint32 y, string s, uint32 mss = 10, uint32 fg = 0xFF8484FF,
+                       uint32 bg = 0xFF84FF4D): Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(s),
+                       caretPos(0), maxScreenSize(mss) {}
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y) {}
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+
+       protected:
+               uint32 fgColor, bgColor;
+               string text;
+               uint32 caretPos;
+               uint32 maxScreenSize;
+};
+
+//Set different filters depending on type passed in on construction, e.g., filename, amount, etc...?
+void TextEdit::HandleKey(SDLKey key)
+{
+       if ((key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_0 && key <= SDLK_9) || key == SDLK_PERIOD
+               || key == SDLK_SLASH)
+       {
+               //Need to handle shift key as well...
+               text[caretPos++] = key;
+               Draw();
+       }
+       else if (key == SDLK_BACKSPACE)
+       {
+               
+       }
+       else if (key == SDLK_DELETE)
+       {
+       }
+//left, right arrow
+}
+
+void TextEdit::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       if (text.length() > 0)
+       {
+               FillScreenRectangle(screenBuffer, extents.x + offsetX, extents.y + offsetY, FONT_WIDTH * maxScreenSize, FONT_HEIGHT, bgColor);
+//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY, false, "%s", text.c_str());
+               DrawStringOpaque(screenBuffer, extents.x + offsetX, extents.y + offsetY, fgColor, bgColor, "%s", text.c_str());
+       }
+
+       // Draw the caret (underscore? or vertical line?)
+}
+
+
+//
+// ListBox class
+//
+
+class ListBox: public Element
+//class ListBox: public Window
+{
+       public:
+//             ListBox(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0): Element(x, y, w, h),
+               ListBox(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);//: Window(x, y, w, h),
+//             windowPtr(0), cursor(0), limit(0), charWidth((w / 8) - 1), charHeight(h / 8),
+//             elementToTell(NULL), upArrow(w - 8, 0, upArrowBox),
+//             downArrow(w - 8, h - 8, downArrowBox), upArrow2(w - 8, h - 16, upArrowBox) {}
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element * e);
+               void SetNotificationElement(Element * e) { elementToTell = e; }
+               void AddItem(string s);
+               string GetSelectedItem(void);
+
+       protected:
+               bool thumbClicked;
+               uint32 windowPtr, cursor, limit;
+               uint32 charWidth, charHeight;                           // Box width/height in characters
+               Element * elementToTell;
+               Button upArrow, downArrow, upArrow2;
+               vector<string> item;
+
+       private:
+               uint32 yRelativePoint;
+};
+
+ListBox::ListBox(uint32 x, uint32 y, uint32 w, uint32 h): Element(x, y, w, h),
+       thumbClicked(false), windowPtr(0), cursor(0), limit(0), charWidth((w / FONT_WIDTH) - 1),
+       charHeight(h / FONT_HEIGHT), elementToTell(NULL), upArrow(w - 8, 0, upArrowBox),
+       downArrow(w - 8, h - 8, downArrowBox), upArrow2(w - 8, h - 16, upArrowBox)
+{
+       upArrow.SetNotificationElement(this);
+       downArrow.SetNotificationElement(this);
+       upArrow2.SetNotificationElement(this);
+       extents.w -= 8;                                                                 // Make room for scrollbar...
+}
+
+void ListBox::HandleKey(SDLKey key)
+{
+       if (key == SDLK_DOWN)
+       {
+               if (cursor != limit - 1)        // Cursor is within its window
+                       cursor++;
+               else                                            // Otherwise, scroll the window...
+               {
+                       if (cursor + windowPtr != item.size() - 1)
+                               windowPtr++;
+               }
+       }
+       else if (key == SDLK_UP)
+       {
+               if (cursor != 0)
+                       cursor--;
+               else
+               {
+                       if (windowPtr != 0)
+                               windowPtr--;
+               }
+       }
+       else if (key == SDLK_PAGEDOWN)
+       {
+               if (cursor != limit - 1)
+                       cursor = limit - 1;
+               else
+               {
+                       windowPtr += limit;
+                       if (windowPtr > item.size() - limit)
+                               windowPtr = item.size() - limit;
+               }
+       }
+       else if (key == SDLK_PAGEUP)
+       {
+               if (cursor != 0)
+                       cursor = 0;
+               else
+               {
+                       if (windowPtr < limit)
+                               windowPtr = 0;
+                       else
+                               windowPtr -= limit;
+               }
+       }
+       else if (key >= SDLK_a && key <= SDLK_z)
+       {
+               // Advance cursor to filename with first letter pressed...
+               uint8 which = (key - SDLK_a) + 65;      // Convert key to A-Z char
+
+               for(uint32 i=0; i<item.size(); i++)
+               {
+                       if ((item[i][0] & 0xDF) == which)
+                       {
+                               cursor = i - windowPtr;
+                               if (i > windowPtr + limit - 1)
+                                       windowPtr = i - limit + 1, cursor = limit - 1;
+                               if (i < windowPtr)
+                                       windowPtr = i, cursor = 0;
+                               break;
+                       }
+               }
+       }
+}
+
+void ListBox::HandleMouseMove(uint32 x, uint32 y)
+{
+       upArrow.HandleMouseMove(x - extents.x, y - extents.y);
+       downArrow.HandleMouseMove(x - extents.x, y - extents.y);
+       upArrow2.HandleMouseMove(x - extents.x, y - extents.y);
+
+       if (thumbClicked)
+       {
+               uint32 sbHeight = extents.h - 24,
+                       thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight);
+
+//yRelativePoint is the spot on the thumb where we clicked...
+               int32 newThumbStart = y - yRelativePoint;
+
+               if (newThumbStart < 0)
+                       newThumbStart = 0;
+
+               if ((uint32)newThumbStart > sbHeight - thumb)
+                       newThumbStart = sbHeight - thumb;
+
+               windowPtr = (uint32)(((float)newThumbStart / (float)sbHeight) * (float)item.size());
+//Check for cursor bounds as well... Or do we need to???
+//Actually, we don't...!
+       }
+}
+
+void ListBox::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       if (Inside(x, y) && mouseDown)
+       {
+               // Why do we have to do this??? (- extents.y?)
+               // I guess it's because only the Window class has offsetting implemented... !!! FIX !!!
+//             cursor = (y - extents.y) / 8;
+               cursor = (y - extents.y) / FONT_HEIGHT;
+       }
+
+       // Check for a hit on the scrollbar...
+       if (x > (uint32)(extents.x + extents.w) && x <= (uint32)(extents.x + extents.w + 8)
+               && y > (uint32)(extents.y + 8) && y <= (uint32)(extents.y + extents.h - 16))
+       {
+               if (mouseDown)
+               {
+// This shiaut should be calculated in AddItem(), not here... (or in Draw() for that matter)
+                       uint32 sbHeight = extents.h - 24,
+                               thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight),
+                               thumbStart = (uint32)(((float)windowPtr / (float)item.size()) * (float)sbHeight);
+
+                       // Did we hit the thumb?
+                       if (y >= (extents.y + 8 + thumbStart) && y < (extents.y + 8 + thumbStart + thumb))
+                               thumbClicked = true, yRelativePoint = y - thumbStart;
+               }
+//Seems that this is useless--never reached except in rare cases and that the code outside is
+//more effective...
+//             else
+//                     thumbClicked = false;
+       }
+
+       if (!mouseDown)
+               thumbClicked = false;
+
+       upArrow.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+       downArrow.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+       upArrow2.HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+}
+
+void ListBox::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       for(uint32 i=0; i<limit; i++)
+       {
+               // Strip off the extension
+               // (extension stripping should be an option, not default!)
+               string s(item[windowPtr + i], 0, item[windowPtr + i].length() - 4);
+//             DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY + i*8,
+               DrawString(screenBuffer, extents.x + offsetX, extents.y + offsetY + i*FONT_HEIGHT,
+                       (cursor == i ? true : false), "%-*.*s", charWidth, charWidth, s.c_str());
+       }
+
+       upArrow.Draw(extents.x + offsetX, extents.y + offsetY);
+       downArrow.Draw(extents.x + offsetX, extents.y + offsetY);
+       upArrow2.Draw(extents.x + offsetX, extents.y + offsetY);
+
+       uint32 sbHeight = extents.h - 24,
+               thumb = (uint32)(((float)limit / (float)item.size()) * (float)sbHeight),
+               thumbStart = (uint32)(((float)windowPtr / (float)item.size()) * (float)sbHeight);
+
+       for(uint32 y=extents.y+offsetY+8; y<extents.y+offsetY+extents.h-16; y++)
+       {
+//             for(uint32 x=extents.x+offsetX+extents.w-8; x<extents.x+offsetX+extents.w; x++)
+               for(uint32 x=extents.x+offsetX+extents.w; x<extents.x+offsetX+extents.w+8; x++)
+               {
+                       if (y >= thumbStart + (extents.y+offsetY+8) && y < thumbStart + thumb + (extents.y+offsetY+8))
+//                             screenBuffer[x + (y * pitch)] = (thumbClicked ? 0x458E : 0xFFFF);
+//458E -> 01 0001  0 1100  0 1110 -> 0100 0101  0110 0011  0111 0011 -> 45 63 73
+                               screenBuffer[x + (y * pitch)] = (thumbClicked ? 0xFF736345 : 0xFFFFFFFF);
+                       else
+//                             screenBuffer[x + (y * pitch)] = 0x0200;
+//0200 -> 000000 10000 00000 -> 00 1000 0100 00
+                               screenBuffer[x + (y * pitch)] = 0xFF008400;
+               }
+       }
+}
+
+void ListBox::Notify(Element * e)
+{
+       if (e == &upArrow || e == &upArrow2)
+       {
+               if (windowPtr != 0)
+               {
+                       windowPtr--;
+
+                       if (cursor < limit - 1)
+                               cursor++;
+               }
+       }
+       else if (e == &downArrow)
+       {
+               if (windowPtr < item.size() - limit)
+               {
+                       windowPtr++;
+
+                       if (cursor != 0)
+                               cursor--;
+               }
+       }
+}
+
+void ListBox::AddItem(string s)
+{
+       // Do a simple insertion sort
+       bool inserted = false;
+
+       for(vector<string>::iterator i=item.begin(); i<item.end(); i++)
+       {
+               if (stringCmpi(s, *i) == -1)
+               {
+                       item.insert(i, s);
+                       inserted = true;
+                       break;
+               }
+       }
+
+       if (!inserted)
+               item.push_back(s);
+
+       limit = (item.size() > charHeight ? charHeight : item.size());
+}
+
+string ListBox::GetSelectedItem(void)
+{
+       return item[windowPtr + cursor];
+}
+
+
+//
+// FileList class
+//
+
+class FileList: public Window
+{
+       public:
+               FileList(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0);
+               virtual ~FileList() {}
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y) { Window::HandleMouseMove(x, y); }
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) { Window::HandleMouseButton(x, y, mouseDown); }
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0) { Window::Draw(offsetX, offsetY); }
+               virtual void Notify(Element * e);
+
+       protected:
+               ListBox * files;
+               Button * load;
+};
+
+//Need 4 buttons, one scrollbar...
+FileList::FileList(uint32 x, uint32 y, uint32 w, uint32 h): Window(x, y, w, h)
+{
+       files = new ListBox(8, 8, w - 16, h - 32);
+       AddElement(files);
+       load = new Button(8, h - 16, " Load ");
+       AddElement(load);
+       load->SetNotificationElement(this);
+
+//!!! FIX !!! Directory might not exist--this shouldn't cause VJ to crash!
+       DIR * dp = opendir(vjs.ROMPath);
+       dirent * de;
+
+       if (dp != NULL)
+       {
+               while ((de = readdir(dp)) != NULL)
+               {
+                       char * ext = strrchr(de->d_name, '.');
+       
+                       if (ext != NULL)
+                               if (strcasecmp(ext, ".zip") == 0 || strcasecmp(ext, ".j64") == 0
+                                       || strcasecmp(ext, ".abs") == 0 || strcasecmp(ext, ".jag") == 0
+                                       || strcasecmp(ext, ".rom") == 0)
+                                       files->AddItem(string(de->d_name));
+               }
+       
+               closedir(dp);
+       }
+       else
+       {
+//Give a diagnostic message here so that the (l)user can figure out what went wrong. !!! FIX !!!
+       }
+}
+
+void FileList::HandleKey(SDLKey key)
+{
+       if (key == SDLK_RETURN)
+               Notify(load);
+       else
+               Window::HandleKey(key);
+}
+
+void FileList::Notify(Element * e)
+{
+       if (e == load)
+       {
+               char filename[MAX_PATH];
+               strcpy(filename, vjs.ROMPath);
+
+               if (strlen(filename) > 0)
+                       if (filename[strlen(filename) - 1] != '/')
+                               strcat(filename, "/");
+
+               strcat(filename, files->GetSelectedItem().c_str());
+
+//             uint32 romSize = JaguarLoadROM(jaguar_mainRom, filename);
+//             JaguarLoadCart(jaguar_mainRom, filename);
+               if (JaguarLoadFile(filename))
+               {
+                       SDL_Event event;
+                       event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+                       SDL_PushEvent(&event);
+
+                       event.type = SDL_USEREVENT, event.user.code = MENU_ITEM_CHOSEN;
+                       event.user.data1 = (void *)ResetJaguar;
+               SDL_PushEvent(&event);
+               }
+               else
+               {
+                       SDL_Event event;
+                       event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+                       SDL_PushEvent(&event);
+
+                       // Handle the error, but don't run...
+                       // Tell the user that we couldn't run their file for some reason... !!! FIX !!!
+//how to kludge: Make a function like ResetJaguar which creates the dialog window
+               }
+       }
+       else
+               Window::Notify(e);
+}
+
+
+//
+// Menu class & supporting structs/classes
+//
+
+struct NameAction
+{
+       string name;
+       Window * (* action)(void);
+       SDLKey hotKey;
+
+       NameAction(string n, Window * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN): name(n),
+               action(a), hotKey(k) {}
+};
+
+class MenuItems
+{
+       public:
+               MenuItems(): charLength(0) {}
+               bool Inside(uint32 x, uint32 y)
+               { return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
+               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false); }
+
+               string title;
+               vector<NameAction> item;
+               uint32 charLength;
+               SDL_Rect extents;
+};
+
+class Menu: public Element
+{
+       public:
+// 1CFF -> 0 001 11 00  111 1 1111 
+// 421F -> 0 100 00 10  000 1 1111
+               Menu(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = FONT_HEIGHT,
+/*                     uint16 fgc = 0x1CFF, uint16 bgc = 0x000F, uint16 fgch = 0x421F,
+                       uint16 bgch = 0x1CFF): Element(x, y, w, h), activated(false), clicked(false),*/
+/*                     uint32 fgc = 0xFF3F3F00, uint32 bgc = 0x7F000000, uint32 fgch = 0xFF878700,
+                       uint32 bgch = 0xFF3F3F00): Element(x, y, w, h), activated(false), clicked(false),*/
+/*                     uint32 fgc = 0xFFFF3F3F, uint32 bgc = 0xFF7F0000, uint32 fgch = 0xFFFF8787,
+                       uint32 bgch = 0xFFFF3F3F): Element(x, y, w, h), activated(false), clicked(false),*/
+                       uint32 fgc = 0xFF7F0000, uint32 bgc = 0xFFFF3F3F, uint32 fgch = 0xFFFF3F3F,
+                       uint32 bgch = 0xFFFF8787): Element(x, y, w, h), activated(false), clicked(false),
+                       inside(0), insidePopup(0), fgColor(fgc), bgColor(bgc), fgColorHL(fgch),
+                       bgColorHL(bgch), menuChosen(-1), menuItemChosen(-1) {}
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0);
+               virtual void Notify(Element *) {}
+               void Add(MenuItems mi);
+
+       protected:
+               bool activated, clicked;
+               uint32 inside, insidePopup;
+//             uint16 fgColor, bgColor, fgColorHL, bgColorHL;
+               uint32 fgColor, bgColor, fgColorHL, bgColorHL;
+               int menuChosen, menuItemChosen;
+
+       private:
+               vector<MenuItems> itemList;
+};
+
+void Menu::HandleKey(SDLKey key)
+{
+       for(uint32 i=0; i<itemList.size(); i++)
+       {
+               for(uint32 j=0; j<itemList[i].item.size(); j++)
+               {
+                       if (itemList[i].item[j].hotKey == key)
+                       {
+                               SDL_Event event;
+                               event.type = SDL_USEREVENT;
+                               event.user.code = MENU_ITEM_CHOSEN;
+                               event.user.data1 = (void *)itemList[i].item[j].action;
+                       SDL_PushEvent(&event);
+
+                               clicked = false, menuChosen = menuItemChosen = -1;
+                               break;
+                       }
+               }
+       }
+}
+
+void Menu::HandleMouseMove(uint32 x, uint32 y)
+{
+       inside = insidePopup = 0;
+
+       if (Inside(x, y))
+       {
+               // Find out *where* we are inside the menu bar
+               uint32 xpos = extents.x;
+
+               for(uint32 i=0; i<itemList.size(); i++)
+               {
+                       uint32 width = (itemList[i].title.length() + 2) * FONT_WIDTH;
+
+                       if (x >= xpos && x < xpos + width)
+                       {
+                               inside = i + 1;
+                               menuChosen = i;
+                               break;
+                       }
+
+                       xpos += width;
+               }
+       }
+
+       if (!Inside(x, y) && !clicked)
+       {
+               menuChosen = -1;
+       }
+
+       if (itemList[menuChosen].Inside(x, y) && clicked)
+       {
+               insidePopup = ((y - itemList[menuChosen].extents.y) / FONT_HEIGHT) + 1;
+               menuItemChosen = insidePopup - 1;
+       }
+}
+
+void Menu::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       if (!clicked)
+       {
+               if (mouseDown)
+               {
+                       if (inside)
+                               clicked = true;
+                       else
+                               menuChosen = -1;                                        // clicked is already false...!
+               }
+       }
+       else                                                                                    // clicked == true
+       {
+               if (insidePopup && !mouseDown)                          // I.e., mouse-button-up
+               {
+                       activated = true;
+                       if (itemList[menuChosen].item[menuItemChosen].action != NULL)
+                       {
+//                             itemList[menuChosen].item[menuItemChosen].action();
+                               SDL_Event event;
+                               event.type = SDL_USEREVENT;
+                               event.user.code = MENU_ITEM_CHOSEN;
+                               event.user.data1 = (void *)itemList[menuChosen].item[menuItemChosen].action;
+                           SDL_PushEvent(&event);
+
+                               clicked = false, menuChosen = menuItemChosen = -1;
+
+/*                             SDL_Event event;
+                               while (SDL_PollEvent(&event));          // Flush the event queue...
+                               event.type = SDL_MOUSEMOTION;
+                               int mx, my;
+                               SDL_GetMouseState(&mx, &my);
+                               event.motion.x = mx, event.motion.y = my;
+                           SDL_PushEvent(&event);                              // & update mouse position...!
+*/                     }
+               }
+
+               if (!inside && !insidePopup && mouseDown)
+                       clicked = false, menuChosen = menuItemChosen = -1;
+       }
+}
+
+void Menu::Draw(uint32 offsetX/*= 0*/, uint32 offsetY/*= 0*/)
+{
+       uint32 xpos = extents.x + offsetX;
+
+       for(uint32 i=0; i<itemList.size(); i++)
+       {
+//             uint16 color1 = fgColor, color2 = bgColor;
+               uint32 color1 = fgColor, color2 = bgColor;
+               if (inside == (i + 1) || (menuChosen != -1 && (uint32)menuChosen == i))
+                       color1 = fgColorHL, color2 = bgColorHL;
+
+               DrawStringOpaque(screenBuffer, xpos, extents.y + offsetY, color1, color2,
+                       " %s ", itemList[i].title.c_str());
+               xpos += (itemList[i].title.length() + 2) * FONT_WIDTH;
+       }
+
+       // Draw sub menu (but only if active)
+       if (clicked)
+       {
+               uint32 ypos = extents.y + FONT_HEIGHT + 1;
+
+               for(uint32 i=0; i<itemList[menuChosen].item.size(); i++)
+               {
+//                     uint16 color1 = fgColor, color2 = bgColor;
+                       uint32 color1 = fgColor, color2 = bgColor;
+
+                       if (insidePopup == i + 1)
+                               color1 = fgColorHL, color2 = bgColorHL, menuItemChosen = i;
+
+                       if (itemList[menuChosen].item[i].name.length() > 0)
+                               DrawStringOpaque(screenBuffer, itemList[menuChosen].extents.x, ypos,
+                                       color1, color2, " %-*.*s ", itemList[menuChosen].charLength,
+                                       itemList[menuChosen].charLength, itemList[menuChosen].item[i].name.c_str());
+                       else
+                               DrawStringOpaque(screenBuffer, itemList[menuChosen].extents.x, ypos,
+                                       fgColor, bgColor, "%.*s", itemList[menuChosen].charLength + 2, separator);
+
+                       ypos += FONT_HEIGHT;
+               }
+       }
+}
+
+void Menu::Add(MenuItems mi)
+{
+       for(uint32 i=0; i<mi.item.size(); i++)
+               if (mi.item[i].name.length() > mi.charLength)
+                       mi.charLength = mi.item[i].name.length();
+
+       // Set extents here as well...
+       mi.extents.x = extents.x + extents.w, mi.extents.y = extents.y + FONT_HEIGHT + 1;
+       mi.extents.w = (mi.charLength + 2) * FONT_WIDTH, mi.extents.h = mi.item.size() * FONT_HEIGHT;
+
+       itemList.push_back(mi);
+       extents.w += (mi.title.length() + 2) * FONT_WIDTH;
+}
+
+
+//Do we even *need* this?
+//Doesn't seem like it...
+/*class RootWindow: public Window
+{
+       public:
+               RootWindow(Menu * m, Window * w = NULL): menu(m), window(w) {}
+//Do we even need to care about this crap?
+//                     { extents.x = extents.y = 0, extents.w = 320, extents.h = 240; }
+               virtual void HandleKey(SDLKey key) {}
+               virtual void HandleMouseMove(uint32 x, uint32 y) {}
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) {}
+               virtual void Draw(uint32 offsetX = 0, uint32 offsetY = 0) {}
+               virtual void Notify(Element *) {}
+
+       private:
+               Menu * menu;
+               Window * window;
+               int16 * rootImage[1280 * 240 * 2];
+};//*/
+
+
+//
+// Draw text at the given x/y coordinates. Can invert text as well.
+//
+void DrawString(uint32 * screen, uint32 x, uint32 y, bool invert, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
+       uint32 length = strlen(string), address = x + (y * pitch);
+
+       uint32 color1 = 0x0080FF;
+       uint8 nBlue = (color1 >> 16) & 0xFF, nGreen = (color1 >> 8) & 0xFF, nRed = color1 & 0xFF;
+       uint8 xorMask = (invert ? 0xFF : 0x00);
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint8 c = string[i];
+               uint32 fontAddr = (uint32)(c < 32 ? 0 : c - 32) * FONT_WIDTH * FONT_HEIGHT;
+
+               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
+               {
+                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
+                       {
+                               uint32 existingColor = *(screen + address + xx + (yy * pitch));
+
+                               uint8 eBlue = (existingColor >> 16) & 0xFF,
+                                       eGreen = (existingColor >> 8) & 0xFF,
+                                       eRed = existingColor & 0xFF;
+
+                               uint8 trans = font2[fontAddr] ^ xorMask;
+                               uint8 invTrans = trans ^ 0xFF;
+
+                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255,
+                                       bGreen = (eGreen * invTrans + nGreen * trans) / 255,
+                                       bBlue = (eBlue * invTrans + nBlue * trans) / 255;
+
+                               *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
+                               fontAddr++;
+                       }
+               }
+
+               address += FONT_WIDTH;
+       }
+}
+
+//
+// Draw text at the given x/y coordinates, using FG/BG colors.
+//
+void DrawStringOpaque(uint32 * screen, uint32 x, uint32 y, uint32 color1, uint32 color2, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();
+       uint32 length = strlen(string), address = x + (y * pitch);
+
+       uint8 eBlue = (color2 >> 16) & 0xFF, eGreen = (color2 >> 8) & 0xFF, eRed = color2 & 0xFF,
+               nBlue = (color1 >> 16) & 0xFF, nGreen = (color1 >> 8) & 0xFF, nRed = color1 & 0xFF;
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint8 c = string[i];
+               c = (c < 32 ? 0 : c - 32);
+               uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;
+
+               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
+               {
+                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
+                       {
+                               uint8 trans = font2[fontAddr++];
+                               uint8 invTrans = trans ^ 0xFF;
+
+                               uint32 bRed   = (eRed   * invTrans + nRed   * trans) / 255;
+                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
+                               uint32 bBlue  = (eBlue  * invTrans + nBlue  * trans) / 255;
+
+                               *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
+                       }
+               }
+
+               address += FONT_WIDTH;
+       }
+}
+
+//
+// Draw text at the given x/y coordinates with transparency (0 is fully opaque, 32 is fully transparent).
+//
+void DrawStringTrans(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 trans, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
+       uint32 length = strlen(string), address = x + (y * pitch);
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint32 fontAddr = (uint32)string[i] * 64;
+
+               for(uint32 yy=0; yy<8; yy++)
+               {
+                       for(uint32 xx=0; xx<8; xx++)
+                       {
+                               if (font1[fontAddr])
+                               {
+                                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
+
+                                       uint8 eBlue = (existingColor >> 16) & 0xFF,
+                                               eGreen = (existingColor >> 8) & 0xFF,
+                                               eRed = existingColor & 0xFF,
+//This could be done ahead of time, instead of on each pixel...
+                                               nBlue = (color >> 16) & 0xFF,
+                                               nGreen = (color >> 8) & 0xFF,
+                                               nRed = color & 0xFF;
+
+//This could be sped up by using a table of 5 + 5 + 5 bits (32 levels transparency -> 32768 entries)
+//Here we've modified it to have 33 levels of transparency (could have any # we want!)
+//because dividing by 32 is faster than dividing by 31...!
+                                       uint8 invTrans = 32 - trans;
+
+                                       uint32 bRed = (eRed * trans + nRed * invTrans) / 32;
+                                       uint32 bGreen = (eGreen * trans + nGreen * invTrans) / 32;
+                                       uint32 bBlue = (eBlue * trans + nBlue * invTrans) / 32;
+
+                                       *(screen + address + xx + (yy * pitch)) = 0xFF000000 | (bBlue << 16) | (bGreen << 8) | bRed;
+                               }
+
+                               fontAddr++;
+                       }
+               }
+
+               address += 8;
+       }
+}
+
+//
+// Draw text at the given x/y coordinates, using FG color and overlay alpha blending.
+//
+void DrawString2(uint32 * screen, uint32 x, uint32 y, uint32 color, uint8 transparency, const char * text, ...)
+{
+       char string[4096];
+       va_list arg;
+
+       va_start(arg, text);
+       vsprintf(string, text, arg);
+       va_end(arg);
+
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();
+       uint32 length = strlen(string), address = x + (y * pitch);
+
+       color &= 0x00FFFFFF;                                            // Just in case alpha was passed in...
+
+       for(uint32 i=0; i<length; i++)
+       {
+               uint8 c = string[i];
+               c = (c < 32 ? 0 : c - 32);
+               uint32 fontAddr = (uint32)c * FONT_WIDTH * FONT_HEIGHT;
+
+               for(uint32 yy=0; yy<FONT_HEIGHT; yy++)
+               {
+                       for(uint32 xx=0; xx<FONT_WIDTH; xx++)
+                       {
+                               uint8 fontTrans = font2[fontAddr++];
+                               uint32 newTrans = (fontTrans * transparency / 255) << 24;
+                               uint32 pixel = newTrans | color;
+
+                               *(screen + address + xx + (yy * pitch)) = pixel;
+                       }
+               }
+
+               address += FONT_WIDTH;
+       }
+}
+
+//
+// Draw "picture"
+// Uses zero as transparent color
+// Can also use an optional alpha channel
+// Alpha channel is now mandatory! ;-)
+//
+//void DrawTransparentBitmap(int16 * screen, uint32 x, uint32 y, uint16 * bitmap, uint8 * alpha/*=NULL*/)
+/*void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap, uint8 * alpha)
+{
+       uint32 width = bitmap[0], height = bitmap[1];
+       bitmap += 2;
+
+//     uint32 pitch = GetSDLScreenPitch() / 2;                 // Returns pitch in bytes but we need words...
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
+       uint32 address = x + (y * pitch);
+
+       for(uint32 yy=0; yy<height; yy++)
+       {
+               for(uint32 xx=0; xx<width; xx++)
+               {
+                       if (alpha == NULL)
+                       {
+                               if (*bitmap && x + xx < pitch)                  // NOTE: Still doesn't clip the Y val...
+                                       *(screen + address + xx + (yy * pitch)) = *bitmap;
+                       }
+                       else
+                       {
+                               uint8 trans = *alpha;
+                               uint32 color = *bitmap;
+                               uint32 existingColor = *(screen + address + xx + (yy * pitch));
+
+                               uint8 eRed = existingColor & 0xFF,
+                                       eGreen = (existingColor >> 8) & 0xFF,
+                                       eBlue = (existingColor >> 16) & 0xFF,
+
+                                       nRed = color & 0xFF,
+                                       nGreen = (color >> 8) & 0xFF,
+                                       nBlue = (color >> 16) & 0xFF;
+
+                               uint8 invTrans = 255 - trans;
+                               uint32 bRed = (eRed * trans + nRed * invTrans) / 255;
+                               uint32 bGreen = (eGreen * trans + nGreen * invTrans) / 255;
+                               uint32 bBlue = (eBlue * trans + nBlue * invTrans) / 255;
+
+                               uint32 blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
+
+                               *(screen + address + xx + (yy * pitch)) = blendedColor;
+
+                               alpha++;
+                       }
+
+                       bitmap++;
+               }
+       }
+}*/
+void DrawTransparentBitmapDeprecated(uint32 * screen, uint32 x, uint32 y, uint32 * bitmap)
+{
+       uint32 width = bitmap[0], height = bitmap[1];
+       bitmap += 2;
+
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();//GetSDLScreenWidthInPixels();
+       uint32 address = x + (y * pitch);
+
+       for(uint32 yy=0; yy<height; yy++)
+       {
+               for(uint32 xx=0; xx<width; xx++)
+               {
+                       uint32 color = *bitmap;
+                       uint32 blendedColor = color;
+                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
+
+                       if (existingColor >> 24 != 0x00)                // Pixel needs blending
+                       {
+                               uint8 trans = color >> 24;
+                               uint8 invTrans = trans ^ 0xFF;//255 - trans;
+
+                               uint8 eRed = existingColor & 0xFF,
+                                       eGreen = (existingColor >> 8) & 0xFF,
+                                       eBlue = (existingColor >> 16) & 0xFF,
+
+                                       nRed = color & 0xFF,
+                                       nGreen = (color >> 8) & 0xFF,
+                                       nBlue = (color >> 16) & 0xFF;
+
+                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255;
+                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
+                               uint32 bBlue = (eBlue * invTrans + nBlue * trans) / 255;
+
+                               blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
+                       }
+
+                       *(screen + address + xx + (yy * pitch)) = blendedColor;
+                       bitmap++;
+               }
+       }
+}
+
+void DrawTransparentBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap)
+{
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();
+       uint32 address = x + (y * pitch);
+       uint32 count = 0;
+
+       for(uint32 yy=0; yy<((Bitmap *)bitmap)->height; yy++)
+       {
+               for(uint32 xx=0; xx<((Bitmap *)bitmap)->width; xx++)
+               {
+                       uint32 color = ((uint32 *)((Bitmap *)bitmap)->pixelData)[count];
+                       uint32 blendedColor = color;
+                       uint32 existingColor = *(screen + address + xx + (yy * pitch));
+
+                       if (existingColor >> 24 != 0x00)        // Pixel needs blending
+                       {
+                               uint8 trans = color >> 24;
+                               uint8 invTrans = trans ^ 0xFF;
+
+                               uint8 eRed = existingColor & 0xFF,
+                                       eGreen = (existingColor >> 8) & 0xFF,
+                                       eBlue = (existingColor >> 16) & 0xFF,
+
+                                       nRed = color & 0xFF,
+                                       nGreen = (color >> 8) & 0xFF,
+                                       nBlue = (color >> 16) & 0xFF;
+
+                               uint32 bRed = (eRed * invTrans + nRed * trans) / 255;
+                               uint32 bGreen = (eGreen * invTrans + nGreen * trans) / 255;
+                               uint32 bBlue = (eBlue * invTrans + nBlue * trans) / 255;
+
+// Instead of $FF, should use the alpha from the destination pixel as the final alpha value...
+                               blendedColor = 0xFF000000 | bRed | (bGreen << 8) | (bBlue << 16);
+                       }
+
+                       *(screen + address + xx + (yy * pitch)) = blendedColor;
+                       count++;
+               }
+       }
+}
+
+//
+// Draw a bitmap without using blending
+//
+void DrawBitmap(uint32 * screen, uint32 x, uint32 y, const void * bitmap)
+{
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();
+       uint32 address = x + (y * pitch);
+       uint32 count = 0;
+
+       for(uint32 yy=0; yy<((Bitmap *)bitmap)->height; yy++)
+       {
+               for(uint32 xx=0; xx<((Bitmap *)bitmap)->width; xx++)
+               {
+                       *(screen + address + xx + (yy * pitch)) = ((uint32 *)((Bitmap *)bitmap)->pixelData)[count];
+                       count++;
+               }
+       }
+}
+
+//
+// Fill a portion of the screen with the passed in color
+//
+void FillScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h, uint32 color)
+//void ClearScreenRectangle(uint32 * screen, uint32 x, uint32 y, uint32 w, uint32 h)
+{
+       uint32 pitch = sdlemuGetOverlayWidthInPixels();
+       uint32 address = x + (y * pitch);
+
+       for(uint32 yy=0; yy<h; yy++)
+               for(uint32 xx=0; xx<w; xx++)
+                       *(screen + address + xx + (yy * pitch)) = color;
+}
+
+
+//
+// GUI stuff--it's not crunchy, it's GUI! ;-)
+//
+
+void InitGUI(void)
+{
+       SDL_ShowCursor(SDL_DISABLE);
+       SDL_GetMouseState(&mouseX, &mouseY);
+}
+
+void GUIDone(void)
+{
+}
+
+//
+// GUI main loop
+//
+//bool GUIMain(void)
+bool GUIMain(char * filename)
+{
+WriteLog("GUI: Inside GUIMain...\n");
+
+       uint32 pointerBGSave[6 * 8 + 2];
+       pointerBGSave[0] = 6;
+       pointerBGSave[1] = 8;
+
+// Need to set things up so that it loads and runs a file if given on the command line. !!! FIX !!! [DONE]
+       extern uint32 * backbuffer;
+//     bool done = false;
+       SDL_Event event;
+       Window * mainWindow = NULL;
+
+       // Set up the GUI classes...
+//     Element::SetScreenAndPitch(backbuffer, GetSDLScreenWidthInPixels());
+       Element::SetScreenAndPitch((uint32 *)sdlemuGetOverlayPixels(), sdlemuGetOverlayWidthInPixels());
+       sdlemuEnableOverlay();
+
+       Menu mainMenu;
+       MenuItems mi;
+       mi.title = "Jaguar";
+       mi.item.push_back(NameAction("Load...", LoadROM, SDLK_l));
+       mi.item.push_back(NameAction("Reset", ResetJaguar, SDLK_r));
+       if (CDBIOSLoaded)
+               mi.item.push_back(NameAction("Reset CD", ResetJaguarCD, SDLK_c));
+       mi.item.push_back(NameAction("Run", RunEmu, SDLK_ESCAPE));
+       mi.item.push_back(NameAction(""));
+       mi.item.push_back(NameAction("Quit", Quit, SDLK_q));
+       mainMenu.Add(mi);
+       mi.title = "Settings";
+       mi.item.clear();
+       mi.item.push_back(NameAction("Video..."));
+       mi.item.push_back(NameAction("Audio..."));
+       mi.item.push_back(NameAction("Misc...", MiscOptions, SDLK_m));
+       mainMenu.Add(mi);
+       mi.title = "Info";
+       mi.item.clear();
+       mi.item.push_back(NameAction("About...", About));
+       mainMenu.Add(mi);
+
+       bool showMouse = true;
+
+       // Grab the BG where the mouse will be painted (prime the backstore)
+
+/*
+DISNOWOK
+Bitmap ptr = { 6, 8, 4,
+""//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+//"000011112222333344445555"
+};//*/ 
+       uint32 * overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+       uint32 count = 2;
+
+       for(uint32 y=0; y<pointerBGSave[1]; y++)
+               for(uint32 x=0; x<pointerBGSave[0]; x++)
+                       pointerBGSave[count++] = overlayPixels[((mouseY + y) * sdlemuGetOverlayWidthInPixels()) + (mouseX + x)];
+
+       uint32 oldMouseX = mouseX, oldMouseY = mouseY;
+
+//This is crappy!!! !!! FIX !!!
+//Is this even needed any more? Hmm. Maybe. Dunno.
+WriteLog("GUI: Resetting Jaguar...\n");
+       jaguar_reset();
+
+WriteLog("GUI: Clearing BG save...\n");
+       // Set up our background save...
+//     memset(background, 0x11, tom_getVideoModeWidth() * 240 * 2);
+//1111 -> 000100 01000 10001 -> 0001 0000 0100 0010 1000 1100 -> 10 42 8C
+       for(uint32 i=0; i<tom_getVideoModeWidth()*240; i++)
+//             background[i] = 0xFF8C4210;
+               backbuffer[i] = 0xFF8C4210;
+
+/*     uint32 * overlayPix = (uint32 *)sdlemuGetOverlayPixels();
+       for(uint32 i=0; i<sdlemuGetOverlayWidthInPixels()*480; i++)
+               overlayPix[i] = 0x00000000;*/
+
+       // Handle loading file passed in on the command line...! [DONE]
+
+       if (filename)
+       {
+               if (JaguarLoadFile(filename))
+               {
+//                     event.type = SDL_USEREVENT, event.user.code = MENU_ITEM_CHOSEN;
+//                     event.user.data1 = (void *)ResetJaguar;
+//             SDL_PushEvent(&event);
+                       // Make it so that if passed in on the command line, we quit right
+                       // away when pressing ESC
+WriteLog("GUI: Bypassing GUI since ROM passed in on command line...\n");
+                       ResetJaguar();
+                       return true;
+               }
+               else
+               {
+                       // Create error dialog...
+                       char errText[1024];
+                       sprintf(errText, "The file %40s could not be loaded.", filename);
+
+                       mainWindow = new Window(8, 16, 304, 160);
+                       mainWindow->AddElement(new Text(8, 8, "Error!"));
+                       mainWindow->AddElement(new Text(8, 24, errText));
+               }
+       }
+
+WriteLog("GUI: Entering main loop...\n");
+       while (!exitGUI)
+       {
+               if (SDL_PollEvent(&event))
+               {
+                       if (event.type == SDL_USEREVENT)
+                       {
+                               if (event.user.code == WINDOW_CLOSE)
+                               {
+                                       delete mainWindow;
+                                       mainWindow = NULL;
+                               }
+                               else if (event.user.code == MENU_ITEM_CHOSEN)
+                               {
+                                       // Confused? Let me enlighten... What we're doing here is casting
+                                       // data1 as a pointer to a function which returns a Window pointer and
+                                       // which takes no parameters (the "(Window *(*)(void))" part), then
+                                       // derefencing it (the "*" in front of that) in order to call the
+                                       // function that it points to. Clear as mud? Yeah, I hate function
+                                       // pointers too, but what else are you gonna do?
+                                       mainWindow = (*(Window *(*)(void))event.user.data1)();
+
+                                       while (SDL_PollEvent(&event));  // Flush the event queue...
+                                       event.type = SDL_MOUSEMOTION;
+                                       int mx, my;
+                                       SDL_GetMouseState(&mx, &my);
+                                       event.motion.x = mx, event.motion.y = my;
+                                   SDL_PushEvent(&event);                      // & update mouse position...!
+
+                                       oldMouseX = mouseX, oldMouseY = mouseY;
+                                       mouseX = mx, mouseY = my;               // This prevents "mouse flash"...
+                               }
+                       }
+                       else if (event.type == SDL_ACTIVEEVENT)
+                       {
+                               if (event.active.state == SDL_APPMOUSEFOCUS)
+                                       showMouse = (event.active.gain ? true : false);
+                       }
+                       else if (event.type == SDL_KEYDOWN)
+                       {
+                               if (mainWindow)
+                                       mainWindow->HandleKey(event.key.keysym.sym);
+                               else
+                                       mainMenu.HandleKey(event.key.keysym.sym);
+                       }
+                       else if (event.type == SDL_MOUSEMOTION)
+                       {
+                               oldMouseX = mouseX, oldMouseY = mouseY;
+                               mouseX = event.motion.x, mouseY = event.motion.y;
+
+                               if (mainWindow)
+                                       mainWindow->HandleMouseMove(mouseX, mouseY);
+                               else
+                                       mainMenu.HandleMouseMove(mouseX, mouseY);
+                       }
+                       else if (event.type == SDL_MOUSEBUTTONDOWN)
+                       {
+                               uint32 mx = event.button.x, my = event.button.y;
+
+                               if (mainWindow)
+                                       mainWindow->HandleMouseButton(mx, my, true);
+                               else
+                                       mainMenu.HandleMouseButton(mx, my, true);
+                       }
+                       else if (event.type == SDL_MOUSEBUTTONUP)
+                       {
+                               uint32 mx = event.button.x, my = event.button.y;
+
+                               if (mainWindow)
+                                       mainWindow->HandleMouseButton(mx, my, false);
+                               else
+                                       mainMenu.HandleMouseButton(mx, my, false);
+                       }
+
+//PROBLEM: In order to use the dirty rectangle approach here, we need some way of
+//         handling it in mainMenu.Draw() and mainWindow->Draw(). !!! FIX !!!
+//POSSIBLE SOLUTION:
+// When mouse is moving and not on menu or window, can do straight dirty rect.
+// When mouse is on menu, need to update screen. Same for buttons on windows...
+// What the menu & windows should do is only redraw on a state change. IOW, they
+// should call their own/child window's Draw() function instead of doing it top
+// level.
+//#define NEW_BACKSTORE_METHOD
+
+                       // Draw the GUI...
+// The way we do things here is kinda stupid (redrawing the screen every frame), but
+// it's simple. Perhaps there may be a reason down the road to be more selective with
+// our clearing, but for now, this will suffice.
+//                     memset(backbuffer, 0x11, tom_getVideoModeWidth() * 240 * 2);
+//                     memcpy(backbuffer, background, tom_getVideoModeWidth() * 256 * 2);
+//                     memcpy(backbuffer, background, tom_getVideoModeWidth() * 256 * 4);
+#ifndef NEW_BACKSTORE_METHOD
+                       memset(sdlemuGetOverlayPixels(), 0, sdlemuGetOverlayWidthInPixels() * 480 * 4);
+
+                       mainMenu.Draw();
+//Could do multiple windows here by using a vector + priority info...
+//Though the way ZSNES does it seems to be by a bool (i.e., they're always active, just not shown)
+                       if (mainWindow)
+                               mainWindow->Draw();
+#endif
+
+/*uint32 pBGS[6 * 8 + 3] = { 6, 8, 4,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0,
+       0, 0, 0, 0, 0, 0
+};*/
+//This isn't working... Why????
+//It's because DrawTransparentBitmap does alpha blending if it detects zero in the alpha channel.
+//So why do it that way? Hm.
+                       overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+
+#ifdef NEW_BACKSTORE_METHOD
+//                     DrawTransparentBitmapDeprecated(overlayPixels, oldMouseX, oldMouseY, pointerBGSave);
+//                     DrawTransparentBitmap(overlayPixels, oldMouseX, oldMouseY, pBGS);
+                       for(uint32 y=0; y<pointerBGSave[1]; y++)
+                               for(uint32 x=0; x<pointerBGSave[0]; x++)
+                                       overlayPixels[((oldMouseY + y) * sdlemuGetOverlayWidthInPixels()) + (oldMouseX + x)] = 0x00000000;
+
+                       count = 2;
+
+                       for(uint32 y=0; y<pointerBGSave[1]; y++)
+                               for(uint32 x=0; x<pointerBGSave[0]; x++)
+                                       pointerBGSave[count++] = overlayPixels[((mouseY + y) * sdlemuGetOverlayWidthInPixels()) + (mouseX + x)];
+#endif
+
+                       if (showMouse)
+//                             DrawTransparentBitmapDeprecated(backbuffer, mouseX, mouseY, mousePic);
+                               DrawTransparentBitmapDeprecated(overlayPixels, mouseX, mouseY, mousePic);
+
+                       RenderBackbuffer();
+               }
+       }
+
+       return true;
+}
+
+//
+// GUI "action" functions
+//
+
+Window * LoadROM(void)
+{
+       FileList * fileList = new FileList(20, 20, 600, 440);
+
+       return (Window *)fileList;
+}
+
+Window * ResetJaguar(void)
+{
+       jaguar_reset();
+
+       return RunEmu();
+}
+
+Window * ResetJaguarCD(void)
+{
+       memcpy(jaguar_mainRom, jaguar_CDBootROM, 0x40000);
+       jaguarRunAddress = 0x802000;
+       jaguar_mainRom_crc32 = crc32_calcCheckSum(jaguar_mainRom, 0x40000);
+       jaguar_reset();
+//This is a quick kludge to get the CDBIOS to boot properly...
+//Wild speculation: It could be that this memory location is wired into the CD unit
+//somehow, which lets it know whether or not a cart is present in the unit...
+       jaguar_mainRom[0x0040B] = 0x03;
+
+       return RunEmu();
+}
+
+
+#if 0
+
+bool debounceRunKey = true;
+Window * RunEmu(void)
+{
+       extern uint32 * backbuffer;
+//Temporary, to test the new timer based code...
+sdlemuDisableOverlay();
+JaguarExecuteNew();
+sdlemuEnableOverlay();
+       // Save the background for the GUI...
+       // In this case, we squash the color to monochrome, then force it to blue + green...
+       for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+       {
+               uint32 pixel = backbuffer[i];
+               uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+               pixel = ((r + g + b) / 3) & 0x00FF;
+               backbuffer[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+       }
+return NULL;//*/
+
+//This is crappy... !!! FIX !!!
+       extern bool finished, showGUI;
+
+//     uint32 nFrame = 0, nFrameskip = 0;
+       uint32 totalFrames = 0;
+       finished = false;
+       bool showMessage = true;
+       uint32 showMsgFrames = 120;
+       uint8 transparency = 0;
+       // Pass a message to the "joystick" code to debounce the ESC key...
+       debounceRunKey = true;
+
+       uint32 cartType = 4;
+       if (jaguarRomSize == 0x200000)
+               cartType = 0;
+       else if (jaguarRomSize == 0x400000)
+               cartType = 1;
+       else if (jaguar_mainRom_crc32 == 0x687068D5)
+               cartType = 2;
+       else if (jaguar_mainRom_crc32 == 0x55A0669C)
+               cartType = 3;
+
+       char * cartTypeName[5] = { "2M Cartridge", "4M Cartridge", "CD BIOS", "CD Dev BIOS", "Homebrew" };
+       uint32 elapsedTicks = SDL_GetTicks(), frameCount = 0, framesPerSecond = 0;
+
+       while (true)
+       {
+               // Set up new backbuffer with new pixels and data
+               JaguarExecute(backbuffer, true);
+//             JaguarExecuteNew();
+               totalFrames++;
+//WriteLog("Frame #%u...\n", totalFrames);
+//extern bool doDSPDis;
+//if (totalFrames == 373)
+//     doDSPDis = true;
+
+//This sucks... !!! FIX !!!
+               joystick_exec();
+//This is done here so that the crud below doesn't get on our GUI background...
+               if (finished)
+                       break;
+
+               // Some QnD GUI stuff here...
+               if (showGUI)
+               {
+                       extern uint32 gpu_pc, dsp_pc;
+                       DrawString(backbuffer, 8, 8, false, "GPU PC: %08X", gpu_pc);
+                       DrawString(backbuffer, 8, 16, false, "DSP PC: %08X", dsp_pc);
+                       DrawString(backbuffer, 8, 32, false, "%u FPS", framesPerSecond);
+               }
+
+               if (showMessage)
+               {
+// FF0F -> 1111 11 11  000 0 1111 -> 3F 18 0F
+// 3FE3 -> 0011 11 11  111 0 0011 -> 0F 3F 03
+/*                     DrawStringTrans((uint32 *)backbuffer, 8, 24*8, 0xFF0F, transparency, "Running...");
+                       DrawStringTrans((uint32 *)backbuffer, 8, 26*8, 0x3FE3, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+                       DrawStringTrans((uint32 *)backbuffer, 8, 27*8, 0x3FE3, transparency, "CRC: %08X", jaguar_mainRom_crc32);//*/
+//first has wrong color. !!! FIX !!!
+                       DrawStringTrans(backbuffer, 8, 24*8, 0xFF7F63FF, transparency, "Running...");
+                       DrawStringTrans(backbuffer, 8, 26*8, 0xFF1FFF3F, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+                       DrawStringTrans(backbuffer, 8, 27*8, 0xFF1FFF3F, transparency, "CRC: %08X", jaguar_mainRom_crc32);
+
+                       if (showMsgFrames == 0)
+                       {                       
+                               transparency++;
+
+                               if (transparency == 33)
+{
+                                       showMessage = false;
+/*extern bool doGPUDis;
+doGPUDis = true;//*/
+}
+
+                       }
+                       else
+                               showMsgFrames--;
+               }
+
+               RenderBackbuffer();
+               frameCount++;
+
+               if (SDL_GetTicks() - elapsedTicks > 250)
+                       elapsedTicks += 250, framesPerSecond = frameCount * 4, frameCount = 0;
+       }
+
+       // Reset the pitch, since it may have been changed in-game...
+       Element::SetScreenAndPitch((uint32 *)backbuffer, GetSDLScreenWidthInPixels());
+
+       // Save the background for the GUI...
+//     memcpy(background, backbuffer, tom_getVideoModeWidth() * 240 * 2);
+       // In this case, we squash the color to monochrome, then force it to blue + green...
+       for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+       {
+               uint32 pixel = backbuffer[i];
+               uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+               pixel = ((r + g + b) / 3) & 0x00FF;
+               background[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+       }
+
+       return NULL;
+}
+
+#else
+
+bool debounceRunKey = true;
+Window * RunEmu(void)
+{
+       extern uint32 * backbuffer;
+       uint32 * overlayPixels = (uint32 *)sdlemuGetOverlayPixels();
+       memset(overlayPixels, 0x00, 640 * 480 * 4);                     // Clear out overlay...
+
+//This is crappy... !!! FIX !!!
+       extern bool finished, showGUI;
+
+       sdlemuDisableOverlay();
+
+//     uint32 nFrame = 0, nFrameskip = 0;
+       uint32 totalFrames = 0;
+       finished = false;
+       bool showMessage = true;
+       uint32 showMsgFrames = 120;
+       uint8 transparency = 0xFF;
+       // Pass a message to the "joystick" code to debounce the ESC key...
+       debounceRunKey = true;
+
+       uint32 cartType = 4;
+       if (jaguarRomSize == 0x200000)
+               cartType = 0;
+       else if (jaguarRomSize == 0x400000)
+               cartType = 1;
+       else if (jaguar_mainRom_crc32 == 0x687068D5)
+               cartType = 2;
+       else if (jaguar_mainRom_crc32 == 0x55A0669C)
+               cartType = 3;
+
+       char * cartTypeName[5] = { "2M Cartridge", "4M Cartridge", "CD BIOS", "CD Dev BIOS", "Homebrew" };
+       uint32 elapsedTicks = SDL_GetTicks(), frameCount = 0, framesPerSecond = 0;
+
+       while (!finished)
+       {
+               // Set up new backbuffer with new pixels and data
+               JaguarExecuteNew();
+               totalFrames++;
+//WriteLog("Frame #%u...\n", totalFrames);
+//extern bool doDSPDis;
+//if (totalFrames == 373)
+//     doDSPDis = true;
+
+//Problem: Need to do this *only* when the state changes from visible to not...
+//Also, need to clear out the GUI when not on (when showMessage is active...)
+if (showGUI || showMessage)
+       sdlemuEnableOverlay();
+else
+       sdlemuDisableOverlay();
+
+//Add in a new function for clearing patches of screen (ClearOverlayRect)
+
+               // Some QnD GUI stuff here...
+               if (showGUI)
+               {
+                       FillScreenRectangle(overlayPixels, 8, 1*FONT_HEIGHT, 128, 4*FONT_HEIGHT, 0x00000000);
+                       extern uint32 gpu_pc, dsp_pc;
+                       DrawString(overlayPixels, 8, 1*FONT_HEIGHT, false, "GPU PC: %08X", gpu_pc);
+                       DrawString(overlayPixels, 8, 2*FONT_HEIGHT, false, "DSP PC: %08X", dsp_pc);
+                       DrawString(overlayPixels, 8, 4*FONT_HEIGHT, false, "%u FPS", framesPerSecond);
+               }
+
+               if (showMessage)
+               {
+                       DrawString2(overlayPixels, 8, 24*FONT_HEIGHT, 0x007F63FF, transparency, "Running...");
+                       DrawString2(overlayPixels, 8, 26*FONT_HEIGHT, 0x001FFF3F, transparency, "%s, run address: %06X", cartTypeName[cartType], jaguarRunAddress);
+                       DrawString2(overlayPixels, 8, 27*FONT_HEIGHT, 0x001FFF3F, transparency, "CRC: %08X", jaguar_mainRom_crc32);
+
+                       if (showMsgFrames == 0)
+                       {                       
+                               transparency--;
+
+                               if (transparency == 0)
+{
+                                       showMessage = false;
+/*extern bool doGPUDis;
+doGPUDis = true;//*/
+}
+
+                       }
+                       else
+                               showMsgFrames--;
+               }
+
+               frameCount++;
+
+               if (SDL_GetTicks() - elapsedTicks > 250)
+                       elapsedTicks += 250, framesPerSecond = frameCount * 4, frameCount = 0;
+       }
+
+       // Save the background for the GUI...
+       // In this case, we squash the color to monochrome, then force it to blue + green...
+       for(uint32 i=0; i<tom_getVideoModeWidth() * 256; i++)
+       {
+               uint32 pixel = backbuffer[i];
+               uint8 b = (pixel >> 16) & 0xFF, g = (pixel >> 8) & 0xFF, r = pixel & 0xFF;
+               pixel = ((r + g + b) / 3) & 0x00FF;
+               backbuffer[i] = 0xFF000000 | (pixel << 16) | (pixel << 8);
+       }
+
+       sdlemuEnableOverlay();
+
+       return NULL;
+}
+
+#endif
+
+
+Window * Quit(void)
+{
+       WriteLog("GUI: Quitting due to user request.\n");
+       exitGUI = true;
+
+       return NULL;
+}
+
+Window * About(void)
+{
+       char buf[512];
+//     sprintf(buf, "Virtual Jaguar CVS %s", __DATE__);
+       sprintf(buf, "CVS %s", __DATE__);
+//fprintf(fp, "VirtualJaguar v1.0.8 (Last full build was on %s %s)\n", __DATE__, __TIME__);
+//VirtualJaguar v1.0.8 (Last full build was on Dec 30 2004 20:01:31)
+//Hardwired, bleh... !!! FIX !!!
+uint32 width = 55 * FONT_WIDTH, height = 18 * FONT_HEIGHT;
+uint32 xpos = (640 - width) / 2, ypos = (480 - height) / 2;
+//     Window * window = new Window(8, 16, 50 * FONT_WIDTH, 21 * FONT_HEIGHT);
+       Window * window = new Window(xpos, ypos, width, height);
+//     window->AddElement(new Text(8, 8, "Virtual Jaguar 1.0.8"));
+//     window->AddElement(new Text(8, 8, "Virtual Jaguar CVS 20050110", 0xFF3030FF, 0xFF000000));
+//     window->AddElement(new Text(208, 8+0*FONT_HEIGHT, buf, 0xFF3030FF, 0xFF000000));
+       window->AddElement(new Text(248, 8+4*FONT_HEIGHT+5, buf, 0xFF3030FF, 0xFF000000));
+       window->AddElement(new Text(8, 8+0*FONT_HEIGHT, "Coders:"));
+       window->AddElement(new Text(16, 8+1*FONT_HEIGHT, "James L. Hammons (shamus)"));
+       window->AddElement(new Text(16, 8+2*FONT_HEIGHT, "Niels Wagenaar (nwagenaar)"));
+       window->AddElement(new Text(16, 8+3*FONT_HEIGHT, "Carwin Jones (Caz)"));
+       window->AddElement(new Text(16, 8+4*FONT_HEIGHT, "Adam Green"));
+       window->AddElement(new Text(8, 8+6*FONT_HEIGHT, "Testers:"));
+       window->AddElement(new Text(16, 8+7*FONT_HEIGHT, "Guruma"));
+       window->AddElement(new Text(8, 8+9*FONT_HEIGHT, "Thanks go out to:"));
+       window->AddElement(new Text(16, 8+10*FONT_HEIGHT, "Aaron Giles for the original CoJag"));
+       window->AddElement(new Text(16, 8+11*FONT_HEIGHT, "David Raingeard for the original VJ"));
+       window->AddElement(new Text(16, 8+12*FONT_HEIGHT, "Karl Stenerud for his Musashi 68K emu"));
+       window->AddElement(new Text(16, 8+13*FONT_HEIGHT, "Sam Lantinga for his amazing SDL libs"));
+       window->AddElement(new Text(16, 8+14*FONT_HEIGHT, "Ryan C. Gordon for VJ's web presence"));
+       window->AddElement(new Text(16, 8+15*FONT_HEIGHT, "Curt Vendel for various Jaguar goodies"));
+       window->AddElement(new Text(16, 8+16*FONT_HEIGHT, "The guys over at Atari Age ;-)"));
+//     window->AddElement(new Image(8, 8, &vj_title_small));
+       window->AddElement(new Image(width - (vj_title_small.width + 8), 8, &vj_title_small));
+
+       return window;
+}
+
+Window * MiscOptions(void)
+{
+       Window * window = new Window(8, 16, 304, 192);
+       window->AddElement(new PushButton(8, 8, &vjs.useJaguarBIOS, "BIOS"));
+       window->AddElement(new SlideSwitch(8, 32, &vjs.hardwareTypeNTSC, "PAL", "NTSC"));
+       window->AddElement(new PushButton(8, 64, &vjs.DSPEnabled, "DSP"));
+       window->AddElement(new SlideSwitch(24, 88, &vjs.usePipelinedDSP, "Original", "Pipelined"));
+       window->AddElement(new SlideSwitch(8, 120, (bool *)&vjs.glFilter, "Sharp", "Blurry"));
+       window->AddElement(new SlideSwitch(8, 152, (bool *)&vjs.renderType, "Normal render", "TV style"));
+
+       window->AddElement(new TextEdit(88, 8, vjs.ROMPath, 20, 0xFF8484FF, 0xFF000000));
+
+/*TextEdit(uint32 x, uint32 y, string s, uint32 mss = 10, uint32 fg = 0xFF8484FF,
+       uint32 bg = 0xFF84FF4D): Element(x, y, 0, 0), fgColor(fg), bgColor(bg), text(s),
+       caretPos(0), maxScreenSize(mss) {}*/
+// Missing:
+// * BIOS path
+// * ROM path
+// * EEPROM path
+// * joystick
+// * joystick port
+// * OpenGL?
+// * GL Filter type
+// * Window/fullscreen
+// * Key definitions
+
+       return window;
+}
+
+
+//
+// Generic ROM loading
+//
+uint32 JaguarLoadROM(uint8 * rom, char * path)
+{
+// We really should have some kind of sanity checking for the ROM size here to prevent
+// a buffer overflow... !!! FIX !!!
+       uint32 romSize = 0;
+
+WriteLog("JaguarLoadROM: Attempting to load file '%s'...", path);
+       char * ext = strrchr(path, '.');
+if (ext == NULL)
+       WriteLog("FAILED!\n");
+else
+       WriteLog("Succeeded in finding extension (%s)!\n", ext);
+
+       if (ext != NULL)
+       {
+               WriteLog("VJ: Loading \"%s\"...", path);
+
+               if (strcasecmp(ext, ".zip") == 0)
+               {
+                       // Handle ZIP file loading here...
+                       WriteLog("(ZIPped)...");
+
+                       if (load_zipped_file(0, 0, path, NULL, &rom, &romSize) == -1)
+                       {
+                               WriteLog("Failed!\n");
+                               return 0;
+                       }
+               }
+               else
+               {
+/*                     FILE * fp = fopen(path, "rb");
+
+                       if (fp == NULL)
+                       {
+                               WriteLog("Failed!\n");
+                               return 0;
+                       }
+
+                       fseek(fp, 0, SEEK_END);
+                       romSize = ftell(fp);
+                       fseek(fp, 0, SEEK_SET);
+                       fread(rom, 1, romSize, fp);
+                       fclose(fp);*/
+
+                       // Handle gzipped files transparently [Adam Green]...
+
+                       gzFile fp = gzopen(path, "rb");
+
+                       if (fp == NULL)
+                       {
+                               WriteLog("Failed!\n");
+                               return 0;
+                       }
+
+                       romSize = gzfilelength(fp);
+                       gzseek(fp, 0, SEEK_SET);
+                       gzread(fp, rom, romSize);
+                       gzclose(fp);
+               }
+
+               WriteLog("OK (%i bytes)\n", romSize);
+       }
+
+       return romSize;
+}
+
+//
+// Jaguar file loading
+//
+bool JaguarLoadFile(char * path)
+{
+//     jaguarRomSize = JaguarLoadROM(mem, path);
+       jaguarRomSize = JaguarLoadROM(jaguar_mainRom, path);
+
+/*//This is not *nix friendly for some reason...
+//             if (!UserSelectFile(path, newPath))
+       if (!UserSelectFile((strlen(path) == 0 ? (char *)"." : path), newPath))
+       {
+               WriteLog("VJ: Could not find valid ROM in directory \"%s\"...\nAborting!\n", path);
+               log_done();
+               exit(0);
+       }*/
+
+       if (jaguarRomSize == 0)
+       {
+//                     WriteLog("VJ: Could not load ROM from file \"%s\"...\nAborting!\n", newPath);
+               WriteLog("GUI: Could not load ROM from file \"%s\"...\nAborting load!\n", path);
+// Need to do something else here, like throw up an error dialog instead of aborting. !!! FIX !!!
+//             log_done();
+//             exit(0);
+               return false;                                                           // This is a start...
+       }
+
+       jaguar_mainRom_crc32 = crc32_calcCheckSum(jaguar_mainRom, jaguarRomSize);
+       WriteLog("CRC: %08X\n", (unsigned int)jaguar_mainRom_crc32);
+       eeprom_init();
+
+       jaguarRunAddress = 0x802000;
+
+       char * ext = strrchr(path, '.');                                // Get the file's extension for non-cartridge checking
+
+//NOTE: Should fix JaguarLoadROM() to replace .zip with what's *in* the zip (.abs, .j64, etc.)
+       if (strcasecmp(ext, ".rom") == 0)
+       {
+               // File extension ".ROM": Alpine image that loads/runs at $802000
+               WriteLog("GUI: Setting up homebrew (ROM)... Run address: 00802000, length: %08X\n", jaguarRomSize);
+
+               for(int i=jaguarRomSize-1; i>=0; i--)
+                       jaguar_mainRom[0x2000 + i] = jaguar_mainRom[i];
+
+               memset(jaguar_mainRom, 0xFF, 0x2000);
+/*             memcpy(jaguar_mainRam, jaguar_mainRom, jaguarRomSize);
+               memset(jaguar_mainRom, 0xFF, 0x600000);
+               memcpy(jaguar_mainRom + 0x2000, jaguar_mainRam, jaguarRomSize);
+               memset(jaguar_mainRam, 0x00, 0x400000);*/
+
+/*
+Stubulator ROM vectors...
+handler 001 at $00E00008
+handler 002 at $00E008DE
+handler 003 at $00E008E2
+handler 004 at $00E008E6
+handler 005 at $00E008EA
+handler 006 at $00E008EE
+handler 007 at $00E008F2
+handler 008 at $00E0054A
+handler 009 at $00E008FA
+handler 010 at $00000000
+handler 011 at $00000000
+handler 012 at $00E008FE
+handler 013 at $00E00902
+handler 014 at $00E00906
+handler 015 at $00E0090A
+handler 016 at $00E0090E
+handler 017 at $00E00912
+handler 018 at $00E00916
+handler 019 at $00E0091A
+handler 020 at $00E0091E
+handler 021 at $00E00922
+handler 022 at $00E00926
+handler 023 at $00E0092A
+handler 024 at $00E0092E
+handler 025 at $00E0107A
+handler 026 at $00E0107A
+handler 027 at $00E0107A
+handler 028 at $00E008DA
+handler 029 at $00E0107A
+handler 030 at $00E0107A
+handler 031 at $00E0107A
+handler 032 at $00000000
+
+Let's try setting up the illegal instruction vector for a stubulated jaguar...
+*/
+/*             SET32(jaguar_mainRam, 0x08, 0x00E008DE);
+               SET32(jaguar_mainRam, 0x0C, 0x00E008E2);
+               SET32(jaguar_mainRam, 0x10, 0x00E008E6);        // <-- Should be here (it is)...
+               SET32(jaguar_mainRam, 0x14, 0x00E008EA);//*/
+
+               // Try setting the vector to say, $1000 and putting an instruction there that loops forever:
+               // This kludge works! Yeah!
+               SET32(jaguar_mainRam, 0x10, 0x00001000);
+               SET16(jaguar_mainRam, 0x1000, 0x60FE);          // Here: bra Here
+       }
+       else if (strcasecmp(ext, ".abs") == 0)
+       {
+               // File extension ".ABS": Atari linker output file with header (w/o is useless to us here)
+
+/*
+ABS Format sleuthing (LBUGDEMO.ABS):
+
+000000  60 1B 00 00 05 0C 00 04 62 C0 00 00 04 28 00 00
+000010  12 A6 00 00 00 00 00 80 20 00 FF FF 00 80 25 0C
+000020  00 00 40 00
+
+DRI-format file detected...
+Text segment size = 0x0000050c bytes
+Data segment size = 0x000462c0 bytes
+BSS Segment size = 0x00000428 bytes
+Symbol Table size = 0x000012a6 bytes
+Absolute Address for text segment = 0x00802000
+Absolute Address for data segment = 0x0080250c
+Absolute Address for BSS segment = 0x00004000
+
+(CRZDEMO.ABS):
+000000  01 50 00 03 00 00 00 00 00 03 83 10 00 00 05 3b
+000010  00 1c 00 03 00 00 01 07 00 00 1d d0 00 03 64 98
+000020  00 06 8b 80 00 80 20 00 00 80 20 00 00 80 3d d0
+
+000030  2e 74 78 74 00 00 00 00 00 80 20 00 00 80 20 00 .txt (+36 bytes)
+000040  00 00 1d d0 00 00 00 a8 00 00 00 00 00 00 00 00
+000050  00 00 00 00 00 00 00 20
+000058  2e 64 74 61 00 00 00 00 00 80 3d d0 00 80 3d d0 .dta (+36 bytes)
+000068  00 03 64 98 00 00 1e 78 00 00 00 00 00 00 00 00
+000078  00 00 00 00 00 00 00 40
+000080  2e 62 73 73 00 00 00 00 00 00 50 00 00 00 50 00 .bss (+36 bytes)
+000090  00 06 8b 80 00 03 83 10 00 00 00 00 00 00 00 00
+0000a0  00 00 00 00 00 00 00 80
+
+Header size is $A8 bytes...
+
+BSD/COFF format file detected...
+3 sections specified
+Symbol Table offset = 230160                           ($00038310)
+Symbol Table contains 1339 symbol entries      ($0000053B)
+The additional header size is 28 bytes         ($001C)
+Magic Number for RUN_HDR = 0x00000107
+Text Segment Size = 7632                                       ($00001DD0)
+Data Segment Size = 222360                                     ($00036498)
+BSS Segment Size = 428928                                      ($00068B80)
+Starting Address for executable = 0x00802000
+Start of Text Segment = 0x00802000
+Start of Data Segment = 0x00803dd0
+*/
+               if (jaguar_mainRom[0] == 0x60 && jaguar_mainRom[1] == 0x1B)
+               {
+                       uint32 loadAddress = GET32(jaguar_mainRom, 0x16), //runAddress = GET32(jaguar_mainRom, 0x2A),
+                               codeSize = GET32(jaguar_mainRom, 0x02) + GET32(jaguar_mainRom, 0x06);
+                       WriteLog("GUI: Setting up homebrew (ABS-1)... Run address: %08X, length: %08X\n", loadAddress, codeSize);
+
+                       if (loadAddress < 0x800000)
+                               memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x24, codeSize);
+                       else
+                       {
+                               for(int i=codeSize-1; i>=0; i--)
+                                       jaguar_mainRom[(loadAddress - 0x800000) + i] = jaguar_mainRom[i + 0x24];
+/*                             memcpy(jaguar_mainRam, jaguar_mainRom + 0x24, codeSize);
+                               memset(jaguar_mainRom, 0xFF, 0x600000);
+                               memcpy(jaguar_mainRom + (loadAddress - 0x800000), jaguar_mainRam, codeSize);
+                               memset(jaguar_mainRam, 0x00, 0x400000);*/
+                       }
+
+                       jaguarRunAddress = loadAddress;
+               }
+               else if (jaguar_mainRom[0] == 0x01 && jaguar_mainRom[1] == 0x50)
+               {
+                       uint32 loadAddress = GET32(jaguar_mainRom, 0x28), runAddress = GET32(jaguar_mainRom, 0x24),
+                               codeSize = GET32(jaguar_mainRom, 0x18) + GET32(jaguar_mainRom, 0x1C);
+                       WriteLog("GUI: Setting up homebrew (ABS-2)... Run address: %08X, length: %08X\n", runAddress, codeSize);
+
+                       if (loadAddress < 0x800000)
+                               memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0xA8, codeSize);
+                       else
+                       {
+                               for(int i=codeSize-1; i>=0; i--)
+                                       jaguar_mainRom[(loadAddress - 0x800000) + i] = jaguar_mainRom[i + 0xA8];
+/*                             memcpy(jaguar_mainRam, jaguar_mainRom + 0xA8, codeSize);
+                               memset(jaguar_mainRom, 0xFF, 0x600000);
+                               memcpy(jaguar_mainRom + (loadAddress - 0x800000), jaguar_mainRam, codeSize);
+                               memset(jaguar_mainRam, 0x00, 0x400000);*/
+                       }
+
+                       jaguarRunAddress = runAddress;
+               }
+               else
+               {
+                       WriteLog("GUI: Couldn't find correct ABS format: %02X %02X\n", jaguar_mainRom[0], jaguar_mainRom[1]);
+                       return false;
+               }
+       }
+       else if (strcasecmp(ext, ".jag") == 0)
+       {
+               // File extension ".JAG": Atari server file with header
+//NOTE: The bytes 'JAGR' should also be at position $1C...
+//      Also, there's *always* a $601A header at position $00...
+               if (jaguar_mainRom[0] == 0x60 && jaguar_mainRom[1] == 0x1A)
+               {
+                       uint32 loadAddress = GET32(jaguar_mainRom, 0x22), runAddress = GET32(jaguar_mainRom, 0x2A);
+//This is not always right! Especially when converted via bin2jag1!!!
+//We should have access to the length of the furshlumiger file that was loaded anyway!
+//Now, we do! ;-)
+//                     uint32 progLength = GET32(jaguar_mainRom, 0x02);
+//jaguarRomSize
+//jaguarRunAddress
+//                     WriteLog("Jaguar: Setting up PD ROM... Run address: %08X, length: %08X\n", runAddress, progLength);
+//                     memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x2E, progLength);
+                       WriteLog("GUI: Setting up homebrew (JAG)... Run address: %08X, length: %08X\n", runAddress, jaguarRomSize - 0x2E);
+                       memcpy(jaguar_mainRam + loadAddress, jaguar_mainRom + 0x2E, jaguarRomSize - 0x2E);
+//             SET32(jaguar_mainRam, 4, runAddress);
+                       jaguarRunAddress = runAddress;
+               }
+               else
+                       return false;
+       }
+       // .J64 (Jaguar cartridge ROM image) is implied by the FileList object...
+
+       return true;
+}
+
+//
+// Get the length of a (possibly) gzipped file
+//
+int gzfilelength(gzFile gd)
+{
+   int size = 0, length = 0;
+   unsigned char buffer[0x10000];
+
+   gzrewind(gd);
+
+   do
+   {
+      // Read in chunks until EOF
+      size = gzread(gd, buffer, 0x10000);
+
+      if (size <= 0)
+       break;
+
+      length += size;
+   }
+   while (!gzeof(gd));
+
+   gzrewind(gd);
+   return length;
+}
+#endif
diff --git a/src/gui/guimisc.h b/src/gui/guimisc.h
new file mode 100755 (executable)
index 0000000..84da874
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// GUIMISC.H
+//
+// Graphical User Interface support functions
+//
+
+#ifndef __GUIMISC_H__
+#define __GUIMISC_H__
+
+#include <SDL.h>
+#include <stdarg.h>
+#include "types.h"
+
+// Useful structs
+
+struct Font
+{
+       Font(uint8 * d = NULL, uint32 w = 0, uint32 h = 0): data(d), width(w), height(h) {}
+
+       uint8 * data;
+       uint32 width, height;
+};
+
+// Okay, this is ugly but works and I can't think of any better way to handle this. So what
+// we do when we pass the GIMP bitmaps into a function is pass them as a (void *) and then
+// cast them as type (Bitmap *) in order to use them. Yes, it's ugly. Come up with something
+// better!
+
+/*struct Bitmap {
+       unsigned int width;
+       unsigned int height;
+       unsigned int bytesPerPixel;                                     // 3:RGB, 4:RGBA
+       unsigned char pixelData[];
+};*/
+
+// A better way is just to use the following format:
+// bytes 0-1: width (HI/LO)
+// bytes 2-3: height (HI/LO)
+// bytes 4-n: pixel data in RGBA format
+
+// Global functions
+
+//void SetFont(uint8 *, uint32, uint32);
+void SetNewFont(Font);
+void RestoreOldFont(void);
+uint32 GetFontWidth(void);
+uint32 GetFontHeight(void);
+void DrawStringTrans(SDL_Surface * screen, uint32 x, uint32 y, uint32 color, const char * text, ...);
+void DrawStringOpaque(SDL_Surface * screen, uint32 x, uint32 y, uint32 fg, uint32 bg, const char * text, ...);
+
+//Not sure these belong here, but there you go...
+bool RectanglesIntersect(SDL_Rect r1, SDL_Rect r2);
+bool RectangleFirstInsideSecond(SDL_Rect r1, SDL_Rect r2);
+
+// GUI bitmaps (exported)
+
+extern uint8 closeBox[];
+extern uint8 closeBoxDown[];
+extern uint8 closeBoxHover[];
+extern uint8 floppyDiskImg[];
+
+#endif // __GUIMISC_H__
diff --git a/src/gui/menu.cpp b/src/gui/menu.cpp
new file mode 100755 (executable)
index 0000000..06d696b
--- /dev/null
@@ -0,0 +1,316 @@
+//
+// MENU.CPP
+//
+// Graphical User Interface menu support
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/09/2006  Created this file
+// JLH  02/13/2006  Added rendering support
+//
+
+#include "menu.h"
+#include "guimisc.h"
+
+//#define DEBUG_MENU
+
+#ifdef DEBUG_MENU
+#include "log.h"
+#endif
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//
+// MenuItems class implementation
+//
+
+MenuItems::MenuItems(): charLength(0), popupBackstore(NULL)
+{
+}
+
+bool MenuItems::Inside(uint32 x, uint32 y)
+{
+       return (x >= (uint32)extents.x && x < (uint32)(extents.x + extents.w)
+               && y >= (uint32)extents.y && y < (uint32)(extents.y + extents.h) ? true : false);
+}
+
+//
+// Menu class implementation
+//
+
+Menu::Menu(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       uint8 fgcR/*= 0x00*/, uint8 fgcG/*= 0x00*/, uint8 fgcB/*= 0x7F*/, uint8 fgcA/*= 0xFF*/,
+       uint8 bgcR/*= 0x3F*/, uint8 bgcG/*= 0x3F*/, uint8 bgcB/*= 0xFF*/, uint8 bgcA/*= 0xFF*/,
+       uint8 fgchR/*= 0x3F*/, uint8 fgchG/*= 0x3F*/, uint8 fgchB/*= 0xFF*/, uint8 fgchA/*= 0xFF*/,
+       uint8 bgchR/*= 0x87*/, uint8 bgchG/*= 0x87*/, uint8 bgchB/*= 0xFF*/, uint8 bgchA/*= 0xFF*/):
+       Element(x, y, w, GetFontHeight(), fgcR, fgcG, fgcB, fgcA, bgcR, bgcG, bgcB, bgcA),
+       activated(false), clicked(false),
+       inside(0), insidePopup(0), menuChosen(-1), menuItemChosen(-1),
+       activatedSave(false), clickedSave(false),
+       insideSave(0), insidePopupSave(0), menuChosenSave(-1), menuItemChosenSave(-1)
+{
+       // This *should* allow us to store our colors in an endian safe way... :-/
+       uint8 * c = (uint8 *)&fgColorHL;
+       c[0] = fgchR, c[1] = fgchG, c[2] = fgchB, c[3] = fgchA;
+       c = (uint8 *)&bgColorHL;
+       c[0] = bgchR, c[1] = bgchG, c[2] = bgchB, c[3] = bgchA;
+}
+
+Menu::~Menu()
+{
+       for(uint32 i=0; i<itemList.size(); i++)
+       {
+               if (itemList[i].popupBackstore)
+                       SDL_FreeSurface(itemList[i].popupBackstore);
+       }
+}
+
+void Menu::HandleKey(SDLKey key)
+{
+       SaveStateVariables();
+
+       for(uint32 i=0; i<itemList.size(); i++)
+       {
+               for(uint32 j=0; j<itemList[i].item.size(); j++)
+               {
+                       if (itemList[i].item[j].hotKey == key)
+                       {
+                               SDL_Event event;
+                               event.type = SDL_USEREVENT;
+                               event.user.code = MENU_ITEM_CHOSEN;
+                               event.user.data1 = (void *)itemList[i].item[j].action;
+                       SDL_PushEvent(&event);
+
+                               clicked = false, menuChosen = menuItemChosen = -1;
+                               break;
+                       }
+               }
+       }
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::HandleMouseMove(uint32 x, uint32 y)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::HandleMouseMove()...\n");
+#endif
+       SaveStateVariables();
+
+       inside = insidePopup = 0;
+
+       if (Inside(x, y))
+       {
+               // Find out *where* we are inside the menu bar
+               uint32 xpos = extents.x;
+
+               for(uint32 i=0; i<itemList.size(); i++)
+               {
+                       uint32 width = (itemList[i].title.length() + 2) * GetFontWidth();
+
+                       if (x >= xpos && x < xpos + width)
+                       {
+                               inside = i + 1;
+                               menuChosen = i;
+                               break;
+                       }
+
+                       xpos += width;
+               }
+       }
+
+       if (!Inside(x, y) && !clicked)
+       {
+               menuChosen = -1;
+       }
+
+       if (itemList[menuChosen].Inside(x, y) && clicked)
+       {
+               insidePopup = ((y - itemList[menuChosen].extents.y) / GetFontHeight()) + 1;
+               menuItemChosen = insidePopup - 1;
+       }
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::HandleMouseButton()...\n");
+#endif
+       SaveStateVariables();
+
+       if (!clicked)
+       {
+               if (mouseDown)
+               {
+                       if (inside)
+                               clicked = true;
+                       else
+                               menuChosen = -1;                                // clicked is already false...!
+               }
+       }
+       else                                                                            // clicked == true
+       {
+               if (insidePopup && !mouseDown)                  // I.e., mouse-button-up
+               {
+                       activated = true;
+
+                       if (itemList[menuChosen].item[menuItemChosen].action != NULL)
+                       {
+                               SDL_Event event;
+                               event.type = SDL_USEREVENT;
+                               event.user.code = MENU_ITEM_CHOSEN;
+                               event.user.data1 = (void *)itemList[menuChosen].item[menuItemChosen].action;
+                           SDL_PushEvent(&event);
+                       }
+
+                       clicked = false, menuChosen = menuItemChosen = -1;
+               }
+
+               if (!inside && !insidePopup && mouseDown)
+                       clicked = false, menuChosen = menuItemChosen = -1;
+       }
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void Menu::Draw(void)
+{
+#ifdef DEBUG_MENU
+WriteLog("--> Inside Menu::Draw()...\n");
+#endif
+       char separator[] = "--------------------------------------------------------";
+
+       uint32 xpos = extents.x;
+
+       for(uint32 i=0; i<itemList.size(); i++)
+       {
+               uint32 color1 = fgColor, color2 = bgColor;
+
+               if (inside == (i + 1) || (menuChosen != -1 && (uint32)menuChosen == i))
+                       color1 = fgColorHL, color2 = bgColorHL;
+
+               DrawStringOpaque(screen, xpos, extents.y, color1, color2,
+                       " %s ", itemList[i].title.c_str());
+               xpos += (itemList[i].title.length() + 2) * GetFontWidth();
+       }
+
+       // Prime the backstore if we're about to draw a popup...
+       if (!clickedSave && clicked)                            // If we transitioned from no popup to popup
+#ifdef DEBUG_MENU
+       {
+WriteLog("--> Attempting to prime pubs...\n    pubs x/y/w/h = %u/%u/%u/%u\n    surface = %08X\n",
+       itemList[menuChosen].extents.x,
+       itemList[menuChosen].extents.y,
+       itemList[menuChosen].extents.w,
+       itemList[menuChosen].extents.h,
+       itemList[menuChosen].popupBackstore);
+#endif
+               SDL_BlitSurface(screen, &itemList[menuChosen].extents, itemList[menuChosen].popupBackstore, NULL);
+#ifdef DEBUG_MENU
+       }
+#endif
+
+       // Draw sub menu (but only if active)
+       if (clicked)
+       {
+               uint32 ypos = extents.y + GetFontHeight() + 1;
+
+               for(uint32 i=0; i<itemList[menuChosen].item.size(); i++)
+               {
+                       uint32 color1 = fgColor, color2 = bgColor;
+
+                       if (insidePopup == i + 1)
+                               color1 = fgColorHL, color2 = bgColorHL, menuItemChosen = i;
+
+                       if (itemList[menuChosen].item[i].name.length() > 0)
+                               DrawStringOpaque(screen, itemList[menuChosen].extents.x, ypos,
+                                       color1, color2, " %-*.*s ", itemList[menuChosen].charLength,
+                                       itemList[menuChosen].charLength, itemList[menuChosen].item[i].name.c_str());
+                       else
+                               DrawStringOpaque(screen, itemList[menuChosen].extents.x, ypos,
+                                       fgColor, bgColor, "%.*s", itemList[menuChosen].charLength + 2, separator);
+
+                       ypos += GetFontHeight();
+               }
+       }
+
+       // Do cleanup if we're done with the popup menu
+       if (clickedSave && !clicked)                            // If we transitioned from popup to no popup
+       {
+               SDL_Rect r;
+
+               r.x = itemList[menuChosenSave].extents.x;
+               r.y = itemList[menuChosenSave].extents.y;
+               SDL_BlitSurface(itemList[menuChosenSave].popupBackstore, NULL, screen, &r);
+       }
+
+       needToRefreshScreen = true;
+}
+
+void Menu::Notify(Element *)
+{
+}
+
+void Menu::Add(MenuItems mi)
+{
+       for(uint32 i=0; i<mi.item.size(); i++)
+               if (mi.item[i].name.length() > mi.charLength)
+                       mi.charLength = mi.item[i].name.length();
+
+       // Set extents here as well...
+       mi.extents.x = extents.x + extents.w;
+       mi.extents.y = extents.y + GetFontHeight() + 1;
+       mi.extents.w = (mi.charLength + 2) * GetFontWidth();
+       mi.extents.h = mi.item.size() * GetFontHeight();
+
+       mi.popupBackstore = SDL_CreateRGBSurface(SDL_SWSURFACE, mi.extents.w, mi.extents.h, 32,
+               MASK_R, MASK_G, MASK_B, 0x00);
+
+       itemList.push_back(mi);
+       extents.w += (mi.title.length() + 2) * GetFontWidth();
+
+//This is incorrect--this should be sampled just *before* we draw the popup! !!! FIX !!! [DONE]
+//     SDL_BlitSurface(screen, &mi.extents, mi.popupBackstore, NULL);
+#ifdef DEBUG_MENU
+WriteLog("--> Added menu item...\n    pubs x/y/w/h = %u/%u/%u/%u\n    surface = %08X\n",
+       mi.extents.x,
+       mi.extents.y,
+       mi.popupBackstore->w,
+       mi.popupBackstore->h,
+       mi.popupBackstore);
+#endif
+}
+
+void Menu::SaveStateVariables(void)
+{
+       activatedSave = activated;
+       clickedSave = clicked;
+       insideSave = inside;
+       insidePopupSave = insidePopup;
+       menuChosenSave = menuChosen;
+       menuItemChosenSave = menuItemChosen;
+}
+
+void Menu::CheckStateAndRedrawIfNeeded(void)
+{
+       // Check to see if any of our state variables changed since we last saved them...
+       if (activated != activatedSave || clicked != clickedSave
+               || inside != insideSave || insidePopup != insidePopupSave
+               || menuChosen != menuChosenSave || menuItemChosen != menuItemChosenSave)
+               Draw();
+}
diff --git a/src/gui/menu.h b/src/gui/menu.h
new file mode 100755 (executable)
index 0000000..c4c47a0
--- /dev/null
@@ -0,0 +1,68 @@
+//
+// MENU.H
+//
+// Graphical User Interface menu support
+//
+
+#ifndef __MENU_H__
+#define __MENU_H__
+
+#include <string>
+#include <vector>
+#include "window.h"
+
+struct NameAction
+{
+       std::string name;
+       Element * (* action)(void);
+       SDLKey hotKey;
+
+       NameAction(std::string n, Element * (* a)(void) = NULL, SDLKey k = SDLK_UNKNOWN): name(n),
+               action(a), hotKey(k) {}
+};
+
+class MenuItems
+{
+       public:
+               MenuItems();
+               bool Inside(uint32 x, uint32 y);
+
+               std::string title;
+               std::vector<NameAction> item;
+               uint32 charLength;
+               SDL_Rect extents;
+               SDL_Surface * popupBackstore;
+};
+
+class Menu: public Element
+{
+       public:
+               Menu(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+                       uint8 fgcR = 0x00, uint8 fgcG = 0x00, uint8 fgcB = 0x7F, uint8 fgcA = 0xFF,
+                       uint8 bgcR = 0x3F, uint8 bgcG = 0x3F, uint8 bgcB = 0xFF, uint8 bgcA = 0xFF,
+                       uint8 fgchR = 0x3F, uint8 fgchG = 0x3F, uint8 fgchB = 0xFF, uint8 fgchA = 0xFF,
+                       uint8 bgchR = 0x87, uint8 bgchG = 0x87, uint8 bgchB = 0xFF, uint8 bgchA = 0xFF);
+               ~Menu();
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(void);
+               virtual void Notify(Element *);
+               void Add(MenuItems mi);
+               void SaveStateVariables(void);
+               void CheckStateAndRedrawIfNeeded(void);
+
+       protected:
+               bool activated, clicked;
+               uint32 inside, insidePopup;
+               int menuChosen, menuItemChosen;
+               uint32 fgColorHL, bgColorHL;
+
+       private:
+               std::vector<MenuItems> itemList;
+               bool activatedSave, clickedSave;
+               uint32 insideSave, insidePopupSave;
+               int menuChosenSave, menuItemChosenSave;
+};
+
+#endif // __MENU_H__
diff --git a/src/gui/textedit.cpp b/src/gui/textedit.cpp
new file mode 100755 (executable)
index 0000000..96e45e7
--- /dev/null
@@ -0,0 +1,250 @@
+//
+// TEXTEDIT.CPP
+//
+// Graphical User Interface button class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/17/2006  Created this file
+// JLH  03/01/2006  Added basic editing functionality
+//
+
+#include "textedit.h"
+#include "guimisc.h"                                                           // Various support functions
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//
+// Text edit class implementation
+//
+
+TextEdit::TextEdit(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       std::string s/*= ""*/, Element * parent/*= NULL*/):
+       Element(x, y, w, h, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x40, 0x40, 0xFF, parent),
+       activated(false), clicked(false), inside(false),
+       img(NULL), text(s), caretPos(0), scrollPos(0),
+       activatedSave(false), clickedSave(false), insideSave(false),
+       caretPosSave(0), scrollPosSave(0)
+{
+       if (extents.h == 0)
+               extents.h = GetFontHeight();
+
+       // Setup hardwired colors...
+
+       uint8 * c = (uint8 *)&hiliteColor;
+       c[0] = 0xFF, c[1] = 0x80, c[2] = 0x00, c[3] = 0xFF;
+       c = (uint8 *)&cursorColor;
+       c[0] = 0x40, c[1] = 0xFF, c[2] = 0x60, c[3] = 0xFF;
+
+       // Create the text edit surface here...
+
+       img = SDL_CreateRGBSurface(SDL_SWSURFACE, extents.w, extents.h, 32,
+               MASK_R, MASK_G, MASK_B, MASK_A);
+
+       Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+TextEdit::~TextEdit()
+{
+       if (img)
+               SDL_FreeSurface(img);
+}
+
+//Set different filters depending on type passed in on construction, e.g., filename, amount, etc...?
+void TextEdit::HandleKey(SDLKey key)
+{
+       if (!activated)
+               return;
+
+       SaveStateVariables();
+       SDLMod keyMod = SDL_GetModState();
+
+       if ((key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_0 && key <= SDLK_9)
+               || key == SDLK_PERIOD || key == SDLK_SLASH || key == SDLK_SPACE)
+       {
+               uint8 chr = (uint8)key;
+
+               // Handle shift key as well...
+               if (keyMod & KMOD_SHIFT)
+               {
+                       if (key >= SDLK_a && key <= SDLK_z)
+                               chr &= 0xDF;                                    // Set to upper case
+               }
+
+               text.insert(scrollPos + caretPos, 1, chr);
+
+               // If we hit the edge, then scroll; else advance the caret
+               if ((GetFontWidth() * caretPos) > (extents.w - GetFontWidth()))
+                       scrollPos++;
+               else
+                       caretPos++;
+       }
+       else if (key == SDLK_BACKSPACE)
+       {
+               // If there's something to delete, go ahead and delete it
+               if ((scrollPos + caretPos) > 0)
+               {
+                       text.erase(scrollPos + caretPos - 1, 1);
+
+                       // Scroll the cursor to the left if possible, otherwise move the scroll position
+                       if (caretPos > 0)
+                               caretPos--;
+                       else
+                               scrollPos--;
+               }
+       }
+       else if (key == SDLK_DELETE)
+       {
+               if ((scrollPos + caretPos) < text.length())
+                       text.erase(scrollPos + caretPos, 1);
+       }
+       else if (key == SDLK_LEFT)
+       {
+               if (caretPos > 0)
+                       caretPos--;
+               else if (scrollPos > 0)
+                       scrollPos--;
+       }
+       else if (key == SDLK_RIGHT)
+       {
+               if ((scrollPos + caretPos) < text.length())
+               {
+                       if ((GetFontWidth() * caretPos) > (extents.w - GetFontWidth()))
+                               scrollPos++;
+                       else
+                               caretPos++;
+               }
+       }
+       else if (key == SDLK_RETURN)
+       {
+               clicked = activated = false;
+       }
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::HandleMouseMove(uint32 x, uint32 y)
+{
+       SaveStateVariables();
+       inside = Inside(x, y);
+       CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       SaveStateVariables();
+
+//Not sure that this is right way to handle this...
+//Should set the cursor position based on where in the text box it was clicked...
+       if (inside)
+       {
+               if (mouseDown)
+                       clicked = true;
+
+               if (clicked && !mouseDown)
+               {
+                       clicked = false, activated = true;
+
+                       // Send a message to our parent widget (if any) that we're activated
+                       if (parent)
+                               parent->Notify(this);
+               }
+       }
+       else
+               clicked = activated = false;
+
+       CheckStateAndRedrawIfNeeded();
+}
+
+void TextEdit::Draw(void)
+{
+       if (img == NULL)
+               return;                                                                 // Bail out if no surface was created...
+
+       SDL_Rect rect = GetScreenCoords();
+
+       // Now, draw the appropriate text state!
+
+       if (!activated)
+       {
+               if (inside)
+               {
+                       SDL_Rect rect2;
+                       rect2.x = 1;
+                       rect2.y = 1;
+                       rect2.w = extents.w - 2;
+                       rect2.h = extents.h - 2;
+
+                       SDL_FillRect(img, NULL, hiliteColor);
+                       SDL_FillRect(img, &rect2, bgColor);
+               }
+               else
+                       SDL_FillRect(img, NULL, bgColor);
+       }
+       else
+               SDL_FillRect(img, NULL, bgColor);//Make a different color here, so we're clear we're editing...
+
+//Should also draw different text color depending on whether or not we're activated...
+       if (activated)
+               DrawStringTrans(img, 0, 0, fgColor, text.c_str() + scrollPos);
+       else
+               DrawStringTrans(img, 0, 0, fgColor, text.c_str());
+
+       // Draw the cursor, if any
+
+       if (activated)
+       {
+               SDL_Rect rectCursor;
+               rectCursor.x = caretPos * GetFontWidth();
+               rectCursor.y = 0;
+               rectCursor.w = 2;
+               rectCursor.h = GetFontHeight();
+
+               SDL_FillRect(img, &rectCursor, cursorColor);
+       }
+
+       SDL_BlitSurface(img, NULL, screen, &rect);      // This handles alpha blending too! :-D
+
+       needToRefreshScreen = true;
+}
+
+void TextEdit::Notify(Element *)
+{
+}
+
+std::string TextEdit::GetText(void)
+{
+       return text;
+}
+
+void TextEdit::SaveStateVariables(void)
+{
+       activatedSave = activated;
+       clickedSave = clicked;
+       insideSave = inside;
+       caretPosSave = caretPos;
+       scrollPosSave = scrollPos;
+       lengthSave = text.length();
+}
+
+void TextEdit::CheckStateAndRedrawIfNeeded(void)
+{
+       // Check to see if any of our state variables changed since we last saved them...
+       if (activated != activatedSave || clicked != clickedSave || inside != insideSave
+               || caretPos != caretPosSave || scrollPos != scrollPosSave
+               || text.length() != lengthSave)
+               Draw();
+}
diff --git a/src/gui/textedit.h b/src/gui/textedit.h
new file mode 100755 (executable)
index 0000000..e7b1cf0
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// TEXTEDIT.H
+//
+// Graphical User Interface text edit class
+//
+
+#ifndef __TEXTEDIT_H__
+#define __TEXTEDIT_H__
+
+#include <string>
+#include "element.h"
+
+class TextEdit: public Element
+{
+       public:
+               TextEdit(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0, std::string s = "", Element * parent = NULL);
+               ~TextEdit();
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(void);
+               virtual void Notify(Element *);
+               std::string GetText(void);
+               void SaveStateVariables(void);
+               void CheckStateAndRedrawIfNeeded(void);
+
+       protected:
+               bool activated, clicked, inside;
+               SDL_Surface * img;
+               std::string text;
+               uint32 caretPos, scrollPos;
+
+       private:
+               bool activatedSave, clickedSave, insideSave;
+               uint32 caretPosSave, scrollPosSave, lengthSave;
+               uint32 hiliteColor, cursorColor;
+};
+
+#endif // __TEXTEDIT_H__
diff --git a/src/gui/window.cpp b/src/gui/window.cpp
new file mode 100755 (executable)
index 0000000..0f460ea
--- /dev/null
@@ -0,0 +1,148 @@
+//
+// WINDOW.CPP
+//
+// Graphical User Interface window class
+// by James L. Hammons
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  02/03/2006  Created this file
+// JLH  02/09/2006  Fixed various problems with the class implementation
+// JLH  02/14/2006  Added window rendering
+//
+
+#include "window.h"
+#include "button.h"
+#include "guimisc.h"                                                           // Various support functions
+#include <algorithm>
+
+// Debug support...
+//#define DESTRUCTOR_TESTING
+
+// Rendering experiment...
+#define USE_COVERAGE_LISTS
+
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+#define MASK_R 0xFF000000
+#define MASK_G 0x00FF0000
+#define MASK_B 0x0000FF00
+#define MASK_A 0x000000FF
+#else
+#define MASK_R 0x000000FF
+#define MASK_G 0x0000FF00
+#define MASK_B 0x00FF0000
+#define MASK_A 0xFF000000
+#endif
+
+//
+// Window class implementation
+//
+// NOTE: FG/BG colors are hard-wired
+//
+
+Window::Window(uint32 x/*= 0*/, uint32 y/*= 0*/, uint32 w/*= 0*/, uint32 h/*= 0*/,
+       void (* f)(Element *)/*= NULL*/):
+       Element(x, y, w, h, 0x4D, 0xFF, 0x84, 0xFF, 0x1F, 0x84, 0x84, 0xFF), handler(f),
+       cbWidth((closeBox[0] << 8) | closeBox[1]), cbHeight((closeBox[2] << 8) | closeBox[3]),
+       cbUp(SDL_CreateRGBSurfaceFrom(&closeBox[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A)),
+       cbDown(SDL_CreateRGBSurfaceFrom(&closeBoxDown[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A)),
+       cbHover(SDL_CreateRGBSurfaceFrom(&closeBoxHover[4], cbWidth, cbHeight, 32, cbWidth * 4,
+               MASK_R, MASK_G, MASK_B, MASK_A))
+{
+//Could probably move this into the initializer list as well...
+       closeButton = new Button(w - (cbWidth + 1), 1, cbUp, cbHover, cbDown, this);
+       list.push_back(closeButton);
+
+       CreateBackstore();
+       Draw(); // Can we do this in the constructor??? Mebbe.
+}
+
+Window::~Window()
+{
+#ifdef DESTRUCTOR_TESTING
+printf("Inside ~Window()...\n");
+#endif
+       for(uint32 i=0; i<list.size(); i++)
+               if (list[i])
+                       delete list[i];
+
+       SDL_FreeSurface(cbUp);
+       SDL_FreeSurface(cbDown);
+       SDL_FreeSurface(cbHover);
+}
+
+void Window::HandleKey(SDLKey key)
+{
+       if (key == SDLK_ESCAPE)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT, event.user.code = WINDOW_CLOSE;
+               SDL_PushEvent(&event);
+       }
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->HandleKey(key);
+}
+
+void Window::HandleMouseMove(uint32 x, uint32 y)
+{
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseMove(x - extents.x, y - extents.y);
+}
+
+void Window::HandleMouseButton(uint32 x, uint32 y, bool mouseDown)
+{
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               // Make coords relative to upper right corner of this window...
+               list[i]->HandleMouseButton(x - extents.x, y - extents.y, mouseDown);
+}
+
+void Window::Draw(void)
+{
+#ifdef USE_COVERAGE_LISTS
+       // These are *always* top level and parentless, so no need to traverse up through
+       // the parent chain...
+       for(std::list<SDL_Rect>::iterator i=coverList.begin(); i!=coverList.end(); i++)
+               SDL_FillRect(screen, &(*i), bgColor);
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->Draw();
+#else
+       // These are *always* top level and parentless, so no need to traverse up through
+       // the parent chain...
+       SDL_FillRect(screen, &extents, bgColor);
+
+       // Handle the items this window contains...
+       for(uint32 i=0; i<list.size(); i++)
+               list[i]->Draw();
+#endif
+
+//Prolly don't need this since the close button will do this for us...
+       needToRefreshScreen = true;
+}
+
+void Window::Notify(Element * e)
+{
+       if (e == closeButton)
+       {
+               SDL_Event event;
+               event.type = SDL_USEREVENT;
+               event.user.code = WINDOW_CLOSE;
+               event.user.data1 = (void *)this;
+               SDL_PushEvent(&event);
+       }
+}
+
+void Window::AddElement(Element * e)
+{
+       list.push_back(e);
+}
diff --git a/src/gui/window.h b/src/gui/window.h
new file mode 100755 (executable)
index 0000000..7ff2150
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// WINDOW.H
+//
+// Graphical User Interface window class
+//
+
+#ifndef __WINDOW_H__
+#define __WINDOW_H__
+
+#include "element.h"
+#include <vector>
+
+class Button;                                                                  // Forward declaration
+
+class Window: public Element
+{
+       public:
+               Window(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0,
+                       void (* f)(Element *) = NULL);
+               ~Window(); //Does this destructor need to be virtual? Not sure... Check!
+               virtual void HandleKey(SDLKey key);
+               virtual void HandleMouseMove(uint32 x, uint32 y);
+               virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown);
+               virtual void Draw(void);
+               virtual void Notify(Element *);
+               void AddElement(Element * e);
+
+       protected:
+               void (* handler)(Element *);
+               Button * closeButton;
+               std::vector<Element *> list;
+
+       private:
+               uint16 cbWidth, cbHeight;
+               SDL_Surface * cbUp, * cbDown, * cbHover;
+};
+
+#endif // __WINDOW_H__
diff --git a/src/icon.h b/src/icon.h
new file mode 100755 (executable)
index 0000000..e2c6693
--- /dev/null
@@ -0,0 +1,38 @@
+//\r
+// This file was automagically generated by raw2c (by James L. Hammons)\r
+//\r
+\r
+char icon[0x1000] = {\r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0xFF, 0xFF, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0xFF, 0x99, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0xFF, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x80, 0x00, 0x80, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0xFF, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x00, 0x00, 0x00, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+       0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x86, 0x86, 0x86, 0xFF,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  \r
+};\r
diff --git a/src/log.cpp b/src/log.cpp
new file mode 100755 (executable)
index 0000000..98c6658
--- /dev/null
@@ -0,0 +1,65 @@
+//\r
+// Log handler\r
+//\r
+// by James L. Hammons\r
+// (C) 2006 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  01/03/2006  Moved includes out of header file for faster compilation\r
+//\r
+\r
+#include "log.h"\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <stdarg.h>\r
+#include "types.h"\r
+\r
+#define MAX_LOG_SIZE           10000000                                // Maximum size of log file (10 MB)\r
+\r
+static FILE * log_stream = NULL;\r
+static uint32 logSize = 0;\r
+\r
+bool InitLog(char * path)\r
+{\r
+       log_stream = fopen(path, "wrt");\r
+\r
+       if (log_stream == NULL)\r
+               return false;\r
+\r
+       return true;\r
+}\r
+\r
+void LogDone(void)\r
+{\r
+       if (log_stream)\r
+               fclose(log_stream);\r
+}\r
+\r
+//\r
+// This logger is used mainly to ensure that text gets written to the log file\r
+// even if the program crashes. The performance hit is acceptable in this case!\r
+//\r
+void WriteLog(const char * text, ...)\r
+{\r
+       if (!log_stream)\r
+               return;\r
+\r
+       va_list arg;\r
+\r
+       va_start(arg, text);\r
+       logSize += vfprintf(log_stream, text, arg);\r
+\r
+       if (logSize > MAX_LOG_SIZE)\r
+       {\r
+               fflush(log_stream);\r
+               fclose(log_stream);\r
+               exit(1);\r
+       }//*/\r
+\r
+       va_end(arg);\r
+       fflush(log_stream);                                     // Make sure that text is written!\r
+}\r
diff --git a/src/log.h b/src/log.h
new file mode 100755 (executable)
index 0000000..8c12fcb
--- /dev/null
+++ b/src/log.h
@@ -0,0 +1,22 @@
+//\r
+// LOG.H\r
+//\r
+\r
+#ifndef __LOG_H__\r
+#define __LOG_H__\r
+\r
+// Make this header work with either C or C++\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+bool InitLog(char *);\r
+void LogDone(void);\r
+void WriteLog(const char * text, ...);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // __LOG_H__\r
diff --git a/src/sdlemu_config.cpp b/src/sdlemu_config.cpp
new file mode 100755 (executable)
index 0000000..75d7644
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2002 sdlemu development crew
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include <stdio.h>
+#include <string>
+#include <list>
+#include "sdlemu_config.h"
+
+using namespace std;
+
+class token_list
+{
+public:
+       token_list(const string &name) : m_name(name), m_value(""), m_token("") {}
+       void add_token_variable(const string &var) { m_token = var; }
+       void add_token_value(const string &value) { m_value = value; }
+       const string &LineName() const { return m_name; }
+       const string &Token() const { return m_token; }
+       const string &Value() const { return m_value; }
+private:
+       std::string m_name;
+       std::string m_value;
+       std::string m_token;
+};
+
+std::list<token_list> vec;
+
+void string_tokenize_variable()
+{
+       list<token_list>::iterator p;
+       const string delim = " ";
+       for(p = vec.begin(); p != vec.end(); p++) {
+               string::size_type lastPos = (*p).LineName().find_first_not_of(delim, 0);
+               string::size_type pos     = (*p).LineName().find_first_of(delim, lastPos);
+
+               if(string::npos != pos && string::npos != lastPos) {
+                       string s = (*p).LineName().substr(lastPos, pos - lastPos);
+                       (*p).add_token_variable(s);
+               }
+       }
+}
+
+void string_tokenize_value()
+{
+       list<token_list>::iterator p;
+       const string delim = " =\n\t\r";                // "\r" needed for Win32 compatibility...
+
+       for(p = vec.begin(); p != vec.end(); p++) {
+               string::size_type lastPos = (*p).LineName().find_first_of(delim, 0);
+               string::size_type pos     = (*p).LineName().find_first_not_of(delim, lastPos);
+
+               if(string::npos != pos && string::npos != lastPos) {
+                       string s = (*p).LineName().substr(pos);
+                       (*p).add_token_value(s);
+               }
+       }
+}
+
+int sdlemu_init_config(const char *filename)
+{
+       FILE *f = fopen(filename, "r");
+       if(!f) return 0;
+       
+       fseek(f, 0, SEEK_END);
+       int len = ftell(f);
+       fseek(f, 0, SEEK_SET);
+       
+       char *s = new char[len];
+       fread(s, 1, len, f);
+       string str(s);
+
+       const string delim = "\n\r";            // "\r" needed for Win32 compatibility...
+       string::size_type lastPos = str.find_first_not_of(delim, 0);
+       string::size_type pos     = str.find_first_of(delim, lastPos);
+
+       while (string::npos != pos || string::npos != lastPos) {
+               string string = str.substr(lastPos, pos - lastPos);
+               if(string[0] == '#')
+               {
+               }
+               else if(string[0] == '[')
+               {
+               }
+               else
+               {
+                       vec.push_back(string);
+               }
+               lastPos = str.find_first_not_of(delim, pos);
+               pos = str.find_first_of(delim, lastPos);
+       }
+       string_tokenize_variable();
+       string_tokenize_value();
+       delete [] s;
+       fclose(f);
+       return 1;
+}
+
+const char *sdlemu_getval_string(const char *key_string, const char *default_string)
+{
+       list<token_list>::iterator p;
+       for(p = vec.begin(); p != vec.end(); p++) {
+               
+               if(strcmp((*p).Token().c_str(), key_string) == 0)
+                       return (*p).Value().c_str();
+       }
+       return default_string;
+}
+
+int sdlemu_getval_int(const char *key_string, int default_int)
+{
+       list<token_list>::iterator p;
+       for(p = vec.begin(); p != vec.end(); p++) {
+               
+               if(strcmp((*p).Token().c_str(), key_string) == 0) {
+                       const char *ret = (*p).Value().c_str();
+                       if(ret) return atoi(ret);
+               }
+       }
+       return default_int;
+}
+
+int sdlemu_getval_bool(const char *key_string, int default_int)
+{
+       list<token_list>::iterator p;
+       for(p = vec.begin(); p != vec.end(); p++) {
+               
+               if(strcmp((*p).Token().c_str(), key_string) == 0) {
+                       const char *ret = (*p).Value().c_str();
+                       if(ret) return atoi(ret)>0;
+               }
+       }
+       return default_int;
+}
diff --git a/src/sdlemu_config.h b/src/sdlemu_config.h
new file mode 100755 (executable)
index 0000000..2c2e6d5
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef __SDL_CONFIG_H__
+#define __SDL_CONFIG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int sdlemu_init_config(const char * filename);
+const char * sdlemu_getval_string(const char * key_string, const char * default_string);
+int sdlemu_getval_int(const char * key_string, int default_int);
+int sdlemu_getval_bool(const char * key_string, int default_int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/sdlemu_opengl.c b/src/sdlemu_opengl.c
new file mode 100755 (executable)
index 0000000..7ea9faf
--- /dev/null
@@ -0,0 +1,535 @@
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2004 sdlemu development crew
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+/*  SDLEMU_OPENGL.C
+    SDLEMU related sources for using OpenGL with SDL.
+    By Niels Wagenaar | http://sdlemu.ngemu.com | shalafi@xs4all.nl
+    
+    Version 1.0.001 - 4-10-2004
+    
+    - Added support for 16, 24 and 32 bit textures;
+    - Added support for 16, 24 and 32 bit texture rendering;
+
+    Version 1.0.002 - 6-10-2004
+
+    - Cleaned up a lot of code and removed non functional and obsolete code;
+    - Removed sdlemu_resize_texture function because of double code;
+    - Removed the texture creation from the sdlemu_init_opengl;
+    - Added sdlemu_create_texture function to replace the sdlemu_resize_texture function
+      and the texture creation in sdlemu_init_opengl;
+    - Added the usage of OPENGL_16BPP_CORRECT_RGBA for activating the correct 16bpp RGBA masks;
+    - Added the usage of WANT_OPENGL_ALPHA for using ALPHA blending with 32bpp textures;
+    - Added automatic and override texture bpp depth setting (based upon the src surface);
+
+*/
+
+#include "sdlemu_opengl.h"
+
+static SDL_Surface *texture      = 0;
+static GLuint       texid        = 0;
+static GLfloat      texcoord[4];
+static unsigned int glFilter;
+static unsigned int texturebpp  = 0; // 16, 24 or 32 bpp
+
+static SDL_Surface * overlay = 0;
+static GLuint overlayID = 0;
+static GLfloat overlayCoord[4];
+void sdlemu_create_overlay(SDL_Surface * dst, int src_bpp);
+
+static int showOverlay = 0;
+
+static inline int power_of_two(int input)
+{
+       int value = 1;
+
+       while (value < input)
+               value <<= 1;
+
+       return value;
+}
+
+void sdlemu_init_opengl(SDL_Surface * src, SDL_Surface * dst, int texturetype, int filter, int src_bpp)
+{
+       printf("\nOpenGL driver information :\n");
+       printf("\n");
+       printf("Vendor:             %s\n", glGetString(GL_VENDOR));
+       printf("Renderer:           %s\n", glGetString(GL_RENDERER));
+       printf("Version:            %s\n", glGetString(GL_VERSION));
+       printf("OpenGL drawmethod: ");
+
+       switch (texturetype)
+       {
+       case 1:
+               printf("GL_QUAD rendering\n\n");
+               break;
+       default:
+               printf("GL_TRIANGLE rendering\n\n");
+               break;
+       }
+
+       glFilter = filter;
+
+       // Let us create the texture information :
+       sdlemu_create_texture(src, dst, filter, src_bpp);
+       sdlemu_create_overlay(dst, src_bpp);
+}
+
+void sdlemu_draw_texture(SDL_Surface * dst, SDL_Surface * src, int texturetype)
+{
+/*
+       This is needed when we want to render OpenGL textures with the Alpha mask set.
+       Be warned! This only works with the bpp of texture en *src set to 32.
+*/
+#ifdef WANT_OPENGL_ALPHA
+       Uint32 saved_flags;                
+       Uint8  saved_alpha;                
+
+       /* Save the alpha blending attributes */
+       saved_flags = src->flags&(SDL_SRCALPHA|SDL_RLEACCELOK);
+       saved_alpha = src->format->alpha;
+       if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
+               SDL_SetAlpha(src, 0, 0);
+       }
+
+       // Blit the src display to the texture.
+       SDL_BlitSurface(src, NULL, texture, NULL);
+
+       /* Restore the alpha blending attributes */
+       if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
+               SDL_SetAlpha(src, saved_flags, saved_alpha);
+       }
+#else
+       SDL_BlitSurface(src, NULL, texture, NULL);
+#endif
+//     SDL_BlitSurface(src, NULL, overlay, NULL);
+/*Uint32 * pix = (Uint32 *)overlay->pixels;
+Uint32 y,x;
+for(y=10; y<200; y++)
+for(x=30; x<250; x++)
+pix[x+(y*1024)] = 0x800000FF;//*/
+
+glBlendFunc(GL_ONE, GL_ZERO);
+glBindTexture(GL_TEXTURE_2D, texid);
+       // Texturemap complete texture to surface so we have free scaling 
+       // and antialiasing
+       switch (texturebpp)
+       {
+       case 16:
+               glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+                       GL_RGB, GL_UNSIGNED_SHORT_5_6_5, texture->pixels);
+               break;
+       case 24:
+               glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+                       GL_RGB, GL_UNSIGNED_BYTE, texture->pixels);
+               break;
+       case 32:
+       default:
+               glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture->w, texture->h,
+                       GL_RGBA, GL_UNSIGNED_BYTE, texture->pixels);
+               break;
+       }     
+
+       // Render the texture to the screen using OpenGL!
+       switch (texturetype)
+       {
+       case 1:
+               glBegin(GL_QUADS);
+                       glTexCoord2f(texcoord[0], texcoord[1]);
+                       glVertex2f(0, 0);
+                       glTexCoord2f(texcoord[2], texcoord[1]);
+                       glVertex2f(dst->w, 0);
+                       glTexCoord2f(texcoord[2], texcoord[3]);
+                       glVertex2f(dst->w, dst->h);
+                       glTexCoord2f(texcoord[0], texcoord[3]);
+                       glVertex2f(0, dst->h);
+               glEnd();
+
+       default:
+               glBegin(GL_TRIANGLE_STRIP);
+                       glTexCoord2f(texcoord[0], texcoord[1]); glVertex3i(0, 0, 0);
+                       glTexCoord2f(texcoord[2], texcoord[1]); glVertex3i(dst->w, 0, 0);
+                       glTexCoord2f(texcoord[0], texcoord[3]); glVertex3i(0, dst->h, 0);
+                       glTexCoord2f(texcoord[2], texcoord[3]); glVertex3i(dst->w, dst->h, 0);
+               glEnd();
+       }//*/
+
+       if (showOverlay)
+       {
+               glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+               glBindTexture(GL_TEXTURE_2D, overlayID);
+               glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, overlay->w, overlay->h, GL_RGBA, GL_UNSIGNED_BYTE, overlay->pixels);
+               glBegin(GL_QUADS);
+                       glTexCoord2f(overlayCoord[0], overlayCoord[1]);
+                       glVertex2f(0, 0);
+                       glTexCoord2f(overlayCoord[2], overlayCoord[1]);
+                       glVertex2f(dst->w, 0);
+                       glTexCoord2f(overlayCoord[2], overlayCoord[3]);
+                       glVertex2f(dst->w, dst->h);
+                       glTexCoord2f(overlayCoord[0], overlayCoord[3]);
+                       glVertex2f(0, dst->h);
+               glEnd();
+       }
+
+//Do some OpenGL stuff here...
+//Doesn't work...
+/*unsigned long int map[25] = {
+       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
+};
+glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+glRasterPos2i(10, 10);
+glDrawPixels(5, 5, GL_RGBA, GL_UNSIGNED_INT, map);//*/
+
+//  glFlush();
+       SDL_GL_SwapBuffers();    
+//     glFinish();
+
+}
+
+void sdlemu_close_opengl(void)
+{
+       if (texture)
+               SDL_FreeSurface(texture);
+
+       if (overlay)
+               SDL_FreeSurface(overlay);
+}
+
+void sdlemu_create_overlay(SDL_Surface * dst, int src_bpp)
+{
+    // Local variables.
+       Uint32 rmask, gmask, bmask, amask; // Needed for creating RGBA masks.
+
+       // Delete old texture (if allocated). Useful when there is a screen resize.
+       if (overlay)
+               SDL_FreeSurface(overlay);
+
+       // Texture width/height should be power of 2 of the SDL_Surface *src when using OpenGL.
+       // So, find the largest power of two that will contain both the width and height
+       int w = power_of_two(dst->w);
+       int h = power_of_two(dst->h);
+       
+       printf("OpenGL - Overlay size : %d x %d\n", w, h);
+       
+       // Setting bpp based upon src_bpp.
+       int bpp = src_bpp;
+       
+       // We allow the developer to set its own texture bpp. But if the value is NULL or
+       // not equal to 16, 24 or 32, we make the texturebpp the same as the BPP from src.
+       if (bpp == 16 || bpp == 24 || bpp == 32)
+               texturebpp = bpp;
+       else
+               texturebpp = dst->format->BitsPerPixel;
+
+       printf("OpenGL - Overlay depth : %d bpp\n", texturebpp);
+
+       // Now were are going to create a SDL_Surface named texture. This will be our surface
+       // which will function as a buffer between the SDL_Surface *src and SDL_Surface *dst.
+       // This buffer is needed because we need to convert the SDL_Surface *src to an OpenGL
+       // texture with a depth of 16, 24 or 32 bpp, before we can blit the pixels to *dst
+       // using OpenGL.
+       // 
+       // NOTE: Seems the byte order here *is* important!
+       switch (texturebpp)
+       {
+       case 16: // *src has depth of 16 bpp
+/*
+       According to information on the SDL mailinglist and on internet, the following
+       rgba masks should be the ones to use. But somehow the screen gets f*cked up and
+       the RGB colours are incorrect (at least in Virtual Jaguar/SDL). 
+               
+       Compile with -DOPENGL_16BPP_CORRECT_RGBA to use this RGBA values.
+*/        
+#ifdef OPENGL_16BPP_CORRECT_RGBA     
+               rmask = 0x7C00;
+               gmask = 0x03E0;
+               bmask = 0x001F;
+               amask = 0x0000;
+#else
+               rmask = 0x0000;
+               gmask = 0x0000;
+               bmask = 0x0000;
+               amask = 0x0000;
+#endif
+               break;
+       case 24: // *src has depth of 24 bpp
+       #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+               rmask = 0x00FF0000;
+               gmask = 0x0000FF00;
+               bmask = 0x000000FF;
+               amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+       #else
+               rmask = 0x000000FF;
+               gmask = 0x0000FF00;
+               bmask = 0x00FF0000;
+               amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+       #endif
+               break;
+       case 32: //*src has depth of 32 bpp
+       default: //which is also the default.
+       #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+               rmask = 0xFF000000;
+               gmask = 0x00FF0000;
+               bmask = 0x0000FF00;
+               amask = 0x000000FF;
+       #else
+               rmask = 0x000000FF;
+               gmask = 0x0000FF00;
+               bmask = 0x00FF0000;
+               amask = 0xFF000000;
+       #endif
+               break;
+       }
+
+       // Creating SDL_Surface texture based upon the above settings.
+       overlay = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, texturebpp, rmask, gmask, bmask, amask);
+       
+       // Setting up the texture coordinates.
+       overlayCoord[0] = 0.0f;
+       overlayCoord[1] = 0.0f;
+       overlayCoord[2] = (GLfloat)(dst->w) / overlay->w;
+       overlayCoord[3] = (GLfloat)(dst->h) / overlay->h;
+
+       // create a RGB(A) texture for the texture surface
+       glGenTextures(1, &overlayID);
+       glBindTexture(GL_TEXTURE_2D, overlayID);
+       
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    
+       // Setting texture mode.
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+
+       // Generate the texture using the above information.
+       switch (texturebpp)
+       {
+       case 16:
+               // Normal 16bpp depth based textures consist out of GL_RGB5 and doesn't have support for Alpha channels.
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, overlay->w, overlay->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+               break;
+       case 24:
+               // The 24bpp depth based textures consist out of GL_RGB8 and doesn't have support for Alpha channels.
+               //
+               // IMPORTANT : If you don't use Alpha. Use textures with a depth of 16bpp.
+               //             If you use Alpha. Use textures with a depth of 32bpp.
+               //             24bpp textures are SLOW and avoid them at all costs!        
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, overlay->w, overlay->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+               break;
+       case 32:
+       default:
+               // The 32bpp depth based textures consist out of GL_RGBA8 and has support for Alpha channels.
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, overlay->w, overlay->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+               break;        
+       }    
+}    
+
+void * sdlemuGetOverlayPixels(void)
+{
+       return overlay->pixels;
+}
+
+Uint32 sdlemuGetOverlayWidthInPixels(void)
+{
+       return overlay->pitch / 4;
+}
+
+void sdlemuEnableOverlay(void)
+{
+       showOverlay = 1;
+}
+
+void sdlemuDisableOverlay(void)
+{
+       showOverlay = 0;
+}
+
+void sdlemu_create_texture(SDL_Surface * src, SDL_Surface * dst, int filter, int src_bpp)
+{
+    // Local variables.
+       int w , h;                         // w and h contain the width and height of the OpenGL texture.
+       Uint32 rmask, gmask, bmask, amask; // Needed for creating RGBA masks.
+       int bpp;
+
+       // Delete old texture (if allocated). Useful when there is a screen resize.
+       if (texture)
+               SDL_FreeSurface(texture);
+
+       // Texture width/height should be power of 2 of the SDL_Surface *src when using OpenGL.
+       // So, find the largest power of two that will contain both the width and height
+       w = power_of_two(src->w);
+       h = power_of_two(src->h);
+       
+       printf("OpenGL - Texture size : %d x %d\n", w, h);
+       
+       // Setting bpp based upon src_bpp.
+       bpp = src_bpp;
+       
+       // We allow the developer to set its own texture bpp. But if the value is NULL or
+       // not equal to 16, 24 or 32, we make the texturebpp the same as the BPP from src.
+       if (bpp == 16 || bpp == 24 || bpp == 32)
+               texturebpp = bpp;
+       else
+               texturebpp = src->format->BitsPerPixel;
+
+       printf("OpenGL - Texture depth : %d bpp\n", texturebpp);
+
+       // Now were are going to create a SDL_Surface named texture. This will be our surface
+       // which will function as a buffer between the SDL_Surface *src and SDL_Surface *dst.
+       // This buffer is needed because we need to convert the SDL_Surface *src to an OpenGL
+       // texture with a depth of 16, 24 or 32 bpp, before we can blit the pixels to *dst
+       // using OpenGL.
+       // 
+       // NOTE: Seems the byte order here *is* important!
+       switch (texturebpp)
+       {
+       case 16: // *src has depth of 16 bpp
+/*
+       According to information on the SDL mailinglist and on internet, the following
+       rgba masks should be the ones to use. But somehow the screen gets f*cked up and
+       the RGB colours are incorrect (at least in Virtual Jaguar/SDL). 
+
+       Compile with -DOPENGL_16BPP_CORRECT_RGBA to use this RGBA values.
+*/        
+#ifdef OPENGL_16BPP_CORRECT_RGBA     
+               rmask = 0x7C00;
+               gmask = 0x03E0;
+               bmask = 0x001F;
+               amask = 0x0000;
+#else
+               rmask = 0x0000;
+               gmask = 0x0000;
+               bmask = 0x0000;
+               amask = 0x0000;
+#endif
+               break;
+       case 24: // *src has depth of 24 bpp
+       #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+               rmask = 0x00FF0000;
+               gmask = 0x0000FF00;
+               bmask = 0x000000FF;
+               amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+       #else
+               rmask = 0x000000FF;
+               gmask = 0x0000FF00;
+               bmask = 0x00FF0000;
+               amask = 0x00000000; // IMPORTANT! 24 bpp doesn't use Alpha (at least in our case).
+       #endif
+               break;
+       case 32: //*src has depth of 32 bpp
+       default: //which is also the default.
+       #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+               rmask = 0xFF000000;
+               gmask = 0x00FF0000;
+               bmask = 0x0000FF00;
+               amask = 0x000000FF;
+       #else
+               rmask = 0x000000FF;
+               gmask = 0x0000FF00;
+               bmask = 0x00FF0000;
+               amask = 0xFF000000;
+       #endif
+               break;
+       }
+
+       // Creating SDL_Surface texture based upon the above settings.
+       texture = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, texturebpp, rmask, gmask, bmask, amask);
+       
+       // Setting up OpenGL
+       glDisable(GL_FOG);
+       glDisable(GL_LIGHTING);
+       glDisable(GL_CULL_FACE);
+       glDisable(GL_DEPTH_TEST);
+//     glDisable(GL_BLEND);
+       glEnable(GL_BLEND);
+       glDisable(GL_NORMALIZE);
+       glDisable(GL_ALPHA_TEST);
+       glEnable(GL_TEXTURE_2D);
+//     glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+//     glBlendFunc(GL_ONE, GL_SRC_ALPHA);
+//This works, but in a wrong way...
+//     glBlendFunc(GL_ONE, GL_ONE);
+
+       // Definitely needed for screen resolution larger then the *src.
+       // This way we can have automatic scaling functionality.
+       glViewport(0, 0, dst->w, dst->h);
+       glMatrixMode(GL_PROJECTION);
+       glPushMatrix();
+       glLoadIdentity();
+       glOrtho(0.0, (GLdouble)dst->w, (GLdouble)dst->h, 0.0, 0.0, 1.0);
+       glMatrixMode(GL_MODELVIEW);
+       glPushMatrix();
+       glLoadIdentity();
+
+       // Setting up the texture coordinates.
+       texcoord[0] = 0.0f;
+       texcoord[1] = 0.0f;
+       texcoord[2] = (GLfloat)(src->w) / texture->w;
+       texcoord[3] = (GLfloat)(src->h) / texture->h;
+
+       // create a RGB(A) texture for the texture surface
+       glGenTextures(1, &texid);
+       glBindTexture(GL_TEXTURE_2D, texid);
+       
+       // Setting up the OpenGL Filters. These filters are important when we/you
+       // want to scale the texture. 
+       if (filter)
+       {
+               // Textures are rendered in best quality. 
+               printf("OpenGL filters: enabled\n");
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+       }
+       else
+       {
+               // Textures are rendered in normal quality.
+               printf("OpenGL filters: disabled\n");
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+       }
+    
+       // Setting texture mode.
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+
+       // Generate the texture using the above information.
+       switch (texturebpp)
+       {
+       case 16:
+               // Normal 16bpp depth based textures consist out of GL_RGB5 and doesn't have support for Alpha channels.
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, texture->w, texture->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+               break;
+       case 24:
+               // The 24bpp depth based textures consist out of GL_RGB8 and doesn't have support for Alpha channels.
+               //
+               // IMPORTANT : If you don't use Alpha. Use textures with a depth of 16bpp.
+               //             If you use Alpha. Use textures with a depth of 32bpp.
+               //             24bpp textures are SLOW and avoid them at all costs!        
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, texture->w, texture->h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+               break;
+       case 32:
+       default:
+               // The 32bpp depth based textures consist out of GL_RGBA8 and has support for Alpha channels.
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+               break;        
+       }    
+}    
diff --git a/src/sdlemu_opengl.h b/src/sdlemu_opengl.h
new file mode 100755 (executable)
index 0000000..22e0f9a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * SDLEMU library - Free sdl related functions library
+ * Copyrigh(c) 1999-2002 sdlemu development crew
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __SDLEMU_OPENGL_H__
+#define __SDLEMU_OPENGL_H__
+
+#include "SDL.h"
+#include "SDL_opengl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void sdlemu_init_opengl(SDL_Surface * src, SDL_Surface * dst, int texturetype, int filter, int src_bpp);
+void sdlemu_draw_texture(SDL_Surface * dst, SDL_Surface * src, int texturetype);
+void sdlemu_close_opengl(void);
+void sdlemu_create_texture(SDL_Surface * src, SDL_Surface * dst, int filter, int src_bpp);
+void * sdlemuGetOverlayPixels(void);
+Uint32 sdlemuGetOverlayWidthInPixels(void);
+void sdlemuEnableOverlay(void);
+void sdlemuDisableOverlay(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/settings.cpp b/src/settings.cpp
new file mode 100755 (executable)
index 0000000..841b961
--- /dev/null
@@ -0,0 +1,121 @@
+//
+// SETTINGS.CPP: Game configuration loading/saving support
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  01/04/2006  Added changelog ;-)
+//
+
+#include "settings.h"
+
+#include <stdlib.h>
+#include <string>
+#include "SDL.h"
+#include "sdlemu_config.h"
+#include "log.h"
+
+using namespace std;
+
+// Global variables
+
+Settings settings;
+
+// Private function prototypes
+
+static void CheckForTrailingSlash(char * path);
+
+//
+// Load Apple2's settings
+//
+void LoadSettings(void)
+{
+       if (sdlemu_init_config("./apple2.cfg") == 0                     // CWD
+               && sdlemu_init_config("~/apple2.cfg") == 0              // Home
+               && sdlemu_init_config("~/.apple2/apple2.cfg") == 0      // Home under .apple2 directory
+               && sdlemu_init_config("apple2.cfg") == 0)               // Somewhere in the path
+               WriteLog("Settings: Couldn't find configuration file. Using defaults...\n");
+
+       settings.useJoystick = sdlemu_getval_bool("useJoystick", false);
+       settings.joyport = sdlemu_getval_int("joyport", 0);
+       settings.hardwareTypeNTSC = sdlemu_getval_bool("hardwareTypeNTSC", true);
+       settings.frameSkip = sdlemu_getval_int("frameSkip", 0);
+       settings.fullscreen = sdlemu_getval_bool("fullscreen", false);
+       settings.useOpenGL = sdlemu_getval_bool("useOpenGL", true);
+       settings.glFilter = sdlemu_getval_int("glFilterType", 0);
+       settings.renderType = sdlemu_getval_int("renderType", 0);
+       settings.autoStateSaving = sdlemu_getval_bool("autoSaveState", true);
+
+       // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
+       settings.p1KeyBindings[0] = sdlemu_getval_int("p1k_up", SDLK_UP);
+       settings.p1KeyBindings[1] = sdlemu_getval_int("p1k_down", SDLK_DOWN);
+       settings.p1KeyBindings[2] = sdlemu_getval_int("p1k_left", SDLK_LEFT);
+       settings.p1KeyBindings[3] = sdlemu_getval_int("p1k_right", SDLK_RIGHT);
+       settings.p1KeyBindings[4] = sdlemu_getval_int("p1k_c", SDLK_z);
+       settings.p1KeyBindings[5] = sdlemu_getval_int("p1k_b", SDLK_x);
+       settings.p1KeyBindings[6] = sdlemu_getval_int("p1k_a", SDLK_c);
+       settings.p1KeyBindings[7] = sdlemu_getval_int("p1k_option", SDLK_QUOTE);
+       settings.p1KeyBindings[8] = sdlemu_getval_int("p1k_pause", SDLK_RETURN);
+       settings.p1KeyBindings[9] = sdlemu_getval_int("p1k_0", SDLK_KP0);
+       settings.p1KeyBindings[10] = sdlemu_getval_int("p1k_1", SDLK_KP1);
+       settings.p1KeyBindings[11] = sdlemu_getval_int("p1k_2", SDLK_KP2);
+       settings.p1KeyBindings[12] = sdlemu_getval_int("p1k_3", SDLK_KP3);
+       settings.p1KeyBindings[13] = sdlemu_getval_int("p1k_4", SDLK_KP4);
+       settings.p1KeyBindings[14] = sdlemu_getval_int("p1k_5", SDLK_KP5);
+       settings.p1KeyBindings[15] = sdlemu_getval_int("p1k_6", SDLK_KP6);
+       settings.p1KeyBindings[16] = sdlemu_getval_int("p1k_7", SDLK_KP7);
+       settings.p1KeyBindings[17] = sdlemu_getval_int("p1k_8", SDLK_KP8);
+       settings.p1KeyBindings[18] = sdlemu_getval_int("p1k_9", SDLK_KP9);
+       settings.p1KeyBindings[19] = sdlemu_getval_int("p1k_pound", SDLK_KP_DIVIDE);
+       settings.p1KeyBindings[20] = sdlemu_getval_int("p1k_star", SDLK_KP_MULTIPLY);
+
+       settings.p2KeyBindings[0] = sdlemu_getval_int("p2k_up", SDLK_UP);
+       settings.p2KeyBindings[1] = sdlemu_getval_int("p2k_down", SDLK_DOWN);
+       settings.p2KeyBindings[2] = sdlemu_getval_int("p2k_left", SDLK_LEFT);
+       settings.p2KeyBindings[3] = sdlemu_getval_int("p2k_right", SDLK_RIGHT);
+       settings.p2KeyBindings[4] = sdlemu_getval_int("p2k_c", SDLK_z);
+       settings.p2KeyBindings[5] = sdlemu_getval_int("p2k_b", SDLK_x);
+       settings.p2KeyBindings[6] = sdlemu_getval_int("p2k_a", SDLK_c);
+       settings.p2KeyBindings[7] = sdlemu_getval_int("p2k_option", SDLK_QUOTE);
+       settings.p2KeyBindings[8] = sdlemu_getval_int("p2k_pause", SDLK_RETURN);
+       settings.p2KeyBindings[9] = sdlemu_getval_int("p2k_0", SDLK_KP0);
+       settings.p2KeyBindings[10] = sdlemu_getval_int("p2k_1", SDLK_KP1);
+       settings.p2KeyBindings[11] = sdlemu_getval_int("p2k_2", SDLK_KP2);
+       settings.p2KeyBindings[12] = sdlemu_getval_int("p2k_3", SDLK_KP3);
+       settings.p2KeyBindings[13] = sdlemu_getval_int("p2k_4", SDLK_KP4);
+       settings.p2KeyBindings[14] = sdlemu_getval_int("p2k_5", SDLK_KP5);
+       settings.p2KeyBindings[15] = sdlemu_getval_int("p2k_6", SDLK_KP6);
+       settings.p2KeyBindings[16] = sdlemu_getval_int("p2k_7", SDLK_KP7);
+       settings.p2KeyBindings[17] = sdlemu_getval_int("p2k_8", SDLK_KP8);
+       settings.p2KeyBindings[18] = sdlemu_getval_int("p2k_9", SDLK_KP9);
+       settings.p2KeyBindings[19] = sdlemu_getval_int("p2k_pound", SDLK_KP_DIVIDE);
+       settings.p2KeyBindings[20] = sdlemu_getval_int("p2k_star", SDLK_KP_MULTIPLY);
+
+       strcpy(settings.BIOSPath, sdlemu_getval_string("BIOSROM", "./ROMs/apple2.rom"));
+       strcpy(settings.disksPath, sdlemu_getval_string("disks", "./disks"));
+       strcpy(settings.diskImagePath1, sdlemu_getval_string("floppyImage1", "./disks/bt1_boot.dsk"));
+       strcpy(settings.diskImagePath2, sdlemu_getval_string("floppyImage2", "./disks/bt1_char.dsk"));
+       strcpy(settings.autoStatePath, sdlemu_getval_string("autoStateFilename", "./apple2auto.state"));
+       CheckForTrailingSlash(settings.disksPath);
+}
+
+//
+// Save Apple2's settings
+//
+void SaveSettings(void)
+{
+}
+
+//
+// Check path for a trailing slash, and append if not present
+//
+static void CheckForTrailingSlash(char * path)
+{
+       if (strlen(path) > 0)
+               if (path[strlen(path) - 1] != '/')
+                       strcat(path, "/");      // NOTE: Possible buffer overflow
+}
diff --git a/src/settings.h b/src/settings.h
new file mode 100755 (executable)
index 0000000..1fcca61
--- /dev/null
@@ -0,0 +1,60 @@
+//
+// SETTINGS.H: Header file
+//
+
+#ifndef __SETTINGS_H__
+#define __SETTINGS_H__
+
+// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...
+#ifdef __GCCUNIX__
+#include <limits.h>
+#define MAX_PATH               _POSIX_PATH_MAX
+#else
+#include <stdlib.h>                                                            // for MAX_PATH on MinGW/Darwin
+#endif
+#include "types.h"
+
+// Settings struct
+
+struct Settings
+{
+       bool useJoystick;
+       int32 joyport;                                                          // Joystick port
+       bool hardwareTypeNTSC;                                          // Set to false for PAL
+       bool fullscreen;
+       bool useOpenGL;
+       uint32 glFilter;
+       uint32 frameSkip;
+       uint32 renderType;
+       bool autoStateSaving;                                           // Auto-state loading/saving on entry/exit
+       
+       // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, *
+
+       uint16 p1KeyBindings[21];
+       uint16 p2KeyBindings[21];
+
+       // Paths
+
+       char BIOSPath[MAX_PATH];
+       char disksPath[MAX_PATH];
+       char diskImagePath1[MAX_PATH];
+       char diskImagePath2[MAX_PATH];
+       char autoStatePath[MAX_PATH];
+//     char CDBootPath[MAX_PATH];
+//     char EEPROMPath[MAX_PATH];
+};
+
+// Render types
+
+//enum { RT_NORMAL = 0, RT_TV = 1 };
+
+// Exported functions
+
+void LoadSettings(void);
+void SaveSettings(void);
+
+// Exported variables
+
+extern Settings settings;
+
+#endif // __SETTINGS_H__
diff --git a/src/sound.cpp b/src/sound.cpp
new file mode 100755 (executable)
index 0000000..8dfbcb3
--- /dev/null
@@ -0,0 +1,233 @@
+//\r
+// Sound Interface\r
+//\r
+// by James L. Hammons\r
+// (C) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  12/02/2005  Fixed a problem with sound callback thread signaling the\r
+//                  main thread\r
+// JLH  12/03/2005  Fixed sound callback dropping samples when the sample buffer\r
+//                  is shorter than the callback sample buffer\r
+//\r
+\r
+// STILL TO DO:\r
+//\r
+// - Figure out why it's losing samples (Bard's Tale) [DONE]\r
+//\r
+\r
+#include "sound.h"\r
+\r
+#include <string.h>                                                            // For memset, memcpy\r
+#include <SDL.h>\r
+#include "log.h"\r
+\r
+using namespace std;\r
+\r
+// Global variables\r
+\r
+\r
+// Local variables\r
+\r
+static SDL_AudioSpec desired;\r
+static bool soundInitialized = false;\r
+static uint8 amplitude = 0x88;                                 // $78 - $88 seems to be plenty loud!\r
+//static uint8 lastValue;\r
+\r
+static bool speakerState;\r
+static uint8 soundBuffer[4096];\r
+static uint32 soundBufferPos;\r
+static uint32 sampleBase;\r
+static SDL_cond * conditional = NULL;\r
+static SDL_mutex * mutex = NULL;\r
+\r
+// Private function prototypes\r
+\r
+static void SDLSoundCallback(void * userdata, Uint8 * buffer, int length);\r
+\r
+//\r
+// Initialize the SDL sound system\r
+//\r
+void SoundInit(void)\r
+{\r
+// To weed out problems for now...\r
+#if 0\r
+return;\r
+#endif\r
+\r
+       desired.freq = 44100;                                           // SDL will do conversion on the fly, if it can't get the exact rate. Nice!\r
+       desired.format = AUDIO_U8;                                      // This uses the native endian (for portability)...\r
+       desired.channels = 1;\r
+//     desired.samples = 4096;                                         // Let's try a 4K buffer (can always go lower)\r
+       desired.samples = 2048;                                         // Let's try a 2K buffer (can always go lower)\r
+       desired.callback = SDLSoundCallback;\r
+\r
+       if (SDL_OpenAudio(&desired, NULL) < 0)          // NULL means SDL guarantees what we want\r
+       {\r
+               WriteLog("Sound: Failed to initialize SDL sound.\n");\r
+//             exit(1);\r
+               return;\r
+       }\r
+\r
+       conditional = SDL_CreateCond();\r
+       mutex = SDL_CreateMutex();\r
+       SDL_mutexP(mutex);                                                      // Must lock the mutex for the cond to work properly...\r
+//     lastValue = (speakerState ? amplitude : 0xFF - amplitude);\r
+       soundBufferPos = 0;\r
+       sampleBase = 0;\r
+\r
+       SDL_PauseAudio(false);                                          // Start playback!\r
+       soundInitialized = true;\r
+       WriteLog("Sound: Successfully initialized.\n");\r
+}\r
+\r
+//\r
+// Close down the SDL sound subsystem\r
+//\r
+void SoundDone(void)\r
+{\r
+       if (soundInitialized)\r
+       {\r
+               SDL_PauseAudio(true);\r
+               SDL_CloseAudio();\r
+               SDL_DestroyCond(conditional);\r
+               SDL_DestroyMutex(mutex);\r
+               WriteLog("Sound: Done.\n");\r
+       }\r
+}\r
+\r
+//\r
+// Sound card callback handler\r
+//\r
+static void SDLSoundCallback(void * userdata, Uint8 * buffer, int length)\r
+{\r
+       // The sound buffer should only starve when starting which will cause it to\r
+       // lag behind the emulation at most by around 1 frame...\r
+\r
+       if (soundBufferPos < (uint32)length)            // The sound buffer is starved...\r
+       {\r
+//printf("Sound buffer starved!\n");\r
+//fflush(stdout);\r
+               for(uint32 i=0; i<soundBufferPos; i++)\r
+                       buffer[i] = soundBuffer[i];\r
+               // Fill buffer with last value\r
+               uint8 lastValue = (speakerState ? amplitude : 0xFF - amplitude);\r
+//             uint8 lastValue = (speakerState ? amplitude : amplitude ^ 0xFF);\r
+//             memset(buffer, lastValue, length);              // Fill buffer with last value\r
+               memset(buffer + soundBufferPos, lastValue, length - soundBufferPos);\r
+               soundBufferPos = 0;                                             // Reset soundBufferPos to start of buffer...\r
+               sampleBase = 0;                                                 // & sampleBase...\r
+//Ick. This should never happen!\r
+SDL_CondSignal(conditional);                           // Wake up any threads waiting for the buffer to drain...\r
+               return;                                                                 // & bail!\r
+       }\r
+\r
+       memcpy(buffer, soundBuffer, length);            // Fill sound buffer with frame buffered sound\r
+       soundBufferPos -= length;\r
+       sampleBase -= length;\r
+\r
+//     if (soundBufferPos > 0)\r
+//             memcpy(soundBuffer, soundBuffer + length, soundBufferPos);      // Move current buffer down to start\r
+//     memcpy(soundBuffer, soundBuffer + length, length);\r
+       // Move current buffer down to start\r
+       for(uint32 i=0; i<soundBufferPos; i++)\r
+               soundBuffer[i] = soundBuffer[length + i];\r
+\r
+//     lastValue = buffer[length - 1];\r
+       SDL_CondSignal(conditional);                            // Wake up any threads waiting for the buffer to drain...\r
+}\r
+\r
+// Need some interface functions here to take care of flipping the\r
+// waveform at the correct time in the sound stream...\r
+\r
+/*\r
+Maybe set up a buffer 1 frame long (44100 / 60 = 735 bytes per frame)\r
+\r
+Hmm. That's smaller than the sound buffer 2048 bytes... (About 2.75 frames needed to fill)\r
+\r
+So... I guess what we could do is this:\r
+\r
+-- Execute V65C02 for one frame. The read/writes at I/O address $C030 fill up the buffer\r
+   to the current time position.\r
+-- The sound callback function copies the pertinent area out of the buffer, resets\r
+   the time position back (or copies data down from what it took out)\r
+*/\r
+\r
+void ToggleSpeaker(uint32 time)\r
+{\r
+       if (!soundInitialized)\r
+               return;\r
+\r
+#if 0\r
+if (time > 95085)//(time & 0x80000000)\r
+{\r
+       WriteLog("ToggleSpeaker() given bad time value: %08X (%u)!\n", time, time);\r
+//     fflush(stdout);\r
+}\r
+#endif\r
+\r
+// 1.024 MHz / 60 = 17066.6... cycles (23.2199 cycles per sample)\r
+// Need the last frame position in order to calculate correctly...\r
+\r
+       SDL_LockAudio();\r
+       uint8 sample = (speakerState ? amplitude : 0xFF - amplitude);\r
+//     uint8 sample = (speakerState ? amplitude : amplitude ^ 0xFF);\r
+       uint32 currentPos = sampleBase + (uint32)((double)time / 23.2199);\r
+\r
+       if (currentPos > 4095)\r
+       {\r
+#if 0\r
+WriteLog("ToggleSpeaker() about to go into spinlock at time: %08X (%u) (sampleBase=%u)!\n", time, time, sampleBase);\r
+#endif\r
+// Still hanging on this spinlock...\r
+// That could be because the "time" value is too high and so the buffer will NEVER be\r
+// empty enough...\r
+// Now that we're using a conditional, it seems to be working OK--though not perfectly...\r
+/*\r
+ToggleSpeaker() about to go into spinlock at time: 00004011 (16401) (sampleBase=3504)!\r
+16401 -> 706 samples, 3504 + 706 = 4210\r
+\r
+And it still thrashed the sound even though it didn't run into a spinlock...\r
+\r
+Seems like it's OK now that I've fixed the buffer-less-than-length bug...\r
+*/\r
+               SDL_UnlockAudio();\r
+               SDL_CondWait(conditional, mutex);\r
+\r
+//             while (currentPos > 4095)                               // Spin until buffer empties a bit...\r
+               currentPos = sampleBase + (uint32)((double)time / 23.2199);\r
+               SDL_LockAudio();\r
+#if 0\r
+WriteLog("--> after spinlock (sampleBase=%u)...\n", sampleBase);\r
+#endif\r
+       }\r
+\r
+       while (soundBufferPos < currentPos)\r
+               soundBuffer[soundBufferPos++] = sample;\r
+\r
+       speakerState = !speakerState;\r
+       SDL_UnlockAudio();\r
+}\r
+\r
+void HandleSoundAtFrameEdge(void)\r
+{\r
+       if (!soundInitialized)\r
+               return;\r
+\r
+       SDL_LockAudio();\r
+       sampleBase += 735;\r
+       SDL_UnlockAudio();\r
+/*     uint8 sample = (speakerState ? amplitude : 0xFF - amplitude);\r
+\r
+//This shouldn't happen (buffer overflow), but it seems like it *is* happening...\r
+       if (sampleBase >= 4096)\r
+//             sampleBase = 4095;\r
+//Kludge, for now... Until I can figure out why it's still stomping on the buffer...\r
+               sampleBase = 0;\r
+\r
+       while (soundBufferPos < sampleBase)\r
+               soundBuffer[soundBufferPos++] = sample;//*/\r
+}\r
diff --git a/src/sound.h b/src/sound.h
new file mode 100755 (executable)
index 0000000..85dcf4d
--- /dev/null
@@ -0,0 +1,23 @@
+//\r
+// SOUND.H\r
+//\r
+// by James L. Hammons\r
+// (C) 2004 Underground Software\r
+//\r
+\r
+#ifndef __SOUND_H__\r
+#define __SOUND_H__\r
+\r
+#include "types.h"\r
+\r
+// Global variables (exported)\r
+\r
+\r
+// Functions\r
+\r
+void SoundInit(void);\r
+void SoundDone(void);\r
+void ToggleSpeaker(uint32 time);\r
+void HandleSoundAtFrameEdge(void);\r
+\r
+#endif // __SOUND_H__\r
diff --git a/src/timing.cpp b/src/timing.cpp
new file mode 100755 (executable)
index 0000000..2bf0709
--- /dev/null
@@ -0,0 +1,129 @@
+//
+// System time handlers
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// WHO  WHEN        WHAT
+// ---  ----------  ------------------------------------------------------------
+// JLH  01/04/2006  Cosmetic changes (like this one ;-)
+//
+
+// STILL TO DO:
+//
+// - Handling for an event that occurs NOW
+//
+
+#include "timing.h"
+
+#include "log.h"
+
+#define EVENT_LIST_SIZE       512
+
+// NOTE ABOUT TIMING SYSTEM DATA STRUCTURES:
+
+// A queue won't work for this system because we can't guarantee that an event will go
+// in with a time that is later than the ones already queued up. So we just use a simple
+// list.
+
+// Although if we used an insertion sort we could, but it wouldn't work for adjusting
+// times...
+
+struct Event
+{
+    bool valid;
+    double eventTime;
+    void (* timerCallback)(void);
+};
+
+static Event eventList[EVENT_LIST_SIZE];
+static uint32 nextEvent;
+
+void InitializeEventList(void)
+{
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+        eventList[i].valid = false;
+}
+
+//We just slap the next event into the list, no checking, no nada...
+void SetCallbackTime(void (* callback)(void), double time)
+{
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+    {
+        if (!eventList[i].valid)
+        {
+//WriteLog("SCT: Found callback slot #%u...\n", i);
+            eventList[i].timerCallback = callback;
+            eventList[i].eventTime = time;
+            eventList[i].valid = true;
+
+            return;
+        }
+    }
+
+    WriteLog("SetCallbackTime() failed to find an empty slot in the list!\n");
+}
+
+void RemoveCallback(void (* callback)(void))
+{
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+    {
+        if (eventList[i].valid && eventList[i].timerCallback == callback)
+        {
+            eventList[i].valid = false;
+
+            return;
+        }
+    }
+}
+
+void AdjustCallbackTime(void (* callback)(void), double time)
+{
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+    {
+        if (eventList[i].valid && eventList[i].timerCallback == callback)
+        {
+            eventList[i].eventTime = time;
+
+            return;
+        }
+    }
+}
+
+double GetTimeToNextEvent(void)
+{
+    double time = 0;
+    bool firstTime = true;
+
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+    {
+        if (eventList[i].valid)
+        {
+            if (firstTime)
+                time = eventList[i].eventTime, nextEvent = i, firstTime = false;
+            else
+            {
+                if (eventList[i].eventTime < time)
+                    time = eventList[i].eventTime, nextEvent = i;
+            }
+        }
+    }
+
+    return time;
+}
+
+void HandleNextEvent(void)
+{
+    double elapsedTime = eventList[nextEvent].eventTime;
+    void (* event)(void) = eventList[nextEvent].timerCallback;
+
+    for(uint32 i=0; i<EVENT_LIST_SIZE; i++)
+        if (eventList[i].valid)
+            eventList[i].eventTime -= elapsedTime;
+
+    eventList[nextEvent].valid = false;      // Remove event from list...
+
+    (*event)();
+}
diff --git a/src/timing.h b/src/timing.h
new file mode 100755 (executable)
index 0000000..352583b
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// TIMING.H: System timing support functionality
+//
+// by James L. Hammons
+// (C) 2005 Underground Software
+//
+
+#ifndef __TIMING_H__
+#define __TIMING_H__
+
+#include "types.h"
+
+// Note that these are NTSC timings:
+
+//#define RISC_CYCLE_IN_USEC     0.03760684198
+//#define M68K_CYCLE_IN_USEC     (RISC_CYCLE_IN_USEC * 2)
+//#define HORIZ_PERIOD_IN_USEC   63.5555
+#define M6502_CYCLE_IN_USEC      0.9765625
+
+//#define USEC_TO_RISC_CYCLES(u) (uint32)(((u) / RISC_CYCLE_IN_USEC) + 0.5)
+//#define USEC_TO_M68K_CYCLES(u) (uint32)(((u) / M68K_CYCLE_IN_USEC) + 0.5)
+#define USEC_TO_M6502_CYCLES(u)  (uint32)(((u) / M6502_CYCLE_IN_USEC) + 0.5)
+
+void InitializeEventList(void);
+void SetCallbackTime(void (* callback)(void), double time);
+void RemoveCallback(void (* callback)(void));
+void AdjustCallbackTime(void (* callback)(void), double time);
+double GetTimeToNextEvent(void);
+void HandleNextEvent(void);
+
+#endif // __TIMING_H__
diff --git a/src/types.h b/src/types.h
new file mode 100755 (executable)
index 0000000..a1b9d09
--- /dev/null
@@ -0,0 +1,33 @@
+//
+// Fundamental variable types
+// by James L. Hammons
+//
+// Why these aren't a part of the C/C++ standard is beyond me. It seems to me that
+// basic types where you know the width should be a no-brainer.
+//
+
+#ifndef __TYPES_H__
+#define __TYPES_H__
+
+// This is only good on certain intel 32-bit platforms...
+// You may need to tweak to suit your specific platform.
+
+typedef unsigned char          uint8;
+typedef signed char                    int8;
+typedef unsigned short         uint16;
+typedef signed short           int16;
+typedef unsigned                       uint32;
+typedef signed                         int32;
+typedef unsigned long long     uint64;
+typedef signed long long       int64;
+
+typedef uint8  UINT8;
+typedef int8   INT8;
+typedef uint16 UINT16;
+typedef int16  INT16;
+typedef uint32 UINT32;
+typedef int32  INT32;
+typedef uint64 UINT64;
+typedef int64  INT64;
+
+#endif // __TYPES_H__
diff --git a/src/v65c02.cpp b/src/v65c02.cpp
new file mode 100755 (executable)
index 0000000..1538f53
--- /dev/null
@@ -0,0 +1,2372 @@
+//\r
+// Virtual 65C02 Emulator v1.0\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  01/04/2006  Added changelog ;-)\r
+//\r
+\r
+//OK, the wraparound bug exists in both the Apple and Atari versions of Ultima II.\r
+//However, the Atari version *does* occassionally pick strength while the Apple\r
+//versions do not--which would seem to indicate a bug either in the RNG algorithm,\r
+//the 65C02 core, or the Apple hardware. Need to investigate all three!\r
+\r
+#define __DEBUG__\r
+//#define __DEBUGMON__\r
+\r
+#include "v65c02.h"\r
+\r
+#ifdef __DEBUG__\r
+#include "dis65c02.h"\r
+#include "log.h"\r
+#endif\r
+\r
+// Various macros\r
+\r
+#define CLR_Z                          (regs.cc &= ~FLAG_Z)\r
+#define CLR_ZN                         (regs.cc &= ~(FLAG_Z | FLAG_N))\r
+#define CLR_ZNC                                (regs.cc &= ~(FLAG_Z | FLAG_N | FLAG_C))\r
+#define CLR_V                          (regs.cc &= ~FLAG_V)\r
+#define CLR_N                          (regs.cc &= ~FLAG_N)\r
+#define SET_Z(r)                       (regs.cc = ((r) == 0 ? regs.cc | FLAG_Z : regs.cc & ~FLAG_Z))\r
+#define SET_N(r)                       (regs.cc = ((r) & 0x80 ? regs.cc | FLAG_N : regs.cc & ~FLAG_N))\r
+\r
+//Not sure that this code is computing the carry correctly... Investigate! [Seems to be]\r
+#define SET_C_ADD(a,b)         (regs.cc = ((uint8)(b) > (uint8)(~(a)) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+//#define SET_C_SUB(a,b)               (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+#define SET_C_CMP(a,b)         (regs.cc = ((uint8)(b) >= (uint8)(a) ? regs.cc | FLAG_C : regs.cc & ~FLAG_C))\r
+#define SET_ZN(r)                      SET_N(r); SET_Z(r)\r
+#define SET_ZNC_ADD(a,b,r)     SET_N(r); SET_Z(r); SET_C_ADD(a,b)\r
+//#define SET_ZNC_SUB(a,b,r)   SET_N(r); SET_Z(r); SET_C_SUB(a,b)\r
+#define SET_ZNC_CMP(a,b,r)     SET_N(r); SET_Z(r); SET_C_CMP(a,b)\r
+\r
+//Small problem with the EA_ macros: ABS macros don't increment the PC!!! !!! FIX !!!\r
+#define EA_IMM                         regs.pc++\r
+#define EA_ZP                          regs.RdMem(regs.pc++)\r
+#define EA_ZP_X                                (regs.RdMem(regs.pc++) + regs.x) & 0xFF\r
+#define EA_ZP_Y                                (regs.RdMem(regs.pc++) + regs.y) & 0xFF\r
+#define EA_ABS                         RdMemW(regs.pc)\r
+#define EA_ABS_X                       RdMemW(regs.pc) + regs.x\r
+#define EA_ABS_Y                       RdMemW(regs.pc) + regs.y\r
+#define EA_IND_ZP_X                    RdMemW((regs.RdMem(regs.pc++) + regs.x) & 0xFF)\r
+#define EA_IND_ZP_Y                    RdMemW(regs.RdMem(regs.pc++)) + regs.y\r
+#define EA_IND_ZP                      RdMemW(regs.RdMem(regs.pc++))\r
+\r
+#define READ_IMM                       regs.RdMem(EA_IMM)\r
+#define READ_ZP                                regs.RdMem(EA_ZP)\r
+#define READ_ZP_X                      regs.RdMem(EA_ZP_X)\r
+#define READ_ZP_Y                      regs.RdMem(EA_ZP_Y)\r
+#define READ_ABS                       regs.RdMem(EA_ABS);     regs.pc += 2\r
+#define READ_ABS_X                     regs.RdMem(EA_ABS_X);   regs.pc += 2\r
+#define READ_ABS_Y                     regs.RdMem(EA_ABS_Y);   regs.pc += 2\r
+#define READ_IND_ZP_X          regs.RdMem(EA_IND_ZP_X)\r
+#define READ_IND_ZP_Y          regs.RdMem(EA_IND_ZP_Y)\r
+#define READ_IND_ZP                    regs.RdMem(EA_IND_ZP)\r
+\r
+#define READ_IMM_WB(v)         uint16 addr = EA_IMM;      v = regs.RdMem(addr)\r
+#define READ_ZP_WB(v)          uint16 addr = EA_ZP;       v = regs.RdMem(addr)\r
+#define READ_ZP_X_WB(v)                uint16 addr = EA_ZP_X;     v = regs.RdMem(addr)\r
+#define READ_ABS_WB(v)         uint16 addr = EA_ABS;      v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_ABS_X_WB(v)       uint16 addr = EA_ABS_X;    v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_ABS_Y_WB(v)       uint16 addr = EA_ABS_Y;    v = regs.RdMem(addr); regs.pc += 2\r
+#define READ_IND_ZP_X_WB(v)    uint16 addr = EA_IND_ZP_X; v = regs.RdMem(addr)\r
+#define READ_IND_ZP_Y_WB(v)    uint16 addr = EA_IND_ZP_Y; v = regs.RdMem(addr)\r
+#define READ_IND_ZP_WB(v)      uint16 addr = EA_IND_ZP;   v = regs.RdMem(addr)\r
+\r
+#define WRITE_BACK(d)          regs.WrMem(addr, (d))\r
+\r
+// Private global variables\r
+\r
+static V65C02REGS regs;\r
+\r
+//This is probably incorrect, at least WRT to the $x7 and $xF opcodes... !!! FIX !!!\r
+//Also this doesn't take into account the extra cycle it takes when an indirect fetch\r
+//(ABS, ABS X/Y, ZP) crosses a page boundary, or extra cycle for BCD add/subtract...\r
+#warning Cycle counts are not accurate--!!! FIX !!!\r
+static uint8 CPUCycles[256] = {\r
+       7, 6, 1, 1, 5, 3, 5, 1, 3, 2, 2, 1, 6, 4, 6, 1,\r
+       2, 5, 5, 1, 5, 4, 6, 1, 2, 4, 2, 1, 6, 4, 6, 1,\r
+       6, 6, 1, 1, 3, 3, 5, 1, 4, 2, 2, 1, 4, 4, 6, 1,\r
+       2, 5, 5, 1, 4, 4, 6, 1, 2, 4, 2, 1, 4, 4, 6, 1,\r
+       6, 6, 1, 1, 1, 3, 5, 1, 3, 2, 2, 1, 3, 4, 6, 1,\r
+       2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 3, 1, 1, 4, 6, 1,\r
+       6, 6, 1, 1, 3, 3, 5, 1, 4, 2, 2, 1, 6, 4, 6, 1,\r
+       2, 5, 5, 1, 4, 4, 6, 1, 2, 4, 4, 1, 6, 4, 6, 1,\r
+       2, 6, 1, 1, 3, 3, 3, 1, 2, 2, 2, 1, 4, 4, 4, 1,\r
+       2, 6, 5, 1, 4, 4, 4, 1, 2, 5, 2, 1, 4, 5, 5, 1,\r
+       2, 6, 2, 1, 3, 3, 3, 1, 2, 2, 2, 1, 4, 4, 4, 1,\r
+       2, 5, 5, 1, 4, 4, 4, 1, 2, 4, 2, 1, 4, 4, 4, 1,\r
+       2, 6, 1, 1, 3, 3, 5, 1, 2, 2, 2, 1, 4, 4, 6, 1,\r
+       2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 3, 1, 1, 4, 6, 1,\r
+       2, 6, 1, 1, 3, 3, 5, 1, 2, 2, 2, 1, 4, 4, 6, 1,\r
+       2, 5, 5, 1, 1, 4, 6, 1, 2, 4, 4, 1, 1, 4, 6, 1 };\r
+\r
+// Private function prototypes\r
+\r
+static uint16 RdMemW(uint16);\r
+\r
+//\r
+// Read a uint16 out of 65C02 memory (big endian format)\r
+//\r
+static uint16 RdMemW(uint16 address)\r
+{\r
+       return (uint16)(regs.RdMem(address + 1) << 8) | regs.RdMem(address + 0);\r
+}\r
+\r
+\r
+//\r
+// 65C02 OPCODE IMPLEMENTATION\r
+//\r
+// NOTE: Lots of macros are used here to save a LOT of typing. Also\r
+//       helps speed the debugging process. :-) Because of this, combining\r
+//       certain lines may look like a good idea but would end in disaster.\r
+//       You have been warned! ;-)\r
+//\r
+\r
+/*\r
+Mnemonic       Addressing mode Form            Opcode  Size    Timing\r
+\r
+ADC                    Immediate               ADC #Oper       69              2               2\r
+                       Zero Page               ADC Zpg         65              2               3\r
+                       Zero Page,X             ADC Zpg,X       75              2               4\r
+                       Absolute                ADC Abs         6D              3               4\r
+                       Absolute,X              ADC Abs,X       7D              3               4\r
+                       Absolute,Y              ADC Abs,Y       79              3               4\r
+                       (Zero Page,X)   ADC (Zpg,X)     61              2               6\r
+                       (Zero Page),Y   ADC (Zpg),Y     71              2               5\r
+                       (Zero Page)             ADC (Zpg)       72              2               5\r
+*/\r
+\r
+// ADC opcodes\r
+\r
+//This is non-optimal, but it works--optimize later. :-)\r
+#define OP_ADC_HANDLER(m) \\r
+       uint16 sum = (uint16)regs.a + (m) + (uint16)(regs.cc & FLAG_C); \\r
+\\r
+       if (regs.cc & FLAG_D) \\r
+       { \\r
+               if ((sum & 0x0F) > 0x09) \\r
+                       sum += 0x06; \\r
+\\r
+               if ((sum & 0xF0) > 0x90) \\r
+                       sum += 0x60; \\r
+       } \\r
+\\r
+       regs.cc = (regs.cc & ~FLAG_C) | (sum >> 8); \\r
+       regs.cc = (~(regs.a ^ (m)) & (regs.a ^ sum) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V); \\r
+       regs.a = sum & 0xFF; \\r
+       SET_ZN(regs.a)\r
+\r
+//OLD V detection: regs.cc = ((regs.a ^ (m) ^ sum ^ (regs.cc << 7)) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V);\r
+\r
+static void Op69(void)                                                 // ADC #\r
+{\r
+       uint16 m = READ_IMM;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op65(void)                                                 // ADC ZP\r
+{\r
+       uint16 m = READ_ZP;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op75(void)                                                 // ADC ZP, X\r
+{\r
+       uint16 m = READ_ZP_X;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op6D(void)                                                 // ADC ABS\r
+{\r
+       uint16 m = READ_ABS;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op7D(void)                                                 // ADC ABS, X\r
+{\r
+       uint16 m = READ_ABS_X;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op79(void)                                                 // ADC ABS, Y\r
+{\r
+       uint16 m = READ_ABS_Y;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op61(void)                                                 // ADC (ZP, X)\r
+{\r
+       uint16 m = READ_IND_ZP_X;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op71(void)                                                 // ADC (ZP), Y\r
+{\r
+       uint16 m = READ_IND_ZP_Y;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+static void Op72(void)                                                 // ADC (ZP)\r
+{\r
+       uint16 m = READ_IND_ZP;\r
+       OP_ADC_HANDLER(m);\r
+}\r
+\r
+/*\r
+AND    Immediate       AND #Oper       29      2       2\r
+Zero Page              AND Zpg         25      2       3\r
+Zero Page,X            AND Zpg,X       35      2       4\r
+Absolute               AND Abs         2D      3       4\r
+Absolute,X             AND Abs,X       3D      3       4\r
+Absolute,Y             AND Abs,Y       39      3       4\r
+(Zero Page,X)  AND (Zpg,X)     21      2       6\r
+(Zero Page),Y  AND (Zpg),Y     31      2       5\r
+(Zero Page)            AND (Zpg)       32      2       5\r
+*/\r
+\r
+// AND opcodes\r
+\r
+#define OP_AND_HANDLER(m) \\r
+       regs.a &= m; \\r
+       SET_ZN(regs.a)\r
+\r
+static void Op29(void)                                                 // AND #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op25(void)                                                 // AND ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op35(void)                                                 // AND ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op2D(void)                                                 // AND ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op3D(void)                                                 // AND ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op39(void)                                                 // AND ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op21(void)                                                 // AND (ZP, X)\r
+{\r
+       uint8 m = READ_IND_ZP_X;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op31(void)                                                 // AND (ZP), Y\r
+{\r
+       uint8 m = READ_IND_ZP_Y;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+static void Op32(void)                                                 // AND (ZP)\r
+{\r
+       uint8 m = READ_IND_ZP;\r
+       OP_AND_HANDLER(m);\r
+}\r
+\r
+/*\r
+ASL    Accumulator     ASL A           0A      1       2\r
+Zero Page              ASL Zpg         06      2       5\r
+Zero Page,X            ASL Zpg,X       16      2       6\r
+Absolute               ASL Abs         0E      3       6\r
+Absolute,X             ASL Abs,X       1E      3       7\r
+*/\r
+\r
+/*static void Op78(void)  // LSL ABS\r
+{\r
+       uint8 tmp;  uint16 addr;\r
+       addr = FetchW();\r
+       tmp = regs.RdMem(addr);\r
+       (tmp&0x80 ? regs.cc |= 0x01 : regs.cc &= 0xFE);  // Shift hi bit into Carry\r
+       tmp <<= 1;\r
+       regs.WrMem(addr, tmp);\r
+       (tmp == 0 ? regs.cc |= 0x04 : regs.cc &= 0xFB);  // Adjust Zero flag\r
+       (tmp&0x80 ? regs.cc |= 0x08 : regs.cc &= 0xF7);  // Adjust Negative flag\r
+}*/\r
+\r
+// ASL opcodes\r
+\r
+#define OP_ASL_HANDLER(m) \\r
+       regs.cc = ((m) & 0x80 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+       (m) <<= 1; \\r
+       SET_ZN((m))\r
+\r
+static void Op0A(void)                                                 // ASL A\r
+{\r
+       OP_ASL_HANDLER(regs.a);\r
+}\r
+\r
+static void Op06(void)                                                 // ASL ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_ASL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op16(void)                                                 // ASL ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_ASL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op0E(void)                                                 // ASL ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_ASL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op1E(void)                                                 // ASL ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_ASL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+BBR0   Relative        BBR0 Oper       0F      2       2\r
+BBR1   Relative        BBR1 Oper       1F      2       2\r
+BBR2   Relative        BBR2 Oper       2F      2       2\r
+BBR3   Relative        BBR3 Oper       3F      2       2\r
+BBR4   Relative        BBR4 Oper       4F      2       2\r
+BBR5   Relative        BBR5 Oper       5F      2       2\r
+BBR6   Relative        BBR6 Oper       6F      2       2\r
+BBR7   Relative        BBR7 Oper       7F      2       2\r
+BBS0   Relative        BBS0 Oper       8F      2       2\r
+BBS1   Relative        BBS1 Oper       9F      2       2\r
+BBS2   Relative        BBS2 Oper       AF      2       2\r
+BBS3   Relative        BBS3 Oper       BF      2       2\r
+BBS4   Relative        BBS4 Oper       CF      2       2\r
+BBS5   Relative        BBS5 Oper       DF      2       2\r
+BBS6   Relative        BBS6 Oper       EF      2       2\r
+BBS7   Relative        BBS7 Oper       FF      2       2\r
+*/\r
+\r
+// BBR/Sn opcodes\r
+\r
+static void Op0F(void)                                                 // BBR0\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x01))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op1F(void)                                                 // BBR1\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x02))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op2F(void)                                                 // BBR2\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x04))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op3F(void)                                                 // BBR3\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x08))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op4F(void)                                                 // BBR4\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x10))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op5F(void)                                                 // BBR5\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x20))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op6F(void)                                                 // BBR6\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x40))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op7F(void)                                                 // BBR7\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.a & 0x80))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op8F(void)                                                 // BBS0\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x01)\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op9F(void)                                                 // BBS1\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x02)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpAF(void)                                                 // BBS2\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x04)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpBF(void)                                                 // BBS3\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x08)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpCF(void)                                                 // BBS4\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x10)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpDF(void)                                                 // BBS5\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x20)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpEF(void)                                                 // BBS6\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x40)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpFF(void)                                                 // BBS7\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.a & 0x80)\r
+               regs.pc += m;\r
+}\r
+\r
+/*\r
+BCC    Relative        BCC Oper        90      2       2\r
+BCS    Relative        BCS Oper        B0      2       2\r
+BEQ    Relative        BEQ Oper        F0      2       2\r
+*/\r
+\r
+// Branch opcodes\r
+\r
+static void Op90(void)                                                 // BCC\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.cc & FLAG_C))\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpB0(void)                                                 // BCS\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.cc & FLAG_C)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpF0(void)                                                 // BEQ\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.cc & FLAG_Z)\r
+               regs.pc += m;\r
+}\r
+\r
+/*\r
+BIT    Immediate       BIT #Oper       89      2       2\r
+Zero Page              BIT Zpg         24      2       3\r
+Zero Page,X            BIT Zpg,X       34      2       4\r
+Absolute               BIT Abs         2C      3       4\r
+Absolute,X             BIT Abs,X       3C      3       4\r
+*/\r
+\r
+// BIT opcodes\r
+\r
+/* 1. The BIT instruction copies bit 6 to the V flag, and bit 7 to the N flag (except in immediate\r
+      addressing mode where V & N are untouched.) The accumulator and the operand are ANDed and the\r
+      Z flag is set appropriately. */\r
+\r
+#define OP_BIT_HANDLER(m) \\r
+       int8 result = regs.a & (m); \\r
+       regs.cc &= ~(FLAG_N | FLAG_V); \\r
+       regs.cc |= ((m) & 0xC0); \\r
+       SET_Z(result)\r
+\r
+static void Op89(void)                                                 // BIT #\r
+{\r
+       int8 m = READ_IMM;\r
+       int8 result = regs.a & m;\r
+       SET_Z(result);\r
+}\r
+\r
+static void Op24(void)                                                 // BIT ZP\r
+{\r
+       int8 m = READ_ZP;\r
+       OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op34(void)                                                 // BIT ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op2C(void)                                                 // BIT ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_BIT_HANDLER(m);\r
+}\r
+\r
+static void Op3C(void)                                                 // BIT ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_BIT_HANDLER(m);\r
+}\r
+\r
+/*\r
+BMI    Relative        BMI Oper        30      2       2\r
+BNE    Relative        BNE Oper        D0      2       2\r
+BPL    Relative        BPL Oper        10      2       2\r
+BRA    Relative        BRA Oper        80      2       3\r
+*/\r
+\r
+// More branch opcodes\r
+\r
+static void Op30(void)                                                 // BMI\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.cc & FLAG_N)\r
+               regs.pc += m;\r
+}\r
+\r
+static void OpD0(void)                                                 // BNE\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.cc & FLAG_Z))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op10(void)                                                 // BPL\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.cc & FLAG_N))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op80(void)                                                 // BRA\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+       regs.pc += m;\r
+}\r
+\r
+/*\r
+BRK    Implied         BRK                     00      1       7\r
+*/\r
+\r
+static void Op00(void)                                                 // BRK\r
+{\r
+       regs.cc |= FLAG_B;                                                      // Set B\r
+       regs.pc++;                                                                      // RTI comes back to the instruction one byte after the BRK\r
+       regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8);   // Save PC and CC\r
+       regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+       regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+       regs.cc |= FLAG_I;                                                      // Set I\r
+       regs.cc &= ~FLAG_D;                                                     // & clear D\r
+       regs.pc = RdMemW(0xFFFE);                                       // Grab the IRQ vector & go...\r
+}\r
+\r
+/*\r
+BVC    Relative        BVC Oper        50      2       2\r
+BVS    Relative        BVS Oper        70      2       2\r
+*/\r
+\r
+// Even more branch opcodes\r
+\r
+static void Op50(void)                                                 // BVC\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (!(regs.cc & FLAG_V))\r
+               regs.pc += m;\r
+}\r
+\r
+static void Op70(void)                                                 // BVS\r
+{\r
+       int16 m = (int16)(int8)READ_IMM;\r
+\r
+       if (regs.cc & FLAG_V)\r
+               regs.pc += m;\r
+}\r
+\r
+/*\r
+CLC    Implied         CLC                     18      1       2\r
+*/\r
+\r
+static void Op18(void)                                                 // CLC\r
+{\r
+       regs.cc &= ~FLAG_C;\r
+}\r
+\r
+/*\r
+CLD    Implied         CLD                     D8      1       2\r
+*/\r
+\r
+static void OpD8(void)                                                 // CLD\r
+{\r
+       regs.cc &= ~FLAG_D;\r
+}\r
+\r
+/*\r
+CLI    Implied         CLI                     58      1       2\r
+*/\r
+\r
+static void Op58(void)                                                 // CLI\r
+{\r
+       regs.cc &= ~FLAG_I;\r
+}\r
+\r
+/*\r
+CLV    Implied         CLV                     B8      1       2\r
+*/\r
+\r
+static void OpB8(void)                                                 // CLV\r
+{\r
+       regs.cc &= ~FLAG_V;\r
+}\r
+\r
+/*\r
+CMP    Immediate       CMP #Oper       C9      2       2\r
+Zero Page              CMP Zpg         C5      2       3\r
+Zero Page,X            CMP Zpg         D5      2       4\r
+Absolute               CMP Abs         CD      3       4\r
+Absolute,X             CMP Abs,X       DD      3       4\r
+Absolute,Y             CMP Abs,Y       D9      3       4\r
+(Zero Page,X)  CMP (Zpg,X)     C1      2       6\r
+(Zero Page),Y  CMP (Zpg),Y     D1      2       5\r
+(Zero Page)            CMP (Zpg)       D2      2       5\r
+*/\r
+\r
+// CMP opcodes\r
+\r
+/*\r
+Here's the latest: The CMP is NOT generating the Z flag when A=$C0!\r
+\r
+FABA: A0 07          LDY   #$07                [PC=FABC, SP=01FF, CC=---B-IZ-, A=00, X=00, Y=07]\r
+FABC: C6 01          DEC   $01                 [PC=FABE, SP=01FF, CC=N--B-I--, A=00, X=00, Y=07]\r
+FABE: A5 01          LDA   $01                 [PC=FAC0, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC0: C9 C0          CMP   #$C0                [PC=FAC2, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC2: F0 D7          BEQ   $FA9B               [PC=FAC4, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC4: 8D F8 07       STA   $07F8               [PC=FAC7, SP=01FF, CC=N--B-I--, A=C0, X=00, Y=07]\r
+FAC7: B1 00          LDA   ($00),Y\r
+*** Read at I/O address C007\r
+               [PC=FAC9, SP=01FF, CC=---B-IZ-, A=00, X=00, Y=07]\r
+FAC9: D9 01 FB       CMP   $FB01,Y             [PC=FACC, SP=01FF, CC=---B-I--, A=00, X=00, Y=07]\r
+FACC: D0 EC          BNE   $FABA               [PC=FABA, SP=01FF, CC=---B-I--, A=00, X=00, Y=07]\r
+\r
+Should be fixed now... (was adding instead of subtracting!)\r
+\r
+Small problem here... First two should set the carry while the last one should clear it. !!! FIX !!! [DONE]\r
+\r
+FDF0: C9 A0          CMP   #$A0                [PC=FDF2, SP=01F1, CC=---B-IZ-, A=A0, X=02, Y=03]\r
+FD7E: C9 E0          CMP   #$E0                [PC=FD80, SP=01F4, CC=N--B-I--, A=A0, X=02, Y=03]\r
+FD38: C9 9B          CMP   #$9B                [PC=FD3A, SP=01F2, CC=---B-I-C, A=A0, X=02, Y=03]\r
+\r
+Compare sets flags as if a subtraction had been carried out. If the value in the accumulator is equal or greater than the compared value, the Carry will be set. The equal (Z) and sign (S) flags will be set based on equality or lack thereof and the sign (i.e. A>=$80) of the accumulator.\r
+*/\r
+\r
+#define OP_CMP_HANDLER(m) \\r
+       uint8 result = regs.a - (m); \\r
+       SET_ZNC_CMP(m, regs.a, result)\r
+\r
+static void OpC9(void)                                                 // CMP #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpC5(void)                                                 // CMP ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD5(void)                                                 // CMP ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpCD(void)                                                 // CMP ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpDD(void)                                                 // CMP ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD9(void)                                                 // CMP ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpC1(void)                                                 // CMP (ZP, X)\r
+{\r
+       uint8 m = READ_IND_ZP_X;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD1(void)                                                 // CMP (ZP), Y\r
+{\r
+       uint8 m = READ_IND_ZP_Y;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+static void OpD2(void)                                                 // CMP (ZP)\r
+{\r
+       uint8 m = READ_IND_ZP;\r
+       OP_CMP_HANDLER(m);\r
+}\r
+\r
+/*\r
+CPX    Immediate       CPX #Oper       E0      2       2\r
+Zero Page              CPX Zpg         E4      2       3\r
+Absolute               CPX Abs         EC      3       4\r
+*/\r
+\r
+// CPX opcodes\r
+\r
+#define OP_CPX_HANDLER(m) \\r
+       uint8 result = regs.x - (m); \\r
+       SET_ZNC_CMP(m, regs.x, result)\r
+\r
+static void OpE0(void)                                                 // CPX #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_CPX_HANDLER(m);\r
+}\r
+\r
+static void OpE4(void)                                                 // CPX ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_CPX_HANDLER(m);\r
+}\r
+\r
+static void OpEC(void)                                                 // CPX ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_CPX_HANDLER(m);\r
+}\r
+\r
+/*\r
+CPY    Immediate       CPY #Oper       C0      2       2\r
+Zero Page              CPY Zpg         C4      2       3\r
+Absolute               CPY Abs         CC      3       4\r
+*/\r
+\r
+// CPY opcodes\r
+\r
+#define OP_CPY_HANDLER(m) \\r
+       uint8 result = regs.y - (m); \\r
+       SET_ZNC_CMP(m, regs.y, result)\r
+\r
+static void OpC0(void)                                                 // CPY #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_CPY_HANDLER(m);\r
+}\r
+\r
+static void OpC4(void)                                                 // CPY ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_CPY_HANDLER(m);\r
+}\r
+\r
+static void OpCC(void)                                                 // CPY ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_CPY_HANDLER(m);\r
+}\r
+\r
+/*\r
+DEA    Accumulator     DEA                     3A      1       2\r
+*/\r
+\r
+static void Op3A(void)                                                 // DEA\r
+{\r
+       regs.a--;\r
+       SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+DEC    Zero Page       DEC Zpg         C6      2       5\r
+Zero Page,X            DEC Zpg,X       D6      2       6\r
+Absolute               DEC Abs         CE      3       6\r
+Absolute,X             DEC Abs,X       DE      3       7\r
+*/\r
+\r
+// DEC opcodes\r
+\r
+#define OP_DEC_HANDLER(m) \\r
+       m--; \\r
+       SET_ZN(m)\r
+\r
+static void OpC6(void)                                                 // DEC ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_DEC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpD6(void)                                                 // DEC ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_DEC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpCE(void)                                                 // DEC ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_DEC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpDE(void)                                                 // DEC ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_DEC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+Here's one problem: DEX is setting the N flag!\r
+\r
+D3EE: A2 09          LDX   #$09                [PC=D3F0, SP=01F7, CC=---B-I-C, A=01, X=09, Y=08]\r
+D3F0: 98             TYA               [PC=D3F1, SP=01F7, CC=N--B-I-C, A=08, X=09, Y=08]\r
+D3F1: 48             PHA               [PC=D3F2, SP=01F6, CC=N--B-I-C, A=08, X=09, Y=08]\r
+D3F2: B5 93          LDA   $93,X               [PC=D3F4, SP=01F6, CC=---B-IZC, A=00, X=09, Y=08]\r
+D3F4: CA             DEX               [PC=D3F5, SP=01F6, CC=N--B-I-C, A=00, X=08, Y=08]\r
+D3F5: 10 FA          BPL   $D3F1               [PC=D3F7, SP=01F6, CC=N--B-I-C, A=00, X=08, Y=08]\r
+D3F7: 20 84 E4       JSR   $E484               [PC=E484, SP=01F4, CC=N--B-I-C, A=00, X=08, Y=08]\r
+\r
+should be fixed now...\r
+*/\r
+\r
+/*\r
+DEX    Implied         DEX                     CA      1       2\r
+*/\r
+\r
+static void OpCA(void)                                                 // DEX\r
+{\r
+       regs.x--;\r
+       SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+DEY    Implied         DEY                     88      1       2\r
+*/\r
+\r
+static void Op88(void)                                                 // DEY\r
+{\r
+       regs.y--;\r
+       SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+EOR    Immediate       EOR #Oper       49      2       2\r
+Zero Page              EOR Zpg         45      2       3\r
+Zero Page,X            EOR Zpg,X       55      2       4\r
+Absolute               EOR Abs         4D      3       4\r
+Absolute,X             EOR Abs,X       5D      3       4\r
+Absolute,Y             EOR Abs,Y       59      3       4\r
+(Zero Page,X)  EOR (Zpg,X)     41      2       6\r
+(Zero Page),Y  EOR (Zpg),Y     51      2       5\r
+(Zero Page)            EOR (Zpg)       52      2       5\r
+*/\r
+\r
+// EOR opcodes\r
+\r
+#define OP_EOR_HANDLER(m) \\r
+       regs.a ^= m; \\r
+       SET_ZN(regs.a)\r
+\r
+static void Op49(void)                                                 // EOR #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op45(void)                                                 // EOR ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op55(void)                                                 // EOR ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op4D(void)                                                 // EOR ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op5D(void)                                                 // EOR ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op59(void)                                                 // EOR ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op41(void)                                                 // EOR (ZP, X)\r
+{\r
+       uint8 m = READ_IND_ZP_X;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op51(void)                                                 // EOR (ZP), Y\r
+{\r
+       uint8 m = READ_IND_ZP_Y;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+static void Op52(void)                                                 // EOR (ZP)\r
+{\r
+       uint8 m = READ_IND_ZP;\r
+       OP_EOR_HANDLER(m);\r
+}\r
+\r
+/*\r
+INA    Accumulator     INA                     1A      1       2\r
+*/\r
+\r
+static void Op1A(void)                                                 // INA\r
+{\r
+       regs.a++;\r
+       SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+INC    Zero Page       INC Zpg         E6      2       5\r
+Zero Page,X            INC Zpg,X       F6      2       6\r
+Absolute               INC Abs         EE      3       6\r
+Absolute,X             INC Abs,X       FE      3       7\r
+*/\r
+\r
+// INC opcodes\r
+\r
+#define OP_INC_HANDLER(m) \\r
+       m++; \\r
+       SET_ZN(m)\r
+\r
+static void OpE6(void)                                                 // INC ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_INC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpF6(void)                                                 // INC ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_INC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpEE(void)                                                 // INC ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_INC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpFE(void)                                                 // INC ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_INC_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+INX    Implied         INX                     E8      1       2\r
+*/\r
+\r
+static void OpE8(void)                                                 // INX\r
+{\r
+       regs.x++;\r
+       SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+INY    Implied         INY                     C8      1       2\r
+*/\r
+\r
+static void OpC8(void)                                                 // INY\r
+{\r
+       regs.y++;\r
+       SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+JMP    Absolute        JMP Abs         4C      3       3\r
+(Absolute)             JMP (Abs)       6C      3       5\r
+(Absolute,X)   JMP (Abs,X)     7C      3       6\r
+*/\r
+\r
+// JMP opcodes\r
+\r
+static void Op4C(void)                                                 // JMP ABS\r
+{\r
+       regs.pc = RdMemW(regs.pc);\r
+}\r
+\r
+static void Op6C(void)                                                 // JMP (ABS)\r
+{\r
+//     uint16 addr = RdMemW(regs.pc);\r
+//#ifdef __DEBUG__\r
+//WriteLog("\n[JMP ABS]: addr fetched = %04X, bytes at %04X = %02X %02X (RdMemw=%04X)\n",\r
+//     addr, addr, regs.RdMem(addr), regs.RdMem(addr+1), RdMemW(addr));\r
+//#endif\r
+//     addr = RdMemW(addr);\r
+       regs.pc = RdMemW(RdMemW(regs.pc));\r
+}\r
+\r
+static void Op7C(void)                                                 // JMP (ABS, X)\r
+{\r
+       regs.pc = RdMemW(RdMemW(regs.pc) + regs.x);\r
+}\r
+\r
+/*\r
+JSR    Absolute        JSR Abs         20      3       6\r
+*/\r
+\r
+//This is not jumping to the correct address... !!! FIX !!! [DONE]\r
+static void Op20(void)                                                 // JSR\r
+{\r
+       uint16 addr = RdMemW(regs.pc);\r
+       regs.pc++;                                                                      // Since it pushes return address - 1...\r
+       regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8);\r
+       regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+       regs.pc = addr;\r
+}\r
+\r
+/*\r
+LDA    Immediate       LDA #Oper       A9      2       2\r
+Zero Page              LDA Zpg         A5      2       3\r
+Zero Page,X            LDA Zpg,X       B5      2       4\r
+Absolute               LDA Abs         AD      3       4\r
+Absolute,X             LDA Abs,X       BD      3       4\r
+Absolute,Y             LDA Abs,Y       B9      3       4\r
+(Zero Page,X)  LDA (Zpg,X)     A1      2       6\r
+(Zero Page),Y  LDA (Zpg),Y     B1      2       5\r
+(Zero Page)            LDA (Zpg)       B2      2       5\r
+*/\r
+\r
+// LDA opcodes\r
+\r
+#define OP_LDA_HANDLER(m) \\r
+       regs.a = m; \\r
+       SET_ZN(regs.a)\r
+\r
+static void OpA9(void)                                                 // LDA #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpA5(void)                                                 // LDA ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB5(void)                                                 // LDA ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpAD(void)                                                 // LDA ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpBD(void)                                                 // LDA ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB9(void)                                                 // LDA ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpA1(void)                                                 // LDA (ZP, X)\r
+{\r
+       uint8 m = READ_IND_ZP_X;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB1(void)                                                 // LDA (ZP), Y\r
+{\r
+       uint8 m = READ_IND_ZP_Y;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+static void OpB2(void)                                                 // LDA (ZP)\r
+{\r
+       uint8 m = READ_IND_ZP;\r
+       OP_LDA_HANDLER(m);\r
+}\r
+\r
+/*\r
+LDX    Immediate       LDX #Oper       A2      2       2\r
+Zero Page              LDX Zpg         A6      2       3\r
+Zero Page,Y            LDX Zpg,Y       B6      2       4\r
+Absolute               LDX Abs         AE      3       4\r
+Absolute,Y             LDX Abs,Y       BE      3       4\r
+*/\r
+\r
+// LDX opcodes\r
+\r
+#define OP_LDX_HANDLER(m) \\r
+       regs.x = m; \\r
+       SET_ZN(regs.x)\r
+\r
+static void OpA2(void)                                                 // LDX #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpA6(void)                                                 // LDX ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpB6(void)                                                 // LDX ZP, Y\r
+{\r
+       uint8 m = READ_ZP_Y;\r
+       OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpAE(void)                                                 // LDX ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_LDX_HANDLER(m);\r
+}\r
+\r
+static void OpBE(void)                                                 // LDX ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_LDX_HANDLER(m);\r
+}\r
+\r
+/*\r
+LDY    Immediate       LDY #Oper       A0      2       2\r
+Zero Page              LDY Zpg         A4      2       3\r
+Zero Page,Y            LDY Zpg,X       B4      2       4\r
+Absolute               LDY Abs         AC      3       4\r
+Absolute,Y             LDY Abs,X       BC      3       4\r
+*/\r
+\r
+// LDY opcodes\r
+\r
+#define OP_LDY_HANDLER(m) \\r
+       regs.y = m; \\r
+       SET_ZN(regs.y)\r
+\r
+static void OpA0(void)                                                 // LDY #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpA4(void)                                                 // LDY ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpB4(void)                                                 // LDY ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpAC(void)                                                 // LDY ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_LDY_HANDLER(m);\r
+}\r
+\r
+static void OpBC(void)                                                 // LDY ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_LDY_HANDLER(m);\r
+}\r
+\r
+/*\r
+LSR    Accumulator     LSR A           4A      1       2\r
+Zero Page              LSR Zpg         46      2       5\r
+Zero Page,X            LSR Zpg,X       56      2       6\r
+Absolute               LSR Abs         4E      3       6\r
+Absolute,X             LSR Abs,X       5E      3       7\r
+*/\r
+\r
+// LSR opcodes\r
+\r
+#define OP_LSR_HANDLER(m) \\r
+       regs.cc = ((m) & 0x01 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+       (m) >>= 1; \\r
+       CLR_N; SET_Z((m))\r
+\r
+static void Op4A(void)                                                 // LSR A\r
+{\r
+       OP_LSR_HANDLER(regs.a);\r
+}\r
+\r
+static void Op46(void)                                                 // LSR ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_LSR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op56(void)                                                 // LSR ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_LSR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op4E(void)                                                 // LSR ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_LSR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op5E(void)                                                 // LSR ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_LSR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+NOP    Implied         NOP                     EA      1       2\r
+*/\r
+\r
+static void OpEA(void)                                                 // NOP\r
+{\r
+}\r
+\r
+/*\r
+ORA    Immediate       ORA #Oper       09      2       2\r
+Zero Page              ORA Zpg         05      2       3\r
+Zero Page,X            ORA Zpg,X       15      2       4\r
+Absolute               ORA Abs         0D      3       4\r
+Absolute,X             ORA Abs,X       1D      3       4\r
+Absolute,Y             ORA Abs,Y       19      3       4\r
+(Zero Page,X)  ORA (Zpg,X)     01      2       6\r
+(Zero Page),Y  ORA (Zpg),Y     11      2       5\r
+(Zero Page)            ORA (Zpg)       12      2       5\r
+*/\r
+\r
+// ORA opcodes\r
+\r
+#define OP_ORA_HANDLER(m) \\r
+       regs.a |= m; \\r
+       SET_ZN(regs.a)\r
+\r
+static void Op09(void)                                                 // ORA #\r
+{\r
+       uint8 m = READ_IMM;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op05(void)                                                 // ORA ZP\r
+{\r
+       uint8 m = READ_ZP;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op15(void)                                                 // ORA ZP, X\r
+{\r
+       uint8 m = READ_ZP_X;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op0D(void)                                                 // ORA ABS\r
+{\r
+       uint8 m = READ_ABS;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op1D(void)                                                 // ORA ABS, X\r
+{\r
+       uint8 m = READ_ABS_X;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op19(void)                                                 // ORA ABS, Y\r
+{\r
+       uint8 m = READ_ABS_Y;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op01(void)                                                 // ORA (ZP, X)\r
+{\r
+       uint8 m = READ_IND_ZP_X;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op11(void)                                                 // ORA (ZP), Y\r
+{\r
+       uint8 m = READ_IND_ZP_Y;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+static void Op12(void)                                                 // ORA (ZP)\r
+{\r
+       uint8 m = READ_IND_ZP;\r
+       OP_ORA_HANDLER(m);\r
+}\r
+\r
+/*\r
+PHA    Implied         PHA                     48      1       3\r
+*/\r
+\r
+static void Op48(void)                                                 // PHA\r
+{\r
+       regs.WrMem(0x0100 + regs.sp--, regs.a);\r
+}\r
+\r
+static void Op08(void)                                                 // PHP\r
+{\r
+       regs.cc |= FLAG_UNK;                                            // Make sure that the unused bit is always set\r
+       regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+}\r
+\r
+/*\r
+PHX    Implied         PHX                     DA      1       3\r
+*/\r
+\r
+static void OpDA(void)                                                 // PHX\r
+{\r
+       regs.WrMem(0x0100 + regs.sp--, regs.x);\r
+}\r
+\r
+/*\r
+PHY    Implied         PHY                     5A      1       3\r
+*/\r
+\r
+static void Op5A(void)                                                 // PHY\r
+{\r
+       regs.WrMem(0x0100 + regs.sp--, regs.y);\r
+}\r
+\r
+/*\r
+PLA    Implied         PLA                     68      1       4\r
+*/\r
+\r
+static void Op68(void)                                                 // PLA\r
+{\r
+       regs.a = regs.RdMem(0x0100 + ++regs.sp);\r
+       SET_ZN(regs.a);\r
+}\r
+\r
+static void Op28(void)                                                 // PLP\r
+{\r
+       regs.cc = regs.RdMem(0x0100 + ++regs.sp);\r
+}\r
+\r
+/*\r
+PLX    Implied         PLX                     FA      1       4\r
+*/\r
+\r
+static void OpFA(void)                                                 // PLX\r
+{\r
+       regs.x = regs.RdMem(0x0100 + ++regs.sp);\r
+       SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+PLY    Implied         PLY                     7A      1       4\r
+*/\r
+\r
+static void Op7A(void)                                                 // PLY\r
+{\r
+       regs.y = regs.RdMem(0x0100 + ++regs.sp);\r
+       SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+The bit set and clear instructions have the form xyyy0111, where x is 0 to clear a bit or 1 to set it, and yyy is which bit at the memory location to set or clear. \r
+   RMB0  RMB1  RMB2  RMB3  RMB4  RMB5  RMB6  RMB7\r
+  zp  07  17  27  37  47  57  67  77\r
+     SMB0  SMB1  SMB2  SMB3  SMB4  SMB5  SMB6  SMB7\r
+  zp  87  97  A7  B7  C7  D7  E7  F7\r
+*/\r
+\r
+// RMB opcodes\r
+\r
+static void Op07(void)                                                 // RMB0 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xFE;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op17(void)                                                 // RMB1 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xFD;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op27(void)                                                 // RMB2 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xFB;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op37(void)                                                 // RMB3 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xF7;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op47(void)                                                 // RMB4 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xEF;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op57(void)                                                 // RMB5 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xDF;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op67(void)                                                 // RMB6 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0xBF;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op77(void)                                                 // RMB7 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m &= 0x7F;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+ROL    Accumulator     ROL A           2A      1       2\r
+Zero Page              ROL Zpg         26      2       5\r
+Zero Page,X            ROL Zpg,X       36      2       6\r
+Absolute               ROL Abs         2E      3       6\r
+Absolute,X             ROL Abs,X       3E      3       7\r
+*/\r
+\r
+// ROL opcodes\r
+\r
+#define OP_ROL_HANDLER(m) \\r
+       uint8 tmp = regs.cc & 0x01; \\r
+       regs.cc = ((m) & 0x80 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+       (m) = ((m) << 1) | tmp; \\r
+       SET_ZN((m))\r
+\r
+static void Op2A(void)                                                 // ROL A\r
+{\r
+       OP_ROL_HANDLER(regs.a);\r
+}\r
+\r
+static void Op26(void)                                                 // ROL ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_ROL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op36(void)                                                 // ROL ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_ROL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op2E(void)                                                 // ROL ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_ROL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op3E(void)                                                 // ROL ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_ROL_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+ROR    Accumulator     ROR A           6A      1       2\r
+Zero Page              ROR Zpg         66      2       5\r
+Zero Page,X            ROR Zpg,X       76      2       6\r
+Absolute               ROR Abs         6E      3       6\r
+Absolute,X             ROR Abs,X       7E      3       7\r
+*/\r
+\r
+// ROR opcodes\r
+\r
+#define OP_ROR_HANDLER(m) \\r
+       uint8 tmp = (regs.cc & 0x01) << 7; \\r
+       regs.cc = ((m) & 0x01 ? regs.cc | FLAG_C : regs.cc & ~FLAG_C); \\r
+       (m) = ((m) >> 1) | tmp; \\r
+       SET_ZN((m))\r
+\r
+static void Op6A(void)                                                 // ROR A\r
+{\r
+       OP_ROR_HANDLER(regs.a);\r
+}\r
+\r
+static void Op66(void)                                                 // ROR ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_ROR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op76(void)                                                 // ROR ZP, X\r
+{\r
+       uint8 m;\r
+       READ_ZP_X_WB(m);\r
+       OP_ROR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op6E(void)                                                 // ROR ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_ROR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op7E(void)                                                 // ROR ABS, X\r
+{\r
+       uint8 m;\r
+       READ_ABS_X_WB(m);\r
+       OP_ROR_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+RTI    Implied         RTI                     40      1       6\r
+*/\r
+\r
+static void Op40(void)                                                 // RTI\r
+{\r
+       regs.cc = regs.RdMem(0x0100 + ++regs.sp);\r
+       regs.pc = regs.RdMem(0x0100 + ++regs.sp);\r
+       regs.pc |= (uint16)(regs.RdMem(0x0100 + ++regs.sp)) << 8;\r
+}\r
+\r
+/*\r
+RTS    Implied         RTS                     60      1       6\r
+*/\r
+\r
+static void Op60(void)                                                 // RTS\r
+{\r
+       regs.pc = regs.RdMem(0x0100 + ++regs.sp);\r
+       regs.pc |= (uint16)(regs.RdMem(0x0100 + ++regs.sp)) << 8;\r
+       regs.pc++;                                                                      // Since it pushes return address - 1...\r
+//printf("*** RTS: PC = $%04X, SP= $1%02X\n", regs.pc, regs.sp);\r
+//fflush(stdout);\r
+}\r
+\r
+/*\r
+SBC    Immediate       SBC #Oper       E9      2       2\r
+Zero Page              SBC Zpg         E5      2       3\r
+Zero Page,X            SBC Zpg,X       F5      2       4\r
+Absolute               SBC Abs         ED      3       4\r
+Absolute,X             SBC Abs,X       FD      3       4\r
+Absolute,Y             SBC Abs,Y       F9      3       4\r
+(Zero Page,X)  SBC (Zpg,X)     E1      2       6\r
+(Zero Page),Y  SBC (Zpg),Y     F1      2       5\r
+(Zero Page)            SBC (Zpg)       F2      2       5\r
+*/\r
+\r
+// SBC opcodes\r
+\r
+//This is non-optimal, but it works--optimize later. :-)\r
+//This is correct except for the BCD handling... !!! FIX !!! [Possibly DONE]\r
+#define OP_SBC_HANDLER(m) \\r
+       uint16 sum = (uint16)regs.a - (m) - (uint16)((regs.cc & FLAG_C) ^ 0x01); \\r
+\\r
+       if (regs.cc & FLAG_D) \\r
+       { \\r
+               if ((sum & 0x0F) > 0x09) \\r
+                       sum -= 0x06; \\r
+\\r
+               if ((sum & 0xF0) > 0x90) \\r
+                       sum -= 0x60; \\r
+       } \\r
+\\r
+       regs.cc = (regs.cc & ~FLAG_C) | (((sum >> 8) ^ 0x01) & FLAG_C); \\r
+       regs.cc = ((regs.a ^ (m)) & (regs.a ^ sum) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V); \\r
+       regs.a = sum & 0xFF; \\r
+       SET_ZN(regs.a)\r
+\r
+/*\r
+D5AF: 38             SEC               [PC=D5B0, SP=01F6, CC=---B-I-C, A=4C, X=00, Y=06]\r
+\r
+*** HERE'S where it sets the D flag on a subtract... Arg!\r
+\r
+D5B0: F1 9D          SBC   ($9D),Y     [PC=D5B2, SP=01F6, CC=N--BDI--, A=FE, X=00, Y=06]\r
+\r
+Fixed. :-)\r
+*/\r
+\r
+//OLD V detection: regs.cc = ((regs.a ^ (m) ^ sum ^ (regs.cc << 7)) & 0x80 ? regs.cc | FLAG_V : regs.cc & ~FLAG_V);\r
+\r
+static void OpE9(void)                                                 // SBC #\r
+{\r
+       uint16 m = READ_IMM;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpE5(void)                                                 // SBC ZP\r
+{\r
+       uint16 m = READ_ZP;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF5(void)                                                 // SBC ZP, X\r
+{\r
+       uint16 m = READ_ZP_X;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpED(void)                                                 // SBC ABS\r
+{\r
+       uint16 m = READ_ABS;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpFD(void)                                                 // SBC ABS, X\r
+{\r
+       uint16 m = READ_ABS_X;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF9(void)                                                 // SBC ABS, Y\r
+{\r
+       uint16 m = READ_ABS_Y;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpE1(void)                                                 // SBC (ZP, X)\r
+{\r
+       uint16 m = READ_IND_ZP_X;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF1(void)                                                 // SBC (ZP), Y\r
+{\r
+       uint16 m = READ_IND_ZP_Y;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+static void OpF2(void)                                                 // SBC (ZP)\r
+{\r
+       uint16 m = READ_IND_ZP;\r
+       OP_SBC_HANDLER(m);\r
+}\r
+\r
+/*\r
+SEC    Implied         SEC                     38      1       2\r
+*/\r
+\r
+static void Op38(void)                                                 // SEC\r
+{\r
+       regs.cc |= FLAG_C;\r
+}\r
+\r
+/*\r
+SED    Implied         SED                     F8      1       2\r
+*/\r
+\r
+static void OpF8(void)                                                 // SED\r
+{\r
+       regs.cc |= FLAG_D;\r
+}\r
+\r
+/*\r
+SEI    Implied         SEI                     78      1       2\r
+*/\r
+\r
+static void Op78(void)                                                 // SEI\r
+{\r
+       regs.cc |= FLAG_I;\r
+}\r
+\r
+/*\r
+The bit set and clear instructions have the form xyyy0111, where x is 0 to clear a bit or 1 to set it, and yyy is which bit at the memory location to set or clear. \r
+   RMB0  RMB1  RMB2  RMB3  RMB4  RMB5  RMB6  RMB7\r
+  zp  07  17  27  37  47  57  67  77\r
+     SMB0  SMB1  SMB2  SMB3  SMB4  SMB5  SMB6  SMB7\r
+  zp  87  97  A7  B7  C7  D7  E7  F7\r
+*/\r
+\r
+// SMB opcodes\r
+\r
+static void Op87(void)                                                 // SMB0 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x01;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op97(void)                                                 // SMB1 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x02;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpA7(void)                                                 // SMB2 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x04;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpB7(void)                                                 // SMB3 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x08;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpC7(void)                                                 // SMB4 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x10;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpD7(void)                                                 // SMB5 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x20;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpE7(void)                                                 // SMB6 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x40;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void OpF7(void)                                                 // SMB7 ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       m |= 0x80;\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+STA    Zero Page       STA Zpg         85      2       3\r
+Zero Page,X            STA Zpg,X       95      2       4\r
+Absolute               STA Abs         8D      3       4\r
+Absolute,X             STA Abs,X       9D      3       5\r
+Absolute,Y             STA Abs,Y       99      3       5\r
+(Zero Page,X)  STA (Zpg,X)     81      2       6\r
+(Zero Page),Y  STA (Zpg),Y     91      2       6\r
+(Zero Page)            STA (Zpg)       92      2       5\r
+*/\r
+\r
+// STA opcodes\r
+\r
+static void Op85(void)\r
+{\r
+       regs.WrMem(EA_ZP, regs.a);\r
+}\r
+\r
+static void Op95(void)\r
+{\r
+       regs.WrMem(EA_ZP_X, regs.a);\r
+}\r
+\r
+static void Op8D(void)\r
+{\r
+       regs.WrMem(EA_ABS, regs.a);\r
+       regs.pc += 2;\r
+}\r
+\r
+static void Op9D(void)\r
+{\r
+       regs.WrMem(EA_ABS_X, regs.a);\r
+       regs.pc += 2;\r
+}\r
+\r
+static void Op99(void)\r
+{\r
+       regs.WrMem(EA_ABS_Y, regs.a);\r
+       regs.pc += 2;\r
+}\r
+\r
+static void Op81(void)\r
+{\r
+       regs.WrMem(EA_IND_ZP_X, regs.a);\r
+}\r
+\r
+static void Op91(void)\r
+{\r
+       regs.WrMem(EA_IND_ZP_Y, regs.a);\r
+}\r
+\r
+static void Op92(void)\r
+{\r
+       regs.WrMem(EA_IND_ZP, regs.a);\r
+}\r
+\r
+/*\r
+STX    Zero Page       STX Zpg         86      2       3\r
+Zero Page,Y            STX Zpg,Y       96      2       4\r
+Absolute               STX Abs         8E      3       4\r
+*/\r
+\r
+// STX opcodes\r
+\r
+static void Op86(void)\r
+{\r
+       regs.WrMem(EA_ZP, regs.x);\r
+}\r
+\r
+static void Op96(void)\r
+{\r
+       regs.WrMem(EA_ZP_X, regs.x);\r
+}\r
+\r
+static void Op8E(void)\r
+{\r
+       regs.WrMem(EA_ABS, regs.x);\r
+       regs.pc += 2;\r
+}\r
+\r
+/*\r
+STY    Zero Page       STY Zpg         84      2       3\r
+Zero Page,X            STY Zpg,X       94      2       4\r
+Absolute               STY Abs         8C      3       4\r
+*/\r
+\r
+// STY opcodes\r
+\r
+static void Op84(void)\r
+{\r
+       regs.WrMem(EA_ZP, regs.y);\r
+}\r
+\r
+static void Op94(void)\r
+{\r
+       regs.WrMem(EA_ZP_X, regs.y);\r
+}\r
+\r
+static void Op8C(void)\r
+{\r
+       regs.WrMem(EA_ABS, regs.y);\r
+       regs.pc += 2;\r
+}\r
+\r
+/*\r
+STZ    Zero Page       STZ Zpg         64      2       3\r
+Zero Page,X            STZ Zpg,X       74      2       4\r
+Absolute               STZ Abs         9C      3       4\r
+Absolute,X             STZ Abs,X       9E      3       5\r
+*/\r
+\r
+// STZ opcodes\r
+\r
+static void Op64(void)\r
+{\r
+       regs.WrMem(EA_ZP, 0x00);\r
+}\r
+\r
+static void Op74(void)\r
+{\r
+       regs.WrMem(EA_ZP_X, 0x00);\r
+}\r
+\r
+static void Op9C(void)\r
+{\r
+       regs.WrMem(EA_ABS, 0x00);\r
+       regs.pc += 2;\r
+}\r
+\r
+static void Op9E(void)\r
+{\r
+       regs.WrMem(EA_ABS_X, 0x00);\r
+       regs.pc += 2;\r
+}\r
+\r
+/*\r
+TAX    Implied         TAX                     AA      1       2\r
+*/\r
+\r
+static void OpAA(void)                                                 // TAX\r
+{\r
+       regs.x = regs.a;\r
+       SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+TAY    Implied         TAY                     A8      1       2\r
+*/\r
+\r
+static void OpA8(void)                                                 // TAY\r
+{\r
+       regs.y = regs.a;\r
+       SET_ZN(regs.y);\r
+}\r
+\r
+/*\r
+TRB    Zero Page       TRB Zpg         14      2       5\r
+Absolute               TRB Abs         1C      3       6\r
+*/\r
+\r
+// TRB opcodes\r
+\r
+#define OP_TRB_HANDLER(m) \\r
+       SET_Z(m & regs.a); \\r
+       m &= ~regs.a\r
+\r
+static void Op14(void)                                                 // TRB ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_TRB_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op1C(void)                                                 // TRB ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_TRB_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+TSB    Zero Page       TSB Zpg         04      2       5\r
+Absolute               TSB Abs         0C      3       6\r
+*/\r
+\r
+// TSB opcodes\r
+\r
+#define OP_TSB_HANDLER(m) \\r
+       SET_Z(m & regs.a); \\r
+       m |= regs.a\r
+\r
+static void Op04(void)                                                 // TSB ZP\r
+{\r
+       uint8 m;\r
+       READ_ZP_WB(m);\r
+       OP_TSB_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+static void Op0C(void)                                                 // TSB ABS\r
+{\r
+       uint8 m;\r
+       READ_ABS_WB(m);\r
+       OP_TSB_HANDLER(m);\r
+       WRITE_BACK(m);\r
+}\r
+\r
+/*\r
+TSX    Implied         TSX                     BA      1       2\r
+*/\r
+\r
+static void OpBA(void)                                                 // TSX\r
+{\r
+       regs.x = regs.sp;\r
+       SET_ZN(regs.x);\r
+}\r
+\r
+/*\r
+TXA    Implied         TXA                     8A      1       2\r
+*/\r
+\r
+static void Op8A(void)                                                 // TXA\r
+{\r
+       regs.a = regs.x;\r
+       SET_ZN(regs.a);\r
+}\r
+\r
+/*\r
+TXS    Implied         TXS                     9A      1       2\r
+*/\r
+\r
+static void Op9A(void)                                                 // TXS\r
+{\r
+       regs.sp = regs.x;\r
+}\r
+\r
+/*\r
+TYA    Implied         TYA                     98      1       2\r
+*/\r
+static void Op98(void)                                                 // TYA\r
+{\r
+       regs.a = regs.y;\r
+       SET_ZN(regs.a);\r
+}\r
+\r
+static void Op__(void)\r
+{\r
+       regs.cpuFlags |= V65C02_STATE_ILLEGAL_INST;\r
+}\r
+\r
+\r
+//\r
+// Ok, the exec_op[] array is globally defined here basically to save\r
+// a LOT of unnecessary typing.  Sure it's ugly, but hey, it works!\r
+//\r
+void (* exec_op[256])() = {\r
+       Op00, Op01, Op__, Op__, Op04, Op05, Op06, Op07, Op08, Op09, Op0A, Op__, Op0C, Op0D, Op0E, Op0F,\r
+       Op10, Op11, Op12, Op__, Op14, Op15, Op16, Op17, Op18, Op19, Op1A, Op__, Op1C, Op1D, Op1E, Op1F,\r
+       Op20, Op21, Op__, Op__, Op24, Op25, Op26, Op27, Op28, Op29, Op2A, Op__, Op2C, Op2D, Op2E, Op2F,\r
+       Op30, Op31, Op32, Op__, Op34, Op35, Op36, Op37, Op38, Op39, Op3A, Op__, Op3C, Op3D, Op3E, Op3F,\r
+       Op40, Op41, Op__, Op__, Op__, Op45, Op46, Op47, Op48, Op49, Op4A, Op__, Op4C, Op4D, Op4E, Op4F,\r
+       Op50, Op51, Op52, Op__, Op__, Op55, Op56, Op57, Op58, Op59, Op5A, Op__, Op__, Op5D, Op5E, Op5F,\r
+       Op60, Op61, Op__, Op__, Op64, Op65, Op66, Op67, Op68, Op69, Op6A, Op__, Op6C, Op6D, Op6E, Op6F,\r
+       Op70, Op71, Op72, Op__, Op74, Op75, Op76, Op77, Op78, Op79, Op7A, Op__, Op7C, Op7D, Op7E, Op7F,\r
+       Op80, Op81, Op__, Op__, Op84, Op85, Op86, Op87, Op88, Op89, Op8A, Op__, Op8C, Op8D, Op8E, Op8F,\r
+       Op90, Op91, Op92, Op__, Op94, Op95, Op96, Op97, Op98, Op99, Op9A, Op__, Op9C, Op9D, Op9E, Op9F,\r
+       OpA0, OpA1, OpA2, Op__, OpA4, OpA5, OpA6, OpA7, OpA8, OpA9, OpAA, Op__, OpAC, OpAD, OpAE, OpAF,\r
+       OpB0, OpB1, OpB2, Op__, OpB4, OpB5, OpB6, OpB7, OpB8, OpB9, OpBA, Op__, OpBC, OpBD, OpBE, OpBF,\r
+       OpC0, OpC1, Op__, Op__, OpC4, OpC5, OpC6, OpC7, OpC8, OpC9, OpCA, Op__, OpCC, OpCD, OpCE, OpCF,\r
+       OpD0, OpD1, OpD2, Op__, Op__, OpD5, OpD6, OpD7, OpD8, OpD9, OpDA, Op__, Op__, OpDD, OpDE, OpDF,\r
+       OpE0, OpE1, Op__, Op__, OpE4, OpE5, OpE6, OpE7, OpE8, OpE9, OpEA, Op__, OpEC, OpED, OpEE, OpEF,\r
+       OpF0, OpF1, OpF2, Op__, Op__, OpF5, OpF6, OpF7, OpF8, OpF9, OpFA, Op__, Op__, OpFD, OpFE, OpFF\r
+};\r
+\r
+//\r
+// Internal "memcpy" (so we don't have to link with any external libraries!)\r
+//\r
+static void myMemcpy(void * dst, void * src, uint32 size)\r
+{\r
+       uint8 * d = (uint8 *)dst, * s = (uint8 *)src;\r
+\r
+       for(uint32 i=0; i<size; i++)\r
+               d[i] = s[i];\r
+}\r
+\r
+/*\r
+FCA8: 38        698  WAIT     SEC\r
+FCA9: 48        699  WAIT2    PHA\r
+FCAA: E9 01     700  WAIT3    SBC   #$01\r
+FCAC: D0 FC     701           BNE   WAIT3      ;1.0204 USEC\r
+FCAE: 68        702           PLA              ;(13+27/2*A+5/2*A*A)\r
+FCAF: E9 01     703           SBC   #$01\r
+FCB1: D0 F6     704           BNE   WAIT2\r
+FCB3: 60        705           RTS\r
+\r
+FBD9: C9 87     592  BELL1    CMP   #$87       ;BELL CHAR? (CNTRL-G)\r
+FBDB: D0 12     593           BNE   RTS2B      ;  NO, RETURN\r
+FBDD: A9 40     594           LDA   #$40       ;DELAY .01 SECONDS\r
+FBDF: 20 A8 FC  595           JSR   WAIT\r
+FBE2: A0 C0     596           LDY   #$C0\r
+FBE4: A9 0C     597  BELL2    LDA   #$0C       ;TOGGLE SPEAKER AT\r
+FBE6: 20 A8 FC  598           JSR   WAIT       ;  1 KHZ FOR .1 SEC.\r
+FBE9: AD 30 C0  599           LDA   SPKR\r
+FBEC: 88        600           DEY\r
+FBED: D0 F5     601           BNE   BELL2\r
+FBEF: 60        602  RTS2B    RTS\r
+*/\r
+//int instCount[256];\r
+#ifdef __DEBUG__\r
+bool dumpDis = false;\r
+#endif\r
+//\r
+// Function to execute 6808 for "cycles" cycles\r
+//\r
+void Execute65C02(V65C02REGS * context, uint32 cycles)\r
+{\r
+       myMemcpy(&regs, context, sizeof(V65C02REGS));\r
+\r
+       // Execute here...\r
+       while (regs.clock < cycles)\r
+       {\r
+#if 0\r
+/*if (regs.pc == 0x4007)\r
+{\r
+       dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0x444B)\r
+{\r
+       WriteLog("\n*** End of wait...\n\n");\r
+       dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0x444E)\r
+{\r
+       WriteLog("\n*** Start of wait...\n\n");\r
+       dumpDis = false;\r
+}//*/\r
+#endif\r
+\r
+#ifdef __DEBUGMON__\r
+//WAIT is commented out here because it's called by BELL1...\r
+if (regs.pc == 0xFCA8)\r
+{\r
+       WriteLog("\n*** WAIT subroutine...\n\n");\r
+       dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFBD9)\r
+{\r
+       WriteLog("\n*** BELL1 subroutine...\n\n");\r
+//     dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFC58)\r
+{\r
+       WriteLog("\n*** HOME subroutine...\n\n");\r
+//     dumpDis = false;\r
+}//*/\r
+if (regs.pc == 0xFDED)\r
+{\r
+       WriteLog("\n*** COUT subroutine...\n\n");\r
+       dumpDis = false;\r
+}\r
+#endif\r
+\r
+#ifdef __DEBUG__\r
+if (dumpDis)\r
+       Decode65C02(regs.pc);\r
+#endif\r
+               uint8 opcode = regs.RdMem(regs.pc++);\r
+\r
+//if (!(regs.cpuFlags & V65C02_STATE_ILLEGAL_INST))\r
+//instCount[opcode]++;\r
+\r
+               exec_op[opcode]();                                                              // Execute that opcode...\r
+               regs.clock += CPUCycles[opcode];\r
+#ifdef __DEBUG__\r
+if (dumpDis)\r
+       WriteLog(" [PC=%04X, SP=%04X, CC=%s%s-%s%s%s%s%s, A=%02X, X=%02X, Y=%02X]\n",\r
+               regs.pc, 0x0100 + regs.sp,\r
+               (regs.cc & FLAG_N ? "N" : "-"), (regs.cc & FLAG_V ? "V" : "-"),\r
+               (regs.cc & FLAG_B ? "B" : "-"), (regs.cc & FLAG_D ? "D" : "-"),\r
+               (regs.cc & FLAG_I ? "I" : "-"), (regs.cc & FLAG_Z ? "Z" : "-"),\r
+               (regs.cc & FLAG_C ? "C" : "-"), regs.a, regs.x, regs.y);\r
+#endif\r
+\r
+#ifdef __DEBUGMON__\r
+if (regs.pc == 0xFCB3) // WAIT exit point\r
+{\r
+       dumpDis = true;\r
+}//*/\r
+/*if (regs.pc == 0xFBEF)       // BELL1 exit point\r
+{\r
+       dumpDis = true;\r
+}//*/\r
+/*if (regs.pc == 0xFC22)       // HOME exit point\r
+{\r
+       dumpDis = true;\r
+}//*/\r
+if (regs.pc == 0xFDFF) // COUT exit point\r
+{\r
+       dumpDis = true;\r
+}\r
+if (regs.pc == 0xFBD8)\r
+{\r
+       WriteLog("\n*** BASCALC set BASL/H = $%04X\n\n", RdMemW(0x0028));\r
+}//*/\r
+#endif\r
+\r
+//These should be correct now...\r
+               if (regs.cpuFlags & V65C02_ASSERT_LINE_RESET)\r
+               {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** RESET ***\n\n");\r
+#endif\r
+                       // Not sure about this...\r
+                       regs.sp = 0xFF;\r
+                       regs.cc = FLAG_B | FLAG_I;                                      // Reset the CC register\r
+                       regs.pc = RdMemW(0xFFFC);                                       // And load PC with the RESET vector\r
+\r
+                       context->cpuFlags &= ~V65C02_ASSERT_LINE_RESET;\r
+                       regs.cpuFlags &= ~V65C02_ASSERT_LINE_RESET;\r
+               }\r
+               else if (regs.cpuFlags & V65C02_ASSERT_LINE_NMI)\r
+               {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** NMI ***\n\n");\r
+#endif\r
+                       regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8);   // Save PC and CC\r
+                       regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+                       regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+                       regs.cc |= FLAG_I;                                                      // Set I\r
+                       regs.cc &= ~FLAG_D;                                                     // & clear D\r
+                       regs.pc = RdMemW(0xFFFA);                                       // And do it!\r
+\r
+                       regs.clock += 7;\r
+                       context->cpuFlags &= ~V65C02_ASSERT_LINE_NMI;// Reset the asserted line (NMI)...\r
+                       regs.cpuFlags &= ~V65C02_ASSERT_LINE_NMI;       // Reset the asserted line (NMI)...\r
+               }\r
+               else if (regs.cpuFlags & V65C02_ASSERT_LINE_IRQ)\r
+               {\r
+                       if (!(regs.cc & FLAG_I))                                        // Process an interrupt (I=0)?\r
+                       {\r
+#ifdef __DEBUG__\r
+WriteLog("\n*** IRQ ***\n\n");\r
+#endif\r
+                               regs.WrMem(0x0100 + regs.sp--, regs.pc >> 8);   // Save PC and CC\r
+                               regs.WrMem(0x0100 + regs.sp--, regs.pc & 0xFF);\r
+                               regs.WrMem(0x0100 + regs.sp--, regs.cc);\r
+                               regs.cc |= FLAG_I;                                              // Set I\r
+                               regs.cc &= ~FLAG_D;                                             // & clear D\r
+                               regs.pc = RdMemW(0xFFFE);                               // And do it!\r
+\r
+                               regs.clock += 7;\r
+                               context->cpuFlags &= ~V65C02_ASSERT_LINE_IRQ;   // Reset the asserted line (IRQ)...\r
+                               regs.cpuFlags &= ~V65C02_ASSERT_LINE_IRQ;       // Reset the asserted line (IRQ)...\r
+                       }\r
+               }\r
+       }\r
+\r
+       myMemcpy(context, &regs, sizeof(V65C02REGS));\r
+}\r
+\r
+//\r
+// Get the clock of the currently executing CPU\r
+//\r
+uint32 GetCurrentV65C02Clock(void)\r
+{\r
+       return regs.clock;\r
+}\r
diff --git a/src/v65c02.h b/src/v65c02.h
new file mode 100755 (executable)
index 0000000..401b980
--- /dev/null
@@ -0,0 +1,55 @@
+//\r
+// Virtual 65C02 Header file\r
+//\r
+// by James L. Hammons\r
+// (c) 2005 Underground Software\r
+//\r
+\r
+#ifndef __V65C02_H__\r
+#define __V65C02_H__\r
+\r
+#include "types.h"\r
+\r
+// Useful defines\r
+\r
+#define FLAG_N         0x80                    // Negative\r
+#define FLAG_V         0x40                    // oVerflow\r
+#define FLAG_UNK       0x20                    // ??? (always set when read?)\r
+#define FLAG_B         0x10                    // Break\r
+#define FLAG_D         0x08                    // Decimal\r
+#define FLAG_I         0x04                    // Interrupt\r
+#define FLAG_Z         0x02                    // Zero\r
+#define FLAG_C         0x01                    // Carry\r
+\r
+#define V65C02_ASSERT_LINE_RESET       0x0001          // v65C02 RESET line\r
+#define V65C02_ASSERT_LINE_IRQ         0x0002          // v65C02 IRQ line\r
+#define V65C02_ASSERT_LINE_NMI         0x0004          // v65C02 NMI line\r
+#define V65C02_STATE_ILLEGAL_INST      0x0008          // Illegal instruction executed flag\r
+//#define V65C02_START_DEBUG_LOG               0x0020          // Debug log go (temporary!)\r
+\r
+// Useful structs\r
+\r
+struct V65C02REGS\r
+{\r
+       uint16 pc;                                              // 65C02 PC register\r
+       uint8 cc;                                               // 65C02 Condition Code register\r
+       uint8 sp;                                               // 65C02 System stack pointer (bound to $01xx)\r
+       uint8 a;                                                // 65C02 A register\r
+       uint8 x;                                                // 65C02 X index register\r
+       uint8 y;                                                // 65C02 Y register\r
+       uint32 clock;                                   // 65C02 clock\r
+       uint8 (* RdMem)(uint16);                // Address of BYTE read routine\r
+       void (* WrMem)(uint16, uint8);  // Address of BYTE write routine\r
+       uint16 cpuFlags;                                // v65C02 IRQ/RESET flags\r
+};\r
+\r
+// Global variables (exported)\r
+\r
+extern bool dumpDis;\r
+\r
+// Function prototypes\r
+\r
+void Execute65C02(V65C02REGS *, uint32);       // Function to execute 65C02 instructions\r
+uint32 GetCurrentV65C02Clock(void);                            // Get the clock of the currently executing CPU\r
+\r
+#endif // __V65C02_H__\r
diff --git a/src/video.cpp b/src/video.cpp
new file mode 100755 (executable)
index 0000000..082120e
--- /dev/null
@@ -0,0 +1,302 @@
+//\r
+// VIDEO.CPP: SDL/local hardware specific video routines\r
+//\r
+// by James L. Hammons\r
+//\r
+// JLH = James L. Hammons <jlhamm@acm.org>\r
+//\r
+// WHO  WHEN        WHAT\r
+// ---  ----------  ------------------------------------------------------------\r
+// JLH  01/04/2006  Added changelog ;-)\r
+// JLH  01/20/2006  Cut out unnecessary buffering\r
+//\r
+\r
+#include "video.h"\r
+\r
+//#include <SDL.h>\r
+#include <string.h>    // Why??? (for memset, etc... Lazy!) Dunno why, but this just strikes me as wrong...\r
+#include <malloc.h>\r
+#include "sdlemu_opengl.h"\r
+#include "log.h"\r
+#include "settings.h"\r
+#include "icon.h"\r
+\r
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN\r
+#define MASK_R 0xFF000000\r
+#define MASK_G 0x00FF0000\r
+#define MASK_B 0x0000FF00\r
+#define MASK_A 0x000000FF\r
+#else\r
+#define MASK_R 0x000000FF\r
+#define MASK_G 0x0000FF00\r
+#define MASK_B 0x00FF0000\r
+#define MASK_A 0xFF000000\r
+#endif\r
+\r
+//#define TEST_ALPHA_BLENDING\r
+\r
+// Exported global variables (actually, these are LOCAL global variables, EXPORTED...)\r
+\r
+SDL_Surface * surface, * mainSurface, * someAlphaSurface;\r
+Uint32 mainSurfaceFlags;\r
+//uint32 scrBuffer[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT];\r
+uint32 * scrBuffer = NULL;\r
+SDL_Joystick * joystick;\r
+\r
+//\r
+// Prime SDL and create surfaces\r
+//\r
+bool InitVideo(void)\r
+{\r
+       // Set up SDL library\r
+       if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_NOPARACHUTE) < 0)\r
+       {\r
+               WriteLog("Video: Could not initialize the SDL library: %s\n", SDL_GetError());\r
+               return false;\r
+       }\r
+\r
+       //Set icon (mainly for Win32 target--though seems to work under KDE as well...!)\r
+       SDL_Surface * iconSurf = SDL_CreateRGBSurfaceFrom(icon, 32, 32, 32, 128, \r
+               MASK_R, MASK_G, MASK_B, MASK_A);\r
+       SDL_WM_SetIcon(iconSurf, NULL);\r
+       SDL_FreeSurface(iconSurf);\r
+\r
+       // Get proper info about the platform we're running on...\r
+       const SDL_VideoInfo * info = SDL_GetVideoInfo();\r
+\r
+       if (!info)\r
+       {\r
+               WriteLog("Video: SDL is unable to get the video info: %s\n", SDL_GetError());\r
+               return false;\r
+       }\r
+\r
+       if (settings.useOpenGL)\r
+       {\r
+               mainSurfaceFlags = SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF | SDL_OPENGL;\r
+               SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);\r
+       }\r
+       else\r
+       {\r
+               mainSurfaceFlags = SDL_DOUBLEBUF;\r
+\r
+               if (info->hw_available)\r
+               {\r
+                       mainSurfaceFlags = SDL_HWSURFACE | SDL_HWPALETTE;\r
+                       WriteLog("Video: Hardware available...\n");\r
+               }\r
+\r
+               if (info->blit_hw)\r
+               {\r
+                       mainSurfaceFlags |= SDL_HWACCEL;\r
+                       WriteLog("Video: Hardware blit available...\n");\r
+               }\r
+       }\r
+\r
+       if (settings.fullscreen)\r
+               mainSurfaceFlags |= SDL_FULLSCREEN;\r
+\r
+       // Create the primary SDL display (32 BPP)\r
+       if (!settings.useOpenGL)\r
+               mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+       else\r
+//             mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH * 2, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+//             mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+               mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+\r
+       if (mainSurface == NULL)\r
+       {\r
+               WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+               return false;\r
+       }\r
+\r
+       SDL_WM_SetCaption("Apple 2 SDL", "Apple 2 SDL");\r
+\r
+       // Create the secondary SDL display (32 BPP) that we use directly\r
+       surface = SDL_CreateRGBSurface(SDL_SWSURFACE, VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32,\r
+               MASK_R, MASK_G, MASK_B, MASK_A);\r
+/*WriteLog("Video: Created secondary surface with attributes:\n\n");\r
+WriteLog("\tWidth, height: %u x %u\n", surface->w, surface->h);\r
+WriteLog("\t        Pitch: %u\n", surface->pitch);\r
+WriteLog("\t      Palette: %08X\n", surface->format->palette);\r
+WriteLog("\t          BPP: %u\n", surface->format->BitsPerPixel);\r
+WriteLog("\t      BytesPP: %u\n", surface->format->BytesPerPixel);\r
+WriteLog("\t        RMask: %08X\n", surface->format->Rmask);\r
+WriteLog("\t        GMask: %08X\n", surface->format->Gmask);\r
+WriteLog("\t        BMask: %08X\n", surface->format->Bmask);\r
+WriteLog("\t        AMask: %08X\n", surface->format->Amask);\r
+WriteLog("\n");//*/\r
+\r
+       if (surface == NULL)\r
+       {\r
+               WriteLog("Video: Could not create secondary SDL surface: %s\n", SDL_GetError());\r
+               return false;\r
+       }\r
+\r
+       if (settings.useOpenGL)\r
+               sdlemu_init_opengl(surface, mainSurface, 1 /*method*/, settings.glFilter /*texture type (linear, nearest)*/,\r
+               0 /* Automatic bpp selection based upon src */);\r
+\r
+       // Initialize Joystick support under SDL\r
+/*     if (settings.useJoystick)\r
+       {\r
+               if (SDL_NumJoysticks() <= 0)\r
+               {\r
+                       settings.useJoystick = false;\r
+                       WriteLog("Video: No joystick(s) or joypad(s) detected on your system. Using keyboard...\n");\r
+               }\r
+               else\r
+               {\r
+                       if ((joystick = SDL_JoystickOpen(settings.joyport)) == 0)\r
+                       {\r
+                               settings.useJoystick = false;\r
+                               WriteLog("Video: Unable to open a Joystick on port: %d\n", (int)settings.joyport);\r
+                       }\r
+                       else\r
+                               WriteLog("Video: Using: %s\n", SDL_JoystickName(settings.joyport));\r
+               }\r
+       }//*/\r
+\r
+       // Set up the scrBuffer\r
+       scrBuffer = (uint32 *)surface->pixels;  // Kludge--And shouldn't have to lock since it's a software surface...\r
+//needed? Dunno. Mebbe an SDL function instead?\r
+//     memset(scrBuffer, 0x00, VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT * sizeof(uint32));\r
+\r
+#ifdef TEST_ALPHA_BLENDING\r
+//Here's some code to test alpha blending...\r
+//Well whaddya know, it works. :-)\r
+       someAlphaSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, 30, 30, 32,\r
+               MASK_R, MASK_G, MASK_B, MASK_A);\r
+\r
+       for(int i=0; i<30; i++)\r
+       {\r
+               for(int j=0; j<30; j++)\r
+               {\r
+                       uint32 color = (uint32)(((double)(i * j) / (29.0 * 29.0)) * 255.0);\r
+                       color = (color << 24) | 0x00FF00FF;\r
+                       ((uint32 *)someAlphaSurface->pixels)[(j * 30) + i] = color;\r
+               }\r
+       }\r
+//End test code\r
+#endif\r
+\r
+       WriteLog("Video: Successfully initialized.\n");\r
+       return true;\r
+}\r
+\r
+//\r
+// Free various SDL components\r
+//\r
+void VideoDone(void)\r
+{\r
+       if (settings.useOpenGL)\r
+               sdlemu_close_opengl();\r
+\r
+       SDL_JoystickClose(joystick);\r
+       SDL_FreeSurface(surface);\r
+       SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO | SDL_INIT_TIMER);\r
+       SDL_Quit();\r
+}\r
+\r
+//\r
+// Render the screen buffer to the primary screen surface\r
+//\r
+//void RenderBackbuffer(void)\r
+void RenderScreenBuffer(void)\r
+{\r
+//WriteLog("Video: Blitting a %u x %u surface to the main surface...\n", surface->w, surface->h);\r
+//Don't need this crapola--why have a separate buffer just to copy it to THIS\r
+//buffer in order to copy it to the main screen? That's what *I* thought!\r
+/*     if (SDL_MUSTLOCK(surface))\r
+               while (SDL_LockSurface(surface) < 0)\r
+                       SDL_Delay(10);\r
+\r
+       memcpy(surface->pixels, scrBuffer, VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT * sizeof(uint32));\r
+\r
+       if (SDL_MUSTLOCK(surface))\r
+               SDL_UnlockSurface(surface);//*/\r
+#ifdef TEST_ALPHA_BLENDING\r
+SDL_Rect dstRect = { 100, 100, 30, 30 };\r
+SDL_BlitSurface(someAlphaSurface, NULL, surface, &dstRect);\r
+#endif\r
+\r
+       if (settings.useOpenGL)\r
+               sdlemu_draw_texture(mainSurface, surface, 1/*1=GL_QUADS*/);\r
+       else\r
+       {\r
+//             SDL_Rect rect = { 0, 0, surface->w, surface->h };\r
+//             SDL_BlitSurface(surface, &rect, mainSurface, &rect);\r
+               SDL_BlitSurface(surface, NULL, mainSurface, NULL);\r
+               SDL_Flip(mainSurface);\r
+    }\r
+}\r
+\r
+/*\r
+//\r
+// Resize the main SDL screen & scrBuffer\r
+//\r
+void ResizeScreen(uint32 width, uint32 height)\r
+{\r
+       char window_title[256];\r
+\r
+       SDL_FreeSurface(surface);\r
+       surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 16,\r
+               0x7C00, 0x03E0, 0x001F, 0);\r
+\r
+       if (surface == NULL)\r
+       {\r
+               WriteLog("Video: Could not create primary SDL surface: %s", SDL_GetError());\r
+               exit(1);\r
+       }\r
+\r
+       if (settings.useOpenGL)\r
+               // This seems to work well for resizing (i.e., changes in the pixel width)...\r
+               sdlemu_resize_texture(surface, mainSurface, settings.glFilter);\r
+       else\r
+       {\r
+               mainSurface = SDL_SetVideoMode(width, height, 16, mainSurfaceFlags);\r
+\r
+               if (mainSurface == NULL)\r
+               {\r
+                       WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+                       exit(1);\r
+               }\r
+       }\r
+\r
+       sWriteLog(window_title, "Virtual Jaguar (%i x %i)", (int)width, (int)height);\r
+       SDL_WM_SetCaption(window_title, window_title);\r
+\r
+       // This seems to work well for resizing (i.e., changes in the pixel width)...\r
+//     if (settings.useOpenGL)\r
+//             sdlemu_resize_texture(surface, mainSurface);\r
+}*/\r
+\r
+/*\r
+//\r
+// Fullscreen <-> window switching\r
+//\r
+//NOTE: This does *NOT* work with OpenGL rendering! !!! FIX !!!\r
+void ToggleFullscreen(void)\r
+{\r
+       settings.fullscreen = !settings.fullscreen;\r
+       mainSurfaceFlags &= ~SDL_FULLSCREEN;\r
+\r
+       if (settings.fullscreen)\r
+               mainSurfaceFlags |= SDL_FULLSCREEN;\r
+\r
+       if (!settings.useOpenGL)\r
+               mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+       else\r
+//             mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH * 2, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+//             mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT * 2, 32, mainSurfaceFlags);\r
+               mainSurface = SDL_SetVideoMode(VIRTUAL_SCREEN_WIDTH, VIRTUAL_SCREEN_HEIGHT, 32, mainSurfaceFlags);\r
+//     mainSurface = SDL_SetVideoMode(tom_width, tom_height, 16, mainSurfaceFlags);\r
+\r
+       if (mainSurface == NULL)\r
+       {\r
+               WriteLog("Video: SDL is unable to set the video mode: %s\n", SDL_GetError());\r
+               exit(1);\r
+       }\r
+\r
+       SDL_WM_SetCaption("Apple 2 SDL", "Apple 2 SDL");\r
+}\r
+//*/\r
diff --git a/src/video.h b/src/video.h
new file mode 100755 (executable)
index 0000000..ca5fb1b
--- /dev/null
@@ -0,0 +1,30 @@
+//\r
+// VIDEO.H: Header file\r
+//\r
+\r
+#ifndef __VIDEO_H__\r
+#define __VIDEO_H__\r
+\r
+#include <SDL.h>                                                       // For SDL_Surface\r
+#include "types.h"                                                     // For uint32\r
+\r
+//#define VIRTUAL_SCREEN_WIDTH         280\r
+#define VIRTUAL_SCREEN_WIDTH           560\r
+//#define VIRTUAL_SCREEN_HEIGHT                192\r
+#define VIRTUAL_SCREEN_HEIGHT          384\r
+\r
+bool InitVideo(void);\r
+void VideoDone(void);\r
+//void RenderBackbuffer(void);\r
+void RenderScreenBuffer(void);\r
+//void ResizeScreen(uint32 width, uint32 height);\r
+//uint32 GetSDLScreenPitch(void);\r
+//void ToggleFullscreen(void);\r
+\r
+// Exported crap\r
+\r
+//extern uint32 scrBuffer[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT];\r
+extern uint32 * scrBuffer;\r
+extern SDL_Surface * surface;\r
+\r
+#endif // __VIDEO_H__\r