From 6202a9f8efc103a172caf4d78e4c335716ad87a8 Mon Sep 17 00:00:00 2001 From: Telekatz Date: Wed, 5 Jul 2017 22:48:01 +0200 Subject: [PATCH] Reorganize repository structure --- Asixtool/{trunk => }/Kopie von Makefile | 0 Asixtool/{trunk => }/LICENSE | 0 Asixtool/{trunk => }/Makefile | 0 Asixtool/{trunk => }/asix_serial.c | 0 Asixtool/{trunk => }/asix_serial.h | 0 Asixtool/{trunk => }/bootcom.c | 0 Asixtool/{trunk => }/bootcom.h | 0 Asixtool/{trunk => }/infohelper.c | 0 Asixtool/{trunk => }/infohelper.h | 0 Asixtool/{trunk => }/main.c | 0 betty_TAE/MSP430/{trunk => }/Makefile | 0 betty_TAE/MSP430/{trunk => }/cc1100.c | 0 betty_TAE/MSP430/{trunk => }/cc1100.h | 0 betty_TAE/MSP430/{trunk => }/hardware.c | 0 betty_TAE/MSP430/{trunk => }/hardware.h | 0 betty_TAE/MSP430/{trunk => }/main.c | 0 betty_TAE/MSP430/{trunk => }/rf.c | 0 betty_TAE/MSP430/{trunk => }/rf.h | 0 betty_scart/{trunk => }/LICENSE | 0 betty_scart/{trunk => }/Makefile | 0 .../{trunk => }/Makefile.local.WinSDCC | 0 .../{trunk => }/Makefile.local.linuxSDCC | 0 betty_scart/{trunk => }/ScartProg.exe | Bin betty_scart/{trunk => }/betty_scart.bin | Bin betty_scart/{trunk => }/boop_icp.py | 0 betty_scart/{trunk => }/cc1100.c | 0 betty_scart/{trunk => }/cc1100.h | 0 betty_scart/{trunk => }/cmd.c | 0 betty_scart/{trunk => }/cmd.h | 0 betty_scart/{trunk => }/main.c | 0 betty_scart/{trunk => }/readme.txt | 0 betty_scart/{trunk => }/rf.c | 0 betty_scart/{trunk => }/rf.h | 0 betty_scart/{trunk => }/serial.c | 0 betty_scart/{trunk => }/serial.h | 0 betty_scart/{trunk => }/timer.c | 0 betty_scart/{trunk => }/timer.h | 0 bmp2b/{trunk => }/Makefile | 0 bmp2b/{trunk => }/README1ST | 0 bmp2b/{trunk => }/betty.bmp | Bin bmp2b/{trunk => }/betty2.bmp | Bin bmp2b/{trunk => }/bmp.c | 0 bmp2b/{trunk => }/bmp.h | 0 bmp2b/{trunk => }/bmp2b.c | 0 bmp2b/{trunk => }/bmp2b.tar.bz2 | Bin .../telekatz_soundtest => }/Boop.pnproj | 0 .../telekatz_soundtest => }/CHANGELOG | 0 .../telekatz_soundtest => }/LICENSE | 0 .../telekatz_soundtest => }/Make.conf | 0 .../telekatz_soundtest => }/Makefile | 0 .../telekatz_soundtest => }/Makefile.local | 0 .../Makefile.local.Telekatz | 0 .../Makefile.local.WinARM | 0 .../Makefile.local.linuxARM | 0 .../telekatz_soundtest => }/README | 0 .../ram_version/telekatz_soundtest => }/b.h | 0 .../telekatz_soundtest => }/batt.c | 0 .../telekatz_soundtest => }/batt.h | 0 .../telekatz_soundtest => }/boop.pnps | 0 .../telekatz_soundtest => }/boop_flash.ppg | 0 boop/branches/ram_version/readme.txt | 1 - .../telekatz_soundtest => }/cc1100.c | 0 .../telekatz_soundtest => }/cc1100.h | 0 .../ram_version/telekatz_soundtest => }/crt.s | 0 .../telekatz_soundtest => }/externs.h | 0 .../telekatz_soundtest => }/flash.c | 0 .../telekatz_soundtest => }/flash.h | 0 .../fonts/charset.bits | 0 .../fonts/charset.info | 0 .../telekatz_soundtest => }/fonts/smooth.bits | 0 .../telekatz_soundtest => }/fonts/smooth.info | 0 .../telekatz_soundtest => }/fonty.c | 0 .../telekatz_soundtest => }/fonty.h | 0 .../telekatz_soundtest => }/global.c | 0 .../telekatz_soundtest => }/global.h | 0 .../telekatz_soundtest => }/infrared.c | 0 .../telekatz_soundtest => }/infrared.h | 0 .../telekatz_soundtest => }/ir_itt.c | 0 .../telekatz_soundtest => }/ir_itt.h | 0 .../telekatz_soundtest => }/ir_nrc17.c | 0 .../telekatz_soundtest => }/ir_nrc17.h | 0 .../telekatz_soundtest => }/ir_rc5.c | 0 .../telekatz_soundtest => }/ir_rc5.h | 0 .../telekatz_soundtest => }/ir_rca.c | 0 .../telekatz_soundtest => }/ir_rca.h | 0 .../telekatz_soundtest => }/ir_rcmm.c | 0 .../telekatz_soundtest => }/ir_rcmm.h | 0 .../telekatz_soundtest => }/ir_rec80.c | 0 .../telekatz_soundtest => }/ir_rec80.h | 0 .../telekatz_soundtest => }/ir_recs80.c | 0 .../telekatz_soundtest => }/ir_recs80.h | 0 .../telekatz_soundtest => }/ir_sirc.c | 0 .../telekatz_soundtest => }/ir_sirc.h | 0 .../telekatz_soundtest => }/ir_spaceenc.c | 0 .../telekatz_soundtest => }/ir_spaceenc.h | 0 .../ram_version/telekatz_soundtest => }/irq.c | 0 .../ram_version/telekatz_soundtest => }/irq.h | 0 .../telekatz_soundtest => }/itt_codes.h | 0 .../telekatz_soundtest => }/keyboard.c | 0 .../telekatz_soundtest => }/keyboard.h | 0 .../ram_version/telekatz_soundtest => }/lcd.c | 0 .../ram_version/telekatz_soundtest => }/lcd.h | 0 .../telekatz_soundtest => }/lpc2220.h | 0 .../telekatz_soundtest => }/lpc2220.ld | 0 .../telekatz_soundtest => }/lpc2220_rom.ld | 0 .../telekatz_soundtest => }/main.c | 0 .../telekatz_soundtest => }/serial.c | 0 .../telekatz_soundtest => }/serial.h | 0 .../telekatz_soundtest => }/sirc_codes.h | 0 .../telekatz_soundtest => }/sound3.h | 0 .../telekatz_soundtest => }/soundcore.c | 0 .../telekatz_soundtest => }/soundcore.h | 0 .../telekatz_soundtest => }/sounds.h | 0 .../telekatz_soundtest => }/spaceenc_codes.h | 0 boop/trunk/CHANGELOG | 2 - boop/trunk/LICENSE | 674 --- boop/trunk/Make.conf | 5 - boop/trunk/Makefile | 150 - boop/trunk/Makefile.local.Telekatz | 23 - boop/trunk/Makefile.local.WinARM | 21 - boop/trunk/Makefile.local.linuxARM | 19 - boop/trunk/README | 17 - boop/trunk/adc/Make.conf | 1 - boop/trunk/adc/adc.c | 164 - boop/trunk/adc/adc.h | 32 - boop/trunk/adc/adcirq.c | 38 - boop/trunk/adc/adcirq.h | 24 - boop/trunk/audio/Make.conf | 2 - boop/trunk/audio/sid.c | 165 - boop/trunk/audio/sid.h | 118 - boop/trunk/audio/sidfiles.h | 1004 ---- boop/trunk/audio/sound.c | 114 - boop/trunk/audio/sound.h | 38 - boop/trunk/audio/soundirq.c | 226 - boop/trunk/audio/soundirq.h | 24 - boop/trunk/audio/sounds.h | 4417 --------------- boop/trunk/betty.cfg | 110 - boop/trunk/boop_rom.bin | Bin 268208 -> 0 bytes boop/trunk/buffer.c | 153 - boop/trunk/buffer.h | 35 - boop/trunk/cc1100/Make.conf | 1 - boop/trunk/cc1100/cc1100.c | 329 -- boop/trunk/cc1100/cc1100.h | 131 - boop/trunk/cc1100/fs20.c | 343 -- boop/trunk/cc1100/fs20.h | 29 - boop/trunk/cc1100/rf.c | 502 -- boop/trunk/cc1100/rf.h | 110 - boop/trunk/cc1100/scan.c | 151 - boop/trunk/cc1100/scan.h | 39 - boop/trunk/crt.s | 268 - boop/trunk/display/GrayScaler.exe | Bin 380928 -> 0 bytes boop/trunk/display/Hourglas_2bpp.bmp | Bin 758 -> 0 bytes boop/trunk/display/Hourglas_t_3bpp_t.bmp | Bin 2198 -> 0 bytes boop/trunk/display/Make.conf | 1 - boop/trunk/display/backlight.c | 113 - boop/trunk/display/backlight.h | 29 - boop/trunk/display/boop_logo | 2592 --------- boop/trunk/display/drawDigit.c | 127 - boop/trunk/display/drawDigit.h | 68 - boop/trunk/display/drawIcon.c | 363 -- boop/trunk/display/fonts/smooth.bits | 279 - boop/trunk/display/fonts/smooth.info | 17 - boop/trunk/display/fonty.c | 636 --- boop/trunk/display/fonty.h | 49 - boop/trunk/display/icon.h | 113 - boop/trunk/display/iconHourglas.h | 173 - boop/trunk/display/iconHourglas2.h | 173 - boop/trunk/display/iconHourglas2_t.h | 178 - boop/trunk/display/iconHourglas_t.h | 178 - boop/trunk/display/lcd.c | 1242 ----- boop/trunk/display/lcd.h | 153 - boop/trunk/flash/Make.conf | 1 - boop/trunk/flash/bfs.c | 730 --- boop/trunk/flash/bfs.h | 86 - boop/trunk/flash/flash.c | 195 - boop/trunk/flash/flash.h | 36 - boop/trunk/games/Make.conf | 1 - boop/trunk/games/c4_map.h | 64 - boop/trunk/games/connect4.c | 965 ---- boop/trunk/games/connect4.h | 39 - boop/trunk/games/gamesmenu.c | 35 - boop/trunk/games/gamesmenu.h | 24 - boop/trunk/games/sokoban.c | 614 -- boop/trunk/games/sokoban.h | 64 - boop/trunk/games/sokoban_levels.h | 4968 ----------------- boop/trunk/games/tic_tac_toe.c | 375 -- boop/trunk/games/tic_tac_toe.h | 29 - boop/trunk/global.c | 131 - boop/trunk/global.h | 94 - boop/trunk/gui/Cross_2bpp.bmp | Bin 2406 -> 0 bytes boop/trunk/gui/Cross_t_3bpp_t.bmp | Bin 2406 -> 0 bytes boop/trunk/gui/FF_2bpp.bmp | Bin 574 -> 0 bytes boop/trunk/gui/FR_2bpp.bmp | Bin 574 -> 0 bytes boop/trunk/gui/Leo_Gray_128_2bpp.bmp | Bin 25014 -> 0 bytes boop/trunk/gui/Make.conf | 1 - boop/trunk/gui/Pause_2bpp.bmp | Bin 574 -> 0 bytes boop/trunk/gui/Play_2bpp.bmp | Bin 574 -> 0 bytes boop/trunk/gui/Stop_2bpp.bmp | Bin 574 -> 0 bytes boop/trunk/gui/controls.c | 1017 ---- boop/trunk/gui/controls.h | 194 - boop/trunk/gui/iconCross.h | 144 - boop/trunk/gui/iconCross_t.h | 148 - boop/trunk/gui/iconFf.h | 56 - boop/trunk/gui/iconFr.h | 56 - boop/trunk/gui/iconHourglas.h | 173 - boop/trunk/gui/iconHourglas_t.h | 178 - boop/trunk/gui/iconLeo_gray_128.h | 1189 ---- boop/trunk/gui/iconPause.h | 56 - boop/trunk/gui/iconPlay.h | 56 - boop/trunk/gui/iconStop.h | 56 - boop/trunk/gui/mainmenu.c | 124 - boop/trunk/gui/mainmenu.h | 24 - boop/trunk/gui/menu.c | 250 - boop/trunk/gui/menu.h | 50 - boop/trunk/gui/settingsmenu.c | 196 - boop/trunk/gui/settingsmenu.h | 38 - boop/trunk/gui/testmenu.c | 1247 ----- boop/trunk/gui/testmenu.h | 26 - boop/trunk/infrared/Make.conf | 5 - boop/trunk/infrared/codes.c | 264 - boop/trunk/infrared/codes.h | 111 - boop/trunk/infrared/encoders.c | 52 - boop/trunk/infrared/encoders.h | 65 - boop/trunk/infrared/infrared.c | 177 - boop/trunk/infrared/infrared.h | 123 - boop/trunk/infrared/infrared_encoders.h | 34 - boop/trunk/infrared/infraredirq.c | 67 - boop/trunk/infrared/infraredirq.h | 25 - boop/trunk/infrared/ir_capture.c | 710 --- boop/trunk/infrared/ir_capture.h | 62 - boop/trunk/infrared/ir_codes/itt/seleco_019 | 62 - boop/trunk/infrared/ir_codes/itt/seleco_049 | 62 - boop/trunk/infrared/ir_codes/itt/seleco_108 | 62 - boop/trunk/infrared/ir_codes/itt/seleco_131 | 62 - .../infrared/ir_codes/lirc/apple_remote1 | 1 - boop/trunk/infrared/ir_codes/lirc/fs20 | 1 - boop/trunk/infrared/ir_codes/lirc/hx2262 | 1 - .../trunk/infrared/ir_codes/lirc/olympus_rm-1 | 1 - boop/trunk/infrared/ir_codes/lirc/rev008340 | 1 - .../infrared/ir_codes/lirc/samsung_ue46b6000 | 1 - boop/trunk/infrared/ir_codes/lirc/str_de545 | 1 - boop/trunk/infrared/ir_codes/lirc/ufs910 | 1 - boop/trunk/infrared/ir_codes/lirc/ufs922 | 1 - boop/trunk/infrared/ir_codes/nrc17/dbox2 | 64 - .../infrared/ir_codes/nrc17/grundig_tp720 | 64 - boop/trunk/infrared/ir_codes/rc5/HARMONY_655 | 62 - .../rc5/technisat_satreceiver_103TS103 | 1 - boop/trunk/infrared/ir_codes/rc5/tv | 1 - boop/trunk/infrared/ir_codes/rc6/dvd | 1 - boop/trunk/infrared/ir_codes/rc6/tv | 1 - boop/trunk/infrared/ir_codes/rc6/ufs922 | 1 - boop/trunk/infrared/ir_codes/rca/xbox | 62 - boop/trunk/infrared/ir_codes/rcmm/galaxis | 62 - boop/trunk/infrared/ir_codes/rcmm/ufs910 | 1 - .../trunk/infrared/ir_codes/rec80/rak_sc957wk | 62 - .../trunk/infrared/ir_codes/recs80/seleco_020 | 62 - .../trunk/infrared/ir_codes/recs80/seleco_157 | 62 - boop/trunk/infrared/ir_codes/rf/cc1100_a0 | 62 - boop/trunk/infrared/ir_codes/rf/cc1100_a1 | 62 - boop/trunk/infrared/ir_codes/sirc/UFD400 | 62 - boop/trunk/infrared/ir_codes/sirc/rm-pp411 | 64 - boop/trunk/infrared/ir_codes/sirc/tv | 64 - .../infrared/ir_codes/spaceenc/schneider_dtv3 | 62 - .../ir_codes/spaceenc/schneider_dtv3_xtra | 55 - .../infrared/ir_codes/spaceenc/seleco_027 | 62 - boop/trunk/infrared/ir_itt.c | 213 - boop/trunk/infrared/ir_itt.h | 29 - boop/trunk/infrared/ir_lirc.c | 451 -- boop/trunk/infrared/ir_lirc.h | 63 - boop/trunk/infrared/ir_nrc17.c | 211 - boop/trunk/infrared/ir_nrc17.h | 29 - boop/trunk/infrared/ir_raw.c | 164 - boop/trunk/infrared/ir_raw.h | 29 - boop/trunk/infrared/ir_rc5.c | 160 - boop/trunk/infrared/ir_rc5.h | 29 - boop/trunk/infrared/ir_rc6.c | 224 - boop/trunk/infrared/ir_rc6.h | 29 - boop/trunk/infrared/ir_rca.c | 189 - boop/trunk/infrared/ir_rca.h | 29 - boop/trunk/infrared/ir_rcmm.c | 197 - boop/trunk/infrared/ir_rcmm.h | 29 - boop/trunk/infrared/ir_rec80.c | 186 - boop/trunk/infrared/ir_rec80.h | 29 - boop/trunk/infrared/ir_recs80.c | 144 - boop/trunk/infrared/ir_recs80.h | 29 - boop/trunk/infrared/ir_rf.c | 127 - boop/trunk/infrared/ir_rf.h | 29 - boop/trunk/infrared/ir_selector.c | 311 -- boop/trunk/infrared/ir_selector.h | 41 - boop/trunk/infrared/ir_sirc.c | 161 - boop/trunk/infrared/ir_sirc.h | 29 - boop/trunk/infrared/ir_spaceenc.c | 254 - boop/trunk/infrared/ir_spaceenc.h | 32 - boop/trunk/interrupt/Make.conf | 1 - boop/trunk/interrupt/irq.c | 93 - boop/trunk/interrupt/irq.h | 71 - boop/trunk/keyboard/Make.conf | 2 - boop/trunk/keyboard/keyboard.c | 150 - boop/trunk/keyboard/keyboard.h | 197 - boop/trunk/keyboard/keyirq.c | 195 - boop/trunk/keyboard/keyirq.h | 35 - boop/trunk/lpc2220.h | 290 - boop/trunk/lpc2220_rom.ld | 144 - boop/trunk/main.c | 417 -- boop/trunk/rtc/Make.conf | 1 - boop/trunk/rtc/i2c.c | 131 - boop/trunk/rtc/i2c.h | 51 - boop/trunk/rtc/rtc.c | 432 -- boop/trunk/rtc/rtc.h | 106 - boop/trunk/rtc/rtctimer.c | 103 - boop/trunk/rtc/rtctimer.h | 42 - boop/trunk/serial/Make.conf | 2 - boop/trunk/serial/redirector.c | 306 - boop/trunk/serial/redirector.h | 41 - boop/trunk/serial/serial.c | 301 - boop/trunk/serial/serial.h | 60 - boop/trunk/serial/serirq.c | 71 - boop/trunk/sound3.h | 1571 ------ boop/trunk/syscalls.c | 22 - boop/trunk/timer/Make.conf | 2 - boop/trunk/timer/timerfuncs.c | 169 - boop/trunk/timer/timerfuncs.h | 53 - boop/trunk/timer/timerirq.c | 70 - boop/trunk/timer/timerirq.h | 41 - boop/trunk/tools/Make.conf | 1 - boop/trunk/tools/scart_icp.c | 715 --- boop/trunk/tools/scart_icp.h | 22 - boop/trunk/tools/scart_image.h | 27 - boop/trunk/tools/scart_image_data.h | 484 -- boop/trunk/tools/toolsmenu.c | 34 - boop/trunk/tools/toolsmenu.h | 21 - lpctool/{trunk => }/ChangeLog | 0 lpctool/{trunk => }/Makefile | 0 lpctool/{trunk => }/Makefile.local.WinARM | 0 lpctool/{trunk => }/Makefile.local.linuxARM | 0 lpctool/{trunk => }/bin2h.c | 0 lpctool/{trunk => }/bootcom.c | 0 lpctool/{trunk => }/bootcom.h | 0 .../display/fonts => lpctool}/charset.bits | 0 .../display/fonts => lpctool}/charset.info | 0 lpctool/{trunk => }/crt.s | 0 lpctool/{trunk => }/flash.c | 0 lpctool/{trunk => }/flash.h | 0 lpctool/{trunk => }/fonty.c | 0 lpctool/{trunk => }/fonty.h | 0 lpctool/{trunk => }/infohelper.c | 0 lpctool/{trunk => }/infohelper.h | 0 lpctool/{trunk => }/irq.c | 0 lpctool/{trunk => }/lcd.c | 0 lpctool/{trunk => }/lcd.h | 0 lpctool/{trunk => }/lpc2220.h | 0 lpctool/{trunk => }/lpc2220.ld | 0 lpctool/{trunk => }/lpc2220_rom.ld | 0 lpctool/{trunk => }/lpctool.c | 0 lpctool/{trunk => }/lpctool_serial.c | 0 lpctool/{trunk => }/lpctool_serial.h | 0 lpctool/{trunk => }/ramtool.c | 0 lpctool/{trunk => }/serial.c | 0 lpctool/{trunk => }/serial.h | 0 lpctool/{trunk => }/toolcmd.h | 0 lpctool/{trunk => }/toolcom.c | 0 lpctool/{trunk => }/toolcom.h | 0 lpctool/trunk/charset.bits | 118 - lpctool/trunk/charset.info | 22 - 364 files changed, 42706 deletions(-) rename Asixtool/{trunk => }/Kopie von Makefile (100%) rename Asixtool/{trunk => }/LICENSE (100%) rename Asixtool/{trunk => }/Makefile (100%) rename Asixtool/{trunk => }/asix_serial.c (100%) rename Asixtool/{trunk => }/asix_serial.h (100%) rename Asixtool/{trunk => }/bootcom.c (100%) rename Asixtool/{trunk => }/bootcom.h (100%) rename Asixtool/{trunk => }/infohelper.c (100%) rename Asixtool/{trunk => }/infohelper.h (100%) rename Asixtool/{trunk => }/main.c (100%) rename betty_TAE/MSP430/{trunk => }/Makefile (100%) rename betty_TAE/MSP430/{trunk => }/cc1100.c (100%) rename betty_TAE/MSP430/{trunk => }/cc1100.h (100%) rename betty_TAE/MSP430/{trunk => }/hardware.c (100%) rename betty_TAE/MSP430/{trunk => }/hardware.h (100%) rename betty_TAE/MSP430/{trunk => }/main.c (100%) rename betty_TAE/MSP430/{trunk => }/rf.c (100%) rename betty_TAE/MSP430/{trunk => }/rf.h (100%) rename betty_scart/{trunk => }/LICENSE (100%) rename betty_scart/{trunk => }/Makefile (100%) rename betty_scart/{trunk => }/Makefile.local.WinSDCC (100%) rename betty_scart/{trunk => }/Makefile.local.linuxSDCC (100%) rename betty_scart/{trunk => }/ScartProg.exe (100%) rename betty_scart/{trunk => }/betty_scart.bin (100%) rename betty_scart/{trunk => }/boop_icp.py (100%) rename betty_scart/{trunk => }/cc1100.c (100%) rename betty_scart/{trunk => }/cc1100.h (100%) rename betty_scart/{trunk => }/cmd.c (100%) rename betty_scart/{trunk => }/cmd.h (100%) rename betty_scart/{trunk => }/main.c (100%) rename betty_scart/{trunk => }/readme.txt (100%) rename betty_scart/{trunk => }/rf.c (100%) rename betty_scart/{trunk => }/rf.h (100%) rename betty_scart/{trunk => }/serial.c (100%) rename betty_scart/{trunk => }/serial.h (100%) rename betty_scart/{trunk => }/timer.c (100%) rename betty_scart/{trunk => }/timer.h (100%) rename bmp2b/{trunk => }/Makefile (100%) rename bmp2b/{trunk => }/README1ST (100%) rename bmp2b/{trunk => }/betty.bmp (100%) rename bmp2b/{trunk => }/betty2.bmp (100%) rename bmp2b/{trunk => }/bmp.c (100%) rename bmp2b/{trunk => }/bmp.h (100%) rename bmp2b/{trunk => }/bmp2b.c (100%) rename bmp2b/{trunk => }/bmp2b.tar.bz2 (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Boop.pnproj (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/CHANGELOG (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/LICENSE (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Make.conf (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Makefile (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Makefile.local (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Makefile.local.Telekatz (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Makefile.local.WinARM (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/Makefile.local.linuxARM (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/README (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/b.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/batt.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/batt.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/boop.pnps (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/boop_flash.ppg (100%) delete mode 100644 boop/branches/ram_version/readme.txt rename boop/{branches/ram_version/telekatz_soundtest => }/cc1100.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/cc1100.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/crt.s (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/externs.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/flash.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/flash.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonts/charset.bits (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonts/charset.info (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonts/smooth.bits (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonts/smooth.info (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonty.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/fonty.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/global.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/global.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/infrared.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/infrared.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_itt.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_itt.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_nrc17.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_nrc17.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rc5.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rc5.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rca.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rca.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rcmm.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rcmm.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rec80.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_rec80.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_recs80.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_recs80.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_sirc.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_sirc.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_spaceenc.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/ir_spaceenc.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/irq.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/irq.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/itt_codes.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/keyboard.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/keyboard.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/lcd.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/lcd.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/lpc2220.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/lpc2220.ld (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/lpc2220_rom.ld (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/main.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/serial.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/serial.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/sirc_codes.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/sound3.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/soundcore.c (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/soundcore.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/sounds.h (100%) rename boop/{branches/ram_version/telekatz_soundtest => }/spaceenc_codes.h (100%) delete mode 100644 boop/trunk/CHANGELOG delete mode 100644 boop/trunk/LICENSE delete mode 100644 boop/trunk/Make.conf delete mode 100644 boop/trunk/Makefile delete mode 100644 boop/trunk/Makefile.local.Telekatz delete mode 100644 boop/trunk/Makefile.local.WinARM delete mode 100644 boop/trunk/Makefile.local.linuxARM delete mode 100644 boop/trunk/README delete mode 100644 boop/trunk/adc/Make.conf delete mode 100644 boop/trunk/adc/adc.c delete mode 100644 boop/trunk/adc/adc.h delete mode 100644 boop/trunk/adc/adcirq.c delete mode 100644 boop/trunk/adc/adcirq.h delete mode 100644 boop/trunk/audio/Make.conf delete mode 100644 boop/trunk/audio/sid.c delete mode 100644 boop/trunk/audio/sid.h delete mode 100644 boop/trunk/audio/sidfiles.h delete mode 100644 boop/trunk/audio/sound.c delete mode 100644 boop/trunk/audio/sound.h delete mode 100644 boop/trunk/audio/soundirq.c delete mode 100644 boop/trunk/audio/soundirq.h delete mode 100644 boop/trunk/audio/sounds.h delete mode 100644 boop/trunk/betty.cfg delete mode 100644 boop/trunk/boop_rom.bin delete mode 100644 boop/trunk/buffer.c delete mode 100644 boop/trunk/buffer.h delete mode 100644 boop/trunk/cc1100/Make.conf delete mode 100644 boop/trunk/cc1100/cc1100.c delete mode 100644 boop/trunk/cc1100/cc1100.h delete mode 100644 boop/trunk/cc1100/fs20.c delete mode 100644 boop/trunk/cc1100/fs20.h delete mode 100644 boop/trunk/cc1100/rf.c delete mode 100644 boop/trunk/cc1100/rf.h delete mode 100644 boop/trunk/cc1100/scan.c delete mode 100644 boop/trunk/cc1100/scan.h delete mode 100644 boop/trunk/crt.s delete mode 100644 boop/trunk/display/GrayScaler.exe delete mode 100644 boop/trunk/display/Hourglas_2bpp.bmp delete mode 100644 boop/trunk/display/Hourglas_t_3bpp_t.bmp delete mode 100644 boop/trunk/display/Make.conf delete mode 100644 boop/trunk/display/backlight.c delete mode 100644 boop/trunk/display/backlight.h delete mode 100644 boop/trunk/display/boop_logo delete mode 100644 boop/trunk/display/drawDigit.c delete mode 100644 boop/trunk/display/drawDigit.h delete mode 100644 boop/trunk/display/drawIcon.c delete mode 100644 boop/trunk/display/fonts/smooth.bits delete mode 100644 boop/trunk/display/fonts/smooth.info delete mode 100644 boop/trunk/display/fonty.c delete mode 100644 boop/trunk/display/fonty.h delete mode 100644 boop/trunk/display/icon.h delete mode 100644 boop/trunk/display/iconHourglas.h delete mode 100644 boop/trunk/display/iconHourglas2.h delete mode 100644 boop/trunk/display/iconHourglas2_t.h delete mode 100644 boop/trunk/display/iconHourglas_t.h delete mode 100644 boop/trunk/display/lcd.c delete mode 100644 boop/trunk/display/lcd.h delete mode 100644 boop/trunk/flash/Make.conf delete mode 100644 boop/trunk/flash/bfs.c delete mode 100644 boop/trunk/flash/bfs.h delete mode 100644 boop/trunk/flash/flash.c delete mode 100644 boop/trunk/flash/flash.h delete mode 100644 boop/trunk/games/Make.conf delete mode 100644 boop/trunk/games/c4_map.h delete mode 100644 boop/trunk/games/connect4.c delete mode 100644 boop/trunk/games/connect4.h delete mode 100644 boop/trunk/games/gamesmenu.c delete mode 100644 boop/trunk/games/gamesmenu.h delete mode 100644 boop/trunk/games/sokoban.c delete mode 100644 boop/trunk/games/sokoban.h delete mode 100644 boop/trunk/games/sokoban_levels.h delete mode 100644 boop/trunk/games/tic_tac_toe.c delete mode 100644 boop/trunk/games/tic_tac_toe.h delete mode 100644 boop/trunk/global.c delete mode 100644 boop/trunk/global.h delete mode 100644 boop/trunk/gui/Cross_2bpp.bmp delete mode 100644 boop/trunk/gui/Cross_t_3bpp_t.bmp delete mode 100644 boop/trunk/gui/FF_2bpp.bmp delete mode 100644 boop/trunk/gui/FR_2bpp.bmp delete mode 100644 boop/trunk/gui/Leo_Gray_128_2bpp.bmp delete mode 100644 boop/trunk/gui/Make.conf delete mode 100644 boop/trunk/gui/Pause_2bpp.bmp delete mode 100644 boop/trunk/gui/Play_2bpp.bmp delete mode 100644 boop/trunk/gui/Stop_2bpp.bmp delete mode 100644 boop/trunk/gui/controls.c delete mode 100644 boop/trunk/gui/controls.h delete mode 100644 boop/trunk/gui/iconCross.h delete mode 100644 boop/trunk/gui/iconCross_t.h delete mode 100644 boop/trunk/gui/iconFf.h delete mode 100644 boop/trunk/gui/iconFr.h delete mode 100644 boop/trunk/gui/iconHourglas.h delete mode 100644 boop/trunk/gui/iconHourglas_t.h delete mode 100644 boop/trunk/gui/iconLeo_gray_128.h delete mode 100644 boop/trunk/gui/iconPause.h delete mode 100644 boop/trunk/gui/iconPlay.h delete mode 100644 boop/trunk/gui/iconStop.h delete mode 100644 boop/trunk/gui/mainmenu.c delete mode 100644 boop/trunk/gui/mainmenu.h delete mode 100644 boop/trunk/gui/menu.c delete mode 100644 boop/trunk/gui/menu.h delete mode 100644 boop/trunk/gui/settingsmenu.c delete mode 100644 boop/trunk/gui/settingsmenu.h delete mode 100644 boop/trunk/gui/testmenu.c delete mode 100644 boop/trunk/gui/testmenu.h delete mode 100644 boop/trunk/infrared/Make.conf delete mode 100644 boop/trunk/infrared/codes.c delete mode 100644 boop/trunk/infrared/codes.h delete mode 100644 boop/trunk/infrared/encoders.c delete mode 100644 boop/trunk/infrared/encoders.h delete mode 100644 boop/trunk/infrared/infrared.c delete mode 100644 boop/trunk/infrared/infrared.h delete mode 100644 boop/trunk/infrared/infrared_encoders.h delete mode 100644 boop/trunk/infrared/infraredirq.c delete mode 100644 boop/trunk/infrared/infraredirq.h delete mode 100644 boop/trunk/infrared/ir_capture.c delete mode 100644 boop/trunk/infrared/ir_capture.h delete mode 100644 boop/trunk/infrared/ir_codes/itt/seleco_019 delete mode 100644 boop/trunk/infrared/ir_codes/itt/seleco_049 delete mode 100644 boop/trunk/infrared/ir_codes/itt/seleco_108 delete mode 100644 boop/trunk/infrared/ir_codes/itt/seleco_131 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/apple_remote1 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/fs20 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/hx2262 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/rev008340 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/str_de545 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/ufs910 delete mode 100644 boop/trunk/infrared/ir_codes/lirc/ufs922 delete mode 100644 boop/trunk/infrared/ir_codes/nrc17/dbox2 delete mode 100644 boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 delete mode 100644 boop/trunk/infrared/ir_codes/rc5/HARMONY_655 delete mode 100644 boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 delete mode 100644 boop/trunk/infrared/ir_codes/rc5/tv delete mode 100644 boop/trunk/infrared/ir_codes/rc6/dvd delete mode 100644 boop/trunk/infrared/ir_codes/rc6/tv delete mode 100644 boop/trunk/infrared/ir_codes/rc6/ufs922 delete mode 100644 boop/trunk/infrared/ir_codes/rca/xbox delete mode 100644 boop/trunk/infrared/ir_codes/rcmm/galaxis delete mode 100644 boop/trunk/infrared/ir_codes/rcmm/ufs910 delete mode 100644 boop/trunk/infrared/ir_codes/rec80/rak_sc957wk delete mode 100644 boop/trunk/infrared/ir_codes/recs80/seleco_020 delete mode 100644 boop/trunk/infrared/ir_codes/recs80/seleco_157 delete mode 100644 boop/trunk/infrared/ir_codes/rf/cc1100_a0 delete mode 100644 boop/trunk/infrared/ir_codes/rf/cc1100_a1 delete mode 100644 boop/trunk/infrared/ir_codes/sirc/UFD400 delete mode 100644 boop/trunk/infrared/ir_codes/sirc/rm-pp411 delete mode 100644 boop/trunk/infrared/ir_codes/sirc/tv delete mode 100644 boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 delete mode 100644 boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra delete mode 100644 boop/trunk/infrared/ir_codes/spaceenc/seleco_027 delete mode 100644 boop/trunk/infrared/ir_itt.c delete mode 100644 boop/trunk/infrared/ir_itt.h delete mode 100644 boop/trunk/infrared/ir_lirc.c delete mode 100644 boop/trunk/infrared/ir_lirc.h delete mode 100644 boop/trunk/infrared/ir_nrc17.c delete mode 100644 boop/trunk/infrared/ir_nrc17.h delete mode 100644 boop/trunk/infrared/ir_raw.c delete mode 100644 boop/trunk/infrared/ir_raw.h delete mode 100644 boop/trunk/infrared/ir_rc5.c delete mode 100644 boop/trunk/infrared/ir_rc5.h delete mode 100644 boop/trunk/infrared/ir_rc6.c delete mode 100644 boop/trunk/infrared/ir_rc6.h delete mode 100644 boop/trunk/infrared/ir_rca.c delete mode 100644 boop/trunk/infrared/ir_rca.h delete mode 100644 boop/trunk/infrared/ir_rcmm.c delete mode 100644 boop/trunk/infrared/ir_rcmm.h delete mode 100644 boop/trunk/infrared/ir_rec80.c delete mode 100644 boop/trunk/infrared/ir_rec80.h delete mode 100644 boop/trunk/infrared/ir_recs80.c delete mode 100644 boop/trunk/infrared/ir_recs80.h delete mode 100644 boop/trunk/infrared/ir_rf.c delete mode 100644 boop/trunk/infrared/ir_rf.h delete mode 100644 boop/trunk/infrared/ir_selector.c delete mode 100644 boop/trunk/infrared/ir_selector.h delete mode 100644 boop/trunk/infrared/ir_sirc.c delete mode 100644 boop/trunk/infrared/ir_sirc.h delete mode 100644 boop/trunk/infrared/ir_spaceenc.c delete mode 100644 boop/trunk/infrared/ir_spaceenc.h delete mode 100644 boop/trunk/interrupt/Make.conf delete mode 100644 boop/trunk/interrupt/irq.c delete mode 100644 boop/trunk/interrupt/irq.h delete mode 100644 boop/trunk/keyboard/Make.conf delete mode 100644 boop/trunk/keyboard/keyboard.c delete mode 100644 boop/trunk/keyboard/keyboard.h delete mode 100644 boop/trunk/keyboard/keyirq.c delete mode 100644 boop/trunk/keyboard/keyirq.h delete mode 100644 boop/trunk/lpc2220.h delete mode 100644 boop/trunk/lpc2220_rom.ld delete mode 100644 boop/trunk/main.c delete mode 100644 boop/trunk/rtc/Make.conf delete mode 100644 boop/trunk/rtc/i2c.c delete mode 100644 boop/trunk/rtc/i2c.h delete mode 100644 boop/trunk/rtc/rtc.c delete mode 100644 boop/trunk/rtc/rtc.h delete mode 100644 boop/trunk/rtc/rtctimer.c delete mode 100644 boop/trunk/rtc/rtctimer.h delete mode 100644 boop/trunk/serial/Make.conf delete mode 100644 boop/trunk/serial/redirector.c delete mode 100644 boop/trunk/serial/redirector.h delete mode 100644 boop/trunk/serial/serial.c delete mode 100644 boop/trunk/serial/serial.h delete mode 100644 boop/trunk/serial/serirq.c delete mode 100644 boop/trunk/sound3.h delete mode 100644 boop/trunk/syscalls.c delete mode 100644 boop/trunk/timer/Make.conf delete mode 100644 boop/trunk/timer/timerfuncs.c delete mode 100644 boop/trunk/timer/timerfuncs.h delete mode 100644 boop/trunk/timer/timerirq.c delete mode 100644 boop/trunk/timer/timerirq.h delete mode 100644 boop/trunk/tools/Make.conf delete mode 100644 boop/trunk/tools/scart_icp.c delete mode 100644 boop/trunk/tools/scart_icp.h delete mode 100644 boop/trunk/tools/scart_image.h delete mode 100644 boop/trunk/tools/scart_image_data.h delete mode 100644 boop/trunk/tools/toolsmenu.c delete mode 100644 boop/trunk/tools/toolsmenu.h rename lpctool/{trunk => }/ChangeLog (100%) rename lpctool/{trunk => }/Makefile (100%) rename lpctool/{trunk => }/Makefile.local.WinARM (100%) rename lpctool/{trunk => }/Makefile.local.linuxARM (100%) rename lpctool/{trunk => }/bin2h.c (100%) rename lpctool/{trunk => }/bootcom.c (100%) rename lpctool/{trunk => }/bootcom.h (100%) rename {boop/trunk/display/fonts => lpctool}/charset.bits (100%) rename {boop/trunk/display/fonts => lpctool}/charset.info (100%) rename lpctool/{trunk => }/crt.s (100%) rename lpctool/{trunk => }/flash.c (100%) rename lpctool/{trunk => }/flash.h (100%) rename lpctool/{trunk => }/fonty.c (100%) rename lpctool/{trunk => }/fonty.h (100%) rename lpctool/{trunk => }/infohelper.c (100%) rename lpctool/{trunk => }/infohelper.h (100%) rename lpctool/{trunk => }/irq.c (100%) rename lpctool/{trunk => }/lcd.c (100%) rename lpctool/{trunk => }/lcd.h (100%) rename lpctool/{trunk => }/lpc2220.h (100%) rename lpctool/{trunk => }/lpc2220.ld (100%) rename lpctool/{trunk => }/lpc2220_rom.ld (100%) rename lpctool/{trunk => }/lpctool.c (100%) rename lpctool/{trunk => }/lpctool_serial.c (100%) rename lpctool/{trunk => }/lpctool_serial.h (100%) rename lpctool/{trunk => }/ramtool.c (100%) rename lpctool/{trunk => }/serial.c (100%) rename lpctool/{trunk => }/serial.h (100%) rename lpctool/{trunk => }/toolcmd.h (100%) rename lpctool/{trunk => }/toolcom.c (100%) rename lpctool/{trunk => }/toolcom.h (100%) delete mode 100644 lpctool/trunk/charset.bits delete mode 100644 lpctool/trunk/charset.info diff --git a/Asixtool/trunk/Kopie von Makefile b/Asixtool/Kopie von Makefile similarity index 100% rename from Asixtool/trunk/Kopie von Makefile rename to Asixtool/Kopie von Makefile diff --git a/Asixtool/trunk/LICENSE b/Asixtool/LICENSE similarity index 100% rename from Asixtool/trunk/LICENSE rename to Asixtool/LICENSE diff --git a/Asixtool/trunk/Makefile b/Asixtool/Makefile similarity index 100% rename from Asixtool/trunk/Makefile rename to Asixtool/Makefile diff --git a/Asixtool/trunk/asix_serial.c b/Asixtool/asix_serial.c similarity index 100% rename from Asixtool/trunk/asix_serial.c rename to Asixtool/asix_serial.c diff --git a/Asixtool/trunk/asix_serial.h b/Asixtool/asix_serial.h similarity index 100% rename from Asixtool/trunk/asix_serial.h rename to Asixtool/asix_serial.h diff --git a/Asixtool/trunk/bootcom.c b/Asixtool/bootcom.c similarity index 100% rename from Asixtool/trunk/bootcom.c rename to Asixtool/bootcom.c diff --git a/Asixtool/trunk/bootcom.h b/Asixtool/bootcom.h similarity index 100% rename from Asixtool/trunk/bootcom.h rename to Asixtool/bootcom.h diff --git a/Asixtool/trunk/infohelper.c b/Asixtool/infohelper.c similarity index 100% rename from Asixtool/trunk/infohelper.c rename to Asixtool/infohelper.c diff --git a/Asixtool/trunk/infohelper.h b/Asixtool/infohelper.h similarity index 100% rename from Asixtool/trunk/infohelper.h rename to Asixtool/infohelper.h diff --git a/Asixtool/trunk/main.c b/Asixtool/main.c similarity index 100% rename from Asixtool/trunk/main.c rename to Asixtool/main.c diff --git a/betty_TAE/MSP430/trunk/Makefile b/betty_TAE/MSP430/Makefile similarity index 100% rename from betty_TAE/MSP430/trunk/Makefile rename to betty_TAE/MSP430/Makefile diff --git a/betty_TAE/MSP430/trunk/cc1100.c b/betty_TAE/MSP430/cc1100.c similarity index 100% rename from betty_TAE/MSP430/trunk/cc1100.c rename to betty_TAE/MSP430/cc1100.c diff --git a/betty_TAE/MSP430/trunk/cc1100.h b/betty_TAE/MSP430/cc1100.h similarity index 100% rename from betty_TAE/MSP430/trunk/cc1100.h rename to betty_TAE/MSP430/cc1100.h diff --git a/betty_TAE/MSP430/trunk/hardware.c b/betty_TAE/MSP430/hardware.c similarity index 100% rename from betty_TAE/MSP430/trunk/hardware.c rename to betty_TAE/MSP430/hardware.c diff --git a/betty_TAE/MSP430/trunk/hardware.h b/betty_TAE/MSP430/hardware.h similarity index 100% rename from betty_TAE/MSP430/trunk/hardware.h rename to betty_TAE/MSP430/hardware.h diff --git a/betty_TAE/MSP430/trunk/main.c b/betty_TAE/MSP430/main.c similarity index 100% rename from betty_TAE/MSP430/trunk/main.c rename to betty_TAE/MSP430/main.c diff --git a/betty_TAE/MSP430/trunk/rf.c b/betty_TAE/MSP430/rf.c similarity index 100% rename from betty_TAE/MSP430/trunk/rf.c rename to betty_TAE/MSP430/rf.c diff --git a/betty_TAE/MSP430/trunk/rf.h b/betty_TAE/MSP430/rf.h similarity index 100% rename from betty_TAE/MSP430/trunk/rf.h rename to betty_TAE/MSP430/rf.h diff --git a/betty_scart/trunk/LICENSE b/betty_scart/LICENSE similarity index 100% rename from betty_scart/trunk/LICENSE rename to betty_scart/LICENSE diff --git a/betty_scart/trunk/Makefile b/betty_scart/Makefile similarity index 100% rename from betty_scart/trunk/Makefile rename to betty_scart/Makefile diff --git a/betty_scart/trunk/Makefile.local.WinSDCC b/betty_scart/Makefile.local.WinSDCC similarity index 100% rename from betty_scart/trunk/Makefile.local.WinSDCC rename to betty_scart/Makefile.local.WinSDCC diff --git a/betty_scart/trunk/Makefile.local.linuxSDCC b/betty_scart/Makefile.local.linuxSDCC similarity index 100% rename from betty_scart/trunk/Makefile.local.linuxSDCC rename to betty_scart/Makefile.local.linuxSDCC diff --git a/betty_scart/trunk/ScartProg.exe b/betty_scart/ScartProg.exe similarity index 100% rename from betty_scart/trunk/ScartProg.exe rename to betty_scart/ScartProg.exe diff --git a/betty_scart/trunk/betty_scart.bin b/betty_scart/betty_scart.bin similarity index 100% rename from betty_scart/trunk/betty_scart.bin rename to betty_scart/betty_scart.bin diff --git a/betty_scart/trunk/boop_icp.py b/betty_scart/boop_icp.py similarity index 100% rename from betty_scart/trunk/boop_icp.py rename to betty_scart/boop_icp.py diff --git a/betty_scart/trunk/cc1100.c b/betty_scart/cc1100.c similarity index 100% rename from betty_scart/trunk/cc1100.c rename to betty_scart/cc1100.c diff --git a/betty_scart/trunk/cc1100.h b/betty_scart/cc1100.h similarity index 100% rename from betty_scart/trunk/cc1100.h rename to betty_scart/cc1100.h diff --git a/betty_scart/trunk/cmd.c b/betty_scart/cmd.c similarity index 100% rename from betty_scart/trunk/cmd.c rename to betty_scart/cmd.c diff --git a/betty_scart/trunk/cmd.h b/betty_scart/cmd.h similarity index 100% rename from betty_scart/trunk/cmd.h rename to betty_scart/cmd.h diff --git a/betty_scart/trunk/main.c b/betty_scart/main.c similarity index 100% rename from betty_scart/trunk/main.c rename to betty_scart/main.c diff --git a/betty_scart/trunk/readme.txt b/betty_scart/readme.txt similarity index 100% rename from betty_scart/trunk/readme.txt rename to betty_scart/readme.txt diff --git a/betty_scart/trunk/rf.c b/betty_scart/rf.c similarity index 100% rename from betty_scart/trunk/rf.c rename to betty_scart/rf.c diff --git a/betty_scart/trunk/rf.h b/betty_scart/rf.h similarity index 100% rename from betty_scart/trunk/rf.h rename to betty_scart/rf.h diff --git a/betty_scart/trunk/serial.c b/betty_scart/serial.c similarity index 100% rename from betty_scart/trunk/serial.c rename to betty_scart/serial.c diff --git a/betty_scart/trunk/serial.h b/betty_scart/serial.h similarity index 100% rename from betty_scart/trunk/serial.h rename to betty_scart/serial.h diff --git a/betty_scart/trunk/timer.c b/betty_scart/timer.c similarity index 100% rename from betty_scart/trunk/timer.c rename to betty_scart/timer.c diff --git a/betty_scart/trunk/timer.h b/betty_scart/timer.h similarity index 100% rename from betty_scart/trunk/timer.h rename to betty_scart/timer.h diff --git a/bmp2b/trunk/Makefile b/bmp2b/Makefile similarity index 100% rename from bmp2b/trunk/Makefile rename to bmp2b/Makefile diff --git a/bmp2b/trunk/README1ST b/bmp2b/README1ST similarity index 100% rename from bmp2b/trunk/README1ST rename to bmp2b/README1ST diff --git a/bmp2b/trunk/betty.bmp b/bmp2b/betty.bmp similarity index 100% rename from bmp2b/trunk/betty.bmp rename to bmp2b/betty.bmp diff --git a/bmp2b/trunk/betty2.bmp b/bmp2b/betty2.bmp similarity index 100% rename from bmp2b/trunk/betty2.bmp rename to bmp2b/betty2.bmp diff --git a/bmp2b/trunk/bmp.c b/bmp2b/bmp.c similarity index 100% rename from bmp2b/trunk/bmp.c rename to bmp2b/bmp.c diff --git a/bmp2b/trunk/bmp.h b/bmp2b/bmp.h similarity index 100% rename from bmp2b/trunk/bmp.h rename to bmp2b/bmp.h diff --git a/bmp2b/trunk/bmp2b.c b/bmp2b/bmp2b.c similarity index 100% rename from bmp2b/trunk/bmp2b.c rename to bmp2b/bmp2b.c diff --git a/bmp2b/trunk/bmp2b.tar.bz2 b/bmp2b/bmp2b.tar.bz2 similarity index 100% rename from bmp2b/trunk/bmp2b.tar.bz2 rename to bmp2b/bmp2b.tar.bz2 diff --git a/boop/branches/ram_version/telekatz_soundtest/Boop.pnproj b/boop/Boop.pnproj similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Boop.pnproj rename to boop/Boop.pnproj diff --git a/boop/branches/ram_version/telekatz_soundtest/CHANGELOG b/boop/CHANGELOG similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/CHANGELOG rename to boop/CHANGELOG diff --git a/boop/branches/ram_version/telekatz_soundtest/LICENSE b/boop/LICENSE similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/LICENSE rename to boop/LICENSE diff --git a/boop/branches/ram_version/telekatz_soundtest/Make.conf b/boop/Make.conf similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Make.conf rename to boop/Make.conf diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile b/boop/Makefile similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile rename to boop/Makefile diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local b/boop/Makefile.local similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local rename to boop/Makefile.local diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.Telekatz b/boop/Makefile.local.Telekatz similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.Telekatz rename to boop/Makefile.local.Telekatz diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.WinARM b/boop/Makefile.local.WinARM similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.WinARM rename to boop/Makefile.local.WinARM diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.linuxARM b/boop/Makefile.local.linuxARM similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.linuxARM rename to boop/Makefile.local.linuxARM diff --git a/boop/branches/ram_version/telekatz_soundtest/README b/boop/README similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/README rename to boop/README diff --git a/boop/branches/ram_version/telekatz_soundtest/b.h b/boop/b.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/b.h rename to boop/b.h diff --git a/boop/branches/ram_version/telekatz_soundtest/batt.c b/boop/batt.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/batt.c rename to boop/batt.c diff --git a/boop/branches/ram_version/telekatz_soundtest/batt.h b/boop/batt.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/batt.h rename to boop/batt.h diff --git a/boop/branches/ram_version/telekatz_soundtest/boop.pnps b/boop/boop.pnps similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/boop.pnps rename to boop/boop.pnps diff --git a/boop/branches/ram_version/telekatz_soundtest/boop_flash.ppg b/boop/boop_flash.ppg similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/boop_flash.ppg rename to boop/boop_flash.ppg diff --git a/boop/branches/ram_version/readme.txt b/boop/branches/ram_version/readme.txt deleted file mode 100644 index b2d7001..0000000 --- a/boop/branches/ram_version/readme.txt +++ /dev/null @@ -1 +0,0 @@ -In this directory you find mini boop versions running from RAM. See README in each directory. \ No newline at end of file diff --git a/boop/branches/ram_version/telekatz_soundtest/cc1100.c b/boop/cc1100.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/cc1100.c rename to boop/cc1100.c diff --git a/boop/branches/ram_version/telekatz_soundtest/cc1100.h b/boop/cc1100.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/cc1100.h rename to boop/cc1100.h diff --git a/boop/branches/ram_version/telekatz_soundtest/crt.s b/boop/crt.s similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/crt.s rename to boop/crt.s diff --git a/boop/branches/ram_version/telekatz_soundtest/externs.h b/boop/externs.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/externs.h rename to boop/externs.h diff --git a/boop/branches/ram_version/telekatz_soundtest/flash.c b/boop/flash.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/flash.c rename to boop/flash.c diff --git a/boop/branches/ram_version/telekatz_soundtest/flash.h b/boop/flash.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/flash.h rename to boop/flash.h diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/charset.bits b/boop/fonts/charset.bits similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/charset.bits rename to boop/fonts/charset.bits diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/charset.info b/boop/fonts/charset.info similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/charset.info rename to boop/fonts/charset.info diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/smooth.bits b/boop/fonts/smooth.bits similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/smooth.bits rename to boop/fonts/smooth.bits diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/smooth.info b/boop/fonts/smooth.info similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/smooth.info rename to boop/fonts/smooth.info diff --git a/boop/branches/ram_version/telekatz_soundtest/fonty.c b/boop/fonty.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonty.c rename to boop/fonty.c diff --git a/boop/branches/ram_version/telekatz_soundtest/fonty.h b/boop/fonty.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonty.h rename to boop/fonty.h diff --git a/boop/branches/ram_version/telekatz_soundtest/global.c b/boop/global.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/global.c rename to boop/global.c diff --git a/boop/branches/ram_version/telekatz_soundtest/global.h b/boop/global.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/global.h rename to boop/global.h diff --git a/boop/branches/ram_version/telekatz_soundtest/infrared.c b/boop/infrared.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/infrared.c rename to boop/infrared.c diff --git a/boop/branches/ram_version/telekatz_soundtest/infrared.h b/boop/infrared.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/infrared.h rename to boop/infrared.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_itt.c b/boop/ir_itt.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_itt.c rename to boop/ir_itt.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_itt.h b/boop/ir_itt.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_itt.h rename to boop/ir_itt.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_nrc17.c b/boop/ir_nrc17.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_nrc17.c rename to boop/ir_nrc17.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_nrc17.h b/boop/ir_nrc17.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_nrc17.h rename to boop/ir_nrc17.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rc5.c b/boop/ir_rc5.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rc5.c rename to boop/ir_rc5.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rc5.h b/boop/ir_rc5.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rc5.h rename to boop/ir_rc5.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rca.c b/boop/ir_rca.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rca.c rename to boop/ir_rca.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rca.h b/boop/ir_rca.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rca.h rename to boop/ir_rca.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rcmm.c b/boop/ir_rcmm.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rcmm.c rename to boop/ir_rcmm.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rcmm.h b/boop/ir_rcmm.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rcmm.h rename to boop/ir_rcmm.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rec80.c b/boop/ir_rec80.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rec80.c rename to boop/ir_rec80.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rec80.h b/boop/ir_rec80.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rec80.h rename to boop/ir_rec80.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_recs80.c b/boop/ir_recs80.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_recs80.c rename to boop/ir_recs80.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_recs80.h b/boop/ir_recs80.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_recs80.h rename to boop/ir_recs80.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_sirc.c b/boop/ir_sirc.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_sirc.c rename to boop/ir_sirc.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_sirc.h b/boop/ir_sirc.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_sirc.h rename to boop/ir_sirc.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.c b/boop/ir_spaceenc.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.c rename to boop/ir_spaceenc.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.h b/boop/ir_spaceenc.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.h rename to boop/ir_spaceenc.h diff --git a/boop/branches/ram_version/telekatz_soundtest/irq.c b/boop/irq.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/irq.c rename to boop/irq.c diff --git a/boop/branches/ram_version/telekatz_soundtest/irq.h b/boop/irq.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/irq.h rename to boop/irq.h diff --git a/boop/branches/ram_version/telekatz_soundtest/itt_codes.h b/boop/itt_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/itt_codes.h rename to boop/itt_codes.h diff --git a/boop/branches/ram_version/telekatz_soundtest/keyboard.c b/boop/keyboard.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/keyboard.c rename to boop/keyboard.c diff --git a/boop/branches/ram_version/telekatz_soundtest/keyboard.h b/boop/keyboard.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/keyboard.h rename to boop/keyboard.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lcd.c b/boop/lcd.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lcd.c rename to boop/lcd.c diff --git a/boop/branches/ram_version/telekatz_soundtest/lcd.h b/boop/lcd.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lcd.h rename to boop/lcd.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220.h b/boop/lpc2220.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220.h rename to boop/lpc2220.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220.ld b/boop/lpc2220.ld similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220.ld rename to boop/lpc2220.ld diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220_rom.ld b/boop/lpc2220_rom.ld similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220_rom.ld rename to boop/lpc2220_rom.ld diff --git a/boop/branches/ram_version/telekatz_soundtest/main.c b/boop/main.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/main.c rename to boop/main.c diff --git a/boop/branches/ram_version/telekatz_soundtest/serial.c b/boop/serial.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/serial.c rename to boop/serial.c diff --git a/boop/branches/ram_version/telekatz_soundtest/serial.h b/boop/serial.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/serial.h rename to boop/serial.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sirc_codes.h b/boop/sirc_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sirc_codes.h rename to boop/sirc_codes.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sound3.h b/boop/sound3.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sound3.h rename to boop/sound3.h diff --git a/boop/branches/ram_version/telekatz_soundtest/soundcore.c b/boop/soundcore.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/soundcore.c rename to boop/soundcore.c diff --git a/boop/branches/ram_version/telekatz_soundtest/soundcore.h b/boop/soundcore.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/soundcore.h rename to boop/soundcore.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sounds.h b/boop/sounds.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sounds.h rename to boop/sounds.h diff --git a/boop/branches/ram_version/telekatz_soundtest/spaceenc_codes.h b/boop/spaceenc_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/spaceenc_codes.h rename to boop/spaceenc_codes.h diff --git a/boop/trunk/CHANGELOG b/boop/trunk/CHANGELOG deleted file mode 100644 index d267b83..0000000 --- a/boop/trunk/CHANGELOG +++ /dev/null @@ -1,2 +0,0 @@ -06.12.2007 : -- starting complete code rework diff --git a/boop/trunk/LICENSE b/boop/trunk/LICENSE deleted file mode 100644 index 94a9ed0..0000000 --- a/boop/trunk/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. 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 -them 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 prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. 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. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey 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; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If 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 convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU 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 that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - 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. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -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. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - 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 -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 3 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, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program 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, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU 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 Lesser General -Public License instead of this License. But first, please read -. diff --git a/boop/trunk/Make.conf b/boop/trunk/Make.conf deleted file mode 100644 index c8d471a..0000000 --- a/boop/trunk/Make.conf +++ /dev/null @@ -1,5 +0,0 @@ -SUBDIRS := adc audio cc1100 display flash games gui infrared interrupt \ - keyboard rtc serial timer tools - -SRCS := crt.s main.c global.c buffer.c syscalls.c - diff --git a/boop/trunk/Makefile b/boop/trunk/Makefile deleted file mode 100644 index 39e0f13..0000000 --- a/boop/trunk/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -############################################################### -##### -##### Makefile for boop - OpenSource firmware for Betty -##### Created at 30.8.2007 02:26 am -##### -##### boop V0.1 by netguy - ck@mamalala.net -##### Makefile V0.1 by alterego - alteregon@gmx.net -##### Makefile v0.2 by Tobias - tobias-betty@23.gs -##### -############################################################### - -############################################################### -##### -##### PATHS (default installation) -##### -##### You can put your path-config into Makefile.local -##### to override these defaults -##### -############################################################### - -ARMBASE = /opt/toolchains/gcc-arm-none-eabi-4_9-2014q4 -INCLUDEPATH = $(ARMBASE)/include -#LIBGCCPATH = $(ARMBASE)/lib/gcc/arm-none-eabi/4.7.3/thumb/arm7tdmi-s -#LIBCPATH = $(ARMBASE)/arm-none-eabi/lib/thumb/arm7tdmi-s -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-none-eabi- -LPCTOOL = lpctool -OPENOCD = openocd -f betty.cfg -f interface/parport.cfg - -############################################################### -##### -##### Compiler, Linker and Tools -##### -############################################################### - -CC = $(ARMPATH)/$(TOOLPREFIX)gcc -AS = $(ARMPATH)/$(TOOLPREFIX)as -#LD = $(ARMPATH)/$(TOOLPREFIX)ld -LD = $(ARMPATH)/$(TOOLPREFIX)gcc -OC = $(ARMPATH)/$(TOOLPREFIX)objcopy -OD = $(ARMPATH)/$(TOOLPREFIX)objdump - -CPUFLAGS = -mcpu=arm7tdmi-s -OPTFLAGS = -Os -CFLAGS = -Wall -mthumb-interwork -msoft-float -INC = -I$(INCLUDEPATH) -I. -Iinterrupt -Idisplay -Ikeyboard -Iaudio -Iinfrared -Iserial -Iflash -Icc1100 -Igui -Itimer -Igames -Iadc -Irtc -Itools -ASFLAGS = -D --gstabs -mthumb-interwork -mfpu=softfpa -#LDFLAGS = -Tlpc2220_rom.ld -Map boop.map -#LIBS = -lc -lgcc -LDFLAGS = -mthumb-interwork -nostartfiles -Xlinker -Map -Xlinker boop.map -Tlpc2220_rom.ld -THUMBFLAGS = -mthumb - -COMPILE = $(CC) $(CPUFLAGS) $(CFLAGS) $(INC) - -ifeq ($(MAKECMDGOALS),debug) - COMPILE += -D DEBUGMODE -endif - -ifeq ($(MAKECMDGOALS),release) - COMPILE += -D RELEASE -endif - --include Makefile.local - -############################################################### -##### -##### Do the boop -##### -############################################################### - -# Recursive expansion of Makefile rules. -define expand_dir - # Reset vars for subdir for the case that Make.conf does not exist - SUBDIRS := - SRCS := - THUMBSRCS := - THUMBSRCSUNOPT := - -include $(1)Make.conf - ALLSRCS += $$(SRCS:%=$(1)%) - ALLTHUMBSRCS += $$(THUMBSRCS:%=$(1)%) - ALLTHUMBSRCSUNOPT += $$(THUMBSRCSUNOPT:%=$(1)%) - DEPS += $(1).deps - $$(foreach adir,$$(SUBDIRS),$$(eval $$(call expand_dir,$(1)$$(adir)/))) -endef - -ALLSRCS := -ALLTHUMBSRCS := -ALLTHUMBSRCSUNOPT := - -$(eval $(call expand_dir,)) - -OBJS := $(patsubst %.s,%.o,$(ALLSRCS:.c=.o)) $(ALLTHUMBSRCS:.c=.thumb.o) $(ALLTHUMBSRCSUNOPT:.c=.thumbunopt.o) - -all: version $(DEPS) boop_rom.bin boop_rom.hex - -debug: version.h $(DEPS) boop_rom.bin boop_rom.hex - -release: clean version $(DEPS) boop_rom.bin boop_rom.hex - @echo -n '\n\nRelease erstellt SVN Version ++' - @cat .svn/entries | sed -n '4p' - -version: - echo -n '#define SVNVERSION ' > version.h - svnversion -n |cut -f1 -d M -n >> version.h - echo >> version.h - -version.h: - echo -n '#define SVNVERSION ' > version.h - svnversion -n|cut -f1 -d M >> version.h - echo >> version.h - -test: boop_rom.elf - $(OD) -h $< - -%.bin: %.elf - $(OC) -O binary $< $@ - -%.hex: %.elf - $(OC) -O ihex $< $@ - -boop_rom.elf: $(OBJS) - $(LD) $(LDFLAGS) -L$(LIBGCCPATH) -L$(LIBCPATH) -o $@ $^ $(LIBS) - -%.o: %.s - $(AS) $(CPUFLAGS) $(ASFLAGS) -o $@ $< - -%.o: %.c - $(COMPILE) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -%.thumb.o: %.c - $(COMPILE) $(THUMBFLAGS) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -%.thumbunopt.o: %.c - $(COMPILE) $(THUMBFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -$(DEPS): - mkdir -p $@ - -uresident: resident -resident: boop_rom.bin - $(LPCTOOL) -i -v -e -a $< - -program: boop_rom.bin - $(OPENOCD) -c init -c 'flash_boop $<' -c shutdown - -clean: - -rm -Rf $(DEPS) - -rm -f $(OBJS) *.elf *.bin *.hex *~ - --include $(DEPS:=/*) diff --git a/boop/trunk/Makefile.local.Telekatz b/boop/trunk/Makefile.local.Telekatz deleted file mode 100644 index 2a8c536..0000000 --- a/boop/trunk/Makefile.local.Telekatz +++ /dev/null @@ -1,23 +0,0 @@ -############################################################### -##### -##### Makefile.local.WinARM for boop -##### Created in the early morninghours -##### -##### Makefile.local.WinARM V1.0 by alterego - alteregon@gmx.net -##### -##### Copy this file to Makefile.local for your Windows -##### installation -##### -############################################################### - -ARMBASE = F:/Tools/WinARM -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/arm-elf/lib/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool.exe - -CFLAGS = -Wall -mthumb-interwork -msoft-float -ggdb - -######################## EOF ################################## - diff --git a/boop/trunk/Makefile.local.WinARM b/boop/trunk/Makefile.local.WinARM deleted file mode 100644 index efcfb9d..0000000 --- a/boop/trunk/Makefile.local.WinARM +++ /dev/null @@ -1,21 +0,0 @@ -############################################################### -##### -##### Makefile.local.WinARM for boop -##### Created in the early morninghours -##### -##### Makefile.local.WinARM V1.0 by alterego - alteregon@gmx.net -##### -##### Copy this file to Makefile.local for your Windows -##### installation -##### -############################################################### - -ARMBASE = c:/WinARM/ -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/arm-elf/lib/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool.exe -OPENOCD = C:\OpenOCD\openocd.exe -f betty.cfg -f C:\OpenOCD\OpenOCD\interface\parport.cfg - -######################## EOF ################################## diff --git a/boop/trunk/Makefile.local.linuxARM b/boop/trunk/Makefile.local.linuxARM deleted file mode 100644 index e87b3b7..0000000 --- a/boop/trunk/Makefile.local.linuxARM +++ /dev/null @@ -1,19 +0,0 @@ -############################################################### -##### -##### Makefile.local.linuxARM for boop -##### Created in the early morninghours -##### -##### Copy this to Makefile.local and modify for your Linux -##### installation -##### -############################################################### - -ARMBASE = /opt/arm-elf -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/lib/gcc/arm-elf/4.1.1/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool -d /dev/ttyUSB0 -OPENOCD = openocd -f betty.cfg -f interface/parport.cfg - -######################## EOF ################################## diff --git a/boop/trunk/README b/boop/trunk/README deleted file mode 100644 index 109a0c2..0000000 --- a/boop/trunk/README +++ /dev/null @@ -1,17 +0,0 @@ -9.11.2007: - -- serial console: - 115200 baud, 8N1, no handshake - -- serial commands: - 0 - backlight off - 1 - dimmed backlight - 2 - full backlight - . - prints "HELO" - S - prints RCA_Encode status (hex value) - I - prints irIRQ status (hex value) - K - prints keyIRQ status (hex value) - all other inputs are echoed - -- flash boop_rom.bin: - lpctool -i -e -a ./boop_rom.bin -d /dev/ diff --git a/boop/trunk/adc/Make.conf b/boop/trunk/adc/Make.conf deleted file mode 100644 index 26f9a6d..0000000 --- a/boop/trunk/adc/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := adc.c adcirq.c diff --git a/boop/trunk/adc/adc.c b/boop/trunk/adc/adc.c deleted file mode 100644 index 1b1a838..0000000 --- a/boop/trunk/adc/adc.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - adc.c - adc readout for battery status - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "irq.h" -#include "timerfuncs.h" -#include "adc.h" -#include "adcirq.h" -#include "lcd.h" -#include "fonty.h" -#include "lpc2220.h" - -extern volatile unsigned int bat_adc; -extern volatile unsigned int bmax, bmin; -extern unsigned int is_drawing; - -static unsigned short bat_max, bat_min; -static unsigned short diffs[4]; -static unsigned short diff; -volatile unsigned char bat_state; - - - -void draw_b(unsigned char x, unsigned char y) -{ - unsigned char w; - - if(!(is_drawing)) - { - if(bat_state & BAT_DEBUG) - { - draw_block(4,0,108,24,3,DRAW_ERASE); - draw_numU(4,0,bat_min>>2,0,3,DRAW_PUT); - draw_numU(32,0,bat_max>>2,0,3,DRAW_PUT); - draw_numU(4,8,(bat_max>>2)-(bat_min>>2),0,3,DRAW_PUT); - - draw_numU(60,0,bat_min,0,3,DRAW_PUT); - draw_numU(88,0,bat_max,0,3,DRAW_PUT); - draw_numU(60,8,bat_max-bat_min,0,3,DRAW_PUT); - if((bat_state & BAT_NORMAL)) - draw_string(4,16,"Bat.Operation",3,DRAW_PUT); - if((bat_state & BAT_CHARGE)) - draw_string(4,16,"Charging",3,DRAW_PUT); - if((bat_state & BAT_CHARGE_DONE)) - draw_string(4,16,"Done Charging",3,DRAW_PUT); - } - - if (bat_min<0x320) - w = 0; - else if (bat_min>0x380) - w = 12; - else - w = (bat_min-0x320)/8; - - draw_block(x+1,y+1,12,5,3,DRAW_ERASE); - draw_rect(x,y,14,7,1,3,DRAW_PUT); - draw_vline(x+14,y+2,3,3,DRAW_PUT); - - if(w>0) - draw_block(x+1,y+1,w,5,2,DRAW_PUT); - - if(w<12) - draw_block(x+1+w,y+1,12-w,5,0,DRAW_PUT); - } -} - -void calcBat(unsigned int cb) -{ - ADCR |= ((1<<21) | (1<<24)); -// ADCR |= (1<<24); /* Start A/D Conversion (START:0=1) */ - ADINTEN = 1<<5; -} - -void showBat(unsigned int cb) -{ - static int cnt; - unsigned char x; - - bat_max = bmax; - bat_min = bmin; - - cnt &= 0x03; - diffs[cnt++] = bat_max - bat_min; - - diff = 0; - for(x=0;x<4;x++) - diff += diffs[x]; - diff >>= 2; - - if(bat_state & BAT_NORMAL) - { - if(diff > 15) - { - bat_state |= BAT_CHARGE; - bat_state &= ~BAT_NORMAL; - } - } - else if(bat_state & BAT_CHARGE) - { - if(bat_max >= 1020) - { - bat_state |= BAT_CHARGE_DONE; - bat_state &= ~BAT_CHARGE; - } - } - else if(bat_state & BAT_CHARGE_DONE) - { - if(bat_max < 1000) - { - bat_state |= BAT_CHARGE; - bat_state &= ~BAT_CHARGE_DONE; - } - } - - if((diff < 7) && (bat_min < 1000)) - { - bat_state |= BAT_NORMAL; - bat_state &= ~BAT_CHARGE; - bat_state &= ~BAT_CHARGE_DONE; - } - - draw_b(113,0); - bmin = bat_max; - bmax = bat_min; -} - -void startADC(void) -{ - ADCR = ( 1<<5 | ((15-1)<<8) /*| (1UL<<16)*/ | (1UL<<21) ); - ADCR |= (1UL<<24); /* Start A/D Conversion (START:0=1) */ - while ((ADDR & (1UL<<31)) == 0); /* Wait for the conversion to complete (DONE=1)*/ - bmin = ((ADDR >> 6) & 0x03FF); /* Extract the A/D result */ - ADCR &=~(1UL<<21); - bmax = bmin; - bat_max = bmin; - bat_min = bmin; - bat_state = BAT_NORMAL; - - diffs[0] = 0; - diffs[0] = 1; - diffs[0] = 2; - diffs[0] = 3; - - VICVectAddr14 = (unsigned long)&(adcIRQ); - VICVectCntl14 = VIC_SLOT_EN | INT_SRC_ADC; - VICIntEnable = INT_ADC; - - startCB(addTimerCB(calcBat, 6)); - startCB(addTimerCB(showBat, 220)); -} diff --git a/boop/trunk/adc/adc.h b/boop/trunk/adc/adc.h deleted file mode 100644 index 1f3fe81..0000000 --- a/boop/trunk/adc/adc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - adc.h - adc readout for battery status - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef ADC_H -#define ADC_H - -#define BAT_NORMAL 0x01 -#define BAT_CHARGE 0x02 -#define BAT_CHARGE_DONE 0x04 -#define BAT_DEBUG 0x80 - - -void startADC(void); -void calcBat(unsigned int cb); -void showBat(unsigned int cb); - -#endif diff --git a/boop/trunk/adc/adcirq.c b/boop/trunk/adc/adcirq.c deleted file mode 100644 index 099b461..0000000 --- a/boop/trunk/adc/adcirq.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - adcirq.c - adc iinterrupt handler - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "irq.h" -#include "adcirq.h" -#include "adc.h" -#include "lpc2220.h" - -volatile unsigned int bat_adc; -volatile unsigned int bmax, bmin; - -void __attribute__ ((section(".text.fastcode"))) adcIRQ (void) -{ - ADINTEN = 0; - bat_adc = ADDR; - bat_adc >>= 6; - bat_adc &= 0x03FF; - if(bmax < bat_adc) - bmax = bat_adc; - if(bmin > bat_adc) - bmin = bat_adc; - ADCR &=~(1UL<<21); -} diff --git a/boop/trunk/adc/adcirq.h b/boop/trunk/adc/adcirq.h deleted file mode 100644 index c2e1027..0000000 --- a/boop/trunk/adc/adcirq.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - adcirq.c - adc iinterrupt handler - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef ADCIRQ_H -#define ADCIRQ_H - -void __attribute__ ((section(".text.fastcode"))) adcIRQ (void); - -#endif diff --git a/boop/trunk/audio/Make.conf b/boop/trunk/audio/Make.conf deleted file mode 100644 index ca8a4d0..0000000 --- a/boop/trunk/audio/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := sound.c sid.c -SRCS := soundirq.c diff --git a/boop/trunk/audio/sid.c b/boop/trunk/audio/sid.c deleted file mode 100644 index 0128d39..0000000 --- a/boop/trunk/audio/sid.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - sid.c - tone encoder routines - Copyright (C) 2008 Telekatz - - 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 3 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, see . -*/ - -#include "irq.h" -#include "sid.h" -#include "sound.h" -#include "soundirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" - -unsigned int playtone_cb; -unsigned char *playtone[3]; -unsigned char playstate; -unsigned char tonelen[3]; -unsigned short playcounter; -unsigned short playcountermax; - -const unsigned short AttackRate[16] = {19531,9766,2441,1628,1028,673,574,488,391,156,78,49,39,13,8,5}; -const unsigned short DecayReleaseRate[16] = {6510,1628,814,543,343,233,191,163,130,52,16,13,4,3,2}; - -const unsigned char song2[] = { note_d,2, note_e,2, note_f,2, note_e,2, note_d,2, note_g,2, note_f,2, note_e,2, - note_d,2, note_e,2, note_f,2, note_g,2, note_a,2, note_g,2, note_f,2, note_e,2, - note_d,2, note_e,2, note_f,2, note_e,2, note_d,2, note_g,2, note_f,2, note_e,2, - note_cis,2, note_d,2, note_e,2, note_f,2, note_g,2, note_a,2, note_f,2, note_e,2,0}; - -const unsigned char song3[] = { note_0,1, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,1,0}; - -const unsigned short notes[] = {0,4455,4720,5001,5298,5613,5947,6301,6676,7072,7493,7939,8411,0}; - - -void SIDsetfrq(unsigned char voice, unsigned short frq) { - - if (voice < voices) { - SID.reg[(voice * 7) + REG_FREQhi] = frq>>8; - SID.reg[(voice * 7) + REG_FREQlo] = frq & 0xFF; - } -} - -void SIDsetadsr(unsigned char voice,unsigned char attack, unsigned char decay, unsigned char sustain, unsigned char release) { - - if (voice < voices) { - SID.reg[(voice * 7) + REG_AttackDecay] = (attack<<4) + (decay&0x0f); - SID.reg[(voice * 7) + REG_SustainRelease] = (sustain<<4) + (release&0x0f); - } -} - -void SIDsetwave(unsigned char voice,unsigned char wave) { - - if (voice < voices) { - SID.reg[(voice * 7)+REG_Control] &= 0x0f; - SID.reg[(voice * 7)+REG_Control] |= wave; - } -} - -void SIDplaytone(unsigned int cb) { - unsigned char tone; - unsigned char x; - - switch (playstate) { - case 0x01: - playstate++; - setCBIntervall(playtone_cb,48); - for (x=0; x<3; x++) { - if (playtone[x]) { - if (!tonelen[x]) { - tone = *playtone[x]; - if (tone) { - playtone[x]++; - tonelen[x] = *playtone[x]; - playtone[x]++; - SIDsetfrq(x,notes[tone]); - SID.reg[(x*7)+REG_Control] |= GATE; - } - else { - playstate = 0x00; - playtone[0] = 0; - playtone[1] = 0; - playtone[2] = 0; - removeTimerCB(playtone_cb); - } - } - } - } - break; - case 0x02: - playstate = 0x01; - for (x=0; x<3; x++) { - if (playtone[x]) { - tonelen[x]--; - if (!tonelen[x]) - SID.reg[(x*7)+REG_Control] &= ~GATE; - } - } - setCBIntervall(playtone_cb,2); - break; - default: - playstate = 0x00; - removeTimerCB(playtone_cb); - } -} - -void SIDplaydump(unsigned int cb) { - unsigned char x; - - if (playcounter++ < playcountermax) { - for (x=0;x<14;x++) { - SID.reg[x] = *playtone[0]; - playtone[0]++; - } - } - else { - SID.reg[REG_Control] &= ~GATE; - SID.reg[7+REG_Control] &= ~GATE; - SID.reg[14+REG_Control] &= ~GATE; - playstate = 0x00; - playtone[0] =0; - removeTimerCB(playtone_cb); - } -} - -void beepEnd(unsigned int cb) { - SID.reg[REG_Control] &= ~GATE; - SID.flags |= SID_AUTO_OFF; - removeTimerCB(cb); -} - -void beep(unsigned char n) { - - - switch(n) { - case 1: - SIDsetwave(0,TRIANGLE); - SIDsetadsr(0,0,10,0,10); - SIDsetfrq(0,8411); - break; - default: - SIDsetwave(0,SAWTOOTH); - SIDsetadsr(0,1,5,10,5); - SIDsetfrq(0,5001); - break; - } - PWMPR = 0; - switchSound(SOUND_ON); - SID.flags |= SIDenable; - SID.reg[REG_Control] |= GATE; - startCB(addTimerCB(beepEnd, 20)); -} diff --git a/boop/trunk/audio/sid.h b/boop/trunk/audio/sid.h deleted file mode 100644 index e67980f..0000000 --- a/boop/trunk/audio/sid.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - sid.h - tone encoder routines - Copyright (C) 2008 Telekatz - - 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 3 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, see . -*/ - -#ifndef SID_H -#define SID_H - -// SID voice controll register bits -#define GATE (1<<0) -#define SYNC (1<<1) -#define RINGMOD (1<<2) -#define TEST (1<<3) -#define TRIANGLE (1<<4) -#define SAWTOOTH (1<<5) -#define RECTANGLE (1<<6) -#define NOISE (1<<7) - -// SID RES/FILT ( reg.23 ) -#define FILT1 (1<<0) -#define FILT2 (1<<1) -#define FILT3 (1<<2) -// SID MODE/VOL ( reg.24 ) -#define VOICE3OFF (1<<7) - -// SID registers -#define REG_FREQlo 00 -#define REG_FREQhi 01 -#define REG_PWlo 02 -#define REG_PWhi 03 -#define REG_Control 04 -#define REG_AttackDecay 05 -#define REG_SustainRelease 06 - -#define REG_FClo 21 -#define REG_FChi 22 -#define REG_ResFilt 23 -#define REG_ModeVol 24 - -#define max_sid_registers 25 -#define max_level 40000 -#define voices 3 -#define sustainstep 2666 - -//SID.flags -#define ATTACK 1 -#define SIDenable (1<<3) -#define phaseoverflow (1<<4) -#define SID_AUTO_OFF (1<<5) - - -#define note_c 1 -#define note_cis 2 -#define note_d 3 -#define note_dis 4 -#define note_e 5 -#define note_f 6 -#define note_fis 7 -#define note_g 8 -#define note_gis 9 -#define note_a 10 -#define note_ais 11 -#define note_h 12 -#define note_0 13 - -extern const unsigned char song2[]; -extern const unsigned char song3[]; -extern const unsigned char song4[]; - -extern const unsigned short notes[]; - - -const unsigned short AttackRate[16]; -const unsigned short DecayReleaseRate[16]; - -struct voice_ { - unsigned short envelope; - unsigned short phase; -}; - -struct SID_ { - struct voice_ voice[3]; - unsigned short noise; - unsigned char flags; - unsigned char reg[max_sid_registers]; - -}; - -struct SID_ SID; - -unsigned int playtone_cb; -unsigned char *playtone[3]; -unsigned char playstate; -unsigned char tonelen[3]; -unsigned short playcounter; -unsigned short playcountermax; - -void SIDsetfrq(unsigned char voice, unsigned short frq); -void SIDsetadsr(unsigned char voice,unsigned char attack, unsigned char decay, unsigned char sustain, unsigned char release); -void SIDsetwave(unsigned char voice,unsigned char wave); -void SIDplaytone(unsigned int cb); -void SIDplaydump(unsigned int cb); -void beep(unsigned char n); - -#endif diff --git a/boop/trunk/audio/sidfiles.h b/boop/trunk/audio/sidfiles.h deleted file mode 100644 index 0a4dccb..0000000 --- a/boop/trunk/audio/sidfiles.h +++ /dev/null @@ -1,1004 +0,0 @@ - -const unsigned char song1[] = { -0x00,0x00,0x00,0x00,0x20,0x11,0x70,0x00,0x00,0x00,0x00,0x20,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70 -}; diff --git a/boop/trunk/audio/sound.c b/boop/trunk/audio/sound.c deleted file mode 100644 index 310ecbc..0000000 --- a/boop/trunk/audio/sound.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - sound.c - sound core routines - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "irq.h" -#include "sound.h" -#include "soundirq.h" -#include "lpc2220.h" - -#define AUTO_OFF_TIME 0x4000 - - -extern unsigned int tval; -extern unsigned char bl_val, cmp_val; -extern unsigned int slen; -extern unsigned char *sdata; -extern volatile unsigned char sact; -extern char out1; -extern char last_sample; -extern unsigned char sound_shutdown; - -unsigned char timeout; -unsigned int auto_timeout; - -void startSoundIRQ(void) -{ - timeout = 0; - auto_timeout = 0; - out1 = 0; - - PWMTC = 0; -// PWMPR = 0; - PWMPR = 7; - PWMMR0 = 0x1E6; // pwm rate - PWMMR2 = 0x00; // pwm value - PWMLER = 0x05; - PWMMCR = 0x03; - PWMPCR = (1<<10); - PWMTCR = 0x03; - PWMTCR = 0x09; - - //VICVectAddr0 = (unsigned long)&(soundIRQ); - //VICVectCntl0 = VIC_SLOT_EN | INT_SRC_PWM; - VICIntSelect |= INT_PWM; - VICIntEnable = INT_PWM; -} - -void initSound(void) -{ - slen = 0; - sdata = 0; - sact = 0; - tval = 0; - last_sample = 0; - bl_val = 0x3F; -} - -void switchSound(unsigned char onoff) -{ - if(onoff) - { - sound_shutdown = 0; - PINSEL0 &= ~(3 << (2 * SND_PWM)); // IO - PINSEL0 |= (2 << (2 * SND_PWM)); // PWM - PINSEL0 &= ~(3 << (2 * SND_EN)); // IO - PINSEL0 &= ~(3 << (2 * SND_ON)); // IO - FIODIR0 |= (1< - - 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 3 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, see . -*/ - -#ifndef SOUND_H -#define SOUND_H - -#define SOUND_OFF 0x00 -#define SOUND_ON 0x01 - -//IO PINS on P0 -#define SND_ON 6 -#define SND_EN 11 -#define SND_PWM 7 - -void startSoundIRQ(void); - -void initSound(void); -void switchSound(unsigned char onoff); -void playSound(unsigned char *sound, unsigned long len); -void stopSound(void); -void waitSound(void); - -#endif diff --git a/boop/trunk/audio/soundirq.c b/boop/trunk/audio/soundirq.c deleted file mode 100644 index d034c08..0000000 --- a/boop/trunk/audio/soundirq.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - soundcore.c - sound core routines (output, ipol, mixing, ...) - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "irq.h" -#include "soundirq.h" -#include "sound.h" -#include "sid.h" -#include "lpc2220.h" - -#define AUTO_OFF_TIME 0x4000 - -/* -extern volatile unsigned int tval; -extern volatile unsigned char bl_val, cmp_val; -extern volatile unsigned int slen; -extern volatile unsigned char *sdata; -extern volatile unsigned char sact; -extern volatile char out1; -extern volatile char last_sample; -*/ - -unsigned int tval; -unsigned char bl_val, cmp_val; // backlight PWM -unsigned int slen; -unsigned char *sdata; -unsigned char sact; -unsigned char out1; -unsigned char last_sample; -unsigned char sound_shutdown; - -const unsigned char prevvoice[3] = {2,0,1}; - -void __attribute__ ((section(".text.fastcode"))) soundIRQ (void) -{ - PWMIR = 0x01; - - // play sample - if(sact != 0) - { - out1++; - if(out1 == 2) // quik & dirty anti-aliasing filter - { // (2 point linear interpolated 2x upsampling) - - PWMMR2 = (sdata[tval] + last_sample) >> 1; - PWMLER = 0x04; - } - else - if(out1 == 4) // prepare next sample - { - out1 = 0; - last_sample = sdata[tval]; - PWMMR2 = last_sample; - tval++; - if(tval >= slen) - { - tval = 0; - FIOCLR0 |= (1<>6; - for (x=0; x<3; x++) { - volatile unsigned char phase8; - unsigned char tempwave; - - if ((SID.reg[(x * 7) + REG_Control] & SYNC) && (SID.flags & phaseoverflow)) - SID.voice[x].phase = 0; - - - tempphase=SID.voice[x].phase + ((SID.reg[(x * 7) + REG_FREQlo] + (SID.reg[(x * 7) + REG_FREQhi]<<8))>>4); - phase8 = (SID.voice[x].phase)>>8; - - switch (SID.reg[(x * 7) + REG_Control] & 0xf0) { - case TRIANGLE: - - tempwave = phase8<<1; - if (phase8 & 0x80) - tempwave ^= 0xff; - - if ((SID.reg[(x * 7) + REG_Control] & RINGMOD) && (SID.voice[prevvoice[x]].phase & 0x8000)) - tempwave ^= 0xff; - - wave[x] = tempwave - 128; - break; - - - case SAWTOOTH: - wave[x] = phase8 - 0x80; - break; - - case RECTANGLE: - if(phase8 > ((SID.reg[(x * 7) + REG_PWlo] + (SID.reg[(x * 7) + REG_PWhi]<<8)) >> 4)) - wave[x] = 127; - else - wave[x] = -128; - break; - - case NOISE: - if(SID.voice[x].phase & 0x4000) - wave[x]=noise8; - break; - - default: - wave[x] = 0; - } - sig[x]=((SID.voice[x].envelope)>>8) * (wave[x]); - - if (SID.voice[x].phase > tempphase) - SID.flags |= phaseoverflow; - else - SID.flags &= ~phaseoverflow; - - SID.voice[x].phase=tempphase; - - if (!PWMcounter) { - signed int envelope; - if (SID.reg[(x * 7) + REG_Control] & GATE) { - if (!(SID.flags & (ATTACK<>4]; - if (envelope > max_level) { - SID.voice[x].envelope = max_level; - SID.flags |= (ATTACK<>4))) - SID.voice[x].envelope = sustainstep * (SID.reg[(x * 7) + REG_SustainRelease]>>4); - else - SID.voice[x].envelope = envelope; - } - } - else { - SID.flags &= ~(ATTACK<>8); - - autooff |= SID.voice[x].envelope; - } - - PWMMR2 = temp; - PWMLER = 0x04; - - if (!(PWMcounter--)) - PWMcounter = 29; - - temp = SID.noise; - SID.noise=SID.noise << 1; - - temp ^= SID.noise; - if ( ( temp & 0x4000 ) == 0x4000 ) - { - SID.noise |= 1; - } - - if((SID.flags & SID_AUTO_OFF) && !autooff) { - FIOCLR0 |= (1<= 63) - { - FIODIR0 |= (1<<4); // sck0/P0.4 - cmp_val -= 63; - } - else - { - FIODIR0 &= ~(1<<4); // sck0/P0.4 - } - -} diff --git a/boop/trunk/audio/soundirq.h b/boop/trunk/audio/soundirq.h deleted file mode 100644 index e988d29..0000000 --- a/boop/trunk/audio/soundirq.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - soundirq.h - sound interrupt handler - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef SOUNDIRQ_H -#define SOUNDIRQ_H - -void __attribute__ ((section(".text.fastcode"))) soundIRQ (void); - -#endif diff --git a/boop/trunk/audio/sounds.h b/boop/trunk/audio/sounds.h deleted file mode 100644 index 2fd1f10..0000000 --- a/boop/trunk/audio/sounds.h +++ /dev/null @@ -1,4417 +0,0 @@ -#define sound1_len 0x0000371C -const unsigned char sound1_data[] = { - 0x80,0x7D,0x7B,0x7A,0x7A,0x7D,0x7F,0x80,0x7E,0x7D,0x7F,0x7D,0x7C,0x7F,0x80,0x81, - 0x83,0x83,0x82,0x80,0x7F,0x7D,0x7D,0x7E,0x87,0x8D,0x90,0x92,0x81,0x77,0x6D,0x6B, - 0x72,0x7A,0x77,0x76,0x6B,0x5A,0x80,0x7F,0x73,0x8A,0x8A,0x83,0x7B,0x86,0x80,0x77, - 0x7B,0x75,0x79,0x7C,0x7F,0x7A,0x7A,0x7D,0x7F,0x7D,0x7A,0x88,0x89,0x86,0x88,0x7A, - 0x7E,0x8F,0x8B,0x8B,0xA2,0xA3,0x9A,0x9A,0x82,0x7F,0x93,0x8E,0x98,0xA7,0x97,0x94, - 0x9D,0x95,0x77,0x78,0x8A,0x8F,0x94,0x89,0x79,0x6D,0x6C,0x6B,0x66,0x75,0x7A,0x6E, - 0x6A,0x62,0x5B,0x57,0x5C,0x5E,0x5D,0x61,0x5A,0x59,0x57,0x54,0x61,0x6F,0x70,0x69, - 0x6B,0x73,0x6F,0x63,0x64,0x74,0x7F,0x7D,0x76,0x74,0x71,0x71,0x6E,0x70,0x78,0x77, - 0x79,0x78,0x77,0x7D,0x86,0xA1,0xA9,0x9A,0x8F,0x8C,0x8F,0x8E,0x8F,0x8D,0x8C,0x8D, - 0x90,0x97,0x8C,0x78,0x7B,0x89,0x8C,0x8E,0x96,0x9E,0x97,0x8F,0x89,0x84,0x8C,0x92, - 0x94,0x8D,0x88,0x81,0x7C,0x86,0x8C,0x91,0x99,0x9A,0x95,0x8E,0x8C,0x8B,0x88,0x8D, - 0x94,0x95,0x8F,0x8C,0x88,0x8C,0x93,0x99,0x9A,0x99,0x95,0x8D,0x8E,0x88,0x90,0xA3, - 0xA8,0xA3,0x93,0x87,0x84,0x80,0x80,0x86,0x84,0x7A,0x6E,0x65,0x60,0x5F,0x68,0x6E, - 0x68,0x5C,0x52,0x4B,0x4A,0x57,0x62,0x69,0x70,0x6A,0x5D,0x5C,0x5F,0x63,0x68,0x70, - 0x70,0x67,0x68,0x67,0x6B,0x77,0x78,0x70,0x6C,0x61,0x5D,0x61,0x67,0x76,0x78,0x78, - 0x73,0x70,0x74,0x7D,0x88,0x97,0x9E,0x96,0x95,0x90,0x89,0x92,0x98,0x96,0x95,0x87, - 0x7A,0x79,0x7D,0x87,0x95,0xA1,0xA1,0x96,0x8F,0x8C,0x89,0x8E,0x93,0x8D,0x89,0x86, - 0x7E,0x83,0x93,0x96,0x94,0x91,0x84,0x7D,0x7F,0x8B,0x98,0x9E,0xA2,0x99,0x8C,0x89, - 0x8C,0x90,0x9B,0x95,0x8F,0x8F,0x8C,0x92,0x9E,0xA6,0xA7,0x9E,0x8D,0x82,0x82,0x8C, - 0x98,0xA2,0xA0,0x9B,0x91,0x85,0x85,0x82,0x80,0x7C,0x6F,0x63,0x60,0x62,0x68,0x70, - 0x6C,0x66,0x5B,0x4F,0x50,0x57,0x5F,0x66,0x69,0x68,0x5F,0x5E,0x62,0x62,0x69,0x6A, - 0x66,0x63,0x6A,0x72,0x76,0x7B,0x75,0x6A,0x60,0x5A,0x5A,0x61,0x6C,0x70,0x73,0x74, - 0x73,0x7A,0x80,0x86,0x8F,0x93,0x94,0x95,0x99,0x9C,0x9E,0x9E,0x95,0x8A,0x80,0x7D, - 0x7E,0x87,0x8E,0x92,0x97,0x97,0x95,0x8E,0x8A,0x88,0x83,0x82,0x84,0x87,0x8E,0x94, - 0x99,0x9C,0x96,0x8C,0x82,0x7F,0x85,0x8D,0x9B,0xA5,0xA5,0xA4,0x9D,0x98,0x93,0x8D, - 0x8D,0x8D,0x93,0x9A,0x9F,0xA4,0xA4,0xA1,0x96,0x8D,0x89,0x8A,0x8D,0x93,0x99,0x9C, - 0xA1,0x9E,0x95,0x85,0x7C,0x76,0x78,0x7F,0x7B,0x7A,0x78,0x71,0x6D,0x65,0x5C,0x52, - 0x50,0x55,0x59,0x65,0x6A,0x6B,0x6C,0x64,0x59,0x50,0x4E,0x54,0x59,0x65,0x71,0x71, - 0x74,0x71,0x6C,0x63,0x5B,0x60,0x62,0x65,0x6C,0x71,0x75,0x70,0x6A,0x61,0x5B,0x62, - 0x6B,0x7C,0x8D,0x93,0x9D,0x9E,0x9F,0x9E,0x94,0x92,0x90,0x92,0x95,0x9B,0x9F,0x98, - 0x95,0x89,0x7F,0x7C,0x7B,0x85,0x8D,0x90,0x90,0x8C,0x88,0x82,0x7A,0x7B,0x7B,0x7D, - 0x82,0x88,0x92,0x9B,0xA0,0x98,0x8B,0x81,0x7F,0x8B,0x9B,0xA0,0xA0,0x9A,0x95,0x94, - 0x90,0x92,0x8E,0x8A,0x96,0x99,0xA0,0xA9,0xAB,0xA2,0x94,0x87,0x7D,0x83,0x8F,0x96, - 0x9B,0x96,0x8E,0x88,0x7B,0x74,0x72,0x6E,0x70,0x6B,0x6D,0x74,0x73,0x77,0x68,0x52, - 0x4D,0x4C,0x57,0x67,0x6B,0x69,0x61,0x5C,0x5A,0x54,0x55,0x55,0x5C,0x62,0x68,0x72, - 0x73,0x78,0x6A,0x5A,0x56,0x50,0x5D,0x67,0x69,0x6D,0x66,0x63,0x60,0x5B,0x5F,0x63, - 0x6D,0x7E,0x89,0x99,0xA6,0xA9,0xA5,0x93,0x88,0x85,0x8D,0x9D,0x9F,0xA4,0x99,0x8F, - 0x8C,0x7F,0x7E,0x7B,0x7C,0x85,0x84,0x8E,0x92,0x93,0x8D,0x79,0x73,0x6F,0x7B,0x88, - 0x90,0x95,0x8C,0x8D,0x8E,0x89,0x87,0x87,0x8B,0x97,0x9B,0x9E,0xA2,0x9C,0x99,0x8E, - 0x87,0x87,0x8E,0x9C,0xA3,0xA4,0xA1,0x9C,0x93,0x8A,0x88,0x84,0x8A,0x8F,0x8B,0x96, - 0x99,0x97,0x8D,0x78,0x6E,0x6A,0x73,0x7F,0x7E,0x79,0x72,0x6C,0x63,0x60,0x5A,0x58, - 0x60,0x63,0x68,0x71,0x70,0x6D,0x62,0x51,0x50,0x57,0x63,0x70,0x71,0x74,0x73,0x6C, - 0x67,0x60,0x5C,0x60,0x66,0x65,0x69,0x72,0x72,0x6F,0x5E,0x4E,0x56,0x59,0x6C,0x7B, - 0x7D,0x89,0x8A,0x8D,0x8B,0x8C,0x8E,0x94,0x9C,0x9B,0xA3,0xA6,0xA3,0x9A,0x84,0x7F, - 0x84,0x85,0x93,0x91,0x8F,0x8D,0x85,0x81,0x7A,0x7D,0x7F,0x87,0x89,0x8C,0x95,0x95, - 0x95,0x88,0x7A,0x7E,0x89,0x94,0x9E,0x9D,0x9B,0x95,0x91,0x8C,0x88,0x8B,0x91,0x99, - 0x97,0xA1,0xA6,0xA4,0x9E,0x8F,0x86,0x8B,0x97,0xA0,0x9F,0x9B,0x95,0x8C,0x88,0x83, - 0x81,0x82,0x8C,0x8C,0x8A,0x8D,0x84,0x80,0x6D,0x60,0x60,0x65,0x72,0x75,0x74,0x70, - 0x69,0x62,0x5F,0x5A,0x5B,0x60,0x66,0x66,0x6D,0x73,0x71,0x67,0x59,0x58,0x5E,0x6B, - 0x76,0x77,0x70,0x6A,0x62,0x5A,0x5D,0x5D,0x5F,0x65,0x62,0x6A,0x78,0x81,0x7C,0x6D, - 0x68,0x73,0x85,0x99,0xA5,0xA3,0xA2,0x9E,0x98,0x93,0x94,0x98,0x99,0x96,0x9A,0x9E, - 0x9F,0x96,0x86,0x79,0x74,0x81,0x86,0x8F,0x92,0x8B,0x88,0x81,0x7C,0x78,0x7E,0x88, - 0x93,0x95,0x99,0x9B,0x92,0x8B,0x83,0x81,0x85,0x93,0x9F,0xA4,0xA0,0x94,0x8B,0x82, - 0x88,0x8D,0x95,0x97,0x94,0xA1,0xA4,0xA5,0x90,0x80,0x81,0x84,0x93,0x9B,0x99,0x92, - 0x8B,0x85,0x7E,0x79,0x7C,0x7E,0x7A,0x7E,0x85,0x83,0x7E,0x6C,0x59,0x57,0x5F,0x6A, - 0x70,0x75,0x73,0x6C,0x64,0x5C,0x56,0x59,0x64,0x69,0x6C,0x76,0x7B,0x76,0x68,0x5B, - 0x57,0x60,0x6C,0x71,0x70,0x71,0x69,0x61,0x5A,0x56,0x5A,0x68,0x73,0x75,0x7F,0x84, - 0x83,0x7D,0x79,0x7D,0x8C,0x9D,0xAA,0xAF,0xA9,0x9F,0x91,0x8B,0x8D,0x92,0x98,0x8C, - 0x91,0x9B,0x9E,0x97,0x7A,0x6D,0x6E,0x7A,0x8B,0x8E,0x8A,0x8A,0x89,0x81,0x79,0x75, - 0x7B,0x89,0x8C,0x94,0x9B,0x99,0x90,0x81,0x7C,0x7E,0x8E,0x98,0xA0,0xA0,0x99,0x91, - 0x84,0x85,0x86,0x93,0x91,0x8E,0x9E,0xA3,0xA9,0x97,0x7F,0x79,0x7F,0x90,0x94,0x91, - 0x8E,0x88,0x82,0x79,0x71,0x71,0x7A,0x79,0x7C,0x82,0x7D,0x78,0x66,0x5D,0x5A,0x60, - 0x70,0x77,0x7D,0x73,0x67,0x5E,0x5B,0x5C,0x66,0x67,0x60,0x72,0x78,0x81,0x70,0x59, - 0x54,0x52,0x67,0x71,0x72,0x70,0x6B,0x62,0x5B,0x57,0x5D,0x6A,0x6A,0x77,0x7C,0x83, - 0x88,0x7B,0x79,0x7B,0x8A,0x9B,0xA6,0xAB,0xA5,0x9D,0x8A,0x84,0x85,0x90,0x99,0x91, - 0x99,0x97,0x92,0x84,0x6F,0x6C,0x70,0x83,0x8C,0x90,0x8C,0x82,0x7C,0x71,0x74,0x7B, - 0x84,0x82,0x8D,0x99,0x9A,0x93,0x7C,0x76,0x77,0x87,0x96,0x9A,0x9C,0x98,0x90,0x80, - 0x7B,0x81,0x8F,0x9B,0x9F,0xA0,0x9C,0x97,0x8D,0x80,0x7C,0x83,0x8C,0x99,0x9B,0x8F, - 0x83,0x73,0x6E,0x76,0x7B,0x7F,0x78,0x7D,0x86,0x83,0x78,0x60,0x5A,0x5D,0x6D,0x79, - 0x79,0x78,0x6F,0x68,0x61,0x5C,0x63,0x6F,0x65,0x70,0x7A,0x7B,0x7B,0x65,0x5B,0x59, - 0x62,0x6D,0x70,0x72,0x72,0x6E,0x5C,0x57,0x57,0x62,0x71,0x72,0x7B,0x7E,0x80,0x7A, - 0x73,0x75,0x7D,0x93,0x9F,0xA7,0xA9,0x9D,0x93,0x8C,0x8B,0x96,0x97,0x91,0x9C,0xA0, - 0xA0,0x8B,0x72,0x6F,0x72,0x80,0x8A,0x8C,0x8A,0x85,0x7C,0x71,0x6F,0x79,0x81,0x80, - 0x8E,0x8F,0x90,0x89,0x76,0x75,0x76,0x86,0x92,0x97,0x99,0x95,0x8B,0x7F,0x7E,0x84, - 0x94,0x97,0x9C,0xA4,0x9F,0x9A,0x86,0x7F,0x81,0x8C,0x99,0x9B,0x9A,0x92,0x87,0x7C, - 0x78,0x80,0x85,0x80,0x8A,0x8D,0x8D,0x84,0x6D,0x64,0x64,0x73,0x7C,0x7E,0x81,0x7C, - 0x70,0x65,0x60,0x63,0x73,0x79,0x7A,0x7E,0x78,0x72,0x65,0x5C,0x61,0x6A,0x77,0x7D, - 0x7B,0x77,0x69,0x5B,0x58,0x5D,0x6B,0x70,0x72,0x7C,0x7E,0x7A,0x69,0x64,0x6D,0x7A, - 0x90,0x97,0x9D,0x9F,0x96,0x8F,0x88,0x92,0x9C,0x94,0x9D,0xA5,0xA8,0xA0,0x85,0x7A, - 0x75,0x80,0x89,0x8A,0x8D,0x8C,0x83,0x70,0x6A,0x70,0x7E,0x86,0x85,0x8A,0x88,0x84, - 0x76,0x6F,0x72,0x7A,0x8D,0x92,0x96,0x96,0x89,0x81,0x79,0x81,0x8E,0x8A,0x97,0x9D, - 0xA3,0x9F,0x87,0x81,0x7E,0x8C,0x9A,0x9D,0x9F,0x9A,0x8F,0x7F,0x79,0x82,0x87,0x87, - 0x8E,0x8F,0x94,0x8E,0x75,0x6C,0x69,0x73,0x7F,0x83,0x86,0x82,0x74,0x65,0x5E,0x67, - 0x77,0x7A,0x7B,0x80,0x7D,0x78,0x6A,0x5E,0x60,0x6C,0x79,0x7D,0x80,0x7B,0x6D,0x63, - 0x5C,0x64,0x71,0x70,0x75,0x7A,0x7A,0x77,0x63,0x5F,0x67,0x70,0x81,0x85,0x8C,0x92, - 0x86,0x7C,0x7D,0x89,0x98,0x9C,0x9C,0xA1,0xA3,0x9D,0x8D,0x82,0x85,0x8D,0x93,0x8E, - 0x8C,0x8D,0x84,0x78,0x6E,0x70,0x7D,0x7D,0x7C,0x84,0x85,0x85,0x78,0x6A,0x6E,0x73, - 0x7F,0x81,0x81,0x8B,0x89,0x80,0x78,0x79,0x84,0x88,0x86,0x90,0x96,0x96,0x8F,0x7F, - 0x81,0x85,0x8E,0x96,0x93,0x99,0x99,0x8D,0x83,0x7C,0x86,0x8F,0x88,0x8E,0x92,0x91, - 0x8E,0x79,0x75,0x74,0x79,0x84,0x7D,0x82,0x83,0x7C,0x71,0x66,0x6D,0x79,0x78,0x76, - 0x7C,0x7D,0x81,0x72,0x66,0x67,0x6B,0x78,0x77,0x78,0x7A,0x79,0x70,0x64,0x65,0x70, - 0x75,0x71,0x79,0x7B,0x7E,0x76,0x64,0x66,0x69,0x76,0x7D,0x7D,0x88,0x8A,0x86,0x7B, - 0x78,0x84,0x92,0x8E,0x8F,0x98,0x99,0x9D,0x88,0x80,0x82,0x84,0x91,0x8B,0x8C,0x90, - 0x8B,0x7F,0x73,0x73,0x80,0x83,0x7D,0x87,0x89,0x8D,0x81,0x6F,0x73,0x72,0x7C,0x82, - 0x81,0x89,0x89,0x81,0x72,0x70,0x7C,0x86,0x82,0x83,0x8B,0x8F,0x8F,0x7B,0x75,0x7A, - 0x7E,0x88,0x88,0x8A,0x8E,0x8C,0x81,0x74,0x76,0x82,0x84,0x81,0x8B,0x8B,0x8E,0x85, - 0x72,0x75,0x74,0x7C,0x82,0x81,0x89,0x87,0x7F,0x72,0x6C,0x76,0x82,0x80,0x80,0x87, - 0x87,0x87,0x79,0x6F,0x72,0x77,0x81,0x80,0x83,0x88,0x84,0x7B,0x70,0x6F,0x7A,0x81, - 0x7E,0x86,0x8B,0x8B,0x84,0x73,0x74,0x75,0x7E,0x86,0x84,0x8E,0x8D,0x85,0x7B,0x74, - 0x7C,0x87,0x89,0x87,0x8D,0x8E,0x8E,0x81,0x75,0x78,0x7B,0x85,0x86,0x84,0x8A,0x86, - 0x7C,0x71,0x6D,0x76,0x80,0x7C,0x81,0x84,0x85,0x82,0x6E,0x6D,0x6F,0x76,0x7E,0x7C, - 0x83,0x85,0x80,0x74,0x6D,0x75,0x7F,0x81,0x7E,0x85,0x88,0x8A,0x81,0x72,0x77,0x79, - 0x82,0x86,0x83,0x8A,0x8A,0x84,0x78,0x73,0x7C,0x86,0x85,0x84,0x8B,0x8A,0x8C,0x7F, - 0x75,0x79,0x7B,0x85,0x85,0x86,0x8C,0x8A,0x81,0x75,0x75,0x82,0x88,0x81,0x86,0x8B, - 0x8C,0x89,0x78,0x77,0x78,0x7F,0x86,0x81,0x87,0x88,0x85,0x7B,0x71,0x76,0x81,0x84, - 0x7E,0x87,0x8B,0x8A,0x84,0x75,0x76,0x7A,0x82,0x86,0x84,0x8B,0x8C,0x86,0x7B,0x74, - 0x7A,0x88,0x86,0x85,0x8E,0x8C,0x90,0x80,0x77,0x78,0x79,0x86,0x83,0x84,0x8A,0x88, - 0x82,0x72,0x71,0x79,0x80,0x80,0x7C,0x84,0x86,0x85,0x7A,0x6F,0x72,0x75,0x80,0x81, - 0x7F,0x85,0x85,0x7C,0x73,0x70,0x7A,0x82,0x7E,0x88,0x88,0x8A,0x89,0x77,0x77,0x72, - 0x7A,0x86,0x82,0x88,0x8A,0x88,0x7D,0x72,0x79,0x81,0x88,0x85,0x87,0x8B,0x8D,0x8A, - 0x7C,0x76,0x89,0x86,0x88,0x8F,0x6D,0x80,0x8B,0x6D,0x5E,0x6A,0x7E,0x84,0x8C,0x96, - 0x95,0x94,0x92,0x92,0x92,0x8D,0x95,0x93,0x91,0x94,0x91,0x89,0x71,0x62,0x60,0x61, - 0x60,0x5D,0x62,0x63,0x6A,0x65,0x5C,0x64,0x68,0x76,0x81,0x7F,0x88,0x8D,0x8B,0x80, - 0x7D,0x86,0x91,0x9A,0xA8,0xB5,0xBB,0xBE,0xB1,0xA7,0xA1,0x9C,0xA1,0x9D,0x9B,0x9A, - 0x98,0x8A,0x76,0x71,0x71,0x7C,0x78,0x73,0x7B,0x7A,0x77,0x63,0x58,0x56,0x54,0x57, - 0x4B,0x4C,0x54,0x57,0x54,0x4D,0x50,0x5C,0x6C,0x6F,0x78,0x80,0x80,0x84,0x7B,0x79, - 0x73,0x6F,0x7A,0x82,0x8E,0x92,0x98,0x9B,0x9C,0xA8,0xAB,0xAF,0xAC,0xAC,0xB5,0xB2, - 0xB0,0xA4,0x98,0x93,0x91,0x96,0x95,0x93,0x91,0x8F,0x8E,0x87,0x7D,0x77,0x70,0x6A, - 0x63,0x5B,0x56,0x51,0x49,0x46,0x47,0x4D,0x54,0x58,0x60,0x63,0x66,0x61,0x5E,0x63, - 0x6A,0x7A,0x7D,0x84,0x8F,0x97,0x9F,0x9C,0xA0,0xA8,0xB2,0xBD,0xC3,0xC6,0xC6,0xC6, - 0xBD,0xB1,0xAA,0xA6,0xA2,0x9E,0x9A,0x94,0x90,0x85,0x7C,0x74,0x69,0x68,0x66,0x64, - 0x64,0x5F,0x59,0x4A,0x3E,0x39,0x3A,0x3E,0x3A,0x40,0x42,0x45,0x48,0x45,0x4C,0x52, - 0x5F,0x69,0x6E,0x78,0x7C,0x7C,0x7A,0x79,0x7D,0x83,0x8B,0x92,0x9C,0xA5,0xAB,0xA7, - 0xA5,0xA7,0xA7,0xAF,0xB5,0xB9,0xC2,0xC4,0xC0,0xB9,0xB2,0xB1,0xAE,0xA9,0xA4,0xA2, - 0xA1,0x9E,0x97,0x8F,0x88,0x80,0x7D,0x7A,0x71,0x6E,0x6C,0x66,0x5B,0x52,0x50,0x51, - 0x4F,0x50,0x52,0x51,0x55,0x4B,0x46,0x44,0x45,0x50,0x55,0x60,0x69,0x70,0x76,0x6F, - 0x6E,0x75,0x80,0x85,0x88,0x92,0x96,0x9D,0x9D,0x97,0x9B,0x9F,0xA7,0xAB,0xAC,0xB2, - 0xB2,0xB0,0xA5,0x9D,0xA0,0xA2,0xA2,0xA1,0xA3,0xA2,0xA2,0x98,0x8B,0x85,0x7F,0x80, - 0x7E,0x7D,0x7D,0x7F,0x7B,0x6C,0x65,0x63,0x6B,0x6B,0x6A,0x70,0x6E,0x71,0x69,0x5B, - 0x56,0x53,0x5E,0x62,0x65,0x6D,0x6F,0x70,0x67,0x62,0x63,0x6B,0x73,0x74,0x7C,0x81, - 0x85,0x83,0x7C,0x7B,0x7C,0x85,0x8D,0x90,0x97,0x9C,0x9A,0x90,0x8A,0x8B,0x92,0x96, - 0x97,0x9E,0x9F,0xA2,0x9C,0x91,0x8D,0x88,0x90,0x94,0x94,0x99,0x99,0x98,0x8D,0x84, - 0x81,0x81,0x87,0x85,0x88,0x8A,0x89,0x87,0x76,0x6F,0x69,0x6A,0x73,0x71,0x73,0x75, - 0x73,0x68,0x59,0x55,0x5A,0x61,0x65,0x6B,0x6F,0x74,0x73,0x67,0x63,0x61,0x6A,0x76, - 0x7B,0x82,0x89,0x8D,0x86,0x7A,0x76,0x7A,0x86,0x88,0x8E,0x95,0x95,0x9B,0x8F,0x87, - 0x84,0x83,0x8D,0x8F,0x95,0x98,0x9B,0x9A,0x8C,0x86,0x88,0x91,0x95,0x99,0xA0,0xA3, - 0xA8,0xA0,0x95,0x8E,0x8C,0x95,0x98,0x9A,0x9D,0x9E,0x9A,0x8B,0x81,0x79,0x7B,0x7E, - 0x7B,0x81,0x80,0x80,0x7A,0x6B,0x63,0x5C,0x60,0x62,0x63,0x66,0x67,0x6A,0x60,0x56, - 0x51,0x53,0x5A,0x5A,0x63,0x69,0x6F,0x71,0x65,0x5E,0x58,0x5A,0x61,0x65,0x6D,0x73, - 0x7C,0x79,0x6F,0x6B,0x6C,0x76,0x7A,0x80,0x8A,0x8F,0x96,0x8E,0x86,0x81,0x7F,0x88, - 0x8C,0x94,0x9A,0xA1,0xA5,0x9A,0x90,0x8B,0x91,0x96,0x98,0xA1,0xA4,0xAA,0xA6,0x9A, - 0x94,0x8E,0x91,0x95,0x99,0xA0,0xA3,0xA8,0x9F,0x93,0x8C,0x8A,0x8F,0x8F,0x96,0x9B, - 0x9C,0x9D,0x91,0x8A,0x80,0x7B,0x7E,0x7D,0x83,0x83,0x87,0x86,0x78,0x6F,0x67,0x6A, - 0x6A,0x6D,0x77,0x77,0x7C,0x75,0x6C,0x64,0x5A,0x5E,0x5E,0x64,0x69,0x6B,0x71,0x69, - 0x5F,0x56,0x56,0x5C,0x5C,0x66,0x6B,0x70,0x72,0x69,0x66,0x5E,0x5E,0x65,0x69,0x72, - 0x74,0x7D,0x7F,0x76,0x70,0x6B,0x73,0x76,0x7D,0x88,0x8B,0x94,0x8D,0x87,0x83,0x7D, - 0x85,0x87,0x91,0x97,0x9B,0xA6,0xA1,0x9A,0x90,0x90,0x97,0x97,0xA3,0xA7,0xAC,0xAF, - 0xA4,0x9E,0x91,0x90,0x94,0x95,0x9E,0x9D,0xA4,0xA6,0x9B,0x92,0x86,0x8A,0x8B,0x8E, - 0x98,0x96,0x9C,0x96,0x8C,0x86,0x79,0x7D,0x7A,0x7D,0x82,0x81,0x89,0x81,0x77,0x6D, - 0x64,0x68,0x64,0x6D,0x72,0x71,0x76,0x69,0x64,0x5A,0x54,0x5A,0x57,0x61,0x62,0x68, - 0x6E,0x66,0x61,0x55,0x56,0x5B,0x5B,0x69,0x6A,0x6F,0x70,0x67,0x67,0x5B,0x5D,0x60, - 0x62,0x6F,0x6F,0x7A,0x7A,0x74,0x6F,0x66,0x6D,0x6D,0x73,0x82,0x83,0x8E,0x89,0x86, - 0x84,0x7A,0x82,0x80,0x89,0x8F,0x91,0x9D,0x99,0x95,0x89,0x82,0x89,0x87,0x94,0x9B, - 0x9E,0xA5,0x9B,0x9D,0x94,0x8E,0x91,0x8E,0x9B,0x9B,0xA3,0xAA,0xA4,0x9F,0x91,0x90, - 0x92,0x92,0xA0,0xA1,0xA7,0xA8,0x9D,0x9D,0x8F,0x8F,0x8E,0x8D,0x97,0x94,0x9D,0x9D, - 0x96,0x8C,0x7B,0x7C,0x78,0x7B,0x86,0x83,0x8A,0x82,0x79,0x73,0x65,0x67,0x60,0x65, - 0x6C,0x6C,0x76,0x74,0x71,0x64,0x58,0x5C,0x59,0x64,0x6E,0x6F,0x78,0x6E,0x6D,0x65, - 0x5C,0x5F,0x59,0x64,0x67,0x6C,0x76,0x72,0x6F,0x60,0x59,0x5C,0x5A,0x6A,0x70,0x76, - 0x7C,0x73,0x75,0x6A,0x67,0x68,0x65,0x72,0x74,0x7E,0x85,0x85,0x83,0x74,0x73,0x74, - 0x78,0x88,0x8D,0x97,0x98,0x92,0x93,0x87,0x88,0x84,0x87,0x91,0x94,0x9F,0xA2,0xA3, - 0x9B,0x8D,0x8C,0x89,0x91,0x9F,0xA3,0xAE,0xA9,0xA5,0xA2,0x96,0x97,0x90,0x94,0x9A, - 0x9D,0xA8,0xA9,0xA8,0x9D,0x8F,0x8E,0x8B,0x94,0x9F,0xA2,0xA9,0xA2,0x9F,0x98,0x8E, - 0x8D,0x84,0x89,0x8C,0x90,0x98,0x98,0x97,0x89,0x7E,0x7C,0x77,0x80,0x86,0x8A,0x8F, - 0x86,0x83,0x7B,0x75,0x73,0x6A,0x6D,0x6D,0x73,0x7A,0x7B,0x79,0x6B,0x62,0x5E,0x5A, - 0x64,0x6B,0x70,0x73,0x6B,0x69,0x61,0x5E,0x59,0x51,0x56,0x57,0x60,0x68,0x6C,0x6B, - 0x5F,0x58,0x54,0x53,0x5F,0x66,0x6F,0x71,0x6D,0x6E,0x67,0x66,0x60,0x5B,0x61,0x64, - 0x6F,0x77,0x7E,0x7E,0x71,0x69,0x64,0x66,0x73,0x7C,0x86,0x89,0x86,0x87,0x80,0x7F, - 0x7B,0x77,0x7D,0x7F,0x8A,0x93,0x9A,0x99,0x8C,0x83,0x7E,0x7F,0x8C,0x94,0x9F,0xA0, - 0x9D,0x9D,0x96,0x96,0x91,0x8F,0x92,0x95,0xA0,0xA9,0xAF,0xAD,0xA0,0x98,0x92,0x95, - 0xA1,0xA8,0xB2,0xB0,0xAC,0xA9,0xA2,0xA0,0x98,0x96,0x95,0x96,0x9F,0xA4,0xA9,0xA3, - 0x95,0x8B,0x83,0x85,0x8F,0x96,0x9D,0x98,0x92,0x8E,0x88,0x87,0x7F,0x7C,0x7A,0x7B, - 0x84,0x89,0x8F,0x8A,0x7E,0x74,0x6B,0x6D,0x77,0x7E,0x84,0x81,0x7C,0x77,0x73,0x72, - 0x6B,0x67,0x64,0x65,0x6D,0x72,0x79,0x76,0x6B,0x60,0x56,0x56,0x60,0x68,0x6F,0x6D, - 0x69,0x66,0x62,0x63,0x5E,0x5B,0x58,0x59,0x61,0x68,0x70,0x70,0x67,0x5D,0x54,0x54, - 0x5F,0x6A,0x72,0x73,0x6F,0x6D,0x6B,0x6C,0x6A,0x67,0x65,0x65,0x6C,0x75,0x7E,0x82, - 0x7D,0x73,0x6B,0x68,0x72,0x7E,0x88,0x8B,0x85,0x83,0x80,0x83,0x82,0x7E,0x7D,0x7C, - 0x83,0x8C,0x95,0x9B,0x97,0x8E,0x84,0x80,0x89,0x95,0x9F,0xA3,0x9E,0x9C,0x97,0x9A, - 0x99,0x95,0x92,0x8E,0x92,0x98,0xA0,0xA6,0xA3,0x99,0x8E,0x86,0x8B,0x94,0x9C,0xA1, - 0x9B,0x97,0x92,0x92,0x92,0x8D,0x8A,0x83,0x84,0x89,0x90,0x98,0x97,0x90,0x85,0x7A, - 0x7C,0x85,0x8F,0x96,0x91,0x8E,0x89,0x89,0x8B,0x88,0x86,0x7F,0x7D,0x81,0x87,0x90, - 0x91,0x8B,0x81,0x74,0x72,0x7A,0x83,0x8C,0x87,0x83,0x7D,0x79,0x7D,0x7B,0x7B,0x74, - 0x6F,0x72,0x76,0x7F,0x82,0x7E,0x78,0x6B,0x67,0x6D,0x74,0x7F,0x7E,0x79,0x75,0x6F, - 0x74,0x76,0x76,0x73,0x6B,0x6B,0x6C,0x73,0x7A,0x7A,0x77,0x6D,0x64,0x6A,0x70,0x7A, - 0x7D,0x77,0x76,0x6F,0x73,0x78,0x78,0x79,0x71,0x6E,0x70,0x74,0x7E,0x82,0x80,0x7C, - 0x70,0x71,0x77,0x7C,0x86,0x81,0x80,0x7D,0x7A,0x82,0x82,0x81,0x7D,0x75,0x77,0x7B, - 0x82,0x8A,0x87,0x84,0x7A,0x73,0x7A,0x7D,0x86,0x88,0x83,0x82,0x7D,0x7F,0x83,0x80, - 0x7E,0x7A,0x76,0x7C,0x80,0x85,0x88,0x83,0x7D,0x77,0x79,0x80,0x86,0x8B,0x89,0x85, - 0x82,0x82,0x83,0x85,0x84,0x82,0x81,0x81,0x84,0x88,0x8A,0x87,0x83,0x7F,0x7F,0x85, - 0x88,0x8C,0x8B,0x89,0x87,0x85,0x84,0x85,0x85,0x84,0x83,0x81,0x82,0x84,0x84,0x83, - 0x81,0x80,0x80,0x82,0x83,0x85,0x86,0x85,0x83,0x81,0x80,0x82,0x84,0x84,0x84,0x84, - 0x83,0x84,0x84,0x84,0x83,0x83,0x83,0x83,0x83,0x85,0x86,0x87,0x86,0x85,0x85,0x85, - 0x86,0x87,0x87,0x87,0x86,0x85,0x84,0x83,0x84,0x84,0x84,0x84,0x83,0x83,0x82,0x82, - 0x81,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x81,0x80,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F,0x7E, - 0x7E,0x7E,0x7E,0x7D,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7E, - 0x7D,0x7D,0x7D,0x7F,0x81,0x81,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x80,0x80,0x7F,0x7E,0x7D,0x7D, - 0x7F,0x7F,0x7E,0x7D,0x7C,0x7C,0x7B,0x7B,0x7B,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7D, - 0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E, - 0x7E,0x7E,0x7E,0x7E,0x7D,0x7E,0x80,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x80,0x81, - 0x81,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x82,0x82,0x81,0x80,0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x82,0x81, - 0x81,0x80,0x81,0x82,0x83,0x83,0x84,0x84,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x80,0x80,0x7F,0x7E,0x7E,0x7F,0x7F,0x7E,0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x81, - 0x81,0x81,0x81,0x82,0x81,0x80,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x81,0x80,0x7F, - 0x7F,0x80,0x81,0x82,0x83,0x83,0x83,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x82, - 0x82,0x81,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x81, - 0x82,0x82,0x82,0x81,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7E,0x7E,0x7E, - 0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x80,0x81,0x80,0x80, - 0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x82,0x82, - 0x82,0x82,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x80, - 0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x81,0x82,0x81,0x81, - 0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x80,0x80, - 0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E, - 0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x82,0x82,0x81,0x81,0x80, - 0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x81,0x81,0x82, - 0x82,0x81,0x80,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x81,0x80,0x80,0x7F,0x7E, - 0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7E,0x80,0x88,0x88,0x68,0x6C,0x85,0x8E,0x7D,0x7A, - 0x95,0x75,0x6D,0x83,0x7F,0x80,0x84,0x94,0x84,0x79,0x86,0x88,0x81,0x77,0x87,0x85, - 0x76,0x73,0x77,0x7F,0x80,0x81,0x87,0x86,0x78,0x7F,0x86,0x8C,0x86,0x86,0x87,0x74, - 0x7C,0x75,0x7C,0x87,0x8B,0x8B,0x75,0x7E,0x73,0x6C,0x90,0x81,0x68,0x82,0x7A,0x6A, - 0x6A,0x72,0x82,0x76,0x77,0x79,0x77,0x7A,0x75,0x7B,0x7A,0x7A,0x82,0x8B,0x8C,0x87, - 0x8B,0x8F,0x85,0x7F,0x88,0x83,0x77,0x84,0x92,0x8F,0x90,0x99,0xA5,0x9C,0x94,0x91, - 0x81,0x7D,0x89,0x8F,0x91,0x98,0x96,0x90,0x8F,0x8F,0x8E,0x7E,0x79,0x81,0x83,0x85, - 0x86,0x84,0x80,0x76,0x6F,0x73,0x6D,0x65,0x67,0x71,0x75,0x78,0x7C,0x71,0x6B,0x6C, - 0x6E,0x77,0x6F,0x64,0x67,0x6E,0x6A,0x66,0x6E,0x6F,0x6D,0x72,0x77,0x70,0x72,0x76, - 0x67,0x5C,0x6D,0x7C,0x7A,0x77,0x7D,0x81,0x76,0x74,0x73,0x74,0x7D,0x7D,0x75,0x77, - 0x85,0x86,0x8A,0x93,0xA2,0xAE,0x9F,0x9C,0xA8,0x98,0x90,0x9A,0x97,0x9C,0x97,0x8D, - 0x8A,0x91,0x88,0x78,0x7E,0x7D,0x86,0x87,0x7E,0x86,0x86,0x80,0x79,0x83,0x91,0x86, - 0x8B,0x88,0x8A,0x97,0x86,0x89,0x93,0x99,0x95,0x90,0x8F,0x89,0x95,0x8E,0x8B,0x8C, - 0x84,0x85,0x7D,0x8F,0x90,0x87,0x91,0x87,0x9A,0x94,0x8A,0x92,0x85,0x8D,0x80,0x79, - 0x7D,0x83,0x8E,0x89,0x90,0x8F,0x8B,0x7A,0x7D,0x8C,0x83,0x86,0x7A,0x7C,0x87,0x79, - 0x78,0x70,0x6D,0x70,0x63,0x5D,0x5F,0x65,0x6A,0x65,0x69,0x66,0x5E,0x55,0x56,0x67, - 0x60,0x5F,0x62,0x66,0x73,0x61,0x5F,0x64,0x63,0x6B,0x60,0x63,0x70,0x72,0x79,0x79, - 0x7C,0x74,0x66,0x5D,0x5E,0x6E,0x6B,0x70,0x79,0x7A,0x83,0x79,0x75,0x7A,0x7C,0x7F, - 0x7D,0x89,0x9F,0xA2,0xA6,0xA6,0xA1,0x9D,0x8E,0x87,0x88,0x96,0x9C,0x97,0x9C,0x99, - 0x9B,0x94,0x80,0x7F,0x84,0x84,0x87,0x86,0x93,0x9A,0x94,0x93,0x88,0x85,0x81,0x7F, - 0x85,0x8D,0xA1,0xA7,0x9F,0x9B,0x97,0x95,0x88,0x82,0x8D,0x8C,0x94,0x94,0x91,0x9C, - 0x95,0x8B,0x84,0x88,0x8C,0x89,0x85,0x88,0x9E,0xA2,0x9B,0x8C,0x87,0x90,0x84,0x7C, - 0x88,0x8E,0x95,0x90,0x8B,0x8F,0x82,0x7A,0x73,0x76,0x7B,0x70,0x67,0x6F,0x84,0x7B, - 0x6B,0x69,0x6C,0x6A,0x59,0x59,0x6A,0x6C,0x67,0x62,0x60,0x63,0x59,0x54,0x5B,0x65, - 0x63,0x5A,0x52,0x65,0x74,0x67,0x64,0x66,0x72,0x70,0x5F,0x6A,0x79,0x78,0x6D,0x63, - 0x6D,0x6D,0x66,0x6C,0x70,0x76,0x73,0x6E,0x6B,0x7A,0x8C,0x84,0x84,0x8A,0x93,0x92, - 0x88,0x94,0xA1,0xA5,0xA3,0xA0,0xA0,0x9C,0x96,0x97,0x96,0x93,0x8E,0x8A,0x83,0x89, - 0x9A,0x8F,0x88,0x88,0x89,0x89,0x79,0x80,0x8F,0x94,0x8E,0x87,0x8C,0x89,0x82,0x8E, - 0x97,0x9B,0x98,0x91,0x90,0x83,0x94,0x9E,0x92,0x98,0x8E,0x8E,0x8D,0x82,0x8B,0x91, - 0x94,0x91,0x86,0x8E,0x88,0x82,0x8F,0x96,0x95,0x87,0x85,0x85,0x8B,0x9C,0x95,0x90, - 0x8A,0x85,0x82,0x76,0x7C,0x87,0x86,0x82,0x77,0x74,0x6D,0x62,0x6B,0x71,0x73,0x6B, - 0x66,0x5F,0x54,0x67,0x70,0x68,0x65,0x5E,0x5C,0x5B,0x54,0x5E,0x64,0x66,0x67,0x60, - 0x63,0x5D,0x5B,0x64,0x68,0x6A,0x68,0x63,0x61,0x6B,0x7E,0x79,0x6A,0x6F,0x69,0x66, - 0x60,0x68,0x78,0x78,0x75,0x72,0x75,0x73,0x76,0x7B,0x89,0x92,0x8B,0x8A,0x8B,0x8A, - 0x9E,0xB2,0xAB,0xA9,0xA2,0x9A,0x94,0x89,0x8F,0x9A,0x9A,0x97,0x91,0x8A,0x89,0x81, - 0x82,0x8C,0x8E,0x86,0x7C,0x78,0x80,0x99,0x97,0x91,0x93,0x8C,0x8C,0x85,0x84,0x98, - 0x9F,0x96,0x95,0x8E,0x92,0x89,0x86,0x98,0x99,0x96,0x8C,0x89,0x82,0x90,0xA3,0x9C, - 0x9A,0x8F,0x8B,0x8D,0x7D,0x8A,0x98,0x93,0x96,0x8C,0x88,0x88,0x7B,0x7F,0x8C,0x8C, - 0x82,0x7A,0x71,0x77,0x8D,0x86,0x7D,0x7B,0x70,0x6D,0x63,0x5D,0x6F,0x75,0x6F,0x6B, - 0x65,0x62,0x58,0x55,0x65,0x69,0x5E,0x5C,0x5A,0x4D,0x5D,0x72,0x69,0x69,0x64,0x5A, - 0x5F,0x5A,0x5C,0x6E,0x73,0x75,0x70,0x6B,0x69,0x61,0x60,0x71,0x6E,0x67,0x6A,0x60, - 0x67,0x80,0x82,0x79,0x80,0x7D,0x7A,0x73,0x77,0x90,0x9C,0x9D,0x9E,0x9E,0x9C,0x9C, - 0x99,0xA8,0xAD,0xA4,0xA0,0x9A,0x8D,0x91,0xA8,0xA3,0x9B,0x94,0x8D,0x89,0x7A,0x7B, - 0x8E,0x8F,0x88,0x8A,0x83,0x84,0x83,0x81,0x8E,0x94,0x8F,0x8B,0x85,0x83,0x98,0xA2, - 0x99,0x96,0x94,0x8E,0x8A,0x82,0x91,0xA3,0x98,0x98,0x97,0x92,0x8E,0x86,0x8E,0x9A, - 0x98,0x90,0x8D,0x86,0x84,0x9A,0x9F,0x91,0x93,0x8A,0x82,0x7E,0x75,0x85,0x8D,0x83, - 0x82,0x7B,0x78,0x77,0x6D,0x74,0x7C,0x75,0x6D,0x67,0x5C,0x65,0x7D,0x71,0x67,0x6C, - 0x64,0x5F,0x53,0x59,0x6E,0x65,0x5D,0x66,0x62,0x5F,0x5A,0x5B,0x69,0x66,0x5F,0x60, - 0x5F,0x58,0x69,0x7B,0x70,0x70,0x6C,0x68,0x67,0x61,0x67,0x77,0x71,0x6D,0x74,0x73, - 0x74,0x70,0x78,0x81,0x82,0x7D,0x82,0x82,0x83,0xA3,0xAB,0xA4,0xAA,0xA4,0x9C,0x9A, - 0x95,0xA1,0xAA,0xA1,0x9F,0x9F,0x97,0x8F,0x8A,0x8B,0x92,0x8B,0x87,0x8A,0x7D,0x7E, - 0x97,0x91,0x8B,0x92,0x88,0x86,0x83,0x81,0x8F,0x91,0x8B,0x8F,0x92,0x8F,0x8B,0x8A, - 0x95,0x98,0x92,0x95,0x93,0x85,0x8F,0xA6,0xA0,0x99,0x9F,0x94,0x8D,0x88,0x84,0x91, - 0x92,0x8F,0x94,0x92,0x8C,0x85,0x83,0x85,0x86,0x7F,0x7D,0x84,0x72,0x74,0x8C,0x82, - 0x77,0x80,0x77,0x6D,0x68,0x63,0x6E,0x70,0x66,0x68,0x71,0x68,0x5D,0x61,0x61,0x63, - 0x5F,0x5A,0x60,0x59,0x59,0x6E,0x71,0x64,0x6C,0x6E,0x5B,0x5A,0x5D,0x5C,0x65,0x63, - 0x64,0x70,0x6D,0x66,0x68,0x6B,0x6A,0x68,0x66,0x6D,0x69,0x5F,0x77,0x8A,0x74,0x78, - 0x8C,0x7F,0x79,0x7F,0x82,0x8C,0x91,0x8E,0xA0,0xAB,0x9F,0xA1,0xAD,0xA7,0x9B,0x9C, - 0x9D,0x9C,0x91,0x8E,0xA4,0xA0,0x8C,0x93,0x9A,0x86,0x7C,0x84,0x84,0x83,0x7E,0x7E, - 0x8B,0x8D,0x80,0x8A,0x95,0x8C,0x85,0x85,0x86,0x89,0x82,0x84,0x9A,0x9A,0x8A,0x97, - 0xA4,0x91,0x8C,0x98,0x95,0x92,0x8E,0x90,0x95,0x94,0x90,0x93,0x9A,0x95,0x91,0x8C, - 0x89,0x89,0x8A,0x86,0x87,0x8A,0x83,0x85,0x87,0x83,0x7E,0x80,0x81,0x77,0x76,0x7A, - 0x73,0x72,0x75,0x72,0x6F,0x6C,0x6D,0x6B,0x69,0x69,0x67,0x68,0x67,0x66,0x64,0x61, - 0x61,0x63,0x63,0x63,0x61,0x64,0x64,0x62,0x64,0x65,0x63,0x61,0x65,0x66,0x67,0x68, - 0x6A,0x6C,0x69,0x6C,0x6D,0x6E,0x70,0x72,0x74,0x77,0x7C,0x7B,0x7C,0x81,0x83,0x84, - 0x87,0x8B,0x8C,0x8E,0x91,0x92,0x93,0x93,0x95,0x96,0x95,0x95,0x95,0x98,0x96,0x94, - 0x96,0x94,0x92,0x90,0x90,0x91,0x91,0x8E,0x91,0x8D,0x8A,0x8B,0x8A,0x8B,0x89,0x89, - 0x88,0x8A,0x88,0x86,0x87,0x86,0x88,0x88,0x86,0x8A,0x89,0x86,0x8B,0x8B,0x89,0x8A, - 0x8B,0x8A,0x8A,0x8B,0x8A,0x8B,0x8A,0x8A,0x8A,0x88,0x86,0x85,0x86,0x84,0x83,0x81, - 0x7F,0x80,0x7F,0x7D,0x7F,0x80,0x7D,0x7D,0x7C,0x7A,0x7A,0x7A,0x7A,0x7A,0x79,0x79, - 0x79,0x77,0x78,0x77,0x77,0x75,0x73,0x72,0x71,0x72,0x71,0x70,0x70,0x72,0x71,0x6F, - 0x71,0x72,0x70,0x71,0x72,0x71,0x72,0x73,0x74,0x75,0x76,0x75,0x77,0x75,0x75,0x77, - 0x76,0x78,0x78,0x77,0x77,0x79,0x79,0x79,0x7B,0x7D,0x7E,0x80,0x80,0x81,0x83,0x82, - 0x86,0x87,0x88,0x8B,0x89,0x8A,0x8B,0x8C,0x8D,0x8C,0x8B,0x8B,0x89,0x88,0x88,0x86, - 0x85,0x84,0x82,0x80,0x81,0x7F,0x81,0x81,0x7E,0x7F,0x7E,0x7D,0x7D,0x7F,0x7E,0x80, - 0x80,0x80,0x80,0x7F,0x80,0x80,0x82,0x82,0x82,0x81,0x82,0x80,0x80,0x80,0x80,0x82, - 0x81,0x80,0x81,0x81,0x82,0x84,0x83,0x83,0x84,0x84,0x84,0x86,0x86,0x86,0x87,0x85, - 0x85,0x85,0x85,0x85,0x85,0x86,0x83,0x81,0x81,0x7F,0x7E,0x80,0x7E,0x7F,0x7F,0x7F, - 0x80,0x7E,0x7D,0x7F,0x7F,0x7C,0x7D,0x7C,0x7E,0x7F,0x7D,0x7F,0x80,0x7F,0x7C,0x7C, - 0x7C,0x7D,0x7D,0x7D,0x7D,0x7B,0x7A,0x7C,0x78,0x78,0x7C,0x79,0x7A,0x7A,0x7B,0x7C, - 0x7D,0x7E,0x80,0x80,0x80,0x81,0x80,0x83,0x83,0x83,0x87,0x87,0x85,0x87,0x87,0x86, - 0x86,0x87,0x87,0x86,0x84,0x84,0x84,0x82,0x84,0x85,0x84,0x84,0x83,0x83,0x84,0x83, - 0x82,0x83,0x82,0x82,0x81,0x82,0x83,0x81,0x81,0x82,0x81,0x7E,0x7F,0x7F,0x7E,0x80, - 0x7F,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7E,0x7E,0x7F,0x80,0x7F,0x82,0x81,0x81,0x81, - 0x81,0x82,0x82,0x83,0x84,0x85,0x85,0x84,0x83,0x81,0x81,0x81,0x81,0x81,0x80,0x80, - 0x80,0x7E,0x7F,0x7D,0x7D,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7F,0x80,0x81, - 0x81,0x82,0x82,0x83,0x80,0x7F,0x81,0x7D,0x7E,0x80,0x7F,0x7E,0x7E,0x7C,0x7B,0x7C, - 0x7A,0x7A,0x7C,0x7D,0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x81,0x83,0x83,0x84, - 0x84,0x83,0x84,0x83,0x82,0x83,0x83,0x83,0x84,0x84,0x82,0x82,0x81,0x81,0x81,0x81, - 0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x82,0x83,0x82,0x83,0x84,0x84,0x83,0x82, - 0x82,0x81,0x81,0x81,0x81,0x81,0x7F,0x80,0x7E,0x7E,0x7B,0x7B,0x7D,0x7B,0x7C,0x7C, - 0x7D,0x7D,0x7E,0x7D,0x7D,0x7E,0x7F,0x80,0x80,0x82,0x83,0x83,0x84,0x83,0x83,0x84, - 0x83,0x82,0x83,0x83,0x82,0x83,0x82,0x81,0x81,0x80,0x7F,0x7F,0x7D,0x7E,0x7F,0x7F, - 0x7F,0x7E,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x82,0x82,0x82,0x81,0x83,0x82,0x83,0x83, - 0x81,0x81,0x80,0x80,0x80,0x80,0x7F,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7B,0x7C,0x7D, - 0x7C,0x7C,0x7D,0x7C,0x7C,0x7E,0x7E,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x81, - 0x82,0x82,0x82,0x81,0x82,0x82,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F, - 0x7E,0x7F,0x7F,0x7F,0x81,0x80,0x7F,0x80,0x81,0x7F,0x80,0x81,0x80,0x81,0x81,0x80, - 0x80,0x82,0x80,0x80,0x7F,0x7E,0x7E,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7B,0x7B,0x7B, - 0x7B,0x7C,0x7C,0x7C,0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82, - 0x83,0x83,0x83,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x7F,0x7E,0x7E,0x7E,0x7E, - 0x7D,0x7E,0x7E,0x7D,0x7E,0x7D,0x7D,0x7E,0x7E,0x7D,0x7F,0x80,0x7F,0x80,0x82,0x80, - 0x81,0x82,0x80,0x81,0x81,0x81,0x81,0x82,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D, - 0x7D,0x7E,0x7D,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x81,0x81,0x81, - 0x82,0x81,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x82,0x82,0x82,0x81,0x82,0x81,0x81, - 0x80,0x80,0x7F,0x7F,0x7F,0x7E,0x7E,0x7D,0x7D,0x7D,0x7E,0x7E,0x7D,0x7D,0x7E,0x7E, - 0x7E,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x7F,0x80,0x81,0x80,0x80,0x81,0x81,0x80, - 0x80,0x80,0x7F,0x7F,0x7F,0x7E,0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F,0x7E,0x7F, - 0x81,0x81,0x81,0x82,0x83,0x82,0x83,0x83,0x82,0x83,0x83,0x83,0x82,0x83,0x82,0x81, - 0x82,0x82,0x81,0x82,0x82,0x81,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x7F,0x80,0x7F,0x81,0x80,0x81,0x82,0x82,0x93,0x85,0x86,0x85,0x64,0x7E,0x82,0x6B, - 0x69,0x76,0x7F,0x85,0x8A,0x8B,0x8C,0x88,0x95,0xA1,0xA0,0xA8,0x9F,0x91,0x88,0x75, - 0x88,0x91,0x6D,0x6B,0x75,0x68,0x59,0x59,0x54,0x51,0x5F,0x5E,0x5D,0x54,0x64,0x6F, - 0x6D,0x79,0x6F,0x97,0xAB,0x8C,0x95,0xA2,0x93,0xA7,0xA2,0x91,0xC3,0xA0,0xA1,0xB7, - 0x99,0xB5,0xAC,0x90,0x8E,0x8B,0x93,0x8F,0x7A,0x80,0x73,0x6C,0x7A,0x6B,0x86,0x91, - 0x6A,0x7C,0x87,0x77,0x87,0x67,0x44,0x68,0x6D,0x66,0x6C,0x59,0x50,0x59,0x60,0x62, - 0x64,0x7D,0x87,0x92,0x9D,0x92,0x89,0x8A,0x89,0x80,0x8F,0xA3,0xB3,0xB7,0x9D,0x99, - 0xB2,0xA4,0xA7,0xA4,0x8F,0x97,0x8D,0x88,0x7E,0x7E,0x81,0x6A,0x65,0x64,0x6C,0x6D, - 0x59,0x55,0x4B,0x4B,0x51,0x44,0x3D,0x40,0x47,0x3B,0x37,0x49,0x58,0x5A,0x5D,0x74, - 0x81,0x85,0xA2,0xB2,0xA0,0x9C,0x8C,0x8E,0x9F,0x9A,0x9E,0xA0,0xA2,0xBD,0xCC,0xD2, - 0xD2,0xC1,0xC5,0xC7,0xB1,0xB2,0xAA,0x89,0x81,0x7C,0x7A,0x8A,0x7F,0x6F,0x69,0x5E, - 0x5D,0x68,0x66,0x60,0x56,0x4B,0x67,0x69,0x5D,0x63,0x62,0x6E,0x6B,0x66,0x64,0x60, - 0x73,0x78,0x81,0x86,0x82,0x96,0xA0,0x9A,0xA4,0x96,0x8A,0x94,0x8B,0x9C,0x9D,0x8F, - 0x8F,0x8B,0x92,0x8E,0x91,0x94,0x87,0x97,0x94,0x91,0xA7,0x9C,0x91,0x96,0x97,0x95, - 0x91,0x8D,0x75,0x68,0x71,0x72,0x7C,0x6F,0x6B,0x81,0x82,0x7C,0x64,0x4C,0x51,0x57, - 0x63,0x6C,0x59,0x49,0x47,0x44,0x46,0x54,0x5A,0x4C,0x49,0x47,0x4A,0x4A,0x4E,0x5B, - 0x63,0x7F,0x92,0x94,0x88,0x72,0x7E,0x93,0x8E,0x9B,0xA2,0xA0,0xA9,0x8F,0x7E,0x84, - 0x80,0x7F,0xA2,0xBB,0xA8,0xA6,0xB1,0xB7,0xBC,0xB1,0xB7,0xBC,0xB9,0xB9,0xAD,0xA2, - 0x99,0x8D,0x94,0xAC,0xAF,0x9F,0x8C,0x80,0x80,0x82,0x8A,0x83,0x7D,0x83,0x92,0x7D, - 0x6E,0x6C,0x5C,0x6B,0x65,0x61,0x64,0x5E,0x5F,0x61,0x65,0x5E,0x60,0x6B,0x66,0x67, - 0x79,0x60,0x52,0x60,0x51,0x59,0x5E,0x59,0x66,0x70,0x72,0x70,0x72,0x70,0x78,0x73, - 0x79,0x81,0x83,0x87,0x8D,0x98,0x9A,0xA1,0x99,0x91,0x9D,0x9E,0x8F,0x8B,0x90,0x8D, - 0x8B,0x7C,0x80,0x95,0x8D,0x87,0x84,0x7F,0x76,0x73,0x71,0x65,0x73,0x78,0x78,0x8C, - 0x90,0x8F,0x97,0x95,0x88,0x83,0x78,0x6A,0x6C,0x69,0x6C,0x79,0x81,0x70,0x69,0x70, - 0x6A,0x73,0x79,0x6B,0x6B,0x74,0x78,0x78,0x7B,0x7C,0x76,0x7E,0x7A,0x77,0x8C,0x8B, - 0x8C,0x84,0x80,0x92,0x8F,0x90,0x93,0x8F,0x8B,0x87,0x91,0x91,0x91,0xAB,0xAD,0x9B, - 0x9F,0xAC,0xA7,0xA0,0x99,0x93,0xAF,0xBC,0xB2,0xB7,0xAA,0xA4,0xA9,0xAC,0xAA,0x97, - 0x8E,0x96,0x99,0x91,0x84,0x90,0x95,0x84,0x7D,0x74,0x6D,0x53,0x43,0x45,0x41,0x49, - 0x49,0x51,0x60,0x67,0x60,0x59,0x58,0x49,0x4F,0x55,0x53,0x51,0x50,0x57,0x51,0x46, - 0x43,0x4F,0x54,0x52,0x5E,0x5C,0x5A,0x63,0x5A,0x64,0x71,0x6B,0x7B,0x90,0x9E,0xA7, - 0xA2,0xA6,0x9F,0x9D,0xA9,0xAE,0xB2,0xAC,0xAB,0xAD,0xA4,0x9B,0x99,0xA0,0xA4,0x8E, - 0x8E,0x93,0x7F,0x88,0x8E,0x83,0x87,0x84,0x89,0xA2,0x9E,0x86,0x8B,0x8E,0x8C,0xA1, - 0x9F,0x96,0x99,0x90,0x9F,0xAC,0x9E,0x94,0x8E,0x95,0x95,0x87,0x88,0x89,0x81,0x80, - 0x81,0x86,0x85,0x83,0x81,0x88,0x89,0x82,0x86,0x85,0x82,0x76,0x6F,0x76,0x6D,0x77, - 0x91,0x87,0x7A,0x64,0x70,0x8A,0x75,0x6B,0x5E,0x4D,0x49,0x54,0x5F,0x5C,0x5F,0x58, - 0x59,0x69,0x67,0x5B,0x5B,0x58,0x5E,0x5F,0x5C,0x6C,0x6D,0x69,0x6C,0x72,0x74,0x70, - 0x81,0x8C,0x7A,0x75,0x7E,0x7A,0x7B,0x82,0x84,0x84,0x89,0x90,0x99,0xA9,0xA5,0xAB, - 0xB8,0xB6,0xB6,0xAF,0xA8,0xAB,0xA7,0xA5,0xA5,0x99,0x8B,0x87,0x9D,0xAC,0x99,0x93, - 0x98,0x89,0x80,0x83,0x82,0x7B,0x79,0x7C,0x88,0x86,0x75,0x75,0x7B,0x80,0x7C,0x73, - 0x7B,0x8D,0x89,0x87,0x81,0x6E,0x72,0x70,0x78,0x7D,0x63,0x6A,0x77,0x72,0x6F,0x68, - 0x63,0x6C,0x72,0x6D,0x7E,0x7C,0x64,0x69,0x73,0x78,0x7C,0x74,0x7B,0x86,0x7C,0x83, - 0x84,0x72,0x6A,0x6D,0x7C,0x78,0x6D,0x73,0x70,0x6A,0x69,0x69,0x6C,0x74,0x72,0x71, - 0x75,0x6C,0x65,0x6D,0x7B,0x7D,0x6E,0x6C,0x77,0x79,0x7E,0x83,0x7D,0x76,0x73,0x78, - 0x89,0x80,0x6F,0x78,0x80,0x83,0x84,0x84,0x89,0x8D,0x94,0x9D,0xAC,0xAD,0xA6,0xAE, - 0xB3,0xB8,0xAB,0xA3,0xB5,0xB5,0xA9,0xAB,0xAA,0xA5,0x9A,0x95,0xA0,0x90,0x7F,0x88, - 0x85,0x7A,0x74,0x72,0x7C,0x7E,0x77,0x80,0x87,0x80,0x79,0x73,0x75,0x77,0x6F,0x67, - 0x76,0x7B,0x6F,0x74,0x74,0x79,0x7B,0x7C,0x89,0x7E,0x74,0x7D,0x82,0x6E,0x65,0x6A, - 0x6E,0x74,0x70,0x73,0x7F,0x7B,0x7B,0x85,0x81,0x7A,0x6D,0x67,0x72,0x72,0x6C,0x67, - 0x61,0x63,0x67,0x70,0x7C,0x71,0x6B,0x7C,0x79,0x66,0x59,0x5F,0x67,0x64,0x69,0x75, - 0x7D,0x76,0x7A,0x7C,0x6E,0x69,0x60,0x66,0x71,0x68,0x6C,0x69,0x61,0x6B,0x6F,0x82, - 0x8C,0x76,0x7B,0x8D,0x85,0x77,0x76,0x7D,0x87,0x8F,0x90,0x9E,0xA5,0xA8,0xB6,0xBB, - 0xB7,0xAF,0xAE,0xB6,0xBE,0xB4,0xAA,0xAE,0xAB,0xA2,0xA5,0xBA,0xAC,0x9D,0xA6,0xA1, - 0x9A,0x8C,0x8B,0x91,0x84,0x82,0x90,0x90,0x8B,0x8B,0x89,0x87,0x83,0x7C,0x7C,0x88, - 0x86,0x81,0x87,0x8A,0x87,0x7B,0x89,0x96,0x81,0x88,0x92,0x86,0x79,0x73,0x83,0x80, - 0x77,0x83,0x88,0x85,0x7B,0x7B,0x78,0x70,0x6C,0x5F,0x6B,0x70,0x66,0x68,0x68,0x68, - 0x5C,0x6D,0x7E,0x70,0x5F,0x5B,0x66,0x67,0x4C,0x43,0x6E,0x51,0x3A,0x5C,0x57,0x55, - 0x5A,0x6B,0x63,0x45,0x49,0x59,0x58,0x49,0x54,0x53,0x44,0x42,0x57,0x71,0x68,0x6A, - 0x7B,0x7A,0x62,0x5D,0x68,0x6E,0x6E,0x77,0x8A,0x8B,0x8F,0x94,0x9C,0xA9,0xAB,0xAC, - 0xAC,0xB2,0xBC,0xB9,0xB7,0xB4,0xA9,0xB2,0xC8,0xBC,0xB0,0xBA,0xAF,0xA6,0xA1,0x94, - 0x9D,0x98,0x86,0x94,0xA1,0x97,0x8D,0x8C,0x90,0x97,0x95,0x8A,0x8A,0x90,0x96,0x99, - 0x9C,0x9C,0x98,0xB1,0xB4,0xAD,0xB4,0xAE,0xA8,0x9B,0x95,0x9A,0x95,0x8B,0x98,0xA1, - 0x95,0x96,0x93,0x90,0x93,0x84,0x81,0x85,0x7D,0x7D,0x75,0x77,0x75,0x68,0x80,0x84, - 0x77,0x7E,0x7F,0x79,0x6E,0x65,0x62,0x61,0x55,0x56,0x64,0x60,0x56,0x51,0x54,0x60, - 0x58,0x4C,0x4C,0x49,0x46,0x40,0x40,0x42,0x3A,0x51,0x60,0x4D,0x54,0x54,0x4F,0x57, - 0x4B,0x4C,0x57,0x48,0x48,0x59,0x5C,0x64,0x68,0x66,0x72,0x84,0x89,0x83,0x82,0x8A, - 0x90,0x8E,0x96,0x93,0x90,0xA1,0x9C,0x94,0x99,0x97,0x92,0x96,0x92,0x90,0x96,0x8A, - 0x83,0x8D,0x8D,0x8D,0x8C,0x83,0x87,0x88,0x89,0x8A,0x85,0x8B,0x8D,0x8F,0x99,0x92, - 0x98,0xA9,0xA0,0xA2,0xAB,0xA7,0xA7,0xA8,0xA2,0xAA,0xA8,0x96,0x9D,0xA1,0xA2,0xB0, - 0xA6,0xA3,0xAA,0xA0,0xA4,0xA3,0x99,0x9A,0x8E,0x92,0x98,0x87,0x95,0x9A,0x8D,0x96, - 0x94,0x93,0x92,0x83,0x82,0x83,0x72,0x70,0x76,0x74,0x78,0x74,0x71,0x76,0x6D,0x66, - 0x67,0x60,0x5E,0x56,0x51,0x58,0x4A,0x53,0x6E,0x64,0x65,0x6F,0x6B,0x70,0x64,0x60, - 0x70,0x67,0x5D,0x6C,0x72,0x73,0x75,0x76,0x86,0x8B,0x83,0x8B,0x8D,0x87,0x88,0x8B, - 0x90,0x86,0x86,0x9B,0x95,0x94,0x9D,0x8F,0x87,0x79,0x72,0x7F,0x6F,0x60,0x6A,0x70, - 0x72,0x72,0x70,0x7D,0x7B,0x6F,0x79,0x74,0x6C,0x6D,0x70,0x7A,0x71,0x76,0x8C,0x81, - 0x84,0x96,0x92,0x8D,0x83,0x81,0x8D,0x82,0x7A,0x87,0x84,0x87,0x91,0x92,0x95,0x8D, - 0x88,0x8F,0x88,0x81,0x7E,0x80,0x84,0x77,0x82,0x94,0x84,0x87,0x95,0x90,0x8A,0x7E, - 0x79,0x7B,0x6E,0x6D,0x7B,0x78,0x71,0x73,0x7B,0x7E,0x74,0x71,0x73,0x68,0x62,0x61, - 0x60,0x60,0x55,0x61,0x78,0x66,0x68,0x78,0x6F,0x66,0x5F,0x67,0x6A,0x5B,0x65,0x76, - 0x6F,0x71,0x80,0x88,0x8C,0x84,0x8B,0x93,0x8A,0x8E,0x94,0x93,0x98,0x93,0xA2,0xBB, - 0xA6,0xA2,0xB7,0xAB,0xA1,0x9D,0x9A,0x96,0x82,0x83,0x90,0x81,0x7B,0x84,0x89,0x88, - 0x7F,0x80,0x7E,0x70,0x73,0x79,0x74,0x74,0x6E,0x76,0x93,0x83,0x7F,0x9C,0x90,0x86, - 0x8D,0x8C,0x85,0x79,0x7F,0x8D,0x87,0x82,0x91,0x96,0x91,0x97,0x9B,0x96,0x86,0x85, - 0x8B,0x82,0x82,0x82,0x77,0x8E,0x92,0x7F,0x95,0x92,0x83,0x85,0x7D,0x7A,0x70,0x6C, - 0x7A,0x76,0x6B,0x78,0x80,0x7B,0x7D,0x7F,0x7A,0x71,0x6B,0x6F,0x68,0x64,0x6D,0x62, - 0x67,0x7E,0x6C,0x72,0x85,0x74,0x72,0x75,0x6F,0x6D,0x62,0x66,0x76,0x70,0x71,0x82, - 0x88,0x85,0x8C,0x92,0x8C,0x8A,0x8B,0x89,0x84,0x89,0x90,0x84,0x92,0xA0,0x8B,0x99, - 0xA5,0x90,0x8C,0x91,0x89,0x7E,0x79,0x80,0x80,0x76,0x7A,0x82,0x7D,0x80,0x89,0x82, - 0x79,0x79,0x79,0x72,0x6C,0x75,0x76,0x6A,0x7E,0x8B,0x76,0x83,0x95,0x82,0x7D,0x88, - 0x82,0x75,0x74,0x7E,0x7D,0x73,0x7E,0x8C,0x84,0x89,0x94,0x8C,0x85,0x86,0x85,0x7F, - 0x7D,0x7D,0x80,0x77,0x7F,0x97,0x7D,0x7C,0x99,0x88,0x7A,0x8A,0x85,0x72,0x74,0x7C, - 0x79,0x72,0x7B,0x82,0x7B,0x7D,0x89,0x83,0x7C,0x84,0x82,0x77,0x78,0x79,0x7A,0x75, - 0x73,0x8B,0x81,0x71,0x8F,0x88,0x70,0x7F,0x81,0x6F,0x73,0x7A,0x75,0x71,0x78,0x7F, - 0x7B,0x7E,0x8A,0x87,0x80,0x8C,0x8C,0x83,0x85,0x88,0x86,0x8A,0x84,0x85,0x9A,0x89, - 0x87,0x9E,0x8A,0x82,0x96,0x88,0x7A,0x82,0x7D,0x78,0x7B,0x7C,0x7E,0x7C,0x7F,0x83, - 0x7E,0x7F,0x83,0x7A,0x77,0x7C,0x7C,0x79,0x7B,0x76,0x6F,0x87,0x83,0x74,0x8A,0x86, - 0x76,0x86,0x85,0x74,0x7C,0x7E,0x78,0x79,0x7D,0x81,0x7D,0x7D,0x88,0x86,0x81,0x8A, - 0x8A,0x82,0x85,0x84,0x80,0x83,0x84,0x7D,0x77,0x89,0x84,0x77,0x8D,0x88,0x75,0x80, - 0x84,0x72,0x76,0x7E,0x71,0x6F,0x7A,0x79,0x75,0x7A,0x7E,0x7D,0x7C,0x82,0x81,0x7E, - 0x80,0x7F,0x7D,0x7F,0x7E,0x7C,0x77,0x80,0x86,0x7A,0x86,0x8D,0x7E,0x7F,0x88,0x7A, - 0x78,0x81,0x7B,0x78,0x80,0x7F,0x7C,0x82,0x86,0x86,0x88,0x8B,0x89,0x8A,0x8D,0x8A, - 0x87,0x87,0x84,0x83,0x86,0x80,0x80,0x8A,0x84,0x83,0x8E,0x85,0x81,0x86,0x7E,0x79, - 0x7B,0x79,0x76,0x7A,0x7C,0x78,0x7C,0x80,0x7E,0x7E,0x84,0x82,0x80,0x83,0x81,0x7D, - 0x7E,0x7F,0x79,0x7B,0x85,0x7E,0x7F,0x8B,0x84,0x7F,0x87,0x81,0x76,0x7B,0x7C,0x79, - 0x7C,0x7F,0x7D,0x81,0x84,0x83,0x86,0x87,0x86,0x88,0x8A,0x87,0x85,0x85,0x83,0x82, - 0x82,0x83,0x82,0x7F,0x81,0x82,0x7F,0x7F,0x7C,0x79,0x7A,0x7B,0x79,0x79,0x7A,0x7B, - 0x7E,0x7F,0x7F,0x80,0x82,0x84,0x84,0x84,0x84,0x83,0x83,0x83,0x83,0x85,0x83,0x81, - 0x85,0x86,0x83,0x84,0x85,0x82,0x82,0x83,0x7F,0x7D,0x7E,0x7F,0x7F,0x81,0x80,0x7F, - 0x82,0x82,0x82,0x82,0x82,0x81,0x83,0x83,0x82,0x81,0x81,0x80,0x81,0x81,0x7F,0x7E, - 0x7E,0x7D,0x7D,0x7E,0x7E,0x7D,0x7B,0x7B,0x7A,0x77,0x77,0x7A,0x79,0x7A,0x7B,0x7B, - 0x7B,0x7C,0x7F,0x80,0x7F,0x80,0x82,0x81,0x81,0x82,0x81,0x81,0x80,0x82,0x80,0x80, - 0x82,0x81,0x81,0x81,0x81,0x81,0x80,0x7F,0x80,0x80,0x7F,0x7E,0x7F,0x80,0x80,0x80, - 0x80,0x80,0x81,0x81,0x80,0x80,0x82,0x82,0x82,0x82,0x7F,0x7F,0x7F,0x81,0x80,0x7E, - 0x7F,0x7F,0x7D,0x7C,0x7D,0x7E,0x7E,0x7E,0x80,0x7F,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F, - 0x80,0x7F,0x7D,0x80,0x82,0x81,0x7F,0x7F,0x7F,0x80,0x84,0x83,0x7F,0x80,0x85,0x84, - 0x82,0x81,0x7F,0x81,0x83,0x80,0x7C,0x7A,0x7B,0x7F,0x7F,0x7D,0x7E,0x7F,0x80,0x7C, - 0x7B,0x7D,0x7E,0x7F,0x7F,0x82,0x82,0x7D,0x80,0x83,0x82,0x83,0x7F,0x80,0x83,0x80, - 0x7D,0x7F,0x80,0x7D,0x7F,0x7D,0x7F,0x7F,0x80,0x82,0x83,0x80,0x7D,0x7B,0x77,0x79, - 0x7A,0x7D,0x7D,0x7E,0x7F,0x7C,0x7F,0x82,0x7F,0x82,0x86,0x84,0x82,0x84,0x8B,0x85, - 0x83,0x86,0x89,0x81,0x7F,0x85,0x81,0x80,0x82,0x82,0x82,0x83,0x81,0x80,0x83,0x7F, - 0x7C,0x7C,0x7C,0x7B,0x74,0x7B,0x81,0x7B,0x7F,0x80,0x7D,0x7E,0x7E,0x7F,0x81,0x80, - 0x7B,0x82,0x82,0x83,0x85,0x84,0x87,0x84,0x84,0x84,0x83,0x7F,0x84,0x88,0x83,0x86, - 0x85,0x81,0x85,0x86,0x82,0x80,0x83,0x82,0x7D,0x81,0x85,0x7F,0x83,0x86,0x7E,0x7F, - 0x81,0x7D,0x7E,0x82,0x7D,0x7F,0x81,0x7B,0x7A,0x7F,0x80,0x7E,0x80,0x7F,0x7F,0x7E, - 0x7C,0x81,0x80,0x82,0x84,0x83,0x80,0x80,0x81,0x80,0x82,0x81,0x7D,0x7E,0x80,0x81, - 0x82,0x87,0x83,0x7D,0x81,0x7C,0x7D,0x7F,0x81,0x7F,0x80,0x80,0x81,0x86,0x81,0x83, - 0x82,0x7F,0x7E,0x7D,0x82,0x82,0x82,0x82,0x81,0x81,0x82,0x84,0x80,0x82,0x81,0x7E, - 0x81,0x7D,0x7E,0x7F,0x7F,0x82,0x7E,0x7F,0x80,0x7E,0x7C,0x7E,0x7E,0x7E,0x7E,0x80, - 0x83,0x82,0x81,0x81,0x80,0x7F,0x83,0x81,0x84,0x85,0x81,0x83,0x86,0x82,0x83,0x85, - 0x83,0x83,0x83,0x83,0x81,0x85,0x85,0x81,0x83,0x83,0x7D,0x7D,0x80,0x7D,0x7E,0x80, - 0x7C,0x7D,0x7F,0x80,0x7F,0x7B,0x7C,0x7F,0x7C,0x7D,0x7D,0x7E,0x7E,0x80,0x7E,0x80, - 0x7F,0x7E,0x81,0x82,0x83,0x80,0x80,0x80,0x7E,0x7C,0x7F,0x7F,0x7D,0x82,0x81,0x7D, - 0x82,0x81,0x80,0x83,0x7F,0x81,0x80,0x82,0x80,0x7F,0x81,0x7F,0x83,0x80,0x82,0x86, - 0x80,0x83,0x83,0x81,0x84,0x85,0x84,0x82,0x81,0x81,0x7F,0x82,0x80,0x82,0x83,0x83, - 0x84,0x80,0x84,0x83,0x7D,0x80,0x7D,0x7C,0x7E,0x80,0x81,0x7D,0x7D,0x82,0x7F,0x7C, - 0x80,0x80,0x7E,0x80,0x7E,0x7C,0x7E,0x7E,0x7E,0x7E,0x80,0x81,0x81,0x81,0x81,0x83, - 0x84,0x86,0x83,0x81,0x85,0x83,0x81,0x80,0x82,0x84,0x7F,0x82,0x81,0x7E,0x82,0x80, - 0x7E,0x7C,0x7C,0x80,0x7E,0x7E,0x7F,0x7E,0x80,0x81,0x7C,0x7D,0x80,0x7C,0x7F,0x7F, - 0x7F,0x82,0x83,0x85,0x82,0x82,0x84,0x84,0x82,0x80,0x84,0x80,0x80,0x83,0x80,0x80, - 0x80,0x81,0x80,0x7F,0x81,0x7E,0x7E,0x80,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x7C,0x7A, - 0x7F,0x80,0x80,0x7F,0x81,0x81,0x80,0x80,0x7D,0x80,0x81,0x82,0x82,0x81,0x81,0x83, - 0x81,0x81,0x82,0x80,0x80,0x80,0x81,0x82,0x81,0x81,0x82,0x80,0x80,0x80,0x7E,0x81, - 0x7F,0x7C,0x7D,0x7B,0x7D,0x7C,0x7F,0x7F,0x7D,0x81,0x81,0x80,0x82,0x7F,0x7E,0x7F, - 0x7F,0x7F,0x80,0x82,0x7F,0x82,0x82,0x82,0x83,0x81,0x81,0x80,0x80,0x81,0x7F,0x7E, - 0x80,0x80,0x83,0x82,0x81,0x82,0x81,0x7D,0x7E,0x7E,0x7D,0x7E,0x7E,0x7F,0x7E,0x7F, - 0x80,0x7F,0x7E,0x7B,0x7F,0x80,0x7E,0x7F,0x80,0x81,0x7E,0x7F,0x7F,0x7F,0x81,0x82, - 0x81,0x7F,0x81,0x84,0x82,0x82,0x81,0x81,0x83,0x80,0x7F,0x7D,0x7F,0x80,0x7C,0x7E, - 0x7E,0x7F,0x82,0x80,0x7F,0x80,0x7E,0x80,0x7F,0x7D,0x7D,0x80,0x80,0x7E,0x80,0x82, - 0x81,0x80,0x83,0x82,0x7F,0x81,0x83,0x7E,0x80,0x83,0x7D,0x81,0x83,0x7F,0x81,0x82, - 0x81,0x82,0x82,0x81,0x7F,0x82,0x83,0x80,0x7E,0x80,0x80,0x7D,0x80,0x7F,0x7E,0x7F, - 0x80,0x81,0x81,0x81,0x81,0x80,0x7E,0x7E,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7F, - 0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x7E,0x81,0x81,0x7D,0x7E,0x7F,0x7C,0x7C,0x7F, - 0x7E,0x7D,0x7E,0x7D,0x7D,0x80,0x7E,0x7F,0x81,0x7F,0x81,0x81,0x81,0x7E,0x81,0x82, - 0x7F,0x83,0x80,0x81,0x83,0x80,0x81,0x84,0x83,0x83,0x81,0x82,0x82,0x80,0x81,0x80, - 0x80,0x82,0x80,0x80,0x83,0x81,0x7D,0x7F,0x7F,0x7D,0x80,0x82,0x7C,0x7F,0x80,0x7B, - 0x7E,0x81,0x7F,0x7E,0x7F,0x7F,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x82,0x82,0x81, - 0x7F,0x81,0x80,0x7D,0x7F,0x81,0x80,0x7F,0x82,0x7F,0x7F,0x82,0x81,0x7E,0x80,0x81, - 0x7C,0x81,0x7E,0x7F,0x80,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7D,0x80,0x7F, - 0x7F,0x7F,0x80,0x82,0x81,0x80,0x7F,0x81,0x7F,0x7F,0x81,0x7F,0x7E,0x80,0x7F,0x7E, - 0x7F,0x7F,0x81,0x80,0x7E,0x81,0x81,0x7F,0x81,0x80,0x7F,0x81,0x81,0x7F,0x82,0x81, - 0x81,0x83,0x80,0x81,0x82,0x81,0x81,0x81,0x80,0x80,0x81,0x81,0x80,0x7F,0x82,0x81, - 0x81,0x83,0x81,0x82,0x82,0x81,0x7F,0x81,0x81,0x81,0x81,0x80,0x81,0x7F,0x80,0x7F, - 0x7F,0x7F,0x7F,0x7E,0x80,0x80,0x7F,0x81,0x81,0x82,0x82,0x7E,0x7E,0x80,0x7E,0x80, - 0x81,0x81,0x81,0x80,0x83,0x81,0x80,0x81,0x82,0x7F,0x82,0x82,0x7E,0x81,0x7F,0x7F, - 0x80,0x81,0x7E,0x7E,0x81,0x7F,0x83,0x81,0x81,0x81,0x80,0x82,0x80,0x80,0x81,0x7E, - 0x80,0x85,0x7F,0x80,0x84,0x81,0x82,0x83,0x82,0x81,0x82,0x81,0x81,0x83,0x82,0x81, - 0x83,0x87,0x8F,0x80,0x68,0x7A,0x8B,0x8B,0x76,0x87,0x8C,0x6C,0x7C,0x82,0x7D,0x81, - 0x8B,0x90,0x7E,0x81,0x89,0x86,0x79,0x7B,0x8B,0x7C,0x71,0x75,0x7D,0x83,0x81,0x82, - 0x89,0x7C,0x72,0x7C,0x76,0x79,0x7C,0x7F,0x81,0x84,0x85,0x81,0x88,0x89,0x8C,0x89, - 0x81,0x85,0x86,0x85,0x87,0x81,0x81,0x85,0x7E,0x7F,0x85,0x81,0x7C,0x81,0x7A,0x7A, - 0x83,0x7B,0x7A,0x7B,0x7A,0x78,0x77,0x7B,0x81,0x88,0x86,0x7B,0x7B,0x85,0x84,0x82, - 0x8D,0x89,0x81,0x84,0x86,0x83,0x80,0x85,0x85,0x81,0x80,0x7F,0x7F,0x83,0x86,0x7E, - 0x78,0x7B,0x7E,0x7A,0x7A,0x80,0x7A,0x79,0x7C,0x7F,0x80,0x7C,0x78,0x7C,0x80,0x79, - 0x7D,0x7E,0x84,0x89,0x84,0x82,0x7E,0x7F,0x83,0x86,0x88,0x86,0x7F,0x80,0x86,0x85, - 0x85,0x84,0x81,0x7E,0x79,0x7C,0x7D,0x7C,0x80,0x7F,0x7A,0x7A,0x7D,0x7E,0x81,0x80, - 0x7F,0x7F,0x7A,0x7E,0x83,0x81,0x81,0x7F,0x80,0x81,0x82,0x83,0x7F,0x7F,0x82,0x81, - 0x80,0x84,0x82,0x84,0x83,0x81,0x80,0x7E,0x80,0x80,0x80,0x7C,0x7C,0x7F,0x81,0x80, - 0x7F,0x82,0x83,0x82,0x7F,0x7C,0x7B,0x7A,0x7C,0x7F,0x7F,0x7D,0x7C,0x7F,0x80,0x80, - 0x7E,0x82,0x84,0x7E,0x7C,0x7E,0x81,0x7F,0x7C,0x7F,0x81,0x81,0x81,0x80,0x84,0x86, - 0x82,0x80,0x7C,0x7C,0x7D,0x7C,0x7D,0x7B,0x7B,0x7B,0x7E,0x7F,0x7F,0x82,0x83,0x81, - 0x82,0x83,0x81,0x81,0x81,0x7F,0x80,0x81,0x83,0x81,0x84,0x86,0x82,0x81,0x7F,0x80, - 0x81,0x7F,0x7E,0x7E,0x7E,0x7C,0x7C,0x80,0x81,0x82,0x81,0x81,0x83,0x7E,0x7E,0x80, - 0x81,0x80,0x80,0x82,0x82,0x80,0x81,0x80,0x81,0x80,0x80,0x7E,0x7F,0x7F,0x7D,0x7E, - 0x7E,0x7E,0x7F,0x7F,0x80,0x82,0x80,0x7D,0x7D,0x7E,0x7F,0x7F,0x7E,0x7E,0x80,0x80, - 0x7F,0x7F,0x81,0x83,0x7F,0x7F,0x7F,0x7D,0x7E,0x7F,0x82,0x82,0x83,0x82,0x80,0x80, - 0x82,0x82,0x80,0x81,0x82,0x7F,0x7E,0x80,0x80,0x80,0x81,0x82,0x80,0x80,0x81,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x82,0x80,0x7E,0x81,0x81,0x80,0x80,0x81,0x7F, - 0x7E,0x80,0x7E,0x80,0x82,0x82,0x82,0x80,0x7E,0x7F,0x82,0x80,0x7C,0x7F,0x7E,0x7F, - 0x80,0x7E,0x7E,0x7F,0x81,0x81,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x7F,0x80,0x81,0x81, - 0x81,0x83,0x80,0x7F,0x80,0x7E,0x81,0x80,0x81,0x7F,0x7D,0x80,0x7F,0x81,0x82,0x81, - 0x82,0x81,0x7F,0x80,0x82,0x81,0x83,0x82,0x80,0x82,0x82,0x81,0x83,0x82,0x82,0x83, - 0x81,0x83,0x81,0x7F,0x82,0x83,0x81,0x81,0x81,0x82,0x81,0x80,0x83,0x81,0x7F,0x80, - 0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x81,0x7F,0x81,0x83,0x80,0x80,0x80,0x82, - 0x81,0x81,0x82,0x80,0x7F,0x82,0x82,0x82,0x84,0x82,0x7F,0x80,0x80,0x7F,0x80,0x81, - 0x81,0x81,0x7F,0x80,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x80,0x7F,0x7E,0x82,0x80, - 0x7E,0x7F,0x7F,0x81,0x82,0x83,0x80,0x82,0x83,0x80,0x81,0x82,0x82,0x81,0x81,0x82, - 0x81,0x80,0x82,0x82,0x83,0x84,0x81,0x81,0x82,0x7F,0x80,0x81,0x7D,0x7D,0x7F,0x81, - 0x81,0x80,0x81,0x80,0x7E,0x80,0x82,0x81,0x80,0x80,0x80,0x80,0x80,0x7F,0x82,0x81, - 0x81,0x81,0x80,0x80,0x80,0x81,0x80,0x7F,0x7F,0x80,0x7E,0x7D,0x7F,0x80,0x7F,0x7D, - 0x7F,0x7F,0x7E,0x7E,0x80,0x80,0x7C,0x7F,0x80,0x7F,0x80,0x81,0x82,0x81,0x81,0x80, - 0x7F,0x7F,0x7F,0x7F,0x80,0x7E,0x7C,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x81,0x80,0x7F, - 0x82,0x81,0x81,0x80,0x80,0x7F,0x80,0x80,0x81,0x80,0x81,0x80,0x7D,0x7E,0x7F,0x7E, - 0x7F,0x80,0x7D,0x7D,0x7F,0x7E,0x7E,0x7F,0x80,0x81,0x80,0x80,0x81,0x7F,0x7F,0x80, - 0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7E,0x7F,0x80,0x7E,0x7F,0x80,0x7F,0x7F, - 0x7E,0x7D,0x7D,0x7D,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x81,0x80, - 0x7F,0x7F,0x7E,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x7F,0x80,0x80,0x7E,0x7E, - 0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x7F,0x7E, - 0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x81,0x80,0x80,0x81,0x7F,0x80,0x81,0x80,0x80, - 0x7F,0x7F,0x80,0x7F,0x80,0x80,0x80,0x81,0x80,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F, - 0x80,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x80,0x80,0x81,0x80,0x80,0x82,0x81,0x80, - 0x82,0x82,0x80,0x7F,0x81,0x81,0x7F,0x80,0x81,0x80,0x7E,0x7F,0x80,0x7F,0x80,0x80, - 0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x81,0x80,0x81,0x7F,0x80,0x82,0x81,0x81,0x81, - 0x80,0x81,0x81,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x81,0x80,0x82,0x81,0x80,0x80, - 0x7F,0x7F,0x7F,0x80,0x7F,0x80,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82, - 0x81,0x82,0x83,0x82,0x82,0x82,0x83,0x82,0x81,0x82,0x81,0x80,0x80,0x80,0x80,0x80, - 0x7F,0x80,0x81,0x80,0x7F,0x80,0x81,0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82, - 0x82,0x81,0x81,0x81,0x82,0x83,0x82,0x82,0x83,0x83,0x82,0x81,0x82,0x81,0x81,0x82, - 0x81,0x81,0x82,0x82,0x81,0x82,0x81,0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x80,0x80, - 0x80,0x80,0x81,0x81,0x80,0x82,0x81,0x81,0x81,0x82,0x81,0x81,0x82,0x81,0x82,0x82, - 0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x81,0x81,0x7F,0x7F,0x81, - 0x80,0x80,0x81,0x80,0x7F,0x80,0x80,0x7F,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x80,0x82,0x7F,0x91,0x88,0x83,0x89,0x66,0x78,0x84,0x6D, - 0x67,0x75,0x7F,0x83,0x8A,0x8A,0x8C,0x87,0x92,0xA2,0x9F,0x9A,0x95,0x91,0x8D,0x89, - 0x87,0x82,0x76,0x6A,0x61,0x5D,0x5F,0x63,0x6A,0x60,0x5F,0x6B,0x69,0x6A,0x70,0x6E, - 0x74,0x81,0x7E,0x8C,0x86,0x7C,0x92,0x83,0x7C,0x9A,0xB1,0xA3,0xA1,0xBA,0xB3,0xA7, - 0xA1,0x91,0x95,0x9D,0x8F,0x84,0x84,0x7D,0x77,0x7B,0x78,0x77,0x76,0x6C,0x6A,0x6D, - 0x70,0x73,0x73,0x67,0x5D,0x57,0x59,0x52,0x51,0x57,0x4E,0x56,0x60,0x6A,0x6F,0x69, - 0x6E,0x7E,0x8E,0x92,0x98,0x9B,0x9B,0x98,0x9C,0xA7,0xAC,0xAB,0xB0,0xBF,0xC5,0xB8, - 0xA8,0xAC,0xB2,0xB3,0xAC,0xAD,0xB0,0xA3,0x9E,0x9B,0x91,0x85,0x78,0x79,0x77,0x6E, - 0x6D,0x66,0x58,0x4E,0x4C,0x4A,0x45,0x3F,0x40,0x40,0x40,0x4A,0x4D,0x54,0x5F,0x5D, - 0x5F,0x60,0x62,0x61,0x5E,0x62,0x65,0x6E,0x71,0x70,0x78,0x78,0x7A,0x86,0x8F,0x93, - 0x91,0x97,0x9B,0xA0,0xA4,0xA0,0x9D,0x97,0x9D,0x9B,0x91,0x8D,0x8B,0x93,0x95,0x94, - 0x95,0x90,0x8E,0x8D,0x8E,0x91,0x90,0x8D,0x92,0x93,0x89,0x7B,0x73,0x6D,0x69,0x67, - 0x67,0x6D,0x6F,0x71,0x70,0x6E,0x6E,0x73,0x78,0x7D,0x7F,0x7D,0x7D,0x7C,0x79,0x7A, - 0x7E,0x80,0x86,0x8C,0x8E,0x95,0x9A,0x9C,0x9E,0xA2,0xA7,0xA9,0xAB,0xA9,0xA7,0xA4, - 0xA3,0xA1,0x9C,0x9C,0x9B,0x99,0x97,0x91,0x8E,0x8B,0x87,0x85,0x82,0x7F,0x7A,0x74, - 0x6E,0x69,0x6C,0x66,0x60,0x5D,0x5D,0x5D,0x5A,0x57,0x53,0x55,0x58,0x5C,0x62,0x67, - 0x6D,0x72,0x74,0x76,0x7B,0x7F,0x83,0x88,0x88,0x85,0x83,0x8B,0x90,0x8D,0x8E,0x8E, - 0x8B,0x90,0x92,0x85,0x81,0x87,0x80,0x7C,0x7E,0x77,0x78,0x7D,0x74,0x71,0x77,0x75, - 0x70,0x6C,0x66,0x66,0x64,0x5A,0x56,0x55,0x56,0x63,0x69,0x64,0x62,0x5E,0x56,0x54, - 0x4C,0x44,0x4C,0x56,0x57,0x5A,0x60,0x65,0x6A,0x6A,0x67,0x6E,0x76,0x78,0x7F,0x89, - 0x90,0x94,0x94,0x93,0x98,0xA8,0xB2,0xB2,0xB3,0xBA,0xC0,0xC2,0xC2,0xC1,0xCB,0xD1, - 0xCB,0xC6,0xC7,0xCB,0xC7,0xBE,0xB7,0xB6,0xB6,0xAC,0xA7,0xA8,0xA6,0x9F,0x94,0x8B, - 0x84,0x87,0x90,0x88,0x7E,0x81,0x7E,0x78,0x75,0x70,0x76,0x7F,0x7B,0x77,0x7E,0x80, - 0x77,0x70,0x6D,0x6F,0x73,0x6F,0x6E,0x79,0x7C,0x71,0x68,0x6A,0x6A,0x6A,0x79,0x7D, - 0x76,0x79,0x74,0x6A,0x6A,0x66,0x68,0x76,0x7B,0x7A,0x83,0x88,0x83,0x7F,0x7F,0x85, - 0x8F,0x90,0x8F,0x9B,0x9E,0x95,0x8C,0x8F,0x91,0x8F,0xA0,0xAD,0xA5,0xA2,0xA0,0x97, - 0x91,0x8B,0x87,0x91,0x96,0x8E,0x90,0x92,0x86,0x79,0x72,0x72,0x78,0x78,0x73,0x78, - 0x7B,0x70,0x62,0x5E,0x62,0x58,0x5D,0x6C,0x67,0x5F,0x5C,0x54,0x4C,0x4A,0x47,0x4D, - 0x54,0x50,0x50,0x52,0x4C,0x47,0x45,0x47,0x4F,0x56,0x55,0x5A,0x5D,0x56,0x4E,0x4E, - 0x54,0x53,0x5C,0x6E,0x70,0x6F,0x72,0x71,0x73,0x78,0x7C,0x8B,0x9A,0x9E,0xA7,0xB2, - 0xB1,0xB1,0xB5,0xBC,0xCA,0xD1,0xD1,0xD7,0xD9,0xD1,0xC9,0xC9,0xCA,0xC2,0xC7,0xD3, - 0xCB,0xBE,0xB8,0xAE,0xA5,0x9F,0x9B,0xA1,0xA6,0x9E,0x98,0x99,0x91,0x88,0x85,0x87, - 0x8F,0x90,0x8B,0x8E,0x8B,0x7F,0x7C,0x80,0x83,0x7D,0x89,0x9A,0x92,0x87,0x87,0x80, - 0x7A,0x78,0x77,0x7F,0x82,0x77,0x73,0x71,0x68,0x5F,0x5E,0x62,0x67,0x67,0x65,0x69, - 0x64,0x5A,0x5B,0x61,0x65,0x5E,0x66,0x7B,0x75,0x68,0x6B,0x6C,0x67,0x67,0x6B,0x76, - 0x7B,0x74,0x71,0x73,0x6E,0x68,0x6A,0x6F,0x74,0x74,0x71,0x71,0x6E,0x66,0x65,0x6A, - 0x6B,0x64,0x6E,0x81,0x77,0x6C,0x71,0x70,0x6B,0x6C,0x71,0x7E,0x82,0x79,0x7B,0x82, - 0x7B,0x77,0x7C,0x83,0x89,0x88,0x84,0x88,0x85,0x7D,0x7F,0x86,0x88,0x80,0x87,0x9A, - 0x90,0x80,0x85,0x86,0x7F,0x7E,0x85,0x8F,0x93,0x8B,0x89,0x8E,0x87,0x82,0x87,0x8E, - 0x93,0x94,0x92,0x95,0x93,0x8D,0x91,0x98,0x9A,0x93,0x9B,0xAD,0xA3,0x92,0x96,0x95, - 0x8A,0x84,0x86,0x8C,0x8A,0x7C,0x76,0x77,0x6C,0x62,0x65,0x68,0x68,0x66,0x62,0x63, - 0x61,0x58,0x5C,0x62,0x62,0x5D,0x61,0x75,0x72,0x63,0x6A,0x70,0x6B,0x6B,0x73,0x7F, - 0x86,0x7F,0x7F,0x87,0x84,0x7F,0x86,0x8D,0x91,0x92,0x90,0x94,0x93,0x8C,0x8F,0x95, - 0x95,0x8E,0x92,0xA6,0xA1,0x91,0x97,0x99,0x91,0x90,0x95,0x9E,0xA3,0x98,0x95,0x9C, - 0x94,0x8C,0x90,0x95,0x96,0x94,0x90,0x90,0x8D,0x83,0x84,0x88,0x86,0x7E,0x7E,0x8E, - 0x89,0x74,0x75,0x76,0x6A,0x64,0x67,0x6E,0x70,0x66,0x5F,0x64,0x5C,0x51,0x55,0x5A, - 0x5B,0x5A,0x57,0x59,0x56,0x4D,0x4C,0x50,0x50,0x49,0x4D,0x61,0x5D,0x4D,0x52,0x56, - 0x4E,0x4D,0x54,0x5F,0x64,0x5D,0x5C,0x64,0x5F,0x59,0x61,0x6B,0x70,0x71,0x72,0x77, - 0x78,0x73,0x78,0x81,0x84,0x81,0x8C,0xA3,0xA0,0x95,0x9F,0xA4,0x9F,0xA1,0xA9,0xB6, - 0xBB,0xB0,0xB1,0xB7,0xAC,0xA3,0xA8,0xAC,0xAB,0xA6,0xA2,0xA3,0x9A,0x91,0x93,0x95, - 0x90,0x89,0x93,0xA3,0x95,0x8A,0x93,0x90,0x88,0x88,0x8F,0x99,0x97,0x8F,0x93,0x96, - 0x8D,0x8C,0x92,0x98,0x9B,0x9A,0x9B,0x9E,0x96,0x91,0x97,0x99,0x95,0x91,0x9F,0xAC, - 0x9B,0x93,0x9B,0x95,0x8C,0x8E,0x95,0x9B,0x98,0x8F,0x93,0x92,0x88,0x86,0x8B,0x8E, - 0x8D,0x89,0x89,0x88,0x7E,0x7A,0x7D,0x7C,0x74,0x74,0x84,0x82,0x6F,0x6D,0x6E,0x63, - 0x5E,0x5F,0x66,0x69,0x5F,0x59,0x5B,0x53,0x4A,0x4B,0x50,0x54,0x53,0x4F,0x50,0x4D, - 0x44,0x45,0x49,0x48,0x43,0x4D,0x5E,0x56,0x4A,0x51,0x50,0x49,0x4B,0x52,0x5E,0x61, - 0x59,0x5D,0x63,0x5C,0x5A,0x60,0x67,0x6E,0x6D,0x6F,0x74,0x72,0x6F,0x74,0x79,0x79, - 0x7A,0x8E,0x98,0x8B,0x8D,0x93,0x8F,0x8E,0x95,0xA1,0xAC,0xAA,0xA9,0xB4,0xB4,0xB0, - 0xB7,0xBF,0xC8,0xCD,0xCC,0xCF,0xCE,0xC5,0xC2,0xC3,0xC1,0xB9,0xBD,0xCD,0xC3,0xB1, - 0xB2,0xAC,0xA0,0x9B,0x9C,0xA3,0xA4,0x99,0x96,0x98,0x8E,0x88,0x8C,0x8E,0x91,0x91, - 0x8F,0x91,0x8D,0x87,0x87,0x8A,0x86,0x83,0x94,0x9D,0x8C,0x88,0x8C,0x84,0x81,0x81, - 0x88,0x8F,0x8A,0x83,0x87,0x85,0x7C,0x7D,0x80,0x83,0x84,0x81,0x82,0x82,0x7B,0x78, - 0x79,0x7A,0x74,0x79,0x8B,0x84,0x76,0x78,0x74,0x6D,0x6A,0x6C,0x73,0x75,0x6C,0x6A, - 0x6B,0x63,0x5D,0x5E,0x61,0x63,0x60,0x5D,0x5E,0x59,0x52,0x50,0x51,0x4C,0x48,0x5A, - 0x62,0x51,0x4F,0x52,0x4A,0x47,0x48,0x4F,0x59,0x56,0x51,0x55,0x54,0x4F,0x50,0x55, - 0x5C,0x5F,0x5E,0x62,0x65,0x61,0x5F,0x62,0x66,0x62,0x6A,0x81,0x7E,0x72,0x79,0x78, - 0x73,0x75,0x7B,0x86,0x8B,0x86,0x8A,0x90,0x8D,0x8B,0x90,0x98,0xA0,0xA3,0xA5,0xAC, - 0xAE,0xAD,0xAE,0xB5,0xB8,0xB8,0xCD,0xDA,0xCC,0xCB,0xCD,0xC4,0xBE,0xBD,0xC2,0xC7, - 0xBE,0xB6,0xB5,0xAE,0xA4,0x9D,0x9B,0x9B,0x98,0x91,0x8D,0x8B,0x83,0x7A,0x77,0x75, - 0x6E,0x77,0x88,0x7E,0x73,0x76,0x70,0x6A,0x6A,0x6E,0x7A,0x7B,0x75,0x78,0x7A,0x77, - 0x74,0x77,0x7E,0x83,0x82,0x83,0x86,0x84,0x80,0x7D,0x7F,0x7C,0x7F,0x95,0x95,0x86, - 0x87,0x82,0x7B,0x7A,0x7A,0x84,0x89,0x82,0x7F,0x81,0x7E,0x79,0x76,0x7A,0x7F,0x7F, - 0x7B,0x7B,0x7A,0x75,0x6F,0x6E,0x6D,0x68,0x7A,0x85,0x74,0x70,0x70,0x67,0x61,0x5F, - 0x66,0x6E,0x68,0x61,0x62,0x60,0x5B,0x58,0x59,0x5F,0x61,0x5E,0x5E,0x5F,0x5C,0x57, - 0x55,0x58,0x52,0x5B,0x73,0x6A,0x5E,0x63,0x60,0x5B,0x5A,0x5D,0x6B,0x6E,0x68,0x69, - 0x6C,0x6B,0x69,0x69,0x71,0x78,0x78,0x79,0x7C,0x7E,0x7C,0x79,0x7E,0x7F,0x7F,0x97, - 0xA0,0x91,0x93,0x96,0x92,0x92,0x93,0xA0,0xAC,0xA9,0xA8,0xAC,0xAE,0xAC,0xA8,0xAA, - 0xB0,0xB1,0xAD,0xAB,0xA9,0xA3,0x9A,0x96,0x94,0x8C,0x97,0xA3,0x92,0x87,0x85,0x7B, - 0x74,0x6E,0x71,0x7B,0x76,0x6E,0x6F,0x70,0x6F,0x68,0x68,0x6F,0x73,0x71,0x71,0x73, - 0x74,0x6F,0x6D,0x72,0x70,0x7B,0x92,0x8D,0x83,0x86,0x83,0x81,0x7E,0x81,0x8F,0x94, - 0x8E,0x8C,0x8F,0x91,0x8D,0x89,0x8D,0x94,0x95,0x92,0x91,0x93,0x90,0x88,0x89,0x85, - 0x8A,0xA0,0x9D,0x90,0x91,0x8C,0x87,0x81,0x7F,0x89,0x8D,0x87,0x83,0x83,0x84,0x80, - 0x79,0x7B,0x7F,0x7F,0x7B,0x77,0x79,0x76,0x6D,0x6B,0x68,0x6C,0x80,0x80,0x71,0x70, - 0x6C,0x68,0x62,0x5E,0x67,0x6F,0x6B,0x65,0x65,0x68,0x66,0x61,0x62,0x68,0x6D,0x6B, - 0x68,0x6B,0x6D,0x67,0x65,0x65,0x69,0x82,0x87,0x7A,0x7B,0x7B,0x7A,0x77,0x74,0x7F, - 0x8B,0x8B,0x87,0x88,0x90,0x93,0x8E,0x8F,0x98,0xA1,0xA2,0x9F,0xA1,0xA7,0xA4,0xA2, - 0xA1,0xA3,0xBA,0xC4,0xB5,0xAE,0xAC,0xA8,0xA1,0x96,0x98,0xA0,0x9F,0x96,0x8C,0x8C, - 0x8B,0x81,0x78,0x77,0x7C,0x7B,0x72,0x6C,0x6C,0x69,0x62,0x5D,0x5A,0x6D,0x7E,0x73, - 0x68,0x68,0x68,0x66,0x5F,0x60,0x6C,0x76,0x78,0x73,0x75,0x7C,0x7C,0x78,0x79,0x82, - 0x8A,0x8A,0x86,0x87,0x89,0x87,0x84,0x81,0x8F,0xA5,0xA2,0x96,0x91,0x90,0x91,0x8A, - 0x84,0x8A,0x94,0x97,0x92,0x8C,0x8C,0x8E,0x8B,0x84,0x85,0x8B,0x8D,0x89,0x83,0x80, - 0x7F,0x7C,0x74,0x76,0x8B,0x92,0x89,0x7F,0x77,0x77,0x74,0x6C,0x6A,0x72,0x78,0x79, - 0x73,0x6F,0x70,0x71,0x6E,0x6A,0x6B,0x6F,0x70,0x6E,0x6B,0x68,0x66,0x63,0x60,0x6F, - 0x7D,0x79,0x73,0x6D,0x68,0x69,0x65,0x61,0x65,0x6C,0x72,0x75,0x74,0x74,0x76,0x78, - 0x79,0x7A,0x7C,0x81,0x86,0x89,0x88,0x87,0x88,0x85,0x8E,0xA3,0xA9,0xA5,0xA1,0x9B, - 0x9B,0x9D,0x98,0x96,0x99,0x9C,0xA2,0xA3,0x9E,0x9B,0x9A,0x99,0x96,0x94,0x91,0x90, - 0x90,0x8D,0x88,0x85,0x80,0x7A,0x83,0x8C,0x89,0x85,0x7F,0x76,0x77,0x77,0x70,0x6F, - 0x6E,0x6D,0x72,0x73,0x71,0x72,0x72,0x71,0x74,0x76,0x75,0x74,0x74,0x75,0x76,0x76, - 0x76,0x74,0x7D,0x86,0x82,0x80,0x81,0x7D,0x81,0x84,0x80,0x81,0x82,0x81,0x85,0x84, - 0x83,0x85,0x83,0x83,0x85,0x86,0x87,0x87,0x87,0x88,0x88,0x87,0x86,0x85,0x88,0x8C, - 0x88,0x88,0x88,0x84,0x87,0x88,0x83,0x84,0x84,0x82,0x82,0x7F,0x7C,0x7C,0x78,0x77, - 0x78,0x79,0x79,0x78,0x77,0x78,0x79,0x79,0x79,0x78,0x7B,0x80,0x7D,0x7C,0x7D,0x7A, - 0x7D,0x80,0x7C,0x7D,0x7E,0x7B,0x7B,0x79,0x77,0x78,0x75,0x75,0x77,0x78,0x79,0x79, - 0x79,0x7A,0x7C,0x7D,0x7E,0x7D,0x7F,0x86,0x84,0x81,0x84,0x81,0x84,0x8A,0x86,0x87, - 0x89,0x84,0x84,0x85,0x82,0x83,0x82,0x80,0x83,0x84,0x84,0x84,0x84,0x85,0x85,0x86, - 0x87,0x85,0x83,0x87,0x88,0x82,0x82,0x82,0x7E,0x83,0x83,0x7D,0x7E,0x7A,0x76,0x77, - 0x74,0x72,0x72,0x6F,0x70,0x71,0x72,0x73,0x73,0x73,0x75,0x77,0x79,0x79,0x78,0x79, - 0x80,0x7F,0x7B,0x7F,0x7E,0x80,0x86,0x82,0x81,0x82,0x7E,0x7F,0x81,0x7E,0x7E,0x7D, - 0x7C,0x7E,0x80,0x81,0x81,0x82,0x83,0x85,0x88,0x88,0x87,0x86,0x89,0x8E,0x8B,0x89, - 0x8C,0x89,0x8C,0x8F,0x8A,0x8A,0x89,0x84,0x86,0x85,0x81,0x81,0x7E,0x7D,0x7F,0x7F, - 0x80,0x80,0x81,0x81,0x84,0x85,0x83,0x82,0x81,0x85,0x89,0x84,0x84,0x85,0x81,0x86, - 0x87,0x83,0x86,0x8E,0x78,0x61,0x75,0x85,0x82,0x68,0x80,0x83,0x5F,0x72,0x7C,0x7B, - 0x7C,0x8B,0x91,0x7A,0x80,0x88,0x8B,0x82,0x80,0x8E,0x7D,0x71,0x78,0x81,0x81,0x80, - 0x81,0x85,0x7C,0x73,0x78,0x71,0x73,0x73,0x7A,0x7B,0x76,0x7D,0x7B,0x83,0x87,0x91, - 0x92,0x88,0x8C,0x90,0x8F,0x8D,0x89,0x89,0x88,0x8B,0x85,0x84,0x8A,0x80,0x7F,0x7F, - 0x7A,0x7C,0x73,0x6C,0x69,0x6A,0x6A,0x68,0x6D,0x71,0x7E,0x84,0x77,0x75,0x7C,0x7B, - 0x7B,0x87,0x85,0x7A,0x7F,0x7E,0x81,0x83,0x7F,0x87,0x7E,0x78,0x80,0x79,0x76,0x80, - 0x78,0x6F,0x77,0x7C,0x7A,0x79,0x79,0x7E,0x80,0x83,0x85,0x83,0x83,0x85,0x85,0x87, - 0x86,0x81,0x81,0x88,0x92,0x91,0x8A,0x88,0x85,0x88,0x83,0x80,0x83,0x7A,0x7B,0x82, - 0x82,0x81,0x81,0x86,0x84,0x80,0x86,0x89,0x88,0x87,0x85,0x88,0x82,0x84,0x85,0x82, - 0x84,0x87,0x87,0x84,0x84,0x85,0x82,0x80,0x7A,0x76,0x7A,0x76,0x7A,0x7F,0x7B,0x7B, - 0x7D,0x7E,0x81,0x87,0x80,0x82,0x87,0x7F,0x7C,0x84,0x85,0x80,0x83,0x7A,0x7D,0x88, - 0x89,0x84,0x82,0x85,0x7F,0x7C,0x79,0x77,0x72,0x70,0x7C,0x7D,0x79,0x7F,0x7C,0x7D, - 0x84,0x85,0x88,0x87,0x8B,0x82,0x85,0x89,0x83,0x87,0x80,0x85,0x8C,0x8C,0x89,0x88, - 0x8F,0x84,0x80,0x80,0x7C,0x7C,0x78,0x77,0x7A,0x7D,0x7A,0x77,0x7C,0x80,0x82,0x84, - 0x84,0x82,0x7E,0x80,0x84,0x83,0x7F,0x7E,0x7D,0x7D,0x85,0x81,0x7A,0x7C,0x7C,0x78, - 0x75,0x7D,0x78,0x77,0x76,0x75,0x7B,0x74,0x7A,0x7D,0x7A,0x83,0x82,0x85,0x88,0x7F, - 0x7D,0x83,0x94,0x93,0x8C,0x8E,0x89,0x85,0x89,0x88,0x7C,0x76,0x7D,0x7F,0x7B,0x7F, - 0x7D,0x78,0x81,0x84,0x82,0x84,0x83,0x86,0x83,0x7F,0x80,0x79,0x7E,0x83,0x7C,0x7C, - 0x91,0x9B,0x8E,0x8D,0x87,0x85,0x8A,0x82,0x7B,0x74,0x76,0x81,0x7E,0x80,0x81,0x7A, - 0x80,0x8A,0x84,0x80,0x81,0x88,0x8A,0x7D,0x7B,0x7E,0x7E,0x7D,0x76,0x7D,0x90,0x8F, - 0x89,0x87,0x81,0x81,0x83,0x7B,0x75,0x72,0x78,0x81,0x79,0x7B,0x7C,0x7E,0x86,0x87, - 0x82,0x80,0x7F,0x84,0x83,0x7A,0x82,0x85,0x82,0x7E,0x76,0x84,0x95,0x91,0x87,0x84, - 0x87,0x8A,0x83,0x77,0x73,0x71,0x79,0x7F,0x74,0x78,0x7E,0x80,0x8C,0x80,0x80,0x85, - 0x84,0x84,0x7A,0x7D,0x83,0x7F,0x7C,0x77,0x74,0x89,0x98,0x8B,0x87,0x85,0x83,0x88, - 0x7C,0x6F,0x74,0x74,0x7B,0x77,0x73,0x7F,0x80,0x84,0x89,0x7B,0x7E,0x83,0x79,0x7B, - 0x7D,0x7E,0x83,0x80,0x7A,0x75,0x7B,0x8E,0x91,0x84,0x8A,0x89,0x84,0x8A,0x7A,0x74, - 0x7B,0x7D,0x7E,0x78,0x77,0x82,0x87,0x84,0x7F,0x81,0x88,0x83,0x78,0x80,0x82,0x7E, - 0x80,0x7C,0x7A,0x76,0x7A,0x8F,0x8C,0x82,0x8C,0x86,0x85,0x8B,0x7B,0x75,0x7C,0x7B, - 0x7D,0x78,0x7A,0x82,0x8A,0x86,0x7E,0x81,0x87,0x82,0x7E,0x82,0x7C,0x7E,0x80,0x7A, - 0x7B,0x7A,0x7C,0x8D,0x89,0x7F,0x8B,0x85,0x87,0x89,0x76,0x79,0x7F,0x78,0x78,0x76, - 0x77,0x81,0x81,0x83,0x81,0x7E,0x8A,0x89,0x7B,0x82,0x82,0x7A,0x7A,0x77,0x7F,0x7B, - 0x75,0x8C,0x8E,0x80,0x8A,0x85,0x83,0x89,0x74,0x76,0x84,0x72,0x79,0x7A,0x72,0x82, - 0x82,0x7D,0x7F,0x85,0x86,0x87,0x7E,0x7C,0x80,0x7C,0x79,0x79,0x7C,0x78,0x74,0x86, - 0x8E,0x7F,0x8B,0x89,0x7F,0x89,0x7A,0x72,0x80,0x75,0x76,0x7A,0x70,0x81,0x85,0x7E, - 0x88,0x85,0x82,0x87,0x80,0x7D,0x80,0x82,0x7D,0x76,0x7E,0x7B,0x73,0x82,0x90,0x86, - 0x87,0x8C,0x82,0x8B,0x83,0x73,0x81,0x7A,0x71,0x7C,0x76,0x7B,0x85,0x7F,0x86,0x86, - 0x82,0x86,0x83,0x80,0x84,0x81,0x7D,0x7C,0x7C,0x80,0x75,0x76,0x8B,0x87,0x83,0x8B, - 0x83,0x84,0x8A,0x7B,0x7C,0x7F,0x71,0x7C,0x78,0x72,0x83,0x7F,0x7D,0x84,0x83,0x85, - 0x86,0x82,0x83,0x83,0x7F,0x78,0x7A,0x80,0x7B,0x75,0x7E,0x8D,0x83,0x86,0x8A,0x7E, - 0x8C,0x88,0x76,0x80,0x77,0x74,0x7E,0x71,0x75,0x81,0x79,0x7E,0x84,0x81,0x8A,0x85, - 0x81,0x87,0x81,0x7C,0x79,0x7A,0x82,0x7B,0x72,0x87,0x8B,0x82,0x8C,0x86,0x7F,0x8D, - 0x82,0x74,0x7D,0x76,0x78,0x7B,0x71,0x7D,0x7D,0x7E,0x87,0x7E,0x84,0x89,0x7F,0x82, - 0x84,0x7C,0x7A,0x7C,0x76,0x79,0x77,0x72,0x81,0x85,0x83,0x86,0x80,0x85,0x8B,0x7B, - 0x77,0x7B,0x76,0x78,0x77,0x70,0x7B,0x80,0x7D,0x84,0x81,0x84,0x8A,0x85,0x83,0x86, - 0x80,0x7D,0x7C,0x7D,0x7F,0x7A,0x7B,0x88,0x87,0x82,0x88,0x84,0x83,0x8C,0x81,0x76, - 0x81,0x7C,0x78,0x7D,0x76,0x7B,0x7F,0x7E,0x7E,0x7C,0x84,0x8C,0x82,0x82,0x87,0x7F, - 0x81,0x81,0x7F,0x81,0x7C,0x78,0x83,0x87,0x80,0x85,0x88,0x86,0x88,0x83,0x7E,0x82, - 0x7E,0x7B,0x7C,0x75,0x79,0x7F,0x7C,0x7E,0x7F,0x80,0x87,0x82,0x82,0x86,0x82,0x85, - 0x80,0x7C,0x80,0x7D,0x7B,0x81,0x87,0x7F,0x84,0x85,0x83,0x89,0x86,0x81,0x83,0x80, - 0x7D,0x7D,0x79,0x7B,0x81,0x7B,0x7D,0x80,0x7F,0x87,0x84,0x81,0x89,0x84,0x82,0x82, - 0x7E,0x84,0x82,0x7D,0x83,0x86,0x82,0x86,0x84,0x81,0x89,0x85,0x81,0x85,0x82,0x80, - 0x81,0x7A,0x7A,0x7F,0x7A,0x7D,0x80,0x80,0x84,0x83,0x81,0x86,0x84,0x82,0x83,0x81, - 0x81,0x81,0x79,0x7F,0x85,0x80,0x82,0x81,0x81,0x84,0x82,0x80,0x82,0x80,0x7F,0x81, - 0x7A,0x7B,0x81,0x7E,0x7D,0x81,0x7E,0x83,0x82,0x82,0x87,0x84,0x84,0x83,0x80,0x81, - 0x82,0x7D,0x83,0x88,0x81,0x83,0x83,0x82,0x87,0x82,0x80,0x85,0x82,0x82,0x83,0x7D, - 0x7F,0x81,0x7C,0x80,0x81,0x7B,0x84,0x88,0x82,0x86,0x83,0x82,0x87,0x82,0x85,0x84, - 0x7B,0x86,0x86,0x7D,0x85,0x82,0x82,0x8A,0x82,0x7E,0x84,0x7F,0x80,0x7F,0x79,0x80, - 0x7D,0x7B,0x80,0x7D,0x7B,0x84,0x86,0x81,0x83,0x82,0x84,0x84,0x7D,0x83,0x85,0x88, - 0x94,0x87,0x85,0x81,0x75,0x79,0x76,0x7B,0x7B,0x7E,0x71,0x75,0x7C,0x5F,0x76,0x92, - 0x75,0x79,0x89,0x7F,0x84,0x76,0x82,0x93,0x82,0x85,0x83,0x7D,0x82,0x82,0x88,0x89, - 0x82,0x87,0x8A,0x87,0x88,0x87,0x8C,0x8E,0x88,0x86,0x7F,0x79,0x7F,0x86,0x7C,0x77, - 0x82,0x88,0x86,0x89,0x86,0x7B,0x7E,0x88,0x8A,0x88,0x90,0x8D,0x87,0x89,0x86,0x7F, - 0x79,0x7C,0x85,0x8A,0x91,0x91,0x83,0x79,0x76,0x74,0x75,0x75,0x71,0x74,0x76,0x70, - 0x6D,0x6A,0x69,0x6D,0x72,0x70,0x6A,0x6A,0x68,0x64,0x6D,0x6E,0x63,0x6D,0x75,0x79, - 0x7C,0x75,0x74,0x79,0x72,0x6C,0x68,0x69,0x76,0x7C,0x72,0x70,0x77,0x79,0x7A,0x74, - 0x74,0x7F,0x80,0x7C,0x7B,0x7E,0x7C,0x89,0xA7,0xAF,0xB5,0xB6,0xA4,0xA4,0x9C,0x88, - 0x8B,0x90,0x8A,0x86,0x7E,0x82,0x92,0x89,0x7E,0x86,0x88,0x89,0x88,0x82,0x89,0x89, - 0x84,0x86,0x84,0x79,0x8C,0xA6,0x9A,0x98,0x9A,0x93,0x97,0x85,0x75,0x86,0x8C,0x89, - 0x8E,0x8B,0x94,0x97,0x82,0x82,0x88,0x82,0x80,0x79,0x7F,0x87,0x7F,0x77,0x7B,0x78, - 0x76,0x8F,0x92,0x85,0x8A,0x87,0x83,0x7D,0x69,0x6C,0x7A,0x77,0x7C,0x80,0x81,0x8B, - 0x80,0x73,0x7A,0x75,0x71,0x73,0x72,0x79,0x7A,0x6A,0x64,0x61,0x56,0x66,0x76,0x69, - 0x6A,0x6D,0x5E,0x5A,0x4D,0x48,0x5A,0x5D,0x5B,0x65,0x67,0x6C,0x68,0x5B,0x5F,0x67, - 0x69,0x6A,0x70,0x77,0x76,0x69,0x64,0x66,0x5E,0x6E,0x81,0x7A,0x7B,0x7B,0x6D,0x6E, - 0x67,0x65,0x7B,0x86,0x8C,0x99,0x9D,0xA2,0xA0,0x91,0x94,0x9E,0x9F,0xA2,0xA3,0xA0, - 0x99,0x86,0x83,0x86,0x7B,0x90,0xA6,0x99,0x97,0x93,0x86,0x81,0x7B,0x7B,0x8F,0x96, - 0x94,0x9B,0x99,0x93,0x8C,0x82,0x8B,0x99,0x97,0x9A,0x9E,0x9B,0x93,0x87,0x8A,0x8C, - 0x8B,0xA4,0xAB,0x9B,0x9B,0x90,0x82,0x7C,0x72,0x7C,0x8F,0x8F,0x8D,0x93,0x8D,0x84, - 0x78,0x74,0x85,0x8D,0x89,0x8B,0x8D,0x83,0x78,0x77,0x7D,0x7C,0x89,0x9F,0x97,0x8C, - 0x88,0x7B,0x73,0x6D,0x6A,0x78,0x7D,0x74,0x76,0x70,0x67,0x5D,0x52,0x59,0x66,0x63, - 0x61,0x63,0x5F,0x55,0x4D,0x56,0x56,0x5B,0x75,0x76,0x69,0x69,0x63,0x5D,0x5C,0x5B, - 0x67,0x73,0x6E,0x6C,0x6C,0x67,0x64,0x5D,0x60,0x70,0x73,0x72,0x77,0x78,0x76,0x71, - 0x77,0x81,0x7F,0x9B,0xB4,0xA8,0xA7,0xAA,0xA1,0x9E,0x98,0x98,0xA8,0xA4,0x97,0x9A, - 0x93,0x8B,0x86,0x83,0x90,0x96,0x8D,0x8E,0x90,0x89,0x83,0x83,0x8D,0x89,0x93,0xAE, - 0xA6,0x97,0x94,0x90,0x8D,0x8B,0x89,0x9B,0xA6,0x98,0x97,0x97,0x91,0x8C,0x88,0x8F, - 0x9A,0x96,0x92,0x90,0x85,0x83,0x81,0x87,0x8B,0x82,0x95,0xA8,0x91,0x85,0x8A,0x82, - 0x80,0x7C,0x80,0x94,0x92,0x81,0x83,0x84,0x7F,0x7C,0x7B,0x88,0x8E,0x87,0x85,0x82, - 0x7A,0x74,0x74,0x74,0x68,0x6E,0x87,0x7B,0x67,0x65,0x5F,0x5B,0x56,0x54,0x65,0x6F, - 0x60,0x5B,0x5E,0x59,0x55,0x54,0x5C,0x69,0x67,0x62,0x68,0x63,0x5B,0x5E,0x64,0x69, - 0x60,0x66,0x7E,0x72,0x5F,0x65,0x62,0x62,0x66,0x67,0x77,0x84,0x76,0x73,0x7F,0x7F, - 0x82,0x8A,0x95,0xA5,0xA7,0xA1,0xA2,0x9F,0x97,0x94,0x97,0x92,0x8C,0xA4,0xA9,0x8F, - 0x8D,0x8C,0x83,0x80,0x7F,0x89,0x94,0x90,0x87,0x8C,0x89,0x86,0x84,0x88,0x97,0x9A, - 0x92,0x93,0x93,0x89,0x8A,0x90,0x90,0x95,0x8F,0x91,0xA6,0x99,0x85,0x8D,0x89,0x83, - 0x86,0x87,0x91,0x95,0x86,0x86,0x89,0x86,0x83,0x81,0x8B,0x91,0x8A,0x84,0x85,0x83, - 0x80,0x7F,0x83,0x7F,0x7B,0x94,0x97,0x82,0x84,0x82,0x7C,0x79,0x76,0x81,0x8B,0x80, - 0x78,0x78,0x72,0x6A,0x65,0x68,0x70,0x73,0x69,0x68,0x68,0x5E,0x58,0x5D,0x62,0x64, - 0x63,0x5C,0x6D,0x74,0x5B,0x59,0x63,0x5F,0x60,0x5E,0x64,0x72,0x67,0x5C,0x63,0x63, - 0x60,0x62,0x64,0x6F,0x72,0x6A,0x6D,0x6F,0x6E,0x70,0x76,0x7E,0x7B,0x7F,0x9B,0x9E, - 0x91,0x97,0x97,0x97,0x98,0x93,0xA0,0xA9,0x98,0x94,0x97,0x8F,0x8C,0x8A,0x8E,0x97, - 0x93,0x89,0x8C,0x8C,0x85,0x82,0x89,0x90,0x91,0x8C,0x87,0x9B,0xA3,0x8A,0x89,0x90, - 0x8B,0x8A,0x88,0x8F,0x9B,0x92,0x86,0x8E,0x90,0x89,0x88,0x8C,0x91,0x92,0x89,0x88, - 0x8D,0x89,0x87,0x87,0x8C,0x85,0x7C,0x98,0x9E,0x88,0x87,0x88,0x83,0x81,0x7A,0x86, - 0x93,0x88,0x82,0x84,0x81,0x7F,0x7B,0x7F,0x8A,0x8A,0x80,0x80,0x82,0x7C,0x75,0x75, - 0x78,0x73,0x6F,0x6A,0x72,0x81,0x6C,0x60,0x69,0x65,0x60,0x5D,0x63,0x71,0x6A,0x5B, - 0x61,0x65,0x5F,0x5E,0x63,0x69,0x6C,0x66,0x64,0x6A,0x68,0x64,0x64,0x68,0x68,0x5E, - 0x6E,0x84,0x75,0x6A,0x71,0x70,0x6E,0x6F,0x76,0x87,0x8A,0x80,0x85,0x8E,0x8E,0x8C, - 0x90,0x9D,0xA2,0x9C,0x97,0x9B,0x9B,0x92,0x8F,0x95,0x98,0x91,0x8A,0x8E,0xA0,0x9A, - 0x84,0x88,0x8D,0x86,0x83,0x84,0x8F,0x95,0x87,0x82,0x8A,0x88,0x84,0x86,0x8C,0x91, - 0x8C,0x87,0x8B,0x8C,0x88,0x87,0x89,0x8D,0x87,0x81,0x98,0xA0,0x89,0x86,0x8B,0x86, - 0x85,0x7E,0x86,0x97,0x8F,0x83,0x86,0x88,0x85,0x81,0x85,0x8D,0x8D,0x86,0x83,0x87, - 0x89,0x81,0x80,0x89,0x8A,0x81,0x7A,0x8B,0x9A,0x85,0x79,0x81,0x80,0x77,0x6E,0x73, - 0x7F,0x78,0x6C,0x6C,0x71,0x6C,0x65,0x64,0x6C,0x70,0x67,0x66,0x67,0x66,0x64,0x63, - 0x67,0x69,0x5F,0x61,0x7B,0x76,0x62,0x68,0x69,0x69,0x60,0x67,0x76,0x6F,0x75,0x54, - 0x58,0x72,0x61,0x53,0x60,0x79,0x7F,0x83,0x87,0x90,0x8F,0x92,0xAA,0xB4,0xB5,0xB6, - 0xB2,0xBB,0xB0,0x8C,0xA0,0xA4,0x7E,0x79,0x7D,0x78,0x6E,0x66,0x50,0x5C,0x74,0x72, - 0x69,0x5D,0x74,0x7D,0x72,0x7D,0x8B,0x98,0xA0,0x9F,0xA2,0xB1,0xAD,0xC9,0xD0,0xB0, - 0xD6,0xBF,0xB4,0xC5,0xA8,0xB1,0xAC,0x98,0x8E,0x8D,0x94,0x93,0x71,0x68,0x71,0x62, - 0x71,0x68,0x6A,0x88,0x6C,0x6A,0x7B,0x76,0x7C,0x67,0x56,0x69,0x68,0x60,0x67,0x67, - 0x5C,0x5D,0x5F,0x74,0x7F,0x80,0x8B,0x82,0x8E,0x8D,0x7C,0x7D,0x81,0x7B,0x78,0x82, - 0x93,0x96,0x8B,0x80,0x91,0x8C,0x84,0x9A,0x8C,0x82,0x81,0x81,0x7D,0x72,0x77,0x74, - 0x72,0x6F,0x74,0x80,0x74,0x67,0x5B,0x50,0x5B,0x5F,0x4D,0x42,0x50,0x4C,0x43,0x49, - 0x55,0x66,0x5A,0x69,0x7D,0x71,0x76,0x86,0x83,0x85,0x83,0x7E,0x97,0x9B,0x98,0x9E, - 0x94,0xA5,0xB6,0xB3,0xC1,0xBE,0xB2,0xB4,0xAB,0x99,0x9E,0x89,0x78,0x8B,0x7A,0x87, - 0x9E,0x88,0x7B,0x71,0x6A,0x75,0x80,0x74,0x73,0x6B,0x6F,0x81,0x70,0x6F,0x73,0x76, - 0x81,0x78,0x7B,0x71,0x71,0x83,0x82,0x84,0x7B,0x82,0x96,0x8D,0x8D,0xA1,0x8C,0x8D, - 0x91,0x8A,0x9B,0x91,0x90,0x98,0x99,0x99,0x9B,0xA4,0xA4,0x9F,0xAB,0xAB,0xB1,0xB8, - 0xA5,0xA0,0xA1,0xA1,0x9E,0x93,0x89,0x6E,0x68,0x74,0x74,0x71,0x5C,0x5C,0x6D,0x67, - 0x58,0x45,0x34,0x36,0x3E,0x49,0x4C,0x3E,0x3B,0x44,0x42,0x44,0x4B,0x45,0x46,0x43, - 0x3D,0x47,0x4A,0x55,0x56,0x61,0x85,0x87,0x84,0x79,0x6B,0x7D,0x88,0x93,0xA8,0xA6, - 0xAF,0xBD,0xAD,0xA2,0xA8,0xAD,0xB0,0xCA,0xD7,0xBF,0xC2,0xCD,0xCF,0xCE,0xC7,0xC9, - 0xC3,0xC5,0xC8,0xB4,0xA0,0x8E,0x7A,0x79,0x8D,0x8E,0x7E,0x6C,0x5B,0x59,0x5D,0x5C, - 0x54,0x51,0x4E,0x5F,0x5A,0x43,0x3B,0x2F,0x46,0x49,0x47,0x55,0x4C,0x59,0x6C,0x69, - 0x5E,0x5C,0x68,0x6B,0x6C,0x85,0x7B,0x73,0x86,0x73,0x7B,0x91,0x8D,0x98,0x9E,0xAB, - 0xB3,0xAD,0xA9,0xB2,0xB4,0xB6,0xBB,0xB5,0xB8,0xBF,0xC7,0xBD,0xBD,0xBC,0xAE,0xB1, - 0xAB,0xA3,0xA1,0x9F,0x99,0x91,0x86,0x83,0x8E,0x81,0x7E,0x7F,0x74,0x6A,0x61,0x68, - 0x60,0x57,0x55,0x53,0x5F,0x68,0x62,0x58,0x56,0x52,0x51,0x50,0x44,0x43,0x45,0x4C, - 0x58,0x5F,0x5E,0x50,0x49,0x4D,0x56,0x61,0x58,0x51,0x5B,0x64,0x68,0x63,0x6B,0x6B, - 0x64,0x7E,0x80,0x84,0x90,0x89,0x8F,0x89,0x89,0x97,0x9F,0xAD,0xAB,0x9F,0x9E,0x97, - 0x98,0x98,0x9B,0xAF,0xA9,0x9C,0xA2,0xA5,0x95,0x8C,0x85,0x79,0x9A,0xB3,0xA9,0xA1, - 0x8C,0x8F,0x9B,0x9D,0x94,0x86,0x91,0xA1,0x9E,0x95,0x94,0x9B,0x9B,0x93,0x8F,0x89, - 0x8D,0x7B,0x6B,0x6D,0x66,0x6D,0x6E,0x69,0x7D,0x95,0x86,0x77,0x77,0x6E,0x76,0x74, - 0x6C,0x6D,0x71,0x79,0x6B,0x64,0x65,0x60,0x66,0x6B,0x73,0x7D,0x7E,0x84,0x7A,0x7E, - 0x88,0x81,0x80,0x7D,0x98,0xA9,0x92,0x83,0x73,0x76,0x84,0x7D,0x7E,0x84,0x87,0x87, - 0x7D,0x74,0x74,0x6E,0x76,0x70,0x6A,0x79,0x72,0x76,0x81,0x73,0x70,0x75,0x6D,0x7B, - 0x98,0x8E,0x80,0x80,0x74,0x89,0x96,0x7D,0x7B,0x7F,0x8D,0xA0,0x8F,0x86,0x83,0x79, - 0x81,0x80,0x7B,0x83,0x88,0x86,0x85,0x87,0x82,0x84,0x7C,0x75,0x8D,0x8C,0x81,0x7A, - 0x71,0x6F,0x66,0x62,0x5D,0x60,0x82,0x8B,0x7C,0x6D,0x5E,0x79,0x7D,0x74,0x6F,0x5C, - 0x64,0x6C,0x75,0x79,0x75,0x7C,0x78,0x7C,0x98,0x98,0x8A,0x86,0x82,0x92,0x90,0x8A, - 0x8E,0x95,0x9A,0x96,0x9B,0x95,0x92,0x99,0x97,0x92,0x8E,0x8F,0x92,0x94,0x96,0x94, - 0x88,0x94,0x95,0x97,0xAF,0xAF,0xAD,0xAE,0xA5,0xA2,0x9F,0x94,0x90,0x98,0x9F,0x9B, - 0x8E,0x7C,0x7C,0x8A,0x95,0x91,0x87,0x88,0x82,0x7A,0x7C,0x72,0x63,0x69,0x65,0x6C, - 0x79,0x71,0x6A,0x6A,0x6C,0x68,0x63,0x66,0x70,0x77,0x79,0x70,0x5F,0x5F,0x5B,0x57, - 0x56,0x4D,0x53,0x58,0x63,0x65,0x5E,0x5A,0x58,0x63,0x5D,0x67,0x77,0x68,0x66,0x69, - 0x69,0x6F,0x6F,0x6E,0x70,0x77,0x83,0x80,0x73,0x6E,0x6F,0x6F,0x6D,0x6F,0x70,0x6C, - 0x73,0x79,0x7C,0x7A,0x7D,0x85,0x7B,0x79,0x86,0x89,0x8A,0x93,0x94,0x8D,0x8E,0x91, - 0x8D,0x9B,0xA6,0xA1,0x9E,0x97,0x97,0x9B,0x8C,0x87,0x8C,0x8B,0x97,0xA0,0x9B,0x9B, - 0x93,0x9A,0xA0,0x9D,0xAE,0xB0,0xAA,0xA4,0x9E,0x96,0x90,0x98,0x9B,0x96,0x9D,0xA1, - 0xA3,0xA4,0x97,0x8E,0x87,0x7F,0x83,0x84,0x80,0x84,0x83,0x83,0x88,0x86,0x81,0x85, - 0x8F,0x97,0x8E,0x82,0x79,0x74,0x70,0x6B,0x71,0x6C,0x66,0x66,0x69,0x75,0x73,0x69, - 0x5A,0x57,0x5B,0x5F,0x63,0x55,0x53,0x59,0x58,0x5F,0x5D,0x56,0x67,0x74,0x7C,0x80, - 0x6F,0x66,0x62,0x60,0x65,0x6A,0x64,0x5A,0x5B,0x69,0x72,0x6F,0x71,0x6E,0x6F,0x7D, - 0x80,0x77,0x6E,0x75,0x77,0x7C,0x83,0x7F,0x8D,0x97,0x9A,0x98,0x88,0x83,0x82,0x88, - 0x8C,0x89,0x8B,0x7F,0x7B,0x8A,0x91,0x96,0x96,0x8C,0x8E,0x99,0x99,0x91,0x91,0x93, - 0x94,0xA0,0x9C,0x92,0x93,0xA0,0xA8,0xA4,0x9F,0x96,0x9C,0x9F,0xA0,0xA1,0x95,0x95, - 0x95,0x91,0x92,0x95,0x93,0x8F,0x8F,0x90,0x99,0x94,0x93,0x94,0x8B,0x8F,0x96,0x8D, - 0x89,0x92,0x92,0x8E,0x8C,0x89,0x88,0x8F,0x90,0x8C,0x8A,0x8A,0x8A,0x80,0x74,0x74, - 0x6F,0x6C,0x6D,0x6C,0x6A,0x64,0x6E,0x6C,0x62,0x6F,0x6A,0x64,0x62,0x5E,0x66,0x59, - 0x5C,0x59,0x4E,0x5E,0x5E,0x5D,0x5E,0x5E,0x5F,0x5B,0x5E,0x58,0x5C,0x64,0x5F,0x5F, - 0x5D,0x59,0x63,0x69,0x66,0x6A,0x64,0x63,0x6C,0x6F,0x7B,0x78,0x6E,0x75,0x76,0x77, - 0x7C,0x76,0x74,0x7A,0x7F,0x81,0x82,0x86,0x87,0x8D,0x8F,0x8A,0x8A,0x8F,0x8D,0x90, - 0x95,0x90,0x8C,0x8A,0x8B,0x8D,0x90,0x93,0x92,0x8E,0x8D,0x94,0x99,0x93,0x93,0x99, - 0x97,0x9A,0x9C,0x93,0x93,0x98,0x9D,0x9E,0x9C,0x9A,0x9B,0x9E,0xA0,0xA4,0x9F,0x9A, - 0x9A,0x95,0x9A,0xA5,0x9D,0x9D,0x9D,0x9A,0x9E,0x9D,0x9F,0x9B,0x9D,0xA0,0x97,0x95, - 0x91,0x8D,0x8E,0x8B,0x85,0x84,0x82,0x82,0x86,0x84,0x7F,0x7F,0x7D,0x7D,0x7A,0x7C, - 0x82,0x7A,0x7A,0x76,0x6D,0x77,0x75,0x74,0x79,0x79,0x78,0x76,0x75,0x6F,0x70,0x71, - 0x6A,0x69,0x68,0x67,0x68,0x61,0x5E,0x5F,0x66,0x69,0x61,0x5E,0x66,0x68,0x63,0x5F, - 0x58,0x57,0x63,0x69,0x68,0x6C,0x63,0x5C,0x61,0x63,0x63,0x6B,0x66,0x5E,0x65,0x69, - 0x6E,0x70,0x6B,0x6D,0x73,0x7A,0x7D,0x72,0x73,0x7A,0x79,0x7C,0x79,0x75,0x7C,0x81, - 0x84,0x85,0x80,0x7E,0x7D,0x87,0x8A,0x85,0x88,0x82,0x7E,0x87,0x86,0x85,0x85,0x83, - 0x87,0x8D,0x8E,0x87,0x86,0x8F,0x96,0x99,0x98,0x94,0x96,0x9A,0x9E,0xA0,0xA0,0x9F, - 0x99,0x9F,0xA0,0x9D,0x9D,0x93,0x91,0x94,0x96,0x9C,0x99,0x97,0x99,0x96,0x9A,0x97, - 0x8F,0x93,0x98,0x97,0x97,0x90,0x8B,0x8C,0x90,0x8F,0x8F,0x8F,0x8B,0x8B,0x89,0x87, - 0x86,0x83,0x82,0x84,0x82,0x82,0x83,0x7F,0x80,0x81,0x7D,0x7C,0x7B,0x79,0x80,0x80, - 0x79,0x7A,0x78,0x78,0x7A,0x79,0x7B,0x7E,0x7B,0x77,0x77,0x77,0x73,0x73,0x75,0x6E, - 0x6C,0x6E,0x6E,0x71,0x74,0x73,0x74,0x72,0x74,0x75,0x76,0x7D,0x76,0x77,0x7B,0x7A, - 0x80,0x7B,0x77,0x79,0x7A,0x7B,0x77,0x72,0x73,0x74,0x79,0x76,0x71,0x72,0x70,0x74, - 0x77,0x73,0x73,0x74,0x74,0x74,0x72,0x78,0x77,0x71,0x75,0x77,0x79,0x7C,0x78,0x7B, - 0x7E,0x80,0x7D,0x78,0x77,0x77,0x7E,0x7F,0x78,0x77,0x78,0x7D,0x80,0x7E,0x7C,0x7C, - 0x7E,0x7E,0x7D,0x82,0x86,0x82,0x85,0x84,0x82,0x88,0x84,0x80,0x85,0x85,0x80,0x7F, - 0x7D,0x7B,0x7E,0x82,0x7E,0x7D,0x7C,0x7E,0x81,0x80,0x7F,0x80,0x81,0x83,0x83,0x85, - 0x8D,0x8C,0x89,0x8A,0x82,0x87,0x8B,0x89,0x8F,0x8D,0x87,0x87,0x87,0x8A,0x89,0x87, - 0x83,0x80,0x82,0x85,0x85,0x84,0x81,0x83,0x87,0x86,0x84,0x81,0x87,0x8B,0x88,0x8A, - 0x85,0x84,0x8C,0x89,0x8A,0x88,0x82,0x83,0x81,0x86,0x86,0x81,0x80,0x7D,0x7F,0x82, - 0x80,0x82,0x7E,0x7E,0x83,0x81,0x7F,0x7C,0x80,0x85,0x83,0x83,0x7F,0x7B,0x83,0x82, - 0x82,0x86,0x7D,0x7C,0x7F,0x7E,0x85,0x84,0x80,0x7F,0x7E,0x82,0x83,0x80,0x81,0x80, - 0x82,0x85,0x82,0x7F,0x83,0x8A,0x86,0x81,0x82,0x82,0x85,0x89,0x85,0x85,0x83,0x7E, - 0x80,0x80,0x7F,0x7F,0x7B,0x78,0x7A,0x7B,0x7B,0x7D,0x7D,0x7D,0x80,0x83,0x84,0x7E, - 0x81,0x89,0x85,0x84,0x82,0x7F,0x83,0x86,0x86,0x82,0x80,0x7F,0x7E,0x81,0x7E,0x7B, - 0x7C,0x7B,0x7C,0x7A,0x79,0x7C,0x7B,0x7B,0x7C,0x7D,0x7D,0x7B,0x7D,0x81,0x7F,0x7F, - 0x7E,0x7E,0x82,0x85,0x85,0x7F,0x7D,0x7F,0x80,0x81,0x7F,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7D,0x7E,0x7E,0x81,0x80,0x82,0x82,0x7E,0x84,0x84,0x82,0x85,0x80,0x81,0x84,0x82, - 0x83,0x7F,0x7D,0x7F,0x7E,0x7F,0x7D,0x7A,0x7B,0x7B,0x7D,0x7C,0x7B,0x7D,0x7D,0x80, - 0x82,0x81,0x80,0x80,0x86,0x85,0x82,0x85,0x80,0x82,0x87,0x85,0x87,0x83,0x80,0x81, - 0x7E,0x7D,0x7C,0x79,0x7B,0x7A,0x7A,0x79,0x79,0x7B,0x7A,0x7C,0x7E,0x7E,0x7E,0x7E, - 0x83,0x82,0x80,0x81,0x7E,0x83,0x86,0x83,0x85,0x81,0x80,0x81,0x7F,0x80,0x7D,0x7B, - 0x7C,0x7B,0x7D,0x7D,0x7C,0x7D,0x7E,0x80,0x80,0x81,0x80,0x81,0x85,0x82,0x83,0x83, - 0x80,0x84,0x85,0x84,0x86,0x84,0x83,0x83,0x7F,0x81,0x7F,0x7D,0x80,0x7D,0x7C,0x7E, - 0x7E,0x80,0x81,0x81,0x81,0x81,0x81,0x84,0x86,0x84,0x84,0x82,0x80,0x84,0x83,0x82, - 0x85,0x81,0x81,0x80,0x7D,0x7F,0x7B,0x78,0x7B,0x78,0x7A,0x7D,0x7D,0x7E,0x7C,0x7D, - 0x7F,0x80,0x81,0x82,0x84,0x83,0x83,0x84,0x83,0x84,0x84,0x83,0x86,0x85,0x84,0x84, - 0x7F,0x7E,0x7E,0x7C,0x7D,0x7C,0x7B,0x7C,0x7B,0x7C,0x7C,0x7C,0x7C,0x7D,0x7F,0x80, - 0x82,0x82,0x80,0x82,0x80,0x81,0x83,0x82,0x86,0x85,0x83,0x84,0x80,0x7F,0x81,0x80, - 0x80,0x7F,0x7E,0x80,0x80,0x81,0x81,0x80,0x80,0x80,0x82,0x83,0x82,0x84,0x82,0x83, - 0x84,0x81,0x82,0x83,0x83,0x84,0x82,0x81,0x80,0x7D,0x7E,0x7D,0x7B,0x7C,0x7B,0x7B, - 0x7B,0x7B,0x7C,0x7B,0x7B,0x7E,0x7E,0x7E,0x80,0x81,0x81,0x80,0x82,0x82,0x82,0x83, - 0x84,0x84,0x84,0x83,0x83,0x82,0x82,0x80,0x7F,0x7E,0x7E,0x7D,0x7C,0x7B,0x7C,0x7D, - 0x7D,0x7E,0x7E,0x7E,0x7F,0x80,0x82,0x82,0x82,0x83,0x83,0x84,0x85,0x85,0x86,0x86, - 0x85,0x85,0x85,0x82,0x81,0x80,0x80,0x80,0x7F,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C, - 0x7D,0x7E,0x7D,0x7E,0x7E,0x7E,0x7F,0x81,0x82,0x82,0x82,0x81,0x82,0x84,0x84,0x83, - 0x81,0x81,0x80,0x80,0x7F,0x7C,0x7B,0x7C,0x7D,0x7D,0x7D,0x7B,0x7D,0x7E,0x7E,0x7F, - 0x7F,0x7E,0x7F,0x81,0x82,0x81,0x80,0x81,0x82,0x84,0x85,0x84,0x83,0x82,0x81,0x80, - 0x7F,0x7D,0x7D,0x7B,0x7B,0x7B,0x79,0x7B,0x7D,0x7D,0x7E,0x7F,0x80,0x80,0x80,0x82, - 0x82,0x83,0x84,0x83,0x84,0x86,0x86,0x87,0x85,0x85,0x86,0x83, -}; -#define sound2_len 0x0000DC8C -const unsigned char sound2_data[] = { - 0x80,0x84,0x8C,0x88,0x7F,0x85,0x8E,0x8B,0x87,0x8B,0x88,0x7C,0x7C,0x81,0x7D,0x75, - 0x77,0x80,0x81,0x86,0x95,0x86,0x78,0x75,0x6A,0x71,0x78,0x75,0x76,0x95,0x7C,0x7C, - 0xA1,0x7D,0x82,0x8D,0x77,0x66,0x6A,0x79,0x70,0x72,0x75,0x76,0x7C,0x8B,0x90,0x86, - 0x87,0x89,0x81,0x6B,0x6D,0x6E,0x62,0x80,0x94,0x81,0x8C,0x95,0x82,0x8D,0x94,0x7C, - 0x80,0x7F,0x73,0x86,0x8B,0x8D,0x9D,0x9E,0x9D,0xA2,0xA0,0x96,0x83,0x8A,0x96,0x91, - 0x97,0x88,0x86,0x96,0x92,0x8B,0x7B,0x7C,0x87,0x72,0x67,0x69,0x6B,0x7C,0x7E,0x72, - 0x72,0x6C,0x69,0x68,0x5B,0x5B,0x60,0x5E,0x67,0x63,0x62,0x63,0x63,0x77,0x7B,0x7A, - 0x70,0x5A,0x59,0x64,0x5F,0x5D,0x5F,0x70,0x7B,0x6E,0x73,0x7A,0x7C,0x83,0x99,0xB1, - 0xB1,0xA1,0x99,0x98,0x89,0x89,0x8B,0x91,0xA7,0xAE,0xAA,0xA3,0x95,0x87,0x85,0x85, - 0x86,0x88,0x94,0x9F,0x94,0x88,0x81,0x7E,0x80,0x81,0x8A,0x92,0x8D,0x8B,0x85,0x7F, - 0x84,0x7F,0x79,0x88,0x93,0x8E,0x8B,0x7F,0x7B,0x7D,0x7D,0x88,0x87,0x8D,0x9D,0x8F, - 0x87,0x84,0x7B,0x8C,0x93,0x97,0xA0,0x95,0x8B,0x8D,0x89,0x88,0x8C,0x88,0x9B,0xA6, - 0x96,0x8A,0x76,0x6E,0x77,0x74,0x73,0x72,0x74,0x7B,0x6C,0x5D,0x62,0x64,0x66,0x6C, - 0x67,0x6A,0x65,0x52,0x48,0x4A,0x58,0x58,0x5B,0x6D,0x77,0x70,0x61,0x54,0x52,0x60, - 0x5F,0x5C,0x64,0x6B,0x6C,0x60,0x58,0x5C,0x66,0x6F,0x75,0x7A,0x84,0x88,0x8E,0x93, - 0x98,0x9E,0x9B,0x99,0x9B,0xAD,0xAA,0x98,0x90,0x8C,0x99,0xA3,0x99,0x94,0x97,0x94, - 0x8B,0x82,0x85,0x90,0x97,0x93,0x8F,0x90,0x8F,0x87,0x86,0x8F,0x93,0x91,0x84,0x85, - 0x99,0x9B,0x89,0x7A,0x78,0x86,0x87,0x81,0x87,0x8F,0x90,0x81,0x78,0x80,0x8F,0x99, - 0x9A,0x98,0x99,0x9A,0x8C,0x91,0x94,0x91,0x97,0x94,0x97,0x9B,0xA3,0xA1,0x90,0x8B, - 0x84,0x86,0x8B,0x83,0x7E,0x7C,0x78,0x6C,0x65,0x68,0x6D,0x71,0x6D,0x66,0x64,0x62, - 0x59,0x57,0x5F,0x5B,0x57,0x52,0x4F,0x64,0x6E,0x63,0x5B,0x57,0x5D,0x5F,0x58,0x5F, - 0x66,0x67,0x61,0x57,0x54,0x5F,0x67,0x66,0x71,0x78,0x77,0x75,0x78,0x87,0x95,0x9A, - 0x99,0x9C,0x9A,0xA3,0xAD,0xA4,0x9A,0x96,0x94,0x97,0x97,0x95,0x98,0x8F,0x89,0x8E, - 0x88,0x8B,0x93,0x8F,0x93,0x95,0x8E,0x87,0x86,0x8C,0x92,0x8F,0x88,0x89,0x85,0x8F, - 0x97,0x8B,0x81,0x7B,0x82,0x88,0x84,0x87,0x90,0x91,0x88,0x7E,0x7C,0x85,0x8E,0x8D, - 0x94,0x9E,0x9D,0x94,0x8A,0x92,0x9B,0x96,0x90,0x90,0x93,0x98,0xA3,0x99,0x8B,0x8B, - 0x86,0x86,0x89,0x7D,0x81,0x81,0x73,0x6D,0x64,0x67,0x70,0x6B,0x6B,0x6D,0x63,0x59, - 0x55,0x52,0x5A,0x59,0x51,0x59,0x55,0x58,0x71,0x6A,0x58,0x5A,0x56,0x5D,0x5D,0x59, - 0x64,0x67,0x60,0x59,0x56,0x5E,0x68,0x66,0x72,0x7C,0x7D,0x78,0x76,0x86,0x94,0x99, - 0x99,0x9B,0x99,0x95,0xA5,0xAD,0x9D,0x94,0x94,0x8E,0x92,0x8C,0x8E,0x96,0x8F,0x84, - 0x83,0x82,0x89,0x92,0x8F,0x97,0x97,0x8B,0x86,0x86,0x8B,0x92,0x88,0x87,0x82,0x7C, - 0x95,0x9D,0x8A,0x85,0x84,0x81,0x81,0x7F,0x87,0x92,0x8F,0x86,0x86,0x8B,0x8B,0x8E, - 0x92,0x9E,0x9E,0x96,0x8F,0x8B,0x97,0x9B,0x96,0x96,0x95,0x89,0x9A,0xA9,0x96,0x8D, - 0x85,0x82,0x7D,0x78,0x7B,0x7F,0x7C,0x6F,0x68,0x65,0x67,0x62,0x5D,0x67,0x68,0x5F, - 0x55,0x4E,0x52,0x57,0x52,0x51,0x55,0x4E,0x57,0x6F,0x62,0x5A,0x59,0x56,0x5A,0x54, - 0x5A,0x67,0x6C,0x62,0x5E,0x63,0x66,0x6F,0x6C,0x7B,0x89,0x89,0x88,0x88,0x92,0x9C, - 0x99,0x9C,0xA2,0x96,0x9E,0xB4,0xAC,0x99,0x96,0x90,0x8E,0x89,0x85,0x93,0x93,0x88, - 0x7F,0x83,0x87,0x85,0x87,0x8E,0x95,0x94,0x8E,0x84,0x83,0x84,0x86,0x86,0x88,0x83, - 0x81,0x9A,0x9A,0x88,0x83,0x85,0x82,0x7E,0x82,0x8E,0x96,0x8F,0x87,0x8F,0x8E,0x85, - 0x8F,0x92,0x98,0x9E,0x97,0x90,0x8F,0x8E,0x8A,0x8E,0x95,0x8F,0x86,0x9A,0xA8,0x8F, - 0x85,0x85,0x7B,0x77,0x76,0x78,0x83,0x7F,0x6C,0x6B,0x6B,0x61,0x5D,0x5F,0x62,0x68, - 0x60,0x56,0x58,0x53,0x4D,0x4F,0x58,0x59,0x4F,0x60,0x75,0x64,0x56,0x5C,0x59,0x55, - 0x56,0x5F,0x6A,0x71,0x67,0x66,0x6D,0x68,0x69,0x74,0x7F,0x8A,0x93,0x90,0x98,0x9A, - 0x95,0x9D,0xA5,0xA6,0x9C,0xA6,0xBA,0xA9,0x91,0x97,0x93,0x86,0x81,0x89,0x92,0x95, - 0x8E,0x85,0x8D,0x88,0x80,0x83,0x8A,0x8E,0x8C,0x88,0x89,0x85,0x7A,0x7D,0x84,0x87, - 0x7B,0x84,0x9D,0x93,0x82,0x88,0x8C,0x7F,0x81,0x87,0x92,0x9B,0x93,0x90,0x9A,0x95, - 0x8A,0x8E,0x94,0x95,0x95,0x95,0x96,0x97,0x8C,0x8D,0x97,0x94,0x89,0x8B,0x9F,0x99, - 0x81,0x85,0x86,0x74,0x6C,0x73,0x78,0x7B,0x76,0x6F,0x73,0x6D,0x5D,0x5B,0x60,0x5D, - 0x5D,0x5C,0x5C,0x5F,0x57,0x51,0x5A,0x5C,0x53,0x5D,0x6B,0x60,0x5B,0x65,0x5B,0x51, - 0x58,0x5A,0x5C,0x67,0x65,0x68,0x76,0x70,0x71,0x7C,0x7F,0x85,0x90,0x97,0x9E,0xA4, - 0xA0,0xA3,0xA6,0xA3,0xA8,0xB0,0xA5,0x9F,0xA5,0x99,0x8B,0x90,0x8F,0x86,0x8C,0x8D, - 0x88,0x8E,0x8D,0x83,0x89,0x89,0x7F,0x81,0x84,0x82,0x81,0x80,0x80,0x83,0x7C,0x80, - 0x90,0x8D,0x84,0x8C,0x93,0x85,0x80,0x89,0x88,0x86,0x8C,0x8D,0x91,0x99,0x93,0x93, - 0x9D,0x98,0x90,0x96,0x98,0x94,0x92,0x90,0x94,0x94,0x8E,0x94,0x9E,0x95,0x8C,0x8F, - 0x8E,0x80,0x79,0x7E,0x77,0x70,0x72,0x6E,0x6E,0x71,0x69,0x64,0x69,0x65,0x60,0x5F, - 0x5D,0x5A,0x59,0x57,0x5A,0x5E,0x5B,0x5D,0x65,0x65,0x5D,0x5C,0x65,0x64,0x5C,0x60, - 0x66,0x63,0x66,0x68,0x69,0x6F,0x72,0x74,0x79,0x80,0x86,0x8B,0x92,0x9E,0x9F,0xA1, - 0xA6,0xA8,0xA6,0xA5,0xA6,0xA4,0xA2,0x9D,0x99,0x94,0x95,0x92,0x8F,0x8D,0x8A,0x88, - 0x86,0x86,0x86,0x84,0x82,0x83,0x82,0x80,0x7E,0x7E,0x7D,0x7E,0x7E,0x7D,0x81,0x82, - 0x82,0x84,0x82,0x84,0x85,0x85,0x86,0x88,0x89,0x8C,0x8E,0x91,0x94,0x93,0x93,0x93, - 0x93,0x93,0x94,0x96,0x95,0x95,0x95,0x92,0x92,0x92,0x91,0x91,0x92,0x92,0x8D,0x88, - 0x85,0x81,0x7F,0x7C,0x7B,0x77,0x74,0x73,0x71,0x6C,0x69,0x68,0x63,0x62,0x62,0x61, - 0x5F,0x5E,0x5C,0x5B,0x59,0x5B,0x5C,0x5E,0x5F,0x60,0x61,0x60,0x61,0x60,0x63,0x63, - 0x64,0x67,0x69,0x6D,0x6F,0x72,0x76,0x7B,0x7E,0x86,0x8E,0x93,0x9A,0x9F,0xA2,0xA5, - 0xA4,0xA3,0xA5,0xA1,0xA0,0x9E,0x9A,0x97,0x94,0x92,0x8E,0x8C,0x88,0x87,0x84,0x84, - 0x83,0x81,0x80,0x7C,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7A,0x7B,0x7C,0x7C,0x7C,0x7E, - 0x7F,0x7F,0x7F,0x81,0x81,0x82,0x85,0x86,0x87,0x8A,0x8C,0x8D,0x8E,0x92,0x91,0x90, - 0x93,0x92,0x93,0x96,0x96,0x95,0x98,0x96,0x93,0x91,0x91,0x8F,0x8E,0x8D,0x8B,0x88, - 0x85,0x81,0x7E,0x7A,0x78,0x75,0x72,0x72,0x6E,0x6B,0x69,0x67,0x65,0x64,0x63,0x62, - 0x5F,0x5E,0x60,0x5D,0x5D,0x5D,0x5C,0x5D,0x5E,0x5C,0x5E,0x60,0x60,0x60,0x62,0x63, - 0x66,0x69,0x6B,0x6F,0x72,0x76,0x7A,0x7F,0x83,0x8B,0x91,0x96,0x9B,0x9E,0xA2,0xA2, - 0xA3,0xA3,0xA2,0xA0,0x9E,0x9B,0x97,0x94,0x90,0x8D,0x8B,0x87,0x84,0x82,0x81,0x7F, - 0x7D,0x7C,0x7D,0x7B,0x79,0x7A,0x79,0x78,0x78,0x78,0x78,0x79,0x7A,0x7D,0x7C,0x7E, - 0x80,0x81,0x83,0x83,0x84,0x86,0x89,0x8A,0x8C,0x8C,0x8F,0x8E,0x8D,0x8F,0x8F,0x8E, - 0x90,0x91,0x90,0x90,0x8F,0x8E,0x8E,0x8D,0x8B,0x8B,0x89,0x88,0x86,0x85,0x82,0x7F, - 0x7F,0x7D,0x7A,0x79,0x7B,0x77,0x77,0x74,0x72,0x73,0x6E,0x6D,0x6C,0x6B,0x6A,0x69, - 0x68,0x6A,0x6A,0x69,0x6B,0x6C,0x6C,0x6B,0x6D,0x6E,0x6E,0x6E,0x71,0x73,0x72,0x76, - 0x79,0x79,0x7D,0x7E,0x7F,0x84,0x84,0x86,0x8A,0x8B,0x8E,0x8E,0x8F,0x91,0x8F,0x8F, - 0x91,0x8F,0x8D,0x8C,0x8B,0x8A,0x89,0x86,0x85,0x85,0x82,0x80,0x80,0x81,0x7F,0x7E, - 0x7F,0x7D,0x7A,0x79,0x7B,0x79,0x79,0x7A,0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7C, - 0x7C,0x80,0x7E,0x7E,0x82,0x81,0x82,0x83,0x85,0x86,0x87,0x86,0x88,0x88,0x88,0x88, - 0x87,0x88,0x88,0x8A,0x88,0x89,0x87,0x88,0x89,0x88,0x88,0x88,0x87,0x88,0x86,0x83, - 0x86,0x83,0x83,0x83,0x83,0x84,0x82,0x82,0x81,0x81,0x7F,0x80,0x7E,0x7F,0x7F,0x7D, - 0x7E,0x7D,0x7B,0x7B,0x7C,0x7A,0x7C,0x7B,0x7A,0x7B,0x7A,0x7C,0x7C,0x7D,0x7D,0x80, - 0x80,0x82,0x83,0x83,0x86,0x85,0x87,0x89,0x88,0x89,0x8B,0x89,0x8A,0x88,0x88,0x88, - 0x88,0x88,0x87,0x85,0x84,0x84,0x81,0x7F,0x7F,0x7F,0x7E,0x7D,0x7B,0x7B,0x79,0x78, - 0x7A,0x78,0x78,0x78,0x79,0x78,0x79,0x78,0x79,0x7A,0x7A,0x7B,0x7A,0x7B,0x7C,0x7B, - 0x7D,0x7E,0x7D,0x7F,0x80,0x80,0x81,0x80,0x81,0x80,0x81,0x82,0x82,0x82,0x82,0x84, - 0x82,0x83,0x82,0x83,0x84,0x83,0x84,0x83,0x82,0x83,0x84,0x81,0x83,0x83,0x82,0x81, - 0x82,0x82,0x81,0x81,0x80,0x81,0x80,0x81,0x7F,0x80,0x80,0x7E,0x7E,0x7E,0x7D,0x7D, - 0x7F,0x7E,0x7C,0x7C,0x7E,0x7D,0x7E,0x7C,0x7E,0x7F,0x7E,0x7E,0x7E,0x80,0x80,0x81, - 0x81,0x82,0x82,0x83,0x84,0x84,0x85,0x84,0x85,0x86,0x85,0x85,0x86,0x85,0x84,0x84, - 0x83,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x7F,0x81,0x80,0x7F,0x7F,0x7E,0x7E,0x7D, - 0x7D,0x7D,0x7E,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7E,0x7D,0x7C,0x7D,0x7E,0x7E,0x7F, - 0x7E,0x7E,0x80,0x7E,0x7E,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x83, - 0x83,0x84,0x83,0x83,0x83,0x83,0x83,0x81,0x83,0x83,0x82,0x82,0x82,0x81,0x81,0x7F, - 0x80,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x7E,0x7E,0x7F,0x7E,0x7E,0x7F, - 0x7F,0x7F,0x7F,0x7E,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x7E,0x7F,0x80,0x80,0x80, - 0x7F,0x7F,0x7F,0x80,0x81,0x82,0x81,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x83,0x81, - 0x81,0x81,0x81,0x80,0x81,0x82,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7C,0x7D,0x7C, - 0x7C,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E, - 0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x81,0x81,0x81,0x80,0x7F,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x7F,0x7F,0x80,0x81,0x80,0x81,0x81,0x80,0x81,0x81,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x81,0x81,0x7F,0x80,0x80,0x7F,0x7E,0x7E,0x7D, - 0x7D,0x7E,0x7D,0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x80,0x80,0x81,0x81,0x81, - 0x80,0x82,0x82,0x82,0x84,0x83,0x83,0x83,0x82,0x80,0x80,0x81,0x80,0x80,0x81,0x80, - 0x80,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x80,0x80,0x81,0x80,0x7F, - 0x80,0x7F,0x7F,0x80,0x80,0x7F,0x7F,0x80,0x7F,0x7E,0x80,0x7F,0x7F,0x7F,0x7D,0x7C, - 0x7D,0x7D,0x7D,0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x7F,0x81,0x82,0x80,0x81,0x81,0x82, - 0x81,0x83,0x82,0x84,0x97,0x82,0x86,0x84,0x64,0x7F,0x80,0x68,0x67,0x77,0x7E,0x86, - 0x8C,0x8B,0x8A,0x86,0x95,0xA0,0x9C,0x98,0x95,0x91,0x8D,0x89,0x87,0x82,0x75,0x6B, - 0x63,0x5D,0x5C,0x5B,0x58,0x5A,0x61,0x65,0x6A,0x6F,0x72,0x78,0x7A,0x7D,0x83,0x85, - 0x86,0x8B,0x8E,0x90,0x95,0xA0,0xA9,0xB1,0xB7,0xB5,0xB5,0xB2,0xA9,0xA2,0x9D,0x98, - 0x92,0x8C,0x89,0x84,0x7F,0x7D,0x7A,0x77,0x74,0x71,0x6E,0x6B,0x69,0x68,0x66,0x60, - 0x58,0x51,0x49,0x46,0x49,0x4B,0x4C,0x54,0x5B,0x61,0x6A,0x6F,0x73,0x76,0x7C,0x81, - 0x85,0x8A,0x8C,0x8F,0x91,0x94,0x96,0x98,0xA2,0xAB,0xB1,0xB6,0xB4,0xB4,0xB1,0xAF, - 0xAD,0xAB,0xA4,0x9C,0x9A,0x91,0x8B,0x8A,0x86,0x83,0x7F,0x7C,0x78,0x72,0x68,0x60, - 0x5A,0x58,0x52,0x4F,0x51,0x4C,0x4F,0x54,0x57,0x61,0x64,0x69,0x6E,0x76,0x7F,0x84, - 0x8A,0x8B,0x92,0x94,0x94,0x9A,0x99,0x9F,0x9F,0xA1,0x9E,0x93,0x9D,0xA3,0xAB,0xB0, - 0xAA,0xA2,0x97,0x94,0x8D,0x85,0x7E,0x77,0x7C,0x77,0x77,0x7B,0x71,0x70,0x73,0x73, - 0x70,0x70,0x6E,0x6C,0x69,0x66,0x65,0x61,0x61,0x60,0x5A,0x5A,0x58,0x5B,0x5C,0x5B, - 0x63,0x63,0x65,0x6A,0x6D,0x73,0x75,0x78,0x7B,0x7D,0x82,0x88,0x8D,0x92,0x96,0x9D, - 0xA5,0xAD,0xB4,0xB8,0xBB,0xBD,0xC0,0xC3,0xC1,0xBF,0xBB,0xB8,0xB4,0xAB,0xA5,0x9C, - 0x96,0x92,0x89,0x83,0x7D,0x78,0x74,0x6C,0x65,0x5F,0x60,0x5F,0x57,0x51,0x4F,0x52, - 0x4F,0x4B,0x4A,0x4B,0x4A,0x48,0x4B,0x52,0x53,0x57,0x5B,0x62,0x6B,0x6B,0x6D,0x73, - 0x76,0x78,0x7A,0x7E,0x86,0x8C,0x8A,0x8A,0x92,0x99,0x9E,0xA2,0xA2,0xAC,0xB8,0xB8, - 0xB7,0xB5,0xB4,0xBB,0xBD,0xB8,0xB8,0xB8,0xB9,0xBB,0xB8,0xB1,0xB0,0xB0,0xA9,0xA1, - 0x97,0x92,0x8B,0x7E,0x76,0x6E,0x67,0x5F,0x59,0x60,0x61,0x59,0x55,0x4D,0x4B,0x49, - 0x38,0x35,0x3C,0x3A,0x3C,0x3E,0x3F,0x46,0x49,0x45,0x49,0x4B,0x4C,0x52,0x58,0x5F, - 0x67,0x6D,0x72,0x82,0x8C,0x8E,0x94,0x98,0x9B,0x9D,0x98,0x9B,0xA6,0xAA,0xA9,0xAD, - 0xB2,0xB8,0xB6,0xB1,0xB2,0xB1,0xAE,0xAD,0xAE,0xB2,0xAE,0xA8,0x9F,0xA7,0xB2,0xA4, - 0x9F,0x9F,0x96,0x90,0x7F,0x7A,0x85,0x7B,0x6F,0x75,0x77,0x76,0x70,0x62,0x66,0x63, - 0x51,0x52,0x58,0x5A,0x5B,0x56,0x58,0x5D,0x6A,0x6B,0x66,0x6E,0x6E,0x67,0x63,0x61, - 0x67,0x6A,0x69,0x70,0x7A,0x79,0x78,0x7A,0x7A,0x79,0x76,0x76,0x7B,0x7D,0x7F,0x81, - 0x84,0x80,0x86,0x99,0x92,0x91,0x9C,0x97,0x92,0x8C,0x8B,0x95,0x92,0x8C,0x96,0x9A, - 0x98,0x9B,0x99,0x99,0x97,0x91,0x98,0x99,0x94,0x95,0x90,0x8D,0x8A,0x96,0x9E,0x93, - 0x96,0x9B,0x8F,0x85,0x80,0x81,0x82,0x77,0x79,0x82,0x7B,0x75,0x74,0x6D,0x69,0x64, - 0x61,0x65,0x60,0x60,0x5F,0x5A,0x55,0x5A,0x6E,0x67,0x63,0x73,0x6D,0x65,0x62,0x63, - 0x6A,0x65,0x65,0x77,0x7A,0x75,0x7C,0x7E,0x7D,0x7B,0x7C,0x86,0x86,0x84,0x8B,0x86, - 0x83,0x81,0x92,0x9B,0x8A,0x93,0x9C,0x8E,0x89,0x8A,0x8C,0x8A,0x86,0x92,0x9E,0x99, - 0x99,0xA0,0x9D,0x97,0x94,0x96,0x97,0x91,0x93,0x93,0x8B,0x83,0x89,0x9B,0x8E,0x8A, - 0x9B,0x91,0x85,0x83,0x82,0x84,0x7A,0x7A,0x89,0x88,0x82,0x87,0x86,0x7F,0x78,0x76, - 0x7B,0x74,0x72,0x77,0x6D,0x66,0x63,0x72,0x76,0x63,0x6E,0x74,0x63,0x5E,0x60,0x60, - 0x5E,0x59,0x61,0x69,0x62,0x66,0x6C,0x68,0x66,0x66,0x6C,0x6E,0x6D,0x77,0x7A,0x76, - 0x76,0x83,0x99,0x8E,0x8E,0xA2,0x98,0x8E,0x91,0x93,0x91,0x8B,0x8F,0x9C,0x96,0x92, - 0x9B,0x99,0x92,0x8F,0x91,0x92,0x89,0x8A,0x8E,0x86,0x82,0x81,0x91,0x97,0x85,0x92, - 0x9A,0x88,0x86,0x8A,0x8A,0x87,0x82,0x8D,0x94,0x89,0x8F,0x97,0x8F,0x8B,0x8C,0x8D, - 0x88,0x82,0x88,0x84,0x7B,0x78,0x7C,0x8D,0x83,0x7A,0x8C,0x7F,0x6E,0x6F,0x6C,0x69, - 0x63,0x62,0x6F,0x6A,0x63,0x6F,0x6C,0x65,0x66,0x68,0x69,0x63,0x66,0x6E,0x63,0x5E, - 0x5E,0x68,0x75,0x66,0x70,0x7E,0x69,0x65,0x6A,0x68,0x67,0x63,0x6E,0x78,0x70,0x77, - 0x81,0x7A,0x79,0x7B,0x7D,0x7C,0x78,0x82,0x83,0x7A,0x7B,0x7C,0x8D,0x92,0x85,0x9A, - 0x9B,0x89,0x8C,0x8C,0x8B,0x89,0x87,0x96,0x98,0x93,0x9F,0xA1,0x99,0x99,0x99,0x9A, - 0x95,0x95,0x9D,0x96,0x90,0x90,0x92,0xA5,0x9D,0x97,0xAC,0x9F,0x92,0x94,0x90,0x8F, - 0x85,0x88,0x96,0x8E,0x8C,0x97,0x92,0x8B,0x8A,0x89,0x87,0x80,0x83,0x86,0x7C,0x7A, - 0x76,0x80,0x90,0x7D,0x84,0x8F,0x7B,0x77,0x76,0x74,0x71,0x65,0x72,0x78,0x6B,0x72, - 0x76,0x6E,0x69,0x66,0x67,0x61,0x5B,0x63,0x61,0x5A,0x5A,0x57,0x6B,0x6F,0x5E,0x73, - 0x75,0x63,0x64,0x64,0x67,0x5F,0x5C,0x70,0x6E,0x68,0x76,0x77,0x72,0x6F,0x70,0x75, - 0x6D,0x6F,0x78,0x73,0x71,0x6E,0x75,0x8C,0x7D,0x7C,0x92,0x85,0x7C,0x7B,0x7E,0x82, - 0x75,0x7D,0x8F,0x86,0x88,0x93,0x93,0x91,0x8C,0x92,0x94,0x8B,0x91,0x97,0x91,0x90, - 0x8B,0x9E,0xAB,0x95,0xA4,0xB0,0x9E,0x97,0x95,0x9B,0x98,0x8C,0x9C,0xA4,0x98,0x9E, - 0xA5,0xA5,0x9D,0x96,0x9F,0x99,0x8F,0x96,0x95,0x91,0x8B,0x88,0xA5,0x9E,0x8D,0xA5, - 0xA0,0x90,0x8B,0x89,0x92,0x82,0x7B,0x90,0x8D,0x84,0x88,0x8C,0x8E,0x81,0x7C,0x83, - 0x78,0x71,0x74,0x71,0x6E,0x62,0x68,0x81,0x6D,0x6A,0x7B,0x71,0x68,0x5D,0x63,0x6A, - 0x54,0x56,0x67,0x62,0x5F,0x61,0x69,0x6B,0x5E,0x60,0x64,0x5C,0x58,0x59,0x5D,0x5C, - 0x4E,0x5F,0x73,0x60,0x65,0x71,0x6D,0x68,0x5A,0x66,0x6B,0x58,0x5F,0x68,0x69,0x6D, - 0x6A,0x75,0x7E,0x74,0x77,0x7B,0x7A,0x76,0x74,0x7C,0x80,0x76,0x7F,0x94,0x8B,0x8C, - 0x95,0x93,0x99,0x89,0x8C,0x97,0x8A,0x8C,0x8F,0x90,0x98,0x93,0x97,0xA0,0x9D,0x9E, - 0x9C,0x9C,0x9D,0x98,0x9C,0x9E,0x9D,0x9D,0xA4,0xA4,0x9F,0xA4,0xA3,0xA4,0xA3,0x9D, - 0xA1,0x9F,0x9B,0x9D,0x9A,0x9B,0x9C,0x99,0x9C,0x9B,0x9A,0x9B,0x97,0x96,0x95,0x93, - 0x92,0x90,0x8E,0x8F,0x93,0x8D,0x8A,0x8D,0x8A,0x8A,0x85,0x82,0x85,0x80,0x7D,0x7D, - 0x7A,0x7B,0x79,0x77,0x79,0x76,0x75,0x74,0x72,0x73,0x6F,0x6E,0x6D,0x6C,0x6C,0x6B, - 0x74,0x6D,0x6A,0x70,0x6D,0x70,0x6A,0x67,0x6E,0x67,0x64,0x67,0x65,0x6A,0x65,0x62, - 0x69,0x64,0x62,0x63,0x64,0x64,0x5E,0x5E,0x5E,0x5C,0x58,0x60,0x6C,0x5F,0x63,0x6C, - 0x69,0x6B,0x62,0x68,0x6D,0x61,0x65,0x6B,0x6D,0x70,0x6C,0x76,0x7B,0x75,0x7B,0x7F, - 0x7F,0x7C,0x7B,0x7E,0x7D,0x77,0x78,0x90,0x8B,0x82,0x96,0x94,0x94,0x8B,0x8A,0x97, - 0x86,0x83,0x8E,0x8D,0x8F,0x8C,0x94,0x9F,0x94,0x99,0xA0,0x9A,0x96,0x92,0x95,0x92, - 0x8A,0x85,0x9D,0xA3,0x90,0xA4,0xA8,0xA0,0x98,0x91,0x9F,0x8F,0x82,0x92,0x8F,0x8D, - 0x8E,0x93,0x9F,0x94,0x94,0x9E,0x93,0x8D,0x8B,0x8C,0x86,0x7F,0x79,0x89,0x96,0x80, - 0x90,0x9A,0x8E,0x8A,0x81,0x8C,0x81,0x6F,0x81,0x7E,0x78,0x7E,0x81,0x8D,0x84,0x83, - 0x90,0x83,0x7D,0x7E,0x7C,0x78,0x73,0x6E,0x75,0x8B,0x76,0x7E,0x90,0x80,0x7E,0x74, - 0x7A,0x74,0x60,0x70,0x6F,0x65,0x6E,0x70,0x79,0x75,0x72,0x82,0x74,0x6E,0x73,0x6D, - 0x6C,0x6B,0x67,0x69,0x83,0x78,0x76,0x8D,0x81,0x80,0x7A,0x7C,0x7D,0x66,0x74,0x79, - 0x6B,0x76,0x7A,0x80,0x80,0x7B,0x89,0x7F,0x76,0x7C,0x74,0x72,0x72,0x71,0x6A,0x83, - 0x84,0x74,0x90,0x88,0x81,0x7F,0x7B,0x82,0x6B,0x6F,0x7E,0x6F,0x75,0x7E,0x81,0x84, - 0x7F,0x8B,0x87,0x7A,0x81,0x7B,0x78,0x79,0x7A,0x70,0x84,0x91,0x7A,0x90,0x94,0x85, - 0x86,0x81,0x86,0x75,0x71,0x83,0x77,0x76,0x84,0x85,0x87,0x84,0x8D,0x8B,0x7B,0x84, - 0x7F,0x79,0x7C,0x7E,0x74,0x7E,0x97,0x7F,0x8B,0x9C,0x8A,0x89,0x85,0x89,0x7E,0x72, - 0x85,0x80,0x78,0x88,0x8A,0x8B,0x8A,0x8E,0x92,0x81,0x86,0x85,0x7B,0x7E,0x80,0x79, - 0x75,0x94,0x89,0x80,0x9C,0x8F,0x85,0x85,0x84,0x80,0x70,0x7D,0x82,0x73,0x81,0x8A, - 0x85,0x85,0x88,0x8D,0x7D,0x7E,0x85,0x78,0x7A,0x7E,0x7C,0x70,0x87,0x93,0x78,0x91, - 0x96,0x82,0x83,0x83,0x82,0x73,0x75,0x84,0x76,0x78,0x8B,0x86,0x83,0x88,0x8C,0x81, - 0x79,0x84,0x7B,0x76,0x7C,0x7F,0x74,0x76,0x96,0x81,0x7F,0x9C,0x88,0x80,0x84,0x82, - 0x7B,0x70,0x7F,0x80,0x73,0x84,0x8B,0x82,0x86,0x8C,0x88,0x7B,0x80,0x81,0x75,0x7B, - 0x7E,0x7C,0x71,0x84,0x94,0x76,0x8C,0x98,0x7D,0x82,0x84,0x7D,0x73,0x73,0x82,0x77, - 0x75,0x8A,0x86,0x7E,0x88,0x89,0x7E,0x7B,0x80,0x79,0x74,0x7B,0x7C,0x77,0x72,0x8D, - 0x88,0x74,0x92,0x8B,0x76,0x80,0x7F,0x76,0x6F,0x77,0x7F,0x73,0x7C,0x8B,0x7F,0x80, - 0x89,0x82,0x7B,0x7C,0x80,0x76,0x77,0x7F,0x7D,0x79,0x7A,0x95,0x84,0x7B,0x9A,0x84, - 0x77,0x85,0x7C,0x76,0x73,0x7C,0x80,0x77,0x84,0x8A,0x81,0x85,0x86,0x81,0x7A,0x7B, - 0x7E,0x75,0x7B,0x7E,0x7F,0x7D,0x7B,0x96,0x82,0x7C,0x98,0x7F,0x77,0x81,0x7A,0x78, - 0x73,0x7C,0x84,0x79,0x81,0x8B,0x7F,0x7F,0x84,0x7D,0x78,0x7B,0x7E,0x77,0x7A,0x80, - 0x7E,0x81,0x79,0x88,0x90,0x77,0x88,0x8D,0x76,0x7C,0x7D,0x7A,0x79,0x7A,0x85,0x7F, - 0x7F,0x8B,0x82,0x80,0x84,0x80,0x7F,0x7E,0x81,0x7F,0x7D,0x82,0x80,0x81,0x88,0x7F, - 0x7F,0x91,0x83,0x7F,0x8B,0x7F,0x7B,0x7D,0x7D,0x7A,0x7A,0x82,0x81,0x80,0x84,0x83, - 0x7F,0x7F,0x81,0x7D,0x7E,0x82,0x82,0x80,0x81,0x85,0x80,0x81,0x87,0x7C,0x85,0x8B, - 0x7C,0x89,0x86,0x7C,0x81,0x7C,0x7C,0x7B,0x7C,0x80,0x7D,0x7F,0x81,0x7F,0x81,0x7F, - 0x7F,0x80,0x80,0x80,0x80,0x7F,0x7F,0x80,0x7E,0x83,0x81,0x77,0x84,0x87,0x80,0x89, - 0x88,0x81,0x7D,0x7E,0x7A,0x76,0x7E,0x7F,0x7D,0x82,0x83,0x81,0x80,0x84,0x85,0x81, - 0x85,0x84,0x80,0x81,0x82,0x81,0x80,0x83,0x81,0x7E,0x82,0x82,0x82,0x83,0x83,0x80, - 0x7C,0x7B,0x77,0x79,0x7D,0x7E,0x83,0x82,0x80,0x81,0x80,0x82,0x85,0x86,0x85,0x84, - 0x88,0x86,0x83,0x83,0x82,0x7F,0x7C,0x81,0x80,0x7E,0x80,0x7D,0x78,0x75,0x83,0x85, - 0x7D,0x8B,0x8A,0x7E,0x7B,0x7C,0x78,0x74,0x7C,0x81,0x7B,0x7D,0x81,0x7D,0x7E,0x85, - 0x85,0x84,0x86,0x85,0x82,0x7F,0x83,0x7F,0x7B,0x85,0x84,0x81,0x88,0x8C,0x87,0x7E, - 0x7E,0x79,0x70,0x74,0x7A,0x7B,0x7E,0x81,0x82,0x7E,0x7E,0x81,0x82,0x82,0x84,0x84, - 0x7F,0x7E,0x80,0x82,0x82,0x86,0x89,0x83,0x81,0x81,0x7B,0x7B,0x7D,0x7D,0x7D,0x7C, - 0x82,0x82,0x7D,0x7F,0x87,0x8A,0x85,0x89,0x8C,0x83,0x7E,0x7A,0x78,0x77,0x79,0x7F, - 0x7F,0x7F,0x82,0x81,0x80,0x80,0x81,0x82,0x81,0x78,0x78,0x80,0x77,0x7D,0x87,0x86, - 0x85,0x82,0x80,0x79,0x74,0x75,0x78,0x7B,0x7D,0x81,0x82,0x7F,0x7F,0x80,0x81,0x83, - 0x85,0x82,0x81,0x7F,0x80,0x80,0x7F,0x89,0x86,0x83,0x87,0x7E,0x7A,0x78,0x77,0x78, - 0x7B,0x7D,0x7D,0x7C,0x7E,0x80,0x83,0x96,0x85,0x6F,0x84,0x95,0x82,0x66,0x87,0x7D, - 0x64,0x80,0x85,0x82,0x7F,0x92,0x8A,0x77,0x89,0x85,0x7F,0x7D,0x90,0x92,0x7D,0x7B, - 0x7B,0x7F,0x7B,0x75,0x76,0x79,0x6D,0x71,0x7E,0x7C,0x85,0x93,0x8F,0x8B,0x8D,0x83, - 0x87,0x85,0x87,0x8D,0x8A,0x85,0x84,0x8D,0x79,0x76,0x8F,0x77,0x61,0x73,0x73,0x74, - 0x69,0x67,0x82,0x71,0x6D,0x7C,0x75,0x78,0x76,0x7D,0x7C,0x6B,0x71,0x82,0x80,0x73, - 0x6C,0x7B,0x84,0x7D,0x80,0x75,0x7D,0x92,0x8B,0x93,0x8E,0x8C,0x96,0x8A,0x8E,0x8D, - 0x82,0x8E,0xA0,0xA1,0x96,0x9D,0xA0,0x97,0x97,0x96,0x90,0x83,0x88,0x93,0x8A,0x9B, - 0xAE,0x92,0x85,0x8A,0x7D,0x6A,0x65,0x72,0x77,0x74,0x77,0x71,0x70,0x73,0x78,0x79, - 0x6F,0x6D,0x6B,0x6F,0x6B,0x73,0x74,0x71,0x7C,0x7D,0x7E,0x6F,0x72,0x8C,0x7F,0x70, - 0x75,0x6F,0x64,0x65,0x71,0x6C,0x63,0x6D,0x7B,0x77,0x69,0x6E,0x71,0x6D,0x6B,0x70, - 0x79,0x79,0x83,0x91,0x9C,0xA7,0x9C,0x8E,0xA2,0xAE,0x98,0x96,0xA1,0x8C,0x81,0x7F, - 0x79,0x7F,0x7F,0x85,0x88,0x8A,0x8D,0x84,0x80,0x7D,0x75,0x74,0x7F,0x82,0x80,0x82, - 0x81,0x81,0x7D,0x76,0x84,0x9A,0x8C,0x86,0x90,0x7C,0x71,0x76,0x70,0x6F,0x73,0x7B, - 0x89,0x89,0x84,0x83,0x82,0x78,0x75,0x76,0x80,0x89,0x86,0x88,0x8B,0x8B,0x7E,0x8D, - 0xA1,0x97,0x95,0x9A,0x90,0x85,0x85,0x88,0x8E,0x86,0x8A,0x96,0x94,0x88,0x82,0x7D, - 0x73,0x6F,0x6E,0x79,0x7B,0x6F,0x74,0x6B,0x61,0x61,0x5B,0x71,0x72,0x65,0x74,0x76, - 0x6B,0x67,0x6A,0x6A,0x6E,0x6A,0x76,0x81,0x74,0x73,0x78,0x76,0x6E,0x70,0x77,0x7F, - 0x7C,0x76,0x70,0x68,0x67,0x6B,0x7C,0x7F,0x78,0x85,0x81,0x6C,0x72,0x74,0x7B,0x8B, - 0x8D,0xA3,0xB1,0xAA,0xAA,0xAA,0x9D,0x94,0x9A,0x98,0x99,0x9C,0x94,0x91,0x8D,0x85, - 0x8C,0x9A,0x92,0x8A,0x97,0x8D,0x7B,0x77,0x7A,0x88,0x85,0x85,0x8D,0x91,0x89,0x84, - 0x88,0x7F,0x80,0x82,0x83,0x86,0x83,0x7F,0x7A,0x7F,0x7C,0x89,0x96,0x80,0x81,0x8C, - 0x7C,0x72,0x71,0x78,0x84,0x80,0x8C,0x9B,0x9C,0x99,0x94,0x90,0x90,0x8A,0x8B,0x98, - 0x97,0x95,0x8F,0x8F,0x8D,0x87,0x9A,0x9D,0x8B,0x91,0x94,0x81,0x6F,0x6E,0x73,0x70, - 0x6A,0x70,0x79,0x71,0x6E,0x6A,0x63,0x64,0x5C,0x63,0x69,0x6C,0x6E,0x5F,0x63,0x5D, - 0x61,0x78,0x74,0x70,0x7A,0x74,0x65,0x5D,0x5F,0x6E,0x72,0x6D,0x79,0x7F,0x70,0x6A, - 0x62,0x61,0x65,0x64,0x6F,0x77,0x75,0x6F,0x6C,0x6D,0x77,0x8E,0x9F,0x99,0xA6,0xAC, - 0x9C,0x94,0x8E,0x96,0x98,0x98,0xA2,0xA8,0xA0,0x99,0x8E,0x8B,0x89,0x84,0x88,0x91, - 0x90,0x84,0x7E,0x7B,0x7B,0x7F,0x9A,0x9C,0x8A,0x92,0x8F,0x7F,0x76,0x76,0x81,0x86, - 0x80,0x8A,0x8F,0x8A,0x84,0x7E,0x7E,0x7C,0x7B,0x7F,0x8B,0x8B,0x7B,0x73,0x78,0x79, - 0x88,0x9A,0x95,0x97,0x9E,0x8C,0x80,0x7F,0x8C,0x98,0x8C,0x94,0xA1,0x9A,0x93,0x8B, - 0x8D,0x8E,0x89,0x86,0x90,0x92,0x8A,0x7F,0x74,0x72,0x71,0x83,0x86,0x78,0x7A,0x77, - 0x62,0x56,0x59,0x65,0x65,0x5D,0x6B,0x74,0x6C,0x65,0x62,0x65,0x68,0x63,0x64,0x73, - 0x76,0x6F,0x66,0x5E,0x62,0x76,0x8C,0x81,0x77,0x84,0x7A,0x66,0x5C,0x5F,0x70,0x70, - 0x6A,0x79,0x7F,0x76,0x72,0x6F,0x72,0x7D,0x7E,0x8C,0x9A,0x9C,0x9E,0x94,0x91,0x95, - 0xA7,0xB5,0xAD,0xA9,0xAD,0x9B,0x8C,0x85,0x86,0x92,0x8D,0x88,0x93,0x93,0x87,0x82, - 0x7E,0x80,0x85,0x7E,0x86,0x8F,0x89,0x82,0x75,0x72,0x76,0x8A,0x94,0x88,0x8D,0x91, - 0x83,0x72,0x6D,0x77,0x80,0x7C,0x7E,0x89,0x87,0x85,0x82,0x76,0x81,0x86,0x82,0x8B, - 0x90,0x93,0x8A,0x83,0x88,0x85,0x9B,0xA7,0x99,0x9D,0x9D,0x90,0x86,0x7F,0x82,0x8E, - 0x83,0x83,0x94,0x8D,0x88,0x7A,0x6D,0x79,0x74,0x69,0x71,0x79,0x75,0x6A,0x61,0x60, - 0x63,0x70,0x7D,0x72,0x71,0x79,0x6C,0x5D,0x5A,0x5C,0x67,0x63,0x60,0x6F,0x72,0x71, - 0x6F,0x6A,0x6F,0x70,0x64,0x65,0x70,0x72,0x6C,0x60,0x60,0x62,0x6D,0x7C,0x72,0x73, - 0x7C,0x77,0x70,0x69,0x6F,0x83,0x82,0x81,0x92,0x9F,0xAB,0xA8,0x9E,0xA6,0xA3,0x98, - 0x96,0x9E,0xA0,0x9B,0x95,0x8C,0x85,0x8A,0x9C,0x95,0x89,0x93,0x8E,0x81,0x7A,0x73, - 0x80,0x7F,0x73,0x7A,0x83,0x86,0x84,0x81,0x7E,0x82,0x7B,0x73,0x78,0x7B,0x7F,0x7F, - 0x7B,0x7C,0x76,0x88,0x96,0x86,0x88,0x8C,0x85,0x85,0x7D,0x79,0x88,0x85,0x84,0x8B, - 0x8D,0x96,0x93,0x8F,0x96,0x92,0x8B,0x89,0x89,0x8A,0x8C,0x8D,0x89,0x8C,0x84,0x85, - 0x8E,0x80,0x83,0x82,0x78,0x7F,0x78,0x71,0x75,0x6E,0x6F,0x73,0x6D,0x6E,0x73,0x6D, - 0x6C,0x6C,0x67,0x6A,0x6A,0x69,0x6E,0x6F,0x6C,0x6C,0x6A,0x69,0x6D,0x6E,0x6F,0x70, - 0x6E,0x70,0x71,0x6D,0x6D,0x6E,0x6F,0x6F,0x6E,0x6B,0x6C,0x6D,0x6C,0x6E,0x71,0x75, - 0x7B,0x7E,0x85,0x8B,0x8E,0x95,0x9A,0x9E,0x9E,0xA2,0xAA,0xA9,0xA2,0xA4,0xA4,0xA0, - 0xA1,0x9A,0x97,0x9A,0x94,0x8D,0x89,0x85,0x86,0x82,0x7F,0x7F,0x7C,0x7F,0x7F,0x7A, - 0x7B,0x7E,0x7C,0x7C,0x7A,0x7B,0x7E,0x7B,0x7F,0x81,0x7B,0x7A,0x81,0x85,0x87,0x84, - 0x83,0x8B,0x87,0x83,0x86,0x85,0x89,0x8A,0x81,0x88,0x8D,0x8D,0x94,0x92,0x94,0x97, - 0x93,0x94,0x93,0x91,0x91,0x8E,0x91,0x99,0x94,0x90,0x8D,0x8C,0x8D,0x84,0x7E,0x83, - 0x80,0x7B,0x79,0x78,0x7C,0x7A,0x70,0x77,0x7C,0x74,0x76,0x72,0x74,0x77,0x6D,0x6E, - 0x74,0x71,0x6F,0x68,0x76,0x80,0x70,0x72,0x75,0x77,0x76,0x67,0x6B,0x76,0x69,0x65, - 0x6A,0x69,0x71,0x6A,0x66,0x73,0x73,0x6D,0x6B,0x6C,0x74,0x72,0x71,0x7D,0x80,0x80, - 0x79,0x8B,0xA7,0x9D,0x98,0xAA,0xB2,0xAA,0x97,0x98,0xA9,0x9B,0x8D,0x94,0x9C,0x9C, - 0x93,0x8A,0x98,0x96,0x82,0x7F,0x84,0x82,0x7B,0x79,0x7F,0x7D,0x77,0x6E,0x77,0x93, - 0x84,0x75,0x85,0x88,0x80,0x6F,0x6C,0x80,0x7A,0x6A,0x77,0x84,0x87,0x81,0x7D,0x8C, - 0x8E,0x7D,0x7D,0x88,0x8A,0x84,0x80,0x8F,0x96,0x89,0x81,0x8A,0xA6,0x9F,0x8B,0x9D, - 0xA2,0x9A,0x8A,0x80,0x92,0x91,0x77,0x7E,0x90,0x8D,0x83,0x7E,0x8B,0x8F,0x7B,0x74, - 0x82,0x7D,0x74,0x72,0x78,0x7F,0x73,0x6A,0x6A,0x80,0x84,0x6D,0x76,0x80,0x77,0x6D, - 0x62,0x6F,0x74,0x5F,0x5E,0x6F,0x74,0x6B,0x67,0x70,0x7A,0x6A,0x5E,0x6D,0x6D,0x5F, - 0x5F,0x67,0x6C,0x66,0x61,0x5F,0x68,0x82,0x72,0x6E,0x89,0x87,0x7F,0x7F,0x82,0x90, - 0x8E,0x85,0x97,0xA5,0xA2,0x9F,0x9F,0xAC,0xAB,0x95,0x9B,0xA4,0x91,0x8B,0x8F,0x8E, - 0x8A,0x7F,0x80,0x76,0x7E,0x92,0x7B,0x79,0x88,0x7C,0x74,0x6C,0x6B,0x73,0x66,0x61, - 0x71,0x76,0x6E,0x71,0x77,0x80,0x7E,0x73,0x7F,0x82,0x77,0x77,0x80,0x81,0x7E,0x7F, - 0x83,0x80,0x87,0xA0,0x8F,0x8C,0x9E,0x96,0x91,0x8B,0x88,0x8F,0x85,0x7B,0x88,0x8A, - 0x84,0x86,0x88,0x8C,0x8C,0x82,0x85,0x89,0x81,0x7C,0x7C,0x7C,0x7C,0x79,0x7B,0x79, - 0x6F,0x88,0x87,0x71,0x83,0x83,0x7C,0x78,0x6D,0x77,0x77,0x65,0x69,0x76,0x72,0x6D, - 0x6F,0x76,0x79,0x75,0x72,0x7B,0x7B,0x6E,0x70,0x72,0x6E,0x6C,0x6D,0x72,0x6C,0x69, - 0x81,0x7A,0x72,0x81,0x7E,0x80,0x7A,0x76,0x81,0x7B,0x71,0x79,0x80,0x80,0x81,0x84, - 0x8E,0x90,0x8A,0x8F,0x95,0x8D,0x87,0x88,0x8A,0x83,0x7F,0x84,0x86,0x7F,0x79,0x88, - 0x86,0x78,0x83,0x80,0x7C,0x7D,0x71,0x7A,0x7A,0x6C,0x71,0x74,0x73,0x74,0x73,0x78, - 0x79,0x77,0x79,0x7D,0x7D,0x7B,0x7C,0x7D,0x7D,0x7E,0x7F,0x80,0x82,0x82,0x83,0x87, - 0x86,0x7E,0x86,0x87,0x83,0x86,0x84,0x89,0x88,0x85,0x89,0x89,0x87,0x86,0x85,0x88, - 0x85,0x83,0x87,0x85,0x87,0x86,0x85,0x8A,0x87,0x86,0x89,0x87,0x85,0x87,0x84,0x83, - 0x85,0x82,0x80,0x81,0x83,0x80,0x80,0x81,0x80,0x80,0x7E,0x7E,0x7E,0x7C,0x7C,0x7C, - 0x7E,0x7E,0x7C,0x7F,0x7F,0x7E,0x7E,0x7B,0x7F,0x7E,0x7C,0x81,0x81,0x7E,0x81,0x80, - 0x82,0x83,0x82,0x83,0x86,0x84,0x83,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x86, - 0x84,0x84,0x84,0x82,0x82,0x81,0x82,0x82,0x82,0x80,0x80,0x80,0x7C,0x7E,0x7B,0x7A, - 0x7B,0x7B,0x7C,0x7B,0x7A,0x79,0x7A,0x7B,0x7A,0x78,0x7B,0x79,0x79,0x7A,0x7A,0x7B, - 0x7B,0x7D,0x7D,0x7E,0x7D,0x80,0x7F,0x7E,0x7F,0x80,0x81,0x81,0x82,0x80,0x82,0x82, - 0x84,0x83,0x83,0x85,0x84,0x84,0x85,0x84,0x84,0x85,0x84,0x84,0x85,0x84,0x84,0x86, - 0x87,0x87,0x85,0x85,0x87,0x85,0x84,0x84,0x84,0x85,0x84,0x82,0x84,0x84,0x83,0x85, - 0x85,0x83,0x82,0x84,0x82,0x81,0x82,0x80,0x82,0x82,0x81,0x81,0x80,0x81,0x82,0x82, - 0x81,0x80,0x81,0x81,0x7F,0x81,0x80,0x81,0x81,0x82,0x83,0x82,0x82,0x84,0x85,0x82, - 0x83,0x85,0x86,0x85,0x85,0x87,0x86,0x86,0x87,0x88,0x86,0x86,0x87,0x87,0x86,0x87, - 0x85,0x86,0x86,0x83,0x83,0x83,0x83,0x81,0x80,0x80,0x7E,0x7E,0x7F,0x7F,0x7E,0x7F, - 0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7D,0x7D,0x80,0x7F,0x80,0x81,0x80, - 0x80,0x80,0x80,0x80,0x7F,0x80,0x81,0x80,0x81,0x84,0x82,0x83,0x84,0x82,0x82,0x83, - 0x81,0x81,0x82,0x81,0x81,0x81,0x80,0x82,0x81,0x81,0x83,0x82,0x82,0x82,0x81,0x83, - 0x82,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x80,0x7F,0x80,0x80,0x81, - 0x7F,0x7F,0x80,0x7F,0x7E,0x80,0x80,0x7E,0x80,0x7F,0x7D,0x7E,0x7E,0x7C,0x7D,0x7E, - 0x7E,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x7F, - 0x81,0x81,0x80,0x81,0x81,0x80,0x80,0x7F,0x80,0x80,0x7F,0x80,0x7F,0x80,0x80,0x7F, - 0x7E,0x7F,0x7F,0x7C,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7E,0x7D,0x7C, - 0x7B,0x7C,0x7C,0x7C,0x7C,0x7D,0x7D,0x7C,0x7C,0x7D,0x7C,0x7B,0x7C,0x7C,0x7E,0x7D, - 0x7E,0x7D,0x7D,0x7E,0x7D,0x80,0x7E,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7D,0x7E,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7E,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x7E,0x80,0x7E,0x7F,0x7F,0x7E,0x7D,0x7F,0x80,0x7E,0x80,0x80,0x81,0x7F,0x7F,0x7F, - 0x7E,0x7F,0x7D,0x7F,0x7F,0x7E,0x7F,0x7F,0x7E,0x7E,0x7E,0x7F,0x7E,0x7F,0x7F,0x7D, - 0x7F,0x7E,0x7D,0x7F,0x7F,0x7F,0x81,0x80,0x80,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x7F, - 0x82,0x80,0x7E,0x81,0x80,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x7F,0x81,0x80,0x7F, - 0x81,0x7E,0x7F,0x7E,0x7D,0x80,0x7E,0x7E,0x7F,0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7D, - 0x7F,0x7E,0x7C,0x80,0x7D,0x7E,0x7F,0x7E,0x81,0x7E,0x81,0x7F,0x7E,0x82,0x80,0x7F, - 0x80,0x80,0x7F,0x81,0x81,0x82,0x7F,0x7F,0x80,0x80,0x80,0x80,0x81,0x83,0x81,0x7F, - 0x82,0x81,0x81,0x81,0x7D,0x81,0x80,0x81,0x82,0x80,0x83,0x82,0x80,0x82,0x80,0x81, - 0x80,0x7F,0x83,0x80,0x80,0x81,0x81,0x82,0x81,0x82,0x81,0x81,0x81,0x81,0x81,0x7D, - 0x80,0x81,0x80,0x81,0x7F,0x82,0x81,0x8C,0x84,0x81,0x85,0x67,0x78,0x80,0x6D,0x69, - 0x77,0x7E,0x85,0x8C,0x87,0x8C,0x86,0x91,0xA1,0x9D,0xA4,0xA3,0x93,0x8E,0x79,0x82, - 0x92,0x76,0x70,0x76,0x6F,0x58,0x5A,0x52,0x51,0x71,0x6A,0x65,0x55,0x5E,0x70,0x6B, - 0x73,0x77,0x81,0x83,0x94,0x95,0x93,0x9B,0xB0,0xAC,0x85,0xBE,0xAF,0x98,0xB6,0x9B, - 0xB0,0xB5,0xA0,0x94,0x8B,0x94,0x9A,0x7B,0x6E,0x79,0x66,0x75,0x6F,0x6B,0x7F,0x68, - 0x63,0x68,0x6F,0x7C,0x6C,0x50,0x4E,0x55,0x5A,0x60,0x64,0x5E,0x56,0x5A,0x6E,0x6F, - 0x78,0x88,0x89,0xA1,0xA9,0x9D,0x91,0x95,0x90,0x8D,0x9A,0xA3,0xB4,0xB1,0x9F,0xA8, - 0xA9,0xA4,0xAB,0x9E,0x9B,0x95,0x8B,0x80,0x77,0x7C,0x70,0x76,0x76,0x75,0x84,0x77, - 0x6E,0x65,0x55,0x5E,0x61,0x50,0x44,0x4F,0x4F,0x3B,0x3A,0x46,0x5D,0x5A,0x62,0x74, - 0x6F,0x7F,0x92,0x90,0x98,0x8A,0x81,0xA0,0x98,0x9A,0xA5,0x93,0xA1,0xB1,0xB6,0xC5, - 0xBA,0xB1,0xC4,0xBB,0xB4,0xC1,0xA7,0x9A,0xAB,0x9C,0x9A,0x99,0x85,0x7B,0x71,0x6B, - 0x70,0x75,0x69,0x63,0x57,0x55,0x5D,0x57,0x56,0x50,0x5A,0x5F,0x4A,0x4B,0x44,0x4E, - 0x5C,0x5B,0x67,0x69,0x71,0x85,0x83,0x8D,0x9A,0x8A,0x9A,0x9F,0x9E,0xB0,0xAE,0xB7, - 0xB5,0xB5,0xB6,0xAF,0xB4,0xA6,0x9E,0xAC,0xA4,0xA5,0xA3,0x99,0x9A,0x98,0x92,0x8F, - 0x83,0x76,0x68,0x63,0x59,0x5F,0x60,0x49,0x50,0x5B,0x5D,0x4F,0x2D,0x22,0x2C,0x39, - 0x43,0x44,0x3D,0x3F,0x47,0x47,0x44,0x4B,0x4F,0x5A,0x5F,0x5A,0x66,0x6F,0x82,0x82, - 0x85,0xAD,0xBE,0xBB,0xAC,0xA5,0xB7,0xBD,0xC1,0xCE,0xC7,0xC9,0xC6,0xAA,0x93,0x92, - 0xA1,0xA1,0xAD,0xB1,0xA0,0xA4,0xA4,0xA3,0xA4,0x9A,0x9E,0xA2,0xA0,0xA4,0x9C,0x91, - 0x82,0x75,0x7A,0x8B,0x86,0x70,0x62,0x60,0x5E,0x60,0x65,0x5F,0x56,0x52,0x63,0x58, - 0x4E,0x45,0x48,0x63,0x5C,0x67,0x6F,0x6B,0x6C,0x70,0x76,0x6C,0x65,0x78,0x88,0x8C, - 0x93,0x84,0x87,0x83,0x65,0x76,0x7D,0x7A,0x7D,0x83,0x97,0x91,0x85,0x8C,0x91,0x84, - 0x8A,0x90,0x8F,0x8B,0x84,0x8E,0xA3,0xA2,0x94,0xA4,0xA9,0x9A,0x8F,0x91,0x99,0x91, - 0x91,0x95,0x9C,0x98,0x8D,0x94,0x86,0x78,0x77,0x78,0x76,0x62,0x66,0x7B,0x78,0x71, - 0x78,0x79,0x73,0x6F,0x6C,0x75,0x6E,0x59,0x57,0x5B,0x5A,0x5B,0x66,0x5E,0x50,0x57, - 0x60,0x67,0x5B,0x51,0x6B,0x77,0x6E,0x71,0x79,0x7A,0x6C,0x74,0x82,0x86,0x91,0x8F, - 0x9C,0x9B,0x89,0x95,0x9E,0xA1,0xA6,0xA2,0xA0,0x94,0x8A,0x9D,0xA7,0xA7,0xAA,0xAD, - 0xAA,0xA7,0xA5,0xA4,0xAB,0x9D,0xA4,0xBF,0xB9,0xAD,0x9F,0xA2,0xAD,0xB2,0xAF,0x99, - 0x90,0x8D,0x9A,0xAA,0x92,0x8A,0x97,0x88,0x77,0x66,0x6A,0x6C,0x5A,0x52,0x51,0x54, - 0x49,0x3F,0x4C,0x5E,0x58,0x4B,0x51,0x48,0x44,0x4B,0x58,0x5F,0x52,0x59,0x58,0x4A, - 0x41,0x3E,0x4B,0x53,0x50,0x50,0x54,0x53,0x48,0x4E,0x62,0x68,0x6B,0x6E,0x78,0x8A, - 0x81,0x8F,0xA5,0x9E,0xA7,0xB2,0xAE,0xAB,0xA5,0xAE,0xB7,0xAE,0xA6,0xA0,0xA6,0x99, - 0x88,0x95,0x92,0x94,0xA3,0x91,0x8A,0x92,0x86,0x9D,0xBE,0xA2,0x90,0x98,0x8B,0x93, - 0xA3,0x95,0x97,0x96,0x8C,0x9D,0x99,0x8A,0x85,0x7A,0x88,0x8A,0x78,0x79,0x7D,0x77, - 0x7D,0x95,0x97,0x8E,0x8C,0x81,0x85,0x83,0x7E,0x8B,0x96,0x89,0x78,0x75,0x6D,0x68, - 0x83,0x9A,0x92,0x7F,0x69,0x70,0x78,0x6F,0x5F,0x59,0x62,0x5A,0x5B,0x5D,0x55,0x55, - 0x4E,0x51,0x63,0x5E,0x4C,0x4D,0x50,0x59,0x5C,0x61,0x6B,0x6E,0x68,0x69,0x71,0x6F, - 0x84,0x8E,0x7F,0x78,0x71,0x6C,0x6E,0x74,0x83,0x8F,0x7F,0x80,0x89,0x83,0x89,0x8F, - 0xA2,0xB9,0xB7,0xAE,0xAD,0xA9,0xAE,0xAB,0xB0,0xC5,0xB6,0x98,0x94,0xA1,0xAD,0xA5, - 0x9A,0xA1,0x9D,0x88,0x83,0x83,0x79,0x7D,0x83,0x88,0x87,0x77,0x6E,0x76,0x75,0x80, - 0x8B,0x81,0x83,0x88,0x80,0x76,0x6A,0x75,0x81,0x79,0x6A,0x5E,0x61,0x69,0x72,0x7C, - 0x80,0x7C,0x6F,0x72,0x76,0x80,0x80,0x6C,0x80,0x91,0x83,0x81,0x7F,0x80,0x85,0x85, - 0x92,0x99,0x80,0x6B,0x70,0x76,0x73,0x73,0x73,0x6C,0x69,0x65,0x68,0x61,0x65,0x80, - 0x7A,0x62,0x5B,0x59,0x59,0x6A,0x77,0x7B,0x81,0x76,0x6B,0x76,0x7F,0x7D,0x7E,0x81, - 0x8A,0x82,0x6A,0x67,0x6C,0x6B,0x74,0x89,0x8F,0x84,0x75,0x7D,0x8D,0x8F,0x94,0x9A, - 0xA6,0xA6,0x9E,0x9F,0xA1,0xAF,0xBB,0xBC,0xBE,0xB9,0xB1,0xB0,0xA4,0xA2,0xAE,0xA1, - 0x8F,0x8B,0x85,0x81,0x7F,0x83,0x91,0x94,0x87,0x7D,0x79,0x78,0x74,0x74,0x7D,0x81, - 0x6F,0x5B,0x63,0x6A,0x62,0x67,0x7A,0x82,0x74,0x69,0x60,0x65,0x6A,0x6E,0x7C,0x76, - 0x6C,0x66,0x67,0x76,0x7F,0x7F,0x86,0x87,0x87,0x89,0x80,0x76,0x81,0x90,0x86,0x7C, - 0x76,0x67,0x64,0x6C,0x79,0x7F,0x7C,0x6C,0x63,0x6D,0x6F,0x68,0x63,0x6D,0x6D,0x63, - 0x61,0x67,0x6A,0x6C,0x86,0x88,0x70,0x68,0x61,0x69,0x72,0x72,0x81,0x7D,0x70,0x73, - 0x77,0x7F,0x82,0x81,0x88,0x8B,0x82,0x77,0x78,0x74,0x7C,0x9E,0x9D,0x8C,0x8C,0x90, - 0x99,0x9C,0xA0,0xAB,0xB7,0xAF,0xAB,0xAA,0xA5,0xAD,0xAF,0xB3,0xB7,0xAE,0x9C,0x9A, - 0x9A,0x99,0xB1,0xAF,0xA1,0x9A,0x87,0x88,0x91,0x8C,0x94,0x9C,0x8F,0x7E,0x78,0x7B, - 0x7F,0x83,0x89,0x86,0x7E,0x77,0x79,0x6F,0x67,0x81,0x84,0x76,0x73,0x6D,0x6A,0x69, - 0x75,0x7E,0x80,0x86,0x76,0x6E,0x71,0x76,0x78,0x75,0x7D,0x74,0x62,0x69,0x68,0x69, - 0x7B,0x86,0x78,0x6E,0x69,0x5E,0x67,0x6F,0x75,0x79,0x6A,0x58,0x63,0x5E,0x44,0x56, - 0x69,0x6D,0x56,0x59,0x6C,0x45,0x43,0x64,0x72,0x68,0x63,0x62,0x4A,0x53,0x67,0x72, - 0x71,0x6F,0x73,0x66,0x5F,0x63,0x6D,0x79,0x7D,0x7D,0x7B,0x71,0x6B,0x74,0x84,0x97, - 0x94,0x92,0x93,0x90,0xA1,0xAC,0xB5,0xC1,0xC3,0xBC,0xAE,0xB5,0xBC,0xB4,0xBA,0xBE, - 0xBB,0xB1,0xA4,0xA1,0x9E,0xA5,0xB4,0xB3,0x9E,0x8A,0x8A,0x88,0x88,0x90,0x95,0x94, - 0x87,0x7F,0x7F,0x8A,0x98,0x8D,0x94,0xA2,0x96,0x89,0x8D,0x91,0x95,0xA4,0xA3,0x99, - 0x8F,0x8A,0x92,0x90,0x93,0xA0,0xA2,0x9A,0x91,0x87,0x84,0x89,0x8D,0x8E,0x8B,0x86, - 0x75,0x71,0x77,0x75,0x86,0x93,0x85,0x6D,0x67,0x66,0x64,0x63,0x65,0x72,0x6E,0x56, - 0x45,0x43,0x57,0x5D,0x59,0x5E,0x53,0x45,0x41,0x44,0x42,0x4B,0x63,0x62,0x4F,0x46, - 0x3E,0x41,0x4C,0x52,0x5D,0x5A,0x45,0x3B,0x44,0x56,0x5E,0x61,0x68,0x67,0x63,0x69, - 0x72,0x72,0x71,0x87,0x9C,0x97,0x88,0x81,0x8C,0x98,0x9D,0xA3,0xA8,0x9D,0x8D,0x91, - 0x95,0x99,0x99,0x95,0x9A,0x99,0x84,0x80,0x88,0x84,0x91,0xA3,0x9A,0x85,0x7C,0x7C, - 0x86,0x8B,0x8F,0x9D,0x9D,0x8B,0x87,0x8B,0x97,0x9E,0x9E,0xAA,0xA9,0x9B,0x8F,0x8E, - 0x92,0x9B,0xB4,0xBB,0xA6,0x9C,0x9A,0x9F,0xA9,0xA7,0xAD,0xB3,0xA2,0x92,0x8D,0x95, - 0x99,0x96,0x9C,0x99,0x90,0x85,0x83,0x89,0x87,0x98,0x9E,0x8A,0x81,0x78,0x75,0x7C, - 0x7A,0x7C,0x83,0x79,0x66,0x5E,0x64,0x6C,0x6C,0x6A,0x6A,0x61,0x55,0x54,0x56,0x51, - 0x5A,0x6F,0x6E,0x5F,0x58,0x57,0x5D,0x64,0x6A,0x72,0x71,0x68,0x5E,0x64,0x76,0x7D, - 0x81,0x89,0x8E,0x8B,0x85,0x8A,0x8A,0x94,0xAA,0xA8,0x9A,0x8A,0x7E,0x83,0x89,0x8D, - 0x95,0x8D,0x7B,0x71,0x70,0x77,0x7B,0x78,0x7A,0x78,0x6B,0x5E,0x62,0x61,0x68,0x7E, - 0x80,0x72,0x64,0x5A,0x62,0x70,0x79,0x82,0x85,0x7D,0x73,0x75,0x7D,0x84,0x85,0x8D, - 0x96,0x8C,0x7F,0x7D,0x80,0x8C,0xA2,0xA3,0x91,0x86,0x81,0x83,0x87,0x8A,0x93,0x96, - 0x8D,0x82,0x7E,0x81,0x82,0x81,0x8A,0x8E,0x7F,0x72,0x71,0x6B,0x74,0x8D,0x8A,0x7C, - 0x72,0x6B,0x6C,0x6D,0x70,0x7A,0x80,0x73,0x66,0x62,0x67,0x6F,0x71,0x75,0x73,0x66, - 0x5F,0x5C,0x5D,0x6F,0x81,0x7C,0x73,0x70,0x69,0x68,0x6E,0x7B,0x89,0x8D,0x84,0x7C, - 0x7C,0x85,0x93,0x9E,0xA9,0xA6,0x95,0x92,0x90,0x92,0xA7,0xB1,0xA8,0x9C,0x93,0x88, - 0x87,0x8C,0x96,0xA2,0x97,0x84,0x7C,0x77,0x7D,0x85,0x89,0x8F,0x80,0x71,0x6E,0x69, - 0x76,0x8D,0x8B,0x7E,0x7A,0x73,0x6E,0x6D,0x7A,0x8B,0x8C,0x84,0x79,0x77,0x78,0x7E, - 0x8C,0x95,0x95,0x88,0x7F,0x7E,0x81,0x96,0xA1,0x95,0x8E,0x8A,0x80,0x7D,0x83,0x92, - 0x9B,0x8F,0x85,0x7F,0x7B,0x80,0x84,0x89,0x8F,0x86,0x78,0x72,0x6D,0x7A,0x90,0x8C, - 0x81,0x7E,0x74,0x6B,0x6B,0x75,0x84,0x89,0x7D,0x70,0x6B,0x6C,0x72,0x77,0x7F,0x7F, - 0x73,0x6B,0x64,0x67,0x7F,0x8D,0x81,0x7C,0x7D,0x72,0x70,0x77,0x89,0x97,0x8C,0x83, - 0x83,0x7F,0x81,0x88,0x92,0x99,0x91,0x85,0x7D,0x75,0x84,0x9B,0x99,0x8D,0x89,0x7E, - 0x73,0x72,0x7C,0x8F,0x8F,0x81,0x7A,0x74,0x72,0x74,0x7B,0x87,0x87,0x7A,0x6E,0x66, - 0x69,0x82,0x90,0x83,0x7D,0x7B,0x70,0x6C,0x6E,0x7E,0x8C,0x84,0x7A,0x78,0x74,0x76, - 0x7D,0x84,0x8E,0x8A,0x7F,0x77,0x6F,0x7F,0x98,0x94,0x8B,0x88,0x7C,0x75,0x76,0x7D, - 0x8E,0x91,0x85,0x7C,0x79,0x77,0x79,0x7E,0x87,0x8A,0x7E,0x71,0x6A,0x6F,0x86,0x90, - 0x85,0x81,0x7B,0x74,0x73,0x71,0x80,0x8E,0x88,0x7D,0x78,0x75,0x76,0x7A,0x81,0x89, - 0x85,0x7A,0x71,0x6C,0x7C,0x93,0x90,0x86,0x84,0x7F,0x78,0x76,0x82,0x94,0x97,0x8A, - 0x83,0x82,0x80,0x84,0x8B,0x91,0x92,0x88,0x7E,0x74,0x7A,0x91,0x97,0x89,0x84,0x83, - 0x7C,0x77,0x78,0x88,0x92,0x89,0x80,0x7E,0x79,0x79,0x7D,0x84,0x8C,0x85,0x79,0x6F, - 0x6C,0x80,0x92,0x8A,0x80,0x7E,0x76,0x72,0x71,0x79,0x8B,0x8B,0x80,0x7A,0x77,0x79, - 0x7B,0x7E,0x89,0x8D,0x82,0x77,0x70,0x7B,0x92,0x93,0x88,0x86,0x83,0x7D,0x77,0x78, - 0x87,0x90,0x8B,0x81,0x7B,0x78,0x79,0x7E,0x86,0x8C,0x86,0x79,0x6E,0x6E,0x81,0x90, - 0x89,0x7F,0x7E,0x7A,0x76,0x71,0x7A,0x89,0x8A,0x81,0x78,0x77,0x78,0x7A,0x7D,0x84, - 0x87,0x7E,0x73,0x6D,0x7C,0x92,0x90,0x83,0x80,0x7F,0x7D,0x77,0x78,0x88,0x91,0x8D, - 0x80,0x7A,0x7D,0x81,0x81,0x87,0x8D,0x86,0x7B,0x6F,0x74,0x8B,0x93,0x87,0x80,0x7E, - 0x7C,0x78,0x73,0x7F,0x8B,0x89,0x7F,0x74,0x74,0x7B,0x7E,0x81,0x86,0x84,0x7D,0x72, - 0x6E,0x81,0x91,0x8F,0x84,0x7C,0x7C,0x7C,0x75,0x78,0x86,0x8B,0x84,0x77,0x72,0x76, - 0x7B,0x7E,0x81,0x82,0x7D,0x75,0x6E,0x7A,0x8F,0x91,0x88,0x7E,0x7C,0x81,0x7D,0x7B, - 0x88,0x8F,0x8D,0x84,0x7B,0x7B,0x81,0x86,0x8D,0x8F,0x88,0x7F,0x71,0x71,0x81,0x88, - 0x84,0x7D,0x7A,0x7C,0x78,0x72,0x78,0x80,0x85,0x81,0x77,0x76,0x7D,0x83,0x88,0x88, - 0x84,0x7F,0x75,0x72,0x83,0x8E,0x88,0x7A,0x73,0x76,0x78,0x77,0x7D,0x85,0x89,0x89, - 0x81,0x7B,0x7F,0x85,0x88,0x8B,0x87,0x84,0x7A,0x71,0x80,0x90,0x91,0x87,0x79,0x72, - 0x72,0x71,0x78,0x83,0x8B,0x89,0x7B,0x72,0x72,0x78,0x7E,0x81,0x7F,0x80,0x7E,0x75, - 0x7D,0x89,0x8F,0x90,0x8A,0x8A,0x8B,0x83,0x81,0x8A,0x92,0x95,0x8C,0x7F,0x7A,0x78, - 0x79,0x79,0x76,0x77,0x72,0x6B,0x73,0x82,0x8C,0x87,0x79,0x74,0x75,0x75,0x79,0x7C, - 0x84,0x89,0x7E,0x77,0x74,0x77,0x84,0x86,0x89,0x8C,0x82,0x74,0x75,0x84,0x92,0x94, - 0x87,0x7F,0x78,0x6D,0x74,0x82,0x8B,0x98,0x9A,0x8C,0x81,0x7C,0x7D,0x84,0x83,0x7F, - 0x7D,0x6F,0x6A,0x7C,0x88,0x94,0x90,0x71,0x70,0x75,0x69,0x61,0x65,0x7E,0x80,0x7F, - 0x79,0x86,0x95,0x95,0xAF,0xB6,0xB5,0xAD,0x99,0x99,0x9E,0x8F,0x8E,0x7B,0x5D,0x5A, - 0x58,0x56,0x50,0x5F,0x69,0x79,0x78,0x74,0x84,0x89,0x9B,0xAA,0x9B,0x78,0x7E,0x87, - 0x7C,0x7D,0x74,0x74,0x7F,0x89,0x8A,0x84,0x7B,0x88,0x96,0x94,0x83,0x62,0x57,0x6A, - 0x75,0x8E,0x8F,0x77,0x64,0x62,0x86,0x8A,0x77,0x73,0x77,0x7C,0x79,0x77,0x80,0x8E, - 0x9B,0x94,0x90,0x92,0x7B,0x78,0x6E,0x60,0x71,0x7A,0x6F,0x7C,0x93,0x80,0x79,0x6F, - 0x7C,0x91,0x96,0xB2,0xA5,0x94,0x8C,0x84,0x84,0x82,0x86,0x81,0x91,0x98,0xA5,0xAF, - 0x87,0x7A,0x87,0x90,0x90,0x83,0x81,0x72,0x62,0x59,0x47,0x4F,0x54,0x51,0x5F,0x74, - 0x72,0x5F,0x68,0x81,0x7B,0x6B,0x74,0x7D,0x7B,0x94,0xA7,0x9C,0x8A,0x8F,0xA3,0x9F, - 0x94,0x8E,0x87,0x7C,0x8B,0x96,0xA0,0xA3,0x8E,0x89,0x81,0x75,0x68,0x56,0x64,0x5E, - 0x55,0x70,0x7A,0x6C,0x5E,0x60,0x75,0x87,0x88,0x96,0x93,0x85,0x8E,0x88,0x8B,0x8F, - 0x77,0x7C,0x94,0x9C,0xA6,0x98,0x93,0x98,0x90,0x8E,0x7E,0x73,0x64,0x5D,0x67,0x6F, - 0x76,0x6B,0x77,0x8A,0x89,0x86,0x67,0x68,0x76,0x7D,0x89,0x73,0x6D,0x7C,0x7F,0x94, - 0xA8,0x9B,0x86,0x72,0x83,0x91,0x80,0x7D,0x75,0x73,0x81,0x94,0x80,0x65,0x74,0x78, - 0x80,0x8A,0x7C,0x72,0x75,0x74,0x6C,0x6E,0x67,0x63,0x64,0x6E,0x87,0x84,0x7F,0x94, - 0xA1,0x9A,0xA1,0xA1,0xA1,0x97,0x87,0x98,0xA1,0x96,0x82,0x7C,0x8A,0x99,0x9B,0x96, - 0xA1,0x8C,0x6E,0x73,0x7F,0x71,0x58,0x5B,0x65,0x6E,0x6A,0x5C,0x5F,0x6B,0x6B,0x73, - 0x7B,0x73,0x6E,0x7A,0x96,0x9E,0x9F,0x99,0x90,0x7D,0x71,0x8F,0x9F,0x7F,0x76,0x83, - 0x89,0x8A,0x70,0x76,0x80,0x7A,0x82,0x77,0x76,0x6E,0x65,0x6D,0x7C,0x8C,0x84,0x8C, - 0x85,0x70,0x89,0x97,0x86,0x7E,0x8E,0x90,0x8C,0x94,0x8B,0x80,0x8F,0x98,0x9F,0xA7, - 0x90,0x75,0x6C,0x73,0x68,0x68,0x89,0x8D,0x85,0x76,0x73,0x75,0x6C,0x77,0x7E,0x88, - 0x86,0x7C,0x85,0x7F,0x7A,0x80,0x78,0x6B,0x5B,0x5E,0x66,0x6B,0x80,0x88,0xA3,0xB3, - 0x99,0xA3,0xAF,0x93,0x8B,0x9E,0xA1,0x94,0x84,0x7A,0x7E,0x8D,0x8A,0x89,0x8F,0x83, - 0x7A,0x83,0x7F,0x6D,0x73,0x71,0x64,0x5A,0x5E,0x68,0x66,0x65,0x73,0x82,0x89,0x87, - 0x88,0x90,0x88,0x8D,0x96,0x94,0x9D,0x8F,0x7A,0x78,0x89,0x85,0x6E,0x71,0x6F,0x72, - 0x7C,0x74,0x6A,0x7A,0x86,0x7A,0x7B,0x77,0x78,0x79,0x75,0x8C,0x99,0x90,0x80,0x78, - 0x89,0x8D,0x84,0x90,0x94,0x83,0x7D,0x81,0x84,0x93,0x91,0x90,0x9B,0x89,0x7F,0x7E, - 0x6F,0x65,0x74,0x86,0x8B,0x82,0x78,0x73,0x72,0x79,0x7A,0x85,0x80,0x7C,0x81,0x88, - 0x86,0x70,0x75,0x7C,0x74,0x66,0x5D,0x5B,0x62,0x70,0x87,0x95,0x91,0x9C,0xAC,0xAF, - 0xAC,0xA1,0x99,0x8E,0x79,0x77,0x84,0x89,0x77,0x72,0x87,0x92,0x90,0x8B,0x92,0x7F, - 0x68,0x71,0x76,0x70,0x6D,0x68,0x5D,0x6C,0x80,0x76,0x7A,0x7B,0x78,0x91,0x97,0x8C, - 0x8F,0x94,0x8D,0x85,0x8F,0x85,0x79,0x72,0x73,0x8A,0x8F,0x7B,0x64,0x77,0x7A,0x64, - 0x67,0x6F,0x75,0x6F,0x74,0x77,0x7B,0x84,0x79,0x79,0x83,0x7E,0x87,0x97,0x8C,0x89, - 0x9B,0x98,0x92,0x7B,0x71,0x89,0x7F,0x79,0x8B,0x9A,0x93,0x7D,0x77,0x79,0x67,0x5B, - 0x6C,0x75,0x84,0x89,0x7D,0x76,0x76,0x84,0x8D,0x7F,0x7E,0x84,0x82,0x8D,0x89,0x81, - 0x89,0x79,0x61,0x5E,0x6D,0x69,0x58,0x5D,0x6C,0x85,0x8F,0x87,0x9A,0xA0,0x89,0x96, - 0x9B,0x95,0xA5,0x8F,0x7D,0x86,0x8F,0x7E,0x74,0x88,0x87,0x95,0x9C,0x87,0x85,0x8D, - 0x73,0x75,0x79,0x6A,0x76,0x68,0x67,0x75,0x7D,0x72,0x67,0x7E,0x81,0x77,0x78,0x80, - 0x85,0x85,0x7D,0x81,0x8E,0x77,0x68,0x65,0x6D,0x75,0x7B,0x88,0x77,0x6E,0x78,0x89, - 0x7D,0x67,0x72,0x73,0x7D,0x81,0x80,0x97,0x96,0x7B,0x82,0x9E,0x8A,0x82,0x88,0x85, - 0x89,0x81,0x7E,0x73,0x79,0x7E,0x7C,0x86,0x79,0x7B,0x87,0x84,0x84,0x87,0x88,0x78, - 0x6F,0x6E,0x7D,0x88,0x7B,0x7B,0x8F,0x92,0x88,0x93,0x98,0x8B,0x80,0x83,0x83,0x7D, - 0x79,0x60,0x5A,0x67,0x60,0x52,0x60,0x6B,0x6D,0x8A,0x9E,0xA4,0xAB,0xAF,0xA2,0x94, - 0x96,0x8C,0x81,0x7B,0x77,0x8A,0x97,0x80,0x87,0x94,0x83,0x7D,0x76,0x7E,0x88,0x77, - 0x66,0x78,0x7E,0x6E,0x61,0x68,0x74,0x6F,0x8B,0x92,0x7F,0x7A,0x82,0x8F,0x85,0x7A, - 0x76,0x73,0x75,0x70,0x7D,0x8D,0x7E,0x70,0x7F,0x8B,0x7D,0x6F,0x73,0x81,0x7E,0x79, - 0x8E,0x8A,0x89,0x87,0x7C,0x84,0x83,0x82,0x84,0x8E,0x8B,0x8F,0x95,0x7E,0x7F,0x70, - 0x6D,0x82,0x7A,0x7F,0x8E,0x90,0x8F,0x92,0x93,0x81,0x70,0x7B,0x81,0x7F,0x83,0x6F, - 0x7C,0x95,0x88,0x7C,0x7A,0x79,0x78,0x83,0x92,0x8F,0x93,0x95,0x7E,0x80,0x7C,0x72, - 0x6C,0x52,0x5C,0x6E,0x6C,0x67,0x73,0x73,0x77,0x8C,0x91,0xA6,0xAC,0xA3,0x95,0x92, - 0xA0,0x86,0x7D,0x84,0x7A,0x8E,0x99,0x94,0x91,0x8C,0x97,0x92,0x83,0x80,0x71,0x68, - 0x6D,0x69,0x78,0x79,0x6B,0x71,0x72,0x7A,0x73,0x73,0x7C,0x7C,0x7D,0x8B,0x90,0x83, - 0x83,0x77,0x71,0x73,0x77,0x81,0x8B,0x8F,0x94,0x99,0x82,0x79,0x76,0x6E,0x79,0x7F, - 0x77,0x80,0x85,0x83,0x8D,0x92,0x8C,0x74,0x74,0x80,0x7F,0x90,0x88,0x69,0x72,0x8E, - 0x87,0x78,0x7F,0x8E,0x94,0x7D,0x79,0x98,0xA8,0x83,0x6A,0x91,0x7B,0x6A,0x75,0x6E, - 0x7D,0x7E,0x8F,0x83,0x7C,0x88,0x83,0x83,0x7F,0x90,0x9A,0x8A,0x72,0x79,0x86,0x77, - 0x6D,0x5D,0x5A,0x64,0x6D,0x69,0x6E,0x85,0x92,0xA0,0x97,0x94,0x92,0x7C,0x80,0x93, - 0x95,0x93,0x93,0x8F,0x92,0x9B,0x91,0x87,0x8A,0x8F,0x85,0x88,0x90,0x7D,0x71,0x6A, - 0x60,0x68,0x7B,0x7D,0x74,0x7C,0x85,0x73,0x6B,0x77,0x6D,0x70,0x79,0x66,0x74,0x81, - 0x7B,0x86,0x95,0x9E,0x8C,0x79,0x80,0x83,0x80,0x88,0x77,0x69,0x83,0x86,0x78,0x73, - 0x73,0x7D,0x7E,0x89,0x96,0x8F,0x8C,0x78,0x66,0x70,0x7C,0x78,0x6C,0x77,0x75,0x7B, - 0x8B,0x8D,0x85,0x84,0x96,0x8C,0x8A,0x94,0x91,0x84,0x74,0x87,0x92,0x88,0x79,0x6F, - 0x6F,0x85,0x88,0x79,0x87,0x81,0x7E,0x7F,0x7A,0x81,0x7C,0x77,0x7C,0x76,0x6D,0x73, - 0x6F,0x60,0x65,0x6B,0x6C,0x72,0x87,0x90,0x95,0xAA,0x9F,0x8F,0x88,0x7A,0x77,0x7F, - 0x91,0x8D,0x92,0xA1,0xA3,0xA0,0x8E,0x8F,0x88,0x77,0x7C,0x7A,0x78,0x73,0x6F,0x73, - 0x85,0x86,0x72,0x69,0x68,0x6C,0x6E,0x7B,0x74,0x64,0x77,0x7E,0x75,0x6D,0x6E,0x78, - 0x79,0x7F,0x91,0x9A,0x95,0x7D,0x71,0x83,0x86,0x76,0x7A,0x7A,0x76,0x83,0x84,0x83, - 0x80,0x80,0x82,0x7C,0x7D,0x75,0x83,0x79,0x77,0x8F,0x81,0x76,0x6C,0x65,0x7F,0x95, - 0x8E,0x9D,0x97,0x91,0x95,0x7B,0x81,0x84,0x6A,0x77,0x84,0x7F,0x85,0x80,0x7C,0x7A, - 0x79,0x78,0x76,0x7A,0x7A,0x79,0x87,0x92,0x93,0x86,0x87,0x85,0x6A,0x79,0x7E,0x65, - 0x6A,0x77,0x83,0x80,0x7E,0x86,0x83,0x87,0x8A,0x92,0x90,0x83,0x84,0x86,0x8F,0x8F, - 0x85,0x82,0x86,0x86,0x95,0x97,0x82,0x84,0x91,0x8E,0x7F,0x6B,0x76,0x81,0x6F,0x7C, - 0x7C,0x81,0x7A,0x5F,0x70,0x7E,0x73,0x6E,0x6C,0x6F,0x78,0x80,0x84,0x86,0x7E,0x7D, - 0x81,0x82,0x83,0x86,0x8F,0x7C,0x83,0x8C,0x80,0x7A,0x66,0x63,0x75,0x88,0x8F,0x89, - 0x89,0x8E,0x81,0x82,0x84,0x6B,0x6F,0x86,0x7B,0x86,0x90,0x8A,0x83,0x7D,0x95,0x90, - 0x8D,0x8A,0x7F,0x87,0x94,0x91,0x7F,0x7E,0x79,0x6F,0x74,0x7C,0x78,0x78,0x80,0x91, - 0x92,0x79,0x82,0x7F,0x6D,0x7C,0x89,0x90,0x8D,0x8A,0x88,0x7E,0x7B,0x74,0x67,0x63, - 0x5D,0x5A,0x73,0x87,0x76,0x82,0xA6,0x99,0x83,0x8A,0x90,0x89,0x8D,0x8E,0xA1,0xAC, - 0x8A,0x85,0x8B,0x8C,0x8D,0x82,0x89,0x7F,0x80,0x8B,0x84,0x88,0x7A,0x6E,0x76,0x6F, - 0x62,0x76,0x77,0x68,0x72,0x74,0x76,0x6A,0x6A,0x6C,0x7B,0x85,0x7E,0xA4,0xA8,0x81, - 0x81,0x98,0x8F,0x76,0x81,0x8D,0x81,0x7D,0x77,0x80,0x81,0x75,0x72,0x7C,0x84,0x72, - 0x6E,0x80,0x94,0x88,0x82,0x90,0x7C,0x6C,0x71,0x87,0x87,0x78,0x94,0xA2,0x93,0x90, - 0x8D,0x7B,0x74,0x7C,0x82,0x89,0x84,0x86,0x7A,0x7F,0x8B,0x78,0x7F,0x82,0x71,0x62, - 0x7B,0x8C,0x79,0x88,0x94,0x87,0x8A,0x88,0x8A,0x8E,0x7A,0x71,0x84,0x7E,0x62,0x66, - 0x67,0x60,0x6D,0x76,0x86,0x97,0x8D,0x80,0x87,0x8E,0x7E,0x80,0x8D,0x86,0x8F,0x8D, - 0x8C,0x94,0x93,0x92,0x89,0x87,0x8F,0x88,0x83,0x83,0x80,0x84,0x8A,0x87,0x6C,0x63, - 0x71,0x62,0x68,0x75,0x6A,0x7B,0x7E,0x71,0x78,0x89,0x88,0x81,0x83,0x7B,0x85,0x84, - 0x7F,0x94,0x95,0x87,0x87,0x7E,0x69,0x6D,0x6D,0x68,0x76,0x82,0x8B,0x8D,0x85,0x70, - 0x74,0x7F,0x78,0x7A,0x7E,0x8C,0x80,0x6D,0x86,0x8D,0x87,0x8F,0x8B,0x84,0x79,0x7C, - 0x8D,0x8E,0x86,0x79,0x7D,0x8C,0x7A,0x76,0x82,0x7F,0x84,0x8B,0x80,0x7F,0x78,0x64, - 0x76,0x84,0x86,0x90,0x93,0x8A,0x80,0x84,0x88,0x7F,0x7F,0x74,0x6C,0x6D,0x5A,0x64, - 0x6F,0x71,0x7C,0x81,0x84,0x82,0x7B,0x7B,0x88,0x87,0x8C,0x96,0x8E,0x87,0x78,0x89, - 0x93,0x8A,0x92,0x9D,0xAB,0x92,0x85,0x92,0x8A,0x8B,0x80,0x6D,0x6C,0x6A,0x68,0x6E, - 0x79,0x7B,0x75,0x7A,0x71,0x65,0x72,0x77,0x78,0x82,0x82,0x88,0x8B,0x77,0x79,0x85, - 0x7F,0x85,0x86,0x88,0x82,0x6D,0x6C,0x70,0x7B,0x78,0x72,0x82,0x7D,0x7B,0x82,0x81, - 0x80,0x79,0x82,0x83,0x80,0x82,0x79,0x7E,0x8E,0x8D,0x85,0x8C,0x81,0x87,0x86,0x7A, - 0x91,0x86,0x82,0x81,0x75,0x78,0x79,0x7C,0x84,0x88,0x7E,0x82,0x82,0x7D,0x78,0x79, - 0x8B,0x89,0x7C,0x7B,0x7E,0x89,0x83,0x7B,0x8A,0x83,0x75,0x70,0x73,0x73,0x69,0x72, - 0x78,0x88,0x89,0x80,0x89,0x87,0x88,0x87,0x81,0x85,0x85,0x7D,0x85,0x87,0x7F,0x83, - 0x8E,0x8D,0x8A,0x94,0x97,0x98,0x92,0x92,0x88,0x7C,0x7E,0x75,0x6D,0x67,0x6B,0x75, - 0x7C,0x7B,0x75,0x77,0x7B,0x77,0x78,0x7B,0x79,0x79,0x77,0x7D,0x7B,0x79,0x7F,0x7F, - 0x83,0x85,0x7F,0x80,0x7D,0x77,0x77,0x77,0x78,0x79,0x7E,0x80,0x7F,0x88,0x8A,0x89, - 0x88,0x86,0x89,0x7F,0x7D,0x80,0x7E,0x81,0x7D,0x82,0x87,0x85,0x86,0x8C,0x8E,0x8F, - 0x8B,0x86,0x85,0x7F,0x7E,0x7D,0x7B,0x7E,0x80,0x7D,0x80,0x82,0x80,0x83,0x81,0x7E, - 0x80,0x84,0x82,0x7D,0x7E,0x80,0x80,0x7E,0x7D,0x78,0x74,0x75,0x77,0x77,0x78,0x7B, - 0x7E,0x84,0x88,0x89,0x89,0x88,0x89,0x8C,0x8D,0x8B,0x89,0x81,0x7E,0x7D,0x7C,0x80, - 0x83,0x85,0x87,0x8D,0x90,0x91,0x91,0x8C,0x88,0x83,0x7E,0x7B,0x79,0x7B,0x78,0x78, - 0x7B,0x7C,0x79,0x79,0x7B,0x7A,0x7C,0x7D,0x7D,0x7E,0x80,0x82,0x7F,0x7F,0x80,0x7E, - 0x81,0x82,0x7C,0x79,0x7C,0x7A,0x77,0x79,0x77,0x77,0x79,0x7E,0x81,0x81,0x85,0x85, - 0x83,0x86,0x84,0x82,0x82,0x82,0x84,0x83,0x88,0x83,0x8B,0x98,0x83,0x92,0x7C,0x6B, - 0x89,0x7C,0x6A,0x6D,0x7D,0x86,0x8A,0x8C,0x8E,0x8A,0x8B,0x9C,0xA1,0x9B,0x96,0x92, - 0x90,0x90,0x89,0x83,0x7F,0x72,0x6A,0x69,0x65,0x6D,0x67,0x55,0x62,0x64,0x5F,0x69, - 0x6B,0x6D,0x78,0x79,0x7B,0x79,0x6F,0x8A,0x88,0x73,0x88,0xA4,0xA2,0x96,0xB7,0xC1, - 0xAF,0xAA,0x9A,0x99,0xA7,0xA4,0x94,0x93,0x93,0x89,0x88,0x85,0x7A,0x76,0x72,0x6D, - 0x6B,0x74,0x7E,0x79,0x6C,0x68,0x68,0x5B,0x53,0x4C,0x47,0x4C,0x4C,0x50,0x5B,0x63, - 0x63,0x68,0x7A,0x88,0x8A,0x8A,0x90,0x94,0x8F,0x85,0x8F,0x9D,0x9D,0x98,0x98,0xA5, - 0xB0,0xBA,0xC1,0xC4,0xBD,0xAD,0xAA,0xAD,0xAA,0xA2,0x9A,0x9A,0x95,0x8B,0x8D,0x86, - 0x7E,0x7D,0x75,0x6C,0x64,0x64,0x62,0x59,0x54,0x53,0x52,0x4D,0x4F,0x51,0x54,0x58, - 0x56,0x56,0x57,0x5C,0x5B,0x58,0x67,0x6C,0x68,0x6D,0x70,0x70,0x75,0x79,0x74,0x7D, - 0x8B,0x87,0x8C,0x98,0x9F,0xAA,0xB7,0xB0,0x9E,0x9F,0x9D,0x94,0x8E,0x83,0x86,0x89, - 0x88,0x85,0x81,0x84,0x85,0x85,0x82,0x83,0x85,0x86,0x84,0x7B,0x73,0x6C,0x6B,0x6A, - 0x66,0x63,0x61,0x62,0x5D,0x59,0x5B,0x5D,0x61,0x6F,0x77,0x79,0x77,0x77,0x73,0x7B, - 0x8F,0x91,0x84,0x85,0x8C,0x8C,0x8D,0x8C,0x92,0xA1,0xA8,0xAC,0xB3,0xB8,0xB9,0xB9, - 0xB8,0xB5,0xBA,0xB8,0xB6,0xB9,0xB9,0xAF,0xA3,0x9D,0x93,0x92,0xA0,0x9D,0x90,0x8C, - 0x86,0x77,0x6A,0x62,0x62,0x69,0x62,0x59,0x60,0x63,0x5E,0x53,0x4A,0x4D,0x54,0x58, - 0x5C,0x62,0x6D,0x6C,0x67,0x6E,0x70,0x76,0x85,0x85,0x7F,0x82,0x7F,0x74,0x70,0x73, - 0x7C,0x86,0x85,0x87,0x90,0x8D,0x86,0x84,0x84,0x88,0x8D,0x90,0x90,0x94,0x95,0x86, - 0x81,0x81,0x81,0x84,0x89,0x84,0x78,0x7B,0x73,0x5F,0x59,0x57,0x62,0x67,0x60,0x62, - 0x64,0x5E,0x52,0x4E,0x4D,0x50,0x58,0x56,0x5D,0x61,0x5B,0x51,0x50,0x55,0x55,0x69, - 0x78,0x6E,0x6B,0x6E,0x66,0x68,0x6D,0x6F,0x80,0x8A,0x8B,0x93,0x99,0x9A,0x99,0xA1, - 0xAF,0xB9,0xBA,0xB9,0xC1,0xC3,0xC0,0xBC,0xBF,0xBE,0xBE,0xCF,0xCD,0xC2,0xBE,0xB7, - 0xAE,0xA5,0xA1,0xA5,0xA6,0x9E,0x93,0x8D,0x86,0x80,0x7B,0x79,0x7D,0x7E,0x7E,0x7E, - 0x77,0x6D,0x6C,0x71,0x70,0x70,0x7D,0x84,0x7A,0x71,0x70,0x6A,0x66,0x68,0x6E,0x78, - 0x79,0x71,0x74,0x75,0x6E,0x6E,0x76,0x7D,0x83,0x82,0x83,0x88,0x84,0x7E,0x85,0x8A, - 0x85,0x8C,0x9C,0x9A,0x8F,0x8F,0x93,0x90,0x8D,0x8F,0x9A,0xA0,0x99,0x92,0x92,0x8F, - 0x8A,0x8B,0x8E,0x95,0x96,0x8F,0x90,0x90,0x89,0x85,0x89,0x80,0x7A,0x8D,0x8E,0x7C, - 0x77,0x78,0x6F,0x64,0x64,0x6B,0x71,0x69,0x5A,0x5B,0x58,0x4F,0x4B,0x4F,0x53,0x55, - 0x53,0x52,0x53,0x4E,0x4C,0x53,0x57,0x51,0x58,0x6B,0x62,0x56,0x59,0x54,0x49,0x45, - 0x4A,0x55,0x5C,0x54,0x51,0x56,0x50,0x4C,0x52,0x5B,0x62,0x67,0x6B,0x72,0x74,0x76, - 0x7E,0x8D,0x94,0x96,0xAE,0xC1,0xB7,0xB3,0xBA,0xBA,0xB7,0xB9,0xC0,0xC9,0xCA,0xC2, - 0xC2,0xC3,0xB8,0xB4,0xB8,0xB9,0xB9,0xB6,0xB2,0xAF,0xA5,0x9D,0x9F,0xA3,0x9C,0x9C, - 0xB2,0xB3,0xA0,0xA1,0xA5,0x9B,0x98,0x9E,0xA7,0xAC,0xA3,0x9B,0x9D,0x97,0x8D,0x8B, - 0x8E,0x90,0x8D,0x86,0x82,0x7D,0x73,0x6E,0x71,0x71,0x64,0x6B,0x78,0x6A,0x5E,0x62, - 0x5F,0x54,0x54,0x5C,0x67,0x6B,0x61,0x63,0x6A,0x62,0x61,0x68,0x6C,0x70,0x70,0x6F, - 0x72,0x6C,0x68,0x6D,0x71,0x70,0x6B,0x76,0x83,0x74,0x6C,0x76,0x75,0x6B,0x6D,0x76, - 0x81,0x7F,0x74,0x7B,0x7E,0x74,0x74,0x7C,0x7F,0x81,0x7F,0x7C,0x80,0x7B,0x77,0x7D, - 0x80,0x7F,0x76,0x83,0x91,0x7E,0x75,0x83,0x7F,0x76,0x79,0x81,0x89,0x86,0x7C,0x81, - 0x83,0x77,0x76,0x7E,0x81,0x81,0x7D,0x7C,0x7C,0x74,0x72,0x78,0x79,0x79,0x74,0x80, - 0x94,0x84,0x79,0x89,0x8A,0x81,0x85,0x92,0x9C,0x9D,0x94,0x98,0x9F,0x94,0x8F,0x97, - 0x99,0x95,0x94,0x90,0x8C,0x81,0x7B,0x7D,0x79,0x76,0x6C,0x73,0x83,0x71,0x61,0x6E, - 0x6A,0x5B,0x5F,0x6A,0x71,0x70,0x66,0x6C,0x74,0x6A,0x69,0x75,0x7A,0x7B,0x7F,0x81, - 0x84,0x7F,0x7D,0x85,0x89,0x8B,0x88,0x8E,0xA4,0x9E,0x8D,0x99,0x9D,0x8F,0x8F,0x99, - 0xA2,0xA2,0x96,0x96,0x9E,0x93,0x8C,0x96,0x9B,0x98,0x96,0x98,0x9B,0x94,0x8D,0x90, - 0x92,0x91,0x8C,0x8D,0xA3,0xA0,0x87,0x90,0x96,0x83,0x7E,0x8A,0x94,0x94,0x8A,0x88, - 0x8E,0x82,0x7A,0x84,0x8A,0x85,0x82,0x81,0x7E,0x78,0x6E,0x70,0x6E,0x68,0x63,0x5E, - 0x6F,0x71,0x55,0x58,0x5E,0x4A,0x41,0x49,0x52,0x54,0x4A,0x48,0x51,0x49,0x3C,0x46, - 0x50,0x4E,0x4D,0x4E,0x50,0x4D,0x46,0x4B,0x4F,0x4E,0x4D,0x4D,0x61,0x68,0x54,0x56, - 0x64,0x59,0x54,0x61,0x6D,0x73,0x71,0x71,0x7F,0x7F,0x78,0x85,0x93,0x96,0x9B,0xA4, - 0xA7,0xA7,0xA2,0xA4,0xA9,0xA6,0xA4,0xA0,0xB0,0xBF,0xA9,0x9F,0xAE,0xA2,0x94,0x99, - 0xA2,0xA6,0xA0,0x98,0x9D,0x9D,0x90,0x91,0x9B,0x9D,0x9D,0x9E,0x9F,0x9E,0x99,0x99, - 0x9F,0x9F,0x9F,0x99,0xA4,0xB8,0xA9,0x9B,0xA9,0xA6,0x96,0x9B,0xA5,0xAB,0xA7,0x9D, - 0xA1,0xA4,0x94,0x8F,0x9A,0x99,0x96,0x94,0x95,0x95,0x8E,0x88,0x8A,0x8B,0x88,0x81, - 0x83,0x97,0x90,0x79,0x82,0x85,0x73,0x72,0x7C,0x81,0x7F,0x74,0x72,0x78,0x6C,0x63, - 0x6C,0x6E,0x6B,0x6B,0x69,0x69,0x62,0x5D,0x5E,0x5F,0x60,0x59,0x54,0x67,0x69,0x51, - 0x54,0x5C,0x4E,0x47,0x4D,0x55,0x59,0x50,0x4D,0x55,0x4F,0x45,0x4A,0x53,0x52,0x53, - 0x53,0x54,0x53,0x4D,0x4F,0x53,0x57,0x57,0x53,0x64,0x72,0x5E,0x5A,0x6A,0x62,0x5A, - 0x63,0x6D,0x74,0x71,0x6B,0x76,0x7B,0x73,0x79,0x86,0x8A,0x8E,0x92,0x97,0x9D,0x9A, - 0x9D,0xA7,0xAC,0xAE,0xAB,0xB8,0xD2,0xC8,0xB8,0xC7,0xC6,0xB5,0xB6,0xC0,0xC5,0xC0, - 0xB4,0xB6,0xBA,0xAD,0xA6,0xAE,0xB0,0xAC,0xAA,0xA7,0xA6,0xA0,0x9A,0x9C,0x9E,0x9C, - 0x94,0x99,0xB2,0xA9,0x95,0xA0,0xA2,0x93,0x92,0x9B,0xA3,0xA1,0x95,0x97,0x9E,0x92, - 0x8C,0x94,0x95,0x92,0x91,0x8E,0x8E,0x8A,0x83,0x83,0x84,0x81,0x79,0x79,0x91,0x8C, - 0x75,0x7B,0x7E,0x70,0x6E,0x75,0x7E,0x7F,0x72,0x70,0x78,0x6F,0x67,0x6F,0x70,0x6F, - 0x6E,0x68,0x67,0x66,0x61,0x60,0x61,0x61,0x5A,0x56,0x6B,0x6F,0x57,0x57,0x5E,0x53, - 0x4B,0x4D,0x56,0x5D,0x53,0x4D,0x56,0x55,0x4E,0x51,0x55,0x59,0x59,0x54,0x56,0x59, - 0x55,0x53,0x55,0x5B,0x58,0x52,0x6B,0x74,0x5E,0x5D,0x67,0x5F,0x5B,0x5E,0x67,0x72, - 0x69,0x61,0x6B,0x6E,0x68,0x6C,0x73,0x7A,0x7D,0x7B,0x7E,0x84,0x83,0x86,0x8C,0x93, - 0x91,0x8F,0xA9,0xBA,0xA8,0xAA,0xB8,0xB4,0xB2,0xB7,0xC2,0xCE,0xC7,0xBE,0xC4,0xC5, - 0xBD,0xBB,0xBB,0xBE,0xBE,0xB6,0xB1,0xB0,0xA8,0xA0,0x9D,0x9E,0x96,0x8D,0xA0,0xA3, - 0x8A,0x89,0x8D,0x84,0x81,0x81,0x88,0x93,0x8C,0x83,0x88,0x89,0x85,0x85,0x87,0x8B, - 0x8D,0x8A,0x8C,0x8E,0x8D,0x8D,0x89,0x8C,0x87,0x84,0x9B,0x9C,0x86,0x87,0x87,0x80, - 0x7E,0x7A,0x80,0x89,0x80,0x78,0x7B,0x7A,0x74,0x71,0x76,0x7C,0x7D,0x77,0x72,0x72, - 0x73,0x6F,0x6E,0x72,0x6C,0x72,0x88,0x7F,0x6E,0x72,0x6F,0x6A,0x68,0x69,0x73,0x78, - 0x6E,0x68,0x6C,0x6A,0x64,0x62,0x64,0x6A,0x68,0x61,0x5F,0x60,0x60,0x5A,0x58,0x57, - 0x52,0x63,0x74,0x63,0x5A,0x5C,0x55,0x54,0x53,0x57,0x64,0x63,0x59,0x57,0x5E,0x5F, - 0x59,0x58,0x60,0x68,0x68,0x64,0x64,0x68,0x67,0x63,0x66,0x66,0x69,0x80,0x84,0x74, - 0x77,0x79,0x78,0x7B,0x7C,0x87,0x95,0x94,0x8F,0x91,0x99,0x9D,0x9B,0x9D,0xA9,0xB0, - 0xAE,0xAB,0xAD,0xAF,0xA9,0xA4,0xA5,0xA0,0xA9,0xBB,0xAD,0x9C,0x9B,0x92,0x8F,0x8A, - 0x86,0x91,0x97,0x8C,0x83,0x82,0x83,0x80,0x79,0x7B,0x84,0x85,0x7F,0x7C,0x80,0x80, - 0x7C,0x7D,0x7D,0x7F,0x95,0x9D,0x8B,0x87,0x88,0x84,0x85,0x80,0x86,0x92,0x91,0x89, - 0x87,0x8B,0x8E,0x88,0x84,0x8B,0x92,0x91,0x8A,0x87,0x8B,0x88,0x84,0x81,0x87,0x8F, - 0x99,0x94,0x85,0x87,0x85,0x83,0x7E,0x7C,0x87,0x8E,0x88,0x7D,0x7B,0x81,0x7F,0x7A, - 0x7A,0x80,0x85,0x81,0x7B,0x79,0x79,0x74,0x6E,0x69,0x6E,0x85,0x87,0x74,0x6E,0x6E, - 0x6F,0x6A,0x60,0x64,0x70,0x71,0x68,0x5F,0x63,0x68,0x62,0x5E,0x61,0x67,0x69,0x65, - 0x60,0x62,0x64,0x60,0x5B,0x57,0x6A,0x7D,0x72,0x64,0x61,0x64,0x69,0x65,0x64,0x6E, - 0x7A,0x7B,0x75,0x72,0x78,0x7E,0x7C,0x7C,0x82,0x8C,0x91,0x8F,0x8F,0x93,0x98,0x9B, - 0x98,0x9F,0xB8,0xBD,0xB1,0xA9,0xA4,0xA8,0xA7,0xA2,0xA3,0xAB,0xAE,0xA8,0x9B,0x96, - 0x98,0x98,0x8F,0x89,0x8A,0x8C,0x8C,0x85,0x7E,0x7A,0x79,0x72,0x70,0x81,0x8D,0x87, - 0x7E,0x77,0x76,0x79,0x75,0x75,0x7C,0x84,0x87,0x83,0x7C,0x7D,0x80,0x81,0x81,0x80, - 0x82,0x86,0x86,0x84,0x81,0x80,0x7F,0x7B,0x87,0x9A,0x97,0x8B,0x84,0x81,0x84,0x84, - 0x81,0x82,0x87,0x8B,0x8E,0x8A,0x86,0x84,0x83,0x84,0x83,0x82,0x84,0x86,0x84,0x82, - 0x7E,0x7C,0x76,0x78,0x89,0x90,0x88,0x80,0x77,0x73,0x74,0x70,0x6E,0x72,0x73,0x78, - 0x7A,0x74,0x71,0x72,0x71,0x6E,0x6C,0x6D,0x72,0x72,0x6E,0x6C,0x6A,0x67,0x62,0x6A, - 0x79,0x78,0x70,0x6A,0x62,0x63,0x65,0x61,0x61,0x60,0x61,0x69,0x6B,0x6B,0x6E,0x6F, - 0x70,0x70,0x70,0x75,0x79,0x79,0x7B,0x7F,0x81,0x81,0x81,0x8B,0x98,0x99,0x97,0x98, - 0x94,0x95,0x9B,0x9A,0x9A,0x9A,0x97,0x9A,0x9B,0x9A,0x9C,0x9B,0x99,0x99,0x99,0x98, - 0x96,0x92,0x92,0x93,0x92,0x8F,0x8D,0x8D,0x90,0x90,0x8A,0x8A,0x8A,0x88,0x8C,0x8A, - 0x86,0x88,0x87,0x85,0x85,0x85,0x83,0x81,0x80,0x80,0x81,0x82,0x82,0x82,0x83,0x84, - 0x84,0x82,0x7F,0x7F,0x84,0x87,0x84,0x82,0x84,0x84,0x88,0x87,0x84,0x85,0x82,0x7F, - 0x80,0x7F,0x7D,0x7D,0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x83,0x83,0x7F,0x7D, - 0x7E,0x83,0x82,0x7E,0x81,0x80,0x7E,0x81,0x82,0x7F,0x7E,0x7B,0x79,0x7B,0x78,0x75, - 0x76,0x74,0x73,0x74,0x76,0x75,0x75,0x76,0x76,0x78,0x77,0x76,0x75,0x75,0x7A,0x7C, - 0x7A,0x7B,0x7A,0x7A,0x81,0x7E,0x7C,0x7C,0x77,0x77,0x78,0x75,0x76,0x74,0x70,0x72, - 0x74,0x74,0x77,0x77,0x77,0x78,0x7A,0x7A,0x7A,0x7A,0x7B,0x82,0x83,0x7F,0x81,0x81, - 0x82,0x88,0x89,0x87,0x88,0x84,0x84,0x86,0x83,0x84,0x84,0x82,0x83,0x84,0x86,0x86, - 0x86,0x86,0x86,0x88,0x89,0x88,0x86,0x83,0x85,0x8C,0x88,0x84,0x83,0x7F,0x83,0x86, - 0x80,0x81,0x7F,0x79,0x7A,0x79,0x77,0x78,0x75,0x74,0x76,0x77,0x79,0x7A,0x7A,0x7C, - 0x7E,0x82,0x83,0x81,0x81,0x7F,0x84,0x86,0x82,0x84,0x83,0x80,0x87,0x88,0x84,0x84, - 0x80,0x7F,0x81,0x81,0x80,0x7E,0x7C,0x7B,0x7C,0x7E,0x7F,0x7E,0x81,0x82,0x83,0x85, - 0x85,0x86,0x84,0x83,0x8A,0x8B,0x86,0x85,0x84,0x84,0x85,0x83,0x86,0x90,0x7C,0x62, - 0x77,0x87,0x86,0x6E,0x80,0x88,0x62,0x72,0x7F,0x7B,0x7C,0x88,0x8E,0x7B,0x7F,0x85, - 0x84,0x7A,0x7F,0x8C,0x7B,0x71,0x74,0x78,0x81,0x80,0x7F,0x88,0x79,0x6E,0x7B,0x77, - 0x71,0x72,0x79,0x76,0x78,0x7E,0x79,0x7F,0x84,0x87,0x87,0x82,0x87,0x86,0x86,0x89, - 0x80,0x82,0x83,0x7D,0x7C,0x81,0x83,0x80,0x80,0x7C,0x7F,0x81,0x77,0x78,0x79,0x77, - 0x75,0x75,0x7C,0x7E,0x88,0x8C,0x80,0x82,0x8A,0x8A,0x8B,0x8E,0x8E,0x85,0x86,0x8C, - 0x8D,0x8A,0x8B,0x88,0x81,0x87,0x7E,0x74,0x7D,0x77,0x68,0x6C,0x73,0x76,0x77,0x71, - 0x70,0x72,0x70,0x77,0x7B,0x7F,0x7D,0x76,0x7B,0x7C,0x7A,0x78,0x79,0x85,0x8B,0x89, - 0x89,0x80,0x80,0x86,0x88,0x88,0x80,0x7C,0x7B,0x7D,0x81,0x85,0x83,0x7C,0x79,0x72, - 0x78,0x7F,0x7F,0x81,0x7B,0x7D,0x7D,0x80,0x86,0x89,0x88,0x85,0x87,0x84,0x7D,0x83, - 0x87,0x83,0x83,0x85,0x84,0x84,0x8C,0x86,0x84,0x85,0x7E,0x82,0x82,0x7C,0x7D,0x80, - 0x7B,0x7C,0x7C,0x7D,0x87,0x89,0x7F,0x7E,0x7F,0x7E,0x7E,0x7D,0x89,0x82,0x7E,0x85, - 0x78,0x77,0x7C,0x7D,0x7E,0x82,0x81,0x7D,0x82,0x83,0x81,0x84,0x81,0x7A,0x78,0x78, - 0x7A,0x80,0x84,0x84,0x84,0x85,0x84,0x83,0x83,0x7C,0x89,0x8F,0x88,0x88,0x83,0x82, - 0x85,0x88,0x81,0x81,0x7D,0x74,0x7D,0x81,0x85,0x8A,0x81,0x80,0x82,0x83,0x89,0x86, - 0x81,0x85,0x88,0x86,0x86,0x83,0x83,0x7F,0x76,0x80,0x90,0x91,0x8F,0x8A,0x7D,0x7D, - 0x7F,0x77,0x77,0x75,0x6F,0x77,0x82,0x83,0x82,0x81,0x80,0x88,0x84,0x81,0x83,0x7D, - 0x7E,0x80,0x7F,0x7F,0x80,0x7F,0x7B,0x78,0x7F,0x8F,0x94,0x91,0x89,0x80,0x79,0x7E, - 0x7C,0x72,0x76,0x77,0x7E,0x87,0x86,0x83,0x7E,0x80,0x87,0x83,0x7A,0x7D,0x81,0x87, - 0x8B,0x87,0x84,0x81,0x7B,0x80,0x7C,0x82,0x96,0x94,0x92,0x8F,0x83,0x86,0x84,0x79, - 0x79,0x7A,0x78,0x86,0x8E,0x82,0x82,0x83,0x84,0x88,0x7E,0x7C,0x7E,0x81,0x80,0x83, - 0x85,0x86,0x82,0x7C,0x75,0x76,0x8B,0x95,0x8B,0x89,0x84,0x76,0x82,0x7C,0x6C,0x72, - 0x75,0x7C,0x85,0x80,0x79,0x82,0x8A,0x88,0x80,0x79,0x79,0x7C,0x82,0x82,0x80,0x84, - 0x84,0x7F,0x7A,0x77,0x7C,0x8E,0x95,0x8B,0x88,0x84,0x80,0x8B,0x81,0x72,0x78,0x76, - 0x79,0x80,0x7B,0x79,0x80,0x87,0x84,0x7F,0x7F,0x80,0x84,0x84,0x7C,0x7A,0x81,0x86, - 0x80,0x7B,0x76,0x80,0x92,0x88,0x82,0x88,0x82,0x87,0x8A,0x76,0x74,0x76,0x75,0x7C, - 0x77,0x71,0x79,0x80,0x87,0x7F,0x79,0x84,0x80,0x7C,0x76,0x75,0x7F,0x82,0x7C,0x76, - 0x73,0x75,0x88,0x91,0x82,0x84,0x84,0x7F,0x88,0x80,0x79,0x79,0x7B,0x7E,0x7C,0x77, - 0x7B,0x84,0x88,0x86,0x80,0x84,0x88,0x84,0x84,0x7C,0x7C,0x7E,0x7B,0x75,0x75,0x79, - 0x81,0x94,0x8C,0x84,0x88,0x81,0x87,0x87,0x71,0x74,0x7B,0x78,0x7F,0x79,0x79,0x86, - 0x85,0x85,0x82,0x80,0x87,0x84,0x84,0x82,0x81,0x82,0x7C,0x7E,0x7F,0x79,0x7B,0x8F, - 0x8B,0x7C,0x87,0x85,0x83,0x87,0x77,0x73,0x7B,0x75,0x7B,0x77,0x70,0x7D,0x82,0x7C, - 0x7F,0x81,0x81,0x85,0x80,0x7D,0x7D,0x7F,0x7F,0x7E,0x83,0x7C,0x73,0x85,0x8C,0x82, - 0x8B,0x8D,0x84,0x8A,0x82,0x78,0x7D,0x78,0x78,0x7E,0x72,0x76,0x81,0x7E,0x82,0x81, - 0x7F,0x83,0x81,0x7B,0x7F,0x7D,0x7A,0x7A,0x75,0x7A,0x72,0x75,0x8C,0x8A,0x86,0x89, - 0x7F,0x8A,0x88,0x74,0x7E,0x7B,0x73,0x7B,0x77,0x73,0x82,0x81,0x7E,0x87,0x7F,0x86, - 0x84,0x80,0x84,0x7F,0x7F,0x7D,0x73,0x7C,0x79,0x72,0x86,0x8A,0x84,0x87,0x83,0x81, - 0x8A,0x7F,0x7C,0x84,0x78,0x7C,0x78,0x75,0x7B,0x7D,0x80,0x83,0x81,0x84,0x8B,0x81, - 0x80,0x80,0x81,0x7F,0x7A,0x7A,0x7D,0x7B,0x7E,0x8A,0x82,0x86,0x88,0x82,0x8A,0x88, - 0x7D,0x7E,0x7C,0x75,0x78,0x73,0x73,0x7E,0x79,0x7F,0x83,0x7C,0x87,0x86,0x80,0x88, - 0x85,0x81,0x80,0x7C,0x7E,0x7B,0x7A,0x8A,0x86,0x80,0x8B,0x82,0x85,0x8C,0x7C,0x7F, - 0x86,0x7A,0x7D,0x7A,0x73,0x7D,0x78,0x7C,0x7D,0x78,0x82,0x83,0x80,0x86,0x86,0x84, - 0x87,0x80,0x81,0x80,0x79,0x84,0x84,0x7E,0x86,0x83,0x83,0x85,0x7D,0x82,0x86,0x7C, - 0x7E,0x80,0x74,0x7C,0x7C,0x72,0x7F,0x7C,0x7C,0x86,0x7E,0x81,0x85,0x7F,0x82,0x7C, - 0x7A,0x81,0x7C,0x80,0x87,0x81,0x85,0x85,0x7D,0x86,0x81,0x7A,0x85,0x80,0x7A,0x80, - 0x7C,0x7E,0x7F,0x78,0x7F,0x7F,0x7B,0x86,0x84,0x83,0x89,0x85,0x85,0x84,0x7F,0x7D, - 0x7B,0x80,0x86,0x7E,0x80,0x84,0x7F,0x89,0x84,0x81,0x87,0x7F,0x80,0x82,0x79,0x7D, - 0x83,0x7B,0x7C,0x82,0x81,0x81,0x83,0x87,0x86,0x85,0x86,0x84,0x7F,0x81,0x7F,0x80, - 0x89,0x7F,0x7F,0x86,0x85,0x85,0x81,0x81,0x82,0x7F,0x7F,0x7E,0x7A,0x7F,0x81,0x7A, - 0x7D,0x7E,0x7C,0x81,0x80,0x81,0x88,0x84,0x83,0x83,0x82,0x81,0x7E,0x84,0x87,0x7E, - 0x83,0x85,0x83,0x86,0x80,0x7F,0x84,0x83,0x80,0x80,0x7C,0x80,0x7F,0x7A,0x7E,0x7C, - 0x7F,0x80,0x82,0x86,0x85,0x83,0x84,0x81,0x7F,0x81,0x7D,0x84,0x84,0x7E,0x84,0x84, - 0x83,0x84,0x80,0x81,0x82,0x7F,0x80,0x7C,0x7B,0x80,0x7D,0x7C,0x7E,0x7D,0x7E,0x7F, - 0x7F,0x86,0x85,0x80,0x83,0x84,0x81,0x7F,0x7F,0x85,0x7F,0x7F,0x83,0x81,0x83,0x81, - 0x7F,0x7F,0x80,0x80,0x7C,0x7C,0x7F,0x7E,0x7B,0x7B,0x7C,0x80,0x7F,0x7D,0x83,0x85, - 0x83,0x82,0x83,0x83,0x82,0x80,0x85,0x84,0x7D,0x80,0x83,0x82,0x85,0x7F,0x83,0x84, - 0x7B,0x80,0x7D,0x7A,0x7C,0x7B,0x7C,0x7D,0x7F,0x7F,0x82,0x81,0x84,0x84,0x84,0x84, - 0x7F,0x81,0x82,0x82,0x82,0x81,0x83,0x81,0x82,0x83,0x83,0x88,0x8B,0x92,0x8B,0x8A, - 0x88,0x7C,0x7F,0x73,0x70,0x77,0x75,0x79,0x74,0x83,0x7D,0x6D,0x89,0x81,0x6A,0x7C, - 0x81,0x80,0x72,0x70,0x89,0x81,0x80,0x7F,0x74,0x83,0x83,0x81,0x81,0x76,0x7F,0x88, - 0x7F,0x78,0x78,0x82,0x89,0x83,0x83,0x87,0x87,0x90,0x91,0x86,0x80,0x8A,0x9C,0x92, - 0x8A,0x93,0x88,0x85,0x97,0x96,0x94,0x9C,0xA0,0x98,0x91,0x94,0x94,0x84,0x78,0x80, - 0x88,0x8D,0x8C,0x85,0x82,0x81,0x7E,0x77,0x6E,0x69,0x6F,0x79,0x74,0x6A,0x68,0x62, - 0x64,0x63,0x5D,0x5F,0x60,0x62,0x65,0x5F,0x5A,0x60,0x5E,0x63,0x64,0x5C,0x60,0x66, - 0x6D,0x73,0x6A,0x68,0x6F,0x77,0x78,0x75,0x7E,0x7B,0x76,0x77,0x78,0x7D,0x80,0x7D, - 0x82,0x88,0x87,0x8A,0x8D,0x99,0xAD,0xAA,0x9F,0xA0,0x9E,0x9D,0x9D,0x9C,0x9E,0x97, - 0x8C,0x8A,0x86,0x7E,0x7F,0x99,0x95,0x89,0x93,0x90,0x8F,0x82,0x75,0x84,0x85,0x79, - 0x82,0x89,0x8F,0x95,0x86,0x8E,0x96,0x8C,0x85,0x85,0x8D,0x8B,0x83,0x82,0x88,0x7E, - 0x7C,0x9D,0xA1,0x94,0x9C,0x95,0x90,0x85,0x71,0x81,0x89,0x83,0x8F,0x96,0x98,0x96, - 0x86,0x86,0x92,0x88,0x86,0x89,0x93,0x98,0x8A,0x86,0x83,0x7B,0x72,0x82,0x90,0x81, - 0x7E,0x7D,0x71,0x67,0x53,0x57,0x64,0x5B,0x5A,0x5D,0x5F,0x5D,0x4B,0x42,0x4E,0x48, - 0x44,0x4E,0x59,0x59,0x51,0x4C,0x45,0x4F,0x49,0x55,0x6F,0x67,0x66,0x67,0x61,0x5E, - 0x55,0x58,0x6F,0x71,0x6F,0x79,0x7D,0x7B,0x71,0x6E,0x77,0x79,0x78,0x82,0x8F,0x90, - 0x8B,0x8C,0x95,0xA0,0x9A,0xAA,0xC7,0xB3,0xAB,0xAE,0x9D,0x91,0x83,0x86,0x9A,0x96, - 0x91,0x9C,0x96,0x89,0x7A,0x7C,0x88,0x89,0x88,0x94,0x9C,0x94,0x89,0x87,0x8A,0x8E, - 0x8A,0x8E,0xAE,0xA7,0x95,0x9C,0x95,0x89,0x81,0x84,0x95,0x98,0x8F,0x9B,0x9F,0x93, - 0x8D,0x8A,0x92,0x96,0x90,0x98,0xA3,0x99,0x92,0x8F,0x93,0x91,0x86,0xA2,0xB2,0x9C, - 0x9E,0xA0,0x90,0x88,0x81,0x8C,0x9B,0x8C,0x89,0x95,0x88,0x78,0x75,0x74,0x77,0x72, - 0x70,0x7A,0x72,0x5F,0x5A,0x5A,0x55,0x59,0x51,0x5C,0x73,0x58,0x4E,0x59,0x4F,0x44, - 0x44,0x4D,0x5D,0x58,0x4F,0x5D,0x5A,0x4F,0x54,0x58,0x60,0x63,0x61,0x6F,0x6F,0x65, - 0x68,0x6B,0x6D,0x66,0x74,0x8D,0x7C,0x6F,0x7D,0x77,0x6E,0x71,0x7F,0x94,0x96,0x92, - 0xA3,0xAA,0x9B,0x9A,0x9F,0xA2,0x9F,0x9C,0xA3,0x9E,0x8E,0x8C,0x8F,0x88,0x8C,0x8C, - 0x8C,0xA3,0x98,0x81,0x93,0x8D,0x7F,0x84,0x8A,0x96,0x96,0x8C,0x94,0x98,0x87,0x89, - 0x8F,0x91,0x95,0x95,0x9B,0x99,0x8E,0x91,0x8F,0x8D,0x8E,0x8F,0xAB,0xA8,0x90,0xA0, - 0x9C,0x87,0x88,0x92,0x9D,0x9E,0x94,0x9E,0xA2,0x90,0x8E,0x97,0x95,0x92,0x93,0x95, - 0x96,0x89,0x82,0x89,0x84,0x7D,0x82,0x7D,0x88,0x8F,0x71,0x75,0x7A,0x61,0x5E,0x60, - 0x63,0x68,0x5E,0x5E,0x66,0x51,0x49,0x50,0x4C,0x4F,0x52,0x55,0x57,0x50,0x4D,0x4D, - 0x49,0x4C,0x4B,0x62,0x70,0x58,0x62,0x6C,0x59,0x52,0x5D,0x6A,0x6E,0x6B,0x73,0x7E, - 0x71,0x67,0x70,0x73,0x71,0x77,0x7F,0x86,0x80,0x80,0x8A,0x89,0x8E,0x99,0x93,0xA6, - 0xBB,0xA1,0xA0,0xAD,0x94,0x8A,0x91,0x93,0x98,0x94,0x93,0x9E,0x8C,0x80,0x8A,0x85, - 0x82,0x8A,0x8D,0x90,0x8C,0x86,0x89,0x82,0x86,0x85,0x86,0xA3,0x96,0x87,0x9F,0x95, - 0x80,0x85,0x8B,0x91,0x91,0x8D,0x9D,0x9E,0x8A,0x90,0x98,0x8D,0x90,0x96,0x9A,0x9E, - 0x99,0x96,0x97,0x8E,0x8F,0x94,0x89,0xA2,0xAA,0x8F,0x9B,0x9E,0x83,0x80,0x85,0x88, - 0x8C,0x84,0x89,0x8E,0x7A,0x74,0x7B,0x72,0x70,0x75,0x74,0x75,0x6D,0x67,0x66,0x5A, - 0x59,0x58,0x55,0x6E,0x65,0x54,0x69,0x60,0x4B,0x50,0x53,0x56,0x5A,0x56,0x64,0x67, - 0x56,0x5C,0x61,0x58,0x5B,0x66,0x6A,0x6D,0x70,0x71,0x6E,0x6B,0x6D,0x6E,0x66,0x79, - 0x8A,0x73,0x7B,0x88,0x77,0x74,0x7C,0x85,0x8C,0x8C,0x96,0xA5,0x99,0x92,0x9C,0x96, - 0x8F,0x95,0x98,0x98,0x94,0x93,0x94,0x89,0x86,0x89,0x7E,0x8B,0x9D,0x86,0x89,0x97, - 0x82,0x7A,0x81,0x84,0x87,0x88,0x89,0x95,0x8D,0x84,0x8C,0x89,0x85,0x89,0x90,0x93, - 0x8E,0x91,0x92,0x8C,0x8A,0x90,0x8B,0x88,0xA4,0xA2,0x8E,0xA2,0x9D,0x89,0x8D,0x92, - 0x94,0x93,0x91,0x99,0x9A,0x8A,0x8B,0x91,0x87,0x85,0x8C,0x8D,0x88,0x85,0x86,0x81, - 0x79,0x7B,0x79,0x6F,0x82,0x86,0x6F,0x79,0x7A,0x62,0x60,0x66,0x63,0x64,0x63,0x66, - 0x6B,0x5D,0x5A,0x63,0x5A,0x58,0x5F,0x61,0x61,0x61,0x60,0x5E,0x5C,0x5A,0x61,0x5A, - 0x60,0x7B,0x6C,0x67,0x7D,0x6D,0x62,0x6B,0x6C,0x6F,0x70,0x71,0x7B,0x7A,0x70,0x79, - 0x7C,0x77,0x7F,0x86,0x8A,0x8D,0x8E,0x92,0x93,0x8F,0x95,0x93,0x8C,0xA5,0xA5,0x8F, - 0x9D,0x9E,0x86,0x86,0x8A,0x87,0x8A,0x88,0x8C,0x8F,0x81,0x81,0x89,0x81,0x7F,0x87, - 0x89,0x8B,0x8B,0x8A,0x8A,0x86,0x84,0x8A,0x80,0x8A,0xA3,0x90,0x8C,0xA0,0x90,0x82, - 0x8B,0x8D,0x90,0x91,0x90,0x9B,0x96,0x89,0x93,0x96,0x8B,0x92,0x99,0x97,0x96,0x94, - 0x94,0x93,0x8A,0x8E,0x8C,0x84,0x9C,0x9B,0x84,0x92,0x94,0x7B,0x7B,0x80,0x7D,0x80, - 0x7A,0x7D,0x83,0x70,0x6C,0x76,0x6B,0x65,0x6C,0x6B,0x6B,0x6A,0x66,0x65,0x5F,0x5C, - 0x60,0x57,0x64,0x7A,0x60,0x66,0x81,0x5C,0x5B,0x55,0x46,0x65,0x5E,0x4C,0x5E,0x6A, - 0x62,0x72,0x79,0x73,0x74,0x79,0x8E,0x93,0x8B,0x8C,0x99,0x8D,0x7F,0x7A,0x6C,0x90, - 0x91,0x64,0x77,0x83,0x68,0x5E,0x64,0x64,0x6E,0x76,0x85,0x8A,0x6C,0x78,0x89,0x7E, - 0x84,0x92,0xA1,0xB0,0xA3,0x97,0xAB,0xA9,0xBC,0xAF,0x93,0xD5,0xBF,0xA4,0xBA,0xAC, - 0xAA,0x9E,0x95,0x92,0x8D,0x93,0x93,0x83,0x7F,0x6E,0x6D,0x82,0x74,0x85,0x90,0x7D, - 0x84,0x7A,0x78,0x84,0x60,0x52,0x60,0x6D,0x83,0x76,0x70,0x78,0x66,0x64,0x72,0x75, - 0x90,0x91,0x92,0xAC,0xA3,0x91,0x96,0x98,0x94,0xA1,0xB2,0xBE,0xBE,0xA5,0x9D,0xAA, - 0x9B,0x98,0x8D,0x8C,0xA0,0x8C,0x86,0x87,0x7C,0x6C,0x61,0x66,0x69,0x70,0x65,0x56, - 0x4C,0x2B,0x25,0x33,0x33,0x30,0x34,0x3E,0x34,0x35,0x40,0x53,0x56,0x4D,0x57,0x65, - 0x74,0x7E,0x7A,0x79,0x7B,0x6F,0x7D,0x8A,0x8D,0x99,0x97,0x9E,0xBA,0xC4,0xCB,0xD5, - 0xC7,0xC6,0xC6,0xB4,0xB9,0xA5,0x8A,0x99,0x8C,0x8A,0x8A,0x7F,0x8C,0x74,0x5C,0x6F, - 0x77,0x65,0x5D,0x53,0x5A,0x68,0x53,0x57,0x65,0x65,0x68,0x62,0x6A,0x69,0x6C,0x7D, - 0x81,0x7F,0x7C,0x87,0x98,0x95,0x97,0x9B,0x92,0x9F,0x9E,0x9D,0xAA,0xA3,0xA4,0xA2, - 0xAA,0xAF,0xAA,0xB4,0xB0,0xAB,0xB3,0xAB,0xB3,0xB7,0xA6,0xA5,0xA8,0xA3,0x9C,0x91, - 0x87,0x79,0x65,0x66,0x82,0x7B,0x63,0x73,0x75,0x6D,0x62,0x48,0x43,0x4D,0x52,0x60, - 0x61,0x50,0x4E,0x53,0x53,0x55,0x5C,0x5D,0x5E,0x5C,0x5A,0x5B,0x64,0x75,0x68,0x78, - 0x9D,0x98,0x8D,0x7B,0x6D,0x7F,0x84,0x88,0x9A,0x96,0x9D,0x9C,0x82,0x7B,0x7F,0x7E, - 0x8A,0xA1,0x96,0x89,0x91,0x90,0x98,0x95,0x8F,0x9A,0x95,0x9E,0xA1,0x86,0x77,0x6A, - 0x64,0x75,0x84,0x85,0x7C,0x69,0x63,0x69,0x72,0x6C,0x65,0x65,0x74,0x7A,0x62,0x5D, - 0x49,0x52,0x5C,0x54,0x5F,0x57,0x5E,0x6A,0x6C,0x65,0x5F,0x67,0x6C,0x6D,0x7C,0x7E, - 0x74,0x84,0x80,0x84,0x96,0x94,0xA1,0xA5,0xB3,0xBC,0xBA,0xB6,0xBD,0xC4,0xC3,0xCB, - 0xC2,0xC3,0xD3,0xD7,0xCA,0xCE,0xC6,0xB7,0xBA,0xB2,0xAE,0xAB,0xA2,0x9D,0x95,0x8E, - 0x8A,0x8D,0x85,0x85,0x86,0x78,0x6E,0x68,0x6C,0x61,0x57,0x51,0x4C,0x5F,0x65,0x55, - 0x4D,0x4E,0x48,0x46,0x46,0x3A,0x39,0x42,0x48,0x48,0x52,0x51,0x45,0x45,0x46,0x54, - 0x5F,0x52,0x4D,0x56,0x60,0x62,0x5F,0x63,0x63,0x72,0x82,0x75,0x7D,0x82,0x81,0x85, - 0x7A,0x7E,0x8A,0x93,0x9A,0x93,0x8F,0x91,0x91,0x98,0x94,0xA6,0xBB,0xAF,0xA8,0xB2, - 0xB7,0xAB,0xA0,0x8F,0x9D,0xC3,0xBB,0xB0,0xA3,0x98,0xA6,0xAA,0xA7,0x98,0x93,0x9F, - 0xA0,0x9A,0x91,0x92,0x98,0x8F,0x8E,0x85,0x81,0x78,0x61,0x63,0x5E,0x5D,0x61,0x5C, - 0x70,0x85,0x7C,0x69,0x64,0x5F,0x66,0x69,0x62,0x63,0x66,0x6F,0x68,0x62,0x62,0x61, - 0x6A,0x6D,0x73,0x7A,0x78,0x7D,0x7A,0x7A,0x86,0x84,0x7F,0x8C,0xA1,0xAB,0x9D,0x8E, - 0x82,0x83,0x92,0x92,0x95,0x9F,0x9B,0x9F,0x9A,0x90,0x94,0x8C,0x92,0x91,0x85,0x8D, - 0x84,0x84,0x91,0x82,0x7D,0x7E,0x77,0x91,0xA4,0x8A,0x77,0x74,0x6D,0x82,0x8D,0x74, - 0x72,0x78,0x7D,0x89,0x7B,0x72,0x6D,0x63,0x6E,0x6E,0x67,0x6E,0x6A,0x68,0x68,0x6A, - 0x68,0x67,0x70,0x7C,0x86,0x7E,0x73,0x74,0x7C,0x7E,0x78,0x73,0x73,0x7F,0x98,0x94, - 0x81,0x72,0x6C,0x7D,0x7C,0x76,0x65,0x56,0x5B,0x62,0x6D,0x68,0x61,0x67,0x71,0x7F, - 0x87,0x79,0x6D,0x6B,0x75,0x84,0x7E,0x7F,0x89,0x90,0x92,0x95,0x96,0x93,0x99,0x9F, - 0xA0,0x97,0x95,0x98,0x98,0x9D,0xA0,0x97,0x8E,0xA1,0xAE,0xB7,0xB7,0xA8,0xA7,0xA8, - 0xAB,0xAE,0xA2,0x9B,0xA3,0xA8,0xAB,0xA2,0x8E,0x87,0x92,0xA2,0xA8,0x9D,0x9A,0x93, - 0x8B,0x8E,0x8E,0x7A,0x70,0x7D,0x8B,0x90,0x83,0x6E,0x62,0x65,0x6C,0x69,0x62,0x68, - 0x70,0x70,0x6E,0x5C,0x50,0x51,0x4B,0x4D,0x48,0x47,0x4A,0x4C,0x51,0x4C,0x46,0x41, - 0x46,0x53,0x62,0x6C,0x58,0x48,0x49,0x4E,0x5F,0x67,0x67,0x6D,0x6E,0x77,0x81,0x78, - 0x70,0x70,0x70,0x75,0x7C,0x81,0x7A,0x7A,0x82,0x84,0x87,0x88,0x89,0x8E,0x90,0x8D, - 0x8D,0x86,0x87,0x8F,0x8A,0x8E,0x96,0x93,0x97,0x9D,0x99,0x98,0x93,0x94,0x95,0x89, - 0x85,0x8A,0x8B,0x94,0x9A,0x95,0x97,0x93,0x97,0xA8,0xB1,0xB7,0xB1,0xAB,0xA2,0xA1, - 0x9F,0x98,0xA4,0xAA,0xA3,0xA5,0xA4,0xA5,0xA6,0x9D,0x93,0x88,0x82,0x85,0x84,0x85, - 0x86,0x81,0x83,0x84,0x80,0x85,0x8D,0x8D,0x8B,0x81,0x76,0x76,0x76,0x6C,0x6B,0x72, - 0x6A,0x65,0x61,0x65,0x6F,0x6D,0x66,0x5B,0x5A,0x58,0x5D,0x5C,0x4E,0x53,0x56,0x56, - 0x5D,0x5A,0x5A,0x61,0x60,0x6B,0x6C,0x63,0x64,0x5F,0x5E,0x62,0x62,0x59,0x52,0x55, - 0x60,0x65,0x61,0x65,0x62,0x6A,0x76,0x74,0x6D,0x6D,0x75,0x78,0x82,0x84,0x8A,0x92, - 0x92,0x9B,0x91,0x88,0x8D,0x90,0x95,0x94,0x95,0x90,0x86,0x8C,0x96,0x9C,0x9C,0x93, - 0x8E,0x96,0x9D,0x98,0x92,0x94,0x93,0x9D,0xA1,0x97,0x95,0x9A,0xA2,0xA3,0x9E,0x96, - 0x96,0x9A,0x9C,0x9F,0x94,0x92,0x94,0x93,0x93,0x94,0x95,0x8D,0x8E,0x8F,0x98,0x99, - 0x93,0x98,0x92,0x93,0x9B,0x95,0x91,0x94,0x95,0x92,0x8D,0x8D,0x8A,0x8A,0x8D,0x89, - 0x87,0x85,0x84,0x7E,0x71,0x74,0x72,0x6D,0x6F,0x6E,0x6F,0x67,0x6D,0x70,0x66,0x70, - 0x6F,0x69,0x69,0x63,0x63,0x5D,0x61,0x5E,0x59,0x60,0x60,0x63,0x61,0x62,0x63,0x5F, - 0x62,0x5C,0x61,0x68,0x66,0x66,0x63,0x5F,0x68,0x6E,0x6C,0x6E,0x69,0x6B,0x72,0x76, - 0x77,0x6E,0x6B,0x76,0x78,0x77,0x77,0x71,0x72,0x79,0x7F,0x85,0x85,0x84,0x8A,0x8E, - 0x8F,0x8C,0x8D,0x8F,0x8C,0x92,0x96,0x93,0x91,0x8F,0x94,0x96,0x94,0x96,0x94,0x8E, - 0x97,0x9F,0x99,0x95,0x95,0x97,0x99,0xA1,0x9E,0x95,0x94,0x9A,0x9E,0x9C,0x99,0x97, - 0x96,0x95,0x9B,0x9B,0x95,0x95,0x91,0x93,0x99,0x96,0x95,0x97,0x94,0x99,0x98,0x98, - 0x97,0x97,0x9E,0x9D,0x9D,0x99,0x94,0x95,0x94,0x90,0x8C,0x88,0x84,0x86,0x87,0x84, - 0x84,0x80,0x80,0x85,0x81,0x81,0x7F,0x7B,0x7B,0x72,0x72,0x72,0x70,0x72,0x75,0x77, - 0x74,0x75,0x70,0x6D,0x73,0x6D,0x69,0x68,0x64,0x64,0x60,0x59,0x59,0x5F,0x64,0x60, - 0x5E,0x61,0x64,0x65,0x61,0x5F,0x5C,0x60,0x69,0x68,0x6E,0x6B,0x60,0x67,0x67,0x68, - 0x70,0x69,0x63,0x68,0x6A,0x6D,0x6B,0x65,0x66,0x69,0x70,0x75,0x6D,0x6A,0x6C,0x70, - 0x76,0x76,0x74,0x79,0x7E,0x83,0x83,0x7F,0x82,0x85,0x8D,0x95,0x91,0x91,0x92,0x8C, - 0x94,0x95,0x8D,0x8D,0x8B,0x88,0x8E,0x8E,0x86,0x86,0x88,0x8D,0x95,0x92,0x91,0x94, - 0x94,0x9A,0x9C,0x9B,0x99,0x94,0x9A,0x9E,0x9B,0x9A,0x93,0x90,0x92,0x97,0x9A,0x96, - 0x94,0x92,0x91,0x96,0x91,0x8B,0x8A,0x8A,0x92,0x8E,0x8A,0x88,0x87,0x90,0x8E,0x8C, - 0x91,0x90,0x94,0x8E,0x89,0x8E,0x8E,0x8B,0x8B,0x89,0x8A,0x89,0x80,0x7F,0x83,0x7E, - 0x7A,0x7A,0x77,0x76,0x74,0x6E,0x71,0x74,0x70,0x73,0x75,0x75,0x7B,0x7A,0x7A,0x7F, - 0x7D,0x7C,0x7E,0x7B,0x78,0x79,0x77,0x76,0x78,0x78,0x7A,0x78,0x74,0x7A,0x79,0x75, - 0x77,0x6F,0x70,0x75,0x75,0x76,0x71,0x6E,0x73,0x75,0x75,0x76,0x72,0x75,0x7C,0x7E, - 0x7B,0x79,0x74,0x76,0x7A,0x77,0x75,0x76,0x76,0x78,0x76,0x74,0x73,0x6F,0x6F,0x74, - 0x74,0x74,0x72,0x6F,0x74,0x79,0x79,0x77,0x75,0x74,0x7B,0x81,0x7E,0x7D,0x79,0x7A, - 0x80,0x78,0x7B,0x83,0x7A,0x7B,0x7F,0x76,0x81,0x81,0x74,0x81,0x82,0x80,0x89,0x75, - 0x74,0x85,0x7B,0x80,0x80,0x76,0x86,0x89,0x87,0x89,0x81,0x89,0x87,0x82,0x86,0x82, - 0x7D,0x80,0x93,0x8E,0x84,0x91,0x86,0x8A,0x8D,0x73,0x7D,0x80,0x7C,0x86,0x7B,0x7B, - 0x86,0x89,0x89,0x86,0x87,0x86,0x87,0x83,0x80,0x85,0x80,0x7F,0x83,0x83,0x84,0x75, - 0x7F,0x99,0x8C,0x8C,0x8C,0x83,0x90,0x84,0x75,0x7C,0x7C,0x7D,0x7D,0x7E,0x84,0x8D, - 0x8C,0x81,0x85,0x89,0x87,0x85,0x78,0x7C,0x88,0x84,0x82,0x81,0x7E,0x77,0x7C,0x93, - 0x8C,0x81,0x88,0x83,0x86,0x83,0x6F,0x74,0x7B,0x79,0x80,0x83,0x84,0x8E,0x90,0x86, - 0x88,0x88,0x84,0x81,0x7B,0x80,0x88,0x82,0x80,0x84,0x80,0x73,0x78,0x93,0x8F,0x87, - 0x8B,0x84,0x88,0x81,0x6C,0x74,0x7D,0x79,0x79,0x78,0x7D,0x8A,0x87,0x7A,0x7E,0x82, - 0x81,0x7E,0x78,0x7A,0x81,0x7E,0x7D,0x7C,0x7B,0x74,0x71,0x8D,0x93,0x83,0x87,0x83, - 0x85,0x86,0x71,0x71,0x7D,0x7C,0x79,0x78,0x7B,0x89,0x8A,0x7D,0x83,0x89,0x83,0x7B, - 0x75,0x7C,0x82,0x79,0x78,0x7F,0x7F,0x74,0x78,0x94,0x8D,0x82,0x8C,0x86,0x8C,0x80, - 0x6A,0x79,0x7F,0x75,0x75,0x76,0x7D,0x8C,0x85,0x7D,0x89,0x8B,0x83,0x7B,0x76,0x80, - 0x80,0x76,0x7B,0x80,0x7C,0x6E,0x7C,0x99,0x8B,0x85,0x89,0x84,0x8D,0x7B,0x6E,0x7F, - 0x7B,0x77,0x75,0x77,0x86,0x8A,0x7D,0x7D,0x8A,0x86,0x80,0x7A,0x77,0x81,0x7A,0x74, - 0x7D,0x7D,0x79,0x70,0x83,0x94,0x83,0x86,0x87,0x89,0x91,0x72,0x71,0x85,0x79,0x78, - 0x77,0x79,0x89,0x87,0x7B,0x82,0x89,0x84,0x7F,0x7C,0x82,0x86,0x77,0x77,0x82,0x80, - 0x7C,0x77,0x8B,0x92,0x80,0x8A,0x88,0x8A,0x8C,0x74,0x7E,0x88,0x7D,0x7D,0x79,0x7D, - 0x88,0x80,0x7B,0x84,0x88,0x87,0x85,0x7F,0x86,0x84,0x76,0x80,0x84,0x81,0x80,0x7C, - 0x91,0x8B,0x7D,0x89,0x85,0x8A,0x8A,0x79,0x83,0x87,0x7F,0x80,0x7C,0x7D,0x84,0x7B, - 0x7A,0x83,0x82,0x83,0x82,0x7E,0x82,0x7F,0x7D,0x82,0x7F,0x80,0x80,0x82,0x89,0x81, - 0x81,0x84,0x80,0x86,0x84,0x80,0x87,0x83,0x7E,0x80,0x7E,0x81,0x81,0x7D,0x7E,0x7F, - 0x80,0x80,0x7E,0x7F,0x7F,0x7E,0x80,0x81,0x82,0x82,0x81,0x80,0x82,0x81,0x80,0x81, - 0x81,0x84,0x83,0x80,0x82,0x80,0x7F,0x7F,0x7D,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E, - 0x7D,0x7C,0x7F,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x80,0x81,0x81,0x83,0x81, - 0x81,0x81,0x7F,0x81,0x82,0x80,0x81,0x81,0x80,0x81,0x7F,0x7E,0x7F,0x7F,0x7F,0x80, - 0x7E,0x7F,0x80,0x7F,0x7E,0x7E,0x7F,0x80,0x80,0x81,0x81,0x80,0x80,0x7F,0x7E,0x7F, - 0x7F,0x7E,0x7F,0x80,0x80,0x7E,0x7E,0x7E,0x7E,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7C,0x7D,0x7C,0x7F,0x81,0x82,0x82,0x82,0x81,0x84,0x84,0x84,0x82,0x80,0x82,0x82, - 0x83,0x82,0x81,0x81,0x81,0x81,0x80,0x7E,0x7E,0x7E,0x7E,0x7E,0x7D,0x7A,0x7A,0x7B, - 0x7C,0x7C,0x7B,0x7D,0x7F,0x7D,0x7F,0x7D,0x7E,0x7E,0x7D,0x80,0x7F,0x80,0x80,0x7F, - 0x7F,0x80,0x80,0x81,0x81,0x7F,0x80,0x80,0x7E,0x7D,0x7D,0x7E,0x7E,0x7E,0x7D,0x7E, - 0x7E,0x7E,0x7E,0x7F,0x7E,0x7D,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x80,0x81,0x81, - 0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x80,0x81,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7E, - 0x7D,0x7E,0x7F,0x7E,0x7F,0x80,0x7F,0x80,0x81,0x80,0x81,0x81,0x7F,0x80,0x80,0x80, - 0x80,0x80,0x7F,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F, - 0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x81,0x80,0x7F,0x7F,0x80,0x80,0x7F, - 0x7F,0x80,0x81,0x83,0x84,0x8C,0x8C,0x92,0x92,0x84,0x7E,0x7A,0x7D,0x7B,0x7A,0x75, - 0x7B,0x66,0x73,0x8F,0x73,0x79,0x7E,0x7C,0x6F,0x72,0x80,0x74,0x7E,0x7D,0x79,0x7B, - 0x7A,0x82,0x77,0x78,0x7B,0x75,0x72,0x77,0x81,0x79,0x85,0x80,0x74,0x82,0x81,0x7A, - 0x82,0x92,0x89,0x8A,0x8E,0x81,0x99,0xA5,0x9A,0xA6,0xA4,0x96,0x9D,0xA8,0x95,0x84, - 0x90,0x97,0x9B,0x98,0x87,0x85,0x80,0x7E,0x7C,0x73,0x78,0x81,0x7C,0x76,0x77,0x76, - 0x78,0x73,0x71,0x74,0x67,0x65,0x66,0x63,0x6D,0x7A,0x79,0x76,0x7A,0x73,0x6D,0x70, - 0x69,0x6C,0x70,0x66,0x66,0x65,0x65,0x72,0x6C,0x68,0x6E,0x64,0x6E,0x77,0x76,0x85, - 0x93,0xA8,0xB3,0xA3,0x9D,0x99,0x87,0x92,0x8D,0x8B,0x9E,0x86,0x89,0x98,0x8B,0x89, - 0x71,0x74,0x8A,0x6A,0x6D,0x80,0x78,0x82,0x7F,0x86,0x97,0x88,0x83,0x90,0x8B,0x83, - 0x7D,0x7B,0x7F,0x7A,0x71,0x7B,0x98,0x8C,0x89,0xA0,0x99,0x89,0x7C,0x7E,0x85,0x79, - 0x79,0x88,0x92,0x8C,0x84,0x95,0xA2,0x95,0x90,0x96,0x91,0x8B,0x8F,0x95,0x8F,0x8D, - 0x8D,0x91,0xA5,0x8E,0x87,0x95,0x87,0x7A,0x70,0x76,0x7D,0x70,0x6F,0x7C,0x7B,0x75, - 0x72,0x7D,0x79,0x62,0x67,0x6C,0x5E,0x5E,0x68,0x6D,0x67,0x63,0x62,0x69,0x76,0x63, - 0x63,0x72,0x5E,0x56,0x56,0x5E,0x66,0x54,0x62,0x6F,0x61,0x69,0x71,0x7B,0x80,0x78, - 0x8D,0x9C,0x9A,0x9E,0x9B,0x9A,0x90,0x8D,0x8F,0x88,0x95,0x91,0x89,0x92,0x84,0x77, - 0x7B,0x77,0x81,0x82,0x7B,0x91,0x89,0x83,0x91,0x8B,0x86,0x83,0x84,0x84,0x83,0x8D, - 0x8C,0x88,0x85,0x86,0x7B,0x87,0xA2,0x8B,0x92,0xA4,0x8F,0x88,0x80,0x82,0x8F,0x80, - 0x89,0xA0,0x99,0x9A,0xA6,0xA4,0x9E,0x92,0x93,0x94,0x90,0x98,0x98,0x97,0x91,0x8E, - 0x96,0x86,0x96,0xA4,0x85,0x8D,0x8C,0x79,0x7A,0x72,0x7A,0x83,0x78,0x80,0x85,0x77, - 0x77,0x73,0x66,0x68,0x61,0x62,0x68,0x66,0x6E,0x68,0x58,0x5A,0x58,0x4A,0x6A,0x6F, - 0x53,0x69,0x64,0x4E,0x50,0x4D,0x5B,0x57,0x52,0x67,0x67,0x64,0x73,0x7A,0x78,0x7C, - 0x87,0x95,0x99,0x9C,0xA3,0x98,0x8B,0x87,0x87,0x7F,0x85,0xA2,0x8A,0x85,0x99,0x81, - 0x76,0x77,0x78,0x82,0x7B,0x80,0x90,0x86,0x84,0x8A,0x81,0x80,0x80,0x7E,0x84,0x85, - 0x87,0x8F,0x86,0x82,0x89,0x7F,0x93,0xA2,0x8B,0x9A,0x9F,0x86,0x8C,0x88,0x8A,0x93, - 0x8B,0x9E,0xA8,0x9D,0xA3,0xA6,0x99,0x93,0x90,0x8F,0x92,0x95,0x9D,0x9E,0x92,0x90, - 0x95,0x84,0x8D,0x9D,0x88,0x8C,0x92,0x80,0x77,0x75,0x78,0x75,0x6D,0x78,0x82,0x6F, - 0x6E,0x78,0x64,0x63,0x63,0x62,0x60,0x59,0x63,0x63,0x59,0x58,0x58,0x4E,0x67,0x67, - 0x53,0x6F,0x64,0x4E,0x57,0x4E,0x4D,0x55,0x51,0x65,0x66,0x5F,0x72,0x76,0x75,0x81, - 0x8B,0x8E,0x94,0x9C,0xA0,0x95,0x8C,0x90,0x88,0x7B,0x98,0x9A,0x81,0x9E,0x94,0x79, - 0x81,0x7B,0x7B,0x78,0x78,0x88,0x86,0x80,0x8A,0x85,0x7D,0x7F,0x84,0x83,0x80,0x8A, - 0x8B,0x87,0x7F,0x89,0x83,0x81,0xA6,0x92,0x90,0xA7,0x90,0x89,0x90,0x8C,0x90,0x90, - 0x98,0xA7,0x9D,0xA0,0xAB,0x9C,0x96,0x9F,0x99,0x97,0x9A,0x9E,0x9E,0x98,0x93,0x95, - 0x87,0x8E,0xA5,0x86,0x92,0xA0,0x7F,0x80,0x81,0x76,0x74,0x70,0x78,0x7B,0x68,0x6F, - 0x73,0x60,0x61,0x65,0x5C,0x58,0x60,0x5F,0x5E,0x56,0x57,0x58,0x4C,0x69,0x69,0x53, - 0x71,0x6C,0x4F,0x59,0x58,0x4D,0x50,0x55,0x61,0x62,0x60,0x70,0x75,0x67,0x7A,0x84, - 0x80,0x8F,0x96,0x99,0x95,0x90,0x93,0x8A,0x85,0xA3,0x95,0x89,0xA2,0x90,0x7A,0x86, - 0x84,0x76,0x77,0x7E,0x88,0x81,0x80,0x90,0x85,0x7B,0x8A,0x84,0x7A,0x84,0x8A,0x8A, - 0x87,0x89,0x8E,0x80,0x8A,0xA5,0x8E,0x94,0xAD,0x90,0x89,0x98,0x90,0x8B,0x8F,0x9A, - 0x9F,0x98,0x9E,0xA9,0x98,0x96,0xA8,0x9D,0x95,0x9F,0xA1,0x9A,0x94,0x98,0x93,0x83, - 0x9F,0xA8,0x88,0x9E,0xA7,0x83,0x84,0x8B,0x77,0x75,0x79,0x7A,0x77,0x6F,0x74,0x75, - 0x62,0x66,0x6A,0x5B,0x5A,0x5F,0x62,0x5B,0x57,0x5E,0x58,0x50,0x6D,0x67,0x54,0x6C, - 0x62,0x4A,0x57,0x56,0x4C,0x4F,0x58,0x61,0x5F,0x5F,0x6D,0x6D,0x66,0x79,0x82,0x7C, - 0x89,0x93,0x97,0x98,0x92,0x98,0x8E,0x8D,0xA9,0x94,0x8F,0xA7,0x8F,0x7F,0x8B,0x81, - 0x76,0x79,0x7F,0x84,0x80,0x80,0x8C,0x83,0x77,0x87,0x86,0x7B,0x81,0x89,0x87,0x83, - 0x85,0x89,0x7E,0x8D,0xA7,0x8D,0x97,0xAA,0x8D,0x87,0x94,0x8D,0x8A,0x8F,0x99,0x9F, - 0x98,0x9C,0xA6,0x98,0x93,0xA0,0x9B,0x97,0x9B,0x9D,0x9D,0x97,0x93,0x97,0x88,0x94, - 0xAB,0x91,0x96,0xA5,0x88,0x80,0x8A,0x7D,0x76,0x79,0x7B,0x7E,0x74,0x6F,0x78,0x6B, - 0x63,0x6A,0x67,0x62,0x63,0x65,0x60,0x57,0x55,0x5B,0x4D,0x5B,0x6F,0x57,0x61,0x70, - 0x54,0x4D,0x58,0x50,0x4E,0x52,0x59,0x62,0x5C,0x60,0x6E,0x69,0x68,0x77,0x7D,0x82, - 0x88,0x93,0x99,0x93,0x91,0x96,0x88,0x95,0xAB,0x8D,0x96,0xA3,0x83,0x7B,0x84,0x7C, - 0x7B,0x7C,0x7E,0x8B,0x80,0x7B,0x88,0x80,0x77,0x7F,0x83,0x80,0x81,0x85,0x89,0x7E, - 0x7E,0x87,0x7B,0x90,0xA7,0x8C,0x99,0xAA,0x8C,0x89,0x95,0x91,0x94,0x91,0x96,0xA5, - 0x98,0x91,0xA1,0x9D,0x94,0x98,0x9F,0x9E,0x99,0x9C,0x9F,0x95,0x90,0x95,0x8A,0x9C, - 0xAF,0x94,0x9B,0xAA,0x8B,0x7E,0x84,0x7F,0x80,0x7B,0x79,0x83,0x77,0x69,0x73,0x70, - 0x64,0x62,0x68,0x6B,0x62,0x61,0x66,0x5E,0x56,0x56,0x51,0x62,0x75,0x5A,0x5F,0x6F, - 0x56,0x4A,0x4F,0x53,0x59,0x54,0x58,0x6A,0x64,0x5F,0x6A,0x72,0x74,0x74,0x82,0x90, - 0x92,0x93,0x96,0x96,0x95,0x92,0x8B,0xA0,0xB3,0x95,0x95,0x9D,0x8B,0x7D,0x76,0x7F, - 0x87,0x7C,0x77,0x85,0x82,0x78,0x79,0x7C,0x7F,0x7C,0x7B,0x80,0x82,0x7E,0x7D,0x7F, - 0x82,0x83,0x7A,0x90,0xA5,0x8F,0x8E,0x99,0x92,0x8A,0x87,0x92,0x9D,0x99,0x96,0x9C, - 0x9E,0x9B,0x94,0x93,0x9D,0x9B,0x97,0x98,0x9C,0x9C,0x95,0x94,0x94,0x93,0x8F,0xA2, - 0xAE,0x98,0x98,0x98,0x8B,0x84,0x7A,0x7E,0x86,0x80,0x78,0x76,0x78,0x77,0x6E,0x69, - 0x6B,0x70,0x6D,0x64,0x65,0x64,0x5F,0x5A,0x57,0x57,0x57,0x70,0x75,0x60,0x64,0x60, - 0x53,0x4F,0x4D,0x59,0x61,0x5F,0x5D,0x5D,0x65,0x67,0x65,0x69,0x74,0x83,0x81,0x83, - 0x8E,0x90,0x91,0x91,0x90,0x8C,0x97,0xB0,0xA4,0x92,0x92,0x8E,0x87,0x7D,0x78,0x80, - 0x8A,0x85,0x78,0x77,0x7D,0x7C,0x76,0x72,0x79,0x83,0x7C,0x76,0x78,0x7C,0x7B,0x78, - 0x77,0x76,0x8C,0xA1,0x97,0x8B,0x89,0x8C,0x8E,0x87,0x85,0x91,0x9F,0x9F,0x96,0x93, - 0x98,0x9D,0x97,0x90,0x98,0xA3,0x9E,0x9A,0x95,0x96,0x96,0x94,0x90,0x8F,0xA6,0xB1, - 0xA1,0x94,0x8B,0x8A,0x8D,0x81,0x7A,0x82,0x8A,0x85,0x79,0x74,0x74,0x76,0x6E,0x65, - 0x6A,0x6E,0x6D,0x68,0x5F,0x5D,0x5C,0x59,0x52,0x58,0x6F,0x75,0x6A,0x5D,0x53,0x57, - 0x58,0x53,0x52,0x59,0x66,0x67,0x62,0x5F,0x63,0x6B,0x6D,0x70,0x79,0x80,0x88,0x8C, - 0x8D,0x8E,0x8D,0x8F,0x8D,0x9D,0xAF,0xAA,0xA2,0x93,0x88,0x8A,0x85,0x80,0x7E,0x7F, - 0x85,0x84,0x7C,0x76,0x76,0x77,0x74,0x76,0x79,0x7A,0x7E,0x7A,0x78,0x76,0x74,0x73, - 0x75,0x8D,0x9D,0x98,0x90,0x83,0x7F,0x88,0x88,0x88,0x8B,0x90,0x97,0x9C,0x99,0x94, - 0x90,0x92,0x96,0x97,0x99,0x9B,0x9A,0x9A,0x9A,0x93,0x91,0x8C,0x91,0xA7,0xAF,0xA8, - 0x9C,0x8B,0x83,0x88,0x85,0x83,0x84,0x80,0x81,0x83,0x80,0x79,0x72,0x6E,0x6F,0x70, - 0x6F,0x6D,0x66,0x66,0x64,0x5E,0x5C,0x56,0x5A,0x6E,0x73,0x6B,0x65,0x57,0x50,0x56, - 0x54,0x56,0x59,0x56,0x5D,0x62,0x65,0x69,0x68,0x6A,0x6F,0x77,0x7D,0x81,0x87,0x8B, - 0x8E,0x91,0x94,0x93,0x92,0x9B,0x9E,0x95,0x97,0x92,0x88,0x8C,0x87,0x82,0x83,0x7B, - 0x79,0x7A,0x77,0x77,0x73,0x70,0x70,0x70,0x73,0x74,0x74,0x75,0x76,0x79,0x7B,0x79, - 0x7A,0x81,0x87,0x86,0x87,0x8B,0x88,0x8D,0x8F,0x8C,0x92,0x8F,0x8E,0x93,0x91,0x91, - 0x93,0x90,0x90,0x91,0x94,0x97,0x97,0x99,0x96,0x9A,0x9C,0x97,0x96,0x97,0x9C,0x9B, - 0x95,0x96,0x90,0x8E,0x90,0x88,0x89,0x85,0x7E,0x7F,0x7B,0x75,0x75,0x70,0x6E,0x6E, - 0x6D,0x6C,0x6A,0x68,0x66,0x66,0x68,0x65,0x63,0x60,0x63,0x69,0x63,0x63,0x63,0x5F, - 0x66,0x65,0x63,0x6A,0x66,0x64,0x6A,0x69,0x6D,0x70,0x70,0x77,0x7E,0x83,0x89,0x8C, - 0x8F,0x92,0x96,0x98,0x97,0x94,0x92,0x98,0x96,0x8F,0x91,0x8B,0x85,0x8A,0x83,0x7E, - 0x80,0x76,0x72,0x74,0x6E,0x70,0x70,0x6C,0x70,0x71,0x73,0x77,0x77,0x79,0x7D,0x7F, - 0x82,0x82,0x84,0x84,0x88,0x8C,0x8C,0x8F,0x8F,0x8D,0x94,0x95,0x93,0x95,0x90,0x90, - 0x94,0x8F,0x91,0x92,0x8E,0x92,0x95,0x93,0x97,0x95,0x95,0x99,0x98,0x98,0x9A,0x99, - 0x96,0x93,0x94,0x93,0x8D,0x8C,0x8B,0x87,0x89,0x84,0x80,0x80,0x7B,0x79,0x77,0x72, - 0x73,0x6F,0x6A,0x6C,0x67,0x66,0x6A,0x65,0x66,0x69,0x68,0x69,0x68,0x68,0x69,0x67, - 0x6A,0x6D,0x6B,0x6F,0x70,0x6D,0x73,0x75,0x76,0x7B,0x7C,0x7E,0x84,0x85,0x87,0x8A, - 0x89,0x8B,0x8B,0x8A,0x8A,0x88,0x8C,0x8D,0x87,0x89,0x8B,0x86,0x86,0x86,0x83,0x84, - 0x84,0x82,0x80,0x80,0x7D,0x7C,0x7D,0x7C,0x7C,0x7D,0x7B,0x7A,0x7B,0x79,0x79,0x7B, - 0x7B,0x7D,0x7F,0x80,0x80,0x82,0x85,0x86,0x89,0x89,0x8A,0x8D,0x8E,0x8D,0x8E,0x8E, - 0x8E,0x8F,0x8E,0x8F,0x8F,0x8F,0x8F,0x8D,0x8E,0x8E,0x8B,0x8C,0x8C,0x8B,0x8B,0x8B, - 0x88,0x86,0x86,0x84,0x85,0x87,0x84,0x85,0x86,0x84,0x83,0x82,0x81,0x82,0x81,0x80, - 0x7E,0x7D,0x7D,0x7B,0x7A,0x7A,0x79,0x79,0x79,0x78,0x77,0x76,0x76,0x75,0x74,0x74, - 0x75,0x76,0x78,0x78,0x79,0x79,0x7B,0x7B,0x7C,0x7F,0x80,0x81,0x83,0x84,0x84,0x85, - 0x84,0x85,0x85,0x85,0x84,0x84,0x84,0x82,0x80,0x80,0x7F,0x7D,0x7D,0x7C,0x7B,0x7B, - 0x7A,0x79,0x79,0x77,0x78,0x79,0x77,0x77,0x78,0x78,0x79,0x77,0x77,0x78,0x79,0x7B, - 0x7B,0x7C,0x7E,0x7E,0x7E,0x80,0x80,0x80,0x82,0x83,0x83,0x85,0x85,0x85,0x85,0x84, - 0x84,0x86,0x87,0x85,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x85,0x86,0x88,0x87, - 0x85,0x86,0x84,0x85,0x85,0x84,0x85,0x83,0x84,0x84,0x82,0x82,0x82,0x81,0x82,0x83, - 0x82,0x81,0x81,0x80,0x7E,0x7F,0x7E,0x7D,0x7E,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7D,0x7F,0x7F,0x7E,0x80,0x82,0x83,0x84,0x83,0x83, - 0x82,0x82,0x84,0x83,0x82,0x83,0x83,0x82,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x7F,0x7F, - 0x7D,0x7C,0x7C,0x7B,0x7B,0x7B,0x7A,0x7A,0x7A,0x7A,0x7A,0x7B,0x7A,0x78,0x7B,0x7C, - 0x7A,0x7C,0x7D,0x7C,0x7C,0x7D,0x7C,0x7C,0x7E,0x7E,0x7E,0x7F,0x80,0x7F,0x80,0x81, - 0x81,0x81,0x83,0x83,0x82,0x80,0x84,0x84,0x83,0x83,0x82,0x83,0x83,0x94,0x85,0x87, - 0x85,0x61,0x7D,0x7F,0x68,0x66,0x76,0x7E,0x85,0x8B,0x8A,0x8B,0x85,0x93,0xA1,0x9C, - 0x98,0x91,0x8D,0x8A,0x83,0x81,0x7C,0x70,0x66,0x5B,0x55,0x54,0x51,0x50,0x53,0x59, - 0x60,0x67,0x6B,0x71,0x75,0x77,0x7C,0x81,0x83,0x85,0x89,0x8C,0x8C,0x91,0x9E,0xA7, - 0xB0,0xB8,0xB8,0xB9,0xB6,0xAE,0xAA,0xA2,0x9A,0x96,0x8F,0x8A,0x86,0x81,0x7F,0x79, - 0x76,0x73,0x6F,0x6D,0x69,0x68,0x65,0x63,0x60,0x57,0x51,0x49,0x46,0x46,0x45,0x47, - 0x4D,0x54,0x5B,0x62,0x67,0x6C,0x72,0x75,0x7A,0x81,0x83,0x85,0x89,0x8D,0x8D,0x91, - 0x94,0x9B,0xA8,0xAE,0xB2,0xB7,0xB9,0xB7,0xB5,0xB3,0xAF,0xAC,0xA4,0x9F,0x9B,0x91, - 0x8E,0x89,0x86,0x83,0x7E,0x7D,0x78,0x6F,0x69,0x61,0x59,0x58,0x52,0x4E,0x51,0x50, - 0x52,0x55,0x5B,0x63,0x68,0x6D,0x70,0x76,0x7E,0x86,0x8A,0x8F,0x93,0x94,0x96,0x97, - 0x9D,0x9F,0x9C,0xA0,0xA3,0x9A,0x98,0xA1,0xA7,0xAA,0xA7,0xA0,0x98,0x92,0x8E,0x88, - 0x83,0x7A,0x7B,0x7A,0x77,0x7C,0x78,0x74,0x75,0x76,0x73,0x72,0x6F,0x6E,0x6B,0x65, - 0x65,0x62,0x5F,0x61,0x5F,0x5D,0x5B,0x5A,0x5F,0x5C,0x60,0x65,0x62,0x67,0x69,0x6E, - 0x75,0x76,0x79,0x7F,0x7F,0x85,0x8B,0x8D,0x93,0x9A,0x9E,0xA6,0xB0,0xB0,0xB5,0xBA, - 0xBB,0xC0,0xC0,0xBE,0xBC,0xBB,0xB6,0xB1,0xAC,0xA2,0x9D,0x96,0x8F,0x8B,0x84,0x7F, - 0x7B,0x74,0x70,0x6B,0x64,0x61,0x61,0x5E,0x58,0x54,0x52,0x4E,0x4C,0x4D,0x4A,0x4E, - 0x4E,0x49,0x4B,0x50,0x55,0x5A,0x61,0x65,0x6A,0x70,0x70,0x76,0x7C,0x7B,0x81,0x8A, - 0x91,0x94,0x96,0x9C,0xA3,0xAA,0xAC,0xB4,0xBC,0xBB,0xBE,0xC0,0xC0,0xC3,0xC2,0xBF, - 0xC1,0xBE,0xBD,0xBB,0xB5,0xB3,0xAE,0xA5,0xA0,0x9C,0x95,0x8B,0x83,0x7A,0x77,0x72, - 0x6A,0x67,0x5D,0x5F,0x64,0x57,0x56,0x54,0x4F,0x54,0x46,0x3C,0x44,0x44,0x42,0x43, - 0x45,0x4F,0x55,0x55,0x57,0x5C,0x60,0x60,0x5B,0x5D,0x68,0x68,0x67,0x6E,0x6F,0x82, - 0x92,0x8A,0x8F,0x96,0x95,0x9B,0x91,0x91,0x9F,0xA0,0xA2,0xA8,0xAA,0xB2,0xB5,0xAC, - 0xAD,0xB2,0xAD,0xAA,0xA4,0xA6,0xAE,0xA6,0xA3,0xA1,0x9E,0xAF,0xAD,0x9D,0xA4,0xA4, - 0x9A,0x92,0x83,0x88,0x8E,0x7C,0x7B,0x80,0x7D,0x80,0x75,0x67,0x6D,0x67,0x5A,0x5A, - 0x58,0x5A,0x58,0x52,0x54,0x54,0x58,0x62,0x5D,0x5B,0x62,0x60,0x5C,0x59,0x56,0x5E, - 0x5F,0x5A,0x62,0x67,0x6C,0x72,0x6A,0x70,0x7A,0x74,0x76,0x7E,0x81,0x87,0x88,0x8A, - 0x93,0x8F,0x9B,0xAC,0xA2,0xA8,0xAF,0xA9,0xAB,0x9F,0x9D,0xAF,0xA8,0xA2,0xAC,0xAC, - 0xB3,0xB0,0xA2,0xA7,0xA6,0x97,0x95,0x94,0x93,0x90,0x85,0x84,0x84,0x73,0x7D,0x8A, - 0x75,0x77,0x78,0x6E,0x6A,0x55,0x56,0x62,0x54,0x4F,0x59,0x59,0x5D,0x56,0x51,0x5F, - 0x5A,0x50,0x58,0x5E,0x60,0x61,0x61,0x68,0x69,0x60,0x77,0x86,0x77,0x80,0x85,0x85, - 0x85,0x72,0x7D,0x89,0x7C,0x80,0x8C,0x90,0x94,0x8C,0x8C,0x96,0x8C,0x85,0x8B,0x8C, - 0x8B,0x89,0x89,0x8D,0x89,0x80,0x96,0x9F,0x8F,0x98,0x9B,0x98,0x91,0x81,0x8E,0x94, - 0x84,0x89,0x95,0x96,0x93,0x8A,0x8B,0x8F,0x83,0x7C,0x82,0x82,0x81,0x81,0x82,0x84, - 0x7E,0x77,0x8B,0x93,0x80,0x89,0x8C,0x84,0x7B,0x6C,0x7B,0x7E,0x6C,0x73,0x7E,0x7F, - 0x7A,0x76,0x7A,0x7A,0x6B,0x69,0x6D,0x68,0x67,0x68,0x6B,0x69,0x64,0x62,0x77,0x76, - 0x64,0x71,0x74,0x69,0x5E,0x5A,0x6C,0x67,0x5B,0x6D,0x7A,0x77,0x78,0x7E,0x87,0x84, - 0x7B,0x83,0x87,0x84,0x84,0x8D,0x8F,0x8C,0x89,0x8B,0xA6,0x9A,0x8C,0xA2,0x9D,0x8F, - 0x84,0x88,0x93,0x84,0x82,0x95,0x9A,0x93,0x93,0x9B,0x9D,0x90,0x8E,0x95,0x8F,0x89, - 0x90,0x95,0x90,0x8F,0x89,0x98,0xA8,0x8C,0x93,0xA3,0x91,0x85,0x7E,0x86,0x81,0x6D, - 0x79,0x84,0x78,0x75,0x7C,0x7F,0x75,0x6C,0x71,0x6E,0x62,0x62,0x69,0x64,0x5E,0x5E, - 0x59,0x71,0x6F,0x5A,0x72,0x72,0x62,0x5F,0x60,0x6A,0x5B,0x54,0x6C,0x6B,0x63,0x6E, - 0x79,0x78,0x6F,0x70,0x79,0x6E,0x69,0x73,0x74,0x70,0x74,0x71,0x77,0x92,0x7F,0x7D, - 0x95,0x85,0x7D,0x7B,0x7F,0x82,0x70,0x78,0x88,0x7D,0x7D,0x8B,0x91,0x8D,0x89,0x91, - 0x91,0x85,0x8A,0x92,0x8D,0x8D,0x94,0x8B,0x9D,0xAD,0x94,0xA5,0xB1,0x9D,0x9B,0x98, - 0x9D,0x94,0x86,0x98,0x9C,0x90,0x97,0xA1,0xA0,0x95,0x96,0x9D,0x90,0x88,0x90,0x8E, - 0x88,0x8B,0x8B,0x84,0x9A,0x97,0x87,0x9D,0x99,0x89,0x86,0x85,0x85,0x76,0x73,0x82, - 0x7D,0x74,0x7E,0x84,0x7A,0x73,0x7A,0x77,0x6A,0x6B,0x6F,0x68,0x62,0x67,0x5F,0x62, - 0x76,0x63,0x69,0x78,0x66,0x63,0x63,0x62,0x5D,0x55,0x60,0x65,0x5F,0x63,0x6F,0x6F, - 0x65,0x6B,0x73,0x67,0x65,0x6E,0x6D,0x69,0x69,0x6F,0x68,0x78,0x81,0x73,0x87,0x86, - 0x78,0x7C,0x7A,0x78,0x72,0x71,0x7D,0x7C,0x78,0x82,0x89,0x83,0x81,0x88,0x87,0x7F, - 0x83,0x88,0x87,0x83,0x87,0x8A,0x84,0x9C,0x9B,0x90,0xA9,0xA0,0x94,0x99,0x96,0x94, - 0x8B,0x8F,0x9B,0x95,0x95,0xA3,0xA4,0x9B,0x9E,0xA4,0x9E,0x99,0x9F,0x9F,0x9C,0x99, - 0x9A,0x98,0x92,0xAC,0xA5,0x99,0xB3,0xA5,0x9A,0x9B,0x98,0x95,0x89,0x8E,0x97,0x8C, - 0x8B,0x96,0x94,0x89,0x8C,0x90,0x87,0x80,0x86,0x84,0x7D,0x7A,0x7B,0x77,0x6D,0x86, - 0x80,0x71,0x89,0x7D,0x6F,0x71,0x6E,0x6A,0x5F,0x63,0x6B,0x62,0x61,0x6C,0x6B,0x61, - 0x65,0x68,0x60,0x5A,0x60,0x61,0x59,0x5A,0x5C,0x58,0x51,0x69,0x69,0x58,0x73,0x6C, - 0x5C,0x62,0x65,0x60,0x57,0x5E,0x68,0x60,0x60,0x6E,0x6F,0x67,0x6E,0x73,0x6F,0x6B, - 0x72,0x76,0x6F,0x71,0x76,0x74,0x6C,0x85,0x8D,0x78,0x93,0x94,0x80,0x86,0x8B,0x86, - 0x7E,0x84,0x8E,0x89,0x85,0x95,0x97,0x8D,0x95,0x9B,0x94,0x90,0x99,0x9B,0x91,0x95, - 0x99,0x96,0x8E,0xA5,0xB0,0x9A,0xB2,0xB6,0xA0,0xA4,0xA9,0xA2,0x99,0x9D,0xA6,0x9F, - 0x98,0xA6,0xA6,0x9A,0xA1,0xA5,0x9C,0x98,0x9D,0x9C,0x91,0x93,0x94,0x8D,0x83,0x98, - 0xA1,0x87,0x9C,0xA0,0x86,0x88,0x8D,0x84,0x78,0x7C,0x84,0x7C,0x75,0x82,0x81,0x75, - 0x7C,0x7F,0x76,0x73,0x78,0x76,0x6D,0x70,0x70,0x6A,0x61,0x74,0x81,0x66,0x7A,0x85, - 0x6A,0x6B,0x74,0x6B,0x5F,0x63,0x6D,0x66,0x61,0x6E,0x6F,0x64,0x6A,0x70,0x64,0x62, - 0x67,0x65,0x5E,0x60,0x61,0x5C,0x52,0x61,0x71,0x57,0x6B,0x78,0x5D,0x60,0x6A,0x62, - 0x58,0x5E,0x67,0x62,0x5F,0x6D,0x6F,0x66,0x6F,0x75,0x6D,0x70,0x77,0x77,0x73,0x79, - 0x7A,0x77,0x71,0x81,0x91,0x79,0x8F,0x9C,0x81,0x89,0x92,0x88,0x80,0x87,0x8E,0x87, - 0x85,0x93,0x92,0x88,0x93,0x96,0x8D,0x90,0x94,0x93,0x8F,0x94,0x93,0x8F,0x88,0x95, - 0xA5,0x8D,0xA2,0xAD,0x90,0x98,0xA2,0x93,0x8D,0x96,0x97,0x91,0x8F,0x99,0x98,0x8D, - 0x98,0x9A,0x8F,0x93,0x96,0x90,0x8C,0x8F,0x8B,0x87,0x7F,0x8E,0x98,0x7F,0x97,0x9A, - 0x7C,0x89,0x8F,0x7B,0x79,0x83,0x7F,0x79,0x7C,0x84,0x7F,0x7A,0x87,0x84,0x7A,0x82, - 0x83,0x7B,0x7B,0x7E,0x78,0x75,0x71,0x82,0x86,0x72,0x8D,0x88,0x6E,0x7F,0x81,0x6C, - 0x6F,0x77,0x6F,0x6C,0x72,0x75,0x6D,0x6F,0x79,0x71,0x6C,0x75,0x72,0x6C,0x6F,0x6F, - 0x6B,0x69,0x68,0x7E,0x76,0x70,0x8F,0x7A,0x6D,0x85,0x78,0x69,0x76,0x77,0x70,0x73, - 0x7B,0x7B,0x74,0x7C,0x81,0x77,0x7C,0x81,0x7B,0x79,0x7C,0x78,0x76,0x72,0x76,0x8B, - 0x79,0x81,0x97,0x7A,0x7C,0x8E,0x79,0x73,0x82,0x79,0x74,0x7E,0x7F,0x7A,0x7C,0x83, - 0x80,0x7B,0x82,0x81,0x7B,0x7E,0x7E,0x79,0x7A,0x75,0x7F,0x8B,0x7A,0x8E,0x95,0x7A, - 0x86,0x8E,0x75,0x7B,0x86,0x76,0x79,0x84,0x7D,0x7C,0x83,0x84,0x81,0x83,0x87,0x82, - 0x81,0x83,0x7F,0x7E,0x7E,0x78,0x88,0x8B,0x80,0x98,0x93,0x80,0x92,0x8F,0x7A,0x88, - 0x89,0x79,0x84,0x89,0x7F,0x85,0x8A,0x87,0x87,0x8A,0x89,0x87,0x87,0x86,0x81,0x81, - 0x7E,0x7C,0x8A,0x86,0x83,0x95,0x8C,0x80,0x90,0x88,0x79,0x87,0x83,0x76,0x84,0x83, - 0x79,0x82,0x85,0x7F,0x85,0x86,0x84,0x86,0x85,0x83,0x80,0x7F,0x7E,0x7F,0x87,0x85, - 0x86,0x90,0x89,0x82,0x8D,0x85,0x7B,0x87,0x80,0x76,0x83,0x80,0x78,0x81,0x80,0x7B, - 0x81,0x81,0x7F,0x83,0x80,0x7E,0x7E,0x7C,0x7A,0x7B,0x80,0x81,0x83,0x8A,0x83,0x80, - 0x89,0x82,0x7B,0x86,0x80,0x78,0x84,0x80,0x7A,0x83,0x81,0x7F,0x85,0x83,0x84,0x86, - 0x83,0x85,0x84,0x7E,0x7F,0x80,0x83,0x84,0x84,0x8A,0x87,0x82,0x88,0x83,0x7D,0x84, - 0x7E,0x79,0x80,0x7B,0x79,0x80,0x7B,0x7B,0x81,0x7D,0x80,0x82,0x7E,0x7F,0x7E,0x7A, - 0x79,0x79,0x7D,0x7F,0x7E,0x84,0x81,0x7D,0x83,0x7D,0x79,0x80,0x79,0x76,0x7D,0x76, - 0x77,0x7E,0x78,0x7B,0x81,0x7D,0x81,0x83,0x81,0x83,0x80,0x7D,0x7E,0x7C,0x82,0x83, - 0x81,0x88,0x85,0x81,0x87,0x80,0x7D,0x83,0x7A,0x79,0x80,0x77,0x79,0x7F,0x78,0x7B, - 0x80,0x7C,0x80,0x82,0x7F,0x81,0x7F,0x7C,0x7E,0x7B,0x80,0x83,0x81,0x87,0x85,0x81, - 0x87,0x81,0x7E,0x84,0x7B,0x7A,0x80,0x78,0x79,0x7F,0x78,0x7C,0x80,0x7D,0x81,0x82, - 0x7F,0x82,0x7F,0x7C,0x7D,0x7B,0x7F,0x82,0x80,0x86,0x85,0x81,0x85,0x80,0x7D,0x82, - 0x7A,0x79,0x7F,0x77,0x79,0x7F,0x79,0x7C,0x81,0x7E,0x83,0x84,0x81,0x84,0x81,0x7D, - 0x80,0x7D,0x81,0x85,0x82,0x88,0x88,0x83,0x87,0x83,0x7F,0x84,0x7D,0x7B,0x80,0x79, - 0x79,0x7F,0x7A,0x7B,0x80,0x7E,0x81,0x83,0x81,0x84,0x82,0x7F,0x80,0x7E,0x82,0x87, - 0x83,0x88,0x89,0x85,0x88,0x85,0x82,0x86,0x80,0x7D,0x82,0x7A,0x7A,0x80,0x7A,0x7B, - 0x81,0x7E,0x80,0x82,0x7F,0x82,0x80,0x7C,0x7E,0x7B,0x7F,0x83,0x80,0x84,0x86,0x81, - 0x85,0x82,0x7E,0x83,0x7E,0x7A,0x7E,0x79,0x78,0x7E,0x79,0x7A,0x81,0x7E,0x80,0x83, - 0x81,0x83,0x82,0x7E,0x80,0x7E,0x80,0x84,0x80,0x84,0x87,0x82,0x85,0x84,0x7F,0x83, - 0x80,0x7B,0x7E,0x7A,0x78,0x7F,0x7B,0x7B,0x82,0x80,0x81,0x85,0x83,0x84,0x84,0x81, - 0x82,0x80,0x82,0x86,0x83,0x85,0x89,0x84,0x85,0x86,0x81,0x83,0x82,0x7C,0x7D,0x7B, - 0x77,0x7B,0x78,0x77,0x7D,0x7B,0x7B,0x81,0x7F,0x80,0x82,0x7E,0x7F,0x7F,0x80,0x84, - 0x82,0x83,0x88,0x84,0x84,0x87,0x82,0x83,0x85,0x7F,0x7E,0x7F,0x7A,0x7C,0x7C,0x79, - 0x7E,0x7E,0x7C,0x81,0x81,0x7F,0x81,0x7F,0x7E,0x7E,0x7E,0x82,0x80,0x80,0x83,0x81, - 0x80,0x84,0x80,0x7F,0x83,0x7E,0x7C,0x7F,0x7B,0x7B,0x7E,0x7C,0x7F,0x81,0x80,0x83, - 0x85,0x83,0x85,0x85,0x83,0x83,0x83,0x86,0x86,0x83,0x85,0x84,0x82,0x84,0x83,0x81, - 0x83,0x81,0x7D,0x7E,0x7C,0x79,0x7B,0x7B,0x79,0x7C,0x7C,0x7C,0x7F,0x7F,0x7F,0x80, - 0x7F,0x80,0x81,0x81,0x83,0x83,0x82,0x83,0x82,0x81,0x82,0x82,0x81,0x82,0x80,0x7D, - 0x7D,0x7A,0x79,0x7C,0x7A,0x79,0x7D,0x7C,0x7C,0x7F,0x7F,0x7E,0x82,0x80,0x81,0x85, - 0x8F,0x87,0x69,0x77,0x8D,0x8E,0x78,0x88,0x97,0x6F,0x79,0x87,0x7F,0x81,0x87,0x90, - 0x7C,0x7A,0x88,0x88,0x7A,0x79,0x8B,0x82,0x76,0x77,0x7D,0x82,0x86,0x85,0x8A,0x82, - 0x73,0x81,0x80,0x83,0x8B,0x8C,0x8E,0x7E,0x7D,0x76,0x72,0x7F,0x7E,0x84,0x78,0x74, - 0x80,0x6D,0x79,0x93,0x7A,0x76,0x88,0x7B,0x7D,0x75,0x78,0x89,0x7B,0x7B,0x81,0x7B, - 0x7A,0x7B,0x80,0x7E,0x76,0x7C,0x85,0x81,0x7A,0x76,0x7A,0x83,0x84,0x86,0x82,0x7F, - 0x7F,0x7F,0x7E,0x76,0x80,0x91,0x90,0x8F,0x95,0x88,0x87,0x99,0x9F,0x9E,0x9D,0x9E, - 0x9F,0xA0,0xA0,0x9A,0x89,0x83,0x8E,0x92,0x92,0x95,0x87,0x79,0x78,0x72,0x6E,0x66, - 0x64,0x73,0x79,0x78,0x73,0x69,0x6B,0x71,0x72,0x72,0x66,0x63,0x6B,0x69,0x6A,0x68, - 0x63,0x66,0x68,0x69,0x69,0x65,0x67,0x70,0x6F,0x67,0x63,0x6A,0x79,0x7B,0x6E,0x70, - 0x70,0x6C,0x72,0x73,0x74,0x77,0x74,0x75,0x78,0x80,0x88,0x8E,0x97,0xA7,0xB6,0xB4, - 0xA8,0xA3,0xA2,0x9E,0x9C,0x9C,0x96,0x8F,0x93,0x90,0x8B,0x8D,0x8D,0x8C,0x8A,0x8E, - 0x90,0x8B,0x8D,0x8F,0x90,0x8C,0x86,0x85,0x89,0x8A,0x87,0x84,0x81,0x81,0x84,0x8C, - 0x8A,0x85,0x83,0x7F,0x81,0x82,0x81,0x7C,0x7D,0x84,0x82,0x7D,0x7C,0x7B,0x79,0x7A, - 0x7F,0x80,0x87,0x91,0x8F,0x8A,0x86,0x82,0x8B,0x8F,0x8F,0x97,0x97,0x94,0x90,0x90, - 0x96,0x92,0x8E,0x8D,0x86,0x83,0x83,0x7E,0x74,0x73,0x6E,0x6A,0x6C,0x68,0x68,0x6D, - 0x6A,0x66,0x63,0x61,0x65,0x5C,0x5D,0x64,0x62,0x61,0x5D,0x5D,0x59,0x58,0x5E,0x5E, - 0x5F,0x63,0x67,0x65,0x64,0x6A,0x6D,0x6D,0x6B,0x69,0x6C,0x6A,0x69,0x6B,0x6E,0x71, - 0x6F,0x6D,0x70,0x73,0x74,0x75,0x7E,0x92,0x95,0x95,0xA5,0xB0,0xB2,0xAE,0xAB,0x9F, - 0x9D,0x9F,0x96,0x95,0x9A,0x9C,0x98,0x9C,0x9A,0x9A,0xA0,0x9D,0x96,0x8D,0x88,0x88, - 0x8A,0x86,0x81,0x88,0x9C,0x9C,0x8F,0x8D,0x8B,0x89,0x8C,0x7C,0x6B,0x74,0x7C,0x7B, - 0x81,0x82,0x84,0x93,0x90,0x88,0x87,0x7F,0x7D,0x7F,0x7D,0x78,0x7E,0x81,0x7F,0x8A, - 0x9A,0x9E,0x99,0x9B,0x99,0x94,0x94,0x8E,0x83,0x89,0x8B,0x8E,0x96,0x95,0x96,0x94, - 0x90,0x88,0x82,0x79,0x73,0x7A,0x76,0x75,0x73,0x6D,0x68,0x6F,0x82,0x7B,0x71,0x6F, - 0x64,0x60,0x5F,0x53,0x4F,0x56,0x59,0x59,0x5F,0x55,0x52,0x5C,0x55,0x59,0x5A,0x59, - 0x61,0x6B,0x6B,0x62,0x5F,0x5C,0x64,0x72,0x7B,0x75,0x70,0x6E,0x69,0x67,0x67,0x62, - 0x65,0x72,0x78,0x85,0x8A,0x8B,0x8E,0x93,0x99,0xA0,0xA3,0xA1,0xAC,0xAF,0xAC,0xA1, - 0x97,0x99,0x9F,0xAE,0xB8,0xAA,0x9D,0x97,0x89,0x87,0x85,0x7F,0x83,0x8E,0x8D,0x8F, - 0x91,0x88,0x86,0x7E,0x7F,0x87,0x87,0x89,0x90,0x8F,0x8B,0x84,0x7D,0x7E,0x83,0x98, - 0xA0,0x9A,0x92,0x82,0x7A,0x7E,0x7C,0x78,0x84,0x86,0x88,0x94,0x94,0x89,0x85,0x85, - 0x88,0x91,0x91,0x95,0x97,0x9A,0x98,0x8C,0x8C,0x8A,0x8C,0x9C,0xA8,0x9C,0x90,0x82, - 0x75,0x7A,0x77,0x7A,0x7F,0x7B,0x7A,0x7F,0x77,0x69,0x64,0x5D,0x5D,0x64,0x63,0x60, - 0x63,0x60,0x5B,0x56,0x51,0x4C,0x58,0x6A,0x69,0x60,0x56,0x4E,0x4C,0x56,0x5A,0x63, - 0x68,0x67,0x6E,0x6D,0x65,0x5F,0x61,0x60,0x6C,0x74,0x75,0x75,0x77,0x77,0x77,0x7B, - 0x76,0x7C,0x90,0xA0,0xA6,0xA4,0x9A,0x95,0x9E,0xA2,0xA8,0xAE,0xAA,0xA7,0xAA,0xA6, - 0x9D,0x97,0x94,0x94,0x9C,0x9C,0x95,0x90,0x88,0x83,0x82,0x84,0x7E,0x82,0x94,0x97, - 0x96,0x8B,0x7D,0x72,0x76,0x7D,0x86,0x8A,0x87,0x88,0x87,0x89,0x84,0x7E,0x7C,0x83, - 0x8A,0x8C,0x8C,0x84,0x80,0x81,0x83,0x85,0x82,0x8D,0x9A,0x9D,0x9B,0x8F,0x80,0x81, - 0x89,0x94,0x9D,0x9A,0x94,0x93,0x95,0x91,0x8B,0x82,0x85,0x8C,0x8E,0x8F,0x8B,0x82, - 0x7A,0x78,0x7C,0x75,0x74,0x82,0x88,0x84,0x7B,0x68,0x56,0x5C,0x64,0x6A,0x6D,0x63, - 0x60,0x5C,0x5C,0x5D,0x55,0x52,0x55,0x5F,0x63,0x67,0x64,0x5C,0x5A,0x5F,0x62,0x5D, - 0x65,0x75,0x7B,0x7A,0x75,0x61,0x56,0x5E,0x6B,0x76,0x79,0x76,0x79,0x7A,0x7F,0x80, - 0x7E,0x84,0x8D,0x9B,0xA3,0xA7,0xA4,0x9E,0x9D,0xA2,0xA2,0x9D,0xA7,0xB0,0xAF,0xAA, - 0x9C,0x86,0x7F,0x83,0x8D,0x95,0x92,0x8C,0x87,0x84,0x82,0x83,0x7C,0x7C,0x84,0x85, - 0x8B,0x8A,0x82,0x7D,0x7D,0x80,0x7D,0x82,0x91,0x98,0x96,0x91,0x81,0x71,0x71,0x7E, - 0x88,0x91,0x93,0x89,0x86,0x88,0x88,0x87,0x8A,0x89,0x8F,0x95,0x99,0x93,0x8D,0x8D, - 0x88,0x8D,0x8B,0x93,0xA0,0xA2,0x9F,0x94,0x81,0x75,0x7A,0x85,0x8D,0x8B,0x8A,0x7F, - 0x7B,0x76,0x6F,0x6F,0x6A,0x6A,0x6C,0x70,0x6E,0x67,0x5D,0x5B,0x59,0x55,0x58,0x63, - 0x6C,0x6D,0x66,0x57,0x4A,0x46,0x4E,0x5C,0x63,0x65,0x66,0x60,0x60,0x62,0x62,0x62, - 0x60,0x67,0x6B,0x71,0x71,0x6C,0x6C,0x6B,0x72,0x6F,0x79,0x8C,0x92,0x98,0x91,0x88, - 0x81,0x85,0x95,0xA2,0xA9,0xAB,0xA5,0xA4,0xA6,0xA0,0xA0,0x9C,0x9A,0x9A,0x9E,0x9D, - 0x96,0x90,0x86,0x80,0x7F,0x80,0x88,0x95,0x9A,0x95,0x87,0x77,0x6F,0x71,0x7D,0x86, - 0x86,0x82,0x7D,0x79,0x7F,0x7F,0x7F,0x7D,0x7E,0x84,0x85,0x8A,0x86,0x80,0x80,0x83, - 0x83,0x85,0x93,0x9B,0x9D,0x98,0x8A,0x7E,0x7C,0x83,0x91,0x98,0x9A,0x94,0x8D,0x90, - 0x92,0x90,0x8F,0x8D,0x8A,0x8B,0x8D,0x8A,0x88,0x82,0x7A,0x7C,0x79,0x79,0x88,0x8C, - 0x88,0x7F,0x6C,0x5E,0x5B,0x64,0x6B,0x6C,0x69,0x61,0x59,0x5A,0x5D,0x5B,0x57,0x57, - 0x59,0x5B,0x60,0x5F,0x5D,0x57,0x56,0x58,0x55,0x65,0x77,0x7D,0x79,0x6F,0x5E,0x55, - 0x5A,0x66,0x70,0x77,0x78,0x71,0x71,0x76,0x7B,0x7F,0x83,0x82,0x89,0x95,0x96,0x98, - 0x9A,0x97,0x9D,0xA0,0x9F,0xAB,0xB6,0xB9,0xB5,0xA4,0x91,0x88,0x8C,0x94,0x9D,0x9A, - 0x94,0x8B,0x85,0x86,0x86,0x84,0x82,0x7F,0x81,0x86,0x82,0x80,0x7C,0x77,0x79,0x75, - 0x78,0x89,0x91,0x91,0x8E,0x80,0x75,0x71,0x78,0x85,0x8C,0x8C,0x87,0x85,0x85,0x86, - 0x8A,0x8B,0x8C,0x8D,0x91,0x98,0x98,0x97,0x91,0x8B,0x8E,0x8C,0x95,0xA6,0xA8,0xA6, - 0x9E,0x8D,0x7D,0x7A,0x82,0x8C,0x91,0x8E,0x88,0x80,0x7C,0x7C,0x78,0x74,0x72,0x6D, - 0x71,0x73,0x6F,0x69,0x61,0x5C,0x56,0x59,0x63,0x70,0x73,0x6F,0x65,0x51,0x47,0x4B, - 0x54,0x5F,0x67,0x66,0x61,0x5C,0x60,0x65,0x66,0x66,0x65,0x67,0x6E,0x74,0x74,0x72, - 0x6F,0x6F,0x6E,0x76,0x88,0x96,0x9B,0x98,0x8D,0x7D,0x78,0x80,0x8E,0x9A,0xA3,0xA1, - 0x9B,0x99,0x9B,0x9E,0x9C,0x9B,0x9B,0x9B,0xA1,0xA4,0x9E,0x98,0x90,0x8C,0x89,0x8D, - 0x9B,0xA3,0xA1,0x99,0x88,0x76,0x71,0x77,0x80,0x8B,0x8D,0x85,0x7D,0x7A,0x7C,0x7E, - 0x7D,0x7E,0x7E,0x7E,0x84,0x82,0x81,0x7E,0x79,0x79,0x77,0x80,0x91,0x9D,0x9E,0x97, - 0x86,0x78,0x75,0x7B,0x8A,0x95,0x95,0x8F,0x88,0x88,0x89,0x89,0x8A,0x87,0x84,0x86, - 0x89,0x88,0x86,0x81,0x7B,0x7A,0x75,0x7D,0x8E,0x95,0x92,0x88,0x76,0x69,0x65,0x6E, - 0x7C,0x82,0x81,0x76,0x70,0x70,0x72,0x75,0x73,0x71,0x6F,0x70,0x76,0x77,0x75,0x6F, - 0x6A,0x69,0x67,0x70,0x83,0x8B,0x8B,0x82,0x71,0x64,0x64,0x6E,0x79,0x82,0x80,0x7A, - 0x77,0x79,0x7F,0x82,0x81,0x7E,0x7C,0x80,0x88,0x8C,0x8D,0x88,0x84,0x82,0x7E,0x86, - 0x98,0x9F,0xA1,0x99,0x89,0x7B,0x77,0x7D,0x86,0x8D,0x89,0x84,0x82,0x7D,0x80,0x81, - 0x7E,0x7C,0x79,0x7A,0x7F,0x80,0x7F,0x79,0x74,0x72,0x6D,0x76,0x88,0x92,0x92,0x8A, - 0x7A,0x6C,0x6B,0x71,0x7D,0x85,0x85,0x82,0x7F,0x7C,0x80,0x83,0x80,0x80,0x7F,0x80, - 0x87,0x8B,0x89,0x85,0x7E,0x7C,0x79,0x7F,0x92,0x9A,0x9B,0x95,0x84,0x75,0x72,0x76, - 0x82,0x88,0x8A,0x85,0x7E,0x80,0x82,0x82,0x80,0x7D,0x78,0x7A,0x7F,0x82,0x82,0x7D, - 0x78,0x74,0x71,0x75,0x85,0x8F,0x91,0x8B,0x7A,0x6D,0x69,0x6A,0x74,0x7D,0x7E,0x7C, - 0x75,0x75,0x7A,0x7C,0x7F,0x7A,0x74,0x79,0x7C,0x81,0x86,0x81,0x7C,0x78,0x75,0x77, - 0x86,0x94,0x99,0x98,0x8B,0x7D,0x75,0x75,0x7F,0x89,0x8C,0x8C,0x86,0x82,0x87,0x8A, - 0x8B,0x86,0x7E,0x7D,0x81,0x86,0x8A,0x86,0x7F,0x7A,0x74,0x74,0x7F,0x8C,0x94,0x94, - 0x88,0x79,0x6E,0x6D,0x73,0x7C,0x83,0x7E,0x7B,0x79,0x7C,0x82,0x82,0x7F,0x77,0x75, - 0x78,0x7D,0x83,0x82,0x80,0x78,0x74,0x72,0x79,0x89,0x95,0x97,0x8F,0x80,0x71,0x6E, - 0x73,0x7C,0x84,0x83,0x7F,0x7C,0x7C,0x84,0x88,0x85,0x7F,0x7A,0x79,0x7E,0x84,0x86, - 0x84,0x7F,0x79,0x75,0x76,0x84,0x92,0x95,0x93,0x88,0x78,0x70,0x72,0x78,0x82,0x83, - 0x7F,0x7B,0x78,0x7C,0x82,0x83,0x81,0x7B,0x76,0x77,0x7E,0x82,0x82,0x7F,0x79,0x74, - 0x70,0x7B,0x8A,0x90,0x94,0x8C,0x7E,0x73,0x70,0x76,0x7D,0x84,0x85,0x7E,0x7C,0x7B, - 0x81,0x88,0x88,0x86,0x7E,0x7E,0x7E,0x82,0x86,0x87,0x83,0x7E,0x78,0x76,0x85,0x90, - 0x93,0x96,0x88,0x7A,0x75,0x70,0x7B,0x7F,0x82,0x82,0x76,0x76,0x79,0x7E,0x86,0x85, - 0x7F,0x7A,0x75,0x78,0x7F,0x82,0x84,0x7E,0x79,0x74,0x78,0x88,0x90,0x93,0x91,0x83, - 0x78,0x73,0x76,0x7F,0x84,0x85,0x7F,0x7A,0x7C,0x7E,0x85,0x88,0x88,0x85,0x7C,0x7A, - 0x7C,0x7F,0x83,0x85,0x81,0x7D,0x78,0x7E,0x89,0x8C,0x92,0x8D,0x82,0x7B,0x75,0x79, - 0x7E,0x80,0x81,0x7D,0x7C,0x79,0x7B,0x83,0x84,0x87,0x84,0x7E,0x7D,0x7A,0x7B,0x7E, - 0x80,0x7F,0x79,0x77,0x80,0x85,0x8D,0x8F,0x86,0x81,0x78,0x73,0x77,0x7C,0x7F,0x7F, - 0x7D,0x7C,0x7A,0x7F,0x84,0x86,0x89,0x85,0x80,0x7F,0x7E,0x80,0x81,0x82,0x80,0x7C, - 0x7F,0x86,0x8A,0x93,0x8E,0x87,0x84,0x7A,0x79,0x7C,0x7F,0x82,0x80,0x7E,0x7C,0x7E, - 0x81,0x81,0x86,0x88,0x83,0x80,0x7C,0x7C,0x7D,0x7F,0x80,0x7B,0x79,0x7F,0x84,0x8B, - 0x8F,0x88,0x85,0x7E,0x76,0x76,0x7A,0x7D,0x7F,0x7D,0x7B,0x7C,0x7D,0x7F,0x82,0x86, - 0x85,0x84,0x82,0x7F,0x7F,0x7F,0x80,0x7F,0x7A,0x7C,0x84,0x87,0x8E,0x8F,0x88,0x87, - 0x7F,0x7B,0x7D,0x7C,0x7E,0x7F,0x7E,0x7D,0x7F,0x80,0x81,0x83,0x85,0x85,0x85,0x80, - 0x7F,0x7F,0x7E,0x7F,0x7B,0x7A,0x7F,0x84,0x87,0x8D,0x88,0x85,0x85,0x7D,0x7B,0x7C, - 0x7A,0x7D,0x7D,0x7B,0x7C,0x80,0x80,0x80,0x83,0x85,0x85,0x84,0x80,0x7E,0x7D,0x7E, - 0x7F,0x7C,0x7C,0x83,0x86,0x8A,0x8D,0x86,0x86,0x85,0x7D,0x7D,0x7D,0x7B,0x7F,0x7C, - 0x7B,0x7F,0x7E,0x80,0x82,0x83,0x85,0x85,0x84,0x82,0x7F,0x7D,0x7C,0x7D,0x7B,0x7C, - 0x83,0x83,0x88,0x88,0x81,0x85,0x80,0x7C,0x7E,0x7B,0x7B,0x7E,0x7D,0x7B,0x7D,0x7D, - 0x7D,0x7E,0x81,0x82,0x83,0x83,0x82,0x7E,0x7C,0x7F,0x7D,0x7A,0x7E,0x82,0x81,0x86, - 0x86,0x81,0x85,0x80,0x7C,0x7F,0x7B,0x7C,0x7F,0x7C,0x7D,0x7E,0x7D,0x7F,0x80,0x81, - 0x84,0x84,0x84,0x83,0x81,0x81,0x82,0x81,0x7F,0x82,0x81,0x83,0x8B,0x84,0x80,0x83, - 0x7D,0x7D,0x7D,0x7C,0x7F,0x7D,0x7B,0x7F,0x7D,0x7A,0x7C,0x7C,0x7E,0x7C,0x8E,0x8A, - 0x7C,0x87,0x68,0x71,0x82,0x6E,0x6A,0x74,0x82,0x8A,0x8A,0x8B,0x8E,0x85,0x8C,0x9D, - 0x9A,0xA1,0xA5,0x91,0x8C,0x76,0x77,0x91,0x76,0x65,0x72,0x71,0x5B,0x5B,0x57,0x52, - 0x6B,0x63,0x62,0x59,0x5D,0x73,0x70,0x6D,0x79,0x79,0x82,0xA5,0x8B,0x8D,0x98,0x9B, - 0xAC,0x81,0xB8,0xBC,0x95,0xB4,0x96,0x9E,0xB1,0xA4,0x95,0x8D,0x95,0x9C,0x7D,0x70, - 0x76,0x5F,0x78,0x78,0x6F,0x8B,0x79,0x6B,0x77,0x77,0x7D,0x6E,0x4C,0x4B,0x56,0x62, - 0x64,0x62,0x5D,0x54,0x5A,0x6F,0x6E,0x6D,0x7E,0x80,0x95,0xA6,0x9C,0x8F,0x9B,0x9D, - 0x92,0x97,0xA4,0xB2,0xAD,0x9A,0xA3,0xA9,0xA2,0xA4,0x96,0x92,0x8E,0x8C,0x82,0x76, - 0x7F,0x76,0x76,0x74,0x72,0x7B,0x73,0x67,0x50,0x43,0x52,0x5E,0x43,0x30,0x41,0x3D, - 0x32,0x38,0x4B,0x5D,0x54,0x59,0x68,0x69,0x75,0x96,0xA7,0xA0,0x92,0x8E,0x9F,0x9B, - 0x92,0x96,0x94,0x9F,0x9E,0xA2,0xB9,0xB2,0xA9,0xB6,0xAD,0xA5,0xA6,0x88,0x8E,0x96, - 0x83,0x94,0x92,0x81,0x7E,0x71,0x6B,0x7F,0x87,0x7F,0x7F,0x6F,0x7E,0x82,0x6E,0x70, - 0x71,0x7F,0x81,0x74,0x6D,0x63,0x6A,0x6C,0x65,0x63,0x5F,0x72,0x80,0x76,0x82,0x81, - 0x7B,0x89,0x78,0x83,0x93,0x91,0x99,0x95,0x9E,0xA3,0xAF,0xBB,0xAD,0xB7,0xC1,0xB6, - 0xBD,0xBA,0xB2,0xB2,0xAE,0xAD,0xA5,0x99,0x89,0x78,0x74,0x6E,0x78,0x69,0x5D,0x75, - 0x75,0x6C,0x5C,0x49,0x44,0x46,0x4B,0x51,0x45,0x39,0x36,0x37,0x31,0x2C,0x39,0x39, - 0x3A,0x3C,0x3A,0x3D,0x46,0x50,0x4E,0x67,0x86,0x90,0x89,0x73,0x78,0x88,0x8A,0x99, - 0x9B,0x9A,0xA6,0x95,0x87,0x8B,0x90,0x96,0xA6,0xBC,0xB8,0xBC,0xC6,0xD0,0xD7,0xD1, - 0xD6,0xD8,0xD6,0xD7,0xCB,0xBC,0xAE,0xA0,0xA5,0xB3,0xB3,0xA4,0x8A,0x77,0x73,0x75, - 0x78,0x6E,0x69,0x64,0x72,0x6D,0x5C,0x57,0x47,0x58,0x54,0x55,0x5E,0x4E,0x55,0x5D, - 0x5E,0x54,0x52,0x5E,0x64,0x6F,0x7E,0x6E,0x6B,0x7B,0x6B,0x72,0x7B,0x78,0x7F,0x83, - 0x8F,0x94,0x97,0x95,0x98,0x93,0x94,0x96,0x91,0x95,0x9B,0x9F,0x9C,0xA4,0x9E,0x98, - 0xA5,0xA4,0x9B,0x8D,0x82,0x80,0x81,0x7D,0x80,0x7E,0x71,0x7B,0x7B,0x79,0x77,0x6F, - 0x66,0x51,0x50,0x56,0x61,0x74,0x6F,0x6F,0x7A,0x81,0x84,0x86,0x7F,0x6E,0x63,0x5B, - 0x66,0x77,0x81,0x74,0x5D,0x60,0x6E,0x80,0x82,0x70,0x71,0x79,0x79,0x79,0x82,0x8D, - 0x81,0x7D,0x78,0x78,0x91,0x90,0x8E,0x82,0x73,0x7F,0x87,0x91,0x99,0x91,0x89,0x7D, - 0x7E,0x93,0xA2,0xB5,0xB3,0xA0,0xA3,0xB1,0xB0,0xAD,0xAD,0x9F,0xB3,0xC5,0xBF,0xC5, - 0xB1,0xA5,0xAA,0xAF,0xB3,0xA5,0x9F,0xA4,0xA2,0x9A,0x8D,0x8E,0x95,0x92,0x92,0x84, - 0x77,0x65,0x55,0x55,0x53,0x5C,0x60,0x61,0x6D,0x75,0x69,0x5D,0x59,0x4D,0x57,0x5D, - 0x59,0x58,0x53,0x4C,0x42,0x41,0x38,0x35,0x46,0x49,0x4F,0x4D,0x41,0x42,0x3B,0x44, - 0x58,0x5F,0x65,0x6D,0x7D,0x83,0x7F,0x7D,0x7B,0x8D,0xA0,0xA6,0xA8,0x9E,0x94,0x92, - 0x8F,0x95,0x89,0x89,0xA1,0x95,0x92,0x89,0x76,0x8A,0x92,0x91,0x9F,0x9B,0x9A,0xAB, - 0xA5,0x93,0x95,0x93,0x9C,0xB9,0xB9,0xA6,0x9F,0x97,0xA2,0xAD,0xAB,0xA8,0x8F,0x91, - 0xA4,0x9B,0x90,0x81,0x7A,0x85,0x91,0x9A,0x99,0x91,0x85,0x86,0x86,0x7F,0x7C,0x81, - 0x8B,0x87,0x7C,0x71,0x66,0x74,0x8F,0x8A,0x80,0x65,0x65,0x7E,0x79,0x6E,0x47,0x30, - 0x41,0x5A,0x68,0x62,0x5C,0x5A,0x5A,0x5D,0x5F,0x59,0x5C,0x68,0x79,0x75,0x67,0x6A, - 0x70,0x72,0x71,0x78,0x79,0x73,0x74,0x7A,0x70,0x5F,0x5A,0x58,0x60,0x6C,0x6E,0x63, - 0x6B,0x77,0x75,0x7B,0x80,0x91,0xA2,0xAB,0xAE,0xA9,0x9D,0x9A,0xA1,0xA6,0xA6,0xA0, - 0x93,0x8A,0x99,0xB2,0xAE,0x9F,0x92,0x84,0x8B,0x93,0x8E,0x86,0x88,0x8D,0x8C,0x7E, - 0x76,0x79,0x86,0x93,0x8A,0x7D,0x80,0x8A,0x8F,0x8F,0x86,0x78,0x7C,0x7D,0x70,0x72, - 0x70,0x6D,0x6E,0x6E,0x6F,0x75,0x71,0x75,0x81,0x79,0x7E,0x77,0x61,0x6F,0x7D,0x86, - 0x8D,0x82,0x82,0x86,0x87,0x8F,0x8B,0x7C,0x7B,0x79,0x72,0x7F,0x85,0x74,0x65,0x5F, - 0x68,0x77,0x77,0x7D,0x7F,0x76,0x6A,0x5B,0x59,0x6A,0x81,0x88,0x7C,0x75,0x74,0x70, - 0x79,0x80,0x7C,0x77,0x72,0x79,0x72,0x61,0x6C,0x6A,0x62,0x6E,0x6B,0x75,0x7C,0x78, - 0x8A,0x8D,0x8D,0x90,0x8A,0x93,0xA3,0xAC,0xA7,0xA0,0xA6,0xA4,0xA1,0xA5,0xA4,0xA5, - 0x9E,0x94,0x87,0x83,0x93,0x91,0x80,0x79,0x74,0x80,0x8B,0x8C,0x94,0x95,0x90,0x89, - 0x7B,0x7A,0x88,0x91,0x8F,0x80,0x7D,0x7E,0x74,0x75,0x7C,0x86,0x85,0x7A,0x72,0x6B, - 0x74,0x7F,0x7A,0x6D,0x65,0x67,0x73,0x77,0x7E,0x80,0x7A,0x7A,0x79,0x7D,0x84,0x86, - 0x83,0x80,0x7C,0x7C,0x78,0x6C,0x70,0x7B,0x80,0x77,0x72,0x6D,0x7A,0x91,0x87,0x73, - 0x61,0x65,0x72,0x72,0x7B,0x7E,0x7F,0x78,0x6F,0x69,0x68,0x70,0x6E,0x6D,0x6A,0x64, - 0x64,0x5B,0x5F,0x71,0x76,0x6F,0x69,0x66,0x6B,0x83,0x86,0x73,0x6F,0x6E,0x7A,0x8F, - 0x8B,0x90,0x97,0x98,0x9E,0x9B,0xA0,0xAA,0xB1,0xB2,0xB3,0xAE,0xA2,0xA2,0xA2,0xA8, - 0xAA,0xA2,0x9A,0x95,0x99,0xAF,0xB4,0x9C,0x94,0x90,0x91,0x99,0x97,0x9B,0xA0,0x9A, - 0x8C,0x7E,0x85,0x94,0x96,0x97,0x94,0x8D,0x88,0x85,0x88,0x8B,0x89,0x82,0x75,0x79, - 0x7B,0x86,0x90,0x80,0x80,0x74,0x74,0x88,0x81,0x83,0x86,0x81,0x75,0x66,0x69,0x6D, - 0x76,0x7A,0x77,0x72,0x69,0x69,0x64,0x6D,0x74,0x68,0x69,0x67,0x5E,0x6A,0x76,0x68, - 0x64,0x5D,0x60,0x6B,0x45,0x49,0x6F,0x77,0x5F,0x45,0x58,0x4E,0x4C,0x61,0x5B,0x52, - 0x52,0x5F,0x53,0x53,0x69,0x6C,0x5F,0x59,0x68,0x62,0x6B,0x72,0x6A,0x74,0x71,0x70, - 0x81,0x81,0x82,0x8F,0x8D,0x8C,0x88,0x90,0xAC,0xB0,0xB0,0xAC,0xAB,0xAB,0xAB,0xB5, - 0xAF,0xB1,0xB1,0xA9,0xAD,0xA1,0xA8,0xBE,0xAC,0x9D,0xA2,0x9E,0x9A,0x98,0x97,0xA1, - 0xA9,0x98,0x8A,0x8B,0x97,0xA1,0x9B,0xA1,0x9F,0xA2,0xA5,0x94,0x9A,0xA9,0xA8,0xA0, - 0x9B,0x9A,0x93,0xA1,0xAF,0xA4,0x99,0x90,0x90,0x8F,0x92,0x96,0x98,0x97,0x89,0x7F, - 0x73,0x7C,0x8A,0x7F,0x7D,0x7F,0x79,0x71,0x73,0x7C,0x7B,0x7A,0x6E,0x64,0x60,0x62, - 0x78,0x73,0x61,0x5D,0x54,0x5E,0x5C,0x50,0x5C,0x60,0x58,0x49,0x35,0x36,0x42,0x49, - 0x4C,0x4C,0x4A,0x36,0x25,0x31,0x3F,0x43,0x42,0x36,0x34,0x38,0x41,0x60,0x63,0x55, - 0x55,0x58,0x68,0x6F,0x72,0x80,0x87,0x85,0x7F,0x79,0x82,0x93,0x97,0x97,0x97,0x93, - 0x8B,0x8C,0x97,0xA1,0xA2,0x97,0x8A,0x8C,0x8D,0x8E,0xA6,0xA0,0x8E,0x8C,0x8B,0x90, - 0x8F,0x90,0x9F,0xAA,0xA1,0x91,0x8A,0x8E,0x9C,0xA6,0xA7,0xAA,0xA2,0x9D,0x9F,0xA0, - 0xAE,0xAD,0xA3,0x9F,0x9C,0xA5,0xA4,0xB4,0xBF,0xA8,0xA4,0xA0,0x9B,0xA5,0xA4,0xAC, - 0xB4,0xA3,0x92,0x87,0x89,0x96,0x98,0x98,0x92,0x90,0x89,0x7E,0x7E,0x86,0x8B,0x86, - 0x7D,0x77,0x77,0x6D,0x74,0x84,0x75,0x66,0x5E,0x57,0x60,0x63,0x61,0x68,0x62,0x54, - 0x49,0x44,0x4F,0x5C,0x5A,0x58,0x59,0x56,0x4F,0x4E,0x5B,0x65,0x64,0x62,0x5D,0x5F, - 0x6A,0x68,0x80,0x8D,0x80,0x7E,0x76,0x7B,0x86,0x83,0x8D,0x98,0x90,0x80,0x74,0x75, - 0x84,0x8B,0x86,0x84,0x82,0x7D,0x79,0x78,0x82,0x8B,0x84,0x80,0x7A,0x79,0x76,0x7F, - 0x97,0x91,0x81,0x79,0x70,0x78,0x80,0x82,0x8D,0x8D,0x80,0x7B,0x79,0x84,0x8E,0x8D, - 0x8A,0x8E,0x91,0x86,0x7E,0x82,0x91,0x94,0x8F,0x8A,0x81,0x86,0x83,0x8F,0xA6,0x99, - 0x8A,0x81,0x80,0x8B,0x8E,0x8E,0x94,0x8E,0x85,0x7A,0x73,0x7F,0x85,0x82,0x84,0x83, - 0x7A,0x6E,0x66,0x6F,0x7B,0x77,0x6E,0x64,0x5F,0x5F,0x5D,0x6F,0x7D,0x6E,0x5E,0x54, - 0x50,0x5A,0x5C,0x60,0x6F,0x6D,0x60,0x5B,0x5D,0x6D,0x7A,0x79,0x7D,0x81,0x80,0x7C, - 0x7A,0x89,0x99,0x9A,0x99,0x95,0x92,0x93,0x8F,0xA3,0xB3,0xA3,0x92,0x89,0x88,0x91, - 0x8F,0x8C,0x95,0x8F,0x88,0x80,0x77,0x84,0x8A,0x88,0x8F,0x8F,0x89,0x7D,0x76,0x84, - 0x91,0x8E,0x88,0x82,0x80,0x85,0x83,0x91,0x9F,0x92,0x88,0x81,0x85,0x8C,0x8B,0x91, - 0x9B,0xA0,0x97,0x8B,0x86,0x8E,0x9A,0x9B,0x98,0x99,0x92,0x89,0x86,0x8B,0x96,0x95, - 0x93,0x8F,0x84,0x84,0x7C,0x87,0xA1,0x95,0x83,0x7A,0x73,0x7A,0x7D,0x7D,0x85,0x84, - 0x78,0x6C,0x63,0x68,0x74,0x75,0x72,0x73,0x71,0x66,0x5B,0x5D,0x6E,0x75,0x70,0x69, - 0x5F,0x5E,0x5E,0x67,0x81,0x82,0x74,0x6A,0x66,0x70,0x74,0x79,0x87,0x8C,0x86,0x7B, - 0x75,0x79,0x83,0x8A,0x8D,0x8E,0x8A,0x82,0x7A,0x78,0x83,0x8C,0x8A,0x84,0x7E,0x7B, - 0x78,0x72,0x87,0x9B,0x8C,0x7D,0x75,0x72,0x7E,0x82,0x83,0x8D,0x8D,0x85,0x7B,0x72, - 0x7C,0x87,0x8A,0x8A,0x89,0x8A,0x81,0x77,0x7A,0x87,0x8D,0x88,0x82,0x7F,0x7E,0x7A, - 0x82,0x98,0x99,0x8C,0x82,0x78,0x7C,0x84,0x87,0x8F,0x95,0x92,0x87,0x78,0x77,0x83, - 0x89,0x8C,0x8E,0x8C,0x87,0x7D,0x78,0x81,0x8A,0x8C,0x88,0x7F,0x7A,0x79,0x73,0x85, - 0x97,0x8C,0x7E,0x70,0x6A,0x73,0x78,0x7A,0x81,0x83,0x7F,0x72,0x63,0x68,0x75,0x7C, - 0x7F,0x7E,0x7B,0x76,0x6E,0x6D,0x78,0x84,0x89,0x84,0x7A,0x7A,0x7D,0x7C,0x8F,0x9D, - 0x94,0x8C,0x7D,0x7A,0x84,0x84,0x8B,0x91,0x8D,0x88,0x7D,0x72,0x78,0x82,0x87,0x88, - 0x83,0x80,0x7B,0x72,0x73,0x7A,0x84,0x87,0x7D,0x74,0x71,0x70,0x72,0x89,0x94,0x86, - 0x7A,0x6D,0x6E,0x76,0x77,0x7E,0x83,0x85,0x82,0x74,0x6F,0x76,0x80,0x86,0x86,0x85, - 0x84,0x80,0x77,0x75,0x7E,0x89,0x8E,0x86,0x7C,0x7B,0x79,0x78,0x8B,0x96,0x8B,0x80, - 0x71,0x6F,0x79,0x7B,0x81,0x85,0x85,0x87,0x7C,0x71,0x74,0x7A,0x84,0x88,0x85,0x86, - 0x81,0x76,0x71,0x77,0x82,0x88,0x83,0x7D,0x7A,0x76,0x72,0x82,0x90,0x8C,0x81,0x70, - 0x6C,0x75,0x78,0x7D,0x83,0x86,0x87,0x7C,0x72,0x75,0x7D,0x84,0x8A,0x8B,0x8C,0x8C, - 0x86,0x81,0x80,0x88,0x95,0x93,0x8B,0x85,0x7D,0x77,0x81,0x97,0x96,0x8C,0x7D,0x76, - 0x7B,0x79,0x7A,0x7C,0x82,0x86,0x81,0x74,0x6D,0x6E,0x75,0x7F,0x82,0x82,0x81,0x80, - 0x7A,0x73,0x76,0x81,0x86,0x85,0x81,0x7A,0x73,0x75,0x8A,0x96,0x90,0x86,0x76,0x77, - 0x7F,0x7C,0x80,0x82,0x86,0x8C,0x82,0x78,0x75,0x77,0x82,0x8A,0x88,0x87,0x84,0x83, - 0x7F,0x77,0x7C,0x85,0x89,0x8A,0x82,0x79,0x71,0x77,0x8C,0x93,0x8C,0x7F,0x73,0x75, - 0x7A,0x7D,0x7F,0x7F,0x85,0x8E,0x87,0x79,0x74,0x76,0x82,0x88,0x86,0x86,0x84,0x82, - 0x7C,0x79,0x7C,0x85,0x8A,0x84,0x7F,0x78,0x6F,0x7A,0x92,0x94,0x8F,0x7F,0x70,0x7B, - 0x7D,0x83,0x82,0x80,0x8B,0x88,0x86,0x80,0x79,0x76,0x7C,0x87,0x89,0x8B,0x80,0x75, - 0x76,0x80,0x85,0x7A,0x7C,0x89,0x83,0x72,0x65,0x6E,0x8E,0x9A,0x8D,0x79,0x6B,0x76, - 0x77,0x74,0x8C,0x84,0x6D,0x7C,0x8E,0x81,0x79,0x7D,0x6C,0x78,0x85,0x80,0x82,0x7D, - 0x83,0x8A,0x83,0x75,0x7A,0x8D,0x89,0x7A,0x7B,0x79,0x85,0x8F,0x95,0x97,0x77,0x68, - 0x76,0x8A,0x95,0x89,0x71,0x73,0x89,0x83,0x7D,0x79,0x71,0x81,0x83,0x79,0x89,0x8F, - 0x79,0x81,0x8B,0x75,0x72,0x73,0x85,0x90,0x7E,0x70,0x75,0x84,0x84,0xA0,0x9D,0x79, - 0x72,0x65,0x66,0x7F,0x89,0x86,0x90,0x7F,0x7A,0x91,0x80,0x6E,0x77,0x80,0x80,0x83, - 0x80,0x78,0x85,0x8D,0x8B,0x94,0x80,0x6D,0x7F,0x85,0x74,0x73,0x83,0x83,0x8E,0x8E, - 0x7C,0x7B,0x72,0x73,0x8E,0x95,0x7F,0x72,0x73,0x83,0x8B,0x8B,0x85,0x71,0x6C,0x72, - 0x79,0x87,0x93,0x91,0x96,0x90,0x79,0x8C,0x89,0x70,0x7C,0x81,0x69,0x64,0x77,0x7A, - 0x8E,0x95,0x86,0x8A,0x7F,0x69,0x75,0x84,0x7A,0x80,0x86,0x79,0x77,0x79,0x76,0x7A, - 0x87,0x86,0x94,0x9C,0x81,0x7A,0x7F,0x87,0x8F,0x91,0x8F,0x7E,0x6A,0x5E,0x5C,0x6D, - 0x86,0x8D,0x96,0x99,0x7D,0x7A,0x8B,0x89,0x87,0x90,0x93,0x84,0x81,0x79,0x80,0x90, - 0x85,0x88,0x89,0x72,0x5A,0x68,0x74,0x6F,0x74,0x6E,0x6C,0x6E,0x76,0x88,0x9B,0x98, - 0x99,0xA0,0x91,0x8C,0x88,0x8F,0x8D,0x85,0x84,0x74,0x7C,0x76,0x68,0x76,0x76,0x7D, - 0x89,0x84,0x7A,0x6D,0x96,0x93,0x82,0x9E,0xA2,0xA2,0x7D,0x6F,0x7D,0x85,0x7B,0x5A, - 0x74,0x77,0x53,0x58,0x65,0x64,0x6B,0x65,0x6A,0x99,0xA2,0x86,0x8B,0x95,0x8B,0x98, - 0x9E,0x9B,0x98,0x96,0xA1,0x99,0x88,0x79,0x6D,0x70,0x61,0x67,0x7C,0x85,0x86,0x76, - 0x64,0x54,0x6E,0x8E,0x8F,0x8F,0x8F,0x86,0x7B,0x7B,0x75,0x7A,0x8D,0x8E,0x93,0xA7, - 0x93,0x7C,0x8C,0x91,0x98,0x96,0x8E,0x83,0x5F,0x5F,0x61,0x5C,0x66,0x6C,0x72,0x67, - 0x57,0x4F,0x55,0x6B,0x80,0x81,0x7C,0x78,0x7E,0x83,0x88,0xA3,0xAA,0xAF,0xC3,0xAE, - 0xA4,0xB6,0x93,0x82,0x8D,0x81,0x7D,0x7C,0x74,0x73,0x85,0x87,0x84,0x81,0x73,0x61, - 0x5D,0x6A,0x77,0x7F,0x7D,0x75,0x73,0x7B,0x6C,0x72,0x75,0x66,0x7C,0x85,0x77,0x7A, - 0x80,0x84,0x82,0x8F,0xA4,0x9C,0x8B,0x84,0x7C,0x8F,0x9F,0x95,0x8F,0x81,0x69,0x6E, - 0x7F,0x68,0x6E,0x8C,0x73,0x6B,0x79,0x70,0x82,0x78,0x72,0x86,0x76,0x66,0x6A,0x6C, - 0x6B,0x8F,0x9C,0x98,0x8F,0x86,0x8F,0x83,0x84,0x8E,0x8D,0x96,0x8A,0x78,0x8C,0x94, - 0x8D,0x8B,0x92,0x87,0x6A,0x63,0x66,0x6E,0x75,0x73,0x79,0x7C,0x63,0x63,0x77,0x6F, - 0x63,0x80,0x8C,0x7F,0x8A,0x84,0x88,0x98,0x98,0xA3,0xBA,0xB2,0xA5,0xA7,0xA2,0x97, - 0x7B,0x7C,0x77,0x6A,0x68,0x56,0x53,0x63,0x71,0x7B,0x82,0x81,0x76,0x67,0x64,0x71, - 0x83,0x7F,0x73,0x70,0x77,0x84,0x84,0x8E,0x99,0xA5,0xA1,0x86,0x89,0x8C,0x80,0x82, - 0x8C,0x7E,0x72,0x6E,0x66,0x6D,0x79,0x82,0x8E,0x95,0x73,0x71,0x87,0x73,0x7D,0x83, - 0x83,0x79,0x66,0x79,0x8E,0x89,0x7A,0x8F,0x95,0x8E,0x85,0x6E,0x80,0x85,0x7A,0x8D, - 0x87,0x77,0x79,0x79,0x8F,0x93,0x87,0x90,0x8B,0x75,0x73,0x82,0x7E,0x80,0x88,0x76, - 0x79,0x7C,0x5F,0x6C,0x77,0x63,0x7D,0x8C,0x74,0x76,0x7A,0x76,0x7E,0x86,0x94,0x8E, - 0x87,0x95,0x93,0x96,0x8B,0x90,0xA5,0xAA,0x9C,0x8C,0x8A,0x7B,0x80,0x7D,0x82,0x78, - 0x62,0x78,0x74,0x6C,0x72,0x78,0x7F,0x7B,0x75,0x80,0x77,0x58,0x6D,0x8F,0x80,0x7A, - 0x7D,0x71,0x7B,0x80,0x7E,0x9A,0xA3,0x86,0x89,0x94,0x82,0x86,0x8E,0x93,0x87,0x7C, - 0x7D,0x70,0x6F,0x66,0x6B,0x7C,0x70,0x63,0x74,0x6E,0x6F,0x7A,0x7B,0x88,0x7A,0x7E, - 0x8C,0x93,0x94,0x8C,0x99,0x9A,0x91,0x82,0x7F,0x6E,0x70,0x86,0x77,0x6C,0x82,0x85, - 0x7D,0x8B,0x84,0x8E,0x93,0x7B,0x68,0x78,0x85,0x79,0x8F,0x99,0x8A,0x88,0x80,0x7D, - 0x77,0x6B,0x68,0x6F,0x88,0x87,0x7A,0x86,0x83,0x87,0x92,0x8E,0x84,0x7B,0x7A,0x76, - 0x7C,0x88,0x92,0xA0,0x95,0x90,0xA3,0x90,0x78,0x87,0x8D,0x80,0x7A,0x76,0x6E,0x65, - 0x5E,0x68,0x87,0x78,0x6C,0x94,0x84,0x70,0x7F,0x86,0x89,0x8A,0x86,0x7D,0x78,0x74, - 0x74,0x7C,0x8F,0x80,0x7B,0x87,0x77,0x6D,0x78,0x8D,0x79,0x6B,0x80,0x7C,0x6B,0x70, - 0x7B,0x7E,0x89,0x89,0x97,0x90,0x71,0x74,0x7E,0x7F,0x76,0x79,0x81,0x7B,0x83,0x87, - 0x9D,0xA8,0x87,0x8F,0x9A,0x77,0x77,0x85,0x8A,0x7F,0x6E,0x73,0x7A,0x77,0x71,0x79, - 0x8B,0x82,0x7C,0x89,0x83,0x6E,0x69,0x83,0x84,0x73,0x84,0x90,0x83,0x81,0x7C,0x89, - 0x9A,0x88,0x8F,0x93,0x86,0x71,0x79,0x9A,0x83,0x7A,0x7C,0x6F,0x6D,0x66,0x71,0x94, - 0x8E,0x7B,0x9C,0x96,0x82,0x94,0x90,0x8E,0x8C,0x77,0x70,0x78,0x70,0x6B,0x6F,0x7C, - 0x7A,0x7C,0x81,0x76,0x72,0x8B,0xA4,0x90,0x7F,0x8B,0x8E,0x79,0x74,0x72,0x80,0x8F, - 0x85,0x89,0x7C,0x64,0x5A,0x68,0x70,0x69,0x74,0x6A,0x73,0x85,0x78,0x90,0x92,0x6E, - 0x81,0x99,0x7C,0x68,0x7B,0x97,0x8A,0x7B,0x81,0x80,0x7D,0x75,0x79,0x88,0x9B,0x99, - 0x97,0x99,0x82,0x84,0x93,0x8C,0x7C,0x7A,0x7E,0x7F,0x7C,0x7E,0x84,0x82,0x84,0x89, - 0x79,0x68,0x59,0x50,0x6E,0x76,0x7C,0x81,0x7C,0x8F,0x7F,0x7E,0x9B,0x8D,0x86,0x97, - 0x94,0x8F,0x8A,0x95,0x98,0x8D,0x89,0x7A,0x79,0x70,0x65,0x6A,0x66,0x74,0x7F,0x76, - 0x81,0x72,0x7C,0xA3,0x9C,0x95,0x95,0x9E,0x9E,0x82,0x79,0x80,0x82,0x80,0x81,0x7C, - 0x6C,0x64,0x5B,0x6F,0x89,0x7E,0x73,0x7D,0x7A,0x73,0x7C,0x77,0x76,0x85,0x8A,0x89, - 0x79,0x6D,0x87,0x86,0x89,0x97,0x8A,0x87,0x72,0x6C,0x73,0x7B,0x8B,0x81,0x7F,0x89, - 0x76,0x76,0x90,0x8B,0x78,0x7A,0x8F,0x87,0x76,0x7C,0x78,0x82,0x9A,0x8D,0x86,0x78, - 0x70,0x7F,0x81,0x82,0x75,0x74,0x7D,0x74,0x73,0x7B,0x7F,0x8D,0x98,0xA1,0xA6,0x85, - 0x7A,0x86,0x7F,0x80,0x7C,0x7E,0x75,0x76,0x79,0x76,0x80,0x73,0x6F,0x8C,0x94,0x6E, - 0x97,0xA6,0x6A,0x7F,0x84,0x87,0x88,0x75,0x86,0x6F,0x7D,0x91,0x79,0x7E,0x7A,0x6B, - 0x74,0x8C,0x91,0x8E,0x8B,0x8D,0x94,0x8C,0x73,0x74,0x8C,0x87,0x83,0x78,0x70,0x70, - 0x75,0x85,0x86,0x8A,0x83,0x78,0x7A,0x66,0x6B,0x95,0x8B,0x80,0x97,0x82,0x77,0x8A, - 0x7C,0x7D,0x7C,0x72,0x8E,0x8D,0x75,0x77,0x72,0x84,0x84,0x71,0x71,0x58,0x5E,0x72, - 0x80,0x83,0x67,0x6B,0x7B,0x74,0x6B,0x7E,0x94,0x96,0xA3,0xB8,0xA6,0x81,0x87,0x9A, - 0x98,0x87,0x82,0x80,0x7D,0x7E,0x5F,0x6C,0x95,0x80,0x7C,0x8C,0x6D,0x74,0x88,0x72, - 0x77,0x73,0x76,0x83,0x7D,0x79,0x78,0x93,0x8B,0x83,0x90,0x7D,0x6B,0x63,0x70,0x8E, - 0x93,0x80,0x8B,0x95,0x86,0x6C,0x76,0x8F,0x7F,0x82,0x84,0x76,0x76,0x79,0x8A,0xA0, - 0xA8,0x98,0x8D,0x8A,0x78,0x76,0x8F,0x96,0x82,0x88,0x86,0x70,0x71,0x7B,0x77,0x69, - 0x64,0x7E,0x8A,0x76,0x67,0x6D,0x88,0x80,0x7F,0x87,0x72,0x71,0x62,0x73,0x8D,0x78, - 0x7F,0x88,0x81,0x70,0x73,0x95,0x90,0x87,0x9C,0x9E,0x7C,0x6E,0x77,0x83,0x87,0x7F, - 0x7A,0x78,0x6A,0x55,0x61,0x83,0x80,0x7D,0xA1,0x9A,0x7F,0x92,0x8F,0x8D,0x7C,0x7C, - 0x95,0x85,0x7B,0x6F,0x80,0x85,0x82,0x9B,0x90,0x77,0x68,0x6E,0x87,0x7F,0x66,0x78, - 0x93,0x81,0x67,0x7D,0x9A,0x84,0x83,0x95,0x8E,0x7E,0x75,0x83,0x95,0x8C,0x83,0x88, - 0x7E,0x70,0x63,0x7D,0x84,0x6D,0x87,0x8A,0x72,0x71,0x79,0x7F,0x72,0x6B,0x89,0xA8, - 0xA0,0x7E,0x85,0xA4,0x8D,0x8B,0x9E,0x91,0x78,0x5D,0x7B,0x96,0x77,0x6F,0x82,0x7D, - 0x64,0x68,0x7C,0x7D,0x73,0x86,0x9A,0x80,0x62,0x6A,0x8A,0x8B,0x7C,0x82,0x8A,0x79, - 0x5A,0x66,0x8E,0x88,0x6D,0x84,0x94,0x78,0x7A,0x84,0x7B,0x71,0x71,0x8C,0x91,0x79, - 0x65,0x79,0x82,0x77,0x9A,0xA3,0x90,0x7D,0x72,0x92,0x96,0x76,0x7F,0x93,0x84,0x6C, - 0x6D,0x87,0x7E,0x6F,0x81,0x8A,0x88,0x74,0x6E,0x89,0x88,0x76,0x7A,0x78,0x65,0x61, - 0x77,0x8A,0x8C,0x90,0x9C,0x9A,0x7E,0x7F,0x8D,0x74,0x6C,0x75,0x90,0x9B,0x78,0x71, - 0x8A,0x85,0x7C,0x93,0x96,0x80,0x67,0x67,0x83,0x8B,0x74,0x80,0x97,0x7E,0x7C,0x90, - 0x90,0x87,0x90,0x9C,0x92,0x8D,0x72,0x74,0x82,0x70,0x7B,0x88,0x7D,0x61,0x61,0x76, - 0x78,0x6C,0x75,0x91,0x82,0x72,0x86,0x88,0x71,0x65,0x78,0x8A,0x84,0x70,0x7E,0x8A, - 0x78,0x91,0x9D,0x98,0x88,0x64,0x6D,0x85,0x7E,0x70,0x81,0x90,0x74,0x6B,0x81,0x75, - 0x67,0x74,0x84,0x93,0x8B,0x78,0x89,0x98,0x8F,0x9D,0x98,0x82,0x73,0x68,0x75,0x75, - 0x74,0x8C,0x97,0x8C,0x84,0x92,0x83,0x6E,0x72,0x72,0x81,0x76,0x65,0x7C,0x83,0x6F, - 0x80,0xA2,0x9B,0x84,0x77,0x7E,0x8A,0x8C,0x87,0x8A,0x89,0x79,0x7E,0x86,0x80,0x7F, - 0x8F,0x88,0x89,0x8A,0x71,0x74,0x70,0x72,0x87,0x88,0x7C,0x71,0x7E,0x89,0x7A,0x7E, - 0x99,0x9A,0x96,0x97,0x9A,0x8B,0x7A,0x7E,0x7C,0x70,0x68,0x6D,0x71,0x6F,0x6F,0x82, - 0x93,0x92,0x7E,0x6D,0x6F,0x6A,0x74,0x88,0x8D,0x83,0x73,0x7F,0x91,0x7C,0x7C,0x8E, - 0x90,0x8E,0x82,0x84,0x7A,0x75,0x81,0x88,0x82,0x71,0x70,0x70,0x69,0x72,0x74,0x75, - 0x8C,0x87,0x86,0x9B,0x89,0x7C,0x91,0x92,0x7D,0x6B,0x81,0x8F,0x6F,0x6C,0x7E,0x8F, - 0x96,0x8D,0x95,0x8E,0x74,0x76,0x87,0x7B,0x73,0x6B,0x6E,0x81,0x74,0x7D,0x91,0x85, - 0x99,0xA1,0x90,0x87,0x6F,0x75,0x8B,0x84,0x79,0x80,0x8A,0x7A,0x6C,0x7D,0x84,0x7B, - 0x85,0x8E,0x93,0x85,0x6C,0x78,0x74,0x61,0x71,0x7E,0x82,0x84,0x82,0x85,0x87,0x92, - 0x99,0x9E,0x93,0x82,0x88,0x8B,0x88,0x7A,0x75,0x88,0x81,0x6E,0x75,0x7D,0x71,0x70, - 0x84,0x7F,0x76,0x73,0x75,0x7F,0x76,0x75,0x7D,0x7C,0x7A,0x83,0x82,0x82,0x8A,0x8A, - 0x96,0x92,0x82,0x80,0x8B,0x87,0x6B,0x78,0x88,0x78,0x69,0x68,0x71,0x68,0x6C,0x84, - 0x92,0x8D,0x81,0x88,0x86,0x7E,0x7F,0x7E,0x82,0x84,0x7F,0x82,0x85,0x84,0x87,0x94, - 0x9A,0x8B,0x89,0x8E,0x8B,0x7C,0x79,0x88,0x7B,0x68,0x6C,0x77,0x6D,0x71,0x83,0x8D, - 0x94,0x8C,0x84,0x82,0x80,0x75,0x75,0x81,0x84,0x7D,0x75,0x7D,0x83,0x83,0x8B,0x94, - 0x8D,0x85,0x87,0x85,0x75,0x74,0x7C,0x79,0x75,0x77,0x80,0x79,0x7F,0x84,0x8D,0x97, - 0x8D,0x88,0x87,0x86,0x7B,0x7F,0x83,0x86,0x8D,0x7B,0x7B,0x83,0x7C,0x84,0x7F,0x78, - 0x83,0x76,0x71,0x79,0x70,0x7C,0x80,0x71,0x78,0x7F,0x77,0x75,0x82,0x8A,0x89,0x8A, - 0x82,0x84,0x88,0x7F,0x7D,0x7F,0x86,0x8C,0x7C,0x7B,0x7E,0x72,0x78,0x78,0x79,0x79, - 0x7A,0x85,0x76,0x79,0x84,0x7B,0x78,0x79,0x7D,0x7B,0x7A,0x80,0x91,0x8F,0x90,0x8F, - 0x85,0x8C,0x88,0x86,0x7C,0x81,0x81,0x73,0x79,0x71,0x72,0x7E,0x81,0x7E,0x80,0x8C, - 0x82,0x7B,0x80,0x88,0x84,0x7B,0x85,0x8A,0x88,0x79,0x7B,0x8F,0x88,0x81,0x81,0x89, - 0x87,0x7A,0x78,0x79,0x7D,0x7B,0x7A,0x84,0x84,0x7B,0x84,0x85,0x84,0x87,0x82,0x7E, - 0x82,0x77,0x7E,0x86,0x75,0x7D,0x84,0x80,0x79,0x80,0x8A,0x85,0x86,0x7B,0x7D,0x78, - 0x76,0x75,0x71,0x7F,0x7B,0x77,0x7E,0x81,0x7E,0x7B,0x81,0x80,0x7A,0x82,0x82,0x76, - 0x78,0x7E,0x78,0x79,0x7A,0x81,0x82,0x75,0x82,0x87,0x80,0x84,0x82,0x7B,0x7E,0x82, - 0x76,0x7A,0x8A,0x85,0x80,0x84,0x85,0x7F,0x7E,0x7F,0x83,0x81,0x82,0x81,0x7E,0x8B, - 0x89,0x83,0x86,0x7F,0x84,0x83,0x72,0x82,0x7F,0x72,0x86,0x7C,0x7E,0x82,0x83,0x9D, - 0x83,0x8A,0x81,0x65,0x86,0x7D,0x69,0x71,0x7E,0x84,0x8C,0x8E,0x91,0x8E,0x90,0x9B, - 0x9E,0x9E,0x8F,0x8D,0x87,0x7E,0x89,0x86,0x7E,0x78,0x73,0x6B,0x67,0x65,0x58,0x56, - 0x62,0x61,0x62,0x67,0x69,0x7B,0x7C,0x77,0x8A,0x7B,0x7B,0x88,0x70,0x78,0x92,0x96, - 0x7C,0x85,0xA3,0x99,0x9D,0xAC,0xA0,0xA5,0xAA,0x9B,0x9A,0x95,0x8C,0x8A,0x8B,0x89, - 0x87,0x81,0x7E,0x7F,0x7A,0x7C,0x7B,0x72,0x68,0x67,0x69,0x60,0x52,0x4F,0x49,0x42, - 0x47,0x52,0x59,0x5E,0x5F,0x6A,0x82,0x90,0x8F,0x8B,0x8B,0x88,0x87,0x94,0x9E,0xA1, - 0xA4,0xAD,0xBB,0xC3,0xC6,0xCD,0xD1,0xCC,0xC6,0xB9,0xAF,0xAD,0xA9,0xA8,0xA6,0x9A, - 0x81,0x75,0x76,0x76,0x74,0x6D,0x60,0x55,0x54,0x4D,0x3E,0x35,0x2E,0x30,0x34,0x36, - 0x3C,0x41,0x42,0x49,0x53,0x59,0x60,0x68,0x70,0x71,0x78,0x84,0x89,0x8A,0x8D,0x8D, - 0x8E,0x92,0x96,0x97,0x93,0x93,0x95,0x9B,0xA3,0xA1,0x9B,0x95,0x90,0x8D,0x85,0x7E, - 0x7C,0x78,0x74,0x76,0x75,0x75,0x75,0x78,0x83,0x90,0x91,0x92,0x9F,0xA7,0xA3,0x9A, - 0x92,0x8B,0x86,0x83,0x7C,0x79,0x78,0x74,0x75,0x77,0x72,0x72,0x78,0x7C,0x7C,0x79, - 0x7E,0x82,0x80,0x7A,0x77,0x77,0x75,0x88,0x9B,0x91,0x92,0x9D,0x9A,0x9A,0x9A,0x92, - 0x91,0x9B,0x9A,0x97,0x9F,0xA2,0xA2,0xA0,0x91,0x89,0x8A,0x81,0x79,0x7A,0x7B,0x7A, - 0x7A,0x79,0x74,0x6F,0x7A,0x89,0x82,0x78,0x79,0x7D,0x7C,0x7B,0x77,0x78,0x80,0x7E, - 0x78,0x7C,0x82,0x84,0x84,0x7E,0x7E,0x88,0x88,0x84,0x88,0x90,0x8F,0x82,0x7F,0x7F, - 0x87,0x95,0x93,0x88,0x88,0x89,0x82,0x7D,0x75,0x71,0x7A,0x7A,0x72,0x73,0x79,0x7A, - 0x74,0x6D,0x6F,0x72,0x70,0x6C,0x6E,0x75,0x73,0x67,0x5B,0x59,0x5B,0x66,0x6E,0x65, - 0x64,0x69,0x5F,0x57,0x50,0x48,0x52,0x57,0x55,0x5B,0x5F,0x5E,0x57,0x51,0x4D,0x52, - 0x59,0x5A,0x63,0x6C,0x6B,0x66,0x6A,0x6E,0x72,0x81,0x92,0x9A,0x9F,0xA6,0xA7,0xA8, - 0xB2,0xBD,0xCC,0xD8,0xD9,0xDB,0xDD,0xDA,0xD8,0xD0,0xC8,0xCB,0xCC,0xC6,0xC6,0xC8, - 0xC1,0xB4,0xA9,0xA8,0x9C,0x95,0xA3,0x9F,0x8F,0x85,0x78,0x6E,0x69,0x61,0x62,0x67, - 0x64,0x61,0x61,0x5E,0x59,0x56,0x55,0x58,0x5E,0x5C,0x5F,0x66,0x61,0x56,0x57,0x5F, - 0x60,0x60,0x6C,0x74,0x6C,0x69,0x6B,0x67,0x65,0x66,0x6D,0x7C,0x83,0x81,0x86,0x87, - 0x82,0x82,0x89,0x91,0x98,0x9E,0xA7,0xAC,0xA6,0xA1,0xA4,0xAB,0xA9,0xA1,0xAF,0xB7, - 0xA4,0x9B,0x9B,0x94,0x90,0x8D,0x90,0x98,0x95,0x87,0x83,0x81,0x73,0x6D,0x74,0x78, - 0x75,0x71,0x71,0x6E,0x67,0x62,0x65,0x66,0x66,0x63,0x65,0x74,0x6D,0x5C,0x63,0x69, - 0x5E,0x5B,0x5F,0x65,0x69,0x5D,0x55,0x5C,0x56,0x4B,0x4E,0x55,0x58,0x57,0x54,0x59, - 0x56,0x4C,0x4B,0x52,0x55,0x4E,0x58,0x6D,0x65,0x5A,0x62,0x64,0x61,0x67,0x75,0x82, - 0x86,0x80,0x86,0x95,0x92,0x93,0xA5,0xB3,0xB7,0xB7,0xBB,0xBF,0xBD,0xB5,0xBC,0xC2, - 0xBC,0xBC,0xB3,0xC1,0xCC,0xB1,0xA9,0xB3,0xA4,0x98,0x9F,0xA2,0xA5,0x9F,0x92,0x9A, - 0x9D,0x8F,0x93,0x9D,0x9E,0xA0,0xA2,0x9F,0x9A,0x91,0x90,0x92,0x92,0x8C,0x89,0x9C, - 0x96,0x7D,0x84,0x87,0x79,0x79,0x81,0x86,0x86,0x79,0x75,0x7D,0x74,0x6C,0x76,0x79, - 0x76,0x7A,0x79,0x79,0x75,0x6C,0x6E,0x6F,0x69,0x72,0x6D,0x70,0x83,0x6D,0x63,0x6F, - 0x62,0x58,0x64,0x69,0x6E,0x6D,0x62,0x67,0x6A,0x5E,0x67,0x74,0x71,0x76,0x76,0x73, - 0x74,0x6E,0x6F,0x75,0x75,0x70,0x6C,0x81,0x84,0x6B,0x70,0x79,0x6C,0x65,0x6C,0x76, - 0x7B,0x71,0x70,0x7C,0x73,0x67,0x72,0x78,0x79,0x7B,0x7C,0x7E,0x7A,0x73,0x7A,0x7F, - 0x7E,0x84,0x7E,0x8B,0x9F,0x83,0x78,0x8C,0x7F,0x6F,0x7B,0x84,0x89,0x84,0x7B,0x85, - 0x85,0x77,0x82,0x8E,0x8C,0x91,0x98,0x9A,0x9B,0x9A,0x9F,0xA3,0xA0,0xA0,0x9B,0xAE, - 0xBA,0x9F,0x9E,0xA7,0x91,0x83,0x8A,0x8F,0x8C,0x7F,0x79,0x81,0x71,0x5E,0x68,0x6C, - 0x63,0x64,0x67,0x67,0x5F,0x56,0x5E,0x63,0x61,0x66,0x5F,0x6E,0x84,0x6E,0x69,0x7D, - 0x72,0x69,0x75,0x7E,0x83,0x82,0x7D,0x88,0x87,0x7A,0x81,0x89,0x86,0x88,0x8F,0x91, - 0x91,0x8E,0x91,0x93,0x91,0x94,0x91,0x9E,0xB4,0xA1,0x9C,0xAE,0xA0,0x94,0x9F,0xA5, - 0xA7,0xA7,0xA1,0xA4,0x9F,0x8E,0x94,0x9A,0x93,0x93,0x94,0x92,0x90,0x87,0x86,0x8B, - 0x84,0x87,0x80,0x80,0x96,0x86,0x72,0x81,0x78,0x61,0x67,0x6C,0x6C,0x6B,0x62,0x68, - 0x69,0x55,0x55,0x5F,0x59,0x59,0x5E,0x5F,0x5F,0x57,0x54,0x5A,0x56,0x56,0x53,0x57, - 0x70,0x63,0x4F,0x61,0x5F,0x4C,0x52,0x5C,0x5F,0x5D,0x55,0x5B,0x60,0x50,0x53,0x5F, - 0x5D,0x5F,0x63,0x67,0x6B,0x68,0x6A,0x70,0x6F,0x75,0x79,0x7C,0x9A,0x9F,0x8E,0xA0, - 0xA7,0x96,0x99,0xA5,0xAB,0xB0,0xAA,0xAA,0xB1,0xA2,0x9B,0xA4,0xA0,0x9C,0x9E,0x9F, - 0x9B,0x92,0x8D,0x91,0x8D,0x8B,0x8D,0x84,0x97,0xA0,0x87,0x8F,0x9D,0x8D,0x88,0x94, - 0x9A,0x9D,0x99,0x98,0xA3,0x9A,0x91,0x9B,0x9C,0x99,0x9D,0xA1,0xA5,0xA0,0x9D,0x9F, - 0x9C,0x9B,0xA0,0x97,0xA3,0xB9,0xA2,0x9A,0xAC,0x9D,0x8F,0x97,0x9B,0xA0,0x9D,0x94, - 0x9B,0x97,0x88,0x8F,0x94,0x8E,0x8C,0x8C,0x8A,0x85,0x7E,0x7F,0x81,0x7B,0x7E,0x77, - 0x6F,0x87,0x80,0x68,0x79,0x75,0x5D,0x5E,0x63,0x63,0x61,0x59,0x5D,0x5E,0x4C,0x48, - 0x4D,0x48,0x45,0x48,0x48,0x46,0x44,0x41,0x41,0x40,0x43,0x43,0x3B,0x53,0x5B,0x3F, - 0x48,0x55,0x43,0x40,0x4C,0x52,0x54,0x4F,0x51,0x5C,0x57,0x52,0x5F,0x65,0x64,0x67, - 0x6B,0x70,0x6D,0x6E,0x73,0x75,0x76,0x7B,0x76,0x83,0xA0,0x90,0x89,0xA1,0x9A,0x90, - 0x9B,0xA6,0xB0,0xAF,0xAC,0xB9,0xBC,0xB0,0xB6,0xC1,0xBF,0xBF,0xC1,0xC0,0xBD,0xB7, - 0xB5,0xB8,0xB2,0xB2,0xA8,0xA5,0xBF,0xB1,0x98,0xA8,0xA5,0x90,0x92,0x9A,0x9B,0x97, - 0x91,0x96,0x99,0x8B,0x89,0x94,0x92,0x8E,0x92,0x97,0x98,0x94,0x93,0x95,0x92,0x93, - 0x91,0x8B,0xA3,0xAA,0x8F,0x96,0xA0,0x8C,0x86,0x8E,0x95,0x96,0x8C,0x8A,0x91,0x86, - 0x7D,0x85,0x85,0x80,0x7F,0x80,0x80,0x7D,0x78,0x7A,0x7C,0x7A,0x76,0x6D,0x7E,0x8B, - 0x72,0x70,0x7D,0x6B,0x61,0x68,0x6C,0x70,0x6A,0x66,0x6E,0x69,0x5A,0x5B,0x5F,0x5C, - 0x59,0x56,0x57,0x54,0x4B,0x47,0x48,0x47,0x47,0x3F,0x4A,0x62,0x50,0x41,0x53,0x4E, - 0x41,0x45,0x4E,0x58,0x54,0x4B,0x55,0x58,0x50,0x53,0x5C,0x5F,0x5D,0x5D,0x66,0x6A, - 0x66,0x65,0x6A,0x6E,0x70,0x67,0x73,0x94,0x86,0x75,0x89,0x8A,0x7E,0x81,0x8A,0x97, - 0x99,0x91,0x9A,0xA3,0x9C,0x9C,0xA4,0xAB,0xAF,0xB1,0xB8,0xBC,0xBA,0xB6,0xBA,0xBC, - 0xBD,0xB6,0xB4,0xCF,0xCB,0xAF,0xB5,0xB9,0xAA,0xA4,0xA3,0xA9,0xA8,0x98,0x96,0x9A, - 0x8E,0x84,0x84,0x88,0x89,0x83,0x83,0x89,0x86,0x80,0x80,0x81,0x84,0x7C,0x76,0x94, - 0x96,0x7A,0x81,0x88,0x7E,0x7A,0x7B,0x87,0x8E,0x83,0x80,0x8A,0x86,0x80,0x80,0x85, - 0x8C,0x87,0x84,0x8A,0x8B,0x84,0x81,0x87,0x8B,0x82,0x7E,0x9A,0x9E,0x83,0x84,0x88, - 0x7F,0x7B,0x79,0x84,0x8D,0x80,0x79,0x82,0x81,0x79,0x75,0x7A,0x7D,0x74,0x70,0x74, - 0x74,0x6C,0x67,0x67,0x6B,0x5F,0x5C,0x79,0x74,0x5B,0x5F,0x5F,0x58,0x54,0x51,0x5E, - 0x65,0x55,0x51,0x5B,0x59,0x50,0x50,0x58,0x5D,0x59,0x56,0x5C,0x5E,0x58,0x52,0x56, - 0x5D,0x53,0x5A,0x78,0x6E,0x5F,0x67,0x68,0x67,0x65,0x67,0x74,0x78,0x6D,0x6D,0x76, - 0x75,0x72,0x73,0x7C,0x84,0x83,0x85,0x8C,0x8E,0x8C,0x8A,0x93,0x98,0x92,0xA7,0xBC, - 0xAA,0xA4,0xAA,0xA5,0xA3,0xA1,0xA2,0xAF,0xB0,0xA2,0x9F,0xA2,0x9B,0x91,0x8D,0x91, - 0x92,0x8F,0x8A,0x87,0x86,0x81,0x7A,0x7F,0x7A,0x74,0x8E,0x90,0x79,0x7C,0x7B,0x75, - 0x76,0x73,0x7B,0x87,0x83,0x7E,0x82,0x87,0x84,0x7E,0x81,0x8A,0x8C,0x8B,0x8A,0x8D, - 0x8E,0x8C,0x89,0x8B,0x87,0x94,0xAB,0x9D,0x90,0x96,0x90,0x8D,0x8C,0x8B,0x96,0x9A, - 0x93,0x8E,0x8F,0x92,0x8F,0x8B,0x8F,0x95,0x96,0x92,0x8B,0x8C,0x8B,0x83,0x82,0x7E, - 0x81,0x9B,0x9A,0x84,0x87,0x85,0x7C,0x7A,0x74,0x79,0x82,0x7C,0x74,0x71,0x71,0x71, - 0x6C,0x66,0x67,0x6E,0x6D,0x66,0x65,0x66,0x61,0x5C,0x59,0x53,0x68,0x7B,0x68,0x5D, - 0x60,0x5B,0x5C,0x57,0x59,0x69,0x6F,0x6A,0x65,0x64,0x69,0x6B,0x65,0x65,0x6D,0x75, - 0x74,0x70,0x73,0x77,0x76,0x75,0x72,0x7B,0x97,0x96,0x84,0x86,0x88,0x8A,0x8C,0x89, - 0x91,0x9D,0xA1,0x9C,0x98,0x9E,0xA6,0xA4,0x9E,0x9E,0xA5,0xAA,0xA4,0x9E,0x9D,0x99, - 0x96,0x8E,0x88,0x9E,0xAA,0x97,0x8B,0x83,0x7E,0x80,0x77,0x70,0x77,0x7F,0x7C,0x73, - 0x6A,0x6D,0x74,0x72,0x6E,0x72,0x79,0x7B,0x79,0x76,0x76,0x78,0x78,0x72,0x7F,0x95, - 0x91,0x86,0x82,0x7E,0x84,0x88,0x83,0x86,0x8F,0x96,0x97,0x8F,0x8A,0x8E,0x90,0x8F, - 0x90,0x92,0x96,0x98,0x96,0x93,0x90,0x8E,0x89,0x8D,0xA2,0xA3,0x98,0x92,0x88,0x85, - 0x87,0x83,0x82,0x88,0x8B,0x8F,0x8B,0x81,0x7E,0x81,0x7F,0x7B,0x7A,0x7C,0x7C,0x77, - 0x73,0x6E,0x6B,0x66,0x64,0x76,0x7F,0x73,0x6B,0x63,0x5C,0x61,0x5E,0x56,0x5A,0x5E, - 0x61,0x67,0x61,0x5D,0x61,0x60,0x61,0x62,0x62,0x66,0x68,0x69,0x6A,0x69,0x67,0x64, - 0x72,0x86,0x82,0x7F,0x7D,0x74,0x7A,0x7F,0x79,0x7C,0x7E,0x7E,0x87,0x8A,0x86,0x88, - 0x89,0x88,0x8D,0x8F,0x8C,0x8E,0x8F,0x90,0x91,0x93,0x93,0x91,0x9B,0xA2,0x98,0x97, - 0x95,0x8E,0x96,0x95,0x8B,0x8D,0x89,0x84,0x88,0x85,0x83,0x85,0x80,0x7D,0x7F,0x7D, - 0x7B,0x7C,0x7E,0x7C,0x7B,0x7C,0x7A,0x7A,0x82,0x81,0x7D,0x83,0x82,0x80,0x86,0x82, - 0x7E,0x85,0x84,0x84,0x86,0x84,0x84,0x84,0x81,0x84,0x87,0x87,0x88,0x8A,0x8A,0x8A, - 0x89,0x8C,0x8B,0x8A,0x8F,0x8C,0x8A,0x8E,0x8B,0x8D,0x92,0x8D,0x89,0x8C,0x88,0x87, - 0x8A,0x88,0x85,0x84,0x81,0x83,0x86,0x84,0x84,0x85,0x85,0x85,0x85,0x85,0x80,0x7F, - 0x86,0x86,0x80,0x81,0x7F,0x7D,0x81,0x7C,0x7B,0x7C,0x77,0x77,0x79,0x73,0x70,0x6F, - 0x6E,0x6F,0x6F,0x6E,0x6F,0x6F,0x70,0x72,0x76,0x75,0x73,0x73,0x7B,0x7C,0x75,0x79, - 0x7A,0x78,0x7D,0x7C,0x7A,0x7C,0x78,0x78,0x7D,0x79,0x76,0x78,0x75,0x73,0x78,0x7A, - 0x7A,0x7A,0x7B,0x80,0x82,0x80,0x82,0x83,0x86,0x8B,0x88,0x87,0x8A,0x85,0x89,0x91, - 0x8B,0x88,0x87,0x83,0x84,0x83,0x80,0x82,0x7E,0x79,0x7D,0x7F,0x7C,0x7C,0x7D,0x7F, - 0x7F,0x7E,0x7E,0x7E,0x7A,0x7F,0x83,0x7D,0x7E,0x7D,0x7B,0x81,0x7F,0x78,0x7E,0x7C, - 0x77,0x7B,0x7A,0x78,0x78,0x75,0x77,0x7B,0x7B,0x7B,0x7E,0x7F,0x81,0x84,0x85,0x86, - 0x84,0x82,0x89,0x8D,0x86,0x88,0x89,0x85,0x8A,0x8C,0x89,0x8B,0x88,0x86,0x8B,0x87, - 0x83,0x83,0x80,0x7F,0x83,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x84,0x86, - 0x8B,0x85,0x80,0x85,0x87,0x94,0x7D,0x65,0x7F,0x8D,0x83,0x72,0x8C,0x81,0x64,0x74, - 0x76,0x78,0x78,0x87,0x89,0x73,0x7C,0x84,0x84,0x77,0x7C,0x84,0x77,0x78,0x76,0x77, - 0x7E,0x7C,0x7B,0x85,0x78,0x6F,0x78,0x70,0x70,0x73,0x74,0x6F,0x74,0x78,0x71,0x7B, - 0x82,0x81,0x80,0x7E,0x87,0x87,0x88,0x8A,0x82,0x81,0x83,0x85,0x85,0x87,0x88,0x7D, - 0x7E,0x83,0x7F,0x84,0x7F,0x78,0x77,0x78,0x72,0x6F,0x76,0x75,0x7F,0x84,0x76,0x75, - 0x7F,0x81,0x81,0x8D,0x8F,0x85,0x84,0x82,0x84,0x87,0x89,0x86,0x82,0x81,0x80,0x83, - 0x83,0x83,0x7A,0x71,0x75,0x76,0x70,0x71,0x72,0x70,0x70,0x72,0x76,0x77,0x74,0x76, - 0x77,0x77,0x78,0x7A,0x7A,0x7D,0x82,0x8D,0x8A,0x80,0x8A,0x83,0x7D,0x89,0x8A,0x84, - 0x84,0x85,0x82,0x89,0x87,0x81,0x82,0x74,0x77,0x80,0x81,0x80,0x80,0x82,0x81,0x83, - 0x80,0x7C,0x82,0x86,0x7E,0x87,0x8A,0x89,0x89,0x7F,0x7E,0x7F,0x86,0x85,0x86,0x84, - 0x79,0x7E,0x85,0x81,0x7F,0x7D,0x77,0x7C,0x7C,0x7E,0x7F,0x7C,0x7F,0x82,0x82,0x7A, - 0x80,0x85,0x85,0x83,0x84,0x87,0x81,0x82,0x80,0x7C,0x7C,0x7F,0x7C,0x7D,0x7B,0x74, - 0x7A,0x76,0x76,0x7B,0x78,0x7A,0x7E,0x7C,0x76,0x7C,0x82,0x7F,0x83,0x82,0x85,0x83, - 0x85,0x8B,0x8A,0x90,0x8A,0x82,0x85,0x83,0x85,0x85,0x85,0x81,0x81,0x78,0x76,0x82, - 0x80,0x83,0x87,0x7D,0x7B,0x83,0x83,0x82,0x7E,0x81,0x8A,0x89,0x85,0x85,0x85,0x7D, - 0x7A,0x86,0x92,0x93,0x8F,0x86,0x79,0x7D,0x82,0x72,0x71,0x73,0x6F,0x79,0x80,0x7F, - 0x86,0x81,0x7A,0x85,0x89,0x7F,0x7E,0x7D,0x7F,0x89,0x83,0x7F,0x82,0x7F,0x7B,0x79, - 0x84,0x95,0x97,0x96,0x8C,0x76,0x76,0x80,0x7F,0x7F,0x7D,0x79,0x81,0x8A,0x89,0x86, - 0x80,0x81,0x87,0x86,0x83,0x82,0x80,0x88,0x8E,0x87,0x85,0x81,0x7D,0x7A,0x78,0x85, - 0x98,0x9C,0x95,0x8D,0x7F,0x7E,0x80,0x7A,0x75,0x75,0x78,0x83,0x8A,0x85,0x87,0x86, - 0x87,0x86,0x7F,0x79,0x79,0x7C,0x7F,0x84,0x87,0x89,0x89,0x87,0x7E,0x76,0x7F,0x9A, - 0x99,0x94,0x8D,0x7D,0x80,0x81,0x7E,0x77,0x7A,0x7E,0x88,0x88,0x79,0x81,0x88,0x86, - 0x83,0x7F,0x79,0x81,0x83,0x7C,0x80,0x80,0x80,0x7C,0x79,0x79,0x73,0x80,0x9D,0x91, - 0x84,0x8F,0x7F,0x83,0x8E,0x7A,0x79,0x7F,0x77,0x7F,0x82,0x79,0x83,0x88,0x89,0x86, - 0x82,0x83,0x80,0x83,0x7E,0x7D,0x81,0x7E,0x7F,0x80,0x7D,0x7A,0x7D,0x94,0x95,0x80, - 0x88,0x81,0x7B,0x8B,0x7C,0x6F,0x79,0x73,0x7A,0x83,0x75,0x7C,0x85,0x87,0x89,0x81, - 0x81,0x87,0x82,0x7C,0x7B,0x7C,0x85,0x80,0x7C,0x80,0x73,0x75,0x93,0x8E,0x7C,0x8C, - 0x85,0x80,0x8C,0x7A,0x71,0x7D,0x7C,0x7D,0x7E,0x70,0x7C,0x87,0x8B,0x8C,0x82,0x85, - 0x8B,0x81,0x7A,0x7E,0x7D,0x85,0x83,0x7B,0x7E,0x79,0x7C,0x99,0x93,0x7E,0x8A,0x80, - 0x82,0x89,0x73,0x71,0x7F,0x74,0x74,0x7A,0x71,0x7D,0x84,0x82,0x81,0x7D,0x84,0x8A, - 0x80,0x7B,0x7F,0x80,0x81,0x79,0x7A,0x7E,0x71,0x80,0x98,0x85,0x80,0x8D,0x7E,0x87, - 0x87,0x6D,0x75,0x7B,0x6F,0x75,0x77,0x6D,0x7F,0x7F,0x7B,0x86,0x7F,0x84,0x88,0x81, - 0x7D,0x79,0x7B,0x82,0x7A,0x7C,0x81,0x76,0x83,0x91,0x82,0x83,0x8A,0x7E,0x88,0x83, - 0x6E,0x7D,0x7D,0x71,0x7C,0x73,0x70,0x83,0x76,0x7C,0x86,0x76,0x82,0x88,0x7E,0x7D, - 0x7D,0x7D,0x7B,0x76,0x78,0x79,0x73,0x82,0x8A,0x7A,0x83,0x8B,0x7E,0x8A,0x80,0x70, - 0x7F,0x75,0x74,0x79,0x6D,0x77,0x84,0x74,0x79,0x7E,0x79,0x86,0x82,0x80,0x80,0x7C, - 0x7B,0x7C,0x7B,0x7D,0x7D,0x77,0x8B,0x8A,0x7C,0x89,0x86,0x7C,0x8A,0x7A,0x73,0x84, - 0x73,0x76,0x7E,0x72,0x7C,0x7E,0x75,0x80,0x80,0x83,0x8E,0x82,0x7D,0x85,0x81,0x7D, - 0x7E,0x79,0x7E,0x7A,0x7A,0x8C,0x7F,0x7A,0x89,0x7D,0x81,0x8B,0x7A,0x7B,0x84,0x76, - 0x7A,0x75,0x6E,0x80,0x78,0x77,0x82,0x7A,0x84,0x89,0x7B,0x83,0x87,0x7E,0x7C,0x77, - 0x78,0x7D,0x75,0x7E,0x88,0x79,0x84,0x8C,0x81,0x8A,0x88,0x79,0x84,0x7F,0x76,0x80, - 0x73,0x77,0x81,0x7C,0x7C,0x7F,0x7E,0x85,0x84,0x7C,0x89,0x86,0x84,0x82,0x7B,0x81, - 0x7A,0x79,0x85,0x83,0x7B,0x88,0x88,0x81,0x86,0x80,0x81,0x86,0x7C,0x7C,0x7C,0x72, - 0x7D,0x7C,0x75,0x7D,0x7A,0x7D,0x86,0x81,0x83,0x89,0x86,0x83,0x7D,0x7E,0x7E,0x78, - 0x81,0x88,0x80,0x82,0x86,0x7E,0x86,0x83,0x7E,0x87,0x7F,0x7C,0x7F,0x79,0x79,0x80, - 0x79,0x79,0x7D,0x7B,0x85,0x83,0x82,0x87,0x84,0x86,0x85,0x7E,0x85,0x81,0x7F,0x8A, - 0x82,0x81,0x86,0x83,0x89,0x89,0x7F,0x85,0x88,0x7E,0x84,0x7D,0x7D,0x86,0x7B,0x7A, - 0x81,0x7F,0x84,0x86,0x81,0x87,0x83,0x85,0x89,0x80,0x81,0x82,0x7F,0x89,0x88,0x7E, - 0x89,0x85,0x85,0x89,0x81,0x83,0x88,0x82,0x85,0x82,0x7A,0x82,0x7B,0x78,0x7D,0x7B, - 0x7E,0x83,0x7E,0x84,0x89,0x85,0x8A,0x84,0x84,0x84,0x7E,0x85,0x86,0x81,0x86,0x8A, - 0x84,0x8A,0x83,0x7F,0x87,0x81,0x82,0x84,0x80,0x83,0x82,0x79,0x81,0x7E,0x7C,0x83, - 0x7F,0x81,0x86,0x84,0x84,0x84,0x83,0x87,0x81,0x85,0x8A,0x80,0x83,0x84,0x80,0x84, - 0x83,0x7F,0x85,0x85,0x83,0x83,0x7F,0x81,0x7F,0x7D,0x7D,0x7F,0x7E,0x81,0x82,0x83, - 0x86,0x83,0x83,0x81,0x82,0x80,0x81,0x86,0x86,0x81,0x85,0x86,0x7F,0x86,0x82,0x80, - 0x83,0x81,0x81,0x82,0x7C,0x7E,0x82,0x7B,0x7D,0x7F,0x7E,0x81,0x7F,0x7D,0x81,0x80, - 0x82,0x85,0x80,0x85,0x83,0x88,0x8B,0x83,0x84,0x83,0x83,0x84,0x7E,0x7D,0x85,0x80, - 0x7D,0x7E,0x7D,0x7E,0x7D,0x7B,0x7C,0x81,0x7F,0x82,0x80,0x7F,0x82,0x81,0x80,0x84, - 0x83,0x82,0x89,0x84,0x85,0x86,0x84,0x83,0x87,0x84,0x7D,0x82,0x82,0x7E,0x7C,0x7F, - 0x7D,0x7D,0x7D,0x7B,0x7B,0x7D,0x82,0x80,0x82,0x8F,0x90,0x86,0x8C,0x7E,0x77,0x78, - 0x76,0x84,0x7C,0x82,0x7E,0x7C,0x87,0x6B,0x78,0x99,0x79,0x74,0x81,0x75,0x73,0x63, - 0x76,0x86,0x7C,0x82,0x79,0x72,0x72,0x75,0x78,0x76,0x75,0x7F,0x81,0x7C,0x78,0x75, - 0x79,0x78,0x7B,0x82,0x86,0x7F,0x86,0x8D,0x7F,0x77,0x86,0x91,0x87,0x84,0x83,0x7C, - 0x82,0x92,0x95,0x97,0xA9,0xA6,0x9B,0x9B,0x9C,0x94,0x86,0x8A,0x97,0x93,0x99,0x98, - 0x89,0x84,0x7D,0x7B,0x7B,0x74,0x6F,0x74,0x75,0x72,0x6B,0x64,0x64,0x64,0x6B,0x73, - 0x6C,0x6B,0x70,0x6A,0x67,0x64,0x62,0x67,0x70,0x73,0x6E,0x6D,0x6E,0x77,0x7C,0x6D, - 0x63,0x6A,0x76,0x79,0x71,0x6B,0x75,0x76,0x67,0x67,0x69,0x6D,0x70,0x68,0x73,0x80, - 0x7D,0x7F,0x82,0x8D,0x94,0xA0,0xA9,0x97,0x99,0x9A,0x96,0x9B,0x87,0x7D,0x85,0x7F, - 0x7B,0x7D,0x7F,0x8A,0x86,0x7D,0x87,0x8A,0x87,0x80,0x79,0x87,0x89,0x7F,0x83,0x88, - 0x80,0x81,0x9F,0x9B,0x91,0x9B,0x91,0x94,0x82,0x66,0x78,0x7C,0x70,0x78,0x7C,0x8E, - 0x9D,0x86,0x84,0x8B,0x82,0x7F,0x79,0x85,0x8F,0x82,0x7F,0x87,0x80,0x8F,0xAB,0x97, - 0xA2,0xAD,0x97,0x95,0x81,0x7D,0x99,0x8C,0x86,0x91,0x8C,0x98,0x8A,0x70,0x81,0x7F, - 0x68,0x6C,0x70,0x7C,0x76,0x62,0x64,0x62,0x54,0x5C,0x78,0x73,0x72,0x6E,0x60,0x61, - 0x50,0x45,0x5B,0x5E,0x5D,0x68,0x69,0x72,0x6A,0x5B,0x63,0x67,0x63,0x66,0x6E,0x7C, - 0x76,0x66,0x63,0x64,0x5D,0x6A,0x84,0x77,0x72,0x77,0x6A,0x72,0x68,0x66,0x81,0x83, - 0x8B,0x9E,0xA5,0xA8,0x9F,0x90,0x97,0x99,0x90,0x95,0x9E,0x9D,0x8F,0x87,0x86,0x88, - 0x7D,0x87,0xA2,0x9B,0x93,0x92,0x87,0x88,0x80,0x7C,0x93,0x99,0x94,0x9A,0x96,0x8D, - 0x84,0x7C,0x82,0x8B,0x8E,0x8F,0x8F,0x8D,0x82,0x77,0x7C,0x86,0x7F,0x95,0xAF,0x9C, - 0x96,0x91,0x85,0x86,0x7A,0x83,0x9B,0x96,0x94,0x97,0x92,0x92,0x87,0x86,0x98,0x99, - 0x94,0x9C,0xA2,0x96,0x89,0x87,0x8A,0x8E,0x83,0x8F,0xA8,0x93,0x81,0x7D,0x75,0x74, - 0x67,0x6E,0x7E,0x7C,0x73,0x6F,0x68,0x61,0x5B,0x57,0x66,0x6B,0x64,0x66,0x63,0x5C, - 0x57,0x56,0x61,0x5B,0x60,0x82,0x77,0x63,0x67,0x5D,0x5C,0x5A,0x5E,0x74,0x78,0x69, - 0x68,0x68,0x5F,0x5D,0x5A,0x66,0x75,0x71,0x73,0x7C,0x75,0x6F,0x79,0x82,0x90,0x99, - 0x97,0xB6,0xB8,0x95,0x99,0x97,0x8E,0x92,0x8E,0xA0,0xAC,0x96,0x8A,0x8E,0x88,0x85, - 0x85,0x8C,0x9B,0x94,0x89,0x8D,0x8B,0x87,0x87,0x89,0x8F,0x84,0x95,0xA9,0x8C,0x89, - 0x8D,0x80,0x7F,0x7C,0x86,0x9B,0x8E,0x82,0x8E,0x89,0x85,0x87,0x89,0x97,0x97,0x88, - 0x8F,0x98,0x8C,0x88,0x90,0x8F,0x96,0x95,0x8C,0xA8,0xA6,0x85,0x91,0x97,0x8F,0x92, - 0x91,0x9C,0xA4,0x8D,0x88,0x90,0x88,0x88,0x85,0x88,0x8F,0x82,0x76,0x7B,0x73,0x6C, - 0x6F,0x6C,0x6E,0x63,0x72,0x82,0x61,0x5C,0x65,0x57,0x55,0x55,0x5D,0x70,0x65,0x59, - 0x67,0x63,0x59,0x5B,0x60,0x6C,0x6C,0x61,0x67,0x6C,0x62,0x5E,0x63,0x65,0x65,0x61, - 0x61,0x7D,0x77,0x5D,0x6C,0x6F,0x66,0x6A,0x71,0x84,0x8E,0x7E,0x89,0x99,0x90,0x90, - 0x95,0x9C,0xA1,0x99,0x94,0x9B,0x93,0x8E,0x90,0x8F,0x90,0x81,0x91,0xA7,0x8A,0x82, - 0x94,0x85,0x7E,0x81,0x88,0x9A,0x8E,0x81,0x8E,0x8C,0x7D,0x80,0x86,0x8F,0x8F,0x7F, - 0x86,0x8E,0x7F,0x7B,0x87,0x89,0x8A,0x87,0x87,0xA2,0x9A,0x7F,0x8D,0x91,0x83,0x85, - 0x89,0x98,0x9A,0x86,0x8C,0x96,0x89,0x86,0x8D,0x95,0x98,0x8E,0x8E,0x97,0x8C,0x88, - 0x8D,0x8E,0x8D,0x82,0x86,0xA1,0x90,0x7B,0x8A,0x81,0x73,0x6F,0x70,0x80,0x7B,0x68, - 0x72,0x76,0x64,0x5F,0x66,0x6D,0x6C,0x63,0x66,0x6F,0x62,0x5B,0x65,0x65,0x60,0x61, - 0x5D,0x72,0x79,0x5B,0x65,0x72,0x5F,0x5A,0x62,0x6C,0x6F,0x5F,0x62,0x71,0x63,0x5C, - 0x68,0x6F,0x71,0x6D,0x73,0x7B,0x76,0x74,0x80,0x84,0x88,0x86,0x86,0xA8,0xA8,0x8B, - 0x9B,0xA1,0x8A,0x89,0x8F,0x99,0x9B,0x8A,0x8E,0x99,0x87,0x7E,0x89,0x8C,0x8A,0x88, - 0x89,0x8E,0x83,0x7E,0x86,0x85,0x80,0x84,0x7C,0x87,0x9C,0x80,0x7D,0x92,0x81,0x77, - 0x81,0x88,0x90,0x88,0x83,0x93,0x8B,0x7D,0x88,0x8D,0x8A,0x8C,0x90,0x94,0x8F,0x87, - 0x8B,0x8C,0x8B,0x8C,0x83,0x98,0xA7,0x89,0x8E,0x9C,0x88,0x81,0x84,0x8F,0x94,0x85, - 0x84,0x92,0x86,0x78,0x7F,0x84,0x81,0x7C,0x7C,0x80,0x7A,0x70,0x73,0x75,0x6E,0x6E, - 0x67,0x69,0x83,0x72,0x5D,0x73,0x6A,0x58,0x5E,0x65,0x6A,0x67,0x60,0x6A,0x6B,0x5A, - 0x5E,0x66,0x66,0x67,0x66,0x6A,0x6A,0x62,0x62,0x66,0x64,0x66,0x5F,0x66,0x82,0x72, - 0x67,0x7D,0x76,0x69,0x72,0x7C,0x87,0x87,0x84,0x92,0x97,0x8A,0x8E,0x98,0x96,0x97, - 0x97,0x9B,0x9B,0x93,0x92,0x94,0x8F,0x8C,0x8C,0x83,0x98,0xA0,0x84,0x8C,0x92,0x7E, - 0x7C,0x82,0x88,0x8C,0x81,0x82,0x8C,0x7F,0x78,0x81,0x85,0x85,0x86,0x88,0x8D,0x89, - 0x85,0x89,0x88,0x86,0x87,0x82,0x96,0xA7,0x8A,0x8E,0x9F,0x8A,0x83,0x8B,0x8F,0x94, - 0x8D,0x8C,0x9B,0x91,0x82,0x89,0x92,0x90,0x8D,0x8F,0x92,0x90,0x8B,0x8A,0x88,0x85, - 0x88,0x80,0x7D,0x98,0x8B,0x75,0x89,0x82,0x6C,0x70,0x75,0x7C,0x74,0x6D,0x84,0x74, - 0x70,0x60,0x51,0x6D,0x60,0x50,0x56,0x63,0x64,0x6A,0x74,0x72,0x6D,0x6B,0x74,0x99, - 0x9A,0x77,0x8E,0x95,0x6E,0x65,0x59,0x63,0x70,0x46,0x41,0x5F,0x4E,0x34,0x3C,0x3E, - 0x3F,0x54,0x64,0x6A,0x5D,0x64,0x7B,0x7F,0x87,0x95,0x9B,0xB9,0xD6,0xB2,0xB7,0xDA, - 0xD8,0xCC,0xA9,0xCC,0xD7,0xAF,0xC1,0xB9,0xBA,0xB9,0xA4,0x9A,0x8E,0x8C,0x96,0x82, - 0x70,0x70,0x5B,0x6E,0x6C,0x62,0x7C,0x6E,0x7F,0x7C,0x54,0x77,0x7A,0x3D,0x3E,0x55, - 0x5D,0x60,0x59,0x5C,0x63,0x5A,0x62,0x73,0x7C,0x8D,0x89,0x9C,0xB2,0xA5,0x97,0x9F, - 0xA3,0xA1,0xAE,0xBA,0xD5,0xDB,0xB3,0xBD,0xD4,0xB7,0xB1,0xAE,0xB1,0xAB,0x9B,0x9A, - 0x95,0x90,0x7A,0x70,0x7A,0x79,0x7C,0x73,0x64,0x57,0x40,0x41,0x4A,0x44,0x35,0x31, - 0x4A,0x55,0x3C,0x3D,0x65,0x57,0x4C,0x62,0x5F,0x65,0x6D,0x6A,0x74,0x70,0x5A,0x69, - 0x78,0x78,0x7E,0x79,0x80,0x99,0x9A,0xA2,0xA9,0x98,0x9D,0x96,0x8A,0xB1,0x99,0x6C, - 0x93,0x8B,0x76,0x8A,0x84,0x82,0x7B,0x6F,0x83,0x9B,0x8B,0x7F,0x78,0x72,0x82,0x76, - 0x6A,0x6B,0x67,0x6B,0x61,0x52,0x45,0x46,0x5E,0x6E,0x70,0x66,0x69,0x7D,0x7A,0x70, - 0x7F,0x7A,0x75,0x81,0x86,0x9E,0x9B,0x93,0x9C,0xA1,0xA9,0xA7,0xAF,0xB7,0xAE,0xC2, - 0xCD,0xC4,0xD0,0xBF,0xBA,0xC8,0xBD,0xB3,0xAF,0xA3,0x8B,0x7B,0x74,0x72,0x80,0x6C, - 0x69,0x87,0x7F,0x73,0x63,0x4C,0x47,0x53,0x68,0x73,0x67,0x5A,0x66,0x6E,0x66,0x61, - 0x70,0x7B,0x75,0x69,0x6E,0x78,0x7B,0x82,0x77,0x87,0x9A,0x95,0x8A,0x70,0x6D,0x7E, - 0x81,0x87,0x89,0x86,0x95,0x93,0x78,0x6C,0x75,0x74,0x79,0x84,0x7E,0x7F,0x7A,0x79, - 0x8C,0x87,0x7B,0x7C,0x7A,0x81,0x78,0x67,0x61,0x50,0x45,0x5C,0x75,0x70,0x5B,0x4F, - 0x5B,0x64,0x6C,0x70,0x70,0x72,0x78,0x84,0x7F,0x86,0x6D,0x72,0x8F,0x82,0x87,0x7F, - 0x80,0x8F,0x8E,0x89,0x86,0x89,0x85,0x7F,0x93,0x96,0x7A,0x7F,0x7B,0x7A,0x83,0x75, - 0x7F,0x84,0x88,0x8E,0xA3,0xA0,0x90,0x9F,0x9F,0xA3,0x9A,0x9D,0xA7,0xB0,0xAF,0xAF, - 0xB5,0xA5,0x9F,0xA4,0xA6,0x9B,0x93,0x90,0x90,0x91,0x83,0x8A,0x8C,0x82,0x86,0x7E, - 0x7D,0x7A,0x7A,0x7B,0x6F,0x6E,0x6A,0x74,0x7D,0x73,0x71,0x73,0x73,0x71,0x6F,0x68, - 0x65,0x64,0x60,0x6A,0x7E,0x86,0x6F,0x5E,0x65,0x6C,0x6B,0x73,0x76,0x6E,0x72,0x77, - 0x69,0x61,0x61,0x5C,0x6B,0x65,0x62,0x78,0x74,0x73,0x69,0x62,0x71,0x71,0x70,0x7B, - 0x7C,0x79,0x6D,0x6D,0x79,0x77,0x8C,0xAB,0xA3,0x99,0xA5,0xA2,0x98,0x91,0x86,0xA3, - 0xB9,0xAE,0xB2,0xAE,0xA7,0xA8,0xA8,0xA8,0x9A,0x93,0x96,0x98,0x95,0x85,0x82,0x82, - 0x7D,0x76,0x72,0x80,0x6C,0x54,0x59,0x4E,0x4D,0x54,0x50,0x5D,0x6D,0x61,0x5B,0x66, - 0x5E,0x5E,0x67,0x67,0x69,0x67,0x6B,0x6B,0x6B,0x65,0x60,0x6C,0x6F,0x75,0x8D,0x8C, - 0x86,0x8A,0x8D,0x9A,0x97,0x94,0xA1,0xB2,0xBE,0xAF,0xAE,0xAF,0xA3,0xA9,0xB1,0xB8, - 0xC1,0xB8,0xB9,0xBD,0xB0,0xAA,0x9C,0xA2,0x9C,0x94,0xA9,0x93,0x8D,0xA2,0x8A,0x79, - 0x77,0x70,0x84,0x92,0x78,0x68,0x73,0x6D,0x70,0x7B,0x6B,0x68,0x6A,0x62,0x75,0x76, - 0x65,0x5E,0x54,0x58,0x5A,0x68,0x6D,0x5F,0x64,0x67,0x65,0x60,0x5D,0x65,0x67,0x6E, - 0x66,0x62,0x6E,0x70,0x65,0x5B,0x5E,0x65,0x61,0x73,0x89,0x7D,0x6E,0x60,0x72,0x7B, - 0x82,0x8E,0x6B,0x63,0x72,0x82,0x83,0x73,0x7E,0x86,0x86,0x8B,0x86,0x84,0x89,0x82, - 0x8A,0x8D,0x8B,0x97,0x93,0x8C,0x8E,0x97,0x92,0x8E,0x8D,0x90,0xA1,0x9B,0x8D,0x91, - 0x97,0x9A,0x94,0x82,0x91,0xA3,0x9A,0x97,0x97,0xA1,0xAD,0xA5,0xA2,0xA7,0xA6,0xA5, - 0xA5,0xA9,0xB1,0xA8,0x96,0x95,0x9B,0xB6,0xC6,0xAC,0x9E,0x9A,0x94,0x96,0x85,0x70, - 0x7D,0x83,0x7A,0x74,0x6C,0x6B,0x6D,0x6B,0x65,0x63,0x68,0x6F,0x6F,0x70,0x6C,0x56, - 0x58,0x56,0x4F,0x65,0x61,0x53,0x56,0x5F,0x63,0x5A,0x4C,0x4A,0x61,0x66,0x60,0x5F, - 0x4E,0x4E,0x5B,0x5B,0x62,0x6A,0x6B,0x6B,0x69,0x70,0x76,0x67,0x62,0x61,0x67,0x7D, - 0x79,0x6C,0x65,0x6B,0x76,0x76,0x71,0x77,0x8C,0x91,0x82,0x78,0x7E,0x86,0x92,0x99, - 0x95,0x98,0x9D,0x98,0x9C,0xA7,0xA3,0x9A,0x95,0x94,0xA5,0xAC,0x9A,0x8F,0x8B,0x92, - 0xA0,0x9A,0x91,0x8D,0x9C,0xAB,0xA0,0x98,0x94,0x97,0x9A,0x97,0x94,0x8E,0x94,0x9C, - 0x97,0x98,0x9B,0x9B,0x9B,0x8E,0x98,0x9F,0x8D,0x83,0x7E,0x79,0x80,0x7D,0x74,0x79, - 0x80,0x84,0x83,0x79,0x76,0x73,0x6E,0x6E,0x70,0x6C,0x66,0x6C,0x6B,0x64,0x62,0x62, - 0x69,0x68,0x75,0x75,0x68,0x68,0x63,0x65,0x61,0x60,0x5E,0x5D,0x69,0x6E,0x6C,0x6C, - 0x6C,0x75,0x7C,0x75,0x71,0x68,0x64,0x66,0x66,0x65,0x5A,0x59,0x5F,0x62,0x68,0x6F, - 0x6C,0x69,0x74,0x76,0x6D,0x6A,0x6E,0x6E,0x74,0x7D,0x7D,0x86,0x87,0x8C,0x90,0x83, - 0x87,0x87,0x89,0x8F,0x8E,0x97,0x8F,0x87,0x98,0x9F,0xA1,0xA7,0xA2,0x9F,0xAA,0xAF, - 0xA4,0xA2,0xA6,0xA4,0xAC,0xAC,0xA0,0x9C,0xA0,0xA6,0xA2,0x98,0x93,0x98,0x97,0x97, - 0x9A,0x8E,0x90,0x92,0x90,0x8F,0x8E,0x8F,0x8F,0x91,0x8D,0x94,0x91,0x8D,0x92,0x89, - 0x88,0x8E,0x87,0x85,0x87,0x83,0x7E,0x7B,0x7C,0x7F,0x7F,0x80,0x7E,0x7F,0x82,0x82, - 0x7E,0x74,0x73,0x6F,0x6E,0x75,0x72,0x70,0x69,0x70,0x73,0x66,0x72,0x71,0x67,0x66, - 0x62,0x61,0x55,0x56,0x56,0x50,0x59,0x5B,0x5C,0x5C,0x61,0x64,0x61,0x67,0x63,0x67, - 0x6F,0x6D,0x6F,0x6B,0x63,0x6A,0x71,0x6F,0x71,0x6A,0x69,0x70,0x72,0x76,0x72,0x6C, - 0x6F,0x72,0x71,0x70,0x6B,0x68,0x6E,0x77,0x7C,0x7F,0x83,0x85,0x8B,0x91,0x8F,0x8E, - 0x90,0x8D,0x92,0x98,0x93,0x8F,0x8F,0x90,0x93,0x91,0x91,0x92,0x8D,0x8F,0x9A,0x9A, - 0x91,0x91,0x98,0x97,0x9F,0xA5,0x9D,0x9D,0xA0,0xA5,0xAB,0xA6,0xA3,0xA6,0xA2,0xA3, - 0xA7,0xA1,0x9D,0x9A,0x92,0x94,0x96,0x93,0x95,0x94,0x96,0x95,0x92,0x94,0x8E,0x92, - 0x94,0x93,0x93,0x91,0x90,0x8F,0x91,0x8D,0x8A,0x89,0x8A,0x8E,0x8B,0x89,0x87,0x80, - 0x7C,0x7B,0x7D,0x7E,0x75,0x74,0x74,0x71,0x72,0x6B,0x69,0x6C,0x6F,0x6E,0x71,0x70, - 0x6A,0x70,0x6F,0x6D,0x6F,0x6F,0x6F,0x6D,0x6D,0x6A,0x66,0x72,0x71,0x63,0x65,0x68, - 0x64,0x62,0x63,0x5E,0x59,0x64,0x66,0x63,0x6C,0x64,0x5D,0x67,0x64,0x65,0x69,0x61, - 0x64,0x67,0x6C,0x72,0x72,0x72,0x71,0x78,0x7D,0x7D,0x78,0x76,0x77,0x7A,0x7D,0x79, - 0x77,0x78,0x79,0x84,0x82,0x7E,0x82,0x83,0x8D,0x90,0x8A,0x8E,0x8C,0x88,0x91,0x8D, - 0x8A,0x8F,0x8A,0x8E,0x95,0x92,0x8F,0x8D,0x91,0x99,0x9E,0x98,0x96,0x96,0x94,0x9A, - 0x97,0x9A,0x99,0x95,0x9B,0x98,0x99,0x95,0x8B,0x8E,0x92,0x97,0x98,0x8F,0x8F,0x90, - 0x8B,0x8F,0x8C,0x88,0x8C,0x88,0x8E,0x8C,0x84,0x85,0x85,0x8B,0x87,0x8C,0x8E,0x8B, - 0x8E,0x8A,0x8E,0x8B,0x88,0x8D,0x8C,0x88,0x89,0x86,0x80,0x81,0x80,0x7D,0x7C,0x7B, - 0x7C,0x7D,0x7C,0x75,0x77,0x78,0x75,0x77,0x74,0x78,0x7D,0x7A,0x76,0x79,0x78,0x73, - 0x79,0x78,0x75,0x73,0x73,0x73,0x72,0x74,0x75,0x75,0x74,0x78,0x7B,0x78,0x77,0x74, - 0x72,0x75,0x7A,0x7C,0x74,0x72,0x73,0x77,0x78,0x74,0x72,0x73,0x77,0x7A,0x78,0x76, - 0x76,0x74,0x76,0x77,0x74,0x73,0x77,0x76,0x77,0x78,0x74,0x74,0x6F,0x74,0x7A,0x7B, - 0x7C,0x78,0x7B,0x7E,0x82,0x82,0x7D,0x7B,0x7F,0x86,0x85,0x80,0x7D,0x7D,0x80,0x82, - 0x81,0x7E,0x7F,0x80,0x7F,0x7F,0x7E,0x7E,0x7D,0x7F,0x82,0x82,0x81,0x7C,0x7C,0x7F, - 0x80,0x7F,0x81,0x7D,0x7A,0x82,0x82,0x83,0x82,0x7E,0x81,0x81,0x7F,0x80,0x81,0x82, - 0x84,0x83,0x84,0x86,0x84,0x83,0x82,0x7F,0x80,0x81,0x82,0x86,0x84,0x84,0x85,0x86, - 0x87,0x86,0x85,0x83,0x84,0x83,0x84,0x84,0x80,0x80,0x82,0x84,0x84,0x82,0x7F,0x7F, - 0x83,0x83,0x82,0x81,0x82,0x83,0x81,0x83,0x82,0x83,0x83,0x84,0x88,0x86,0x86,0x86, - 0x85,0x87,0x88,0x86,0x86,0x84,0x83,0x84,0x85,0x83,0x7F,0x80,0x81,0x82,0x82,0x7E, - 0x7D,0x7E,0x7C,0x80,0x81,0x7F,0x7E,0x7D,0x82,0x87,0x84,0x83,0x82,0x81,0x85,0x85, - 0x81,0x81,0x81,0x82,0x84,0x82,0x7F,0x81,0x83,0x7F,0x7F,0x7E,0x80,0x7F,0x7F,0x7F, - 0x7F,0x7F,0x7D,0x7E,0x80,0x80,0x7F,0x7E,0x7E,0x7C,0x7D,0x7D,0x7B,0x7C,0x7D,0x7E, - 0x81,0x80,0x7C,0x7C,0x81,0x81,0x7F,0x81,0x7E,0x7D,0x81,0x80,0x7E,0x81,0x80,0x80, - 0x84,0x81,0x80,0x84,0x83,0x84,0x81,0x7E,0x81,0x81,0x7F,0x7E,0x7F,0x7E,0x7E,0x7E, - 0x7D,0x7F,0x7D,0x7A,0x7F,0x7E,0x80,0x7F,0x79,0x7D,0x7E,0x7F,0x82,0x7F,0x81,0x83, - 0x82,0x84,0x80,0x80,0x81,0x82,0x83,0x82,0x84,0x83,0x83,0x81,0x7E,0x7F,0x80,0x7E, - 0x7D,0x7D,0x7B,0x7A,0x79,0x7B,0x7B,0x7D,0x7F,0x7B,0x7D,0x7E,0x81,0x80,0x7E,0x7E, - 0x81,0x80,0x81,0x83,0x80,0x80,0x80,0x83,0x80,0x81,0x82,0x7F,0x81,0x81,0x80,0x81, - 0x80,0x7F,0x80,0x80,0x7F,0x80,0x7E,0x81,0x83,0x7F,0x7E,0x7E,0x81,0x80,0x7F,0x83, - 0x81,0x81,0x81,0x82,0x80,0x7D,0x7F,0x80,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x82, - 0x81,0x80,0x81,0x82,0x81,0x80,0x80,0x7F,0x81,0x80,0x81,0x80,0x80,0x80,0x7E,0x80, - 0x7E,0x7D,0x7F,0x7E,0x7E,0x7E,0x7C,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x83,0x84, - 0x80,0x82,0x82,0x81,0x84,0x84,0x84,0x83,0x82,0x82,0x87,0x85,0x81,0x82,0x81,0x83, - 0x80,0x81,0x80,0x7E,0x81,0x7E,0x80,0x7F,0x7F,0x81,0x7F,0x80,0x80,0x80,0x80,0x81, - 0x82,0x82,0x80,0x83,0x84,0x82,0x82,0x82,0x80,0x81,0x84,0x81,0x83,0x82,0x7F,0x84, - 0x81,0x82,0x84,0x80,0x81,0x84,0x83,0x81,0x83,0x81,0x7F,0x80,0x80,0x7F,0x80,0x7C, - 0x80,0x7E,0x7E,0x81,0x7B,0x7D,0x7F,0x7D,0x7F,0x7F,0x7E,0x80,0x80,0x80,0x81,0x7F, - 0x7E,0x82,0x83,0x81,0x81,0x80,0x81,0x82,0x80,0x82,0x81,0x80,0x82,0x81,0x7E,0x80, - 0x7E,0x7D,0x80,0x7F,0x7B,0x7D,0x7F,0x7D,0x7E,0x7F,0x7D,0x7F,0x80,0x80,0x81,0x80, - 0x81,0x81,0x82,0x82,0x81,0x82,0x82,0x81,0x83,0x83,0x82,0x82,0x84,0x81,0x80,0x84, - 0x82,0x83,0x83,0x81,0x7F,0x80,0x80,0x7F,0x81,0x81,0x7F,0x7F,0x7F,0x7E,0x80,0x7D, - 0x7E,0x7C,0x7E,0x7F,0x7F,0x81,0x7D,0x7E,0x82,0x82,0x81,0x82,0x81,0x81,0x83,0x83, - 0x82,0x81,0x82,0x80,0x81,0x83,0x80,0x7F,0x81,0x81,0x81,0x81,0x7F,0x80,0x7E,0x7F, - 0x7E,0x7D,0x7F,0x7C,0x7E,0x7E,0x7D,0x7D,0x7D,0x7F,0x7D,0x7D,0x7E,0x7E,0x7D,0x7E, - 0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x82,0x80,0x82,0x83,0x83,0x82,0x80,0x84, - 0x82,0x81,0x82,0x80,0x7F,0x81,0x7F,0x7E,0x80,0x7E,0x7C,0x7F,0x80,0x7C,0x7E,0x7E, - 0x7D,0x7F,0x7D,0x7D,0x7E,0x7F,0x7E,0x80,0x80,0x7C,0x7F,0x81,0x81,0x7E,0x7F,0x81, - 0x7F,0x80,0x80,0x7F,0x80,0x80,0x81,0x80,0x81,0x7E,0x7D,0x81,0x7E,0x81,0x80,0x7F, - 0x80,0x7C,0x7B,0x7F,0x7D,0x7C,0x7F,0x7D,0x7F,0x82,0x7C,0x7E,0x7C,0x80,0x83,0x7F, - 0x80,0x7F,0x80,0x7F,0x7D,0x81,0x81,0x81,0x80,0x82,0x81,0x88,0x8B,0x90,0x93,0x81, - 0x7A,0x76,0x77,0x78,0x77,0x78,0x7E,0x6F,0x70,0x8F,0x78,0x72,0x83,0x7B,0x6F,0x6E, - 0x81,0x77,0x73,0x7A,0x77,0x79,0x84,0x87,0x83,0x8B,0x8D,0x88,0x82,0x83,0x8F,0x89, - 0x87,0x86,0x79,0x7D,0x86,0x86,0x88,0x9B,0x9C,0x92,0x92,0x80,0x82,0x93,0x8D,0x96, - 0x97,0x88,0x8D,0x93,0x8B,0x80,0x84,0x89,0x8C,0x90,0x84,0x7B,0x77,0x76,0x6F,0x63, - 0x6D,0x6E,0x70,0x70,0x6A,0x6D,0x6C,0x6F,0x72,0x75,0x6B,0x66,0x6A,0x69,0x6B,0x73, - 0x74,0x6C,0x67,0x6A,0x6F,0x6C,0x67,0x69,0x70,0x72,0x66,0x65,0x6D,0x71,0x6F,0x6D, - 0x74,0x77,0x73,0x74,0x82,0x87,0x8B,0xA4,0xB7,0xB2,0x9C,0x97,0x99,0x92,0x8F,0x8E, - 0x8E,0x8D,0x89,0x89,0x90,0x8B,0x80,0x81,0x89,0x85,0x7D,0x85,0x83,0x82,0x86,0x81, - 0x85,0x85,0x83,0x86,0x8B,0x89,0x87,0x93,0x92,0x8E,0x96,0x92,0x91,0x97,0x95,0x95, - 0x99,0x91,0x8C,0x91,0x95,0x95,0x98,0xA0,0x9B,0x9C,0x9C,0x8D,0x8C,0x91,0x93,0x92, - 0x92,0x93,0x92,0x8D,0x8B,0x8B,0x89,0x87,0x83,0x7D,0x7C,0x74,0x6E,0x70,0x6E,0x6A, - 0x69,0x68,0x65,0x60,0x61,0x64,0x62,0x5D,0x64,0x63,0x60,0x64,0x5F,0x62,0x66,0x64, - 0x66,0x66,0x63,0x62,0x62,0x65,0x62,0x5E,0x65,0x67,0x66,0x66,0x68,0x66,0x6D,0x6A, - 0x61,0x6F,0x75,0x75,0x7C,0x83,0x8E,0x9C,0xA3,0xA2,0x98,0x95,0x91,0x86,0x8A,0x87, - 0x88,0x93,0x94,0x8C,0x8C,0x88,0x80,0x82,0x7F,0x7A,0x80,0x80,0x80,0x81,0x81,0x89, - 0x8B,0x87,0x8C,0x90,0x91,0x97,0x9A,0x9F,0x9F,0x96,0x95,0x9D,0xA6,0xA4,0x9E,0xA2, - 0xA4,0xA3,0x95,0x8F,0x97,0x95,0x91,0x90,0x8F,0x98,0x99,0x92,0x96,0x9B,0x9E,0x95, - 0x92,0x96,0x98,0x95,0x8C,0x84,0x8C,0x99,0x8E,0x89,0x84,0x83,0x84,0x6E,0x5B,0x62, - 0x65,0x54,0x58,0x5F,0x67,0x67,0x5F,0x66,0x6C,0x6F,0x69,0x67,0x68,0x68,0x62,0x5C, - 0x5C,0x6D,0x79,0x6C,0x6D,0x6F,0x71,0x74,0x62,0x56,0x60,0x60,0x57,0x55,0x62,0x6E, - 0x72,0x73,0x7B,0x89,0x8A,0x8C,0x95,0x9D,0x9A,0x98,0x95,0x8E,0x9E,0xAA,0x9D,0x99, - 0x9D,0x97,0x90,0x7E,0x76,0x7F,0x78,0x71,0x75,0x7C,0x87,0x88,0x80,0x87,0x96,0x8F, - 0x86,0x8C,0x89,0x8A,0x8C,0x8C,0x87,0x8E,0xA9,0xA4,0x99,0xA3,0xAB,0xA2,0x94,0x8C, - 0x8E,0x92,0x86,0x85,0x91,0x97,0x99,0x98,0x9C,0xA0,0x96,0x8A,0x8D,0x8B,0x86,0x8A, - 0x8A,0x86,0x81,0x9D,0xA7,0x8D,0x8F,0x94,0x8A,0x79,0x6A,0x6D,0x73,0x67,0x5C,0x66, - 0x72,0x6D,0x65,0x6A,0x70,0x68,0x58,0x5F,0x64,0x59,0x58,0x60,0x5C,0x4B,0x67,0x7A, - 0x63,0x69,0x72,0x6A,0x5D,0x4F,0x55,0x60,0x58,0x52,0x65,0x74,0x72,0x68,0x71,0x7C, - 0x6F,0x68,0x71,0x80,0x80,0x82,0x94,0x9B,0x8F,0xA2,0xB9,0xA0,0x9A,0xA5,0x98,0x87, - 0x75,0x77,0x81,0x7B,0x73,0x7D,0x89,0x88,0x7D,0x7D,0x8A,0x7F,0x71,0x7C,0x83,0x80, - 0x80,0x84,0x87,0x7F,0x91,0xAA,0x99,0x94,0xA4,0x9C,0x8F,0x83,0x89,0x95,0x8B,0x84, - 0x90,0x9E,0x98,0x8E,0x90,0x96,0x8B,0x81,0x8B,0x93,0x8E,0x8A,0x8A,0x89,0x83,0x90, - 0xA5,0x95,0x92,0x9C,0x92,0x86,0x76,0x7A,0x85,0x75,0x69,0x77,0x7F,0x7D,0x6D,0x6C, - 0x76,0x6A,0x5A,0x63,0x6B,0x64,0x61,0x5E,0x60,0x5B,0x66,0x76,0x69,0x67,0x6F,0x65, - 0x58,0x51,0x50,0x5D,0x5B,0x53,0x67,0x70,0x6A,0x63,0x62,0x6C,0x67,0x58,0x66,0x73, - 0x6E,0x70,0x79,0x82,0x81,0x93,0xA9,0xA0,0xA4,0xAB,0xA0,0x92,0x8A,0x89,0x8E,0x86, - 0x7F,0x88,0x8F,0x89,0x7F,0x7C,0x82,0x7D,0x6A,0x77,0x82,0x7A,0x78,0x79,0x7E,0x77, - 0x81,0x9B,0x90,0x89,0x9C,0x94,0x88,0x80,0x85,0x91,0x89,0x85,0x94,0xA0,0x9C,0x99, - 0x94,0x95,0x96,0x82,0x84,0x93,0x8C,0x88,0x8A,0x90,0x88,0x85,0xA7,0x9F,0x89,0x9E, - 0x98,0x85,0x7F,0x7C,0x88,0x84,0x7B,0x83,0x8A,0x87,0x7C,0x73,0x76,0x77,0x62,0x61, - 0x74,0x6D,0x6A,0x6B,0x69,0x65,0x5C,0x74,0x7F,0x65,0x6D,0x74,0x64,0x58,0x51,0x61, - 0x63,0x56,0x61,0x70,0x6E,0x69,0x67,0x68,0x6D,0x61,0x59,0x6B,0x6E,0x68,0x6E,0x74, - 0x73,0x6E,0x89,0xA3,0x91,0x99,0xAF,0xA5,0x96,0x8D,0x94,0x99,0x8C,0x89,0x9E,0x9F, - 0x8F,0x8C,0x90,0x8C,0x7B,0x73,0x7F,0x81,0x79,0x7C,0x7E,0x7D,0x75,0x81,0x9C,0x8A, - 0x83,0x97,0x93,0x7F,0x74,0x7F,0x8A,0x7F,0x7C,0x96,0x9E,0x92,0x92,0x98,0x9D,0x8F, - 0x82,0x8E,0x94,0x8E,0x8B,0x90,0x8E,0x86,0x8C,0xA9,0xA1,0x90,0xA5,0xA2,0x8F,0x7F, - 0x7F,0x8C,0x83,0x77,0x8A,0x99,0x8A,0x84,0x82,0x87,0x7A,0x66,0x6E,0x75,0x71,0x6F, - 0x72,0x6D,0x65,0x63,0x7C,0x82,0x69,0x74,0x79,0x68,0x5C,0x53,0x62,0x66,0x54,0x61, - 0x75,0x73,0x6D,0x68,0x6E,0x6A,0x5C,0x5C,0x69,0x6A,0x6C,0x71,0x6E,0x6E,0x6A,0x7E, - 0x99,0x8B,0x8E,0xA2,0x9B,0x93,0x89,0x93,0xA0,0x93,0x92,0xA4,0xA7,0x9D,0x97,0x95, - 0x93,0x84,0x7C,0x83,0x82,0x80,0x80,0x7E,0x78,0x72,0x7A,0x96,0x90,0x83,0x93,0x93, - 0x81,0x74,0x73,0x83,0x80,0x77,0x89,0x96,0x96,0x90,0x93,0x9A,0x8F,0x84,0x87,0x8F, - 0x8A,0x8B,0x8F,0x8C,0x85,0x82,0x9C,0xA9,0x94,0x99,0xA4,0x96,0x88,0x7D,0x88,0x8E, - 0x7E,0x82,0x94,0x96,0x8E,0x87,0x89,0x89,0x79,0x75,0x79,0x7A,0x78,0x78,0x79,0x72, - 0x67,0x6E,0x89,0x7F,0x6F,0x7B,0x7A,0x6A,0x5B,0x58,0x69,0x64,0x58,0x69,0x72,0x73, - 0x6B,0x69,0x72,0x68,0x5D,0x5E,0x67,0x6D,0x6C,0x6C,0x6C,0x69,0x64,0x7C,0x92,0x85, - 0x8B,0x94,0x8E,0x8B,0x7E,0x8A,0x9A,0x8D,0x8D,0x9F,0xA2,0x9F,0x97,0x93,0x98,0x8A, - 0x7E,0x7D,0x85,0x86,0x7F,0x7B,0x7C,0x75,0x71,0x8D,0x91,0x85,0x8E,0x8B,0x82,0x78, - 0x68,0x7A,0x80,0x72,0x80,0x8C,0x93,0x90,0x86,0x8D,0x8F,0x84,0x7E,0x83,0x8A,0x8D, - 0x89,0x85,0x88,0x82,0x87,0xA5,0x9B,0x94,0xA4,0x9A,0x93,0x7E,0x7A,0x8D,0x83,0x7A, - 0x88,0x8F,0x98,0x91,0x81,0x88,0x85,0x7A,0x72,0x73,0x79,0x7A,0x73,0x6B,0x6A,0x62, - 0x75,0x8A,0x74,0x79,0x80,0x71,0x6E,0x55,0x59,0x6A,0x5A,0x5E,0x68,0x6A,0x76,0x71, - 0x63,0x70,0x6D,0x65,0x5E,0x5F,0x6C,0x6B,0x66,0x65,0x69,0x67,0x83,0x8F,0x7E,0x8F, - 0x92,0x8E,0x8E,0x7A,0x86,0x96,0x88,0x8F,0x91,0x95,0xA4,0x97,0x8C,0x95,0x93,0x89, - 0x7E,0x7A,0x84,0x7C,0x75,0x71,0x71,0x70,0x87,0x90,0x7C,0x8A,0x84,0x85,0x84,0x66, - 0x72,0x7F,0x71,0x77,0x77,0x7D,0x95,0x89,0x85,0x91,0x90,0x8E,0x85,0x80,0x86,0x85, - 0x80,0x86,0x89,0x82,0x90,0xA0,0x91,0x95,0x92,0x8A,0x9A,0x8C,0x7E,0x89,0x87,0x84, - 0x86,0x7B,0x86,0x8C,0x7D,0x84,0x7F,0x7B,0x84,0x7C,0x74,0x7B,0x79,0x76,0x78,0x72, - 0x72,0x75,0x77,0x71,0x6E,0x6E,0x6E,0x6F,0x6B,0x6C,0x6D,0x6C,0x6E,0x70,0x69,0x6A, - 0x69,0x67,0x68,0x68,0x68,0x6A,0x6D,0x6E,0x71,0x71,0x77,0x79,0x7C,0x7F,0x81,0x89, - 0x8B,0x8B,0x8C,0x90,0x9A,0x9A,0x95,0x9A,0x95,0x97,0x98,0x90,0x8F,0x8E,0x8A,0x86, - 0x85,0x7C,0x80,0x7D,0x7A,0x7A,0x75,0x7C,0x78,0x77,0x79,0x79,0x79,0x7C,0x77,0x79, - 0x7F,0x79,0x81,0x88,0x84,0x85,0x86,0x87,0x8B,0x84,0x81,0x88,0x86,0x85,0x83,0x82, - 0x8C,0x8C,0x88,0x8C,0x8E,0x8B,0x8C,0x8C,0x88,0x88,0x84,0x91,0x8D,0x82,0x89,0x81, - 0x8A,0x8E,0x7F,0x82,0x85,0x81,0x82,0x79,0x75,0x7C,0x79,0x79,0x77,0x72,0x7C,0x7E, - 0x78,0x7D,0x7B,0x79,0x7B,0x74,0x79,0x78,0x76,0x86,0x7B,0x76,0x7A,0x73,0x83,0x81, - 0x72,0x79,0x7A,0x7B,0x7C,0x73,0x79,0x82,0x7C,0x7F,0x82,0x7B,0x87,0x8B,0x84,0x88, - 0x88,0x88,0x88,0x85,0x82,0x86,0x95,0x8F,0x84,0x8B,0x82,0x8B,0x91,0x7A,0x7E,0x7D, - 0x7B,0x82,0x72,0x73,0x80,0x79,0x7C,0x79,0x72,0x80,0x80,0x75,0x78,0x7A,0x79,0x79, - 0x78,0x72,0x76,0x92,0x89,0x7C,0x86,0x7E,0x90,0x90,0x71,0x7C,0x80,0x7D,0x87,0x75, - 0x7A,0x8E,0x89,0x8B,0x85,0x86,0x8F,0x91,0x85,0x7C,0x87,0x88,0x7F,0x79,0x76,0x94, - 0xA3,0x8A,0x92,0x8F,0x8D,0x9B,0x7A,0x70,0x7E,0x7B,0x82,0x7C,0x78,0x89,0x94,0x8F, - 0x81,0x80,0x82,0x86,0x7E,0x71,0x7C,0x81,0x78,0x75,0x76,0x92,0x9A,0x8A,0x8E,0x81, - 0x85,0x8E,0x72,0x6D,0x75,0x7A,0x84,0x80,0x7E,0x86,0x92,0x8F,0x84,0x84,0x7F,0x84, - 0x87,0x7F,0x82,0x80,0x7A,0x79,0x8D,0x9F,0x8F,0x93,0x8F,0x7D,0x8B,0x7D,0x6D,0x73, - 0x73,0x78,0x7D,0x7E,0x79,0x82,0x86,0x79,0x7D,0x75,0x6D,0x79,0x75,0x74,0x76,0x6F, - 0x6A,0x77,0x93,0x8C,0x87,0x8A,0x78,0x7F,0x7F,0x73,0x72,0x72,0x79,0x80,0x88,0x83, - 0x81,0x87,0x81,0x82,0x83,0x7A,0x7E,0x81,0x80,0x81,0x7B,0x76,0x77,0x8C,0x98,0x91, - 0x8E,0x7F,0x7A,0x82,0x80,0x7D,0x78,0x75,0x78,0x82,0x88,0x85,0x83,0x7D,0x7C,0x83, - 0x80,0x7B,0x7C,0x79,0x7B,0x7C,0x79,0x75,0x78,0x8A,0x8F,0x93,0x8F,0x7B,0x78,0x79, - 0x77,0x7E,0x7F,0x7A,0x79,0x80,0x83,0x88,0x8C,0x84,0x81,0x83,0x7F,0x83,0x86,0x7F, - 0x81,0x7E,0x7A,0x7C,0x87,0x90,0x91,0x93,0x89,0x7E,0x7C,0x7A,0x7A,0x7B,0x7B,0x77, - 0x78,0x7C,0x7D,0x83,0x84,0x80,0x7E,0x7B,0x79,0x7C,0x7A,0x79,0x79,0x76,0x74,0x73, - 0x7E,0x88,0x8C,0x8D,0x85,0x7D,0x79,0x76,0x76,0x7A,0x7C,0x78,0x7B,0x7D,0x7B,0x83, - 0x85,0x84,0x85,0x82,0x80,0x7F,0x7D,0x7F,0x80,0x7F,0x7D,0x7A,0x80,0x8B,0x90,0x92, - 0x8E,0x85,0x7F,0x7A,0x76,0x7C,0x80,0x7D,0x81,0x7D,0x7A,0x81,0x80,0x80,0x85,0x83, - 0x80,0x7F,0x7A,0x7A,0x7E,0x7C,0x7B,0x7B,0x7F,0x85,0x89,0x8C,0x89,0x82,0x7F,0x7A, - 0x75,0x7B,0x7B,0x7C,0x82,0x7E,0x7F,0x82,0x7E,0x80,0x84,0x83,0x83,0x82,0x7D,0x7E, - 0x7E,0x7C,0x7D,0x7E,0x83,0x89,0x8A,0x8C,0x86,0x82,0x80,0x79,0x77,0x7C,0x7A,0x7B, - 0x7F,0x79,0x7C,0x7E,0x79,0x7D,0x80,0x7E,0x80,0x7F,0x79,0x79,0x79,0x78,0x78,0x7A, - 0x81,0x84,0x85,0x89,0x84,0x7E,0x80,0x7A,0x78,0x7E,0x7A,0x7B,0x7E,0x7A,0x7D,0x7D, - 0x7C,0x81,0x82,0x81,0x82,0x80,0x7E,0x7F,0x7D,0x7E,0x7D,0x7F,0x87,0x87,0x89,0x8A, - 0x83,0x82,0x82,0x7D,0x7F,0x83,0x7E,0x81,0x7F,0x7B,0x7F,0x7C,0x7C,0x81,0x7F,0x81, - 0x83,0x7D,0x7D,0x7F,0x7D,0x7E,0x7C,0x7F,0x84,0x85,0x87,0x86,0x80,0x81,0x7F,0x7C, - 0x81,0x80,0x7F,0x83,0x7D,0x7C,0x80,0x7C,0x7E,0x82,0x7F,0x82,0x83,0x7D,0x80,0x81, - 0x7F,0x80,0x7F,0x84,0x86,0x87,0x8B,0x84,0x80,0x85,0x7F,0x7D,0x84,0x7F,0x80,0x84, - 0x7B,0x7C,0x7F,0x79,0x7C,0x7E,0x7D,0x81,0x7E,0x7C,0x7F,0x7E,0x7E,0x7C,0x7E,0x85, - 0x84,0x87,0x89,0x80,0x82,0x84,0x7D,0x81,0x82,0x7E,0x84,0x82,0x7D,0x80,0x7D,0x7B, - 0x7F,0x7C,0x81,0x7E,0x8A,0x8F,0x7B,0x8A,0x6D,0x67,0x86,0x78,0x6A,0x79,0x84,0x84, - 0x90,0x8C,0x8C,0x8E,0x8F,0xA0,0xA7,0x9A,0x95,0x96,0x8C,0x88,0x89,0x85,0x7D,0x6F, - 0x63,0x5D,0x56,0x55,0x55,0x53,0x5F,0x68,0x6F,0x74,0x75,0x7A,0x7D,0x7D,0x82,0x8A, - 0x86,0x8D,0x93,0x8B,0x91,0x9B,0xA0,0xAC,0xB9,0xB6,0xBB,0xBB,0xAF,0xAB,0xA3,0x9B, - 0x96,0x93,0x92,0x8F,0x8D,0x86,0x7D,0x7E,0x76,0x6F,0x74,0x6E,0x6B,0x6F,0x67,0x60, - 0x58,0x49,0x45,0x43,0x40,0x40,0x44,0x4A,0x4F,0x56,0x5D,0x64,0x6B,0x76,0x80,0x84, - 0x89,0x8C,0x8D,0x90,0x8F,0x95,0x98,0x9A,0xA6,0xAF,0xB3,0xB9,0xB9,0xB4,0xB7,0xB6, - 0xB5,0xAE,0xA7,0xA4,0x99,0x95,0x8F,0x85,0x8A,0x88,0x86,0x87,0x7F,0x73,0x6D,0x61, - 0x54,0x54,0x4F,0x4D,0x4B,0x46,0x49,0x4F,0x55,0x5A,0x5E,0x67,0x71,0x73,0x74,0x78, - 0x7D,0x81,0x7F,0x86,0x92,0x96,0x9F,0xA4,0xA1,0xA8,0xAA,0xA6,0xAF,0xB2,0xB0,0xB4, - 0xAD,0xA5,0xA2,0x9A,0x92,0x8D,0x86,0x83,0x81,0x7A,0x77,0x72,0x6E,0x6A,0x6D,0x75, - 0x7A,0x7C,0x73,0x6C,0x68,0x5D,0x52,0x4E,0x49,0x45,0x4B,0x3C,0x32,0x44,0x4E,0x59, - 0x66,0x69,0x6B,0x72,0x77,0x77,0x7B,0x79,0x7A,0x87,0x94,0x9F,0xA8,0xAC,0xA6,0xAC, - 0xB1,0xAD,0xB1,0xB4,0xBA,0xBC,0xBE,0xC0,0xBF,0xBF,0xBC,0xB6,0xAC,0xA3,0x9A,0x8D, - 0x81,0x77,0x6C,0x62,0x5B,0x63,0x66,0x63,0x63,0x52,0x49,0x4B,0x3D,0x3F,0x45,0x4C, - 0x57,0x56,0x57,0x5A,0x5F,0x62,0x66,0x6A,0x71,0x77,0x78,0x7F,0x88,0x8D,0x8E,0x94, - 0x9D,0xA3,0xA5,0xA6,0xA1,0x9C,0x98,0x91,0x94,0x94,0x98,0x9F,0x9B,0x9A,0x9E,0x9A, - 0x9C,0x9D,0x95,0x93,0x8F,0x8A,0x86,0x81,0x7B,0x7B,0x85,0x87,0x88,0x8A,0x84,0x76, - 0x6E,0x66,0x62,0x65,0x62,0x68,0x6D,0x65,0x65,0x63,0x5F,0x63,0x63,0x5F,0x60,0x61, - 0x62,0x61,0x60,0x63,0x68,0x70,0x76,0x79,0x7C,0x79,0x79,0x76,0x74,0x7D,0x83,0x85, - 0x87,0x82,0x85,0x88,0x86,0x8F,0x96,0x92,0x92,0x93,0x90,0x94,0x96,0x97,0x9F,0xA8, - 0xAB,0xB0,0xB1,0xA8,0x9D,0x98,0x96,0x98,0x9A,0x99,0x98,0x8F,0x88,0x89,0x8A,0x88, - 0x89,0x83,0x7B,0x76,0x72,0x71,0x6A,0x62,0x69,0x6F,0x72,0x74,0x6D,0x61,0x57,0x53, - 0x55,0x5B,0x60,0x5F,0x5B,0x56,0x55,0x58,0x5A,0x5E,0x60,0x60,0x63,0x67,0x6C,0x71, - 0x71,0x74,0x82,0x90,0x9C,0xA3,0x9F,0x95,0x91,0x94,0x9E,0xAE,0xB1,0xAD,0xA9,0xA3, - 0xA5,0xA8,0xA8,0xA4,0x9F,0x9C,0x9D,0x9E,0x9B,0x95,0x8A,0x8A,0x93,0x99,0x9C,0x96, - 0x88,0x7F,0x7D,0x7D,0x85,0x89,0x83,0x7F,0x7A,0x77,0x7C,0x7D,0x78,0x72,0x6F,0x72, - 0x79,0x79,0x74,0x6D,0x68,0x71,0x7D,0x81,0x7D,0x70,0x62,0x61,0x6A,0x6D,0x70,0x69, - 0x60,0x63,0x68,0x6D,0x6E,0x67,0x60,0x63,0x69,0x70,0x73,0x6A,0x62,0x5F,0x6B,0x80, - 0x86,0x84,0x7B,0x6E,0x6F,0x7D,0x85,0x8B,0x8A,0x83,0x88,0x91,0x94,0x94,0x8E,0x89, - 0x8E,0x95,0x99,0x9A,0x93,0x8C,0x87,0x91,0xA4,0xAC,0xA8,0x9C,0x8F,0x90,0x99,0x9C, - 0x9E,0x9E,0x97,0x9A,0xA1,0x9D,0x99,0x92,0x8D,0x94,0x9B,0x9A,0x99,0x93,0x8B,0x84, - 0x89,0x98,0x9E,0x9B,0x90,0x80,0x77,0x7C,0x7C,0x7A,0x79,0x72,0x71,0x75,0x71,0x6B, - 0x65,0x5F,0x60,0x65,0x65,0x63,0x5C,0x52,0x49,0x4C,0x5D,0x67,0x66,0x5F,0x54,0x50, - 0x59,0x5E,0x61,0x65,0x64,0x67,0x71,0x73,0x70,0x6E,0x70,0x78,0x80,0x82,0x83,0x81, - 0x7B,0x78,0x7F,0x92,0x9D,0x9E,0x98,0x8C,0x87,0x90,0x95,0x96,0x98,0x97,0x99,0x9F, - 0x9C,0x97,0x94,0x94,0x99,0xA0,0x9E,0x9B,0x99,0x93,0x8B,0x8F,0xA3,0xAD,0xAA,0x9F, - 0x92,0x8C,0x95,0x9A,0x98,0x99,0x98,0x98,0x9D,0x9A,0x90,0x8A,0x89,0x8C,0x8E,0x89, - 0x86,0x81,0x77,0x6E,0x70,0x81,0x88,0x83,0x78,0x6B,0x66,0x6D,0x6D,0x6A,0x6B,0x6C, - 0x6C,0x71,0x6D,0x65,0x63,0x65,0x68,0x6B,0x67,0x66,0x65,0x5D,0x55,0x5C,0x6E,0x73, - 0x6D,0x62,0x55,0x55,0x5D,0x5D,0x5C,0x5F,0x61,0x65,0x69,0x63,0x5E,0x62,0x68,0x6F, - 0x73,0x70,0x71,0x72,0x6D,0x6A,0x79,0x8D,0x92,0x8E,0x85,0x7C,0x7F,0x88,0x87,0x89, - 0x8D,0x8F,0x94,0x96,0x8E,0x8D,0x91,0x95,0x9B,0x9B,0x96,0x98,0x96,0x8F,0x90,0xA3, - 0xB2,0xB2,0xAB,0x9F,0x98,0x9F,0xA3,0x9E,0x9F,0xA2,0xA3,0xA6,0xA4,0x98,0x95,0x98, - 0x9B,0x9C,0x9A,0x98,0x97,0x92,0x85,0x85,0x9B,0xA4,0x9D,0x92,0x84,0x7F,0x85,0x82, - 0x79,0x7B,0x7D,0x7B,0x7B,0x74,0x69,0x69,0x6D,0x6F,0x6D,0x6A,0x6A,0x69,0x60,0x56, - 0x61,0x75,0x77,0x6F,0x66,0x5E,0x60,0x67,0x61,0x60,0x66,0x67,0x68,0x69,0x60,0x5B, - 0x61,0x65,0x66,0x66,0x65,0x65,0x62,0x58,0x56,0x6C,0x7B,0x77,0x6F,0x66,0x61,0x6A, - 0x6C,0x66,0x6B,0x72,0x76,0x78,0x75,0x6C,0x6F,0x78,0x7B,0x7C,0x7B,0x7D,0x7F,0x7A, - 0x72,0x7F,0x98,0x9E,0x98,0x91,0x89,0x8B,0x94,0x8F,0x8F,0x99,0x9F,0xA2,0xA2,0x9B, - 0x98,0x9F,0xA3,0xA3,0xA1,0xA1,0xA2,0xA0,0x94,0x92,0xA6,0xB4,0xAF,0xA5,0x9B,0x96, - 0x9C,0x9B,0x94,0x97,0x9D,0x9E,0x9B,0x95,0x8E,0x91,0x96,0x96,0x93,0x92,0x91,0x8E, - 0x87,0x7C,0x87,0x9C,0x9D,0x93,0x89,0x80,0x82,0x87,0x80,0x7D,0x84,0x89,0x86,0x81, - 0x77,0x72,0x78,0x7A,0x77,0x74,0x73,0x70,0x6A,0x5D,0x5B,0x70,0x7C,0x74,0x68,0x60, - 0x5C,0x62,0x61,0x59,0x5E,0x67,0x69,0x65,0x60,0x59,0x5D,0x63,0x64,0x62,0x63,0x65, - 0x63,0x5B,0x52,0x63,0x78,0x77,0x6C,0x66,0x62,0x67,0x6C,0x63,0x64,0x6F,0x76,0x75, - 0x72,0x6C,0x70,0x79,0x7B,0x79,0x7A,0x7D,0x7D,0x79,0x6E,0x77,0x90,0x98,0x90,0x89, - 0x85,0x85,0x8D,0x87,0x83,0x8B,0x95,0x97,0x93,0x8C,0x89,0x94,0x98,0x97,0x95,0x99, - 0x9A,0x97,0x8D,0x88,0x9E,0xB0,0xAB,0xA1,0x9B,0x98,0x9E,0x9E,0x93,0x98,0xA4,0xA9, - 0xA5,0x9D,0x95,0x9B,0xA1,0x9E,0x9B,0x9C,0x9E,0x9A,0x92,0x86,0x92,0xA8,0xA8,0x9C, - 0x94,0x8F,0x91,0x94,0x86,0x85,0x90,0x96,0x94,0x8C,0x82,0x81,0x88,0x86,0x82,0x7F, - 0x82,0x80,0x79,0x6B,0x6D,0x84,0x8C,0x82,0x78,0x71,0x6F,0x74,0x6C,0x64,0x6C,0x73, - 0x73,0x6D,0x65,0x5F,0x66,0x67,0x63,0x62,0x65,0x66,0x60,0x57,0x53,0x68,0x76,0x70, - 0x65,0x5E,0x5D,0x64,0x64,0x59,0x5C,0x66,0x6D,0x69,0x63,0x5C,0x62,0x6A,0x67,0x67, - 0x6A,0x6D,0x6A,0x63,0x5B,0x6C,0x81,0x7F,0x76,0x6E,0x6D,0x75,0x7A,0x70,0x71,0x7C, - 0x82,0x81,0x7C,0x76,0x79,0x83,0x83,0x81,0x82,0x87,0x86,0x80,0x77,0x84,0x9C,0x9C, - 0x93,0x8C,0x89,0x8E,0x94,0x8C,0x8B,0x96,0x9C,0x9C,0x97,0x91,0x92,0x9C,0x9A,0x96, - 0x96,0x9B,0x99,0x92,0x86,0x91,0xA9,0xA8,0x9C,0x94,0x90,0x93,0x97,0x8E,0x8A,0x94, - 0x98,0x97,0x92,0x8B,0x89,0x93,0x92,0x8D,0x8B,0x8E,0x8E,0x86,0x7B,0x82,0x9A,0x9B, - 0x92,0x88,0x82,0x83,0x89,0x82,0x7C,0x84,0x8A,0x8B,0x85,0x7C,0x79,0x82,0x84,0x7F, - 0x7D,0x7E,0x7C,0x73,0x69,0x73,0x8A,0x89,0x7F,0x77,0x72,0x73,0x78,0x6F,0x6B,0x76, - 0x7C,0x7D,0x77,0x6F,0x6D,0x76,0x78,0x73,0x73,0x76,0x74,0x6A,0x64,0x75,0x88,0x85, - 0x7C,0x73,0x70,0x75,0x76,0x6D,0x70,0x7A,0x7E,0x7D,0x77,0x71,0x75,0x7D,0x7A,0x75, - 0x77,0x79,0x73,0x67,0x69,0x81,0x8A,0x82,0x79,0x72,0x72,0x78,0x73,0x6B,0x74,0x7D, - 0x7F,0x7B,0x73,0x72,0x79,0x7F,0x7B,0x7B,0x7F,0x7E,0x76,0x6D,0x7B,0x90,0x8E,0x86, - 0x7F,0x7C,0x80,0x82,0x78,0x78,0x86,0x8C,0x8A,0x82,0x7D,0x7E,0x84,0x83,0x7F,0x82, - 0x83,0x7D,0x73,0x76,0x8F,0x97,0x8B,0x84,0x80,0x80,0x83,0x7E,0x76,0x81,0x8C,0x8B, - 0x89,0x82,0x7E,0x84,0x87,0x80,0x81,0x86,0x83,0x79,0x70,0x84,0x98,0x91,0x89,0x85, - 0x82,0x84,0x82,0x78,0x79,0x85,0x89,0x87,0x83,0x7F,0x81,0x87,0x83,0x7E,0x84,0x87, - 0x7F,0x72,0x79,0x92,0x95,0x8A,0x85,0x82,0x84,0x86,0x7F,0x7A,0x85,0x8D,0x89,0x84, - 0x7F,0x80,0x88,0x88,0x81,0x82,0x88,0x85,0x77,0x71,0x88,0x97,0x8C,0x83,0x7F,0x80, - 0x83,0x7E,0x75,0x79,0x86,0x89,0x82,0x7E,0x7C,0x80,0x85,0x7F,0x7A,0x81,0x85,0x7B, - 0x70,0x7B,0x93,0x93,0x86,0x83,0x82,0x84,0x84,0x7B,0x77,0x80,0x89,0x87,0x82,0x81, - 0x81,0x85,0x84,0x7D,0x7E,0x84,0x7E,0x6F,0x6E,0x86,0x92,0x87,0x80,0x7F,0x80,0x81, - 0x7C,0x73,0x75,0x82,0x85,0x7C,0x7B,0x7E,0x80,0x82,0x7D,0x7B,0x81,0x84,0x77,0x6C, - 0x7B,0x91,0x8C,0x81,0x81,0x83,0x85,0x83,0x7B,0x77,0x81,0x8A,0x84,0x7E,0x81,0x84, - 0x86,0x84,0x7D,0x7F,0x85,0x81,0x72,0x74,0x8D,0x93,0x84,0x81,0x83,0x83,0x81,0x7C, - 0x76,0x78,0x85,0x87,0x7D,0x7C,0x81,0x83,0x81,0x7C,0x7A,0x7E,0x7F,0x74,0x6A,0x7B, - 0x91,0x88,0x7B,0x7F,0x84,0x81,0x7A,0x76,0x75,0x7A,0x84,0x7E,0x78,0x7E,0x85,0x85, - 0x7F,0x7D,0x7F,0x80,0x7B,0x71,0x72,0x89,0x92,0x83,0x7C,0x83,0x8A,0x83,0x77,0x78, - 0x7C,0x81,0x83,0x7D,0x7C,0x82,0x88,0x85,0x7D,0x7D,0x84,0x81,0x77,0x71,0x7C,0x8F, - 0x8C,0x7E,0x7D,0x85,0x8B,0x80,0x74,0x79,0x80,0x82,0x7C,0x78,0x7F,0x84,0x85,0x82, - 0x7D,0x80,0x83,0x7E,0x75,0x72,0x81,0x8F,0x85,0x7A,0x7E,0x89,0x89,0x7B,0x75,0x7E, - 0x83,0x80,0x79,0x79,0x80,0x81,0x81,0x7E,0x7F,0x83,0x82,0x7D,0x77,0x79,0x87,0x88, - 0x7D,0x7C,0x83,0x8B,0x85,0x7B,0x7D,0x82,0x83,0x7F,0x7A,0x7E,0x82,0x7F,0x7F,0x7E, - 0x81,0x82,0x7F,0x7C,0x7A,0x7F,0x86,0x81,0x7D,0x80,0x85,0x88,0x82,0x7D,0x82,0x84, - 0x83,0x7E,0x7C,0x80,0x81,0x7F,0x7F,0x7F,0x83,0x83,0x7E,0x7B,0x7C,0x83,0x83,0x7E, - 0x80,0x83,0x86,0x86,0x81,0x82,0x85,0x83,0x83,0x80,0x7F,0x81,0x80,0x81,0x81,0x81, - 0x84,0x82,0x7E,0x7C,0x7E,0x83,0x80,0x7E,0x7F,0x81,0x86,0x84,0x7F,0x82,0x83,0x83, - 0x81,0x7C,0x7E,0x7F,0x7E,0x7F,0x7E,0x81,0x82,0x7F,0x7D,0x7C,0x7F,0x83,0x7F,0x7F, - 0x80,0x81,0x86,0x83,0x80,0x83,0x83,0x83,0x80,0x7D,0x80,0x80,0x7F,0x7F,0x7F,0x83, - 0x83,0x7F,0x7F,0x7E,0x82,0x84,0x80,0x81,0x82,0x83,0x85,0x82,0x83,0x85,0x83,0x83, - 0x80,0x7E,0x80,0x7F,0x7F,0x7E,0x7E,0x81,0x80,0x7E,0x7C,0x7C,0x81,0x81,0x7E,0x80, - 0x80,0x82,0x83,0x7F,0x81,0x83,0x81,0x81,0x7D,0x7D,0x80,0x7E,0x7E,0x7F,0x80,0x83, - 0x80,0x7E,0x7D,0x7D,0x82,0x81,0x80,0x84,0x83,0x85,0x85,0x81,0x84,0x85,0x82,0x82, - 0x7D,0x7E,0x80,0x7E,0x7D,0x7D,0x7E,0x7F,0x7D,0x7C,0x7B,0x7B,0x7F,0x7D,0x7D,0x80, - 0x80,0x82,0x82,0x7E,0x82,0x84,0x81,0x81,0x7D,0x7F,0x80,0x7D,0x7E,0x7E,0x80,0x81, - 0x7E,0x7F,0x7E,0x7C,0x81,0x80,0x7F,0x83,0x82,0x84,0x84,0x7F,0x82,0x84,0x82,0x81, - 0x7D,0x7E,0x80,0x7D,0x7C,0x7C,0x7D,0x7F,0x7D,0x7C,0x7B,0x7A,0x7F,0x7F,0x7C,0x7F, - 0x81,0x83,0x84,0x81,0x80,0x83,0x83,0x8D,0x86,0x64,0x72,0x88,0x87,0x73,0x7E,0x90, - 0x6C,0x73,0x7F,0x78,0x7A,0x86,0x90,0x7C,0x7C,0x88,0x8B,0x7C,0x7A,0x8E,0x81,0x75, - 0x76,0x7B,0x81,0x7D,0x80,0x84,0x78,0x74,0x7E,0x7C,0x7F,0x85,0x88,0x8B,0x87,0x83, - 0x81,0x7C,0x85,0x87,0x81,0x87,0x7F,0x87,0x7D,0x6C,0x88,0x85,0x6B,0x7C,0x7A,0x78, - 0x6F,0x62,0x7F,0x76,0x6B,0x7B,0x73,0x77,0x80,0x7C,0x77,0x6D,0x73,0x81,0x8C,0x89, - 0x79,0x7B,0x8F,0x8E,0x88,0x89,0x82,0x86,0x91,0x92,0x8C,0x91,0xA4,0x99,0x90,0x9B, - 0x8D,0x8C,0x9E,0xA8,0xA2,0x9B,0x9D,0x97,0x92,0x94,0x92,0x81,0x7E,0x8C,0x8F,0x90, - 0x92,0x84,0x77,0x79,0x73,0x6F,0x69,0x6C,0x7A,0x78,0x73,0x6C,0x65,0x68,0x6A,0x6E, - 0x6D,0x62,0x63,0x61,0x59,0x5D,0x58,0x58,0x5E,0x62,0x6B,0x6D,0x62,0x61,0x6B,0x67, - 0x5F,0x61,0x69,0x77,0x78,0x6D,0x6F,0x70,0x74,0x7F,0x78,0x77,0x7A,0x79,0x80,0x7F, - 0x81,0x88,0x8F,0x9A,0xA9,0xB1,0xAF,0xA6,0x9F,0x9F,0x9F,0x98,0x91,0x94,0x91,0x8F, - 0x8C,0x89,0x92,0x93,0x8C,0x87,0x84,0x82,0x7F,0x7D,0x7C,0x7C,0x7D,0x82,0x85,0x89, - 0x8A,0x85,0x89,0x8D,0x88,0x86,0x8A,0x8E,0x8D,0x8D,0x8C,0x91,0x95,0x90,0x8D,0x8D, - 0x8E,0x91,0x8B,0x8C,0x91,0x91,0x91,0x8C,0x8E,0x95,0x91,0x8C,0x94,0x98,0x8F,0x95, - 0x98,0x93,0x9C,0x98,0x90,0x98,0x9A,0x98,0x93,0x90,0x90,0x88,0x87,0x81,0x78,0x7E, - 0x77,0x6E,0x6F,0x6A,0x6C,0x69,0x6E,0x71,0x5B,0x5D,0x5D,0x5B,0x64,0x53,0x52,0x57, - 0x50,0x53,0x45,0x4A,0x5C,0x59,0x5B,0x5A,0x62,0x6C,0x5F,0x5C,0x5F,0x5D,0x59,0x51, - 0x6C,0x7B,0x69,0x72,0x74,0x72,0x76,0x61,0x65,0x73,0x75,0x7F,0x79,0x7F,0x90,0x90, - 0x8F,0x99,0xA2,0xA9,0xA7,0xA2,0xA6,0x9D,0x8E,0x8E,0xA0,0xAD,0xA0,0x94,0x96,0x9A, - 0x90,0x7C,0x7E,0x88,0x8C,0x8D,0x86,0x89,0x8C,0x88,0x81,0x7C,0x86,0x8C,0x85,0x85, - 0x86,0x7D,0x7D,0x76,0x87,0xA2,0x97,0x90,0x96,0x92,0x92,0x8A,0x84,0x96,0x9C,0x97, - 0x92,0x95,0x9F,0x97,0x8B,0x8E,0x95,0x9B,0x9E,0x9A,0x9C,0x9C,0x91,0x88,0x8C,0xA6, - 0xA8,0x9A,0x9B,0x97,0x95,0x91,0x83,0x89,0x90,0x8E,0x88,0x7F,0x82,0x7F,0x75,0x72, - 0x73,0x74,0x71,0x69,0x66,0x62,0x5C,0x55,0x4A,0x5B,0x6F,0x63,0x56,0x54,0x55,0x56, - 0x4C,0x46,0x54,0x60,0x63,0x5A,0x56,0x5C,0x5D,0x5C,0x5C,0x63,0x6B,0x69,0x62,0x62, - 0x64,0x68,0x68,0x64,0x79,0x91,0x83,0x75,0x74,0x7D,0x87,0x82,0x85,0x97,0xA7,0xA8, - 0x9C,0x98,0xA3,0xA3,0x9A,0x94,0x98,0xA0,0x98,0x8F,0x8A,0x88,0x87,0x80,0x78,0x8B, - 0x9E,0x8D,0x80,0x7C,0x81,0x86,0x7F,0x7F,0x89,0x8F,0x87,0x7D,0x7B,0x89,0x8D,0x86, - 0x86,0x8C,0x90,0x89,0x87,0x8B,0x90,0x8F,0x89,0x87,0x9C,0xAF,0x9F,0x8F,0x8A,0x8F, - 0x96,0x8F,0x8B,0x9B,0xA5,0x9B,0x8A,0x86,0x92,0x9B,0x98,0x94,0x98,0x9A,0x92,0x87, - 0x88,0x8E,0x8D,0x85,0x7C,0x8A,0x9E,0x96,0x82,0x79,0x7B,0x7F,0x78,0x6F,0x71,0x75, - 0x73,0x5D,0x53,0x5E,0x63,0x5F,0x59,0x5E,0x5E,0x55,0x50,0x51,0x55,0x58,0x54,0x47, - 0x50,0x6F,0x70,0x5E,0x57,0x57,0x5D,0x65,0x60,0x5D,0x69,0x71,0x62,0x55,0x5F,0x6B, - 0x6F,0x72,0x73,0x7A,0x79,0x73,0x6F,0x77,0x83,0x85,0x88,0x89,0xA3,0xB9,0xAA,0x9B, - 0x96,0x9A,0xA1,0x9D,0x96,0x9A,0x9F,0x97,0x87,0x82,0x8D,0x8E,0x87,0x83,0x83,0x86, - 0x81,0x78,0x7A,0x83,0x81,0x7C,0x76,0x7D,0x96,0x96,0x83,0x7A,0x7A,0x87,0x8A,0x85, - 0x8D,0x95,0x96,0x8E,0x87,0x8E,0x99,0x98,0x94,0x94,0x98,0x97,0x8E,0x8D,0x90,0x95, - 0x93,0x8D,0x8A,0x9B,0xAE,0xA1,0x95,0x8F,0x8E,0x99,0x96,0x8D,0x94,0x9B,0x95,0x87, - 0x84,0x89,0x8C,0x8D,0x86,0x83,0x87,0x80,0x75,0x72,0x78,0x77,0x6E,0x66,0x60,0x71, - 0x80,0x6E,0x5C,0x56,0x59,0x5F,0x56,0x55,0x5D,0x62,0x60,0x51,0x4D,0x55,0x5C,0x59, - 0x57,0x5F,0x64,0x61,0x5A,0x58,0x60,0x65,0x61,0x5D,0x5B,0x73,0x83,0x78,0x6A,0x67, - 0x6F,0x76,0x75,0x76,0x83,0x8E,0x8E,0x88,0x8C,0x9B,0xA4,0xA2,0x9F,0xA3,0xA3,0x9F, - 0x96,0x93,0x97,0x98,0x93,0x89,0x89,0x98,0xA2,0x92,0x82,0x7A,0x7E,0x83,0x79,0x76, - 0x84,0x89,0x7F,0x77,0x75,0x7B,0x84,0x85,0x82,0x87,0x8F,0x86,0x7E,0x84,0x8F,0x90, - 0x90,0x8A,0x87,0x9F,0xAF,0x9E,0x8E,0x8D,0x90,0x97,0x91,0x8F,0x9C,0xA1,0x9B,0x8F, - 0x8D,0x94,0x99,0x99,0x93,0x9A,0xA0,0x95,0x8A,0x89,0x94,0x95,0x90,0x89,0x81,0x94, - 0xA6,0x93,0x85,0x81,0x80,0x83,0x7C,0x75,0x7B,0x82,0x75,0x65,0x61,0x69,0x6E,0x68, - 0x61,0x64,0x67,0x62,0x56,0x54,0x5B,0x60,0x59,0x51,0x4C,0x5A,0x75,0x6B,0x5B,0x57, - 0x5B,0x64,0x60,0x5B,0x68,0x70,0x6B,0x60,0x5B,0x6A,0x75,0x6F,0x6D,0x74,0x7A,0x7B, - 0x75,0x78,0x83,0x8D,0x8C,0x89,0x8C,0x97,0xB2,0xB1,0x9F,0x98,0x99,0x9F,0x99,0x8F, - 0x98,0xA0,0x9B,0x8F,0x7F,0x88,0x91,0x88,0x82,0x80,0x83,0x82,0x79,0x73,0x77,0x82, - 0x80,0x79,0x74,0x74,0x8F,0x9C,0x8A,0x82,0x82,0x86,0x8A,0x84,0x8A,0x95,0x98,0x92, - 0x88,0x89,0x92,0x96,0x8F,0x8D,0x97,0x9C,0x91,0x8A,0x90,0x99,0x9C,0x95,0x8E,0x89, - 0x98,0xB0,0xA8,0x94,0x91,0x8F,0x94,0x91,0x89,0x92,0x9C,0x95,0x89,0x86,0x88,0x8A, - 0x85,0x81,0x83,0x84,0x7E,0x71,0x6F,0x72,0x6F,0x6C,0x66,0x5C,0x58,0x6A,0x7D,0x69, - 0x59,0x57,0x57,0x59,0x4F,0x50,0x5E,0x63,0x5B,0x52,0x4F,0x57,0x5F,0x5D,0x5E,0x66, - 0x69,0x65,0x5E,0x61,0x6A,0x6E,0x6C,0x66,0x64,0x6A,0x86,0x8D,0x7A,0x7A,0x7B,0x7F, - 0x84,0x80,0x87,0x9C,0xA2,0x98,0x90,0x94,0xA0,0x9E,0x97,0x9A,0x9E,0x9C,0x93,0x8A, - 0x8C,0x91,0x8D,0x86,0x82,0x78,0x7E,0x99,0x91,0x7A,0x71,0x71,0x79,0x76,0x6C,0x78, - 0x8A,0x85,0x7D,0x76,0x7C,0x87,0x7F,0x7E,0x89,0x8D,0x8D,0x88,0x82,0x85,0x8E,0x8F, - 0x89,0x8D,0x85,0x91,0xAD,0xA1,0x93,0x91,0x8F,0x95,0x92,0x83,0x92,0xA0,0x9C,0x96, - 0x8B,0x91,0x99,0x8E,0x8B,0x95,0x99,0x97,0x8E,0x89,0x8C,0x8B,0x88,0x84,0x86,0x79, - 0x7F,0x98,0x8D,0x79,0x73,0x6D,0x72,0x68,0x59,0x66,0x6D,0x6A,0x62,0x5A,0x58,0x5C, - 0x57,0x52,0x5A,0x5F,0x62,0x5E,0x5A,0x5D,0x60,0x60,0x5E,0x62,0x59,0x61,0x7E,0x76, - 0x68,0x6C,0x61,0x6D,0x6D,0x5E,0x6A,0x76,0x77,0x7A,0x7A,0x7A,0x84,0x86,0x88,0x8A, - 0x8D,0x95,0x99,0x97,0x97,0xA0,0x9D,0x99,0x9A,0x94,0x91,0xA5,0xA0,0x8F,0x97,0x89, - 0x87,0x86,0x7A,0x7B,0x7B,0x74,0x75,0x79,0x71,0x75,0x76,0x77,0x79,0x78,0x7A,0x7F, - 0x7E,0x7B,0x7E,0x80,0x80,0x80,0x81,0x80,0x8C,0x92,0x8D,0x91,0x91,0x90,0x94,0x96, - 0x90,0x93,0x93,0x90,0x94,0x96,0x90,0x93,0x97,0x96,0x9C,0x98,0x94,0x95,0x93,0x91, - 0x91,0x91,0x91,0x8F,0x88,0x87,0x90,0x8D,0x86,0x88,0x85,0x84,0x88,0x80,0x7A,0x79, - 0x75,0x73,0x71,0x6C,0x6C,0x6B,0x6A,0x70,0x6D,0x6B,0x6C,0x69,0x65,0x68,0x68,0x6A, - 0x6A,0x6B,0x64,0x65,0x76,0x72,0x6C,0x70,0x6E,0x6F,0x74,0x70,0x6C,0x6F,0x6E,0x74, - 0x77,0x72,0x73,0x76,0x7A,0x7E,0x7D,0x7C,0x7C,0x82,0x82,0x84,0x88,0x89,0x8C,0x87, - 0x7F,0x84,0x9B,0x90,0x86,0x91,0x82,0x8D,0x8F,0x82,0x84,0x7E,0x83,0x87,0x7F,0x7C, - 0x7D,0x7D,0x81,0x80,0x76,0x78,0x7D,0x7A,0x78,0x7A,0x7D,0x80,0x7C,0x7A,0x72,0x78, - 0x98,0x93,0x81,0x86,0x7B,0x87,0x8C,0x73,0x7A,0x84,0x8D,0x8F,0x81,0x80,0x8A,0x8D, - 0x89,0x86,0x86,0x8F,0x90,0x8F,0x89,0x8E,0x94,0x8D,0x89,0x88,0x84,0x81,0x9E,0xA7, - 0x97,0x95,0x8A,0x87,0x8F,0x7B,0x79,0x89,0x90,0x93,0x85,0x7B,0x85,0x8B,0x81,0x7D, - 0x7D,0x84,0x87,0x81,0x7D,0x7D,0x7B,0x7B,0x7D,0x79,0x7B,0x70,0x7D,0x9C,0x8A,0x7E, - 0x77,0x6D,0x78,0x74,0x69,0x73,0x7F,0x84,0x7F,0x73,0x70,0x7A,0x7B,0x74,0x75,0x7D, - 0x84,0x87,0x7D,0x7A,0x7E,0x7E,0x83,0x81,0x81,0x79,0x7B,0x9C,0x9F,0x8A,0x82,0x7A, - 0x7F,0x83,0x74,0x75,0x83,0x8D,0x8A,0x7D,0x74,0x77,0x7E,0x79,0x73,0x76,0x7D,0x81, - 0x7B,0x72,0x76,0x77,0x7A,0x79,0x7A,0x75,0x68,0x81,0x92,0x86,0x78,0x71,0x6F,0x7C, - 0x79,0x6D,0x76,0x83,0x87,0x83,0x75,0x70,0x7F,0x81,0x7E,0x7D,0x82,0x86,0x8A,0x83, - 0x7C,0x7E,0x80,0x86,0x85,0x83,0x77,0x7D,0x9B,0xA1,0x8E,0x80,0x78,0x78,0x85,0x80, - 0x78,0x7F,0x8A,0x8D,0x8A,0x7B,0x75,0x82,0x82,0x81,0x80,0x7F,0x84,0x87,0x82,0x7E, - 0x7F,0x7F,0x80,0x81,0x7C,0x72,0x7C,0x94,0x99,0x87,0x7A,0x71,0x74,0x80,0x7C,0x7A, - 0x7D,0x82,0x87,0x84,0x78,0x74,0x7A,0x81,0x83,0x80,0x7F,0x81,0x84,0x81,0x7F,0x7E, - 0x81,0x84,0x82,0x7E,0x77,0x82,0x97,0x9B,0x92,0x84,0x74,0x77,0x82,0x84,0x84,0x7F, - 0x7F,0x88,0x8B,0x84,0x7F,0x7C,0x7C,0x82,0x84,0x7F,0x7B,0x7D,0x80,0x7E,0x7C,0x7C, - 0x7D,0x7F,0x79,0x71,0x7E,0x8D,0x8A,0x87,0x7D,0x71,0x73,0x79,0x7B,0x7E,0x7B,0x79, - 0x7F,0x81,0x80,0x80,0x7E,0x7D,0x7F,0x81,0x81,0x7F,0x7E,0x80,0x7F,0x82,0x85,0x83, - 0x82,0x82,0x7E,0x87,0x8E,0x86,0x84,0x85,0x7D,0x7F,0x84,0x80,0x82,0x81,0x7B,0x7D, - 0x81,0x7F,0x7E,0x7F,0x7E,0x80,0x82,0x82,0x81,0x81,0x81,0x80,0x80,0x81,0x7C,0x7F, - 0x80,0x7C,0x81,0x81,0x7E,0x80,0x80,0x7E,0x82,0x83,0x80,0x83,0x7F,0x7B,0x7D,0x7C, - 0x7A,0x7C,0x7A,0x79,0x7C,0x7D,0x7E,0x7D,0x7E,0x7C,0x7F,0x83,0x80,0x81,0x82,0x82, - 0x84,0x87,0x82,0x81,0x84,0x7F,0x82,0x85,0x82,0x81,0x81,0x7E,0x7D,0x7E,0x7E,0x7E, - 0x7D,0x7C,0x7C,0x7D,0x7E,0x7E,0x7D,0x7F,0x7F,0x7E,0x80,0x7E,0x7E,0x7E,0x7F,0x82, - 0x81,0x7F,0x7F,0x7E,0x7C,0x80,0x80,0x7D,0x7F,0x7D,0x7B,0x7D,0x7C,0x7A,0x7A,0x79, - 0x7A,0x7C,0x7D,0x7E,0x7F,0x7F,0x81,0x83,0x84,0x83,0x83,0x84,0x81,0x83,0x87,0x83, - 0x80,0x84,0x80,0x82,0x86,0x82,0x81,0x81,0x7E,0x7D,0x80,0x7D,0x7D,0x7D,0x7A,0x7D, - 0x7F,0x7E,0x80,0x80,0x80,0x82,0x84,0x83,0x81,0x82,0x82,0x80,0x85,0x87,0x81,0x82, - 0x83,0x7E,0x82,0x85,0x80,0x81,0x7F,0x7C,0x7E,0x7E,0x7B,0x7B,0x7B,0x7A,0x7D,0x7E, - 0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x82,0x81,0x82,0x83,0x88,0x86,0x82,0x85,0x83, - 0x81,0x86,0x85,0x84,0x85,0x7F,0x7F,0x81,0x7F,0x7D,0x7E,0x7B,0x7C,0x7F,0x7F,0x80, - 0x80,0x81,0x81,0x84,0x83,0x82,0x82,0x82,0x80,0x83,0x86,0x82,0x83,0x82,0x7E,0x81, - 0x84,0x7E,0x7F,0x7F,0x7A,0x7D,0x7D,0x7A,0x7A,0x79,0x77,0x7A,0x7C,0x7E,0x7F,0x7F, - 0x81,0x83,0x83,0x84,0x84,0x83,0x82,0x84,0x88,0x85,0x82,0x85,0x82,0x81,0x86,0x84, - 0x81,0x82,0x7E,0x7D,0x80,0x7E,0x7D,0x7D,0x7A,0x7D,0x7F,0x7E,0x82,0x81,0x7F,0x82, - 0x85,0x85,0x84,0x84,0x83,0x82,0x87,0x89,0x83,0x84,0x85,0x80,0x85,0x86,0x80,0x83, - 0x81,0x7C,0x7F,0x7F,0x7C,0x7D,0x7A,0x7A,0x7E,0x7A,0x8D,0x84,0x80,0x88,0x66,0x79, - 0x86,0x6D,0x67,0x75,0x82,0x8B,0x8E,0x8D,0x8F,0x89,0x93,0xA8,0xA1,0x9D,0xAB,0x9B, - 0x8D,0x83,0x71,0x85,0x81,0x5C,0x62,0x70,0x63,0x5B,0x59,0x52,0x5B,0x63,0x63,0x5A, - 0x53,0x65,0x6C,0x6E,0x7C,0x72,0x88,0xAB,0x8D,0x93,0xA9,0x9C,0xAF,0x92,0x99,0xC7, - 0xA1,0xA5,0xA5,0x90,0xAB,0xA5,0x8E,0x8B,0x8A,0x93,0x8A,0x71,0x7E,0x70,0x6D,0x7A, - 0x68,0x87,0x8E,0x6A,0x7B,0x89,0x77,0x81,0x6B,0x44,0x5A,0x62,0x5F,0x6C,0x63,0x56, - 0x5A,0x64,0x69,0x5E,0x7B,0x81,0x84,0x9F,0x9A,0x8A,0x86,0x8C,0x85,0x88,0x92,0xA9, - 0xB3,0x9D,0x96,0xA0,0x99,0xA3,0x9B,0x8E,0x95,0x83,0x85,0x7E,0x74,0x7B,0x70,0x69, - 0x67,0x74,0x7C,0x66,0x52,0x4D,0x4E,0x58,0x4C,0x3B,0x40,0x52,0x49,0x43,0x51,0x5C, - 0x69,0x66,0x75,0x83,0x82,0x95,0xAB,0x9C,0x90,0x87,0x8B,0x98,0x8F,0x90,0x93,0x91, - 0xA2,0xB1,0xBB,0xC3,0xB3,0xAE,0xBC,0xAD,0xA5,0xA4,0x8B,0x95,0x99,0x8C,0x9C,0x96, - 0x88,0x80,0x74,0x76,0x81,0x7A,0x78,0x73,0x5F,0x67,0x68,0x5C,0x5B,0x5D,0x6A,0x65, - 0x5F,0x63,0x5E,0x69,0x70,0x79,0x77,0x71,0x8E,0x94,0x86,0x96,0x91,0x87,0x9B,0x94, - 0xA1,0xA7,0x96,0x98,0x96,0x96,0x98,0x9D,0x98,0x8B,0x96,0x9D,0x94,0x99,0x96,0x90, - 0x96,0x8D,0x8C,0x8A,0x7C,0x6E,0x62,0x5A,0x4E,0x60,0x58,0x4D,0x6B,0x6B,0x65,0x56, - 0x3F,0x3A,0x42,0x4A,0x4F,0x4B,0x42,0x45,0x4B,0x4B,0x4D,0x54,0x55,0x54,0x53,0x5B, - 0x69,0x6F,0x7D,0x80,0x93,0xB1,0xBD,0xB4,0x99,0x93,0x9F,0x9E,0x99,0x9F,0xA2,0xA8, - 0x9C,0x85,0x84,0x86,0x81,0x8F,0x9D,0x8F,0x8B,0x97,0xA2,0xA9,0xA7,0xAE,0xBC,0xB7, - 0xB5,0xB8,0xAB,0xA2,0x95,0x92,0xA7,0xB2,0xA9,0x9A,0x8A,0x8D,0x90,0x91,0x8B,0x80, - 0x7E,0x85,0x86,0x6E,0x66,0x56,0x5D,0x6F,0x6B,0x6E,0x67,0x64,0x6D,0x72,0x64,0x5D, - 0x5E,0x64,0x6A,0x74,0x72,0x55,0x5C,0x5D,0x58,0x64,0x5C,0x61,0x66,0x69,0x74,0x75, - 0x70,0x78,0x7F,0x7D,0x8A,0x87,0x88,0x92,0x9D,0x9E,0xA1,0xA7,0x9B,0x9D,0xA4,0xA3, - 0x9A,0x94,0x95,0x94,0x93,0x8B,0x91,0x8A,0x82,0x8B,0x83,0x7C,0x77,0x7B,0x75,0x6A, - 0x6C,0x6B,0x71,0x76,0x7D,0x8A,0x8F,0x85,0x73,0x70,0x6D,0x6A,0x67,0x62,0x6A,0x74, - 0x7A,0x6A,0x55,0x53,0x5A,0x65,0x61,0x5C,0x68,0x6E,0x72,0x70,0x72,0x7A,0x6E,0x7D, - 0x8D,0x93,0x9B,0x8D,0x89,0x8B,0x92,0x9A,0x9A,0x9E,0xA5,0xA2,0x9E,0x96,0x95,0x9F, - 0xA7,0xB7,0xB1,0xA4,0xAB,0xB5,0xAF,0xA5,0xA1,0x99,0xAD,0xC4,0xC4,0xC3,0xAC,0xA2, - 0xB1,0xBC,0xBB,0xAB,0xA5,0xAC,0xAA,0x9F,0x91,0x8E,0x8C,0x89,0x88,0x78,0x6E,0x60, - 0x52,0x4D,0x41,0x46,0x46,0x3F,0x53,0x62,0x53,0x44,0x3C,0x33,0x42,0x46,0x40,0x3D, - 0x3D,0x41,0x37,0x32,0x2E,0x32,0x3E,0x40,0x45,0x44,0x47,0x55,0x51,0x55,0x65,0x62, - 0x6A,0x80,0x94,0x9D,0x93,0x8D,0x92,0xA1,0xB1,0xB1,0xB1,0xB5,0xB1,0xAC,0xA4,0xA0, - 0xA7,0xA3,0xA5,0x98,0x8E,0x97,0x91,0x9A,0xA6,0x9A,0x93,0x9A,0xA9,0xBA,0xBA,0x9C, - 0x8E,0x9E,0xA4,0xB4,0xBB,0xA4,0xA0,0x9D,0x9C,0xAC,0xA8,0xA6,0xA1,0x8F,0x90,0x8B, - 0x7F,0x85,0x85,0x85,0x89,0x7F,0x83,0x98,0x91,0x7E,0x75,0x70,0x78,0x7D,0x7F,0x76, - 0x6E,0x6F,0x60,0x5B,0x77,0x80,0x78,0x67,0x55,0x67,0x67,0x5F,0x54,0x3C,0x43,0x46, - 0x52,0x68,0x66,0x62,0x51,0x47,0x5E,0x63,0x5B,0x5C,0x5B,0x69,0x62,0x57,0x62,0x6B, - 0x73,0x75,0x73,0x71,0x70,0x6D,0x6C,0x63,0x5C,0x61,0x5C,0x6B,0x84,0x7C,0x68,0x6E, - 0x77,0x86,0x95,0x99,0xA9,0xB7,0xB9,0xB2,0xAE,0xB1,0xB7,0xBF,0xB9,0xB0,0xA8,0x99, - 0x97,0xA0,0xA4,0xA2,0x97,0x99,0xA7,0xA1,0x99,0x86,0x77,0x8C,0x92,0x8F,0x8E,0x81, - 0x7F,0x7F,0x7A,0x80,0x81,0x8A,0x93,0x8A,0x8B,0x87,0x77,0x7D,0x79,0x75,0x71,0x65, - 0x7F,0x88,0x7E,0x76,0x6C,0x75,0x81,0x87,0x84,0x86,0x87,0x6E,0x63,0x73,0x80,0x89, - 0x83,0x74,0x75,0x78,0x7B,0x78,0x65,0x60,0x60,0x5B,0x6A,0x6D,0x5A,0x49,0x46,0x58, - 0x64,0x5F,0x65,0x6C,0x67,0x5A,0x4D,0x56,0x62,0x74,0x7C,0x6B,0x69,0x71,0x6F,0x79, - 0x7F,0x79,0x71,0x6E,0x88,0x90,0x71,0x5E,0x5C,0x67,0x7A,0x7F,0x7E,0x81,0x7D,0x81, - 0x88,0x93,0xA0,0xA1,0xA4,0xA5,0xB0,0xB1,0xA6,0xB3,0xB8,0xB1,0xAC,0xAE,0xC1,0xC0, - 0xA5,0x90,0x85,0x89,0x8D,0x86,0x8A,0x90,0x8A,0x81,0x80,0x8D,0x98,0x9A,0x91,0x89, - 0x85,0x84,0x86,0x88,0x7D,0x76,0x7D,0x7F,0x8E,0x8F,0x7F,0x7F,0x7F,0x86,0x7F,0x77, - 0x7A,0x7C,0x7E,0x6C,0x6A,0x79,0x7D,0x83,0x84,0x79,0x7C,0x7E,0x81,0x87,0x80,0x76, - 0x65,0x72,0x86,0x7C,0x68,0x56,0x59,0x69,0x6B,0x63,0x68,0x64,0x58,0x59,0x5E,0x61, - 0x5C,0x5E,0x5A,0x5F,0x6A,0x67,0x6B,0x6A,0x70,0x71,0x60,0x6B,0x77,0x70,0x67,0x60, - 0x6D,0x73,0x6E,0x77,0x83,0x83,0x7A,0x6F,0x74,0x87,0x8A,0x81,0x7D,0x7F,0x87,0x93, - 0x94,0x92,0x95,0x95,0xA7,0xC1,0xBF,0xAB,0xA6,0xA9,0xB5,0xB3,0xA3,0xA9,0xAC,0xA3, - 0x96,0x96,0xA0,0xA2,0xA0,0x9A,0xA0,0xA1,0x9E,0x9E,0x97,0x96,0x9F,0x98,0x9D,0xB2, - 0xA7,0x95,0x8A,0x8B,0x9A,0x9E,0x9D,0x9C,0x9B,0x99,0x93,0x8F,0x92,0x94,0x8A,0x86, - 0x88,0x89,0x83,0x7C,0x88,0x82,0x74,0x80,0x92,0x92,0x7F,0x6E,0x6C,0x6F,0x73,0x69, - 0x69,0x73,0x6A,0x5F,0x58,0x64,0x6D,0x6A,0x65,0x58,0x5F,0x65,0x5A,0x59,0x55,0x52, - 0x55,0x5E,0x6D,0x68,0x51,0x47,0x51,0x60,0x63,0x5A,0x5B,0x62,0x46,0x3C,0x50,0x61, - 0x57,0x53,0x72,0x5A,0x52,0x67,0x65,0x6B,0x74,0x79,0x6F,0x7E,0x90,0x86,0x7D,0x73, - 0x8D,0x93,0x84,0x8B,0x95,0xA0,0x9C,0x97,0xAB,0xBE,0xA9,0x9F,0xA2,0xA5,0xA5,0xA8, - 0xAE,0x9D,0xA0,0xA3,0xAB,0xC6,0xBF,0xAB,0x9E,0x9F,0xB2,0xB2,0xAA,0xA9,0xA1,0x9A, - 0x97,0x96,0x9F,0xAA,0x9F,0x9F,0xA4,0xA0,0xA3,0x9E,0xA0,0xA3,0x98,0x99,0xAC,0xAD, - 0x9E,0x92,0x97,0xA3,0x97,0x94,0xA5,0xA2,0x98,0x8F,0x88,0x91,0x94,0x8C,0x87,0x7F, - 0x87,0x81,0x74,0x78,0x6F,0x6E,0x6F,0x7A,0x80,0x70,0x61,0x55,0x5A,0x62,0x5C,0x5A, - 0x5B,0x5A,0x50,0x46,0x4A,0x50,0x52,0x51,0x45,0x44,0x49,0x49,0x4C,0x47,0x3F,0x33, - 0x47,0x64,0x5B,0x51,0x42,0x3E,0x52,0x4E,0x4D,0x5A,0x55,0x4B,0x46,0x4D,0x5D,0x63, - 0x5E,0x62,0x6B,0x74,0x74,0x74,0x79,0x7F,0x81,0x85,0x99,0x97,0x85,0x81,0x88,0x91, - 0x8F,0x87,0x8D,0x99,0x98,0x8A,0x89,0x94,0x9B,0x9E,0x9B,0x96,0x97,0x96,0x93,0x96, - 0x96,0x8C,0x8C,0xA4,0xAD,0x9F,0x94,0x98,0xA7,0xA8,0xA5,0xAE,0xB3,0xAE,0xA0,0xA0, - 0xAA,0xB1,0xAF,0xA2,0x9D,0xA3,0xA7,0xA7,0xA2,0x9D,0x9E,0x99,0xA4,0xAF,0x9F,0x8D, - 0x87,0x8E,0x95,0x8F,0x89,0x8B,0x8C,0x81,0x7A,0x83,0x87,0x86,0x7C,0x77,0x78,0x75, - 0x70,0x6D,0x6C,0x6D,0x61,0x67,0x7D,0x77,0x61,0x53,0x5E,0x69,0x62,0x5E,0x62,0x5E, - 0x57,0x4F,0x54,0x61,0x63,0x62,0x5E,0x5C,0x62,0x60,0x5D,0x5F,0x63,0x5F,0x5F,0x74, - 0x78,0x6B,0x69,0x73,0x81,0x87,0x85,0x8E,0x92,0x8C,0x81,0x7F,0x8F,0x96,0x91,0x87, - 0x81,0x83,0x85,0x82,0x7F,0x7D,0x72,0x76,0x91,0x90,0x79,0x6E,0x71,0x7E,0x7E,0x78, - 0x7D,0x7C,0x75,0x6D,0x76,0x84,0x83,0x79,0x78,0x80,0x89,0x84,0x82,0x88,0x8C,0x8F, - 0x8E,0x9E,0x9E,0x8C,0x8C,0x91,0x95,0x96,0x91,0x96,0x97,0x90,0x81,0x80,0x90,0x8F, - 0x88,0x84,0x81,0x82,0x80,0x7E,0x7F,0x7C,0x6D,0x73,0x8A,0x85,0x6D,0x65,0x6C,0x73, - 0x72,0x6F,0x77,0x72,0x65,0x5D,0x64,0x73,0x70,0x67,0x65,0x69,0x6D,0x67,0x69,0x6D, - 0x6B,0x63,0x65,0x7A,0x7A,0x65,0x60,0x6A,0x73,0x75,0x75,0x7F,0x80,0x75,0x6F,0x77, - 0x86,0x8E,0x8D,0x8E,0x91,0x92,0x96,0x98,0x9C,0x97,0x8A,0xA2,0xB4,0xA3,0x8D,0x88, - 0x95,0x99,0x91,0x90,0x96,0x8F,0x81,0x7E,0x88,0x90,0x8E,0x85,0x85,0x8C,0x8A,0x84, - 0x80,0x83,0x87,0x83,0x92,0x9E,0x92,0x83,0x85,0x91,0x95,0x91,0x91,0x97,0x95,0x8E, - 0x88,0x8F,0x99,0x97,0x97,0x96,0x94,0x92,0x8C,0x8D,0x90,0x82,0x82,0x99,0x9B,0x86, - 0x78,0x7C,0x86,0x87,0x7E,0x81,0x87,0x7B,0x6E,0x6E,0x7C,0x82,0x7D,0x78,0x75,0x77, - 0x74,0x71,0x70,0x72,0x6E,0x6E,0x80,0x7D,0x6B,0x62,0x69,0x74,0x75,0x6E,0x70,0x77, - 0x72,0x66,0x66,0x74,0x76,0x75,0x77,0x76,0x76,0x79,0x79,0x7D,0x80,0x73,0x86,0xA1, - 0x94,0x80,0x7C,0x8A,0x93,0x89,0x88,0x95,0x90,0x81,0x79,0x83,0x90,0x8C,0x85,0x86, - 0x87,0x85,0x7E,0x7A,0x7B,0x7D,0x7B,0x84,0x91,0x87,0x78,0x73,0x7C,0x83,0x81,0x7F, - 0x86,0x85,0x7B,0x78,0x83,0x8C,0x8A,0x85,0x87,0x8A,0x85,0x83,0x83,0x85,0x7E,0x7C, - 0x97,0x9C,0x85,0x7B,0x81,0x89,0x89,0x83,0x8E,0x93,0x84,0x7B,0x7B,0x86,0x8D,0x86, - 0x80,0x83,0x86,0x80,0x78,0x79,0x7E,0x79,0x78,0x8D,0x90,0x7D,0x6E,0x71,0x7E,0x7F, - 0x79,0x7E,0x83,0x7A,0x6F,0x6F,0x7C,0x80,0x7B,0x7A,0x7C,0x79,0x76,0x77,0x77,0x77, - 0x6E,0x7C,0x8F,0x81,0x71,0x72,0x7B,0x7F,0x7A,0x7C,0x8B,0x86,0x77,0x71,0x7D,0x8B, - 0x8A,0x86,0x86,0x89,0x89,0x83,0x7F,0x86,0x8A,0x81,0x8B,0x9B,0x90,0x7B,0x75,0x7F, - 0x86,0x84,0x80,0x88,0x85,0x76,0x70,0x79,0x85,0x81,0x80,0x81,0x7C,0x79,0x76,0x77, - 0x7D,0x76,0x76,0x8F,0x8F,0x7B,0x75,0x79,0x7F,0x7E,0x78,0x83,0x8B,0x7C,0x71,0x71, - 0x80,0x87,0x81,0x81,0x83,0x81,0x7D,0x79,0x7C,0x81,0x7B,0x7C,0x90,0x91,0x7E,0x73, - 0x7B,0x82,0x82,0x7C,0x82,0x89,0x7D,0x71,0x73,0x7F,0x80,0x7E,0x80,0x80,0x7D,0x79, - 0x78,0x7C,0x77,0x70,0x85,0x91,0x7F,0x70,0x74,0x7C,0x80,0x7C,0x7E,0x8B,0x82,0x72, - 0x6F,0x7A,0x81,0x7B,0x7A,0x7F,0x80,0x7A,0x76,0x77,0x7B,0x74,0x76,0x91,0x92,0x7F, - 0x75,0x7E,0x89,0x8B,0x87,0x8D,0x94,0x89,0x7D,0x81,0x8C,0x8B,0x87,0x85,0x87,0x86, - 0x81,0x7D,0x7D,0x78,0x73,0x89,0x92,0x7E,0x6E,0x72,0x7B,0x7C,0x77,0x7B,0x87,0x7D, - 0x71,0x70,0x7C,0x82,0x7D,0x7E,0x81,0x84,0x7F,0x78,0x7A,0x81,0x79,0x7F,0x95,0x8F, - 0x7C,0x76,0x7D,0x82,0x81,0x80,0x8A,0x89,0x79,0x73,0x79,0x81,0x83,0x80,0x81,0x84, - 0x81,0x7E,0x7B,0x7D,0x76,0x7C,0x95,0x92,0x7D,0x75,0x7C,0x80,0x7E,0x7C,0x85,0x88, - 0x79,0x71,0x76,0x80,0x81,0x7E,0x83,0x89,0x83,0x7E,0x7D,0x80,0x7C,0x75,0x8D,0x98, - 0x85,0x76,0x79,0x7E,0x7F,0x7C,0x80,0x8B,0x81,0x74,0x72,0x79,0x80,0x7F,0x7D,0x81, - 0x80,0x7D,0x7E,0x80,0x7D,0x76,0x90,0x9D,0x89,0x7C,0x80,0x85,0x84,0x81,0x87,0x92, - 0x87,0x7A,0x79,0x80,0x83,0x7F,0x7F,0x82,0x80,0x7A,0x77,0x77,0x77,0x6F,0x7D,0x95, - 0x89,0x76,0x76,0x7B,0x7F,0x7B,0x7D,0x8B,0x86,0x78,0x75,0x7C,0x83,0x80,0x80,0x83, - 0x81,0x7C,0x79,0x79,0x7D,0x73,0x7E,0x97,0x8E,0x7D,0x7C,0x82,0x84,0x83,0x84,0x8F, - 0x8C,0x7D,0x78,0x7F,0x87,0x85,0x84,0x88,0x86,0x81,0x7F,0x7C,0x7D,0x76,0x7A,0x94, - 0x90,0x7B,0x76,0x7C,0x7D,0x7D,0x7C,0x89,0x8C,0x7D,0x75,0x7A,0x84,0x82,0x80,0x87, - 0x88,0x81,0x7F,0x7E,0x82,0x7B,0x78,0x90,0x92,0x7D,0x76,0x7B,0x7C,0x7B,0x7B,0x84, - 0x8C,0x82,0x77,0x7A,0x83,0x84,0x82,0x85,0x89,0x80,0x79,0x7A,0x7E,0x7E,0x7C,0x93, - 0x9D,0x89,0x7D,0x80,0x7C,0x78,0x79,0x83,0x92,0x89,0x7D,0x7F,0x85,0x84,0x82,0x85, - 0x88,0x81,0x7A,0x76,0x74,0x71,0x69,0x7C,0x92,0x85,0x78,0x80,0x83,0x82,0x80,0x82, - 0x8E,0x86,0x76,0x75,0x7C,0x7D,0x7C,0x83,0x8B,0x89,0x83,0x81,0x7F,0x7F,0x77,0x84, - 0x9D,0x93,0x7E,0x80,0x86,0x81,0x7A,0x7D,0x8D,0x87,0x76,0x75,0x78,0x7B,0x7B,0x7E, - 0x87,0x86,0x7E,0x7D,0x7B,0x7B,0x73,0x78,0x91,0x8F,0x7B,0x7A,0x7E,0x7C,0x7D,0x81, - 0x90,0x8D,0x7C,0x7D,0x87,0x84,0x7F,0x7F,0x82,0x83,0x81,0x80,0x7A,0x78,0x71,0x79, - 0x95,0x8F,0x75,0x75,0x82,0x7F,0x76,0x79,0x8B,0x8D,0x83,0x7F,0x82,0x83,0x7D,0x7E, - 0x84,0x81,0x7B,0x7D,0x7F,0x92,0x85,0x68,0x71,0x7B,0x7E,0x8C,0x91,0x84,0x7A,0x75, - 0x82,0x84,0x7A,0x81,0x8B,0x92,0x94,0x8F,0x92,0x96,0x8E,0x84,0x81,0x81,0x6F,0x6D, - 0x7F,0x72,0x5E,0x63,0x60,0x5D,0x64,0x6B,0x7D,0x88,0x86,0x83,0x84,0x83,0x87,0x8E, - 0x92,0x8D,0x83,0x7B,0x7C,0x83,0x76,0x81,0x99,0xA5,0x9A,0x8D,0x97,0x8A,0x73,0x71, - 0x7D,0x70,0x7B,0x95,0x8F,0x89,0x80,0x71,0x7C,0x88,0x6D,0x5A,0x57,0x5E,0x63,0x6B, - 0x7F,0x7C,0x75,0x77,0x72,0x7D,0x87,0x92,0xAD,0xA4,0x94,0xB3,0xAA,0x7B,0x81,0x7E, - 0x67,0x66,0x76,0x7F,0x8D,0x9E,0x9E,0x9F,0xA7,0x9C,0x88,0x7A,0x58,0x3D,0x53,0x79, - 0x79,0x7C,0x8E,0x7F,0x6C,0x75,0x71,0x73,0x8E,0x92,0x9A,0x9A,0x8F,0x82,0x7E,0x92, - 0x86,0x75,0x79,0x71,0x73,0x5E,0x4E,0x66,0x72,0x73,0x80,0x88,0x75,0x5E,0x64,0x75, - 0x7D,0x8B,0x88,0x81,0x83,0x7A,0x98,0xB5,0xA2,0x99,0x96,0xA9,0xA8,0x88,0x8E,0x9A, - 0x91,0x88,0x80,0x77,0x76,0x61,0x58,0x61,0x52,0x61,0x76,0x78,0x79,0x86,0xA1,0x98, - 0x7D,0x90,0x95,0x7A,0x75,0x79,0x73,0x71,0x63,0x68,0x82,0x88,0x94,0x94,0x91,0x8D, - 0x85,0x7E,0x81,0x82,0x70,0x81,0xA4,0x97,0x86,0x8C,0x85,0x74,0x67,0x70,0x7F,0x77, - 0x64,0x69,0x7B,0x78,0x6F,0x80,0x97,0x8E,0x72,0x66,0x60,0x58,0x5E,0x73,0x8D,0x8E, - 0x90,0xA1,0x9A,0x8F,0x9C,0x9E,0xAB,0xA6,0x8E,0x95,0x78,0x6B,0x6B,0x59,0x5D,0x65, - 0x73,0x76,0x61,0x5D,0x7C,0x94,0x7C,0x7C,0x89,0x83,0x7D,0x7A,0x97,0xA0,0x94,0x8D, - 0x8B,0x8C,0x84,0x81,0x93,0xAD,0x99,0x85,0x8F,0x8A,0x73,0x6D,0x7B,0x82,0x89,0x79, - 0x6E,0x6A,0x5C,0x58,0x70,0x7B,0x6C,0x76,0x80,0x82,0x8E,0x8A,0x7F,0x8C,0x84,0x6F, - 0x7D,0x75,0x70,0x8A,0x7E,0x75,0x89,0x8D,0x83,0x83,0x7C,0x82,0x9B,0x9D,0x81,0x87, - 0x89,0x6E,0x80,0x85,0x76,0x78,0x73,0x73,0x7B,0x6C,0x71,0x89,0x76,0x6E,0x75,0x77, - 0x73,0x67,0x89,0xAD,0x92,0x8A,0x9A,0x97,0x91,0x84,0x7E,0x84,0x92,0x98,0x83,0x8A, - 0x8B,0x82,0x98,0x88,0x7B,0x7D,0x6B,0x68,0x71,0x77,0x77,0x6E,0x64,0x6D,0x6D,0x65, - 0x69,0x78,0x7B,0x78,0x90,0x86,0x7B,0x8D,0x98,0xAB,0xA5,0x97,0xA3,0x90,0x7D,0x8D, - 0x91,0x9E,0x97,0x89,0x96,0x92,0x81,0x82,0x84,0x84,0x73,0x63,0x6E,0x64,0x55,0x67, - 0x8B,0x84,0x67,0x6A,0x6C,0x66,0x6C,0x77,0x81,0x87,0x7C,0x7A,0x7A,0x84,0x88,0x8B, - 0x8A,0x83,0x88,0x7E,0x8A,0x83,0x7C,0x9F,0x96,0x80,0x90,0x95,0x85,0x7A,0x73,0x75, - 0x75,0x6B,0x6E,0x78,0x81,0x75,0x6D,0x84,0x8B,0x85,0x7A,0x71,0x73,0x7A,0x95,0xA4, - 0x9D,0xA6,0xAA,0x91,0x84,0x7D,0x7F,0x80,0x72,0x7C,0x7C,0x78,0x69,0x66,0x81,0x76, - 0x6E,0x86,0x85,0x77,0x7B,0x8A,0x8C,0x80,0x88,0x8E,0x7C,0x62,0x63,0x77,0x6D,0x63, - 0x81,0x8A,0x88,0x8F,0x86,0x9A,0x9A,0x89,0x82,0x7B,0x7E,0x6E,0x7E,0x87,0x8F,0x97, - 0x93,0xA9,0xA2,0x97,0x9C,0x91,0x82,0x80,0x7A,0x73,0x6A,0x64,0x64,0x5D,0x63,0x5A, - 0x5F,0x66,0x59,0x75,0x80,0x76,0x80,0x86,0x89,0x8C,0x8F,0x99,0x9B,0x8B,0x87,0x95, - 0x93,0x83,0x85,0x88,0x7B,0x71,0x68,0x6A,0x68,0x5C,0x79,0x82,0x7F,0x88,0x84,0x87, - 0x82,0x77,0x84,0x85,0x7F,0x89,0x82,0x8D,0x81,0x78,0x83,0x83,0x88,0x88,0x92,0x88, - 0x81,0x95,0x90,0x7E,0x85,0x87,0x84,0x6C,0x5E,0x72,0x77,0x75,0x74,0x8C,0x85,0x71, - 0x76,0x76,0x85,0x79,0x7C,0x90,0x8A,0x8D,0x8C,0x82,0x81,0x81,0x76,0x73,0x78,0x73, - 0x7A,0x8D,0x8D,0x87,0xA0,0x92,0x81,0x88,0x7E,0x80,0x79,0x71,0x79,0x8F,0x95,0x8F, - 0x9F,0x98,0x8C,0x89,0x7D,0x87,0x87,0x6F,0x61,0x5E,0x61,0x5D,0x64,0x70,0x6E,0x75, - 0x76,0x7A,0x7C,0x72,0x87,0x8E,0x87,0x8E,0x94,0xA0,0x99,0x90,0x92,0x93,0x86,0x7A, - 0x80,0x79,0x71,0x6D,0x61,0x63,0x6C,0x67,0x68,0x73,0x7A,0x75,0x7B,0x85,0x95,0x9F, - 0x88,0x8E,0x93,0x8F,0x86,0x73,0x7D,0x7F,0x7E,0x7E,0x8E,0x96,0x8A,0x8A,0x85,0x89, - 0x7F,0x7C,0x86,0x81,0x75,0x71,0x74,0x72,0x7A,0x72,0x74,0x77,0x6C,0x85,0x86,0x88, - 0x8F,0x9E,0x95,0x78,0x83,0x7C,0x83,0x7E,0x74,0x7E,0x6B,0x63,0x6D,0x7B,0x83,0x7E, - 0x86,0x91,0x83,0x88,0x8E,0x7D,0x77,0x74,0x72,0x79,0x7F,0x80,0x91,0xA4,0xA3,0x9A, - 0xA7,0xB0,0x95,0x84,0x8C,0x88,0x78,0x69,0x6B,0x73,0x67,0x69,0x68,0x68,0x69,0x65, - 0x6F,0x77,0x74,0x71,0x72,0x7C,0x7A,0x7D,0x92,0x8D,0x86,0x8E,0x8A,0x8D,0x8F,0x86, - 0x80,0x74,0x6B,0x6A,0x7F,0x79,0x74,0x87,0x84,0x86,0x7E,0x89,0x87,0x7A,0x83,0x86, - 0x84,0x80,0x8D,0x8F,0x96,0x8F,0x86,0x90,0x83,0x63,0x67,0x8D,0x94,0x82,0x74,0x8D, - 0x79,0x53,0x69,0x79,0x81,0x7A,0x94,0x98,0x79,0x85,0x87,0x89,0x82,0x85,0x95,0x8F, - 0x80,0x7B,0x8E,0x8D,0x88,0x90,0x8D,0x6D,0x5D,0x5C,0x5C,0x64,0x5F,0x77,0x8A,0x80, - 0x83,0x81,0x8D,0x93,0x85,0x8D,0x94,0x92,0x8C,0x97,0xA6,0x94,0x91,0x98,0x8C,0x93, - 0x9C,0x8C,0x89,0x82,0x72,0x6F,0x71,0x61,0x67,0x70,0x68,0x6F,0x6F,0x6C,0x76,0x7B, - 0x71,0x79,0x77,0x6F,0x7E,0x7F,0x81,0x89,0x87,0x82,0x85,0x8A,0x86,0x88,0x8B,0x7C, - 0x7C,0x80,0x7E,0x82,0x87,0x82,0x73,0x78,0x88,0x8D,0x82,0x8A,0x91,0x81,0x80,0x71, - 0x72,0x8D,0x78,0x77,0x8A,0x79,0x7D,0x7E,0x85,0x92,0x8C,0x90,0x82,0x79,0x7C,0x7D, - 0x8C,0x84,0x7E,0x84,0x7B,0x7D,0x7E,0x83,0x8A,0x77,0x6E,0x7F,0x84,0x81,0x84,0x8D, - 0x97,0x8F,0x88,0x95,0x8C,0x7A,0x6D,0x72,0x66,0x50,0x6B,0x73,0x78,0x83,0x7B,0x87, - 0x8F,0x84,0x84,0x7C,0x7D,0x81,0x78,0x92,0x99,0x89,0xA4,0xA5,0x9B,0x9C,0x8E,0x9A, - 0x98,0x88,0x82,0x79,0x71,0x66,0x65,0x66,0x64,0x67,0x70,0x70,0x6D,0x6E,0x6D,0x73, - 0x72,0x72,0x7C,0x88,0x83,0x83,0x99,0x92,0x86,0x87,0x83,0x7F,0x7D,0x74,0x74,0x76, - 0x6E,0x78,0x7E,0x7F,0x85,0x88,0x94,0x94,0x8E,0x97,0x96,0x89,0x82,0x78,0x71,0x6D, - 0x72,0x7B,0x74,0x76,0x85,0x8A,0x7F,0x83,0x91,0x92,0x89,0x7D,0x78,0x77,0x7F,0x83, - 0x82,0x89,0x84,0x73,0x7D,0x88,0x77,0x7B,0x7F,0x7D,0x7F,0x74,0x75,0x7D,0x89,0x8E, - 0x98,0x99,0x86,0x84,0x80,0x7B,0x68,0x60,0x73,0x6F,0x71,0x75,0x7D,0x8D,0x86,0x8C, - 0x99,0x8E,0x7E,0x7F,0x7B,0x75,0x75,0x7B,0x9A,0x96,0x95,0x9F,0x99,0x99,0x90,0x94, - 0x92,0x88,0x77,0x72,0x76,0x64,0x60,0x6A,0x6B,0x61,0x68,0x6F,0x73,0x75,0x74,0x7B, - 0x7E,0x7F,0x83,0x91,0x90,0x84,0x85,0x8D,0x8F,0x7F,0x7C,0x89,0x80,0x6D,0x73,0x78, - 0x6D,0x6C,0x7A,0x84,0x7B,0x7C,0x8F,0x91,0x86,0x86,0x87,0x8F,0x87,0x79,0x8C,0x8D, - 0x74,0x6C,0x82,0x8A,0x78,0x78,0x8C,0x8A,0x7C,0x79,0x7E,0x80,0x77,0x7C,0x8A,0x78, - 0x6B,0x82,0x8C,0x84,0x84,0x8B,0x87,0x79,0x71,0x75,0x7B,0x7A,0x7F,0x8E,0x93,0x92, - 0x93,0x91,0x91,0x7E,0x68,0x70,0x6C,0x5F,0x6C,0x7E,0x7D,0x7B,0x89,0x95,0x88,0x7B, - 0x80,0x87,0x79,0x6E,0x85,0x92,0x81,0x81,0x90,0x95,0x8D,0x8C,0x9A,0xA3,0x9B,0x8D, - 0x84,0x86,0x76,0x61,0x76,0x7B,0x6D,0x67,0x80,0x85,0x65,0x75,0x7C,0x6A,0x6E,0x71, - 0x79,0x83,0x6F,0x7C,0x8D,0x78,0x7A,0x79,0x84,0x87,0x78,0x87,0x81,0x7A,0x77,0x70, - 0x86,0x7B,0x77,0x90,0x8C,0x86,0x8B,0x90,0x8D,0x86,0x7A,0x78,0x76,0x6E,0x7E,0x8C, - 0x85,0x7E,0x89,0x92,0x89,0x7E,0x88,0x8E,0x85,0x7B,0x80,0x8C,0x81,0x7B,0x80,0x89, - 0x80,0x71,0x83,0x7F,0x6F,0x69,0x6B,0x73,0x6D,0x6E,0x80,0x8F,0x95,0x92,0x9B,0x9D, - 0x8B,0x86,0x85,0x79,0x70,0x65,0x67,0x72,0x77,0x83,0x87,0x91,0x93,0x8F,0x92,0x82, - 0x79,0x76,0x70,0x74,0x7B,0x7C,0x8D,0x89,0x8D,0xA3,0x98,0x92,0x9B,0x9F,0x95,0x7C, - 0x7E,0x8B,0x6E,0x5D,0x65,0x70,0x6D,0x60,0x72,0x7B,0x7F,0x72,0x6D,0x87,0x7C,0x6C, - 0x75,0x85,0x83,0x76,0x82,0x8F,0x89,0x84,0x89,0x85,0x7D,0x76,0x7D,0x82,0x70,0x83, - 0x92,0x7D,0x82,0x87,0x83,0x92,0x84,0x7A,0x8C,0x7E,0x73,0x78,0x7A,0x7A,0x6D,0x72, - 0x83,0x80,0x7C,0x89,0x90,0x8C,0x88,0x86,0x8D,0x84,0x7C,0x8B,0x8B,0x82,0x83,0x8E, - 0x93,0x7F,0x74,0x73,0x6C,0x68,0x6B,0x78,0x81,0x86,0x86,0x90,0x96,0x8E,0x94,0x95, - 0x8B,0x7E,0x78,0x73,0x69,0x6A,0x74,0x78,0x77,0x7D,0x88,0x8A,0x7F,0x7F,0x88,0x80, - 0x78,0x73,0x76,0x7F,0x7C,0x85,0x8F,0x98,0xA4,0x97,0x9E,0xAA,0x9A,0x8E,0x85,0x80, - 0x74,0x70,0x6D,0x6C,0x71,0x71,0x6C,0x6A,0x6A,0x70,0x73,0x69,0x77,0x85,0x82,0x7D, - 0x81,0x8A,0x83,0x82,0x8C,0x8A,0x8C,0x8A,0x82,0x88,0x84,0x6F,0x6F,0x78,0x77,0x73, - 0x7A,0x88,0x83,0x85,0x8F,0x88,0x85,0x7C,0x74,0x7C,0x7B,0x7A,0x7D,0x84,0x7E,0x78, - 0x7E,0x7D,0x89,0x8D,0x89,0x90,0x92,0x88,0x80,0x85,0x86,0x83,0x84,0x85,0x84,0x81, - 0x78,0x6D,0x6B,0x70,0x6C,0x6A,0x79,0x7C,0x85,0x89,0x8A,0x9B,0xA0,0x99,0x91,0x91, - 0x82,0x6E,0x71,0x73,0x73,0x78,0x76,0x82,0x7E,0x7B,0x85,0x82,0x82,0x78,0x74,0x78, - 0x77,0x6F,0x78,0x86,0x84,0x8B,0x8F,0x9C,0x9D,0x96,0x99,0x9C,0x94,0x87,0x86,0x7F, - 0x77,0x77,0x78,0x75,0x77,0x77,0x76,0x7A,0x76,0x6A,0x6D,0x70,0x6B,0x6B,0x72,0x79, - 0x76,0x77,0x87,0x86,0x81,0x8D,0x90,0x87,0x7A,0x82,0x88,0x7C,0x71,0x76,0x7E,0x75, - 0x7D,0x88,0x8F,0x93,0x82,0x89,0x8B,0x7D,0x73,0x7A,0x8F,0x82,0x82,0x92,0x84,0x81, - 0x7F,0x84,0x89,0x7B,0x7E,0x82,0x83,0x83,0x7C,0x7F,0x8C,0x7F,0x7C,0x88,0x76,0x75, - 0x77,0x73,0x77,0x73,0x72,0x73,0x79,0x7D,0x7F,0x8A,0x94,0x90,0x90,0x93,0x83,0x80, - 0x82,0x71,0x6E,0x73,0x7B,0x81,0x7C,0x82,0x87,0x8D,0x87,0x80,0x8B,0x7F,0x72,0x7C, - 0x81,0x7E,0x85,0x82,0x80,0x87,0x86,0x84,0x88,0x8E,0x8B,0x87,0x86,0x81,0x7A,0x80, - 0x83,0x79,0x7B,0x8A,0x83,0x79,0x81,0x81,0x7B,0x76,0x74,0x76,0x76,0x73,0x79,0x80, - 0x80,0x83,0x84,0x86,0x88,0x80,0x7C,0x7E,0x70,0x72,0x7E,0x73,0x72,0x71,0x7B,0x8B, - 0x7B,0x7B,0x91,0x8A,0x7D,0x7E,0x89,0x8C,0x81,0x7D,0x84,0x84,0x7B,0x77,0x88,0x8D, - 0x87,0x8B,0x88,0x8C,0x82,0x76,0x83,0x85,0x82,0x83,0x82,0x81,0x81,0x81,0x7B,0x77, - 0x76,0x72,0x78,0x79,0x77,0x82,0x89,0x72,0x70,0x8A,0x83,0x6F,0x76,0x87,0x8D,0x91, - 0x8F,0x8C,0x88,0x80,0x89,0x97,0x93,0x91,0x91,0x91,0x8B,0x85,0x7E,0x77,0x70,0x64, - 0x65,0x69,0x67,0x61,0x68,0x79,0x7C,0x7B,0x75,0x77,0x77,0x6D,0x6E,0x76,0x7A,0x7E, - 0x82,0x8B,0x93,0x87,0x8D,0x9A,0x8E,0xA0,0xB4,0xAE,0x9D,0x9F,0xAC,0x90,0x8D,0x93, - 0x85,0x89,0x89,0x8B,0x86,0x7F,0x79,0x78,0x79,0x69,0x5E,0x62,0x5F,0x5D,0x6A,0x68, - 0x69,0x5A,0x49,0x50,0x51,0x4D,0x4C,0x59,0x5D,0x61,0x67,0x76,0x81,0x73,0x7A,0x8A, - 0x8E,0x92,0x94,0x94,0x99,0x95,0x8F,0xA2,0xAE,0xB5,0xBC,0xC2,0xC9,0xC7,0xC9,0xC5, - 0xC0,0xBA,0xA7,0x95,0x8D,0x92,0x93,0x90,0x98,0x93,0x88,0x80,0x74,0x70,0x69,0x60, - 0x57,0x57,0x5B,0x4A,0x43,0x4B,0x47,0x43,0x42,0x4A,0x52,0x4F,0x51,0x55,0x5F,0x64, - 0x69,0x78,0x80,0x7F,0x80,0x8D,0x8F,0x8E,0x90,0x8A,0x92,0x90,0x8E,0x96,0x86,0x7F, - 0x86,0x8C,0x8E,0x8A,0x84,0x76,0x75,0x79,0x75,0x70,0x69,0x69,0x6A,0x73,0x75,0x71, - 0x72,0x71,0x74,0x73,0x78,0x7B,0x83,0x8C,0x8C,0x89,0x7F,0x7D,0x87,0x89,0x8A,0x8B, - 0x8C,0x8C,0x86,0x83,0x86,0x85,0x82,0x82,0x8A,0x8E,0x86,0x89,0x8F,0x91,0x96,0x95, - 0xA0,0xA2,0x9F,0xAA,0xA9,0xAB,0xB3,0xB3,0xB6,0xBA,0xB5,0xAF,0xAF,0xAA,0xA2,0x9D, - 0x9D,0x9A,0x92,0x90,0x8A,0x82,0x7D,0x77,0x73,0x6E,0x65,0x61,0x64,0x5E,0x5A,0x5B, - 0x58,0x54,0x52,0x51,0x4F,0x49,0x46,0x4D,0x51,0x4F,0x55,0x5B,0x62,0x69,0x6C,0x79, - 0x7E,0x7E,0x84,0x89,0x8C,0x8C,0x8C,0x8D,0x91,0x94,0x95,0x9A,0x9D,0x9E,0xA2,0xA1, - 0x9C,0x9D,0x9C,0x9B,0x98,0x93,0x93,0x92,0x92,0x91,0x90,0x8E,0x8B,0x87,0x83,0x81, - 0x7C,0x75,0x74,0x70,0x64,0x61,0x5E,0x5A,0x57,0x50,0x4E,0x4B,0x46,0x46,0x47,0x44, - 0x40,0x40,0x41,0x3E,0x3E,0x42,0x42,0x43,0x46,0x48,0x4A,0x4F,0x56,0x59,0x5E,0x64, - 0x69,0x72,0x78,0x7E,0x85,0x8E,0x95,0x97,0xA1,0xB1,0xB5,0xB7,0xC0,0xCC,0xD1,0xCF, - 0xCF,0xD1,0xD6,0xD2,0xD0,0xD2,0xC7,0xC0,0xC2,0xC3,0xBE,0xB7,0xB3,0xB5,0xB6,0xB1, - 0xAA,0xA9,0xA4,0x9C,0x97,0x92,0x8A,0x86,0x8C,0x8B,0x82,0x7E,0x7F,0x7E,0x7A,0x6D, - 0x64,0x66,0x64,0x64,0x66,0x68,0x6F,0x79,0x7B,0x74,0x75,0x7A,0x75,0x6E,0x69,0x6D, - 0x71,0x6E,0x6C,0x6B,0x6B,0x74,0x79,0x71,0x70,0x73,0x70,0x6F,0x6E,0x6A,0x6F,0x75, - 0x76,0x7B,0x82,0x88,0x90,0x8A,0x85,0x92,0x93,0x8B,0x90,0x98,0x9A,0x98,0x95,0x97, - 0xA2,0xA9,0xA1,0x9D,0x9E,0x99,0x93,0x88,0x7D,0x83,0x8A,0x83,0x7E,0x80,0x81,0x7F, - 0x6D,0x5F,0x67,0x66,0x5D,0x5D,0x60,0x5E,0x53,0x49,0x4D,0x5C,0x59,0x48,0x46,0x4B, - 0x46,0x3E,0x36,0x39,0x46,0x48,0x44,0x4D,0x56,0x58,0x57,0x4E,0x53,0x61,0x5E,0x5D, - 0x66,0x6C,0x69,0x64,0x67,0x75,0x85,0x82,0x7E,0x8C,0x95,0x92,0x8F,0x94,0xA2,0xB1, - 0xB2,0xBA,0xC9,0xD0,0xD0,0xC7,0xC2,0xCB,0xCB,0xC1,0xC5,0xCA,0xC3,0xB8,0xAE,0xAC, - 0xBB,0xBB,0xA6,0xA5,0xAB,0x9D,0x8B,0x80,0x83,0x8D,0x83,0x7A,0x84,0x87,0x7F,0x74, - 0x6E,0x77,0x7C,0x74,0x77,0x82,0x81,0x78,0x76,0x76,0x82,0x91,0x85,0x80,0x8C,0x88, - 0x7C,0x75,0x76,0x82,0x86,0x7C,0x7F,0x87,0x84,0x7C,0x75,0x76,0x7C,0x74,0x71,0x7E, - 0x80,0x77,0x75,0x73,0x7A,0x8B,0x85,0x7C,0x86,0x85,0x75,0x6E,0x6B,0x71,0x79,0x71, - 0x72,0x7F,0x7D,0x77,0x74,0x72,0x79,0x79,0x75,0x7F,0x84,0x7C,0x74,0x70,0x6E,0x7B, - 0x83,0x76,0x7A,0x7F,0x70,0x66,0x63,0x64,0x6E,0x6D,0x6A,0x73,0x77,0x6D,0x69,0x67, - 0x67,0x6C,0x6D,0x71,0x7A,0x75,0x6B,0x6B,0x6B,0x75,0x86,0x7F,0x7A,0x85,0x7E,0x73, - 0x72,0x73,0x7C,0x7F,0x7A,0x81,0x89,0x81,0x79,0x78,0x78,0x7C,0x7D,0x81,0x8C,0x8B, - 0x81,0x80,0x80,0x82,0x94,0x9F,0x96,0x9D,0xA2,0x95,0x8B,0x87,0x8A,0x92,0x90,0x8E, - 0x97,0x94,0x86,0x7F,0x7C,0x7B,0x7B,0x7B,0x81,0x85,0x79,0x6E,0x6D,0x6B,0x76,0x88, - 0x82,0x81,0x8B,0x81,0x77,0x76,0x78,0x80,0x84,0x82,0x8A,0x91,0x86,0x80,0x82,0x80, - 0x83,0x88,0x8D,0x93,0x90,0x87,0x85,0x83,0x83,0x98,0x9E,0x93,0x9B,0x9B,0x8E,0x89, - 0x87,0x8D,0x96,0x95,0x99,0xA4,0xA0,0x96,0x96,0x95,0x94,0x99,0x9D,0xA4,0xA5,0x9B, - 0x94,0x91,0x8D,0x93,0xA3,0x9F,0x97,0x9B,0x93,0x83,0x7C,0x7B,0x7D,0x7D,0x7A,0x7B, - 0x7B,0x71,0x66,0x63,0x5F,0x5F,0x62,0x64,0x66,0x62,0x57,0x52,0x4E,0x4D,0x5E,0x63, - 0x58,0x5F,0x60,0x4F,0x45,0x43,0x47,0x4A,0x49,0x4C,0x55,0x50,0x45,0x48,0x49,0x47, - 0x4B,0x50,0x59,0x5D,0x59,0x56,0x56,0x54,0x5D,0x72,0x6F,0x6D,0x7B,0x77,0x6C,0x6B, - 0x72,0x7E,0x82,0x85,0x93,0x9B,0x92,0x8F,0x95,0x95,0x99,0xA2,0xAB,0xB3,0xB2,0xAC, - 0xA8,0xA3,0xA1,0xAD,0xBB,0xAF,0xAD,0xB5,0xA6,0x97,0x92,0x94,0x98,0x96,0x94,0x9D, - 0x9D,0x8F,0x8C,0x8E,0x8B,0x8B,0x8F,0x94,0x98,0x98,0x92,0x8E,0x8C,0x8D,0x9F,0xA9, - 0x9C,0xA3,0xAB,0x9C,0x91,0x93,0x99,0x9E,0x9B,0x9D,0xA9,0xA5,0x97,0x96,0x96,0x8E, - 0x8F,0x94,0x98,0x9A,0x97,0x90,0x8A,0x84,0x84,0x98,0x9E,0x90,0x97,0x9B,0x89,0x7F, - 0x7F,0x84,0x86,0x81,0x84,0x8E,0x85,0x77,0x78,0x74,0x6B,0x6B,0x70,0x72,0x71,0x6D, - 0x66,0x5C,0x56,0x56,0x64,0x66,0x59,0x60,0x62,0x4E,0x42,0x44,0x47,0x48,0x45,0x4C, - 0x54,0x4B,0x40,0x44,0x42,0x3B,0x40,0x47,0x4D,0x4C,0x49,0x47,0x43,0x3E,0x42,0x58, - 0x5E,0x53,0x5C,0x64,0x56,0x4F,0x55,0x5F,0x63,0x62,0x6B,0x78,0x71,0x6B,0x74,0x77, - 0x77,0x7D,0x87,0x91,0x95,0x95,0x98,0x98,0x98,0x97,0xAE,0xC1,0xB2,0xB8,0xC6,0xBB, - 0xB0,0xB5,0xBE,0xC4,0xC3,0xC4,0xD0,0xC9,0xB8,0xBD,0xBF,0xB6,0xB6,0xBB,0xBC,0xBA, - 0xB1,0xAC,0xA5,0x9E,0x97,0xA0,0xB4,0xA5,0x99,0xA5,0x9B,0x87,0x87,0x8D,0x92,0x91, - 0x90,0x99,0x9A,0x88,0x86,0x8C,0x84,0x84,0x8C,0x90,0x92,0x8D,0x8A,0x87,0x81,0x7B, - 0x7E,0x96,0x96,0x83,0x8E,0x8F,0x79,0x70,0x78,0x7E,0x7E,0x7B,0x82,0x8A,0x7B,0x71, - 0x7B,0x77,0x6F,0x75,0x7D,0x7E,0x7A,0x78,0x76,0x6F,0x6D,0x69,0x78,0x8A,0x77,0x75, - 0x80,0x70,0x5E,0x60,0x66,0x67,0x62,0x61,0x6B,0x63,0x50,0x52,0x55,0x49,0x47,0x50, - 0x52,0x52,0x4E,0x4C,0x49,0x44,0x40,0x44,0x5D,0x5E,0x4C,0x58,0x5B,0x46,0x41,0x4A, - 0x52,0x57,0x56,0x60,0x6D,0x5F,0x58,0x65,0x63,0x5F,0x69,0x73,0x78,0x79,0x78,0x79, - 0x77,0x77,0x75,0x82,0x9E,0x95,0x8E,0xA0,0x98,0x88,0x8B,0x96,0x9F,0xA2,0xA3,0xB2, - 0xB7,0xA8,0xAA,0xB5,0xB0,0xB1,0xBD,0xC2,0xC7,0xC5,0xBF,0xBD,0xB6,0xB2,0xAA,0xB6, - 0xC9,0xB6,0xAB,0xB5,0xA5,0x90,0x8F,0x93,0x96,0x93,0x8F,0x98,0x93,0x7F,0x7E,0x82, - 0x7A,0x79,0x80,0x83,0x84,0x7E,0x7B,0x79,0x74,0x73,0x6F,0x82,0x95,0x82,0x7F,0x8D, - 0x7E,0x6E,0x73,0x7C,0x84,0x83,0x81,0x8D,0x8A,0x77,0x7C,0x82,0x7B,0x7B,0x82,0x87, - 0x87,0x81,0x7F,0x7F,0x7C,0x7A,0x77,0x8D,0x9B,0x85,0x83,0x8E,0x7B,0x6D,0x73,0x7A, - 0x80,0x7D,0x7B,0x83,0x7C,0x6C,0x6F,0x74,0x6E,0x6D,0x73,0x78,0x77,0x6E,0x6B,0x6A, - 0x65,0x61,0x5C,0x70,0x7D,0x65,0x63,0x6D,0x5A,0x4E,0x54,0x5A,0x61,0x5C,0x57,0x62, - 0x5C,0x4D,0x51,0x57,0x52,0x54,0x59,0x5F,0x61,0x5C,0x5D,0x61,0x5F,0x5D,0x5B,0x73, - 0x82,0x6B,0x6B,0x7B,0x6D,0x63,0x6A,0x75,0x81,0x7C,0x7A,0x8D,0x8C,0x7D,0x83,0x8C, - 0x8C,0x8D,0x93,0x9C,0xA0,0x9B,0x9D,0xA0,0x9E,0x9E,0x9C,0xB4,0xC3,0xAB,0xAA,0xB5, - 0xA5,0x9A,0x9C,0xA3,0xAB,0xA0,0x98,0xA2,0x9B,0x86,0x86,0x8C,0x87,0x83,0x83,0x87, - 0x86,0x7A,0x77,0x79,0x78,0x72,0x6F,0x8B,0x93,0x7A,0x7D,0x85,0x77,0x71,0x73,0x7D, - 0x8A,0x81,0x7C,0x89,0x84,0x78,0x7B,0x82,0x84,0x83,0x84,0x8B,0x8D,0x86,0x86,0x89, - 0x88,0x83,0x83,0x9F,0xA7,0x8E,0x92,0x9A,0x8D,0x88,0x89,0x94,0x9F,0x96,0x90,0x99, - 0x94,0x87,0x87,0x8B,0x8D,0x8B,0x89,0x8C,0x8D,0x84,0x81,0x7F,0x7F,0x79,0x75,0x8C, - 0x91,0x78,0x79,0x7B,0x6D,0x68,0x67,0x6F,0x78,0x6D,0x66,0x6C,0x69,0x5E,0x5D,0x5F, - 0x61,0x61,0x5F,0x62,0x64,0x60,0x5C,0x5B,0x5F,0x5A,0x57,0x71,0x77,0x64,0x67,0x69, - 0x62,0x60,0x5E,0x6B,0x77,0x6F,0x6B,0x74,0x73,0x6F,0x70,0x74,0x7E,0x83,0x81,0x87, - 0x8D,0x8B,0x88,0x89,0x90,0x8E,0x91,0xAF,0xB0,0x9E,0xA3,0xA3,0x9C,0x9D,0x9B,0xA6, - 0xB2,0xA7,0xA1,0xA5,0x9F,0x98,0x95,0x95,0x98,0x96,0x92,0x90,0x8F,0x86,0x7E,0x7B, - 0x7C,0x73,0x78,0x90,0x86,0x74,0x77,0x72,0x6E,0x6B,0x6B,0x79,0x80,0x75,0x72,0x74, - 0x72,0x70,0x6E,0x72,0x7B,0x7E,0x7C,0x7E,0x7F,0x7D,0x7A,0x7A,0x7D,0x79,0x88,0xA0, - 0x93,0x88,0x8D,0x84,0x83,0x83,0x85,0x95,0x9C,0x92,0x8D,0x8E,0x8F,0x8D,0x8B,0x8D, - 0x97,0x9A,0x93,0x93,0x95,0x93,0x8D,0x8A,0x8A,0x86,0x96,0xA5,0x93,0x89,0x87,0x7E, - 0x7D,0x78,0x78,0x86,0x88,0x7B,0x71,0x71,0x72,0x6F,0x6A,0x6A,0x73,0x74,0x6D,0x68, - 0x68,0x67,0x61,0x5E,0x5E,0x5C,0x70,0x7E,0x6C,0x62,0x60,0x5C,0x5F,0x5B,0x5D,0x6D, - 0x72,0x68,0x60,0x5F,0x64,0x67,0x63,0x63,0x6D,0x73,0x70,0x6D,0x6F,0x74,0x73,0x74, - 0x73,0x74,0x8D,0x9C,0x8D,0x85,0x87,0x8A,0x8E,0x8A,0x8E,0x9E,0xA6,0xA1,0x9A,0x99, - 0xA0,0xA3,0xA0,0x9E,0xA2,0xA7,0xA5,0x9E,0x9B,0x9A,0x96,0x94,0x8C,0x8A,0xA0,0xA9, - 0x98,0x8C,0x84,0x83,0x86,0x7E,0x79,0x80,0x85,0x80,0x75,0x6E,0x71,0x76,0x73,0x6E, - 0x70,0x78,0x7B,0x77,0x72,0x72,0x73,0x75,0x70,0x72,0x89,0x93,0x89,0x7E,0x74,0x76, - 0x7F,0x7E,0x7D,0x85,0x8B,0x8D,0x87,0x7C,0x7B,0x82,0x83,0x82,0x83,0x87,0x8A,0x8A, - 0x85,0x81,0x81,0x83,0x7F,0x86,0x99,0x9D,0x97,0x8B,0x7F,0x7F,0x85,0x84,0x87,0x8B, - 0x8C,0x8E,0x8A,0x81,0x80,0x81,0x84,0x85,0x84,0x84,0x84,0x84,0x80,0x78,0x74,0x72, - 0x6F,0x7A,0x8A,0x88,0x7F,0x75,0x69,0x6C,0x70,0x6B,0x6E,0x72,0x74,0x78,0x76,0x6F, - 0x6E,0x6F,0x71,0x75,0x76,0x77,0x79,0x7A,0x7A,0x77,0x73,0x72,0x72,0x81,0x8F,0x8B, - 0x86,0x7F,0x78,0x7C,0x7F,0x7B,0x7B,0x7D,0x7E,0x82,0x83,0x80,0x81,0x7F,0x7F,0x84, - 0x84,0x83,0x83,0x84,0x85,0x85,0x86,0x85,0x82,0x8A,0x93,0x91,0x8F,0x8B,0x84,0x86, - 0x89,0x83,0x83,0x81,0x7E,0x81,0x81,0x7F,0x7F,0x7D,0x7C,0x7E,0x7E,0x7C,0x7A,0x79, - 0x78,0x78,0x79,0x78,0x76,0x75,0x79,0x7D,0x79,0x7A,0x7A,0x77,0x7D,0x7E,0x7A,0x7E, - 0x7D,0x7A,0x7E,0x7E,0x7D,0x7E,0x7D,0x7E,0x82,0x82,0x81,0x82,0x83,0x83,0x83,0x83, - 0x83,0x82,0x87,0x8C,0x88,0x88,0x89,0x85,0x8A,0x8D,0x88,0x89,0x87,0x84,0x87,0x86, - 0x82,0x83,0x82,0x82,0x85,0x86,0x85,0x85,0x85,0x86,0x87,0x87,0x86,0x85,0x84,0x8A, - 0x8C,0x85,0x86,0x86,0x83,0x89,0x89,0x84,0x85,0x81,0x7C,0x7E,0x7A,0x77,0x79,0x77, - 0x76,0x79,0x79,0x77,0x78,0x78,0x7A,0x7C,0x7D,0x7D,0x7B,0x7B,0x82,0x82,0x7C,0x7F, - 0x7F,0x7E,0x85,0x83,0x7F,0x7E,0x7A,0x79,0x86,0x83,0x60,0x67,0x7E,0x86,0x75,0x77, - 0x92,0x70,0x70,0x86,0x82,0x81,0x88,0x95,0x80,0x80,0x90,0x8D,0x86,0x80,0x8C,0x8B, - 0x7E,0x76,0x7F,0x83,0x7F,0x82,0x84,0x7C,0x6E,0x72,0x71,0x72,0x74,0x7A,0x7B,0x77, - 0x82,0x80,0x81,0x86,0x89,0x87,0x82,0x89,0x86,0x82,0x86,0x7D,0x7F,0x81,0x7A,0x79, - 0x7A,0x78,0x74,0x74,0x72,0x6F,0x74,0x72,0x6D,0x70,0x71,0x6E,0x70,0x75,0x7A,0x87, - 0x8D,0x81,0x7F,0x85,0x8F,0x92,0x8C,0x91,0x8E,0x88,0x90,0x90,0x88,0x8B,0x89,0x81, - 0x85,0x84,0x81,0x82,0x81,0x7C,0x74,0x77,0x80,0x7B,0x77,0x80,0x81,0x7D,0x7F,0x82, - 0x83,0x7F,0x80,0x87,0x85,0x80,0x80,0x7E,0x89,0x90,0x87,0x87,0x85,0x7B,0x7F,0x87, - 0x83,0x80,0x7E,0x7B,0x80,0x85,0x83,0x81,0x83,0x82,0x7F,0x7D,0x7F,0x7E,0x7E,0x7F, - 0x7F,0x84,0x7D,0x80,0x87,0x7F,0x81,0x85,0x81,0x7D,0x81,0x7D,0x78,0x7F,0x79,0x78, - 0x7A,0x79,0x7C,0x79,0x7E,0x81,0x7C,0x84,0x84,0x88,0x8B,0x89,0x8A,0x87,0x84,0x88, - 0x8F,0x81,0x7E,0x8B,0x84,0x81,0x86,0x7F,0x81,0x83,0x7D,0x7C,0x79,0x76,0x78,0x7C, - 0x7A,0x77,0x76,0x77,0x7C,0x78,0x7B,0x82,0x88,0x88,0x83,0x85,0x86,0x84,0x82,0x86, - 0x86,0x84,0x7F,0x7E,0x8A,0x87,0x7B,0x7D,0x78,0x78,0x76,0x71,0x71,0x6E,0x73,0x75, - 0x7A,0x77,0x79,0x7F,0x7B,0x7E,0x81,0x85,0x85,0x85,0x87,0x86,0x86,0x8F,0x91,0x8C, - 0x8F,0x87,0x84,0x88,0x82,0x7D,0x81,0x83,0x7C,0x7E,0x7F,0x79,0x7B,0x79,0x7B,0x80, - 0x7E,0x7D,0x7D,0x83,0x81,0x83,0x88,0x84,0x8A,0x88,0x82,0x85,0x8A,0x8C,0x8B,0x87, - 0x83,0x80,0x82,0x85,0x7C,0x7C,0x7C,0x76,0x79,0x7C,0x80,0x7C,0x7C,0x79,0x75,0x7A, - 0x7B,0x7A,0x7E,0x7F,0x83,0x85,0x82,0x88,0x86,0x87,0x86,0x81,0x86,0x81,0x7E,0x80, - 0x83,0x89,0x8A,0x7F,0x7C,0x7B,0x75,0x78,0x7B,0x79,0x7C,0x7F,0x78,0x7C,0x81,0x80, - 0x81,0x82,0x81,0x86,0x87,0x88,0x88,0x83,0x83,0x80,0x7E,0x86,0x91,0x8B,0x89,0x85, - 0x7C,0x82,0x81,0x82,0x7F,0x73,0x71,0x76,0x7A,0x7F,0x82,0x79,0x77,0x7B,0x7B,0x7D, - 0x7F,0x7E,0x80,0x88,0x83,0x7F,0x82,0x80,0x7E,0x78,0x78,0x84,0x8D,0x90,0x8B,0x7E, - 0x7A,0x80,0x7D,0x76,0x75,0x6B,0x6D,0x7F,0x83,0x85,0x85,0x7E,0x7E,0x86,0x82,0x7F, - 0x7D,0x7B,0x7D,0x81,0x84,0x81,0x84,0x82,0x7F,0x7A,0x77,0x8A,0x9D,0x98,0x8E,0x80, - 0x75,0x7F,0x7D,0x7A,0x7B,0x76,0x78,0x86,0x8D,0x87,0x88,0x85,0x82,0x85,0x84,0x82, - 0x84,0x80,0x81,0x88,0x85,0x81,0x7E,0x7F,0x7E,0x78,0x75,0x82,0x8F,0x90,0x8D,0x7D, - 0x72,0x7E,0x7A,0x73,0x79,0x72,0x76,0x88,0x89,0x81,0x80,0x7F,0x82,0x8A,0x84,0x7D, - 0x79,0x7C,0x81,0x81,0x82,0x82,0x84,0x7D,0x7B,0x75,0x71,0x8B,0x8F,0x88,0x85,0x74, - 0x77,0x7C,0x76,0x73,0x71,0x75,0x7B,0x86,0x85,0x80,0x83,0x82,0x88,0x87,0x81,0x7E, - 0x81,0x86,0x82,0x84,0x83,0x83,0x88,0x82,0x7E,0x7C,0x7C,0x93,0x8E,0x80,0x87,0x78, - 0x7C,0x87,0x79,0x75,0x77,0x76,0x7B,0x7D,0x7C,0x73,0x75,0x82,0x84,0x81,0x7B,0x78, - 0x7D,0x7F,0x7A,0x7F,0x83,0x83,0x86,0x80,0x7D,0x74,0x78,0x94,0x90,0x81,0x85,0x7E, - 0x83,0x86,0x74,0x73,0x74,0x76,0x7E,0x7D,0x7A,0x78,0x80,0x8A,0x83,0x7C,0x7F,0x7E, - 0x82,0x83,0x7D,0x81,0x86,0x81,0x82,0x81,0x7A,0x78,0x8C,0x9A,0x88,0x87,0x88,0x84, - 0x8C,0x81,0x77,0x79,0x76,0x7C,0x7F,0x7C,0x7F,0x7E,0x89,0x8E,0x7F,0x82,0x81,0x7B, - 0x80,0x76,0x7A,0x87,0x82,0x84,0x82,0x7D,0x7B,0x82,0x97,0x8C,0x82,0x86,0x7D,0x84, - 0x81,0x70,0x78,0x7A,0x77,0x80,0x7A,0x7A,0x7F,0x82,0x87,0x85,0x81,0x83,0x82,0x81, - 0x7C,0x78,0x80,0x7F,0x7F,0x7D,0x79,0x77,0x7E,0x91,0x89,0x80,0x87,0x7D,0x85,0x88, - 0x70,0x76,0x78,0x78,0x83,0x79,0x78,0x81,0x82,0x86,0x87,0x80,0x83,0x86,0x84,0x7F, - 0x7C,0x84,0x82,0x81,0x7E,0x79,0x78,0x81,0x93,0x8D,0x84,0x86,0x7F,0x84,0x81,0x6F, - 0x7A,0x7C,0x73,0x7E,0x74,0x71,0x82,0x7F,0x80,0x84,0x7F,0x86,0x84,0x81,0x80,0x7B, - 0x80,0x80,0x7E,0x7D,0x7D,0x79,0x86,0x8D,0x81,0x87,0x88,0x7E,0x88,0x86,0x78,0x7F, - 0x78,0x77,0x7F,0x78,0x7A,0x7E,0x7C,0x83,0x81,0x7C,0x87,0x85,0x7E,0x84,0x84,0x81, - 0x7F,0x7D,0x80,0x7A,0x74,0x87,0x8B,0x84,0x89,0x84,0x80,0x8D,0x84,0x7A,0x85,0x79, - 0x7B,0x7E,0x71,0x7B,0x7D,0x7A,0x85,0x80,0x7D,0x8C,0x84,0x81,0x86,0x7F,0x7E,0x7E, - 0x7C,0x7F,0x7A,0x7B,0x8B,0x87,0x84,0x87,0x7F,0x85,0x8D,0x82,0x7F,0x83,0x78,0x7F, - 0x7A,0x71,0x7C,0x7D,0x7C,0x82,0x7D,0x80,0x89,0x83,0x87,0x85,0x83,0x86,0x7E,0x7D, - 0x7E,0x75,0x79,0x88,0x7F,0x81,0x89,0x83,0x8B,0x89,0x7F,0x80,0x7E,0x7A,0x7F,0x76, - 0x75,0x7D,0x77,0x7E,0x80,0x7D,0x86,0x85,0x82,0x85,0x81,0x83,0x81,0x79,0x7C,0x7B, - 0x78,0x82,0x87,0x82,0x87,0x86,0x85,0x8A,0x7F,0x7E,0x83,0x7B,0x7F,0x79,0x70,0x7B, - 0x76,0x75,0x7C,0x7C,0x80,0x85,0x84,0x86,0x89,0x85,0x86,0x80,0x7F,0x7C,0x78,0x83, - 0x84,0x80,0x88,0x85,0x82,0x8F,0x86,0x81,0x89,0x80,0x7F,0x80,0x76,0x7C,0x7E,0x7B, - 0x7F,0x7D,0x82,0x87,0x86,0x87,0x89,0x85,0x85,0x82,0x7B,0x7B,0x76,0x7F,0x86,0x7E, - 0x85,0x85,0x82,0x8A,0x81,0x7F,0x85,0x7B,0x7B,0x80,0x76,0x7D,0x7F,0x7A,0x7F,0x7E, - 0x7F,0x83,0x81,0x87,0x88,0x86,0x88,0x82,0x7D,0x80,0x7A,0x7D,0x83,0x7F,0x82,0x82, - 0x82,0x86,0x82,0x80,0x85,0x7F,0x7D,0x7F,0x77,0x7A,0x7E,0x7B,0x7E,0x7E,0x80,0x85, - 0x81,0x84,0x89,0x83,0x86,0x85,0x81,0x82,0x7E,0x84,0x85,0x80,0x86,0x83,0x7D,0x85, - 0x81,0x7F,0x82,0x7B,0x7E,0x7E,0x78,0x7D,0x7B,0x7A,0x7B,0x78,0x84,0x87,0x8E,0x90, - 0x90,0x91,0x81,0x80,0x78,0x77,0x78,0x7B,0x83,0x70,0x7E,0x72,0x63,0x8D,0x85,0x72, - 0x8C,0x83,0x7A,0x6C,0x62,0x7B,0x73,0x73,0x79,0x71,0x7F,0x7D,0x78,0x80,0x7E,0x84, - 0x8C,0x84,0x7B,0x73,0x7C,0x88,0x7E,0x7E,0x80,0x77,0x81,0x88,0x82,0x83,0x84,0x93, - 0x91,0x84,0x8F,0x84,0x7C,0x90,0x94,0x92,0xA0,0xA2,0x99,0x9B,0xA3,0xA2,0x8E,0x87, - 0x90,0x90,0x96,0x9D,0x91,0x8C,0x8C,0x86,0x84,0x75,0x72,0x7C,0x7B,0x78,0x6F,0x69, - 0x6D,0x68,0x64,0x69,0x69,0x68,0x68,0x65,0x66,0x65,0x63,0x68,0x6A,0x6C,0x6A,0x68, - 0x6F,0x6F,0x6F,0x6A,0x62,0x68,0x6C,0x6B,0x69,0x62,0x67,0x69,0x66,0x6C,0x6C,0x70, - 0x76,0x75,0x77,0x7B,0x80,0x8A,0x97,0xA8,0xB2,0xAA,0x9F,0x9C,0x9B,0x9C,0x9A,0x99, - 0x98,0x94,0x8F,0x8C,0x8D,0x8F,0x8C,0x87,0x85,0x87,0x8C,0x8A,0x83,0x84,0x85,0x83, - 0x82,0x82,0x87,0x8C,0x89,0x86,0x85,0x83,0x84,0x8A,0x8C,0x87,0x8A,0x88,0x86,0x87, - 0x82,0x7F,0x84,0x7F,0x7A,0x7F,0x79,0x79,0x7C,0x7B,0x7D,0x82,0x86,0x8B,0x8C,0x8C, - 0x8E,0x90,0x90,0x91,0x92,0x8E,0x95,0x92,0x94,0x96,0x90,0x90,0x8F,0x8D,0x8A,0x8B, - 0x88,0x83,0x7C,0x71,0x73,0x70,0x65,0x67,0x69,0x69,0x6C,0x65,0x67,0x6B,0x63,0x5F, - 0x60,0x55,0x56,0x6A,0x62,0x5D,0x63,0x61,0x68,0x61,0x55,0x62,0x66,0x5F,0x5B,0x55, - 0x62,0x67,0x5B,0x5F,0x67,0x67,0x65,0x62,0x6B,0x6F,0x65,0x6A,0x69,0x6F,0x6D,0x81, - 0x9C,0x91,0x9D,0xA7,0xAB,0xAA,0x8F,0x98,0xA9,0x98,0x9C,0xA1,0xA4,0xAD,0x96,0x8E, - 0x98,0x8F,0x89,0x88,0x92,0x9A,0x92,0x8D,0x88,0x7B,0x83,0xA0,0x98,0x8E,0xA0,0x98, - 0x92,0x7E,0x75,0x8F,0x88,0x84,0x91,0x95,0x9E,0x8F,0x7D,0x8E,0x8B,0x7E,0x82,0x86, - 0x92,0x86,0x7F,0x84,0x80,0x86,0x7B,0x8F,0xAD,0x94,0x91,0x9C,0x92,0x92,0x84,0x8B, - 0xA4,0x94,0x91,0x9B,0x99,0x98,0x86,0x83,0x94,0x8B,0x8A,0x93,0x90,0x8C,0x7E,0x74, - 0x76,0x6A,0x6F,0x8C,0x7E,0x7A,0x80,0x6F,0x6A,0x58,0x5A,0x6E,0x62,0x5E,0x69,0x66, - 0x60,0x50,0x50,0x5C,0x57,0x5B,0x65,0x6C,0x68,0x5C,0x59,0x5A,0x5C,0x62,0x59,0x73, - 0x7C,0x5D,0x67,0x66,0x5C,0x5F,0x5B,0x70,0x7C,0x6C,0x77,0x7E,0x75,0x7C,0x7D,0x90, - 0x9C,0x9B,0xAA,0xAF,0xA5,0xA0,0x97,0x9A,0x9C,0x8E,0xAA,0xB0,0x96,0xA1,0x99,0x8E, - 0x88,0x7C,0x93,0x97,0x84,0x93,0x93,0x89,0x82,0x7C,0x8C,0x8B,0x87,0x90,0x93,0x8E, - 0x84,0x80,0x84,0x80,0x8A,0x84,0x89,0xA1,0x84,0x80,0x8B,0x7A,0x7B,0x78,0x80,0x93, - 0x85,0x84,0x94,0x8A,0x84,0x87,0x8C,0x93,0x8F,0x97,0x9E,0x92,0x8F,0x8C,0x88,0x8F, - 0x83,0x93,0xA9,0x90,0x93,0x97,0x87,0x81,0x78,0x86,0x91,0x7B,0x83,0x8B,0x77,0x71, - 0x6D,0x71,0x75,0x6D,0x73,0x7A,0x6F,0x68,0x62,0x5E,0x58,0x5D,0x5B,0x5F,0x79,0x62, - 0x5D,0x69,0x58,0x55,0x54,0x5A,0x6B,0x62,0x61,0x71,0x63,0x5A,0x5C,0x5C,0x5E,0x5D, - 0x65,0x70,0x69,0x66,0x66,0x64,0x67,0x62,0x82,0x92,0x7E,0x94,0x9F,0x8E,0x8E,0x8E, - 0x9E,0xA6,0x9A,0xAC,0xAE,0x9B,0x99,0x97,0x94,0x90,0x8C,0x9B,0x9D,0x92,0x91,0x8C, - 0x85,0x7E,0x84,0x81,0x92,0x9F,0x89,0x95,0x92,0x7E,0x7E,0x7C,0x85,0x8B,0x85,0x92, - 0x93,0x85,0x88,0x84,0x82,0x83,0x83,0x8B,0x8A,0x84,0x8B,0x81,0x7D,0x7B,0x84,0xA3, - 0x89,0x8D,0xA8,0x90,0x84,0x87,0x89,0x8C,0x86,0x8D,0x9F,0x90,0x8B,0x93,0x8A,0x87, - 0x86,0x8C,0x96,0x8D,0x8D,0x91,0x84,0x7D,0x7E,0x7A,0x77,0x8D,0x87,0x79,0x89,0x78, - 0x6A,0x6C,0x66,0x6C,0x68,0x64,0x74,0x6B,0x5E,0x67,0x61,0x5C,0x5C,0x60,0x67,0x62, - 0x66,0x6B,0x5D,0x5C,0x59,0x5F,0x77,0x5F,0x64,0x7A,0x63,0x5C,0x65,0x63,0x62,0x62, - 0x6B,0x78,0x6D,0x71,0x7E,0x74,0x75,0x80,0x85,0x8A,0x90,0x98,0x9B,0x95,0x95,0x9A, - 0x93,0x96,0xB0,0xA1,0x9A,0xAE,0x97,0x8D,0x8C,0x86,0x8C,0x84,0x85,0x97,0x8B,0x81, - 0x8D,0x84,0x7F,0x81,0x84,0x88,0x84,0x86,0x89,0x7C,0x7C,0x7C,0x7A,0x97,0x88,0x82, - 0x9C,0x86,0x79,0x83,0x7D,0x7D,0x7D,0x80,0x90,0x89,0x82,0x90,0x89,0x80,0x89,0x8B, - 0x8B,0x8F,0x93,0x94,0x8D,0x88,0x8D,0x87,0x86,0xA3,0x96,0x8D,0xA4,0x8F,0x83,0x88, - 0x84,0x85,0x80,0x83,0x91,0x85,0x7D,0x88,0x7E,0x73,0x78,0x78,0x75,0x73,0x71,0x74, - 0x6B,0x61,0x66,0x5D,0x70,0x75,0x60,0x76,0x73,0x59,0x62,0x63,0x5D,0x5F,0x5D,0x6D, - 0x6D,0x5F,0x69,0x6A,0x5D,0x60,0x65,0x63,0x65,0x6A,0x6E,0x6A,0x67,0x6A,0x68,0x67, - 0x84,0x85,0x76,0x92,0x8E,0x7D,0x88,0x8B,0x8C,0x8D,0x91,0xA0,0x9E,0x96,0xA0,0x9C, - 0x93,0x95,0x95,0x92,0x92,0x94,0x93,0x8E,0x86,0x8A,0x7F,0x85,0x9B,0x86,0x89,0x98, - 0x82,0x7E,0x82,0x7D,0x80,0x7D,0x84,0x8D,0x82,0x82,0x88,0x7E,0x7B,0x80,0x7E,0x80, - 0x84,0x87,0x86,0x81,0x80,0x83,0x7C,0x8B,0x9B,0x87,0x92,0x9D,0x88,0x87,0x8C,0x88, - 0x8A,0x89,0x91,0x97,0x8D,0x92,0x94,0x8A,0x8A,0x8D,0x8C,0x8C,0x8E,0x8E,0x8C,0x85, - 0x83,0x7F,0x79,0x91,0x8F,0x7D,0x90,0x89,0x75,0x79,0x71,0x6E,0x70,0x6D,0x75,0x72, - 0x69,0x6F,0x6D,0x62,0x67,0x69,0x65,0x6A,0x6A,0x68,0x66,0x63,0x64,0x5D,0x5D,0x73, - 0x6A,0x63,0x78,0x69,0x5D,0x68,0x64,0x65,0x66,0x6A,0x78,0x72,0x6F,0x79,0x76,0x78, - 0x7B,0x89,0x91,0x8B,0x9D,0x88,0x82,0x95,0x8A,0x7A,0x8D,0xAA,0x9C,0xAB,0xB6,0x9E, - 0x94,0x9D,0xA4,0xA4,0x9F,0xA0,0xB1,0xA1,0x90,0x92,0x73,0x72,0x80,0x65,0x61,0x70, - 0x6B,0x5B,0x54,0x4D,0x51,0x5E,0x74,0x7C,0x5D,0x76,0x86,0x6C,0x74,0x82,0x8D,0x9B, - 0x95,0x94,0xB2,0xAE,0xC0,0xC1,0x97,0xC4,0xB8,0xA8,0xBD,0xA6,0xB9,0xB9,0x9A,0x94, - 0x8E,0x8E,0xA8,0x8A,0x7D,0x91,0x79,0x75,0x70,0x78,0x88,0x74,0x71,0x76,0x6F,0x74, - 0x67,0x4E,0x50,0x55,0x58,0x58,0x53,0x4D,0x4C,0x50,0x51,0x52,0x5D,0x6A,0x85,0x83, - 0x81,0x8A,0x73,0x6F,0x74,0x7D,0x91,0x99,0x9C,0x9C,0x8E,0x91,0x94,0x92,0x87,0x80, - 0x83,0x7E,0x80,0x70,0x73,0x6F,0x5C,0x64,0x60,0x7F,0x8B,0x65,0x68,0x65,0x4F,0x59, - 0x61,0x57,0x61,0x6B,0x6F,0x7E,0x79,0x8F,0x9C,0x8F,0x9B,0xA0,0x98,0xA1,0xA5,0x9B, - 0x95,0x84,0x80,0x82,0x84,0x98,0x9D,0x98,0xB1,0xB2,0xA9,0xB5,0xA1,0xA0,0xA2,0x89, - 0x9C,0x96,0x71,0x88,0x85,0x76,0x8A,0x80,0x74,0x71,0x6B,0x75,0x85,0x7E,0x7A,0x6B, - 0x6C,0x8B,0x73,0x66,0x6D,0x67,0x69,0x60,0x5C,0x5B,0x58,0x67,0x6F,0x71,0x6A,0x6F, - 0x82,0x85,0x81,0x8C,0x86,0x87,0x92,0x8E,0x9E,0x9D,0xA3,0xA5,0xAB,0xBA,0xAE,0xB7, - 0xBB,0xAC,0xB8,0xB4,0xB2,0xB5,0xA2,0x9F,0x9E,0x97,0x97,0x8D,0x81,0x6F,0x61,0x59, - 0x60,0x68,0x4F,0x57,0x64,0x5C,0x4D,0x32,0x31,0x36,0x38,0x4B,0x4C,0x36,0x2C,0x35, - 0x40,0x3D,0x3E,0x4B,0x4D,0x47,0x46,0x52,0x5C,0x66,0x6B,0x73,0x91,0x9A,0x96,0x8C, - 0x84,0x97,0x9F,0xAF,0xCD,0xC0,0xCB,0xDC,0xC2,0xB1,0xB2,0xB6,0xBE,0xCB,0xC7,0xBE, - 0xC0,0xBF,0xC3,0xC5,0xC1,0xC2,0xB5,0xB0,0xB0,0x9C,0x8B,0x76,0x65,0x6F,0x7D,0x84, - 0x78,0x5A,0x5D,0x65,0x5D,0x57,0x53,0x58,0x5C,0x63,0x52,0x51,0x44,0x3D,0x4D,0x49, - 0x58,0x57,0x53,0x60,0x6D,0x68,0x5A,0x5B,0x64,0x65,0x79,0x8D,0x78,0x83,0x8C,0x7F, - 0x8D,0x88,0x90,0x9F,0xA3,0xA8,0xAA,0xA6,0xA8,0xA9,0xA9,0xB6,0xB1,0xB2,0xB1,0xB6, - 0xB4,0xAB,0xA9,0x9C,0x9B,0x98,0x9B,0x9C,0x8C,0x87,0x87,0x7C,0x73,0x78,0x78,0x7B, - 0x7B,0x69,0x67,0x63,0x63,0x5D,0x53,0x5D,0x64,0x66,0x66,0x5C,0x59,0x5B,0x57,0x59, - 0x5B,0x55,0x60,0x5F,0x59,0x67,0x71,0x71,0x62,0x5C,0x68,0x72,0x76,0x6C,0x68,0x73, - 0x78,0x76,0x77,0x82,0x82,0x76,0x7B,0x79,0x81,0x86,0x82,0x88,0x7B,0x8B,0xA2,0x95, - 0x97,0x9D,0x95,0x91,0x89,0x91,0x9B,0xA3,0xAA,0xA1,0x9F,0xAB,0xAB,0x9B,0x9A,0x97, - 0x94,0xA4,0xA3,0xA1,0x9E,0x8F,0x94,0x97,0x98,0xA3,0x98,0x8B,0x97,0x9B,0x91,0x8E, - 0x92,0x94,0x9D,0x91,0x82,0x80,0x73,0x73,0x68,0x64,0x76,0x77,0x74,0x7C,0x7E,0x74, - 0x74,0x6A,0x66,0x6F,0x6F,0x78,0x6F,0x6A,0x6C,0x64,0x60,0x55,0x55,0x63,0x6A,0x6A, - 0x64,0x6B,0x71,0x69,0x70,0x73,0x78,0x80,0x7F,0x87,0x83,0x7A,0x72,0x67,0x6C,0x72, - 0x84,0x8E,0x7B,0x79,0x7B,0x71,0x70,0x60,0x6A,0x7B,0x6C,0x6D,0x67,0x6C,0x83,0x79, - 0x6F,0x7B,0x81,0x8A,0x97,0x8B,0x86,0x94,0x8C,0x98,0xA5,0x9F,0xAE,0xAD,0xA2,0xB3, - 0xB4,0xAD,0xA3,0x91,0x9C,0xA5,0x98,0x91,0x8D,0x8F,0x91,0x8F,0x88,0x88,0x89,0x7D, - 0x77,0x74,0x6F,0x70,0x70,0x63,0x58,0x67,0x6F,0x60,0x6D,0x76,0x6E,0x65,0x54,0x66, - 0x71,0x72,0x64,0x4B,0x4E,0x5B,0x6F,0x71,0x6C,0x78,0x7A,0x7B,0x84,0x83,0x85,0x8C, - 0x8D,0x92,0x97,0xAA,0xB3,0xAB,0x9D,0x9B,0xAB,0xA7,0x9D,0xA2,0xA8,0xA3,0x96,0x90, - 0x91,0x98,0xA0,0x97,0x89,0x98,0x9A,0x92,0x8F,0x8A,0x93,0x97,0x8F,0x8A,0x92,0x91, - 0x8B,0x87,0x7D,0x7B,0x76,0x6B,0x6E,0x7A,0x85,0x7E,0x72,0x6B,0x63,0x69,0x6F,0x61, - 0x58,0x5C,0x5E,0x5E,0x54,0x4B,0x4D,0x56,0x55,0x5A,0x67,0x71,0x76,0x6E,0x6B,0x63, - 0x62,0x6F,0x6E,0x74,0x73,0x70,0x76,0x7A,0x85,0x89,0x85,0x7F,0x86,0x8C,0x88,0x8B, - 0x7A,0x6B,0x76,0x79,0x80,0x93,0x94,0x8E,0x86,0x7D,0x81,0x7D,0x73,0x74,0x76,0x74, - 0x74,0x73,0x6A,0x64,0x6E,0x78,0x7B,0x7C,0x81,0x82,0x78,0x6F,0x6E,0x71,0x7A,0x84, - 0x8E,0x9A,0x9D,0x95,0x90,0x95,0x94,0x96,0x94,0x96,0xA0,0x9B,0x91,0x90,0x88,0x8E, - 0xA1,0xA2,0xA5,0xA3,0xA4,0xAE,0xA9,0xA7,0xA3,0x9F,0x9B,0x9C,0xAB,0xAB,0xA9,0xA9, - 0x98,0x92,0x98,0x99,0x98,0x91,0x89,0x84,0x7D,0x79,0x72,0x6E,0x70,0x72,0x78,0x7C, - 0x79,0x74,0x73,0x70,0x6D,0x65,0x5A,0x61,0x71,0x70,0x65,0x64,0x56,0x4C,0x51,0x56, - 0x60,0x63,0x5F,0x58,0x5B,0x5C,0x5C,0x60,0x55,0x58,0x63,0x66,0x6D,0x6E,0x67,0x6A, - 0x6E,0x74,0x7A,0x7A,0x7F,0x7B,0x78,0x78,0x72,0x6F,0x69,0x68,0x72,0x7A,0x73,0x77, - 0x76,0x74,0x83,0x83,0x78,0x71,0x75,0x77,0x7B,0x7E,0x7D,0x83,0x82,0x89,0x84,0x77, - 0x7D,0x7A,0x7D,0x82,0x7E,0x83,0x81,0x7F,0x8C,0x94,0x94,0x92,0x8F,0x92,0x9E,0x9D, - 0x93,0x97,0x96,0x9C,0xAA,0xA2,0x9E,0xA1,0xA6,0xAD,0xA9,0xA1,0xA2,0xA8,0xA5,0xAA, - 0xA2,0x99,0xA4,0xA1,0x9F,0xA0,0x9D,0x97,0x97,0x95,0x97,0x9D,0x94,0x94,0x94,0x8C, - 0x93,0x92,0x8A,0x8D,0x8E,0x8A,0x86,0x81,0x81,0x85,0x84,0x81,0x7F,0x7D,0x81,0x82, - 0x72,0x6F,0x71,0x68,0x6B,0x6C,0x6B,0x67,0x63,0x6B,0x62,0x65,0x6D,0x65,0x65,0x5F, - 0x60,0x5F,0x58,0x5A,0x52,0x5C,0x63,0x5C,0x5F,0x60,0x64,0x67,0x69,0x65,0x65,0x6B, - 0x6B,0x6E,0x6B,0x65,0x66,0x6E,0x6D,0x6F,0x6E,0x69,0x6F,0x75,0x79,0x7A,0x73,0x70, - 0x75,0x75,0x79,0x77,0x6E,0x72,0x79,0x7D,0x83,0x83,0x83,0x87,0x89,0x86,0x85,0x88, - 0x85,0x85,0x8A,0x87,0x87,0x86,0x85,0x8C,0x8D,0x8E,0x93,0x8E,0x8F,0x98,0x99,0x9A, - 0x9B,0x9C,0x9E,0xA2,0xA8,0xA3,0xA0,0xA0,0xA5,0xAB,0xA7,0xA3,0xA2,0x9E,0x9E,0xA3, - 0x9E,0x99,0x97,0x94,0x99,0x9C,0x97,0x9A,0x99,0x9B,0x9C,0x96,0x9C,0x98,0x98,0x9F, - 0x9B,0x98,0x97,0x93,0x92,0x91,0x89,0x88,0x85,0x80,0x82,0x7E,0x7B,0x79,0x74,0x77, - 0x74,0x72,0x76,0x72,0x74,0x70,0x6C,0x73,0x6B,0x6B,0x76,0x73,0x75,0x7A,0x73,0x74, - 0x79,0x73,0x74,0x72,0x6C,0x70,0x6A,0x62,0x63,0x60,0x67,0x68,0x60,0x5F,0x62,0x65, - 0x63,0x60,0x5D,0x5C,0x66,0x69,0x64,0x6D,0x65,0x5D,0x69,0x67,0x67,0x72,0x66,0x5F, - 0x6B,0x69,0x6B,0x6D,0x64,0x66,0x6C,0x70,0x6F,0x68,0x68,0x6C,0x72,0x77,0x77,0x76, - 0x7A,0x80,0x84,0x7E,0x7C,0x82,0x85,0x8F,0x94,0x8E,0x8F,0x8F,0x8A,0x92,0x92,0x8C, - 0x8E,0x8C,0x8A,0x90,0x8C,0x86,0x8A,0x8C,0x94,0x9A,0x97,0x98,0x9A,0x99,0x9F,0xA1, - 0xA0,0x9B,0x9D,0xA7,0xA3,0xA1,0x9D,0x94,0x99,0x9C,0x9C,0x9E,0x99,0x95,0x95,0x94, - 0x91,0x8B,0x89,0x89,0x8E,0x8F,0x89,0x89,0x87,0x87,0x8C,0x89,0x8D,0x8E,0x8C,0x8C, - 0x88,0x8D,0x8B,0x87,0x8D,0x8D,0x8C,0x8F,0x86,0x82,0x85,0x7F,0x7D,0x7D,0x79,0x7A, - 0x7A,0x75,0x75,0x76,0x77,0x77,0x77,0x78,0x7D,0x80,0x7E,0x80,0x7F,0x79,0x77,0x7C, - 0x7C,0x75,0x77,0x77,0x73,0x78,0x76,0x72,0x71,0x6E,0x74,0x74,0x6F,0x6C,0x6B,0x6E, - 0x73,0x77,0x73,0x6F,0x71,0x75,0x7A,0x7A,0x76,0x78,0x7A,0x7C,0x7C,0x79,0x7B,0x78, - 0x77,0x7D,0x79,0x78,0x7A,0x76,0x76,0x78,0x74,0x72,0x6E,0x6B,0x71,0x74,0x71,0x71, - 0x74,0x78,0x80,0x82,0x7D,0x7C,0x7C,0x82,0x87,0x83,0x7E,0x7C,0x81,0x84,0x82,0x7F, - 0x7F,0x7F,0x80,0x82,0x80,0x7F,0x7E,0x7E,0x80,0x7E,0x79,0x79,0x76,0x79,0x82,0x7D, - 0x7D,0x81,0x7D,0x80,0x85,0x86,0x88,0x85,0x83,0x80,0x82,0x85,0x80,0x85,0x85,0x85, - 0x8A,0x88,0x89,0x85,0x82,0x7F,0x7E,0x83,0x7D,0x81,0x85,0x7F,0x84,0x86,0x86,0x89, - 0x88,0x89,0x89,0x87,0x8A,0x8A,0x84,0x81,0x7B,0x81,0x91,0x89,0x82,0x85,0x81,0x89, - 0x8C,0x7D,0x7F,0x81,0x7E,0x85,0x7E,0x77,0x7D,0x7D,0x84,0x88,0x80,0x82,0x87,0x86, - 0x83,0x82,0x80,0x7F,0x81,0x80,0x7F,0x75,0x7E,0x92,0x89,0x88,0x86,0x7B,0x85,0x82, - 0x6F,0x76,0x77,0x76,0x81,0x77,0x75,0x86,0x87,0x87,0x83,0x7C,0x85,0x88,0x7D,0x7B, - 0x7E,0x81,0x85,0x81,0x7C,0x75,0x7A,0x91,0x92,0x88,0x88,0x83,0x85,0x89,0x76,0x70, - 0x79,0x7C,0x85,0x84,0x7B,0x82,0x8B,0x86,0x81,0x7C,0x7D,0x84,0x80,0x7C,0x88,0x8B, - 0x84,0x80,0x80,0x7E,0x74,0x83,0x95,0x8B,0x89,0x8A,0x82,0x87,0x7C,0x6B,0x78,0x7D, - 0x7B,0x81,0x7C,0x7D,0x88,0x82,0x78,0x77,0x76,0x79,0x7C,0x74,0x79,0x82,0x7C,0x79, - 0x76,0x72,0x6D,0x78,0x8F,0x8B,0x83,0x83,0x81,0x87,0x7D,0x6C,0x73,0x7D,0x7E,0x80, - 0x7C,0x7F,0x8C,0x8B,0x7E,0x7E,0x84,0x82,0x80,0x7B,0x7D,0x87,0x82,0x7C,0x7C,0x7B, - 0x75,0x70,0x86,0x8F,0x85,0x88,0x84,0x82,0x81,0x6F,0x6C,0x78,0x78,0x78,0x7B,0x79, - 0x85,0x8E,0x80,0x7C,0x80,0x7E,0x7B,0x79,0x79,0x82,0x82,0x7E,0x7F,0x7C,0x77,0x72, - 0x85,0x93,0x87,0x87,0x88,0x87,0x87,0x75,0x6B,0x78,0x7C,0x79,0x7C,0x7E,0x86,0x8E, - 0x82,0x7C,0x81,0x80,0x7D,0x79,0x78,0x85,0x86,0x7E,0x80,0x81,0x7E,0x76,0x80,0x97, - 0x8F,0x88,0x8B,0x87,0x8A,0x7E,0x6E,0x7A,0x81,0x7B,0x7C,0x7C,0x81,0x8C,0x84,0x7B, - 0x81,0x83,0x81,0x7B,0x77,0x80,0x85,0x7F,0x7F,0x83,0x83,0x78,0x7E,0x9A,0x92,0x88, - 0x8C,0x88,0x8F,0x86,0x71,0x7A,0x85,0x7E,0x7F,0x7E,0x80,0x8D,0x86,0x7D,0x84,0x88, - 0x85,0x7D,0x7A,0x82,0x85,0x7C,0x7C,0x81,0x80,0x78,0x75,0x8F,0x94,0x83,0x87,0x86, - 0x8B,0x89,0x74,0x76,0x81,0x7A,0x76,0x78,0x7B,0x88,0x86,0x79,0x80,0x89,0x88,0x82, - 0x7B,0x81,0x86,0x7A,0x7B,0x86,0x82,0x7D,0x74,0x83,0x94,0x81,0x82,0x87,0x87,0x8A, - 0x7A,0x74,0x81,0x7F,0x77,0x79,0x7B,0x81,0x85,0x7C,0x7F,0x87,0x85,0x84,0x80,0x84, - 0x89,0x7F,0x7E,0x83,0x84,0x85,0x7E,0x80,0x8E,0x87,0x81,0x87,0x84,0x85,0x82,0x7B, - 0x80,0x83,0x7D,0x7D,0x7E,0x7C,0x81,0x7E,0x79,0x7E,0x7F,0x7F,0x81,0x7D,0x81,0x83, - 0x7D,0x81,0x82,0x81,0x82,0x81,0x87,0x85,0x81,0x84,0x84,0x83,0x84,0x81,0x81,0x85, - 0x83,0x7F,0x80,0x7E,0x7F,0x81,0x7D,0x7E,0x7F,0x7C,0x7B,0x7E,0x7E,0x7E,0x7D,0x7D, - 0x80,0x80,0x7F,0x7D,0x7F,0x82,0x81,0x7E,0x80,0x81,0x7F,0x7F,0x7F,0x80,0x81,0x7F, - 0x80,0x80,0x7F,0x7F,0x7E,0x7C,0x7D,0x80,0x7F,0x7E,0x7F,0x81,0x82,0x81,0x80,0x81, - 0x82,0x81,0x80,0x82,0x82,0x81,0x80,0x82,0x82,0x81,0x82,0x80,0x80,0x82,0x81,0x80, - 0x7E,0x7C,0x7C,0x7D,0x7A,0x7B,0x7B,0x7B,0x7E,0x7D,0x7D,0x7D,0x7D,0x7F,0x7F,0x7E, - 0x80,0x7F,0x80,0x82,0x80,0x7E,0x80,0x80,0x81,0x82,0x81,0x81,0x81,0x7F,0x7E,0x7E, - 0x7D,0x7F,0x7E,0x7C,0x7D,0x7E,0x7B,0x7D,0x7D,0x7E,0x81,0x7F,0x80,0x80,0x80,0x83, - 0x82,0x81,0x84,0x84,0x82,0x85,0x83,0x82,0x83,0x80,0x81,0x83,0x80,0x81,0x81,0x7E, - 0x80,0x7F,0x7B,0x7C,0x7B,0x7C,0x7D,0x7A,0x7C,0x7F,0x7F,0x7E,0x7E,0x7D,0x81,0x83, - 0x80,0x81,0x80,0x80,0x81,0x80,0x80,0x81,0x81,0x83,0x8D,0x8C,0x8F,0x8F,0x7C,0x77, - 0x70,0x70,0x78,0x7F,0x75,0x76,0x64,0x61,0x8A,0x75,0x6F,0x7E,0x77,0x6E,0x6C,0x82, - 0x82,0x85,0x82,0x77,0x7B,0x80,0x85,0x83,0x89,0x93,0x94,0x90,0x8E,0x90,0x86,0x82, - 0x81,0x7B,0x84,0x8F,0x89,0x8C,0xA4,0x99,0x8D,0x93,0x7C,0x7D,0x96,0x8E,0x8F,0x8E, - 0x87,0x8F,0x90,0x88,0x7A,0x81,0x89,0x84,0x88,0x83,0x7F,0x7B,0x79,0x73,0x6C,0x72, - 0x74,0x75,0x74,0x6D,0x6D,0x6A,0x68,0x71,0x6B,0x65,0x67,0x62,0x64,0x6C,0x70,0x75, - 0x74,0x6B,0x6E,0x76,0x70,0x67,0x6B,0x72,0x7A,0x6C,0x61,0x6B,0x68,0x63,0x69,0x67, - 0x65,0x6E,0x6D,0x70,0x81,0x85,0x97,0xB7,0xAF,0x9B,0x96,0x8E,0x91,0x8B,0x8A,0x95, - 0x8B,0x85,0x8B,0x8F,0x8D,0x83,0x7B,0x90,0x92,0x7C,0x85,0x8B,0x87,0x86,0x84,0x8C, - 0x98,0x8F,0x89,0x8E,0x8F,0x98,0x98,0x92,0x9F,0x9C,0x94,0x93,0x8D,0xA0,0x9D,0x8A, - 0x98,0x97,0x92,0x95,0x86,0x97,0xA8,0x88,0x8A,0x95,0x86,0x89,0x84,0x8B,0x99,0x80, - 0x7E,0x97,0x92,0x8B,0x86,0x86,0x84,0x74,0x71,0x76,0x89,0x80,0x72,0x83,0x82,0x7A, - 0x6C,0x65,0x72,0x67,0x4E,0x57,0x61,0x5F,0x5E,0x59,0x6B,0x73,0x5D,0x64,0x6C,0x5F, - 0x5A,0x5A,0x61,0x67,0x5E,0x60,0x79,0x74,0x5A,0x66,0x6D,0x6A,0x61,0x57,0x6D,0x64, - 0x55,0x69,0x74,0x7B,0x7B,0x86,0xA3,0xA9,0x97,0x9C,0x9E,0x8D,0x89,0x89,0x8D,0x86, - 0x7A,0x87,0x9D,0x8E,0x83,0x91,0x8E,0x85,0x79,0x80,0x91,0x7B,0x7A,0x94,0x94,0x91, - 0x8E,0x97,0xA0,0x91,0x95,0xA5,0x9D,0x95,0x98,0xA0,0x98,0x8A,0x89,0x9D,0xA9,0x92, - 0x9B,0xA6,0x99,0x8D,0x88,0x98,0x8E,0x7B,0x91,0x9C,0x8D,0x8B,0x94,0x9A,0x8C,0x7E, - 0x8C,0x8D,0x81,0x83,0x8B,0x84,0x7D,0x79,0x7B,0x8F,0x7D,0x71,0x88,0x7F,0x70,0x69, - 0x6C,0x71,0x64,0x61,0x72,0x6D,0x64,0x6E,0x6F,0x6C,0x62,0x61,0x68,0x59,0x5D,0x66, - 0x67,0x65,0x68,0x62,0x68,0x77,0x61,0x6B,0x74,0x5B,0x5B,0x5C,0x5E,0x5C,0x54,0x64, - 0x73,0x6E,0x75,0x87,0x8C,0x8B,0x8D,0xA1,0x9E,0x8F,0x99,0x99,0x8F,0x8C,0x89,0x84, - 0x96,0x92,0x80,0x92,0x8A,0x75,0x7A,0x7B,0x7A,0x79,0x7C,0x8F,0x93,0x8A,0x94,0x96, - 0x91,0x8A,0x8C,0x9B,0x8F,0x96,0xA2,0x99,0x97,0x97,0x90,0x93,0xA9,0x9C,0x99,0xAA, - 0x96,0x8C,0x92,0x91,0x90,0x88,0x94,0xA0,0x94,0x95,0x9B,0x94,0x8E,0x8A,0x8A,0x8A, - 0x83,0x8C,0x90,0x85,0x82,0x80,0x76,0x87,0x90,0x7B,0x8B,0x8F,0x74,0x71,0x6F,0x67, - 0x68,0x61,0x6B,0x72,0x64,0x6E,0x6E,0x64,0x66,0x62,0x65,0x60,0x5A,0x63,0x63,0x5F, - 0x60,0x62,0x59,0x6D,0x70,0x5A,0x72,0x6A,0x53,0x5C,0x57,0x56,0x55,0x56,0x68,0x6A, - 0x66,0x75,0x7A,0x78,0x7F,0x89,0x90,0x93,0x9A,0xA2,0xA0,0x90,0x94,0x8C,0x83,0x9C, - 0x88,0x85,0x9A,0x82,0x79,0x7D,0x79,0x7F,0x78,0x7F,0x93,0x84,0x88,0x9D,0x8C,0x88, - 0x91,0x91,0x8F,0x93,0x9C,0x99,0x96,0x98,0x97,0x8D,0x9E,0xAC,0x93,0xA4,0xAB,0x94, - 0x98,0x92,0x8D,0x91,0x89,0x96,0xA0,0x8F,0x9C,0x9E,0x8E,0x91,0x8D,0x8B,0x87,0x86, - 0x8E,0x88,0x7D,0x85,0x7E,0x77,0x94,0x84,0x7B,0x97,0x7F,0x6F,0x7A,0x71,0x6C,0x66, - 0x68,0x78,0x68,0x65,0x79,0x67,0x5E,0x67,0x61,0x5F,0x5C,0x62,0x63,0x5C,0x5E,0x5F, - 0x53,0x65,0x72,0x57,0x6B,0x73,0x59,0x5A,0x5C,0x57,0x53,0x51,0x63,0x68,0x5E,0x6F, - 0x78,0x6E,0x78,0x7E,0x83,0x89,0x8E,0x9F,0x9B,0x91,0x99,0x8E,0x86,0xA5,0x90,0x84, - 0xA3,0x8B,0x78,0x85,0x7F,0x7B,0x78,0x79,0x87,0x80,0x7F,0x91,0x88,0x83,0x93,0x8B, - 0x8A,0x90,0x90,0x96,0x8E,0x8E,0x95,0x85,0x94,0xAA,0x90,0x9C,0xAF,0x95,0x96,0x9A, - 0x8E,0x91,0x8C,0x93,0x9B,0x8F,0x98,0x9B,0x8C,0x90,0x92,0x89,0x89,0x8C,0x8C,0x87, - 0x82,0x84,0x81,0x77,0x93,0x8E,0x79,0x97,0x89,0x70,0x7B,0x75,0x70,0x6C,0x66,0x71, - 0x72,0x6A,0x74,0x72,0x63,0x68,0x67,0x5E,0x5F,0x64,0x65,0x5E,0x5C,0x63,0x56,0x61, - 0x7E,0x61,0x64,0x7A,0x5B,0x55,0x5D,0x54,0x53,0x53,0x59,0x65,0x5D,0x64,0x71,0x69, - 0x6C,0x74,0x78,0x7B,0x82,0x8C,0x92,0x91,0x95,0x97,0x8A,0xA6,0xA8,0x8C,0xA4,0x9C, - 0x86,0x8B,0x82,0x7F,0x7F,0x79,0x8B,0x8B,0x7E,0x8E,0x90,0x86,0x8C,0x90,0x8E,0x8F, - 0x91,0x96,0x90,0x8A,0x93,0x86,0x8A,0xAF,0x9B,0x94,0xB5,0x9C,0x8F,0x99,0x8F,0x92, - 0x8C,0x8E,0xA2,0x94,0x90,0xA1,0x95,0x8F,0x92,0x90,0x90,0x8D,0x90,0x91,0x8A,0x86, - 0x88,0x7A,0x8C,0x9D,0x81,0x92,0x9B,0x7D,0x7F,0x7B,0x76,0x78,0x6A,0x77,0x7E,0x6E, - 0x75,0x78,0x6B,0x6B,0x69,0x68,0x67,0x64,0x66,0x65,0x61,0x5A,0x57,0x52,0x6D,0x6A, - 0x57,0x76,0x69,0x54,0x5B,0x52,0x53,0x50,0x4B,0x60,0x60,0x56,0x65,0x64,0x60,0x67, - 0x69,0x74,0x77,0x7D,0x8A,0x8D,0x92,0x92,0x8D,0x95,0xB0,0x9B,0x96,0xAD,0x9A,0x8A, - 0x87,0x86,0x86,0x7C,0x7E,0x93,0x89,0x83,0x8E,0x88,0x87,0x82,0x85,0x8F,0x8B,0x8B, - 0x93,0x90,0x8B,0x8B,0x80,0x92,0xAB,0x92,0x9B,0xB0,0x9C,0x91,0x8D,0x91,0x97,0x86, - 0x92,0xA3,0x96,0x96,0x93,0x92,0x94,0x8A,0x8E,0x94,0x91,0x91,0x8F,0x8E,0x86,0x80, - 0x7C,0x92,0xA1,0x84,0x92,0x9C,0x84,0x7D,0x74,0x80,0x85,0x6E,0x7B,0x84,0x79,0x74, - 0x6B,0x72,0x71,0x62,0x69,0x6F,0x6C,0x63,0x60,0x62,0x5B,0x51,0x4C,0x6A,0x75,0x59, - 0x67,0x6B,0x5B,0x52,0x46,0x5A,0x5C,0x4D,0x5B,0x63,0x60,0x5B,0x56,0x62,0x69,0x63, - 0x6D,0x79,0x80,0x7C,0x7F,0x86,0x87,0x85,0x8F,0xB2,0xAF,0x9D,0xA9,0xA1,0x94,0x84, - 0x7C,0x95,0x94,0x86,0x8D,0x91,0x90,0x84,0x7C,0x86,0x8A,0x88,0x88,0x8F,0x90,0x89, - 0x89,0x87,0x88,0x81,0x92,0xAD,0x9E,0x97,0x9E,0x95,0x91,0x84,0x89,0x9D,0x98,0x98, - 0x99,0x99,0x98,0x8A,0x86,0x90,0x94,0x92,0x90,0x96,0x91,0x8A,0x86,0x7E,0x80,0x82, - 0x98,0x9F,0x8E,0x92,0x8E,0x88,0x7B,0x6F,0x7E,0x89,0x80,0x7E,0x7D,0x7B,0x7A,0x6C, - 0x6C,0x71,0x72,0x71,0x6C,0x6D,0x69,0x62,0x5A,0x5B,0x56,0x5E,0x78,0x6D,0x66,0x67, - 0x5B,0x59,0x4D,0x4B,0x5D,0x60,0x5D,0x5A,0x5A,0x5F,0x5B,0x57,0x5C,0x67,0x6A,0x6A, - 0x70,0x74,0x7B,0x79,0x79,0x7F,0x83,0xA3,0xB1,0xA4,0xA2,0x96,0x97,0x92,0x83,0x8A, - 0x95,0x96,0x91,0x88,0x88,0x8E,0x86,0x80,0x82,0x8A,0x91,0x8A,0x84,0x87,0x8A,0x83, - 0x7F,0x7A,0x89,0xA5,0xA3,0x95,0x8F,0x8E,0x92,0x8B,0x83,0x8D,0x9A,0xA0,0x98,0x8B, - 0x91,0x95,0x91,0x89,0x88,0x96,0x99,0x90,0x8A,0x8A,0x89,0x86,0x7E,0x7C,0x97,0xA3, - 0x98,0x8E,0x81,0x85,0x89,0x7C,0x7A,0x80,0x8B,0x8D,0x81,0x78,0x79,0x7F,0x7C,0x73, - 0x71,0x79,0x7B,0x71,0x6B,0x6B,0x68,0x63,0x59,0x64,0x7C,0x7A,0x6E,0x5D,0x59,0x5D, - 0x5B,0x55,0x54,0x5D,0x64,0x64,0x5C,0x56,0x5A,0x64,0x62,0x5D,0x63,0x6A,0x6F,0x70, - 0x6E,0x70,0x75,0x72,0x7C,0x98,0xA5,0xA1,0x98,0x90,0x91,0x93,0x8D,0x8C,0x8E,0x94, - 0x96,0x90,0x8A,0x85,0x8A,0x8A,0x85,0x84,0x86,0x88,0x8B,0x86,0x80,0x7F,0x7B,0x7A, - 0x90,0xA1,0x9B,0x96,0x8B,0x89,0x8D,0x8A,0x87,0x89,0x8F,0x97,0x9B,0x95,0x90,0x90, - 0x91,0x92,0x91,0x8F,0x93,0x95,0x92,0x8F,0x88,0x85,0x7F,0x8E,0xA3,0xA3,0x9B,0x8E, - 0x86,0x89,0x88,0x85,0x83,0x83,0x89,0x8B,0x8B,0x88,0x81,0x7E,0x7E,0x7E,0x7C,0x7A, - 0x79,0x77,0x74,0x6D,0x6A,0x64,0x66,0x77,0x79,0x71,0x6A,0x60,0x60,0x62,0x5D,0x5D, - 0x5B,0x59,0x5B,0x5B,0x5C,0x5F,0x5E,0x5E,0x61,0x60,0x63,0x66,0x67,0x6B,0x70,0x73, - 0x76,0x77,0x7A,0x87,0x8E,0x8E,0x93,0x95,0x98,0x9F,0x9D,0x99,0x9C,0x93,0x95,0x96, - 0x8E,0x8F,0x8B,0x86,0x87,0x84,0x82,0x85,0x83,0x83,0x83,0x83,0x85,0x82,0x85,0x8B, - 0x89,0x89,0x8B,0x8A,0x91,0x8F,0x8E,0x92,0x8F,0x8E,0x91,0x90,0x8F,0x8E,0x8B,0x8B, - 0x8C,0x8D,0x8C,0x8F,0x8F,0x8E,0x8F,0x8D,0x8E,0x89,0x8F,0x94,0x8E,0x90,0x90,0x8D, - 0x92,0x91,0x8B,0x8D,0x88,0x87,0x89,0x86,0x84,0x81,0x7D,0x7C,0x7D,0x79,0x7A,0x7B, - 0x78,0x78,0x76,0x73,0x71,0x6C,0x6F,0x72,0x6B,0x6C,0x6B,0x66,0x6C,0x6A,0x65,0x66, - 0x62,0x5F,0x60,0x5C,0x5E,0x5C,0x5B,0x60,0x60,0x64,0x67,0x69,0x6C,0x71,0x75,0x77, - 0x7A,0x7C,0x82,0x8B,0x8C,0x8F,0x95,0x92,0x99,0x9C,0x96,0x9A,0x95,0x92,0x94,0x8C, - 0x8A,0x88,0x82,0x85,0x83,0x80,0x84,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x86, - 0x87,0x85,0x89,0x88,0x89,0x8E,0x8B,0x8B,0x8D,0x88,0x8B,0x8A,0x87,0x8A,0x85,0x86, - 0x8B,0x88,0x8B,0x8C,0x8B,0x8D,0x8D,0x8E,0x8B,0x8D,0x8D,0x8D,0x90,0x90,0x8E,0x8F, - 0x8F,0x8B,0x8E,0x8B,0x8C,0x8A,0x86,0x89,0x84,0x80,0x82,0x7F,0x7B,0x7D,0x7A,0x79, - 0x79,0x75,0x75,0x75,0x74,0x72,0x6F,0x6F,0x6D,0x6C,0x6E,0x6A,0x69,0x69,0x64,0x65, - 0x65,0x60,0x63,0x63,0x61,0x64,0x64,0x64,0x66,0x66,0x69,0x6C,0x6D,0x72,0x74,0x75, - 0x7C,0x7D,0x82,0x87,0x86,0x8B,0x8E,0x8D,0x8F,0x8F,0x8D,0x8D,0x8B,0x8B,0x8C,0x89, - 0x89,0x8A,0x88,0x87,0x87,0x85,0x84,0x85,0x82,0x83,0x83,0x82,0x83,0x85,0x84,0x84, - 0x86,0x86,0x87,0x89,0x89,0x89,0x89,0x88,0x89,0x8B,0x89,0x88,0x88,0x88,0x86,0x87, - 0x87,0x85,0x84,0x85,0x84,0x82,0x83,0x82,0x81,0x81,0x81,0x80,0x80,0x82,0x82,0x83, - 0x85,0x82,0x82,0x84,0x84,0x87,0x85,0x81,0x84,0x83,0x83,0x82,0x7F,0x7F,0x7F,0x7D, - 0x7E,0x7C,0x78,0x79,0x77,0x77,0x75,0x75,0x73,0x73,0x73,0x73,0x74,0x72,0x72,0x73, - 0x73,0x73,0x75,0x74,0x76,0x78,0x78,0x79,0x77,0x7A,0x7C,0x7C,0x7D,0x7E,0x7E,0x7F, - 0x7F,0x80,0x80,0x81,0x82,0x82,0x83,0x82,0x81,0x81,0x81,0x80,0x81,0x82,0x81,0x80, - 0x80,0x81,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7E,0x80,0x80, - 0x80,0x7F,0x80,0x7F,0x7E,0x7F,0x7F,0x7E,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x80,0x81, - 0x80,0x80,0x82,0x81,0x82,0x82,0x83,0x83,0x83,0x84,0x83,0x85,0x86,0x86,0x87,0x86, - 0x85,0x85,0x86,0x85,0x85,0x83,0x85,0x85,0x83,0x84,0x84,0x82,0x82,0x82,0x80,0x81, - 0x80,0x80,0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7E,0x7F,0x7F,0x7E,0x7F, - 0x7E,0x7E,0x80,0x80,0x7F,0x80,0x81,0x7F,0x7F,0x82,0x81,0x7F,0x80,0x80,0x81,0x80, - 0x81,0x81,0x83,0x84,0x82,0x84,0x84,0x82,0x82,0x84,0x84,0x83,0x82,0x83,0x82,0x84, - 0x84,0x82,0x83,0x83,0x83,0x80,0x80,0x80,0x7F,0x80,0x7F,0x7D,0x7F,0x7E,0x7F,0x80, - 0x7E,0x7D,0x7D,0x7D,0x7E,0x7D,0x7E,0x7E,0x7D,0x7E,0x7C,0x7D,0x7F,0x7F,0x81,0x81, - 0x7F,0x81,0x82,0x82,0x83,0x81,0x83,0x82,0x81,0x94,0x83,0x86,0x84,0x65,0x7F,0x81, - 0x6C,0x6A,0x78,0x80,0x87,0x8C,0x8F,0x8D,0x89,0x97,0xA0,0x9D,0x98,0x93,0x90,0x8B, - 0x89,0x86,0x81,0x78,0x6E,0x63,0x5E,0x5C,0x5A,0x56,0x54,0x5E,0x64,0x68,0x6E,0x70, - 0x76,0x7B,0x7E,0x82,0x85,0x87,0x8A,0x8A,0x8C,0x8F,0x9A,0xA2,0xAC,0xB6,0xB2,0xB3, - 0xB1,0xAB,0xA5,0xA0,0x9B,0x94,0x91,0x8C,0x87,0x82,0x7E,0x7B,0x76,0x77,0x76,0x72, - 0x71,0x72,0x6F,0x6C,0x68,0x5D,0x57,0x50,0x48,0x4C,0x49,0x4C,0x51,0x56,0x5D,0x5F, - 0x66,0x6D,0x70,0x76,0x7B,0x7D,0x85,0x85,0x86,0x8D,0x8E,0x8F,0x90,0x97,0xA0,0xA7, - 0xAC,0xAF,0xAF,0xB1,0xB2,0xAF,0xAC,0xA9,0xA1,0x9D,0x96,0x8F,0x8B,0x86,0x83,0x7F, - 0x7A,0x7A,0x76,0x71,0x6C,0x60,0x5B,0x53,0x4D,0x51,0x50,0x50,0x56,0x5A,0x61,0x6C, - 0x72,0x78,0x7D,0x80,0x85,0x88,0x8A,0x89,0x8A,0x8A,0x89,0x8B,0x83,0x87,0x90,0x9A, - 0xA6,0xA7,0xA6,0xA4,0xA4,0xA6,0x9F,0x97,0x92,0x90,0x8B,0x8A,0x8B,0x86,0x80,0x7F, - 0x7F,0x7B,0x79,0x78,0x78,0x7A,0x76,0x78,0x76,0x6D,0x6D,0x69,0x61,0x5C,0x56,0x52, - 0x4D,0x4D,0x4D,0x4E,0x54,0x57,0x5E,0x62,0x64,0x6E,0x70,0x72,0x77,0x7A,0x7F,0x85, - 0x87,0x8C,0x97,0x9C,0xA3,0xAB,0xAD,0xB1,0xB6,0xBB,0xBD,0xBE,0xBB,0xBE,0xBD,0xB4, - 0xB6,0xB4,0xAE,0xA8,0x9E,0x99,0x96,0x88,0x7F,0x7C,0x75,0x73,0x71,0x6B,0x68,0x63, - 0x5C,0x56,0x55,0x54,0x4F,0x4A,0x49,0x48,0x46,0x47,0x44,0x41,0x52,0x5F,0x57,0x57, - 0x5A,0x5F,0x67,0x60,0x62,0x6C,0x6E,0x77,0x7C,0x82,0x92,0x95,0x97,0x9F,0xA2,0xA5, - 0xA9,0xAE,0xB4,0xB8,0xB9,0xBC,0xBA,0xBC,0xCA,0xC8,0xC1,0xC5,0xC0,0xBC,0xB3,0xA8, - 0xAA,0xA5,0x9A,0x99,0x96,0x90,0x90,0x83,0x77,0x76,0x69,0x63,0x5F,0x55,0x59,0x56, - 0x53,0x50,0x48,0x55,0x58,0x4C,0x51,0x50,0x49,0x47,0x37,0x3D,0x4E,0x45,0x48,0x55, - 0x5D,0x69,0x65,0x64,0x6E,0x6B,0x67,0x68,0x6D,0x75,0x75,0x75,0x7B,0x7F,0x88,0x90, - 0x8F,0x95,0x9D,0x9E,0x9F,0x9B,0xA2,0xAD,0xA9,0xAB,0xB6,0xBA,0xBE,0xBB,0xB6,0xBF, - 0xBC,0xB3,0xB6,0xB5,0xB3,0xAB,0xA3,0xA6,0x9A,0x93,0xA2,0x98,0x8F,0x91,0x84,0x7F, - 0x71,0x63,0x68,0x62,0x56,0x5B,0x5D,0x61,0x62,0x52,0x56,0x58,0x4E,0x50,0x51,0x52, - 0x54,0x50,0x53,0x5A,0x55,0x65,0x70,0x62,0x6E,0x72,0x6F,0x70,0x62,0x6B,0x76,0x6B, - 0x72,0x7F,0x84,0x8D,0x88,0x88,0x96,0x8C,0x87,0x8E,0x8D,0x90,0x8E,0x8D,0x96,0x90, - 0x9B,0xB0,0xA4,0xA4,0xAB,0xA4,0xA2,0x98,0x97,0xA3,0x9A,0x92,0x9C,0x9B,0x9E,0x98, - 0x90,0x9A,0x91,0x85,0x88,0x87,0x84,0x7F,0x7C,0x7E,0x7D,0x75,0x7F,0x86,0x77,0x79, - 0x7A,0x77,0x74,0x60,0x6B,0x74,0x64,0x6A,0x75,0x78,0x78,0x71,0x75,0x7A,0x6D,0x6B, - 0x72,0x72,0x6F,0x6C,0x6C,0x70,0x65,0x67,0x80,0x71,0x69,0x76,0x70,0x6E,0x5F,0x60, - 0x75,0x66,0x5F,0x73,0x78,0x78,0x75,0x78,0x85,0x7B,0x76,0x7F,0x83,0x82,0x81,0x88, - 0x8B,0x8F,0x8D,0x97,0xAD,0x9D,0x9F,0xB1,0xA7,0xA1,0x98,0x9F,0xAA,0x97,0x97,0xA5, - 0xA2,0xA0,0x9E,0x9F,0xA0,0x93,0x8D,0x94,0x8E,0x88,0x8E,0x8C,0x89,0x83,0x7D,0x9A, - 0x8D,0x7A,0x91,0x89,0x7E,0x71,0x6C,0x80,0x6C,0x60,0x78,0x74,0x6D,0x6E,0x70,0x76, - 0x67,0x61,0x6A,0x61,0x5E,0x61,0x63,0x5F,0x5B,0x61,0x64,0x73,0x67,0x62,0x77,0x6C, - 0x64,0x65,0x67,0x6F,0x66,0x6B,0x80,0x7C,0x7A,0x8B,0x90,0x8D,0x89,0x8D,0x92,0x8D, - 0x8C,0x94,0x91,0x8F,0x91,0x85,0x9E,0xA4,0x87,0xA0,0xA5,0x91,0x8E,0x87,0x95,0x8A, - 0x79,0x95,0x95,0x87,0x94,0x98,0x9A,0x90,0x8D,0x99,0x8B,0x89,0x91,0x8D,0x8C,0x8B, - 0x8B,0x86,0x98,0x94,0x85,0x99,0x8F,0x81,0x82,0x7E,0x80,0x73,0x71,0x81,0x78,0x74, - 0x81,0x81,0x7B,0x76,0x78,0x76,0x6D,0x6F,0x71,0x6C,0x69,0x70,0x63,0x6F,0x87,0x67, - 0x76,0x85,0x6D,0x6E,0x67,0x6E,0x69,0x57,0x6F,0x71,0x60,0x6F,0x75,0x71,0x6C,0x6C, - 0x73,0x64,0x63,0x6B,0x65,0x62,0x66,0x6B,0x61,0x79,0x7D,0x68,0x83,0x7D,0x70,0x76, - 0x71,0x79,0x6E,0x6D,0x83,0x7B,0x7A,0x8D,0x90,0x8C,0x8D,0x94,0x92,0x8B,0x91,0x93, - 0x90,0x91,0x99,0x8D,0x94,0xB3,0x96,0x9D,0xB4,0x9D,0x9C,0x99,0x9B,0x98,0x84,0x96, - 0x9C,0x88,0x95,0xA1,0x9B,0x95,0x9A,0xA0,0x91,0x8F,0x97,0x8D,0x8A,0x8D,0x91,0x81, - 0x8E,0xA3,0x85,0x93,0xA2,0x8D,0x87,0x85,0x88,0x7D,0x70,0x81,0x7E,0x70,0x7D,0x82, - 0x77,0x71,0x79,0x77,0x66,0x6B,0x6D,0x65,0x62,0x66,0x64,0x58,0x73,0x6D,0x5B,0x77, - 0x6D,0x63,0x65,0x63,0x68,0x59,0x5E,0x6D,0x5D,0x5F,0x6F,0x6A,0x66,0x69,0x70,0x68, - 0x60,0x6D,0x66,0x61,0x66,0x68,0x62,0x64,0x81,0x6F,0x6E,0x87,0x76,0x74,0x74,0x77, - 0x76,0x6A,0x7A,0x80,0x72,0x80,0x8A,0x82,0x82,0x86,0x8D,0x81,0x83,0x91,0x86,0x87, - 0x8D,0x8D,0x84,0x8F,0xA6,0x8C,0x9C,0xAC,0x95,0x99,0x9A,0x9B,0x93,0x8D,0xA0,0x99, - 0x92,0xA4,0xA4,0x9C,0x9E,0xA4,0xA3,0x96,0x9D,0xA3,0x94,0x99,0x9A,0x95,0x8C,0x9D, - 0xAB,0x8D,0xA5,0xAC,0x94,0x98,0x98,0x96,0x88,0x86,0x96,0x8A,0x84,0x95,0x8F,0x86, - 0x88,0x8C,0x87,0x7A,0x84,0x84,0x76,0x7B,0x7A,0x72,0x69,0x82,0x82,0x6B,0x89,0x80, - 0x6D,0x74,0x71,0x6F,0x60,0x66,0x72,0x60,0x64,0x71,0x67,0x63,0x66,0x68,0x61,0x5A, - 0x64,0x5F,0x57,0x5D,0x5A,0x55,0x4F,0x6B,0x64,0x54,0x77,0x67,0x5A,0x64,0x62,0x5F, - 0x53,0x5F,0x68,0x5A,0x65,0x72,0x69,0x69,0x70,0x75,0x6E,0x6B,0x7A,0x72,0x6F,0x77, - 0x77,0x6F,0x6F,0x90,0x80,0x7A,0x9C,0x87,0x81,0x8A,0x89,0x85,0x7A,0x8A,0x8E,0x80, - 0x8F,0x97,0x8C,0x90,0x96,0x98,0x91,0x91,0xA0,0x96,0x95,0x9C,0x9B,0x93,0x95,0xB5, - 0x9E,0x9F,0xBD,0xA2,0xA0,0xA7,0xA4,0x9B,0x94,0xA4,0xA1,0x95,0xA3,0xA8,0x9D,0x9D, - 0xA4,0xA2,0x97,0x98,0xA1,0x95,0x92,0x97,0x94,0x87,0x8C,0xA9,0x8D,0x93,0xAB,0x8C, - 0x8E,0x92,0x8C,0x83,0x7D,0x8C,0x85,0x7C,0x8B,0x8A,0x7E,0x82,0x85,0x81,0x77,0x79, - 0x80,0x71,0x71,0x76,0x6F,0x63,0x6C,0x85,0x67,0x72,0x87,0x68,0x6C,0x70,0x6A,0x61, - 0x5E,0x6B,0x63,0x5D,0x6D,0x6B,0x61,0x68,0x6B,0x66,0x5F,0x64,0x69,0x5B,0x5E,0x61, - 0x5A,0x51,0x60,0x73,0x56,0x6B,0x78,0x5C,0x66,0x6A,0x63,0x5C,0x60,0x6B,0x63,0x62, - 0x73,0x71,0x6A,0x75,0x78,0x73,0x72,0x7A,0x7D,0x74,0x7A,0x7C,0x77,0x6F,0x85,0x92, - 0x76,0x94,0x9A,0x7F,0x8C,0x8D,0x84,0x7D,0x85,0x8C,0x83,0x86,0x94,0x8F,0x89,0x95, - 0x96,0x8F,0x8F,0x99,0x95,0x8D,0x95,0x93,0x8C,0x87,0xA2,0xA1,0x8D,0xB0,0xA9,0x93, - 0xA2,0x9F,0x93,0x8F,0x98,0x98,0x8E,0x95,0x9F,0x95,0x93,0x9B,0x97,0x91,0x93,0x97, - 0x8E,0x8C,0x8F,0x8A,0x81,0x80,0x99,0x8A,0x81,0xA4,0x8C,0x7E,0x91,0x86,0x78,0x7E, - 0x85,0x7E,0x7A,0x85,0x87,0x7D,0x83,0x8A,0x82,0x81,0x86,0x85,0x7D,0x7F,0x7F,0x7A, - 0x71,0x7A,0x8E,0x75,0x80,0x96,0x74,0x77,0x87,0x71,0x6A,0x75,0x71,0x6B,0x6E,0x75, - 0x72,0x6D,0x75,0x77,0x6E,0x72,0x75,0x70,0x6E,0x71,0x6F,0x6C,0x65,0x7A,0x80,0x6B, - 0x87,0x8A,0x6C,0x7F,0x85,0x6C,0x73,0x7C,0x72,0x74,0x7A,0x7C,0x79,0x79,0x80,0x7F, - 0x7A,0x7D,0x7E,0x78,0x78,0x78,0x76,0x71,0x6F,0x85,0x7C,0x74,0x91,0x81,0x71,0x88, - 0x7E,0x6B,0x7A,0x77,0x6F,0x77,0x79,0x79,0x7A,0x7E,0x81,0x80,0x7F,0x81,0x80,0x7D, - 0x7D,0x7C,0x7C,0x74,0x7C,0x8C,0x7B,0x86,0x95,0x7E,0x80,0x8F,0x78,0x77,0x85,0x76, - 0x76,0x81,0x7B,0x7B,0x82,0x81,0x84,0x86,0x83,0x85,0x85,0x82,0x7F,0x81,0x7E,0x79, - 0x88,0x8A,0x81,0x92,0x92,0x80,0x8D,0x8F,0x79,0x83,0x88,0x79,0x81,0x87,0x7F,0x83, - 0x87,0x84,0x87,0x89,0x85,0x87,0x87,0x81,0x81,0x82,0x7D,0x7D,0x87,0x85,0x83,0x8F, - 0x8B,0x80,0x8A,0x86,0x7A,0x84,0x82,0x79,0x81,0x82,0x7D,0x83,0x83,0x80,0x86,0x85, - 0x83,0x88,0x85,0x81,0x85,0x83,0x7D,0x81,0x87,0x86,0x85,0x8A,0x88,0x84,0x88,0x83, - 0x7F,0x85,0x7E,0x79,0x80,0x7C,0x79,0x7F,0x7C,0x7B,0x82,0x80,0x7D,0x82,0x81,0x7E, - 0x7F,0x7D,0x7B,0x7F,0x83,0x83,0x85,0x89,0x85,0x85,0x89,0x82,0x82,0x86,0x7E,0x7E, - 0x81,0x7B,0x7E,0x81,0x7C,0x80,0x84,0x81,0x82,0x84,0x80,0x80,0x7F,0x7C,0x7C,0x7E, - 0x83,0x82,0x83,0x87,0x82,0x82,0x85,0x7F,0x80,0x81,0x79,0x7B,0x7C,0x76,0x79,0x7C, - 0x77,0x7D,0x81,0x7D,0x81,0x81,0x7D,0x7E,0x7C,0x7A,0x7A,0x7C,0x81,0x80,0x82,0x86, - 0x81,0x82,0x84,0x7E,0x80,0x80,0x78,0x7B,0x7B,0x75,0x7B,0x7B,0x78,0x7F,0x80,0x7E, - 0x82,0x82,0x7F,0x80,0x7D,0x7C,0x7C,0x7E,0x84,0x81,0x83,0x88,0x81,0x83,0x85,0x7E, - 0x80,0x80,0x77,0x7B,0x7B,0x75,0x7B,0x7B,0x77,0x7F,0x80,0x7D,0x82,0x81,0x7F,0x80, - 0x7E,0x7D,0x7C,0x7F,0x85,0x82,0x84,0x8A,0x84,0x85,0x88,0x81,0x83,0x82,0x7A,0x7D, - 0x7D,0x77,0x7C,0x7C,0x78,0x7F,0x80,0x7D,0x83,0x81,0x7E,0x80,0x7D,0x7B,0x7B,0x7D, - 0x84,0x80,0x81,0x89,0x83,0x82,0x87,0x80,0x80,0x82,0x79,0x7B,0x7E,0x77,0x7C,0x7E, - 0x7A,0x81,0x84,0x80,0x86,0x86,0x82,0x85,0x82,0x7F,0x80,0x81,0x86,0x84,0x84,0x8C, - 0x87,0x84,0x8A,0x84,0x81,0x84,0x7D,0x7B,0x7F,0x78,0x79,0x7E,0x79,0x7E,0x82,0x7E, - 0x83,0x85,0x81,0x84,0x82,0x7F,0x80,0x80,0x85,0x85,0x85,0x8B,0x8A,0x85,0x8A,0x87, - 0x82,0x86,0x81,0x7C,0x81,0x7C,0x7A,0x80,0x7B,0x7C,0x82,0x7E,0x80,0x83,0x7E,0x80, - 0x80,0x7B,0x7C,0x7D,0x7F,0x82,0x81,0x85,0x86,0x82,0x86,0x86,0x7F,0x84,0x81,0x7A, - 0x80,0x7D,0x78,0x80,0x7D,0x7C,0x83,0x80,0x80,0x85,0x81,0x81,0x83,0x7F,0x7F,0x7F, - 0x7F,0x83,0x82,0x84,0x87,0x82,0x85,0x86,0x7E,0x82,0x82,0x7A,0x7E,0x7D,0x78,0x7E, - 0x7D,0x7A,0x81,0x81,0x80,0x84,0x83,0x82,0x84,0x81,0x80,0x82,0x81,0x85,0x84,0x84, - 0x88,0x85,0x85,0x87,0x81,0x82,0x83,0x7B,0x7B,0x7C,0x76,0x79,0x7B,0x77,0x7B,0x7E, - 0x7B,0x7F,0x80,0x7E,0x81,0x7F,0x7E,0x80,0x7F,0x83,0x84,0x82,0x87,0x85,0x84,0x87, - 0x82,0x81,0x84,0x7E,0x7C,0x7F,0x7A,0x7A,0x7C,0x79,0x7B,0x7F,0x7D,0x7E,0x81,0x7F, - 0x7F,0x7F,0x7D,0x7E,0x7E,0x80,0x81,0x7F,0x82,0x83,0x81,0x83,0x82,0x7F,0x81,0x7F, - 0x7B,0x7E,0x7C,0x79,0x7D,0x7D,0x7B,0x80,0x80,0x7F,0x84,0x84,0x82,0x84,0x83,0x83, - 0x83,0x83,0x85,0x83,0x83,0x85,0x82,0x81,0x83,0x81,0x80,0x80,0x7D,0x7C,0x7C,0x78, - 0x78,0x7B,0x78,0x79,0x7B,0x79,0x7C,0x7E,0x7D,0x7E,0x7F,0x7F,0x80,0x81,0x82,0x83, - 0x82,0x82,0x83,0x81,0x82,0x83,0x80,0x81,0x81,0x7E,0x7E,0x7D,0x7B,0x7B,0x7B,0x79, - 0x7C,0x7C,0x7C,0x7F,0x7F,0x7F,0x81,0x80,0x81,0x82,0x81,0x83,0x83,0x81,0x82,0x82, - 0x81,0x83,0x82,0x81,0x83,0x81,0x7F,0x7F,0x7F,0x7D,0x7C,0x7D,0x7C,0x7C,0x7D,0x7E, - 0x7E,0x80,0x7F,0x81,0x82,0x81,0x83,0x81,0x81,0x82,0x81,0x82,0x83,0x80,0x80,0x80, - 0x81,0x82,0x8C,0x88,0x66,0x6F,0x86,0x88,0x71,0x78,0x8E,0x6E,0x71,0x81,0x7E,0x7A, - 0x83,0x94,0x83,0x7C,0x87,0x8B,0x80,0x7A,0x8B,0x82,0x75,0x73,0x7B,0x83,0x7F,0x81, - 0x86,0x7F,0x70,0x7B,0x7D,0x7F,0x84,0x7E,0x82,0x79,0x75,0x71,0x6D,0x81,0x8A,0x93, - 0x8D,0x80,0x8B,0x71,0x71,0x93,0x7F,0x75,0x8C,0x80,0x81,0x7B,0x76,0x8A,0x80,0x79, - 0x80,0x7A,0x7C,0x7C,0x7C,0x76,0x6B,0x6F,0x7C,0x86,0x84,0x75,0x73,0x86,0x89,0x88, - 0x8C,0x89,0x8B,0x8F,0x90,0x87,0x86,0x97,0x98,0x8F,0x92,0x8A,0x82,0x92,0x9C,0x8E, - 0x8B,0x94,0x8F,0x8B,0x8C,0x86,0x7A,0x78,0x83,0x89,0x88,0x88,0x7F,0x71,0x6D,0x6C, - 0x61,0x5E,0x70,0x7B,0x75,0x77,0x71,0x69,0x73,0x71,0x66,0x6C,0x68,0x63,0x6C,0x6F, - 0x6D,0x73,0x75,0x77,0x7B,0x72,0x72,0x76,0x74,0x7A,0x81,0x77,0x69,0x72,0x8E,0x9B, - 0x92,0x8D,0x88,0x7C,0x7C,0x78,0x6A,0x6F,0x72,0x73,0x7F,0x84,0x89,0x8E,0x98,0xA2, - 0xB2,0xB1,0x9D,0x93,0x92,0x96,0x90,0x8B,0x85,0x8B,0x9D,0xA1,0x97,0x8E,0x85,0x7D, - 0x83,0x7E,0x7C,0x7C,0x76,0x7E,0x88,0x82,0x7C,0x80,0x84,0x86,0x89,0x85,0x7E,0x83, - 0x88,0x86,0x8C,0x88,0x77,0x79,0x88,0x91,0x8F,0x8D,0x84,0x82,0x8D,0x8B,0x85,0x83, - 0x80,0x80,0x86,0x86,0x86,0x88,0x83,0x8C,0x8D,0x85,0x85,0x82,0x86,0x8D,0x8B,0x87, - 0x80,0x7D,0x89,0x96,0x92,0x91,0x85,0x75,0x7A,0x76,0x71,0x6C,0x65,0x66,0x67,0x68, - 0x69,0x64,0x5B,0x5F,0x5F,0x5E,0x60,0x5E,0x5B,0x5C,0x5F,0x61,0x56,0x56,0x6C,0x75, - 0x77,0x7A,0x6F,0x66,0x6E,0x74,0x71,0x75,0x72,0x70,0x7C,0x80,0x7C,0x7C,0x72,0x69, - 0x70,0x76,0x78,0x7B,0x7A,0x78,0x7A,0x77,0x76,0x80,0x93,0xA8,0xAE,0xB3,0xA8,0x97, - 0x98,0x96,0x92,0x96,0x9D,0x9B,0x9E,0xA1,0x9B,0x97,0x89,0x7E,0x85,0x8C,0x88,0x88, - 0x8A,0x84,0x80,0x85,0x81,0x81,0x8F,0x9C,0x9E,0x9A,0x91,0x81,0x80,0x86,0x82,0x8B, - 0x8E,0x86,0x92,0x97,0x91,0x90,0x8B,0x86,0x8F,0x96,0x95,0x96,0x95,0x8D,0x86,0x88, - 0x80,0x84,0x99,0xA4,0xA4,0xA0,0x99,0x8B,0x86,0x86,0x87,0x8D,0x8E,0x88,0x8C,0x8C, - 0x87,0x8B,0x7F,0x76,0x7C,0x81,0x82,0x7F,0x74,0x64,0x5A,0x56,0x55,0x58,0x6B,0x75, - 0x76,0x74,0x65,0x53,0x4A,0x49,0x52,0x60,0x65,0x62,0x63,0x62,0x60,0x65,0x5D,0x5B, - 0x68,0x6F,0x76,0x76,0x75,0x6E,0x68,0x69,0x63,0x6C,0x79,0x85,0x85,0x83,0x7A,0x69, - 0x6B,0x6C,0x6F,0x79,0x7E,0x81,0x87,0x89,0x8B,0x92,0x92,0x93,0x9D,0xA4,0xA8,0xAB, - 0xA3,0x99,0x91,0x90,0x8F,0x91,0x98,0xA0,0xA2,0x97,0x8C,0x76,0x71,0x74,0x77,0x85, - 0x86,0x89,0x8B,0x89,0x88,0x87,0x80,0x81,0x86,0x8A,0x8E,0x96,0x96,0x8D,0x85,0x82, - 0x85,0x86,0x93,0xA3,0xA6,0xA1,0x99,0x86,0x7D,0x7F,0x84,0x90,0x95,0x98,0x94,0x8D, - 0x8F,0x90,0x8A,0x89,0x8E,0x8F,0x95,0x9A,0x95,0x8E,0x84,0x80,0x7E,0x7D,0x8D,0x9B, - 0x9A,0x92,0x85,0x73,0x66,0x64,0x66,0x6F,0x72,0x72,0x6A,0x62,0x61,0x60,0x5E,0x5B, - 0x5C,0x5D,0x60,0x64,0x63,0x60,0x57,0x51,0x51,0x59,0x68,0x76,0x81,0x7E,0x6E,0x60, - 0x5B,0x57,0x64,0x76,0x77,0x79,0x75,0x72,0x6F,0x6E,0x6E,0x6C,0x6D,0x6D,0x75,0x7A, - 0x7D,0x78,0x76,0x76,0x74,0x7B,0x90,0xA1,0xA6,0xAA,0xA0,0x94,0x8C,0x8F,0x9A,0xA0, - 0xA4,0xA2,0x9B,0x91,0x8F,0x8D,0x88,0x84,0x84,0x82,0x81,0x86,0x88,0x85,0x82,0x7D, - 0x78,0x80,0x91,0x9B,0xA1,0x9E,0x8B,0x7D,0x78,0x7D,0x87,0x91,0x9B,0x98,0x91,0x8C, - 0x8B,0x8E,0x90,0x90,0x8F,0x8F,0x90,0x95,0x95,0x94,0x8F,0x89,0x86,0x8B,0x9B,0xA8, - 0xAA,0x9F,0x91,0x82,0x7A,0x7E,0x86,0x91,0x95,0x90,0x89,0x82,0x82,0x86,0x83,0x80, - 0x79,0x74,0x74,0x71,0x72,0x6E,0x66,0x5C,0x58,0x60,0x6B,0x75,0x75,0x6B,0x5B,0x4E, - 0x4A,0x4E,0x57,0x64,0x6B,0x65,0x61,0x5F,0x62,0x66,0x67,0x67,0x67,0x68,0x6B,0x70, - 0x73,0x70,0x6C,0x68,0x69,0x6E,0x79,0x86,0x87,0x7D,0x71,0x64,0x62,0x6A,0x76,0x82, - 0x86,0x85,0x83,0x81,0x85,0x8B,0x90,0x99,0x9A,0x9A,0x9C,0xA0,0xA0,0x98,0x97,0x8D, - 0x87,0x91,0x9E,0xA1,0x9A,0x8F,0x82,0x74,0x70,0x7B,0x81,0x8C,0x90,0x87,0x84,0x7E, - 0x82,0x87,0x89,0x8A,0x83,0x88,0x8C,0x8B,0x8D,0x89,0x88,0x83,0x87,0x96,0x9E,0xA8, - 0xA4,0x98,0x8A,0x7C,0x7D,0x8A,0x94,0x9A,0x9D,0x94,0x8B,0x8C,0x90,0x91,0x93,0x95, - 0x90,0x8B,0x8E,0x8E,0x89,0x8B,0x89,0x80,0x86,0x8E,0x94,0x97,0x8B,0x7C,0x6D,0x63, - 0x67,0x70,0x78,0x78,0x73,0x6C,0x5E,0x5B,0x5D,0x62,0x67,0x62,0x61,0x5F,0x5F,0x5F, - 0x5D,0x60,0x5B,0x58,0x66,0x6D,0x74,0x7A,0x72,0x68,0x5C,0x59,0x62,0x6F,0x78,0x7B, - 0x77,0x6E,0x68,0x6A,0x72,0x76,0x7B,0x78,0x72,0x74,0x76,0x75,0x76,0x76,0x72,0x75, - 0x86,0x95,0x9F,0xA5,0x9B,0x8F,0x87,0x87,0x93,0xA1,0xA7,0xA5,0x9E,0x91,0x8A,0x89, - 0x8C,0x8F,0x8D,0x8A,0x84,0x82,0x83,0x80,0x82,0x81,0x7A,0x81,0x8B,0x94,0x98,0x97, - 0x8E,0x7C,0x75,0x74,0x83,0x91,0x97,0x99,0x90,0x89,0x85,0x89,0x92,0x96,0x96,0x94, - 0x90,0x8E,0x8E,0x8F,0x93,0x8C,0x88,0x91,0x9C,0xA2,0xA8,0xA4,0x91,0x83,0x7C,0x7E, - 0x8B,0x98,0x9D,0x96,0x8C,0x7F,0x7E,0x7F,0x83,0x85,0x80,0x7B,0x75,0x72,0x70,0x6E, - 0x69,0x62,0x60,0x69,0x72,0x77,0x7A,0x6E,0x5C,0x4E,0x48,0x53,0x64,0x6F,0x75,0x71, - 0x65,0x5E,0x62,0x64,0x67,0x6F,0x6C,0x68,0x69,0x6B,0x6B,0x6B,0x6B,0x66,0x6A,0x78, - 0x81,0x87,0x86,0x76,0x66,0x5E,0x5D,0x68,0x77,0x7F,0x83,0x7B,0x73,0x77,0x7E,0x87, - 0x8F,0x97,0x93,0x91,0x9A,0x98,0x97,0x9A,0x95,0x91,0x94,0x9F,0xA7,0xAA,0xA3,0x90, - 0x7F,0x75,0x74,0x82,0x8C,0x91,0x8F,0x85,0x7D,0x7D,0x81,0x87,0x8D,0x8B,0x88,0x84, - 0x85,0x85,0x85,0x85,0x80,0x80,0x8A,0x96,0xA0,0xA5,0x9B,0x8B,0x7E,0x78,0x82,0x8F, - 0x99,0x9E,0x98,0x8D,0x8A,0x8D,0x90,0x96,0x98,0x93,0x8D,0x8D,0x8E,0x8F,0x8F,0x8C, - 0x84,0x81,0x8C,0x92,0x9B,0x9C,0x8C,0x78,0x69,0x64,0x69,0x77,0x7D,0x7A,0x72,0x67, - 0x60,0x64,0x69,0x6A,0x69,0x65,0x62,0x63,0x68,0x68,0x66,0x63,0x5B,0x5A,0x6A,0x77, - 0x7F,0x81,0x73,0x62,0x58,0x5C,0x64,0x73,0x7B,0x78,0x72,0x6C,0x69,0x6E,0x73,0x74, - 0x74,0x6E,0x6F,0x74,0x74,0x78,0x78,0x76,0x6F,0x76,0x86,0x91,0x9A,0x9C,0x8E,0x7E, - 0x76,0x7A,0x8A,0x99,0x9D,0x98,0x91,0x89,0x8B,0x91,0x94,0x93,0x8D,0x87,0x88,0x8E, - 0x8C,0x8B,0x86,0x80,0x79,0x80,0x90,0x97,0x9C,0x97,0x86,0x75,0x71,0x75,0x83,0x8D, - 0x8C,0x86,0x80,0x7E,0x83,0x87,0x8A,0x88,0x83,0x84,0x88,0x8E,0x8C,0x8A,0x87,0x82, - 0x81,0x8A,0x97,0x9F,0xA1,0x96,0x87,0x79,0x76,0x7D,0x8A,0x90,0x8C,0x85,0x7E,0x7F, - 0x84,0x85,0x86,0x80,0x77,0x78,0x79,0x7C,0x7C,0x77,0x75,0x71,0x6D,0x77,0x82,0x88, - 0x89,0x7D,0x6E,0x64,0x66,0x6D,0x79,0x7E,0x78,0x74,0x70,0x71,0x78,0x7A,0x78,0x76, - 0x70,0x71,0x74,0x77,0x79,0x75,0x71,0x6E,0x68,0x77,0x84,0x88,0x8E,0x80,0x74,0x69, - 0x69,0x72,0x7C,0x82,0x7E,0x7D,0x7B,0x7C,0x83,0x86,0x84,0x81,0x7E,0x80,0x85,0x88, - 0x8A,0x88,0x81,0x7C,0x78,0x82,0x94,0x94,0x99,0x8D,0x7C,0x77,0x70,0x79,0x7F,0x84, - 0x81,0x7B,0x7B,0x7A,0x7E,0x82,0x7F,0x7A,0x78,0x78,0x7C,0x80,0x81,0x7E,0x7B,0x77, - 0x73,0x7E,0x8E,0x93,0x98,0x8E,0x7D,0x7A,0x76,0x7B,0x85,0x8A,0x89,0x84,0x83,0x84, - 0x8A,0x8F,0x8D,0x88,0x84,0x83,0x85,0x88,0x8B,0x89,0x84,0x83,0x7C,0x82,0x93,0x95, - 0x98,0x8F,0x84,0x7D,0x77,0x7F,0x86,0x82,0x83,0x82,0x7B,0x7B,0x82,0x87,0x85,0x85, - 0x81,0x7E,0x7D,0x7F,0x81,0x7E,0x7E,0x7B,0x73,0x78,0x87,0x8B,0x91,0x8C,0x7F,0x7A, - 0x70,0x73,0x7B,0x7C,0x7E,0x7A,0x76,0x78,0x7B,0x80,0x84,0x87,0x82,0x7D,0x7D,0x7D, - 0x80,0x7E,0x81,0x80,0x76,0x7C,0x88,0x90,0x98,0x95,0x87,0x81,0x79,0x79,0x7F,0x81, - 0x85,0x80,0x7B,0x7B,0x7E,0x82,0x85,0x86,0x83,0x7E,0x7C,0x7C,0x7C,0x7A,0x79,0x7A, - 0x72,0x78,0x82,0x86,0x8F,0x8C,0x80,0x7B,0x74,0x76,0x7A,0x7C,0x7E,0x7A,0x78,0x77, - 0x7A,0x80,0x83,0x84,0x83,0x81,0x80,0x81,0x81,0x7F,0x7F,0x7E,0x7A,0x7D,0x87,0x8B, - 0x92,0x91,0x88,0x83,0x7D,0x7C,0x82,0x81,0x81,0x7F,0x7D,0x7B,0x7A,0x81,0x81,0x84, - 0x86,0x82,0x82,0x83,0x80,0x7F,0x7F,0x7E,0x7C,0x7B,0x85,0x87,0x88,0x88,0x81,0x80, - 0x7C,0x7C,0x80,0x81,0x80,0x7D,0x79,0x78,0x78,0x79,0x79,0x7A,0x7C,0x7B,0x7B,0x7B, - 0x7B,0x7E,0x7E,0x7E,0x7D,0x7D,0x84,0x83,0x85,0x86,0x7F,0x80,0x81,0x80,0x85,0x86, - 0x86,0x85,0x81,0x80,0x7D,0x7E,0x7F,0x7F,0x81,0x80,0x7F,0x80,0x80,0x83,0x83,0x83, - 0x82,0x7F,0x86,0x85,0x85,0x87,0x7F,0x7E,0x7E,0x7D,0x83,0x81,0x80,0x7F,0x7A,0x79, - 0x77,0x77,0x76,0x7A,0x7A,0x79,0x7A,0x7B,0x7C,0x7F,0x80,0x80,0x81,0x7D,0x84,0x86, - 0x86,0x89,0x84,0x82,0x84,0x81,0x85,0x87,0x83,0x83,0x80,0x7E,0x7D,0x7C,0x7C,0x7E, - 0x7F,0x7F,0x7F,0x7E,0x7E,0x80,0x82,0x83,0x83,0x80,0x84,0x88,0x84,0x89,0x87,0x82, - 0x85,0x82,0x84,0x87,0x83,0x82,0x81,0x7C,0x7C,0x79,0x7A,0x7B,0x7B,0x7C,0x7B,0x7B, - 0x7C,0x7D,0x7F,0x81,0x80,0x7F,0x80,0x85,0x83,0x85,0x85,0x7F,0x82,0x82,0x80,0x85, - 0x82,0x80,0x80,0x7A,0x7C,0x7B,0x7A,0x7E,0x7C,0x7D,0x7D,0x7B,0x7E,0x7F,0x80,0x83, - 0x82,0x82,0x82,0x85,0x85,0x86,0x87,0x82,0x83,0x84,0x81,0x85,0x84,0x80,0x81,0x7C, - 0x7C,0x7C,0x79,0x7D,0x7B,0x7B,0x7B,0x78,0x7B,0x7D,0x7C,0x7E,0x7F,0x7E,0x7F,0x82, - 0x82,0x82,0x84,0x81,0x80,0x81,0x80,0x83,0x82,0x80,0x80,0x7C,0x7C,0x7D,0x7A,0x7D, - 0x7D,0x7A,0x7C,0x7B,0x7B,0x7E,0x7F,0x81,0x81,0x81,0x81,0x83,0x85,0x86,0x87,0x86, - 0x84,0x86,0x84,0x85,0x86,0x82,0x82,0x80,0x7E,0x80,0x7E,0x7E,0x7E,0x7B,0x7C,0x7C, - 0x7C,0x7E,0x7E,0x80,0x80,0x81,0x81,0x81,0x83,0x84,0x85,0x85,0x82,0x82,0x83,0x82, - 0x83,0x81,0x80,0x7F,0x7D,0x7E,0x7D,0x7C,0x7E,0x7C,0x7A,0x7C,0x7A,0x7C,0x7F,0x7E, - 0x7F,0x80,0x81,0x80,0x82,0x84,0x83,0x85,0x85,0x83,0x84,0x83,0x84,0x84,0x82,0x83, - 0x80,0x7F,0x81,0x7E,0x7D,0x7E,0x7B,0x7B,0x7C,0x7D,0x7E,0x7D,0x7E,0x7F,0x80,0x81, - 0x80,0x82,0x83,0x83,0x86,0x84,0x82,0x83,0x82,0x83,0x83,0x81,0x81,0x7F,0x7F,0x7F, - 0x7C,0x7C,0x7C,0x79,0x7B,0x7C,0x7B,0x7B,0x7C,0x7D,0x7D,0x7F,0x7F,0x7D,0x81,0x84, - 0x84,0x86,0x84,0x82,0x83,0x83,0x85,0x85,0x83,0x83,0x81,0x80,0x80,0x7E,0x7F,0x7D, - 0x7C,0x7F,0x7D,0x7E,0x80,0x7F,0x7E,0x80,0x81,0x80,0x80,0x83,0x83,0x84,0x85,0x82, - 0x81,0x82,0x82,0x85,0x85,0x83,0x82,0x80,0x7F,0x7F,0x7E,0x7E,0x7E,0x7C,0x7E,0x7D, - 0x7D,0x7F,0x7E,0x7C,0x7D,0x7F,0x80,0x82,0x81,0x82,0x82,0x82,0x84,0x82,0x84,0x84, - 0x84,0x86,0x83,0x81,0x80,0x80,0x80,0x80,0x7E,0x7E,0x7E,0x7E,0x7C,0x7D,0x7E,0x7C, - 0x8D,0x80,0x83,0x82,0x65,0x7F,0x7F,0x6B,0x6B,0x7B,0x83,0x89,0x8E,0x8E,0x8F,0x8A, - 0x97,0xA3,0x9E,0xA8,0xA3,0x91,0x88,0x76,0x82,0x8C,0x69,0x62,0x71,0x63,0x51,0x52, - 0x49,0x52,0x6D,0x6A,0x5D,0x50,0x63,0x73,0x6B,0x71,0x7B,0x99,0x8E,0x8A,0xA7,0x91, - 0x9C,0xA6,0x9B,0x9F,0xA7,0xAB,0x95,0xAA,0xAF,0x9C,0xA6,0xA3,0x85,0x88,0x8F,0x7E, - 0x7D,0x5B,0x6E,0x8E,0x77,0x76,0x6D,0x77,0x79,0x72,0x78,0x78,0x79,0x65,0x55,0x5D, - 0x51,0x59,0x6A,0x60,0x67,0x6F,0x65,0x64,0x7A,0x78,0x77,0x80,0x93,0x99,0x96,0xA5, - 0x9F,0xA4,0xA2,0x9B,0xA9,0xAC,0xA9,0x99,0x91,0xA2,0x9D,0x9D,0x9F,0x94,0x9A,0x95, - 0x92,0x91,0x7E,0x7C,0x74,0x76,0x73,0x6F,0x5F,0x45,0x47,0x4A,0x5A,0x5F,0x4C,0x37, - 0x40,0x45,0x34,0x38,0x3F,0x4B,0x58,0x61,0x6B,0x6C,0x7D,0x8E,0xA4,0xAE,0x99,0x8C, - 0x9A,0xA1,0x9A,0xA3,0xA0,0xA9,0xBF,0xCB,0xD1,0xC1,0xBA,0xAC,0xAE,0xA7,0x90,0x80, - 0x74,0x82,0x82,0x83,0x89,0x6F,0x69,0x6D,0x64,0x76,0x78,0x5B,0x57,0x5C,0x68,0x6D, - 0x5B,0x5C,0x65,0x6F,0x75,0x6E,0x69,0x68,0x7E,0x86,0x7C,0x7B,0x7C,0x93,0x9D,0x91, - 0x91,0x99,0x9A,0x9F,0x97,0x96,0xA7,0x9E,0x9D,0xA5,0x97,0xA4,0xA9,0x8D,0xA4,0xAF, - 0xA8,0xAE,0x98,0x94,0x93,0x89,0x8C,0x88,0x7E,0x79,0x69,0x57,0x5B,0x61,0x60,0x60, - 0x5B,0x66,0x6B,0x56,0x4A,0x38,0x3A,0x52,0x56,0x59,0x5B,0x59,0x62,0x57,0x47,0x57, - 0x55,0x50,0x4A,0x46,0x5A,0x61,0x75,0x79,0x7E,0xA2,0xB2,0xB5,0x9F,0x92,0xA3,0xA1, - 0xA4,0xA7,0xA6,0xB8,0xA3,0x91,0x99,0x9A,0xA1,0x96,0x97,0x98,0x88,0x97,0xA1,0xA2, - 0xA9,0xAC,0xB0,0xAD,0xA1,0x98,0x8D,0x74,0x66,0x63,0x71,0x85,0x72,0x63,0x5C,0x51, - 0x5B,0x64,0x62,0x67,0x69,0x6C,0x6F,0x63,0x5B,0x56,0x5F,0x71,0x74,0x83,0x8A,0x80, - 0x8B,0x91,0x83,0x79,0x83,0x8D,0x8E,0x9A,0x98,0x86,0x91,0x8E,0x7B,0x97,0xAB,0x9C, - 0xA4,0x9F,0x90,0x97,0x85,0x88,0x92,0x8E,0xA2,0x9E,0x97,0x9B,0x94,0x8C,0x8A,0x8D, - 0x85,0x8A,0x95,0x8E,0x83,0x79,0x7D,0x80,0x77,0x81,0x97,0x8C,0x83,0x73,0x5A,0x59, - 0x59,0x61,0x5D,0x55,0x65,0x66,0x60,0x5A,0x4D,0x59,0x66,0x64,0x68,0x6A,0x60,0x54, - 0x50,0x51,0x61,0x74,0x6B,0x62,0x6A,0x70,0x74,0x6B,0x5A,0x5C,0x6E,0x79,0x75,0x77, - 0x83,0x81,0x79,0x73,0x77,0x84,0x8E,0x96,0x95,0x95,0x97,0x99,0x99,0x9F,0xAC,0xAC, - 0xA1,0xA0,0xAD,0xBC,0xC3,0xC3,0xB6,0xBA,0xD2,0xD1,0xCA,0xC8,0xC1,0xCA,0xCD,0xC2, - 0xBC,0xBF,0xBA,0xB9,0xBF,0xB8,0xAB,0x96,0x97,0xA1,0x9F,0x9B,0x8D,0x86,0x85,0x81, - 0x77,0x5D,0x4C,0x40,0x43,0x3D,0x3D,0x47,0x43,0x4C,0x4E,0x41,0x40,0x49,0x4D,0x50, - 0x50,0x49,0x46,0x43,0x44,0x4F,0x4A,0x48,0x45,0x2D,0x4D,0x65,0x55,0x55,0x4A,0x51, - 0x5D,0x62,0x64,0x68,0x73,0x7E,0x84,0x79,0x7C,0x87,0x8B,0x9F,0xA6,0xA7,0xA9,0x9F, - 0x9F,0xA5,0xA8,0x9E,0x9C,0x9B,0x90,0xA4,0xA9,0x95,0x95,0x97,0x9A,0x9D,0x99,0x99, - 0xAC,0xB2,0xA3,0x8E,0x87,0x95,0xA5,0xAC,0x9B,0x8D,0x94,0x96,0x9C,0x9B,0x93,0x8E, - 0x85,0x80,0x80,0x83,0x90,0x92,0x82,0x7F,0x89,0x92,0x90,0x8C,0x8E,0x98,0x99,0x84, - 0x82,0x86,0x8B,0x8B,0x80,0x81,0x84,0x9B,0x94,0x84,0x87,0x7D,0x85,0x85,0x6B,0x5C, - 0x62,0x61,0x65,0x63,0x57,0x5B,0x5D,0x56,0x53,0x62,0x5F,0x4D,0x45,0x45,0x59,0x5B, - 0x58,0x61,0x62,0x5F,0x5E,0x62,0x63,0x6C,0x71,0x66,0x5A,0x53,0x60,0x7B,0x7B,0x71, - 0x66,0x65,0x7B,0x7A,0x77,0x8A,0x9A,0xA0,0xA2,0x98,0x9E,0xAF,0xA9,0xAB,0xAF,0xAD, - 0xA6,0x93,0x85,0x97,0xAB,0xA9,0x9B,0x8E,0x88,0x95,0xA7,0x97,0x7D,0x75,0x7F,0x88, - 0x81,0x7B,0x82,0x83,0x85,0x7D,0x6B,0x7B,0x92,0x98,0x99,0x94,0x85,0x7F,0x7A,0x79, - 0x82,0x7B,0x78,0x7B,0x79,0x85,0x92,0x8D,0x81,0x7C,0x80,0x89,0x86,0x78,0x7A,0x88, - 0x8F,0x88,0x78,0x7A,0x8B,0x8F,0x93,0x93,0x84,0x7E,0x74,0x6A,0x72,0x77,0x73,0x66, - 0x60,0x61,0x6F,0x7F,0x7B,0x71,0x65,0x5B,0x5C,0x5A,0x5C,0x75,0x81,0x71,0x62,0x5F, - 0x64,0x77,0x83,0x7A,0x74,0x75,0x75,0x6D,0x60,0x62,0x6E,0x6A,0x6C,0x71,0x6A,0x7E, - 0x8F,0x86,0x85,0x81,0x82,0x8F,0x8D,0x94,0xAB,0xA8,0x9E,0x9E,0x99,0xA0,0xAC,0xAC, - 0xA7,0xA7,0xA0,0x8C,0x7D,0x78,0x80,0x88,0x7C,0x76,0x77,0x71,0x8A,0x9A,0x89,0x83, - 0x7C,0x77,0x7E,0x78,0x7E,0x8F,0x87,0x7A,0x78,0x70,0x76,0x85,0x86,0x8F,0x91,0x85, - 0x7C,0x77,0x7B,0x8E,0x8B,0x7B,0x7C,0x76,0x77,0x99,0x9D,0x85,0x80,0x7C,0x87,0x8E, - 0x7F,0x82,0x8C,0x84,0x7C,0x71,0x63,0x6B,0x79,0x7D,0x7C,0x7B,0x76,0x68,0x6B,0x78, - 0x7A,0x71,0x67,0x67,0x64,0x6A,0x84,0x89,0x76,0x73,0x6D,0x69,0x6B,0x64,0x6D,0x7D, - 0x71,0x69,0x5D,0x53,0x69,0x7A,0x78,0x77,0x72,0x6C,0x6D,0x6B,0x6D,0x75,0x75,0x71, - 0x78,0x75,0x75,0x90,0x9A,0x91,0x8F,0x8F,0x93,0xA0,0xA5,0xAE,0xBA,0xAE,0x9F,0x9C, - 0x9C,0xA5,0xAC,0xA2,0x9F,0xA0,0x99,0x99,0x93,0x96,0x9C,0x95,0x91,0x93,0x8C,0x88, - 0xA3,0xA7,0x91,0x88,0x80,0x85,0x92,0x8E,0x8E,0x96,0x95,0x8D,0x7F,0x79,0x86,0x8D, - 0x88,0x8C,0x8E,0x86,0x7F,0x83,0x88,0x89,0x90,0x87,0x7E,0x7A,0x73,0x8C,0x8E,0x79, - 0x6D,0x65,0x72,0x76,0x6F,0x73,0x7D,0x78,0x71,0x64,0x47,0x5E,0x7E,0x78,0x63,0x63, - 0x6E,0x4E,0x4F,0x63,0x61,0x5B,0x5B,0x6A,0x5C,0x51,0x68,0x73,0x63,0x54,0x56,0x4E, - 0x48,0x46,0x54,0x68,0x68,0x5F,0x5B,0x55,0x55,0x6A,0x66,0x5B,0x63,0x66,0x66,0x65, - 0x6B,0x72,0x76,0x7B,0x84,0x87,0x83,0x96,0xAF,0xB3,0xAD,0x9F,0x9D,0xA9,0xAA,0xA8, - 0xBE,0xBF,0xA4,0xA0,0x9E,0xA7,0xB6,0xAA,0x9F,0xA0,0xA2,0x9D,0x93,0x95,0x9C,0xA2, - 0xA0,0x94,0x95,0x95,0x97,0xB0,0xBA,0xAC,0x9C,0x95,0x9F,0xAB,0xA9,0xAF,0xB4,0xAA, - 0xA2,0x9A,0x9C,0xA9,0xAD,0xA2,0x9B,0xA3,0x9F,0x94,0x91,0x96,0x9A,0x92,0x90,0x8E, - 0x89,0x81,0x83,0x96,0x8B,0x77,0x72,0x71,0x81,0x86,0x7E,0x7F,0x7B,0x70,0x65,0x60, - 0x6A,0x6F,0x64,0x5C,0x5B,0x5A,0x57,0x55,0x50,0x53,0x50,0x4A,0x47,0x42,0x3B,0x37, - 0x4D,0x59,0x48,0x40,0x36,0x38,0x44,0x40,0x3D,0x49,0x46,0x35,0x33,0x3A,0x48,0x50, - 0x4B,0x52,0x5B,0x5F,0x62,0x62,0x6C,0x7E,0x83,0x83,0x87,0x88,0x83,0x8A,0xA7,0xA8, - 0x91,0x88,0x89,0x98,0xA0,0x93,0x98,0xA1,0x93,0x8F,0x8B,0x8B,0x94,0x8E,0x90,0x99, - 0x97,0x8D,0x89,0x8D,0x9B,0xA0,0x9A,0x9E,0xA0,0x9F,0x96,0x9F,0xC0,0xBA,0xA3,0xA7, - 0xA8,0xB0,0xB0,0xA3,0xB0,0xBB,0xB2,0xAA,0xA3,0xA9,0xB4,0xAF,0xAA,0xA8,0xA2,0xA2, - 0x9E,0x9F,0xA4,0x9E,0x9C,0x98,0x95,0x96,0x8B,0x98,0xAD,0x9A,0x85,0x82,0x80,0x86, - 0x82,0x7C,0x83,0x7F,0x6E,0x65,0x60,0x67,0x69,0x60,0x5E,0x5D,0x5C,0x54,0x4D,0x55, - 0x5A,0x58,0x55,0x52,0x55,0x56,0x4E,0x5A,0x72,0x64,0x53,0x54,0x54,0x59,0x59,0x59, - 0x68,0x6E,0x68,0x63,0x65,0x75,0x81,0x80,0x82,0x87,0x89,0x86,0x83,0x89,0x8A,0x84, - 0x83,0x82,0x85,0x80,0x71,0x7C,0x94,0x8D,0x7C,0x76,0x75,0x7C,0x7B,0x77,0x80,0x80, - 0x7B,0x74,0x72,0x7C,0x80,0x7E,0x7D,0x82,0x89,0x86,0x82,0x85,0x8C,0x8D,0x8F,0x90, - 0x8C,0x8B,0x84,0x8D,0xA9,0xA6,0x8F,0x88,0x8B,0x94,0x91,0x89,0x92,0x9A,0x91,0x84, - 0x82,0x89,0x92,0x91,0x8E,0x8E,0x90,0x8C,0x7E,0x85,0x8F,0x8C,0x85,0x7E,0x7B,0x7F, - 0x7D,0x72,0x83,0x90,0x7B,0x6C,0x67,0x66,0x67,0x62,0x65,0x6D,0x69,0x5A,0x55,0x58, - 0x60,0x5D,0x59,0x5A,0x60,0x65,0x5A,0x5B,0x63,0x64,0x66,0x66,0x69,0x6B,0x6D,0x65, - 0x73,0x94,0x8D,0x79,0x7E,0x8A,0x91,0x90,0x8A,0x9A,0xA7,0x98,0x8E,0x91,0x96,0x98, - 0x93,0x91,0x93,0x92,0x8A,0x84,0x88,0x8A,0x86,0x82,0x82,0x89,0x89,0x7F,0x78,0x8F, - 0x9F,0x8A,0x7F,0x81,0x87,0x8B,0x86,0x8E,0x9A,0x95,0x89,0x85,0x8F,0x99,0x98,0x95, - 0x98,0x9F,0x9D,0x96,0x96,0x99,0x9A,0x9A,0x98,0x94,0x90,0x8E,0x86,0x8A,0xA8,0xA4, - 0x88,0x85,0x87,0x88,0x84,0x80,0x8C,0x93,0x86,0x78,0x7B,0x82,0x80,0x7E,0x7F,0x7E, - 0x80,0x78,0x6E,0x72,0x75,0x74,0x6E,0x6A,0x6F,0x70,0x6A,0x5B,0x62,0x81,0x78,0x5E, - 0x5D,0x60,0x63,0x60,0x5D,0x6C,0x74,0x66,0x60,0x65,0x6F,0x71,0x6E,0x74,0x7C,0x7E, - 0x79,0x77,0x7C,0x7F,0x82,0x83,0x83,0x88,0x86,0x81,0x78,0x83,0x9E,0x92,0x7C,0x80, - 0x82,0x7E,0x78,0x7B,0x8B,0x8F,0x7F,0x76,0x7A,0x82,0x83,0x7D,0x7D,0x85,0x85,0x80, - 0x7C,0x81,0x87,0x84,0x83,0x85,0x8A,0x86,0x82,0x7C,0x82,0x9F,0x98,0x7F,0x82,0x87, - 0x89,0x86,0x83,0x8F,0x97,0x8B,0x7F,0x82,0x8A,0x8A,0x85,0x87,0x8D,0x8C,0x84,0x82, - 0x85,0x86,0x83,0x83,0x83,0x86,0x88,0x83,0x7A,0x79,0x96,0x99,0x7F,0x7B,0x7F,0x7E, - 0x80,0x7D,0x82,0x8C,0x83,0x75,0x76,0x7D,0x7C,0x77,0x79,0x7F,0x7F,0x77,0x71,0x74, - 0x76,0x75,0x76,0x77,0x7B,0x7A,0x75,0x72,0x6F,0x84,0x93,0x7E,0x78,0x7F,0x7C,0x7C, - 0x7B,0x82,0x8E,0x8C,0x80,0x7E,0x86,0x87,0x82,0x83,0x88,0x8B,0x86,0x7F,0x80,0x85, - 0x83,0x81,0x82,0x85,0x83,0x7D,0x7B,0x76,0x7D,0x95,0x89,0x75,0x7C,0x7B,0x75,0x73, - 0x74,0x83,0x89,0x7A,0x72,0x79,0x7A,0x78,0x79,0x7F,0x84,0x84,0x7F,0x7D,0x84,0x83, - 0x7E,0x82,0x85,0x86,0x83,0x7E,0x7F,0x79,0x8A,0x9F,0x86,0x7C,0x88,0x81,0x7C,0x7A, - 0x7E,0x8A,0x87,0x78,0x7A,0x80,0x7B,0x7A,0x7E,0x83,0x85,0x82,0x7D,0x7E,0x81,0x7D, - 0x7E,0x83,0x83,0x83,0x7F,0x7E,0x7B,0x75,0x8E,0x96,0x7D,0x7D,0x82,0x77,0x76,0x78, - 0x7D,0x86,0x7D,0x75,0x7C,0x7F,0x7A,0x79,0x7C,0x81,0x83,0x7E,0x7B,0x7F,0x7E,0x7B, - 0x7F,0x85,0x86,0x83,0x80,0x83,0x7E,0x7A,0x95,0x96,0x7B,0x83,0x86,0x7A,0x7B,0x7C, - 0x84,0x8E,0x81,0x78,0x80,0x80,0x7B,0x7B,0x7E,0x84,0x82,0x7C,0x7C,0x7F,0x7D,0x7B, - 0x7C,0x7E,0x7E,0x7D,0x7C,0x7B,0x75,0x74,0x90,0x90,0x75,0x7E,0x84,0x7A,0x76,0x7C, - 0x86,0x8B,0x84,0x72,0x7D,0x87,0x7C,0x7F,0x87,0x8A,0x88,0x89,0x87,0x8A,0x86,0x7C, - 0x84,0x86,0x84,0x84,0x80,0x83,0x7D,0x73,0x8F,0x94,0x79,0x80,0x86,0x78,0x72,0x73, - 0x7F,0x89,0x81,0x7C,0x84,0x82,0x79,0x79,0x7F,0x84,0x80,0x7D,0x7F,0x84,0x80,0x79, - 0x7D,0x80,0x7F,0x80,0x7D,0x7E,0x7B,0x6F,0x89,0x96,0x77,0x7C,0x8B,0x79,0x76,0x7A, - 0x7E,0x8C,0x85,0x78,0x83,0x88,0x7A,0x78,0x84,0x89,0x83,0x82,0x85,0x86,0x82,0x7B, - 0x85,0x83,0x7C,0x7F,0x82,0x81,0x7C,0x73,0x7F,0x9B,0x81,0x73,0x8F,0x82,0x72,0x76, - 0x80,0x89,0x84,0x77,0x7D,0x88,0x74,0x6E,0x7C,0x78,0x73,0x77,0x79,0x7E,0x80,0x75, - 0x7F,0x8C,0x81,0x86,0x8E,0x88,0x8B,0x80,0x80,0x9C,0x88,0x6A,0x84,0x80,0x69,0x73, - 0x79,0x80,0x88,0x73,0x77,0x98,0x8B,0x72,0x80,0x91,0x84,0x77,0x71,0x7C,0x8F,0x7C, - 0x70,0x8A,0x95,0x83,0x74,0x79,0x89,0x7A,0x65,0x8C,0x9B,0x82,0x85,0x81,0x68,0x70, - 0x83,0x7A,0x7A,0x77,0x7B,0x7D,0x6F,0x77,0x8B,0x88,0x74,0x7D,0x94,0x9D,0x8D,0x74, - 0x77,0x90,0x8B,0x77,0x82,0x83,0x7D,0x82,0x6D,0x7A,0xA2,0x7B,0x64,0x96,0x91,0x6A, - 0x68,0x7B,0x93,0x83,0x68,0x84,0xA4,0x83,0x6B,0x8A,0x8C,0x6E,0x6B,0x87,0x8D,0x75, - 0x6E,0x7E,0x88,0x7F,0x83,0x87,0x77,0x72,0x6F,0x79,0x98,0x8D,0x77,0x8B,0x82,0x70, - 0x82,0x84,0x7E,0x79,0x76,0x81,0x78,0x6F,0x7D,0x90,0x8D,0x8F,0x8F,0x76,0x68,0x76, - 0x7C,0x87,0x9B,0x80,0x82,0x99,0x88,0x7C,0x97,0x84,0x62,0x8E,0x75,0x6A,0x91,0x74, - 0x69,0x76,0x72,0x6F,0x66,0x77,0x88,0x91,0xAC,0xA5,0xAA,0xAF,0x96,0x6C,0x6F,0x80, - 0x5E,0x5C,0x6F,0x73,0x6B,0x7E,0x93,0x99,0x9D,0x95,0x92,0x7F,0x5B,0x49,0x5A,0x81, - 0x91,0x80,0x76,0x77,0x81,0x7D,0x85,0x93,0x92,0x96,0x8F,0x84,0x93,0x98,0x8A,0x9F, - 0xA8,0x9C,0x8D,0x6D,0x68,0x70,0x7C,0x76,0x5A,0x5B,0x6F,0x69,0x6F,0x8C,0x7D,0x5C, - 0x77,0x87,0x73,0x7E,0x78,0x7A,0x99,0xA2,0x96,0x90,0x82,0x6E,0x8B,0xAE,0x9C,0x80, - 0x79,0x83,0x82,0x72,0x8B,0x95,0x71,0x6E,0x72,0x76,0x71,0x6A,0x7C,0x7E,0x89,0x93, - 0x77,0x6F,0x72,0x69,0x75,0x86,0x7D,0x70,0x6B,0x73,0x8B,0x9C,0xA3,0xA1,0x98,0x99, - 0x88,0x76,0x6E,0x80,0x92,0x89,0x95,0x95,0x7A,0x64,0x77,0x84,0x78,0x76,0x60,0x6C, - 0x88,0x70,0x6F,0x89,0x74,0x6E,0x7E,0x65,0x76,0x98,0x84,0x7F,0x8C,0x7D,0x7D,0x93, - 0x8E,0x9C,0xAF,0x9A,0x90,0x99,0x8A,0x7B,0x7C,0x7C,0x72,0x70,0x7C,0x73,0x67,0x69, - 0x7B,0x88,0x9F,0xA1,0x88,0x94,0x8E,0x67,0x6A,0x7C,0x7B,0x74,0x5F,0x68,0x78,0x66, - 0x6D,0x8F,0x82,0x76,0x8F,0x88,0x8E,0x92,0x7E,0x92,0x88,0x79,0x93,0x81,0x62,0x6F, - 0x95,0x9F,0x89,0x80,0x75,0x71,0x81,0x85,0xA2,0xA6,0x84,0x92,0x90,0x73,0x6A,0x6B, - 0x6B,0x68,0x71,0x72,0x76,0x6A,0x65,0x83,0x91,0x89,0x82,0x8D,0x88,0x86,0x90,0x94, - 0x89,0x7D,0x88,0x87,0x80,0x6E,0x6E,0x89,0x80,0x78,0x96,0x92,0x6F,0x72,0x7A,0x8D, - 0xA0,0x89,0x82,0x7D,0x71,0x75,0x8B,0x9D,0x84,0x91,0xAF,0x97,0x8E,0x82,0x7E,0x94, - 0x8B,0x81,0x81,0x66,0x54,0x64,0x6E,0x68,0x5E,0x65,0x67,0x69,0x71,0x71,0x87,0x87, - 0x85,0x93,0x85,0x7E,0x7D,0x7D,0x92,0x87,0x83,0x94,0x82,0x79,0x8A,0x99,0x99,0x8D, - 0x82,0x92,0x91,0x82,0x94,0x9D,0x87,0x6A,0x75,0x74,0x5A,0x6E,0x7A,0x7D,0x87,0x88, - 0x90,0x7A,0x63,0x74,0x87,0x80,0x71,0x7F,0x82,0x79,0x7D,0x7A,0x86,0x8F,0x8A,0x8C, - 0x94,0x85,0x78,0x96,0xA4,0x96,0x94,0x93,0x83,0x6E,0x6D,0x80,0x8D,0x8C,0x7F,0x74, - 0x6B,0x5D,0x69,0x81,0x77,0x6F,0x76,0x6E,0x75,0x76,0x86,0xA2,0x9D,0x99,0x9A,0x8B, - 0x61,0x59,0x78,0x84,0x74,0x75,0x86,0x7B,0x69,0x75,0x8F,0x88,0x7E,0x87,0x88,0x78, - 0x62,0x6B,0x7A,0x83,0x7B,0x84,0x90,0x77,0x74,0x73,0x7C,0x86,0x8F,0x98,0xA0,0x93, - 0x88,0x9B,0x91,0x7C,0x80,0x8E,0x82,0x7A,0x7C,0x88,0xA5,0xA4,0x92,0x94,0x83,0x6E, - 0x7E,0x7F,0x68,0x6F,0x6B,0x5E,0x6B,0x5D,0x67,0x7F,0x69,0x7A,0x82,0x6B,0x69,0x75, - 0x90,0x8F,0x8A,0x8E,0x88,0x7D,0x75,0x7C,0x87,0x96,0x8A,0x80,0x7E,0x74,0x89,0x90, - 0x88,0x7D,0x7F,0x92,0x86,0x75,0x79,0x75,0x7C,0x7D,0x76,0x7F,0x6D,0x56,0x67,0x88, - 0x8D,0x7A,0x80,0x81,0x7D,0x7D,0x76,0x84,0x99,0xA8,0xAF,0x9F,0x7F,0x67,0x6E,0x75, - 0x6F,0x7A,0x91,0x7F,0x75,0x86,0x80,0x86,0x7D,0x7F,0x8E,0x8A,0x79,0x74,0x77,0x62, - 0x64,0x75,0x77,0x6C,0x76,0x7C,0x80,0xA1,0x9C,0xA1,0x9A,0x73,0x87,0x94,0x8B,0x81, - 0x80,0x78,0x70,0x6F,0x6A,0x71,0x73,0x82,0x9A,0xA4,0x8D,0x7E,0x8B,0x97,0x9F,0x87, - 0x7E,0x7F,0x63,0x55,0x5A,0x73,0x7E,0x72,0x6A,0x69,0x6C,0x73,0x87,0x8E,0x82,0x89, - 0x98,0x8E,0x8C,0x85,0x7B,0x97,0x8C,0x7E,0x89,0x6E,0x60,0x77,0x8A,0x7C,0x75,0x75, - 0x70,0x7D,0x6F,0x6F,0x80,0x84,0x94,0x92,0x82,0x7C,0x78,0x76,0x87,0x97,0x96,0x85, - 0x77,0x69,0x6D,0x7B,0x88,0x99,0x90,0x94,0x9C,0x84,0x81,0x7D,0x62,0x6C,0x7E,0x7E, - 0x78,0x75,0x74,0x81,0x95,0xA6,0x9D,0x81,0x79,0x6F,0x75,0x76,0x71,0x74,0x74,0x82, - 0x6B,0x68,0x7D,0x75,0x84,0x9A,0x91,0x82,0x7C,0x7F,0x94,0xA3,0x93,0x88,0x7E,0x73, - 0x72,0x63,0x72,0x96,0x93,0x8B,0x95,0x99,0x9A,0x9A,0x7E,0x7D,0x9B,0x86,0x75,0x77, - 0x67,0x6F,0x78,0x82,0x80,0x6F,0x76,0x5D,0x65,0x7F,0x71,0x7F,0x7A,0x78,0x7E,0x72, - 0x83,0x85,0x85,0xA0,0x8B,0x6E,0x83,0x70,0x71,0x8C,0x87,0x8C,0x7F,0x76,0x78,0x79, - 0x86,0x97,0xA0,0x8C,0x82,0x7B,0x71,0x89,0x80,0x71,0x7F,0x84,0x88,0x83,0x72,0x76, - 0x88,0x94,0xA9,0x98,0x8A,0x86,0x6A,0x73,0x71,0x6D,0x74,0x6D,0x75,0x69,0x68,0x7C, - 0x7F,0x98,0xA8,0x92,0x81,0x79,0x80,0x92,0x9C,0x9E,0x94,0x78,0x70,0x67,0x57,0x73, - 0x8F,0x85,0x74,0x83,0x88,0x81,0x86,0x7A,0x83,0x9A,0x8B,0x85,0x86,0x73,0x70,0x7E, - 0x95,0x99,0x81,0x88,0x8D,0x94,0x98,0x8F,0x92,0x7F,0x86,0x7B,0x6D,0x76,0x6D,0x87, - 0x8C,0x78,0x7D,0x55,0x43,0x78,0x8E,0x7A,0x77,0x86,0x73,0x6F,0x7F,0x85,0x99,0xA4, - 0xA7,0x92,0x68,0x72,0x86,0x6E,0x60,0x74,0x77,0x72,0x6F,0x67,0x78,0x8E,0xA4,0xA9, - 0x88,0x7A,0x85,0x75,0x79,0x89,0x89,0x88,0x7F,0x82,0x75,0x79,0x78,0x7E,0xA1,0x9C, - 0x8A,0x87,0x79,0x81,0x9E,0x96,0x90,0x7E,0x5F,0x6D,0x70,0x62,0x87,0xA6,0x81,0x84, - 0x98,0x78,0x75,0x72,0x63,0x7C,0x88,0x76,0x7A,0x7C,0x65,0x5E,0x75,0x8E,0x89,0x77, - 0x79,0x82,0x82,0x8E,0x94,0x84,0x97,0x9E,0x83,0x74,0x70,0x7D,0x88,0x88,0x82,0x7E, - 0x75,0x71,0x8D,0xA3,0xA8,0x9D,0x81,0x7F,0x85,0x73,0x74,0x86,0x76,0x6C,0x76,0x6B, - 0x65,0x62,0x5E,0x5F,0x70,0x6C,0x64,0x76,0x7A,0x80,0x97,0xAA,0xA4,0x8D,0x8A,0x8B, - 0x7E,0x77,0x79,0x7C,0x7C,0x80,0x79,0x73,0x7A,0x7A,0x6F,0x87,0x96,0x76,0x71,0x6E, - 0x87,0xA4,0x8F,0x94,0x8A,0x6E,0x76,0x73,0x76,0x99,0x9F,0x82,0x89,0x99,0x82,0x6F, - 0x6F,0x75,0x79,0x7C,0x76,0x76,0x75,0x71,0x74,0x90,0x9F,0x8B,0x81,0x82,0x81,0x7A, - 0x87,0x86,0x83,0x94,0x87,0x78,0x62,0x62,0x78,0x7C,0x7E,0x79,0x76,0x62,0x59,0x76, - 0x8E,0x98,0x99,0x87,0x89,0x96,0x81,0x82,0x8F,0x83,0x81,0x87,0x86,0x81,0x85,0x83, - 0x7E,0x96,0x99,0x89,0x89,0x75,0x73,0x85,0x93,0x91,0x7F,0x79,0x77,0x6A,0x5D,0x6A, - 0x6A,0x6E,0x7A,0x77,0x79,0x73,0x72,0x7B,0x8B,0x90,0x8B,0x85,0x70,0x86,0x91,0x7B, - 0x85,0x72,0x6A,0x79,0x67,0x6E,0x92,0x8D,0x84,0xA0,0x9F,0x89,0x7C,0x74,0x7D,0x82, - 0x89,0x8A,0x8D,0x88,0x73,0x79,0x8D,0x99,0x8A,0x7F,0x79,0x7A,0x80,0x7E,0x87,0x7E, - 0x80,0x82,0x6B,0x5D,0x70,0x73,0x73,0x87,0x8F,0x8B,0x76,0x6C,0x7D,0x8D,0x94,0x99, - 0x88,0x8A,0x94,0x7C,0x80,0x82,0x74,0x7C,0x7A,0x71,0x6F,0x68,0x60,0x68,0x81,0x90, - 0xA0,0x8D,0x70,0x81,0x8A,0x8D,0x96,0x8F,0x83,0x82,0x79,0x73,0x83,0x84,0x8E,0xA3, - 0xA0,0x92,0x89,0x86,0x7E,0x8B,0x91,0x83,0x6C,0x5D,0x75,0x74,0x6E,0x73,0x69,0x70, - 0x74,0x65,0x71,0x93,0x7E,0x77,0x9D,0xA0,0x8B,0x7E,0x76,0x6E,0x69,0x6E,0x79,0x81, - 0x71,0x67,0x73,0x7A,0x81,0x95,0x8D,0x78,0x88,0x8A,0x8B,0x98,0x84,0x97,0xA1,0x79, - 0x71,0x7C,0x80,0x70,0x71,0x85,0x82,0x67,0x69,0x83,0x7D,0x8D,0x8F,0x83,0x8F,0x7B, - 0x72,0x8B,0x82,0x6F,0x91,0x9F,0x8A,0x93,0x80,0x6F,0x72,0x6A,0x7A,0x98,0x81,0x68, - 0x80,0x83,0x86,0x93,0x97,0x86,0x6F,0x62,0x64,0x74,0x69,0x70,0x91,0x97,0x94,0x90, - 0x95,0x96,0x84,0x8E,0x95,0x7B,0x69,0x6E,0x73,0x79,0x82,0x8A,0x8E,0x8D,0x8B,0x92, - 0xA7,0x90,0x81,0x9A,0x9B,0x8C,0x7A,0x6A,0x5E,0x52,0x58,0x73,0x85,0x71,0x63,0x6E, - 0x6A,0x70,0x88,0x93,0x89,0x7F,0x7F,0x91,0x95,0x74,0x7E,0x8C,0x70,0x69,0x76,0x81, - 0x6B,0x6C,0x93,0x97,0x81,0x74,0x8A,0x90,0x85,0x92,0x9A,0x9E,0x8D,0x77,0x7D,0x85, - 0x69,0x6F,0x97,0x8B,0x82,0x89,0x77,0x6B,0x69,0x7C,0x94,0x89,0x72,0x78,0x7C,0x71, - 0x85,0xA0,0x9E,0x7C,0x6F,0x82,0x86,0x80,0x70,0x7F,0x8A,0x7D,0x82,0x8B,0x8A,0x81, - 0x91,0x97,0x8B,0x77,0x60,0x67,0x6E,0x67,0x7E,0x8E,0x7A,0x80,0x83,0x88,0x8D,0x85, - 0x90,0x9D,0x91,0x7C,0x80,0x6F,0x54,0x5A,0x77,0x90,0x95,0x80,0x87,0x90,0x81,0x92, - 0xAA,0xA5,0x90,0x84,0x86,0x89,0x80,0x6E,0x75,0x6F,0x64,0x74,0x66,0x63,0x64,0x6D, - 0x8B,0x80,0x73,0x7B,0x85,0x80,0x86,0x97,0x90,0x7F,0x6D,0x70,0x6C,0x66,0x77,0x7E, - 0x8A,0x97,0x95,0x8D,0x7D,0x6C,0x75,0x83,0x87,0x92,0x8D,0x78,0x6B,0x71,0x90,0x9A, - 0x8A,0x78,0x72,0x84,0x88,0x7B,0x85,0x8E,0x78,0x80,0x88,0x7B,0x81,0x75,0x75,0x8D, - 0x8F,0x7F,0x75,0x7B,0x84,0x90,0x88,0x81,0x74,0x68,0x78,0x7A,0x80,0x8D,0x95,0x96, - 0x8C,0x7D,0x80,0x73,0x5C,0x65,0x77,0x85,0x87,0x7B,0x78,0x82,0x87,0x93,0xA0,0x99, - 0x85,0x6C,0x72,0x80,0x72,0x6C,0x78,0x84,0x8E,0x83,0x85,0x9B,0x90,0x8B,0x9F,0xA2, - 0x8A,0x7A,0x84,0x7F,0x7A,0x77,0x76,0x7B,0x69,0x5E,0x6F,0x74,0x68,0x76,0x8B,0x8C, - 0x7E,0x79,0x8A,0x8C,0x74,0x70,0x8B,0x89,0x6A,0x6B,0x7A,0x7E,0x87,0x93,0x92,0x7F, - 0x72,0x80,0x8A,0x7F,0x78,0x83,0x94,0x93,0x7C,0x7C,0x89,0x71,0x6C,0x88,0x8C,0x75, - 0x70,0x84,0x84,0x7F,0x7C,0x8C,0x97,0x7D,0x76,0x87,0x8D,0x87,0x86,0x8C,0x8A,0x7D, - 0x7A,0x84,0x80,0x6F,0x77,0x84,0x79,0x70,0x6F,0x77,0x84,0x92,0x9D,0xA2,0x89,0x73, - 0x7D,0x7A,0x65,0x60,0x71,0x82,0x7C,0x6F,0x7E,0x90,0x89,0x8F,0xA1,0x9B,0x78,0x6F, - 0x81,0x7A,0x72,0x76,0x85,0x88,0x77,0x75,0x88,0x93,0x8A,0x94,0xA1,0x95,0x8A,0x91, - 0x95,0x89,0x73,0x74,0x7D,0x70,0x62,0x60,0x69,0x6D,0x76,0x86,0x84,0x71,0x70,0x7F, - 0x84,0x7E,0x80,0x8B,0x8A,0x7C,0x73,0x75,0x76,0x77,0x88,0x98,0x89,0x75,0x7B,0x89, - 0x7F,0x72,0x7E,0x88,0x81,0x72,0x70,0x7F,0x81,0x79,0x8A,0x95,0x83,0x7E,0x8A,0x92, - 0x89,0x80,0x89,0x8E,0x7E,0x70,0x76,0x7F,0x7D,0x7E,0x94,0x93,0x77,0x73,0x80,0x7D, - 0x77,0x79,0x78,0x73,0x68,0x68,0x79,0x84,0x85,0x91,0xA2,0x9C,0x8C,0x87,0x82,0x75, - 0x73,0x80,0x7E,0x76,0x70,0x78,0x83,0x7E,0x7B,0x85,0x8B,0x81,0x7C,0x7A,0x79,0x89, - 0x8E,0x80,0x82,0x7D,0x75,0x7D,0x74,0x6A,0x82,0x99,0x95,0x91,0x8E,0x96,0xA3,0x9B, - 0x89,0x7C,0x83,0x78,0x6C,0x72,0x6D,0x7C,0x62,0x5D,0x73,0x70,0x7A,0x75,0x73,0x7B, - 0x8A,0x89,0x7F,0x6D,0x70,0x9C,0xA1,0x91,0x9B,0xA1,0x9E,0x9B,0x87,0x7B,0x7E,0x6E, - 0x59,0x5B,0x60,0x5F,0x66,0x5B,0x51,0x79,0x90,0x77,0x70,0x79,0x78,0x7F,0x76,0x6B, - 0x8B,0x8A,0x7C,0x8B,0x88,0x94,0xB5,0xBC,0x9E,0xA9,0xCA,0xB0,0x9B,0x97,0x88,0x8B, - 0x87,0x71,0x7F,0x8D,0x73,0x68,0x7E,0x83,0x74,0x6F,0x69,0x77,0x84,0x73,0x6D,0x72, - 0x72,0x59,0x41,0x42,0x42,0x4F,0x58,0x54,0x59,0x64,0x6B,0x6A,0x6B,0x78,0x8F,0x8D, - 0x80,0x92,0x9C,0x8F,0x86,0x90,0xAC,0xB6,0xAF,0xBB,0xD4,0xDC,0xDA,0xD5,0xD6,0xD9, - 0xCC,0xB6,0xB4,0xB5,0xA7,0x98,0x94,0x84,0x75,0x79,0x6D,0x62,0x65,0x57,0x41,0x38, - 0x2F,0x2F,0x3A,0x33,0x31,0x38,0x38,0x3C,0x40,0x42,0x4E,0x5C,0x60,0x69,0x75,0x7A, - 0x7D,0x81,0x86,0x89,0x91,0x93,0x91,0x9B,0x9F,0x9E,0xA6,0xAB,0xA8,0xA9,0xA5,0xAB, - 0xB6,0xB1,0x9F,0x90,0x8B,0x85,0x80,0x7A,0x7C,0x7C,0x6F,0x5F,0x5B,0x57,0x52,0x64, - 0x70,0x6E,0x6A,0x69,0x66,0x67,0x5C,0x53,0x59,0x5C,0x5E,0x5D,0x5E,0x5D,0x62,0x68, - 0x71,0x77,0x7A,0x88,0x8E,0x90,0x91,0x92,0x91,0x90,0xA0,0xAF,0xAA,0xA8,0xAF,0xAE, - 0xAF,0xB2,0xB4,0xBF,0xC3,0xBE,0xC0,0xC3,0xB9,0xAD,0xAB,0xAB,0xAD,0xAA,0xA3,0xA5, - 0x9B,0x85,0x7E,0x81,0x80,0x73,0x6F,0x7B,0x7B,0x66,0x5C,0x5A,0x4F,0x4D,0x54,0x59, - 0x5A,0x54,0x4D,0x53,0x54,0x49,0x4D,0x59,0x5D,0x62,0x69,0x71,0x71,0x70,0x78,0x80, - 0x82,0x86,0x8E,0x91,0x8B,0x8C,0x89,0x89,0x8F,0x8E,0x95,0xA1,0xA1,0x9D,0xA1,0xA0, - 0x9A,0x9A,0x9C,0xA0,0xA4,0xA7,0xA8,0xA6,0x9C,0x93,0x94,0x93,0x93,0x8A,0x86,0x8F, - 0x7E,0x6A,0x6B,0x69,0x5A,0x57,0x59,0x56,0x58,0x4C,0x46,0x4E,0x48,0x45,0x52,0x55, - 0x4F,0x56,0x52,0x4A,0x48,0x43,0x47,0x4F,0x52,0x56,0x68,0x6A,0x5D,0x65,0x67,0x60, - 0x64,0x6C,0x78,0x85,0x85,0x87,0x95,0x96,0x92,0xA8,0xB7,0xB9,0xC6,0xCE,0xCC,0xC9, - 0xBE,0xBF,0xC6,0xBE,0xC0,0xB9,0xB3,0xC2,0xB4,0xA1,0xA6,0x9F,0x8F,0x97,0x9C,0x96, - 0x95,0x8B,0x88,0x88,0x78,0x79,0x86,0x7E,0x7B,0x81,0x7C,0x78,0x74,0x70,0x75,0x70, - 0x73,0x78,0x76,0x81,0x74,0x65,0x72,0x72,0x6B,0x77,0x81,0x83,0x86,0x7F,0x80,0x87, - 0x7F,0x82,0x8E,0x8E,0x8E,0x94,0x94,0x8E,0x8D,0x8A,0x8A,0x8B,0x92,0x91,0x91,0xA4, - 0x97,0x87,0x95,0x8B,0x7A,0x84,0x8B,0x8C,0x8B,0x83,0x86,0x87,0x76,0x78,0x89,0x84, - 0x7E,0x85,0x84,0x7E,0x76,0x71,0x73,0x73,0x76,0x7D,0x7B,0x89,0x85,0x6A,0x6E,0x6F, - 0x60,0x62,0x68,0x67,0x6A,0x61,0x59,0x60,0x53,0x48,0x56,0x5A,0x56,0x5C,0x5C,0x5B, - 0x58,0x55,0x5A,0x5A,0x5B,0x5A,0x58,0x6F,0x6A,0x51,0x61,0x64,0x51,0x57,0x62,0x66, - 0x6C,0x68,0x6A,0x73,0x69,0x68,0x79,0x7C,0x7B,0x86,0x8D,0x8F,0x8C,0x8D,0x97,0x9A, - 0xA1,0xA8,0xAA,0xC0,0xC0,0xAB,0xB6,0xB6,0xA0,0xA3,0xB0,0xB0,0xB0,0xA9,0xA8,0xB0, - 0xA3,0x9B,0xA9,0xA4,0x9C,0xA2,0xA6,0xA5,0x9C,0x94,0x97,0x94,0x92,0x90,0x92,0xA4, - 0x9A,0x86,0x93,0x8E,0x79,0x7E,0x89,0x8D,0x90,0x8E,0x90,0x93,0x84,0x86,0x94,0x8A, - 0x82,0x85,0x83,0x81,0x78,0x6F,0x6D,0x67,0x67,0x67,0x6A,0x7C,0x70,0x60,0x73,0x6F, - 0x59,0x60,0x6A,0x6B,0x6F,0x70,0x73,0x73,0x66,0x68,0x76,0x72,0x73,0x7D,0x7F,0x80, - 0x7E,0x7C,0x7D,0x79,0x79,0x76,0x83,0x95,0x80,0x78,0x86,0x76,0x6A,0x76,0x79,0x7A, - 0x79,0x76,0x7E,0x7B,0x69,0x6D,0x75,0x6E,0x75,0x7A,0x77,0x78,0x71,0x73,0x74,0x71, - 0x73,0x71,0x83,0x91,0x7C,0x80,0x8F,0x7E,0x77,0x85,0x8B,0x8B,0x8A,0x89,0x90,0x88, - 0x7C,0x85,0x84,0x7A,0x81,0x87,0x83,0x80,0x7A,0x76,0x75,0x76,0x72,0x74,0x8C,0x86, - 0x74,0x85,0x86,0x72,0x76,0x82,0x87,0x8C,0x89,0x88,0x89,0x7D,0x7A,0x80,0x77,0x72, - 0x77,0x74,0x71,0x6E,0x67,0x64,0x65,0x64,0x60,0x72,0x7E,0x68,0x69,0x79,0x6C,0x64, - 0x70,0x75,0x79,0x7D,0x7E,0x85,0x81,0x76,0x7E,0x85,0x7E,0x85,0x8E,0x8D,0x91,0x95, - 0x95,0x92,0x92,0x8E,0x95,0xB0,0xA8,0x98,0xAA,0xA5,0x90,0x95,0x9C,0x9B,0x9D,0x9D, - 0xA2,0xA7,0x9A,0x96,0xA2,0x9D,0x9B,0xA7,0xA6,0xA3,0xA3,0x9F,0x9C,0x9C,0x98,0x92, - 0xA6,0xAE,0x96,0x99,0xA0,0x8A,0x7E,0x87,0x8A,0x87,0x85,0x83,0x86,0x79,0x6C,0x73, - 0x6F,0x62,0x66,0x6D,0x69,0x65,0x62,0x5C,0x56,0x55,0x4D,0x55,0x6B,0x59,0x4D,0x5F, - 0x53,0x3F,0x45,0x4E,0x52,0x51,0x51,0x59,0x59,0x4D,0x53,0x5D,0x55,0x57,0x60,0x5F, - 0x5F,0x5F,0x5C,0x5A,0x57,0x53,0x54,0x6F,0x73,0x5B,0x65,0x6D,0x58,0x55,0x60,0x65, - 0x68,0x69,0x71,0x7E,0x77,0x71,0x80,0x86,0x86,0x91,0x98,0x9B,0x9E,0x9D,0x9D,0x9C, - 0x9D,0x97,0xA9,0xC1,0xA9,0x9D,0xAF,0xA0,0x8D,0x95,0x9B,0x9D,0x9B,0x95,0x9B,0x9C, - 0x8D,0x8E,0x96,0x91,0x93,0x9C,0x9C,0x9D,0x9C,0x99,0x96,0x98,0x97,0x99,0xB4,0xB4, - 0xA0,0xB0,0xB3,0x9F,0x9D,0xA7,0xAE,0xAE,0xA8,0xAC,0xB2,0xA3,0x99,0xA2,0xA1,0x9B, - 0x9F,0xA2,0xA2,0x9D,0x94,0x91,0x90,0x90,0x89,0x98,0xAF,0x98,0x8C,0x9A,0x8B,0x78, - 0x7A,0x7F,0x80,0x7C,0x74,0x7A,0x7B,0x6A,0x69,0x70,0x6B,0x69,0x6C,0x6A,0x68,0x63, - 0x5E,0x5C,0x5B,0x53,0x50,0x69,0x6B,0x51,0x58,0x5D,0x48,0x41,0x47,0x4E,0x53,0x4D, - 0x4D,0x56,0x4D,0x3F,0x44,0x47,0x44,0x48,0x4C,0x50,0x52,0x4C,0x4D,0x51,0x53,0x50, - 0x5A,0x78,0x72,0x5F,0x6F,0x6F,0x61,0x64,0x6C,0x74,0x78,0x6F,0x71,0x7B,0x73,0x70, - 0x79,0x7B,0x7D,0x82,0x82,0x88,0x8C,0x87,0x8A,0x90,0x95,0x92,0xA6,0xC3,0xB6,0xB0, - 0xC0,0xB9,0xAE,0xB1,0xB5,0xC1,0xC2,0xB7,0xBC,0xC0,0xB4,0xAE,0xAD,0xAC,0xAE,0xAA, - 0xA6,0xAA,0xA3,0x9A,0x97,0x9A,0x9B,0x92,0xA6,0xB4,0x9A,0x97,0xA1,0x94,0x8F,0x91, - 0x95,0xA0,0x9D,0x94,0x9C,0xA1,0x99,0x96,0x99,0x9C,0x9F,0x9C,0x9C,0xA2,0x9D,0x94, - 0x90,0x93,0x8C,0x88,0xA2,0xA2,0x8B,0x8F,0x8C,0x7F,0x7C,0x76,0x7E,0x89,0x7E,0x75, - 0x7B,0x77,0x6D,0x6A,0x6C,0x71,0x70,0x68,0x69,0x6B,0x65,0x60,0x5F,0x68,0x5E,0x5D, - 0x7C,0x76,0x5E,0x62,0x61,0x58,0x54,0x4F,0x59,0x63,0x57,0x51,0x59,0x58,0x4F,0x4B, - 0x4B,0x4F,0x52,0x4E,0x4E,0x52,0x4F,0x4A,0x47,0x4F,0x48,0x4B,0x6C,0x66,0x54,0x5C, - 0x5D,0x59,0x5B,0x5C,0x6A,0x76,0x6C,0x68,0x70,0x73,0x73,0x72,0x73,0x7C,0x82,0x7E, - 0x7D,0x82,0x82,0x7F,0x7C,0x82,0x80,0x81,0x9D,0x9F,0x8F,0x95,0x95,0x94,0x97,0x94, - 0xA0,0xAF,0xAC,0xA6,0xAC,0xB1,0xB1,0xAC,0xA9,0xB2,0xB9,0xB5,0xAE,0xAE,0xAF,0xAB, - 0xA2,0xA5,0xA4,0x9D,0xB1,0xB5,0x9C,0x98,0x95,0x8E,0x91,0x8C,0x8C,0x99,0x96,0x89, - 0x87,0x88,0x87,0x85,0x7F,0x81,0x8D,0x8E,0x86,0x89,0x8E,0x8E,0x8A,0x88,0x8A,0x86, - 0x98,0xAA,0x97,0x8D,0x8E,0x8A,0x8A,0x81,0x7F,0x8F,0x93,0x87,0x7E,0x7F,0x82,0x80, - 0x7C,0x7C,0x85,0x87,0x7D,0x76,0x76,0x78,0x75,0x73,0x75,0x6C,0x78,0x92,0x83,0x70, - 0x72,0x72,0x72,0x6B,0x64,0x70,0x7A,0x74,0x6C,0x6B,0x6B,0x6D,0x69,0x62,0x64,0x6B, - 0x6B,0x66,0x60,0x61,0x63,0x5D,0x59,0x54,0x59,0x77,0x78,0x61,0x5C,0x5A,0x5B,0x61, - 0x5C,0x5B,0x65,0x6A,0x66,0x5F,0x5A,0x62,0x6C,0x69,0x62,0x67,0x72,0x71,0x69,0x64, - 0x6A,0x6D,0x68,0x65,0x5F,0x71,0x89,0x81,0x73,0x6D,0x6C,0x76,0x79,0x70,0x74,0x85, - 0x8E,0x8A,0x80,0x7E,0x88,0x90,0x8F,0x91,0x9C,0xA2,0xA3,0x9F,0x99,0x9A,0x9E,0xA0, - 0x9A,0x96,0xA8,0xB2,0xA6,0x96,0x88,0x8A,0x93,0x8E,0x85,0x86,0x89,0x8A,0x87,0x7D, - 0x74,0x75,0x7A,0x79,0x79,0x7A,0x80,0x85,0x81,0x7D,0x7C,0x80,0x81,0x7E,0x8E,0xA3, - 0xA1,0x99,0x8F,0x85,0x89,0x91,0x95,0x99,0x9A,0x9A,0x9D,0x9A,0x92,0x8E,0x8F,0x92, - 0x93,0x92,0x8F,0x8F,0x90,0x8D,0x8A,0x8A,0x8A,0x84,0x86,0x98,0x9D,0x97,0x93,0x85, - 0x7C,0x83,0x83,0x81,0x83,0x82,0x86,0x8B,0x87,0x7E,0x7A,0x78,0x78,0x7D,0x7D,0x7A, - 0x79,0x75,0x72,0x6F,0x6E,0x71,0x6E,0x74,0x7E,0x7A,0x74,0x70,0x67,0x68,0x6F,0x6B, - 0x67,0x65,0x62,0x64,0x66,0x68,0x6C,0x6A,0x69,0x6C,0x6E,0x6D,0x6C,0x6D,0x6F,0x6E, - 0x6E,0x6E,0x6E,0x70,0x76,0x7D,0x79,0x75,0x75,0x71,0x74,0x79,0x75,0x78,0x79,0x75, - 0x76,0x78,0x76,0x79,0x7F,0x81,0x84,0x86,0x86,0x89,0x8E,0x90,0x96,0x9B,0x99,0x98, - 0x99,0x9E,0xA1,0x9C,0x9D,0x9F,0x9B,0x9D,0x9C,0x94,0x93,0x90,0x8A,0x89,0x84,0x7E, - 0x7C,0x78,0x75,0x76,0x77,0x77,0x75,0x72,0x73,0x75,0x75,0x75,0x78,0x78,0x7B,0x7F, - 0x7B,0x7D,0x81,0x83,0x8D,0x90,0x89,0x8A,0x8B,0x89,0x8B,0x8E,0x8D,0x8D,0x8A,0x88, - 0x8A,0x8C,0x8B,0x8F,0x92,0x91,0x90,0x90,0x90,0x8F,0x8B,0x8D,0x95,0x8E,0x88,0x8D, - 0x88,0x88,0x8D,0x8B,0x8D,0x8C,0x84,0x86,0x87,0x82,0x82,0x81,0x7D,0x7C,0x7B,0x7C, - 0x7E,0x7E,0x80,0x82,0x85,0x82,0x7E,0x7E,0x7B,0x7F,0x82,0x7B,0x7B,0x77,0x6F,0x77, - 0x76,0x6D,0x70,0x71,0x6B,0x6C,0x69,0x66,0x67,0x63,0x62,0x66,0x67,0x67,0x68,0x69, - 0x69,0x6D,0x73,0x75,0x76,0x75,0x76,0x81,0x7F,0x78,0x7E,0x7C,0x7A,0x7F,0x7C,0x7C, - 0x7F,0x7A,0x7D,0x83,0x7D,0x7C,0x7E,0x7C,0x7D,0x7F,0x80,0x84,0x84,0x83,0x88,0x8D, - 0x8C,0x8D,0x90,0x8E,0x8E,0x95,0x91,0x90,0x92,0x8C,0x8F,0x95,0x8C,0x8A,0x8A,0x84, - 0x86,0x87,0x85,0x84,0x7F,0x7D,0x7F,0x7E,0x7D,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E,0x7D, - 0x7C,0x7C,0x83,0x87,0x80,0x80,0x82,0x7E,0x84,0x88,0x83,0x84,0x83,0x83,0x89,0x87, - 0x85,0x88,0x85,0x83,0x82,0x84,0x88,0x88,0x87,0x89,0x8A,0x89,0x86,0x86,0x86,0x83, - 0x8A,0x91,0x89,0x87,0x89,0x83,0x87,0x88,0x82,0x85,0x83,0x7E,0x80,0x7E,0x7C,0x7C, - 0x7D,0x7F,0x80,0x81,0x81,0x83,0x84,0x83,0x83,0x85,0x84,0x83,0x85,0x83,0x86,0x8A, - 0x84,0x83,0x84,0x7C,0x81,0x85,0x7D,0x7D,0x7E,0x78,0x78,0x76,0x74,0x75,0x72,0x71, - 0x75,0x76,0x76,0x76,0x77,0x78,0x78,0x7B,0x7D,0x7D,0x7C,0x77,0x78,0x7F,0x7A,0x79, - 0x81,0x7C,0x7A,0x84,0x80,0x7D,0x7E,0x78,0x78,0x7B,0x77,0x79,0x7B,0x77,0x78,0x7B, - 0x7D,0x7E,0x7F,0x80,0x84,0x86,0x83,0x84,0x85,0x81,0x7D,0x84,0x88,0x83,0x84,0x85, - 0x83,0x87,0x86,0x81,0x82,0x7E,0x78,0x7D,0x7C,0x79,0x79,0x75,0x74,0x75,0x77,0x7B, - 0x7C,0x79,0x79,0x7D,0x7D,0x7B,0x79,0x79,0x78,0x78,0x81,0x81,0x7C,0x7E,0x7A,0x7C, - 0x82,0x7C,0x7B,0x80,0x7A,0x78,0x7D,0x7A,0x7A,0x7A,0x78,0x7B,0x7E,0x7E,0x7E,0x7F, - 0x7E,0x7F,0x83,0x84,0x84,0x85,0x87,0x86,0x8B,0x8F,0x88,0x88,0x88,0x83,0x8A,0x8C, - 0x85,0x86,0x84,0x80,0x82,0x83,0x7E,0x82,0x81,0x84,0x85,0x63,0x6A,0x86,0x8B,0x78, - 0x7D,0x97,0x78,0x77,0x88,0x84,0x86,0x90,0x9D,0x88,0x83,0x8A,0x8A,0x8A,0x82,0x8B, - 0x85,0x76,0x74,0x7A,0x7E,0x7E,0x80,0x81,0x7B,0x6E,0x74,0x77,0x75,0x77,0x7C,0x7F, - 0x7A,0x83,0x80,0x7C,0x82,0x89,0x8F,0x87,0x88,0x8D,0x83,0x88,0x8E,0x84,0x88,0x86, - 0x78,0x80,0x86,0x79,0x79,0x7B,0x70,0x78,0x7D,0x78,0x7E,0x7B,0x77,0x77,0x7C,0x7F, - 0x83,0x90,0x7B,0x6A,0x86,0x9A,0x95,0x90,0x8B,0x80,0x86,0x87,0x83,0x84,0x72,0x70, - 0x7F,0x81,0x7F,0x7A,0x74,0x7A,0x82,0x7D,0x7A,0x7B,0x74,0x72,0x80,0x7F,0x74,0x78, - 0x79,0x70,0x6E,0x83,0x8C,0x85,0x87,0x7A,0x6F,0x7C,0x7E,0x77,0x7A,0x74,0x75,0x87, - 0x86,0x84,0x8A,0x7A,0x80,0x88,0x84,0x7D,0x7E,0x86,0x84,0x85,0x7F,0x7C,0x7D,0x7A, - 0x7B,0x7C,0x8A,0x90,0x8E,0x8F,0x7D,0x78,0x81,0x7B,0x77,0x76,0x7B,0x88,0x8A,0x84, - 0x83,0x83,0x80,0x83,0x7E,0x78,0x7B,0x80,0x87,0x8F,0x87,0x82,0x82,0x7D,0x78,0x72, - 0x86,0x98,0x97,0x92,0x84,0x75,0x7E,0x85,0x72,0x73,0x7F,0x7A,0x87,0x87,0x7E,0x7C, - 0x7B,0x7E,0x7A,0x79,0x77,0x7C,0x84,0x86,0x86,0x7D,0x7E,0x81,0x79,0x77,0x77,0x8C, - 0x99,0x90,0x8A,0x80,0x7A,0x86,0x84,0x7C,0x7F,0x7F,0x7F,0x87,0x84,0x7E,0x85,0x82, - 0x82,0x81,0x7C,0x81,0x85,0x87,0x88,0x86,0x82,0x81,0x84,0x7F,0x76,0x7E,0x93,0x92, - 0x84,0x8A,0x7E,0x7C,0x8C,0x78,0x6C,0x7A,0x74,0x7C,0x86,0x79,0x7D,0x81,0x79,0x82, - 0x80,0x79,0x7F,0x80,0x82,0x7E,0x7C,0x7D,0x80,0x7A,0x77,0x74,0x7D,0x9A,0x8F,0x83, - 0x88,0x7B,0x83,0x8B,0x71,0x6F,0x75,0x75,0x88,0x80,0x76,0x85,0x87,0x8A,0x8F,0x79, - 0x78,0x88,0x82,0x7A,0x7E,0x84,0x83,0x84,0x81,0x77,0x76,0x94,0x9E,0x84,0x8B,0x87, - 0x7A,0x93,0x83,0x70,0x84,0x81,0x84,0x8C,0x79,0x7A,0x8C,0x87,0x88,0x85,0x79,0x89, - 0x88,0x7A,0x80,0x7E,0x7E,0x80,0x79,0x78,0x74,0x82,0x99,0x8A,0x81,0x8C,0x81,0x87, - 0x8A,0x6B,0x6E,0x7E,0x79,0x88,0x7E,0x6F,0x8A,0x89,0x81,0x86,0x79,0x82,0x90,0x7E, - 0x7C,0x7D,0x7A,0x83,0x7B,0x76,0x78,0x77,0x93,0x96,0x7E,0x8B,0x86,0x7E,0x8F,0x71, - 0x69,0x82,0x77,0x80,0x84,0x6F,0x85,0x91,0x84,0x89,0x81,0x82,0x8F,0x7D,0x76,0x81, - 0x83,0x86,0x80,0x77,0x7B,0x7B,0x8F,0x9B,0x81,0x8A,0x8E,0x7E,0x8D,0x7D,0x6D,0x83, - 0x75,0x74,0x81,0x6A,0x77,0x8A,0x7C,0x82,0x7F,0x78,0x87,0x80,0x76,0x7C,0x80,0x80, - 0x7B,0x74,0x74,0x73,0x80,0x97,0x85,0x82,0x8E,0x80,0x8A,0x83,0x65,0x76,0x78,0x6C, - 0x7B,0x6D,0x73,0x8F,0x84,0x7F,0x83,0x78,0x8B,0x8C,0x77,0x80,0x80,0x81,0x81,0x74, - 0x7A,0x7B,0x7D,0x98,0x93,0x82,0x8C,0x85,0x8A,0x8C,0x70,0x7A,0x82,0x75,0x83,0x7A, - 0x73,0x8D,0x86,0x7E,0x84,0x7C,0x83,0x8E,0x7E,0x79,0x82,0x79,0x79,0x74,0x77,0x7A, - 0x77,0x90,0x8F,0x7F,0x87,0x83,0x83,0x8C,0x75,0x76,0x82,0x72,0x79,0x75,0x6D,0x80, - 0x84,0x7F,0x82,0x81,0x84,0x89,0x80,0x78,0x7E,0x7F,0x7C,0x7C,0x7A,0x7A,0x77,0x89, - 0x8E,0x82,0x85,0x82,0x84,0x89,0x7C,0x75,0x80,0x77,0x78,0x7E,0x70,0x7A,0x86,0x80, - 0x85,0x85,0x7F,0x89,0x84,0x7B,0x82,0x85,0x80,0x7E,0x7D,0x79,0x76,0x7D,0x89,0x80, - 0x82,0x89,0x82,0x8B,0x85,0x76,0x7E,0x7D,0x77,0x7C,0x73,0x73,0x7E,0x7B,0x7E,0x81, - 0x7D,0x84,0x83,0x7A,0x83,0x7F,0x7B,0x7C,0x79,0x7A,0x73,0x7B,0x88,0x81,0x82,0x88, - 0x83,0x8A,0x85,0x75,0x7F,0x82,0x7B,0x7D,0x76,0x73,0x80,0x7C,0x78,0x80,0x83,0x85, - 0x89,0x82,0x7D,0x87,0x80,0x7C,0x7C,0x7A,0x7B,0x7D,0x8D,0x83,0x7F,0x89,0x87,0x8A, - 0x86,0x7F,0x83,0x83,0x7C,0x7C,0x75,0x79,0x7F,0x7B,0x7D,0x82,0x80,0x84,0x8C,0x84, - 0x83,0x85,0x80,0x80,0x80,0x7C,0x7C,0x81,0x88,0x84,0x7D,0x83,0x84,0x86,0x87,0x80, - 0x7E,0x7F,0x7B,0x7C,0x7C,0x77,0x80,0x80,0x7C,0x7E,0x7B,0x7F,0x87,0x84,0x80,0x86, - 0x84,0x82,0x7D,0x7D,0x7B,0x7E,0x87,0x81,0x80,0x84,0x83,0x88,0x86,0x7E,0x82,0x7F, - 0x7E,0x82,0x7A,0x7B,0x7E,0x80,0x7E,0x7E,0x7E,0x80,0x87,0x84,0x80,0x86,0x83,0x7D, - 0x80,0x7B,0x7A,0x84,0x85,0x7F,0x83,0x84,0x7F,0x86,0x81,0x7C,0x83,0x83,0x81,0x80, - 0x79,0x7B,0x7F,0x7B,0x7C,0x7F,0x81,0x82,0x82,0x81,0x84,0x85,0x81,0x80,0x7E,0x79, - 0x7A,0x86,0x83,0x7D,0x84,0x83,0x83,0x84,0x7F,0x81,0x87,0x82,0x7E,0x7D,0x79,0x7C, - 0x7F,0x7D,0x7F,0x7E,0x7F,0x86,0x82,0x80,0x86,0x84,0x82,0x82,0x7E,0x80,0x87,0x86, - 0x84,0x83,0x87,0x83,0x87,0x86,0x7B,0x82,0x83,0x7E,0x7C,0x77,0x7E,0x80,0x79,0x7A, - 0x7D,0x7C,0x84,0x84,0x80,0x83,0x83,0x7E,0x7F,0x7E,0x7C,0x81,0x87,0x86,0x81,0x84, - 0x84,0x88,0x86,0x7E,0x83,0x83,0x7E,0x7E,0x7F,0x7E,0x81,0x81,0x81,0x7E,0x7C,0x80, - 0x82,0x81,0x80,0x83,0x81,0x7F,0x7E,0x7E,0x7F,0x87,0x88,0x81,0x87,0x82,0x83,0x89, - 0x7F,0x7F,0x84,0x84,0x82,0x7B,0x77,0x80,0x85,0x7B,0x7B,0x7F,0x7F,0x84,0x7F,0x7D, - 0x83,0x80,0x80,0x7C,0x78,0x7C,0x8C,0x88,0x7C,0x86,0x84,0x87,0x8B,0x7A,0x79,0x84, - 0x80,0x7C,0x79,0x75,0x81,0x82,0x79,0x7A,0x7E,0x85,0x8C,0x7D,0x77,0x85,0x80,0x77, - 0x7A,0x74,0x7A,0x9B,0x8B,0x78,0x8A,0x87,0x8C,0x87,0x6E,0x7B,0x86,0x78,0x7B,0x76, - 0x78,0x8D,0x82,0x76,0x81,0x85,0x86,0x82,0x76,0x81,0x8D,0x7A,0x75,0x79,0x72,0x8D, - 0xA0,0x82,0x89,0x8F,0x84,0x88,0x71,0x6B,0x86,0x81,0x77,0x81,0x7E,0x8B,0x8E,0x72, - 0x77,0x86,0x81,0x7A,0x75,0x7F,0x8E,0x7F,0x72,0x79,0x73,0x8B,0x9C,0x7F,0x8B,0x9E, - 0x8F,0x89,0x7B,0x6D,0x88,0x7D,0x6A,0x80,0x79,0x88,0x7F,0x64,0x75,0x6B,0x72,0x82, - 0x69,0x7A,0x8A,0x6C,0x65,0x66,0x6B,0x88,0x95,0x87,0x86,0x8A,0x7D,0x79,0x70,0x6F, - 0x88,0x86,0x82,0x8E,0x87,0x86,0x86,0x76,0x7F,0x8C,0x7C,0x7D,0x8F,0x94,0x8B,0x7B, - 0x88,0x97,0x89,0xA0,0xB8,0x94,0x9B,0xAC,0x91,0x8D,0x8F,0x8C,0x98,0x99,0x92,0x90, - 0x7E,0x7C,0x7E,0x6E,0x81,0x91,0x7C,0x78,0x7C,0x78,0x70,0x54,0x53,0x68,0x61,0x73, - 0x88,0x71,0x6A,0x67,0x53,0x52,0x4D,0x50,0x6A,0x6E,0x64,0x69,0x68,0x66,0x65,0x5C, - 0x6A,0x76,0x71,0x76,0x82,0x7B,0x71,0x6D,0x75,0x78,0x69,0x82,0x95,0x7E,0x7D,0x78, - 0x6A,0x6A,0x65,0x71,0x8B,0x8A,0x88,0x94,0x98,0xA1,0xA6,0x9B,0xA2,0xA8,0x9A,0x99, - 0xA0,0x96,0x8D,0x86,0x86,0x86,0x83,0xA1,0xA8,0x8A,0x89,0x85,0x7C,0x7A,0x75,0x84, - 0x98,0x8E,0x86,0x90,0x8B,0x83,0x7F,0x7F,0x8D,0x91,0x8A,0x92,0x97,0x8B,0x83,0x83, - 0x86,0x80,0x85,0xA2,0x9A,0x8B,0x94,0x8D,0x82,0x7A,0x7D,0x93,0x9C,0x91,0x97,0xA0, - 0x9A,0x92,0x89,0x90,0x9C,0x97,0x94,0x9B,0x93,0x83,0x7E,0x81,0x7D,0x71,0x85,0x9A, - 0x86,0x7E,0x80,0x75,0x6A,0x5D,0x62,0x75,0x6F,0x61,0x66,0x68,0x5B,0x51,0x4E,0x56, - 0x58,0x4F,0x53,0x5F,0x59,0x4F,0x51,0x56,0x50,0x4E,0x6E,0x77,0x63,0x6A,0x70,0x63, - 0x5C,0x5D,0x70,0x7F,0x72,0x71,0x7B,0x73,0x63,0x5F,0x66,0x6B,0x6B,0x67,0x70,0x77, - 0x71,0x6F,0x7B,0x83,0x7B,0x90,0xB5,0xAE,0xA5,0xAF,0xA7,0x99,0x8F,0x92,0xA7,0xA3, - 0x93,0x9B,0x9E,0x8F,0x86,0x85,0x88,0x86,0x81,0x88,0x92,0x8D,0x83,0x83,0x88,0x82, - 0x79,0x99,0xA8,0x8E,0x94,0x9A,0x8C,0x82,0x80,0x8F,0x9D,0x8F,0x90,0xA1,0x95,0x86, - 0x88,0x8C,0x93,0x92,0x8F,0x9C,0x9C,0x90,0x8C,0x8F,0x95,0x8B,0x8E,0xB2,0xAC,0x94, - 0xA3,0xA2,0x92,0x8B,0x8B,0x98,0x99,0x87,0x8A,0x94,0x83,0x7B,0x7F,0x81,0x82,0x79, - 0x7A,0x81,0x77,0x6B,0x68,0x68,0x62,0x53,0x66,0x7C,0x60,0x57,0x66,0x54,0x46,0x49, - 0x54,0x64,0x5D,0x55,0x67,0x65,0x54,0x57,0x60,0x65,0x65,0x64,0x71,0x76,0x68,0x69, - 0x70,0x70,0x69,0x64,0x7F,0x83,0x64,0x6B,0x78,0x64,0x5D,0x66,0x75,0x80,0x75,0x7C, - 0x94,0x8D,0x83,0x93,0x9D,0xA0,0xA4,0xA6,0xB2,0xAD,0x9D,0x9F,0x9E,0x97,0x8D,0x92, - 0xB0,0xA4,0x8B,0x9A,0x97,0x7D,0x7A,0x82,0x8D,0x8E,0x80,0x8D,0x9A,0x83,0x7C,0x8B, - 0x8C,0x88,0x89,0x8F,0x97,0x8E,0x87,0x8B,0x8A,0x85,0x7E,0x8A,0xAB,0x99,0x87,0xA3, - 0x9D,0x83,0x84,0x8D,0x93,0x92,0x89,0x99,0xA3,0x8C,0x89,0x98,0x92,0x8E,0x93,0x98, - 0x9C,0x92,0x89,0x8D,0x85,0x80,0x7A,0x80,0x9F,0x8C,0x73,0x8C,0x82,0x63,0x69,0x72, - 0x71,0x6D,0x63,0x6B,0x73,0x5C,0x54,0x60,0x58,0x52,0x57,0x5D,0x62,0x5A,0x57,0x5E, - 0x55,0x55,0x55,0x56,0x7A,0x72,0x58,0x73,0x74,0x54,0x56,0x64,0x68,0x6B,0x65,0x6D, - 0x79,0x64,0x5B,0x6A,0x67,0x62,0x6A,0x6F,0x76,0x74,0x70,0x79,0x7A,0x7B,0x7C,0x81, - 0xA8,0xA9,0x92,0xAD,0xB4,0x97,0x97,0xA1,0xA1,0xA4,0x9A,0x9E,0xAD,0x99,0x89,0x98, - 0x93,0x86,0x8A,0x8E,0x8F,0x8A,0x82,0x86,0x82,0x7A,0x7F,0x7C,0x92,0xA0,0x86,0x8E, - 0x9E,0x83,0x76,0x86,0x8B,0x8D,0x89,0x88,0x97,0x90,0x7E,0x8A,0x91,0x88,0x89,0x90, - 0x90,0x90,0x90,0x92,0x8F,0x8B,0x8D,0x84,0x97,0xB0,0x94,0x91,0xA7,0x93,0x7E,0x88, - 0x8A,0x89,0x86,0x82,0x8D,0x8A,0x76,0x78,0x7E,0x74,0x72,0x75,0x78,0x77,0x71,0x6F, - 0x6C,0x65,0x64,0x5C,0x61,0x7D,0x6D,0x59,0x71,0x6A,0x4E,0x56,0x63,0x62,0x62,0x5F, - 0x66,0x71,0x63,0x5C,0x67,0x65,0x61,0x65,0x6D,0x72,0x6E,0x6D,0x70,0x6B,0x67,0x65, - 0x63,0x7C,0x83,0x69,0x76,0x84,0x6B,0x64,0x76,0x7B,0x7E,0x80,0x88,0x99,0x94,0x8A, - 0x97,0xA2,0x9D,0x9C,0xA3,0xA7,0xA1,0x9D,0x9D,0x9A,0x94,0x94,0x8B,0x95,0xAB,0x94, - 0x8D,0xA1,0x8E,0x78,0x80,0x86,0x85,0x83,0x82,0x8D,0x8D,0x7F,0x7F,0x88,0x85,0x83, - 0x89,0x8E,0x8D,0x88,0x85,0x87,0x83,0x82,0x81,0x86,0xA2,0x9D,0x89,0x98,0x9A,0x84, - 0x80,0x8A,0x90,0x90,0x8A,0x8E,0x98,0x8E,0x84,0x8D,0x8F,0x87,0x85,0x8A,0x8D,0x8A, - 0x84,0x85,0x82,0x7B,0x77,0x71,0x85,0x92,0x78,0x78,0x87,0x73,0x63,0x67,0x6F,0x71, - 0x6A,0x68,0x72,0x6D,0x5D,0x60,0x68,0x66,0x65,0x68,0x6C,0x6C,0x66,0x66,0x68,0x65, - 0x63,0x5F,0x6E,0x84,0x70,0x67,0x7B,0x72,0x60,0x64,0x6C,0x70,0x6C,0x69,0x74,0x77, - 0x6C,0x6B,0x72,0x72,0x71,0x74,0x7C,0x83,0x82,0x81,0x87,0x8B,0x8C,0x88,0x95,0xB4, - 0xAB,0x98,0xA9,0xA7,0x93,0x91,0x97,0x9E,0x9E,0x92,0x93,0x9B,0x8E,0x85,0x8B,0x8C, - 0x89,0x83,0x83,0x89,0x86,0x7E,0x7E,0x83,0x82,0x7A,0x7C,0x97,0x92,0x7D,0x8D,0x91, - 0x7E,0x79,0x80,0x88,0x8B,0x82,0x85,0x92,0x8D,0x83,0x83,0x8B,0x8C,0x88,0x89,0x90, - 0x92,0x8A,0x88,0x89,0x8A,0x85,0x84,0x9E,0xA2,0x87,0x8C,0x94,0x81,0x7A,0x7D,0x83, - 0x89,0x80,0x7A,0x82,0x80,0x73,0x72,0x77,0x77,0x74,0x72,0x72,0x74,0x71,0x69,0x65, - 0x69,0x66,0x60,0x76,0x81,0x68,0x6E,0x76,0x64,0x5F,0x61,0x76,0x74,0x72,0x6C,0x56, - 0x6C,0x68,0x51,0x52,0x63,0x6D,0x70,0x76,0x7B,0x7B,0x73,0x7B,0x88,0x86,0x7D,0x9A, - 0xA9,0x85,0x81,0x7C,0x6E,0x7B,0x6C,0x62,0x7B,0x7D,0x69,0x6A,0x6E,0x69,0x7B,0x85, - 0x89,0x7F,0x7F,0x90,0x90,0x91,0x94,0x98,0xA9,0xAC,0x97,0xB3,0xC7,0xB6,0xC7,0xA4, - 0xA9,0xB5,0x95,0xAF,0xA8,0xA4,0xAD,0x9D,0x94,0x87,0x82,0x8E,0x83,0x75,0x7B,0x68, - 0x70,0x7D,0x6D,0x80,0x7D,0x68,0x71,0x7D,0x84,0x77,0x5C,0x5B,0x61,0x59,0x5A,0x66, - 0x6B,0x65,0x5F,0x6B,0x78,0x75,0x82,0x80,0x8F,0xA0,0x95,0x8D,0x91,0x91,0x8C,0x94, - 0xA1,0xA5,0xAC,0xB2,0xAD,0xA7,0xA1,0xA2,0x91,0x8A,0x87,0x87,0x8D,0x79,0x77,0x75, - 0x6B,0x65,0x63,0x6F,0x6B,0x5E,0x4D,0x40,0x47,0x4F,0x47,0x36,0x3D,0x43,0x42,0x56, - 0x54,0x5A,0x62,0x5B,0x62,0x62,0x66,0x7D,0x87,0x78,0x76,0x74,0x7E,0x89,0x82,0x8A, - 0x8E,0x91,0xA0,0x9A,0xAD,0xBA,0xAC,0xBA,0xBD,0xA8,0xB9,0xB8,0x91,0xA3,0xA1,0x90, - 0xA1,0x92,0x8C,0x94,0x86,0x7F,0x8C,0x88,0x7C,0x75,0x66,0x74,0x73,0x66,0x65,0x66, - 0x74,0x69,0x61,0x59,0x50,0x67,0x6E,0x6B,0x62,0x5A,0x6F,0x74,0x66,0x73,0x72,0x76, - 0x87,0x78,0x85,0x90,0x8E,0x96,0x92,0x9F,0xA9,0xB1,0xB2,0xAB,0xC4,0xC7,0xBD,0xC9, - 0xC0,0xBC,0xC5,0xC2,0xBD,0xB5,0xAE,0x9C,0x8B,0x85,0x80,0x8E,0x7E,0x6F,0x82,0x81, - 0x78,0x63,0x47,0x46,0x54,0x5D,0x5D,0x54,0x4A,0x47,0x48,0x40,0x3C,0x51,0x58,0x4A, - 0x41,0x44,0x4A,0x4E,0x55,0x4E,0x63,0x7B,0x74,0x68,0x58,0x5C,0x6D,0x70,0x79,0x83, - 0x8C,0x9B,0x92,0x7D,0x80,0x8B,0x8B,0x94,0xA5,0xA5,0xA7,0xA9,0xAB,0xB5,0xB8,0xB9, - 0xBE,0xBC,0xC0,0xC3,0xB2,0xA2,0x92,0x95,0xAA,0xB3,0xA6,0x95,0x8B,0x8A,0x84,0x81, - 0x7E,0x78,0x71,0x6C,0x77,0x71,0x69,0x4E,0x4B,0x59,0x56,0x5D,0x53,0x4D,0x59,0x5D, - 0x51,0x42,0x45,0x4D,0x4C,0x58,0x5A,0x4B,0x5A,0x5D,0x57,0x66,0x6A,0x74,0x7D,0x81, - 0x8E,0x9C,0x9E,0x9F,0xA3,0xAC,0xBC,0xB6,0xB8,0xC1,0xCB,0xCD,0xC7,0xC4,0xBB,0xC0, - 0xC5,0xBD,0xAF,0xAC,0xAB,0xA7,0xA3,0x9A,0x9F,0xA1,0x91,0x91,0x95,0x93,0x8A,0x83, - 0x79,0x6B,0x6D,0x69,0x67,0x65,0x5F,0x5D,0x57,0x4F,0x4B,0x58,0x56,0x49,0x48,0x4F, - 0x5B,0x63,0x66,0x58,0x4F,0x56,0x56,0x5E,0x65,0x60,0x63,0x63,0x5E,0x5A,0x61,0x67, - 0x56,0x5B,0x63,0x64,0x6E,0x67,0x68,0x6A,0x6C,0x76,0x78,0x82,0x8B,0x88,0x88,0x86, - 0x8C,0x96,0x96,0xAB,0xBC,0xB9,0xBA,0xBC,0xB3,0xAA,0xAA,0xA1,0xAC,0xBC,0xB8,0xB9, - 0xA8,0x9D,0xA0,0xA7,0xA5,0x8F,0x87,0x91,0x97,0x90,0x86,0x88,0x8A,0x87,0x82,0x7B, - 0x8A,0x83,0x6F,0x6A,0x5E,0x69,0x74,0x71,0x75,0x84,0x83,0x7B,0x7B,0x6C,0x71,0x7C, - 0x74,0x71,0x6F,0x72,0x6F,0x69,0x60,0x5A,0x5E,0x61,0x64,0x72,0x81,0x86,0x75,0x66, - 0x6E,0x71,0x77,0x78,0x7C,0x8D,0x8A,0x84,0x7B,0x76,0x84,0x8D,0x92,0x98,0x92,0x97, - 0x99,0x8E,0x8D,0x85,0x90,0x8D,0x7E,0x97,0x9B,0x9A,0xA0,0x86,0x7E,0x88,0x85,0x8B, - 0x93,0x84,0x7D,0x82,0x76,0x7C,0x83,0x71,0x6E,0x6E,0x6F,0x7F,0x7A,0x71,0x68,0x59, - 0x65,0x63,0x5F,0x75,0x80,0x7C,0x74,0x6F,0x70,0x7A,0x79,0x72,0x7C,0x7F,0x81,0x89, - 0x8B,0x84,0x7C,0x77,0x79,0x7D,0x92,0x9B,0x8D,0x83,0x75,0x82,0x85,0x78,0x76,0x6F, - 0x74,0x78,0x7E,0x77,0x72,0x7D,0x79,0x77,0x85,0x83,0x7D,0x85,0x86,0x90,0x8E,0x89, - 0x93,0x97,0x92,0x8F,0x97,0x96,0x93,0x94,0x92,0x8A,0x84,0x8B,0x88,0x88,0x91,0x8B, - 0x80,0x91,0x90,0x87,0x94,0x90,0x94,0x9C,0x97,0x97,0x93,0x87,0x85,0x8A,0x8F,0x8F, - 0x86,0x7C,0x7E,0x88,0x94,0x8E,0x85,0x8C,0x85,0x7F,0x87,0x7C,0x6E,0x7A,0x7B,0x79, - 0x7B,0x72,0x6D,0x75,0x78,0x75,0x6E,0x6D,0x79,0x7C,0x7B,0x71,0x63,0x67,0x64,0x5E, - 0x5D,0x52,0x57,0x63,0x67,0x66,0x64,0x5C,0x5B,0x6A,0x64,0x65,0x67,0x54,0x55,0x61, - 0x66,0x6D,0x6B,0x6A,0x6D,0x72,0x7F,0x81,0x75,0x73,0x78,0x79,0x7A,0x7C,0x7D,0x80, - 0x87,0x89,0x8F,0x8D,0x8D,0x99,0x95,0x8A,0x86,0x84,0x89,0x9A,0x9F,0x95,0x94,0x92, - 0x8F,0x9C,0xA3,0x9D,0x97,0x92,0x97,0x98,0x8D,0x82,0x80,0x85,0x91,0x94,0x93,0x90, - 0x88,0x97,0x9F,0x97,0x99,0x91,0x8F,0x93,0x94,0x8E,0x86,0x8D,0x91,0x8F,0x93,0x94, - 0x96,0x95,0x8E,0x8A,0x84,0x7B,0x79,0x7D,0x7F,0x7D,0x7E,0x81,0x81,0x85,0x8A,0x87, - 0x84,0x82,0x76,0x77,0x7B,0x79,0x73,0x6C,0x72,0x6F,0x6C,0x6C,0x6B,0x71,0x72,0x6D, - 0x62,0x5E,0x5C,0x62,0x6A,0x5B,0x5C,0x60,0x59,0x61,0x69,0x64,0x66,0x68,0x6C,0x74, - 0x6F,0x6A,0x65,0x64,0x64,0x68,0x69,0x61,0x62,0x6C,0x74,0x74,0x77,0x77,0x75,0x82, - 0x8B,0x82,0x7A,0x82,0x82,0x86,0x92,0x91,0x93,0x94,0x99,0x97,0x8D,0x8C,0x87,0x8C, - 0x8D,0x89,0x91,0x87,0x83,0x91,0x98,0x9C,0x9B,0x95,0x95,0x9B,0x9F,0x9A,0x96,0x96, - 0x98,0xA1,0x9F,0x9B,0x99,0x9C,0xA1,0x9D,0x98,0x92,0x95,0x96,0x97,0x93,0x8A,0x90, - 0x92,0x92,0x92,0x94,0x91,0x8E,0x8D,0x8A,0x96,0x95,0x92,0x90,0x88,0x8A,0x8E,0x8A, - 0x89,0x8B,0x89,0x83,0x82,0x83,0x80,0x81,0x82,0x7C,0x7D,0x81,0x82,0x7C,0x73,0x75, - 0x72,0x72,0x75,0x72,0x6D,0x6B,0x78,0x71,0x6B,0x76,0x6C,0x6B,0x6B,0x66,0x66,0x5C, - 0x5D,0x5A,0x56,0x5C,0x59,0x57,0x54,0x5A,0x5C,0x5C,0x60,0x5C,0x64,0x69,0x68,0x69, - 0x64,0x62,0x70,0x75,0x6F,0x6F,0x65,0x67,0x73,0x76,0x77,0x73,0x6C,0x6F,0x74,0x73, - 0x71,0x6D,0x69,0x6E,0x78,0x7D,0x80,0x83,0x85,0x8C,0x91,0x8D,0x8F,0x8F,0x8E,0x98, - 0x9A,0x95,0x94,0x8F,0x93,0x9A,0x96,0x97,0x98,0x8F,0x93,0x9D,0x97,0x92,0x95,0x96, - 0x98,0xA2,0xA0,0x98,0x9C,0x9E,0xA4,0xA8,0xA1,0x9B,0x98,0x9C,0xA8,0xA6,0x9E,0x98, - 0x90,0x93,0x9A,0x98,0x95,0x91,0x8A,0x91,0x90,0x8F,0x93,0x8D,0x93,0x98,0x99,0x9B, - 0x97,0x90,0x8E,0x8E,0x8A,0x88,0x81,0x7D,0x8B,0x94,0x96,0x93,0x86,0x7D,0x7C,0x7E, - 0x78,0x6F,0x68,0x5D,0x68,0x6F,0x6C,0x72,0x6F,0x71,0x79,0x7B,0x73,0x6C,0x6D,0x6E, - 0x6F,0x6A,0x68,0x64,0x66,0x74,0x7B,0x7E,0x7D,0x6B,0x65,0x68,0x64,0x62,0x5A,0x50, - 0x54,0x60,0x6A,0x6C,0x69,0x68,0x65,0x68,0x64,0x64,0x65,0x64,0x63,0x5F,0x65,0x61, - 0x64,0x75,0x7D,0x80,0x81,0x7B,0x72,0x73,0x6F,0x6B,0x6E,0x6B,0x6E,0x7C,0x81,0x86, - 0x88,0x83,0x89,0x8A,0x89,0x92,0x8E,0x8C,0x90,0x87,0x8B,0x8C,0x83,0x91,0x9B,0x99, - 0x9B,0x94,0x86,0x89,0x89,0x87,0x8D,0x87,0x87,0x93,0x92,0x94,0x9A,0x97,0x9F,0x9E, - 0x9A,0x9C,0x97,0x95,0x93,0x8B,0x8F,0x92,0x8D,0x94,0xA1,0xA6,0xA5,0xA1,0x92,0x8F, - 0x91,0x88,0x87,0x83,0x7C,0x85,0x86,0x84,0x8B,0x84,0x8D,0x93,0x8C,0x88,0x82,0x81, - 0x83,0x82,0x84,0x8A,0x81,0x7B,0x89,0x8F,0x93,0x93,0x81,0x7D,0x87,0x7D,0x79,0x72, - 0x68,0x73,0x7C,0x78,0x7C,0x79,0x7B,0x8A,0x85,0x7F,0x7D,0x75,0x74,0x77,0x72,0x73, - 0x73,0x66,0x6B,0x7C,0x7E,0x82,0x7A,0x6A,0x74,0x73,0x6B,0x68,0x5C,0x61,0x70,0x75, - 0x73,0x70,0x6E,0x79,0x80,0x7C,0x78,0x74,0x74,0x7A,0x7D,0x7D,0x7F,0x7A,0x72,0x7A, - 0x86,0x88,0x8B,0x82,0x76,0x7A,0x7B,0x74,0x6C,0x66,0x6E,0x78,0x79,0x73,0x72,0x76, - 0x81,0x86,0x81,0x7B,0x75,0x7B,0x80,0x79,0x7A,0x7A,0x7D,0x7A,0x74,0x80,0x84,0x87, - 0x83,0x79,0x7B,0x80,0x7C,0x7B,0x79,0x78,0x7F,0x7F,0x7A,0x7B,0x80,0x81,0x86,0x86, - 0x81,0x81,0x84,0x84,0x85,0x7F,0x81,0x85,0x82,0x7F,0x79,0x81,0x85,0x88,0x87,0x81, - 0x83,0x84,0x80,0x7D,0x79,0x7C,0x7F,0x81,0x85,0x84,0x84,0x8A,0x8B,0x89,0x8B,0x8A, - 0x89,0x8A,0x89,0x8B,0x88,0x85,0x85,0x82,0x84,0x86,0x85,0x83,0x85,0x83,0x84,0x82, - 0x7D,0x7D,0x7D,0x7D,0x7A,0x7D,0x80,0x80,0x85,0x84,0x83,0x84,0x82,0x88,0x8A,0x88, - 0x8A,0x86,0x84,0x89,0x85,0x81,0x83,0x82,0x83,0x86,0x83,0x81,0x7F,0x80,0x7F,0x7D, - 0x81,0x7E,0x7D,0x7E,0x7C,0x80,0x84,0x81,0x80,0x83,0x84,0x86,0x82,0x82,0x83,0x81, - 0x84,0x82,0x7F,0x7F,0x82,0x83,0x80,0x80,0x81,0x81,0x81,0x80,0x7F,0x81,0x81,0x7F, - 0x7F,0x80,0x7A,0x7B,0x7C,0x7B,0x80,0x7E,0x7E,0x7F,0x7E,0x80,0x82,0x83,0x80,0x7E, - 0x83,0x84,0x82,0x81,0x80,0x80,0x81,0x82,0x81,0x80,0x82,0x80,0x81,0x81,0x7C,0x80, - 0x82,0x81,0x80,0x7F,0x82,0x81,0x80,0x7E,0x80,0x7F,0x7D,0x7D,0x7F,0x80,0x7E,0x7D, - 0x7D,0x7D,0x7D,0x7F,0x7C,0x7B,0x7E,0x7E,0x7F,0x7C,0x7B,0x7D,0x7D,0x7E,0x7D,0x7F, - 0x7F,0x7F,0x80,0x7F,0x81,0x80,0x81,0x81,0x7F,0x80,0x81,0x81,0x7F,0x7E,0x80,0x7E, - 0x7D,0x7E,0x7F,0x81,0x80,0x80,0x7F,0x7F,0x81,0x82,0x83,0x80,0x81,0x81,0x81,0x82, - 0x80,0x7F,0x81,0x82,0x80,0x81,0x81,0x80,0x7F,0x81,0x83,0x81,0x81,0x82,0x82,0x7F, - 0x7D,0x80,0x80,0x80,0x82,0x82,0x7E,0x80,0x81,0x7E,0x7F,0x80,0x7E,0x7D,0x7F,0x7C, - 0x7C,0x7C,0x7B,0x7C,0x7C,0x7F,0x7E,0x7C,0x7C,0x7E,0x7F,0x7E,0x7F,0x7F,0x7F,0x81, - 0x82,0x85,0x85,0x83,0x85,0x85,0x85,0x84,0x83,0x85,0x85,0x82,0x82,0x81,0x80,0x81, - 0x81,0x81,0x80,0x81,0x82,0x7F,0x7F,0x80,0x81,0x7F,0x80,0x84,0x7F,0x7F,0x81,0x80, - 0x81,0x82,0x83,0x82,0x81,0x81,0x82,0x82,0x82,0x82,0x80,0x81,0x83,0x82,0x82,0x84, - 0x83,0x83,0x83,0x83,0x84,0x80,0x80,0x81,0x83,0x82,0x82,0x84,0x82,0x7F,0x7F,0x82, - 0x81,0x81,0x80,0x7D,0x80,0x7C,0x80,0x81,0x7E,0x7F,0x7E,0x81,0x81,0x82,0x7F,0x7E, - 0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x7F,0x80,0x80, - 0x7D,0x7F,0x80,0x7F,0x7E,0x7D,0x7F,0x7F,0x81,0x80,0x7D,0x7F,0x7E,0x7F,0x80,0x80, - 0x80,0x80,0x80,0x82,0x81,0x80,0x82,0x82,0x82,0x84,0x82,0x81,0x81,0x7F,0x82,0x83, - 0x83,0x82,0x80,0x81,0x80,0x80,0x81,0x80,0x81,0x81,0x80,0x81,0x80,0x7F,0x7F,0x7F, - 0x80,0x81,0x80,0x80,0x80,0x80,0x7F,0x7F,0x81,0x7D,0x7E,0x81,0x7F,0x7F,0x81,0x80, - 0x80,0x7F,0x81,0x7F,0x7F,0x82,0x7E,0x80,0x7F,0x7E,0x80,0x7D,0x7F,0x7E,0x7F,0x82, - 0x80,0x7F,0x7E,0x7C,0x80,0x80,0x7E,0x81,0x7E,0x80,0x80,0x7D,0x7F,0x7E,0x80,0x80, - 0x81,0x81,0x7D,0x80,0x7F,0x80,0x82,0x80,0x81,0x80,0x81,0x82,0x81,0x80,0x81,0x82, - 0x83,0x80,0x81,0x81,0x80,0x81,0x81,0x82,0x7F,0x80,0x7F,0x7F,0x81,0x7F,0x7E,0x80, - 0x80,0x7E,0x7D,0x7E,0x7C,0x7E,0x7F,0x80,0x80,0x7B,0x7E,0x7F, -}; diff --git a/boop/trunk/betty.cfg b/boop/trunk/betty.cfg deleted file mode 100644 index 77e37d7..0000000 --- a/boop/trunk/betty.cfg +++ /dev/null @@ -1,110 +0,0 @@ -# OpenOCD config file for Betty remote control -# http://bettyhacks.com/forum/index.php?topic=160.0 - -if { [info exists CHIPNAME] } { - set _CHIPNAME $CHIPNAME -} else { - set _CHIPNAME lpc2220 -} - -if { [info exists ENDIAN] } { - set _ENDIAN $ENDIAN -} else { - set _ENDIAN little -} - -if { [info exists CPUTAPID ] } { - set _CPUTAPID $CPUTAPID -} else { - set _CPUTAPID 0x4f1f0f0f -} - -#coonfigure reset options -jtag_nsrst_delay 50 -jtag_ntrst_delay 50 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst trst_push_pull srst_push_pull - -jtag_khz 1000 - -#jtag scan chain -jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID - -set _TARGETNAME $_CHIPNAME.cpu -target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi - -# Event handlers -$_TARGETNAME configure -event reset-start {jtag_khz 1000} -$_TARGETNAME configure -event reset-init {betty_init} - -arm7_9 dcc_downloads enable - -$_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x10000 -work-area-backup 0 - -#flash bank [ ] -set _FLASHNAME $_CHIPNAME.flash -flash bank $_FLASHNAME cfi 0x80000000 0x00100000 2 2 $_TARGETNAME -flash bank $_FLASHNAME cfi 0x82000000 0x00100000 2 2 $_TARGETNAME - -arm7_9 fast_memory_access enable - -proc betty_init { } { - # setup PLL - # PLLCON: Enable PLL, connect PLL - mww 0xe01fc080 0x03 - # VBPDIV: no division - mww 0xe01fc100 0x02 - # PLLCFG: 0x42 = psel = 10 (4) = msel= 00010 (3) = 240 mhz Fcco*/ - mww 0xe01fc084 0x42 - # Activate PLL settings - #mww 0xe01fc08c 0xaa - #mww 0xe01fc08c 0x55 - #sleep 100 - - # Memory Bank Configuration - # BCFG0: 16bit, rble, 2wst - 30 mhz : Betty: FLASH 0 @ 0x80000000 - mww 0xffe00000 0x10000420 - # BCFG2: 16bit, rble, 2wst - 30 mhz : Betty: FLASH 1 @ 0x82000000 - mww 0xffe00008 0x10000420 - - # BCFG1: 8 bit, 3 sram wst, rble, 5 wst 3 idcy : Betty: LCD @ 0x81000000 - #mww 0xffe00004 0x00000400 - - # GPIO Pin COnfiguration for Flash access - # PINSEL0: - mww 0xe002c000 0x00008005 - # PINSEL1: - mww 0xe002c004 0x00000000 - # PINSEL2: - mww 0xe002c014 0x0de049d4 - - # IO2SET: Set Outputs - mww 0xe0028024 0x1FC0000 - # IO2DIR: Set Direction - mww 0xe0028028 0x1FC0000 - - # IO0DIR: - mww 0xe0028008 0x002018D0 - - # disable watchdog - #mww 0xfffffd44 0x00008000 - # enable user reset - #mww 0xfffffd08 0xa5000001 -} - -proc flash_boop {IMAGE} { - reset init - flash erase_sector 0 0 last - flash write_bank 0 $IMAGE 0 - reset run -} - -proc start_debug {} { - reset halt - mwb 0xE000C01C 0x01 - resume -} - -# For more information about the configuration files, take a look at: -# openocd.texi diff --git a/boop/trunk/boop_rom.bin b/boop/trunk/boop_rom.bin deleted file mode 100644 index 07d71ad42b3fb39c52a7820db9c2a9ab487fb462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268208 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 - - 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 3 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, see . -*/ - -#include "buffer.h" -#include "global.h" -#include "irq.h" - -void cBufferInit(struct cBuffer_ *buffer, unsigned char *start, unsigned short size) { - - unsigned cpsr; - cpsr = disableIRQ(); - - buffer->data = start; - buffer->size = size; - buffer->len = 0; - buffer->index = 0; - - restoreIRQ(cpsr); -} - -void cBufferFlush(struct cBuffer_ *buffer) { - - unsigned cpsr; - cpsr = disableIRQ(); - - buffer->len = 0; - buffer->index = 0; - - restoreIRQ(cpsr); -} - -unsigned char cBufferAdd(struct cBuffer_ *buffer, unsigned char data) { - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->size > buffer->len) { - buffer->data[(buffer->index + buffer->len++) % buffer->size] = data; - restoreIRQ(cpsr); - return 1; - } - restoreIRQ(cpsr); - return 0; - -} - -unsigned short cBufferAddBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len) { - - unsigned short lenw; - unsigned short start; - unsigned short end; - - unsigned cpsr; - cpsr = disableIRQ(); - - lenw = 0; - - if(buffer->size > buffer->len) { - start = (buffer->index + buffer->len) % buffer->size; - if(buffer->index) - end = buffer->index; - else - end = buffer->size; - - if(end <= start) { - if(buffer->size - start < len) { - lenw = buffer->size - start; - memcpy(&buffer->data[start],data,lenw); - } - else { - memcpy(&buffer->data[start],data,len); - buffer->len += len; - restoreIRQ(cpsr); - return len; - } - start = 0; - } - - if(end - start < len - lenw) { - memcpy(&buffer->data[start],&data[lenw],end - start); - buffer->len = buffer->size; - restoreIRQ(cpsr); - return lenw + end - start; - } - else { - memcpy(&buffer->data[start],&data[lenw],len-lenw); - buffer->len += len; - restoreIRQ(cpsr); - return len; - } - } - restoreIRQ(cpsr); - return 0; - -} - -unsigned char cBufferGet(struct cBuffer_ *buffer) { - - unsigned char data = 0; - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->len) { - data = buffer->data[buffer->index++]; - buffer->index %= buffer->size; - buffer->len--; - } - restoreIRQ(cpsr); - return data; -} - -unsigned short cBufferGetBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len) { - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->len) { - if(len > buffer->len) - len = buffer->len; - - if(buffer->index + len <= buffer->size) { - memcpy(data,&buffer->data[buffer->index],len); - } - else { - memcpy(data,&buffer->data[buffer->index],buffer->size - buffer->index); - memcpy(&data[buffer->size - buffer->index],buffer->data,len - (buffer->size - buffer->index)); - } - buffer->index = (buffer->index + len) % buffer->size; - buffer->len -= len; - restoreIRQ(cpsr); - return len; - - } - restoreIRQ(cpsr); - return 0; - -} diff --git a/boop/trunk/buffer.h b/boop/trunk/buffer.h deleted file mode 100644 index da19c07..0000000 --- a/boop/trunk/buffer.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - buffer.h - functions for buffers - Copyright (C) 2008 Telekatz - - 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 3 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, see . -*/ - -#ifndef BUFFER_H -#define BUFFER_H - -struct cBuffer_ { - unsigned char* data; - unsigned short size; - unsigned short len; - unsigned short index; -}; - -void cBufferInit(struct cBuffer_ *buffer, unsigned char *start, unsigned short size); -void cBufferFlush(struct cBuffer_ *buffer); -unsigned char cBufferAdd(struct cBuffer_ *buffer, unsigned char data); -unsigned short cBufferAddBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len); -unsigned char cBufferGet(struct cBuffer_ *buffer); -unsigned short cBufferGetBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len); -#endif diff --git a/boop/trunk/cc1100/Make.conf b/boop/trunk/cc1100/Make.conf deleted file mode 100644 index 290d282..0000000 --- a/boop/trunk/cc1100/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := cc1100.c rf.c fs20.c diff --git a/boop/trunk/cc1100/cc1100.c b/boop/trunk/cc1100/cc1100.c deleted file mode 100644 index 4495d30..0000000 --- a/boop/trunk/cc1100/cc1100.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - cc1100.c - - Copyright (C) 2007 - - 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 3 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, see . -*/ - -// CC1100 - http://focus.ti.com/docs/prod/folders/print/cc1100.html -// 27 MHz crystal -// http://en.wikipedia.org/wiki/ISM_band http://de.wikipedia.org/wiki/ISM-Band -// http://de.wikipedia.org/wiki/Short_Range_Devices http://en.wikipedia.org/wiki/Low-power_communication_device -// 433,05 MHz ... 434,79 MHz - -#include "lpc2220.h" -#include "cc1100.h" -#include "irq.h" - -//setting 6_WOR -const unsigned char conf[0x2F] = { - 0x29, // IOCFG2 - 0x2E, // IOCFG1 - 0x06, // IOCFG0 - 0x47, // FIFOTHR - 0xD3, // SYNC1 - 0x91, // SYNC0 - 0x3E, // PKTLEN - 0x1A, // PKTCTRL1 - 0x45, // PKTCTRL0 - 0x01, // ADDR - 0x01, // CHANNR - 0x06, // FSCTRL1 - 0x00, // FSCTRL0 - 0x10, // FREQ2 # - 0x0B, // FREQ1 # - 0xDA, // FREQ0 # -> 433,249969 MHz - 0x8A, // MDMCFG4 - 0x75, // MDMCFG3 - 0x13, // MDMCFG2 - 0x22, // MDMCFG1 - 0xC1, // MDMCFG0 CHANSPC_M - 0x35, // DEVIATN - 0x04, // MCSM2 - 0x0C, // MCSM1 0c - 0x38, // MCSM0 - 0x16, // FOCCFG - 0x6C, // BSCFG - 0x43, // AGCCTRL2 - 0x40, // AGCCTRL1 - 0x91, // AGCCTRL0 - 0x46, // WOREVT1 - 0x50, // WOREVT0 - 0x78, // WORCTRL - 0x56, // FREND1 - 0x10, // FREND0 - 0xA9, // FSCAL3 - 0x0A, // FSCAL2 - 0x00, // FSCAL1 - 0x11, // FSCAL0 - 0x41, // RCCTRL1 - 0x00, // RCCTRL0 - 0x57, // FSTEST - 0x7F, // PTEST - 0x3F, // AGCTEST - 0x98, // TEST2 - 0x31, // TEST1 - 0x0B // TEST0 -}; - -const unsigned char confasync[0x2F] = { - 0x0D, // IOCFG2 - 0x0D, // IOCFG1 - 0x2E, // IOCFG0 - 0x47, // FIFOTHR - 0xD3, // SYNC1 - 0x91, // SYNC0 - 0x3E, // PKTLEN - 0x1A, // PKTCTRL1 - 0x32, // PKTCTRL0 | asynchronous serial mode - 0x00, // ADDR - 0x00, // CHANNR channel number - 0x06, // FSCTRL1 - 0x00, // FSCTRL0 - 0x10, // FREQ2 # - 0x12, // FREQ1 # - 0x34, // FREQ0 # *27e6/2^16 = 433,919861 MHz base frequency - 0x4A, // MDMCFG4 | channel bandwidth - 0x84, // MDMCFG3 - 0x30, // MDMCFG2 - // 0x00, // MDMCFG2 // 2-FSK - 0x20, // MDMCFG1 - 0xe5, // MDMCFG0 CHANSPC_M Chann 49,95kHz | DRATE_E[3:0] - 0x37, // DEVIATN - 0x07, // MCSM2 - 0x30, // MCSM1 0c - 0x18, // MCSM0 - 0x14, // FOCCFG - 0x6C, // BSCFG - 0x07, // AGCCTRL2 - 0x00, // AGCCTRL1 - 0x90, // AGCCTRL0 - 0x46, // WOREVT1 - 0x50, // WOREVT0 - 0x78, // WORCTRL - 0x56, // FREND1 - 0x11, // FREND0 - 0xE9, // FSCAL3 - 0x2A, // FSCAL2 - 0x00, // FSCAL1 - 0x1F, // FSCAL0 - 0x41, // RCCTRL1 - 0x00, // RCCTRL0 - 0x59, // FSTEST - 0x7F, // PTEST - 0x3F, // AGCTEST - 0x81, // TEST2 - 0x35, // TEST1 - 0x09 // TEST0 -}; - -void cc1100_init(void) { - - unsigned long xx = 0x200; - - PINSEL1 &= 0xffffff00; //GDO0 SCK1 MISO1 MOSI1 as GPIO - FIODIR0 |= (CS1 | MOSI1 | SCK1); //output - - PCONP &= 0xfffffbff; - PCONP |= (1<<21); - FIOSET0 = SCK1; - FIOCLR0 = MOSI1; - FIOCLR0 = CS1; - while(xx) { - asm volatile("nop" : :); - xx--; - } - FIOSET0 = CS1; - xx=0x200; - while(xx) { - asm volatile("nop" : :); - xx--; - } - FIOCLR0 = CS1; - FIOCLR0 = SCK1; - while (FIOPIN0 & MISO1); - - PINSEL1 |= 0x000002A8; //SCK1 MISO1 MOSI1 as SPI1 - SSPCR0 = 0x0007; - SSPCPSR = 0x02; - SSPCR1 = 0x02; - - SSPDR = SRES; - while (FIOPIN0 & MISO1); - while (SSPSR & (1<<4)); - xx = SSPDR; - - cc1100_write((0x00 | BURST ),(unsigned char*)conf,0x2f); - cc1100_write1(PATABLE,0xC0); - cc1100_strobe(SIDLE); - cc1100_strobe(SPWD); -} - -// write length bytes of data to addr in CC1100 -unsigned char cc1100_write(unsigned char addr,unsigned char* data, unsigned char length) { - - unsigned short i; - unsigned char status; - unsigned char x; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | WRITE); - while ((SSPSR & (1<<4))); - status = SSPDR; - for (i=0; i < length; i++) { - SSPDR = data[i]; - while ((SSPSR & (1<<4))); - x=SSPDR; - } - FIOSET0 = CS1; - - return(status); -} - -// write on byte of data to addr in CC1100 -// a few instructions faster than cc1100_write(addr, data, 1) -unsigned char cc1100_write1(unsigned char addr,unsigned char data) { - - unsigned char status; - unsigned char x; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | WRITE); - while ((SSPSR & (1<<4))); - status = SSPDR; - - SSPDR = data; - while ((SSPSR & (1<<4))); - x=SSPDR; - - FIOSET0 = CS1; - - return(status); -} - - -unsigned char cc1100_read(unsigned char addr, unsigned char* data, unsigned char length) { - - unsigned short i; - unsigned char status; - - FIOCLR0 = CS1; - - while (FIOPIN0 & MISO1); - SSPDR = (addr | READ); - while ((SSPSR & (1<<4))); - status = SSPDR; - for (i=0; i < length; i++) { - SSPDR = 0x00; - while ((SSPSR & (1<<4))); - data[i]=SSPDR; - } - FIOSET0 = CS1; - - return(status); -} - -unsigned char cc1100_read1(unsigned char addr) { - - unsigned char r; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | READ); - while ((SSPSR & (1<<4))); - r = SSPDR; - SSPDR = 0x00; - while ((SSPSR & (1<<4))); - r=SSPDR; - FIOSET0 = CS1; - - return(r); -} - -unsigned char cc1100_strobe(unsigned char cmd) { - - unsigned short status; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = cmd; - while ((SSPSR & (1<<4))); - status = SSPDR; - FIOSET0 = CS1; - - return(status); -} -/* -// check that PLL has locked -unsigned char cc1100_pll_lock(void) -{ - //~ To check that the PLL is in lock the user can - //~ program register IOCFGx.GDOx_CFG to 0x0A - //~ and use the lock detector output available on - //~ the GDOx pin as an interrupt for the MCU (x = - //~ 0,1, or 2). A positive transition on the GDOx - //~ pin means that the PLL is in lock. As an - //~ alternative the user can read register FSCAL1. - //~ The PLL is in lock if the register content is - //~ different from 0x3F. Refer also to the CC1100 - //~ Errata Notes [1]. For more robust operation the - //~ source code could include a check so that the - //~ PLL is re-calibrated until PLL lock is achieved - //~ if the PLL does not lock the first time. -} -*/ -/* -// get carrier frequency -unsigned char cc1100_carrier(void) -{ - //~ f_carrier = fxosc/(2**16) * (FREQ + CHAN * (256+CHANSPC_M) * 2**(CHANSPC_E - 2)) -} - -// set intermediate frequency -unsigned char cc1100_if(void) -{ - //~ FSCTRL1.FREQ_IF - //~ f_ = fxosc/(2**10) * FREQ_IF -} - - -// set channel spacing -unsigned char cc1100_chspc(void) -{ - //~ MDMCFG0.CHANSPC_M - //~ MDMCFG1.CHANSPC_E r -} - -// set channel -unsigned char cc1100_channel(void) -{ - //~ CHANNR.CHAN -} - -// set frequency -unsigned char cc1100_frequency(void) -{ - //~ FREQ2, FREQ1, FREQ0 - //~ This word will typically be set to the centre of the lowest channel frequency that is to be used. -} - -// set modulation -unsigned char cc1100_modulation(void) -{ - //~ MDMCFG2.MOD_FORMAT - //~ MDMCFG2.MANCHESTER_EN. -} -*/ diff --git a/boop/trunk/cc1100/cc1100.h b/boop/trunk/cc1100/cc1100.h deleted file mode 100644 index 3e0b3c7..0000000 --- a/boop/trunk/cc1100/cc1100.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - cc1100.h - - Copyright (C) 2007 - - 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 3 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, see . -*/ - -#ifndef cc1100_H -#define cc1100_H - -#define MISO1 (1<<18) -#define MOSI1 (1<<19) -#define SCK1 (1<<17) -#define CS1 (1<<23) -#define GDO0 (1<<16) -#define GDO1 (1<<18) -#define GDO2 (1<<24) - - -#define WRITE 0x00 -#define BURST 0x40 -#define READ 0x80 -#define TX_fifo 0x7F -#define RX_fifo 0xff -#define PATABLE 0x3E - -//Command Strobes -#define SRES 0x30 -#define SFSTXON 0x31 -#define SXOFF 0x32 -#define SCAL 0x33 -#define SRX 0x34 -#define STX 0x35 -#define SIDLE 0x36 -#define SWOR 0x38 -#define SPWD 0x39 -#define SFRX 0x3A -#define SFTX 0x3B -#define SWORRST 0x3C -#define SNOP 0x3D - -//Status Registers -#define PARTNUM (0x30 | READ | BURST) -#define VERSION (0x31 | READ | BURST) -#define FREQEST (0x32 | READ | BURST) -#define LQI (0x33 | READ | BURST) -#define RSSI (0x34 | READ | BURST) -#define MARCSTATE (0x35 | READ | BURST) -#define WORTIME1 (0x36 | READ | BURST) -#define WORTIME0 (0x37 | READ | BURST) -#define PKTSTATUS (0x38 | READ | BURST) -#define VCO_VC_DAC (0x39 | READ | BURST) -#define TXBYTES (0x3A | READ | BURST) -#define RXBYTES (0x3B | READ | BURST) -#define RCCTRL1_STATUS (0x3C | READ | BURST) -#define RCCTRL0_STATUS (0x3D | READ | BURST) - -//Configuration Registers -#define IOCFG2 0x00 // GDO2 output pin configuration -#define IOCFG1 0x01 // GDO1 output pin configuration -#define IOCFG0 0x02 // GDO0 output pin configuration -#define FIFOTHR 0x03 // RX FIFO and TX FIFO thresholds -#define SYNC1 0x04 // Sync word, high byte -#define SYNC0 0x05 // Sync word, low byte -#define PKTLEN 0x06 // Packet length -#define PKTCTRL1 0x07 // Packet automation control -#define PKTCTRL0 0x08 // Packet automation control -#define ADDR_ 0x09 // Device address -#define CHANNR 0x0A // Channel number -#define FSCTRL1 0x0B // Frequency synthesizer control -#define FSCTRL0 0x0C // Frequency synthesizer control -#define FREQ2 0x0D // Frequency control word, high byte -#define FREQ1 0x0E // Frequency control word, middle byte -#define FREQ0 0x0F // Frequency control word, low byte -#define MDMCFG4 0x10 // Modem configuration -#define MDMCFG3 0x11 // Modem configuration -#define MDMCFG2 0x12 // Modem configuration -#define MDMCFG1 0x13 // Modem configuration -#define MDMCFG0 0x14 // Modem configuration -#define DEVIATN 0x15 // Modem deviation setting -#define MCSM2 0x16 // Main Radio Cntrl State Machine config -#define MCSM1 0x17 // Main Radio Cntrl State Machine config -#define MCSM0 0x18 // Main Radio Cntrl State Machine config -#define FOCCFG 0x19 // Frequency Offset Compensation config -#define BSCFG 0x1A // Bit Synchronization configuration -#define AGCCTRL2 0x1B // AGC control -#define AGCCTRL1 0x1C // AGC control -#define AGCCTRL0 0x1D // AGC control -#define WOREVT1 0x1E // High byte Event 0 timeout -#define WOREVT0 0x1F // Low byte Event 0 timeout -#define WORCTRL 0x20 // Wake On Radio control -#define FREND1 0x21 // Front end RX configuration -#define FREND0 0x22 // Front end TX configuration -#define FSCAL3 0x23 // Frequency synthesizer calibration -#define FSCAL2 0x24 // Frequency synthesizer calibration -#define FSCAL1 0x25 // Frequency synthesizer calibration -#define FSCAL0 0x26 // Frequency synthesizer calibration -#define RCCTRL1 0x27 // RC oscillator configuration -#define RCCTRL0 0x28 // RC oscillator configuration -#define FSTEST 0x29 // Frequency synthesizer cal control -#define PTEST 0x2A // Production test -#define AGCTEST 0x2B // AGC test -#define TEST2 0x2C // Various test settings -#define TEST1 0x2D // Various test settings -#define TEST0 0x2E // Various test settings - -#define MARCSTATE_IDLE 0x01 -#define MARCSTATE_RX 0x0d - -const unsigned char conf[0x2F] __attribute__((aligned(0x4))); -const unsigned char confasync[0x2F] __attribute__((aligned(0x4))); - -void cc1100_init(void); -unsigned char cc1100_write(unsigned char addr, unsigned char* data, unsigned char length); -unsigned char cc1100_write1(unsigned char addr,unsigned char data); -unsigned char cc1100_read(unsigned char addr, unsigned char* data, unsigned char length); -unsigned char cc1100_read1(unsigned char addr); -unsigned char cc1100_strobe(unsigned char cmd); - -#endif diff --git a/boop/trunk/cc1100/fs20.c b/boop/trunk/cc1100/fs20.c deleted file mode 100644 index f029998..0000000 --- a/boop/trunk/cc1100/fs20.c +++ /dev/null @@ -1,343 +0,0 @@ -/* - fs20.c - FS20 functions - Copyright (C) 2009 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "fs20.h" -#include "rf.h" -#include "cc1100.h" -#include "fonty.h" -#include "rtc.h" -#include "global.h" -#include "lcd.h" -#include "keyboard.h" -#include "serial.h" -#include "timerfuncs.h" - -#define FS20_BETWEEN(x, a, b) ((x >= a) && (x <= b)) - -extern const char hval[16]; - -#define PROTOCOL_UNKNOWN 0 -#define PROTOCOL_FS20 1 -#define PROTOCOL_WEATHER 2 -#define PROTOCOL_WEATHER2 3 - -void fs20_decoder(void) { - - unsigned char x; - unsigned char FS20laststate = 0; - unsigned char FS20preamble = 0; - unsigned char FS20parity = 0; - unsigned char FS20state = 0; - unsigned long FS20lasttime = 0; - unsigned char FS20bitcounter = 0; - unsigned char FS20bytecounter = 0; - unsigned char FS20inbyte[20]; - unsigned char FS20inbit = 0; - unsigned char FS20protocol = PROTOCOL_UNKNOWN; - unsigned short tempbyte = 0; - unsigned char finish = 0; - - unsigned long pulse = 0; - unsigned long space = 0; - unsigned long now; - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0, 0, "FS20 Decoder", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,128,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RFasyncmode(true); - - cc1100_write1(FREQ2,0x20); - cc1100_write1(FREQ1,0x29); - cc1100_write1(FREQ0,0x3E); - - cc1100_write1(AGCCTRL2,0x07); - cc1100_write1(AGCCTRL1,0x00); - cc1100_write1(AGCCTRL0,0x91); - - cc1100_strobe(SFRX); - cc1100_strobe(SRX); - - serial_puts("\n\r"); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - - //internal receiver - if(FIOPIN0 & GDO2) - FS20state = 1; - else - FS20state = 0; - - /* - //external rexeiver on pin 0.14 - if(FIOPIN0 & (1<<14)) - FS20state = 1; - else - FS20state = 0; -*/ - - if(FS20state != FS20laststate) { - FS20laststate = FS20state; - - //Calculate pulse len - if(!FS20state) { - now = T0TC; - if(now > FS20lasttime) - pulse = now-FS20lasttime; - else - pulse = (now+5000)-FS20lasttime; - FS20lasttime = now; - } - //Calculate space len - else { - now = T0TC; - if(now > FS20lasttime) - space = now-FS20lasttime; - else - space = (now+5000)-FS20lasttime; - FS20lasttime = now; - } - - //Decode - if(FS20state || (FS20protocol == PROTOCOL_WEATHER2)) { - if(FS20protocol == PROTOCOL_UNKNOWN) { - if((FS20_BETWEEN(pulse, 350, 450) && FS20_BETWEEN(space, 350, 450)) || (FS20_BETWEEN(pulse, 550, 650) && FS20_BETWEEN(space, 550, 650))) { - FS20protocol = PROTOCOL_FS20; //FS20, FHT - FS20inbyte[0] = 'F'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_FS20; - FS20parity = 0; - tempbyte = 0; - } - else if((FS20_BETWEEN(pulse, 200, 533) && FS20_BETWEEN(space, 685, 1020)) || (FS20_BETWEEN(pulse, 685, 1020) && FS20_BETWEEN(space, 200, 533))) { - FS20protocol = PROTOCOL_WEATHER; //KS200, KS300, S2XXX - FS20inbyte[0] = 'W'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_WEATHER; - tempbyte = 0; - } - else if(FS20_BETWEEN(pulse, 200, 300) && FS20_BETWEEN(space, 200, 300)) { - FS20protocol = PROTOCOL_WEATHER2; //ASH500 - FS20inbyte[0] = 'S'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_WEATHER2; - tempbyte = 0; - } - } - - if(FS20protocol == PROTOCOL_FS20) { - if(FS20_BETWEEN(pulse, 350, 450) && FS20_BETWEEN(space, 350, 450)) - FS20inbit = 0; - else if(FS20_BETWEEN(pulse, 550, 650) && FS20_BETWEEN(space, 550, 650)) - FS20inbit = 1; - else - FS20protocol = PROTOCOL_UNKNOWN; - - if(FS20protocol != PROTOCOL_UNKNOWN) { - if(FS20preamble) { - if((FS20preamble > 1) && FS20inbit) - FS20preamble = PREAMBLELEN_FS20; - else if((FS20preamble > 1) && !FS20inbit) { - FS20preamble--; - } - else if((FS20preamble == 1) && FS20inbit) { - FS20preamble = 0; - } - } - else { - if(FS20bitcounter == 8) { - if(FS20inbit == FS20parity) { - FS20bitcounter = 0; - FS20bytecounter++; - FS20parity = 0; - } - else { - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20inbyte[FS20bytecounter] = (FS20inbyte[FS20bytecounter]<<1) | FS20inbit; - FS20parity ^= FS20inbit; - FS20bitcounter++; - } - } - } - } - - if(FS20protocol == PROTOCOL_WEATHER) { - if(FS20_BETWEEN(pulse, 685, 1020) && FS20_BETWEEN(space, 200, 533)) - FS20inbit = 0; - else if(FS20_BETWEEN(pulse, 200, 533) && FS20_BETWEEN(space, 685, 1020)) - FS20inbit = (1<<3); - else - FS20protocol = PROTOCOL_UNKNOWN; - - if(FS20protocol != PROTOCOL_UNKNOWN) { - if(FS20preamble) { - if((FS20preamble > 1) && FS20inbit) - FS20preamble = PREAMBLELEN_WEATHER; - else if((FS20preamble > 1) && !FS20inbit) { - FS20preamble--; - } - else if((FS20preamble == 1) && FS20inbit) { - FS20preamble = 0; - } - } - else { - if(FS20bitcounter == 4) { - tempbyte<<=8; - FS20bitcounter++; - } - else if(FS20bitcounter == 9) { - FS20bitcounter = 0; - } - else { - tempbyte = (tempbyte>>=1) | FS20inbit; - if(FS20bitcounter++ == 8) { - FS20inbyte[FS20bytecounter] = tempbyte; - tempbyte = 0; - FS20bytecounter++; - } - } - } - } - } - - if(FS20protocol == PROTOCOL_WEATHER2) { - if(FS20preamble) { - if((FS20_BETWEEN(pulse, 200, 300) && FS20_BETWEEN(space, 200, 300))) { - if (FS20preamble > 1) - FS20preamble--; - } - else if((FS20_BETWEEN(pulse, 400, 600) && FS20_BETWEEN(space, 200, 300))) { - if (FS20preamble == 1) { - FS20preamble = 0; - pulse = 0; - space = 0; - } - else - FS20protocol = PROTOCOL_UNKNOWN; - } - else - FS20protocol = PROTOCOL_UNKNOWN; - } - else { - if((FS20_BETWEEN(pulse + space, 400, 600)) ) { - if(FS20state) - FS20inbit = 1; - else - FS20inbit = 0; - - pulse = 0; - space = 0; - - if(FS20inbit) - FS20parity++; - - if(FS20bitcounter == 8) { - if(!(FS20parity & 0x01)) { - FS20bitcounter = 0; - FS20bytecounter++; - FS20parity = 0; - if(FS20bytecounter == 0x0a) { //packet full received - unsigned char dec[8]; - - dec[0] = FS20inbyte[1] ^ 0x89; - for(x=9;x>1;x--) { - FS20inbyte[x] = (FS20inbyte[x-1] + 0x24) ^ FS20inbyte[x]; - } - FS20inbyte[1] = FS20inbyte[1] ^ 0x89; - - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20inbyte[FS20bytecounter] = (FS20inbyte[FS20bytecounter]<<1) | FS20inbit; - FS20bitcounter++; - } - } - else if(pulse && space) { - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - } - - if((FS20protocol == PROTOCOL_UNKNOWN && FS20bytecounter > 1)) { - char msbuffer[20]; - - draw_block(0,32,128,24,3,DRAW_ERASE); - - //print time and protocol type - siprintf (msbuffer, "%02x:%02x:%02x.%02u %c ",rtc.time.hour,rtc.time.minute,rtc.time.second,(unsigned char)(T0overflow>>1) & 0xff, FS20inbyte[0]); - draw_string (0, 32, msbuffer, LCD_COLOR_B, DRAW_NORCU); - serial_puts(msbuffer); - - //print received data - for(x=1;x<(FS20bytecounter);x++) { - draw_hexC (((x-1)*14), 40, FS20inbyte[x], LCD_COLOR_B, DRAW_NORCU); - serial_putbyte (' '); - putHexC(FS20inbyte[x]); - } - - //print decoded data - if(FS20inbyte[0] == 'S') { - signed short temp; - - temp = ((FS20inbyte[6] & 0x7F)<<8) | FS20inbyte[7]; - if(temp & 0x4000) //negative - temp |=0x8000; - - serial_putbyte (' '); - serial_putbyte (' '); - - siprintf (msbuffer, "%4d °C %u%%", temp,FS20inbyte[8]); - msbuffer[4] = msbuffer[3]; - msbuffer[3] = '.'; - serial_puts(msbuffer); - msbuffer[5] = 0x15; //change °C on display - msbuffer[6] = ' '; - draw_string (0, 48, msbuffer, LCD_COLOR_B, DRAW_NORCU); - } - - serial_puts("\n\r"); - finish = 0; - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - } - } - - RFasyncmode(false); -} - - diff --git a/boop/trunk/cc1100/fs20.h b/boop/trunk/cc1100/fs20.h deleted file mode 100644 index ea60c22..0000000 --- a/boop/trunk/cc1100/fs20.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - fs20.h - FS20 functions - Copyright (C) 2009 - - 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 3 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, see . -*/ - -#ifndef FS20_H -#define FS20_H - -#define extensionbit 0x20 -#define PREAMBLELEN_FS20 10 -#define PREAMBLELEN_WEATHER 7 -#define PREAMBLELEN_WEATHER2 20 - -void fs20_decoder(void); - -#endif diff --git a/boop/trunk/cc1100/rf.c b/boop/trunk/cc1100/rf.c deleted file mode 100644 index 00ea4a1..0000000 --- a/boop/trunk/cc1100/rf.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - rf.c - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "rf.h" -#include "cc1100.h" -#include "timerfuncs.h" -#include "irq.h" -#include "cc1100.h" -#include "lcd.h" -#include "fonty.h" -#include "rtc.h" -#include "global.h" -#include "buffer.h" -#include "bfs.h" - -unsigned char RFbuf[64]; -struct RFendpoint_ rfendpoint[MAX_ENDPOINTS]; -struct RF_ RF; - -const struct RFsettings_ default_RFsettings = -{ - 0x01, //address - 0x01 //channel -}; - -//********************* -//* Private functions * -//********************* - -void switch_to_idle() { - cc1100_strobe(SIDLE); - while (cc1100_read1(MARCSTATE) != 01); -} - -void WORsend_timeout(unsigned int cb) { - RF.state = RFsendworend; -} - -void RF_timed_rx_timeout(unsigned int cb) { - stopCB(RF.timeout_cb); - removeTimerCB(RF.timeout_cb); - RF.timeout_cb = 0xff; - if(RF.flags & WORenabled) - RF_changestate(RFwor); - else - RF_changestate(RFidle); - -} - -void sendendpoint(struct RFendpoint_ *currentEP) { - - unsigned char* epdata = 0; - unsigned short eplen; - struct cc1100frame_ *TXframe; - - TXframe = (struct cc1100frame_ *)RFbuf; - - //write header - eplen = currentEP->bufferlen; - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - if(eplen > 6) - eplen = 6; - epdata = currentEP->data; - break; - case EPtypebuffer: - if(eplen > 59) - eplen = 59; - epdata = currentEP->buffer; - break; - case EPtypecbuffer: - if(eplen > 59) - eplen = 59; - if(eplen > currentEP->cbuffer->len) - eplen = currentEP->cbuffer->len; - break; - } - TXframe->len = eplen + 3; - TXframe->destAddr = currentEP->dest; - TXframe->srcAddr = RF.addr; - TXframe->packetType = currentEP->type; - cc1100_write(TX_fifo | BURST,(unsigned char*)TXframe,4); - - //write data - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - case EPtypebuffer: - cc1100_write(TX_fifo | BURST,epdata,eplen); - break; - case EPtypecbuffer: - - if(currentEP->cbuffer->index + eplen <= currentEP->cbuffer->size) { - cc1100_write(TX_fifo | BURST,&(currentEP->cbuffer->data[currentEP->cbuffer->index]),eplen); - } - else { - cc1100_write(TX_fifo | BURST,&(currentEP->cbuffer->data[currentEP->cbuffer->index]), currentEP->cbuffer->size - currentEP->cbuffer->index); - cc1100_write(TX_fifo | BURST,currentEP->cbuffer->data,eplen - (currentEP->cbuffer->size - currentEP->cbuffer->index)); - } - currentEP->cbuffer->index = (currentEP->cbuffer->index + eplen) % currentEP->cbuffer->size; - currentEP->cbuffer->len -= eplen; - break; - } - - cc1100_strobe(STX); - - currentEP->flags &= ~EPnewdata; - - if(currentEP->flags & EPonce) - closeEP(currentEP); -} - -void receiveendpoint(struct RFendpoint_ *currentEP) { - - unsigned short eplen; - struct cc1100frame_ *RXframe; - - RXframe = (struct cc1100frame_ *)RFbuf; - - currentEP->dest = RXframe->srcAddr; - eplen = RXframe->len-3; - - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - if(eplen > 6) { - eplen = 6; - currentEP->flags |= EPoverflow; - } - memcpy(&(currentEP->data[0]),RXframe->data,eplen); - break; - case EPtypebuffer: - if(eplen > currentEP->buffersize) { - eplen = currentEP->buffersize; - currentEP->flags |= EPoverflow; - } - memcpy(currentEP->buffer,RXframe->data,eplen); - break; - case EPtypecbuffer: - if(eplen > currentEP->cbuffer->size - currentEP->cbuffer->len) { - eplen = currentEP->cbuffer->size - currentEP->cbuffer->len; - currentEP->flags |= EPoverflow; - } - cBufferAddBuffer(currentEP->cbuffer, RXframe->data, eplen); - break; - } - - currentEP->bufferlen = eplen; - if(currentEP->flags & EPnewdata) - currentEP->flags |= EPoverwritten; - else - currentEP->flags |= EPnewdata; - if(currentEP->flags & EPonce) - closeEP(currentEP); -} - -void cc1100IRQ (void) { - - unsigned char x; - - switch_to_idle(); - - if (cc1100_read1(RXBYTES) > 0) { - cc1100_read(RX_fifo, RFbuf,1); - cc1100_read(RX_fifo, &RFbuf[1],RFbuf[0]); - - struct cc1100frame_ *RXframe; - RXframe = (struct cc1100frame_ *)RFbuf; - - if ((RXframe->len == 1) && (RF.flags & WORenabled) && ((RXframe->destAddr == RF.addr) || (RXframe->destAddr == 0x00))) { - if(RF.timeout_cb != 0xff || RF.state != RFrx) - RF_timed_rx(WORrx_time); - } - - if (RXframe->len > 3) { - if (RF.timeout_cb != 0xff) - setCBIntervall(RF.timeout_cb,WORrx_time); - switch ( RXframe->packetType) { - case packet_test: - draw_block(0,50,128,10,3,DRAW_ERASE); - draw_string(0, 50, (char*)&RXframe->data[0], 3, DRAW_PUT); - break; - case packet_ping: - if (RXframe->data[0] == 0x01) { - struct RFendpoint_* cur_ep; - cur_ep = openEP(0,0, packet_ping); - if(cur_ep) { - cur_ep->dest = RXframe->srcAddr; - cur_ep->data[0] = 2; - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce; - RF_changestate(RFtx); - } - } - else if (RXframe->data[0] == 0x02) { - RF.flags |= PingACK; - } - break; - case packet_time: - if ((RXframe->data[0] == 0xFF) && (timeInfo & TIME_ACCURATE)) { - send_time(RXframe->srcAddr,0); - } - else if (RXframe->len == 10) { - memcpy((unsigned char *)&rtc,&RXframe->data[0],7); - timeInfo |= SETNEWTIME; - VICSoftInt = INT_EINT2; - } - break; - default: - for(x=0; xpacketType) && ((rfendpoint[x].flags & (EPoutput | EPenabled)) == EPenabled)) { - receiveendpoint(&rfendpoint[x]); - break; - } - } - } - } - } - - if(RF.state == RFtx) { - for(x=0; xdest = dest; - cur_ep->data[0] = 1; - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF.flags &= ~PingACK; - RF_changestate(RFtx); - - RF_timed_rx(WORrx_time); - - while ((RF.timeout_cb != 0xff) && !(RF.flags & PingACK)); - - if(RF.flags & PingACK) - return(1); - } - return(0); -} - -void RF_init (void) { - cc1100_init(); - RF.flags = 0; - RF.addr = conf[0x09]; - RF.state = RFpwrdown; - RF.nextstate = RFpwrdown; - RF.timeout_cb = 0xff; -} - -void RF_changestate (unsigned char state) { - unsigned char oldstate; - - VICIntEnClr = INT_EINT0; - - if(RF.state != state) { - oldstate = RF.state; - - if((RF.state >= RFtx) && (state < RFtx)) { - RF.nextstate = state; - } - else { - switch (state) { - case RFpwrdown: - RF.state = RFpwrdown; - break; - case RFwor: - RF.state = RFwor; - RF.flags |= WORenabled; - break; - case RFidle: - RF.state = RFidle; - break; - case RFrx: - RF.state = RFrx; - break; - case RFtx: - if(RF.state < RFtx) - RF.state = RFtx; - if(oldstate == RFrx) - RF.nextstate = RFrx; - else if(RF.flags & WORenabled) - RF.nextstate = RFwor; - else - RF.nextstate = RFidle; - break; - case RFsendwor: - break; - } - } - if(oldstate != RF.state) { - VICSoftInt = INT_EINT0; - } - } - VICIntEnable = INT_EINT0; -} - -void RF_timed_rx(unsigned short timeout) { - if (RF.timeout_cb != 0xff) - setCBIntervall(RF.timeout_cb,timeout); - else { - RF.timeout_cb = addTimerCB(RF_timed_rx_timeout, timeout); - startCB(RF.timeout_cb); - RF_changestate(RFrx); - } -} - -void startRFIRQ(void) { - - PINSEL1 |= 1; //GDO0 as EINT0 - EXTMODE |= 1; //edge sensitive - EXTPOLAR |= 0; //falling edge - EXTWAKE |= 1; - EXTINT |= 1; - - VICVectAddr2 = (unsigned long)&(cc1100IRQ); - VICVectCntl2 = VIC_SLOT_EN | INT_SRC_EINT0; - VICIntEnable = INT_EINT0; -} - -inline void stopRFIRQ(void) { - VICIntEnClr = INT_EINT0; -} - - -struct RFendpoint_* openEP(void* buffer, unsigned short buffersize, unsigned char type) { - - int i; - struct RFendpoint_* cur_ep; - - if(!type) - return 0; - - for(i=0; itype)) { - cur_ep->buffer = buffer; - cur_ep->buffersize = buffersize; - cur_ep->type = type; - cur_ep->bufferlen = 0; - cur_ep->dest = 0; - cur_ep->flags = 0; - if(!(buffer)) - cur_ep->flags |= EPtypedata; - return cur_ep; - } - } - return 0; - -} - -void closeEP(struct RFendpoint_ *cur_ep) { - if(cur_ep) { - cur_ep->flags = 0; - cur_ep->buffer = 0; - cur_ep->type = 0; - } -} - -void RF_setRegister(unsigned char reg, unsigned char data) { - - unsigned long VICInt; - - VICInt = VICIntEnable & INT_EINT0; - VICIntEnClr = INT_EINT0; - - cc1100_write1(reg,data); - - VICIntEnable |= VICInt; -} - -void load_RF_setting(void) { - struct RFsettings_ RFsettings; - - if(BFS_LoadFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings) != sizeof(struct RFsettings_)) { - RFsettings = default_RFsettings; - BFS_SaveFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - draw_string(0, 50, "default RF load", 3, DRAW_PUT); - } - - RF_setRegister(0x09, RFsettings.address); - RF_setRegister(0x0a, RFsettings.channel); - RF.addr = RFsettings.address; -} - - -void RFasyncmode(unsigned char on) { - - if(on) { - RF_changestate(RFidle); - while(RF.state != RFidle); - stopRFIRQ(); - cc1100_write((0x00 | BURST ),(unsigned char*)confasync,0x2f); - cc1100_write1(PATABLE,0xf0); - PINSEL1 &= 0xfffffffc; // GDO0 as GPIO - FIODIR0 |= GDO0; // output - } - else { - PINSEL1 |= 1; // GDO0 as EINT0 - cc1100_write((0x00 | BURST ),(unsigned char*)conf,0x2f); - cc1100_write1(PATABLE,0xC0); - cc1100_strobe(SIDLE); - load_RF_setting(); - startRFIRQ(); - RF_changestate(RFwor); - } -} diff --git a/boop/trunk/cc1100/rf.h b/boop/trunk/cc1100/rf.h deleted file mode 100644 index 31ff0c6..0000000 --- a/boop/trunk/cc1100/rf.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - rf.h - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef RF_H -#define RF_H - -#define WORrx_time 200 - -#define packet_test 0x01 -#define packet_ping 0x02 -#define packet_time 0x03 -#define packet_RFenc 0x04 -#define packet_redirDAT 0x05 -#define packet_redirCMD 0x06 - -#define MAX_ENDPOINTS 0x0F - -struct cc1100frame_ { - unsigned char len; - unsigned char destAddr; - unsigned char srcAddr; - unsigned char packetType; - unsigned char data[]; -}; - -struct RFendpoint_ { - union { - unsigned char* buffer; - struct cBuffer_* cbuffer; - unsigned char data[4]; - }; - unsigned short buffersize; - unsigned short bufferlen; - volatile unsigned short flags; - unsigned char dest; - unsigned char type; -}; -//RFendpoints_.flags -#define EPenabled (1<<0) -#define EPoutput (1<<1) -#define EPinput 0 -#define EPtypedata (1<<2) -#define EPtypebuffer 0 -#define EPtypecbuffer (1<<3) -#define EPtypemask (1<<2 | 1<<3) -#define EPnewdata (1<<4) -#define EPoverwritten (1<<5) -#define EPoverflow (1<<6) -#define EPonce (1<<7) -#define EPsendwor (1<<8) - - -struct RFsettings_ { - unsigned char address; - unsigned char channel; -}__attribute__((aligned(0x4))); - -const struct RFsettings_ default_RFsettings; - -struct RF_ { - unsigned char addr; - volatile unsigned char flags; - volatile unsigned char state; - volatile unsigned char timeout_cb; - volatile unsigned char wortimeout_cb; - volatile unsigned char nextstate; - volatile unsigned char tag; -}__attribute__((aligned(0x4))); -struct RF_ RF; - -//RF_.state -#define RFpwrdown 0x00 -#define RFwor 0x01 -#define RFidle 0x02 -#define RFrx 0x03 -#define RFtx 0x04 -#define RFsendwor 0x05 -#define RFsendworend 0x06 - -//RF.flags -#define PingACK (1<<0) -#define WORenabled (1<<1) -#define RXueop (1<<2) //MCSM2 RX_TIME: Until end of packet - -void startRFIRQ(void); -void RF_init (void); -void RF_timed_rx(unsigned short timeout); -void RF_changestate (unsigned char state); -unsigned char RF_sendping(unsigned char dest); -struct RFendpoint_* openEP(void* buffer, unsigned short buffersize, unsigned char type); -void closeEP(struct RFendpoint_ *cur_ep); -void RF_setRegister(unsigned char reg, unsigned char data); -void load_RF_setting(void); -void RFasyncmode(unsigned char on); -#endif diff --git a/boop/trunk/cc1100/scan.c b/boop/trunk/cc1100/scan.c deleted file mode 100644 index 3ad2d71..0000000 --- a/boop/trunk/cc1100/scan.c +++ /dev/null @@ -1,151 +0,0 @@ -//~ DN508 - Frequency Scanning using CC430Fx, CC110x, and CC111xFx - -void scanFreqBands_autocal(void) { - UINT8 subBand; - UINT8 i; - UINT16 channel; - // 1) Loop through all sub bands - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - // 1.1) Set the base freq. for the current sub band. The values for FREQ2, FREQ1, and FREQ0 can be found in - // freqSettings[subBand][n], where n = 0, 1, or 2 - // 1.2) Set TEST0 register = 0x0B - // 1.3) Loop through all channels - for (channel = 0; channel <= lastChannel[subBand]; channel++ ) - { - UINT8 pktStatus; - // 1.3.1) Set CHANNR register = channel - // 1.3.2) Change TEST0 register settings to 0x09 if freq is above 861 MHz - if (channel == limitTest0Reg[subBand]) - { - // 1.3.2.1) Set TEST0 register = 0x09 - } - // 1.3.3) Enter RX mode by issuing an SRX strobe command - // 1.3.4) Wait for radio to enter RX state (can be done by polling the MARCSTATE register) - // 1.3.5) Wait for RSSI to be valid (See DN505 [7] on how long to wait) - // 1.3.6) Read the PKTSTATUS register while the radio is in RX state (store it in pktStatus) - // 1.3.7) Enter IDLE state by issuing an SIDLE strobe command - // 1.3.8) Check if CS is asserted (use the value obtained in 1.3.6) - if (pktStatus & 0x40) - { - // CS is asserted - // 1.3.8.1) Read RSSI value and store it in rssi_dec - // 1.3.8.2) Calculate RSSI in dBm (rssi_dBm)(offset value found in rssi_offset[subBand]) - // 1.3.8.3) Store the RSSI value and the corresponding channel number - rssiTable[carrierSenseCounter] = rssi_dBm; - channelNumber[carrierSenseCounter] = channel; - carrierSenseCounter++; - } - } // End Channel Loop - // 1.4) Before moving on to the next sub band, scan through the rssiTable to find the highest RSSI value. Store - // the RSSI value in highRSSI[subBand] and the corresponding channel number in selectedChannel[subBand] - for (i = 0; i < carrierSenseCounter; i++) - { - if (rssiTable[i] > highRSSI[subBand]) - { - highRSSI[subBand] = rssiTable[i]; - selectedChannel[subBand] = channelNumber[i]; - } - } - // 1.5) Reset carrierSenseCounter - carrierSenseCounter = 0; - } // End Band Loop - // 2) When all sub bands have been scanned, find which sub band has the highest RSSI (Scan the highRSSI[subBand] - // table). Store the subBand (0, 1, or 2) and the corresponding channel in the global variables activeBand and - // activeChannel respectively - //~ { - INT16 tempRssi = -150; - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - if (highRSSI[subBand] >= tempRssi) - { - tempRssi = highRSSI[subBand]; - activeChannel = selectedChannel[subBand]; - activeBand = subBand; - } - } -} - - -void scanFreqBands_noautocal(void) { - UINT8 subBand; - UINT8 i; - UINT16 channel; - // 1) Loop through all sub bands - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - // 1.1) Set the base freq. for the current sub band. The values for FREQ2, FREQ1, and FREQ0 can be found in - // freqSettings[subBand][n], where n = 0, 1, or 2 - // 1.2) Set TEST0 register = 0x0B - // 1.3) Reset Calibration Counter (calibration performed when counter is 0) - calCounter = 0; - // 1.4) Loop through all channels - for (channel = 0; channel <= lastChannel[subBand]; channel++ ) - { - UINT8 pktStatus; - // 1.4.1) Set CHANNR register = channel - // 1.4.2) Change TEST0 register settings to 0x09 if freq is above 861 MHz. When TEST0 is changed to 0x09, it - // is important that FSCAL2 is set to 0x2A and that a new calibration is performed - if (channel == limitTest0Reg[subBand]) - { - // 1.4.2.1) Set TEST0 register = 0x09 - // 1.4.2.2) Set FSCAL2 register = 0x2A - // 1.4.2.3) Calibration is needed when TEST0 is changed - calCounter = 0; - } - // 1.4.3) Calibrate for every 5th ch. + at start of every sub band and every time the TEST0 reg. is changed - if (calCounter++ == 0) - { - // 1.4.3.1) Perform a manual calibration by issuing an SCAL strobe command - } - // 1.4.4)) Reset Calibration Counter (if calCounter = 5, we are 1 MHz away from the frequency where a - // calibration was performed) - if (calCounter == 5) - { - // 1.4.4.1) Calibration is performed if calCounter = 0 - calCounter = 0; - } - // 1.4.5) Enter RX mode by issuing an SRX strobe command - // 1.4.6) Wait for radio to enter RX state (can be done by polling the MARCSTATE register) - // 1.4.7) Wait for RSSI to be valid (See DN505 [7] on how long to wait) - // 1.4.8) Read the PKTSTATUS register while the radio is in RX state (store it in pktStatus) - // 1.4.9) Enter IDLE state by issuing an SIDLE strobe command - // 1.4.10) Check if CS is asserted (use the value obtained in 1.4.8) - if (pktStatus & 0x40) - { // CS is asserted - // 1.4.10.1) Read RSSI value and store it in rssi_dec - // 1.4.10.2) Calculate RSSI in dBm (rssi_dBm)(offset value found in rssi_offset[subBand]) - // 1.4.10.3) Store the RSSI value and the corresponding channel number - rssiTable[carrierSenseCounter] = rssi_dBm; - channelNumber[carrierSenseCounter] = channel; - carrierSenseCounter++; - } - } // End Channel Loop - // 1.5) Before moving on to the next sub band, scan through the rssiTable to find the highest RSSI value. Store - // the RSSI value in highRSSI[subBand] and the corresponding channel number in selectedChannel[subBand] - for (i = 0; i < carrierSenseCounter; i++) - { - if (rssiTable[i] > highRSSI[subBand]) - { - highRSSI[subBand] = rssiTable[i]; - selectedChannel[subBand] = channelNumber[i]; - } - } - // 1.6) Reset carrierSenseCounter - carrierSenseCounter = 0; - } // End Band Loop - // 2) When all sub bands have been scanned, find which sub band has the highest RSSI (Scan the highRSSI[subBand] - // table). Store the subBand (0, 1, or 2) and the corresponding channel in the global variables activeBand and - // activeChannel respectively - //~ { - INT16 tempRssi = -150; - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - if (highRSSI[subBand] >= tempRssi) - { - tempRssi = highRSSI[subBand]; - activeChannel = selectedChannel[subBand]; - activeBand = subBand; - } - } -} diff --git a/boop/trunk/cc1100/scan.h b/boop/trunk/cc1100/scan.h deleted file mode 100644 index f3f30f8..0000000 --- a/boop/trunk/cc1100/scan.h +++ /dev/null @@ -1,39 +0,0 @@ -//~ DN508 - Frequency Scanning using CC430Fx, CC110x, and CC111xFx - - -#define NUMBER_OF_SUB_BANDS 3 - -// Variables used to calculate RSSI -UINT8 rssi_dec; -INT16 rssi_dBm; -UINT8 rssi_offset[NUMBER_OF_SUB_BANDS] = {77, 77, 77}; -// Freq. Band Range Channel -// 0 779.009766 - 829.997314 0 - 255 All 0x0B -// 1 830.196869 - 881.184418 0 - 255 <- 154 = 0x0B, 155 -> = 0x09 -// 2 881.384369 - 927.972992 0 - 233 All 0x09 -INT16 rssiTable[256]; -UINT16 channelNumber[256]; -UINT8 carrierSenseCounter = 0; // Counter used to keep track on how many time CS has been asserted in one sub band - //(i.e. how many RSSI values are stored for each band) - -// Stop Channel in each of the sub bands -UINT8 lastChannel[NUMBER_OF_SUB_BANDS] = { 255, 255, 233}; - -// Channel number for each of the sub bands where one should change from TEST0 = 0x0B to TEST0 = 0x09 -UINT16 limitTest0Reg[NUMBER_OF_SUB_BANDS] = { 256, 155, 0 }; - -// Initialized to a value lower than the RSSI threshold -INT16 highRSSI[NUMBER_OF_SUB_BANDS] = { -150, -150, -150}; - -// Initialized to a value greater than the highest channel number -UINT16 selectedChannel[NUMBER_OF_SUB_BANDS] = { 300, 300, 300}; - // {FREQ2, FREQ1, FREQ0} -UINT8 freqSettings[NUMBER_OF_SUB_BANDS][3] = { {0x1D, 0xF6, 0x40}, - {0x1F, 0xEE, 0x3F}, - {0x21, 0xE6, 0x3F}}; - -UINT8 activeBand; // After the scanFreqBands() function has run, this variable will contain the sub band where - // the strongest signal was found -UINT16 activeChannel; // After the scanFreqBands() function has run, this variable will contain the channel number - // where the strongest signal was found -UINT8 calCounter = 0; // This variable is only used when running the code shown in Figure 3 diff --git a/boop/trunk/crt.s b/boop/trunk/crt.s deleted file mode 100644 index 27636b6..0000000 --- a/boop/trunk/crt.s +++ /dev/null @@ -1,268 +0,0 @@ -/* - crt.s - startup code - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ -.global main - -.global _etext -.global _data -.global _edata -.global __bss_start -.global __bss_end__ -.global _stack - -/* Stack Sizes */ -.set UND_STACK_SIZE, 0x00000004 /* stack for "undefined instruction" interrupts is 4 bytes */ -.set ABT_STACK_SIZE, 0x00000004 /* stack for "abort" interrupts is 4 bytes */ -.set FIQ_STACK_SIZE, 0x00000104 /* stack for "FIQ" interrupts is 4 bytes */ -.set IRQ_STACK_SIZE, 0X000003F0 /* stack for "IRQ" normal interrupts is 4 bytes */ -.set SVC_STACK_SIZE, 0x00000004 /* stack for "SVC" supervisor mode is 4 bytes */ - -/* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */ -.set MODE_USR, 0x10 /* Normal User Mode */ -.set MODE_FIQ, 0x11 /* FIQ Processing Fast Interrupts Mode */ -.set MODE_IRQ, 0x12 /* IRQ Processing Standard Interrupts Mode */ -.set MODE_SVC, 0x13 /* Supervisor Processing Software Interrupts Mode */ -.set MODE_ABT, 0x17 /* Abort Processing memory Faults Mode */ -.set MODE_UND, 0x1B /* Undefined Processing Undefined Instructions Mode */ -.set MODE_SYS, 0x1F /* System Running Priviledged Operating System Tasks Mode */ -.set I_BIT, 0x80 /* when I bit is set, IRQ is disabled (program status registers) */ -.set F_BIT, 0x40 /* when F bit is set, FIQ is disabled (program status registers) */ - - -.text -.arm - -.global Reset_Handler -.global _startup - -.section .text.fastcode - -.global ramvectors -.func ramvectors -ramvectors: - ldr PC, Ram_Reset_Addr - ldr PC, Ram_Undef_Addr - ldr PC, Ram_SWI_Addr - ldr PC, Ram_PAbt_Addr - ldr PC, Ram_DAbt_Addr - nop /* Reserved Vector (holds Philips ISP checksum) */ - ldr PC, do_vic_addr /* Route IRQ to VIC */ - ldr PC, Ram_FIQ_Addr - -Ram_Reset_Addr: .word Reset_Handler /* defined in this module below */ -Ram_Undef_Addr: .word UNDEF_Routine /* defined in main.c */ -Ram_SWI_Addr: .word SWI_Routine /* defined in main.c */ -Ram_PAbt_Addr: .word UNDEF_Routine /* defined in main.c */ -Ram_DAbt_Addr: .word UNDEF_Routine /* defined in main.c */ -do_vic_addr: .word do_vic -Ram_FIQ_Addr: .word do_fiq /* defined in main.c */ - .word 0 /* rounds vectors to 64 bytes total */ -.endfunc - -.global do_vic -.func do_vic -do_vic: - - stmfd sp!, { r0-r5, r12, lr } /* save work regs & spsr on stack */ - ldr r4, =VICVectAddr /* get the ISR address from VIC */ - ldr r5, [r4] - mov lr, pc /* set return to common exit of ISR */ - bx r5 /* go handle the interrupt */ -/* mov pc, r5 /* go handle the interrupt */ - str lr, [r4] /* update VICVectAddr */ - ldmfd sp!, { r0-r5, r12, lr } /* restore work regs and spsr_irq */ - subs pc, lr, #0x4 /* return, restoring CPSR from SPSR */ -/* -stmfd sp!, { lr } -mrs lr, spsr -stmfd sp!, { r4-r5, lr } - -ldr r4, =VICVectAddr -ldr r5, [r4] - -msr cpsr_c, #0x13 - -stmfd sp!, { r0-r3, r12, lr } -mov lr, pc -bx r5 -ldmfd sp!, { r0-r3, r12, lr } - -msr cpsr_c, #0x92 - -str lr, [r4] - -ldmfd sp!, { r4-r5, lr } -msr spsr_cxsf, lr -ldmfd sp!, { lr } - -subs pc, lr, #0x4 -*/ - -.endfunc - -.global do_fiq -.func do_fiq -do_fiq: - - stmfd sp!, { r0-r7, lr } - ldr r8, =FIQ_Routine - mov lr, pc - bx r8 - ldmfd sp!, { r0-r7, lr } - subs pc, lr, #0x4 -.endfunc - - -.section .text - -.func _startup -_startup: - -# Exception Vectors - -_vectors: - ldr PC, Reset_Addr - -Reset_Addr: .word Reset_Handler - -# Reset Handler - -Reset_Handler: - -/* Setup a stack for each mode - note that this only sets up a usable stack - for User mode. Also each mode is setup with interrupts initially disabled. */ - - ldr r0, =_stack_end - msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */ - mov sp, r0 - - sub r0, r0, #UND_STACK_SIZE - msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */ - mov sp, r0 - - sub r0, r0, #ABT_STACK_SIZE - msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */ - mov sp, r0 - - sub r0, r0, #FIQ_STACK_SIZE - msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */ - mov sp, r0 - - sub r0, r0, #IRQ_STACK_SIZE - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */ - mov sp, r0 - - sub r0, r0, #SVC_STACK_SIZE - msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* User Mode */ - mov sp, r0 - -/* Setup Pins and Memory */ - ldr r0,=BCFG0 - /* W B R */ - /* P S B */ - /* B W E E L */ - /* AT|MW|M|P|R|R|reserved|WST2 |E|WST1 |r|IDCY */ - /* --+--+-+-+-+-+--------+-----+-------+-+---- */ - /* 3 | 2| | | |2| 2 1| 1 | | 0 |0| 0 */ - /* 1 | 8| | | |4| 0 6| 2 | | 8 |4| 0 */ - /* --+--+-+-+-+-+--------+-----+-------+-+---- */ -/* ldr r1, =0x10000400 /* 00|01|0|0|0|0|00000000|00000|1|00000|0|0000 16bit, rble, 3wst - 10 mhz*/ -/* ldr r1, =0x10000420 /* 00|01|0|0|0|0|00000000|00000|1|00001|0|0000 16bit, rble, 4wst - 30 mhz*/ - ldr r1, =0x100004A0 /* 00|01|0|0|0|0|00000000|00000|1|00101|0|0000 16bit, rble, 6wst - 60 mhz*/ - - str r1,[r0] /* set bcfg0 (flash) */ - str r1,[r0,#0x08] /* set bcfg2 (flash) */ - - ldr r0, =BCFG1 -/* ldr r1, =0x00000422 /* 00|00|0|0|0|0|00000000|00000|1|00001|0|0010 8 bit, 3 sram wst, rble, 5 wst 3 idcy*/ - ldr r1, =0x00000C42 /* 00|00|0|0|0|0|00000000|00001|1|00010|0|0010 8 bit, 3 sram wst, rble, 5 wst 3 idcy*/ - str r1, [r0] /* set bcfg1 (lcd) */ - - ldr r0, =PINSEL0 - ldr r1, =0x00008005 - str r1, [r0] - - ldr r0, =PINSEL1 - ldr r1, =0x00000000 /* gpio 0.30 */ - str r1, [r0] - - ldr r0, =PINSEL2 - ldr r1, =0x0de049d4 - str r1, [r0] - - ldr r0, = IO2SET - ldr r1, =0x1FC0000 - str r1, [r0] - str r1, [r0,#0x04] - - ldr r0, = IO0DIR - ldr r1, =0x002018D0 - str r1, [r0] - -/* Setup PLL */ - ldr r0, =0xe01fc000 - ldr r2, =0xaa - ldr r3, =0x55 - ldr r1, =0x03 - str r1, [r0,#0x80] /* set pllcon to 0x03 = pll enable (0x01) + pll connect (0x02) */ - ldr r1, =0x0 - str r1, [r0,#0x100] /* set vbpdiv to 0x00 = 1/4th; 0x01 = 1/1, 0x02 = 1/2*/ -/* ldr r1, =0x42 */ - ldr r1, =0x45 - str r1,[r0,#0x84] /* set pllcfg to 0x42 = psel = 10 (4) = msel= 00010 (3) = 240 mhz Fcco*/ - str r2, [r0,#0x8c] - str r3, [r0,#0x8c] - -/* Copy .fastcode & .data section (Copy from ROM to RAM) */ - ldr R0, =__fastcode_load /*_etext*/ - ldr r3, entry_mask /* this and the next instruction are an workaround */ - and r0, r0, r3 /* for some ugly bug in winarm to force msb to 0x80 */ - ldr R1, =__fastcode_start /*_data*/ - ldr R2, =_edata -1: - cmp r1,r2 - ldmltia r0!,{r3} - stmltia r1!,{r3} - blt 1b - -/* Clear .bss section (Zero init) */ - mov R0, #0 - ldr R1, =_bss_start - ldr R2, =_bss_end -2: - cmp R1, R2 - strlo R0, [R1], #4 - blo 2b - - ldr r0, =MEMMAP - ldr r1, =0x02 /* irq vectors in ram */ - str r1, [r0] - - mov r0,#0 - mov r1,r0 - mov r2,r0 - mov fp,r0 - mov r7,r0 - ldr r10,=main - mov lr,pc - bx r10 - -.endfunc - -entry_mask: .word 0x8FFFFFFF /* defined in this module below */ - -.end diff --git a/boop/trunk/display/GrayScaler.exe b/boop/trunk/display/GrayScaler.exe deleted file mode 100644 index ac8260d482dcd28f56ddc51429e16a43cb7cbc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380928 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%0Aq*=5<=e2og9-Q1(BOEGp3yh=1^O)4@8sbVMyU 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

BEEMV0KZ#UZMbs_kHE0+JY9NQJnd43l`|4s@%V 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 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "timerfuncs.h" -#include "backlight.h" - -// backlight PWM is done in soundirq -// backlight timing is done by timer functions - -extern volatile unsigned char bl_val; - -unsigned char bl_max; -unsigned int bl_cb; -unsigned char direction; - -unsigned char bl_speed; // n*5 ms between two steps of brightness -unsigned int bl_timeout; - -void autoBL(unsigned int cb) -{ - switch(direction) - { - case 0: - if(bl_val < bl_max) - { - bl_val++; - } - else - { - direction = 1; - setCBIntervall(bl_cb, bl_timeout); - } - break; - - case 1: - direction = 2; - setCBIntervall(bl_cb, bl_speed); - break; - - case 2: - if(bl_val > 0x00) - { - bl_val--; - } - else - { - direction = 0; - stopCB(bl_cb); - } - break; - } -} - - -// adds function autoBL to timer -// initialises parameters // TODO: vgl. load_setting (settingsmenu.c) -void initBacklight(void) -{ - direction = 1; - bl_speed = 2; - bl_timeout = 5000; - bl_max = 63; - bl_cb = addTimerCB(autoBL, bl_timeout); - startCB(bl_cb); -} - -// set new brightness and set up fading and timout -void setBacklight(unsigned char level) -{ - if(level == BL_AUTO) - { - stopCB(bl_cb); - direction = 0; - setCBIntervall(bl_cb, bl_speed); - startCB(bl_cb); - } - else if(level < BL_AUTO) - { - stopCB(bl_cb); - bl_val = level; - direction = 1; - setCBIntervall(bl_cb, bl_timeout); - startCB(bl_cb); - } -} - -void setBLSpeed(unsigned char s) -{ - if(s > 0) - bl_speed = s; -} - -void setBLTimeout(unsigned int t) -{ - if(t > 0) - bl_timeout = t; -} diff --git a/boop/trunk/display/backlight.h b/boop/trunk/display/backlight.h deleted file mode 100644 index 4b3574a..0000000 --- a/boop/trunk/display/backlight.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - backlight.h - lcd backlight control - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef BACKLIGHT_H -#define BACKLIGHT_H - -#define BL_OFF 0x00 -#define BL_AUTO 0x40 -#define BL_ON 0x80 - -void initBacklight(void); -void setBacklight(unsigned char level); - -#endif diff --git a/boop/trunk/display/boop_logo b/boop/trunk/display/boop_logo deleted file mode 100644 index aaa5389..0000000 --- a/boop/trunk/display/boop_logo +++ /dev/null @@ -1,2592 +0,0 @@ -#ifndef DEBUGMODE -const unsigned char b_w = 128; -const unsigned char b_h = 160; -const char b_data[] = { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0x80, 0x80, - 0xc0, 0x80, - 0xc0, 0xc0, - 0xc0, 0xc0, - 0xc0, 0xe0, - 0xc0, 0xe0, - 0xe8, 0xd0, - 0xf8, 0xf8, - 0xf8, 0xf8, - 0xf0, 0xf8, - 0xe0, 0xc0, - 0xe0, 0xc0, - 0xc0, 0xe0, - 0xc0, 0xc0, - 0xc0, 0xc0, - 0xc0, 0x80, - 0x80, 0xc0, - 0x80, 0xc0, - 0xe0, 0xf0, - 0xe0, 0xc0, - 0xc0, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0xe0, 0xc0, - 0xe0, 0xf0, - 0xf0, 0xa0, - 0xc0, 0xc0, - 0xe0, 0xc0, - 0xe0, 0xe0, - 0xe0, 0xf0, - 0xf0, 0xe0, - 0xf0, 0xf0, - 0xf0, 0xf0, - 0xf0, 0xf0, - 0xf0, 0xe0, - 0x20, 0xc0, - 0xf0, 0x08, - 0xfc, 0xf8, - 0xfe, 0xfc, - 0xff, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x7f, 0xff, - 0x7f, 0xbf, - 0x7f, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0xff, - 0x7f, 0xff, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xf8, 0xfd, - 0xe0, 0x90, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x20, - 0xf8, 0xf4, - 0xfe, 0xfc, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xbf, - 0xdf, 0xbf, - 0xdf, 0x2f, - 0x1f, 0xef, - 0x1f, 0xef, - 0x1f, 0xef, - 0x1f, 0xec, - 0x1f, 0xe0, - 0x0f, 0xf7, - 0x07, 0xfb, - 0x03, 0xfd, - 0x01, 0xff, - 0x01, 0xfe, - 0x00, 0xff, - 0x00, 0xff, - 0x83, 0x7c, - 0xe3, 0xde, - 0x77, 0xab, - 0x1b, 0xe7, - 0x0b, 0xf4, - 0x0c, 0xf3, - 0x08, 0xf7, - 0x0c, 0xf3, - 0x1d, 0xee, - 0x1f, 0xef, - 0xef, 0x17, - 0xe7, 0xdf, - 0xcf, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x3e, 0x5c, - 0x1e, 0x1d, - 0x0f, 0x0e, - 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x07, 0x0a, - 0x0e, 0x0f, - 0x1e, 0x0f, - 0x7f, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0xbf, - 0x7f, 0xb3, - 0x3d, 0xda, - 0x01, 0xfe, - 0x01, 0xff, - 0xc1, 0x3f, - 0x71, 0x8e, - 0x30, 0xcf, - 0x18, 0xe7, - 0x18, 0xf7, - 0x18, 0xf7, - 0x18, 0xef, - 0x08, 0xf7, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x06, 0xfb, - 0x07, 0xfb, - 0xc1, 0x3e, - 0xf0, 0x0f, - 0x78, 0x87, - 0xf8, 0x67, - 0x78, 0xe7, - 0xf8, 0xe7, - 0xf8, 0xe7, - 0xf0, 0xef, - 0xf8, 0x47, - 0x63, 0x9c, - 0xf7, 0xeb, - 0xff, 0xe3, - 0xf3, 0xef, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xef, 0xf7, - 0xe1, 0xf2, - 0x70, 0xb0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x88, - 0x99, 0x73, - 0xff, 0x3b, - 0xff, 0x3f, - 0xfe, 0x7d, - 0xff, 0x7e, - 0x6e, 0x97, - 0x40, 0xff, - 0xe1, 0x7e, - 0xe1, 0x9e, - 0xf8, 0xe7, - 0xfe, 0xb9, - 0x9e, 0x8d, - 0x8e, 0xd9, - 0xff, 0x0c, - 0x7c, 0xfb, - 0x7c, 0xfb, - 0xfc, 0x7b, - 0x60, 0xdf, - 0xc0, 0xff, - 0xe0, 0x7f, - 0xf0, 0x2f, - 0xb0, 0x7f, - 0x30, 0xff, - 0x78, 0xff, - 0xff, 0x4c, - 0xce, 0xf5, - 0xce, 0xf4, - 0xcf, 0xf2, - 0xcb, 0x77, - 0xeb, 0x57, - 0x67, 0xeb, - 0xf7, 0xab, - 0xff, 0x1e, - 0xdf, 0x6e, - 0xcf, 0x73, - 0xe3, 0xdd, - 0x9f, 0x21, - 0x1f, 0x81, - 0x15, 0x0b, - 0x17, 0x09, - 0x09, 0x16, - 0x07, 0x08, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x08, - 0xf8, 0x78, - 0x98, 0xf8, - 0x38, 0x10, - 0x30, 0x18, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x70, - 0x70, 0x20, - 0x60, 0x30, - 0x60, 0x60, - 0x60, 0x60, - 0x60, 0x60, - 0xf8, 0xe4, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 5 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0x10, - 0xf8, 0x14, - 0x0e, 0xf0, - 0x03, 0xfc, - 0xff, 0x00, - 0xff, 0x02, - 0x87, 0x7b, - 0x83, 0xff, - 0xcf, 0x3f, - 0x6f, 0x1f, - 0x6f, 0xbf, - 0xbf, 0x46, - 0xff, 0x1f, - 0x7f, 0x3f, - 0x3f, 0xdf, - 0xf9, 0xde, - 0x7b, 0xd8, - 0x7b, 0xc0, - 0xf9, 0xce, - 0xed, 0xf8, - 0xec, 0xf7, - 0xf6, 0x8b, - 0x93, 0xef, - 0x98, 0xe7, - 0x8e, 0xf1, - 0x8e, 0xff, - 0xcf, 0xbe, - 0xce, 0xb7, - 0xe6, 0xd9, - 0xf6, 0xe9, - 0xfe, 0xb1, - 0x3e, 0xdf, - 0x1e, 0xef, - 0x07, 0xfa, - 0x03, 0xfd, - 0x01, 0xfe, - 0x00, 0xff, - 0x80, 0x7f, - 0x80, 0x7c, - 0x80, 0x7d, - 0x01, 0xfe, - 0x03, 0xf5, - 0x02, 0xef, - 0x06, 0xe8, - 0x0c, 0xd0, - 0x18, 0xe0, - 0x30, 0xc0, - 0x60, 0xa0, - 0xc0, 0x60, - 0x80, 0xc0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 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, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x40, 0x00, - 0xe0, 0xc0, - 0xc3, 0xc1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 6 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf0, 0xcc, - 0x7f, 0x88, - 0x01, 0xfe, - 0x00, 0xff, - 0x00, 0xff, - 0xff, 0x02, - 0x01, 0x83, - 0x01, 0x00, - 0x00, 0x01, - 0x00, 0x00, - 0x80, 0x40, - 0xc0, 0x20, - 0x30, 0x48, - 0x1c, 0xa0, - 0x66, 0x91, - 0xfb, 0xf4, - 0x8d, 0x58, - 0x0e, 0x0d, - 0x0f, 0x06, - 0x0f, 0x07, - 0x0f, 0x07, - 0x8f, 0x07, - 0x0f, 0x87, - 0x0f, 0x07, - 0x0f, 0x07, - 0x0f, 0x07, - 0x1f, 0x2f, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfe, - 0xfe, 0xff, - 0xfc, 0xff, - 0xfc, 0xfb, - 0xf8, 0xf7, - 0xf0, 0xff, - 0x7d, 0x32, - 0x1f, 0x04, - 0x03, 0x05, - 0x03, 0x04, - 0x06, 0x01, - 0x0c, 0x03, - 0x1c, 0x0b, - 0x30, 0x1f, - 0xf0, 0x2f, - 0xe0, 0xdf, - 0x60, 0x9f, - 0x60, 0x1f, - 0x01, 0xfe, - 0x03, 0xfd, - 0x06, 0xfb, - 0x0c, 0xf6, - 0xb8, 0x5c, - 0xe0, 0x50, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xf0, - 0x98, 0x1c, - 0x0c, 0x1c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x1c, 0x0c, - 0x1c, 0x3c, - 0xec, 0xd8, - 0x18, 0x1c, - 0x18, 0x18, - 0x30, 0x18, - 0x30, 0x20, - 0x60, 0xc0, - 0x80, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 7 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xfc, 0x03, - 0xff, 0x01, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xfe, - 0x03, 0xfc, - 0xff, 0x0c, - 0xfc, 0x08, - 0x06, 0xfc, - 0x03, 0xfc, - 0x01, 0xfe, - 0x80, 0x7e, - 0xc0, 0x7f, - 0x60, 0x3f, - 0x18, 0x37, - 0x0d, 0x12, - 0xc7, 0x23, - 0xff, 0x7e, - 0x00, 0xf6, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x80, - 0x01, 0x82, - 0x02, 0x81, - 0x02, 0x80, - 0x80, 0x02, - 0x80, 0x01, - 0x03, 0xc1, - 0x47, 0x87, - 0x07, 0x4f, - 0xef, 0x37, - 0x9f, 0x6f, - 0xff, 0x07, - 0x1f, 0x6f, - 0x07, 0x0f, - 0x03, 0x01, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x80, 0x00, - 0xc0, 0x20, - 0x60, 0xb0, - 0x18, 0xb0, - 0x0c, 0xf2, - 0x06, 0xf3, - 0x03, 0xf9, - 0x80, 0x79, - 0xc0, 0xbe, - 0x60, 0xdf, - 0x30, 0x6f, - 0x18, 0x37, - 0x0c, 0x1b, - 0x07, 0x06, - 0x03, 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x03, - 0x03, 0x03, - 0x06, 0x03, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x07, - 0x07, 0x03, - 0x03, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x88, 0x00, - 0xcc, 0x86, - 0x87, 0x87, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 8 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0x07, 0x03, - 0x0e, 0x19, - 0x18, 0x07, - 0x30, 0x0f, - 0x20, 0x5f, - 0x60, 0x1f, - 0x30, 0x0f, - 0x18, 0x17, - 0x0c, 0x13, - 0x06, 0x01, - 0x03, 0x00, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x04, - 0x0f, 0x06, - 0xfc, 0xff, - 0x0c, 0xf6, - 0x0c, 0xf6, - 0x0c, 0xf6, - 0x0c, 0xfc, - 0x0c, 0xfc, - 0x0c, 0x7c, - 0x6c, 0xbc, - 0xfc, 0x28, - 0xfc, 0x18, - 0xf8, 0x0c, - 0x68, 0x98, - 0xe8, 0x13, - 0x0b, 0xf0, - 0x0f, 0xf8, - 0x0f, 0xfe, - 0x09, 0xf0, - 0x08, 0xf0, - 0x08, 0xf8, - 0x08, 0xf8, - 0x0c, 0xf8, - 0x84, 0xfe, - 0xc6, 0x3b, - 0x63, 0x3c, - 0x30, 0x0f, - 0x18, 0x07, - 0x0c, 0x03, - 0x06, 0x0d, - 0x06, 0x03, - 0x03, 0x01, - 0x01, 0x03, - 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, - 0xf0, 0xf0, - 0x18, 0x98, - 0x0c, 0x18, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x1c, - 0x0c, 0x1c, - 0x1c, 0x08, - 0x18, 0x1c, - 0x18, 0x18, - 0x18, 0x30, - 0x30, 0x30, - 0x61, 0x31, - 0xc1, 0xe1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 9 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xe4, - 0xfe, 0xcd, - 0xff, 0xe8, - 0xf8, 0xd7, - 0xfb, 0xc4, - 0xfb, 0xc4, - 0xf8, 0x9f, - 0xf8, 0xcf, - 0xf8, 0xef, - 0xff, 0xe9, - 0xff, 0x58, - 0xfd, 0xfe, - 0xff, 0xf0, - 0xff, 0xb8, - 0xfd, 0x73, - 0xbe, 0x79, - 0xfc, 0x1f, - 0xfe, 0x1d, - 0xfe, 0x3f, - 0xfe, 0x7f, - 0xff, 0xfe, - 0xf9, 0x1e, - 0xf9, 0x12, - 0xf1, 0x60, - 0xc0, 0xe0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 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, - 0x03, 0x01, - 0x03, 0x06, - 0x06, 0x06, - 0x06, 0x06, - 0x0e, 0x06, - 0x0e, 0x0c, - 0x0c, 0x0e, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x06, 0x0c, - 0x03, 0x07, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 10 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x07, - 0xff, 0x0f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xf7, - 0xff, 0x8f, - 0xff, 0x1f, - 0xff, 0x3f, - 0xff, 0x7e, - 0xff, 0x3c, - 0xff, 0x39, - 0xff, 0x21, - 0xff, 0xc9, - 0xff, 0xf2, - 0xff, 0x80, - 0xff, 0xa0, - 0xff, 0xc0, - 0xff, 0x80, - 0xf9, 0xc6, - 0xff, 0x78, - 0xff, 0x60, - 0xff, 0xee, - 0xff, 0xfc, - 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, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x60, - 0xf0, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x70, - 0x60, 0x70, - 0x60, 0x60, - 0xc0, 0x40, - 0x80, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 11 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, - 0xe7, 0xdb, - 0xff, 0xff, - 0xff, 0xf7, - 0xff, 0xff, - 0xff, 0x2f, - 0xff, 0x3e, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xf3, - 0xff, 0xf7, - 0xff, 0x3f, - 0xff, 0x1f, - 0xff, 0x1b, - 0xff, 0x3b, - 0xff, 0x3b, - 0xff, 0x3f, - 0xff, 0x7f, - 0xff, 0x04, - 0xf6, 0x0d, - 0xff, 0x03, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xe0, - 0xc0, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x1c, - 0xbd, 0x8d, - 0x8e, 0x8e, - 0x8c, 0x9c, - 0x9c, 0x88, - 0x98, 0x98, - 0x18, 0x98, - 0x18, 0x18, - 0x19, 0x18, - 0x1f, 0x3e, - 0x30, 0x10, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x60, - 0x60, 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, - //--- Page 12 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0xf2, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xc0, - 0xff, 0x00, - 0xff, 0x1f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfe, - 0xff, 0xf8, - 0xff, 0x80, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x80, - 0xff, 0xe0, - 0xff, 0x80, - 0xff, 0x00, - 0xff, 0x3f, - 0xff, 0x78, - 0xff, 0xe1, - 0xff, 0x36, - 0xfc, 0xe2, - 0x80, 0x40, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x0f, - 0x33, 0x31, - 0x61, 0x61, - 0x61, 0xe1, - 0xc1, 0xe1, - 0xc1, 0xc1, - 0xc3, 0xc1, - 0xc3, 0xc3, - 0xe6, 0x62, - 0x7c, 0x78, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 13 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 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, - 0x0f, 0x1f, - 0xff, 0xf0, - 0xff, 0xff, - 0xff, 0x1f, - 0xff, 0xe0, - 0xff, 0xe0, - 0xff, 0xe3, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xe0, - 0xff, 0x81, - 0xff, 0x03, - 0xff, 0xdb, - 0xff, 0xe0, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x3f, - 0xff, 0xfc, - 0xff, 0xe0, - 0xff, 0x07, - 0xfe, 0x38, - 0xf0, 0xe8, - 0xc0, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x7c, 0x3c, - 0xce, 0xc6, - 0x86, 0x86, - 0x86, 0x86, - 0x06, 0x86, - 0x06, 0x06, - 0x0c, 0x06, - 0x0c, 0x0c, - 0x98, 0x88, - 0xf0, 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, - //--- Page 14 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc7, 0x39, - 0xff, 0x7f, - 0xff, 0x78, - 0xff, 0x78, - 0xff, 0xc0, - 0xff, 0x81, - 0xff, 0x83, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xe7, - 0xff, 0x9f, - 0xff, 0x7f, - 0xff, 0xfc, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x0b, - 0xff, 0x3d, - 0xff, 0xf8, - 0xff, 0xd8, - 0xff, 0x00, - 0xff, 0xff, - 0xff, 0xfe, - 0xf8, 0xfc, - 0xf0, 0xe0, - 0xc0, 0x80, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, - 0x38, 0x18, - 0x18, 0x18, - 0x18, 0x18, - 0x18, 0x18, - 0x30, 0x30, - 0x60, 0xf0, - 0xe1, 0xc1, - 0x71, 0x3b, - 0x1b, 0x3b, - 0x1b, 0x1b, - 0x1b, 0x1b, - 0x33, 0x3b, - 0x63, 0x71, - 0xc1, 0xc1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 15 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0x90, - 0xff, 0xff, - 0xdf, 0xe0, - 0xf1, 0x8e, - 0xf5, 0x8a, - 0xe1, 0x9e, - 0xeb, 0x94, - 0xfb, 0x04, - 0xff, 0x01, - 0xff, 0x03, - 0xff, 0x23, - 0xff, 0xb3, - 0xff, 0xa0, - 0xff, 0x80, - 0xff, 0x80, - 0xff, 0x81, - 0xff, 0xd0, - 0xff, 0xf3, - 0xff, 0xff, - 0xff, 0xfe, - 0xff, 0xf1, - 0xff, 0xc0, - 0xff, 0xc0, - 0xff, 0xc0, - 0xe7, 0x18, - 0xff, 0x03, - 0xff, 0x0f, - 0x7f, 0xbe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfb, - 0xff, 0xff, - 0xfe, 0xf6, - 0xfc, 0xfc, - 0xfc, 0xe8, - 0xf8, 0x90, - 0xf0, 0xb8, - 0xe0, 0x70, - 0xe0, 0x40, - 0xc0, 0x80, - 0x80, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x0f, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x0e, - 0x0e, 0x04, - 0x0c, 0x06, - 0x0c, 0x0c, - 0x0f, 0x0f, - 0x0c, 0x0c, - 0x0c, 0x1c, - 0x1c, 0x08, - 0x18, 0x1c, - 0x18, 0x18, - 0x18, 0x18, - 0x3f, 0x3f, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 16 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x00, - 0xc0, 0xe0, - 0xe0, 0xc0, - 0xf0, 0x30, - 0xf8, 0x50, - 0xb8, 0x7c, - 0xfc, 0xf8, - 0xfc, 0xe8, - 0xfc, 0xcc, - 0xfc, 0x8c, - 0xfe, 0xf1, - 0xf3, 0xff, - 0xf3, 0xed, - 0xc3, 0xbd, - 0xcf, 0xf3, - 0xcf, 0xf3, - 0xc7, 0xff, - 0xcf, 0xf7, - 0xef, 0xdf, - 0xff, 0xf9, - 0xff, 0xff, - 0xff, 0x7f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x1f, 0x3f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x7f, 0xbf, - 0xff, 0xff, - 0xf7, 0x89, - 0xfd, 0xe2, - 0xff, 0xf0, - 0xff, 0xf8, - 0xfe, 0x7d, - 0xff, 0x3e, - 0xff, 0x65, - 0xff, 0x7f, - 0x3f, 0xdf, - 0x7f, 0xbf, - 0xff, 0x3f, - 0xff, 0x7e, - 0xff, 0xfd, - 0xff, 0xfd, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x7e, - 0x3f, 0x3e, - 0x1f, 0x1d, - 0x0f, 0x07, - 0x02, 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 17 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x08, - 0x1f, 0x0d, - 0x1f, 0x3f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x1f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0d, - 0x0f, 0x07, - 0x03, 0x04, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x0f, 0x17, - 0xbf, 0x5f, - 0xff, 0x7f, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xfe, - 0x7f, 0xb0, - 0xff, 0x71, - 0xff, 0x6e, - 0xfc, 0x73, - 0xc0, 0x80, - 0x01, 0x80, - 0x01, 0x03, - 0x07, 0x02, - 0x07, 0x03, - 0x01, 0x03, - 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 18 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0xe0, 0x80, - 0xf0, 0xf8, - 0xf8, 0x3c, - 0xfc, 0x7c, - 0xfc, 0x7c, - 0xfc, 0x7e, - 0xff, 0x7e, - 0xfd, 0xfa, - 0xfc, 0xfb, - 0xfc, 0xfb, - 0xf8, 0xff, - 0xf8, 0xf7, - 0xf8, 0xf7, - 0xf8, 0xff, - 0xfc, 0xfb, - 0xfc, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x7e, 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 19 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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, 0x08, - 0x1f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x3e, - 0x3f, 0x3e, - 0x3f, 0x1e, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x0f, - 0x07, 0x0f, - 0x07, 0x03, - 0x03, 0x03, - 0x01, 0x03, - 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, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00 -}; -#else -const unsigned char b_w = 1; -const unsigned char b_h = 8; -const char b_data[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; -#endif diff --git a/boop/trunk/display/drawDigit.c b/boop/trunk/display/drawDigit.c deleted file mode 100644 index ff9f521..0000000 --- a/boop/trunk/display/drawDigit.c +++ /dev/null @@ -1,127 +0,0 @@ -/********************************************************************** -@file drawDigit.c - -@brief Draw a scalable 7-segment digit - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - 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 3 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, see . ------------------------------------------------------------------------ -@History - -1.00 10012010 RSt Creation - -@end -***********************************************************************/ -#include "global.h" -#include "lcd.h" -#include "drawDigit.h" - - -// |<- w ->| -// | | -// |d|1| w1|1|d| -// ___ ______ -// _ |_a_| _ _2_ ^ -// | | | | | -// d | | f h1 -// |_| ___ |_| ___ h -// _ |_b_| _ 1 -// | | | | -// e | | g | -// |_| ___ |_| v -// |_c_| _2____ -// - -#define DIGIT_SEG_A _BV (0) -#define DIGIT_SEG_B _BV (1) -#define DIGIT_SEG_C _BV (2) -#define DIGIT_SEG_D _BV (3) -#define DIGIT_SEG_E _BV (4) -#define DIGIT_SEG_F _BV (5) -#define DIGIT_SEG_G _BV (6) -#define DIGIT_SEG_H _BV (7) - -const unsigned char digitSegPattern [] = -{ -/* 0 */ DIGIT_SEG_A | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_F | DIGIT_SEG_G, -/* 1 */ DIGIT_SEG_F | DIGIT_SEG_G, -/* 2 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_E | DIGIT_SEG_F , -/* 3 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_F | DIGIT_SEG_G, -/* 4 */ DIGIT_SEG_B | DIGIT_SEG_D | DIGIT_SEG_F | DIGIT_SEG_G, -/* 5 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_G, -/* 6 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_G, -/* 7 */ DIGIT_SEG_A | DIGIT_SEG_F | DIGIT_SEG_G, -/* 8 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_F | DIGIT_SEG_G, -/* 9 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_F | DIGIT_SEG_G -}; -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawDigit (unsigned char x, unsigned char y, - unsigned char w, unsigned char h, - unsigned char digit, unsigned char d, unsigned char c, unsigned char m) -{ - char w1 = w - 2*d - 2; - char h1 = (h - 5) / 2; - unsigned char i, mode, pattern; - - pattern = 0; - if (digit <= 9) - pattern = digitSegPattern [digit]; - - w1 = max (w1, 3); - h1 = max (h1, 3); - if (!d) - d = DIGIT_BAR_WIDTH; - - for (i = 0; i < 3; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+0)) - mode = m; - draw_block (x + d+1, y + i*(h1+1), - w1, d, - c, mode); - } - for (i = 0; i < 2; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+3)) - mode = m; - draw_block (x, y + d-1 + i*(h1+1), - d, h1, - c, mode); - } - for (i = 0; i < 2; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+5)) - mode = m; - draw_block (x + d + 1 + w1 + 1, y + d-1 + i*(h1+1), - d, h1, - c, mode); - } -} // drawDigit -//----------------------------------------------------------------------------- - - diff --git a/boop/trunk/display/drawDigit.h b/boop/trunk/display/drawDigit.h deleted file mode 100644 index 5bd96e0..0000000 --- a/boop/trunk/display/drawDigit.h +++ /dev/null @@ -1,68 +0,0 @@ -/********************************************************************** -@file drawDigit.h - -@brief Draw a scalable 7-segment digit - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - 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 3 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, see . ------------------------------------------------------------------------ -@History - -1.00 10012010 RSt Creation - -@end -***********************************************************************/ -#ifndef __DRAW_DIGIT_H__ -#define __DRAW_DIGIT_H__ - -#include "global.h" -#include "lcd.h" - -#ifndef DIGIT_BAR_WIDTH -#define DIGIT_BAR_WIDTH 3 -#endif - -// |<- w ->| -// | | -// |d|1| w1|1|d| -// ___ ______ -// _ |_a_| _ _2_ ^ -// | | | | | -// d | | f h1 -// |_| ___ |_| ___ h -// _ |_b_| _ 1 -// | | | | -// e | | g | -// |_| ___ |_| v -// |_c_| _2____ -// - -//----------------------------------------------------------------------------- -void drawDigit (unsigned char x, unsigned char y, - unsigned char w, unsigned char h, - unsigned char digit, unsigned char d, unsigned char c, unsigned char m); -//----------------------------------------------------------------------------- - - -#endif // #ifndef __DRAW_DIGIT_H__ - - - diff --git a/boop/trunk/display/drawIcon.c b/boop/trunk/display/drawIcon.c deleted file mode 100644 index 4467bdb..0000000 --- a/boop/trunk/display/drawIcon.c +++ /dev/null @@ -1,363 +0,0 @@ -/********************************************************************** -@file drawIcon.c - -@brief Draw Black/White and Gray scale icons with or without - Alpha channel (Transparency) - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - 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 3 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, see . ------------------------------------------------------------------------ -@History - -1.00 20012010 RSt Creation - -@end -***********************************************************************/ -#include "global.h" -#include "lcd.h" -#include "icon.h" - - -//----------------------------------------------------------------------------- -// Internally used functions - -static void _drawGray (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char m); - -static void _drawBlackWhite (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m); -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawIcon (unsigned char x, unsigned char y, - const icon_t const *pIcon, unsigned char c, unsigned char m) -{ - if (!pIcon) - return; - - drawIconExt (x, y, pIcon->data, - pIcon->width, pIcon->height, pIcon->info, - c, m); -} // drawIcon -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawIconExt (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m) -{ - switch (iconInfo) - { - case ICON_BLACK_WHITE_TRANSPARENT: /// 2 bpp - case ICON_BLACK_WHITE: /// 1 bpp - _drawBlackWhite (x, y, pData, - width, height, iconInfo, - c, m); - break; - - case ICON_GRAY_TRANSPARENT: /// 3 bpp - case ICON_GRAY: /// 2 bpp - _drawGray (x, y, pData, - width, height, iconInfo, - m); - break; - - default: - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - draw_rect (x, y, - width, height, - 1, LCD_COLOR_B, DRAW_XOR); - - break; - } // switch (iconInfo) -} // drawIconExt -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -static void _drawGray (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char m) -{ - unsigned char alphaBuf [LCD_SIZE_X]; - unsigned short ix; - unsigned short iy; - unsigned char iconWidth = width; - unsigned char bpp; - unsigned char* alphaBuf_p; - - if(iconInfo==ICON_GRAY_TRANSPARENT) - { - alphaBuf_p = alphaBuf; - bpp=3; - } - else - { - alphaBuf_p = NULL; - bpp=2; - } - - - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - unsigned short idx = (width * bpp); // 3 byte per pixel - unsigned char s = y & 0x07; - is_drawing++; - if (s) - { - for (ix = 0; ix < width; ix++) - { - alphaBuf [ix] = 0; - drawbuf [1][ix] = 0; - drawbuf [0][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - for (iy = 0; iy < height; iy += 8) - { - // Need to process two icon lines for one drawbuf line - if (iy) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2] >> (8-s); - drawbuf [1][ix] = pData [idx+1] >> (8-s); - drawbuf [0][ix] = pData [idx] >> (8-s); - } // for (ix = 0; ix < width; ix++) - - // go back to end of this page - idx += (width * bpp); // 3bpp - // goto next page - idx += (iconWidth * bpp); // 3bpp - } - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] |= pData [idx+2] << s; - drawbuf [1][ix] |= pData [idx+1] << s; - drawbuf [0][ix] |= pData [idx] << s; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += (width * bpp); // 3bpp - } // for (iy = 0; iy < height; iy += 8) - - /* Pixel in the last page: height & 0x07 - (i.e. 13 hight => 5 pixel in last page) */ - if (((height & 0x07) == 0) || - ((height & 0x07) > (8 - s))) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2] >> (8-s); - drawbuf [1][ix] = pData [idx+1] >> (8-s); - drawbuf [0][ix] = pData [idx] >> (8-s); - } // for (ix = 0; ix < width; ix++) - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - } - } - else - { - for (iy = 0; iy < height; iy += 8) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2]; - drawbuf [1][ix] = pData [idx+1]; - drawbuf [0][ix] = pData [idx]; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += (width * bpp); // 3bpp - // goto next page - idx += (iconWidth * bpp); // 3bpp - } // for (iy = 0; iy < height; iy += 8) - } // else if (s) - is_drawing--; -} // _drawGrayAlpha -//----------------------------------------------------------------------------- - - -//----------------------------------------------------------------------------- -static void _drawBlackWhite (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m) -{ - unsigned char alphaBuf [LCD_SIZE_X]; - unsigned short ix; - unsigned short iy; - unsigned char iconWidth = width; - unsigned char bpp; - unsigned char* alphaBuf_p; - - if(iconInfo==ICON_BLACK_WHITE_TRANSPARENT) - { - alphaBuf_p = alphaBuf; - bpp=2; - } - else - { - alphaBuf_p = NULL; - bpp=1; - } - - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - unsigned short idx = width * bpp; // 1 byte per pixel - unsigned char s = y & 0x07; - is_drawing++; - if (s) - { - for (ix = 0; ix < width; ix++) - { - alphaBuf [ix] = 0; - drawbuf [1][ix] = 0; - drawbuf [0][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - for (iy = 0; iy < height; iy += 8) - { - // Need to process two icon lines for one drawbuf line - if (iy) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1] >> (8-s); - if (c & 0x02) - drawbuf [0][ix] = pData [idx] >> (8-s); - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx] >> (8-s); - else - drawbuf [1][ix] = 0; - } // for (ix = 0; ix < width; ix++) - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += width * bpp; // 1bpp - // goto next page - idx += iconWidth * bpp; // 1bpp - } - for (ix = 0; ix < width; ix++) - { - idx -=bpp; - alphaBuf [ix] = pData [idx+1] << s; - if (c & 0x02) - drawbuf [0][ix] |= pData [idx] << s; - - if (c & 0x01) - drawbuf [1][ix] |= pData [idx] << s; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += width * bpp; // 1bpp - } // for (iy = 0; iy < height; iy += 8) - - /* Pixel in the last page: height & 0x07 - (i.e. 13 hight => 5 pixel in last page) */ - if (((height & 0x07) == 0) || - ((height & 0x07) > (8 - s))) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1] >> (8-s); - if (c & 0x02) - drawbuf [0][ix] = pData [idx] >> (8-s); - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx] >> (8-s); - else - drawbuf [1][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - } - } - else - { - for (iy = 0; iy < height; iy += 8) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1]; - if (c & 0x02) - drawbuf [0][ix] = pData [idx]; - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx]; - else - drawbuf [1][ix] = 0; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf); - - // go back to end of this page - idx += width * bpp; // 1bpp - // goto next page - idx += iconWidth * bpp; // 1bpp - } // for (iy = 0; iy < height; iy += 8) - } // else if (s) - is_drawing--; -} // _drawBlackWhiteAlpha -//----------------------------------------------------------------------------- - - - - diff --git a/boop/trunk/display/fonts/smooth.bits b/boop/trunk/display/fonts/smooth.bits deleted file mode 100644 index 5bda21c..0000000 --- a/boop/trunk/display/fonts/smooth.bits +++ /dev/null @@ -1,279 +0,0 @@ -const unsigned char smooth_mt_bits[] = { - 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x20, 0x20, - 0xe0, 0x3c, 0x20, 0xe0, 0x3c, 0x20, 0x20, 0xe0, 0xf0, 0x10, 0xfc, 0x10, - 0x30, 0x60, 0x78, 0xfc, 0x84, 0xfc, 0x78, 0x00, 0x80, 0x20, 0x18, 0x84, - 0x80, 0x80, 0x00, 0x80, 0xc0, 0x7c, 0x64, 0xc4, 0x84, 0x0c, 0x00, 0x40, - 0xc0, 0x40, 0x00, 0x3c, 0x3c, 0xe0, 0xf8, 0x0c, 0x04, 0x04, 0x08, 0xf0, - 0x80, 0x00, 0x50, 0x60, 0xfc, 0x60, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x78, 0x0c, 0xf0, 0xf8, 0x04, 0x04, 0x04, - 0x0c, 0xf8, 0xc0, 0x08, 0x08, 0xfc, 0xfc, 0x00, 0x00, 0x18, 0x04, 0x04, - 0x04, 0x8c, 0xf8, 0x30, 0x08, 0x04, 0x44, 0x44, 0x44, 0xbc, 0x98, 0x00, - 0x00, 0x80, 0x40, 0x30, 0x08, 0xfc, 0xfc, 0x00, 0x7c, 0x44, 0x44, 0x44, - 0x44, 0x84, 0x00, 0xe0, 0xf8, 0x4c, 0x44, 0x44, 0xc4, 0x8c, 0x00, 0x0c, - 0x04, 0x04, 0x04, 0xc4, 0x74, 0x0c, 0x00, 0x10, 0xb8, 0x44, 0x44, 0x44, - 0xfc, 0xb8, 0x00, 0x70, 0xf8, 0x04, 0x04, 0x04, 0x8c, 0xf8, 0xc0, 0xc0, - 0x00, 0x00, 0xc0, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x20, 0x20, - 0x30, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x30, 0x20, - 0x20, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x08, 0x04, 0x84, 0x84, 0xc4, - 0x78, 0x10, 0x80, 0xc0, 0x20, 0x10, 0x80, 0xc8, 0x48, 0x08, 0x88, 0x90, - 0x10, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x1c, 0xf8, 0xc0, - 0x00, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0xc4, 0x78, 0x30, - 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x18, 0x00, 0x04, 0xfc, - 0xfc, 0x04, 0x04, 0x04, 0x04, 0x08, 0xf0, 0xe0, 0x04, 0x04, 0xfc, 0xfc, - 0x84, 0x84, 0x84, 0xe4, 0x0c, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0x84, - 0xe4, 0x0c, 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x00, - 0x04, 0xfc, 0xfc, 0x84, 0x80, 0x80, 0x80, 0x84, 0xfc, 0xfc, 0x04, 0x04, - 0xfc, 0xfc, 0x04, 0x00, 0x00, 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0xfc, - 0xfc, 0xc4, 0x20, 0x20, 0x14, 0x0c, 0x04, 0x04, 0x00, 0x04, 0xfc, 0xfc, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfc, 0x1c, 0x38, 0xf0, 0xc0, - 0x00, 0x00, 0x80, 0x60, 0x18, 0xfc, 0xfc, 0x04, 0x04, 0xfc, 0x1c, 0x38, - 0x60, 0xc0, 0x80, 0x00, 0x04, 0xfc, 0x04, 0x04, 0xe0, 0xf0, 0x08, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x18, 0xf0, 0x80, 0x04, 0xfc, 0xfc, 0x84, 0x84, - 0x84, 0xc4, 0x78, 0x30, 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x18, 0xf0, 0x80, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0x84, 0x7c, 0x38, - 0x00, 0x00, 0x38, 0x7c, 0xc4, 0x84, 0x84, 0x84, 0x1c, 0x18, 0x0c, 0x04, - 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x0c, 0x04, 0xfc, 0xfc, 0x04, - 0x00, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0x0c, 0x3c, 0xe4, 0x80, - 0x00, 0x00, 0x80, 0x64, 0x0c, 0x04, 0x04, 0x0c, 0xfc, 0xc4, 0x00, 0x00, - 0xe0, 0x1c, 0x7c, 0xc0, 0x00, 0x00, 0xe4, 0x1c, 0x04, 0x04, 0x04, 0x1c, - 0x7c, 0xe0, 0xc0, 0x34, 0x0c, 0x04, 0x04, 0x04, 0x0c, 0x1c, 0x74, 0xe0, - 0x80, 0x40, 0x14, 0x0c, 0x04, 0x0c, 0x04, 0x04, 0x84, 0xc4, 0x74, 0x3c, - 0x0c, 0x04, 0xfc, 0xfc, 0x04, 0x00, 0x0c, 0x78, 0xc0, 0x00, 0x00, 0x04, - 0x04, 0xfc, 0xfc, 0x20, 0x10, 0x18, 0x0c, 0x04, 0x0c, 0x10, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x40, - 0x60, 0x20, 0x20, 0x20, 0xc0, 0x80, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x20, - 0x20, 0x20, 0xc0, 0x80, 0x80, 0xc0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x80, - 0xc0, 0x20, 0x20, 0x24, 0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x20, - 0x20, 0x20, 0xc0, 0x00, 0x20, 0xf8, 0xfc, 0x24, 0x24, 0x04, 0x00, 0x80, - 0xc0, 0x20, 0x20, 0x20, 0xe0, 0xe0, 0x20, 0x04, 0xfc, 0xfc, 0x20, 0x20, - 0x20, 0xe0, 0x80, 0x00, 0x20, 0xec, 0xe0, 0x00, 0x00, 0x00, 0x20, 0xec, - 0xec, 0x04, 0xfc, 0xfc, 0x00, 0xa0, 0x60, 0x20, 0x20, 0x04, 0xfc, 0xfc, - 0x00, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0xc0, 0x20, 0x20, 0x20, - 0xe0, 0x80, 0x00, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x80, 0x00, - 0x80, 0xc0, 0x20, 0x20, 0x20, 0x60, 0xc0, 0x00, 0x20, 0xe0, 0xe0, 0x20, - 0x20, 0x20, 0x60, 0xc0, 0x00, 0x80, 0xc0, 0x20, 0x20, 0x20, 0xe0, 0xe0, - 0x20, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x60, 0x60, 0xc0, 0xe0, 0x20, 0x20, - 0x60, 0x60, 0x20, 0xf8, 0xf8, 0x20, 0x20, 0x00, 0x20, 0xe0, 0xe0, 0x00, - 0x00, 0x20, 0xe0, 0xe0, 0x00, 0x20, 0x60, 0xe0, 0x20, 0x00, 0x00, 0xa0, - 0x60, 0x20, 0x20, 0x60, 0xe0, 0x20, 0x00, 0x80, 0xe0, 0x80, 0x00, 0x20, - 0xe0, 0x20, 0x20, 0x60, 0xe0, 0x00, 0x80, 0xe0, 0x20, 0x20, 0x20, 0x20, - 0xe0, 0xa0, 0x00, 0x00, 0xa0, 0x60, 0x20, 0x60, 0x60, 0x20, 0x20, 0xe0, - 0xe0, 0x20, 0x00, 0x00, 0xf8, 0x7c, 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, - 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x40, 0x6c, 0x20, 0x20, 0x2c, 0xc0, 0x80, 0x00, 0x80, 0xc0, 0x2c, - 0x20, 0x20, 0x6c, 0xc0, 0x00, 0x20, 0xe0, 0xec, 0x00, 0x00, 0x2c, 0xe0, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x39, 0x1c, 0xf9, 0xc0, 0x00, 0x00, - 0x00, 0xe0, 0xf0, 0x08, 0x05, 0x04, 0x04, 0x05, 0x04, 0x18, 0xf0, 0x80, - 0x04, 0xfc, 0xfc, 0x04, 0x01, 0x00, 0x00, 0x05, 0xfc, 0xfc, 0x04, 0x00, - 0x00, 0xf8, 0xfc, 0x04, 0x64, 0xf4, 0x8c, 0x00, 0x00 }; - -const unsigned char smooth_lt_bits[] = { - 0x00, 0x00, 0x00, 0xfc, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0xf8, 0x6c, 0x00, 0xf0, 0x7c, 0x04, 0x00, 0xc0, 0xa0, 0x10, 0xfc, 0x10, - 0x60, 0x10, 0x30, 0x4c, 0x84, 0x4c, 0x30, 0x00, 0x40, 0x70, 0x80, 0x8c, - 0x80, 0x00, 0x00, 0x00, 0xd8, 0x38, 0x4c, 0x84, 0x04, 0x00, 0x0c, 0x00, - 0x40, 0x00, 0x00, 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x3c, 0xf8, - 0x40, 0xd8, 0x50, 0x10, 0xfc, 0x10, 0x50, 0xd8, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb4, 0x14, 0xe0, 0x18, 0x08, 0x04, 0x04, - 0x18, 0xf0, 0x20, 0x10, 0x04, 0xfc, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, - 0x04, 0xc4, 0x7c, 0x78, 0x04, 0x08, 0x00, 0x44, 0xe4, 0xe8, 0x38, 0x00, - 0x00, 0x80, 0xe0, 0x00, 0x1c, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x40, - 0x80, 0xc0, 0x80, 0xd0, 0x90, 0x80, 0x04, 0x44, 0x04, 0x88, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x80, 0xac, 0x1c, 0x04, 0xa8, 0xfc, 0xec, 0x44, 0x44, - 0x28, 0x98, 0x00, 0xf8, 0x8c, 0x8c, 0x04, 0x04, 0x00, 0xf0, 0x20, 0xc0, - 0xc0, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0x00, 0xc0, 0x60, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x60, 0x60, 0xc0, 0x00, 0xc0, 0x80, 0x00, 0x04, 0x08, 0x04, 0x84, 0x0c, - 0x7c, 0x28, 0x00, 0xe0, 0x70, 0x10, 0xd8, 0x00, 0x00, 0x48, 0x80, 0x88, - 0x30, 0x30, 0xe0, 0x80, 0x00, 0x00, 0x80, 0x40, 0x2c, 0x2c, 0x70, 0xa0, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x84, 0x00, 0x00, 0x84, 0x8c, 0xfc, 0x08, - 0xd0, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x18, 0x00, 0xfc, - 0x04, 0x00, 0x04, 0x04, 0x08, 0x1c, 0x38, 0xd0, 0x00, 0x00, 0xfc, 0x84, - 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x1c, 0xd0, 0x38, 0x0c, 0x00, 0x04, 0x00, 0x04, 0x08, 0x1c, 0x18, - 0x00, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xfc, 0x00, 0x00, - 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x04, - 0xfc, 0x80, 0xc0, 0x10, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0x7c, 0x60, 0x80, - 0x80, 0x00, 0x00, 0x10, 0x04, 0xfc, 0x04, 0x00, 0x00, 0xfc, 0x0c, 0x30, - 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xd0, 0x38, 0x1c, 0x00, - 0x04, 0x00, 0x04, 0x08, 0x28, 0xf0, 0x60, 0x00, 0x04, 0xfc, 0x00, 0x00, - 0x84, 0x0c, 0xfc, 0x08, 0xd0, 0x38, 0x1c, 0x00, 0x04, 0x00, 0x04, 0x08, - 0x28, 0xf0, 0x60, 0x00, 0x04, 0xfc, 0x00, 0x80, 0x84, 0x84, 0xc8, 0x70, - 0x00, 0x00, 0x70, 0xe8, 0xc4, 0xc0, 0x84, 0x84, 0x88, 0x04, 0x1c, 0x00, - 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0xfc, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0xfc, 0x00, 0x00, 0x14, 0x7c, 0xf0, 0x40, - 0x00, 0x00, 0x40, 0xb0, 0x14, 0x00, 0x00, 0x14, 0x7c, 0xa0, 0x00, 0x00, - 0x50, 0x2c, 0xb8, 0xa0, 0x00, 0x00, 0x10, 0x24, 0x00, 0x00, 0x0c, 0x0c, - 0x3c, 0xf0, 0xe0, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x04, 0x3c, 0x38, 0xc0, - 0xc0, 0xe0, 0x3c, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x60, 0x1c, - 0x1c, 0x00, 0xfc, 0x04, 0x00, 0x04, 0x14, 0xb4, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x00, 0x20, 0x30, 0x08, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x08, 0x20, - 0x20, 0x20, 0x20, 0x60, 0xe0, 0x40, 0x00, 0x04, 0x00, 0xfc, 0x40, 0x00, - 0x00, 0x20, 0x60, 0xc0, 0xc0, 0x60, 0x60, 0x20, 0x20, 0x40, 0x20, 0xc0, - 0x60, 0x20, 0x00, 0x00, 0x44, 0xfc, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x20, - 0x20, 0x40, 0xc0, 0x80, 0x00, 0xfc, 0x24, 0x04, 0x04, 0x04, 0x04, 0xc0, - 0x60, 0x20, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0xfc, 0x40, 0x00, 0x00, - 0x60, 0xc0, 0x40, 0x00, 0x00, 0xe4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, - 0xe4, 0x00, 0xfc, 0x00, 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0xfc, 0x00, - 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0xc0, 0x40, 0x00, 0x00, 0x60, - 0xc0, 0x40, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0xc0, 0x40, 0x00, - 0xc0, 0x60, 0x60, 0x20, 0x20, 0x00, 0xc0, 0x80, 0x00, 0xe0, 0x40, 0x40, - 0x00, 0x20, 0x00, 0xc0, 0x80, 0xc0, 0x60, 0x20, 0x00, 0x00, 0x40, 0xe0, - 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x20, 0x60, 0xc0, 0x80, 0x20, 0x20, - 0x20, 0x40, 0x00, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xa0, 0xe0, 0x80, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0xa0, 0xe0, 0x00, 0x00, 0x40, 0x60, 0x40, 0x00, 0x80, - 0x60, 0x20, 0x20, 0x20, 0xe0, 0x80, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x60, 0x20, 0x00, 0x80, 0xa0, - 0x60, 0x60, 0x00, 0x80, 0xfc, 0x84, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x04, - 0x78, 0x88, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x24, 0x2c, 0x20, 0x64, 0xec, 0x40, 0x00, 0xc0, 0x6c, 0x64, - 0x20, 0x2c, 0x04, 0xc0, 0x80, 0x00, 0xec, 0x04, 0x00, 0x0c, 0x04, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x55, 0x2c, 0x75, 0xa1, 0x00, 0x00, - 0x00, 0xd0, 0x38, 0x1c, 0x00, 0x05, 0x00, 0x04, 0x09, 0x28, 0xf0, 0x60, - 0x00, 0x04, 0xfc, 0x01, 0x00, 0x00, 0x01, 0x00, 0x04, 0xfc, 0x00, 0x00, - 0x00, 0xf8, 0x00, 0x04, 0xf4, 0x9c, 0x08, 0x08, 0x00 }; - -const unsigned char smooth_mb_bits[] = { - 0x00, 0x00, 0x00, 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1e, - 0x03, 0x02, 0x1e, 0x03, 0x02, 0x02, 0x00, 0x08, 0x19, 0x11, 0xff, 0x12, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x04, 0x01, 0x00, 0x06, 0x0f, 0x10, - 0x10, 0x1f, 0x0f, 0x07, 0x0c, 0x10, 0x10, 0x10, 0x11, 0x13, 0x0e, 0x1e, - 0x11, 0x10, 0x10, 0x00, 0x00, 0x0f, 0x1f, 0x20, 0x40, 0x40, 0x30, 0x1f, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x20, 0x38, 0x08, 0x01, 0x01, 0x01, 0x01, - 0x18, 0x00, 0x30, 0x1e, 0x03, 0x00, 0x00, 0x07, 0x0f, 0x10, 0x10, 0x10, - 0x18, 0x0f, 0x01, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x18, 0x1c, 0x16, - 0x13, 0x11, 0x10, 0x18, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x02, - 0x03, 0x02, 0x02, 0x12, 0x12, 0x1f, 0x1f, 0x12, 0x0c, 0x10, 0x10, 0x10, - 0x10, 0x0f, 0x07, 0x07, 0x0f, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x02, 0x00, - 0x00, 0x18, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x10, 0x10, 0x10, - 0x18, 0x0f, 0x02, 0x00, 0x18, 0x11, 0x11, 0x11, 0x08, 0x07, 0x00, 0x18, - 0x00, 0x00, 0x38, 0x08, 0x01, 0x01, 0x02, 0x02, 0x06, 0x04, 0x04, 0x0c, - 0x08, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x0c, - 0x04, 0x04, 0x06, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x3f, 0x20, 0x42, 0x8f, 0x98, 0x90, 0x90, 0x9f, 0x1f, - 0x10, 0x08, 0x07, 0x01, 0x10, 0x18, 0x13, 0x02, 0x02, 0x02, 0x02, 0x13, - 0x1e, 0x18, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x0e, - 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x18, 0x0c, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x03, 0x10, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x10, 0x11, 0x18, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00, - 0x01, 0x00, 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x11, 0x1f, 0x0f, - 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, - 0x1f, 0x1f, 0x10, 0xc0, 0x80, 0x80, 0x80, 0x7f, 0x3f, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x01, 0x02, 0x0c, 0x1c, 0x18, 0x10, 0x00, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x01, - 0x07, 0x06, 0x01, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, - 0x00, 0x00, 0x03, 0x06, 0x0c, 0x1f, 0x00, 0x00, 0x03, 0x07, 0x08, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x08, 0x10, 0x10, 0x10, 0x30, 0x50, - 0x4c, 0x07, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x01, 0x07, 0x1c, - 0x10, 0x00, 0x0c, 0x1c, 0x10, 0x10, 0x10, 0x11, 0x0f, 0x0f, 0x00, 0x00, - 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x18, - 0x10, 0x10, 0x10, 0x10, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, - 0x1c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x0e, - 0x00, 0x00, 0x00, 0x07, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1c, - 0x12, 0x01, 0x03, 0x17, 0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x16, 0x13, 0x10, 0x10, 0x10, - 0x10, 0x18, 0x7f, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x30, 0x40, - 0x40, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, - 0x10, 0x10, 0x0f, 0x07, 0x07, 0x0f, 0x10, 0x10, 0x10, 0x08, 0x04, 0x07, - 0x0f, 0x10, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x07, 0x0f, 0x11, 0x11, - 0x11, 0x11, 0x0d, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x47, - 0xcf, 0x90, 0x90, 0x90, 0xff, 0x7f, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, - 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0xc0, 0x80, 0x80, 0xff, - 0x7f, 0x10, 0x1f, 0x1f, 0x11, 0x12, 0x1c, 0x18, 0x10, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, - 0x1f, 0x1f, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, - 0x07, 0x0f, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x03, 0x80, 0xff, 0xff, 0x90, - 0x10, 0x10, 0x18, 0x0f, 0x03, 0x07, 0x0f, 0x10, 0x10, 0x90, 0xff, 0xff, - 0x80, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x18, 0x19, 0x13, 0x13, - 0x1e, 0x0e, 0x00, 0x0f, 0x1f, 0x10, 0x18, 0x08, 0x00, 0x0f, 0x1f, 0x10, - 0x10, 0x00, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x01, 0x07, 0x1c, 0x0c, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x1c, 0x03, 0x00, 0x0f, 0x1c, 0x07, - 0x00, 0x00, 0x10, 0x18, 0x14, 0x03, 0x17, 0x1c, 0x18, 0x10, 0x00, 0xc0, - 0x80, 0xc7, 0x3c, 0x0c, 0x01, 0x00, 0x00, 0x10, 0x1c, 0x1e, 0x13, 0x11, - 0x10, 0x18, 0x01, 0x01, 0x7e, 0xfc, 0x80, 0x80, 0xff, 0xff, 0x80, 0x80, - 0xfe, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x0e, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x10, 0x07, 0x0f, 0x10, - 0x10, 0x10, 0x18, 0x0f, 0x03, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x00, 0x1f, - 0x1f, 0x10, 0x10, 0x18, 0x17, 0x03, 0x02, 0x02, 0x02, 0x17, 0x1e, 0x18, - 0x10, 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, - 0x00, 0x03, 0x0f, 0x18, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x07, 0x00, 0x00, - 0x10, 0x1f, 0x1f, 0x18, 0x10, 0x10, 0x11, 0x1b, 0x0e }; - -const unsigned char smooth_lb_bits[] = { - 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, - 0x07, 0x00, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x19, 0x11, 0x13, 0xff, 0x13, - 0x06, 0x0e, 0x00, 0x00, 0x10, 0x10, 0x02, 0x02, 0x00, 0x09, 0x1f, 0x19, - 0x10, 0x09, 0x06, 0x0f, 0x1b, 0x08, 0x10, 0x01, 0x13, 0x0e, 0x0c, 0x0c, - 0x1a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x40, 0x00, 0x00, 0x68, 0x3f, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x00, 0x50, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x28, 0x2d, 0x05, 0x00, 0x00, 0x03, 0x0c, 0x08, 0x10, 0x10, - 0x0c, 0x07, 0x02, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, - 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x08, 0x10, 0x00, 0x10, 0x01, 0x0f, 0x05, - 0x02, 0x03, 0x00, 0x10, 0x10, 0x1f, 0x12, 0x10, 0x1c, 0x18, 0x10, 0x10, - 0x18, 0x18, 0x0f, 0x03, 0x18, 0x08, 0x00, 0x10, 0x00, 0x0f, 0x05, 0x00, - 0x00, 0x10, 0x15, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x18, 0x10, 0x10, - 0x00, 0x1f, 0x05, 0x00, 0x01, 0x11, 0x11, 0x10, 0x1d, 0x0f, 0x03, 0x18, - 0x18, 0x60, 0x38, 0x10, 0x01, 0x03, 0x03, 0x06, 0x00, 0x06, 0x0c, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x06, 0x00, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x1f, 0x18, 0x00, - 0x00, 0x00, 0x17, 0x18, 0x60, 0x45, 0x5f, 0x00, 0x90, 0x00, 0x08, 0xdf, - 0x40, 0x0c, 0x0f, 0x02, 0x00, 0x1c, 0x06, 0x03, 0x02, 0x02, 0x03, 0x07, - 0x1f, 0x14, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x10, 0x11, 0x09, 0x07, - 0x05, 0x0e, 0x18, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0c, 0x04, 0x00, 0x1f, - 0x10, 0x00, 0x10, 0x10, 0x08, 0x1c, 0x0e, 0x05, 0x00, 0x10, 0x1f, 0x10, - 0x10, 0x10, 0x10, 0x11, 0x1c, 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x05, 0x0e, 0x1c, 0x08, 0x10, 0x00, 0x11, 0x10, 0x01, 0x0f, - 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x00, 0x00, - 0x10, 0x1f, 0x00, 0x40, 0x80, 0x80, 0xc0, 0xff, 0x40, 0x00, 0x00, 0x10, - 0x1f, 0x01, 0x03, 0x07, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x06, 0x02, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x1f, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x07, 0x1c, 0x1f, 0x00, 0x00, 0x05, 0x0e, 0x1c, 0x00, - 0x10, 0x00, 0x10, 0x08, 0x0a, 0x07, 0x03, 0x00, 0x10, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x1c, 0x00, 0x10, 0x30, 0x30, 0x08, - 0x0a, 0x07, 0x03, 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1a, - 0x10, 0x10, 0x1c, 0x08, 0x10, 0x10, 0x01, 0x11, 0x1b, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x04, - 0x10, 0x00, 0x10, 0x18, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x17, - 0x1a, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x1d, 0x15, - 0x01, 0x00, 0x00, 0x0b, 0x1d, 0x15, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, - 0x07, 0x00, 0x01, 0x0e, 0x1e, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x1f, 0x11, 0x11, 0x10, 0x10, - 0x10, 0x1c, 0x7f, 0x40, 0x00, 0x40, 0x00, 0x00, 0x05, 0x2d, 0x28, 0x00, - 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x1a, 0x11, 0x01, 0x08, 0x1f, 0x10, 0x00, 0x10, 0x00, 0x1f, 0x08, 0x00, - 0x00, 0x10, 0x18, 0x0f, 0x0f, 0x18, 0x18, 0x10, 0x10, 0x14, 0x0c, 0x0f, - 0x18, 0x10, 0x00, 0x00, 0x08, 0x1f, 0x00, 0x10, 0x0b, 0x1d, 0x18, 0x10, - 0x10, 0x08, 0x09, 0x05, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8f, - 0x98, 0x90, 0x80, 0x80, 0x48, 0x3f, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, - 0x00, 0x1f, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x40, 0x80, 0x80, 0x40, - 0x7f, 0x00, 0x1f, 0x12, 0x03, 0x07, 0x1c, 0x10, 0x10, 0x00, 0x1f, 0x10, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x10, 0x00, - 0x1f, 0x10, 0x10, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x00, - 0x0f, 0x1c, 0x18, 0x10, 0x10, 0x00, 0x0f, 0x04, 0x00, 0xff, 0x88, 0x08, - 0x00, 0x10, 0x00, 0x0f, 0x04, 0x0f, 0x18, 0x10, 0x00, 0x00, 0x88, 0xff, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x09, 0x11, 0x11, 0x12, - 0x07, 0x0c, 0x00, 0x1f, 0x10, 0x10, 0x18, 0x00, 0x00, 0x1f, 0x18, 0x10, - 0x00, 0x18, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1a, 0x1a, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x18, 0x04, 0x01, 0x17, 0x18, 0x0a, - 0x01, 0x00, 0x00, 0x10, 0x0b, 0x03, 0x07, 0x1c, 0x10, 0x10, 0x00, 0xc0, - 0x81, 0x0b, 0x5e, 0x06, 0x03, 0x00, 0x00, 0x18, 0x18, 0x16, 0x17, 0x13, - 0x10, 0x18, 0x01, 0x03, 0x7f, 0x42, 0x80, 0x00, 0xff, 0x00, 0x00, 0xc0, - 0x7c, 0x42, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x0c, 0x1a, 0x11, 0x01, 0x08, 0x1f, 0x10, 0x00, 0x0f, 0x1c, 0x18, - 0x10, 0x10, 0x00, 0x0f, 0x04, 0x00, 0x1f, 0x18, 0x10, 0x00, 0x18, 0x1f, - 0x10, 0x00, 0x00, 0x14, 0x1e, 0x12, 0x02, 0x02, 0x03, 0x03, 0x1f, 0x14, - 0x00, 0x05, 0x0e, 0x1c, 0x00, 0x10, 0x00, 0x10, 0x08, 0x0a, 0x07, 0x03, - 0x00, 0x04, 0x0f, 0x04, 0x10, 0x00, 0x10, 0x18, 0x1c, 0x0f, 0x00, 0x10, - 0x00, 0x1f, 0x00, 0x08, 0x10, 0x11, 0x11, 0x07, 0x0f }; diff --git a/boop/trunk/display/fonts/smooth.info b/boop/trunk/display/fonts/smooth.info deleted file mode 100644 index 75389f2..0000000 --- a/boop/trunk/display/fonts/smooth.info +++ /dev/null @@ -1,17 +0,0 @@ -const unsigned char smooth_info[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 3, 2, 4,10, 7,13,12, 2, 4, 4, 7, 9, 3, 4, 2, 5, - 8, 5, 8, 8, 8, 7, 8, 8, 8, 8, 2, 3, 9, 9, 9, 7, - -14,11, 9,10,10, 9, 9,10,11, 4, 7,10,10,14,12,11, - 9,11,11, 8,10,11,11,15,10,10, 9, 4, 5, 4, 9, 7, - - 4, 8, 9, 7, 9, 8, 7, 8, 9, 4, 5, 8, 4,14, 9, 8, - 9, 8, 7, 6, 6, 9, 9,12, 8, 9, 7, 6, 2, 6, 9, 0, - - 8, 8, 9,11, 11, 11, 10 -}; - -const unsigned char smooth_dlines = 2; diff --git a/boop/trunk/display/fonty.c b/boop/trunk/display/fonty.c deleted file mode 100644 index 1700988..0000000 --- a/boop/trunk/display/fonty.c +++ /dev/null @@ -1,636 +0,0 @@ -/* - fonty.c - drawing text & font handling - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "global.h" - -#include "fonts/charset.info" -#include "fonts/charset.bits" - -#include "fonts/smooth.info" -#include "fonts/smooth.bits" - -extern unsigned char drawbuf[2][128]; -extern unsigned int is_drawing; - -static unsigned char tx, ty, coff, dbl; -unsigned char *font_bits, *font_info, font_dlines; -unsigned char *font_bitsUM, *font_bitsUL, *font_bitsMM, *font_bitsML, *font_bitsLM, *font_bitsLL; -unsigned char activefont; - -void set_font(unsigned char f) -{ - activefont = f; - switch(f) - { - case SMOOTHFONT: - coff = 0; - dbl = 16; - font_info = (unsigned char*) smooth_info; - font_bitsUM = (unsigned char*) smooth_mt_bits; - font_bitsUL = (unsigned char*) smooth_lt_bits; - font_bitsLM = (unsigned char*) smooth_mb_bits; - font_bitsLL = (unsigned char*) smooth_lb_bits; - font_dlines = smooth_dlines; - break; - case BOLDDOUBLEFONT: - coff = 96; - dbl = 1; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - case BOLDFONT: - coff = 96; - dbl = 0; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - case DOUBLEFONT: - coff = 0; - dbl = 1; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - default: - coff = 0; - dbl = 0; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - } -} - -void _draw_char(unsigned int ch, unsigned char c, unsigned char m) -{ - unsigned char p,q,r,s,t; - unsigned int cpos, cnt; - is_drawing++; - - cpos = 0; - - for(cnt=0; cnt>1] & 0x0F); - } - else - { - cpos += (font_info[cnt>>1] >> 4); - } - } - - p = font_info[ch>>1]; - if(ch & 0x01) - { - p &= 0x0F; - } - else - { - p >>= 4; - } - - if(dbl == 1) - { - if(ty & 0x07) - { - t = ty & 0x07; - p <<= 1; - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q << t; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q << t; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q >> (8-t); - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q >> (8-t); - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q << t; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q << t; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q >> (8-t); - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q >> (8-t); - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+16,p,m); - - } // if (ty & 0x07) - else - { - p <<= 1; - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty,p,m); - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - } // else if (ty & 0x07) - tx += p+2; - } // if (dbl == 1) - else - { - if(ty & 0x07) - { - s = ty & 0x07; - - for(cnt=0;cnt> (8-s); - else - drawbuf[0][p-cnt-1] = 0x00; - - if(c & 0x01) - drawbuf[1][p-cnt-1] = font_bits[cpos+cnt] >> (8-s); - else - drawbuf[1][p-cnt-1] = 0x00; - } - do_rcu(tx,ty+8,p,m); - } // if (ty & 0x07) - else - { - for(cnt=0;cnt> (8-s); - drawbuf[1][p-cnt-1] = font_bitsUL[cpos+cnt] >> (8-s); - } - do_rcu (tx,ty+8,p,m); - for (cnt=0;cnt> (8-s); - drawbuf[1][p-cnt-1] = font_bitsLL[cpos+cnt] >> (8-s); - } - do_rcu (tx,ty+16,p,m); - } // if (ty & 0x07) - else - { - for(cnt=0;cnt>1]; - if((st[cp]+coff) & 0x01) - { - p &= 0x0F; - } - else - { - p >>= 4; - } - p +=1; - if(dbl == 1) - p <<= 1; - } - else - { - p = font_info[(unsigned char)(st[cp]+coff)]; - p+=1; - } - } - width += p; - cp++; - } - width=max(width,prevwidth); - if (width) - width--; - return width; -} - -unsigned short get_stringheight (const char *st) -{ - unsigned char cp; - unsigned short height; - - if(!dbl) - height = 8; - else - height = 16; - - cp = 0; - - while(st[cp] != 0) - { - if(st[cp] == '\n') - { - if(!dbl) - height += 9; - else - height += 18; - } - cp++; - } - - return height; -} - -extern char hval[16]; - -void draw_hexC(unsigned char x, unsigned char y, const unsigned char v, unsigned char c, unsigned char m) -{ - is_drawing++; - tx = x; - ty = y; - _draw_char(hval[v>>4]+coff, c, m); - _draw_char(hval[v & 0x0F]+coff, c, m); - is_drawing--; -} - -void draw_hexS(unsigned char x, unsigned char y, const unsigned short v, unsigned char c, unsigned char m) -{ - is_drawing++; - tx = x; - ty = y; - draw_hexC(x, y, v >> 8, c, m); - draw_hexC(tx, ty, v & 0xFF, c, m); - is_drawing--; -} - -void draw_hexW(unsigned char x, unsigned char y, const unsigned long v, unsigned char c, unsigned char m) -{ - is_drawing++; - draw_hexS(x, y, v >> 16, c, m); - draw_hexS(tx, ty, v & 0xFFFF, c, m); - is_drawing--; -} - -static unsigned long u_longval; -static unsigned char pos, inc; -static unsigned char num[12]; - -void get_digit(unsigned long tval) -{ - unsigned char count; - count = 0; - while(u_longval >= tval) - { - count++; - u_longval -= tval; - } - - num[pos] = '0' + count; - if(count) - inc = 1; - pos += inc; -} - -void draw_numU(unsigned char x, unsigned char y, const unsigned long v, unsigned char z, unsigned char c, unsigned char m) -{ - is_drawing++; - pos = 0; - u_longval = v; - - if(z) - inc = 1; - else - inc = 0; - - get_digit(1000000000); - get_digit(100000000); - get_digit(10000000); - get_digit(1000000); - get_digit(100000); - get_digit(10000); - get_digit(1000); - get_digit(100); - get_digit(10); - inc = 1; - get_digit(1); - num[pos] = 0x00; - draw_string(x, y, (char*)num, c, m); - is_drawing--; -} diff --git a/boop/trunk/display/fonty.h b/boop/trunk/display/fonty.h deleted file mode 100644 index 7e35b30..0000000 --- a/boop/trunk/display/fonty.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - fonty.h - drawing text & font handling - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef FONTY_H -#define FONTY_H - -#define SMALLFONT 0 -#define DOUBLEFONT 1 -#define BOLDFONT 2 -#define BOLDDOUBLEFONT 3 -#define SMOOTHFONT 4 - -#define SMALLFONT_HEIGHT 8 -#define DOUBLEFONT_HEIGHT 16 -#define BOLDFONT_HEIGHT 8 -#define BOLDDOUBLEFONT_HEIGHT 16 -#define SMOOTHFONT_HEIGHT 16 - -#define tabstep 24 - -unsigned char activefont; - -void set_font(unsigned char f); -void draw_char(unsigned char x, unsigned char y, unsigned char ch, unsigned char c, unsigned char m); -void draw_string(unsigned char x, unsigned char y, char *st, unsigned char c, unsigned char m); -void draw_hexC(unsigned char x, unsigned char y, const unsigned char v, unsigned char c, unsigned char m); -void draw_hexS(unsigned char x, unsigned char y, const unsigned short v, unsigned char c, unsigned char m); -void draw_hexW(unsigned char x, unsigned char y, const unsigned long v, unsigned char c, unsigned char m); - -void draw_numU(unsigned char x, unsigned char y, const unsigned long v, unsigned char z, unsigned char c, unsigned char m); -unsigned short get_stringwidth (const char *st); -unsigned short get_stringheight (const char *st); - -#endif diff --git a/boop/trunk/display/icon.h b/boop/trunk/display/icon.h deleted file mode 100644 index 02e3da6..0000000 --- a/boop/trunk/display/icon.h +++ /dev/null @@ -1,113 +0,0 @@ -/********************************************************************** -@file icon.c - -@brief Definition of icon structure and appropriate functions - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - 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 3 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, see . ------------------------------------------------------------------------ -@History - -1.00 20012010 RSt Creation - -@end -***********************************************************************/ -#ifndef __ICON_H__ -#define __ICON_H__ - - -/////////////////////////////////////////////////////////////////// -// ICON can be defined in the appropriate C file before -// including that header or the related icon files to define the -// actual type of the icon structure: -// -// >> #define ICON iconElement_t -// -/////////////////////////////////////////////////////////////////// -#ifndef ICON -#define ICON icon_t -#endif - -/////////////////////////////////////////////////////////////////// -// ICON_INFO can be defined in the appropriate C file before -// including that header to save one byte in the icon structure: -// -// >> #define ICON_INFO(i) -// -/////////////////////////////////////////////////////////////////// -#ifndef ICON_INFO -#define ICON_INFO(i) /* info = */ i, -#define ICON_INFO_ELEMENT unsigned char info; // additional one byte (iconType_t might be larger) -#endif - -#ifndef ICON_INFO_ELEMENT -#define ICON_INFO_ELEMENT -//#define ICON_IS_GRAY(i) 0 -#define ICON_IS_GRAY(i) (sizeof(i.data) > (i.height/8 + (i.height%8 ? 1 : 0)) * i.width + 2); -#else -#define ICON_IS_GRAY(i) ((i)->info >= ICON_GRAY) -#endif - -typedef enum iconInfo_e -{ - ICON_BLACK_WHITE, /// 1 bpp - ICON_BLACK_WHITE_TRANSPARENT, /// 2 bpp - ICON_GRAY, /// 2 bpp - ICON_GRAY_TRANSPARENT, /// 3 bpp - - ICON_MAX -} iconInfo_t; - -typedef struct icon_s -{ - unsigned char width; - unsigned char height; - ICON_INFO_ELEMENT - unsigned char data []; -} icon_t, *icon_p; - -typedef struct iconElement_s -{ - unsigned char width; - unsigned char height; - unsigned char data []; -} iconElement_t, *iconElement_p; - -#ifdef __cplusplus -extern "C" { -#endif -//----------------------------------------------------------------------------- - -extern void drawIcon (unsigned char x, unsigned char y, - const icon_t const *pIcon, - unsigned char c, unsigned char m); - -extern void drawIconExt (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m); - -//----------------------------------------------------------------------------- -#ifdef __cplusplus -} -#endif - -#endif // #ifndef __ICON_H__ diff --git a/boop/trunk/display/iconHourglas.h b/boop/trunk/display/iconHourglas.h deleted file mode 100644 index 6e99e15..0000000 --- a/boop/trunk/display/iconHourglas.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, 0x11, - 0x3f, 0x1e, - 0x7f, 0x3a, - 0xff, 0x6a, - 0xff, 0xca, - 0xff, 0xca, - 0x3f, 0x0a, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0xff, 0xca, - 0xff, 0xca, - 0xff, 0x6a, - 0x7f, 0x3a, - 0x3f, 0x1e, - 0x0e, 0x11, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x0f, - 0xfe, 0xfd, - 0x70, 0xb8, - 0xe0, 0x70, - 0xc0, 0xa0, - 0x80, 0x50, - 0x30, 0x80, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x08, - 0x70, 0x88, - 0xb0, 0xc8, - 0xd8, 0x64, - 0x78, 0xe4, - 0x36, 0xf8, - 0xfe, 0xfd, - 0xff, 0x0f, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x80, 0x80, - 0xc1, 0xc0, - 0x61, 0xb3, - 0x3f, 0x12, - 0x1c, 0x0f, - 0x07, 0x00, - 0x1d, 0x0e, - 0x3f, 0x12, - 0x63, 0xb5, - 0xc1, 0xe2, - 0x80, 0xc1, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0x0f, - 0x07, 0x0b, - 0x81, 0x03, - 0xc0, 0x01, - 0xc0, 0x20, - 0xe0, 0x10, - 0xf0, 0x00, - 0xf8, 0x00, - 0xf0, 0x00, - 0xe0, 0x10, - 0xc0, 0x20, - 0xc0, 0x01, - 0x81, 0x03, - 0x03, 0x87, - 0x0e, 0x17, - 0xff, 0x1f, - 0xff, 0xf8, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x70, 0x88, - 0xfc, 0x78, - 0xfe, 0x7c, - 0xff, 0x76, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x74, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x76, - 0xfe, 0x7c, - 0xfc, 0x78, - 0x70, 0x88 - } -}; - - diff --git a/boop/trunk/display/iconHourglas2.h b/boop/trunk/display/iconHourglas2.h deleted file mode 100644 index 2ed6f1a..0000000 --- a/boop/trunk/display/iconHourglas2.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: L:\Betty\Sourcecode\SVN\Betty_sourceforge\boop\trunk\display\Hourglas_2bpp.bmp -// -// ICON_BLACK_WHITE - 1 bpp (Bit per Pixel) -// sizeof (iconHourglas2.data) == 140 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas2 = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_BLACK_WHITE) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, - 0x3f, - 0x7f, - 0xff, - 0xff, - 0xff, - 0x3f, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0xff, - 0xff, - 0xff, - 0x7f, - 0x3f, - 0x0e, - //--- Page 1 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xfe, - 0x70, - 0xe0, - 0xc0, - 0x80, - 0x30, - 0xf0, - 0xf0, - 0xf0, - 0xf0, - 0x70, - 0xb0, - 0xd8, - 0x78, - 0x36, - 0xfe, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 2 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x00, - 0x80, - 0xc1, - 0x61, - 0x3f, - 0x1c, - 0x07, - 0x1d, - 0x3f, - 0x63, - 0xc1, - 0x80, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 3 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x07, - 0x81, - 0xc0, - 0xc0, - 0xe0, - 0xf0, - 0xf8, - 0xf0, - 0xe0, - 0xc0, - 0xc0, - 0x81, - 0x03, - 0x0e, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 4 --- - 0x70, - 0xfc, - 0xfe, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xff, - 0xff, - 0xf7, - 0xf7, - 0xf7, - 0xf7, - 0xf7, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xfc, - 0x70 - } -}; - - diff --git a/boop/trunk/display/iconHourglas2_t.h b/boop/trunk/display/iconHourglas2_t.h deleted file mode 100644 index 75a97ea..0000000 --- a/boop/trunk/display/iconHourglas2_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: L:\Betty\Sourcecode\SVN\Betty_sourceforge\boop\trunk\display\Hourglas_t_3bpp_t.bmp -// -// ICON_BLACK_WHITE_TRANSPARENT - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas2_t.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas2_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_BLACK_WHITE_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x1f, 0x1f, - 0x3f, 0x3f, - 0x7f, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x7f, - 0x3f, 0x3f, - 0x1f, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xf8, 0xff, - 0xf0, 0xff, - 0xe0, 0xff, - 0xd0, 0xff, - 0xb0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf8, 0xff, - 0xf8, 0xff, - 0xf8, 0xff, - 0xfc, 0xff, - 0xfc, 0xff, - 0xfe, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x80, 0x80, - 0xc1, 0xc1, - 0xf3, 0xf3, - 0x3f, 0xff, - 0x1f, 0xff, - 0x07, 0xff, - 0x1f, 0xff, - 0x3f, 0xff, - 0xf7, 0xf7, - 0xe3, 0xe3, - 0xc1, 0xc1, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x0f, 0xff, - 0x83, 0xff, - 0xc1, 0xff, - 0xe0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf8, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xe0, 0xff, - 0xc1, 0xff, - 0x83, 0xff, - 0x87, 0xff, - 0x1f, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0xf8, 0xf8, - 0xfc, 0xfc, - 0xfe, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xfe, 0xfe, - 0xfc, 0xfc, - 0xf8, 0xf8 - } -}; - - diff --git a/boop/trunk/display/iconHourglas_t.h b/boop/trunk/display/iconHourglas_t.h deleted file mode 100644 index d46a555..0000000 --- a/boop/trunk/display/iconHourglas_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconHourglas_t.data) == 420 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x0e, 0x11, 0x1f, - 0x3f, 0x1e, 0x3f, - 0x7f, 0x3a, 0x7f, - 0xff, 0x6a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0x3f, 0x0a, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0x6a, 0xff, - 0x7f, 0x3a, 0x7f, - 0x3f, 0x1e, 0x3f, - 0x0e, 0x11, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x0f, 0xff, - 0xfe, 0xfd, 0xff, - 0x70, 0xb8, 0xff, - 0xe0, 0x70, 0xff, - 0xc0, 0xa0, 0xff, - 0x80, 0x50, 0xff, - 0x30, 0x80, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x08, 0xff, - 0x70, 0x88, 0xff, - 0xb0, 0xc8, 0xff, - 0xd8, 0x64, 0xff, - 0x78, 0xe4, 0xff, - 0x36, 0xf8, 0xff, - 0xfe, 0xfd, 0xff, - 0xff, 0x0f, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x80, 0x80, 0x80, - 0xc1, 0xc0, 0xc1, - 0x61, 0xb3, 0xf3, - 0x3f, 0x12, 0xff, - 0x1c, 0x0f, 0xff, - 0x07, 0x00, 0xff, - 0x1d, 0x0e, 0xff, - 0x3f, 0x12, 0xff, - 0x63, 0xb5, 0xf7, - 0xc1, 0xe2, 0xe3, - 0x80, 0xc1, 0xc1, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xfc, 0xff, - 0xff, 0x0f, 0xff, - 0x07, 0x0b, 0xff, - 0x81, 0x03, 0xff, - 0xc0, 0x01, 0xff, - 0xc0, 0x20, 0xff, - 0xe0, 0x10, 0xff, - 0xf0, 0x00, 0xff, - 0xf8, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xe0, 0x10, 0xff, - 0xc0, 0x20, 0xff, - 0xc0, 0x01, 0xff, - 0x81, 0x03, 0xff, - 0x03, 0x87, 0xff, - 0x0e, 0x17, 0xff, - 0xff, 0x1f, 0xff, - 0xff, 0xf8, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0x70, 0x88, 0xf8, - 0xfc, 0x78, 0xfc, - 0xfe, 0x7c, 0xfe, - 0xff, 0x76, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x76, 0xff, - 0xfe, 0x7c, 0xfe, - 0xfc, 0x78, 0xfc, - 0x70, 0x88, 0xf8 - } -}; - - diff --git a/boop/trunk/display/lcd.c b/boop/trunk/display/lcd.c deleted file mode 100644 index 0b1a02c..0000000 --- a/boop/trunk/display/lcd.c +++ /dev/null @@ -1,1242 +0,0 @@ -/* - lcd.c - lcd control & graphics primitives - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "global.h" -#include "lpc2220.h" -#include "lcd.h" -#include "fonty.h" -#include "boop_logo" -#include "adc.h" -#include "timerfuncs.h" - -unsigned int is_drawing; -volatile unsigned char symbols; -volatile unsigned char oldsymbols; - -void _do_rcu(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -void _do_rcuAlpha (unsigned char x, unsigned char y, unsigned char l, unsigned char m, - unsigned char* alphaBuf); -void _do_rcuS(unsigned char x, unsigned char y, unsigned char m); -void _draw_block(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -void _draw_hline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -void _draw_vline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); - -// Function pointer to section (".text.fastcode") -rcu_fn do_rcu; - -rcuAlpha_fn do_rcuAlpha; - -rcus_fn do_rcuS; -bl_fn draw_block; -ln_fn draw_hline; -ln_fn draw_vline; - - -void pause(unsigned int ptime) -{ - unsigned long xx; - xx = ptime * 1500; - while(xx) - { - xx--; - }; -} - - -void lcd_set(unsigned char s) -{ - is_drawing++; - if(s == 0) - { - LCD_CMD = 0xA0; // set segment remap (00H mapped to seg0) - LCD_CMD = 0xC8; // set com output scan direction (remapped mode) - } - else - { - LCD_CMD = 0xA1; // set segment remap (7FH mapped to seg0) - LCD_CMD = 0xC0; // set com output scan direction (normal mode) - } - is_drawing--; -} - - -// initialise LCD controller SSD1854 -// -// sequence and values disassembled from original firmware -// see http://bettyhacks.com/wiki/index.php/Betty_init -void lcd_init(unsigned char s) -{ - is_drawing = 1; - LCD_CMD = LCD_WAKEUP; // exit power save mode - LCD_CMD = LCD_RESET; // software reset - pause(0x32); - LCD_CMD = LCD_OSC_START; // start internal oscillator - LCD_CMD = LCD_IRRR_8; // set internal regulator resistor ratio (8.1) - LCD_CMD = 0x81; // volume cmd - LCD_CMD = LCD_CONTRAST; // volume cmd value original 0x3F - LCD_CMD = LCD_DCDCx4; // set DC-DC converter factor (4x) - - LCD_CMD = 0x60; // set upper window corner ax cmd - LCD_CMD = 0x1C; // set upper window corner ax value - LCD_CMD = 0x61; // set upper window corner ay cmd - LCD_CMD = 0x0A; // set upper window corner ay value - LCD_CMD = 0x62; // set lower window corner bx cmd - LCD_CMD = 0x75; // set lower window corner bx value - LCD_CMD = 0x63; // set lower window corner by cmd - LCD_CMD = 0x81; // set lower window corner by value - LCD_CMD = 0x90; // set PWM and FRC (4-frames) - - LCD_CMD = 0x88; // set white mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_88; // set white mode frame 2nd and 1st value - LCD_CMD = 0x89; // set white mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_89; // set white mode frame 4th and 3rd value - LCD_CMD = 0x8A; // set light gray mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8A; // set light gray mode frame 2nd and 1st value // originally 33 - LCD_CMD = 0x8B; // set light gray mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8B; // set light gray mode frame 4th and 3rd value // originally 33 - LCD_CMD = 0x8C; // set dark gray mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8C; // set dark gray mode frame 2nd and 1st value // originally 66 - LCD_CMD = 0x8D; // set dark gray mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8D; // set dark gray mode frame 4th and 3rd vakue // originally 66 - LCD_CMD = 0x8E; // set black mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8E; // set black mode frame 2nd and 1st value // originally 99 - LCD_CMD = 0x8F; // set black mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8F; // set black mode frame 4th and 3rd value // originally 99 - - LCD_CMD = LCD_DCDCx5; // set DC-DC converter factor (5x) - - lcd_set(s); - - //~ LCD_CMD = 0x2E; // set power control register (boost on, reg on, buffer off) // original - - //~ pause(0x32); // original - - LCD_CMD = 0x2F; // set power control register (boost on, reg on, buffer on) - LCD_CMD = LCD_ALLON; // all black - LCD_CMD = LCD_NORMAL; // set normal display mode, inverse = 0xA7 - - // Function pointer to section (".text.fastcode") - do_rcu = _do_rcu; - do_rcuAlpha = _do_rcuAlpha; - do_rcuS = _do_rcuS; - draw_block = _draw_block; - draw_hline = _draw_hline; - draw_vline = _draw_vline; - - lcd_fill (LCD_COLOR_W); // blank display - - LCD_CMD = LCD_ON; // turn display on - - set_font(SMALLFONT); - - is_drawing--; -} // lcd_init - - -void lcd_enable(unsigned char e) -{ - is_drawing++; - if(e) - LCD_CMD = LCD_ON; // set display on - else - LCD_CMD = LCD_OFF; // set display off - is_drawing--; -} - - -/// \brief set lcd contrast -/// -/// SSD1854 datasheet p.33 -/// Set Contrast Control Register [81] -/// This command adjusts the contrast of the LCD panel by changing VL7 of the LCD drive voltage -/// provided by the On-Chip power circuits. VL7 is set with 64 steps (6-bit) contrast control register. -/// Default value after software reset [E2]: 20H = 32 -void lcd_set_contrast(unsigned char c) -{ - if (c < 64) - { - is_drawing++; - LCD_CMD = 0x81; // volume cmd - LCD_CMD = c; // volume cmd value - is_drawing--; - } -} - - -// set all pixels -// show symbols TODO: those should not be here! -void lcd_fill(unsigned char f) -{ - unsigned char x,y; - - is_drawing++; - //~ - //~ if (f == 0xFF) - //~ { - //~ LCD_CMD = LCD_ALLOFF; - //~ } - //~ else if (f == 0) - //~ { - //~ LCD_CMD = LCD_ALLON; - //~ } - //~ else - //~ { - for(y=0;y<20;y++) - { - LCD_CMD = 0xB0; // Set Page Address - LCD_CMD = y; - LCD_CMD = 0x10; // Set Higher Column Address - LCD_CMD = 0x00; - for(x=0;x<128;x++) - { - LCD_DATA = f; // 4 pixels - LCD_DATA = f; // 4 pixels - } - } - //~ } - is_drawing--; - - showBat(0xff); - refresh_symbols(0xff); -} - -//----------------------------------------------------------------------------- -/** Draw pixel data from boop_logo. - (use bmp2b to generate from 24 bit BMP) - New tool display/GrayScaler.exe for WinXP/Win7 - generate icon files. The data array has the same - format and can be copied in the file boop_logo. - You can also use the new icons instead of the logo. -*/ -void draw_logo(void) -{ - unsigned short f; - unsigned char x,y; - is_drawing++; - f=0; - for(y=0; y>3; y++) - { - LCD_CMD = 0xB0; - LCD_CMD = y; - LCD_CMD = 0x10; - LCD_CMD = 0x00; - for(x=0;x BORDER_RIGHT))// || (x+l < BORDER_LEFT)) - return; - - if (x+l > BORDER_RIGHT + 1) { - unsigned char i; - unsigned char cut; - - cut = x + l - (BORDER_RIGHT + 1); - for(i=0;i> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - q = LCD_DATA; - q = l; - - while(q--) - { - rcubuf[0][q] = LCD_DATA; - rcubuf[1][q] = LCD_DATA; - } - - q = LCD_DATA; - } - - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - if(alphaBuf) - { - q = l; - while(q--) - { - drawbuf[0][q] &= alphaBuf[q]; - drawbuf[1][q] &= alphaBuf[q]; - } - if(m==DRAW_ALPHA) - { - q = l; - while(q--) - { - rcubuf[0][q] &= ~alphaBuf[q]; - rcubuf[1][q] &= ~alphaBuf[q]; - } - } - } - - q = l; - - switch(m) - { - case DRAW_ALPHA: // draw with alpha buffer - case DRAW_PUT: // draw put - while(q--) - { - LCD_DATA = rcubuf[0][q] | drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] | drawbuf[1][q]; - } - break; - case DRAW_XOR: // draw xor - while(q--) - { - LCD_DATA = rcubuf[0][q] ^ drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] ^ drawbuf[1][q]; - } - break; - case DRAW_ERASE: // draw erase - while(q--) - { - LCD_DATA = rcubuf[0][q] & ~drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] & ~drawbuf[1][q]; - } - break; - case DRAW_NORCU: // draw without rcu - while(q--) - { - LCD_DATA = drawbuf[0][q]; - LCD_DATA = drawbuf[1][q]; - } - break; - } - is_drawing--; -} // _do_rcu -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void __attribute__ ((section (".text.fastcode"))) _do_rcuS ( - unsigned char x, unsigned char y, unsigned char m) -{ - unsigned char q; - - - if((x > BORDER_RIGHT))// | (x < BORDER_LEFT)) - return; - - is_drawing++; - - if(m != DRAW_NORCU) - { - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - q = LCD_DATA; - rcubuf[0][0] = LCD_DATA; - rcubuf[1][0] = LCD_DATA; - - q = LCD_DATA; - } - - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - switch(m) - { - case DRAW_ALPHA: - case DRAW_PUT: // draw put - LCD_DATA = rcubuf[0][0] | drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] | drawbuf[1][0]; - break; - case DRAW_XOR: // draw xor - LCD_DATA = rcubuf[0][0] ^ drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] ^ drawbuf[1][0]; - break; - case DRAW_ERASE: // draw erase - LCD_DATA = rcubuf[0][0] & ~drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] & ~drawbuf[1][0]; - break; - case DRAW_NORCU: // draw erase - LCD_DATA = drawbuf[0][0]; - LCD_DATA = drawbuf[1][0]; - break; - } - is_drawing--; -} // _do_rcuS -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void __attribute__ ((section(".text.fastcode"))) _draw_block(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m) -{ - unsigned char q,s; - unsigned char yy,ss,vv,ww,xx; - unsigned char segm; - is_drawing++; - - if (x + w > LCD_SIZE_X) - w = LCD_SIZE_X - x; - - s = y; - - if(h) - { - yy = h; - ss = y >> 3; - vv = y & 0x07; - - ww = yy & 0x07; - - segm = 0xFF; - - xx = 8; - if(yy < 8) - { - segm >>= (8-ww); - xx -= (8-ww); - if(vv > (8-xx)) - { - xx = yy -(vv-(8-xx)); - } - else - { - xx = yy; - } - } - else - { - xx -= vv; - } - - segm <<= vv; - - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = segm; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = segm; - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - - yy -= xx; - - while(yy > 8) - { - s += 8; - yy -= 8; - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = 0xFF; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = 0xFF; - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - } - - if(yy) - { - s += 8; - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = 0xFF >> (8-yy); - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = 0xFF >> (8-yy); - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - } - } - is_drawing--; -} - -void __attribute__ ((section(".text.fastcode"))) _draw_hline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m) -{ - unsigned char p,q; - is_drawing++; - - q = l; - p = 0x01 << (y & 0x07); - - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = p; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = p; - else - drawbuf[1][q] = 0; - } - do_rcu(x,y,l,m); - is_drawing--; -} - -void __attribute__ ((section(".text.fastcode"))) _draw_vline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m) -{ - unsigned char s; - unsigned char yy,ss,vv,ww,xx; - unsigned char segm; - is_drawing++; - - s = y; - - if(l) - { - - - - yy = l; - ss = y >> 3; - vv = y & 0x07; - - ww = yy & 0x07; - - segm = 0xFF; - - xx = 8; - if(yy < 8) - { - segm >>= (8-ww); - xx -= (8-ww); - if(vv > (8-xx)) - { - xx = yy -(vv-(8-xx)); - } - else - { - xx = yy; - } - } - else - { - xx -= vv; - } - - segm <<= vv; - - if(c & 0x02) - drawbuf[0][0] = segm; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = segm; - else - drawbuf[1][0] = 0; - - do_rcuS(x,s,m); - - yy -= xx; - - while(yy > 8) - { - s += 8; - yy -= 8; - if(c & 0x02) - drawbuf[0][0] = 0xFF; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = 0xFF; - else - drawbuf[1][0] = 0; - do_rcuS(x,s,m); - } - - if(yy) - { - s += 8; - if(c & 0x02) - drawbuf[0][0] = 0xFF >> (8-yy); - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = 0xFF >> (8-yy); - else - drawbuf[1][0] = 0; - do_rcuS(x,s,m); - } - } - is_drawing--; -} - -void draw_rect(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char lw, unsigned char c, unsigned char m) -{ - is_drawing++; - if(lw) - { - if(lw == 1) - { - draw_hline(x, y, w, c, m); - draw_hline(x, y+h-1, w, c, m); - - draw_vline(x, y+1, h-2, c, m); - draw_vline(x+w-1, y+1, h-2, c, m); - } - else - { - draw_block(x, y, w, lw, c, m); - draw_block(x, y+h-lw, w, lw, c, m); - draw_block(x, y+lw, lw, h-(2*lw), c, m); - draw_block(x+w-lw, y+lw, lw, h-(2*lw), c, m); - } - } - is_drawing--; -} - -void draw_pixel(unsigned char x, unsigned char y, unsigned char c, unsigned char m) -{ - unsigned char p; - is_drawing++; - - p = 0x01 << (y & 0x07); - - if(c & 0x02) - drawbuf[0][0] = p; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = p; - else - drawbuf[1][0] = 0; - - do_rcuS(x,y,m); - is_drawing--; -} - -void draw_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char c, unsigned char m) -{ - unsigned char i,dx,dy,px,py; - unsigned int x,y; - is_drawing++; - - if (y2 > y1) // incl. POSITIVE - { - dx=x2-x1; - dy=y2-y1; - px=x1; - py=y1; - draw_pixel(x1, y1, c, m); // first pixel - if (dx>=dy) // incl. is more horizontal than vertical - { - y = y1; - for(i=0;i=dx) - { - y-=dx; - py+=1; - } - px+=1; - draw_pixel(px, py, c, m); - } - } - else // incl. is more vertical than horizontal - { - x = x1; - for(i=0;i=dy) - { - x-=dy; - px+=1; - } - py+=1; - draw_pixel(px, py, c, m); //?????? - } - }; - } - else if (y2 < y1) // incl. NEGATIVE - { - dx=x2-x1; - dy=y1-y2; // inverted to produce a positive value - dx=dx; - dy=dy; - px=x1; - py=y2; // Note: due to inverted "dy", - draw_pixel(x2, y2, c, m); // the first pixel became the last one - if (dx>=dy) // incl. is more horizontal than vertical - { - y = y1; - py=y1; - for(i=0;i=dx) - { - y-=dx; - py-=1; - } - px+=1; - draw_pixel(px, py, c, m); - } - } - else // incl. is more vertical than horizontal - { - x = x1; - px=x2; - for(i=0;i=dy) - { - x-=dy; - px-=1; - } - py+=1; - draw_pixel(px, py, c, m); - } - }; - } - is_drawing--; -} - -void draw_circle(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - while (x <= y) - { - if(x != 0) - { - draw_pixel(cx + x, cy + y, c, m); - draw_pixel(cx + x, cy - y, c, m); - } - draw_pixel(cx - x, cy + y, c, m); - draw_pixel(cx - x, cy - y, c, m); - - if(x != y) - { - if(x != 0) - { - draw_pixel(cy + y - d, cy + x, c, m); - draw_pixel(cy - y - d, cy + x, c, m); - } - draw_pixel(cy + y - d, cy - x, c, m); - draw_pixel(cy - y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - is_drawing--; -} - -void draw_qcircle(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - - switch(quarter) - { - case TOP_LEFT: - while (x <= y) - { - draw_pixel(cx - x, cy - y, c, m); - - if(x != y) - { - draw_pixel(cy - y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case TOP_RIGHT: - while (x <= y) - { - draw_pixel(cx + x, cy - y, c, m); - - if(x != y) - { - draw_pixel(cy + y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_LEFT: - while (x <= y) - { - draw_pixel(cx - x, cy + y, c, m); - - if(x != y) - { - draw_pixel(cy - y - d, cy + x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_RIGHT: - while (x <= y) - { - draw_pixel(cx + x, cy + y, c, m); - - if(x != y) - { - draw_pixel(cy + y - d, cy + x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - } - is_drawing--; -} - -void draw_disc(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - while (x <= y) - { - if(x != y) - { - if(x != 0) - { - draw_hline(cy - y - d, cy + x, (y<<1)+1, c, m); - } - draw_hline(cy - y - d, cy - x, (y<<1)+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy + y, (x<<1)+1, c, m); - draw_hline(cx-x, cy - y, (x<<1)+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - is_drawing--; -} - -void draw_qdisc(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - switch(quarter) - { - case TOP_LEFT: - while (x <= y) - { - if(x != y) - { - draw_hline(cy - y - d, cy - x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy - y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case TOP_RIGHT: - while (x <= y) - { - if(x != y) - { - draw_hline(cx, cy - x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx, cy - y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_LEFT: - while (x <= y) - { - if(x != y) - { - draw_hline(cy - y - d, cy + x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy + y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_RIGHT: - while (x <= y) - { - if(x != y) - { - draw_hline(cx, cy + x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx, cy + y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - } - is_drawing--; -} - - -unsigned char draw_arrow(int x, int y, unsigned char ArrowDir, int ArrowLen, unsigned char Color, unsigned char Mode) -{ - int i; - int Len; - is_drawing++; - - switch(ArrowDir) - { - case ARROW_UP: - for(i=0; i r) - { - draw_block(x, y+r+1, r+1, h-(r<<1)-2,c,m); - draw_block(x+r+1, y+t, t-r-1, h-(t<<1),c,m); - draw_block(x+w-r-1, y+r+1, r+1, h-(r<<1)-2,c,m); - draw_block(x+w-t, y+t, t-r-1, h-(t<<1),c,m); - } - else - { - if(r > t) - { - draw_qdisc(x+r, y+r, r-t, TOP_LEFT, c, DRAW_XOR); - draw_qdisc(x+w-r-1, y+r, r-t, TOP_RIGHT, c, DRAW_XOR); - draw_qdisc(x+r, y+h-r-1, r-t, BOTTOM_LEFT, c, DRAW_XOR); - draw_qdisc(x+w-r-1, y+h-r-1, r-t, BOTTOM_RIGHT, c, DRAW_XOR); - } - draw_block(x, y+r+1, t, h-(r<<1)-2,c,m); - draw_block(x+w-t, y+r+1, t, h-(r<<1)-2,c,m); - } - draw_block(x+r+1, y, w-(r<<1)-2, t, c, m); - draw_block(x+r+1, y+h-t, w-(r<<1)-2, t, c, m); - } - } - is_drawing--; -} - -void draw_symbol (unsigned char x, unsigned char y, unsigned char l, unsigned char* data, unsigned char c, unsigned char m) -{ - unsigned char p; - unsigned int cnt; - is_drawing++; - - - for(cnt=0;cnt - - 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 3 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, see . -*/ - -#ifndef LCD_H -#define LCD_H - -// the lcd data & command ports -#define LCD_CMD (*((volatile unsigned char *) 0x81000000)) -#define LCD_DATA (*((volatile unsigned char *) 0x81000001)) - -// LCD commands -#define LCD_CONTRAST 0x3A // original 0x3F (0..63) - -#define LCD_GRAYMODE_88 0x00 // original 0x3F -#define LCD_GRAYMODE_89 0x00 // original 0x3F -#define LCD_GRAYMODE_8A 0x36 // original 0x33 -#define LCD_GRAYMODE_8B 0x63 // original 0x33 -#define LCD_GRAYMODE_8C 0x67 // original 0x66 -#define LCD_GRAYMODE_8D 0x76 // original 0x66 -#define LCD_GRAYMODE_8E 0xAC // original 0x99 -#define LCD_GRAYMODE_8F 0xCA // original 0x99 - -#define LCD_DCDCx3 0x64 // -#define LCD_DCDCx4 0x65 // -#define LCD_DCDCx5 0x66 // -//~ #define LCD_DCDCx? 0x67 // ? datasheet p. 33 - -#define LCD_IRRR_1 0x20 // -#define LCD_IRRR_2 0x21 // -#define LCD_IRRR_3 0x22 // -#define LCD_IRRR_4 0x23 // -#define LCD_IRRR_5 0x24 // -#define LCD_IRRR_6 0x25 // -#define LCD_IRRR_7 0x26 // -#define LCD_IRRR_8 0x27 // - -#define LCD_ALLON 0xA4 // black -#define LCD_ALLOFF 0xA5 // white -#define LCD_NORMAL 0xA6 // -#define LCD_REVERSE 0xA7 // - -#define LCD_SLEEP 0xA9 // enter Sleep Mode. internal oscillator and LCD powersupply off - -#define LCD_OSC_START 0xAB // - -#define LCD_OFF 0xAE // -#define LCD_ON 0xAF // - -#define LCD_WAKEUP 0xE1 // -#define LCD_RESET 0xE2 // - - -// drawmodes -#define DRAW_PUT 0 -#define DRAW_XOR 1 -#define DRAW_ERASE 2 -#define DRAW_ALPHA 3 -#define DRAW_NORCU 4 - -#define LCD_COLOR_W 0 -#define LCD_COLOR_LG 1 -#define LCD_COLOR_DG 2 -#define LCD_COLOR_B 3 - -#define LCD_SIZE_X 128 -#define LCD_SIZE_Y 160 - -#define ARROW_UP 1 -#define ARROW_DOWN 2 -#define ARROW_LEFT 3 -#define ARROW_RIGHT 4 -#define ARROW_LEN 4 - -#define TOP_LEFT 0 -#define TOP_RIGHT 1 -#define BOTTOM_LEFT 2 -#define BOTTOM_RIGHT 3 - -#define BORDER_LEFT 0 -#define BORDER_RIGHT 127 - -extern unsigned char drawbuf[2][LCD_SIZE_X]; -extern unsigned int is_drawing; - -extern volatile unsigned char symbols; -extern volatile unsigned char oldsymbols; -#define symbolRF (1<<0) -extern const unsigned char symIR[]; - -typedef void(*rcu_fn)(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -typedef void (*rcuAlpha_fn) (unsigned char x, unsigned char y, unsigned char l, unsigned char m, - unsigned char* alphaBuf); -typedef void(*rcus_fn)(unsigned char x, unsigned char y, unsigned char m); -typedef void(*bl_fn)(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -typedef void(*ln_fn)(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); - -// Function pointer to section (".text.fastcode") -extern rcu_fn do_rcu; -extern rcuAlpha_fn do_rcuAlpha; -extern rcus_fn do_rcuS; -extern bl_fn draw_block; -extern ln_fn draw_hline; -extern ln_fn draw_vline; - - -extern void lcd_set (unsigned char s); - -extern void lcd_init (unsigned char s); -extern void lcd_enable (unsigned char e); -//extern void do_rcu(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -//extern void do_rcuAlpha (unsigned char x, unsigned char y, unsigned char l, unsigned char m, -// unsigned char* alphaBuf); -//extern void do_rcuS(unsigned char x, unsigned char y, unsigned char m); -extern void lcd_set_contrast(unsigned char c); - -extern void lcd_fill (unsigned char f); -extern void draw_logo (void); -//extern void draw_block (unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -//extern void draw_hline (unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -//extern void draw_vline (unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -extern void draw_rect (unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char lw, unsigned char c, unsigned char m); -extern void draw_pixel (unsigned char x, unsigned char y, unsigned char c, unsigned char m); -extern void draw_line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char c, unsigned char m); -extern void draw_circle (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m); -extern void draw_qcircle (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m); -extern void draw_disc (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m); -extern void draw_qdisc (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m); - -extern unsigned char draw_arrow (int x, int y, unsigned char ArrowDir, int ArrowLen, unsigned char Color, unsigned char Mode); - -extern void draw_frame(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char t, unsigned char r, unsigned char c, unsigned char m); -extern void draw_symbol(unsigned char x, unsigned char y, unsigned char l,unsigned char* data, unsigned char c, unsigned char m); -extern void refresh_symbols(unsigned int cb); -extern void redraw_symbols(void); - -extern void update_active_ind (void); - -#endif diff --git a/boop/trunk/flash/Make.conf b/boop/trunk/flash/Make.conf deleted file mode 100644 index 9560103..0000000 --- a/boop/trunk/flash/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := flash.c bfs.c diff --git a/boop/trunk/flash/bfs.c b/boop/trunk/flash/bfs.c deleted file mode 100644 index 92e75fd..0000000 --- a/boop/trunk/flash/bfs.c +++ /dev/null @@ -1,730 +0,0 @@ -/* - bfs.c - Betty File System - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#include "bfs.h" -#include "flash.h" -#include "lcd.h" -#include "fonty.h" -#include "global.h" - -extern const unsigned long secaddr[19]; - -//Public functions -unsigned char BFS_Mount() -{ - //Return true=ok - unsigned char BfsSector; - unsigned long Offset; - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long Id; - unsigned short Len; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - const unsigned long BfsVersion = BFS_VERSION; - - //Format - for(BfsSector=0; BfsSector BFS_SECTOR_HEADER_LEN) - { - //No free sector - //ASSERT(false); - return false;//Error - } - - return true;//OK -} - -unsigned short BFS_LoadFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - memcpy(Buffer, (unsigned char*)FileBodyAddress, min(FileBodyLen, MaxLen)); - - return min(FileBodyLen, MaxLen);//Error -} - -unsigned char BFS_CmpFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - int x; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - x=memcmp(Buffer, (unsigned char*)FileBodyAddress, min(FileBodyLen, MaxLen)); - - if (x) - return 0;//not equal - return 1; -} - -void* BFS_LoadFileAddr(unsigned long Id) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - - return (void*)FileBodyAddress; - -} - -unsigned char BFS_SaveFile(unsigned long Id, unsigned short Len, unsigned char *Buffer) -{ - //Return true=OK - unsigned char BfsSector; - unsigned char RecordInfo; - int i; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - unsigned char OverridePossible; - unsigned char CreateNewFile; - unsigned char Byte; - unsigned long FileHeaderAddress; - unsigned char HeaderSize; - - CreateNewFile = false; - if(BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - //File is already present - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - //Same len? - OverridePossible = false; - if(Len == FileBodyLen) - { - //Is override possible (no change from 0 to 1)? - OverridePossible = true; - for(i=0; i1 error - OverridePossible = false; - } - } - } - if(OverridePossible) - { - if(writeBuffer(FileBodyAddress, Buffer, Len) != 0) - { - return false;//Error - } - } - else - { - //Delete existing file - Byte = (RecordInfo & 0x3F) | (BFS_TYPE_DELETED << 6); - writeBuffer(FileHeaderAddress, &Byte, 1); - glBfsDeletedBytes[BFS_ByteAddressToBfsSector(FileHeaderAddress)] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - - CreateNewFile = true; - } - } - else - { - //File not present - CreateNewFile = true; - } - - while(CreateNewFile) - { - //Check free space - //Start with the fullest, ignore the last empty one - for(i=0; (i<(BFS_SECTORS-1)) && CreateNewFile; i++) - { - BfsSector = glBfsFillOrder[i]; - FileHeaderAddress = glBfsOffsetToFreeRecord[BfsSector]; - if((FileHeaderAddress + BFS_MAX_RECORD_HEADER_LEN + Len) < BFS_SECTOR_SIZE) - { - //Enough space free - BFS_WriteAtAddress(BFS_GetPhyByteAddrFromBfsSector(BfsSector) + FileHeaderAddress, Id, Len, Buffer, &HeaderSize); - - glBfsOffsetToFreeRecord[BfsSector] += HeaderSize + Len; - BFS_SortArray(); - - CreateNewFile = false; - } - } - - if(CreateNewFile) - { - //No space free - //copy only active files (not the files markes as deleted) to the empty sector and erase the source sector - if(!BFS_MakeSpace(Len)) - { - //Still not enough space free - return false;//Error - } - } - } - - return true;//OK -} - -unsigned char BFS_DeleteFile(unsigned long Id) -{ - //Return true=OK - //Return false=File not found/File was already deleted - - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - unsigned char Byte; - unsigned long FileHeaderAddress; - - if(BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - //File is present - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - - //Delete existing file - Byte = (RecordInfo & 0x3F) | (BFS_TYPE_DELETED << 6); - writeBuffer(FileHeaderAddress, &Byte, 1); - - glBfsDeletedBytes[BFS_ByteAddressToBfsSector(FileHeaderAddress)] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - return true;//OK - } - - return false;//File not found/File was already deleted -} - -unsigned char BFS_DeleteAllFiles() -{ - //Return true=ok - unsigned char BfsSector; - unsigned long Offset; - const unsigned long BfsVersion = BFS_VERSION; - - //Format - for(BfsSector=0; BfsSector glBfsDeletedBytes[BfsSectorWithMostDelFiles]) - { - BfsSectorWithMostDelFiles = BfsSector; - } - } - if(glBfsDeletedBytes[BfsSectorWithMostDelFiles] == 0) - { - //No sector has files marked as deleted -> nothing to free - return false;//Not enough space free - } - - //Copy active files to the empty bfs sector - BfsSector = glBfsFillOrder[BFS_SECTORS - 1];//The empty destination sector - DstAddress = BFS_GetPhyByteAddrFromBfsSector(BfsSector) + BFS_SECTOR_HEADER_LEN; - - FileHeaderAddress = BFS_GetPhyByteAddrFromBfsSector(BfsSectorWithMostDelFiles) + BFS_SECTOR_HEADER_LEN;//Source - do - { - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &Id, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - if(IsActive) - { - //Copy the active file to the destination sector - BFS_FlashToFlashCopy(DstAddress, FileHeaderAddress, (FileBodyAddress - FileHeaderAddress) + FileBodyLen); - DstAddress += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - - glBfsOffsetToFreeRecord[BfsSector] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - } - FileHeaderAddress = FileBodyAddress + FileBodyLen; - }while(!IsFree); - - //Erase the source sector - if(eraseSector(BFS_CHIP, BFS_FIRST_SECTOR + BfsSectorWithMostDelFiles) != 0) - { - return false;//Error - } - //Write sector header - Offset = BFS_GetPhyByteAddrFromBfsSector(BfsSectorWithMostDelFiles); - writeBuffer(Offset, (unsigned char*)BFS_MAGIC, 4); - writeBuffer(Offset + 4, (unsigned char*)&BfsVersion, 4); - - glBfsDeletedBytes[BfsSectorWithMostDelFiles] = 0; - glBfsOffsetToFreeRecord[BfsSectorWithMostDelFiles] = BFS_SECTOR_HEADER_LEN; - - BFS_SortArray(); - }while(1); - - return false;//Not enough space free -} - -void BFS_SortArray() -{ - //Sort the glBfsFillOrder array - unsigned char RepeatSort; - unsigned char BfsSector; - unsigned char Byte; - - do - { - RepeatSort = false; - for(BfsSector=0; BfsSector<(BFS_SECTORS-1); BfsSector++) - { - if(glBfsOffsetToFreeRecord[glBfsFillOrder[BfsSector]] < glBfsOffsetToFreeRecord[glBfsFillOrder[BfsSector+1]]) - { - //Swap - Byte = glBfsFillOrder[BfsSector]; - glBfsFillOrder[BfsSector] = glBfsFillOrder[BfsSector+1]; - glBfsFillOrder[BfsSector+1] = Byte; - RepeatSort = true; - } - } - }while(RepeatSort); -} - -unsigned long BFS_GetPhyByteAddrFromBfsSector(unsigned char BfsSector) -{ - //BFS_FIRST_SECTOR + BfsSector = PhyFlashSector - - //ASSERT((BFS_FIRST_SECTOR + BfsSector) < FLASH_SECTORS); - - return BFS_FLASH_BASE + (secaddr[BfsSector + BFS_FIRST_SECTOR] * 2); -} - -unsigned char BFS_IsSectorFormated(unsigned char BfsSector) -{ - //Is the sector formated and is the version valid - - unsigned long Offset; - unsigned long Version; - - Offset = BFS_GetPhyByteAddrFromBfsSector(BfsSector); - - if(memcmp((unsigned char*)Offset, BFS_MAGIC, 4) != 0) - { - return false;//Magic not found -> not formated - } - - Version = *((unsigned long*) (Offset + 4)); - if(Version != BFS_VERSION) - { - return false;//Magic found but wrong version - } - - return true;//Formated -} - -void BFS_GetFileHeaderInfo(unsigned long FileHeaderAddress, unsigned char *pRecordInfo, unsigned long *pId, unsigned short *pLen, unsigned long *pFileBodyAddress, unsigned char *pIsFree, unsigned char *pIsActive) -{ - unsigned char State; - unsigned char IdByteCount; - unsigned char LenByteCount; - unsigned long Offset; - - Offset = FileHeaderAddress; - *pRecordInfo = readByte(Offset++); - State = ((*pRecordInfo) >> 6) & 0x03; - IdByteCount = 1 + (((*pRecordInfo) >> 1) & 0x03); - LenByteCount = 1 + ((*pRecordInfo) & 0x01); - - if(State == BFS_TYPE_FREE) - { - //Free - *pIsFree = true; - *pIsActive = false; - *pId = 0; - *pLen = 0; - *pFileBodyAddress = 0; - } - else - { - //Active or deleted - *pIsFree = false; - *pIsActive = (State == BFS_TYPE_ACTIVE) ? true : false; - - *pId = readByte(Offset++); - if(IdByteCount > 1) - { - *pId |= readByte(Offset++) << 8; - } - if(IdByteCount > 2) - { - *pId |= readByte(Offset++) << 16; - } - if(IdByteCount > 3) - { - *pId |= readByte(Offset++) << 24; - } - - *pLen = readByte(Offset++); - if(LenByteCount > 1) - { - *pLen |= readByte(Offset++) << 8; - } - - *pFileBodyAddress = Offset; - } -} - -unsigned char BFS_GetFileHeaderAddress(unsigned long Id, unsigned long *pFileHeaderAddress) -{ - //Return true = File is present, pFileHeaderAddress is valid - //Return false = File not found (e.g. deleted), pFileHeaderAddress is invalid - unsigned char BfsSector; - unsigned long PhyAddr; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - *pFileHeaderAddress = 0; - - for(BfsSector=0; BfsSector= ByteAddress) && (FileHeaderAddress < (ByteAddress + BFS_SECTOR_SIZE))) - { - return BfsSector; - } - } - - //ASSERT(false); - BfsSector = 0xFF;//Error - return BfsSector; -} - -unsigned char BFS_WriteAtAddress(unsigned long FileHeaderAddress, unsigned long Id, unsigned short Len, unsigned char *Buffer, unsigned char *pHeaderSize) -{ - //Return true=OK - unsigned char RecordHeaderPos; - unsigned char RecordInfo; - unsigned char RecordHeader[BFS_MAX_RECORD_HEADER_LEN]; - unsigned char IdByteCount; - unsigned char LenByteCount; - - //IdByteCount - if(Id & 0xFF000000) - { - IdByteCount = BFS_ID_4BYTES; - } - else - { - if(Id & 0xFF0000) - { - IdByteCount = BFS_ID_3BYTES; - } - else - { - if(Id & 0xFF00) - { - IdByteCount = BFS_ID_2BYTES; - } - else - { - IdByteCount = BFS_ID_1BYTE; - } - } - } - - //LenByteCount - LenByteCount = (Len < 0x100) ? BFS_ONE_LEN_BYTE : BFS_TWO_LEN_BYTES; - - //RecordInfo - RecordInfo = (BFS_TYPE_ACTIVE << 6) | (IdByteCount << 1) | LenByteCount; - RecordHeaderPos = 0; - RecordHeader[RecordHeaderPos++] = RecordInfo; - - //Id - RecordHeader[RecordHeaderPos++] = Id & 0xFF; - if(Id >= 0x100) - { - RecordHeader[RecordHeaderPos++] = (Id >> 8) & 0xFF; - if(Id >= 0x10000) - { - RecordHeader[RecordHeaderPos++] = (Id >> 16) & 0xFF; - if(Id >= 0x1000000) - { - RecordHeader[RecordHeaderPos++] = (Id >> 24) & 0xFF; - } - } - } - - //Len - RecordHeader[RecordHeaderPos++] = Len & 0xFF; - if(Len >= 0x100) - { - RecordHeader[RecordHeaderPos++] = (Len >> 8) & 0xFF; - } - - //Write record header - writeBuffer(FileHeaderAddress, RecordHeader, RecordHeaderPos); - //Write record data - writeBuffer(FileHeaderAddress + RecordHeaderPos, Buffer, Len); - - *pHeaderSize = RecordHeaderPos; - - return true;//OK -} - -unsigned char readByte(unsigned long ByteAddr) -{ - unsigned char Byte; - Byte = ((unsigned char*) ByteAddr)[0]; - - return Byte; -} - -unsigned short readWord(unsigned long WordAddr) -{ - //addr = unsigned short address - int Offset; - unsigned short Word; - - //ASSERT((WordAddr * 2) >= FLASH1_BASE); - //ASSERT((WordAddr * 2) < (FLASH1_BASE + FLASH_SIZE)); - - Offset = (WordAddr * 2) - FLASH1_BASE; - - Word = *((unsigned short *)(WordAddr<<1)); - - return Word; -} - - -int writeBuffer(unsigned long ByteAddr, unsigned char *buffer, unsigned short len) -{ - //Return 0=OK - int Offset; - unsigned short Word; - - Offset = 0; - - if(ByteAddr & 1) - { - //Not word boundary - Word = readWord(ByteAddr / 2); - Word &= (buffer[Offset] << 8) | 0xFF; - writeWord(ByteAddr & 0xFFFFFFFE, Word); - Offset++; - ByteAddr++; - len--; - } - - while(len >= 2) - { - Word = readWord(ByteAddr / 2); - Word &= buffer[Offset] | (buffer[Offset + 1] << 8); - writeWord(ByteAddr, Word); - Offset += 2; - ByteAddr += 2; - len -= 2; - } - - if(len == 1) - { - Word = readWord(ByteAddr / 2); - Word &= 0xFF00 | buffer[Offset]; - writeWord(ByteAddr, Word); - Offset++; - ByteAddr++; - len--; - } - - return 0;//OK -} - diff --git a/boop/trunk/flash/bfs.h b/boop/trunk/flash/bfs.h deleted file mode 100644 index ded16ba..0000000 --- a/boop/trunk/flash/bfs.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - bfs.h - Betty File System - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#ifndef BFS_H -#define BFS_H - -//Define here your file ids (range 1 - 0xFFFFFFFF) -#define BFS_ID_remotes 1 -#define BFS_ID_settings 2 -#define BFS_ID_RFsettings 3 -#define BFS_ID_RAWslot0 4 -#define BFS_ID_RAWslot1 5 -#define BFS_ID_RAWslot2 6 -#define BFS_ID_RAWslot3 7 - - -//Use last 3 64 KByte sectors (16..18) of the second chip for BFS -#define BFS_FIRST_SECTOR 16 -#define BFS_SECTORS 3 -#define BFS_SECTOR_SIZE 0x10000 - -#define BFS_SECTOR_HEADER_LEN 0x10 -#define BFS_MAGIC "BFS" -#define BFS_VERSION 1 -#define BFS_CHIP 1 - -#define BFS_TYPE_DELETED 0 -#define BFS_TYPE_ACTIVE 1 -#define BFS_TYPE_FREE 3 -#define BFS_ID_1BYTE 0 -#define BFS_ID_2BYTES 1 -#define BFS_ID_3BYTES 2 -#define BFS_ID_4BYTES 3 -#define BFS_ONE_LEN_BYTE 0 -#define BFS_TWO_LEN_BYTES 1 - -//Max. 1 info byte, 4 ID bytes, 2 length bytes -#define BFS_MAX_RECORD_HEADER_LEN (1+4+2) - -#define BFS_FLASH_BASE FLASH1_BASE - -unsigned long glBfsOffsetToFreeRecord[BFS_SECTORS];//Based on sector start -unsigned short glBfsDeletedBytes[BFS_SECTORS];//FileHeader + FileBody -unsigned char glBfsFillOrder[BFS_SECTORS];//[0]=Fullest - -//Public -unsigned char BFS_Mount();//Call this before calling other BFS functions -unsigned short BFS_LoadFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer); -unsigned char BFS_CmpFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer); -void* BFS_LoadFileAddr(unsigned long Id); -unsigned char BFS_SaveFile(unsigned long Id, unsigned short Len, unsigned char *Buffer); -unsigned char BFS_DeleteFile(unsigned long Id); -unsigned char BFS_DeleteAllFiles(); - -//Internal -unsigned char BFS_FlashToFlashCopy(unsigned long DstByteAddr, unsigned long SrcByteAddr, unsigned short ByteLen); -unsigned char BFS_MakeSpace(unsigned short RequiredFileBodySize); -void BFS_SortArray(); -unsigned long BFS_GetPhyByteAddrFromBfsSector(unsigned char BfsSector); -unsigned char BFS_IsSectorFormated(unsigned char BfsSector); -void BFS_GetFileHeaderInfo(unsigned long FileHeaderAddress, unsigned char *pRecordInfo, unsigned long *pId, unsigned short *pLen, unsigned long *pFileBodyAddress, unsigned char *pIsFree, unsigned char *pIsActive); -unsigned char BFS_GetFileHeaderAddress(unsigned long Id, unsigned long *pFileHeaderAddress); -unsigned char BFS_ByteAddressToBfsSector(unsigned long FileHeaderAddress); -unsigned char BFS_WriteAtAddress(unsigned long FileHeaderAddress, unsigned long Id, unsigned short Len, unsigned char *Buffer, unsigned char *pHeaderSize); - -unsigned char readByte(unsigned long ByteAddr); -unsigned short readWord(unsigned long WordAddr); - -int writeBuffer(unsigned long ByteAddr, unsigned char *buffer, unsigned short len); - -#endif diff --git a/boop/trunk/flash/flash.c b/boop/trunk/flash/flash.c deleted file mode 100644 index 4b31794..0000000 --- a/boop/trunk/flash/flash.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - flash.c - writing/erasing flash - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "flash.h" -#include "serial.h" -#include "lcd.h" - -const unsigned long secaddr[19] = -{ 0x00000, - 0x02000, - 0x03000, - 0x04000, - 0x08000, - 0x10000, - 0x18000, - 0x20000, - 0x28000, - 0x30000, - 0x38000, - 0x40000, - 0x48000, - 0x50000, - 0x58000, - 0x60000, - 0x68000, - 0x70000, - 0x78000 }; - -unsigned long flash_base; - -int eraseSector(unsigned char chip, unsigned char secnum) -{ - - if(chip == 0) - flash_base = FLASH0_BASE; - else - flash_base = FLASH1_BASE; - - serial_puts("Erasing Sector: 0x"); - putHexW(flash_base + (secaddr[secnum]<<1)); - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x80; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base + (secaddr[secnum]<<1))) = 0x30; - - if((*((volatile unsigned short *)(flash_base)) & 0x44) == (*((volatile unsigned short *)(flash_base)) & 0x44)) - { - serial_puts(" -- ERROR\n"); - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - - while ((*((volatile unsigned short *)(flash_base)) & 0x44) != (*((volatile unsigned short *)(flash_base)) & 0x44)) - {} - serial_puts(" +> OK\n"); - return 0; -} - -int eraseFlash(unsigned char chip) -{ - if(chip == 0) - flash_base = FLASH0_BASE; - else - flash_base = FLASH1_BASE; - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x80; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x10; - - if((*((volatile unsigned short *)(flash_base)) & 0x44) == (*((volatile unsigned short *)(flash_base)) & 0x44)) - { - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - - while ((*((volatile unsigned short *)(flash_base)) & 0x44) != (*((volatile unsigned short *)(flash_base)) & 0x44)) - {} - return 0; -} - -int writeWord(unsigned long addr, unsigned short data) -{ - flash_base = addr & 0xFF000000; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xA0; - *((volatile unsigned short *)(addr)) = data; - - if(*((volatile unsigned short *)(addr)) == *((volatile unsigned short *)(addr))) - { - serial_puts("NACK"); - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - while(*((volatile unsigned short *)(addr)) != *((volatile unsigned short *)(addr))) - {} - return 0; -} - -void prepareBulk(unsigned long dst) -{ - flash_base = dst & 0xFF000000; - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x20; -} - -void endBulk(unsigned long dst) -{ - flash_base = dst & 0xFF000000; - - *((volatile unsigned short *)(flash_base)) = 0x90; - *((volatile unsigned short *)(flash_base)) = 0x00; -} - -int writeBulk(unsigned long src, unsigned long dst, unsigned long cnt) -{ - unsigned short check1, check2; - while(cnt--) - { - *((volatile unsigned short *)dst) = 0xA0; - *((volatile unsigned short *)dst) = *((volatile unsigned short *)src); - -retry: - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if((check1 & 0x40) == (check2 & 0x40)) - goto done; - if(!(check2 & 0x20)) - goto retry; - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if((check1 & 0x40) == (check2 & 0x40)) - goto done; - *((volatile unsigned short *)dst) = 0xF0; - return -1; - -done: - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if(check1 != check2) - goto retry; - - src+=2; - dst+=2; - } - - return 0; -} - -unsigned short getFlashID(void) { - - unsigned short manufactor = 0; - unsigned short device = 0; - - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; - *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; - manufactor = *((volatile unsigned short *) FLASH1_BASE + 0x100); - (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; - - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; - *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; - device = *((volatile unsigned short *) FLASH1_BASE + 0x01); - (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; - - return(((manufactor << 8) & 0xFF00) | (device & 0x00FF)); - -} diff --git a/boop/trunk/flash/flash.h b/boop/trunk/flash/flash.h deleted file mode 100644 index ffffc81..0000000 --- a/boop/trunk/flash/flash.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - flash.h - writing/erasing flash - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef FLASH_H -#define FLASH_H - -#define FLASH0_BASE 0x80000000 -#define FLASH1_BASE 0x82000000 - -const unsigned long secaddr[19]; - -void prepareBulk(unsigned long dst); -void endBulk(unsigned long dst); -int eraseSector(unsigned char chip, unsigned char secnum); -int eraseFlash(unsigned char chip); -int writeWord(unsigned long addr, unsigned short data); -int writeBulk(unsigned long src, unsigned long dst, unsigned long cnt); -void lcd_set(unsigned char s); -unsigned short getFlashID(void); - -#endif diff --git a/boop/trunk/games/Make.conf b/boop/trunk/games/Make.conf deleted file mode 100644 index 5777587..0000000 --- a/boop/trunk/games/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := gamesmenu.c tic_tac_toe.c sokoban.c connect4.c diff --git a/boop/trunk/games/c4_map.h b/boop/trunk/games/c4_map.h deleted file mode 100644 index 1996802..0000000 --- a/boop/trunk/games/c4_map.h +++ /dev/null @@ -1,64 +0,0 @@ -const signed char map[7][6][14] = -{ - { - { 0, 24, 45, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 24, 25, 49, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 8, 24, 25, 26, 53, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 12, 24, 25, 26, 60, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 16, 25, 26, 64, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 20, 26, 68, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 27, 46, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 27, 28, 45, 50, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 8, 9, 27, 28, 29, 49, 54, 60, -1, 0, 0, 0, 0, 0 }, - { 12, 13, 27, 28, 29, 53, 59, 64, -1, 0, 0, 0, 0, 0 }, - { 16, 17, 28, 29, 63, 68, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 20, 21, 29, 67, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 2, 30, 47, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 6, 30, 31, 46, 51, 60, -1, 0, 0, 0, 0, 0 }, - { 8, 9, 10, 30, 31, 32, 45, 50, 55, 59, 64, -1, 0, 0 }, - { 12, 13, 14, 30, 31, 32, 49, 54, 58, 63, 68, -1, 0, 0 }, - { 16, 17, 18, 31, 32, 53, 62, 67, -1, 0, 0, 0, 0, 0 }, - { 20, 21, 22, 32, 66, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 2, 3, 33, 48, 60, -1, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 6, 7, 33, 34, 47, 52, 59, 64, -1, 0, 0, 0 }, - { 8, 9, 10, 11, 33, 34, 35, 46, 51, 56, 58, 63, 68, -1 }, - { 12, 13, 14, 15, 33, 34, 35, 45, 50, 55, 57, 62, 67, -1 }, - { 16, 17, 18, 19, 34, 35, 49, 54, 61, 66, -1, 0, 0, 0 }, - { 20, 21, 22, 23, 35, 53, 65, -1, 0, 0, 0, 0, 0, 0 }, - }, - { - { 1, 2, 3, 36, 59, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 5, 6, 7, 36, 37, 48, 58, 63, -1, 0, 0, 0, 0, 0 }, - { 9, 10, 11, 36, 37, 38, 47, 52, 57, 62, 67, -1, 0, 0 }, - { 13, 14, 15, 36, 37, 38, 46, 51, 56, 61, 66, -1, 0, 0 }, - { 17, 18, 19, 37, 38, 50, 55, 65, -1, 0, 0, 0, 0, 0 }, - { 21, 22, 23, 38, 54, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 2, 3, 39, 58, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 6, 7, 39, 40, 57, 62, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 10, 11, 39, 40, 41, 48, 61, 66, -1, 0, 0, 0, 0, 0 }, - { 14, 15, 39, 40, 41, 47, 52, 65, -1, 0, 0, 0, 0, 0 }, - { 18, 19, 40, 41, 51, 56, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 22, 23, 41, 55, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 3, 42, 57, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 7, 42, 43, 61, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 11, 42, 43, 44, 65, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 15, 42, 43, 44, 48, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 19, 43, 44, 52, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 23, 44, 56, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - } -}; - -const signed char drop_order[7] = -{ - 3, 4, 2, 5, 1, 6, 0 -}; diff --git a/boop/trunk/games/connect4.c b/boop/trunk/games/connect4.c deleted file mode 100644 index 8f98a55..0000000 --- a/boop/trunk/games/connect4.c +++ /dev/null @@ -1,965 +0,0 @@ -/* - connect4.c - game - - the bulk of this file is code reused from: - * Connect-4 Algorithm - * Version 3.10 - * By Keith Pomakis - * (pomakis@pobox.com) - *April, 2005 - - modifications & adoption to boop: - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "timerfuncs.h" -#include "backlight.h" -#include "connect4.h" - -extern unsigned char autorepeat; - -unsigned int seed; - -unsigned char c4_abort; - -#define other(x) ((x) ^ 1) -#define real_player(x) ((x) & 1) - -#define pop_state() \ - (current_state = &state_stack[--depth]) - -/* The "goodness" of the current state with respect to a player is the */ -/* score of that player minus the score of the player's opponent. A */ -/* positive value will result if the specified player is in a better */ -/* situation than his/her opponent. */ - -#define goodness_of(player) \ - (current_state->score[player] - current_state->score[other(player)]) - -/* A local struct which defines the state of a game. */ - -#define C4_SIZEX 7 -#define C4_SIZEY 6 -#define C4_TOTALSIZE (C4_SIZEX*C4_SIZEY) - -#define C4_MAGICWIN (1 << 4) - -#define C4_WINPLACES 69 - -typedef int(*ev_fn)(int player, int level, int alpha, int beta); -typedef void(*ps_fn)(void); -typedef int(*dp_fn)(int player, int column); -typedef void(*mc_fn)(char *d, char *s, unsigned int cnt); - -static ev_fn evaluate; -static ps_fn push_state; -static dp_fn drop_piece; -static mc_fn mcpy; - -typedef struct { - - char board[C4_SIZEX][C4_SIZEY]; /* The board configuration of the game state. */ - /* board[x][y] specifies the position of the */ - /* xth column and the yth row of the board, */ - /* where column and row numbering starts at 0. */ - /* (The 0th row is the bottom row.) */ - /* A value of 0 specifies that the position is */ - /* occupied by a piece owned by player 0, a */ - /* value of 1 specifies that the position is */ - /* occupied by a piece owned by player 1, and */ - /* a value of C4_NONE specifies that the */ - /* position is unoccupied. */ - - int score_array[2][C4_WINPLACES]; /* An array specifying statistics on both */ - /* players. score_array[0] specifies the */ - /* statistics for player 0, while */ - /* score_array[1] specifies the statistics for */ - /* player 1. */ - - int score[2]; /* The actual scores of each player, deducible */ - /* from score_array, but kept separately for */ - /* efficiency. The score of player x is the */ - /* sum of score_array[x]. A score is */ - /* basically a function of how many winning */ - /* positions are still available to the */ - /* and how close he/she is to achieving each */ - /* of these positions. */ - - short int winner; /* The winner of the game - either 0, 1 or */ - /* C4_NONE. Deducible from score_array, but */ - /* kept separately for efficiency. */ - - int num_of_pieces; /* The number of pieces currently occupying */ - /* board spaces. Deducible from board, but */ - /* kept separately for efficiency. */ - -} Game_state; - -/* Static global variables. */ - -#include "c4_map.h" - -static Game_state *state_stack; //[C4_MAX_LEVEL+1]; -static Game_state *current_state; -static int depth; -static int states_allocated = 0; -//static int drop_order[7]; - - -unsigned long int rand31(void) -{ - unsigned long int hi, lo; - lo = 16807 * (seed & 0xFFFF); - hi = 16807 * (seed >> 16); - lo += (hi & 0x7FFF) << 16; - lo += hi >> 15; - if(lo > 0x7FFFFFFF) lo -= 0x7FFFFFFF; - return(seed = (long)lo); -} - -/****************************************************************************/ -/** **/ -/** This function sets up a new game. This must be called exactly once **/ -/** before each game is started. Before it can be called a second time, **/ -/** end_game() must be called to destroy the previous game. **/ -/** **/ -/** width and height are the desired dimensions of the game board, while **/ -/** num is the number of pieces required to connect in a row in order to **/ -/** win the game. **/ -/** **/ -/****************************************************************************/ - -void -c4_new_game(int width, int height, int num) -{ - register int i, j; - - depth = 0; - current_state = &state_stack[0]; - - for (i=0; iboard[i][j] = C4_NONE; - } - - for (i=0; iscore_array[0][i] = 1; - current_state->score_array[1][i] = 1; - } - - current_state->score[0] = current_state->score[1] = C4_WINPLACES; - current_state->winner = C4_NONE; - current_state->num_of_pieces = 0; - - states_allocated = 1; -} - -/****************************************************************************/ -/** **/ -/** This function updates the score of the specified player in the **/ -/** context of the current state, given that the player has just placed **/ -/** a game piece in column x, row y. **/ -/** **/ -/****************************************************************************/ - -static void -update_score(int player, int x, int y) -{ - register int i; - int win_index; - int this_difference = 0, other_difference = 0; - int other_player = other(player); - - for (i=0; map[x][y][i] != -1; i++) { - win_index = map[x][y][i]; - this_difference += current_state->score_array[player][win_index]; - other_difference += current_state->score_array[other_player][win_index]; - - current_state->score_array[player][win_index] <<= 1; - current_state->score_array[other_player][win_index] = 0; - - if (current_state->score_array[player][win_index] == C4_MAGICWIN) - if (current_state->winner == C4_NONE) - current_state->winner = player; - } - - current_state->score[player] += this_difference; - current_state->score[other_player] -= other_difference; -} - -/****************************************************************************/ -/** **/ -/** This function drops a piece of the specified player into the **/ -/** specified column. The row where the piece ended up is returned, or **/ -/** -1 if the drop was unsuccessful (i.e., the specified column is full). **/ -/** **/ -/****************************************************************************/ - -static int -_drop_piece(int player, int column) -{ - int y = 0; - - while (current_state->board[column][y] != C4_NONE && ++y < C4_SIZEY) - ; - - if (y == C4_SIZEY) - return -1; - - current_state->board[column][y] = player; - current_state->num_of_pieces++; - update_score(player, column, y); - - return y; -} - -/****************************************************************************/ -/** **/ -/** This function drops a piece of the specified player into the **/ -/** specified column. A value of TRUE is returned if the drop is **/ -/** successful, or FALSE otherwise. A drop is unsuccessful if the **/ -/** specified column number is invalid or full. If the drop is **/ -/** successful and row is a non-NULL pointer, the row where the piece **/ -/** ended up is returned through the row pointer. Note that column and **/ -/** row numbering start at 0. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_make_move(int player, int column, int *row) -{ - int result; - - if (column >= C4_SIZEX || column < 0) - return FALSE; - - result = drop_piece(real_player(player), column); - if (row && result >= 0) - *row = result; - return (result >= 0); -} - -void __attribute__ ((section(".text.fastcode"))) -_mcpy(char *d, char *s, unsigned int cnt) -{ - unsigned int c = cnt; - do - { - d[c] = s[c]; - } while(c--); -} - -/****************************************************************************/ -/** **/ -/** This function pushes the current state onto a stack. pop_state() **/ -/** is used to pop from this stack. **/ -/** **/ -/** Technically what it does, since the current state is considered to **/ -/** be the top of the stack, is push a copy of the current state onto **/ -/** the stack right above it. The stack pointer (depth) is then **/ -/** incremented so that the new copy is considered to be the current **/ -/** state. That way, all pop_state() has to do is decrement the stack **/ -/** pointer. **/ -/** **/ -/** For efficiency, memory for each stack state used is only allocated **/ -/** once per game, and reused for the remainder of the game. **/ -/** **/ -/****************************************************************************/ - -static void __attribute__ ((section(".text.fastcode"))) -_push_state(void) -{ - register int i; - Game_state *old_state, *new_state; - old_state = &state_stack[depth++]; - new_state = &state_stack[depth]; - - /* Copy the board */ - - for (i=0; iboard[i], (char*)old_state->board[i], C4_SIZEY); - - /* Copy the score array */ - - - mcpy((char*)new_state->score_array[0], (char*)old_state->score_array[0], - C4_WINPLACES*4); - mcpy((char*)new_state->score_array[1], (char*)old_state->score_array[1], - C4_WINPLACES*4); - - new_state->score[0] = old_state->score[0]; - new_state->score[1] = old_state->score[1]; - new_state->winner = old_state->winner; - new_state->num_of_pieces = old_state->num_of_pieces; - - current_state = new_state; -} - -/****************************************************************************/ -/** **/ -/** This recursive function determines how good the current state may **/ -/** turn out to be for the specified player. It does this by looking **/ -/** ahead level moves. It is assumed that both the specified player and **/ -/** the opponent may make the best move possible. alpha and beta are **/ -/** used for alpha-beta cutoff so that the game tree can be pruned to **/ -/** avoid searching unneccessary paths. **/ -/** **/ -/** The specified poll function (if any) is called at the appropriate **/ -/** intervals. **/ -/** **/ -/** The worst goodness that the current state can produce in the number **/ -/** of moves (levels) searched is returned. This is the best the **/ -/** specified player can hope to achieve with this state (since it is **/ -/** assumed that the opponent will make the best moves possible). **/ -/** **/ -/****************************************************************************/ - -static int __attribute__ ((section(".text.fastcode"))) -_evaluate(int player, int level, int alpha, int beta) -{ - int i, goodness, best, maxab; - - if (current_state->winner == player) - return 0x7FFFFFFF - depth; - else if (current_state->winner == other(player)) - return -(0x7FFFFFFF - depth); - else if (current_state->num_of_pieces == C4_TOTALSIZE) - return 0; /* a tie */ - else if (level == depth) - return goodness_of(player); - else { - /* Assume it is the other player's turn. */ - best = -(0x7FFFFFFF); - maxab = alpha; - for(i=0; iboard[drop_order[i]][C4_SIZEY-1] != C4_NONE) - continue; /* The column is full. */ - push_state(); - drop_piece(other(player), drop_order[i]); - goodness = evaluate(other(player), level, -beta, -maxab); - if (goodness > best) { - best = goodness; - if (best > maxab) - maxab = best; - } - pop_state(); - if (best > beta) - break; - } - - /* What's good for the other player is bad for this one. */ - return -best; - } -} - -/****************************************************************************/ -/** **/ -/** This function instructs the computer to make a move for the specified **/ -/** player. level specifies the number of levels deep the computer **/ -/** should search the game tree in order to make its decision. This **/ -/** corresponds to the number of "moves" in the game, where each player's **/ -/** turn is considered a move. A value of TRUE is returned if a move was **/ -/** made, or FALSE otherwise (i.e. if the board is full). If a move was **/ -/** made, the column and row where the piece ended up is returned through **/ -/** the column and row pointers (unless a pointer is NULL, in which case **/ -/** it won't be used to return any information). Note that column and **/ -/** row numbering start at 0. Also note that for a standard 7x6 game of **/ -/** Connect-4, the computer is brain-dead at levels of three or less, **/ -/** while at levels of four or more the computer provides a challenge. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_auto_move(int player, int level, int *column, int *row) -{ - int i, best_column = -1, goodness = 0, best_worst = -(0x7FFFFFFF); - int num_of_equal = 0, real_player, current_column, result; - - real_player = real_player(player); - - /* It has been proven that the best first move for a standard 7x6 game */ - /* of connect-4 is the center column. See Victor Allis' masters thesis */ - /* ("ftp://ftp.cs.vu.nl/pub/victor/connect4.ps") for this proof. */ - - if (current_state->num_of_pieces < 2 && (current_state->num_of_pieces == 0 || - current_state->board[3][0] != C4_NONE)) { - if (column) - *column = 3; - if (row) - *row = current_state->num_of_pieces; - drop_piece(real_player, 3); - return TRUE; - } - - /* Simulate a drop in each of the columns and see what the results are. */ - - for (i=0; iwinner == real_player) { - best_column = current_column; - pop_state(); - break; - } - - /* Otherwise, look ahead to see how good this move may turn out */ - /* to be (assuming the opponent makes the best moves possible). */ - else { -// next_poll = clock() + poll_interval; - goodness = evaluate(real_player, level, -(0x7FFFFFFF), -best_worst); - } - - /* If this move looks better than the ones previously considered, */ - /* remember it. */ - if (goodness > best_worst) { - best_worst = goodness; - best_column = current_column; - num_of_equal = 1; - } - - /* If two moves are equally as good, make a random decision. */ - else if (goodness == best_worst) { - num_of_equal++; - if ((rand31()>>4) % num_of_equal == 0) - best_column = current_column; - } - - pop_state(); - if(c4_abort) - return 0; - } - - /* Drop the piece in the column decided upon. */ - - if (best_column >= 0) { - result = drop_piece(real_player, best_column); - if (column) - *column = best_column; - if (row) - *row = result; - return TRUE; - } - else - return FALSE; -} - -/****************************************************************************/ -/** **/ -/** This function returns the "score" of the specified player. This **/ -/** score is a function of how many winning positions are still available **/ -/** to the player and how close he/she is to achieving each of these **/ -/** positions. The scores of both players can be compared to observe how **/ -/** well they are doing relative to each other. **/ -/** **/ -/****************************************************************************/ - -int -c4_score_of_player(int player) -{ - return current_state->score[real_player(player)]; -} - - -/****************************************************************************/ -/** **/ -/** This function returns TRUE if the specified player has won the game, **/ -/** and FALSE otherwise. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_is_winner(int player) -{ - return (current_state->winner == real_player(player)); -} - - -/****************************************************************************/ -/** **/ -/** This function returns TRUE if the board is completely full without a **/ -/** winner, and FALSE otherwise. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_is_tie(void) -{ - return (current_state->num_of_pieces == C4_TOTALSIZE && - current_state->winner == C4_NONE); -} - - -/****************************************************************************/ -/** **/ -/** This function returns the coordinates of the winning connections of **/ -/** the winning player. It is assumed that a player has indeed won the **/ -/** game. The coordinates are returned in x1, y1, x2, y2, where (x1, y1) **/ -/** specifies the lower-left piece of the winning connection, and **/ -/** (x2, y2) specifies the upper-right piece of the winning connection. **/ -/** If more than one winning connection exists, only one will be **/ -/** returned. **/ -/** **/ -/****************************************************************************/ - - -void -c4_win_coords(int *x1, int *y1, int *x2, int *y2) -{ - register int i, j, k; - int winner, win_pos = 0; - Boolean found; - - winner = current_state->winner; - - while (current_state->score_array[winner][win_pos] != C4_MAGICWIN) - win_pos++; - - found = FALSE; - for (j=0; j=0 && !found; j--) - for (i=C4_SIZEX-1; i>=0 && !found; i--) - for (k=0; map[i][j][k] != -1; k++) - if (map[i][j][k] == win_pos) { - *x2 = i; - *y2 = j; - found = TRUE; - break; - } -} - - -/****************************************************************************/ -/** **/ -/** This function ends the current game. It is assumed that a game is **/ -/** in progress. It is illegal to call any other game function **/ -/** immediately after this one except for c4_new_game(), c4_poll() and **/ -/** c4_reset(). **/ -/** **/ -/****************************************************************************/ - -void -c4_end_game(void) -{ - states_allocated = 0; -} - - -/****************************************************************************/ -/** **/ -/** This function resets the state of the algorithm to the starting state **/ -/** (i.e., no game in progress and a NULL poll function). There should **/ -/** no reason to call this function unless for some reason the calling **/ -/** algorithm loses track of the game state. It is illegal to call any **/ -/** other game function immediately after this one except for **/ -/** c4_new_game(), c4_poll() and c4_reset(). **/ -/** **/ -/****************************************************************************/ - -void -c4_reset(void) -{ - c4_end_game(); -} - -int row, col, ccol; -unsigned int c4_cb, c4_wcb; -unsigned char c4_player, c4_moves, c4_level; - -void draw_stone(unsigned char x, unsigned char y, unsigned char p) -{ - - unsigned char xx, yy; - xx = 10+(x*18); - yy = 46+(y*18); - - switch(p) - { - case 0: - draw_disc(xx, yy, 7, 2, DRAW_PUT); - draw_disc(xx, yy, 5, 3, DRAW_XOR); - draw_disc(xx, yy, 2, 3, DRAW_XOR); - break; - - case 1: - draw_disc(xx, yy, 7, 3, DRAW_PUT); - draw_disc(xx, yy, 5, 1, DRAW_ERASE); - draw_disc(xx, yy, 2, 1, DRAW_PUT); - break; - - case 2: - draw_disc(xx, yy, 8, 3, DRAW_ERASE); - break; - - case 3: - draw_disc(x, y, 7, 2, DRAW_PUT); - draw_disc(x, y, 5, 3, DRAW_XOR); - draw_disc(x, y, 2, 3, DRAW_XOR); - break; - - case 4: - draw_disc(x, y, 7, 3, DRAW_PUT); - draw_disc(x, y, 5, 1, DRAW_ERASE); - draw_disc(x, y, 2, 1, DRAW_PUT); - break; - - case 5: - draw_disc(xx, yy, 7, 3, DRAW_XOR); - break; - } -} - -void progress_callback(unsigned int cb) -{ - static unsigned char step = 0; - unsigned char x; - if(keys[0] || keys[1]) - { - setBacklight(BL_AUTO); - if(KEY_Exit) - c4_abort = 1; - } - - for(x=0;x<6;x++) - { - draw_char(40+(x<<3),24,224+step,3,DRAW_NORCU); - } - draw_hline(40,24,48,3,DRAW_PUT); - step--; - step &= 0x07; -} - -void win_callback(unsigned int cb) -{ - int x1, y1, x2, y2; - - c4_win_coords(&x1, &y1, &x2, &y2); - - if(x1 > x2) - x1 = 1; - else if(x1 < x2) - x1 = -1; - else - x1 = 0; - - if(y1 > y2) - y1 = 1; - else if(y1 < y2) - y1 = -1; - else - y1 = 0; - - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; -} - -void draw_marker(void) -{ - draw_stone(10+(col*18), 22,c4_player+3); - draw_arrow(7+(col*18), 31, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 0, 152, ARROW_LEFT, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 6, 152, ARROW_RIGHT, ARROW_LEN, 3, DRAW_PUT); - draw_string(12,152,"Select",3,DRAW_PUT); - draw_arrow( 75, 153, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_string(84,152,"Play move",3,DRAW_PUT); -} - -void delete_marker(void) -{ - draw_disc(10+(col*18), 22, 7, 3, DRAW_ERASE); - draw_arrow(7+(col*18), 31, ARROW_DOWN, ARROW_LEN, 3, DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); -} - -int checkwin(void) -{ - if(c4_is_winner(0) || c4_is_winner(1) || c4_is_tie()) - { - if(!c4_is_tie()) - { - startCB(c4_wcb); - } - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - delete_marker(); - set_font(BOLDFONT); - if(c4_is_winner(c4_player)) - draw_string(19,14,"Spieler gewinnt!",3,DRAW_PUT); - else if(c4_is_tie()) - draw_string(24,14,"Unentschieden!",3,DRAW_PUT); - else - draw_string(13,14,"Computer gewinnt!",3,DRAW_PUT); - - draw_string(2,25,"OK: Nochmal Exit: Ende",3,DRAW_PUT); - return 1; - } - return 0; -} - -void move(unsigned char p) -{ - unsigned char pp; - if(p) - { - p = 1; - pp = 0; - } - else - pp = 1; - - if(c4_make_move(p, col, &row)) - { - draw_stone(col, 5-row, p); - draw_disc(10+(col*18), 23, 7, 3, DRAW_ERASE); - delete_marker(); - if(!checkwin()) - { - set_font(BOLDFONT); - draw_frame(35,13,57,22,5,5,3,DRAW_PUT); - draw_block(40,18,47,12,3,DRAW_PUT); - draw_string(40, 15, "Berechne", 3, DRAW_ERASE); - draw_string(0, 152, "Exit: Spiel abbrechen", 3, DRAW_PUT); - set_font(SMALLFONT); - progress_callback(0xff); - startCB(c4_cb); - c4_abort = 0; - c4_auto_move(~p, c4_level, &ccol, &row); - setBacklight(BL_AUTO); - stopCB(c4_cb); - draw_block(0,13,128,22,3,DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - draw_stone(ccol, 5-row, pp); - } - draw_marker(); - c4_moves++; - checkwin(); - } -} - -void c4_selplayer(unsigned char p) -{ - draw_string(30, 15, "Chooose Your", 3, DRAW_PUT); - draw_string(25, 26, "Colour & Level", 3, DRAW_PUT); - draw_arrow( 0, 154, ARROW_UP, ARROW_LEN, 3, DRAW_PUT); - draw_arrow(1 * 6, 154, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_string(15,152,"Level",3,DRAW_PUT); - - draw_arrow( 82, 153, ARROW_LEFT, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 88, 153, ARROW_RIGHT, ARROW_LEN, 3, DRAW_PUT); - draw_string(94,152,"Colour",3,DRAW_PUT); - - draw_frame(1, 15, 19, 19, 1, 3, 3, DRAW_PUT); - draw_frame(108,15, 19, 19, 1, 3, 3, DRAW_PUT); - - draw_disc(10, 24, 7, 3, DRAW_ERASE); - draw_stone(10, 24, p+3); - draw_disc(117, 24, 7, 3, DRAW_ERASE); - draw_stone(117,24, p+3); -} - -void start_connect4(void) -{ - unsigned char x,y; - - Game_state s_stk[C4_MAX_LEVEL+1]; - state_stack = s_stk; - - evaluate = _evaluate; - push_state = _push_state; - drop_piece = _drop_piece; - mcpy = _mcpy; - - seed = 0x86f2a981; - - c4_cb = addTimerCB(progress_callback, 35); - c4_wcb = addTimerCB(win_callback, 100); - - row = 0; ccol = 0; - c4_player = 0; - c4_level = 3; - lcd_fill(0);//Clr screen - - set_font(BOLDFONT); - draw_string(0, 0, "Connect4", 3, DRAW_PUT); - - draw_block(0,10,128,2,3,DRAW_PUT); - draw_block(0,149,128,2,3,DRAW_PUT); - - draw_frame(1,37,127,109,9,9,3,DRAW_PUT); - draw_block(10,46,109,91,3,DRAW_PUT); - -restart: - stopCB(c4_wcb); - col = 3; - draw_block(0,14,128,20,3,DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - c4_selplayer(c4_player); - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - - c4_moves = 0; - - for(x=0;x<7;x++) - { - for(y=0;y<6;y++) - { - draw_disc(10+(x*18), 46+(y*18),8,3,DRAW_ERASE); - } - } - - c4_reset(); - c4_new_game(C4_SIZEX, C4_SIZEY, 4); - - while(1) - { -wait4c: - waitKeyUpDown(); - - if((KEY_OK || KEY_0) && (c4_is_winner(0) || c4_is_winner(1) || c4_is_tie()) && (c4_moves != 0)) goto restart; - else if(KEY_0) - goto restart; - if(KEY_Exit) - { - stopCB(c4_cb); - stopCB(c4_wcb); - removeTimerCB(c4_cb); - removeTimerCB(c4_wcb); - return; - } - else if(c4_moves == 0) - { - if(KEY_Left || KEY_Right) - { - if(c4_player) c4_player=0; else c4_player = 1; - c4_selplayer(c4_player); - } - else if(KEY_OK && c4_player == 1) - { - delete_marker(); - c4_auto_move(0, c4_level, &ccol, &row); - draw_stone(ccol, 5-row, 0); - draw_marker(); - } - else if(KEY_Up) - { - draw_numU(48,152,c4_level,0,3,DRAW_ERASE); - c4_level++; - if(c4_level > C4_MAX_LEVEL) - c4_level = 1; - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - } - else if(KEY_Down) - { - draw_numU(48,152,c4_level,0,3,DRAW_ERASE); - c4_level--; - if(c4_level < 1) - c4_level = C4_MAX_LEVEL; - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - } - if(KEY_OK) - { - c4_moves++; - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - delete_marker(); - draw_block(0,13,128,22,3,DRAW_ERASE); - set_font(SMALLFONT); - draw_marker(); - } - goto wait4c; - } - else if(!c4_is_winner(0) && !c4_is_winner(1) && !c4_is_tie()) - { - if(KEY_1 || KEY_2 || KEY_3 || KEY_4 || KEY_5 || KEY_6 || KEY_7) - { - delete_marker(); - if(KEY_1) - col = 0; - else if(KEY_2) - col = 1; - else if(KEY_3) - col = 2; - else if(KEY_4) - col = 3; - else if(KEY_5) - col = 4; - else if(KEY_6) - col = 5; - else if(KEY_7) - col = 6; - draw_marker(); - - move(c4_player); - } - else if(KEY_Left || KEY_Right) - { - delete_marker(); - if(KEY_Left) - col--; - else if(KEY_Right) - col++; - - if(col > 6) - col = 0; - else if(col < 0) - col = 6; - draw_marker(); - } - else if(KEY_Down || KEY_OK) - { - move(c4_player); - if(c4_abort) - { - c4_abort = 0; - goto restart; - } - } - } - } -} - diff --git a/boop/trunk/games/connect4.h b/boop/trunk/games/connect4.h deleted file mode 100644 index 5962d9d..0000000 --- a/boop/trunk/games/connect4.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - connect4.c - game - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef CONNECT4_H -#define CONNECT4_H - -#ifndef Boolean -#define Boolean char -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define C4_NONE 2 -#define C4_MAX_LEVEL 20 - -void start_connect4(void); - -#endif diff --git a/boop/trunk/games/gamesmenu.c b/boop/trunk/games/gamesmenu.c deleted file mode 100644 index 230db87..0000000 --- a/boop/trunk/games/gamesmenu.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "menu.h" -#include "tic_tac_toe.h" -#include "sokoban.h" -#include "connect4.h" - -const struct MENU_ENTRY gamesMenuEntries[] = -{ - { &GameTicTacToe, 0, FUNCENTRY, "TicTacToe", "Play TicTacToe" }, - { &GameSokoban, 0, FUNCENTRY, "Sokoban", "Play Sokoban" }, - { &start_connect4, 0, FUNCENTRY, "Connect4", "Play Connect4" } -}; - - -const struct MENU gamesMenu = -{ - 3, (MENU_ENTRY*)&gamesMenuEntries, "Games" -}; diff --git a/boop/trunk/games/gamesmenu.h b/boop/trunk/games/gamesmenu.h deleted file mode 100644 index d84df17..0000000 --- a/boop/trunk/games/gamesmenu.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - mainmenu.h - the main menu for boop - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef MAINMENU_H -#define MAINMENU_H - -extern const struct MENU gamesMenu; - -#endif diff --git a/boop/trunk/games/sokoban.c b/boop/trunk/games/sokoban.c deleted file mode 100644 index db0305b..0000000 --- a/boop/trunk/games/sokoban.c +++ /dev/null @@ -1,614 +0,0 @@ -/* - sokoban.c - game - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" - -#include "sokoban.h" -#include "sokoban_levels.h" - -//#include "stdio.h" - -void GameSokoban_InitGameField(struct _SokobanGameInfo *pGI) -{ - int SizeX; - int SizeY; - int x; - int y; - int Pos; - int i; - - if((pGI->Level < 1) || (pGI->Level > SOKOBAN_LEVELS)) - { - //Invalid level - pGI->Level = 1; - } - - //Empty the game field - for(x=0; xG[x][y] = SPACE; - } - } - - //Find the position to searched level - Pos = 0; - i = 1; - while(iLevel) - { - SizeX = Sokoban_Levels[Pos++]; - SizeY = Sokoban_Levels[Pos++]; - Pos += SizeY * ((SizeX+1)/2); - i++; - } - - //Copy the (may be smaller) level to the center of the game field - SizeX = Sokoban_Levels[Pos++]; - SizeY = Sokoban_Levels[Pos++]; - for(y=0; y lo nibble - pGI->G[x+((SOKOBAN_CELLS_X-SizeX)/2)][y+((SOKOBAN_CELLS_Y-SizeY)/2)] = Sokoban_Levels[Pos + (y * ((SizeX+1)/2)) + (x/2)] & 0x0F; - } - else - { - //Even x -> hi nibble - pGI->G[x+((SOKOBAN_CELLS_X-SizeX)/2)][y+((SOKOBAN_CELLS_Y-SizeY)/2)] = (Sokoban_Levels[Pos + (y * ((SizeX+1)/2)) + (x/2)] >> 4) & 0x0F; - } - } - } -} - - -BOOL GameSokoban_IsSolved(BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]) -{ - //Return true=Solved - int x; - int y; - - for(x=0; xMoves = 0; - pGI->UndoCount = 0; - - GameSokoban_InitGameField(pGI); - - //Game field to display - for(x=0; xG[x][y]); - if(pGI->G[x][y] & PUSHER) - { - pGI->PusherX = x; - pGI->PusherY = y; - } - } - } -} - -void GameSokoban_Move(struct _SokobanGameInfo *pGI) -{ - if(KEY_Up) - { - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 1] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 1] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_UP); - - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY-1] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-1, pGI->G[pGI->PusherX][pGI->PusherY-1]); - - pGI->PusherY--; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 2] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_UP); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY - 1] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX][pGI->PusherY-1] ^= PACKET; - pGI->G[pGI->PusherX][pGI->PusherY-2] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-1, pGI->G[pGI->PusherX][pGI->PusherY-1]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-2, pGI->G[pGI->PusherX][pGI->PusherY-2]); - - pGI->PusherY--; - pGI->Moves++; - } - } - } - } - if(KEY_Down) - { - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 1] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 1] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_DOWN); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY+1] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+1, pGI->G[pGI->PusherX][pGI->PusherY+1]); - - pGI->PusherY++; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 2] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_DOWN); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY + 1] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX][pGI->PusherY+1] ^= PACKET; - pGI->G[pGI->PusherX][pGI->PusherY+2] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+1, pGI->G[pGI->PusherX][pGI->PusherY+1]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+2, pGI->G[pGI->PusherX][pGI->PusherY+2]); - - pGI->PusherY++; - pGI->Moves++; - } - } - } - } - if(KEY_Left) - { - if(!(pGI->G[pGI->PusherX - 1][pGI->PusherY] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX - 1][pGI->PusherY] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_LEFT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 1, pGI->PusherY, pGI->G[pGI->PusherX - 1][pGI->PusherY]); - - pGI->PusherX--; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX - 2][pGI->PusherY] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_LEFT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PACKET; - pGI->G[pGI->PusherX - 2][pGI->PusherY] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 1, pGI->PusherY, pGI->G[pGI->PusherX - 1][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 2, pGI->PusherY, pGI->G[pGI->PusherX - 2][pGI->PusherY]); - - pGI->PusherX--; - pGI->Moves++; - } - } - } - } - if(KEY_Right) - { - if(!(pGI->G[pGI->PusherX + 1][pGI->PusherY] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX + 1][pGI->PusherY] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_RIGHT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 1, pGI->PusherY, pGI->G[pGI->PusherX + 1][pGI->PusherY]); - - pGI->PusherX++; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX + 2][pGI->PusherY] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_RIGHT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PACKET; - pGI->G[pGI->PusherX + 2][pGI->PusherY] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 1, pGI->PusherY, pGI->G[pGI->PusherX + 1][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 2, pGI->PusherY, pGI->G[pGI->PusherX + 2][pGI->PusherY]); - - pGI->PusherX++; - pGI->Moves++; - } - } - } - } - -} - -void GameSokoban_UndoAMove(struct _SokobanGameInfo *pGI) -{ - //3 Byte UndoBuffer: - //[ 0 ][ 1 ][ 2 ] - //765432107654321076543210 - //\-x-/\-y-/\/\o0/\o1/\o2/ - - BYTE Object[3]; - BYTE Dir; - int i; - int Count; - - if(pGI->UndoCount <= 0) - { - return;//No more undos available - } - - pGI->UndoCount--; - - pGI->PusherX = (pGI->UndoBuffer[pGI->UndoCount][0] >> 3) & 0x1F; - pGI->PusherY = (pGI->UndoBuffer[pGI->UndoCount][0] << 2) & 0x1F; - pGI->PusherY |= (pGI->UndoBuffer[pGI->UndoCount][1] >> 6) & 0x03; - Dir = (pGI->UndoBuffer[pGI->UndoCount][1] >> 4) & 0x03; - Object[0] = pGI->UndoBuffer[pGI->UndoCount][1] & 0x0F; - Object[1] = (pGI->UndoBuffer[pGI->UndoCount][2] >> 4) & 0x0F; - Object[2] = pGI->UndoBuffer[pGI->UndoCount][2] & 0x0F; - - Count = (Object[2] == 0x0F) ? 2 : 3; - - for(i=0; iG[pGI->PusherX - i][pGI->PusherY] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX - i, pGI->PusherY, pGI->G[pGI->PusherX - i][pGI->PusherY]); - break; - case SOKOBAN_UNDO_DIR_RIGHT: - pGI->G[pGI->PusherX + i][pGI->PusherY] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX + i, pGI->PusherY, pGI->G[pGI->PusherX + i][pGI->PusherY]); - break; - case SOKOBAN_UNDO_DIR_UP: - pGI->G[pGI->PusherX][pGI->PusherY - i] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY - i, pGI->G[pGI->PusherX][pGI->PusherY - i]); - break; - case SOKOBAN_UNDO_DIR_DOWN: - pGI->G[pGI->PusherX][pGI->PusherY + i] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY + i, pGI->G[pGI->PusherX][pGI->PusherY + i]); - break; - } - } - - pGI->Moves--; -} - -void GameSokoban_SaveUndo(struct _SokobanGameInfo *pGI, BYTE Count, BYTE Dir) -{ - //3 Byte UndoBuffer: - //[ 0 ][ 1 ][ 2 ] - //765432107654321076543210 - //\-x-/\-y-/\/\o0/\o1/\o2/ - - BYTE Object[3]; - int i; - -// ASSERT((Count == 2) || (Count == 3)); - - Object[2] = 0x0F;//Default value for not used - - for(i=0; iG[pGI->PusherX - i][pGI->PusherY]; - break; - case SOKOBAN_UNDO_DIR_RIGHT: - Object[i] = pGI->G[pGI->PusherX + i][pGI->PusherY]; - break; - case SOKOBAN_UNDO_DIR_UP: - Object[i] = pGI->G[pGI->PusherX][pGI->PusherY - i]; - break; - case SOKOBAN_UNDO_DIR_DOWN: - Object[i] = pGI->G[pGI->PusherX][pGI->PusherY + i]; - break; - } - } - - if(pGI->UndoCount >= SOKOBAN_MAX_UNDOS) - { - //Undo buffer is full -> free oldest - for(i=0; i<(SOKOBAN_MAX_UNDOS-1); i++) - { - pGI->UndoBuffer[i][0] = pGI->UndoBuffer[i+1][0]; - pGI->UndoBuffer[i][1] = pGI->UndoBuffer[i+1][1]; - pGI->UndoBuffer[i][2] = pGI->UndoBuffer[i+1][2]; - } - pGI->UndoCount--; - } - - pGI->UndoBuffer[pGI->UndoCount][0] = (pGI->PusherX & 0x1F) << 3; - pGI->UndoBuffer[pGI->UndoCount][0] |= ((pGI->PusherY & 0x1F) >> 2) & 0x07; - - pGI->UndoBuffer[pGI->UndoCount][1] = (pGI->PusherY & 0x1F) << 6; - pGI->UndoBuffer[pGI->UndoCount][1] |= (Dir & 3) << 4; - pGI->UndoBuffer[pGI->UndoCount][1] |= Object[0] & 0x0F; - - pGI->UndoBuffer[pGI->UndoCount][2] = (Object[1] & 0x0F) << 4; - pGI->UndoBuffer[pGI->UndoCount][2] |= Object[2] & 0x0F; - - pGI->UndoCount++; -} - -void GameSokoban() -{ - struct _SokobanGameInfo GI; - int i; - - GI.Level = 1; -restart: - //Init the display - lcd_fill(0);//Clr screen - - //Title - draw_string(0, 0, "Sokoban", LCD_COLOR_B, DRAW_PUT); - - //Grid - for(i=0; i<=SOKOBAN_CELLS_X; i++) - { - draw_vline(i*(SOKOBAN_CELL_SIZE+1),16,SOKOBAN_CELLS_Y*(SOKOBAN_CELL_SIZE+1)+1, LCD_COLOR_LG, DRAW_PUT); - } - for(i=0; i<=SOKOBAN_CELLS_Y; i++) - { - draw_hline(0, 16 + i*(SOKOBAN_CELL_SIZE+1),SOKOBAN_CELLS_X*(SOKOBAN_CELL_SIZE+1)+1, LCD_COLOR_LG, DRAW_PUT); - } - - draw_string(0, 8, "Level: Moves:", LCD_COLOR_B, DRAW_PUT); - draw_char(98,8,'0',LCD_COLOR_B,DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*3), "Program +/-:", LCD_COLOR_B, DRAW_PUT); - draw_string(65, LCD_SIZE_Y - (8*3), "Level +/- 1", LCD_COLOR_B, DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*2), "Volume +/-:", LCD_COLOR_B, DRAW_PUT); - draw_string(65, LCD_SIZE_Y - (8*2), "Level +/- 20", LCD_COLOR_B, DRAW_PUT); - draw_arrow( 0, LCD_SIZE_Y - 8, ARROW_UP, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(1 * 6, LCD_SIZE_Y - 8, ARROW_DOWN, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(2 * 6, LCD_SIZE_Y - 8, ARROW_LEFT, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(3 * 6, LCD_SIZE_Y - 8, ARROW_RIGHT, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - 8, "Bewegen", LCD_COLOR_B, DRAW_PUT); - -again: - GameSokoban_InitDisplayForNewGame(&GI); - draw_block(32, 8, 30, 8, LCD_COLOR_B, DRAW_ERASE); - draw_numU(32,8,GI.Level,0,LCD_COLOR_B,DRAW_PUT); - - while(1) - { - if(KEY_Up || KEY_Down || KEY_Left || KEY_Right || KEY_8) - { - draw_block(98, 8, 30, 8, LCD_COLOR_B, DRAW_ERASE); - if(KEY_8) - GameSokoban_UndoAMove(&GI); - else - GameSokoban_Move(&GI); - - if(GameSokoban_IsSolved(GI.G) && !KEY_8) - { - //Solved - GI.Level++;//Next level - if(GI.Level > SOKOBAN_LEVELS) - { - GI.Level = 1; - } - waitKeyUp(); - goto restart; - } - draw_numU(98,8,GI.Moves,0,LCD_COLOR_B,DRAW_PUT); - } - - - //Footer - if(GI.Moves == 1) - { - draw_block(0, LCD_SIZE_Y - (8*3), LCD_SIZE_X, 16, LCD_COLOR_B, DRAW_ERASE); - draw_string(0, LCD_SIZE_Y - (8*3), "0", LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - (8*3), "Neues Spiel", LCD_COLOR_B, DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*2), "Exit", LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - (8*2), "Spiel beenden", LCD_COLOR_B, DRAW_PUT); - } - - waitKeyUpDown(); - - if(GI.Moves == 0) - { - if(KEY_Pplus || KEY_Pminus || KEY_Vplus || KEY_Vminus) - { - //Change level - //Program keys +/- 1 - if(KEY_Pplus) - { - GI.Level++; - } - if(KEY_Pminus) - { - GI.Level--; - } - //Volume keys +/- 20 - if(KEY_Vplus) - { - GI.Level += 20; - } - if(KEY_Vminus) - { - GI.Level -= 20; - } - //Wrap around if necessary - if(GI.Level < 1) - { - GI.Level += SOKOBAN_LEVELS; - } - if(GI.Level > SOKOBAN_LEVELS) - { - GI.Level -= SOKOBAN_LEVELS; - } - //New game - goto again; - } - } - if(KEY_0) goto restart; - if(KEY_Exit) return; - } -} - diff --git a/boop/trunk/games/sokoban.h b/boop/trunk/games/sokoban.h deleted file mode 100644 index fe5621a..0000000 --- a/boop/trunk/games/sokoban.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - sokoban.h - game - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#ifndef SOKOBAN_H -#define SOKOBAN_H - -#include "../global.h" - -#define SOKOBAN_MAX_UNDOS 100 -#define SOKOBAN_UNDO_DIR_LEFT 0 -#define SOKOBAN_UNDO_DIR_RIGHT 1 -#define SOKOBAN_UNDO_DIR_UP 2 -#define SOKOBAN_UNDO_DIR_DOWN 3 - -#define SPACE 0 -#define GOAL 1 -#define PUSHER 2 -#define PACKET 4 -#define WALL 8 -#define PUSHER_ON_GOAL (PUSHER | GOAL) -#define PACKET_ON_GOAL (PACKET | GOAL) - -#define SOKOBAN_CELLS_X 21 -#define SOKOBAN_CELLS_Y 19 -//Size without grid -#define SOKOBAN_CELL_SIZE 5 - -struct _SokobanGameInfo -{ - BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]; - short Level; - int PusherX; - int PusherY; - WORD Moves; - WORD UndoCount; - BYTE UndoBuffer[SOKOBAN_MAX_UNDOS][3]; -}; - -void GameSokoban(void); -void GameSokoban_InitGameField(struct _SokobanGameInfo *pGI); -void GameSokoban_DrawCell(int x, int y, BYTE Object); -BOOL GameSokoban_IsSolved(BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]); -void GameSokoban_InitDisplayForNewGame(struct _SokobanGameInfo *pGI); -void GameSokoban_Move(struct _SokobanGameInfo *pGI); -void GameSokoban_SaveUndo(struct _SokobanGameInfo *pGI, BYTE Count, BYTE Dir); -void GameSokoban_UndoAMove(struct _SokobanGameInfo *pGI); - - -#endif diff --git a/boop/trunk/games/sokoban_levels.h b/boop/trunk/games/sokoban_levels.h deleted file mode 100644 index 437c9e1..0000000 --- a/boop/trunk/games/sokoban_levels.h +++ /dev/null @@ -1,4968 +0,0 @@ -/* - sokoban.h - game - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#ifndef SOKOBAN_LEVELS_H -#define SOKOBAN_LEVELS_H - -#ifndef DEBUGMODE -#define SOKOBAN_LEVELS 375 -const unsigned char Sokoban_Levels[] = { -//Level: 1 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #$ # -0x00, 0x88, 0x80, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ### $## -0x00, 0x80, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x80, 0x88, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, //### # ## # ###### -0x80, 0x00, 0x80, 0x88, 0x08, 0x88, 0x88, 0x00, 0x11, 0x80, //# # ## ##### ..# -0x80, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, //# $ $ ..# -0x88, 0x88, 0x80, 0x88, 0x80, 0x82, 0x88, 0x00, 0x11, 0x80, //##### ### #@## ..# -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 2 -0x0E, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############ -0x81, 0x10, 0x08, 0x00, 0x00, 0x08, 0x88, //#.. # ### -0x81, 0x10, 0x08, 0x04, 0x00, 0x40, 0x08, //#.. # $ $ # -0x81, 0x10, 0x08, 0x48, 0x88, 0x80, 0x08, //#.. #$#### # -0x81, 0x10, 0x00, 0x02, 0x08, 0x80, 0x08, //#.. @ ## # -0x81, 0x10, 0x08, 0x08, 0x00, 0x40, 0x88, //#.. # # $ ## -0x88, 0x88, 0x88, 0x08, 0x84, 0x04, 0x08, //###### ##$ $ # -0x00, 0x80, 0x40, 0x04, 0x04, 0x04, 0x08, // # $ $ $ $ # -0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, // # # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, // ############ -//Level: 3 -0x11, 0x0A,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x28, 0x00, // # @# -0x00, 0x00, 0x00, 0x00, 0x80, 0x48, 0x40, 0x88, 0x00, // # $#$ ## -0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x04, 0x80, 0x00, // # $ $# -0x00, 0x00, 0x00, 0x00, 0x88, 0x40, 0x40, 0x80, 0x00, // ##$ $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x40, 0x80, 0x88, 0x80, //######### $ # ### -0x81, 0x11, 0x10, 0x08, 0x80, 0x40, 0x04, 0x00, 0x80, //#.... ## $ $ # -0x88, 0x11, 0x10, 0x00, 0x04, 0x00, 0x40, 0x00, 0x80, //##... $ $ # -0x81, 0x11, 0x10, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, //#.... ########## -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 4 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x00, 0x08, 0x00, 0x00, 0x80, //# # # -0x80, 0x42, 0x44, 0x44, 0x40, 0x80, //# $@$$$$$ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x80, 0x88, 0x88, 0x80, //##### ##### -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, // #...# -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 5 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, //# # # # -0x80, 0x40, 0x08, 0x88, 0x80, 0x40, 0x80, //# $ #### $ # -0x80, 0x40, 0x00, 0x00, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x08, 0x88, 0x28, 0x88, 0x40, 0x80, //# ###@###$ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x88, //########## ### -0x81, 0x10, 0x00, 0x88, 0x00, 0x00, 0x08, //#.. ## # -0x81, 0x10, 0x00, 0x88, 0x40, 0x00, 0x08, //#.. ##$ # -0x81, 0x10, 0x00, 0x88, 0x04, 0x00, 0x08, //#.. ## $ # -0x81, 0x10, 0x00, 0x88, 0x04, 0x00, 0x08, //#.. ## $ # -0x81, 0x10, 0x00, 0x00, 0x40, 0x40, 0x08, //#.. $ $ # -0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, //### ######### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 6 -0x0B, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x00, 0x00, 0x80, 0x00, 0x80, //# # # -0x80, 0x00, 0x40, 0x04, 0x00, 0x80, //# $ $ # -0x88, 0x88, 0x80, 0x80, 0x00, 0x80, //##### # # -0x88, 0x88, 0x80, 0x88, 0x81, 0x80, //##### ###.# -0x80, 0x08, 0x00, 0x00, 0x81, 0x80, //# # #.# -0x80, 0x40, 0x00, 0x40, 0x81, 0x80, //# $ $ #.# -0x80, 0x08, 0x88, 0x08, 0x81, 0x80, //# ### ##.# -0x88, 0x08, 0x88, 0x00, 0x81, 0x80, //## ### #.# -0x80, 0x40, 0x00, 0x40, 0x81, 0x80, //# $ $ #.# -0x80, 0x00, 0x88, 0x00, 0x81, 0x80, //# ## #.# -0x88, 0x80, 0x88, 0x88, 0x81, 0x80, //### #####.# -0x88, 0x80, 0x80, 0x00, 0x20, 0x80, //### # @ # -0x80, 0x04, 0x00, 0x00, 0x40, 0x80, //# $ $ # -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, //# ## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 7 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x02, 0x88, //#### @## -0x88, 0x88, 0x00, 0x08, //#### # -0x81, 0x08, 0x44, 0x08, //#. #$$ # -0x80, 0x00, 0x00, 0x88, //# ## -0x81, 0x00, 0x48, 0x88, //#. $### -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 8 -0x0C, 0x06,//Size x and y -0x08, 0x88, 0x80, 0x08, 0x88, 0x88, // #### ##### -0x88, 0x00, 0x80, 0x08, 0x00, 0x08, //## # # # -0x80, 0x40, 0x88, 0x88, 0x40, 0x08, //# $ ####$ # -0x80, 0x04, 0x11, 0x11, 0x04, 0x08, //# $.... $ # -0x88, 0x00, 0x00, 0x80, 0x20, 0x88, //## # @ ## -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 9 -0x07, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x04, 0x01, 0x80, //# $ .# -0x80, 0x02, 0x40, 0x80, //# @$ # -0x80, 0x08, 0x41, 0x80, //# #$.# -0x80, 0x01, 0x08, 0x80, //# . ## -0x88, 0x88, 0x88, 0x00, //###### -//Level: 10 -0x07, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x80, 0x08, 0x80, //### ## -0x80, 0x00, 0x40, 0x80, //# $ # -0x80, 0x81, 0x82, 0x80, //# #.#@# -0x80, 0x84, 0x01, 0x80, //# #$ .# -0x80, 0x01, 0x40, 0x80, //# .$ # -0x88, 0x00, 0x08, 0x80, //## ## -0x08, 0x88, 0x88, 0x00, // ##### -//Level: 11 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x80, 0x00, //# #### -0x80, 0x00, 0x00, 0x88, 0x80, //# ### -0x80, 0x08, 0x40, 0x10, 0x80, //# #$ . # -0x88, 0x08, 0x18, 0x40, 0x80, //## #.#$ # -0x80, 0x08, 0x02, 0x50, 0x80, //# # @* # -0x80, 0x00, 0x50, 0x08, 0x80, //# * ## -0x88, 0x88, 0x00, 0x88, 0x00, //#### ## -0x00, 0x08, 0x88, 0x80, 0x00, // #### -//Level: 12 -0x09, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, // #### -0x00, 0x82, 0x08, 0x00, 0x00, // #@ # -0x88, 0x80, 0x08, 0x88, 0x80, //### #### -0x80, 0x01, 0x50, 0x00, 0x80, //# .* # -0x80, 0x41, 0x10, 0x40, 0x80, //# $.. $ # -0x88, 0x80, 0x48, 0x88, 0x80, //### $#### -0x00, 0x80, 0x08, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 13 -0x0D, 0x11,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, // ### -0x00, 0x00, 0x88, 0x18, 0x80, 0x00, 0x00, // ##.## -0x00, 0x00, 0x81, 0x11, 0x80, 0x00, 0x00, // #...# -0x00, 0x88, 0x81, 0x12, 0x88, 0x80, 0x00, // ###..@### -0x00, 0x80, 0x01, 0x11, 0x00, 0x80, 0x00, // # ... # -0x88, 0x80, 0x88, 0x18, 0x80, 0x88, 0x80, //### ##.## ### -0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //# $ # -0x80, 0x08, 0x00, 0x40, 0x08, 0x00, 0x80, //# # $ # # -0x88, 0x48, 0x48, 0x88, 0x48, 0x48, 0x80, //##$#$###$#$## -0x80, 0x08, 0x00, 0x40, 0x08, 0x00, 0x80, //# # $ # # -0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //# $ # -0x88, 0x80, 0x08, 0x08, 0x00, 0x88, 0x80, //### # # ### -0x00, 0x80, 0x88, 0x08, 0x80, 0x80, 0x00, // # ## ## # -0x00, 0x80, 0x04, 0x04, 0x00, 0x80, 0x00, // # $ $ # -0x00, 0x80, 0x88, 0x08, 0x80, 0x80, 0x00, // # ## ## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 14 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x21, 0x80, 0x08, //# @.# # -0x80, 0x14, 0x01, 0x08, //# .$ . # -0x80, 0x08, 0x40, 0x08, //# #$ # -0x80, 0x04, 0x00, 0x88, //# $ ## -0x88, 0x80, 0x08, 0x80, //### ## -0x00, 0x80, 0x08, 0x00, // # # -0x00, 0x88, 0x88, 0x00, // #### -//Level: 15 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x80, 0x00, 0x00, 0x08, 0x00, //# # -0x80, 0x84, 0x40, 0x08, 0x00, //# #$$ # -0x80, 0x11, 0x18, 0x08, 0x00, //# ...# # -0x88, 0x11, 0x14, 0x08, 0x80, //##...$ ## -0x08, 0x08, 0x80, 0x40, 0x80, // # ## $ # -0x08, 0x40, 0x04, 0x00, 0x80, // #$ $ # -0x08, 0x00, 0x80, 0x02, 0x80, // # # @# -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 16 -0x0B, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x88, 0x84, 0x14, 0x88, 0x88, 0x80, //###$.$##### -0x80, 0x00, 0x10, 0x40, 0x00, 0x80, //# . $ # -0x80, 0x88, 0x48, 0x80, 0x20, 0x80, //# ##$## @ # -0x80, 0x00, 0x10, 0x88, 0x88, 0x80, //# . ##### -0x88, 0x80, 0x10, 0x80, 0x00, 0x00, //### . # -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 17 -0x0C, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x80, //###### ### -0x81, 0x10, 0x08, 0x08, 0x82, 0x88, //#.. # ##@## -0x81, 0x10, 0x08, 0x88, 0x00, 0x08, //#.. ### # -0x81, 0x10, 0x00, 0x00, 0x44, 0x08, //#.. $$ # -0x81, 0x10, 0x08, 0x08, 0x04, 0x08, //#.. # # $ # -0x81, 0x18, 0x88, 0x08, 0x04, 0x08, //#..### # $ # -0x88, 0x88, 0x04, 0x08, 0x40, 0x08, //#### $ #$ # -0x00, 0x08, 0x00, 0x48, 0x04, 0x08, // # $# $ # -0x00, 0x08, 0x04, 0x00, 0x40, 0x08, // # $ $ # -0x00, 0x08, 0x00, 0x88, 0x00, 0x08, // # ## # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -//Level: 18 -0x10, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, //# ########## -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x88, //# # # ## -0x80, 0x40, 0x00, 0x80, 0x00, 0x40, 0x40, 0x08, //# $ # $ $ # -0x80, 0x04, 0x00, 0x80, 0x04, 0x08, 0x80, 0x08, //# $ # $ ## # -0x80, 0x44, 0x00, 0x88, 0x40, 0x40, 0x00, 0x08, //# $$ ##$ $ # -0x88, 0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x88, //## # ## ####### -0x88, 0x08, 0x00, 0x88, 0x00, 0x00, 0x11, 0x18, //## # ## ...# -0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x11, 0x18, //# #$ ...# -0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x11, 0x18, //# $$ ...# -0x80, 0x00, 0x00, 0x88, 0x28, 0x00, 0x11, 0x18, //# ##@# ...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 19 -0x0D, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -0x08, 0x00, 0x00, 0x10, 0x80, 0x00, 0x80, // # . # # -0x08, 0x00, 0x04, 0x50, 0x80, 0x40, 0x80, // # $* # $ # -0x08, 0x00, 0x08, 0x10, 0x80, 0x88, 0x80, // # #. # ### -0x08, 0x00, 0x88, 0x18, 0x00, 0x08, 0x00, // # ##.# # -0x88, 0x00, 0x88, 0x18, 0x04, 0x08, 0x80, //## ##.# $ ## -0x80, 0x00, 0x80, 0x18, 0x48, 0x00, 0x80, //# # .#$# # -0x80, 0x20, 0x80, 0x10, 0x00, 0x40, 0x80, //# @ # . $ # -0x80, 0x08, 0x80, 0x54, 0x48, 0x00, 0x80, //# ## *$$# # -0x80, 0x00, 0x80, 0x10, 0x00, 0x08, 0x80, //# # . ## -0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, //# ######## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //##### -//Level: 20 -0x0D, 0x0C,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x00, 0x00, 0x08, 0x00, 0x80, 0x08, 0x00, // # # # -0x00, 0x00, 0x08, 0x00, 0x44, 0x08, 0x00, // # $$ # -0x88, 0x88, 0x88, 0x04, 0x80, 0x08, 0x00, //###### $# # -0x81, 0x11, 0x88, 0x80, 0x80, 0x08, 0x80, //#...### # ## -0x81, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //#. # $ # # -0x81, 0x00, 0x00, 0x40, 0x40, 0x40, 0x80, //#. $ $ $ # -0x81, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //#. # $ # # -0x81, 0x11, 0x88, 0x80, 0x80, 0x08, 0x80, //#...### # ## -0x88, 0x88, 0x88, 0x04, 0x00, 0x08, 0x00, //###### $ # -0x00, 0x00, 0x08, 0x20, 0x80, 0x08, 0x00, // #@ # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 21 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x81, 0x18, 0x00, // #..# -0x08, 0x80, 0x18, 0x80, // ## .## -0x08, 0x00, 0x41, 0x80, // # $.# -0x88, 0x04, 0x00, 0x88, //## $ ## -0x80, 0x08, 0x44, 0x08, //# #$$ # -0x80, 0x02, 0x00, 0x08, //# @ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 22 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x88, 0x00, 0x00, 0x08, 0x80, //## ## -0x80, 0x81, 0x40, 0x40, 0x80, //# #.$ $ # -0x80, 0x15, 0x14, 0x00, 0x80, //# .*.$ # -0x80, 0x41, 0x81, 0x40, 0x80, //# $.#.$ # -0x80, 0x04, 0x18, 0x10, 0x80, //# $.#. # -0x80, 0x40, 0x41, 0x80, 0x80, //# $ $.# # -0x88, 0x00, 0x20, 0x08, 0x80, //## @ ## -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 23 -0x10, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x88, 0x88, 0x88, 0x88, 0x28, 0x80, 0x01, 0x18, //########@## ..# -0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x18, //# $ ..# -0x80, 0x40, 0x84, 0x08, 0x48, 0x80, 0x01, 0x18, //# $ #$ #$## ..# -0x88, 0x08, 0x80, 0x00, 0x08, 0x88, 0x81, 0x18, //## ## ####..# -0x08, 0x04, 0x04, 0x88, 0x08, 0x00, 0x88, 0x88, // # $ $## # #### -0x08, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // # ## # # -0x88, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, //## # ## -0x80, 0x04, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //# $ ## -0x80, 0x08, 0x84, 0x08, 0x00, 0x00, 0x00, 0x00, //# ##$ # -0x80, 0x08, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# ## # -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 24 -0x0F, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00, 0x80, // # $ $ # -0x88, 0x88, 0x80, 0x04, 0x08, 0x44, 0x00, 0x80, //##### $ #$$ # -0x80, 0x00, 0x80, 0x88, 0x00, 0x00, 0x88, 0x80, //# # ## ### -0x81, 0x11, 0x00, 0x08, 0x80, 0x04, 0x80, 0x00, //#... ## $# -0x81, 0x11, 0x84, 0x40, 0x04, 0x00, 0x80, 0x00, //#...#$$ $ # -0x81, 0x11, 0x80, 0x02, 0x80, 0x08, 0x80, 0x00, //#...# @# ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //############ -//Level: 25 -0x09, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x02, 0x11, 0x18, 0x00, // # @...# -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x88, 0x84, 0x00, 0x00, 0x80, //###$ # -0x80, 0x00, 0x84, 0x80, 0x80, //# #$# # -0x80, 0x40, 0x80, 0x00, 0x80, //# $ # # -0x80, 0x00, 0x88, 0x88, 0x80, //# ##### -0x88, 0x88, 0x80, 0x00, 0x00, //##### -//Level: 26 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x80, 0x44, 0x00, 0x40, 0x00, 0x40, 0x40, 0x80, //# $$ $ $ $ # -0x80, 0x04, 0x08, 0x88, 0x88, 0x80, 0x80, 0x80, //# $ ###### # # -0x80, 0x44, 0x08, 0x20, 0x08, 0x00, 0x40, 0x80, //# $$ #@ # $ # -0x80, 0x00, 0x08, 0x00, 0x40, 0x00, 0x08, 0x80, //# # $ ## -0x88, 0x88, 0x88, 0x48, 0x80, 0x08, 0x81, 0x80, //######$## ##.# -0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x11, 0x80, // # # $ #..# -0x08, 0x00, 0x00, 0x40, 0x00, 0x81, 0x11, 0x80, // # $ #...# -0x08, 0x80, 0x88, 0x88, 0x08, 0x01, 0x11, 0x80, // ## #### # ...# -0x08, 0x00, 0x40, 0x00, 0x45, 0x11, 0x11, 0x80, // # $ $*....# -0x08, 0x00, 0x08, 0x00, 0x08, 0x10, 0x01, 0x80, // # # #. .# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -//Level: 27 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x00, 0x00, //# # -0x80, 0x44, 0x48, 0x80, 0x00, //# $$$## -0x80, 0x08, 0x11, 0x88, 0x80, //# #..### -0x88, 0x00, 0x11, 0x40, 0x80, //## ..$ # -0x08, 0x02, 0x00, 0x00, 0x80, // # @ # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 28 -0x0E, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, //###### ##### -0x80, 0x00, 0x08, 0x88, 0x08, 0x00, 0x18, //# ### # .# -0x80, 0x04, 0x04, 0x08, 0x08, 0x11, 0x18, //# $ $ # #...# -0x80, 0x80, 0x04, 0x08, 0x88, 0x00, 0x18, //# # $ ### .# -0x80, 0x04, 0x44, 0x00, 0x04, 0x02, 0x18, //# $$$ $ @.# -0x88, 0x80, 0x04, 0x00, 0x48, 0x00, 0x18, //### $ $# .# -0x00, 0x80, 0x04, 0x84, 0x08, 0x11, 0x18, // # $#$ #...# -0x00, 0x88, 0x00, 0x00, 0x08, 0x00, 0x18, // ## # .# -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // ########### -//Level: 29 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, //####### -0x80, 0x01, 0x40, 0x88, 0x80, //# .$ ### -0x80, 0x14, 0x14, 0x00, 0x80, //# .$.$ # -0x85, 0x41, 0x41, 0x20, 0x80, //#*$.$.@ # -0x80, 0x14, 0x14, 0x08, 0x80, //# .$.$ ## -0x80, 0x01, 0x40, 0x08, 0x00, //# .$ # -0x88, 0x88, 0x88, 0x88, 0x00, //######## -//Level: 30 -0x0A, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x81, 0x11, 0x88, 0x00, 0x80, //#...## # -0x81, 0x51, 0x00, 0x42, 0x80, //#.*. $@# -0x80, 0x04, 0x80, 0x08, 0x80, //# $# ## -0x88, 0x80, 0x88, 0x08, 0x88, //### ## ### -0x80, 0x00, 0x40, 0x00, 0x08, //# $ # -0x80, 0x04, 0x88, 0x48, 0x08, //# $##$# # -0x80, 0x00, 0x04, 0x00, 0x18, //# $ .# -0x88, 0x88, 0x88, 0x88, 0x88, //########## -//Level: 31 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x02, 0x80, //### @# -0x80, 0x04, 0x10, 0x88, //# $. ## -0x80, 0x01, 0x41, 0x08, //# .$. # -0x88, 0x80, 0x54, 0x08, //### *$ # -0x00, 0x80, 0x00, 0x88, // # ## -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 32 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, // #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, //######## #### -0x80, 0x00, 0x88, 0x11, 0x11, 0x10, 0x08, //# ##..... # -0x80, 0x04, 0x00, 0x88, 0x11, 0x18, 0x08, //# $ ##...# # -0x88, 0x00, 0x40, 0x08, 0x88, 0x08, 0x08, //## $ ### # # -0x08, 0x08, 0x04, 0x00, 0x80, 0x00, 0x08, // # # $ # # -0x08, 0x00, 0x80, 0x40, 0x08, 0x00, 0x08, // # # $ # # -0x08, 0x00, 0x08, 0x04, 0x00, 0x80, 0x08, // # # $ # # -0x08, 0x00, 0x00, 0x80, 0x40, 0x80, 0x88, // # # $ # ## -0x08, 0x88, 0x80, 0x08, 0x04, 0x00, 0x80, // #### # $ # -0x00, 0x00, 0x88, 0x00, 0x80, 0x40, 0x80, // ## # $ # -0x00, 0x00, 0x08, 0x82, 0x80, 0x00, 0x80, // ##@# # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 33 -0x0A, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x88, //### #### -0x80, 0x00, 0x40, 0x40, 0x08, //# $ $ # -0x80, 0x40, 0x00, 0x40, 0x28, //# $ $ @# -0x88, 0x84, 0x48, 0x88, 0x88, //###$$##### -0x00, 0x80, 0x01, 0x18, 0x00, // # ..# -0x00, 0x81, 0x11, 0x18, 0x00, // #....# -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 34 -0x09, 0x0C,//Size x and y -0x88, 0x88, 0x08, 0x88, 0x80, //#### #### -0x80, 0x08, 0x88, 0x00, 0x80, //# ### # -0x80, 0x00, 0x04, 0x00, 0x80, //# $ # -0x80, 0x08, 0x08, 0x00, 0x80, //# # # # -0x88, 0x08, 0x08, 0x48, 0x80, //## # #$## -0x80, 0x08, 0x18, 0x00, 0x80, //# #.# # -0x80, 0x05, 0x15, 0x02, 0x80, //# *.* @# -0x80, 0x08, 0x18, 0x08, 0x80, //# #.# ## -0x88, 0x88, 0x00, 0x08, 0x00, //#### # -0x00, 0x08, 0x08, 0x48, 0x00, // # #$# -0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 35 -0x0A, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x40, 0x11, 0x00, 0x80, //# $ .. # -0x82, 0x44, 0x11, 0x04, 0x88, //#@$$.. $## -0x80, 0x40, 0x11, 0x04, 0x08, //# $ .. $ # -0x88, 0x88, 0x88, 0x00, 0x08, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 36 -0x0F, 0x07,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, //##### ###### -0x80, 0x00, 0x80, 0x00, 0x20, 0x08, 0x00, 0x80, //# # @ # # -0x80, 0x04, 0x15, 0x55, 0x55, 0x51, 0x40, 0x80, //# $.******.$ # -0x88, 0x88, 0x00, 0x00, 0x80, 0x08, 0x00, 0x80, //#### # # # -0x00, 0x08, 0x80, 0x00, 0x80, 0x00, 0x08, 0x80, // ## # ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -//Level: 37 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x20, 0x88, 0x80, //### @ ### -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x51, 0x51, 0x50, 0x80, //# *.*.* # -0x80, 0x14, 0x04, 0x10, 0x80, //# .$ $. # -0x80, 0x51, 0x51, 0x50, 0x80, //# *.*.* # -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x88, 0x88, 0x88, 0x00, 0x80, //###### # -0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 38 -0x11, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x01, 0x11, 0x80, // ##### ...# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x01, 0x80, // # . .# -0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x01, 0x11, 0x80, // # ## ...# -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, // ## ## ...# -0x00, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, // ### ######## -0x00, 0x00, 0x08, 0x04, 0x44, 0x08, 0x80, 0x00, 0x00, // # $$$ ## -0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x88, 0x88, 0x80, // ##### $ $ ##### -0x88, 0x00, 0x08, 0x40, 0x40, 0x00, 0x80, 0x00, 0x80, //## #$ $ # # -0x82, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@ $ $ $ $ # -0x88, 0x88, 0x88, 0x04, 0x40, 0x40, 0x88, 0x88, 0x80, //###### $$ $ ##### -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -//Level: 39 -0x0A, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x00, 0x00, 0x80, // ### # -0x88, 0x10, 0x48, 0x80, 0x88, //##. $## ## -0x81, 0x14, 0x04, 0x00, 0x28, //#..$ $ @# -0x81, 0x10, 0x40, 0x40, 0x88, //#.. $ $ ## -0x88, 0x88, 0x80, 0x00, 0x80, //##### # -0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 40 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x04, 0x08, 0x00, // # $ $ # -0x08, 0x88, 0x88, 0x88, 0x80, 0x40, 0x40, 0x08, 0x00, // ######## $ $ # -0x88, 0x11, 0x10, 0x08, 0x88, 0x80, 0x88, 0x08, 0x00, //##... #### ## # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x88, 0x08, 0x00, //#.... ## # -0x88, 0x11, 0x10, 0x08, 0x80, 0x44, 0x88, 0x08, 0x80, //##... ## $$## ## -0x08, 0x88, 0x88, 0x88, 0x80, 0x40, 0x00, 0x02, 0x80, // ######## $ @# -0x00, 0x00, 0x00, 0x88, 0x80, 0x88, 0x88, 0x08, 0x80, // ### #### ## -0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x08, 0x00, // # $ $ # -0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x88, 0x88, 0x00, // # $ ##### -0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, // ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 41 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x00, 0x00, 0x80, //# # -0x80, 0x00, 0x00, 0x80, //# # -0x80, 0x08, 0x00, 0x80, //# # # -0x84, 0x44, 0x44, 0x80, //#$$$$$# -0x81, 0x13, 0x11, 0x80, //#..+..# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 42 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x80, // ###### ##### -0x88, 0x28, 0x00, 0x88, 0x80, 0x00, 0x88, //##@# ### ## -0x80, 0x00, 0x04, 0x00, 0x80, 0x40, 0x08, //# $ # $ # -0x80, 0x04, 0x00, 0x80, 0x00, 0x04, 0x08, //# $ # $ # -0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x08, //### ###### # -0x88, 0x80, 0x88, 0x00, 0x88, 0x48, 0x88, //### ## ##$### -0x80, 0x40, 0x08, 0x88, 0x80, 0x11, 0x80, //# $ #### ..# -0x80, 0x40, 0x40, 0x40, 0x01, 0x11, 0x80, //# $ $ $ ...# -0x80, 0x00, 0x08, 0x88, 0x81, 0x11, 0x80, //# ####...# -0x80, 0x44, 0x08, 0x00, 0x81, 0x11, 0x80, //# $$ # #...# -0x80, 0x08, 0x88, 0x00, 0x88, 0x88, 0x80, //# ### ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 43 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x05, 0x02, 0x80, //# * @# -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x84, 0x15, 0x10, 0x80, //#$.*. # -0x81, 0x01, 0x41, 0x80, //#. .$.# -0x80, 0x41, 0x00, 0x80, //# $. # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 44 -0x13, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x40, 0x08, 0x00, // # $ $ # -0x88, 0x88, 0x88, 0x08, 0x04, 0x08, 0x88, 0x88, 0x08, 0x00, //###### # $ ##### # -0x80, 0x00, 0x08, 0x88, 0x88, 0x04, 0x00, 0x88, 0x48, 0x00, //# ##### $ ##$# -0x80, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x08, 0x00, //# $ $ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x88, 0x08, 0x00, //# ## ## # -0x80, 0x00, 0x08, 0x82, 0x88, 0x88, 0x80, 0x88, 0x08, 0x00, //# ##@##### ## # -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, 0x88, 0x08, 0x80, //# #### # ## ## -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80, //#....# # $ # -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, //#....# # # -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, //###### ####### -//Level: 45 -0x12, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x88, 0x88, // ##### #### -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x80, 0x08, // # #### # -0x08, 0x88, 0x88, 0x88, 0x08, 0x00, 0x04, 0x04, 0x08, // ####### # $ $ # -0x08, 0x00, 0x08, 0x80, 0x04, 0x08, 0x80, 0x80, 0x08, // # ## $ ## # # -0x08, 0x04, 0x00, 0x01, 0x18, 0x18, 0x80, 0x40, 0x88, // # $ ..#.## $ ## -0x08, 0x04, 0x08, 0x81, 0x11, 0x10, 0x40, 0x80, 0x80, // # $ ##.... $ # # -0x08, 0x08, 0x00, 0x41, 0x11, 0x18, 0x80, 0x40, 0x80, // # # $....## $ # -0x88, 0x44, 0x08, 0x81, 0x81, 0x10, 0x00, 0x40, 0x80, //##$$ ##.#.. $ # -0x80, 0x08, 0x08, 0x80, 0x40, 0x08, 0x80, 0x20, 0x80, //# # ## $ ## @ # -0x80, 0x00, 0x00, 0x40, 0x80, 0x88, 0x88, 0x88, 0x80, //# $ # ####### -0x80, 0x08, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, //# #### # -0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //#### ##### -//Level: 46 -0x0A, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x00, 0x00, 0x08, 0x88, // # ### -0x88, 0x48, 0x88, 0x00, 0x08, //##$### # -0x80, 0x20, 0x40, 0x04, 0x08, //# @ $ $ # -0x80, 0x11, 0x80, 0x40, 0x88, //# ..# $ ## -0x88, 0x11, 0x80, 0x00, 0x80, //##..# # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 47 -0x11, 0x0C,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######## -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x80, 0x04, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // # $ ##### -0x00, 0x88, 0x88, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // #### $ # -0x00, 0x80, 0x08, 0x84, 0x80, 0x40, 0x08, 0x00, 0x00, // # ##$# $ # -0x00, 0x80, 0x00, 0x02, 0x80, 0x80, 0x88, 0x88, 0x80, // # @# # ##### -0x08, 0x80, 0x88, 0x04, 0x04, 0x04, 0x40, 0x00, 0x80, // ## ## $ $ $$ # -0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // # # # # # -0x88, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //## ############ -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#....# -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#....# -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 48 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x84, 0x04, 0x44, 0x00, 0x80, // #$ $$$ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x40, 0x80, // # # $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x40, 0x80, // # $@$ # -0x00, 0x00, 0x88, 0x84, 0x04, 0x08, 0x08, 0x80, // ###$ $ # ## -0x00, 0x00, 0x80, 0x00, 0x48, 0x48, 0x08, 0x00, // # $#$# # -0x88, 0x88, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, //##### # # # -0x81, 0x11, 0x00, 0x80, 0x48, 0x08, 0x88, 0x00, //#... # $# ### -0x81, 0x11, 0x11, 0x00, 0x08, 0x08, 0x00, 0x00, //#..... # # -0x81, 0x11, 0x11, 0x80, 0x48, 0x08, 0x00, 0x00, //#.....# $# # -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, //######## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 49 -0x0C, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x88, 0x88, // # ###### -0x88, 0x84, 0x81, 0x00, 0x00, 0x08, //###$#. # -0x80, 0x40, 0x11, 0x18, 0x04, 0x08, //# $ ...# $ # -0x82, 0x04, 0x18, 0x54, 0x00, 0x08, //#@ $.#*$ # -0x88, 0x88, 0x00, 0x00, 0x88, 0x88, //#### #### -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -//Level: 50 -0x07, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x01, 0x02, 0x80, //## . @# -0x80, 0x40, 0x40, 0x80, //# $ $ # -0x81, 0x05, 0x01, 0x80, //#. * .# -0x80, 0x40, 0x40, 0x80, //# $ $ # -0x80, 0x01, 0x08, 0x80, //# . ## -0x88, 0x88, 0x88, 0x00, //###### -//Level: 51 -0x08, 0x07,//Size x and y -0x00, 0x00, 0x88, 0x88, // #### -0x00, 0x00, 0x82, 0x08, // #@ # -0x88, 0x88, 0x80, 0x18, //##### .# -0x80, 0x40, 0x40, 0x48, //# $ $ $# -0x80, 0x00, 0x10, 0x08, //# . # -0x88, 0x80, 0x10, 0x08, //### . # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 52 -0x13, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ################# -0x88, 0x82, 0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //###@## ...# -0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# # ...# -0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $ # ...# -0x80, 0x44, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $$ # ...# -0x88, 0x04, 0x08, 0x88, 0x48, 0x88, 0x88, 0x88, 0x88, 0x80, //## $ ###$########## -0x08, 0x08, 0x88, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, // # ### $ # -0x88, 0x00, 0x04, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, //## $ $ # -0x80, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # $ # -0x80, 0x40, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -//Level: 53 -0x10, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, // # ## -0x00, 0x08, 0x04, 0x04, 0x08, 0x80, 0x00, 0x00, // # $ $ ## -0x88, 0x88, 0x08, 0x48, 0x00, 0x88, 0x88, 0x00, //#### #$# #### -0x80, 0x40, 0x00, 0x04, 0x00, 0x80, 0x08, 0x88, //# $ $ # ### -0x80, 0x00, 0x04, 0x08, 0x04, 0x11, 0x11, 0x18, //# $ # $.....# -0x88, 0x80, 0x80, 0x88, 0x88, 0x11, 0x11, 0x18, //### # ####.....# -0x08, 0x80, 0x84, 0x04, 0x00, 0x11, 0x88, 0x88, // ## #$ $ ..#### -0x08, 0x00, 0x80, 0x00, 0x48, 0x00, 0x80, 0x00, // # # $# # -0x08, 0x24, 0x00, 0x40, 0x08, 0x88, 0x80, 0x00, // #@$ $ #### -0x08, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // # ###### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 54 -0x0C, 0x06,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x88, // # ### -0x88, 0x88, 0x88, 0x80, 0x00, 0x08, //####### # -0x80, 0x40, 0x51, 0x05, 0x14, 0x28, //# $ *. *.$@# -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 55 -0x0D, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x08, 0x80, // ####### ## -0x88, 0x08, 0x02, 0x88, 0x04, 0x40, 0x80, //## # @## $$ # -0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, //# $ # -0x80, 0x04, 0x00, 0x88, 0x80, 0x00, 0x80, //# $ ### # -0x88, 0x80, 0x88, 0x88, 0x84, 0x88, 0x80, //### #####$### -0x80, 0x40, 0x08, 0x88, 0x01, 0x18, 0x00, //# $ ### ..# -0x80, 0x40, 0x40, 0x40, 0x11, 0x18, 0x00, //# $ $ $ ...# -0x80, 0x00, 0x08, 0x88, 0x11, 0x18, 0x00, //# ###...# -0x80, 0x44, 0x08, 0x08, 0x11, 0x18, 0x00, //# $$ # #...# -0x80, 0x08, 0x88, 0x08, 0x88, 0x88, 0x00, //# ### ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 56 -0x0D, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, // #### -0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, // ##### # -0x08, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, // ## $# -0x88, 0x04, 0x00, 0x88, 0x08, 0x88, 0x00, //## $ ## ### -0x82, 0x40, 0x40, 0x80, 0x40, 0x08, 0x00, //#@$ $ # $ # -0x88, 0x88, 0x08, 0x80, 0x00, 0x48, 0x00, //#### ## $# -0x08, 0x11, 0x11, 0x84, 0x04, 0x08, 0x00, // #....#$ $ # -0x08, 0x11, 0x11, 0x80, 0x00, 0x48, 0x00, // #....# $# -0x08, 0x11, 0x11, 0x00, 0x44, 0x08, 0x80, // #.... $$ ## -0x08, 0x11, 0x10, 0x80, 0x40, 0x00, 0x80, // #... # $ # -0x08, 0x88, 0x88, 0x84, 0x04, 0x00, 0x80, // ######$ $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x00, 0x00, 0x00, 0x84, 0x08, 0x88, 0x00, // #$ ### -0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 57 -0x0A, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x11, 0x11, 0x08, 0x00, // #.... # -0x88, 0x81, 0x11, 0x48, 0x88, //###...$### -0x80, 0x04, 0x84, 0x04, 0x08, //# $#$ $ # -0x80, 0x44, 0x00, 0x84, 0x08, //# $$ #$ # -0x80, 0x00, 0x08, 0x00, 0x08, //# # # -0x88, 0x88, 0x02, 0x08, 0x88, //#### @ ### -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 58 -0x0D, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, //# #### # -0x80, 0x40, 0x00, 0x40, 0x00, 0x80, 0x80, //# $ $ # # -0x88, 0x00, 0x80, 0x88, 0x80, 0x40, 0x80, //## # ### $ # -0x08, 0x44, 0x00, 0x88, 0x84, 0x80, 0x80, // #$$ ###$# # -0x88, 0x00, 0x08, 0x00, 0x11, 0x10, 0x80, //## # ... # -0x80, 0x08, 0x04, 0x00, 0x41, 0x11, 0x80, //# # $ $...# -0x80, 0x08, 0x88, 0x88, 0x11, 0x88, 0x80, //# #####..### -0x80, 0x28, 0x00, 0x08, 0x88, 0x80, 0x00, //# @# #### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 59 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x00, 0x00, 0x88, 0x88, 0x11, 0x11, 0x18, // ####.....# -0x88, 0x88, 0x80, 0x00, 0x11, 0x11, 0x18, //##### .....# -0x80, 0x00, 0x80, 0x08, 0x10, 0x11, 0x18, //# # #. ...# -0x80, 0x42, 0x88, 0x08, 0x88, 0x08, 0x88, //# $@## ### ### -0x80, 0x04, 0x00, 0x04, 0x00, 0x44, 0x08, //# $ $ $$ # -0x80, 0x00, 0x84, 0x00, 0x04, 0x00, 0x08, //# #$ $ # -0x80, 0x40, 0x80, 0x88, 0x40, 0x04, 0x08, //# $ # ##$ $ # -0x88, 0x80, 0x00, 0x04, 0x08, 0x80, 0x08, //### $ ## # -0x00, 0x80, 0x40, 0x40, 0x40, 0x00, 0x88, // # $ $ $ ## -0x00, 0x88, 0x80, 0x00, 0x08, 0x88, 0x80, // ### #### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -//Level: 60 -0x0B, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, //##### # -0x80, 0x40, 0x01, 0x00, 0x80, 0x00, //# $ . # -0x80, 0x40, 0x11, 0x88, 0x80, 0x00, //# $ ..### -0x82, 0x40, 0x44, 0x88, 0x80, 0x00, //#@$ $$### -0x88, 0x80, 0x14, 0x10, 0x88, 0x80, //### .$. ### -0x08, 0x84, 0x11, 0x14, 0x00, 0x80, // ##$...$ # -0x08, 0x04, 0x18, 0x80, 0x00, 0x80, // # $.## # -0x08, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###### -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 61 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x80, 0x04, 0x00, 0x80, //# $ # -0x88, 0x44, 0x01, 0x80, //##$$ .# -0x08, 0x20, 0x10, 0x80, // #@ . # -0x08, 0x80, 0x80, 0x80, // ## # # -0x00, 0x80, 0x01, 0x80, // # .# -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 62 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x80, 0x08, //# # # -0x80, 0x81, 0x40, 0x48, //# #.$ $# -0x80, 0x00, 0x40, 0x08, //# $ # -0x88, 0x88, 0x81, 0x08, //#####. # -0x00, 0x80, 0x00, 0x28, // # @# -0x00, 0x80, 0x00, 0x18, // # .# -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 63 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x00, 0x08, //# # # -0x80, 0x41, 0x14, 0x08, //# $..$ # -0x82, 0x41, 0x50, 0x88, //#@$.* ## -0x80, 0x41, 0x14, 0x08, //# $..$ # -0x80, 0x08, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 64 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x00, 0x08, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, // ### # -0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x00, 0x40, 0x08, 0x88, 0x88, 0x80, // ### $ ###### -0x08, 0x00, 0x84, 0x80, 0x08, 0x00, 0x00, 0x80, // # #$# # # -0x08, 0x40, 0x40, 0x88, 0x00, 0x04, 0x00, 0x80, // #$ $ ## $ # -0x88, 0x00, 0x80, 0x00, 0x04, 0x44, 0x88, 0x80, //## # $$$### -0x80, 0x00, 0x08, 0x88, 0x40, 0x00, 0x80, 0x00, //# ###$ # -0x80, 0x48, 0x44, 0x11, 0x18, 0x88, 0x80, 0x00, //# $#$$...#### -0x80, 0x00, 0x08, 0x11, 0x11, 0x80, 0x00, 0x00, //# #....# -0x80, 0x80, 0x20, 0x81, 0x11, 0x80, 0x00, 0x00, //# # @ #...# -0x80, 0x00, 0x00, 0x41, 0x11, 0x80, 0x00, 0x00, //# $...# -0x88, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, //## # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ########## -//Level: 65 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //# # -0x80, 0x04, 0x04, 0x04, 0x80, 0x00, //# $ $ $# -0x88, 0x08, 0x48, 0x80, 0x80, 0x00, //## #$## # -0x08, 0x01, 0x10, 0x11, 0x88, 0x00, // # .. ..## -0x08, 0x81, 0x10, 0x11, 0x08, 0x00, // ##.. .. # -0x00, 0x80, 0x88, 0x48, 0x08, 0x80, // # ##$# ## -0x00, 0x84, 0x04, 0x04, 0x00, 0x80, // #$ $ $ # -0x00, 0x80, 0x00, 0x00, 0x02, 0x80, // # @# -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 66 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x81, 0x11, 0x11, 0x18, 0x00, //#......# -0x80, 0x04, 0x08, 0x08, 0x80, //# $ # ## -0x80, 0x40, 0x80, 0x40, 0x80, //# $ # $ # -0x88, 0x40, 0x40, 0x40, 0x80, //##$ $ $ # -0x08, 0x00, 0x20, 0x00, 0x80, // # @ # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 67 -0x0A, 0x08,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x88, 0x11, 0x18, //######...# -0x80, 0x00, 0x42, 0x04, 0x88, //# $@ $## -0x80, 0x04, 0x08, 0x04, 0x08, //# $ # $ # -0x81, 0x04, 0x08, 0x40, 0x08, //#. $ #$ # -0x80, 0x88, 0x88, 0x08, 0x18, //# #### #.# -0x81, 0x00, 0x00, 0x04, 0x18, //#. $.# -0x88, 0x88, 0x88, 0x88, 0x88, //########## -//Level: 68 -0x0B, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x88, 0x88, 0x20, 0x00, 0x10, 0x80, //####@ . # -0x80, 0x04, 0x04, 0x04, 0x10, 0x80, //# $ $ $. # -0x80, 0x01, 0x88, 0x80, 0x18, 0x80, //# .### .## -0x80, 0x41, 0x40, 0x40, 0x08, 0x00, //# $.$ $ # -0x80, 0x01, 0x00, 0x88, 0x88, 0x00, //# . #### -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -//Level: 69 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x08, 0x02, 0x08, // # @ # -0x08, 0x88, 0x00, 0x08, // ### # -0x08, 0x04, 0x04, 0x88, // # $ $## -0x88, 0x04, 0x00, 0x80, //## $ # -0x81, 0x00, 0x80, 0x80, //#. # # -0x81, 0x10, 0x00, 0x80, //#.. # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 70 -0x10, 0x0E,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ########## -0x00, 0x08, 0x11, 0x00, 0x80, 0x00, 0x80, 0x00, // #.. # # -0x00, 0x08, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, // #.. # -0x00, 0x08, 0x11, 0x00, 0x80, 0x08, 0x88, 0x80, // #.. # #### -0x00, 0x88, 0x88, 0x88, 0x80, 0x08, 0x00, 0x88, // ####### # ## -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x80, 0x08, 0x00, 0x88, 0x00, 0x80, 0x08, // # # ## # # -0x88, 0x88, 0x08, 0x80, 0x08, 0x88, 0x80, 0x88, //#### ## #### ## -0x80, 0x04, 0x00, 0x88, 0x88, 0x80, 0x80, 0x08, //# $ ##### # # -0x80, 0x80, 0x40, 0x04, 0x00, 0x80, 0x40, 0x08, //# # $ $ # $ # -0x80, 0x24, 0x00, 0x40, 0x00, 0x80, 0x00, 0x88, //# @$ $ # ## -0x88, 0x88, 0x08, 0x80, 0x88, 0x88, 0x88, 0x80, //#### ## ####### -0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // # # -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -//Level: 71 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, // ######## -0x00, 0x80, 0x00, 0x81, 0x08, // # #. # -0x08, 0x80, 0x04, 0x11, 0x18, // ## $...# -0x08, 0x00, 0x40, 0x85, 0x18, // # $ #*.# -0x88, 0x08, 0x84, 0x80, 0x88, //## ##$# ## -0x80, 0x00, 0x40, 0x04, 0x08, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x82, 0x08, //#######@ # -0x00, 0x00, 0x00, 0x88, 0x88, // #### -//Level: 72 -0x13, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //############# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# # -0x80, 0x88, 0x80, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# ### $$ # -0x80, 0x00, 0x80, 0x40, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, //# # $ $ # -0x80, 0x04, 0x88, 0x88, 0x48, 0x88, 0x88, 0x80, 0x00, 0x00, //# $####$###### -0x80, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, //# $ ## ##### -0x80, 0x04, 0x40, 0x40, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $$ $ ...# -0x88, 0x80, 0x88, 0x04, 0x48, 0x00, 0x00, 0x01, 0x11, 0x80, //### ## $$# ...# -0x00, 0x80, 0x88, 0x00, 0x08, 0x00, 0x00, 0x01, 0x11, 0x80, // # ## # ...# -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x11, 0x80, // # # ...# -0x00, 0x88, 0x82, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ###@############# -0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 73 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ###### -0x08, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // #### # -0x08, 0x00, 0x00, 0x88, 0x08, 0x00, 0x00, 0x00, 0x00, // # ## # -0x08, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # $ # -0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, //### #### ######## -0x80, 0x04, 0x00, 0x04, 0x08, 0x80, 0x01, 0x11, 0x80, //# $ $ ## ...# -0x80, 0x00, 0x44, 0x04, 0x40, 0x00, 0x01, 0x11, 0x80, //# $$ $$ ...# -0x80, 0x00, 0x04, 0x00, 0x48, 0x80, 0x01, 0x11, 0x80, //# $ $## ...# -0x88, 0x28, 0x80, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, //##@## ## ## ...# -0x08, 0x88, 0x00, 0x40, 0x08, 0x88, 0x88, 0x88, 0x80, // ### $ ######## -0x08, 0x00, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, // # $$ # -0x08, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -//Level: 74 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, //# ##### # -0x80, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x80, //# . . # -0x81, 0x81, 0x88, 0x08, 0x81, 0x88, 0x80, 0x80, //#.#.## ##.### # -0x81, 0x11, 0x00, 0x40, 0x01, 0x11, 0x10, 0x80, //#... $ .... # -0x88, 0x11, 0x08, 0x08, 0x01, 0x18, 0x80, 0x80, //##.. # # ..## # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, 0x80, //###### ###### # -0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x80, 0x80, //# # # # # -0x80, 0x44, 0x08, 0x48, 0x04, 0x40, 0x80, 0x80, //# $$ #$# $$ # # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, //# $ $ $ $ $ # # -0x80, 0x44, 0x08, 0x48, 0x04, 0x40, 0x80, 0x80, //# $$ #$# $$ # # -0x80, 0x00, 0x08, 0x28, 0x00, 0x00, 0x80, 0x80, //# #@# # # -0x80, 0x88, 0x88, 0x08, 0x88, 0x08, 0x80, 0x80, //# #### ### ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 75 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, //##### -0x82, 0x00, 0x80, 0x00, 0x00, //#@ # -0x80, 0x44, 0x80, 0x88, 0x80, //# $$# ### -0x80, 0x40, 0x80, 0x81, 0x80, //# $ # #.# -0x88, 0x80, 0x88, 0x81, 0x80, //### ###.# -0x08, 0x80, 0x00, 0x01, 0x80, // ## .# -0x08, 0x00, 0x08, 0x00, 0x80, // # # # -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 76 -0x0A, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, //########## -0x81, 0x10, 0x00, 0x00, 0x08, //#.. # -0x81, 0x14, 0x00, 0x80, 0x08, //#..$ # # -0x80, 0x08, 0x48, 0x80, 0x88, //# #$## ## -0x80, 0x40, 0x00, 0x00, 0x80, //# $ # -0x88, 0x88, 0x80, 0x80, 0x80, //##### # # -0x00, 0x80, 0x40, 0x20, 0x80, // # $ @ # -0x00, 0x80, 0x00, 0x00, 0x80, // # # -0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 77 -0x0C, 0x0D,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x88, 0x00, // # ###### -0x08, 0x00, 0x00, 0x04, 0x28, 0x00, // # $@# -0x88, 0x08, 0x81, 0x88, 0x48, 0x00, //## ##.##$# -0x80, 0x08, 0x01, 0x08, 0x08, 0x88, //# # . # ### -0x80, 0x00, 0x51, 0x18, 0x00, 0x08, //# *..# # -0x88, 0x08, 0x01, 0x04, 0x08, 0x08, //## # . $ # # -0x88, 0x08, 0x81, 0x80, 0x04, 0x08, //## ##.# $ # -0x80, 0x08, 0x81, 0x80, 0x88, 0x88, //# ##.# #### -0x80, 0x44, 0x04, 0x80, 0x08, 0x00, //# $$ $# # -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, //# # # -0x88, 0x88, 0x88, 0x80, 0x08, 0x00, //####### # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 78 -0x0D, 0x0A,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, // ### ### -0x08, 0x81, 0x40, 0x00, 0x00, 0x88, 0x00, // ##.$ ## -0x08, 0x10, 0x44, 0x44, 0x40, 0x08, 0x00, // #. $$$$$ # -0x88, 0x00, 0x80, 0x00, 0x80, 0x08, 0x80, //## # # ## -0x80, 0x08, 0x58, 0x28, 0x58, 0x00, 0x80, //# #*#@#*# # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x01, 0x44, 0x44, 0x41, 0x08, 0x80, //## .$$$$$. ## -0x08, 0x81, 0x11, 0x11, 0x11, 0x88, 0x00, // ##.......## -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 79 -0x10, 0x09,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x05, 0x08, 0x88, //########## * ### -0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, //# . # -0x80, 0x44, 0x44, 0x55, 0x55, 0x41, 0x11, 0x28, //# $$$$****$...@# -0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, //# . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x05, 0x08, 0x88, //########## * ### -0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 80 -0x11, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //################ -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, //# # -0x80, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, //# # ###### # -0x80, 0x80, 0x04, 0x04, 0x04, 0x04, 0x80, 0x08, 0x00, //# # $ $ $ $# # -0x80, 0x80, 0x00, 0x42, 0x40, 0x00, 0x88, 0x08, 0x80, //# # $@$ ## ## -0x80, 0x80, 0x04, 0x04, 0x04, 0x88, 0x81, 0x11, 0x80, //# # $ $ $###...# -0x80, 0x80, 0x00, 0x40, 0x40, 0x08, 0x81, 0x11, 0x80, //# # $ $ ##...# -0x80, 0x88, 0x84, 0x44, 0x04, 0x08, 0x81, 0x11, 0x80, //# ###$$$ $ ##...# -0x80, 0x00, 0x00, 0x80, 0x88, 0x08, 0x81, 0x11, 0x80, //# # ## ##...# -0x88, 0x88, 0x80, 0x00, 0x88, 0x08, 0x81, 0x11, 0x80, //##### ## ##...# -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x80, // ##### ### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, // ####### -//Level: 81 -0x06, 0x08,//Size x and y -0x08, 0x88, 0x80, // #### -0x88, 0x00, 0x80, //## # -0x82, 0x40, 0x80, //#@$ # -0x88, 0x40, 0x88, //##$ ## -0x88, 0x04, 0x08, //## $ # -0x81, 0x40, 0x08, //#.$ # -0x81, 0x15, 0x18, //#..*.# -0x88, 0x88, 0x88, //###### -//Level: 82 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -0x00, 0x88, 0x80, 0x00, 0x08, 0x88, 0x00, // ### ### -0x00, 0x80, 0x00, 0x84, 0x00, 0x08, 0x88, // # #$ ### -0x00, 0x80, 0x00, 0x40, 0x00, 0x44, 0x08, // # $ $$ # -0x00, 0x80, 0x44, 0x08, 0x40, 0x00, 0x08, // # $$ #$ # -0x00, 0x88, 0x00, 0x04, 0x00, 0x04, 0x08, // ## $ $ # -0x88, 0x88, 0x88, 0x08, 0x48, 0x88, 0x88, //###### #$##### -0x81, 0x12, 0x08, 0x40, 0x08, 0x00, 0x00, //#..@ #$ # -0x81, 0x81, 0x10, 0x04, 0x88, 0x00, 0x00, //#.#.. $## -0x81, 0x11, 0x14, 0x80, 0x80, 0x00, 0x00, //#....$# # -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //######### -//Level: 83 -0x0D, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x00, 0x88, 0x88, 0x88, 0x00, //#### ###### -0x80, 0x00, 0x00, 0x88, 0x00, 0x08, 0x00, //# ## # -0x80, 0x48, 0x04, 0x00, 0x00, 0x48, 0x00, //# $# $ $# -0x88, 0x08, 0x88, 0x04, 0x80, 0x08, 0x00, //## ### $# # -0x08, 0x04, 0x04, 0x00, 0x88, 0x08, 0x00, // # $ $ ## # -0x08, 0x00, 0x04, 0x08, 0x80, 0x08, 0x80, // # $ ## ## -0x08, 0x40, 0x81, 0x11, 0x50, 0x40, 0x80, // #$ #...* $ # -0x08, 0x02, 0x80, 0x11, 0x11, 0x11, 0x80, // # @# ......# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -//Level: 84 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x80, 0x08, 0x00, // # # -0x00, 0x80, 0x08, 0x88, // # ### -0x88, 0x80, 0x11, 0x08, //### .. # -0x80, 0x04, 0x80, 0x08, //# $# # -0x80, 0x01, 0x44, 0x08, //# .$$ # -0x88, 0x88, 0x02, 0x08, //#### @ # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 85 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x20, 0x00, 0x88, // #@ ## -0x08, 0x84, 0x00, 0x08, // ##$ # -0x88, 0x80, 0x10, 0x08, //### . # -0x80, 0x40, 0x84, 0x88, //# $ #$## -0x80, 0x10, 0x01, 0x80, //# . .# -0x88, 0x88, 0x00, 0x80, //#### # -0x00, 0x08, 0x88, 0x80, // #### -//Level: 86 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# # -0x80, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, //# #### -0x88, 0x08, 0x88, 0x80, 0x80, 0x08, 0x00, 0x00, //## #### # # -0x88, 0x08, 0x28, 0x80, 0x00, 0x08, 0x00, 0x00, //## #@## # -0x80, 0x44, 0x40, 0x40, 0x04, 0x48, 0x00, 0x00, //# $$$ $ $$# -0x80, 0x08, 0x08, 0x80, 0x40, 0x08, 0x00, 0x00, //# # ## $ # -0x80, 0x08, 0x08, 0x80, 0x04, 0x08, 0x88, 0x80, //# # ## $ #### -0x88, 0x88, 0x00, 0x44, 0x40, 0x48, 0x00, 0x80, //#### $$$ $# # -0x08, 0x00, 0x08, 0x80, 0x00, 0x11, 0x11, 0x80, // # ## ....# -0x08, 0x08, 0x00, 0x08, 0x08, 0x11, 0x01, 0x80, // # # # #.. .# -0x08, 0x00, 0x08, 0x08, 0x08, 0x81, 0x11, 0x80, // # # # ##...# -0x08, 0x88, 0x88, 0x04, 0x00, 0x81, 0x11, 0x80, // ##### $ #...# -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x88, 0x80, // ## ##### -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 87 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x80, 0x00, // ## ## -0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, // ## # -0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x44, 0x00, 0x80, 0x00, // ## $$ # -0x00, 0x00, 0x00, 0x08, 0x80, 0x44, 0x00, 0x40, 0x80, 0x00, // ## $$ $ # -0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x40, 0x80, 0x00, // # $ $ # -0x88, 0x88, 0x00, 0x08, 0x00, 0x04, 0x40, 0x88, 0x88, 0x80, //#### # $$ ##### -0x80, 0x08, 0x88, 0x88, 0x88, 0x80, 0x88, 0x00, 0x00, 0x80, //# ######## ## # -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x42, 0x80, //#. $$$@# -0x81, 0x80, 0x88, 0x88, 0x88, 0x80, 0x88, 0x00, 0x08, 0x80, //#.# ####### ## ## -0x81, 0x80, 0x88, 0x88, 0x88, 0x81, 0x08, 0x40, 0x48, 0x80, //#.# #######. #$ $## -0x81, 0x11, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, 0x00, 0x80, //#........... # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x40, 0x80, //############## $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x80, // ## ## -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 88 -0x0D, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -0x80, 0x01, 0x01, 0x01, 0x01, 0x00, 0x80, //# . . . . # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x81, 0x40, 0x80, 0x40, 0x80, 0x41, 0x80, //#.$ # $ # $.# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x84, 0x44, 0x84, 0x44, 0x80, 0x80, //# #$$$#$$$# # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x81, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, //#.$ # $ # $ # -0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, //# # # # # #.# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x01, 0x01, 0x21, 0x01, 0x00, 0x80, //# . .@. . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 89 -0x0A, 0x06,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x88, 0x20, 0x00, 0x00, 0x08, //##@ # -0x80, 0x00, 0x84, 0x84, 0x08, //# #$#$ # -0x80, 0x44, 0x00, 0x14, 0x18, //# $$ .$.# -0x80, 0x08, 0x88, 0x11, 0x18, //# ###...# -0x88, 0x88, 0x08, 0x88, 0x88, //#### ##### -//Level: 90 -0x11, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x88, 0x80, //####### ######### -0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x88, 0x00, 0x80, //# # # ## # -0x80, 0x88, 0x80, 0x80, 0x80, 0x00, 0x40, 0x00, 0x80, //# ### # # $ # -0x80, 0x80, 0x40, 0x88, 0x80, 0x00, 0x40, 0x00, 0x80, //# # $ ### $ # -0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x88, 0x40, 0x80, //# $$ ##$ # -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x88, 0x00, 0x80, //# #### ## # -0x82, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //#@############ ## -0x88, 0x81, 0x10, 0x00, 0x08, 0x88, 0x88, 0x40, 0x80, //###.. #####$ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, // #.. #### # -0x00, 0x81, 0x10, 0x00, 0x00, 0x00, 0x44, 0x00, 0x80, // #.. $$ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x88, 0x80, 0x40, 0x80, // #.. #### $ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, // #.. # # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, // ######## ##### -//Level: 91 -0x10, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // # # # # # -0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x48, 0x08, // # $ $# # -0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, // # $ # -0x00, 0x00, 0x00, 0x08, 0x80, 0x40, 0x48, 0x08, // ## $ $# # -0x08, 0x88, 0x00, 0x00, 0x80, 0x40, 0x40, 0x08, // ### # $ $ # -0x88, 0x18, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, //##.###### ###### -0x81, 0x11, 0x00, 0x80, 0x40, 0x40, 0x80, 0x00, //#... # $ $ # -0x88, 0x11, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, //##.. $ # -0x81, 0x11, 0x00, 0x80, 0x02, 0x88, 0x80, 0x00, //#... # @### -0x88, 0x18, 0x88, 0x80, 0x08, 0x80, 0x00, 0x00, //##.#### ## -0x08, 0x88, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // ### #### -//Level: 92 -0x12, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ########### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x88, // # # ## -0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x01, 0x18, // # $ ..# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x81, 0x18, // # #$#..# -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x01, 0x18, // ########### ..# -0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x18, // # $ ..# -0x00, 0x80, 0x80, 0x80, 0x48, 0x80, 0x80, 0x81, 0x18, // # # # $## # #..# -0x00, 0x80, 0x00, 0x84, 0x00, 0x00, 0x80, 0x01, 0x18, // # #$ # ..# -0x08, 0x84, 0x80, 0x40, 0x88, 0x88, 0x88, 0x80, 0x08, // ##$# $ ####### # -0x88, 0x00, 0x04, 0x00, 0x80, 0x00, 0x08, 0x04, 0x08, //## $ # # $ # -0x80, 0x00, 0x48, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, //# $# # # # -0x80, 0x04, 0x00, 0x08, 0x80, 0x00, 0x08, 0x88, 0x88, //# $ ## ##### -0x80, 0x48, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //# $##### -0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# @# -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 93 -0x12, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -0x80, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x11, 0x18, //# ## #...# -0x80, 0x40, 0x44, 0x80, 0x00, 0x04, 0x08, 0x11, 0x18, //# $ $$# $ #...# -0x80, 0x40, 0x00, 0x84, 0x88, 0x44, 0x08, 0x11, 0x18, //# $ #$##$$ #...# -0x80, 0x44, 0x84, 0x00, 0x00, 0x00, 0x02, 0x11, 0x18, //# $$#$ @...# -0x80, 0x40, 0x40, 0x48, 0x40, 0x88, 0x88, 0x00, 0x18, //# $ $ $#$ #### .# -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x04, 0x11, 0x18, //# ## $...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -//Level: 94 -0x0A, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x00, 0x88, 0x00, 0x80, //# ## # -0x80, 0x80, 0x40, 0x40, 0x80, //# # $ $ # -0x80, 0x05, 0x18, 0x00, 0x80, //# *.# # -0x88, 0x08, 0x12, 0x18, 0x80, //## #.@.## -0x88, 0x48, 0x88, 0x58, 0x88, //##$###*### -0x80, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x00, 0x88, 0x08, 0x08, //# ## # # -0x88, 0x88, 0x88, 0x00, 0x08, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 95 -0x0E, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######## -0x00, 0x80, 0x00, 0x80, 0x08, 0x88, 0x00, // # # ### -0x88, 0x80, 0x80, 0x40, 0x04, 0x08, 0x88, //### # $ $ ### -0x80, 0x00, 0x08, 0x44, 0x08, 0x00, 0x08, //# #$$ # # -0x80, 0x88, 0x48, 0x00, 0x20, 0x04, 0x08, //# ##$# @ $ # -0x80, 0x00, 0x04, 0x48, 0x88, 0x40, 0x88, //# $$###$ ## -0x80, 0x00, 0x48, 0x08, 0x80, 0x08, 0x80, //# $# ## ## -0x80, 0x84, 0x08, 0x01, 0x11, 0x88, 0x00, //# #$ # ...## -0x80, 0x40, 0x81, 0x11, 0x11, 0x80, 0x00, //# $ #.....# -0x88, 0x00, 0x11, 0x11, 0x18, 0x80, 0x00, //## .....## -0x08, 0x04, 0x80, 0x88, 0x88, 0x00, 0x00, // # $# #### -0x08, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, // ## # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -//Level: 96 -0x0C, 0x08,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, //######## # -0x80, 0x11, 0x11, 0x11, 0x40, 0x08, //# ......$ # -0x80, 0x08, 0x48, 0x88, 0x00, 0x08, //# #$### # -0x88, 0x04, 0x24, 0x08, 0x00, 0x08, //## $@$ # # -0x08, 0x04, 0x04, 0x08, 0x00, 0x08, // # $ $ # # -0x08, 0x00, 0x00, 0x08, 0x88, 0x88, // # ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 97 -0x14, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //# ### ###### -0x80, 0x80, 0x04, 0x08, 0x00, 0x88, 0x88, 0x00, 0x11, 0x80, //# # $ # #### ..# -0x80, 0x80, 0x04, 0x08, 0x88, 0x82, 0x88, 0x00, 0x11, 0x88, //# # $ ####@## ..## -0x80, 0x04, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x18, //# $$$ $ ...# -0x88, 0x80, 0x04, 0x00, 0x48, 0x88, 0x88, 0x00, 0x11, 0x88, //### $ $##### ..## -0x00, 0x84, 0x04, 0x04, 0x08, 0x00, 0x08, 0x00, 0x11, 0x80, // #$ $ $ # # ..# -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, // # # ###### -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 98 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x00, //##### ###### -0x80, 0x00, 0x00, 0x80, 0x08, 0x80, 0x08, 0x80, //# # ## ## -0x80, 0x80, 0x44, 0x00, 0x04, 0x00, 0x00, 0x80, //# # $$ $ # -0x80, 0x08, 0x00, 0x08, 0x80, 0x80, 0x80, 0x80, //# # ## # # # -0x80, 0x40, 0x80, 0x88, 0x00, 0x04, 0x00, 0x80, //# $ # ## $ # -0x80, 0x00, 0x04, 0x04, 0x00, 0x08, 0x08, 0x80, //# $ $ # ## -0x88, 0x04, 0x08, 0x00, 0x84, 0x88, 0x08, 0x00, //## $ # #$## # -0x08, 0x88, 0x00, 0x80, 0x80, 0x80, 0x48, 0x00, // ### # # # $# -0x00, 0x08, 0x04, 0x00, 0x20, 0x11, 0x18, 0x00, // # $ @ ...# -0x00, 0x08, 0x04, 0x88, 0x48, 0x11, 0x18, 0x00, // # $##$#...# -0x00, 0x08, 0x80, 0x00, 0x11, 0x11, 0x88, 0x00, // ## ....## -0x00, 0x00, 0x88, 0x80, 0x11, 0x18, 0x80, 0x00, // ### ...## -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -//Level: 99 -0x0B, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x00, 0x00, 0x08, 0x80, // # ## -0x08, 0x40, 0x88, 0x88, 0x00, 0x80, // #$ #### # -0x88, 0x08, 0x01, 0x50, 0x80, 0x80, //## # .* # # -0x80, 0x00, 0x45, 0x10, 0x80, 0x80, //# $*. # # -0x80, 0x84, 0x21, 0x50, 0x80, 0x80, //# #$@.* # # -0x80, 0x00, 0x04, 0x00, 0x00, 0x80, //# $ # -0x88, 0x88, 0x48, 0x84, 0x08, 0x80, //####$##$ ## -0x00, 0x08, 0x01, 0x11, 0x08, 0x00, // # ... # -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 100 -0x09, 0x0C,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x20, 0x80, 0x00, // # @ # -0x00, 0x80, 0x40, 0x80, 0x00, // # $ # -0x88, 0x80, 0x10, 0x88, 0x80, //### . ### -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x80, 0x55, 0x55, 0x50, 0x80, //# ***** # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x84, 0x54, 0x88, 0x80, //###$*$### -0x00, 0x80, 0x10, 0x80, 0x00, // # . # -0x00, 0x80, 0x50, 0x80, 0x00, // # * # -0x00, 0x80, 0x10, 0x80, 0x00, // # . # -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 101 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x88, 0x00, 0x80, // # #$## # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, // # $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x88, 0x80, 0x00, 0x80, //######### ### # -0x81, 0x11, 0x10, 0x08, 0x80, 0x40, 0x04, 0x88, 0x80, //#.... ## $ $### -0x81, 0x11, 0x10, 0x00, 0x04, 0x04, 0x40, 0x88, 0x00, //#.... $ $$ ## -0x81, 0x11, 0x10, 0x08, 0x84, 0x00, 0x40, 0x28, 0x00, //#.... ##$ $ @# -0x88, 0x88, 0x88, 0x88, 0x80, 0x04, 0x00, 0x88, 0x00, //######### $ ## -0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x08, 0x00, // # $ $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x88, 0x08, 0x00, // ### ## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 102 -0x13, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x08, 0x08, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // # # ####### -0x08, 0x00, 0x00, 0x00, 0x42, 0x88, 0x88, 0x88, 0x00, 0x00, // # $@###### -0x08, 0x04, 0x08, 0x84, 0x08, 0x88, 0x00, 0x08, 0x00, 0x00, // # $ ##$ ### # -0x08, 0x08, 0x88, 0x80, 0x40, 0x00, 0x04, 0x08, 0x00, 0x00, // # #### $ $ # -0x08, 0x08, 0x88, 0x88, 0x08, 0x00, 0x84, 0x08, 0x88, 0x80, // # ##### # #$ #### -0x88, 0x00, 0x88, 0x88, 0x08, 0x84, 0x00, 0x00, 0x00, 0x80, //## #### ##$ # -0x80, 0x04, 0x80, 0x04, 0x00, 0x80, 0x88, 0x08, 0x80, 0x80, //# $# $ # ## ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x11, 0x80, 0x80, //# # #...# # -0x88, 0x88, 0x88, 0x00, 0x88, 0x80, 0x01, 0x11, 0x00, 0x80, //###### ### ... # -0x00, 0x00, 0x08, 0x88, 0x80, 0x80, 0x81, 0x11, 0x80, 0x80, // #### # #...# # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0x80, 0x80, 0x80, // # ### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 103 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x88, // ###### -0x00, 0x80, 0x00, 0x08, // # # -0x88, 0x84, 0x44, 0x08, //###$$$ # -0x82, 0x04, 0x11, 0x08, //#@ $.. # -0x80, 0x41, 0x11, 0x88, //# $...## -0x88, 0x88, 0x00, 0x80, //#### # -0x00, 0x08, 0x88, 0x80, // #### -//Level: 104 -0x0C, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x88, 0x48, 0x88, 0x88, 0x88, 0x88, //##$######### -0x80, 0x40, 0x40, 0x00, 0x00, 0x08, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # -0x88, 0x80, 0x80, 0x44, 0x04, 0x08, //### # $$ $ # -0x00, 0x80, 0x80, 0x00, 0x84, 0x08, // # # #$ # -0x00, 0x80, 0x80, 0x44, 0x00, 0x08, // # # $$ # -0x00, 0x80, 0x80, 0x80, 0x44, 0x08, // # # # $$ # -0x00, 0x80, 0x80, 0x04, 0x08, 0x88, // # # $ ### -0x00, 0x80, 0x88, 0x80, 0x08, 0x00, // # ### # -0x00, 0x80, 0x00, 0x08, 0x28, 0x00, // # #@# -0x00, 0x88, 0x88, 0x00, 0x08, 0x00, // #### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 105 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, // ### ## -0x00, 0x08, 0x00, 0x08, 0x80, 0x08, 0x00, // # ## # -0x08, 0x88, 0x48, 0x80, 0x08, 0x08, 0x00, // ###$## # # -0x88, 0x00, 0x00, 0x01, 0x18, 0x08, 0x00, //## ..# # -0x80, 0x04, 0x84, 0x85, 0x18, 0x08, 0x00, //# $#$#*.# # -0x80, 0x44, 0x20, 0x81, 0x58, 0x08, 0x88, //# $$@ #.*# ### -0x80, 0x04, 0x40, 0x81, 0x18, 0x00, 0x08, //# $$ #..# # -0x88, 0x00, 0x00, 0x81, 0x14, 0x00, 0x08, //## #..$ # -0x08, 0x88, 0x48, 0x81, 0x08, 0x08, 0x88, // ###$##. # ### -0x00, 0x08, 0x00, 0x88, 0x80, 0x08, 0x00, // # ### # -0x00, 0x08, 0x80, 0x00, 0x00, 0x88, 0x00, // ## ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, // ####### -//Level: 106 -0x0D, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //######### # # -0x80, 0x40, 0x40, 0x40, 0x40, 0x00, 0x80, //# $ $ $ $ # -0x80, 0x81, 0x81, 0x81, 0x82, 0x48, 0x80, //# #.#.#.#@$## -0x81, 0x11, 0x11, 0x11, 0x00, 0x08, 0x00, //#....... # -0x80, 0x80, 0x80, 0x80, 0x84, 0x88, 0x80, //# # # # #$### -0x80, 0x40, 0x40, 0x40, 0x40, 0x00, 0x80, //# $ $ $ $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //######### # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 107 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x80, 0x00, // #### -0x08, 0x20, 0x88, 0x80, // #@ ### -0x08, 0x04, 0x00, 0x80, // # $ # -0x88, 0x80, 0x80, 0x88, //### # ## -0x81, 0x80, 0x80, 0x08, //#.# # # -0x81, 0x40, 0x08, 0x08, //#.$ # # -0x81, 0x00, 0x04, 0x08, //#. $ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 108 -0x0B, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x00, 0x00, 0x08, 0x20, 0x80, // #@ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x80, // ##### # -0x88, 0x88, 0x00, 0x00, 0x00, 0x80, //#### # -0x80, 0x00, 0x18, 0x88, 0x08, 0x80, //# .### ## -0x80, 0x80, 0x80, 0x00, 0x08, 0x80, //# # # ## -0x80, 0x80, 0x40, 0x48, 0x10, 0x80, //# # $ $#. # -0x80, 0x80, 0x05, 0x00, 0x80, 0x80, //# # * # # -0x80, 0x18, 0x40, 0x40, 0x80, 0x80, //# .#$ $ # # -0x88, 0x00, 0x00, 0x80, 0x80, 0x80, //## # # # -0x08, 0x08, 0x88, 0x10, 0x00, 0x80, // # ###. # -0x08, 0x00, 0x00, 0x08, 0x88, 0x80, // # #### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 109 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x40, 0x44, 0x80, 0x88, 0x88, 0x00, // #$$ $$# #### -0x88, 0x88, 0x80, 0x08, 0x00, 0x40, 0x80, 0x08, 0x00, //##### # $ # # -0x81, 0x18, 0x00, 0x88, 0x04, 0x00, 0x40, 0x08, 0x00, //#..# ## $ $ # -0x81, 0x18, 0x04, 0x40, 0x00, 0x00, 0x80, 0x08, 0x00, //#..# $$ # # -0x81, 0x18, 0x00, 0x88, 0x48, 0x88, 0x80, 0x88, 0x00, //#..# ##$#### ## -0x81, 0x18, 0x80, 0x88, 0x00, 0x00, 0x80, 0x80, 0x00, //#..## ## # # -0x81, 0x11, 0x00, 0x08, 0x80, 0x88, 0x80, 0x88, 0x80, //#... ## ### ### -0x80, 0x00, 0x88, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, //# ## $ # -0x88, 0x88, 0x88, 0x28, 0x00, 0x08, 0x80, 0x80, 0x80, //######@# ## # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, // ######## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 110 -0x0F, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //### ## -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x44, 0x08, 0x48, 0x88, 0x88, 0x88, 0x80, //# $$ #$######## -0x88, 0x08, 0x40, 0x40, 0x40, 0x80, 0x00, 0x80, //## #$ $ $ # # -0x81, 0x11, 0x18, 0x00, 0x04, 0x00, 0x00, 0x80, //#....# $ # -0x81, 0x11, 0x12, 0x80, 0x08, 0x88, 0x48, 0x80, //#....@# ###$## -0x81, 0x11, 0x14, 0x80, 0x00, 0x40, 0x40, 0x80, //#....$# $ $ # -0x81, 0x11, 0x14, 0x04, 0x80, 0x00, 0x00, 0x80, //#....$ $# # -0x88, 0x88, 0x80, 0x00, 0x80, 0x48, 0x48, 0x80, //##### # $#$## -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x40, 0x80, // ##### $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, // ### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 111 -0x0A, 0x08,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x08, 0x88, 0x88, 0x00, 0x08, // ##### # -0x08, 0x01, 0x10, 0x48, 0x08, // # .. $# # -0x08, 0x08, 0x15, 0x00, 0x08, // # #.* # -0x88, 0x05, 0x18, 0x40, 0x88, //## *.#$ ## -0x80, 0x40, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x00, 0x88, 0x02, 0x80, //# ## @# -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 112 -0x0E, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x08, 0x11, 0x11, 0x00, 0x08, 0x80, 0x00, // #.... ## -0x08, 0x18, 0x18, 0x00, 0x40, 0x88, 0x00, // #.#.# $ ## -0x88, 0x11, 0x11, 0x80, 0x80, 0x28, 0x80, //##....# # @## -0x80, 0x11, 0x11, 0x80, 0x08, 0x00, 0x88, //# ....# # ## -0x80, 0x00, 0x00, 0x84, 0x08, 0x84, 0x08, //# #$ ##$ # -0x88, 0x08, 0x88, 0x00, 0x40, 0x00, 0x08, //## ### $ # -0x08, 0x40, 0x04, 0x04, 0x04, 0x80, 0x08, // #$ $ $ $# # -0x08, 0x08, 0x00, 0x40, 0x40, 0x88, 0x08, // # # $ $ ## # -0x08, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, // # ### ## # -0x08, 0x00, 0x00, 0x88, 0x08, 0x80, 0x88, // # ## ## ## -0x08, 0x00, 0x40, 0x80, 0x04, 0x00, 0x80, // # $ # $ # -0x08, 0x88, 0x40, 0x40, 0x00, 0x88, 0x80, // ###$ $ ### -0x00, 0x08, 0x00, 0x88, 0x88, 0x80, 0x00, // # ##### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 113 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // # # -0x08, 0x04, 0x04, 0x40, 0x48, 0x00, 0x00, // # $ $$ $# -0x88, 0x80, 0x80, 0x04, 0x08, 0x00, 0x00, //### # $ # -0x81, 0x80, 0x00, 0x44, 0x08, 0x80, 0x00, //#.# $$ ## -0x81, 0x88, 0x80, 0x00, 0x40, 0x80, 0x00, //#.### $ # -0x81, 0x81, 0x04, 0x08, 0x80, 0x88, 0x88, //#.#. $ ## #### -0x81, 0x11, 0x00, 0x48, 0x80, 0x40, 0x08, //#... $## $ # -0x81, 0x11, 0x40, 0x00, 0x40, 0x00, 0x08, //#...$ $ # -0x81, 0x18, 0x88, 0x48, 0x88, 0x08, 0x28, //#..###$### #@# -0x81, 0x18, 0x08, 0x00, 0x00, 0x08, 0x88, //#..# # ### -0x88, 0x88, 0x08, 0x88, 0x88, 0x88, 0x00, //#### ####### -//Level: 114 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x81, 0x14, 0x11, 0x80, //#..$..# -0x81, 0x18, 0x11, 0x80, //#..#..# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x80, 0x04, 0x00, 0x80, //# $ # -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x80, 0x08, 0x20, 0x80, //# #@ # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 115 -0x08, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x08, 0x00, 0x08, // # # -0x88, 0x88, 0x40, 0x08, //####$ # -0x81, 0x10, 0x40, 0x08, //#.. $ # -0x81, 0x14, 0x00, 0x88, //#..$ ## -0x81, 0x18, 0x04, 0x80, //#..# $# -0x80, 0x18, 0x40, 0x88, //# .#$ ## -0x88, 0x88, 0x04, 0x08, //#### $ # -0x00, 0x80, 0x40, 0x08, // # $ # -0x00, 0x80, 0x02, 0x08, // # @ # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 116 -0x0C, 0x05,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x80, 0x00, 0x01, 0x11, 0x04, 0x08, //# ... $ # -0x80, 0x44, 0x45, 0x55, 0x04, 0x28, //# $$$*** $@# -0x80, 0x00, 0x01, 0x11, 0x04, 0x08, //# ... $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 117 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x02, 0x00, 0x08, //# @ # -0x80, 0x88, 0x48, 0x08, //# ##$# # -0x80, 0x40, 0x04, 0x08, //# $ $ # -0x88, 0x40, 0x08, 0x88, //##$ ### -0x08, 0x14, 0x01, 0x80, // #.$ .# -0x08, 0x11, 0x01, 0x80, // #.. .# -0x08, 0x88, 0x88, 0x80, // ###### -//Level: 118 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, // ####### -0x88, 0x00, 0x01, 0x08, //## . # -0x80, 0x40, 0x04, 0x28, //# $ $@# -0x81, 0x41, 0x88, 0x88, //#.$.#### -0x80, 0x08, 0x80, 0x00, //# ## -0x80, 0x08, 0x00, 0x00, //# # -0x80, 0x08, 0x00, 0x00, //# # -0x88, 0x88, 0x00, 0x00, //#### -//Level: 119 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, // ########## # -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # # -0x00, 0x00, 0x08, 0x00, 0x40, 0x40, 0x00, 0x04, 0x40, 0x80, // # $ $ $$ # -0x00, 0x00, 0x08, 0x08, 0x88, 0x88, 0x08, 0x80, 0x40, 0x80, // # ##### ## $ # -0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x80, 0x40, 0x80, // #$$ #$## $ # -0x00, 0x00, 0x08, 0x08, 0x88, 0x08, 0x08, 0x84, 0x00, 0x80, // # ### # ##$ # -0x88, 0x88, 0x88, 0x08, 0x88, 0x04, 0x04, 0x00, 0x00, 0x80, //###### ### $ $ # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x80, //#.... ## # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //#.... ###### -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x88, 0x82, 0x88, 0x00, 0x00, 0x00, //###########@## -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, // ### -//Level: 120 -0x10, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############## -0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x18, 0x00, //# ### #.# -0x80, 0x40, 0x00, 0x00, 0x40, 0x08, 0x18, 0x00, //# $ $ #.# -0x80, 0x40, 0x08, 0x08, 0x00, 0x08, 0x18, 0x80, //# $ # # #.## -0x88, 0x08, 0x88, 0x08, 0x84, 0x88, 0x11, 0x88, //## ### ##$##..## -0x80, 0x40, 0x08, 0x48, 0x00, 0x08, 0x02, 0x18, //# $ #$# # @.# -0x80, 0x04, 0x04, 0x00, 0x04, 0x00, 0x11, 0x18, //# $ $ $ ...# -0x80, 0x40, 0x08, 0x48, 0x00, 0x08, 0x11, 0x08, //# $ #$# #.. # -0x88, 0x08, 0x88, 0x08, 0x80, 0x88, 0x11, 0x88, //## ### ## ##..## -0x80, 0x04, 0x08, 0x08, 0x04, 0x08, 0x18, 0x80, //# $ # # $ #.## -0x80, 0x44, 0x00, 0x00, 0x04, 0x08, 0x18, 0x00, //# $$ $ #.# -0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x18, 0x00, //# ### #.# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############## -//Level: 121 -0x0F, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // # # # # # -0x00, 0x00, 0x00, 0x80, 0x04, 0x04, 0x80, 0x80, // # $ $# # -0x88, 0x88, 0x88, 0x80, 0x00, 0x40, 0x00, 0x80, //####### $ # -0x81, 0x18, 0x00, 0x88, 0x04, 0x04, 0x80, 0x80, //#..# ## $ $# # -0x81, 0x10, 0x00, 0x88, 0x04, 0x04, 0x00, 0x80, //#.. ## $ $ # -0x81, 0x18, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, //#..# ## ###### -0x81, 0x18, 0x08, 0x04, 0x04, 0x08, 0x00, 0x00, //#..# # $ $ # -0x81, 0x10, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, //#.. $ # -0x80, 0x08, 0x88, 0x02, 0x08, 0x88, 0x00, 0x00, //# ### @ ### -0x88, 0x88, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, //#### ##### -//Level: 122 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x08, 0x00, 0x48, 0x48, 0x08, // # $#$# # -0x08, 0x88, 0x88, 0x80, 0x08, 0x04, 0x08, // ###### # $ # -0x08, 0x00, 0x08, 0x04, 0x00, 0x40, 0x08, // # # $ $ # -0x88, 0x04, 0x00, 0x00, 0x08, 0x88, 0x08, //## $ ### # -0x80, 0x00, 0x84, 0x88, 0x88, 0x00, 0x08, //# #$#### # -0x80, 0x00, 0x04, 0x08, 0x88, 0x08, 0x88, //# $ ### ### -0x88, 0x88, 0x81, 0x10, 0x28, 0x08, 0x80, //#####.. @# ## -0x00, 0x08, 0x11, 0x14, 0x04, 0x40, 0x80, // #...$ $$ # -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, 0x80, // #...# # -0x00, 0x08, 0x11, 0x18, 0x88, 0x88, 0x80, // #...###### -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 123 -0x0D, 0x0A,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x82, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@$ $ $ # -0x84, 0x88, 0x80, 0x40, 0x80, 0x80, 0x80, //#$### $ # # # -0x80, 0x08, 0x00, 0x80, 0x40, 0x00, 0x80, //# # # $ # -0x80, 0x48, 0x00, 0x00, 0x80, 0x88, 0x80, //# $# # ### -0x80, 0x04, 0x08, 0x48, 0x00, 0x08, 0x00, //# $ #$# # -0x81, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, //#......... # -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, //######## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 124 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x00, 0x00, 0x80, //#@ # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x41, 0x51, 0x40, 0x80, //# $.*.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 125 -0x09, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x00, 0x12, 0x88, 0x00, //## .@## -0x80, 0x50, 0x80, 0x08, 0x80, //# * # ## -0x80, 0x00, 0x80, 0x00, 0x80, //# # # -0x80, 0x48, 0x80, 0x80, 0x80, //# $## # # -0x80, 0x04, 0x04, 0x51, 0x80, //# $ $*.# -0x80, 0x01, 0x80, 0x00, 0x80, //# .# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 126 -0x13, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -0x80, 0x00, 0x11, 0x10, 0x02, 0x00, 0x11, 0x10, 0x00, 0x80, //# ... @ ... # -0x80, 0x44, 0x40, 0x08, 0x88, 0x88, 0x00, 0x44, 0x40, 0x80, //# $$$ ##### $$$ # -0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x80, //## ### ### ## -0x08, 0x80, 0x08, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x00, // ## # ## # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### #### -//Level: 127 -0x10, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // # ########### -0x00, 0x80, 0x00, 0x04, 0x00, 0x04, 0x04, 0x08, // # $ $ $ # -0x00, 0x80, 0x48, 0x04, 0x08, 0x00, 0x40, 0x08, // # $# $ # $ # -0x00, 0x80, 0x04, 0x04, 0x00, 0x80, 0x00, 0x08, // # $ $ # # -0x88, 0x80, 0x48, 0x08, 0x00, 0x88, 0x88, 0x08, //### $# # #### # -0x82, 0x84, 0x04, 0x04, 0x00, 0x88, 0x00, 0x08, //#@#$ $ $ ## # -0x80, 0x00, 0x04, 0x08, 0x48, 0x00, 0x08, 0x08, //# $ #$# # # -0x80, 0x00, 0x40, 0x00, 0x04, 0x04, 0x04, 0x08, //# $ $ $ $ # -0x88, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, //##### ######### -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ######## -//Level: 128 -0x0B, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x88, 0x88, 0x80, 0x28, 0x00, //####### @# -0x80, 0x00, 0x00, 0x40, 0x08, 0x00, //# $ # -0x80, 0x00, 0x48, 0x80, 0x48, 0x00, //# $## $# -0x88, 0x48, 0x11, 0x18, 0x08, 0x00, //##$#...# # -0x08, 0x04, 0x11, 0x10, 0x08, 0x00, // # $... # -0x08, 0x08, 0x10, 0x18, 0x08, 0x80, // # #. .# ## -0x08, 0x00, 0x08, 0x08, 0x40, 0x80, // # # #$ # -0x08, 0x40, 0x04, 0x00, 0x00, 0x80, // #$ $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x80, // # ####### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 129 -0x11, 0x10,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############ -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, // # ## -0x00, 0x00, 0x80, 0x08, 0x08, 0x44, 0x04, 0x00, 0x80, // # # #$$ $ # -0x00, 0x00, 0x84, 0x08, 0x48, 0x00, 0x88, 0x02, 0x80, // #$ #$# ## @# -0x00, 0x08, 0x80, 0x88, 0x08, 0x04, 0x08, 0x08, 0x80, // ## ## # $ # ## -0x00, 0x08, 0x00, 0x04, 0x08, 0x40, 0x08, 0x08, 0x00, // # $ #$ # # -0x00, 0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, // # # $ # # -0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x88, 0x08, 0x00, // ## $ $ ## # -0x00, 0x08, 0x00, 0x80, 0x08, 0x80, 0x04, 0x08, 0x00, // # # ## $ # -0x00, 0x08, 0x00, 0x00, 0x88, 0x04, 0x48, 0x08, 0x00, // # ## $$# # -0x88, 0x88, 0x88, 0x44, 0x00, 0x08, 0x00, 0x08, 0x00, //######$$ # # -0x81, 0x11, 0x18, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, //#....# ######## -0x81, 0x81, 0x11, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, //#.#... ## -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#.... # -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //######### -//Level: 130 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, //# ### -0x80, 0x48, 0x00, 0x04, 0x08, 0x80, 0x04, 0x00, 0x00, 0x88, //# $# $ ## $ ## -0x80, 0x00, 0x04, 0x88, 0x80, 0x00, 0x08, 0x04, 0x40, 0x88, //# $### # $$ ## -0x81, 0x88, 0x80, 0x00, 0x00, 0x40, 0x40, 0x88, 0x00, 0x88, //#.### $ $ ## ## -0x81, 0x11, 0x80, 0x08, 0x00, 0x80, 0x00, 0x08, 0x40, 0x08, //#...# # # #$ # -0x81, 0x18, 0x84, 0x48, 0x88, 0x80, 0x40, 0x08, 0x00, 0x08, //#..##$$#### $ # # -0x81, 0x11, 0x80, 0x00, 0x00, 0x04, 0x08, 0x80, 0x08, 0x88, //#...# $ ## ### -0x81, 0x11, 0x40, 0x08, 0x88, 0x00, 0x80, 0x00, 0x08, 0x08, //#...$ ### # # # -0x88, 0x11, 0x00, 0x48, 0x00, 0x88, 0x00, 0x08, 0x82, 0x08, //##.. $# ## ##@ # -0x88, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //###.# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 131 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x11, 0x18, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#....### # -0x81, 0x11, 0x18, 0x88, 0x88, 0x08, 0x00, 0x84, 0x80, 0x88, //#....##### # #$# ## -0x81, 0x11, 0x18, 0x88, 0x00, 0x08, 0x40, 0x04, 0x00, 0x08, //#....### #$ $ # -0x81, 0x11, 0x18, 0x88, 0x00, 0x00, 0x40, 0x08, 0x44, 0x88, //#....### $ #$$## -0x88, 0x00, 0x88, 0x88, 0x04, 0x80, 0x08, 0x40, 0x40, 0x08, //## #### $# #$ $ # -0x88, 0x00, 0x88, 0x88, 0x00, 0x40, 0x04, 0x00, 0x80, 0x08, //## #### $ $ # # -0x82, 0x00, 0x88, 0x88, 0x48, 0x88, 0x48, 0x80, 0x40, 0x08, //#@ ####$###$## $ # -0x88, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x40, 0x08, //## # # $ # -0x88, 0x00, 0x08, 0x88, 0x00, 0x80, 0x04, 0x00, 0x88, 0x88, //## ### # $ #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, //######## # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 132 -0x0C, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, // ########## -0x88, 0x82, 0x00, 0x10, 0x00, 0x08, //###@ . # -0x80, 0x00, 0x88, 0x48, 0x80, 0x08, //# ##$## # -0x80, 0x04, 0x10, 0x10, 0x14, 0x88, //# $. . .$## -0x88, 0x04, 0x88, 0x48, 0x80, 0x80, //## $##$## # -0x08, 0x00, 0x00, 0x10, 0x00, 0x80, // # . # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 133 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x00, 0x80, //### # -0x80, 0x40, 0x80, 0x88, //# $ # ## -0x80, 0x41, 0x41, 0x08, //# $.$. # -0x80, 0x88, 0x10, 0x08, //# ##. # -0x80, 0x02, 0x08, 0x88, //# @ ### -0x88, 0x88, 0x88, 0x00, //###### -//Level: 134 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -0x00, 0x80, 0x00, 0x08, 0x88, // # ### -0x00, 0x80, 0x40, 0x00, 0x08, // # $ # -0x88, 0x80, 0x40, 0x88, 0x08, //### $ ## # -0x81, 0x11, 0x04, 0x00, 0x08, //#... $ # -0x81, 0x11, 0x48, 0x40, 0x88, //#...$#$ ## -0x88, 0x88, 0x08, 0x04, 0x08, //#### # $ # -0x00, 0x08, 0x00, 0x20, 0x08, // # @ # -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -//Level: 135 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //###### # -0x80, 0x00, 0x04, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //# $ ########### -0x80, 0x88, 0x04, 0x00, 0x88, 0x00, 0x80, 0x11, 0x11, 0x80, //# ## $ ## # ....# -0x80, 0x40, 0x40, 0x04, 0x00, 0x00, 0x80, 0x11, 0x11, 0x80, //# $ $ $ # ....# -0x80, 0x80, 0x04, 0x40, 0x88, 0x80, 0x80, 0x11, 0x11, 0x80, //# # $$ ### # ....# -0x80, 0x24, 0x40, 0x00, 0x08, 0x80, 0x80, 0x11, 0x11, 0x80, //# @$$ ## # ....# -0x88, 0x88, 0x00, 0x80, 0x08, 0x00, 0x88, 0x08, 0x88, 0x80, //#### # # ## #### -0x00, 0x08, 0x04, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, // # $#### # -0x00, 0x08, 0x40, 0x40, 0x88, 0x88, 0x48, 0x08, 0x00, 0x00, // #$ $ ####$# # -0x00, 0x88, 0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x00, 0x00, // ## # # # # # -0x00, 0x80, 0x04, 0x44, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // # $$$ # -0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, // # ##### # -0x00, 0x80, 0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, 0x00, // # #### #### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 136 -0x0B, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x08, 0x00, 0x08, 0x00, // # # # -0x08, 0x04, 0x44, 0x44, 0x08, 0x00, // # $$$$$ # -0x88, 0x04, 0x04, 0x04, 0x08, 0x00, //## $ $ $ # -0x80, 0x40, 0x02, 0x00, 0x08, 0x00, //# $ @ # -0x80, 0x40, 0x88, 0x88, 0x08, 0x80, //# $ #### ## -0x80, 0x08, 0x11, 0x11, 0x10, 0x80, //# #..... # -0x88, 0x00, 0x11, 0x11, 0x10, 0x80, //## ..... # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 137 -0x0E, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x88, // ## ## -0x00, 0x00, 0x88, 0x00, 0x48, 0x80, 0x08, // ## $## # -0x00, 0x00, 0x80, 0x08, 0x00, 0x04, 0x08, // # # $ # -0x00, 0x00, 0x80, 0x80, 0x08, 0x08, 0x08, // # # # # # -0x00, 0x00, 0x80, 0x40, 0x40, 0x04, 0x08, // # $ $ $ # -0x88, 0x88, 0x88, 0x80, 0x84, 0x80, 0x08, //####### #$# # -0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x88, //# $ $ ## -0x82, 0x11, 0x40, 0x55, 0x18, 0x88, 0x80, //#@..$ **.#### -0x88, 0x11, 0x11, 0x11, 0x88, 0x00, 0x00, //##......## -0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -//Level: 138 -0x0D, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x88, 0x80, 0x80, 0x88, 0x88, 0x80, // #### # ##### -0x88, 0x00, 0x04, 0x04, 0x00, 0x00, 0x80, //## $ $ # -0x80, 0x48, 0x08, 0x11, 0x18, 0x40, 0x80, //# $# #...#$ # -0x82, 0x40, 0x01, 0x11, 0x80, 0x08, 0x80, //#@$ ...# ## -0x80, 0x48, 0x01, 0x18, 0x04, 0x00, 0x80, //# $# ..# $ # -0x88, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, //## .# # -0x08, 0x88, 0x04, 0x04, 0x08, 0x00, 0x80, // ### $ $ # # -0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, // ### #### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 139 -0x09, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x28, 0x00, 0x00, //# @# -0x80, 0x40, 0x08, 0x88, 0x80, //# $ #### -0x80, 0x45, 0x11, 0x50, 0x80, //# $*..* # -0x80, 0x51, 0x15, 0x40, 0x80, //# *..*$ # -0x88, 0x88, 0x00, 0x40, 0x80, //#### $ # -0x00, 0x08, 0x00, 0x00, 0x80, // # # -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -//Level: 140 -0x09, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x00, 0x00, 0x88, 0x00, //## ## -0x80, 0x08, 0x80, 0x08, 0x00, //# ## # -0x80, 0x80, 0x08, 0x08, 0x00, //# # # # -0x81, 0x00, 0x18, 0x48, 0x80, //#. .#$## -0x80, 0x80, 0x50, 0x40, 0x80, //# # * $ # -0x80, 0x80, 0x50, 0x42, 0x80, //# # * $@# -0x80, 0x01, 0x10, 0x40, 0x80, //# .. $ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 141 -0x0B, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x88, 0x00, 0x08, 0x00, // # ## # -0x08, 0x00, 0x04, 0x00, 0x08, 0x00, // # $ # -0x08, 0x40, 0x88, 0x80, 0x48, 0x00, // #$ ### $# -0x08, 0x08, 0x11, 0x18, 0x08, 0x00, // # #...# # -0x88, 0x08, 0x11, 0x18, 0x08, 0x80, //## #...# ## -0x80, 0x40, 0x04, 0x00, 0x40, 0x80, //# $ $ $ # -0x80, 0x00, 0x00, 0x80, 0x20, 0x80, //# # @ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 142 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x20, 0x08, 0x88, 0x80, // #@ #### -0x00, 0x88, 0x88, 0x84, 0x00, 0x00, 0x80, // #####$ # -0x00, 0x81, 0x11, 0x80, 0x08, 0x04, 0x88, // #...# # $## -0x00, 0x81, 0x51, 0x84, 0x08, 0x40, 0x08, // #.*.#$ #$ # -0x88, 0x81, 0x11, 0x04, 0x08, 0x08, 0x08, //###... $ # # # -0x80, 0x01, 0x18, 0x84, 0x80, 0x00, 0x08, //# ..##$# # -0x80, 0x08, 0x88, 0x80, 0x08, 0x04, 0x08, //# #### # $ # -0x88, 0x00, 0x04, 0x00, 0x08, 0x44, 0x08, //## $ #$$ # -0x08, 0x00, 0x88, 0x08, 0x80, 0x00, 0x88, // # ## ## ## -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, // ##### # -0x00, 0x00, 0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 143 -0x11, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, // ##### # -0x00, 0x00, 0x88, 0x04, 0x00, 0x40, 0x08, 0x88, 0x80, // ## $ $ #### -0x88, 0x88, 0x80, 0x40, 0x04, 0x04, 0x08, 0x81, 0x80, //##### $ $ $ ##.# -0x80, 0x00, 0x00, 0x00, 0x44, 0x00, 0x88, 0x11, 0x80, //# $$ ##..# -0x80, 0x08, 0x88, 0x88, 0x80, 0x88, 0x81, 0x10, 0x80, //# ###### ###.. # -0x88, 0x08, 0x00, 0x80, 0x00, 0x08, 0x11, 0x10, 0x80, //## # # #... # -0x80, 0x40, 0x00, 0x80, 0x00, 0x08, 0x11, 0x10, 0x80, //# $ # #... # -0x82, 0x08, 0x40, 0x88, 0x08, 0x88, 0x81, 0x11, 0x80, //#@ #$ ## ####...# -0x88, 0x88, 0x00, 0x40, 0x44, 0x00, 0x88, 0x11, 0x80, //#### $ $$ ##..# -0x00, 0x08, 0x80, 0x04, 0x04, 0x00, 0x41, 0x11, 0x80, // ## $ $ $...# -0x00, 0x00, 0x80, 0x44, 0x00, 0x40, 0x80, 0x01, 0x80, // # $$ $ # .# -0x00, 0x00, 0x80, 0x00, 0x40, 0x40, 0x08, 0x88, 0x80, // # $ $ #### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, // ###### # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 144 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x01, 0x11, 0x18, 0x00, 0x00, 0x88, 0x88, //# ....# #### -0x80, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, //# .... # -0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, //# # ########## # -0x80, 0x84, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x81, 0x18, //# #$ # ###..# -0x80, 0x04, 0x00, 0x08, 0x44, 0x88, 0x80, 0x00, 0x81, 0x18, //# $ #$$### #..# -0x80, 0x40, 0x88, 0x80, 0x40, 0x00, 0x40, 0x00, 0x81, 0x18, //# $ ### $ $ #..# -0x80, 0x40, 0x80, 0x00, 0x40, 0x40, 0x80, 0x08, 0x81, 0x18, //# $ # $ $ # ##..# -0x80, 0x08, 0x00, 0x44, 0x08, 0x04, 0x08, 0x80, 0x00, 0x88, //# # $$ # $ ## ## -0x82, 0x88, 0x04, 0x80, 0x04, 0x00, 0x40, 0x00, 0x00, 0x88, //#@## $# $ $ ## -0x88, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x80, 0x08, 0x88, //## ## # ### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 145 -0x11, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //################ -0x80, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x08, 0x00, //# #@ # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x04, 0x48, 0x00, //# # # # # $ $$# -0x80, 0x81, 0x11, 0x80, 0x84, 0x44, 0x00, 0x08, 0x00, //# #...# #$$$ # -0x80, 0x01, 0x11, 0x80, 0x80, 0x40, 0x04, 0x48, 0x80, //# ...# # $ $$## -0x80, 0x88, 0x18, 0x80, 0x80, 0x88, 0x00, 0x00, 0x80, //# ##.## # ## # -0x80, 0x81, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, //# #... $ # -0x80, 0x88, 0x08, 0x88, 0x00, 0x88, 0x88, 0x88, 0x80, //# ## ### ####### -0x80, 0x00, 0x08, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, //# # #### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 146 -0x0A, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x00, 0x88, 0x00, 0x80, 0x28, // ## # @# -0x00, 0x80, 0x00, 0x80, 0x08, // # # # -0x00, 0x84, 0x04, 0x04, 0x08, // #$ $ $ # -0x00, 0x80, 0x48, 0x80, 0x08, // # $## # -0x88, 0x80, 0x40, 0x80, 0x88, //### $ # ## -0x81, 0x11, 0x11, 0x00, 0x80, //#..... # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 147 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x01, 0x11, 0x80, // ##### ...# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x01, 0x11, 0x80, // # ## ...# -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, // ## ## ...# -0x00, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, // ### ######## -0x00, 0x00, 0x08, 0x04, 0x44, 0x08, 0x80, 0x00, 0x00, // # $$$ ## -0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x88, 0x88, 0x80, // ##### $ $ ##### -0x88, 0x00, 0x08, 0x40, 0x40, 0x00, 0x80, 0x00, 0x80, //## #$ $ # # -0x82, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@ $ $ $ $ # -0x88, 0x88, 0x88, 0x04, 0x40, 0x40, 0x88, 0x88, 0x80, //###### $$ $ ##### -0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, // # $ # -0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x80, 0x00, 0x00, // #### ### -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 148 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, 0x00, 0x80, // ### # # -0x00, 0x00, 0x00, 0x82, 0x40, 0x04, 0x04, 0x40, 0x80, // #@$ $ $$ # -0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, //### ###### # -0x81, 0x88, 0x80, 0x00, 0x88, 0x00, 0x88, 0x40, 0x80, //#.### ## ##$ # -0x81, 0x11, 0x11, 0x51, 0x00, 0x88, 0x04, 0x00, 0x80, //#.....*. ## $ # -0x80, 0x58, 0x80, 0x08, 0x40, 0x80, 0x04, 0x00, 0x80, //# *## #$ # $ # -0x80, 0x00, 0x80, 0x04, 0x00, 0x11, 0x11, 0x11, 0x80, //# # $ ......# -0x88, 0x04, 0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, //## $## ######### -0x08, 0x04, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # $ #### -0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 149 -0x0B, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x08, 0x02, 0x08, 0x88, 0x88, 0x80, // # @ ###### -0x08, 0x08, 0x11, 0x50, 0x00, 0x80, // # #..* # -0x08, 0x01, 0x11, 0x80, 0x00, 0x80, // # ...# # -0x88, 0x48, 0x80, 0x40, 0x40, 0x80, //##$## $ $ # -0x80, 0x00, 0x84, 0x88, 0x88, 0x80, //# #$##### -0x80, 0x00, 0x40, 0x00, 0x80, 0x00, //# $ # -0x88, 0x88, 0x80, 0x80, 0x80, 0x00, //##### # # -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, // # # -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 150 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x01, 0x02, 0x80, //# . @# -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x51, 0x40, 0x80, //# *.$ # -0x81, 0x45, 0x41, 0x80, //#.$*$.# -0x80, 0x41, 0x50, 0x80, //# $.* # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 151 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x50, 0x00, 0x80, //#@ * # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x01, 0x41, 0x40, 0x80, //# .$.$ # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 152 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x02, 0x88, //#### @## -0x80, 0x05, 0x40, 0x88, //# *$ ## -0x80, 0x00, 0x00, 0x88, //# ## -0x88, 0x01, 0x88, 0x88, //## .#### -0x88, 0x40, 0x88, 0x88, //##$ #### -0x88, 0x01, 0x88, 0x88, //## .#### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 153 -0x09, 0x0C,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x00, // # #### -0x08, 0x40, 0x20, 0x08, 0x00, // #$ @ # -0x88, 0x00, 0x88, 0x48, 0x80, //## ##$## -0x80, 0x58, 0x18, 0x00, 0x80, //# *#.# # -0x80, 0x11, 0x54, 0x40, 0x80, //# ..*$$ # -0x80, 0x18, 0x18, 0x00, 0x80, //# .#.# # -0x88, 0x00, 0x08, 0x08, 0x80, //## # ## -0x08, 0x88, 0x04, 0x00, 0x80, // ### $ # -0x00, 0x08, 0x08, 0x00, 0x80, // # # # -0x00, 0x08, 0x00, 0x08, 0x80, // # ## -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 154 -0x0C, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x81, 0x11, 0x08, 0x00, 0x00, 0x08, //#... # # -0x81, 0x10, 0x08, 0x08, 0x80, 0x08, //#.. # ## # -0x81, 0x10, 0x00, 0x00, 0x80, 0x08, //#.. # # -0x81, 0x10, 0x08, 0x04, 0x88, 0x08, //#.. # $## # -0x81, 0x11, 0x08, 0x40, 0x40, 0x08, //#... #$ $ # -0x88, 0x88, 0x88, 0x00, 0x44, 0x08, //###### $$ # -0x08, 0x80, 0x04, 0x04, 0x40, 0x08, // ## $ $$ # -0x08, 0x20, 0x44, 0x40, 0x08, 0x08, // #@ $$$ # # -0x08, 0x80, 0x40, 0x88, 0x00, 0x08, // ## $ ## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, // ########## -//Level: 155 -0x0B, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -0x80, 0x00, 0x00, 0x80, 0x08, 0x00, //# # # -0x80, 0x04, 0x04, 0x80, 0x08, 0x80, //# $ $# ## -0x80, 0x08, 0x81, 0x80, 0x00, 0x80, //# ##.# # -0x88, 0x48, 0x81, 0x88, 0x40, 0x80, //##$##.##$ # -0x80, 0x41, 0x11, 0x11, 0x00, 0x80, //# $..... # -0x82, 0x48, 0x81, 0x88, 0x48, 0x80, //#@$##.##$## -0x88, 0x08, 0x81, 0x80, 0x00, 0x80, //## ##.# # -0x80, 0x00, 0x40, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x88, 0x80, //# # ### -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //######### -//Level: 156 -0x0F, 0x0C,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, //##### # -0x80, 0x00, 0x40, 0x20, 0x80, 0x00, 0x00, 0x00, //# $ @ # -0x80, 0x04, 0x08, 0x18, 0x88, 0x88, 0x00, 0x00, //# $ #.##### -0x88, 0x40, 0x88, 0x18, 0x80, 0x08, 0x88, 0x80, //##$ ##.## #### -0x08, 0x00, 0x11, 0x11, 0x10, 0x48, 0x00, 0x80, // # ..... $# # -0x08, 0x04, 0x88, 0x18, 0x80, 0x08, 0x40, 0x80, // # $##.## #$ # -0x08, 0x00, 0x08, 0x18, 0x80, 0x00, 0x00, 0x80, // # #.## # -0x08, 0x88, 0x04, 0x08, 0x88, 0x88, 0x08, 0x80, // ### $ ##### ## -0x00, 0x08, 0x08, 0x40, 0x00, 0x00, 0x40, 0x80, // # #$ $ # -0x00, 0x08, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, // # ### # -0x00, 0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x80, // ###### ##### -//Level: 157 -0x12, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // # ######### -0x08, 0x80, 0x08, 0x80, 0x08, 0x00, 0x08, 0x00, 0x00, // ## ## # # -0x08, 0x00, 0x48, 0x04, 0x24, 0x00, 0x08, 0x88, 0x80, // # $# $@$ #### -0x08, 0x40, 0x04, 0x00, 0x80, 0x40, 0x48, 0x00, 0x88, // #$ $ # $ $# ## -0x88, 0x00, 0x48, 0x80, 0x84, 0x04, 0x00, 0x00, 0x08, //## $## #$ $ # -0x80, 0x08, 0x00, 0x80, 0x80, 0x00, 0x44, 0x40, 0x08, //# # # # $$$ # -0x80, 0x40, 0x00, 0x04, 0x00, 0x48, 0x80, 0x88, 0x88, //# $ $ $## #### -0x80, 0x40, 0x40, 0x84, 0x80, 0x08, 0x00, 0x80, 0x00, //# $ $ #$# # # -0x88, 0x00, 0x88, 0x80, 0x08, 0x88, 0x40, 0x80, 0x00, //## ### ###$ # -0x08, 0x00, 0x81, 0x11, 0x10, 0x00, 0x00, 0x80, 0x00, // # #.... # -0x08, 0x88, 0x81, 0x11, 0x11, 0x18, 0x88, 0x80, 0x00, // ####......#### -0x00, 0x08, 0x11, 0x11, 0x88, 0x88, 0x00, 0x00, 0x00, // #....#### -0x00, 0x08, 0x11, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, // #...## -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // #...# -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 158 -0x09, 0x0C,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x40, 0x88, 0x80, 0x00, // #$ ### -0x08, 0x00, 0x02, 0x80, 0x00, // # @# -0x88, 0x08, 0x10, 0x88, 0x80, //## #. ### -0x80, 0x08, 0x51, 0x40, 0x80, //# #*.$ # -0x80, 0x44, 0x11, 0x80, 0x80, //# $$..# # -0x88, 0x08, 0x81, 0x00, 0x80, //## ##. # -0x08, 0x04, 0x00, 0x88, 0x80, // # $ ### -0x08, 0x00, 0x88, 0x80, 0x00, // # ### -0x08, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 159 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ##### # -0x08, 0x88, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, // #### $ $ $ $ # -0x08, 0x00, 0x80, 0x04, 0x08, 0x88, 0x00, 0x80, // # # $ ### # -0x08, 0x00, 0x00, 0x20, 0x00, 0x08, 0x40, 0x80, // # @ #$ # -0x08, 0x08, 0x88, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### ### # -0x08, 0x08, 0x11, 0x11, 0x18, 0x04, 0x40, 0x80, // # #.....# $$ # -0x08, 0x08, 0x11, 0x11, 0x18, 0x00, 0x48, 0x80, // # #.....# $## -0x88, 0x48, 0x11, 0x11, 0x14, 0x00, 0x08, 0x00, //##$#.....$ # -0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x88, 0x00, //# ## # ### -0x80, 0x40, 0x40, 0x00, 0x44, 0x08, 0x00, 0x00, //# $ $ $$ # -0x88, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, //## ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, 0x00, // #### #### -//Level: 160 -0x10, 0x0C,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -0x81, 0x11, 0x80, 0x88, 0x88, 0x80, 0x00, 0x00, //#...# ##### -0x81, 0x11, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, //#...### # -0x81, 0x11, 0x10, 0x00, 0x44, 0x88, 0x88, 0x80, //#.... $$##### -0x81, 0x11, 0x10, 0x08, 0x00, 0x80, 0x00, 0x88, //#.... # # ## -0x81, 0x18, 0x48, 0x88, 0x80, 0x84, 0x80, 0x08, //#..#$#### #$# # -0x88, 0x04, 0x00, 0x80, 0x00, 0x00, 0x44, 0x08, //## $ # $$ # -0x80, 0x04, 0x80, 0x20, 0x40, 0x44, 0x80, 0x08, //# $# @ $ $$# # -0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x40, 0x88, //# $ $ $ # $ ## -0x80, 0x00, 0x80, 0x04, 0x08, 0x80, 0x00, 0x80, //# # $ ## # -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, 0x80, //###### ###### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 161 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x11, 0x11, 0x80, // # ....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x11, 0x11, 0x80, //############ ....# -0x80, 0x00, 0x08, 0x00, 0x40, 0x40, 0x00, 0x11, 0x11, 0x80, //# # $ $ ....# -0x80, 0x44, 0x48, 0x40, 0x04, 0x08, 0x00, 0x11, 0x11, 0x80, //# $$$#$ $ # ....# -0x80, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x11, 0x11, 0x80, //# $ $ # ....# -0x80, 0x44, 0x08, 0x40, 0x40, 0x48, 0x88, 0x88, 0x88, 0x80, //# $$ #$ $ $######## -0x80, 0x04, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //## ######### -0x80, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# # ## -0x80, 0x00, 0x00, 0x40, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# $ ## -0x80, 0x04, 0x48, 0x44, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, //# $$#$$ @# -0x80, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -//Level: 162 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x00, 0x88, 0x88, 0x80, 0x00, 0x08, //# # ##### # -0x88, 0x04, 0x00, 0x80, 0x00, 0x88, 0x88, 0x00, 0x40, 0x08, //## $ # #### $ # -0x88, 0x88, 0x04, 0x40, 0x00, 0x81, 0x18, 0x00, 0x80, 0x08, //#### $$ #..# # # -0x80, 0x04, 0x00, 0x40, 0x08, 0x81, 0x18, 0x88, 0x80, 0x88, //# $ $ ##..#### ## -0x80, 0x40, 0x00, 0x88, 0x81, 0x11, 0x10, 0x00, 0x44, 0x08, //# $ ###.... $$ # -0x80, 0x08, 0x48, 0x00, 0x01, 0x11, 0x18, 0x08, 0x04, 0x08, //# #$# ....# # $ # -0x80, 0x80, 0x08, 0x04, 0x01, 0x18, 0x88, 0x48, 0x00, 0x08, //# # # $ ..###$# # -0x80, 0x80, 0x00, 0x40, 0x81, 0x18, 0x00, 0x08, 0x80, 0x08, //# # $ #..# ## # -0x80, 0x00, 0x48, 0x00, 0x88, 0x88, 0x00, 0x08, 0x04, 0x88, //# $# #### # $## -0x80, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x88, //# # # @# ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 163 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x18, 0x88, 0x18, //##.###.# -0x88, 0x08, 0x00, 0x18, //## # .# -0x88, 0x04, 0x40, 0x28, //## $$ @# -0x88, 0x00, 0x40, 0x08, //## $ # -0x88, 0x00, 0x80, 0x08, //## # # -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 164 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x80, 0x00, 0x88, 0x01, 0x11, 0x11, 0x18, //# ## ......# -0x80, 0x08, 0x88, 0x01, 0x18, 0x18, 0x08, //# ### ..#.# # -0x80, 0x48, 0x00, 0x11, 0x88, 0x10, 0x18, //# $# ..##. .# -0x88, 0x08, 0x04, 0x80, 0x80, 0x00, 0x08, //## # $# # # -0x80, 0x40, 0x04, 0x00, 0x00, 0x80, 0x88, //# $ $ # ## -0x80, 0x48, 0x08, 0x04, 0x88, 0x84, 0x08, //# $# # $###$ # -0x82, 0x08, 0x08, 0x04, 0x00, 0x80, 0x08, //#@ # # $ # # -0x80, 0x48, 0x08, 0x84, 0x80, 0x84, 0x08, //# $# ##$# #$ # -0x80, 0x40, 0x00, 0x80, 0x00, 0x00, 0x08, //# $ # # -0x88, 0x80, 0x00, 0x80, 0x88, 0x40, 0x88, //### # ##$ ## -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ##### # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 165 -0x0F, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x80, 0x80, //# $.$.$.$.$.# # -0x80, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x80, //# .$.$.$.$.$ # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x82, 0x80, //# $.$.$.$.$.#@# -0x80, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x80, //# .$.$.$.$.$ # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x80, 0x80, //# $.$.$.$.$.# # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 166 -0x0F, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x08, 0x04, 0x04, 0x08, 0x80, 0x00, 0x00, // # $ $ ## -0x00, 0x08, 0x88, 0x88, 0x11, 0x88, 0x88, 0x80, // #####..##### -0x88, 0x88, 0x88, 0x11, 0x51, 0x00, 0x40, 0x80, //######..*. $ # -0x80, 0x04, 0x24, 0x11, 0x11, 0x84, 0x40, 0x80, //# $@$....#$$ # -0x80, 0x00, 0x40, 0x84, 0x88, 0x80, 0x00, 0x80, //# $ #$### # -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x88, 0x80, //##### ### -0x00, 0x00, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, // ### #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 167 -0x09, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x88, 0x81, 0x80, 0x00, 0x80, //###.# # -0x80, 0x41, 0x40, 0x80, 0x80, //# $.$ # # -0x80, 0x85, 0x04, 0x00, 0x80, //# #* $ # -0x82, 0x01, 0x08, 0x88, 0x80, //#@ . #### -0x88, 0x88, 0x88, 0x00, 0x00, //###### -//Level: 168 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -0x00, 0x00, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // # # #### -0x88, 0x88, 0x80, 0x48, 0x40, 0x80, 0x08, 0x80, 0x00, 0x00, //##### $#$ # ## -0x81, 0x10, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, //#.. # # # # -0x81, 0x10, 0x80, 0x48, 0x40, 0x80, 0x04, 0x88, 0x88, 0x00, //#.. # $#$ # $#### -0x81, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x80, 0x08, 0x00, //#. # #$ # # -0x81, 0x10, 0x00, 0x48, 0x00, 0x80, 0x40, 0x00, 0x08, 0x00, //#.. $# # $ # -0x81, 0x12, 0x80, 0x08, 0x40, 0x84, 0x00, 0x80, 0x08, 0x00, //#..@# #$ #$ # # -0x81, 0x10, 0x80, 0x48, 0x00, 0x00, 0x04, 0x80, 0x08, 0x00, //#.. # $# $# # -0x81, 0x10, 0x80, 0x08, 0x44, 0x84, 0x00, 0x80, 0x08, 0x80, //#.. # #$$#$ # ## -0x81, 0x10, 0x80, 0x48, 0x00, 0x80, 0x04, 0x84, 0x00, 0x80, //#.. # $# # $#$ # -0x81, 0x10, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //#.. # # # # # -0x88, 0x10, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, //##. #### ##### # -0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x80, // #### #### ##### -//Level: 169 -0x10, 0x0E,//Size x and y -0x88, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, //##### #### -0x81, 0x11, 0x80, 0x80, 0x08, 0x88, 0x80, 0x00, //#...# # #### -0x81, 0x11, 0x88, 0x80, 0x04, 0x00, 0x80, 0x00, //#...### $ # -0x81, 0x11, 0x18, 0x80, 0x40, 0x04, 0x88, 0x80, //#....## $ $### -0x88, 0x11, 0x11, 0x88, 0x00, 0x04, 0x00, 0x80, //##....## $ # -0x88, 0x81, 0x11, 0x08, 0x80, 0x40, 0x40, 0x80, //###... ## $ $ # -0x80, 0x88, 0x00, 0x00, 0x80, 0x04, 0x00, 0x80, //# ## # $ # -0x80, 0x08, 0x80, 0x80, 0x88, 0x80, 0x88, 0x88, //# ## # ### #### -0x80, 0x40, 0x80, 0x84, 0x00, 0x40, 0x00, 0x08, //# $ # #$ $ # -0x80, 0x04, 0x02, 0x04, 0x00, 0x00, 0x40, 0x08, //# $ @ $ $ # -0x80, 0x00, 0x80, 0x40, 0x44, 0x04, 0x08, 0x88, //# # $ $$ $ ### -0x80, 0x08, 0x88, 0x88, 0x80, 0x08, 0x88, 0x00, //# ###### ### -0x80, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, //# ## #### -0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //### -//Level: 170 -0x0D, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // # # -0x08, 0x84, 0x04, 0x04, 0x04, 0x88, 0x00, // ##$ $ $ $## -0x88, 0x00, 0x40, 0x40, 0x40, 0x08, 0x80, //## $ $ $ ## -0x80, 0x40, 0x08, 0x08, 0x00, 0x40, 0x80, //# $ # # $ # -0x80, 0x00, 0x81, 0x11, 0x80, 0x00, 0x80, //# #...# # -0x88, 0x08, 0x11, 0x11, 0x18, 0x08, 0x80, //## #.....# ## -0x08, 0x08, 0x11, 0x11, 0x18, 0x08, 0x00, // # #.....# # -0x08, 0x00, 0x81, 0x81, 0x80, 0x08, 0x00, // # #.#.# # -0x08, 0x40, 0x40, 0x44, 0x40, 0x48, 0x00, // #$ $ $$$ $# -0x08, 0x00, 0x80, 0x00, 0x80, 0x08, 0x00, // # # # # -0x08, 0x88, 0x80, 0x28, 0x88, 0x88, 0x00, // #### @##### -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 171 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x82, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x00, 0x80, 0x08, //#@ ### # # # -0x80, 0x80, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, //# # # # $ $ # -0x88, 0x88, 0x80, 0x00, 0x00, 0x80, 0x40, 0x48, 0x48, 0x08, //##### # $ $#$# # -0x81, 0x81, 0x18, 0x00, 0x00, 0x88, 0x40, 0x40, 0x00, 0x08, //#.#..# ##$ $ # -0x81, 0x11, 0x11, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x88, //#..... $ # ## -0x81, 0x11, 0x11, 0x00, 0x00, 0x88, 0x84, 0x88, 0x48, 0x88, //#..... ###$##$### -0x81, 0x81, 0x18, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, //#.#..# $ # # -0x88, 0x88, 0x80, 0x00, 0x00, 0x80, 0x08, 0x40, 0x04, 0x08, //##### # #$ $ # -0x88, 0x88, 0x80, 0x08, 0x00, 0x40, 0x00, 0x04, 0x04, 0x08, //##### # $ $ $ # -0x88, 0x88, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, //##### # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 172 -0x0E, 0x0E,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -0x08, 0x80, 0x08, 0x00, 0x80, 0x08, 0x80, // ## # # ## -0x88, 0x00, 0x48, 0x00, 0x00, 0x00, 0x88, //## $# ## -0x80, 0x00, 0x00, 0x04, 0x80, 0x40, 0x08, //# $# $ # -0x80, 0x44, 0x08, 0x11, 0x80, 0x40, 0x08, //# $$ #..# $ # -0x88, 0x80, 0x83, 0x51, 0x18, 0x80, 0x88, //### #+*..## ## -0x80, 0x00, 0x15, 0x88, 0x11, 0x40, 0x08, //# .*##..$ # -0x80, 0x04, 0x11, 0x88, 0x51, 0x40, 0x08, //# $..##*.$ # -0x88, 0x08, 0x81, 0x15, 0x58, 0x08, 0x88, //## ##..**# ### -0x80, 0x44, 0x08, 0x11, 0x80, 0x04, 0x08, //# $$ #..# $ # -0x80, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, //# # $ # -0x88, 0x00, 0x00, 0x40, 0x84, 0x00, 0x88, //## $ #$ ## -0x08, 0x80, 0x08, 0x00, 0x80, 0x08, 0x80, // ## # # ## -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -//Level: 173 -0x0F, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x40, 0x08, 0x04, 0x08, 0x00, 0x00, 0x80, //# $ # $ # # -0x80, 0x40, 0x80, 0x48, 0x40, 0x80, 0x00, 0x80, //# $ # $#$ # # -0x80, 0x48, 0x04, 0x00, 0x04, 0x00, 0x00, 0x80, //# $# $ $ # -0x80, 0x00, 0x40, 0x00, 0x80, 0x48, 0x00, 0x80, //# $ # $# # -0x84, 0x80, 0x40, 0x08, 0x00, 0x40, 0x84, 0x80, //#$# $ # $ #$# -0x80, 0x08, 0x40, 0x80, 0x00, 0x40, 0x00, 0x80, //# #$ # $ # -0x80, 0x00, 0x04, 0x00, 0x04, 0x08, 0x40, 0x80, //# $ $ #$ # -0x80, 0x00, 0x80, 0x48, 0x40, 0x80, 0x40, 0x80, //# # $#$ # $ # -0x80, 0x00, 0x08, 0x04, 0x08, 0x00, 0x40, 0x80, //# # $ # $ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, 0x80, //# #####@##### # -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x11, 0x80, //#..... .......# -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x11, 0x80, //#..... .......# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 174 -0x0A, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x08, 0x88, 0x00, 0x00, 0x08, // ### # -0x88, 0x00, 0x08, 0x08, 0x08, //## # # # -0x80, 0x08, 0x14, 0x44, 0x08, //# #.$$$ # -0x80, 0x81, 0x58, 0x08, 0x88, //# #.*# ### -0x80, 0x01, 0x18, 0x08, 0x00, //# ..# # -0x88, 0x81, 0x14, 0x08, 0x80, //###..$ ## -0x00, 0x81, 0x80, 0x40, 0x80, // #.# $ # -0x08, 0x80, 0x80, 0x82, 0x80, // ## # #@# -0x08, 0x04, 0x00, 0x40, 0x80, // # $ $ # -0x08, 0x00, 0x00, 0x08, 0x80, // # ## -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 175 -0x0A, 0x09,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x88, 0x40, 0x88, 0x00, 0x80, //##$ ## # -0x80, 0x04, 0x24, 0x00, 0x80, //# $@$ # -0x80, 0x00, 0x88, 0x40, 0x80, //# ##$ # -0x88, 0x81, 0x88, 0x08, 0x88, //###.## ### -0x08, 0x11, 0x14, 0x04, 0x08, // #...$ $ # -0x08, 0x81, 0x10, 0x00, 0x08, // ##.. # -0x00, 0x88, 0x88, 0x88, 0x88, // ######## -//Level: 176 -0x0B, 0x09,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x08, 0x02, 0x08, 0x00, 0x00, // # @ # -0x00, 0x08, 0x04, 0x08, 0x00, 0x00, // # $ # -0x00, 0x08, 0x41, 0x48, 0x00, 0x00, // #$.$# -0x00, 0x88, 0x14, 0x18, 0x80, 0x00, // ##.$.## -0x88, 0x81, 0x41, 0x41, 0x88, 0x80, //###.$.$.### -0x80, 0x04, 0x14, 0x14, 0x00, 0x80, //# $.$.$ # -0x80, 0x00, 0x01, 0x00, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 177 -0x0B, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x08, 0x00, 0x08, 0x00, 0x00, // # # -0x00, 0x08, 0x04, 0x48, 0x00, 0x00, // # $$# -0x88, 0x88, 0x01, 0x08, 0x88, 0x80, //#### . #### -0x80, 0x40, 0x51, 0x50, 0x00, 0x80, //# $ *.* # -0x80, 0x41, 0x11, 0x11, 0x40, 0x80, //# $.....$ # -0x80, 0x00, 0x51, 0x50, 0x40, 0x80, //# *.* $ # -0x88, 0x88, 0x01, 0x08, 0x88, 0x80, //#### . #### -0x00, 0x08, 0x44, 0x48, 0x00, 0x00, // #$$$# -0x00, 0x08, 0x02, 0x08, 0x00, 0x00, // # @ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 178 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x00, 0x88, //### ## -0x80, 0x01, 0x05, 0x08, //# . * # -0x80, 0x14, 0x18, 0x28, //# .$.#@# -0x88, 0x08, 0x04, 0x08, //## # $ # -0x08, 0x04, 0x08, 0x08, // # $ # # -0x08, 0x88, 0x00, 0x08, // ### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 179 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x88, //# #### -0x80, 0x44, 0x00, 0x08, //# $$ # -0x80, 0x18, 0x10, 0x08, //# .#. # -0x80, 0x08, 0x80, 0x88, //# ## ## -0x80, 0x08, 0x84, 0x80, //# ##$# -0x80, 0x20, 0x01, 0x80, //# @ .# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 180 -0x14, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, //######## ##### -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, //# # # -0x80, 0x00, 0x08, 0x08, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, //# # ## # #### -0x88, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x88, //## # # ### -0x08, 0x00, 0x08, 0x80, 0x00, 0x80, 0x44, 0x48, 0x00, 0x08, // # ## # $$$# # -0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x08, // # # $ $ # -0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x48, 0x02, 0x80, 0x88, // # # # # #$# @# ## -0x08, 0x88, 0x80, 0x04, 0x04, 0x08, 0x00, 0x04, 0x00, 0x80, // #### $ $ # $ # -0x00, 0x80, 0x40, 0x88, 0x88, 0x80, 0x88, 0x80, 0x48, 0x80, // # $ ##### ### $## -0x00, 0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, // # ........... # -0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x00, 0x88, 0x00, // ### ####### ## -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, // #### #### -//Level: 181 -0x0A, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x00, 0x00, //# # -0x80, 0x04, 0x08, 0x88, 0x80, //# $ #### -0x80, 0x44, 0x08, 0x00, 0x88, //# $$ # ## -0x80, 0x80, 0x88, 0x40, 0x08, //# # ##$ # -0x81, 0x11, 0x00, 0x11, 0x08, //#... .. # -0x88, 0x88, 0x88, 0x80, 0x88, //####### ## -0x80, 0x00, 0x88, 0x00, 0x08, //# ## # -0x82, 0x40, 0x00, 0x14, 0x08, //#@$ .$ # -0x80, 0x00, 0x88, 0x00, 0x08, //# ## # -0x80, 0x00, 0x88, 0x88, 0x88, //# ###### -0x88, 0x88, 0x80, 0x00, 0x00, //##### -//Level: 182 -0x13, 0x0D,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -0x00, 0x88, 0x00, 0x08, 0x80, 0x08, 0x88, 0x88, 0x80, 0x00, // ## ## ###### -0x88, 0x80, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x88, 0x80, //### # # ### -0x80, 0x04, 0x08, 0x40, 0x80, 0x08, 0x00, 0x11, 0x10, 0x80, //# $ #$ # # ... # -0x80, 0x80, 0x48, 0x24, 0x88, 0x08, 0x08, 0x18, 0x10, 0x80, //# # $#@$## # #.#. # -0x80, 0x08, 0x08, 0x40, 0x08, 0x00, 0x00, 0x10, 0x10, 0x80, //# # #$ # . . # -0x80, 0x40, 0x00, 0x04, 0x08, 0x08, 0x08, 0x18, 0x10, 0x80, //# $ $ # # #.#. # -0x80, 0x00, 0x88, 0x00, 0x88, 0x40, 0x40, 0x10, 0x10, 0x80, //# ## ##$ $ . . # -0x80, 0x40, 0x80, 0x00, 0x80, 0x08, 0x48, 0x18, 0x10, 0x80, //# $ # # #$#.#. # -0x88, 0x04, 0x00, 0x40, 0x00, 0x40, 0x04, 0x11, 0x10, 0x80, //## $ $ $ $... # -0x08, 0x40, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x00, 0x80, // #$ ###### ## # -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // # # ########## -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 183 -0x11, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -0x80, 0x00, 0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, //# #.......# -0x80, 0x44, 0x40, 0x80, 0x41, 0x81, 0x11, 0x11, 0x80, //# $$$ # $.#.....# -0x80, 0x08, 0x04, 0x01, 0x11, 0x11, 0x18, 0x11, 0x80, //# # $ ......#..# -0x80, 0x40, 0x08, 0x08, 0x88, 0x18, 0x11, 0x00, 0x80, //# $ # ###.#.. # -0x80, 0x04, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ $$ # # -0x80, 0x08, 0x04, 0x00, 0x04, 0x40, 0x08, 0x00, 0x80, //# # $ $$ # # -0x80, 0x88, 0x00, 0x80, 0x80, 0x80, 0x08, 0x80, 0x80, //# ## # # # ## # -0x80, 0x40, 0x48, 0x80, 0x80, 0x88, 0x00, 0x00, 0x80, //# $ $## # ## # -0x80, 0x42, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $@$ $ # # -0x80, 0x40, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ $ # # -0x80, 0x08, 0x84, 0x40, 0x80, 0x08, 0x80, 0x00, 0x80, //# ##$$ # ## # -0x80, 0x44, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $$ $ # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -//Level: 184 -0x0F, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //############# -0x81, 0x11, 0x18, 0x00, 0x88, 0x00, 0x80, 0x00, //#....# ## # -0x81, 0x10, 0x18, 0x04, 0x04, 0x40, 0x80, 0x00, //#.. .# $ $$ # -0x81, 0x11, 0x11, 0x20, 0x88, 0x00, 0x80, 0x00, //#.....@ ## # -0x81, 0x11, 0x18, 0x80, 0x80, 0x08, 0x80, 0x00, //#....## # ## -0x88, 0x18, 0x88, 0x84, 0x80, 0x08, 0x00, 0x00, //##.####$# # -0x80, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, //# # # -0x80, 0x40, 0x04, 0x08, 0x88, 0x48, 0x88, 0x80, //# $ $ ###$#### -0x88, 0x08, 0x88, 0x00, 0x00, 0x40, 0x00, 0x80, //## ### $ # -0x80, 0x40, 0x80, 0x48, 0x08, 0x80, 0x40, 0x80, //# $ # $# ## $ # -0x80, 0x00, 0x04, 0x00, 0x40, 0x88, 0x08, 0x80, //# $ $ ## ## -0x88, 0x88, 0x88, 0x80, 0x04, 0x88, 0x08, 0x80, //####### $## ## -0x00, 0x00, 0x88, 0x84, 0x04, 0x00, 0x00, 0x80, // ###$ $ # -0x00, 0x00, 0x80, 0x00, 0x04, 0x80, 0x00, 0x80, // # $# # -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -//Level: 185 -0x0B, 0x0A,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x88, 0x10, 0x00, 0x80, // #####. # -0x08, 0x00, 0x81, 0x18, 0x80, 0x80, // # #..## # -0x08, 0x00, 0x41, 0x10, 0x00, 0x80, // # $.. # -0x08, 0x00, 0x80, 0x18, 0x08, 0x80, // # # .# ## -0x88, 0x80, 0x88, 0x48, 0x00, 0x80, //### ##$# # -0x80, 0x40, 0x00, 0x04, 0x40, 0x80, //# $ $$ # -0x80, 0x84, 0x80, 0x08, 0x00, 0x80, //# #$# # # -0x82, 0x00, 0x88, 0x88, 0x88, 0x80, //#@ ####### -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //##### -//Level: 186 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x82, 0x05, 0x00, 0x80, //#@ * # -0x80, 0x41, 0x04, 0x80, //# $. $# -0x84, 0x05, 0x00, 0x80, //#$ * # -0x81, 0x51, 0x51, 0x80, //#.*.*.# -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x05, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 187 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x08, 0x28, 0x08, 0x80, 0x08, 0x88, 0x88, //# # #@# ## ##### -0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x40, 0x08, 0x88, 0x88, //# # # $ $ ##### -0x80, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x40, 0x08, 0x88, //# # ###### $ ### -0x80, 0x00, 0x80, 0x08, 0x11, 0x11, 0x80, 0x04, 0x40, 0x08, //# # #....# $$ # -0x88, 0x48, 0x84, 0x88, 0x11, 0x11, 0x80, 0x00, 0x00, 0x08, //##$##$##....# # -0x80, 0x00, 0x00, 0x08, 0x11, 0x11, 0x88, 0x48, 0x84, 0x88, //# #....##$##$## -0x80, 0x04, 0x40, 0x08, 0x11, 0x11, 0x80, 0x00, 0x00, 0x08, //# $$ #....# # -0x80, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x88, 0x80, 0x08, //# $ $ # # ### # -0x88, 0x88, 0x80, 0x04, 0x00, 0x04, 0x00, 0x00, 0x40, 0x08, //##### $ $ $ # -0x88, 0x88, 0x80, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //##### # # # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 188 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x88, //# # # # ## -0x80, 0x48, 0x04, 0x04, 0x08, 0x81, 0x11, 0x40, 0x04, 0x08, //# $# $ $ ##...$ $ # -0x80, 0x04, 0x00, 0x80, 0x88, 0x11, 0x11, 0x80, 0x40, 0x08, //# $ # ##....# $ # -0x80, 0x88, 0x04, 0x08, 0x81, 0x11, 0x18, 0x00, 0x04, 0x08, //# ## $ ##....# $ # -0x80, 0x40, 0x00, 0x08, 0x11, 0x11, 0x88, 0x04, 0x00, 0x08, //# $ #....## $ # -0x80, 0x48, 0x80, 0x08, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, //# $## #...# # -0x80, 0x00, 0x44, 0x48, 0x84, 0x88, 0x00, 0x88, 0x80, 0x88, //# $$$##$## ### ## -0x80, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, //# # # # # # # -0x80, 0x40, 0x80, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08, //# $ # $ ## # -0x80, 0x00, 0x08, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x08, //# # #@ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 189 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x08, 0x88, 0x80, //##### #### -0x82, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, //#@ ######## # -0x88, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, //## $ $ # -0x08, 0x08, 0x08, 0x00, 0x88, 0x88, 0x00, 0x80, // # # # #### # -0x08, 0x00, 0x40, 0x00, 0x88, 0x88, 0x48, 0x80, // # $ ####$## -0x08, 0x40, 0x88, 0x08, 0x04, 0x04, 0x08, 0x00, // #$ ## # $ $ # -0x88, 0x04, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, //## $ $# # -0x80, 0x00, 0x80, 0x00, 0x00, 0x08, 0x08, 0x00, //# # # # -0x80, 0x00, 0x88, 0x88, 0x84, 0x88, 0x88, 0x00, //# #####$#### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, //##### # # -0x00, 0x00, 0x81, 0x11, 0x00, 0x40, 0x80, 0x00, // #... $ # -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x00, 0x00, 0x81, 0x11, 0x18, 0x88, 0x80, 0x00, // #....#### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -//Level: 190 -0x14, 0x10,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //## ### -0x82, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#@$ # -0x88, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //### $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # ####### -0x08, 0x00, 0x40, 0x11, 0x11, 0x88, 0x88, 0x00, 0x00, 0x00, // # $ ....#### -0x08, 0x00, 0x88, 0x81, 0x11, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###... ###### -0x08, 0x80, 0x88, 0x01, 0x11, 0x80, 0x08, 0x00, 0x00, 0x88, // ## ## ...# # ## -0x08, 0x04, 0x88, 0x01, 0x11, 0x80, 0x88, 0x00, 0x40, 0x08, // # $## ...# ## $ # -0x08, 0x00, 0x00, 0x88, 0x88, 0x80, 0x88, 0x80, 0x84, 0x08, // # ##### ### #$ # -0x08, 0x00, 0x80, 0x08, 0x08, 0x80, 0x80, 0x00, 0x80, 0x08, // # # # ## # # # -0x08, 0x88, 0x88, 0x00, 0x00, 0x80, 0x84, 0x08, 0x04, 0x08, // ##### # #$ # $ # -0x00, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x40, 0x40, 0x08, // ## # $ $ # -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x84, 0x04, 0x04, 0x08, // ### #$ $ $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, 0x08, // ##### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, // ######## -//Level: 191 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //# ########## -0x80, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, //# ## # -0x81, 0x18, 0x00, 0x00, 0x44, 0x80, 0x80, 0x00, //#..# $$# # -0x81, 0x10, 0x08, 0x80, 0x00, 0x40, 0x88, 0x80, //#.. ## $ ### -0x81, 0x18, 0x00, 0x88, 0x48, 0x04, 0x00, 0x80, //#..# ##$# $ # -0x81, 0x10, 0x00, 0x80, 0x24, 0x04, 0x00, 0x80, //#.. # @$ $ # -0x81, 0x18, 0x00, 0x80, 0x40, 0x40, 0x00, 0x80, //#..# # $ $ # -0x80, 0x10, 0x00, 0x80, 0x40, 0x40, 0x88, 0x80, //# . # $ $ ### -0x80, 0x08, 0x00, 0x80, 0x00, 0x88, 0x80, 0x00, //# # # ### -0x80, 0x08, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, //# # ### -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //######### -//Level: 192 -0x08, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x01, 0x08, //#### . # -0x80, 0x52, 0x01, 0x08, //# *@ . # -0x80, 0x40, 0x80, 0x08, //# $ # # -0x80, 0x80, 0x04, 0x08, //# # $ # -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x80, 0x00, //##### -//Level: 193 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -0x00, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, // ##### # #### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x08, 0x00, // # # $ # -0x08, 0x88, 0x80, 0x84, 0x40, 0x88, 0x08, 0x80, 0x08, 0x00, // #### #$$ ## ## # -0x88, 0x00, 0x00, 0x00, 0x80, 0x80, 0x08, 0x80, 0x88, 0x80, //## # # ## ### -0x80, 0x08, 0x88, 0x04, 0x84, 0x00, 0x40, 0x04, 0x00, 0x80, //# ### $#$ $ $ # -0x81, 0x11, 0x00, 0x00, 0x80, 0x88, 0x00, 0x80, 0x00, 0x80, //#... # ## # # -0x81, 0x11, 0x80, 0x00, 0x02, 0x08, 0x08, 0x88, 0x08, 0x80, //#...# @ # ### ## -0x81, 0x11, 0x80, 0x08, 0x88, 0x00, 0x40, 0x04, 0x00, 0x80, //#...# ### $ $ # -0x88, 0x88, 0x88, 0x88, 0x08, 0x80, 0x00, 0x80, 0x00, 0x80, //######## ## # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 194 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x01, 0x88, //### .## -0x80, 0x40, 0x80, 0x88, //# $ # ## -0x80, 0x54, 0x00, 0x88, //# *$ ## -0x80, 0x18, 0x20, 0x88, //# .#@ ## -0x80, 0x00, 0x08, 0x88, //# ### -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 195 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x88, 0x80, 0x88, 0x08, 0x00, 0x00, 0x00, // ### ## # -0x88, 0x80, 0x04, 0x00, 0x48, 0x88, 0x88, 0x88, //### $ $####### -0x80, 0x00, 0x40, 0x40, 0x08, 0x00, 0x11, 0x18, //# $ $ # ...# -0x80, 0x84, 0x08, 0x00, 0x48, 0x00, 0x11, 0x18, //# #$ # $# ...# -0x80, 0x80, 0x08, 0x40, 0x00, 0x00, 0x11, 0x18, //# # #$ ...# -0x80, 0x84, 0x08, 0x00, 0x08, 0x00, 0x11, 0x18, //# #$ # # ...# -0x80, 0x80, 0x48, 0x04, 0x48, 0x00, 0x11, 0x18, //# # $# $$# ...# -0x80, 0x82, 0x08, 0x40, 0x08, 0x88, 0x88, 0x88, //# #@ #$ ####### -0x80, 0x80, 0x40, 0x40, 0x88, 0x00, 0x00, 0x00, //# # $ $ ## -0x80, 0x80, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, //# # $ # -0x80, 0x88, 0x80, 0x88, 0x80, 0x00, 0x00, 0x00, //# ### ### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -//Level: 196 -0x0C, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x88, 0x88, 0x88, 0x00, 0x08, // ###### # -0x88, 0x80, 0x00, 0x01, 0x04, 0x08, //### . $ # -0x80, 0x40, 0x08, 0x41, 0x84, 0x88, //# $ #$.#$## -0x80, 0x08, 0x00, 0x21, 0x80, 0x08, //# # @.# # -0x88, 0x08, 0x88, 0x81, 0x00, 0x08, //## ####. # -0x08, 0x04, 0x00, 0x85, 0x88, 0x88, // # $ #*#### -0x08, 0x08, 0x80, 0x81, 0x00, 0x80, // # ## #. # -0x08, 0x00, 0x00, 0x01, 0x80, 0x80, // # .# # -0x08, 0x88, 0x40, 0x00, 0x00, 0x80, // ###$ # -0x00, 0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 197 -0x0E, 0x0D,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -0x88, 0x88, 0x11, 0x11, 0x11, 0x00, 0x80, //####...... # -0x80, 0x00, 0x11, 0x11, 0x18, 0x00, 0x80, //# .....# # -0x80, 0x08, 0x11, 0x11, 0x11, 0x08, 0x80, //# #...... ## -0x88, 0x08, 0x88, 0x84, 0x88, 0x48, 0x00, //## ####$##$# -0x82, 0x40, 0x04, 0x04, 0x00, 0x08, 0x88, //#@$ $ $ ### -0x80, 0x44, 0x00, 0x00, 0x88, 0x00, 0x08, //# $$ ## # -0x80, 0x80, 0x04, 0x48, 0x80, 0x08, 0x08, //# # $$## # # -0x80, 0x00, 0x40, 0x08, 0x04, 0x40, 0x08, //# $ # $$ # -0x80, 0x04, 0x00, 0x40, 0x00, 0x84, 0x08, //# $ $ #$ # -0x88, 0x88, 0x00, 0x08, 0x04, 0x04, 0x08, //#### # $ $ # -0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, // # # # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // ########### -//Level: 198 -0x0F, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x44, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, //# $$ ### -0x80, 0x04, 0x04, 0x44, 0x08, 0x88, 0x88, 0x00, //# $ $$$ ##### -0x88, 0x08, 0x80, 0x11, 0x10, 0x00, 0x08, 0x80, //## ## ... ## -0x08, 0x08, 0x28, 0x11, 0x18, 0x88, 0x40, 0x80, // # #@#...###$ # -0x08, 0x08, 0x04, 0x11, 0x10, 0x00, 0x00, 0x80, // # # $... # -0x88, 0x08, 0x04, 0x11, 0x14, 0x08, 0x08, 0x80, //## # $...$ # ## -0x80, 0x08, 0x88, 0x88, 0x08, 0x88, 0x08, 0x00, //# ##### ### # -0x80, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, 0x00, //# $ $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, 0x00, //########### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 199 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ########### -0x00, 0x00, 0x08, 0x00, 0x10, 0x08, 0x00, 0x08, 0x00, 0x00, // # . # # -0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x02, 0x08, 0x00, 0x00, // # #. @ # -0x08, 0x88, 0x88, 0x08, 0x81, 0x18, 0x08, 0x88, 0x80, 0x00, // ##### ##..# #### -0x88, 0x00, 0x80, 0x11, 0x88, 0x80, 0x00, 0x00, 0x88, 0x80, //## # ..### ### -0x80, 0x40, 0x81, 0x11, 0x00, 0x04, 0x08, 0x00, 0x40, 0x80, //# $ #... $ # $ # -0x80, 0x00, 0x01, 0x10, 0x88, 0x00, 0x88, 0x08, 0x80, 0x80, //# .. ## ## ## # -0x88, 0x88, 0x48, 0x84, 0x80, 0x40, 0x80, 0x00, 0x80, 0x80, //####$##$# $ # # # -0x00, 0x88, 0x08, 0x00, 0x00, 0x84, 0x04, 0x40, 0x80, 0x80, // ## # #$ $$ # # -0x00, 0x80, 0x04, 0x08, 0x08, 0x00, 0x80, 0x48, 0x80, 0x80, // # $ # # # $## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // # ########### # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### #### -//Level: 200 -0x0F, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -0x08, 0x00, 0x80, 0x08, 0x88, 0x88, 0x00, 0x00, // # # ##### -0x88, 0x00, 0x80, 0x08, 0x11, 0x18, 0x88, 0x00, //## # #...### -0x80, 0x04, 0x80, 0x08, 0x11, 0x10, 0x08, 0x00, //# $# #... # -0x80, 0x40, 0x84, 0x40, 0x11, 0x10, 0x08, 0x00, //# $ #$$ ... # -0x80, 0x04, 0x80, 0x08, 0x11, 0x10, 0x18, 0x00, //# $# #... .# -0x80, 0x00, 0x80, 0x48, 0x88, 0x88, 0x88, 0x80, //# # $######## -0x88, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, //##$ $ $ # -0x88, 0x00, 0x80, 0x04, 0x40, 0x80, 0x00, 0x80, //## # $$ # # -0x08, 0x88, 0x88, 0x80, 0x08, 0x84, 0x42, 0x80, // ###### ##$$@# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x80, // # ## -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -//Level: 201 -0x13, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -0x81, 0x11, 0x11, 0x10, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, //#...... ######### -0x81, 0x11, 0x11, 0x10, 0x00, 0x80, 0x08, 0x80, 0x00, 0x80, //#...... # ## # -0x81, 0x18, 0x88, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //#..### $ $ # -0x81, 0x11, 0x04, 0x04, 0x08, 0x00, 0x08, 0x80, 0x00, 0x80, //#... $ $ # ## # -0x81, 0x11, 0x84, 0x88, 0x88, 0x80, 0x00, 0x08, 0x00, 0x80, //#...#$##### # # -0x88, 0x80, 0x00, 0x08, 0x00, 0x08, 0x40, 0x08, 0x40, 0x80, //### # #$ #$ # -0x00, 0x80, 0x04, 0x40, 0x40, 0x40, 0x04, 0x88, 0x00, 0x80, // # $$ $ $ $## # -0x00, 0x80, 0x04, 0x00, 0x08, 0x48, 0x40, 0x88, 0x40, 0x80, // # $ #$#$ ##$ # -0x00, 0x88, 0x80, 0x88, 0x08, 0x00, 0x00, 0x88, 0x00, 0x80, // ### ## # ## # -0x00, 0x08, 0x00, 0x40, 0x40, 0x88, 0x08, 0x88, 0x88, 0x80, // # $ $ ## ###### -0x00, 0x08, 0x00, 0x00, 0x40, 0x04, 0x00, 0x80, 0x00, 0x00, // # $ $ # -0x00, 0x08, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, // ## # # # -0x00, 0x00, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, 0x00, 0x00, // #####@##### -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 202 -0x10, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ######### -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x88, 0x88, // # # ####### -0x08, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x08, // # $ # # -0x88, 0x18, 0x88, 0x80, 0x40, 0x42, 0x48, 0x08, //##.#### $ $@$# # -0x81, 0x11, 0x18, 0x88, 0x00, 0x88, 0x04, 0x08, //#....### ## $ # -0x81, 0x11, 0x18, 0x88, 0x84, 0x08, 0x00, 0x08, //#....####$ # # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, //#.... $ # -0x88, 0x80, 0x88, 0x88, 0x48, 0x04, 0x04, 0x08, //### ####$# $ $ # -0x80, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x88, //# ## ### -0x80, 0x44, 0x04, 0x08, 0x88, 0x88, 0x88, 0x00, //# $$ $ ####### -0x80, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //# ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 203 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, // ##### ###### -0x08, 0x00, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### # -0x88, 0x04, 0x04, 0x08, 0x40, 0x84, 0x80, //## $ $ #$ #$# -0x80, 0x04, 0x02, 0x04, 0x00, 0x40, 0x88, //# $ @ $ $ ## -0x80, 0x80, 0x08, 0x80, 0x81, 0x11, 0x18, //# # ## #....# -0x80, 0x08, 0x80, 0x40, 0x81, 0x88, 0x18, //# ## $ #.##.# -0x88, 0x00, 0x40, 0x00, 0x01, 0x11, 0x18, //## $ ....# -0x08, 0x04, 0x40, 0x84, 0x81, 0x11, 0x18, // # $$ #$#....# -0x08, 0x00, 0x08, 0x00, 0x08, 0x40, 0x88, // # # #$ ## -0x08, 0x88, 0x88, 0x04, 0x00, 0x00, 0x80, // ##### $ # -0x00, 0x00, 0x08, 0x88, 0x80, 0x08, 0x80, // #### ## -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 204 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x08, 0x88, 0x88, 0x00, 0x00, 0x80, 0x00, // ##### # -0x08, 0x00, 0x80, 0x04, 0x04, 0x80, 0x00, // # # $ $# -0x08, 0x00, 0x40, 0x80, 0x40, 0x88, 0x80, // # $ # $ ### -0x88, 0x00, 0x80, 0x08, 0x00, 0x40, 0x88, //## # # $ ## -0x80, 0x48, 0x00, 0x20, 0x80, 0x00, 0x08, //# $# @ # # -0x80, 0x00, 0x04, 0x04, 0x80, 0x44, 0x08, //# $ $# $$ # -0x80, 0x04, 0x08, 0x41, 0x51, 0x08, 0x88, //# $ #$.*. ### -0x88, 0x00, 0x80, 0x41, 0x11, 0x88, 0x00, //## # $...## -0x08, 0x88, 0x80, 0x81, 0x11, 0x18, 0x00, // #### #....# -0x00, 0x00, 0x80, 0x01, 0x11, 0x18, 0x00, // # ....# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -//Level: 205 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x41, 0x02, 0x80, //# $. @# -0x80, 0x01, 0x00, 0x80, //# . # -0x84, 0x45, 0x40, 0x80, //#$$*$ # -0x81, 0x15, 0x11, 0x80, //#..*..# -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 206 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x80, 0x28, 0x00, 0x88, 0x88, 0x80, //# @# ##### -0x80, 0x44, 0x00, 0x40, 0x00, 0x80, //# $$ $ # -0x80, 0x08, 0x18, 0x84, 0x80, 0x80, //# #.##$# # -0x88, 0x48, 0x11, 0x10, 0x00, 0x80, //##$#... # -0x88, 0x01, 0x11, 0x88, 0x48, 0x80, //## ...##$## -0x80, 0x08, 0x81, 0x88, 0x00, 0x80, //# ##.## # -0x80, 0x04, 0x00, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x08, 0x00, 0x08, 0x00, 0x80, //# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 207 -0x13, 0x0D,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ################# -0x08, 0x11, 0x10, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x80, // #... # # ## -0x88, 0x11, 0x11, 0x10, 0x04, 0x88, 0x08, 0x08, 0x40, 0x80, //##..... $## # #$ # -0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, 0x00, 0x00, 0x80, //#......# $ # # -0x81, 0x11, 0x11, 0x18, 0x00, 0x80, 0x08, 0x08, 0x00, 0x80, //#......# # # # # -0x88, 0x88, 0x88, 0x88, 0x80, 0x40, 0x04, 0x04, 0x00, 0x80, //######### $ $ $ # -0x00, 0x80, 0x00, 0x00, 0x84, 0x88, 0x40, 0x88, 0x48, 0x80, // # #$##$ ##$## -0x08, 0x80, 0x00, 0x40, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, // ## $ # $ # -0x08, 0x00, 0x88, 0x08, 0x88, 0x08, 0x00, 0x88, 0x40, 0x80, // # ## ### # ##$ # -0x08, 0x04, 0x04, 0x40, 0x00, 0x00, 0x40, 0x04, 0x00, 0x80, // # $ $$ $ $ # -0x08, 0x04, 0x00, 0x00, 0x48, 0x84, 0x08, 0x88, 0x88, 0x80, // # $ $##$ ###### -0x08, 0x88, 0x88, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, // ####### @ ## -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -//Level: 208 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, // # ## -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x00, // # ## -0x00, 0x00, 0x00, 0x08, 0x04, 0x40, 0x88, 0x00, // # $$ ## -0x00, 0x00, 0x08, 0x88, 0x40, 0x04, 0x08, 0x80, // ###$ $ ## -0x00, 0x88, 0x88, 0x00, 0x00, 0x40, 0x00, 0x80, // #### $ # -0x88, 0x80, 0x08, 0x08, 0x88, 0x88, 0x00, 0x80, //### # ##### # -0x80, 0x00, 0x08, 0x08, 0x11, 0x11, 0x40, 0x80, //# # #....$ # -0x80, 0x80, 0x00, 0x40, 0x11, 0x11, 0x80, 0x80, //# # $ ....# # -0x80, 0x04, 0x08, 0x08, 0x15, 0x11, 0x80, 0x80, //# $ # #.*..# # -0x88, 0x80, 0x08, 0x88, 0x80, 0x88, 0x80, 0x80, //### #### ### # -0x00, 0x88, 0x88, 0x02, 0x40, 0x08, 0x84, 0x88, // #### @$ ##$## -0x00, 0x00, 0x08, 0x88, 0x04, 0x00, 0x00, 0x08, // ### $ # -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x08, // # ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -//Level: 209 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x08, 0x88, 0x88, 0x80, // # # ###### -0x00, 0x88, 0x88, 0x80, 0x80, 0x04, 0x08, 0x11, 0x11, 0x80, // ##### # $ #....# -0x08, 0x80, 0x00, 0x88, 0x80, 0x08, 0x08, 0x11, 0x11, 0x80, // ## ### # #....# -0x08, 0x04, 0x04, 0x08, 0x84, 0x88, 0x08, 0x11, 0x11, 0x80, // # $ $ ##$## #....# -0x08, 0x00, 0x80, 0x08, 0x00, 0x08, 0x08, 0x11, 0x11, 0x80, // # # # # #....# -0x08, 0x40, 0x40, 0x04, 0x24, 0x08, 0x08, 0x80, 0x08, 0x80, // #$ $ $@$ # ## ## -0x08, 0x04, 0x80, 0x08, 0x80, 0x88, 0x00, 0x80, 0x08, 0x00, // # $# ## ## # # -0x88, 0x00, 0x04, 0x48, 0x00, 0x88, 0x80, 0x80, 0x08, 0x00, //## $$# ### # # -0x80, 0x04, 0x00, 0x08, 0x04, 0x40, 0x00, 0x00, 0x08, 0x00, //# $ # $$ # -0x80, 0x40, 0x04, 0x08, 0x00, 0x88, 0x88, 0x00, 0x88, 0x00, //# $ $ # #### ## -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, //# ###### #### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 210 -0x10, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x00, 0x08, 0x04, 0x44, 0x44, 0x08, // # $$$$$ # -0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x00, 0x08, // # $ $ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x08, // ##### $ $ # -0x00, 0x08, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, // # #### #### -0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x88, 0x08, 0x88, 0x80, 0x08, 0x00, // ### #### # -0x00, 0x00, 0x81, 0x11, 0x18, 0x80, 0x88, 0x00, // #....## ## -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x88, 0x88, 0x81, 0x88, 0x80, 0x00, 0x80, 0x00, //#####.### # -0x80, 0x08, 0x80, 0x80, 0x80, 0x88, 0x80, 0x00, //# ## # # ### -0x80, 0x48, 0x84, 0x88, 0x80, 0x08, 0x80, 0x00, //# $##$### ## -0x80, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, //# $ # -0x80, 0x48, 0x00, 0x08, 0x80, 0x08, 0x00, 0x00, //# $# ## # -0x88, 0x28, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //##@######### -0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 211 -0x0D, 0x09,//Size x and y -0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x80, //##### ####### -0x80, 0x00, 0x88, 0x80, 0x08, 0x00, 0x80, //# ### # # -0x80, 0x40, 0x00, 0x00, 0x40, 0x20, 0x80, //# $ $ @ # -0x88, 0x08, 0x48, 0x81, 0x88, 0x00, 0x80, //## #$##.## # -0x08, 0x00, 0x11, 0x15, 0x10, 0x40, 0x80, // # ...*. $ # -0x08, 0x04, 0x80, 0x81, 0x80, 0x80, 0x80, // # $# #.# # # -0x08, 0x80, 0x00, 0x04, 0x00, 0x00, 0x80, // ## $ # -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x80, // # ######## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 212 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x01, 0x00, 0x80, //# . # -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x45, 0x10, 0x80, //# $*. # -0x85, 0x01, 0x45, 0x80, //#* .$*# -0x80, 0x55, 0x40, 0x80, //# **$ # -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x41, 0x02, 0x80, //# $. @# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 213 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x00, //# @# -0x80, 0x48, 0x08, 0x88, //# $# ### -0x80, 0x50, 0x40, 0x08, //# * $ # -0x80, 0x00, 0x88, 0x08, //# ## # -0x88, 0x10, 0x01, 0x08, //##. . # -0x08, 0x80, 0x00, 0x88, // ## ## -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 214 -0x10, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x08, 0x88, 0x80, 0x00, 0x88, 0x08, 0x88, 0x88, // #### ## ##### -0x08, 0x00, 0x40, 0x00, 0x08, 0x88, 0x00, 0x08, // # $ ### # -0x08, 0x04, 0x24, 0x04, 0x00, 0x00, 0x40, 0x08, // # $@$ $ $ # -0x08, 0x08, 0x48, 0x88, 0x88, 0x88, 0x80, 0x88, // # #$######## ## -0x08, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x08, // # # $ # # -0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x00, 0x08, // # # $ $ # # # -0x88, 0x08, 0x00, 0x48, 0x08, 0x08, 0x88, 0x88, //## # $# # ##### -0x80, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, //# ## # # -0x80, 0x00, 0x04, 0x08, 0x08, 0x88, 0x00, 0x08, //# $ # ### # -0x88, 0x88, 0x80, 0x88, 0x00, 0x81, 0x11, 0x18, //##### ## #....# -0x80, 0x00, 0x04, 0x00, 0x00, 0x01, 0x11, 0x18, //# $ ....# -0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x11, 0x18, //# #....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 215 -0x10, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# # # -0x80, 0x40, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, //# $ #### -0x88, 0x08, 0x84, 0x08, 0x20, 0x88, 0x88, 0x88, //## ##$ #@ ###### -0x08, 0x00, 0x40, 0x48, 0x84, 0x00, 0x80, 0x08, // # $ $##$ # # -0x08, 0x08, 0x00, 0x40, 0x80, 0x40, 0x11, 0x18, // # # $ # $ ...# -0x08, 0x04, 0x08, 0x40, 0x00, 0x08, 0x11, 0x18, // # $ #$ #...# -0x08, 0x00, 0x00, 0x08, 0x80, 0x48, 0x11, 0x18, // # ## $#...# -0x08, 0x88, 0x04, 0x08, 0x00, 0x40, 0x11, 0x18, // ### $ # $ ...# -0x00, 0x08, 0x88, 0x08, 0x00, 0x48, 0x11, 0x18, // ### # $#...# -0x00, 0x00, 0x80, 0x04, 0x40, 0x08, 0x88, 0x88, // # $$ ##### -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, // # ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -//Level: 216 -0x0E, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x80, 0x00, 0x00, 0x00, 0x88, 0x80, 0x08, //# ### # -0x80, 0x44, 0x04, 0x00, 0x00, 0x44, 0x08, //# $$ $ $$ # -0x80, 0x00, 0x00, 0x40, 0x88, 0x80, 0x08, //# $ ### # -0x88, 0x48, 0x88, 0x88, 0x00, 0x80, 0x88, //##$##### # ## -0x88, 0x08, 0x01, 0x11, 0x11, 0x80, 0x08, //## # .....# # -0x88, 0x08, 0x01, 0x11, 0x81, 0x80, 0x08, //## # ...#.# # -0x80, 0x00, 0x81, 0x11, 0x11, 0x84, 0x08, //# #.....#$ # -0x80, 0x00, 0x81, 0x51, 0x11, 0x42, 0x88, //# #.*...$@## -0x80, 0x40, 0x80, 0x08, 0x88, 0x08, 0x88, //# $ # ### ### -0x80, 0x40, 0x88, 0x80, 0x40, 0x40, 0x08, //# $ ### $ $ # -0x80, 0x44, 0x40, 0x00, 0x00, 0x44, 0x08, //# $$$ $$ # -0x80, 0x00, 0x88, 0x80, 0x00, 0x00, 0x08, //# ### # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 217 -0x0E, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x88, 0x88, 0x88, 0x80, 0x08, 0x80, // ####### ## -0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x80, // # ## # -0x00, 0x80, 0x80, 0x00, 0x41, 0x80, 0x88, // # # $.# ## -0x00, 0x80, 0x00, 0x40, 0x81, 0x02, 0x08, // # $ #. @ # -0x00, 0x88, 0x00, 0x88, 0x11, 0x10, 0x08, // ## ##... # -0x00, 0x08, 0x84, 0x04, 0x11, 0x10, 0x88, // ##$ $... ## -0x00, 0x88, 0x00, 0x88, 0x15, 0x18, 0x80, // ## ##.*.## -0x88, 0x80, 0x40, 0x00, 0x08, 0x88, 0x00, //### $ ### -0x80, 0x44, 0x08, 0x48, 0x48, 0x80, 0x00, //# $$ #$#$## -0x80, 0x80, 0x00, 0x00, 0x40, 0x80, 0x00, //# # $ # -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, 0x00, //# ## # -0x88, 0x80, 0x08, 0x88, 0x88, 0x80, 0x00, //### ###### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 218 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, // #### #### -0x08, 0x00, 0x80, 0x00, 0x40, 0x88, 0x88, // # # $ #### -0x08, 0x11, 0x10, 0x48, 0x40, 0x80, 0x08, // #... $#$ # # -0x88, 0x18, 0x10, 0x08, 0x00, 0x04, 0x08, //##.#. # $ # -0x81, 0x11, 0x11, 0x08, 0x88, 0x40, 0x08, //#..... ###$ # -0x81, 0x11, 0x18, 0x48, 0x00, 0x40, 0x88, //#....#$# $ ## -0x88, 0x84, 0x88, 0x04, 0x40, 0x00, 0x80, //###$## $$ # -0x08, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, // # # $ # -0x08, 0x04, 0x00, 0x24, 0x00, 0x88, 0x80, // # $ @$ ### -0x08, 0x88, 0x84, 0x80, 0x88, 0x80, 0x00, // ####$# ### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 219 -0x0E, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //## # # ## -0x80, 0x20, 0x48, 0x04, 0x04, 0x04, 0x08, //# @ $# $ $ $ # -0x80, 0x04, 0x00, 0x00, 0x80, 0x40, 0x08, //# $ # $ # -0x80, 0x44, 0x08, 0x11, 0x80, 0x04, 0x08, //# $$ #..# $ # -0x88, 0x80, 0x81, 0x11, 0x18, 0x80, 0x88, //### #....## ## -0x80, 0x00, 0x11, 0x88, 0x11, 0x04, 0x08, //# ..##.. $ # -0x80, 0x40, 0x11, 0x88, 0x11, 0x00, 0x08, //# $ ..##.. # -0x88, 0x08, 0x81, 0x11, 0x18, 0x08, 0x88, //## ##....# ### -0x80, 0x40, 0x08, 0x11, 0x80, 0x40, 0x08, //# $ #..# $ # -0x80, 0x04, 0x08, 0x00, 0x04, 0x04, 0x08, //# $ # $ $ # -0x80, 0x40, 0x40, 0x40, 0x80, 0x40, 0x08, //# $ $ $ # $ # -0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //## # # ## -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -//Level: 220 -0x10, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ########## -0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, // # # # -0x00, 0x80, 0x48, 0x00, 0x04, 0x08, 0x00, 0x00, // # $# $ # -0x00, 0x80, 0x40, 0x48, 0x48, 0x08, 0x00, 0x00, // # $ $#$# # -0x08, 0x88, 0x18, 0x11, 0x10, 0x08, 0x88, 0x88, // ###.#... ##### -0x88, 0x00, 0x11, 0x11, 0x84, 0x08, 0x00, 0x08, //## ....#$ # # -0x80, 0x48, 0x18, 0x85, 0x80, 0x04, 0x44, 0x08, //# $#.##*# $$$ # -0x80, 0x00, 0x11, 0x11, 0x12, 0x80, 0x40, 0x08, //# .....@# $ # -0x80, 0x08, 0x18, 0x11, 0x10, 0x04, 0x04, 0x08, //# #.#... $ $ # -0x80, 0x44, 0x00, 0x48, 0x48, 0x00, 0x40, 0x08, //# $$ $#$# $ # -0x80, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x88, //# # # # ## -0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, // ###### -//Level: 221 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x80, 0x08, 0x11, 0x08, 0x80, //# #.. ## -0x80, 0x41, 0x24, 0x50, 0x80, //# $.@$* # -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x54, 0x01, 0x40, 0x80, //# *$ .$ # -0x88, 0x01, 0x18, 0x00, 0x80, //## ..# # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 222 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x10, 0x48, 0x00, // #. $# -0x00, 0x08, 0x04, 0x08, 0x00, // # $ # -0x88, 0x88, 0x11, 0x08, 0x80, //####.. ## -0x80, 0x40, 0x55, 0x00, 0x80, //# $ ** # -0x80, 0x10, 0x02, 0x40, 0x80, //# . @$ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 223 -0x0E, 0x0F,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //##### -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# ## -0x80, 0x00, 0x08, 0x00, 0x88, 0x88, 0x00, //# # #### -0x80, 0x40, 0x08, 0x88, 0x80, 0x08, 0x00, //# $ #### # -0x80, 0x04, 0x40, 0x40, 0x00, 0x48, 0x00, //# $$ $ $# -0x88, 0x82, 0x08, 0x40, 0x00, 0x08, 0x80, //###@ #$ ## -0x08, 0x00, 0x88, 0x00, 0x40, 0x40, 0x88, // # ## $ $ ## -0x08, 0x04, 0x00, 0x88, 0x08, 0x80, 0x18, // # $ ## ## .# -0x08, 0x00, 0x84, 0x88, 0x40, 0x08, 0x18, // # #$##$ #.# -0x08, 0x88, 0x00, 0x04, 0x11, 0x88, 0x18, // ### $..##.# -0x00, 0x80, 0x00, 0x08, 0x15, 0x11, 0x18, // # #.*...# -0x00, 0x80, 0x44, 0x08, 0x11, 0x11, 0x18, // # $$ #.....# -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, // # ######### -0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 224 -0x13, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ###### -0x00, 0x80, 0x00, 0x28, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # @#### -0x88, 0x88, 0x80, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //##### $ # -0x80, 0x00, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, //# ## #### -0x80, 0x40, 0x80, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, //# $ # ## # -0x80, 0x40, 0x80, 0x08, 0x88, 0x88, 0x08, 0x00, 0x00, 0x00, //# $ # ##### # -0x88, 0x04, 0x00, 0x40, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, //## $ $ # # -0x88, 0x04, 0x04, 0x08, 0x88, 0x08, 0x08, 0x00, 0x00, 0x00, //## $ $ ### # # -0x88, 0x08, 0x00, 0x40, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, //## # $ # # # -0x88, 0x08, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, //## # #$# # # -0x88, 0x08, 0x88, 0x00, 0x08, 0x08, 0x08, 0x88, 0x88, 0x80, //## ### # # ###### -0x80, 0x04, 0x00, 0x88, 0x88, 0x08, 0x08, 0x11, 0x11, 0x80, //# $ #### # #....# -0x80, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x11, 0x81, 0x80, //# $ $ ..#.# -0x88, 0x88, 0x40, 0x04, 0x80, 0x40, 0x00, 0x11, 0x11, 0x80, //####$ $# $ ....# -0x80, 0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x11, 0x11, 0x80, //# # ## ....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 225 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x20, 0x80, 0x08, //# # #@ # # -0x80, 0x44, 0x00, 0x84, 0x48, 0x08, 0x08, 0x00, 0x88, 0x08, //# $$ #$$# # # ## # -0x80, 0x08, 0x04, 0x04, 0x08, 0x44, 0x08, 0x00, 0x00, 0x08, //# # $ $ #$$ # # -0x88, 0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x00, 0x80, 0x08, //## # # # # # # # -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, //# ## # # -0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x80, 0x00, 0x80, 0x08, //# # $ # # # # -0x80, 0x40, 0x84, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x18, //# $ #$ # # $ #..# -0x88, 0x40, 0x80, 0x08, 0x88, 0x80, 0x00, 0x08, 0x11, 0x18, //##$ # #### #...# -0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x11, 0x18, //# $ #....# -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0x11, 0x11, 0x18, //# # # #.....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 226 -0x11, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //############# -0x81, 0x11, 0x11, 0x11, 0x18, 0x88, 0x80, 0x00, 0x00, //#........#### -0x81, 0x11, 0x88, 0x88, 0x08, 0x00, 0x88, 0x88, 0x80, //#...#### # ##### -0x81, 0x11, 0x80, 0x08, 0x88, 0x00, 0x00, 0x40, 0x80, //#...# ### $ # -0x81, 0x11, 0x44, 0x00, 0x00, 0x04, 0x04, 0x00, 0x80, //#...$$ $ $ # -0x80, 0x01, 0x80, 0x04, 0x04, 0x80, 0x40, 0x08, 0x80, //# .# $ $# $ ## -0x81, 0x11, 0x80, 0x84, 0x80, 0x00, 0x40, 0x08, 0x00, //#...# #$# $ # -0x81, 0x80, 0x80, 0x40, 0x00, 0x40, 0x00, 0x08, 0x00, //#.# # $ $ # -0x81, 0x00, 0x84, 0x88, 0x84, 0x88, 0x88, 0x48, 0x00, //#. #$###$####$# -0x88, 0x00, 0x80, 0x00, 0x40, 0x40, 0x00, 0x08, 0x00, //## # $ $ # -0x08, 0x00, 0x80, 0x04, 0x24, 0x00, 0x80, 0x08, 0x00, // # # $@$ # # -0x08, 0x00, 0x80, 0x88, 0x88, 0x04, 0x00, 0x48, 0x00, // # # #### $ $# -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x00, // # # ### # -0x08, 0x00, 0x80, 0x44, 0x08, 0x08, 0x88, 0x88, 0x00, // # # $$ # ##### -0x08, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -//Level: 227 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, //# #......# -0x80, 0x44, 0x08, 0x04, 0x18, 0x11, 0x11, 0x80, //# $$ # $.#....# -0x80, 0x00, 0x80, 0x48, 0x20, 0x81, 0x11, 0x80, //# # $#@ #...# -0x80, 0x48, 0x04, 0x08, 0x04, 0x08, 0x11, 0x80, //# $# $ # $ #..# -0x80, 0x00, 0x40, 0x08, 0x44, 0x00, 0x11, 0x80, //# $ #$$ ..# -0x80, 0x40, 0x84, 0x08, 0x00, 0x81, 0x41, 0x80, //# $ #$ # #.$.# -0x80, 0x08, 0x00, 0x40, 0x40, 0x08, 0x11, 0x80, //# # $ $ #..# -0x80, 0x80, 0x40, 0x08, 0x00, 0x00, 0x80, 0x80, //# # $ # # # -0x80, 0x00, 0x08, 0x08, 0x48, 0x00, 0x44, 0x80, //# # #$# $$# -0x80, 0x00, 0x80, 0x48, 0x00, 0x80, 0x00, 0x80, //# # $# # # -0x80, 0x08, 0x00, 0x04, 0x40, 0x08, 0x00, 0x80, //# # $$ # # -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 228 -0x0B, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x08, 0x88, 0x00, 0x08, 0x88, 0x00, // ### ### -0x88, 0x02, 0x04, 0x04, 0x08, 0x00, //## @ $ $ # -0x80, 0x08, 0x80, 0x88, 0x08, 0x80, //# ## ## ## -0x80, 0x41, 0x81, 0x40, 0x00, 0x80, //# $.#.$ # -0x80, 0x81, 0x85, 0x80, 0x00, 0x80, //# #.#*# # -0x80, 0x41, 0x11, 0x00, 0x88, 0x80, //# $... ### -0x88, 0x84, 0x80, 0x88, 0x80, 0x00, //###$# ### -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 229 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x88, 0x00, //# #### ##### -0x80, 0x40, 0x00, 0x88, 0x88, 0x00, 0x08, 0x00, //# $ #### # -0x80, 0x40, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, //# $ ## # -0x80, 0x88, 0x84, 0x04, 0x00, 0x40, 0x08, 0x80, //# ###$ $ $ ## -0x80, 0x80, 0x40, 0x04, 0x08, 0x80, 0x00, 0x80, //# # $ $ ## # -0x80, 0x04, 0x08, 0x44, 0x80, 0x00, 0x80, 0x80, //# $ #$$# # # -0x88, 0x00, 0x08, 0x00, 0x84, 0x00, 0x00, 0x80, //## # #$ # -0x08, 0x80, 0x08, 0x80, 0x04, 0x08, 0x08, 0x80, // ## ## $ # ## -0x88, 0x88, 0x18, 0x88, 0x00, 0x48, 0x08, 0x00, //####.### $# # -0x80, 0x08, 0x18, 0x11, 0x08, 0x00, 0x08, 0x00, //# #.#.. # # -0x80, 0x08, 0x11, 0x11, 0x02, 0x08, 0x88, 0x00, //# #.... @ ### -0x80, 0x40, 0x11, 0x11, 0x80, 0x88, 0x00, 0x00, //# $ ....# ## -0x80, 0x00, 0x88, 0x11, 0x00, 0x80, 0x00, 0x00, //# ##.. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //########### -//Level: 230 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x88, 0x88, 0x00, 0x28, 0x80, //#### @## -0x80, 0x40, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x81, 0x51, 0x80, 0x80, //# #.*.# # -0x80, 0x81, 0x51, 0x80, 0x80, //# #.*.# # -0x80, 0x00, 0x40, 0x40, 0x80, //# $ $ # -0x88, 0x00, 0x08, 0x88, 0x80, //## #### -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 231 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -0x88, 0x80, 0x00, 0x18, 0x00, //### .# -0x80, 0x04, 0x18, 0x88, 0x88, //# $.##### -0x80, 0x44, 0x18, 0x20, 0x08, //# $$.#@ # -0x80, 0x00, 0x88, 0x44, 0x08, //# ##$$ # -0x80, 0x01, 0x41, 0x00, 0x08, //# .$. # -0x88, 0x84, 0x08, 0x88, 0x18, //###$ ###.# -0x00, 0x81, 0x08, 0x08, 0x88, // #. # ### -0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 232 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x21, 0x00, 0x80, //##@. # -0x80, 0x44, 0x50, 0x80, //# $$* # -0x80, 0x08, 0x00, 0x88, //# # ## -0x80, 0x08, 0x00, 0x18, //# # .# -0x88, 0x88, 0x08, 0x08, //#### # # -0x00, 0x08, 0x00, 0x08, // # # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 233 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x08, 0x88, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // #### # # -0x00, 0x08, 0x88, 0x02, 0x88, 0x84, 0x08, 0x00, 0x00, 0x00, // ### @###$ # -0x00, 0x88, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, // ## $ # -0x08, 0x80, 0x04, 0x04, 0x48, 0x80, 0x88, 0x00, 0x00, 0x00, // ## $ $$## ## -0x08, 0x00, 0x84, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # #$## # -0x08, 0x08, 0x04, 0x04, 0x40, 0x80, 0x88, 0x80, 0x00, 0x00, // # # $ $$ # ### -0x08, 0x00, 0x04, 0x08, 0x00, 0x80, 0x40, 0x88, 0x88, 0x80, // # $ # # $ ##### -0x88, 0x88, 0x00, 0x00, 0x80, 0x04, 0x40, 0x80, 0x00, 0x80, //#### # $$ # # -0x88, 0x88, 0x08, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, //#### ## $ # -0x81, 0x00, 0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x80, //#. ### ######## -0x81, 0x10, 0x11, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //#.. ..# #### -0x81, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#...#.# -0x81, 0x11, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#.....# -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //####### -//Level: 234 -0x12, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x00, 0x00, // ######### ## -0x88, 0x00, 0x40, 0x00, 0x00, 0x04, 0x08, 0x88, 0x88, //## $ $ ##### -0x80, 0x00, 0x88, 0x08, 0x80, 0x00, 0x88, 0x11, 0x18, //# ## ## ##...# -0x80, 0x84, 0x40, 0x40, 0x44, 0x84, 0x88, 0x11, 0x18, //# #$$ $ $$#$##...# -0x80, 0x80, 0x00, 0x20, 0x00, 0x80, 0x00, 0x11, 0x18, //# # @ # ...# -0x80, 0x04, 0x80, 0x88, 0x84, 0x40, 0x00, 0x11, 0x18, //# $# ###$$ ...# -0x80, 0x40, 0x04, 0x40, 0x04, 0x08, 0x81, 0x11, 0x18, //# $ $$ $ ##....# -0x88, 0x84, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, //###$ ####### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // # ####### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 235 -0x10, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x08, //#....# # -0x81, 0x11, 0x18, 0x08, 0x08, 0x80, 0x08, 0x08, //#....# # ## # # -0x81, 0x11, 0x10, 0x04, 0x08, 0x00, 0x80, 0x08, //#.... $ # # # -0x88, 0x00, 0x80, 0x04, 0x00, 0x08, 0x00, 0x08, //## # $ # # -0x80, 0x00, 0x08, 0x44, 0x44, 0x80, 0x08, 0x08, //# #$$$$# # # -0x80, 0x88, 0x04, 0x00, 0x00, 0x40, 0x88, 0x08, //# ## $ $ ## # -0x80, 0x00, 0x04, 0x08, 0x80, 0x44, 0x40, 0x08, //# $ ## $$$ # -0x80, 0x84, 0x44, 0x08, 0x80, 0x40, 0x08, 0x08, //# #$$$ ## $ # # -0x80, 0x80, 0x04, 0x00, 0x00, 0x40, 0x00, 0x08, //# # $ $ # -0x80, 0x00, 0x88, 0x44, 0x44, 0x80, 0x08, 0x88, //# ##$$$$# ### -0x80, 0x08, 0x00, 0x00, 0x40, 0x08, 0x11, 0x18, //# # $ #...# -0x80, 0x00, 0x00, 0x80, 0x48, 0x00, 0x11, 0x18, //# # $# ...# -0x80, 0x88, 0x08, 0x08, 0x08, 0x00, 0x11, 0x18, //# ## # # # ...# -0x82, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x18, //#@ #...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 236 -0x14, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, // ################## -0x00, 0x80, 0x00, 0x00, 0x00, 0x88, 0x11, 0x18, 0x00, 0x08, // # ##...# # -0x00, 0x80, 0x84, 0x84, 0x80, 0x88, 0x81, 0x11, 0x04, 0x08, // # #$#$# ###... $ # -0x00, 0x80, 0x02, 0x40, 0x04, 0x00, 0x01, 0x18, 0x04, 0x08, // # @$ $ ..# $ # -0x88, 0x88, 0x84, 0x84, 0x80, 0x80, 0x01, 0x10, 0x08, 0x88, //#####$#$# # .. ### -0x80, 0x00, 0x40, 0x40, 0x80, 0x88, 0x88, 0x88, 0x08, 0x80, //# $ $ # ###### ## -0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# # # # # # -0x80, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, //# ####### # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, //######### ##### -//Level: 237 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, //# ## -0x80, 0x84, 0x84, 0x82, 0x08, 0x88, 0x88, //# #$#$#@ ##### -0x80, 0x40, 0x00, 0x04, 0x08, 0x00, 0x08, //# $ $ # # -0x88, 0x08, 0x88, 0x80, 0x88, 0x08, 0x08, //## #### ## # # -0x80, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # # -0x80, 0x48, 0x00, 0x40, 0x08, 0x88, 0x88, //# $# $ ##### -0x81, 0x14, 0x00, 0x88, 0x08, 0x00, 0x08, //#..$ ## # # -0x81, 0x18, 0x00, 0x80, 0x00, 0x44, 0x08, //#..# # $$ # -0x81, 0x18, 0x88, 0x80, 0x04, 0x00, 0x08, //#..#### $ # -0x85, 0x11, 0x18, 0x04, 0x04, 0x04, 0x08, //#*...# $ $ $ # -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, //#....# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 238 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x40, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ $$# -0x82, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#@ $ # -0x80, 0x40, 0x40, 0x88, 0x88, 0x80, 0x00, 0x00, //# $ $ ##### -0x80, 0x40, 0x05, 0x11, 0x11, 0x80, 0x00, 0x00, //# $ *....# -0x88, 0x88, 0x81, 0x88, 0x81, 0x80, 0x00, 0x00, //#####.###.# -0x00, 0x08, 0x81, 0x80, 0x81, 0x80, 0x00, 0x00, // ##.# #.# -0x00, 0x08, 0x01, 0x88, 0x81, 0x88, 0x88, 0x80, // # .###.##### -0x00, 0x08, 0x01, 0x11, 0x15, 0x00, 0x40, 0x80, // # ....* $ # -0x00, 0x08, 0x00, 0x08, 0x80, 0x40, 0x40, 0x80, // # ## $ $ # -0x00, 0x08, 0x88, 0x88, 0x80, 0x04, 0x00, 0x80, // ###### $ # -0x00, 0x00, 0x00, 0x00, 0x84, 0x40, 0x40, 0x80, // #$$ $ # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 239 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x88, 0x10, 0x02, 0x80, //####. @# -0x80, 0x04, 0x44, 0x00, 0x80, //# $$$ # -0x81, 0x88, 0x18, 0x81, 0x80, //#.##.##.# -0x80, 0x00, 0x40, 0x00, 0x80, //# $ # -0x80, 0x04, 0x18, 0x08, 0x80, //# $.# ## -0x88, 0x80, 0x00, 0x08, 0x00, //### # -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 240 -0x0A, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x08, 0x00, 0x82, 0x00, 0x88, // # #@ ## -0x88, 0x04, 0x88, 0x80, 0x08, //## $### # -0x80, 0x00, 0x50, 0x50, 0x08, //# * * # -0x80, 0x05, 0x05, 0x05, 0x08, //# * * * # -0x80, 0x10, 0x50, 0x50, 0x08, //# . * * # -0x88, 0x88, 0x00, 0x08, 0x88, //#### ### -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 241 -0x06, 0x07,//Size x and y -0x88, 0x88, 0x00, //#### -0x82, 0x08, 0x88, //#@ ### -0x80, 0x44, 0x18, //# $$.# -0x80, 0x04, 0x18, //# $.# -0x80, 0x40, 0x18, //# $ .# -0x80, 0x80, 0x18, //# # .# -0x88, 0x88, 0x88, //###### -//Level: 242 -0x0C, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x88, 0x00, 0x00, 0x08, 0x80, 0x08, //## ## # -0x88, 0x00, 0x04, 0x00, 0x04, 0x08, //## $ $ # -0x88, 0x88, 0x08, 0x80, 0x44, 0x08, //#### ## $$ # -0x80, 0x00, 0x40, 0x80, 0x00, 0x08, //# $ # # -0x80, 0x44, 0x40, 0x80, 0x88, 0x88, //# $$$ # #### -0x80, 0x00, 0x80, 0x80, 0x40, 0x88, //# # # $ ## -0x80, 0x08, 0x00, 0x80, 0x04, 0x08, //# # # $ # -0x80, 0x48, 0x04, 0x80, 0x00, 0x08, //# $# $# # -0x80, 0x00, 0x11, 0x80, 0x88, 0x88, //# ..# #### -0x88, 0x88, 0x11, 0x04, 0x08, 0x28, //####.. $ #@# -0x81, 0x11, 0x11, 0x80, 0x48, 0x08, //#.....# $# # -0x88, 0x11, 0x11, 0x80, 0x04, 0x08, //##....# $ # -0x88, 0x81, 0x18, 0x80, 0x00, 0x08, //###..## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 243 -0x12, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, // #### ###### -0x00, 0x80, 0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x28, // # ## $ $ @# -0x00, 0x80, 0x88, 0x08, 0x84, 0x84, 0x04, 0x04, 0x88, // # ## ##$#$ $ $## -0x88, 0x80, 0x11, 0x11, 0x11, 0x80, 0x04, 0x40, 0x88, //### ......# $$ ## -0x80, 0x00, 0x11, 0x11, 0x11, 0x80, 0x08, 0x00, 0x08, //# ......# # # -0x80, 0x80, 0x11, 0x11, 0x11, 0x84, 0x00, 0x40, 0x08, //# # ......#$ $ # -0x80, 0x84, 0x11, 0x11, 0x11, 0x04, 0x48, 0x04, 0x08, //# #$...... $$# $ # -0x80, 0x00, 0x88, 0x80, 0x88, 0x84, 0x00, 0x40, 0x88, //# ### ###$ $ ## -0x88, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x80, //### $ $ $ $ # -0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x80, // # $ $ $ $ # -0x00, 0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### ###### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 244 -0x0E, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //########## -0x80, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, //# #### -0x80, 0x88, 0x88, 0x88, 0x08, 0x00, 0x88, //# ###### # ## -0x80, 0x80, 0x40, 0x40, 0x40, 0x04, 0x08, //# # $ $ $ $ # -0x80, 0x00, 0x00, 0x00, 0x84, 0x00, 0x08, //# #$ # -0x88, 0x84, 0x00, 0x44, 0x80, 0x08, 0x88, //###$ $$# ### -0x00, 0x80, 0x08, 0x80, 0x80, 0x48, 0x80, // # ## # $## -0x00, 0x88, 0x48, 0x00, 0x04, 0x02, 0x80, // ##$# $ @# -0x00, 0x08, 0x00, 0x40, 0x40, 0x88, 0x80, // # $ $ ### -0x00, 0x08, 0x08, 0x00, 0x04, 0x00, 0x80, // # # $ # -0x00, 0x08, 0x08, 0x80, 0x00, 0x80, 0x80, // # ## # # -0x00, 0x88, 0x00, 0x88, 0x88, 0x80, 0x80, // ## ##### # -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x81, 0x11, 0x11, 0x11, 0x88, 0x80, // #.......### -0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, // #.......# -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 245 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x12, 0x88, //## .@## -0x88, 0x00, 0x04, 0x18, //## $.# -0x88, 0x88, 0x58, 0x08, //####*# # -0x88, 0x00, 0x00, 0x08, //## # -0x80, 0x04, 0x00, 0x88, //# $ ## -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 246 -0x0F, 0x10,//Size x and y -0x08, 0x88, 0x80, 0x88, 0x88, 0x80, 0x00, 0x00, // #### ##### -0x08, 0x00, 0x88, 0x80, 0x00, 0x88, 0x00, 0x00, // # ### ## -0x08, 0x04, 0x00, 0x80, 0x80, 0x08, 0x80, 0x00, // # $ # # ## -0x08, 0x04, 0x80, 0x80, 0x88, 0x00, 0x88, 0x00, // # $# # ## ## -0x08, 0x00, 0x04, 0x00, 0x80, 0x40, 0x08, 0x80, // # $ # $ ## -0x08, 0x04, 0x00, 0x40, 0x84, 0x04, 0x00, 0x80, // # $ $ #$ $ # -0x88, 0x80, 0x80, 0x88, 0x80, 0x80, 0x40, 0x80, //### # ### # $ # -0x80, 0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, //# #....# # -0x80, 0x80, 0x44, 0x01, 0x11, 0x18, 0x80, 0x80, //# # $$ ....## # -0x80, 0x80, 0x00, 0x81, 0x11, 0x10, 0x00, 0x80, //# # #.... # -0x80, 0x08, 0x84, 0x81, 0x11, 0x18, 0x28, 0x80, //# ##$#....#@## -0x80, 0x40, 0x40, 0x00, 0x80, 0x88, 0x88, 0x00, //# $ $ # #### -0x88, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, //## # $ # -0x08, 0x88, 0x88, 0x80, 0x40, 0x80, 0x00, 0x00, // ###### $ # -0x00, 0x00, 0x00, 0x88, 0x00, 0x80, 0x00, 0x00, // ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 247 -0x0E, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //## ## -0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, //# ##### -0x80, 0x80, 0x00, 0x04, 0x00, 0x80, 0x00, //# # $ # -0x80, 0x08, 0x04, 0x08, 0x80, 0x80, 0x00, //# # $ ## # -0x88, 0x04, 0x48, 0x11, 0x10, 0x80, 0x00, //## $$#... # -0x08, 0x88, 0x00, 0x11, 0x10, 0x80, 0x00, // ### ... # -0x00, 0x08, 0x88, 0x81, 0x18, 0x88, 0x88, // ####..##### -0x88, 0x88, 0x88, 0x11, 0x18, 0x80, 0x08, //######...## # -0x80, 0x08, 0x88, 0x04, 0x20, 0x84, 0x08, //# ### $@ #$ # -0x80, 0x40, 0x80, 0x00, 0x80, 0x00, 0x08, //# $ # # # -0x80, 0x04, 0x00, 0x84, 0x00, 0x40, 0x88, //# $ #$ $ ## -0x88, 0x00, 0x00, 0x40, 0x08, 0x88, 0x80, //## $ #### -0x08, 0x88, 0x88, 0x00, 0x88, 0x00, 0x00, // ##### ## -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 248 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x88, // ###### -0x88, 0x80, 0x10, 0x08, //### . # -0x80, 0x42, 0x81, 0x08, //# $@#. # -0x80, 0x04, 0x80, 0x88, //# $# ## -0x80, 0x05, 0x00, 0x80, //# * # -0x88, 0x00, 0x80, 0x80, //## # # -0x08, 0x80, 0x00, 0x80, // ## # -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 249 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########### -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, // # # # -0x88, 0x88, 0x80, 0x08, 0x00, 0x00, 0x04, 0x04, 0x08, 0x00, //##### # $ $ # -0x80, 0x00, 0x88, 0x88, 0x80, 0x48, 0x80, 0x80, 0x88, 0x00, //# ##### $## # ## -0x80, 0x40, 0x88, 0x00, 0x08, 0x08, 0x80, 0x40, 0x08, 0x00, //# $ ## # ## $ # -0x80, 0x40, 0x02, 0x44, 0x08, 0x08, 0x84, 0x44, 0x08, 0x00, //# $ @$$ # ##$$$ # -0x88, 0x08, 0x88, 0x00, 0x08, 0x08, 0x80, 0x00, 0x08, 0x00, //## ### # ## # -0x88, 0x08, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x48, 0x00, //## # ### #####$# -0x88, 0x08, 0x00, 0x00, 0x04, 0x00, 0x81, 0x11, 0x18, 0x00, //## # $ #....# -0x80, 0x08, 0x88, 0x08, 0x80, 0x40, 0x81, 0x11, 0x18, 0x80, //# ### ## $ #....## -0x80, 0x40, 0x00, 0x40, 0x80, 0x00, 0x81, 0x14, 0x10, 0x80, //# $ $ # #..$. # -0x80, 0x08, 0x80, 0x40, 0x80, 0x08, 0x81, 0x11, 0x10, 0x80, //# ## $ # ##.... # -0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x11, 0x18, 0x80, //##### ######...## -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### ##### -//Level: 250 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, //############ ###### -0x80, 0x00, 0x80, 0x00, 0x08, 0x08, 0x88, 0x11, 0x11, 0x80, //# # # ###....# -0x80, 0x00, 0x44, 0x80, 0x00, 0x20, 0x01, 0x11, 0x11, 0x80, //# $$# @ .....# -0x80, 0x00, 0x80, 0x88, 0x80, 0x00, 0x80, 0x11, 0x11, 0x80, //# # ### # ....# -0x88, 0x08, 0x80, 0x88, 0x80, 0x08, 0x00, 0x11, 0x11, 0x80, //## ## ### # ....# -0x08, 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x08, 0x88, 0x80, // # $ $ # # #### -0x08, 0x00, 0x40, 0x48, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, // # $ $## # # -0x88, 0x88, 0x08, 0x00, 0x88, 0x88, 0x08, 0x08, 0x80, 0x80, //#### # #### # ## # -0x80, 0x08, 0x08, 0x40, 0x00, 0x88, 0x08, 0x00, 0x00, 0x80, //# # #$ ## # # -0x80, 0x40, 0x04, 0x00, 0x80, 0x88, 0x08, 0x00, 0x08, 0x80, //# $ $ # ## # ## -0x80, 0x80, 0x40, 0x40, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, //# # $ $ # # # -0x80, 0x04, 0x08, 0x80, 0x88, 0x08, 0x08, 0x88, 0x88, 0x00, //# $ ## ## # ##### -0x80, 0x44, 0x00, 0x00, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00, //# $$ $$ # -0x88, 0x08, 0x80, 0x88, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, //## ## ### $ # -0x08, 0x00, 0x00, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, // # # # # -0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### ###### -//Level: 251 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x28, 0x88, //# # ## # @### -0x88, 0x00, 0x00, 0x40, 0x00, 0x08, 0x04, 0x88, 0x80, 0x08, //## $ # $### # -0x88, 0x48, 0x04, 0x08, 0x84, 0x80, 0x40, 0x40, 0x00, 0x08, //##$# $ ##$# $ $ # -0x80, 0x00, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x88, //# $# $ ### -0x80, 0x88, 0x00, 0x04, 0x08, 0x88, 0x00, 0x81, 0x11, 0x18, //# ## $ ### #....# -0x80, 0x80, 0x48, 0x08, 0x08, 0x08, 0x08, 0x11, 0x11, 0x88, //# # $# # # # #....## -0x80, 0x00, 0x04, 0x04, 0x08, 0x00, 0x81, 0x11, 0x18, 0x88, //# $ $ # #....### -0x88, 0x40, 0x88, 0x80, 0x04, 0x08, 0x11, 0x11, 0x88, 0x88, //##$ ### $ #....#### -0x80, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, //# # $ ###### -0x80, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x88, 0x88, 0x88, //# # # ###### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 252 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x88, //# # # ## ## -0x80, 0x48, 0x00, 0x04, 0x08, 0x00, 0x00, 0x08, 0x80, 0x08, //# $# $ # ## # -0x80, 0x40, 0x04, 0x00, 0x81, 0x18, 0x00, 0x00, 0x04, 0x08, //# $ $ #..# $ # -0x80, 0x40, 0x40, 0x08, 0x11, 0x11, 0x80, 0x00, 0x80, 0x88, //# $ $ #....# # ## -0x80, 0x48, 0x00, 0x81, 0x11, 0x11, 0x18, 0x88, 0x04, 0x08, //# $# #......### $ # -0x80, 0x00, 0x80, 0x08, 0x11, 0x11, 0x80, 0x08, 0x40, 0x08, //# # #....# #$ # -0x80, 0x40, 0x08, 0x88, 0x81, 0x18, 0x00, 0x08, 0x00, 0x08, //# $ ####..# # # -0x88, 0x04, 0x00, 0x08, 0x80, 0x80, 0x80, 0x40, 0x04, 0x88, //## $ ## # # $ $## -0x88, 0x80, 0x40, 0x00, 0x04, 0x82, 0x40, 0x48, 0x00, 0x08, //### $ $#@$ $# # -0x88, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, //#### # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 253 -0x0F, 0x10,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, // # # # -0x88, 0x08, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80, //## ## # ## # -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x80, 0x80, //#..... .....# # -0x81, 0x10, 0x18, 0x08, 0x10, 0x11, 0x80, 0x80, //#.. .# #. ..# # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, 0x80, //###### ###### # -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x88, 0x88, 0x04, 0x88, 0x88, 0x80, 0x80, // ##### $##### # -0x08, 0x00, 0x00, 0x82, 0x80, 0x00, 0x80, 0x80, // # #@# # # -0x88, 0x40, 0x40, 0x84, 0x80, 0x00, 0x80, 0x80, //##$ $ #$# # # -0x80, 0x40, 0x04, 0x04, 0x00, 0x44, 0x40, 0x80, //# $ $ $ $$$ # -0x80, 0x04, 0x00, 0x84, 0x80, 0x00, 0x80, 0x80, //# $ #$# # # -0x80, 0x00, 0x44, 0x80, 0x84, 0x40, 0x80, 0x80, //# $$# #$$ # # -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x80, 0x80, //#### ### # -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ###### # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 254 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //########### -0x80, 0x00, 0x88, 0x11, 0x11, 0x88, 0x88, 0x80, //# ##....##### -0x80, 0x04, 0x00, 0x11, 0x18, 0x80, 0x00, 0x80, //# $ ...## # -0x88, 0x84, 0x40, 0x11, 0x88, 0x80, 0x80, 0x80, //###$$ ..### # # -0x00, 0x80, 0x88, 0x11, 0x18, 0x84, 0x00, 0x80, // # ##...##$ # -0x00, 0x80, 0x80, 0x00, 0x88, 0x80, 0x08, 0x80, // # # ### ## -0x08, 0x80, 0x80, 0x40, 0x04, 0x04, 0x08, 0x00, // ## # $ $ $ # -0x08, 0x00, 0x80, 0x80, 0x80, 0x00, 0x08, 0x00, // # # # # # -0x08, 0x00, 0x00, 0x80, 0x40, 0x84, 0x08, 0x00, // # # $ #$ # -0x08, 0x04, 0x40, 0x80, 0x48, 0x00, 0x88, 0x00, // # $$ # $# ## -0x08, 0x88, 0x08, 0x80, 0x08, 0x08, 0x80, 0x00, // ### ## # ## -0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, // #@ # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -//Level: 255 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x28, //# # # # #@# -0x80, 0x40, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x08, //# $ $ $ # # -0x88, 0x08, 0x88, 0x11, 0x88, 0x08, 0x88, 0x00, 0x00, 0x08, //## ###..## ### # -0x80, 0x00, 0x81, 0x11, 0x18, 0x48, 0x00, 0x48, 0x88, 0x08, //# #....#$# $### # -0x80, 0x40, 0x81, 0x11, 0x18, 0x00, 0x40, 0x04, 0x04, 0x08, //# $ #....# $ $ $ # -0x80, 0x00, 0x81, 0x11, 0x18, 0x08, 0x08, 0x04, 0x04, 0x08, //# #....# # # $ $ # -0x80, 0x00, 0x88, 0x11, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, //# ##..## #$# # -0x88, 0x48, 0x80, 0x00, 0x08, 0x80, 0x08, 0x00, 0x84, 0x88, //##$## ## # #$## -0x80, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, //# $ $ # # # -0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 256 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, //# # # # -0x80, 0x00, 0x00, 0x00, 0x40, 0x08, 0x80, 0x88, 0x80, 0x88, //# $ ## ### ## -0x88, 0x88, 0x80, 0x08, 0x80, 0x00, 0x40, 0x04, 0x00, 0x08, //##### ## $ $ # -0x88, 0x11, 0x88, 0x00, 0x80, 0x80, 0x40, 0x80, 0x80, 0x08, //##..## # # $ # # # -0x81, 0x11, 0x10, 0x04, 0x00, 0x00, 0x08, 0x84, 0x80, 0x88, //#.... $ ##$# ## -0x81, 0x11, 0x10, 0x04, 0x88, 0x88, 0x80, 0x00, 0x84, 0x88, //#.... $##### #$## -0x88, 0x11, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, 0x40, 0x08, //##..# # # # $ # -0x88, 0x81, 0x80, 0x80, 0x04, 0x00, 0x04, 0x00, 0x80, 0x28, //###.# # $ $ # @# -0x88, 0x00, 0x40, 0x04, 0x08, 0x00, 0x08, 0x00, 0x88, 0x88, //## $ $ # # #### -0x88, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, //## ########### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 257 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x80, 0x80, 0x00, 0x08, 0x00, 0x80, 0x08, //# # # # # # # -0x80, 0x00, 0x40, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x08, //# $ $ $ # -0x88, 0x08, 0x00, 0x84, 0x88, 0x84, 0x88, 0x00, 0x88, 0x08, //## # #$###$## ## # -0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x08, 0x00, 0x40, 0x08, //# $ $ # $ # -0x80, 0x88, 0x84, 0x88, 0x48, 0x00, 0x08, 0x04, 0x00, 0x08, //# ###$##$# # $ # -0x80, 0x80, 0x00, 0x40, 0x40, 0x08, 0x88, 0x88, 0x80, 0x48, //# # $ $ ###### $# -0x80, 0x40, 0x04, 0x40, 0x40, 0x08, 0x28, 0x18, 0x11, 0x18, //# $ $$ $ #@#.#...# -0x80, 0x80, 0x00, 0x00, 0x80, 0x08, 0x08, 0x18, 0x11, 0x18, //# # # # #.#...# -0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x11, 0x11, 0x18, //# ########## #.....# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x11, 0x18, //# #.....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 258 -0x14, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x20, 0x80, 0x00, 0x00, // ##########@ # -0x88, 0x80, 0x00, 0x80, 0x00, 0x88, 0x40, 0x88, 0x88, 0x88, //### # ##$ ###### -0x80, 0x04, 0x40, 0x80, 0x00, 0x00, 0x40, 0x80, 0x01, 0x18, //# $$ # $ # ..# -0x80, 0x80, 0x00, 0x80, 0x00, 0x88, 0x40, 0x00, 0x01, 0x18, //# # # ##$ ..# -0x80, 0x80, 0x00, 0x80, 0x44, 0x08, 0x00, 0x80, 0x01, 0x18, //# # # $$ # # ..# -0x80, 0x80, 0x88, 0x88, 0x08, 0x08, 0x88, 0x80, 0x11, 0x18, //# # #### # #### ...# -0x80, 0x84, 0x08, 0x88, 0x08, 0x00, 0x80, 0x88, 0x88, 0x88, //# #$ ### # # ###### -0x80, 0x80, 0x08, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, //# # # # # -0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x80, 0x08, 0x88, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, //# # ### ## # -0x80, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# #### # -0x80, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //# ###### -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 259 -0x0F, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -0x00, 0x08, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###### -0x00, 0x08, 0x00, 0x48, 0x00, 0x00, 0x00, 0x80, // # $# # -0x88, 0x88, 0x40, 0x04, 0x00, 0x84, 0x40, 0x80, //####$ $ #$$ # -0x80, 0x00, 0x04, 0x40, 0x40, 0x00, 0x40, 0x80, //# $$ $ $ # -0x80, 0x48, 0x00, 0x88, 0x08, 0x88, 0x08, 0x80, //# $# ## ### ## -0x80, 0x28, 0x84, 0x04, 0x00, 0x40, 0x08, 0x00, //# @##$ $ $ # -0x80, 0x00, 0x00, 0x40, 0x04, 0x04, 0x08, 0x00, //# $ $ $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x44, 0x08, 0x00, //##########$$ # -0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x88, 0x00, // #.........## -0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x80, 0x00, // #.........# -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ########### -//Level: 260 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -0x08, 0x20, 0x05, 0x05, 0x05, 0x08, 0x00, 0x88, // #@ * * * # ## -0x08, 0x48, 0x00, 0x50, 0x50, 0x08, 0x00, 0x08, // #$# * * # # -0x08, 0x08, 0x05, 0x05, 0x05, 0x00, 0x00, 0x08, // # # * * * # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x88, // # # * * ## ## -0x08, 0x08, 0x05, 0x05, 0x05, 0x08, 0x80, 0x80, // # # * * * ## # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x80, // # # * * ## # -0x08, 0x08, 0x05, 0x05, 0x05, 0x08, 0x80, 0x80, // # # * * * ## # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x80, // # # * * ## # -0x08, 0x08, 0x05, 0x01, 0x05, 0x08, 0x80, 0x88, // # # * . * ## ## -0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //## ########## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //# ######### # -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x88, 0x88, //##### #### -//Level: 261 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x11, 0x11, 0x08, //#..... # -0x84, 0x08, 0x84, 0x08, //#$ ##$ # -0x80, 0x48, 0x80, 0x08, //# $## # -0x80, 0x04, 0x24, 0x08, //# $@$ # -0x80, 0x00, 0x00, 0x88, //# ## -0x88, 0x88, 0x88, 0x80, //####### -//Level: 262 -0x13, 0x0D,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# ## -0x80, 0x40, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, //# $ ######### -0x88, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //## # # ###### -0x88, 0x08, 0x00, 0x04, 0x84, 0x82, 0x00, 0x80, 0x00, 0x80, //## # $#$#@ # # -0x80, 0x08, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x40, 0x80, //# # $ # $ # -0x80, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //# ### ######### ## -0x80, 0x08, 0x80, 0x11, 0x51, 0x11, 0x11, 0x08, 0x08, 0x80, //# ## ..*..... # ## -0x88, 0x08, 0x80, 0x51, 0x51, 0x15, 0x15, 0x08, 0x08, 0x80, //## ## *.*..*.* # ## -0x80, 0x48, 0x88, 0x88, 0x88, 0x88, 0x80, 0x88, 0x40, 0x80, //# $########## ##$ # -0x80, 0x04, 0x00, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x80, //# $ $ $ $ # -0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x80, //# # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 263 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x11, 0x11, 0x80, // #############....# -0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x88, 0x11, 0x11, 0x80, //## ## ##....# -0x80, 0x04, 0x48, 0x80, 0x04, 0x02, 0x88, 0x11, 0x11, 0x80, //# $$## $ @##....# -0x80, 0x00, 0x00, 0x04, 0x40, 0x48, 0x00, 0x11, 0x11, 0x80, //# $$ $# ....# -0x80, 0x04, 0x08, 0x80, 0x44, 0x08, 0x08, 0x01, 0x11, 0x80, //# $ ## $$ # # ...# -0x80, 0x04, 0x08, 0x80, 0x40, 0x08, 0x00, 0x11, 0x11, 0x80, //# $ ## $ # ....# -0x88, 0x08, 0x88, 0x88, 0x08, 0x88, 0x08, 0x81, 0x88, 0x80, //## ##### ### ##.### -0x88, 0x00, 0x04, 0x00, 0x40, 0x88, 0x00, 0x01, 0x00, 0x80, //## $ $ ## . # -0x80, 0x48, 0x88, 0x00, 0x80, 0x88, 0x88, 0x80, 0x88, 0x80, //# $### # ##### ### -0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //# $ # # -0x80, 0x04, 0x08, 0x40, 0x40, 0x48, 0x88, 0x00, 0x80, 0x00, //# $ #$ $ $### # -0x80, 0x44, 0x48, 0x04, 0x00, 0x08, 0x08, 0x88, 0x80, 0x00, //# $$$# $ # #### -0x80, 0x00, 0x08, 0x00, 0x44, 0x08, 0x00, 0x00, 0x00, 0x00, //# # $$ # -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, //###### ### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 264 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, // ####### ###### -0x08, 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### # -0x08, 0x00, 0x88, 0x08, 0x00, 0x44, 0x80, 0x88, // # ## # $$# ## -0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x08, // #$ $ $ $ $ # -0x08, 0x04, 0x04, 0x08, 0x00, 0x08, 0x00, 0x08, // # $ $ # # # -0x88, 0x00, 0x44, 0x08, 0x88, 0x88, 0x81, 0x88, //## $$ ######.## -0x80, 0x40, 0x00, 0x08, 0x00, 0x08, 0x11, 0x18, //# $ # #...# -0x82, 0x84, 0x40, 0x88, 0x00, 0x08, 0x11, 0x18, //#@#$$ ## #...# -0x80, 0x04, 0x00, 0x08, 0x00, 0x08, 0x11, 0x18, //# $ # #...# -0x88, 0x00, 0x84, 0x08, 0x00, 0x08, 0x11, 0x18, //## #$ # #...# -0x08, 0x44, 0x80, 0x08, 0x88, 0x88, 0x11, 0x18, // #$$# #####...# -0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x11, 0x18, // # $ ...# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x08, // ########### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 265 -0x14, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, // #### #### -0x00, 0x00, 0x08, 0x88, 0x00, 0x80, 0x80, 0x08, 0x00, 0x00, // ### # # # -0x00, 0x88, 0x88, 0x00, 0x40, 0x88, 0x80, 0x48, 0x00, 0x00, // #### $ ### $# -0x00, 0x80, 0x40, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x08, 0x80, 0x40, 0x04, 0x00, 0x48, 0x00, 0x00, //### ## $ $ $# -0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x88, 0x08, 0x00, 0x00, //# # $ ## # -0x80, 0x84, 0x44, 0x48, 0x04, 0x40, 0x40, 0x08, 0x00, 0x00, //# #$$$$# $$ $ # -0x80, 0x00, 0x04, 0x04, 0x40, 0x88, 0x88, 0x08, 0x88, 0x88, //# $ $$ #### ##### -0x88, 0x88, 0x00, 0x00, 0x40, 0x28, 0x80, 0x11, 0x11, 0x18, //#### $ @## .....# -0x08, 0x00, 0x44, 0x88, 0x08, 0x88, 0x80, 0x11, 0x11, 0x88, // # $$## #### ....## -0x08, 0x04, 0x00, 0x81, 0x11, 0x18, 0x80, 0x11, 0x88, 0x80, // # $ #....## ..### -0x08, 0x08, 0x00, 0x41, 0x11, 0x18, 0x88, 0x88, 0x80, 0x00, // # # $....###### -0x08, 0x88, 0x80, 0x01, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, // #### ....# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 266 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x08, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, // #### ###### -0x08, 0x00, 0x80, 0x40, 0x00, 0x08, 0x00, 0x80, // # # $ # # -0x08, 0x04, 0x00, 0x84, 0x40, 0x04, 0x40, 0x80, // # $ #$$ $$ # -0x08, 0x00, 0x48, 0x00, 0x81, 0x18, 0x10, 0x80, // # $# #..#. # -0x88, 0x40, 0x08, 0x08, 0x11, 0x15, 0x18, 0x80, //##$ # #...*.## -0x80, 0x40, 0x80, 0x40, 0x11, 0x88, 0x10, 0x80, //# $ # $ ..##. # -0x80, 0x84, 0x04, 0x08, 0x11, 0x11, 0x10, 0x80, //# #$ $ #..... # -0x80, 0x00, 0x08, 0x00, 0x80, 0x08, 0x88, 0x80, //# # # #### -0x80, 0x48, 0x00, 0x80, 0x00, 0x28, 0x80, 0x00, //# $# # @## -0x80, 0x00, 0x04, 0x80, 0x80, 0x08, 0x00, 0x00, //# $# # # -0x88, 0x88, 0x00, 0x40, 0x88, 0x88, 0x00, 0x00, //#### $ #### -0x00, 0x08, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, // # ### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 267 -0x0D, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x80, 0x28, 0x88, 0x00, 0x00, // # @### -0x00, 0x88, 0x80, 0x40, 0x08, 0x80, 0x00, // ### $ ## -0x08, 0x80, 0x04, 0x14, 0x00, 0x80, 0x00, // ## $.$ # -0x08, 0x00, 0x41, 0x51, 0x40, 0x88, 0x80, // # $.*.$ ### -0x88, 0x04, 0x15, 0x15, 0x14, 0x00, 0x80, //## $.*.*.$ # -0x80, 0x41, 0x51, 0x51, 0x51, 0x40, 0x80, //# $.*.*.*.$ # -0x80, 0x04, 0x15, 0x15, 0x14, 0x08, 0x80, //# $.*.*.$ ## -0x88, 0x80, 0x41, 0x51, 0x40, 0x08, 0x00, //### $.*.$ # -0x00, 0x80, 0x04, 0x14, 0x00, 0x88, 0x00, // # $.$ ## -0x00, 0x88, 0x00, 0x40, 0x88, 0x80, 0x00, // ## $ ### -0x00, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, // ### # -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 268 -0x0D, 0x0B,//Size x and y -0x08, 0x88, 0x80, 0x08, 0x88, 0x88, 0x80, // #### ###### -0x08, 0x00, 0x88, 0x88, 0x00, 0x00, 0x80, // # #### # -0x88, 0x50, 0x00, 0x50, 0x55, 0x00, 0x80, //##* * ** # -0x80, 0x40, 0x50, 0x00, 0x05, 0x80, 0x80, //# $ * *# # -0x80, 0x10, 0x00, 0x88, 0x80, 0x00, 0x80, //# . ### # -0x88, 0x88, 0x88, 0x00, 0x08, 0x28, 0x80, //###### #@## -0x80, 0x50, 0x10, 0x50, 0x05, 0x50, 0x80, //# * . * ** # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x50, 0x00, 0x50, 0x84, 0x80, 0x80, //##* * #$# # -0x08, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, // # ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x80, // #### ##### -//Level: 269 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x00, // # ## -0x88, 0x84, 0x00, 0x08, 0x80, //###$ ## -0x80, 0x01, 0x41, 0x40, 0x80, //# .$.$ # -0x80, 0x81, 0x81, 0x80, 0x80, //# #.#.# # -0x80, 0x05, 0x45, 0x00, 0x80, //# *$* # -0x88, 0x80, 0x00, 0x88, 0x80, //### ### -0x00, 0x80, 0x20, 0x80, 0x00, // # @ # -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 270 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x80, 0x80, 0x52, 0x88, //# # *@## -0x80, 0x05, 0x00, 0x08, //# * # -0x88, 0x84, 0x00, 0x08, //###$ # -0x00, 0x80, 0x00, 0x18, // # .# -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 271 -0x11, 0x10,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ######## -0x00, 0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, // # # # -0x00, 0x08, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, // # $ # -0x08, 0x88, 0x08, 0x40, 0x00, 0x88, 0x88, 0x00, 0x00, // ### #$ #### -0x08, 0x00, 0x40, 0x08, 0x84, 0x00, 0x08, 0x00, 0x00, // # $ ##$ # -0x08, 0x00, 0x80, 0x20, 0x40, 0x80, 0x48, 0x00, 0x00, // # # @ $ # $# -0x08, 0x00, 0x80, 0x00, 0x00, 0x04, 0x08, 0x88, 0x80, // # # $ #### -0x08, 0x80, 0x88, 0x88, 0x48, 0x80, 0x00, 0x00, 0x80, // ## ####$## # -0x08, 0x04, 0x81, 0x11, 0x11, 0x80, 0x80, 0x00, 0x80, // # $#.....# # # -0x08, 0x00, 0x41, 0x15, 0x51, 0x04, 0x80, 0x88, 0x80, // # $..**. $# ### -0x88, 0x00, 0x81, 0x11, 0x11, 0x80, 0x00, 0x80, 0x00, //## #.....# # -0x80, 0x00, 0x88, 0x80, 0x88, 0x88, 0x88, 0x80, 0x00, //# ### ####### -0x80, 0x44, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# $$ # # -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # # -0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 272 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x88, 0x11, 0x10, 0x00, 0x88, 0x08, 0x00, 0x00, 0x80, 0x08, //##... ## # # # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x88, 0x08, //#.... $ ## # -0x81, 0x11, 0x18, 0x08, 0x08, 0x48, 0x88, 0x40, 0x00, 0x08, //#....# # #$###$ # -0x81, 0x11, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, //#...# # # # -0x88, 0x18, 0x00, 0x84, 0x08, 0x00, 0x00, 0x04, 0x88, 0x08, //##.# #$ # $## # -0x80, 0x08, 0x00, 0x80, 0x40, 0x40, 0x88, 0x80, 0x04, 0x08, //# # # $ $ ### $ # -0x80, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x80, 0x88, 0x08, //# $ $ # # ## # -0x88, 0x08, 0x08, 0x80, 0x84, 0x48, 0x04, 0x80, 0x08, 0x08, //## # ## #$$# $# # # -0x80, 0x08, 0x00, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x88, //# # $ $ # ## -0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x28, //# # # # @# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 273 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x08, 0x00, 0x80, 0x80, 0x08, 0x00, 0x80, 0x08, //# # # # # # # -0x80, 0x28, 0x08, 0x08, 0x80, 0x40, 0x00, 0x40, 0x00, 0x88, //# @# # ## $ $ ## -0x88, 0x88, 0x08, 0x00, 0x00, 0x80, 0x08, 0x04, 0x00, 0x08, //#### # # # $ # -0x80, 0x00, 0x08, 0x08, 0x80, 0x84, 0x08, 0x80, 0x88, 0x08, //# # ## #$ ## ## # -0x80, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, //# $ $ $ # -0x81, 0x18, 0x88, 0x44, 0x88, 0x04, 0x88, 0x40, 0x88, 0x08, //#..###$$## $##$ ## # -0x81, 0x18, 0x18, 0x00, 0x80, 0x40, 0x00, 0x40, 0x80, 0x08, //#..#.# # $ $ # # -0x81, 0x11, 0x18, 0x04, 0x40, 0x00, 0x88, 0x40, 0x88, 0x88, //#....# $$ ##$ #### -0x81, 0x11, 0x18, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x08, //#....# ##### # -0x81, 0x11, 0x88, 0x80, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, //#...### ## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 274 -0x12, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x00, 0x00, 0x08, 0x00, 0x00, 0x11, 0x18, 0x00, 0x00, // # ...# -0x00, 0x00, 0x08, 0x08, 0x00, 0x11, 0x18, 0x00, 0x00, // # # ...# -0x00, 0x00, 0x08, 0x08, 0x80, 0x01, 0x18, 0x00, 0x00, // # ## ..# -0x88, 0x88, 0x88, 0x04, 0x04, 0x08, 0x88, 0x00, 0x00, //###### $ $ ### -0x81, 0x11, 0x40, 0x40, 0x42, 0x88, 0x00, 0x00, 0x00, //#...$ $ $@## -0x81, 0x18, 0x04, 0x04, 0x04, 0x88, 0x88, 0x88, 0x88, //#..# $ $ $######## -0x81, 0x11, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00, 0x08, //#...# $ $ # -0x81, 0x11, 0x04, 0x04, 0x00, 0x84, 0x84, 0x88, 0x08, //#... $ $ #$#$## # -0x80, 0x08, 0x88, 0x80, 0x40, 0x40, 0x40, 0x80, 0x08, //# #### $ $ $ # # -0x80, 0x08, 0x00, 0x80, 0x04, 0x00, 0x04, 0x00, 0x08, //# # # $ $ # -0x88, 0x88, 0x00, 0x88, 0x00, 0x08, 0x88, 0x88, 0x88, //#### ## ####### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 275 -0x10, 0x0D,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //## ############ -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x28, //# $ $ $ $ $ $ @# -0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, //# # $ # -0x80, 0x80, 0x08, 0x88, 0x85, 0x88, 0x84, 0x88, //# # ####*###$## -0x80, 0x80, 0x08, 0x11, 0x11, 0x18, 0x00, 0x80, //# # #.....# # -0x80, 0x84, 0x08, 0x15, 0x55, 0x15, 0x00, 0x80, //# #$ #.***.* # -0x80, 0x80, 0x05, 0x11, 0x11, 0x18, 0x00, 0x80, //# # *.....# # -0x80, 0x80, 0x48, 0x88, 0x88, 0x88, 0x44, 0x80, //# # $#######$$# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //########### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 276 -0x0E, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#. # -0x81, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08, //#.$ $ $ $ $ # -0x81, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //#.######### # -0x81, 0x81, 0x50, 0x40, 0x11, 0x45, 0x88, //#.#.* $ ..$*## -0x81, 0x80, 0x40, 0x40, 0x51, 0x42, 0x80, //#.# $ $ *.$@# -0x81, 0x81, 0x00, 0x40, 0x11, 0x44, 0x80, //#.#. $ ..$$# -0x81, 0x88, 0x88, 0x88, 0x88, 0x81, 0x80, //#.#########.# -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //#. # -0x81, 0x84, 0x84, 0x84, 0x84, 0x84, 0x80, //#.#$#$#$#$#$# -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //#. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 277 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x00, 0x00, //#### -0x81, 0x08, 0x00, 0x00, //#. # -0x80, 0x48, 0x00, 0x00, //# $# -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x14, 0x02, 0x08, //# .$ @ # -0x80, 0x14, 0x08, 0x08, //# .$ # # -0x88, 0x80, 0x00, 0x08, //### # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 278 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x00, 0x08, //# # -0x80, 0x84, 0x00, 0x08, //# #$ # -0x80, 0x40, 0x28, 0x18, //# $ @#.# -0x88, 0x48, 0x10, 0x08, //##$#. # -0x08, 0x00, 0x00, 0x18, // # .# -0x08, 0x88, 0x88, 0x88, // ####### -//Level: 279 -0x13, 0x11,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x00, 0x08, 0x88, 0x80, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, // #### #......# -0x00, 0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x81, 0x11, 0x80, // # #########...# -0x00, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x81, 0x11, 0x80, // # $ $ #...# -0x00, 0x08, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, // # # # # # # # -0x88, 0x88, 0x80, 0x80, 0x80, 0x82, 0x80, 0x80, 0x00, 0x80, //##### # # #@# # # -0x80, 0x00, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x08, 0x80, //# # ### ### ## ## -0x80, 0x00, 0x04, 0x08, 0x04, 0x04, 0x04, 0x08, 0x08, 0x00, //# $ # $ $ $ # # -0x80, 0x44, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, //# $$$ $ # # -0x80, 0x00, 0x80, 0x88, 0x84, 0x88, 0x84, 0x88, 0x08, 0x00, //# # ###$###$## # -0x88, 0x80, 0x80, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, //### # $ # # -0x08, 0x80, 0x40, 0x08, 0x04, 0x04, 0x04, 0x08, 0x88, 0x00, // ## $ # $ $ $ ### -0x08, 0x00, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x00, 0x00, // # # ### ### ## -0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // # ########### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 280 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //# ### -0x80, 0x40, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, //# $ ### -0x80, 0x40, 0x40, 0x08, 0x88, 0x00, 0x00, 0x00, //# $ $ ### -0x80, 0x40, 0x40, 0x40, 0x08, 0x88, 0x00, 0x00, //# $ $ $ ### -0x80, 0x40, 0x40, 0x40, 0x00, 0x08, 0x00, 0x00, //# $ $ $ # -0x80, 0x40, 0x40, 0x08, 0x00, 0x08, 0x80, 0x00, //# $ $ # ## -0x80, 0x40, 0x08, 0x80, 0x44, 0x40, 0x80, 0x00, //# $ ## $$$ # -0x82, 0x08, 0x88, 0x80, 0x00, 0x00, 0x88, 0x00, //#@ #### ## -0x88, 0x08, 0x08, 0x14, 0x44, 0x44, 0x18, 0x00, //## # #.$$$$$.# -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x18, 0x80, // # ###.......## -0x08, 0x00, 0x01, 0x55, 0x55, 0x55, 0x51, 0x80, // # .*******.# -0x08, 0x88, 0x81, 0x11, 0x11, 0x11, 0x11, 0x80, // ####.........# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ########### -//Level: 281 -0x10, 0x12,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -0x00, 0x00, 0x80, 0x00, 0x82, 0x80, 0x00, 0x00, // # #@# -0x08, 0x88, 0x80, 0x80, 0x80, 0x88, 0x88, 0x80, // #### # # ##### -0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # # -0x08, 0x04, 0x84, 0x88, 0x88, 0x88, 0x80, 0x80, // # $#$####### # -0x88, 0x40, 0x00, 0x81, 0x18, 0x11, 0x84, 0x88, //##$ #..#..#$## -0x80, 0x00, 0x04, 0x41, 0x11, 0x11, 0x80, 0x08, //# $$.....# # -0x80, 0x40, 0x40, 0x81, 0x11, 0x11, 0x44, 0x08, //# $ $ #.....$$ # -0x88, 0x00, 0x08, 0x81, 0x11, 0x81, 0x80, 0x08, //## ##...#.# # -0x08, 0x04, 0x00, 0x88, 0x11, 0x18, 0x84, 0x08, // # $ ##...##$ # -0x08, 0x08, 0x80, 0x88, 0x88, 0x88, 0x80, 0x08, // # ## ####### # -0x08, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x88, // # $ $ $ ## -0x08, 0x88, 0x88, 0x80, 0x00, 0x40, 0x80, 0x80, // ###### $ # # -0x00, 0x00, 0x00, 0x88, 0x08, 0x04, 0x00, 0x80, // ## # $ # -0x00, 0x00, 0x00, 0x80, 0x44, 0x04, 0x00, 0x80, // # $$ $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, // # $ # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, // ###### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 282 -0x0B, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -0x88, 0x04, 0x00, 0x51, 0x50, 0x80, //## $ *.* # -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x80, 0x04, 0x00, 0x51, 0x52, 0x80, //# $ *.*@# -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 283 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x88, 0x88, 0x80, // # ###### -0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, // # # # -0x00, 0x00, 0x00, 0x80, 0x44, 0x00, 0x00, 0x80, // # $$ # -0x88, 0x88, 0x88, 0x84, 0x80, 0x08, 0x00, 0x80, //#######$# # # -0x80, 0x08, 0x15, 0x11, 0x08, 0x88, 0x48, 0x80, //# #.*.. ###$## -0x80, 0x08, 0x18, 0x51, 0x40, 0x00, 0x00, 0x80, //# #.#*.$ # -0x80, 0x08, 0x18, 0x15, 0x80, 0x80, 0x00, 0x80, //# #.#.*# # # -0x80, 0x44, 0x11, 0x11, 0x80, 0x88, 0x88, 0x80, //# $$....# ##### -0x80, 0x24, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, //# @$ # # -0x80, 0x44, 0x48, 0x00, 0x00, 0x80, 0x00, 0x00, //# $$$# # -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, //# ###### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 284 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -0x08, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x88, // # # ##### -0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x00, 0x08, // # ## ##### # -0x08, 0x40, 0x40, 0x40, 0x08, 0x00, 0x08, 0x08, // #$ $ $ # # # -0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x08, // # $ $ # # -0x88, 0x00, 0x44, 0x08, 0x88, 0x48, 0x88, 0x08, //## $$ ###$### # -0x80, 0x40, 0x00, 0x08, 0x11, 0x11, 0x80, 0x08, //# $ #....# # -0x82, 0x84, 0x40, 0x88, 0x11, 0x11, 0x80, 0x08, //#@#$$ ##....# # -0x80, 0x04, 0x00, 0x08, 0x11, 0x11, 0x40, 0x08, //# $ #....$ # -0x88, 0x00, 0x88, 0x08, 0x11, 0x11, 0x80, 0x88, //## ## #....# ## -0x08, 0x44, 0x80, 0x08, 0x80, 0x88, 0x80, 0x08, // #$$# ## ### # -0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, // # $ # -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, // ############ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, // #### -//Level: 285 -0x10, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, // # # # -0x88, 0x80, 0x84, 0x00, 0x40, 0x88, 0x88, 0x00, //### #$ $ #### -0x80, 0x04, 0x00, 0x88, 0x11, 0x80, 0x08, 0x88, //# $ ##..# ### -0x80, 0x80, 0x04, 0x08, 0x11, 0x40, 0x40, 0x08, //# # $ #..$ $ # -0x80, 0x44, 0x00, 0x48, 0x11, 0x00, 0x80, 0x08, //# $$ $#.. # # -0x88, 0x00, 0x80, 0x01, 0x11, 0x84, 0x00, 0x08, //## # ...#$ # -0x08, 0x40, 0x20, 0x81, 0x11, 0x80, 0x40, 0x88, // #$ @ #...# $ ## -0x08, 0x00, 0x00, 0x81, 0x11, 0x40, 0x08, 0x80, // # #...$ ## -0x08, 0x08, 0x84, 0x08, 0x88, 0x00, 0x08, 0x00, // # ##$ ### # -0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x88, 0x00, // # $ ### -0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // # ######## -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 286 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x50, 0x00, 0x80, //#@ * # -0x80, 0x44, 0x14, 0x00, 0x80, //# $$.$ # -0x81, 0x11, 0x15, 0x55, 0x80, //#....***# -0x80, 0x44, 0x14, 0x00, 0x80, //# $$.$ # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 287 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x02, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, //# @## # ## -0x80, 0x00, 0x08, 0x80, 0x00, 0x04, 0x00, 0x00, 0x40, 0x88, //# ## $ $ ## -0x80, 0x08, 0x88, 0x11, 0x11, 0x80, 0x80, 0x80, 0x08, 0x88, //# ###....# # # ### -0x80, 0x00, 0x81, 0x11, 0x18, 0x08, 0x08, 0x04, 0x00, 0x08, //# #....# # # $ # -0x88, 0x80, 0x81, 0x11, 0x80, 0x08, 0x00, 0x00, 0x00, 0x08, //### #...# # # -0x88, 0x00, 0x88, 0x18, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, //## ##.# $ $ # -0x88, 0x00, 0x40, 0x40, 0x88, 0x80, 0x08, 0x08, 0x08, 0x88, //## $ $ ### # # ### -0x88, 0x04, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x00, 0x08, //## $ # # $ # -0x88, 0x88, 0x04, 0x00, 0x48, 0x08, 0x08, 0x08, 0x04, 0x08, //#### $ $# # # # $ # -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x88, //#### # # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 288 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x02, 0x08, 0x88, //## @ ### -0x88, 0x01, 0x00, 0x08, //## . # -0x81, 0x04, 0x14, 0x08, //#. $.$ # -0x88, 0x48, 0x08, 0x88, //##$# ### -0x88, 0x00, 0x08, 0x88, //## ### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 289 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x20, 0x88, 0x88, //##@ #### -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x10, 0x88, 0x88, //##. #### -0x80, 0x44, 0x10, 0x18, //# $$. .# -0x80, 0x04, 0x08, 0x88, //# $ ### -0x88, 0x80, 0x08, 0x88, //### ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 290 -0x0A, 0x12,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x08, 0x11, 0x88, 0x11, 0x80, // #..##..# -0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x08, 0x11, 0x55, 0x11, 0x80, // #..**..# -0x08, 0x88, 0x11, 0x88, 0x80, // ###..### -0x08, 0x00, 0x44, 0x00, 0x80, // # $$ # -0x08, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x04, 0x44, 0x40, 0x80, // # $$$$ # -0x88, 0x80, 0x00, 0x08, 0x88, //### ### -0x80, 0x04, 0x44, 0x40, 0x08, //# $$$$ # -0x80, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x44, 0x44, 0x44, 0x08, //# $$$$$$ # -0x88, 0x00, 0x00, 0x00, 0x88, //## ## -0x80, 0x44, 0x44, 0x44, 0x08, //# $$$$$$ # -0x80, 0x00, 0x20, 0x00, 0x08, //# @ # -0x80, 0x08, 0x88, 0x80, 0x08, //# #### # -0x88, 0x88, 0x00, 0x88, 0x88, //#### #### -//Level: 291 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, //# # # -0x80, 0x40, 0x84, 0x08, 0x04, 0x88, 0x40, 0x80, //# $ #$ # $##$ # -0x80, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x80, //# # $ # # -0x80, 0x00, 0x88, 0x48, 0x48, 0x84, 0x40, 0x80, //# ##$#$##$$ # -0x80, 0x80, 0x80, 0x11, 0x10, 0x80, 0x00, 0x80, //# # # ... # # -0x80, 0x40, 0x01, 0x08, 0x01, 0x40, 0x80, 0x80, //# $ . # .$ # # -0x80, 0x48, 0x24, 0x11, 0x18, 0x08, 0x00, 0x80, //# $#@$...# # # -0x80, 0x00, 0x01, 0x08, 0x01, 0x00, 0x40, 0x80, //# . # . $ # -0x80, 0x88, 0x14, 0x88, 0x84, 0x10, 0x80, 0x80, //# ##.$###$. # # -0x80, 0x80, 0x41, 0x11, 0x11, 0x08, 0x80, 0x80, //# # $..... ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 292 -0x0F, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############# -0x08, 0x00, 0x00, 0x80, 0x08, 0x80, 0x08, 0x00, // # # ## # -0x08, 0x44, 0x40, 0x80, 0x44, 0x00, 0x48, 0x80, // #$$$ # $$ $## -0x08, 0x04, 0x00, 0x80, 0x01, 0x11, 0x10, 0x80, // # $ # .... # -0x08, 0x00, 0x40, 0x08, 0x41, 0x88, 0x10, 0x80, // # $ #$.##. # -0x08, 0x00, 0x80, 0x48, 0x01, 0x11, 0x18, 0x80, // # # $# ....## -0x88, 0x40, 0x40, 0x08, 0x41, 0x88, 0x10, 0x80, //##$ $ #$.##. # -0x80, 0x40, 0x04, 0x02, 0x41, 0x11, 0x10, 0x80, //# $ $ @$.... # -0x80, 0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x80, //# ### ###### -0x88, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, //##### #### -//Level: 293 -0x09, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x80, //### ### -0x80, 0x10, 0x40, 0x10, 0x80, //# . $ . # -0x80, 0x81, 0x41, 0x80, 0x80, //# #.$.# # -0x80, 0x40, 0x80, 0x40, 0x80, //# $ # $ # -0x88, 0x80, 0x20, 0x88, 0x80, //### @ ### -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 294 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x82, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, //#@ # # # -0x88, 0x08, 0x88, 0x08, 0x80, 0x08, 0x88, 0x80, 0x80, 0x88, //## ### ## #### # ## -0x80, 0x00, 0x08, 0x08, 0x00, 0x44, 0x00, 0x00, 0x00, 0x08, //# # # $$ # -0x80, 0x08, 0x08, 0x08, 0x04, 0x08, 0x04, 0x08, 0x80, 0x88, //# # # # $ # $ ## ## -0x80, 0x00, 0x00, 0x40, 0x80, 0x08, 0x44, 0x08, 0x00, 0x08, //# $ # #$$ # # -0x80, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, 0x08, 0x80, 0x88, //# ### # ## ## -0x81, 0x18, 0x18, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x08, //#..#.# $ # $ # # -0x81, 0x18, 0x18, 0x00, 0x40, 0x80, 0x88, 0x04, 0x40, 0x08, //#..#.# $ # ## $$ # -0x81, 0x11, 0x18, 0x80, 0x00, 0x44, 0x00, 0x40, 0x08, 0x08, //#....## $$ $ # # -0x81, 0x11, 0x11, 0x88, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, //#.....## # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 295 -0x0D, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x82, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //#@$ $ $ *...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 296 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############ -0x00, 0x00, 0x08, 0x81, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, // ##.. # # -0x00, 0x00, 0x88, 0x11, 0x50, 0x40, 0x00, 0x04, 0x08, 0x00, // ##..* $ $ # -0x00, 0x08, 0x81, 0x15, 0x18, 0x08, 0x08, 0x04, 0x88, 0x00, // ##..*.# # # $## -0x00, 0x08, 0x11, 0x51, 0x80, 0x80, 0x80, 0x40, 0x08, 0x00, // #..*.# # # $ # -0x88, 0x88, 0x11, 0x18, 0x00, 0x80, 0x00, 0x08, 0x08, 0x00, //####...# # # # -0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, //# ## # # -0x80, 0x24, 0x04, 0x08, 0x88, 0x00, 0x80, 0x00, 0x88, 0x00, //# @$ $ ### # ## -0x80, 0x40, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, //# $ $ # # # -0x88, 0x84, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, //###$$ # # # # # -0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x80, 0x88, 0x88, 0x80, // # $ # # ##### -0x00, 0x80, 0x48, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, // # $# ##### # -0x00, 0x84, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x80, 0x80, // #$ # # # # -0x00, 0x80, 0x08, 0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, // # ### ## # -0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, // # # # ## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, // #### ###### -//Level: 297 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x08, 0x11, 0x18, 0x20, 0x00, 0x08, //# # #...#@ # -0x80, 0x80, 0x00, 0x00, 0x00, 0x11, 0x11, 0x80, 0x00, 0x08, //# # ....# # -0x80, 0x04, 0x00, 0x80, 0x00, 0x81, 0x11, 0x18, 0x00, 0x08, //# $ # #....# # -0x80, 0x88, 0x48, 0x88, 0x80, 0x88, 0x11, 0x11, 0x80, 0x08, //# ##$#### ##....# # -0x80, 0x40, 0x00, 0x40, 0x08, 0x00, 0x81, 0x11, 0x80, 0x08, //# $ $ # #...# # -0x80, 0x44, 0x08, 0x00, 0x08, 0x00, 0x08, 0x04, 0x40, 0x08, //# $$ # # # $$ # -0x88, 0x80, 0x04, 0x44, 0x80, 0x00, 0x44, 0x00, 0x40, 0x08, //### $$$# $$ $ # -0x80, 0x40, 0x08, 0x00, 0x80, 0x00, 0x08, 0x04, 0x80, 0x08, //# $ # # # $# # -0x80, 0x00, 0x48, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x08, //# $# # $ # -0x80, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x08, //# # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 298 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x80, 0x08, //# ## # -0x80, 0x10, 0x01, 0x48, //# . .$# -0x80, 0x48, 0x04, 0x18, //# $# $.# -0x88, 0x02, 0x08, 0x08, //## @ # # -0x88, 0x88, 0x00, 0x08, //#### # -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 299 -0x08, 0x08,//Size x and y -0x00, 0x00, 0x88, 0x88, // #### -0x00, 0x00, 0x80, 0x08, // # # -0x00, 0x88, 0x84, 0x18, // ###$.# -0x00, 0x80, 0x01, 0x08, // # . # -0x88, 0x80, 0x08, 0x18, //### #.# -0x80, 0x40, 0x04, 0x08, //# $ $ # -0x80, 0x00, 0x82, 0x08, //# #@ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 300 -0x08, 0x06,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x80, 0x08, 0x88, //### ### -0x80, 0x11, 0x04, 0x18, //# .. $.# -0x80, 0x04, 0x40, 0x28, //# $$ @# -0x88, 0x88, 0x00, 0x08, //#### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 301 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x01, 0x08, 0x00, //# . # -0x80, 0x00, 0x08, 0x88, //# ### -0x80, 0x84, 0x41, 0x08, //# #$$. # -0x81, 0x00, 0x88, 0x08, //#. ## # -0x82, 0x40, 0x88, 0x08, //#@$ ## # -0x88, 0x80, 0x00, 0x08, //### # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 302 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // ######## # -0x00, 0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x40, 0x80, // ## $ $ $ # -0x00, 0x00, 0x08, 0x00, 0x02, 0x84, 0x00, 0x40, 0x80, // # @#$ $ # -0x00, 0x00, 0x08, 0x00, 0x40, 0x80, 0x08, 0x00, 0x80, // # $ # # # -0x88, 0x88, 0x88, 0x88, 0x04, 0x80, 0x00, 0x00, 0x80, //######## $# # -0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x40, 0x88, 0x80, //# $ $ $ ### -0x80, 0x00, 0x88, 0x88, 0x84, 0x88, 0x48, 0x80, 0x00, //# #####$##$## -0x88, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, //## $$ # -0x08, 0x00, 0x88, 0x04, 0x04, 0x04, 0x00, 0x80, 0x00, // # ## $ $ $ # -0x08, 0x88, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x00, // ###### # # ### -0x00, 0x00, 0x08, 0x04, 0x04, 0x00, 0x80, 0x00, 0x00, // # $ $ # -0x00, 0x00, 0x08, 0x00, 0x40, 0x08, 0x80, 0x00, 0x00, // # $ ## -0x00, 0x00, 0x88, 0x88, 0x04, 0x88, 0x80, 0x00, 0x00, // #### $### -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -//Level: 303 -0x10, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, //####### # -0x80, 0x00, 0x88, 0x10, 0x00, 0x80, 0x00, 0x00, //# ##. # -0x80, 0x04, 0x81, 0x10, 0x08, 0x88, 0x00, 0x00, //# $#.. ### -0x88, 0x00, 0x11, 0x18, 0x44, 0x08, 0x88, 0x88, //## ...#$$ ##### -0x08, 0x04, 0x18, 0x14, 0x00, 0x00, 0x00, 0x08, // # $.#.$ # -0x08, 0x04, 0x88, 0x84, 0x88, 0x08, 0x04, 0x08, // # $###$## # $ # -0x08, 0x00, 0x08, 0x00, 0x00, 0x04, 0x48, 0x08, // # # $$# # -0x08, 0x84, 0x48, 0x08, 0x84, 0x84, 0x00, 0x08, // ##$$# ##$#$ # -0x08, 0x11, 0x10, 0x42, 0x04, 0x00, 0x08, 0x88, // #... $@ $ ### -0x08, 0x11, 0x18, 0x48, 0x00, 0x08, 0x88, 0x00, // #...#$# ### -0x08, 0x11, 0x10, 0x08, 0x88, 0x88, 0x00, 0x00, // #... ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 304 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, // ###### -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x08, // ######## # -0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x04, 0x08, // # $ $ $ # -0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x88, 0x08, // # # # # $## # -0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, // # $ $ # -0x00, 0x08, 0x88, 0x88, 0x88, 0x84, 0x08, 0x08, // ########$ # # -0x00, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, // ## # # -0x00, 0x82, 0x40, 0x04, 0x00, 0x80, 0x40, 0x08, // #@$ $ # $ # -0x88, 0x88, 0x88, 0x08, 0x40, 0x84, 0x84, 0x08, //###### #$ #$#$ # -0x81, 0x11, 0x18, 0x04, 0x00, 0x80, 0x00, 0x08, //#....# $ # # -0x81, 0x51, 0x18, 0x88, 0x08, 0x80, 0x88, 0x88, //#.*..### ## #### -0x81, 0x15, 0x10, 0x40, 0x00, 0x80, 0x08, 0x00, //#..*. $ # # -0x81, 0x11, 0x14, 0x04, 0x00, 0x00, 0x08, 0x00, //#....$ $ # -0x81, 0x11, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //#...########## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -//Level: 305 -0x07, 0x06,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x81, 0x14, 0x41, 0x80, //#..$$.# -0x80, 0x44, 0x20, 0x80, //# $$@ # -0x88, 0x00, 0x18, 0x80, //## .## -0x08, 0x88, 0x88, 0x00, // ##### -//Level: 306 -0x08, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x10, 0x08, 0x00, //# . # -0x80, 0x18, 0x08, 0x88, //# .# ### -0x80, 0x24, 0x40, 0x08, //# @$$ # -0x80, 0x41, 0x00, 0x08, //# $. # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 307 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x00, //# @# -0x80, 0x44, 0x88, 0x88, //# $$#### -0x80, 0x40, 0x10, 0x08, //# $ . # -0x88, 0x08, 0x18, 0x08, //## #.# # -0x81, 0x00, 0x08, 0x08, //#. # # -0x80, 0x00, 0x00, 0x08, //# # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 308 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x00, 0x88, //### ## -0x88, 0x80, 0x81, 0x88, //### #.## -0x88, 0x80, 0x01, 0x88, //### .## -0x82, 0x04, 0x40, 0x88, //#@ $$ ## -0x80, 0x01, 0x40, 0x88, //# .$ ## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 309 -0x08, 0x06,//Size x and y -0x08, 0x88, 0x80, 0x00, // #### -0x88, 0x00, 0x88, 0x80, //## ### -0x80, 0x00, 0x00, 0x88, //# ## -0x80, 0x08, 0x44, 0x28, //# #$$@# -0x80, 0x01, 0x05, 0x18, //# . *.# -0x88, 0x88, 0x88, 0x88, //######## -//Level: 310 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x88, 0x88, //## #### -0x81, 0x14, 0x00, 0x18, //#..$ .# -0x80, 0x84, 0x04, 0x08, //# #$ $ # -0x82, 0x00, 0x80, 0x08, //#@ # # -0x88, 0x88, 0x80, 0x08, //##### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 311 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x20, 0x08, 0x88, 0x88, 0x88, 0x00, // #@ ####### -0x00, 0x08, 0x88, 0x80, 0x40, 0x04, 0x00, 0x08, 0x00, // #### $ $ # -0x08, 0x88, 0x00, 0x04, 0x40, 0x40, 0x40, 0x08, 0x00, // ### $$ $ $ # -0x08, 0x00, 0x08, 0x00, 0x48, 0x08, 0x88, 0x88, 0x00, // # # $# ##### -0x08, 0x48, 0x88, 0x80, 0x04, 0x00, 0x04, 0x08, 0x00, // #$#### $ $ # -0x08, 0x04, 0x00, 0x40, 0x04, 0x00, 0x04, 0x08, 0x00, // # $ $ $ $ # -0x08, 0x00, 0x40, 0x08, 0x88, 0x48, 0x88, 0x08, 0x80, // # $ ###$### ## -0x88, 0x00, 0x88, 0x08, 0x11, 0x11, 0x18, 0x00, 0x80, //## ## #.....# # -0x80, 0x04, 0x04, 0x08, 0x11, 0x11, 0x10, 0x00, 0x80, //# $ $ #..... # -0x80, 0x40, 0x00, 0x40, 0x11, 0x11, 0x18, 0x88, 0x80, //# $ $ .....#### -0x88, 0x88, 0x88, 0x88, 0x11, 0x11, 0x18, 0x00, 0x00, //########.....# -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 312 -0x12, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -0x81, 0x11, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, //#... ######## -0x81, 0x11, 0x10, 0x00, 0x00, 0x40, 0x00, 0x88, 0x00, //#.... $ ## -0x81, 0x11, 0x11, 0x88, 0x04, 0x08, 0x40, 0x08, 0x00, //#.....## $ #$ # -0x81, 0x11, 0x11, 0x80, 0x08, 0x00, 0x40, 0x08, 0x00, //#.....# # $ # -0x88, 0x88, 0x88, 0x84, 0x08, 0x80, 0x04, 0x08, 0x88, //#######$ ## $ ### -0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x40, 0x08, // # ### $ # -0x08, 0x00, 0x40, 0x80, 0x40, 0x08, 0x00, 0x40, 0x08, // # $ # $ # $ # -0x08, 0x00, 0x88, 0x80, 0x88, 0x00, 0x80, 0x88, 0x88, // # ### ## # #### -0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x80, 0x00, 0x80, // # # $ $ # # -0x08, 0x88, 0x80, 0x84, 0x80, 0x08, 0x84, 0x00, 0x80, // #### #$# ##$ # -0x00, 0x82, 0x40, 0x00, 0x04, 0x00, 0x04, 0x00, 0x80, // #@$ $ $ # -0x00, 0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x80, // ##### ####### -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -//Level: 313 -0x0B, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x82, 0x00, 0x00, 0x88, 0x88, 0x80, //#@ ##### -0x80, 0x40, 0x15, 0x10, 0x40, 0x80, //# $ .*. $ # -0x80, 0x41, 0x50, 0x51, 0x40, 0x80, //# $.* *.$ # -0x80, 0x40, 0x15, 0x10, 0x40, 0x80, //# $ .*. $ # -0x88, 0x88, 0x88, 0x00, 0x00, 0x80, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -//Level: 314 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x08, 0x02, 0x08, 0x00, // # @ # -0x00, 0x08, 0x44, 0x48, 0x00, // #$$$# -0x88, 0x88, 0x00, 0x08, 0x00, //#### # -0x80, 0x00, 0x18, 0x48, 0x80, //# .#$## -0x80, 0x41, 0x41, 0x01, 0x80, //# $.$. .# -0x80, 0x08, 0x18, 0x18, 0x80, //# #.#.## -0x88, 0x88, 0x88, 0x88, 0x00, //######## -//Level: 315 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x80, 0x00, // # # -0x88, 0x80, 0x84, 0x80, 0x00, //### #$# -0x80, 0x01, 0x41, 0x88, 0x80, //# .$.### -0x80, 0x84, 0x34, 0x00, 0x80, //# #$+$ # -0x80, 0x01, 0x40, 0x80, 0x80, //# .$ # # -0x88, 0x80, 0x81, 0x00, 0x80, //### #. # -0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 316 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x00, 0x08, //# # -0x80, 0x80, 0x88, 0x58, //# # ##*# -0x80, 0x82, 0x04, 0x08, //# #@ $ # -0x81, 0x40, 0x10, 0x08, //#.$ . # -0x88, 0x88, 0x80, 0x08, //##### # -0x00, 0x00, 0x80, 0x08, // # # -0x00, 0x00, 0x88, 0x88, // #### -//Level: 317 -0x08, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x10, 0x28, //####. @# -0x80, 0x01, 0x40, 0x08, //# .$ # -0x80, 0x80, 0x08, 0x88, //# # ### -0x80, 0x40, 0x40, 0x18, //# $ $ .# -0x88, 0x88, 0x00, 0x08, //#### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 318 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x28, //# # # # #@# -0x80, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, 0x04, 0x08, 0x08, //# $ $ # $ # # -0x88, 0x48, 0x04, 0x88, 0x80, 0x80, 0x00, 0x04, 0x48, 0x08, //##$# $### # $$# # -0x80, 0x08, 0x00, 0x81, 0x88, 0x80, 0x08, 0x40, 0x40, 0x08, //# # #.### #$ $ # -0x80, 0x08, 0x48, 0x11, 0x11, 0x80, 0x08, 0x08, 0x88, 0x08, //# #$#....# # ### # -0x80, 0x40, 0x08, 0x11, 0x11, 0x18, 0x80, 0x00, 0x08, 0x08, //# $ #.....## # # -0x88, 0x40, 0x08, 0x18, 0x11, 0x11, 0x84, 0x40, 0x40, 0x08, //##$ #.#....#$$ $ # -0x80, 0x08, 0x88, 0x88, 0x81, 0x18, 0x80, 0x80, 0x08, 0x08, //# ######..## # # # -0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x88, 0x08, //# $ $ ### # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 319 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x08, 0x08, 0x88, //## # ### -0x88, 0x05, 0x40, 0x08, //## *$ # -0x88, 0x00, 0x41, 0x08, //## $. # -0x88, 0x00, 0x28, 0x88, //## @### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 320 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x88, 0x20, 0x88, // ##@ ## -0x08, 0x80, 0x01, 0x18, // ## ..# -0x88, 0x04, 0x84, 0x88, //## $#$## -0x80, 0x00, 0x41, 0x08, //# $. # -0x80, 0x08, 0x00, 0x08, //# # # -0x80, 0x00, 0x08, 0x88, //# ### -0x88, 0x88, 0x88, 0x00, //###### -//Level: 321 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //############### -0x81, 0x11, 0x11, 0x11, 0x11, 0x10, 0x01, 0x88, 0x88, 0x00, //#.......... .#### -0x81, 0x11, 0x11, 0x11, 0x11, 0x14, 0x41, 0x80, 0x08, 0x00, //#..........$$.# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x84, 0x08, 0x00, 0x08, 0x80, //###########$ # ## -0x80, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, //# $ $ $ # -0x88, 0x08, 0x88, 0x80, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //## #### # $ # # -0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x08, 0x08, 0x80, //# # ## # ## -0x80, 0x04, 0x80, 0x08, 0x08, 0x80, 0x08, 0x88, 0x08, 0x80, //# $# # ## ### ## -0x80, 0x40, 0x84, 0x88, 0x80, 0x00, 0x08, 0x88, 0x08, 0x80, //# $ #$### ### ## -0x88, 0x80, 0x04, 0x08, 0x00, 0x80, 0x08, 0x88, 0x08, 0x80, //### $ # # ### ## -0x88, 0x80, 0x00, 0x04, 0x08, 0x80, 0x80, 0x08, 0x08, 0x80, //### $ ## # # ## -0x08, 0x04, 0x00, 0x80, 0x04, 0x00, 0x40, 0x40, 0x00, 0x80, // # $ # $ $ $ # -0x08, 0x00, 0x40, 0x04, 0x84, 0x44, 0x00, 0x80, 0x00, 0x80, // # $ $#$$$ # # -0x08, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // # # $ ##### -0x08, 0x02, 0x88, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x00, // # @## # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ############## -//Level: 322 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x01, 0x88, 0x80, //# .### -0x80, 0x41, 0x10, 0x80, //# $.. # -0x80, 0x08, 0x84, 0x88, //# ##$## -0x88, 0x00, 0x80, 0x08, //## # # -0x08, 0x40, 0x00, 0x28, // #$ @# -0x08, 0x00, 0x88, 0x88, // # #### -0x08, 0x88, 0x80, 0x00, // #### -//Level: 323 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, //#....# # # # -0x81, 0x11, 0x18, 0x08, 0x04, 0x00, 0x40, 0x00, 0x00, 0x08, //#....# # $ $ # -0x81, 0x11, 0x10, 0x88, 0x00, 0x48, 0x08, 0x04, 0x84, 0x08, //#.... ## $# # $#$ # -0x81, 0x11, 0x80, 0x00, 0x40, 0x00, 0x48, 0x00, 0x40, 0x08, //#...# $ $# $ # -0x81, 0x18, 0x88, 0x80, 0x08, 0x04, 0x00, 0x04, 0x40, 0x08, //#..#### # $ $$ # -0x80, 0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, //# #### #### ### -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, //# # # # -0x80, 0x88, 0x00, 0x08, 0x00, 0x04, 0x08, 0x04, 0x04, 0x08, //# ## # $ # $ $ # -0x80, 0x88, 0x00, 0x00, 0x40, 0x88, 0x04, 0x00, 0x40, 0x08, //# ## $ ## $ $ # -0x80, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, //# @# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 324 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x28, 0x11, 0x18, 0x88, //# # @#...### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x81, 0x11, 0x88, //# # ##...## -0x80, 0x80, 0x80, 0x88, 0x48, 0x80, 0x88, 0x01, 0x11, 0x18, //# # # ##$## ## ....# -0x80, 0x00, 0x40, 0x80, 0x00, 0x44, 0x40, 0x01, 0x11, 0x18, //# $ # $$$ ....# -0x88, 0x84, 0x88, 0x80, 0x44, 0x00, 0x88, 0x80, 0x88, 0x18, //###$### $$ ### ##.# -0x80, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x80, 0x88, 0x88, //# $ # # #### -0x80, 0x04, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, 0x80, 0x08, //# $ # ### # # # -0x88, 0x08, 0x48, 0x80, 0x00, 0x04, 0x00, 0x44, 0x00, 0x08, //## #$## $ $$ # -0x80, 0x00, 0x40, 0x88, 0x00, 0x08, 0x00, 0x80, 0x80, 0x08, //# $ ## # # # # -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 325 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x88, 0x88, 0x82, 0x88, 0x81, 0x88, 0x11, 0x18, 0x80, 0x08, //#####@###.##...## # -0x88, 0x88, 0x84, 0x00, 0x11, 0x81, 0x11, 0x80, 0x00, 0x08, //#####$ ..#...# # -0x88, 0x88, 0x00, 0x00, 0x11, 0x11, 0x11, 0x80, 0x04, 0x08, //#### ......# $ # -0x88, 0x80, 0x04, 0x08, 0x11, 0x11, 0x18, 0x80, 0x80, 0x88, //### $ #.....## # ## -0x88, 0x00, 0x44, 0x80, 0x88, 0x88, 0x80, 0x04, 0x04, 0x08, //## $$# ##### $ $ # -0x88, 0x04, 0x80, 0x40, 0x00, 0x08, 0x80, 0x04, 0x40, 0x08, //## $# $ ## $$ # -0x88, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x40, 0x04, 0x08, //## # # # $ $ # -0x88, 0x00, 0x04, 0x40, 0x88, 0x80, 0x84, 0x88, 0x00, 0x08, //## $$ ### #$## # -0x88, 0x04, 0x80, 0x00, 0x00, 0x04, 0x04, 0x00, 0x40, 0x88, //## $# $ $ $ ## -0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, //### # # ### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 326 -0x0B, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x41, 0x04, 0x01, 0x00, 0x80, //# $. $ . # -0x80, 0x08, 0x00, 0x41, 0x00, 0x80, //# # $. # -0x81, 0x15, 0x11, 0x85, 0x81, 0x80, //#..*..#*#.# -0x84, 0x48, 0x44, 0x41, 0x04, 0x80, //#$$#$$$. $# -0x80, 0x01, 0x42, 0x41, 0x00, 0x80, //# .$@$. # -0x84, 0x01, 0x44, 0x48, 0x44, 0x80, //#$ .$$$#$$# -0x81, 0x85, 0x81, 0x15, 0x11, 0x80, //#.#*#..*..# -0x80, 0x01, 0x40, 0x08, 0x00, 0x80, //# .$ # # -0x80, 0x01, 0x40, 0x41, 0x00, 0x80, //# .$ $. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 327 -0x12, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, // ####### # -0x08, 0x00, 0x00, 0x08, 0x04, 0x24, 0x08, 0x00, 0x00, // # # $@$ # -0x08, 0x44, 0x08, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // #$$ # ######### -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x88, 0x00, 0x08, // # ###......## # -0x08, 0x00, 0x04, 0x11, 0x11, 0x11, 0x88, 0x08, 0x08, // # $......## # # -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x00, 0x00, 0x08, // # ###...... # -0x88, 0x00, 0x08, 0x88, 0x80, 0x88, 0x80, 0x84, 0x88, //## #### ### #$## -0x80, 0x08, 0x40, 0x00, 0x80, 0x04, 0x00, 0x80, 0x80, //# #$ # $ # # -0x80, 0x04, 0x04, 0x44, 0x00, 0x80, 0x48, 0x80, 0x80, //# $ $$$ # $## # -0x80, 0x00, 0x40, 0x40, 0x88, 0x84, 0x40, 0x80, 0x80, //# $ $ ###$$ # # -0x88, 0x88, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x80, //##### $ # # -0x00, 0x00, 0x88, 0x80, 0x88, 0x80, 0x00, 0x80, 0x80, // ### ### # # -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x80, // # # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // ######## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 328 -0x09, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x88, 0x08, 0x42, 0x00, 0x80, //## #$@ # -0x80, 0x40, 0x04, 0x40, 0x80, //# $ $$ # -0x80, 0x84, 0x81, 0x51, 0x80, //# #$#.*.# -0x80, 0x00, 0x01, 0x11, 0x80, //# ...# -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 329 -0x08, 0x06,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x81, 0x08, 0x00, //###. # -0x80, 0x10, 0x08, 0x88, //# . ### -0x80, 0x00, 0x44, 0x08, //# $$ # -0x88, 0x01, 0x04, 0x28, //## . $@# -0x08, 0x88, 0x88, 0x88, // ####### -//Level: 330 -0x08, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, // ####### -0x88, 0x20, 0x00, 0x08, //##@ # -0x81, 0x08, 0x00, 0x08, //#. # # -0x80, 0x44, 0x41, 0x88, //# $$$.## -0x80, 0x18, 0x00, 0x80, //# .# # -0x80, 0x08, 0x88, 0x80, //# #### -0x88, 0x88, 0x00, 0x00, //#### -//Level: 331 -0x09, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x00, 0x20, 0x00, 0x80, //# @ # -0x84, 0x44, 0x44, 0x44, 0x80, //#$$$$$$$# -0x81, 0x11, 0x81, 0x11, 0x80, //#...#...# -0x81, 0x11, 0x11, 0x11, 0x80, //#.......# -0x84, 0x44, 0x04, 0x44, 0x80, //#$$$ $$$# -0x80, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 332 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x08, 0x88, //## ### -0x80, 0x48, 0x08, 0x88, //# $# ### -0x80, 0x10, 0x28, 0x88, //# . @### -0x80, 0x50, 0x00, 0x88, //# * ## -0x88, 0x08, 0x40, 0x88, //## #$ ## -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 333 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x80, 0x80, 0x80, 0x00, 0x82, 0x88, 0x00, 0x08, 0x08, //# # # # #@## # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, //# $ # -0x80, 0x08, 0x84, 0x80, 0x88, 0x88, 0x80, 0x40, 0x80, 0x88, //# ##$# ##### $ # ## -0x88, 0x00, 0x00, 0x88, 0x11, 0x11, 0x18, 0x00, 0x80, 0x08, //## ##.....# # # -0x88, 0x48, 0x84, 0x81, 0x11, 0x11, 0x88, 0x84, 0x84, 0x08, //##$##$#.....###$#$ # -0x80, 0x00, 0x80, 0x88, 0x11, 0x11, 0x18, 0x00, 0x80, 0x88, //# # ##.....# # ## -0x80, 0x04, 0x00, 0x00, 0x88, 0x11, 0x88, 0x00, 0x80, 0x08, //# $ ##..## # # -0x80, 0x40, 0x80, 0x00, 0x40, 0x00, 0x40, 0x04, 0x44, 0x08, //# $ # $ $ $$$ # -0x88, 0x04, 0x00, 0x48, 0x08, 0x00, 0x80, 0x04, 0x00, 0x08, //## $ $# # # $ # -0x80, 0x00, 0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, //# ## # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 334 -0x12, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # -0x81, 0x18, 0x00, 0x80, 0x40, 0x40, 0x40, 0x88, 0x08, //#..# # $ $ $ ## # -0x81, 0x18, 0x08, 0x88, 0x08, 0x08, 0x00, 0x80, 0x08, //#..# ### # # # # -0x81, 0x18, 0x08, 0x04, 0x48, 0x88, 0x48, 0x84, 0x08, //#..# # $$###$##$ # -0x81, 0x18, 0x00, 0x00, 0x00, 0x04, 0x24, 0x04, 0x08, //#..# $@$ $ # -0x81, 0x10, 0x04, 0x80, 0x40, 0x80, 0x44, 0x08, 0x08, //#.. $# $ # $$ # # -0x80, 0x08, 0x00, 0x80, 0x08, 0x88, 0x00, 0x08, 0x08, //# # # ### # # -0x80, 0x00, 0x08, 0x88, 0x00, 0x80, 0x08, 0x88, 0x08, //# ### # ### # -0x81, 0x18, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x08, //#..# $ $ # -0x81, 0x18, 0x08, 0x84, 0x00, 0x80, 0x08, 0x04, 0x08, //#..# ##$ # # $ # -0x81, 0x18, 0x00, 0x80, 0x08, 0x88, 0x08, 0x80, 0x08, //#..# # ### ## # -0x81, 0x18, 0x00, 0x88, 0x44, 0x08, 0x48, 0x84, 0x08, //#..# ##$$ #$##$ # -0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -//Level: 335 -0x13, 0x10,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // ###### #### -0x08, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, 0x00, 0x00, // # ###### # -0x08, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, // #@# $ ## -0x88, 0x88, 0x84, 0x04, 0x08, 0x88, 0x80, 0x08, 0x80, 0x00, //#####$ $ #### ## -0x80, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x00, //# $ # ## -0x80, 0x04, 0x40, 0x80, 0x88, 0x48, 0x88, 0x44, 0x08, 0x00, //# $$ # ##$###$$ # -0x80, 0x00, 0x00, 0x45, 0x15, 0x11, 0x80, 0x00, 0x08, 0x00, //# $*.*..# # -0x88, 0x88, 0x88, 0x81, 0x11, 0x15, 0x80, 0x40, 0x08, 0x00, //#######....*# $ # -0x00, 0x00, 0x00, 0x85, 0x11, 0x51, 0x80, 0x84, 0x88, 0x00, // #*..*.# #$## -0x00, 0x00, 0x00, 0x81, 0x11, 0x15, 0x04, 0x00, 0x08, 0x00, // #....* $ # -0x00, 0x00, 0x00, 0x81, 0x11, 0x11, 0x80, 0x44, 0x48, 0x00, // #.....# $$$# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x80, 0x80, 0x08, 0x80, // ##### # # ## -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x80, // # # $ $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x80, // # $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, // # ### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x08, 0x88, 0x80, // #### #### -//Level: 336 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x88, 0x88, 0x10, 0x08, 0x80, //####. ## -0x80, 0x41, 0x41, 0x00, 0x80, //# $.$. # -0x82, 0x48, 0x08, 0x40, 0x80, //#@$# #$ # -0x80, 0x41, 0x01, 0x00, 0x80, //# $. . # -0x88, 0x88, 0x48, 0x40, 0x80, //####$#$ # -0x00, 0x81, 0x01, 0x00, 0x80, // #. . # -0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 337 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x00, 0x00, 0x80, //# # -0x81, 0x88, 0x01, 0x80, //#.## .# -0x85, 0x00, 0x42, 0x80, //#* $@# -0x80, 0x08, 0x40, 0x80, //# #$ # -0x80, 0x08, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 338 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //# ############## -0x80, 0x08, 0x00, 0x01, 0x18, 0x11, 0x11, 0x11, 0x80, 0x00, //# # ..#......# -0x80, 0x08, 0x08, 0x08, 0x88, 0x88, 0x01, 0x11, 0x80, 0x00, //# # # ##### ...# -0x88, 0x48, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x80, 0x00, //##$# ........# -0x80, 0x00, 0x88, 0x48, 0x88, 0x88, 0x80, 0x08, 0x88, 0x80, //# ##$###### #### -0x80, 0x40, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x20, 0x80, //# $ # ######@ # -0x88, 0x40, 0x80, 0x40, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, //##$ # $ ###### # -0x80, 0x04, 0x08, 0x44, 0x48, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ #$$$## # -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x84, 0x84, 0x88, 0x80, //# # #$#$### -0x80, 0x88, 0x88, 0x08, 0x44, 0x44, 0x40, 0x00, 0x08, 0x00, //# #### #$$$$$ # -0x80, 0x80, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, //# # $ # # -0x80, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, //# # ## ### -0x80, 0x88, 0x88, 0x88, 0x48, 0x88, 0x88, 0x80, 0x40, 0x80, //# ######$###### $ # -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, //########## ##### -//Level: 339 -0x14, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //############ -0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //# # ## -0x80, 0x40, 0x04, 0x00, 0x08, 0x00, 0x88, 0x88, 0x88, 0x00, //# $ $ # ###### -0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x08, 0x00, //#### ##### # -0x08, 0x11, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x08, 0x00, // #.. # #### # -0x08, 0x18, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, 0x08, 0x00, // #.#### #### # -0x08, 0x11, 0x11, 0x00, 0x00, 0x80, 0x04, 0x08, 0x88, 0x80, // #.... # $ #### -0x08, 0x01, 0x11, 0x80, 0x00, 0x80, 0x44, 0x48, 0x00, 0x88, // # ...# # $$$# ## -0x88, 0x81, 0x88, 0x88, 0x08, 0x80, 0x04, 0x24, 0x00, 0x08, //###.#### ## $@$ # -0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x40, 0x80, 0x00, 0x08, //# ##### $ # # -0x80, 0x81, 0x80, 0x40, 0x00, 0x00, 0x04, 0x88, 0x84, 0x08, //# #.# $ $###$ # -0x80, 0x81, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, 0x04, 0x08, //# #.######## # $ # -0x80, 0x81, 0x10, 0x00, 0x00, 0x00, 0x08, 0x80, 0x04, 0x08, //# #.. ## $ # -0x80, 0x80, 0x88, 0x88, 0x88, 0x80, 0x40, 0x80, 0x80, 0x08, //# # ####### $ # # # -0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x88, //# # # ## -0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, //##### ########## -//Level: 340 -0x09, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x88, 0x00, 0x50, 0x08, 0x80, //## * ## -0x80, 0x12, 0x10, 0x10, 0x80, //# .@. . # -0x80, 0x40, 0x50, 0x00, 0x80, //# $ * # -0x85, 0x44, 0x54, 0x45, 0x80, //#*$$*$$*# -0x80, 0x00, 0x50, 0x40, 0x80, //# * $ # -0x80, 0x10, 0x10, 0x10, 0x80, //# . . . # -0x88, 0x00, 0x50, 0x08, 0x80, //## * ## -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 341 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x88, 0x81, 0x18, 0x88, 0x00, 0x00, 0x08, //# ###..### # -0x80, 0x44, 0x00, 0x88, 0x81, 0x18, 0x88, 0x00, 0x42, 0x08, //# $$ ###..### $@ # -0x80, 0x08, 0x08, 0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, //# # ##......# $ # -0x80, 0x00, 0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, //# #......# $ # -0x88, 0x88, 0x00, 0x88, 0x81, 0x18, 0x88, 0x88, 0x84, 0x08, //#### ###..######$ # -0x80, 0x00, 0x44, 0x40, 0x81, 0x18, 0x00, 0x00, 0x80, 0x08, //# $$$ #..# # # -0x80, 0x48, 0x00, 0x04, 0x00, 0x40, 0x04, 0x40, 0x84, 0x08, //# $# $ $ $$ #$ # -0x80, 0x08, 0x00, 0x88, 0x04, 0x00, 0x88, 0x00, 0x80, 0x08, //# # ## $ ## # # -0x80, 0x40, 0x00, 0x04, 0x08, 0x80, 0x40, 0x00, 0x04, 0x08, //# $ $ ## $ $ # -0x80, 0x08, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x80, 0x08, //# # ## ## # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 342 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x80, //# @## -0x80, 0x08, 0x00, 0x80, //# # # -0x81, 0x00, 0x40, 0x80, //#. $ # -0x80, 0x44, 0x81, 0x80, //# $$#.# -0x88, 0x80, 0x01, 0x80, //### .# -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 343 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x01, 0x08, //#. . # -0x80, 0x80, 0x80, 0x08, //# # # # -0x82, 0x40, 0x04, 0x18, //#@$ $.# -0x88, 0x88, 0x80, 0x48, //##### $# -0x88, 0x88, 0x80, 0x08, //##### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 344 -0x0E, 0x0A,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, //#### #### -0x81, 0x18, 0x88, 0x88, 0x88, 0x81, 0x18, //#..########..# -0x85, 0x15, 0x11, 0x11, 0x15, 0x15, 0x18, //#*.*.....*.*.# -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, //# $ $ $ $ $ $# -0x84, 0x04, 0x04, 0x24, 0x04, 0x04, 0x08, //#$ $ $@$ $ $ # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, //# $ $ $ $ $ $# -0x84, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, //#$ $ $ $ $ $ # -0x81, 0x51, 0x51, 0x11, 0x11, 0x51, 0x58, //#.*.*.....*.*# -0x81, 0x18, 0x88, 0x88, 0x88, 0x81, 0x18, //#..########..# -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, //#### #### -//Level: 345 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x01, 0x80, 0x28, //# .# @# -0x80, 0x80, 0x40, 0x08, //# # $ # -0x80, 0x41, 0x84, 0x08, //# $.#$ # -0x88, 0x01, 0x00, 0x08, //## . # -0x08, 0x00, 0x88, 0x88, // # #### -0x08, 0x88, 0x80, 0x00, // #### -//Level: 346 -0x13, 0x10,//Size x and y -0x08, 0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ### ############# -0x88, 0x28, 0x88, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, //##@#### # # -0x80, 0x44, 0x00, 0x04, 0x40, 0x04, 0x04, 0x01, 0x11, 0x80, //# $$ $$ $ $ ...# -0x80, 0x04, 0x44, 0x80, 0x00, 0x04, 0x00, 0x81, 0x11, 0x80, //# $$$# $ #...# -0x80, 0x40, 0x00, 0x80, 0x44, 0x04, 0x40, 0x81, 0x11, 0x80, //# $ # $$ $$ #...# -0x88, 0x80, 0x00, 0x80, 0x04, 0x00, 0x00, 0x81, 0x11, 0x80, //### # $ #...# -0x80, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x81, 0x11, 0x80, //# # $ $ $ #...# -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x88, 0x81, 0x11, 0x80, //# ###### ###...# -0x88, 0x08, 0x00, 0x80, 0x04, 0x04, 0x00, 0x81, 0x11, 0x80, //## # # $ $ #...# -0x80, 0x08, 0x80, 0x80, 0x44, 0x04, 0x04, 0x88, 0x11, 0x80, //# ## # $$ $ $##..# -0x80, 0x11, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x81, 0x80, //# ..# # $ #.# -0x80, 0x11, 0x80, 0x80, 0x44, 0x40, 0x44, 0x40, 0x81, 0x80, //# ..# # $$$ $$$ #.# -0x88, 0x88, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x81, 0x80, //##### # # #.# -0x00, 0x00, 0x80, 0x88, 0x88, 0x88, 0x88, 0x80, 0x81, 0x80, // # ######### #.# -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x80, // # #.# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############### -//Level: 347 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ########## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, //##### #### -0x80, 0x00, 0x00, 0x80, 0x00, 0x40, 0x08, 0x20, 0x80, 0x00, //# # $ #@ # -0x80, 0x88, 0x88, 0x88, 0x84, 0x88, 0x88, 0x00, 0x88, 0x80, //# #######$#### ### -0x80, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x40, 0x11, 0x80, //# # ## # #$ ..# -0x80, 0x80, 0x40, 0x00, 0x00, 0x80, 0x08, 0x00, 0x81, 0x80, //# # $ # # #.# -0x80, 0x80, 0x40, 0x08, 0x00, 0x00, 0x08, 0x40, 0x11, 0x80, //# # $ # #$ ..# -0x80, 0x80, 0x08, 0x88, 0x08, 0x80, 0x00, 0x00, 0x81, 0x80, //# # ### ## #.# -0x80, 0x88, 0x80, 0x08, 0x00, 0x80, 0x08, 0x40, 0x11, 0x80, //# ### # # #$ ..# -0x80, 0x80, 0x00, 0x08, 0x00, 0x88, 0x88, 0x00, 0x81, 0x80, //# # # #### #.# -0x80, 0x84, 0x00, 0x04, 0x00, 0x40, 0x08, 0x40, 0x11, 0x80, //# #$ $ $ #$ ..# -0x80, 0x00, 0x04, 0x08, 0x04, 0x04, 0x08, 0x00, 0x81, 0x80, //# $ # $ $ # #.# -0x88, 0x88, 0x04, 0x88, 0x80, 0x00, 0x08, 0x40, 0x11, 0x80, //#### $### #$ ..# -0x00, 0x08, 0x00, 0x00, 0x44, 0x08, 0x88, 0x11, 0x11, 0x80, // # $$ ###....# -0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, // # ## ###### -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 348 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x08, 0x00, 0x80, // # # -0x88, 0x88, 0x04, 0x88, //#### $## -0x80, 0x24, 0x10, 0x08, //# @$. # -0x80, 0x88, 0x00, 0x08, //# ## # -0x80, 0x00, 0x88, 0x08, //# ## # -0x80, 0x00, 0x50, 0x18, //# * .# -0x88, 0x88, 0x88, 0x88, //######## -//Level: 349 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x15, 0x00, 0x08, //# .* # -0x88, 0x40, 0x00, 0x08, //##$ # -0x88, 0x08, 0x48, 0x88, //## #$### -0x88, 0x10, 0x28, 0x88, //##. @### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 350 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x40, 0x10, 0x80, //#@ $ . # -0x80, 0x40, 0x41, 0x40, 0x80, //# $ $.$ # -0x81, 0x51, 0x51, 0x51, 0x80, //#.*.*.*.# -0x80, 0x41, 0x40, 0x40, 0x80, //# $.$ $ # -0x80, 0x10, 0x40, 0x00, 0x80, //# . $ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 351 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x81, 0x01, 0x01, 0x80, //#. . .# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x81, 0x42, 0x41, 0x80, //#.$@$.# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x81, 0x01, 0x01, 0x80, //#. . .# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 352 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x01, 0x00, 0x00, 0x80, //#@ . # -0x80, 0x44, 0x14, 0x40, 0x80, //# $$.$$ # -0x81, 0x51, 0x11, 0x51, 0x80, //#.*...*.# -0x80, 0x44, 0x14, 0x40, 0x80, //# $$.$$ # -0x80, 0x41, 0x00, 0x00, 0x80, //# $. # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 353 -0x14, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, //# ## # # # -0x80, 0x04, 0x00, 0x40, 0x00, 0x00, 0x88, 0x04, 0x00, 0x08, //# $ $ ## $ # -0x88, 0x08, 0x88, 0x88, 0x00, 0x18, 0x88, 0x88, 0x80, 0x88, //## ##### .###### ## -0x08, 0x08, 0x80, 0x08, 0x81, 0x11, 0x18, 0x88, 0x80, 0x88, // # ## ##....#### ## -0x88, 0x08, 0x84, 0x08, 0x88, 0x11, 0x88, 0x00, 0x00, 0x08, //## ##$ ###..## # -0x80, 0x00, 0x00, 0x08, 0x11, 0x10, 0x18, 0x04, 0x04, 0x08, //# #... .# $ $ # -0x80, 0x40, 0x88, 0x08, 0x80, 0x10, 0x88, 0x80, 0x88, 0x88, //# $ ## ## . ### #### -0x80, 0x80, 0x40, 0x00, 0x08, 0x18, 0x80, 0x80, 0x80, 0x00, //# # $ #.## # # -0x80, 0x40, 0x40, 0x80, 0x00, 0x18, 0x88, 0x80, 0x88, 0x00, //# $ $ # .#### ## -0x80, 0x80, 0x08, 0x80, 0x80, 0x88, 0x00, 0x80, 0x08, 0x80, //# # ## # ## # ## -0x88, 0x88, 0x88, 0x80, 0x04, 0x88, 0x40, 0x00, 0x40, 0x80, //####### $##$ $ # -0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x40, 0x82, 0x80, // ## $ #@# -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, // # ## ###### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -//Level: 354 -0x0D, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -0x00, 0x85, 0x15, 0x85, 0x15, 0x80, 0x00, // #*.*#*.*# -0x00, 0x81, 0x51, 0x51, 0x51, 0x80, 0x00, // #.*.*.*.# -0x00, 0x85, 0x15, 0x15, 0x15, 0x80, 0x00, // #*.*.*.*# -0x00, 0x81, 0x51, 0x51, 0x51, 0x80, 0x00, // #.*.*.*.# -0x00, 0x85, 0x15, 0x15, 0x15, 0x80, 0x00, // #*.*.*.*# -0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, // ### ### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, //###### ###### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, //# $ $ $ $ $ # -0x88, 0x04, 0x04, 0x04, 0x04, 0x08, 0x80, //## $ $ $ $ ## -0x08, 0x40, 0x40, 0x40, 0x40, 0x48, 0x00, // #$ $ $ $ $# -0x08, 0x00, 0x04, 0x24, 0x00, 0x08, 0x00, // # $@$ # -0x08, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, // # ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, // #### #### -//Level: 355 -0x05, 0x08,//Size x and y -0x88, 0x88, 0x00, //#### -0x80, 0x28, 0x00, //# @# -0x80, 0x48, 0x80, //# $## -0x80, 0x41, 0x80, //# $.# -0x80, 0x41, 0x80, //# $.# -0x80, 0x41, 0x80, //# $.# -0x88, 0x81, 0x80, //###.# -0x00, 0x88, 0x80, // ### -//Level: 356 -0x0D, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //########### -0x82, 0x40, 0x00, 0x11, 0x11, 0x88, 0x00, //#@$ ....## -0x80, 0x44, 0x44, 0x81, 0x11, 0x18, 0x00, //# $$$$#....# -0x80, 0x40, 0x04, 0x11, 0x55, 0x58, 0x80, //# $ $..***## -0x88, 0x00, 0x08, 0x08, 0x81, 0x10, 0x80, //## # ##.. # -0x80, 0x44, 0x48, 0x00, 0x88, 0x00, 0x80, //# $$$# ## # -0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x80, //# ## # ## -0x80, 0x04, 0x40, 0x80, 0x00, 0x08, 0x00, //# $$ # # -0x80, 0x00, 0x00, 0x88, 0x80, 0x08, 0x00, //# ### # -0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x00, //####### #### -//Level: 357 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x01, 0x88, 0x88, //#. .#### -0x81, 0x84, 0x40, 0x88, //#.#$$ ## -0x80, 0x00, 0x20, 0x88, //# @ ## -0x80, 0x48, 0x00, 0x88, //# $# ## -0x88, 0x00, 0x08, 0x88, //## ### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 358 -0x13, 0x13,//Size x and y -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // # # # # # # # # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, //# # # # # # # #.# # -0x08, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, // #... $.# -0x80, 0x04, 0x84, 0x00, 0x80, 0x80, 0x80, 0x40, 0x00, 0x80, //# $#$ # # # $ # -0x08, 0x10, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x18, 0x00, // #. $ # # # # $.# -0x80, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, //# # $ # # # -0x08, 0x00, 0x08, 0x00, 0x88, 0x88, 0x80, 0x08, 0x08, 0x00, // # # ##### # # -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x80, //# # # # # # -0x08, 0x08, 0x00, 0x80, 0x08, 0x88, 0x08, 0x08, 0x08, 0x00, // # # # ### # # # -0x80, 0x01, 0x40, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# .$ . # # -0x08, 0x08, 0x40, 0x80, 0x80, 0x08, 0x08, 0x08, 0x08, 0x00, // # #$ # # # # # # -0x80, 0x08, 0x00, 0x80, 0x08, 0x48, 0x08, 0x08, 0x00, 0x80, //# # # #$# # # # -0x08, 0x01, 0x80, 0x08, 0x00, 0x08, 0x08, 0x08, 0x28, 0x00, // # .# # # # #@# -0x80, 0x00, 0x08, 0x00, 0x88, 0x80, 0x48, 0x08, 0x00, 0x80, //# # ### $# # # -0x08, 0x04, 0x40, 0x80, 0x00, 0x00, 0x41, 0x18, 0x48, 0x00, // # $$ # $..#$# -0x80, 0x81, 0x00, 0x08, 0x88, 0x88, 0x84, 0x88, 0x10, 0x80, //# #. ######$##. # -0x08, 0x08, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, // # #.$ . .# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # # # # -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // # # # # # # # # # -//Level: 359 -0x14, 0x11,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ################## -0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x11, 0x81, 0x88, // # $ ...#.## -0x08, 0x00, 0x00, 0x00, 0x08, 0x88, 0x81, 0x11, 0x11, 0x08, // # ####..... # -0x08, 0x08, 0x88, 0x88, 0x88, 0x00, 0x81, 0x11, 0x11, 0x08, // # ####### #..... # -0x08, 0x08, 0x00, 0x00, 0x40, 0x40, 0x88, 0x11, 0x11, 0x88, // # # $ $ ##....## -0x08, 0x08, 0x00, 0x40, 0x80, 0x80, 0x88, 0x81, 0x11, 0x80, // # # $ # # ###...# -0x08, 0x08, 0x04, 0x24, 0x04, 0x00, 0x88, 0x88, 0x80, 0x80, // # # $@$ $ ##### # -0x88, 0x08, 0x00, 0x40, 0x04, 0x04, 0x40, 0x00, 0x40, 0x80, //## # $ $ $$ $ # -0x80, 0x08, 0x48, 0x04, 0x80, 0x00, 0x80, 0x48, 0x80, 0x80, //# #$# $# # $## # -0x80, 0x88, 0x00, 0x00, 0x88, 0x08, 0x80, 0x40, 0x80, 0x80, //# ## ## ## $ # # -0x80, 0x80, 0x48, 0x04, 0x04, 0x00, 0x80, 0x00, 0x00, 0x80, //# # $# $ $ # # -0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, //# # ####### -0x80, 0x88, 0x88, 0x88, 0x88, 0x48, 0x80, 0x00, 0x80, 0x00, //# ########$## # -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x80, 0x00, //# # $ # -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, //######## ##### -0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, // ### # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 360 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x88, 0x88, //#. #### -0x80, 0x80, 0x00, 0x88, //# # ## -0x80, 0x10, 0x80, 0x88, //# . # ## -0x80, 0x45, 0x40, 0x88, //# $*$ ## -0x88, 0x20, 0x88, 0x88, //##@ #### -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 361 -0x13, 0x11,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, // ## ## -0x00, 0x00, 0x88, 0x00, 0x50, 0x08, 0x80, 0x00, 0x00, 0x00, // ## * ## -0x00, 0x08, 0x80, 0x05, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, // ## * * ## -0x00, 0x88, 0x00, 0x50, 0x50, 0x50, 0x08, 0x80, 0x00, 0x00, // ## * * * ## -0x08, 0x80, 0x05, 0x05, 0x05, 0x05, 0x00, 0x88, 0x88, 0x00, // ## * * * * #### -0x88, 0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x08, 0x08, 0x80, //## * * * * * # ## -0x80, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x80, //# * * * * * * # -0x80, 0x50, 0x50, 0x50, 0x10, 0x50, 0x50, 0x52, 0x40, 0x80, //# * * * . * * *@$ # -0x80, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x80, //# * * * * * * # -0x88, 0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x08, 0x08, 0x80, //## * * * * * # ## -0x08, 0x80, 0x05, 0x05, 0x05, 0x05, 0x00, 0x88, 0x88, 0x00, // ## * * * * #### -0x00, 0x88, 0x00, 0x50, 0x50, 0x50, 0x08, 0x80, 0x00, 0x00, // ## * * * ## -0x00, 0x08, 0x80, 0x05, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, // ## * * ## -0x00, 0x00, 0x88, 0x00, 0x50, 0x08, 0x80, 0x00, 0x00, 0x00, // ## * ## -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, // ## ## -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 362 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x10, 0x08, 0x00, //# . # -0x80, 0x08, 0x28, 0x00, //# #@# -0x80, 0x04, 0x08, 0x80, //# $ ## -0x88, 0x48, 0x00, 0x80, //##$# # -0x80, 0x00, 0x80, 0x80, //# # # -0x81, 0x05, 0x00, 0x80, //#. * # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 363 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x12, 0x08, //## .@ # -0x88, 0x08, 0x18, 0x08, //## #.# # -0x88, 0x00, 0x04, 0x08, //## $ # -0x88, 0x14, 0x40, 0x88, //##.$$ ## -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 364 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, //###### #### -0x80, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //# ####### ##### -0x80, 0x00, 0x48, 0x00, 0x80, 0x04, 0x00, 0x80, 0x00, 0x80, //# $# # $ # # -0x80, 0x04, 0x00, 0x40, 0x04, 0x08, 0x04, 0x04, 0x00, 0x80, //# $ $ $ # $ $ # -0x88, 0x40, 0x40, 0x00, 0x80, 0x28, 0x04, 0x00, 0x00, 0x80, //##$ $ # @# $ # -0x80, 0x04, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //# $ ########### ## -0x80, 0x80, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x48, 0x00, //# # #.......# $# -0x80, 0x88, 0x00, 0x80, 0x11, 0x11, 0x11, 0x80, 0x08, 0x00, //# ## # ......# # -0x80, 0x80, 0x00, 0x41, 0x11, 0x11, 0x11, 0x14, 0x08, 0x00, //# # $........$ # -0x80, 0x80, 0x40, 0x81, 0x11, 0x10, 0x11, 0x80, 0x08, 0x00, //# # $ #.... ..# # -0x80, 0x04, 0x04, 0x88, 0x88, 0x48, 0x88, 0x80, 0x48, 0x00, //# $ $####$#### $# -0x80, 0x40, 0x00, 0x88, 0x80, 0x40, 0x00, 0x40, 0x08, 0x80, //# $ ### $ $ ## -0x80, 0x40, 0x00, 0x00, 0x40, 0x40, 0x04, 0x00, 0x00, 0x80, //# $ $ $ $ # -0x88, 0x08, 0x88, 0x88, 0x80, 0x40, 0x88, 0x88, 0x80, 0x80, //## ###### $ ##### # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 365 -0x14, 0x12,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### ###### -0x08, 0x80, 0x00, 0x00, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, // ## ### # -0x08, 0x00, 0x88, 0x80, 0x00, 0x80, 0x44, 0x08, 0x88, 0x00, // # ### # $$ ### -0x08, 0x08, 0x02, 0x08, 0x00, 0x80, 0x04, 0x00, 0x08, 0x00, // # # @ # # $ # -0x08, 0x08, 0x44, 0x48, 0x08, 0x88, 0x84, 0x88, 0x08, 0x88, // # #$$$# ####$## ### -0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x11, 0x18, //## $ #...# -0x80, 0x08, 0x48, 0x48, 0x80, 0x08, 0x00, 0x08, 0x11, 0x18, //# #$#$## # #...# -0x80, 0x80, 0x04, 0x00, 0x80, 0x80, 0x88, 0x08, 0x11, 0x18, //# # $ # # ## #...# -0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x08, 0x11, 0x18, //# # # # #...# -0x80, 0x08, 0x44, 0x48, 0x80, 0x84, 0x00, 0x08, 0x11, 0x18, //# #$$$## #$ #...# -0x88, 0x00, 0x00, 0x00, 0x00, 0x04, 0x48, 0x88, 0x11, 0x18, //## $$###...# -0x08, 0x08, 0x48, 0x48, 0x80, 0x84, 0x00, 0x00, 0x11, 0x18, // # #$#$## #$ ...# -0x08, 0x08, 0x00, 0x00, 0x80, 0x80, 0x40, 0x00, 0x11, 0x18, // # # # # $ ...# -0x08, 0x08, 0x00, 0x00, 0x80, 0x80, 0x08, 0x88, 0x88, 0x88, // # # # # ####### -0x08, 0x08, 0x44, 0x48, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // # #$$$## # # -0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // # #### -0x08, 0x88, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ### ### -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ###### -//Level: 366 -0x0E, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, // ### -0x08, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, // ######@##### -0x08, 0x11, 0x11, 0x11, 0x11, 0x11, 0x80, // #..........# -0x88, 0x15, 0x55, 0x55, 0x55, 0x51, 0x88, //##.********.## -0x81, 0x15, 0x11, 0x11, 0x11, 0x51, 0x18, //#..*......*..# -0x81, 0x15, 0x15, 0x55, 0x51, 0x51, 0x18, //#..*.****.*..# -0x88, 0x88, 0x88, 0x11, 0x88, 0x88, 0x88, //######..###### -0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x04, 0x04, 0x44, 0x40, 0x40, 0x80, // # $ $$$$ $ # -0x08, 0x44, 0x40, 0x00, 0x04, 0x44, 0x80, // #$$$ $$$# -0x08, 0x00, 0x04, 0x44, 0x40, 0x00, 0x80, // # $$$$ # -0x08, 0x40, 0x40, 0x00, 0x04, 0x04, 0x80, // #$ $ $ $# -0x88, 0x00, 0x04, 0x44, 0x40, 0x00, 0x88, //## $$$$ ## -0x80, 0x44, 0x40, 0x00, 0x04, 0x44, 0x08, //# $$$ $$$ # -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 367 -0x14, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # # -0x81, 0x40, 0x04, 0x00, 0x84, 0x40, 0x04, 0x88, 0x04, 0x88, //#.$ $ #$$ $## $## -0x81, 0x48, 0x00, 0x88, 0x80, 0x08, 0x80, 0x88, 0x00, 0x08, //#.$# ### ## ## # -0x80, 0x08, 0x04, 0x08, 0x00, 0x44, 0x00, 0x04, 0x00, 0x08, //# # $ # $$ $ # -0x80, 0x88, 0x80, 0x08, 0x08, 0x00, 0x84, 0x00, 0x88, 0x88, //# ### # # #$ #### -0x80, 0x08, 0x80, 0x80, 0x40, 0x00, 0x82, 0x08, 0x00, 0x08, //# ## # $ #@ # # -0x80, 0x40, 0x00, 0x04, 0x00, 0x88, 0x18, 0x80, 0x04, 0x08, //# $ $ ##.## $ # -0x80, 0x08, 0x04, 0x80, 0x48, 0x04, 0x00, 0x00, 0x08, 0x88, //# # $# $# $ ### -0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, //# # # # ### # -0x80, 0x08, 0x88, 0x88, 0x88, 0x80, 0x80, 0x00, 0x00, 0x08, //# ######## # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x18, 0x18, //# # #.#.# -0x88, 0x48, 0x88, 0x88, 0x88, 0x84, 0x80, 0x00, 0x11, 0x18, //##$########$# ...# -0x80, 0x00, 0x01, 0x50, 0x08, 0x00, 0x00, 0x88, 0x18, 0x18, //# .* # ##.#.# -0x80, 0x15, 0x11, 0x15, 0x00, 0x04, 0x00, 0x11, 0x11, 0x18, //# .*...* $ .....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 368 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x21, 0x88, //#. @.## -0x80, 0x04, 0x80, 0x88, //# $# ## -0x80, 0x80, 0x41, 0x08, //# # $. # -0x80, 0x00, 0x48, 0x08, //# $# # -0x88, 0x88, 0x00, 0x08, //#### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 369 -0x0B, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x88, 0x80, 0x00, 0x80, 0x00, 0x80, //### # # -0x80, 0x04, 0x10, 0x50, 0x40, 0x80, //# $. * $ # -0x80, 0x81, 0x81, 0x81, 0x80, 0x80, //# #.#.#.# # -0x80, 0x40, 0x42, 0x40, 0x40, 0x80, //# $ $@$ $ # -0x80, 0x81, 0x81, 0x81, 0x80, 0x80, //# #.#.#.# # -0x80, 0x40, 0x50, 0x14, 0x00, 0x80, //# $ * .$ # -0x80, 0x00, 0x88, 0x88, 0x88, 0x80, //# ####### -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //##### -//Level: 370 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x01, 0x08, //### . # -0x88, 0x05, 0x08, 0x08, //## * # # -0x88, 0x01, 0x40, 0x08, //## .$ # -0x88, 0x00, 0x84, 0x88, //## #$## -0x88, 0x80, 0x20, 0x88, //### @ ## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 371 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x11, 0x88, 0x88, //# ..#### -0x80, 0x40, 0x00, 0x08, //# $ # -0x80, 0x08, 0x48, 0x08, //# #$# # -0x80, 0x20, 0x14, 0x08, //# @ .$ # -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 372 -0x0B, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -0x80, 0x00, 0x00, 0x00, 0x08, 0x80, //# ## -0x80, 0x48, 0x48, 0x48, 0x42, 0x80, //# $#$#$#$@# -0x81, 0x01, 0x41, 0x11, 0x41, 0x80, //#. .$...$.# -0x81, 0x01, 0x41, 0x11, 0x41, 0x80, //#. .$...$.# -0x80, 0x48, 0x48, 0x48, 0x48, 0x80, //# $#$#$#$## -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -//Level: 373 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x80, //# ......... # -0x80, 0x44, 0x44, 0x44, 0x44, 0x41, 0x40, 0x80, //# $$$$$$$$$.$ # -0x80, 0x41, 0x11, 0x11, 0x11, 0x41, 0x40, 0x80, //# $.......$.$ # -0x80, 0x41, 0x44, 0x44, 0x41, 0x41, 0x40, 0x80, //# $.$$$$$.$.$ # -0x80, 0x41, 0x41, 0x11, 0x41, 0x41, 0x40, 0x80, //# $.$...$.$.$ # -0x80, 0x41, 0x41, 0x45, 0x41, 0x41, 0x42, 0x80, //# $.$.$*$.$.$@# -0x80, 0x41, 0x41, 0x41, 0x11, 0x41, 0x40, 0x80, //# $.$.$...$.$ # -0x80, 0x41, 0x41, 0x44, 0x44, 0x41, 0x40, 0x80, //# $.$.$$$$$.$ # -0x80, 0x41, 0x41, 0x11, 0x11, 0x11, 0x40, 0x80, //# $.$.......$ # -0x80, 0x41, 0x44, 0x44, 0x44, 0x44, 0x40, 0x80, //# $.$$$$$$$$$ # -0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x80, //# ......... # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 374 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x08, 0x80, 0x40, 0x40, 0x40, 0x88, 0x00, 0x00, // ## $ $ $ ## -0x88, 0x88, 0x00, 0x04, 0x04, 0x40, 0x08, 0x88, 0x80, //#### $ $$ #### -0x80, 0x00, 0x80, 0x40, 0x04, 0x00, 0x80, 0x00, 0x80, //# # $ $ # # -0x80, 0x44, 0x08, 0x04, 0x04, 0x08, 0x04, 0x40, 0x80, //# $$ # $ $ # $$ # -0x80, 0x00, 0x40, 0x84, 0x04, 0x80, 0x04, 0x00, 0x80, //# $ #$ $# $ # -0x80, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x40, 0x80, //# $ $ $ $ # -0x80, 0x40, 0x40, 0x80, 0x40, 0x80, 0x44, 0x00, 0x80, //# $ $ # $ # $$ # -0x80, 0x40, 0x08, 0x88, 0x08, 0x88, 0x00, 0x40, 0x80, //# $ ### ### $ # -0x80, 0x00, 0x88, 0x08, 0x08, 0x08, 0x80, 0x00, 0x80, //# ## # # ## # -0x88, 0x88, 0x80, 0x08, 0x28, 0x00, 0x88, 0x88, 0x80, //##### #@# ##### -0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, // ## ## -0x88, 0x88, 0x88, 0x81, 0x01, 0x88, 0x88, 0x88, 0x80, //#######. .####### -0x81, 0x11, 0x11, 0x10, 0x10, 0x11, 0x11, 0x11, 0x80, //#...... . ......# -0x81, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x80, //#........ ......# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -//Level: 375 -0x15, 0x11,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //##################### -0x81, 0x00, 0x81, 0x00, 0x81, 0x41, 0x80, 0x01, 0x80, 0x01, 0x80, //#. #. #.$.# .# .# -0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, //# # # # # # # -0x80, 0x01, 0x80, 0x00, 0x10, 0x40, 0x10, 0x00, 0x81, 0x00, 0x80, //# .# . $ . #. # -0x80, 0x80, 0x01, 0x84, 0x40, 0x80, 0x44, 0x81, 0x00, 0x80, 0x80, //# # .#$$ # $$#. # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x00, 0x84, 0x40, 0x80, 0x44, 0x80, 0x00, 0x80, 0x80, //# # #$$ # $$# # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x82, 0x80, 0x00, 0x84, 0x44, 0x54, 0x44, 0x80, 0x00, 0x80, 0x80, //#@# #$$$*$$$# # # -0x80, 0x01, 0x10, 0x00, 0x80, 0x40, 0x80, 0x00, 0x11, 0x00, 0x80, //# .. # $ # .. # -0x80, 0x80, 0x00, 0x84, 0x40, 0x80, 0x44, 0x80, 0x00, 0x80, 0x80, //# # #$$ # $$# # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x01, 0x84, 0x40, 0x80, 0x44, 0x81, 0x00, 0x80, 0x80, //# # .#$$ # $$#. # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x00, 0x84, 0x00, 0x80, 0x04, 0x80, 0x00, 0x80, 0x80, //# # #$ # $# # # -0x81, 0x00, 0x81, 0x00, 0x81, 0x41, 0x80, 0x01, 0x80, 0x01, 0x80, //#. #. #.$.# .# .# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80 //##################### -}; -#else -#define SOKOBAN_LEVELS 1 -const unsigned char Sokoban_Levels[] = { -//Level: 1 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #$ # -0x00, 0x88, 0x80, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ### $## -0x00, 0x80, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x80, 0x88, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, //### # ## # ###### -0x80, 0x00, 0x80, 0x88, 0x08, 0x88, 0x88, 0x00, 0x11, 0x80, //# # ## ##### ..# -0x80, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, //# $ $ ..# -0x88, 0x88, 0x80, 0x88, 0x80, 0x82, 0x88, 0x00, 0x11, 0x80, //##### ### #@## ..# -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -}; -#endif -#endif diff --git a/boop/trunk/games/tic_tac_toe.c b/boop/trunk/games/tic_tac_toe.c deleted file mode 100644 index 8d617ac..0000000 --- a/boop/trunk/games/tic_tac_toe.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - tic_tac_toe.c - game - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "tic_tac_toe.h" - -void GameTicTacToe(void) -{ - BYTE Color; - BYTE Mode; - int i; - int k; - BOOL ComputerWon; - BOOL PlayerWon; - BYTE G[2][9];//GameArray [0=Computer / 1=Player][Game fields] - BOOL GameIsRunning = false; - BYTE Moves = 0; - int Pos; - - Color = LCD_COLOR_B; - Mode = DRAW_PUT; - -again: - //New game - //Init the display - lcd_fill(0);//Clr screen - - //Title - set_font(SMALLFONT); - draw_string(0, 0, "TicTacToe", Color, Mode); - - //Grid - draw_block(16, 16+30, 96, 3, Color, Mode); - draw_block(16, 16+30+3+30, 96, 3, Color, Mode); - draw_block(16+30, 16, 3, 96, Color, Mode); - draw_block(16+30+3+30, 16, 3, 96, Color, Mode); - - //Reset game field - for(k=0; k<2; k++) - { - for(i=0; i<9; i++) - { - G[k][i] = 0; - } - } - - Moves = 0; - - GameIsRunning = true; - - while(1) - { - Pos = -1; - if(KEY_1){Pos = 0;} - if(KEY_2){Pos = 1;} - if(KEY_3){Pos = 2;} - if(KEY_4){Pos = 3;} - if(KEY_5){Pos = 4;} - if(KEY_6){Pos = 5;} - if(KEY_7){Pos = 6;} - if(KEY_8){Pos = 7;} - if(KEY_9){Pos = 8;} - - if((Pos >= 0) && (Pos <= 8)) - { - if(GameIsRunning) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //field is empty - G[1][Pos] = 1; - Moves++; - - if(Moves < 9) - { - //Moves left - if(!GameTicTacToe_IsSolved(G, &ComputerWon, &PlayerWon)) - { - //Not solved -> computer move - GameTicTacToe_ComputerMove(G); - Moves++; - } - } - GameTicTacToe_DrawGameField(G); - } - } - } - - //Is solved? - GameTicTacToe_IsSolved(G, &ComputerWon, &PlayerWon); - if(ComputerWon) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Computer hat gewonnen", Color, Mode); - GameIsRunning = false; - } - else - { - if(PlayerWon) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Spieler hat gewonnen", Color, Mode); - GameIsRunning = false; - } - else - { - if(Moves == 9) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Unentschieden", Color, Mode); - GameIsRunning = false; - } - } - } - - //Footer - if(Moves > 0) - { - draw_string(0, LCD_SIZE_Y - (8*3), "0", Color, Mode); - draw_string(32, LCD_SIZE_Y - (8*3), "Neues Spiel", Color, Mode); - draw_string(0, LCD_SIZE_Y - (8*2), "Exit", Color, Mode); - draw_string(32, LCD_SIZE_Y - (8*2), "Spiel beenden", Color, Mode); - } - else - { - draw_block(0, LCD_SIZE_Y - (8*2), LCD_SIZE_X, 8, Color, DRAW_ERASE); - } - - if(GameIsRunning) - { - draw_string(0, LCD_SIZE_Y - 8, "1-9", Color, Mode); - draw_string(32, LCD_SIZE_Y - 8, "Feld waehlen", Color, Mode); - } - else - { - draw_block(0, LCD_SIZE_Y - 8, LCD_SIZE_X, 8, Color, DRAW_ERASE); - } - waitKeyUpDown(); - if(KEY_0) goto again; - if(KEY_Exit) return; - } -} - -void GameTicTacToe_ComputerMove(BYTE G[2][9]) -{ - int Pos; - BYTE TempG[2][9]; - BOOL ComputerWon; - BOOL PlayerWon; - - for(Pos=0; Pos<9; Pos++) - { - TempG[0][Pos] = G[0][Pos]; - TempG[1][Pos] = G[1][Pos]; - } - - //1: Check if the computer can win the game with the next move - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - TempG[0][Pos] = 1;//Try this move - GameTicTacToe_IsSolved(TempG, &ComputerWon, &PlayerWon); - if(ComputerWon) - { - G[0][Pos] = 1;//Do the move - return; - } - TempG[0][Pos] = 0;//Undo the try - } - } - - //2: Check if the computer can prohibit the player to win the game with the next move - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - TempG[1][Pos] = 1;//Try this move - GameTicTacToe_IsSolved(TempG, &ComputerWon, &PlayerWon); - if(PlayerWon) - { - G[0][Pos] = 1;//Do the move - return; - } - TempG[1][Pos] = 0;//Undo the try - } - } - - //The following strategy is not implemented to allow the player to win: - //3: Fork: threaten a win with two possible completions in two ways - //4: Block Fork 1: if there is a configuration where the opponent can fork, create two in a row to force a block - //5: Block Fork 2: if there is a configuration where the opponent can fork, block that fork - - //6: Try to play the centre - if((G[0][4] + G[1][4]) == 0) - { - G[0][4] = 1; - return; - } - - //7: If the Player is in a corner then try to play the opposite corner - if(((G[0][0] + G[1][0]) == 0) && (G[1][8])) - { - //Corner 0 is free and player is in corner 8 - G[0][0] = 1; - return; - } - if(((G[0][2] + G[1][2]) == 0) && (G[1][6])) - { - //Corner 2 is free and player is in corner 6 - G[0][2] = 1; - return; - } - if(((G[0][6] + G[1][6]) == 0) && (G[1][2])) - { - //Corner 6 is free and player is in corner 2 - G[0][6] = 1; - return; - } - if(((G[0][8] + G[1][8]) == 0) && (G[1][0])) - { - //Corner 8 is free and player is in corner 0 - G[0][8] = 1; - return; - } - - //8: Try to play an free corner - Pos = 0; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 2; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 6; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 8; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - - //9: Play on a free pos - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - G[0][Pos] = 1;//Do the move - return; - } - } -} - -BOOL GameTicTacToe_IsSolved(BYTE G[2][9], BOOL *pComputerWon, BOOL *pPlayerWon) -{ - //Return true=GameIsSolved - int k; - BYTE Result[2]; - - *pComputerWon = false; - *pPlayerWon = false; - - //Is solved? - Result[0] = 0; - Result[1] = 0; - for(k=0; k<2; k++) - { - Result[k] |= 1 << (G[k][0] + G[k][1] + G[k][2]);//Row 1 - Result[k] |= 1 << (G[k][3] + G[k][4] + G[k][5]);//Row 2 - Result[k] |= 1 << (G[k][6] + G[k][7] + G[k][8]);//Row 3 - - Result[k] |= 1 << (G[k][0] + G[k][3] + G[k][6]);//Column 1 - Result[k] |= 1 << (G[k][1] + G[k][4] + G[k][7]);//Column 2 - Result[k] |= 1 << (G[k][2] + G[k][5] + G[k][8]);//Column 3 - - Result[k] |= 1 << (G[k][0] + G[k][4] + G[k][8]);//Diagonal - Result[k] |= 1 << (G[k][2] + G[k][4] + G[k][6]);//Diagonal - } - - if(Result[0] & (1 << 3)) - { - *pComputerWon = true; - return true;//Solved - } - if(Result[1] & (1 << 3)) - { - *pPlayerWon = true; - return true;//Solved - } - - return false;//Not solved -} - -void GameTicTacToe_DrawGameField(BYTE G[2][9]) -{ - int Pos; - int x; - int y; - BYTE Color; - BYTE Mode; - - Color = LCD_COLOR_B; - Mode = DRAW_PUT; - - for(Pos=0; Pos<9; Pos++) - { - -// x = Pos % 3; -// y = Pos / 3; - y = 0; - x = Pos; - while(x >= 3) - { - x -= 3; - y++; - } - - if(G[0][Pos]) - { - //Computer (O) - draw_disc(16+14 + (x*33), 16+14 + (y*33), 11, Color, Mode); - draw_disc(16+14 + (x*33), 16+14 + (y*33), 8, Color, DRAW_XOR); - - } - else - { - if(G[1][Pos]) - { - //Player (X) -draw_line(16+3 + (x*33), 16+3 + (y*33)+2, 16+3 + (x*33) + 23-2, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33), 16+3 + (y*33)+1, 16+3 + (x*33) + 23-1, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33), 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33)+1, 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23-1, Color, Mode); -draw_line(16+3 + (x*33)+2, 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23-2, Color, Mode); - - -draw_line(16+3-1+(x*33)+2, 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33)+2, Color, Mode); -draw_line(16+3-1+(x*33)+1, 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33)+1, Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33), Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1-1, 16+3+(x*33)+23-1, 16+3 + (y*33), Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1-2, 16+3+(x*33)+23-2, 16+3 + (y*33), Color, Mode); - - } - } - } -} - - diff --git a/boop/trunk/games/tic_tac_toe.h b/boop/trunk/games/tic_tac_toe.h deleted file mode 100644 index 1d57f18..0000000 --- a/boop/trunk/games/tic_tac_toe.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - tic_tac_toe.h - game - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#ifndef TIC_TAC_TOE_H -#define TIC_TAC_TOE_H - -#include "../global.h" - -void GameTicTacToe(void); -void GameTicTacToe_DrawGameField(BYTE G[2][9]); -void GameTicTacToe_ComputerMove(BYTE G[2][9]); -BOOL GameTicTacToe_IsSolved(BYTE G[2][9], BOOL *pComputerWon, BOOL *pPlayerWon); - -#endif diff --git a/boop/trunk/global.c b/boop/trunk/global.c deleted file mode 100644 index 7b218db..0000000 --- a/boop/trunk/global.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - global.c - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "rf.h" -#include "global.h" - -#define debugbuffersize 50 -unsigned char debugoutbuf [debugbuffersize]; - -void *memcpy(void *dest,void *src,int count) -{ - char *tmp = (char *) dest, *s = (char *) src; - - while (count--) - *tmp++ = *s++; - - return dest; -} - -int memcmp(const void * cs,const void * ct,int count) -{ - const unsigned char *su1, *su2; - signed char res = 0; - - for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) - if ((res = *su1 - *su2) != 0) - break; - return res; -} - -unsigned char GetHWversion (void) -{ - if(((IOPIN2 >> 28) & 3) == 3) - return(((((IOPIN0 >> 5) & 1) << 4) | (((IOPIN2 >> 30) & 1) << 3) | (((IOPIN2 >> 16) & 1) << 2) | 3)); - return(((IOPIN2 >> 27) & 2) + ((IOPIN2 >> 29) & 1) + (((IOPIN1 >> 23) & 7) << 2)); -} - -int puts (const char* string) -{ - struct RFendpoint_* cur_ep; - volatile unsigned char i; - - cur_ep = openEP(debugoutbuf,0, packet_test); - - if (cur_ep) - { - for (i=0; (ibuffer[i] = string[i]; - } - - cur_ep->buffer[i] = 0; - cur_ep->bufferlen = i+1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata; - - - RF_changestate(RFtx); - // wait until all date are sent - while(cur_ep->flags & EPnewdata); - closeEP(cur_ep); - } - return 1; -} - -/* - * The width of the CRC calculation and result. - * Modify the typedef for a 16 or 32-bit CRC standard. - */ - -#define CRC_POLYNOMIAL 0x8005 -#define CRC_WIDTH (8 * sizeof(crc)) -#define CRC_TOPBIT (1 << (CRC_WIDTH - 1)) - -crc CRCs(char* message) -{ - crc remainder = 0; - int byte; - unsigned char bit; - - /* - * Perform modulo-2 division, a byte at a time. - */ - for (byte = 0; message[byte]; ++byte) - { - /* - * Bring the next byte into the remainder. - */ - remainder ^= (message[byte] << (CRC_WIDTH - 8)); - - /* - * Perform modulo-2 division, a bit at a time. - */ - for (bit = 8; bit > 0; --bit) - { - /* - * Try to divide the current data bit. - */ - if (remainder & CRC_TOPBIT) - { - remainder = (remainder << 1) ^ CRC_POLYNOMIAL; - } - else - { - remainder = (remainder << 1); - } - } - } - - /* - * The final remainder is the CRC result. - */ - return (remainder); - -} /* crcSlow() */ - diff --git a/boop/trunk/global.h b/boop/trunk/global.h deleted file mode 100644 index 665747c..0000000 --- a/boop/trunk/global.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - global.h - Copyright (C) 2007 Colibri - - 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 3 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, see . -*/ - -#ifndef GLOBAL_H -#define GLOBAL_H - -//Uncomment if you want compile with demo sound -//#define WITH_SOUND - -// Set appropriate feature flags -#define FF_UART_REDIRECT 1 -#define FF_LARGE_IDLE_CLOCK 0 -#define FF_LARGE_MENU 1 -#define FF_ICON_TRANSPARENT 1 // enable 3 BitPerPixel icons support - -typedef unsigned char BOOL; -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; - -#define false 0 -#define true 1 - -#ifndef NULL -#define NULL 0 -#endif - -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#define min(a,b) (((a) < (b)) ? (a) : (b)) - -#ifndef _BV -#define _BV(bit) (1 << (bit)) -#endif - -#define NUM_OF_ELEMENTS(x) sizeof(x)/sizeof(x[0]) - -#define SPEED_30 0 -#define SPEED_60 1 - -// Execute code in locked sequence -#define INT_LOCK(x) {unsigned cpsr = disableIRQ (); {x;} restoreIRQ (cpsr);} - -/** Let the LPC2200 sleep until the next IRQ -* -* This function tries to enter the sleep mode and stays -* there until the next interrupt wakes up the CPU. -* If that is not possible, the function returns immediately. -*/ -extern void cpu_idle (void); - -#define SYS_NOIDLE 0x08 // No Idle Mode -#define SYS_NOPDOWN 0x10 // No Power Down -#define SYS_IR 0x20 -#define SYS_KEY 0x40 -#define SYS_TURBO 0x80 - -#include -#define printd(...) printf(__VA_ARGS__) -#define debugbuffersize 50 -extern unsigned char debugoutbuf [debugbuffersize]; - -#ifndef __MAIN_C__ -extern char sysInfo; -#endif /* __MAIN_C__ */ - -extern unsigned char debugoutbuf []; - -#define PCON_IDLE 0x01 -#define PCON_PDOWN 0x02 - -typedef unsigned short crc; - -void *memcpy(void *dest,void *src,int count); -int memcmp(const void * cs,const void * ct,int count); -unsigned char GetHWversion(void); -int puts(const char* string); -crc CRCs(char* message); - -#endif diff --git a/boop/trunk/gui/Cross_2bpp.bmp b/boop/trunk/gui/Cross_2bpp.bmp deleted file mode 100644 index 96e496c8302d7b625942fbe6509572c5a18e1b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 zcma)&u~9@Z3`CERgqVN=2#F|woRAhM?$<$I$FrBy?MSlup83A@YV|DN$LIIsWv+Mj zSH73O@8R-1{Wt1APx_|8c0IQgKbKvmj^p^6>vsA5S3ZGdb1Ber@BdE`E`V$}5FNuH zLerCCnPO)j%IqN%Q`JpgfwO~%ndePk?x9P`}U~TcJeYK<07ic zwEqnGRMo@lAEG2a9QF{j`=!!U@!9=Y2Oxu~HHZ_gW5wb-6U|CjlX1vIj)ApQN-fTD z9Wl%sVEiT~P8}mS5{aM|akMLzoN<}0K!vd4kobvEo!TNAj|~wIm+39yyF-`f6Q^a; z4ksXqsnUi?04(h_vtrgENn(N$M9erkSuyfdSrQdU3sq<8iZ)3&ssvaZ{nF62Du+EX zNq}0>NVe^ooYJasBKrv`i3uc4vd6BN8=&~{1Vp;AWp47`9@COXgHkmyQ_Kmi_PkHh aYQim~H5rUNtD@w`6WaDOrpRZKWPSno`4`Io diff --git a/boop/trunk/gui/Cross_t_3bpp_t.bmp b/boop/trunk/gui/Cross_t_3bpp_t.bmp deleted file mode 100644 index 7a8bffe072be5fec04f0193c5346d0346a7a4143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 zcmb7=u~oz{5JXK#LQFsbghUiTPDl$B=Q`-?_-J5m-ma`OdS~BgcJ^!KxA)KcZLC+` z&pc1R&)xPo{1@t94|;~d>#|+W{1iWvTx9lr{}}7<@aw;P0*m%iB7E(?rOuFCz&vjF0v_?mc447n%0VXK4ytFc-bPMLEmc>D^uJ?c`-TlfqSH zjxJKF`jY*FKqiR~hqnc09x6>$;oSBC$Y5#>D_9oYanC ziZ*3p_A$(nC1~n~BTtnj(Sfv3O{R{RCJDPrfW$bE;Z04NsK6+zD z!8`bUP#1v1d+(gH)}BCdgTtaRTrlJ$Rf7#06b~Y;L=dKEqIK68B#5xY5y#gEu5n$b pQjvutFDv>bMGF4)%Lm=QFDFtQ=gRtSmyAdSFaMz%ruXOnJpf%w4HEzW diff --git a/boop/trunk/gui/FR_2bpp.bmp b/boop/trunk/gui/FR_2bpp.bmp deleted file mode 100644 index d088a4784cf2b65fe0c8a2aabf943f6da76d6ce0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmaKoF%m){5JT}-Hd_B9cmhicdrL0KIsU!yLDpr3na>PtHpvEt_vf{xzMh;9_RaPs z?VZ1(A9w9eaMW5$DLLmK@mJwd@gxcgJTpJec8gQWRvWQBB?=mo$s>l( z1*nJ>F?@!WGW%ji#IujyYcZeLL3+IPgbVFVNJxw1D@YzYQP% ze*OBD$h!>x>^U3r&xd&MgESvJA3rN!0sP>W-mP5yYeS@Y1&;4#%fsfyZC1D3$1g+t zI)J;hGq~u$;0d_OC*aS~)?+R9aHh+Ft+!}i;V8RQ4)N6A>fxxOudmZ}fMEWo8OPQK zN!wFgm|KdjSNV@B=oRuUWJnq{{R+r7<~K)IA_pUPcCFlv<8{lHezy43v zw>wK{UYk4z)W)r)n+{2DsyBoeInt+=`l(OA6a;s6dx-yyZ+S$YZm%|@l-kVI#Agxm z3509&L|EhT)2o}Xl$AmWj{DPu_#AWUYUb8UWtNI&Qs3@E$u%2Q`h81mMw;}&#;T;l+3I`Kd%`^Z6ACqjXEDhf6#OW2Jc)i^jLF8e!H-(yc<%!$2MdP?>_MeDEe5FVp z8%!>}H9=*$pSyy_nWr2zezh*++*X$qvHvz|i`k72{1@M{6;#3OGx;#{X#5nzDXL!q zeSR`foeSq&YE}Gz{#GrCn#->MBA_v{)u z_d1;m)hbG?DUXjVx;;o|>cKeqA_Lm=l^)bjAi(a1!PDYLCAt}XAshiU=*Spku9)K| z$SKm9aTVWYdKar7_FPUU2-fakg1bJD3pKqBj=pkk14JMQ&=sKTjDr)l*P>RdAjxho zgI96YJS3vJYUv)k^argr&eH=awUev`)*svA z+pQ`Z)3g<^RbtM6)M#cr`}!>LPS=2_h?f_AQPH1CY4`nyxS^`HL9ML!8G7uM||z-6rAhsV;@_KJa9m zsM}26!>9A^L=!>ErCrn5<_ma=L93p9uBb~GbZfbaXy-HH_QP!QB}WhTx1#w(S8*9X!caTL;Ke ztIkpzs1b5WTLGVkBqCr3l9RVvoxo|Xh*+%wbxb13X`~j9D5LL*y4AOWTc=SoCG#U?rr5}-02QF0`R0(wk_u03Am8@aVJ-S z5)bK0rK?n9k<5|jTvh(nNSzT)1f?u|RpeL#MVm3NIxoWE-O`4<^?-`V92HfoCd`4H z7d$6&RMv|BE$e*D6x|BD|FKI386?QXDng46#+ z|MBxC|9O;r0_86D@XqP${+~}U{r%`;zV-XBzXCiW!Ra>MHWAZU6aJHR{uNsPZ1l%R zU+?89Zrl6>=bxa7x6n6?bwhpoD~Xpt&jyc*M>4)TB>MmW diff --git a/boop/trunk/gui/Play_2bpp.bmp b/boop/trunk/gui/Play_2bpp.bmp deleted file mode 100644 index 04a5dd2813086ce97a89c9fff3f18035fe16d134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmb`EI}*Y$3`7l88mKt}C!kD0pVF7~IdU)atQDXzvD2U#S@G`kPkAo$Iaxdy@8rev zly0U^`0G_^0z<8}l#+9P3!93L3zH}~%$e*4Zet(@kX8b;Q{pyS9TmPCL_}4J?)1?m t?r<0p9dUU7+bvoVBmpWFP?t|3e+-g!U+kcibEBE$F&NdI2|eLfrrW diff --git a/boop/trunk/gui/Stop_2bpp.bmp b/boop/trunk/gui/Stop_2bpp.bmp deleted file mode 100644 index 8661f98cda0ecbc2633d0fb57e4a94364b074e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmchUyAgmO42IFlMr%iK0!s^fOO|8~_rfm(IL-O!%v}=yM-;=lEv-v2Qzx>|*|;(B z9r`|KCV~=U3?X>$3vuc2sCXO=1q`?iRPo?=G3g`*`O58U&ZL-#N-3<>@)j4P4& diff --git a/boop/trunk/gui/controls.c b/boop/trunk/gui/controls.c deleted file mode 100644 index 539d859..0000000 --- a/boop/trunk/gui/controls.c +++ /dev/null @@ -1,1017 +0,0 @@ -/* - controls.c - GUI controls - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "rtc.h" -#include "controls.h" -#include "lcd.h" -#include "fonty.h" -#include "global.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "backlight.h" -#include "timerfuncs.h" - -#define Cursor_timeout 150 - -FORM* currentform = 0; - -const char string_yes[] = "JA"; -const char string_no[] = "NEIN"; -const char string_ok[] = "OK"; - -const char TXTKey1[] = ".,-+_1@*;:'&"; -const char TXTKey2[] = "abc2ABC"; -const char TXTKey3[] = "def3DEF"; -const char TXTKey4[] = "ghi4GHI"; -const char TXTKey5[] = "jkl5JKL"; -const char TXTKey6[] = "mno6MNO"; -const char TXTKey7[] = "pqrs7PQRS"; -const char TXTKey8[] = "tuv8TUV"; -const char TXTKey9[] = "wxyz9WXYZ"; -const char TXTKey0[] = " 0"; - -const char* const TXTKeys[10] = {TXTKey1,TXTKey2,TXTKey3,TXTKey4,TXTKey5,TXTKey6,TXTKey7,TXTKey8,TXTKey9,TXTKey0}; - -unsigned char msgbox (unsigned char y,unsigned short flags, char *st) -{ - unsigned short textwidth; - unsigned short textheight; - unsigned char width; - unsigned char height; - unsigned char left; - unsigned char x; - unsigned char sel; - - struct bt_ - { - unsigned char cnt; - unsigned char left[3]; - unsigned char top; - unsigned char ret[3]; - char* text[3]; - unsigned char textHeight; - } button; - - textwidth = get_stringwidth(st); - textheight = get_stringheight(st); - - if(textwidth > 120) - width = 124; - else if(textwidth < 54) - width = 60; - else - width = (textwidth | 0x01) + 6; - - button.textHeight = get_stringheight (string_yes); - if ((flags & 0x03) == BC_YesNo) - { - button.cnt = 2; - button.left[0] = 38; - button.ret[0]=BC_Yes; - button.text[0] = (char*)string_yes; - button.left[1] = 65; - button.ret[1]=BC_No; - button.text[1] = (char*)string_no; - button.top = y + textheight +5; - } - else if ((flags & 0x03) == BC_nobuttons) - { - button.cnt = 0; - button.top = 0; - } - else - { - button.cnt = 1; - button.left[0] = 51; - button.ret[0]=BC_OK; - button.text[0] = (char*)string_ok; - button.top = y + textheight +5; - - } - - if(button.cnt) - height = textheight + button.textHeight + 12; - else - height = textheight + 6; - - left = (128-width)>>1; - - draw_block (left,y,width,height, LCD_COLOR_B, DRAW_ERASE); - draw_rect (left,y,width,height,1, LCD_COLOR_B, DRAW_PUT); - draw_rect (left+1,y+1,width-2,height-2,1, LCD_COLOR_DG, DRAW_PUT); - draw_string (left+3,y+3,st, LCD_COLOR_B, DRAW_PUT); - - for (x=0;x>1), button.top+2, - button.text[x], LCD_COLOR_B, DRAW_PUT); - } - - sel = 0; - if ((flags & 0x0C) == BC_DefaultButton2) - { - if(button.cnt>1) - sel=1; - } - else if ((flags & 0x0C) == BC_DefaultButton3) - { - if(button.cnt>2) - sel=2; - } - - setBacklight(BL_AUTO); - while(KEY_OK) {}; - while(!KEY_OK && button.cnt) - { - draw_block (button.left[sel]+1, button.top+1, 23, button.textHeight, LCD_COLOR_B, DRAW_XOR); - waitKeyUpDown(); - draw_block (button.left[sel]+1, button.top+1, 23, button.textHeight, LCD_COLOR_B, DRAW_XOR); - if(KEY_Left) - { - if(sel>0) - sel--; - } - if(KEY_Right) - { - if(selfont); - if(label->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (label->left,label->top,label->width,label->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_string(label->left+1,label->top+1,label->caption, c, m); - -} - -void button_draw (BUTTON* button, unsigned char sel) -{ - unsigned char c; - unsigned char cleft; - unsigned char ctop; - - set_font (button->font); - if(button->type & BC_Disabled) - c=2; - else - c=3; - - draw_block(button->left,button->top,button->width,button->height,3,DRAW_ERASE); - draw_rect(button->left,button->top,button->width,button->height,1,c,DRAW_PUT); - draw_rect(button->left+1,button->top+1,button->width-2,button->height-2,1,c-1,DRAW_PUT); - - cleft = ((button->width - get_stringwidth(button->caption))>>1) +button->left; - ctop = ((button->height - get_stringheight(button->caption)+1)>>1) +button->top; - - if (sel == 2) - { - draw_block (button->left+2,button->top+2,button->width-4,button->height-4, LCD_COLOR_B, DRAW_PUT); - draw_string(cleft,ctop,button->caption, c, DRAW_ERASE); - } - else if (sel) - { - draw_block(button->left+2,button->top+2,button->width-4,button->height-4,1,DRAW_PUT); - draw_string(cleft,ctop,button->caption, c, DRAW_PUT); - } - else - draw_string(cleft,ctop,button->caption, c, DRAW_PUT); -} // button_draw - -void numbox_draw(NUMBOX* numbox, unsigned char sel) { - - unsigned char c; - unsigned char m; - - set_font (numbox->font); - if(numbox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (numbox->left,numbox->top,numbox->width,numbox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_numU(numbox->left+1,numbox->top+1,numbox->value, 0, c, m); - - -} - -void txtbox_draw(TXTBOX* txtbox, unsigned char sel) { - - unsigned char c; - unsigned char m; - - set_font (txtbox->font); - if(txtbox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (txtbox->left,txtbox->top,txtbox->width,txtbox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_string(txtbox->left+1,txtbox->top+1,txtbox->text, c, m); - -} - -void datebox_draw(DATEBOX* datebox, unsigned char sel) { - - unsigned char c; - unsigned char m; - unsigned char w1,w2; - - set_font (datebox->font); - if(datebox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (datebox->left,datebox->top,datebox->width,datebox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(".")+1; - - draw_char(1+datebox->left ,datebox->top+1,days[datebox->date.weekday * 2], c, m); - draw_char(1+datebox->left+1*w1 ,datebox->top+1,days[(datebox->date.weekday * 2) + 1], c, m); - draw_hexC(1+datebox->left+2*w1+1*w2,datebox->top+1,datebox->date.day, c, m); - draw_char(1+datebox->left+4*w1+1*w2,datebox->top+1,'.', c, m); - draw_hexC(1+datebox->left+4*w1+2*w2,datebox->top+1,datebox->date.month, c, m); - draw_char(1+datebox->left+6*w1+2*w2,datebox->top+1,'.', c, m); - draw_hexC(1+datebox->left+6*w1+3*w2,datebox->top+1,datebox->date.year, c, m); - -} - -void timebox_draw(TIMEBOX* timebox, unsigned char sel) { - - unsigned char c; - unsigned char m; - unsigned char w1,w2; - - set_font (timebox->font); - if(timebox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (timebox->left,timebox->top,timebox->width,timebox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(":")+1; - - draw_hexC(1+timebox->left ,timebox->top+1,timebox->time.hour, c, m); - draw_char(1+timebox->left+2*w1 ,timebox->top+1,':', c, m); - draw_hexC(1+timebox->left+2*w1+1*w2,timebox->top+1,timebox->time.minute, c, m); - draw_char(1+timebox->left+4*w1+1*w2,timebox->top+1,':', c, m); - draw_hexC(1+timebox->left+4*w1+2*w2,timebox->top+1,timebox->time.second, c, m); - -} - -void listbox_draw (LISTBOX* listbox, unsigned char sel) -{ - unsigned char c; - unsigned char m; - unsigned char arrow = (listbox->height - 6) / 2 + 1; - - set_font (listbox->font); - if(listbox->type & BC_Disabled) - c=2; - else - c=3; - - if (sel) - { - draw_block (listbox->left,listbox->top,listbox->width,listbox->height, - LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - if(listbox->listindex < listbox->listcount) - draw_string(listbox->left+1,listbox->top+1,listbox->list[listbox->listindex], c, m); - if (sel) - { - draw_block (listbox->left + listbox->width-((arrow+1)*2+1),listbox->top, - (arrow+1)*2+1,listbox->height, - LCD_COLOR_B, DRAW_PUT); - draw_arrow (listbox->left + listbox->width-(arrow+1)*2, listbox->top + (listbox->height/2)-arrow, - ARROW_LEFT, arrow, LCD_COLOR_B, DRAW_ERASE); - draw_arrow (listbox->left + listbox->width-arrow-1, listbox->top + (listbox->height/2)-arrow, - ARROW_RIGHT, arrow, LCD_COLOR_B, DRAW_ERASE); - } -} - -void control_draw (CONTROL* control, unsigned char select) -{ - draw_block (control->left,control->top,control->width,control->height,LCD_COLOR_B,DRAW_ERASE); - switch ((control->type) & 0x1F) - { - case BC_Label: - label_draw((LABEL*)control,select); - break; - case BC_Button: - button_draw((BUTTON*)control,select); - break; - case BC_Numbox: - numbox_draw((NUMBOX*)control,select); - break; - case BC_Txtbox: - txtbox_draw((TXTBOX*)control,select); - break; - case BC_Datebox: - datebox_draw((DATEBOX*)control,select); - break; - case BC_Timebox: - timebox_draw((TIMEBOX*)control,select); - break; - case BC_Listbox: - listbox_draw((LISTBOX*)control,select); - break; - } -} // control_draw - -void form_draw (FORM* form) -{ - unsigned char x; - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0, 0, form->caption, LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,128,2, LCD_COLOR_B, DRAW_PUT); - - if (form->footer) - { - set_font(SMALLFONT); - draw_block (0,149,128,2, LCD_COLOR_B, DRAW_PUT); - draw_string (0,152, form->footer, LCD_COLOR_B, DRAW_PUT); - } - - for (x=0;xcontrolcount;x++) - { - control_draw(form->controls[x],(form->sel == x)); - } -} // form_draw - -unsigned char get_prev_control(FORM* form) { - - signed short x; - unsigned char type; - - for(x=form->sel-1;x>-1;x--) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - for(x=form->controlcount-1;x>form->sel;x--) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - return form->sel; -} - -unsigned char get_next_control(FORM* form) { - - unsigned char x; - unsigned char type; - - for(x=form->sel+1;xcontrolcount;x++) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - for(x=0;xsel;x++) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - return form->sel; -} - -extern void cpu_idle(); - -void waitFormKeyUp(void) -{ - while((keys[0] != 0) || (keys[1] != 0)) { - if(currentform->flags & BC_Timer_expired) { - currentform->flags &= ~BC_Timer_expired; - if(currentform->timer) - currentform->timer(currentform); - } - if(currentform->flags & BC_Form_redraw) { - form_draw(currentform); - currentform->flags &= ~BC_Form_redraw; - } - } -} - -void waitFormKeyDown(void) -{ - while((keys[0] == 0) && (keys[1] == 0)) { - if(currentform->flags & BC_Timer_expired) { - currentform->flags &= ~BC_Timer_expired; - if(currentform->timer) - currentform->timer(currentform); - } - if(currentform->flags & BC_Form_redraw) { - form_draw(currentform); - currentform->flags &= ~BC_Form_redraw; - } - cpu_idle(); - }; - setBacklight(BL_AUTO); // pwm value -} - -#define waitFormKeyUpDown() { waitFormKeyUp(); waitFormKeyDown(); } - -void numbox_entervalue(NUMBOX* numbox) { - - unsigned char digit[5]; - unsigned char len; - unsigned char maxlen; - unsigned char cpos; - unsigned char width; - unsigned char space; - unsigned char k; - unsigned short value; - unsigned short x; - unsigned char h; - - if((KEY_Left) || (KEY_Right)) { - if((KEY_Left) && (numbox->value > numbox->min)) - numbox->value--; - if((KEY_Right) && (numbox->value < numbox->max)) - numbox->value++; - return; - } - set_font(numbox->font); - width = get_stringwidth("0"); - space = get_stringwidth("00") - 2 * width; - h=get_stringheight("0"); - - cpos = 0; - len = 0; - x=numbox->max; - for(maxlen = 1;x > 9;maxlen++) - x /= 10; - - while(!(KEY_Exit || KEY_OK)) { - k=getKeynum(); - if((k > 15) && (k < 26)) { - digit[cpos] = k-15; - if(digit[cpos] > 9) - digit[cpos] = 0; - if(len < maxlen) - len++; - cpos++; - if(cpos == maxlen) - cpos--; - } - if(KEY_Left) { - if(len) - len--; - cpos = len; - } - draw_block(numbox->left,numbox->top,numbox->width,numbox->height,3,DRAW_ERASE); - for(x=0; xleft+1)+(width+space)*x ,numbox->top+1, digit[x] + 0x30,3, DRAW_PUT); - draw_hline ((numbox->left+1)+ (width+space)*cpos,numbox->top+h,width, LCD_COLOR_B, DRAW_PUT); - waitFormKeyUpDown(); - } - if((KEY_OK) && len) { - x=1; - value = 0; - for(k=len;k;k--) { - value += x*digit[k-1]; - x *=10; - } - if(value > numbox->max) - numbox->value = numbox->max; - else if(value < numbox->min) - numbox->value = numbox->min; - else - numbox->value = value; - } - waitFormKeyUp(); -} - -void txtbox_entervalue(TXTBOX* txtbox) { - - unsigned char k; - unsigned char kpos; - unsigned char kold; - unsigned char cpos; - unsigned char x; - unsigned char y; - unsigned char h; - char buffer[txtbox->maxlen]; - - memcpy(buffer,txtbox->text,txtbox->maxlen); - - if(KEY_Right) { - for(cpos=0;buffer[cpos] !=0;cpos++); - } - else { - cpos = 0; - buffer[cpos] = 0; - } - if(cpos == txtbox->maxlen-1) - cpos--; - kpos = 0; - - h=get_stringheight("0"); - kold = 10; - while(!(KEY_Exit || KEY_OK)) { - k=getKeynum(); - if((k > 15) && (k < 26)) { - k = k-16; - if(k != kold) { - kpos = 0; - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) - cpos++; - } - else { - kpos++; - if(TXTKeys[k][kpos] == 0) - kpos = 0; - } - buffer[cpos] = TXTKeys[k][kpos]; - buffer[cpos+1] = 0; - kold = k; - } - if(KEY_Right) { - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) { - cpos++; - kold = 10; - } - } - if(KEY_Left) { - if((cpos > 0) && (!buffer[cpos])) - cpos--; - buffer[cpos] = 0; - } - draw_block(txtbox->left,txtbox->top,txtbox->width,txtbox->height,3,DRAW_ERASE); - draw_string (txtbox->left+1,txtbox->top+1,buffer, LCD_COLOR_B, DRAW_PUT); - x=get_stringwidth(buffer); - y=get_stringwidth(&buffer[cpos]); - if(!y){ - y=get_stringwidth("A"); - x+=y+1; - } - - draw_block(txtbox->left+x-y,txtbox->top,y+2,h+2,3,DRAW_XOR); - - waitKeyUp(); - if((buffer[cpos]) && (cpos < txtbox->maxlen-2)) { - unsigned short cnt; - cnt = Cursor_timeout; - while(((keys[0] == 0) && (keys[1] == 0)) && --cnt) { - wait5ms(); - } - setBacklight(BL_AUTO); - if(!cnt) { - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) - cpos++; - buffer[cpos] = 0; - kold = 10; - } - } - else - waitFormKeyDown(); - - } - if(KEY_OK) { - memcpy(txtbox->text,buffer,txtbox->maxlen); - } - waitFormKeyUp(); -} - -void datebox_entervalue(DATEBOX* datebox) { - unsigned char cursor; - signed char x; - signed char v; - char cpos[3]; - unsigned char w1, w2; - struct date_ dateold; - unsigned char exit = 0; - - if(KEY_Right) - cursor = 2; - else - cursor = 0; - - dateold = datebox->date; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(".")+1; - - cpos[0] = 2 * w1 + 1 * w2; - cpos[1] = 4 * w1 + 2 * w2; - cpos[2] = 6 * w1 + 3 * w2; - - draw_block(datebox->left,datebox->top,datebox->width,datebox->height,3,DRAW_ERASE); - datebox_draw(datebox,0); - draw_block(datebox->left+ cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_XOR); - - while(!(KEY_Exit | KEY_OK)) { - - if(KEY_Left || KEY_Right) { - cursor += 3; - if (KEY_Left) - cursor--; - else - cursor++; - cursor %= 3; - } - - x = getNumKeyValue(); - if (x >= 0) { - v= x<<4; - draw_block(datebox->left+cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_ERASE); - draw_char(datebox->left+1+cpos[cursor],datebox->top+1, x + 0x30,3, DRAW_PUT); - draw_char(datebox->left+w1+1+cpos[cursor],datebox->top+1, '_',3, DRAW_PUT); - waitKeyUpDown(); - x = getNumKeyValue(); - if (x >= 0) { - v |= x; - switch (cursor++) { - case 0: - datebox->date.day = checkBCD(v,31,1); - break; - case 1: - datebox->date.month = checkBCD(v,12,1); - break; - case 2: - datebox->date.year = checkBCD(v,99,0); - exit++; - break; - } - cursor %= 3; - } - } - - if(KEY_Down || KEY_Up) { - if (KEY_Up) - x=1; - else - x=-1; - switch (cursor) { - case 0: - calcBCD((unsigned char*)&datebox->date.day, x, 31, 1); - break; - case 1: - calcBCD((unsigned char*)&datebox->date.month, x, 12, 1); - break; - case 2: - calcBCD((unsigned char*)&datebox->date.year, x, 99, 0); - break; - } - } - calcweekday(&datebox->date); - - draw_block(datebox->left,datebox->top,datebox->width,datebox->height,3,DRAW_ERASE); - datebox_draw(datebox,0); - draw_block(datebox->left+ cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_XOR); - - if(exit) - break; - - waitFormKeyUpDown(); - } - - if (KEY_OK | exit) { - switch (datebox->date.month) { - case 0x02: - x = (((datebox->date.year & 0xf0)>>4) * 10 + (datebox->date.year & 0x0f)) & 0x03; - if (x && (datebox->date.day > 0x28)) - datebox->date.day = 0x28; - else if (!x && (datebox->date.day > 0x29)) - datebox->date.day = 0x29; - break; - case 0x04: - case 0x06: - case 0x09: - case 0x11: - if (datebox->date.day > 0x30) - datebox->date.day = 0x30; - } - calcweekday(&datebox->date); - } - else - datebox->date = dateold; - - waitFormKeyUp(); -} - -void timebox_entervalue(TIMEBOX* timebox) { - unsigned char cursor; - signed char x; - signed char v; - char cpos[3]; - unsigned char w1, w2; - struct time_ timeold; - unsigned char exit = 0; - - if(KEY_Right) - cursor = 2; - else - cursor = 0; - - timeold = timebox->time; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(":")+1; - - cpos[0] = 0; - cpos[1] = 2 * w1 + 1 * w2; - cpos[2] = 4 * w1 + 2 * w2; - - draw_block(timebox->left,timebox->top,timebox->width,timebox->height,3,DRAW_ERASE); - timebox_draw(timebox,0); - draw_block(timebox->left+ cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_XOR); - - while(!(KEY_Exit | KEY_OK)) { - - if(KEY_Left || KEY_Right) { - cursor += 3; - if (KEY_Left) - cursor--; - else - cursor++; - cursor %= 3; - } - - x = getNumKeyValue(); - if (x >= 0) { - v= x<<4; - draw_block(timebox->left+cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_ERASE); - draw_char(timebox->left+1+cpos[cursor],timebox->top+1, x + 0x30,3, DRAW_PUT); - draw_char(timebox->left+w1+1+cpos[cursor],timebox->top+1, '_',3, DRAW_PUT); - waitKeyUpDown(); - x = getNumKeyValue(); - if (x >= 0) { - v |= x; - switch (cursor++) { - case 0: - timebox->time.hour = checkBCD(v,23,0); - break; - case 1: - timebox->time.minute = checkBCD(v,59,0); - break; - case 2: - timebox->time.second = checkBCD(v,59,0); - exit++; - break; - } - cursor %= 3; - } - } - - if(KEY_Down || KEY_Up) { - if (KEY_Up) - x=1; - else - x=-1; - switch (cursor) { - case 0: - calcBCD((unsigned char*)&timebox->time.hour, x, 23, 0); - break; - case 1: - calcBCD((unsigned char*)&timebox->time.minute, x, 59, 0); - break; - case 2: - calcBCD((unsigned char*)&timebox->time.second, x, 59, 0); - break; - } - } - - draw_block(timebox->left,timebox->top,timebox->width,timebox->height,3,DRAW_ERASE); - timebox_draw(timebox,0); - draw_block(timebox->left+ cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_XOR); - - - if(exit) - break; - - waitFormKeyUpDown(); - } - - if (KEY_Exit) - timebox->time = timeold; - - waitFormKeyUp(); -} - -void listbox_changevalue (LISTBOX* listbox) -{ - if((KEY_Left) && listbox->listindex) - listbox->listindex--; - if((KEY_Right) && listbox->listindex < listbox->listcount - 1) - listbox->listindex++; -} - -void control_onkey(FORM* form, CONTROL* control) { - unsigned short x; - - if (KEY_OK) - { - switch ((control->type) & 0x1F) { - case BC_Label: - case BC_Txtbox: - case BC_Numbox: - case BC_Datebox: - case BC_Timebox: - case BC_Listbox: - if (control->ONclick) - control->ONclick(form,control); - waitFormKeyUp(); - break; - case BC_Button: - x=form->sel; - button_draw((BUTTON*)control,2); - if (control->ONclick) - control->ONclick(form,control); - waitFormKeyUp(); - if(x==form->sel) - x=1; - else - x=0; - button_draw((BUTTON*)control,x); - break; - } - return; - } - switch ((control->type) & 0x1F) { - case BC_Label: - case BC_Button: - break; - case BC_Numbox: - { - NUMBOX* numbox = (NUMBOX*)control; - x=numbox->value; - if(((getKeynum() > 15) && (getKeynum() < 26)) || (KEY_Left) || (KEY_Right)) - numbox_entervalue(numbox); - if((x!=numbox->value) && (numbox->ONchange)) - numbox->ONchange(form,control); - } - break; - case BC_Txtbox: - { - TXTBOX* txtbox = (TXTBOX*)control; - crc oldtext = CRCs(txtbox->text); - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - txtbox_entervalue(txtbox); - if((oldtext != CRCs(txtbox->text)) && (txtbox->ONchange)) - txtbox->ONchange(form,control); - } - break; - case BC_Datebox: - { - DATEBOX* datebox = (DATEBOX*)control; - struct date_ olddate = datebox->date; - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - datebox_entervalue(datebox); - if(memcmp(&olddate,&datebox->date,4) && (datebox->ONchange)) - datebox->ONchange(form,control); - } - break; - case BC_Timebox: - { - TIMEBOX* timebox = (TIMEBOX*)control; - struct time_ oldtime = timebox->time; - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - timebox_entervalue(timebox); - if(memcmp(&oldtime,&timebox->time,4) && (timebox->ONchange)) - timebox->ONchange(form,control); - } - break; - case BC_Listbox: - { - LISTBOX* listbox = (LISTBOX*)control; - unsigned char oldvalue = listbox->listindex; - if(KEY_Left | KEY_Right) - listbox_changevalue((LISTBOX*) control); - if((oldvalue!=listbox->listindex) && (listbox->ONchange)) - listbox->ONchange(form,control); - } - break; - } - control_draw(control,1); -} - -void form_ontimer(unsigned int cb) { - currentform->flags |= BC_Timer_expired; - //currentform->timer(currentform); -} - - - -// displays a form and passes input to form element handlers -void form_exec(FORM* form) { - - unsigned char x; - FORM* oldform; - unsigned int form_cb = 0xff; - - oldform = currentform; - currentform = form; - - if(form->load) - form->load(form); - - if(form->controls[form->sel]->type & BC_NoTabStop) { - x = get_next_control(form); - form->sel = x; - } - - form_draw(form); - - if(form->timer) { - form_cb = addTimerCB(form_ontimer, form->intervall); - startCB(form_cb); - sysInfo |= SYS_NOPDOWN; - } - - while(KEY_Exit) {}; - while((!KEY_Exit) && (!(form->flags & BC_Form_exit))) - { - waitFormKeyUpDown(); - - if(KEY_Up | KEY_Down) { - if(KEY_Up) - x = get_prev_control(form); - else - x = get_next_control(form); - control_draw(form->controls[form->sel],0); - form->sel = x; - control_draw(form->controls[form->sel],1); - } - else - control_onkey(form,form->controls[form->sel]); - } - - if(form_cb != 0xff) { - sysInfo &= ~SYS_NOPDOWN; - stopCB(form_cb); - removeTimerCB(form_cb); - } - - if(form->close) - form->close(form); - - currentform = oldform; - - while(KEY_Exit); -} diff --git a/boop/trunk/gui/controls.h b/boop/trunk/gui/controls.h deleted file mode 100644 index a13a70a..0000000 --- a/boop/trunk/gui/controls.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - controls.h - GUI controls - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef CONTROLS_H -#define CONTROLS_H - -#include "rtc.h" - -#define BC_OKOnly 0 -#define BC_YesNo 1 -#define BC_nobuttons 2 -#define BC_DefaultButton1 0 -#define BC_DefaultButton2 4 -#define BC_DefaultButton3 8 - -#define BC_OK 1 -#define BC_Yes 2 -#define BC_No 3 - -#define BC_NoTabStop 0x80 -#define BC_Disabled 0x40 - -#define BC_Label 1 -#define BC_Labelnotab (BC_Label | BC_NoTabStop) -#define BC_Button 2 -#define BC_Numbox 3 -#define BC_Txtbox 4 -#define BC_Datebox 5 -#define BC_Timebox 6 -#define BC_Listbox 7 - -extern struct FORM dummyform; -extern struct CONTROL dummycontrol; - -typedef void(*event)(struct FORM* form, struct CONTROL* control); -typedef void(*fevent)(struct FORM* form); - -typedef struct CONTROL -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char tag1; - unsigned char tag2; - char* caption; - event ONclick; - event ONchange; -} CONTROL; - -typedef struct FORM -{ - char* caption; - char* footer; - fevent load; - fevent close; - fevent timer; - unsigned long tag; - CONTROL* *controls; - unsigned char sel; - unsigned char controlcount; - unsigned char flags; - unsigned char intervall; -} FORM; - -//form.flags -#define BC_Form_exit (1<<0) -#define BC_Timer_expired (1<<1) -#define BC_Form_redraw (1<<2) - -typedef struct LABEL -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - char* caption; - event ONclick; -} LABEL; - -typedef struct BUTTON -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - char* caption; - event ONclick; -} BUTTON; - -typedef struct NUMBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short value; - unsigned short min; - unsigned short max; - event ONclick; - event ONchange; -} NUMBOX; - -typedef struct TXTBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char maxlen; - unsigned char tag; - char* text; - event ONclick; - event ONchange; -} TXTBOX; - -typedef struct DATEBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - struct date_ date; - event ONclick; - event ONchange; -} DATEBOX; - -typedef struct TIMEBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - struct time_ time; - event ONclick; - event ONchange; -} TIMEBOX; - -typedef struct LISTBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char listindex; - unsigned char listcount; - char* *list; - event ONclick; - event ONchange; -} LISTBOX; - -unsigned char msgbox(unsigned char x,unsigned short flags, char *st); -void form_draw(FORM* form); -void control_draw(CONTROL* control, unsigned char select); -void form_exec(FORM* form); - -void listbox_changevalue (LISTBOX* listbox); - -#endif diff --git a/boop/trunk/gui/iconCross.h b/boop/trunk/gui/iconCross.h deleted file mode 100644 index c93ba16..0000000 --- a/boop/trunk/gui/iconCross.h +++ /dev/null @@ -1,144 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Cross.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconCross.data) == 224 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconCross = -{ - /* width = */ 28, - /* height = */ 28, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x80, - 0xe0, 0xc0, - 0xf0, 0xf0, - 0x38, 0x70, - 0x1c, 0x38, - 0x1c, 0x1c, - 0x0c, 0x0e, - 0x0e, 0x04, - 0x06, 0x0c, - 0x06, 0x06, - 0x06, 0x06, - 0x07, 0xff, - 0x07, 0xff, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x04, - 0x0e, 0x04, - 0x0c, 0x0e, - 0x1c, 0x1c, - 0x1c, 0x38, - 0x38, 0x70, - 0xf0, 0xf0, - 0xe0, 0xc0, - 0xc0, 0x80, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x60, 0x60, - 0xfe, 0xf9, - 0xff, 0xff, - 0x03, 0x65, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0xf0, 0xf8, - 0x6c, 0x94, - 0x62, 0x9e, - 0x62, 0x9d, - 0x61, 0x9f, - 0xff, 0x61, - 0xff, 0x61, - 0x61, 0x9f, - 0x62, 0x9d, - 0x62, 0x9e, - 0x6c, 0x94, - 0xf0, 0xf8, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x03, 0x65, - 0xff, 0xff, - 0xfe, 0xf9, - 0x60, 0x60, - //--- Page 2 --- - 0x00, 0x00, - 0x07, 0x09, - 0x3f, 0x1f, - 0x7c, 0x3a, - 0xf0, 0xf0, - 0xc0, 0xe0, - 0x80, 0xc0, - 0x80, 0x80, - 0x00, 0x01, - 0x03, 0x02, - 0x04, 0x07, - 0x04, 0x0b, - 0x08, 0x0f, - 0x0f, 0xf8, - 0x0f, 0xf8, - 0x08, 0x0f, - 0x04, 0x0b, - 0x04, 0x07, - 0x03, 0x02, - 0x00, 0x01, - 0x80, 0x80, - 0x80, 0xc0, - 0xc0, 0xe0, - 0xf0, 0xf0, - 0x7c, 0x3a, - 0x3f, 0x1f, - 0x07, 0x09, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x00, - 0x03, 0x01, - 0x03, 0x03, - 0x03, 0x07, - 0x07, 0x02, - 0x06, 0x03, - 0x06, 0x06, - 0x06, 0x06, - 0x0e, 0x0f, - 0x0e, 0x0f, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x02, - 0x07, 0x02, - 0x03, 0x07, - 0x03, 0x03, - 0x03, 0x01, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00 - } -}; - - diff --git a/boop/trunk/gui/iconCross_t.h b/boop/trunk/gui/iconCross_t.h deleted file mode 100644 index 18fd07a..0000000 --- a/boop/trunk/gui/iconCross_t.h +++ /dev/null @@ -1,148 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Cross_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconCross_t.data) == 336 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconCross_t = -{ - /* width = */ 28, - /* height = */ 28, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x80, 0xc0, 0xc0, - 0xe0, 0xc0, 0xe0, - 0xf0, 0xf0, 0xf0, - 0x38, 0x70, 0x78, - 0x18, 0x3c, 0x3c, - 0x1c, 0x1c, 0x1c, - 0x0c, 0x0e, 0x0e, - 0x0e, 0x04, 0x0e, - 0x06, 0x0c, 0x0e, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x07, 0xff, 0xff, - 0x07, 0xff, 0xff, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x06, 0x0c, 0x0e, - 0x0e, 0x04, 0x0e, - 0x0c, 0x0e, 0x0e, - 0x1c, 0x1c, 0x1c, - 0x18, 0x3c, 0x3c, - 0x38, 0x70, 0x78, - 0xf0, 0xf0, 0xf0, - 0xe0, 0xc0, 0xe0, - 0x80, 0xc0, 0xc0, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 1 --- - // v--- Alpha Channel - 0x60, 0x60, 0x60, - 0xfe, 0xf9, 0xff, - 0xff, 0xff, 0xff, - 0x03, 0x65, 0x67, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0xf0, 0xf8, 0xf8, - 0x6c, 0x94, 0xfc, - 0x62, 0x9e, 0xfe, - 0x62, 0x9d, 0xff, - 0x61, 0x9f, 0xff, - 0xff, 0x61, 0xff, - 0xff, 0x61, 0xff, - 0x61, 0x9f, 0xff, - 0x62, 0x9d, 0xff, - 0x62, 0x9e, 0xfe, - 0x6c, 0x94, 0xfc, - 0xf0, 0xf8, 0xf8, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x03, 0x65, 0x67, - 0xff, 0xff, 0xff, - 0xfe, 0xf9, 0xff, - 0x60, 0x60, 0x60, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x07, 0x09, 0x0f, - 0x1f, 0x3f, 0x3f, - 0x7c, 0x3a, 0x7e, - 0xf0, 0xf0, 0xf0, - 0xc0, 0xe0, 0xe0, - 0x80, 0xc0, 0xc0, - 0x80, 0x80, 0x80, - 0x00, 0x01, 0x01, - 0x03, 0x02, 0x03, - 0x04, 0x07, 0x07, - 0x04, 0x0b, 0x0f, - 0x08, 0x0f, 0x0f, - 0x0f, 0xf8, 0xff, - 0x0f, 0xf8, 0xff, - 0x08, 0x0f, 0x0f, - 0x04, 0x0b, 0x0f, - 0x04, 0x07, 0x07, - 0x03, 0x02, 0x03, - 0x00, 0x01, 0x01, - 0x80, 0x80, 0x80, - 0x80, 0xc0, 0xc0, - 0xc0, 0xe0, 0xe0, - 0xf0, 0xf0, 0xf0, - 0x7c, 0x3a, 0x7e, - 0x1f, 0x3f, 0x3f, - 0x07, 0x09, 0x0f, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, - 0x01, 0x03, 0x03, - 0x03, 0x03, 0x03, - 0x03, 0x07, 0x07, - 0x07, 0x02, 0x07, - 0x06, 0x03, 0x07, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x0e, 0x0f, 0x0f, - 0x0e, 0x0f, 0x0f, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x06, 0x03, 0x07, - 0x07, 0x02, 0x07, - 0x03, 0x07, 0x07, - 0x03, 0x03, 0x03, - 0x01, 0x03, 0x03, - 0x01, 0x00, 0x01, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 - } -}; - - diff --git a/boop/trunk/gui/iconFf.h b/boop/trunk/gui/iconFf.h deleted file mode 100644 index 3787757..0000000 --- a/boop/trunk/gui/iconFf.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\FF.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconFf.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconFf = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x41, 0xe1, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x43, 0xe0, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x10, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconFr.h b/boop/trunk/gui/iconFr.h deleted file mode 100644 index c022efd..0000000 --- a/boop/trunk/gui/iconFr.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\FR.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconFr.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconFr = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x02, 0x03, - 0x41, 0xe0, - 0xe1, 0xf1, - 0xf1, 0xf9, - 0xf9, 0xf9, - 0x41, 0xe1, - 0xe1, 0xf1, - 0xf1, 0xf9, - 0xf9, 0xf9, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x11, - 0x11, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x10, 0x11, - 0x11, 0x13, - 0x13, 0x13, - 0x18, 0x00, - 0x0c, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconHourglas.h b/boop/trunk/gui/iconHourglas.h deleted file mode 100644 index 6e99e15..0000000 --- a/boop/trunk/gui/iconHourglas.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, 0x11, - 0x3f, 0x1e, - 0x7f, 0x3a, - 0xff, 0x6a, - 0xff, 0xca, - 0xff, 0xca, - 0x3f, 0x0a, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0xff, 0xca, - 0xff, 0xca, - 0xff, 0x6a, - 0x7f, 0x3a, - 0x3f, 0x1e, - 0x0e, 0x11, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x0f, - 0xfe, 0xfd, - 0x70, 0xb8, - 0xe0, 0x70, - 0xc0, 0xa0, - 0x80, 0x50, - 0x30, 0x80, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x08, - 0x70, 0x88, - 0xb0, 0xc8, - 0xd8, 0x64, - 0x78, 0xe4, - 0x36, 0xf8, - 0xfe, 0xfd, - 0xff, 0x0f, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x80, 0x80, - 0xc1, 0xc0, - 0x61, 0xb3, - 0x3f, 0x12, - 0x1c, 0x0f, - 0x07, 0x00, - 0x1d, 0x0e, - 0x3f, 0x12, - 0x63, 0xb5, - 0xc1, 0xe2, - 0x80, 0xc1, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0x0f, - 0x07, 0x0b, - 0x81, 0x03, - 0xc0, 0x01, - 0xc0, 0x20, - 0xe0, 0x10, - 0xf0, 0x00, - 0xf8, 0x00, - 0xf0, 0x00, - 0xe0, 0x10, - 0xc0, 0x20, - 0xc0, 0x01, - 0x81, 0x03, - 0x03, 0x87, - 0x0e, 0x17, - 0xff, 0x1f, - 0xff, 0xf8, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x70, 0x88, - 0xfc, 0x78, - 0xfe, 0x7c, - 0xff, 0x76, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x74, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x76, - 0xfe, 0x7c, - 0xfc, 0x78, - 0x70, 0x88 - } -}; - - diff --git a/boop/trunk/gui/iconHourglas_t.h b/boop/trunk/gui/iconHourglas_t.h deleted file mode 100644 index d46a555..0000000 --- a/boop/trunk/gui/iconHourglas_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconHourglas_t.data) == 420 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x0e, 0x11, 0x1f, - 0x3f, 0x1e, 0x3f, - 0x7f, 0x3a, 0x7f, - 0xff, 0x6a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0x3f, 0x0a, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0x6a, 0xff, - 0x7f, 0x3a, 0x7f, - 0x3f, 0x1e, 0x3f, - 0x0e, 0x11, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x0f, 0xff, - 0xfe, 0xfd, 0xff, - 0x70, 0xb8, 0xff, - 0xe0, 0x70, 0xff, - 0xc0, 0xa0, 0xff, - 0x80, 0x50, 0xff, - 0x30, 0x80, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x08, 0xff, - 0x70, 0x88, 0xff, - 0xb0, 0xc8, 0xff, - 0xd8, 0x64, 0xff, - 0x78, 0xe4, 0xff, - 0x36, 0xf8, 0xff, - 0xfe, 0xfd, 0xff, - 0xff, 0x0f, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x80, 0x80, 0x80, - 0xc1, 0xc0, 0xc1, - 0x61, 0xb3, 0xf3, - 0x3f, 0x12, 0xff, - 0x1c, 0x0f, 0xff, - 0x07, 0x00, 0xff, - 0x1d, 0x0e, 0xff, - 0x3f, 0x12, 0xff, - 0x63, 0xb5, 0xf7, - 0xc1, 0xe2, 0xe3, - 0x80, 0xc1, 0xc1, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xfc, 0xff, - 0xff, 0x0f, 0xff, - 0x07, 0x0b, 0xff, - 0x81, 0x03, 0xff, - 0xc0, 0x01, 0xff, - 0xc0, 0x20, 0xff, - 0xe0, 0x10, 0xff, - 0xf0, 0x00, 0xff, - 0xf8, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xe0, 0x10, 0xff, - 0xc0, 0x20, 0xff, - 0xc0, 0x01, 0xff, - 0x81, 0x03, 0xff, - 0x03, 0x87, 0xff, - 0x0e, 0x17, 0xff, - 0xff, 0x1f, 0xff, - 0xff, 0xf8, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0x70, 0x88, 0xf8, - 0xfc, 0x78, 0xfc, - 0xfe, 0x7c, 0xfe, - 0xff, 0x76, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x76, 0xff, - 0xfe, 0x7c, 0xfe, - 0xfc, 0x78, 0xfc, - 0x70, 0x88, 0xf8 - } -}; - - diff --git a/boop/trunk/gui/iconLeo_gray_128.h b/boop/trunk/gui/iconLeo_gray_128.h deleted file mode 100644 index 858328c..0000000 --- a/boop/trunk/gui/iconLeo_gray_128.h +++ /dev/null @@ -1,1189 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Leo_Gray_128.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconLeo_gray_128.data) == 2304 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconLeo_gray_128 = -{ - /* width = */ 128, - /* height = */ 65, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x38, - 0x78, 0x9c, - 0x64, 0xf2, - 0xc2, 0x80, - 0x02, 0xc3, - 0x02, 0xc3, - 0x02, 0xe3, - 0x02, 0xe3, - 0x02, 0xe3, - 0x02, 0xe2, - 0x02, 0xe0, - 0x02, 0xf0, - 0x02, 0xf4, - 0x02, 0xf4, - 0x04, 0xf2, - 0x04, 0xf6, - 0x04, 0xf6, - 0x04, 0xf6, - 0x04, 0xf2, - 0x10, 0xe4, - 0x10, 0xec, - 0xb8, 0x54, - 0xf8, 0x20, - 0xf0, 0x28, - 0xe0, 0x30, - 0xc0, 0xe0, - 0x00, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0xf7, 0xe8, - 0xff, 0x0f, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0xc0, 0x3f, - 0xe0, 0x1f, - 0xf0, 0x0f, - 0xf8, 0x07, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0xe0, - 0x3f, 0xfe, - 0x03, 0x07, - 0x01, 0x02, - 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0xc0, - 0xff, 0x3f, - 0x01, 0xfe, - 0x00, 0xff, - 0x80, 0x7f, - 0xe0, 0x1f, - 0xfe, 0x01, - 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, 0xfe, - 0x07, 0xfb, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0x00, 0x30, - 0x00, 0x18, - 0x00, 0x88, - 0x00, 0x84, - 0x04, 0x80, - 0x00, 0xc6, - 0x00, 0xc2, - 0x00, 0xe2, - 0x80, 0x62, - 0x82, 0x6c, - 0x06, 0xf8, - 0x84, 0x7e, - 0x84, 0x7e, - 0x8c, 0xf2, - 0x8c, 0xf8, - 0x88, 0xfc, - 0x08, 0xf4, - 0x10, 0xf8, - 0x10, 0xf8, - 0x30, 0xd0, - 0x30, 0xe0, - 0xe0, 0x30, - 0xe0, 0x40, - 0x80, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0x00, 0x20, - 0x00, 0x30, - 0x00, 0x10, - 0x00, 0x18, - 0x00, 0x08, - 0x08, 0x84, - 0xc8, 0x84, - 0xc8, 0x94, - 0xc8, 0xb4, - 0xe8, 0x9c, - 0xc8, 0xb0, - 0xd8, 0xa8, - 0xd8, 0xa8, - 0xf8, 0x88, - 0xf8, 0x10, - 0xf0, 0x10, - 0xf0, 0x10, - 0xf0, 0x30, - 0xe0, 0x30, - 0xe0, 0x30, - 0xe0, 0x60, - 0xc0, 0xe0, - 0xc0, 0xe0, - 0xc0, 0x80, - 0x80, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0x00, - 0xfc, 0x03, - 0xf8, 0x07, - 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, 0x07, - 0xfc, 0x0b, - 0xf8, 0x0c, - 0xe8, 0x1c, - 0x88, 0x7c, - 0x98, 0x68, - 0x98, 0x70, - 0x98, 0x70, - 0xd8, 0x30, - 0xf0, 0x38, - 0xf0, 0x20, - 0xe0, 0x30, - 0xc0, 0xe0, - 0xc0, 0xc0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x30, 0x68, - 0xfe, 0xfc, - 0xe1, 0x1e, - 0xe0, 0x1e, - 0xf0, 0x0f, - 0xf8, 0x07, - 0xfc, 0x03, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x80, - 0xff, 0x44, - 0x7f, 0x4e, - 0x79, 0x4d, - 0x78, 0x4c, - 0x7c, 0x4c, - 0x7e, 0x45, - 0x7f, 0x47, - 0x7e, 0x41, - 0x7e, 0x61, - 0x7e, 0xe1, - 0xff, 0xe0, - 0xff, 0xe0, - 0xff, 0xb0, - 0x3f, 0x30, - 0x1f, 0x3f, - 0x08, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xfb, - 0xe0, 0xf9, - 0xf0, 0xc8, - 0xf0, 0xec, - 0xf8, 0xe4, - 0xf0, 0xff, - 0xfb, 0xfc, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x3f, - 0x0f, 0x07, - 0x07, 0x03, - 0x03, 0x01, - 0xc3, 0xe7, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xfa, - 0xff, 0xfc, - 0xff, 0xfa, - 0xff, 0xfc, - 0xff, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x00, 0x7c, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x02, 0x01, - 0x0f, 0x0f, - 0x0f, 0x0c, - 0x1f, 0x18, - 0x3f, 0x70, - 0x7f, 0x30, - 0x7f, 0x60, - 0xff, 0x60, - 0xff, 0x78, - 0xff, 0xe0, - 0xff, 0x70, - 0xff, 0xf0, - 0xff, 0x70, - 0x7f, 0xe8, - 0x7f, 0xe0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0xff, 0x78, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xe0, - 0x7f, 0xf0, - 0x7f, 0x38, - 0x3f, 0x70, - 0x3f, 0x7e, - 0x3f, 0x9f, - 0x98, 0xc3, - 0xc0, 0x00, - 0x40, 0x00, - 0x00, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x40, - 0x01, 0xc1, - 0x43, 0xa7, - 0xc7, 0x46, - 0xc7, 0x8c, - 0xcf, 0x8c, - 0x8f, 0xcc, - 0x8f, 0xd8, - 0xdf, 0x9c, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x99, - 0xdf, 0x9b, - 0xdf, 0x9f, - 0xde, 0x9f, - 0xde, 0x9f, - 0xdf, 0x9e, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0xdf, - 0xcf, 0x8f, - 0xcf, 0xcf, - 0xcf, 0x86, - 0xc0, 0x46, - 0x40, 0x80, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0xa0, - 0x33, 0xc1, - 0x1f, 0x7f, - 0xdf, 0x2f, - 0xff, 0x0f, - 0xdf, 0x2f, - 0x9f, 0x67, - 0x1f, 0xe7, - 0xff, 0x3f, - 0xff, 0xbf, - 0xff, 0xff, - 0xdf, 0xaf, - 0x1f, 0x9e, - 0x1e, 0x0b, - 0x1f, 0x9e, - 0x1f, 0x9f, - 0x1f, 0x9f, - 0x1f, 0x9f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x8f, 0x1f, - 0x8f, 0x0f, - 0x87, 0x07, - 0x83, 0x03, - 0x81, 0x03, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x00, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x00, - 0x80, 0x80, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x00, 0x80, - 0x00, 0x00, - //--- Page 5 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0xc0, 0x00, - 0x80, 0x40, - 0xc0, 0x00, - 0xc0, 0x00, - 0x80, 0x60, - 0xa0, 0x80, - 0x00, 0xf0, - 0x10, 0xe6, - 0x97, 0x63, - 0xb1, 0x47, - 0xb0, 0x43, - 0xf8, 0x07, - 0xf9, 0xc6, - 0xfe, 0xff, - 0xfe, 0xf9, - 0xf8, 0x17, - 0xf8, 0x07, - 0xfc, 0x03, - 0xfc, 0x03, - 0xfe, 0x00, - 0xff, 0x00, - 0x1e, 0xff, - 0xfd, 0xfc, - 0xf9, 0xff, - 0xff, 0xe1, - 0xff, 0x00, - 0xff, 0x01, - 0xff, 0x00, - 0xff, 0x01, - 0xfb, 0x05, - 0xfb, 0x84, - 0xf9, 0x86, - 0xc1, 0xbe, - 0x01, 0xfe, - 0x03, 0xf8, - 0xff, 0x6f, - 0xff, 0xff, - 0xff, 0xf8, - 0xff, 0xe0, - 0xff, 0x00, - 0xff, 0xa0, - 0xfc, 0xe3, - 0xfc, 0xf2, - 0xf8, 0x86, - 0xf8, 0xc7, - 0xf8, 0xc6, - 0xf8, 0xc6, - 0xfc, 0x82, - 0xfc, 0xc2, - 0xfc, 0x83, - 0x9e, 0xa1, - 0x9e, 0xa3, - 0x0c, 0x92, - 0x00, 0x00, - 0xdb, 0x24, - 0xff, 0x00, - 0xff, 0x00, - 0xfe, 0x01, - 0xff, 0x80, - 0xff, 0xe1, - 0xff, 0xff, - 0xff, 0xff, - 0xfd, 0x73, - 0x3d, 0x71, - 0x3f, 0x39, - 0x3d, 0x7b, - 0x3d, 0x79, - 0x39, 0x3d, - 0x39, 0x3d, - 0x39, 0x3d, - 0x3d, 0x19, - 0x7d, 0x39, - 0x7d, 0x39, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x71, - 0x7d, 0x71, - 0x78, 0x7d, - 0x78, 0x75, - 0x7c, 0x71, - 0x7d, 0x70, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x74, - 0x78, 0x7d, - 0x78, 0x7d, - 0x79, 0x7c, - 0x39, 0x7e, - 0x3d, 0x38, - 0x3f, 0x1f, - 0x1e, 0x1f, - //--- Page 6 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x40, - 0x00, 0x40, - 0x00, 0x40, - 0x00, 0x60, - 0x00, 0x20, - 0x00, 0xb0, - 0xc0, 0x90, - 0x80, 0xd8, - 0xc0, 0xe8, - 0xe0, 0xc0, - 0xf0, 0x40, - 0x70, 0x68, - 0x70, 0x38, - 0x38, 0x34, - 0x38, 0x3c, - 0x1c, 0x3a, - 0x1c, 0x1a, - 0x1d, 0x0e, - 0x0f, 0x0c, - 0x0f, 0x04, - 0x0f, 0x06, - 0x07, 0x0e, - 0x07, 0x02, - 0x07, 0x02, - 0x07, 0x03, - 0x03, 0x07, - 0x03, 0x03, - 0x03, 0x03, - 0x03, 0x01, - 0x03, 0x01, - 0x01, 0x07, - 0x3d, 0x4f, - 0x7d, 0x3f, - 0xff, 0x7d, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xbf, - 0xff, 0xf8, - 0xff, 0xf8, - 0xff, 0xfc, - 0xff, 0xfe, - 0xff, 0xfe, - 0xff, 0x7e, - 0x7c, 0xfe, - 0x7f, 0x3f, - 0x7f, 0x3f, - 0x3f, 0x7f, - 0x3f, 0x3e, - 0x3f, 0x3f, - 0x3f, 0x36, - 0x37, 0x3e, - 0x3f, 0x3f, - 0x3f, 0x3e, - 0x37, 0x1f, - 0x3f, 0x13, - 0x1c, 0x3b, - 0x1e, 0x19, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x1f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x07, - 0x07, 0x0f, - 0x0f, 0x07, - 0x07, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x1f, 0x1f, - 0x1f, 0x37, - 0x3f, 0x2e, - 0x7f, 0x3e, - 0x7f, 0x7f, - 0x3f, 0x7f, - 0x3f, 0x3f, - 0x1f, 0x1f, - 0x0f, 0x07, - 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, - //--- Page 7 --- - 0x10, 0x30, - 0x30, 0x6c, - 0x60, 0xf6, - 0x60, 0xe2, - 0x60, 0xe0, - 0x70, 0xe0, - 0x70, 0xa1, - 0x30, 0xf9, - 0x38, 0x30, - 0x38, 0x18, - 0x1c, 0x38, - 0x1c, 0x1a, - 0x0e, 0x0c, - 0x0e, 0x06, - 0x07, 0x06, - 0x07, 0x03, - 0x03, 0x03, - 0x01, 0x03, - 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, 0x01, - 0x00, 0x01, - 0x01, 0x00, - 0x01, 0x00, - 0x01, 0x01, - 0x01, 0x01, - 0x01, 0x01, - 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, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 8 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 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/boop/trunk/gui/iconPause.h b/boop/trunk/gui/iconPause.h deleted file mode 100644 index 087924c..0000000 --- a/boop/trunk/gui/iconPause.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Pause.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconPause.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconPause = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf9, 0xf9, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf9, 0xf9, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x13, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x13, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconPlay.h b/boop/trunk/gui/iconPlay.h deleted file mode 100644 index 6224718..0000000 --- a/boop/trunk/gui/iconPlay.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Play.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconPlay.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconPlay = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x41, 0xe1, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x10, 0x10, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x10, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconStop.h b/boop/trunk/gui/iconStop.h deleted file mode 100644 index ffaf217..0000000 --- a/boop/trunk/gui/iconStop.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Stop.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconStop.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconStop = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/mainmenu.c b/boop/trunk/gui/mainmenu.c deleted file mode 100644 index 406f7c0..0000000 --- a/boop/trunk/gui/mainmenu.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "menu.h" -#include "testmenu.h" -#include "gamesmenu.h" -#include "settingsmenu.h" -#include "toolsmenu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "global.h" -#include "flash.h" -#ifndef DEBUGMODE - #include "sounds.h" - #include "sound3.h" - #include "sound.h" -#endif -#include "version.h" - -unsigned int testdata1, testdata2; - - -void show_info(void) { - unsigned short flashID; - unsigned short hwID; - flashID = getFlashID(); - draw_hexC (0, 30, flashID, LCD_COLOR_B, DRAW_PUT); - - hwID = GetHWversion(); - draw_hexS (0, 38, hwID, LCD_COLOR_B, DRAW_PUT); - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0,0,"Info", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - draw_string(0,14,"Flash \n" - "Manuf. ID\n" - "Device ID\n" - "\n" - "Betty\n" - "HW Version\n", LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 23, (flashID>>8), LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 32, (flashID&0x00ff), LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 59, (unsigned char)hwID, LCD_COLOR_B, DRAW_PUT); - draw_string (0,77,"Boop", LCD_COLOR_B, DRAW_PUT); -#ifdef RELEASE - draw_numU (65,86,SVNVERSION+1,0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,86,"SVN Release", LCD_COLOR_B, DRAW_PUT); -#else - draw_numU (65,86,SVNVERSION,0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,86,"SVN Revision", LCD_COLOR_B, DRAW_PUT); -#endif - draw_string (0,95,__DATE__, LCD_COLOR_B, DRAW_PUT); - draw_string (0,104,__TIME__, LCD_COLOR_B, DRAW_PUT); - - set_font(SMALLFONT); - - waitKeyUpDown(); -} // show_info - - -void show_credits(void) -{ - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0,0,"Credits", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - draw_string (0,14,"Netguy\tBasics\n" - "Telekatz\tBasics, IR/RF\n" - "Theborg\tFirst Steps, HW\n" - "Colibri\tFlash SW\n" - "Damaltor\tSupport\n" - "Pr0nbug\tFirst Steps\n" - "Asgart\tForum/Wiki\n" - "Spessi\tSurport, HW", LCD_COLOR_B, DRAW_PUT); - - draw_string(0,95,"Und alle Anderen\n" - "die vergessen wurden.", LCD_COLOR_B, DRAW_PUT); - - draw_string(0,120,"Thanks to Max Fleischer\n" - "for a great Cartoon!", LCD_COLOR_B, DRAW_PUT); - set_font(BOLDFONT); - draw_string (8,150,"www.bettyhacks.com", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); -#ifndef DEBUGMODE - playSound((unsigned char*)sound1_data, sound1_len); - waitSound(); - playSound((unsigned char*)sound2_data, sound2_len); - waitSound(); -#endif - waitKeyUpDown(); -} // show_credits - -const struct MENU_ENTRY mainMenuEntries[] = -{ - { 0, (void*)&gamesMenu, MENUENTRY, "Games", "Play some games" }, - { 0, (void*)&testMenu, MENUENTRY, "TestStuff", "Various tests" }, - { enter_settings_menu, 0, FUNCENTRY, "Settings", "Change settings" }, - { 0, (void*)&toolsMenu, MENUENTRY, "Tools", "Tools" }, - { show_credits, 0, FUNCENTRY, "Credits", "Show Credits" }, - { show_info, 0, FUNCENTRY, "Info", "Show Info" } -}; - - -const struct MENU mainMenu = -{ - NUM_OF_ELEMENTS (mainMenuEntries), (MENU_ENTRY*)&mainMenuEntries, "Main Menu" -}; diff --git a/boop/trunk/gui/mainmenu.h b/boop/trunk/gui/mainmenu.h deleted file mode 100644 index d53d3df..0000000 --- a/boop/trunk/gui/mainmenu.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - mainmenu.h - the main menu for boop - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef MAINMENU_H -#define MAINMENU_H - -extern struct MENU mainMenu; - -#endif diff --git a/boop/trunk/gui/menu.c b/boop/trunk/gui/menu.c deleted file mode 100644 index 7e5a484..0000000 --- a/boop/trunk/gui/menu.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - menu.c - menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "global.h" -#include "menu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "lpc2220.h" - -//----------------------------------------------------------------------------- -#if FF_LARGE_MENU -#define MENU_FONT SMOOTHFONT -#define MENU_LINE_HEIGHT (SMOOTHFONT_HEIGHT+2) -#else -#define MENU_FONT SMALLFONT -#define MENU_LINE_HEIGHT SMALLFONT_HEIGHT+1 -#endif - -#define MENU_HEAD_LINE_HEIGHT (BOLDFONT_HEIGHT+2+2+2) -#define MENU_LINE_WIDTH (LCD_SIZE_X - 10) -#define MENU_BOTTOM_LINE_HEIGHT (SMALLFONT_HEIGHT+5) - -#define MENU_ARROW_SIZE (min(MENU_LINE_HEIGHT-6, (LCD_SIZE_X-MENU_LINE_WIDTH-1)/2+1)) - -#define MENU_START_Y MENU_HEAD_LINE_HEIGHT -#define MENU_LIST_LEN ((LCD_SIZE_Y - MENU_HEAD_LINE_HEIGHT - MENU_BOTTOM_LINE_HEIGHT) / MENU_LINE_HEIGHT) - -#define MENU_SCROLLBAR_HEIGHT (MENU_LINE_HEIGHT*MENU_LIST_LEN-10-10-3) // [px] -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -int menu_execentry(struct MENU_ENTRY *entry) -{ - unsigned int *val; - struct MENU *m; - - draw_block (0, 100, LCD_SIZE_X, 8, LCD_COLOR_B, DRAW_ERASE); - switch(entry->type) - { - case INTENTRY: - val = (unsigned int*)entry->data; - draw_block (0, 50, LCD_SIZE_X, 8, LCD_COLOR_B, DRAW_ERASE); - draw_hexW (0, 50, *val, LCD_COLOR_B, DRAW_PUT); - break; - case FUNCENTRY: - entry->exec(); - return 1; - break; - case MENUENTRY: - m = (MENU*)entry->data; - if(m->num_entries != 0) - { - menu_exec((MENU*)entry->data); - return 1; - } - break; - default: - break; - } - return 0; -} // menu_execentry -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void menu_exec(struct MENU *menu) -{ - unsigned char total; // entries in menu - unsigned char csel; // selected entry - - unsigned char moff; // first entry displayed - unsigned char moffold; // only used to detect change - - unsigned char set; // iterator for visible entries - - csel = 0; - moff = 0; - -again: - lcd_fill(0); - - //----------------------------------------- - // Menu head line - set_font(BOLDFONT); - draw_string (0, 0, (char*)menu->name, LCD_COLOR_B, DRAW_PUT); - draw_block (0, BOLDFONT_HEIGHT+2, LCD_SIZE_X, 2, LCD_COLOR_B, DRAW_PUT); - // Menu bottom line - draw_block (0, LCD_SIZE_Y-SMALLFONT_HEIGHT-3, LCD_SIZE_X, 2, LCD_COLOR_B, DRAW_PUT); - //----------------------------------------- - - total = menu->num_entries; - moffold = total; - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - // draw list: initially or when selection is on next 'page' and all entries 'move' - if (moff!=moffold) - { - // menu list - set_font (MENU_FONT); - draw_block (0, MENU_START_Y, LCD_SIZE_X, MENU_LINE_HEIGHT*MENU_LIST_LEN, LCD_COLOR_B, DRAW_ERASE); - for (set=moff; (setentry [set].name, LCD_COLOR_B, DRAW_PUT); - } - // scroll arrows - if (moff) // not the first page - { - draw_arrow (MENU_LINE_WIDTH+1, MENU_START_Y+3, - ARROW_UP, MENU_ARROW_SIZE, LCD_COLOR_B, DRAW_PUT); - } - if (total > moff+MENU_LIST_LEN) // not the last page - { - draw_arrow (MENU_LINE_WIDTH+1, MENU_LINE_HEIGHT*MENU_LIST_LEN+7, - ARROW_DOWN, MENU_ARROW_SIZE, LCD_COLOR_B, DRAW_PUT); - } - // scroll handle - if (total > MENU_LIST_LEN) - { - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_PUT); - } - // select entry (invert) - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - } - moffold = moff; - - //----------------------------------------- - // Menu bottom line - set_font (SMALLFONT); - draw_block ( 0, LCD_SIZE_Y-SMALLFONT_HEIGHT, LCD_SIZE_X, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_ERASE); - - // entry number - draw_char (0, LCD_SIZE_Y-SMALLFONT_HEIGHT, '0' + (csel+1)/10, LCD_COLOR_B, DRAW_PUT); - draw_char (6, LCD_SIZE_Y-SMALLFONT_HEIGHT, '0' + (csel+1)%10, LCD_COLOR_B, DRAW_PUT); - - // entry help text - draw_string (16, LCD_SIZE_Y-SMALLFONT_HEIGHT, (char*)menu->entry [csel].help, LCD_COLOR_B, DRAW_PUT); - //----------------------------------------- - - // wait for key press - waitKeyUpDown(); - - // deselect current entry - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - - // clear scroll handle - if (total > MENU_LIST_LEN) - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_XOR); - - if(KEY_OK) - { - if(menu_execentry((MENU_ENTRY*)&menu->entry[csel])) - goto again; - } - if(KEY_Up) - { - csel--; - if(csel= total) - { - if (total > MENU_LIST_LEN) - moff = total - MENU_LIST_LEN; - csel = total-1; - } - } - if(KEY_Down) - { - csel++; - if (csel == MENU_LIST_LEN+moff) - moff++; - if (csel == total) - { - moff = 0; - csel = 0; - } - } - if(KEY_Left) - { - csel = 0; - moff = 0; - } - if(KEY_Right) - { - csel = total -1; - if (total > MENU_LIST_LEN) - moff = total - MENU_LIST_LEN; - } - unsigned char num = getKeynum(); - if (num >= 16 && num <= 25) - { - csel = num - 16; - if (csel >= total) - csel = total-1; - if(csel < moff) - moff = csel; - if (csel >= MENU_LIST_LEN-moff) - moff = csel - MENU_LIST_LEN+1; - if(menu_execentry((MENU_ENTRY*)&menu->entry[csel])) - goto again; - } - - // select new entry (invert) - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - - // scroll handle moved - if (total > MENU_LIST_LEN) - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_PUT); - } // while (!KEY_Exit) -} // menu_exec -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void init_menu(void) -{ -} -//----------------------------------------------------------------------------- - diff --git a/boop/trunk/gui/menu.h b/boop/trunk/gui/menu.h deleted file mode 100644 index 30f04b6..0000000 --- a/boop/trunk/gui/menu.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - menu.h - menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef MENU_H -#define MENU_H - -#define NONE 0 -#define INTENTRY 1 -#define FUNCENTRY 2 -#define MENUENTRY 3 - -typedef void(*menu_fn)(void); - -typedef struct MENU_ENTRY -{ - menu_fn exec; - void *data; - unsigned char type; - char *name; - char *help; -} MENU_ENTRY; - -typedef struct MENU -{ - unsigned int num_entries; - struct MENU_ENTRY *entry; - char *name; -} MENU; - -void init_menu(void); - -void menu_exec(struct MENU *menu); -int menu_execentry(struct MENU_ENTRY *entry); - -#endif diff --git a/boop/trunk/gui/settingsmenu.c b/boop/trunk/gui/settingsmenu.c deleted file mode 100644 index 5f3f469..0000000 --- a/boop/trunk/gui/settingsmenu.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - settingsmenue.c - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "menu.h" -#include "settingsmenu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "rtc.h" -#include "ir_selector.h" -#include "backlight.h" -#include "bfs.h" -#include "rf.h" -#include "ir_capture.h" -#include "controls.h" -#include "global.h" - -extern volatile unsigned char bl_val; -extern unsigned int bl_timeout; -extern unsigned char bl_max; -extern unsigned char bl_speed; -unsigned char lcd_contrast; - -const struct MENU_ENTRY settingsMenuEntries[] = -{ - { change_clock, 0, FUNCENTRY, "Clock", "set time/date" }, - { RC_setting, 0, FUNCENTRY, "RC keys", "assign RC keys" }, - { display_setting, 0, FUNCENTRY, "Display", "backlight, contrast" }, - { RF_setting, 0, FUNCENTRY, "RF", "ID, channel" }, - { RAW_learnmenue, 0, FUNCENTRY, "IR learn", "Learn IR commands" }, -}; - -const struct MENU settingsMenu = -{ - 5, (MENU_ENTRY*)&settingsMenuEntries, "Settings" -}; - -const struct settings_ default_settings = -{ - 0x02, // version change this when modifying the struct - 63, // bl_max hardware limit of LCD controller - LCD_CONTRAST, - 2, // bl_speed; - 1000 // bl_timeout -}; - -// change handlers - -void brightness_onchange(FORM* form, CONTROL* control) { - bl_max=((NUMBOX*)control)->value; - setBacklight(bl_max); -} - -void timeout_onchange(FORM* form, CONTROL* control) { - bl_timeout=((NUMBOX*)control)->value * 200; - setBacklight(bl_max); -} - -void contrast_onchange(FORM* form, CONTROL* control) -{ - lcd_contrast = ((NUMBOX*)control)->value; - //~ lcd_set_contrast(0x3A); - lcd_set_contrast(lcd_contrast); -} - -void speed_onchange(FORM* form, CONTROL* control) -{ - bl_speed=((NUMBOX*)control)->value; - //~ setBLSpeed(bl_speed); -} - -// the submenus - -void display_setting(void) { - - const LABEL label1 = {BC_Labelnotab, 0,15,100,10,BOLDFONT,0,"Brightness",0}; - NUMBOX numbox1 = {BC_Numbox, 0,25, 13, 9,SMALLFONT,bl_val,0,63,brightness_onchange,NULL}; - const LABEL label2 = {BC_Labelnotab, 0,37,100,10,BOLDFONT,0,"Contrast",0}; - NUMBOX numbox2 = {BC_Numbox, 0,47, 19, 9,SMALLFONT,lcd_contrast,0,63,contrast_onchange,NULL}; - const LABEL label3 = {BC_Labelnotab, 0,59,100,10,BOLDFONT,0,"Backlight timeout",0}; - NUMBOX numbox3 = {BC_Numbox, 0,69, 19, 9,SMALLFONT,bl_timeout/200,1,200,timeout_onchange,NULL}; - const LABEL label4 = {BC_Labelnotab, 0,81,100,10,BOLDFONT,0,"Backlight fade time",0}; - NUMBOX numbox4 = {BC_Numbox, 0,91, 19, 9,SMALLFONT,bl_speed,1,6,speed_onchange,NULL}; - - CONTROL* controls[8] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&label4, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2, - (CONTROL*)&numbox3, - (CONTROL*)&numbox4}; - - FORM form = {"Display settings"," ",0,0,0,0,controls,4,8,0,0}; - form_exec(&form); // controls.c - - // grayscale staircase test pattern for calibration - // form_exec->form_draw clears the screen - // either add this as a control or - // clear screen manually before form_exec - //~ draw_block ( 0, 80, 20, 20, LCD_COLOR_B, DRAW_PUT); - //~ draw_block (21, 80, 20, 20, LCD_COLOR_DG, DRAW_PUT); - //~ draw_block (42, 80, 20, 20, LCD_COLOR_LG, DRAW_PUT); -} - -void RF_setting(void) { - struct RFsettings_ RFsettings; - - BFS_LoadFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - - const LABEL label1 = {BC_Labelnotab, 0,15,100,10,BOLDFONT,0,"Device address",0}; - NUMBOX numbox1 = {BC_Numbox, 0,25, 19, 9,SMALLFONT,RFsettings.address,1,127,NULL,NULL}; - const LABEL label2 = {BC_Labelnotab, 0,37,100,10,BOLDFONT,0,"Channel",0}; - NUMBOX numbox2 = {BC_Numbox, 0,47, 19, 9,SMALLFONT,RFsettings.channel,0,255,NULL,NULL}; - - CONTROL* controls[4] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2}; - - FORM form = {"RF settings"," ",0,0,0,0,controls,2,4,0,0}; - - form_exec(&form); - - RFsettings.address = numbox1.value; - RFsettings.channel = numbox2.value; - - BFS_SaveFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - load_RF_setting(); -} - -// learned remotes -void load_RC_setting(void) { - - if(BFS_LoadFile(BFS_ID_remotes, sizeof(struct irDeviceTable_), (unsigned char*) &irDevTab) != sizeof(struct irDeviceTable_)) { - irDevTab = default_irDevTab; - BFS_SaveFile(BFS_ID_remotes, sizeof(struct irDeviceTable_), (unsigned char*) &irDevTab); - draw_string(0, 30, "default RC load", 3, DRAW_PUT); - } -} - -// load values stored in flash to ram -// called by main() for init -void load_setting(void) { - struct settings_ settings; - - BFS_LoadFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); - - // if neccessary, use hard-coded defaults - if(settings.version != default_settings.version) - { - settings = default_settings; - BFS_SaveFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); - draw_string(0, 40, "default settings load", 3, DRAW_PUT); - } - // backlight // TODO: see void initBacklight(void) in backlight.c) - bl_timeout = settings.bl_timeout; - bl_max = settings.bl_max; - setBacklight(bl_max); - bl_speed = settings.bl_speed; - - // LCD contrast - lcd_contrast = settings.lcd_contrast ; - lcd_set_contrast(lcd_contrast); -} - -// called by the parent menu -void enter_settings_menu(void) { - struct settings_ settings; - - // run menu - menu_exec((struct MENU *)&settingsMenu); - - // save changes - settings = default_settings; - settings.bl_timeout = bl_timeout; - settings.bl_max = bl_max; - settings.lcd_contrast = lcd_contrast; - settings.bl_speed = bl_speed; - BFS_SaveFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); -} diff --git a/boop/trunk/gui/settingsmenu.h b/boop/trunk/gui/settingsmenu.h deleted file mode 100644 index fde3564..0000000 --- a/boop/trunk/gui/settingsmenu.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - settingsmenue.h - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef SETTINGSMENU_H -#define SETTINGSMENU_H - -extern const struct MENU settingsMenu; - -struct settings_ { - unsigned char version; - unsigned char bl_max; - unsigned char lcd_contrast; - unsigned char bl_speed; - unsigned int bl_timeout; -}; - -void RF_setting(void); -void display_setting(void); -void load_RC_setting(void); -void load_setting(void); -void enter_settings_menu(void); - -#endif diff --git a/boop/trunk/gui/testmenu.c b/boop/trunk/gui/testmenu.c deleted file mode 100644 index 792d712..0000000 --- a/boop/trunk/gui/testmenu.c +++ /dev/null @@ -1,1247 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "menu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "backlight.h" -#include "adc.h" -#include "rf.h" -#include "flash.h" -#include "ir_raw.h" -#include "ir_capture.h" -#include "ir_selector.h" -#include "infrared.h" -#include "sid.h" -#include "timerfuncs.h" -#include "sound.h" -#include "lpc2220.h" -#include "controls.h" -#include "global.h" -#include "cc1100.h" -#include "rf.h" -#include "irq.h" -#include "serial.h" -#include "rtctimer.h" - -#include "icon.h" -#include "iconLeo_gray_128.h" - -#define TRANSPARENT_CROSS 1 // 0/1 -#if TRANSPARENT_CROSS -# include "iconCross_t.h" -# define ICON_CROSS iconCross_t -#else -# include "iconCross.h" -# define ICON_CROSS iconCross -#endif - -#include "iconHourglas.h" -#include "iconHourglas_t.h" - -//#include "sidfiles.h" - -extern volatile unsigned char bat_state; - -unsigned int testdata1, testdata2; - -#define MAX_SOFTMENU 16 - -void test_circle(void) -{ - lcd_fill (LCD_COLOR_W); - draw_disc (20, 20, 18, LCD_COLOR_B, DRAW_PUT); - draw_disc (20, 20, 14, LCD_COLOR_B, DRAW_XOR); - - draw_qdisc (60, 20, 18, 0, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 40, 18, 1, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 60, 18, 2, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 80, 18, 3, LCD_COLOR_B, DRAW_PUT); - - draw_qcircle (100, 20, 18, 0, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 40, 18, 1, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 60, 18, 2, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 80, 18, 3, LCD_COLOR_B, DRAW_PUT); - - - draw_circle (30,120,20, LCD_COLOR_B, DRAW_PUT); - - waitKeyUpDown(); -} - -void test_movearound(void) -{ - int xpos=0; - int ypos=0; - int oldx=0; - int oldy=0; - - lcd_fill (LCD_COLOR_W); - draw_disc (xpos+5, ypos+5, 5, LCD_COLOR_B, DRAW_PUT); - while (!KEY_Exit) - { - waitKeyUpDown(); - oldx=xpos; - oldy=ypos; - if (KEY_Up) - ypos -= 3; - if (KEY_Down) - ypos += 3; - if (KEY_Left) - xpos -= 3; - if (KEY_Right) - xpos += 3; - - if (xpos > 117) - xpos = 117; - if (xpos < 0) - xpos = 0; - if (ypos > 149) - ypos = 149; - if (ypos < 0) - ypos = 0; - - draw_disc (oldx+5, oldy+5, 5, LCD_COLOR_B, DRAW_ERASE); - draw_disc (xpos+5, ypos+5, 5, LCD_COLOR_B, DRAW_PUT); - } -} - - -void test_frame(void) -{ - lcd_fill (LCD_COLOR_W); - - draw_frame (0,0,40,40,4,0, LCD_COLOR_B, DRAW_PUT); - draw_frame (42,0,40,40,3,16, LCD_COLOR_B, DRAW_PUT); - draw_frame (84,0,40,40,7,3, LCD_COLOR_B, DRAW_PUT); - - - draw_frame (0,42,40,40,4,7, LCD_COLOR_B, DRAW_PUT); - draw_frame (42,42,40,40,4,8, LCD_COLOR_B, DRAW_PUT); - draw_frame (84,42,40,40,1,7, LCD_COLOR_B, DRAW_PUT); - - waitKeyUpDown(); -} - -void test_frame2(void) -{ - - unsigned char t, r; - t = 1; - r = 0; -again: - lcd_fill (LCD_COLOR_W); - - draw_string(0, 152, "t:", LCD_COLOR_B, DRAW_PUT); - draw_numU(12,152,t,0,LCD_COLOR_B,DRAW_PUT); - draw_string(64, 152, "r:", LCD_COLOR_B, DRAW_PUT); - draw_numU(76,152,r,0,LCD_COLOR_B,DRAW_PUT); - - draw_frame (0,0,LCD_SIZE_X,128,t,r, LCD_COLOR_B, DRAW_PUT); - - while(!KEY_Exit) - { - waitKeyUpDown(); - if(KEY_Vplus) - { - t++; - if(t>64) - t = 1; - goto again; - } - if(KEY_Vminus) - { - if(t==1) - t = 64; - else - t--; - goto again; - } - if(KEY_Pplus) - { - r++; - if(r>63) - r = 0; - goto again; - } - if(KEY_Pminus) - { - if(r==0) - r = 63; - else - r--; - goto again; - } - } -} - -#define DRAW_FONTS_LINESPACE 1 -#define DRAW_FONTS_XSTART 15 -void draw_fonts () -{ - unsigned short y = 10; - unsigned short h; - - lcd_fill (LCD_COLOR_W); -#if 0 - set_font (SMOOTHFONT); - draw_string (0, y, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (15, y+1, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (30, y+2, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (45, y+3, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (60, y+5, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (75, y+6, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (90, y+7, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (105, y+8, "ÜJ", LCD_COLOR_B, DRAW_PUT); - y += 8; - y += SMOOTHFONT_HEIGHT + DRAW_FONTS_LINESPACE; -#endif - - set_font (SMALLFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(SMALLFONT); - draw_string (DRAW_FONTS_XSTART, y, "Small Font", LCD_COLOR_B, DRAW_PUT); - y += SMALLFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (DOUBLEFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, DOUBLEFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(DOUBLEFONT); - draw_string (DRAW_FONTS_XSTART, y, "Double Font", LCD_COLOR_B, DRAW_PUT); - y += DOUBLEFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font(BOLDFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, BOLDFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (BOLDFONT); - draw_string (DRAW_FONTS_XSTART, y, "Bold Font", LCD_COLOR_B, DRAW_PUT); - y += BOLDFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (BOLDDOUBLEFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, BOLDDOUBLEFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(BOLDDOUBLEFONT); - draw_string (DRAW_FONTS_XSTART, y, "B.Double", LCD_COLOR_B, DRAW_PUT); - y += BOLDDOUBLEFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (SMALLFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y+1, DRAW_FONTS_XSTART-1, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (SMALLFONT); - draw_string (DRAW_FONTS_XSTART+1, y + 1, "Invers Small Font", LCD_COLOR_B, DRAW_PUT); - draw_block (DRAW_FONTS_XSTART, y, LCD_SIZE_X, SMALLFONT_HEIGHT+2, LCD_COLOR_B, DRAW_XOR); - y += SMALLFONT_HEIGHT + 2 + DRAW_FONTS_LINESPACE; - - set_font (SMOOTHFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, SMOOTHFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(SMOOTHFONT); - draw_string (DRAW_FONTS_XSTART, y, "Smooth Font", LCD_COLOR_B, DRAW_PUT); - y += SMOOTHFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (SMOOTHFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y+1, DRAW_FONTS_XSTART-1, SMOOTHFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+2, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (SMOOTHFONT); - draw_string (DRAW_FONTS_XSTART+1, y + 1, "Invers Smooth", LCD_COLOR_B, DRAW_PUT); - draw_block (DRAW_FONTS_XSTART, y, LCD_SIZE_X, SMOOTHFONT_HEIGHT+2, LCD_COLOR_B, DRAW_XOR); - y += SMOOTHFONT_HEIGHT + 2 + DRAW_FONTS_LINESPACE; - - set_font(BOLDFONT); - waitKeyUpDown(); -} - -void test_logo(void) -{ - lcd_fill (LCD_COLOR_W); - draw_logo(); - waitKeyUpDown(); -} - - - -//----------------------------------------------------------------------------- -#undef ICON_INFO -#define ICON_INFO(i) - -#undef ICON_INFO_ELEMENT -#define ICON_INFO_ELEMENT - -#undef ICON -#define ICON iconElement_t - -#include "iconFr.h" -#include "iconPlay.h" -#include "iconPause.h" -#include "iconStop.h" -#include "iconFf.h" - -static const ICON* const iconList [] = -{ - &iconFr, - &iconPlay, - &iconPause, - &iconStop, - &iconFf -}; - -//----------------------------------------------------------------------------- -#define HOURGLAS_CENTER 120 -void test_DrawIcon (int x, int y, int h, int w) -{ - int i; - int ix; - - lcd_fill (LCD_COLOR_W); - - draw_block (LCD_SIZE_X / 2, LCD_SIZE_Y / 2, - 32, HOURGLAS_CENTER - LCD_SIZE_Y / 2 + 2, - LCD_COLOR_LG, DRAW_NORCU); - draw_block (LCD_SIZE_X / 2, HOURGLAS_CENTER, - 32, LCD_SIZE_Y - HOURGLAS_CENTER, LCD_COLOR_DG, DRAW_NORCU); - - drawIcon (0, 10, &iconLeo_gray_128, LCD_COLOR_B, DRAW_PUT); - - drawIcon (LCD_SIZE_X / 2 - iconHourglas.width / 2, HOURGLAS_CENTER - iconHourglas.height / 2, - &iconHourglas, LCD_COLOR_B, DRAW_PUT); - drawIcon (LCD_SIZE_X / 2 + 32 - iconHourglas_t.width / 2, HOURGLAS_CENTER - iconHourglas.height / 2, - &iconHourglas_t, LCD_COLOR_B, DRAW_ALPHA); - -#if TRANSPARENT_CROSS - drawIcon (x, y, &ICON_CROSS, LCD_COLOR_B, DRAW_ALPHA); -#else - drawIcon (x, y, &ICON_CROSS, LCD_COLOR_B, DRAW_PUT); -#endif - - //------------------------------------------------------- - ix = w; - for (i = 0; i < NUM_OF_ELEMENTS (iconList); i++) - { - drawIconExt (ix, LCD_SIZE_Y-1 - h, - iconList [i]->data, - iconList [i]->width, iconList [i]->height, ICON_GRAY, - LCD_COLOR_B, DRAW_NORCU); - ix += w + iconList [i]->width; - } - //------------------------------------------------------- - draw_numU (0, 0, - x, 0, LCD_COLOR_B, DRAW_NORCU); - draw_numU (30, 0, - y, 0, LCD_COLOR_B, DRAW_NORCU); -} // test_DrawIcon -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void test_icon () -{ - int i; - int x, y; - int w = 0; - int h = 0; - - set_font (SMALLFONT); - - x = LCD_SIZE_X / 2 - ICON_CROSS.width / 2; - y = LCD_SIZE_Y / 2 - ICON_CROSS.height / 2; - - for (i = 0; i < NUM_OF_ELEMENTS (iconList); i++) - { - w += iconList [i]->width; - h = max (h, iconList [i]->height); - } - w = LCD_SIZE_X - w; - w /= NUM_OF_ELEMENTS (iconList) + 1; - - test_DrawIcon (x, y, h, w); - - //waitKeyUpDown (); - - setBacklight (BL_AUTO); - while (KEY_Exit) {}; - waitKeyUp (); - while (1) - { - if (isKeyPressed ()) - { - setBacklight (BL_AUTO); // pwm value - if (KEY_Exit) - return; - //--------------------------------------- - - if (KEY_Up) - y--; - else if (KEY_Down) - y++; - else if (KEY_Left) - x--; - else if (KEY_Right) - x++; - else if (KEY_OK) - { - x += 10; - y -= 10; - } - else - { - unsigned char num = getKeynum (); - if (num >= 16 && num <= 25) - { - if (num == 25) - num = 0; - else - num -= 15; - - x += num; - y -= num; - } - } - - if (x >= LCD_SIZE_X) - x = 0; - else if (x < 0) - x = LCD_SIZE_X-1 - ICON_CROSS.width; - - if (y >= LCD_SIZE_Y) - y = 0; - else if (y < 0) - y = LCD_SIZE_Y-1 - ICON_CROSS.height; - - test_DrawIcon (x, y, h, w); - - //--------------------------------------- - waitKeyUp (); - } // if (isKeyPressed ()) - } // while (1) -} // test_icon -//----------------------------------------------------------------------------- - - - -void fp1 () -{ - unsigned char x,y; - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - - for(x=0;x<16;x++) - { - for(y=0;y<16;y++) - { - draw_char (x*8, (y*8)+16,x*16+y, LCD_COLOR_B, DRAW_PUT); - } - } - waitKeyUpDown(); -} - -extern volatile unsigned char bl_val; - -void set_bl(void) -{ - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - - draw_string (0, 20, "Set Backlight:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 30, "Prog/Vol+: brighter", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 40, "Prog/Vol-: darker", LCD_COLOR_B, DRAW_PUT); - draw_numU (0, 64, bl_val, 0, LCD_COLOR_B, DRAW_PUT); - - while(!KEY_Exit) - { - waitKeyUpDown(); - bl_val &= 0x3F; - if(KEY_Pplus || KEY_Pminus || KEY_Vplus || KEY_Vminus) - { - draw_block(0,64,32,8,3,DRAW_ERASE); - if(KEY_Pplus) - bl_val++; - if(KEY_Pminus) - bl_val--; - if(KEY_Vplus) - bl_val+=10; - if(KEY_Vminus) - bl_val-=10; - draw_numU (0, 64, bl_val, 0, LCD_COLOR_B, DRAW_PUT); - } - } - -} - -/* -void softfunc1(void) -{ - set_font(BOLDFONT); -draw_block (0, 80, LCD_SIZE_X, 20, LCD_COLOR_B, DRAW_ERASE); -draw_string (0, 80, "softfunc1 called", LCD_COLOR_B, DRAW_PUT); -while(!KEY_Exit) {}; -} -*/ - -void draw_itile(unsigned char x, unsigned char y, unsigned char type) -{ -again: - if(type < 0xF0) - { - if(type & 0x10) - draw_block(x+1, y+1, 2, 2, 3, DRAW_XOR); - if(type & 0x20) - draw_block(x+5, y+1, 2, 2, 3, DRAW_XOR); - if(type & 0x40) - draw_block(x+1, y+5, 2, 2, 3, DRAW_XOR); - if(type & 0x80) - draw_block(x+5, y+5, 2, 2, 3, DRAW_XOR); - } - - type <<= 4; - - if(type) - { - x += 8; - goto again; - } -} - -const char itilemap[7][7] = -{ - { 0x00, 0x00, 0x00, 0x6C, 0x90, 0x00, 0x00 }, - { 0x00, 0x00, 0x66, 0x6C, 0x99, 0x90, 0x00 }, - { 0x00, 0x06, 0x66, 0x6C, 0x99, 0x99, 0x00 }, - { 0x00, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x90 }, - { 0x00, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x90 }, - { 0x06, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x99 }, - { 0x0A, 0xAA, 0xAA, 0xA0, 0x55, 0x55, 0x55 } -}; - -void illusion(void) -{ - int x,y,z; - - lcd_fill (LCD_COLOR_W); - z = 1; - for(x=0;x<15;x++) - { - for(y=0;y<15;y++) - { - if(z++ & 0x01) - { - draw_block (2+ (x*8), 16+ (y*8), 8, 8, LCD_COLOR_B, DRAW_PUT); - } - } - } - - for(y=0;y<7;y++) - { - for(x=0;x<7;x++) - { - draw_itile(2+(x*16), 24+(y*8), itilemap[y][x]); - } - } - - for(y=0;y<6;y++) - { - for(x=0;x<7;x++) - { - draw_itile(2+(x*16), 80+(y*8), ~itilemap[5-y][x]); - } - } - - - waitKeyUpDown(); -} - -void test_bl(void) -{ - setBacklight(BL_AUTO); -} - -void bat_dbg(void) -{ - bat_state ^= BAT_DEBUG; -} - -void tkey(void) -{ - while(1) - { - waitKeyUpDown(); - setBacklight(BL_AUTO); - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - draw_hexW (0, 16, keys[0], LCD_COLOR_B, DRAW_PUT); - draw_hexW (0, 24, keys[1], LCD_COLOR_B, DRAW_PUT); - } -} - -// plot a graph RSSI/t -void RSSI_monitor(void) { - unsigned char row = 0; - int rssi_dBm; - unsigned char rssi; - volatile unsigned long timer = 0; - unsigned char x; - lcd_fill (LCD_COLOR_W); - - // title - set_font(BOLDFONT); - draw_string (0, 0, "RF test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RF_changestate(RFrx); - - // coordinate system - // x (time) - draw_block (19,20,102,1, LCD_COLOR_B, DRAW_PUT); - - // y (RSSI) - draw_block (19,20,1,129, LCD_COLOR_B, DRAW_PUT); // axis - for(x=20;x<150;x+=10) // ticks - draw_pixel (18,x, LCD_COLOR_B, DRAW_PUT); - for(x=20;x<160;x+=20) // value - draw_numU (0, x-3, x-20, 0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,152, "-dBm", LCD_COLOR_B, DRAW_PUT); // label - - - while(KEY_Exit) {}; - while (!KEY_Exit) - { - // wait - while (timer) - { - if(KEY_Exit) - timer = 0; - } - addTimeout(&timer,20); // next sample in n*5 ms (100 ms) - - // read RSSI - VICIntEnClr = INT_EINT0; - rssi = cc1100_read1(RSSI); - VICIntEnable = INT_EINT0; - - // scale - if(rssi & 0x80) - rssi_dBm = (rssi-256)/2-75; - else - rssi_dBm = rssi/2-75; - - if(rssi_dBm < 0) - rssi_dBm = ~rssi_dBm + 1; - else - rssi_dBm = 0; - - // plot - draw_block (row+20,21,1,128, LCD_COLOR_B, DRAW_ERASE); - draw_pixel(row+20, rssi_dBm+30, LCD_COLOR_B, DRAW_PUT); - draw_pixel (row+20,19, LCD_COLOR_B,DRAW_ERASE); - - // next time - row++; - if(row == 100) - row=0; - draw_pixel (row+20, 19, LCD_COLOR_B, DRAW_PUT); - //draw_block (row+20,30,1,100, LCD_COLOR_B, DRAW_PUT); - } - removeTimeout(&timer); - RF_changestate(RFwor); -} - - -// plot incoming radio data in single shot mode -// CC1100 datasheet section 31.1 Asynchronous Operation, p. 57 -// 1 px is 50 ys -void RF_viewer(void) { - unsigned char row = 0; - unsigned char col = 16; - - lcd_fill (LCD_COLOR_W); - set_font(BOLDFONT); - draw_string (0, 0, "RF viewer", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RFasyncmode(true); - - //cc1100_write1(FREQ2,0x20); - //cc1100_write1(FREQ1,0x29); - //cc1100_write1(FREQ0,0x3E); - - //cc1100_write1(AGCCTRL2,0x07); - //cc1100_write1(AGCCTRL1,0x00); - //cc1100_write1(AGCCTRL0,0x91); - //~ cc1100_write1(AGCCTRL2,0x03); - //~ cc1100_write1(AGCCTRL1,0x00); - //~ cc1100_write1(AGCCTRL0,0x92); - -//~ #define RF2UART - -#ifdef RF2UART - unsigned char bits=0; - unsigned char bitno=7; - - // set uart baudrate - serial_setbrg(230400); // fastest - - // set frequency - //~ cc1100_write1(FREQ2,0x10); - //~ cc1100_write1(FREQ1,0x12); - //~ cc1100_write1(FREQ0,0xF6); - - // set gain // OOK/ASK optima. see TI DN022 - //~ cc1100_write1(AGCCTRL2,0x07); // A - cc1100_write1(AGCCTRL2,0x03); // B - cc1100_write1(AGCCTRL1,0x00); - //~ cc1100_write1(AGCCTRL0,0x92); // A - cc1100_write1(AGCCTRL0,0x91); // B -#endif - - cc1100_strobe(SFRX); - cc1100_strobe(SRX); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { -#ifdef RF2UART - //~ waitus(100); // 1 byte -> 10 bits / 115200 baud = 86,8 ys - waitus(50); // 1 byte -> 10 bits / 230400 baud = 43,4 ys - - if (!(FIOPIN0 & GDO2)) // get rf state as bit - bits |= (1< uart - { - bitno = 7; - serial_putbyte(bits); - bits = 0; - } - else - bitno--; // advance - -#else - waitus(50); - - draw_block(row,col,2,8,3,DRAW_ERASE); - - // plot: get data from CC1100's GDO2 on P0.24 (fast IO) - if((FIOPIN0 & GDO2)) - draw_pixel (row,col+2, LCD_COLOR_B, DRAW_PUT); - else - draw_pixel (row,col, LCD_COLOR_B, DRAW_PUT); - - // advance plot position - row++; - if(row == 127) - { - col +=8; - row=0; - - // screen is full, wait for keypress - if(col >140) - { - wait5ms(); - col = 16; - while(!(keys[0] || keys[1]));// && !(FIOPIN0 & GDO2)); // this seems strange, alternatives: while(!ANYKEY) or isKeyPressed - } - } -#endif - } - RFasyncmode(false); -} - - -void test_RF(void) { - - unsigned char destAddr; - - lcd_fill (LCD_COLOR_W); - destAddr = 0x01; - - set_font(BOLDFONT); - draw_string (0, 0, "RF test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_string (1, 15, "Destination address", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 60, "TV/Power Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 69, "send something", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 86, "OK Key: Ping", LCD_COLOR_B, DRAW_PUT); - - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_PUT); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - waitKeyUpDown(); - - - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_XOR); - if(KEY_Left) { - destAddr--; - } - if(KEY_Right) { - destAddr++; - } - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_XOR); - - - if(KEY_OK) - { - unsigned char ping; - draw_block (0,40,LCD_SIZE_X,10,3,DRAW_ERASE); - draw_string (0, 40, "send ping", LCD_COLOR_B, DRAW_PUT); - - ping = RF_sendping(destAddr); - - draw_block (0,40,LCD_SIZE_X,10,3,DRAW_ERASE); - if (ping) { - draw_string (0, 40, "ping received", LCD_COLOR_B, DRAW_PUT); - } - else { - draw_string (0, 40, "ping timeout", LCD_COLOR_B, DRAW_PUT); - } - - } - else if(KEY_Power) - { - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_test); - if(cur_ep) { - cur_ep->dest = destAddr; - cur_ep->data[0] = 'P'; - cur_ep->data[1] = 'W'; - cur_ep->data[2] = 0x00; - cur_ep->bufferlen = 3; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - } - } - else if(KEY_TV) - { - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_test); - cur_ep->dest = destAddr; - cur_ep->data[0] = 'T'; - cur_ep->data[1] = 'V'; - cur_ep->data[2] = 0x00; - cur_ep->bufferlen = 3; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - } - } -} - - -void test_irrec(void) { - - struct RAWcmd_ test_cmd; - - test_cmd.tval = 0; - - lcd_fill (LCD_COLOR_W); - - set_font(BOLDFONT); - draw_string (0, 0, "IR receive test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 20, "OK Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 29, "receive IR command", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 40, "Mute Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 49, "send received command", LCD_COLOR_B, DRAW_PUT); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - waitKeyUpDown(); - if(KEY_OK) - { - getIR_test(&test_cmd); - } - if(KEY_Mute) - { - RAW_Send((unsigned long)&test_cmd); - while(KEY_Mute) - RAW_Repeat(); - RAW_Stop(); - } - } - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); -} - -void erase_flash1(void) -{ int x; - - x = eraseFlash(1); - -} - -void test_sid(void) { - unsigned char temp; - - lcd_fill (LCD_COLOR_W); - - set_font(BOLDFONT); - draw_string (0, 0, "SID", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 20, "A B C D", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 29, "set envelope", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 45, "OK", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 54, "play a song", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 70, "1-7", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 79, "play a note", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 95, "color keys", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 104, "set waveform", LCD_COLOR_B, DRAW_PUT); - - sysInfo |= SYS_IR; - SID.noise = 0xaa; - playstate = 0x00; - playtone[0] = 0; - playtone[1] = 0; - playtone[2] = 0; - temp = 0; - PWMPR = 0; - switchSound(SOUND_ON); - SID.flags |= SIDenable; - SIDsetwave(0,TRIANGLE); - SIDsetadsr(0,8,8,10,8); - - while(KEY_Exit) {}; - do { - waitKeyUp(); - if (temp) - { - SID.reg[REG_Control] &= ~GATE; - temp = 0; - } - waitKeyDown(); - if (KEY_1) - { - SIDsetfrq(0,4455); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_2) - { - SIDsetfrq(0,5001); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_3) - { - SIDsetfrq(0,5613); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_4) - { - SIDsetfrq(0,5947); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_5) - { - SIDsetfrq(0,6676); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_6) - { - SIDsetfrq(0,7493); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_7) - { - SIDsetfrq(0,8411); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_A) - { - SIDsetadsr(0,0,10,7,5); - } - else if (KEY_B) - { - SIDsetadsr(0,0,10,0,10); - } - else if (KEY_C) - { - SIDsetadsr(0,8,8,10,6); - } - else if (KEY_D) - { - SIDsetadsr(0,0,0,15,1); - } - else if (KEY_Red) - { - SIDsetwave(0,TRIANGLE); - } - else if (KEY_Green) - { - SIDsetwave(0,SAWTOOTH); - } - else if (KEY_Yellow) - { - SID.reg[REG_PWhi] = 0x08; - SIDsetwave(0,RECTANGLE); - } - else if (KEY_Blue) - { - SIDsetwave(0,NOISE); - } - else if (KEY_OK) - { - if (playstate == 0) - { - playstate = 1; - - SIDsetadsr(1,0,5,0,5); - SIDsetwave(1,SAWTOOTH); - SID.reg[7+REG_PWhi] = 0x06; - tonelen[1] = 0; - playtone[1] = (unsigned char*)&song3[0]; - - SIDsetadsr(2,0,9,0,9); - SIDsetwave(2,RECTANGLE); - SID.reg[14+REG_PWhi] = 0x08; - tonelen[2] = 0; - playtone[2] = (unsigned char*)&song2[0]; - - playtone_cb = addTimerCB(SIDplaytone, 4); - startCB(playtone_cb); - } - } - } while (!KEY_Exit); - sysInfo &= ~SYS_IR; - switchSound(SOUND_OFF); - SID.flags &= ~SIDenable; -} - -void test_click(FORM* form, CONTROL* control) { - unsigned char x; - x=msgbox(45,BC_OKOnly | BC_DefaultButton1,control->caption); - form_draw(form); -} - -void test2_click(FORM* form, CONTROL* control) { - beep(0); -} - -void test3_click(FORM* form, CONTROL* control) { - beep(1); -} - -void test_numbox(FORM* form, CONTROL* control) { - unsigned char x; - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"numbox click"); - form_draw(form); -} - -void test_numchange(FORM* form, CONTROL* control) { - unsigned short x; - x=((NUMBOX*)control)->value; - if(x==50) { - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"numbox =50"); - form_draw(form); - } -} - -void test_change(FORM* form, CONTROL* control) { - unsigned short x; - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"geaendert"); - form_draw(form); -} - -void formload (FORM* form) -{ - unsigned char x; - struct RFendpoint_* cur_ep; - - cur_ep = openEP(&(form->controls[7])->tag1, 1, packet_RFenc); - form->tag = (unsigned long) cur_ep; - if (cur_ep) - { - cur_ep->flags |= EPenabled; - RF.flags &= ~WORenabled; - RF_changestate(RFrx); - } - - x=msgbox(50,BC_OKOnly | BC_DefaultButton1,"Form open"); -} - -void formclose (FORM* form) -{ - unsigned char x; - - if (form->tag) - { - closeEP((struct RFendpoint_*)form->tag); - RF_changestate(RFwor); - } - - x=msgbox(50,BC_OKOnly | BC_DefaultButton1,"Form close"); - -} - -void test_timer (FORM* form) -{ - struct RFendpoint_* cur_ep; - - cur_ep = (struct RFendpoint_*)form->tag; - if (cur_ep->flags & EPnewdata) - { - cur_ep->flags &= ~EPnewdata; - control_draw(form->controls[7], (form->sel == 7)); - } -} - -void test_controls(void) { - - const char* listbox1items[5] = { "Listitem1", - "Listitem2", - "Listitem3", - "Listitem4", - "Listitem555"}; - - char txtbuffer[20]; - const LABEL label1 = {BC_Label,0,15,40,10,SMALLFONT,0,"label1",test_click}; - const LABEL label2 = {BC_Labelnotab,50,15,40,9,BOLDFONT,0,"label2",0}; - const LABEL label3 = {BC_Labelnotab,0,110,40,9,BOLDFONT,0,"Numbox:",0}; - const BUTTON button1 = {BC_Button,0,30,40,15,SMALLFONT,0,"Button1",test_click}; - const BUTTON button2 = {BC_Button,0,50,40,16,SMALLFONT,0,"Button2",test2_click}; - const BUTTON button3 = {BC_Button,0,70,40,16,SMALLFONT,0,"Button3",test3_click}; - const BUTTON button4 = {BC_Button | BC_Disabled,0,90,40,16,SMALLFONT,0,"Button4",test_click}; - NUMBOX numbox1 = {BC_Numbox,0,120,20,9,SMALLFONT,1,1,500,test_numbox,test_numchange}; - TXTBOX txtbox1 = {BC_Txtbox,0,135,120,10,SMALLFONT,20,0,txtbuffer,test_click,test_change}; - DATEBOX datebox1 = {BC_Datebox,50,30,58,9,SMALLFONT,0,{0x01, 0x02, 0x01, 0x08},NULL,test_change}; - TIMEBOX timebox1 = {BC_Timebox,50,50,58,9,SMALLFONT,0,{0x00, 0x00, 0x12, 0x00},NULL,test_change}; - LISTBOX listbox1 = {BC_Listbox,50,70,58,10,SMALLFONT,0,5,(char**)listbox1items,NULL,test_change}; - - CONTROL* controls[12] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3, - (CONTROL*)&button4, - (CONTROL*)&numbox1, - (CONTROL*)&txtbox1, - (CONTROL*)&datebox1, - (CONTROL*)&timebox1, - (CONTROL*)&listbox1}; - - FORM form = {"Controls","footer\tTab\tTab",formload,formclose,test_timer,0,controls,3,12,0,10}; - memcpy(txtbuffer,"Textbox",8); - - form_exec(&form); - -} - -/* -struct MENU_ENTRY softMenuEntries[16]; -struct MENU softMenu; -*/ - -const struct MENU_ENTRY testMenuEntries[] = -{ - {RTCtimer_edit, 0, FUNCENTRY, "Timer", "Timer" }, - {test_icon, 0, FUNCENTRY, "Icon Demo", "Draw icons" }, - {test_irrec, 0, FUNCENTRY, "Receive IR", "Receive IR" }, - {test_RF, 0, FUNCENTRY, "RF test", "Test RF" }, - {RSSI_monitor, 0, FUNCENTRY, "RSSI Monitor", "RSSI Monitor" }, - {RF_viewer, 0, FUNCENTRY, "RF viewer", "RF viewer" }, - {test_circle, 0, FUNCENTRY, "Circle", "Draw circles" }, - {test_controls, 0, FUNCENTRY, "Controls", "Control elements" }, - {test_frame, 0, FUNCENTRY, "Frame", "Draw frame" }, - {test_frame2, 0, FUNCENTRY, "Frame2", "Draw frame2" }, - {draw_fonts, 0, FUNCENTRY, "Fonts", "Draw fonts" }, - {test_logo, 0, FUNCENTRY, "Logo", "Draw logo" }, - {fp1, 0, FUNCENTRY, "Charset", "Draw charset" }, - {illusion, 0, FUNCENTRY, "Illusion", "Optical illusion" }, - {test_bl, 0, FUNCENTRY, "Auto backlight", "Test auto backlight" }, - {bat_dbg, 0, FUNCENTRY, "Bat debug", "Show/hide bat values"}, - {tkey, 0, FUNCENTRY, "Keytest", "Test keypad" }, - {erase_flash1, 0, FUNCENTRY, "Erase Flash1", "Erase Flash1" }, - {test_sid, 0, FUNCENTRY, "Sound", "Play music" }, - {test_movearound, 0, FUNCENTRY, "Move", "Slowly move a cursor"}, -// { 0, (void*)&softMenu, MENUENTRY, "Soft-Test", "access soft" } -}; - -const struct MENU testMenu = -{ - NUM_OF_ELEMENTS (testMenuEntries), (MENU_ENTRY*)&testMenuEntries, "Test Menu" -}; - -/* -void testmenu_init(void) -{ - testdata1 = 0; - testdata2 = 0; - - for(i=0;i<16;i++) - { - softMenuEntries[i].exec = 0; - softMenuEntries[i].data = 0; - softMenuEntries[i].type = 0; - softMenuEntries[i].name = 0; - softMenuEntries[i].help = 0; - } - - softMenuEntries[0].exec = softfunc1; - softMenuEntries[0].data = 0; - softMenuEntries[0].type = FUNCENTRY; - softMenuEntries[0].name = "softfunc test"; - softMenuEntries[0].help = "run softfunc test"; - - - softMenu.name = "Soft Menu"; - softMenu.num_entries = 1; - softMenu.entry = softMenuEntries; - -} -*/ - diff --git a/boop/trunk/gui/testmenu.h b/boop/trunk/gui/testmenu.h deleted file mode 100644 index 79f990e..0000000 --- a/boop/trunk/gui/testmenu.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - testmenu.h - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef TESTMENU_H -#define TESTMENU_H - -extern struct MENU testMenu; -//void testmenu_init(void); -void test_irrec(void); - -#endif diff --git a/boop/trunk/infrared/Make.conf b/boop/trunk/infrared/Make.conf deleted file mode 100644 index 2a1fa32..0000000 --- a/boop/trunk/infrared/Make.conf +++ /dev/null @@ -1,5 +0,0 @@ -THUMBSRCS := infrared.c codes.c encoders.c ir_capture.c ir_selector.c -SRCS := infraredirq.c -THUMBSRCSUNOPT := ir_itt.c ir_nrc17.c \ - ir_raw.c ir_rc5.c ir_rc6.c ir_rca.c ir_rcmm.c ir_rec80.c ir_recs80.c ir_rf.c \ - ir_sirc.c ir_spaceenc.c ir_lirc.c diff --git a/boop/trunk/infrared/codes.c b/boop/trunk/infrared/codes.c deleted file mode 100644 index f30c7ad..0000000 --- a/boop/trunk/infrared/codes.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - codes.c - structs for accessing the infrared-codetables - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "codes.h" -#include "ir_lirc.h" - -const struct TABLES_S ITT = -{ - 4, - { - { - #include "ir_codes/itt/seleco_019" - "Seleco #19" - }, - { - #include "ir_codes/itt/seleco_049" - "Seleco #49" - }, - { - #include "ir_codes/itt/seleco_108" - "Seleco #108" - }, - { - #include "ir_codes/itt/seleco_131" - "Seleco #131" - }, - } -}; - -const struct TABLES_S NRC17 = -{ - 2, - { - { - #include "ir_codes/nrc17/dbox2" - "DBox 2" - }, - { - #include "ir_codes/nrc17/grundig_tp720" - "Grundig TP720" - } - } -}; - - -#define RC5_STD(cmd) 0x1000 | cmd -#define RC5X(cmd) cmd - -const struct TABLES_S RC5 = -{ - 3, - { - { - #include "ir_codes/rc5/tv" - "Generic TV" - }, - { - #include "ir_codes/rc5/HARMONY_655" - "Logitec Harmony" - }, - { - #include "ir_codes/rc5/technisat_satreceiver_103TS103" - "SAT(103TS103)" - } - } -}; - -const struct TABLES_I RC6 = -{ - 3, - { - { - #include "ir_codes/rc6/tv" - "RC6 TV" - }, - { - #include "ir_codes/rc6/dvd" - "RC6 DVD" - }, - { - #include "ir_codes/rc6/ufs922" - "UFS 922" - } - } -}; - -const struct TABLES_C RCA = -{ - 1, - { - { - #include "ir_codes/rca/xbox" - "X-Box" - } - } -}; - -const struct TABLES_I RCMM = -{ - 2, - { - { - #include "ir_codes/rcmm/galaxis" - "Galaxis Sat" - }, - { - #include "ir_codes/rcmm/ufs910" - "UFS 910" - } - } -}; - -const struct TABLES_I REC80 = -{ - 1, - { - { - #include "ir_codes/rec80/rak_sc957wk" - "RAK SC-957-WK" - } - } -}; - -const struct TABLES_S RECS80 = -{ - 2, - { - { - #include "ir_codes/recs80/seleco_020" - "seleco#20" - }, - { - #include "ir_codes/recs80/seleco_157" - "Seleco #157" - } - } -}; - -const struct TABLES_S SIRC = -{ - 3, - { - { - #include "ir_codes/sirc/rm-pp411" - "RM-PP411" - }, - { - #include "ir_codes/sirc/tv" - "Generic TV" - }, - { - #include "ir_codes/sirc/UFD400" - "Katrein UFD400" - } - } -}; - -const struct TABLES_C SPACEENC = -{ - 2, - { - { - #include "ir_codes/spaceenc/schneider_dtv3" - "Schneider DTV3" - }, - { - #include "ir_codes/spaceenc/seleco_027" - "Seleco #27" - } - } -}; - -const struct TABLES_S IRRF = -{ - 2, - { - { - #include "ir_codes/rf/cc1100_a0" - "RF 0" - }, - { - #include "ir_codes/rf/cc1100_a1" - "RF 1" - } - } -}; - -const struct TABLES_N RAW = -{ - 4, - { - { - "RAW Set 1" - }, - { - "RAW Set 2" - }, - { - "RAW Set 3" - }, - { - "RAW Set 4" - } - - } -}; - -const struct TABLES_L LIRC = -{ - 9, - { - { - #include "ir_codes/lirc/ufs922" - "UFS 922" - }, - { - #include "ir_codes/lirc/str_de545" - "STR-DE545" - }, - { - #include "ir_codes/lirc/ufs910" - "UFS 910" - }, - { - #include "ir_codes/lirc/fs20" - "FS20" - }, - { - #include "ir_codes/lirc/hx2262" - "HX2262" - }, - { - #include "ir_codes/lirc/rev008340" - "REV 008340" - }, - { - #include "ir_codes/lirc/olympus_rm-1" - "Olympus RM-1" - }, - { - #include "ir_codes/lirc/apple_remote1" - "Apple Remote 1st gen." - }, - { - #include "ir_codes/lirc/samsung_ue46b6000" - "Samsung TV" - } - } -}; diff --git a/boop/trunk/infrared/codes.h b/boop/trunk/infrared/codes.h deleted file mode 100644 index 8188a03..0000000 --- a/boop/trunk/infrared/codes.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - codes.h - structs for accessing the infrared-codetables - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef CODES_H -#define CODES_H - -typedef struct CODE_TABLE_C -{ - const unsigned char codes[42]; - const char *name; -} CODE_TABLE_C; - -typedef struct CODE_TABLE_S -{ - const unsigned short codes[42]; - const char *name; -} CODE_TABLE_S; - -typedef struct CODE_TABLE_I -{ - const unsigned int codes[42]; - const char *name; -} CODE_TABLE_I; - -typedef struct CODE_TABLE_N -{ - const char *name; -} CODE_TABLE_N; - -typedef struct CODE_TABLE_L -{ - const unsigned long pre_data; // data which the remote sends before actual keycode - const unsigned long post_data; // data which the remote sends after actual keycode - const unsigned long long toggle_bit_mask; // toggle_bit - const unsigned long gap; // time between signals - const unsigned long repeat_gap; // time between two repeat codes - const unsigned char bits; // bits (length of code) - const unsigned char pre_data_bits; // length of pre_data - const unsigned char post_data_bits; // length of post_data - const unsigned char rc6_bit; // doubles signal length of this bit (only used for RC-6) - const unsigned long freq; // modulation frequency - const unsigned short flags; // flags - const unsigned short phead,shead; // header - const unsigned short pthree,sthree; // 3 (only used for RC-MM) - const unsigned short ptwo,stwo; // 2 (only used for RC-MM) - const unsigned short pone,sone; // 1 - const unsigned short pzero,szero; // 0 - const unsigned short plead; // leading pulse - const unsigned short ptrail; // trailing pulse - const unsigned short pfoot,sfoot; // foot - const unsigned short pre_p,pre_s; // signal between pre_data and keycode - const unsigned short post_p, post_s; // signal between keycode and post_code - const unsigned short prepeat,srepeat; // indicate repeating - const unsigned char min_repeat; // code is repeated at least x times code sent once -> min_repeat=0 - const unsigned char duty_cycle; // 0 - - 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 3 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, see . -*/ -#include "ir_itt.h" -#include "ir_nrc17.h" -#include "ir_rc5.h" -#include "ir_rc6.h" -#include "ir_rca.h" -#include "ir_rcmm.h" -#include "ir_rec80.h" -#include "ir_recs80.h" -#include "ir_sirc.h" -#include "ir_spaceenc.h" -#include "ir_rf.h" -#include "ir_raw.h" -#include "ir_lirc.h" -#include "encoders.h" -#include "codes.h" - -const struct ENCODERS encoders = -{ - 13, - { - { ITT_Init, (void*)&ITT, 1, "ITT\0" }, - { NRC17_Init, (void*)&NRC17, 1, "NRC17\0" }, - { RC5_Init, (void*)&RC5, 1, "RC-5\0" }, - { RC6_Init, (void*)&RC6, 2, "RC-6\0" }, - { RCA_Init, (void*)&RCA, 0, "RCA\0" }, - { RCMM_Init, (void*)&RCMM, 2, "RC-MM\0" }, - { REC80_Init, (void*)&REC80, 2, "REC-80\0" }, - { RECS80_Init, (void*)&RECS80, 1, "RECS-80\0" }, - { SIRC_Init, (void*)&SIRC, 1, "SIRC\0" }, - { SPACEENC_Init,(void*)&SPACEENC, 0, "SPACEENC\0" }, - { IRRF_Init, (void*)&IRRF, 1, "RF\0" }, - { RAW_Init, (void*)&RAW, 3, "learn" }, - { LIRC_Init, (void*)&LIRC, 4, "LIRC" } - } -}; diff --git a/boop/trunk/infrared/encoders.h b/boop/trunk/infrared/encoders.h deleted file mode 100644 index 194a716..0000000 --- a/boop/trunk/infrared/encoders.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - encoders.h - structs for accessing the infrared-encoders - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef ENCODERS_H -#define ENCODERS_H - -#define ENC_ITT 0 -#define ENC_NRC17 1 -#define ENC_RC5 2 -#define ENC_RCA 3 -#define ENC_RCMM 4 -#define ENC_REC80 5 -#define ENC_RECS80 6 -#define ENC_SIRC 7 -#define ENC_SPACEENC 8 -#define ENC_RF 9 -#define ENC_RAW 10 -#define ENC_LIRC 11 - -typedef void(*cfunc)(unsigned char); - -typedef struct IR_ENCODER -{ - const cfunc init; - const void* data; - const unsigned char type; - const char *name; -} IR_ENCODER; - -typedef struct ENCODERS -{ - const unsigned int num_encoders; - const struct IR_ENCODER encoder[]; -} ENCODERS; - -extern const struct TABLES_S ITT; -extern const struct TABLES_S NRC17; -extern const struct TABLES_S RC5; -extern const struct TABLES_I RC6; -extern const struct TABLES_C RCA; -extern const struct TABLES_I RCMM; -extern const struct TABLES_I REC80; -extern const struct TABLES_S RECS80; -extern const struct TABLES_S SIRC; -extern const struct TABLES_C SPACEENC; -extern const struct TABLES_S IRRF; -extern const struct TABLES_N RAW; -extern const struct TABLES_L LIRC; - -#endif diff --git a/boop/trunk/infrared/infrared.c b/boop/trunk/infrared/infrared.c deleted file mode 100644 index e0ac240..0000000 --- a/boop/trunk/infrared/infrared.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - infrared.c - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "global.h" -#include "infrared.h" -#include "infraredirq.h" -#include "irq.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "encoders.h" -#include "codes.h" -#include "ir_selector.h" - -volatile unsigned char mod_enable; -volatile unsigned char hi_border; -volatile unsigned char lo_border; -volatile unsigned int cycles; -volatile unsigned long keyMap[42]; - -ir_fn irEncoder; -ir_sfn irSend; -ir_fn irRepeat; -ir_fn irStop; - -unsigned char act_encoder, act_set; - -const struct irModule defModule = { defIR, defSender, defRepeater, defStopper, 50, 1, 4 }; -void dummy(void) -{ - irStop = RC_setting; //make compiler happy for select_ir in mainmenu -} - -void initIR(void) -{ -// irStop = select_ir; //make compiler happy for select_ir in mainmenu - setIR(defModule); -} - -void startIrIRQ(void) -{ - - T1TCR = 0x03; - T1TC = 0; - T1PC = 0; - T1PR = 0x00; -// T1PR = 0x01; - T1MCR = 0x03; - - //VICVectAddr1 = (unsigned long)&(irIRQ); - //VICVectCntl1 = VIC_SLOT_EN | INT_SRC_TIMER1; - VICIntSelect |= INT_TIMER1; - VICIntEnable = INT_TIMER1; -} - -void setIR(struct irModule module) -{ - T1TCR = 0x02; - irEncoder = module.encoder; - irSend = module.sender; - irRepeat = module.repeater; - irStop = module.stopper; -// setIRspeed(module); - T1MR0 = module.tval; - hi_border = module.hi_border; - lo_border = module.lo_border; - cycles = 100; - ir.state = 0x00; - ir.actcmd = 0; - ir.cmd = 0; - T1TCR = 0x03; -} -/* Stubs for various interrupts (may be replaced later) */ -/* ---------------------------------------------------- */ - -void __attribute__ ((section(".text.fastcode"))) defIR(void) -{ - return; -} - -void defSender(unsigned long cmd) -{ - return; -} - -void defRepeater(void) -{ - return; -} -void defStopper(void) -{ - return; -} - -void runIR(void) -{ - T1TCR = 0x01; -} - -void stopIR(void) -{ - T1TCR = 0x03; -} - -void copyMapC(unsigned char *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -void copyMapPC(unsigned int pre, unsigned char *map) -{ - int x; - for(x=0;x<42;x++) - { - if(map[x] != 0) - keyMap[x] = pre | map[x]; - else - keyMap[x] = 0x00000000; - } -} - -void copyMapS(unsigned short *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -void copyMapI(unsigned int *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -unsigned long setEncoder( unsigned char x, unsigned char y ) -{ - if(EncIsValid(x,y)) { - act_encoder = x; - act_set = y; - encoders.encoder[act_encoder].init(act_set); - return(1); - } - return(0); -} - -unsigned long getCode(void) { - - int keynum = getKeynum(); - - if (keynum < 42) - return keyMap[keynum]; - else - return 0xFFFFFFFF; -} diff --git a/boop/trunk/infrared/infrared.h b/boop/trunk/infrared/infrared.h deleted file mode 100644 index b10991e..0000000 --- a/boop/trunk/infrared/infrared.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - infrared.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef INFRARED_H -#define INFRARED_H - -volatile unsigned char hi_border; -volatile unsigned char lo_border; - -typedef void(*ir_fn)(void); -typedef void(*ir_sfn)(unsigned long cmd); - -typedef struct irModule -{ - ir_fn encoder; - ir_sfn sender; - ir_fn repeater; - ir_fn stopper; - unsigned char tval; - unsigned char hi_border; - unsigned char lo_border; -} irModule; - -struct IR_VARS_ { - union { - struct IR_GENERAL_ { //63 Bytes - unsigned int header_cmd; - unsigned int startstop; - unsigned int bit; - unsigned int header_bit; - unsigned int numbits; - unsigned int wait; - unsigned int pause; - unsigned int leadtime; - unsigned int bittime0; - unsigned int bittime1; - unsigned int togglebit; - unsigned int len; - unsigned int trail; - unsigned int preamble; - unsigned int pre; - unsigned char prebits; - unsigned char waittime; - unsigned char bittime; - } general; - struct IR_LIRC_ { //61 Bytes - unsigned long pre_data; // data which the remote sends before actual keycode - unsigned long actpre_data; - unsigned long post_data; // data which the remote sends after actual keycode - unsigned long actpost_data; - unsigned short flags; // flags - unsigned short phead,shead; // header - unsigned short plead; // leading pulse - unsigned short ptrail; // trailing pulse - unsigned short pfoot,sfoot; // foot - unsigned short pre_p,pre_s; // signal between pre_data and keycode - unsigned short post_p,post_s; // signal between keycode and post_code - unsigned short gap; - unsigned short repeat_gap; - unsigned short prepeat,srepeat; - unsigned short cycles_counter; - unsigned char bits; // bits (length of code) - unsigned char pre_data_bits; // length of pre_data - unsigned char post_data_bits; // length of post_data - unsigned char rc6_bit; // doubles signal length of this bit (only used for RC-6) - unsigned char pthree,sthree; // 3 (only used for RC-MM) - unsigned char ptwo,stwo; // 2 (only used for RC-MM) - unsigned char pone,sone; // 1 - unsigned char pzero,szero; // 0 - unsigned char min_repeat; - unsigned char bit; - unsigned char map; - unsigned char stop; - unsigned char repeats; - } lirc; - }; - unsigned int cmd; - unsigned int actcmd; - unsigned char toggle; - unsigned char state; -} ir; - - -//#define setIRspeed( _m ) { if(sysInfo & 0x80) T1MR0 = _m.tval1; else T1MR0 = _m.tval; } -#define setIRspeed( _m ) { T1MR0 = _m.tval; } - -void __attribute__ ((section(".text.fastcode"))) defIR(void); -void defSender(unsigned long cmd); -void defRepeater(void); -void defStopper(void); - -void initIR(void); -void startIrIRQ(void); -void setIR(struct irModule module); -void runIR(void); -void stopIR(void); - -unsigned long setEncoder( unsigned char _x, unsigned char _y ); - -void copyMapC(unsigned char *map); -void copyMapPC(unsigned int pre, unsigned char *map); -void copyMapS(unsigned short *map); -void copyMapI(unsigned int *map); - -unsigned long getCode(void); - -#endif - diff --git a/boop/trunk/infrared/infrared_encoders.h b/boop/trunk/infrared/infrared_encoders.h deleted file mode 100644 index 54a4ce8..0000000 --- a/boop/trunk/infrared/infrared_encoders.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - infraredirq.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef INFRARED_ENCODERS_H -#define INFRARED_ENCODERS_H - -#include "ir_nrc17.h" -#include "ir_itt.h" -#include "ir_rc5.h" -#include "ir_rc6.h" -#include "ir_rca.h" -#include "ir_rcmm.h" -#include "ir_rec80.h" -#include "ir_recs80.h" -#include "ir_sirc.h" -#include "ir_spaceenc.h" - -#endif - diff --git a/boop/trunk/infrared/infraredirq.c b/boop/trunk/infrared/infraredirq.c deleted file mode 100644 index 5fa7314..0000000 --- a/boop/trunk/infrared/infraredirq.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - infraredirq.c - ir interrupt - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "infrared.h" -#include "infraredirq.h" -#include "irq.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "rf.h" -#include "cc1100.h" - -static unsigned int c_cnt = 0; -static unsigned int b_len = 0; -extern volatile unsigned char mod_enable; -extern volatile unsigned char hi_border; -extern volatile unsigned char lo_border; -extern volatile unsigned int cycles; - -extern ir_fn irEncoder; - -void __attribute__ ((section(".text.fastcode"))) irIRQ(void) -{ - c_cnt++; - if(c_cnt <= hi_border) - { - FIOSET0 = (mod_enable<<21); - } - else - { - FIOCLR0 = (1<<21); - if(c_cnt >= lo_border) - { - c_cnt = 0; - b_len++; - if(b_len >= cycles) - { - irEncoder(); - b_len = 0; - - if(!hi_border) { //RF mode - if(mod_enable) - FIOCLR0 = GDO0; - else - FIOSET0 = GDO0; - } - } - } - } - - T1IR = 1; -// VICVectAddr = 0; -} diff --git a/boop/trunk/infrared/infraredirq.h b/boop/trunk/infrared/infraredirq.h deleted file mode 100644 index 27f5a48..0000000 --- a/boop/trunk/infrared/infraredirq.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - infraredirq.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef INFRAREDIRQ_H -#define INFRAREDIRQ_H - -void irIRQ (void) __attribute__ ((section(".text.fastcode"))); - -#endif - diff --git a/boop/trunk/infrared/ir_capture.c b/boop/trunk/infrared/ir_capture.c deleted file mode 100644 index 0b07f4a..0000000 --- a/boop/trunk/infrared/ir_capture.c +++ /dev/null @@ -1,710 +0,0 @@ -/* - ir_capture.c - - Copyright (C) 2008 - - 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 3 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, see . -*/ - - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "lpc2220.h" -#include "irq.h" -#include "backlight.h" -#include "ir_capture.h" -#include "global.h" -#include "ir_raw.h" -#include "infrared.h" -#include "ir_selector.h" -#include "flash.h" -#include "controls.h" -#include "bfs.h" -#include "serial.h" -#include "codes.h" -#include "encoders.h" - - -const char string_unknown[] = ""; -#define len_string_unknown 12 - -extern volatile unsigned char autorepeat; -extern void setSpeed(unsigned char sp); - - -unsigned long waitIrHi(unsigned short* onpulse, unsigned long* time, unsigned long start) { - - unsigned long lowpulse; - unsigned long l; - unsigned long x; - - *onpulse = 0; - lowpulse = 0; - while (1) { - T0CCR = (1<<9) | (1<<11); - while (!(T0IR)); - T0IR = 0xff; - T0CCR = (1<<9) | (1<<10) | (1<<11); - l = T0CR3; - *time = l-start + lowpulse; - (*onpulse)++; - x = start + *time + 30; - while (!(T0IR)) { - if (T0TC > x) - return (l + lowpulse); - } - T0IR = 0xff; - x = T0CR3; - lowpulse = x-l; - } -} - -unsigned char decodewide(unsigned long value, struct widetable_* wide) { - - unsigned char x; - unsigned long minvalue; - unsigned long maxvalue; - unsigned long dif; - - dif = (value / 10); - - if (dif < 1) - dif = 1; - if (value > 1) - minvalue = value - dif; - else - minvalue = 0; - - maxvalue = value + dif; - - for (x=0;x < (wide->count);x++) { - if ((wide->value[x] >= minvalue) && (wide->value[x] <= maxvalue)) { - return x; - } - } - if (wide->count < 15) { - wide->value[wide->count] = value; - wide->count++; - return (wide->count -1); - } - else { - return 0xff; - } -} - -//--------------------------------------------------------------------------- -// captureIR -//--------------------------------------------------------------------------- -/* Return Values: - 0 = OK - 1 = too manny pulse lengths - 2 = abort - 3 = too long -*/ -unsigned char captureIR(struct ir_raw_* capture) { - - unsigned long hightime, lowtime; - unsigned long T0count; - unsigned short highpulse, lowpulse; - unsigned long T1count; - unsigned long timeout; - unsigned char status; - unsigned char wide; - - while(ANYKEY); - - setSpeed(SPEED_60); - disableIRQ(); - T0MCR = 0x00; - - FIODIR0 &= ~(1<<4); - FIOCLR0 |= (1<<12); - PINSEL1 |= (1<<27); - - T0CCR = (1<<9) | (1<<10) | (1<<11); - - capture->widetable[0].count = 0; - capture->widetable[1].count = 0; - capture->count = 0; - status = 0; - - T0TC = 0; - while (T0TC < 5000); - - T0IR = 0xff; - while (!T0IR && !ANYKEY); - if(!ANYKEY) { - T0TC = 0; - T0IR = 0xff; - T0count = waitIrHi(&highpulse,&hightime,0); - capture->pulsetime = (hightime * 1000) / highpulse; - capture->data[0] = (decodewide(highpulse, &capture->widetable[1]) & 0x0F)<<4; - - while (!(T0IR)); - T0IR = 0xff; - T1count= T0CR3; - while ((capture->count < max_capture_data-1) && !status) { - lowtime = T1count-T0count; - T0count = waitIrHi(&highpulse,&hightime,T1count); - lowpulse = ((lowtime *1000)+(capture->pulsetime / 2)) / capture->pulsetime; - wide = decodewide(lowpulse, &capture->widetable[1]); - if(wide & 0xf0) - status = 2; - capture->data[capture->count] |= wide; - wide = decodewide(highpulse, &capture->widetable[1]); - if(wide & 0xf0) - status = 2; - capture->count++; - capture->data[capture->count] = wide<<4; - timeout = T0count + 500000; - while (!(T0IR) && !status) { - if (T0TC > timeout) - status =1; - } - T0IR = 0xff; - T1count= T0CR3; - } - } - else - status = 3; - if(capture->count == max_capture_data-1) - status = 4; - T0TC = 0; - T0MCR = 0x03; - FIOSET0 |= (1<<12); - T0CCR = 0; - T0IR = 0xff; - enableIRQ(); - setBacklight(BL_AUTO); - setSpeed(SPEED_30); - return status - 1; -} - -# define MAX_messages 25 - -unsigned char compare_message(unsigned char* message1, unsigned char* message2, unsigned char len) { - - unsigned char x; - - for(x=0; x < (len-1); x++) { - if(message1[x] != message2[x]) - return 1; - } - if((message1[len-1] & 0xf0) != (message2[len-1] & 0xf0)) - return 1; - return 0; - -} - -unsigned short get_signalfree(struct ir_raw_* capture,unsigned short signalmin) { - unsigned short signalfree; - unsigned char i; - - signalfree = 32000; - for (i=4; (i < capture->count);i++) { - unsigned short y; - unsigned short sum; - sum = 0; - for (y = i-4; y < i; y++) { - sum += capture->widetable[1].value[(capture->data[y]) & 0x0f]; - } - y = capture->widetable[1].value[(capture->data[i]) & 0x0f]; - if ((sum < y) && (y < signalfree) && (y > signalmin)) - signalfree=y; - } - - return(signalfree); - -} - - -//--------------------------------------------------------------------------- -// analyzeIR -//--------------------------------------------------------------------------- -/* Return Values: - 0 = OK - 1 = too manny messages - 2 = too few messages - 3 = repeat messages not equal - 4 = messages too long - 5 = unknown format -*/ -unsigned char analyzeIR1(struct ir_raw_* capture, struct RAWcmd_* cmd, unsigned char mode) { - - unsigned short signalfree; - unsigned char message[MAX_messages]; - unsigned char messagecount; - unsigned char x; - unsigned char first; - unsigned char middle; - unsigned char last; - - clear_cmd(cmd); - signalfree = get_signalfree(capture,1); - if(mode) - signalfree = get_signalfree(capture,signalfree); - - messagecount = 1; - message[0] = 0; - for(x = 0; (x < capture->count) && (messagecount < MAX_messages); x++) { - if(capture->widetable[1].value[capture->data[x] & 0x0f] >= signalfree) { - if(messagecount < MAX_messages) - message[messagecount++] = x+1; - else - return 1; - } - } - - if(messagecount < 2) - return 2; - - first = compare_message(&capture->data[message[0]], &capture->data[message[1]],message[1] - message[0]); - middle = 0; - for(x=1; x < messagecount-2; x++) { - middle += compare_message(&capture->data[message[x]], &capture->data[message[x+1]],message[x+1] - message[x]); - } - last = compare_message(&capture->data[message[messagecount-2]], &capture->data[message[messagecount-1]],message[messagecount-1] - message[messagecount-2]); - - if((first && last && (messagecount < 4)) || ((first + last) && (messagecount < 3))) - return 2; - - if(middle) - return 3; - - if(first + last == 0) { - for(x=0;x<3;x++) { - cmd->CMDstart[x] = 0; - cmd->CMDlen[x] = message[1]; - } - if(cmd->CMDlen[0] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - - } - else if(first + last == 2) { - cmd->CMDstart[0] = 0; - cmd->CMDlen[0] = message[1]; - - cmd->CMDstart[1] = cmd->CMDstart[0] + cmd->CMDlen[0]; - cmd->CMDlen[1] = message[2]-message[1]; - - cmd->CMDstart[2] = cmd->CMDstart[1] + cmd->CMDlen[1]; - cmd->CMDlen[2] = message[messagecount-1]-message[messagecount-2]; - - if(cmd->CMDlen[0]+cmd->CMDlen[1]+cmd->CMDlen[2] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[1]],(unsigned char *)&capture->data[message[1]],cmd->CMDlen[1]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[2]],(unsigned char *)&capture->data[message[messagecount-1]],cmd->CMDlen[2]); - } - else if((first == 1)&& !last) { - cmd->CMDstart[0] = 0; - cmd->CMDlen[0] = message[1]; - - cmd->CMDstart[1] = cmd->CMDstart[0] + cmd->CMDlen[0]; - cmd->CMDlen[1] = message[2]-message[1]; - - cmd->CMDstart[2] = cmd->CMDstart[1]; - cmd->CMDlen[2] = cmd->CMDlen[1]; - - if(cmd->CMDlen[0]+cmd->CMDlen[1] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[1]],(unsigned char *)&capture->data[message[1]],cmd->CMDlen[1]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - - } - else { - return 5; - } - - cmd->borders = 0x13; - cmd->tval = (15 * capture->pulsetime) / ((cmd->borders & 0x0f) * 1000); - memcpy((unsigned char *)&cmd->pulselen[0],(unsigned char *)&capture->widetable[1].value[0],(capture->widetable[1].count) * sizeof(unsigned short)); - - return 0; -} - -unsigned char analyzeIR(struct ir_raw_* capture, struct RAWcmd_* cmd) { - unsigned char result; - - result = analyzeIR1(capture, cmd,0); - if(result) { - if(!(analyzeIR1(capture, cmd,1))) - return(0); - } - return(result); -} - -void debug_print_capture(struct ir_raw_* capture) { - - unsigned short signalfree; - unsigned char x; - unsigned char ro; - unsigned char co; - - signalfree = get_signalfree(capture,0); - - x= 0; - ro = 0; - co = 0; - while((x <= capture->count) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,capture->data[x], 3, DRAW_PUT); - if((capture->widetable[1].value[capture->data[x++] & 0x0f] >= signalfree) || (co > 5)) { - ro++; - co = 0; - } - } - - draw_numU(90,8,capture->pulsetime,0, 3, DRAW_PUT); - - for (x = 0; x < capture->widetable[1].count; x++) { - draw_numU(90,36+(x*8),capture->widetable[1].value[x],0, 3, DRAW_PUT); - } -} - -void debug_print_cmd(struct RAWcmd_* cmd) { - - unsigned char x; - unsigned char ro; - unsigned char co; - - x= 0; - ro = 0; - co = 0; - - while((x < cmd->CMDlen[0]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[0]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - x=0; - co = 0; - ro++; - while((x < cmd->CMDlen[1]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[1]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - x=0; - co = 0; - ro++; - while((x < cmd->CMDlen[2]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[2]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - - draw_numU(90,8,cmd->tval,0, 3, DRAW_PUT); - - for (x = 0; x < 16; x++) { - draw_numU(75,20+(x*8),cmd->pulselen[x],0, 3, DRAW_PUT); - } -} - -void serialsend_ir_cmd(struct RAWcmd_* cmd) { - unsigned short i; - unsigned char *s; - - s=(unsigned char*)cmd; - - for(i=0;iRAWcmd[cmd])); - } - else { - RAW_Send((unsigned long)&(RAWset->RAWcmd[cmd])); - while(ANYKEY) - RAW_Repeat(); - RAW_Stop(); - } - } - } -} - -void RAW_learnset(FORM* form, CONTROL* control) { - RAW_learn((struct RAWset_*)(form->tag)); - form_draw(form); -} - -void RAW_keyerase(FORM* form, CONTROL* control) { - unsigned char x; - - x=msgbox(50,BC_nobuttons,"\nZu loeschende Taste\ndruecken.\n"); - waitKeyDown(); - x=getKeynum(); - if(x>3) { - clear_cmd(&(((struct RAWset_*)(form->tag))->RAWcmd[x-4])); - } - form_draw(form); -} - -void RAW_allkeyserase(FORM* form, CONTROL* control) { - unsigned char x; - - x=msgbox(50,BC_YesNo | BC_DefaultButton2,"Moechten Sie wirklich\nalle Tasten loeschen?\n"); - if(x == BC_Yes) { - for(x=0;x<38;x++) { - clear_cmd(&(((struct RAWset_*)(form->tag))->RAWcmd[x])); - - } - } - form_draw(form); -} - -void RAW_editset(FORM* form, CONTROL* control) { - - struct RAWset_ RAWset; - const BUTTON button1 = {BC_Button,0,15,120,15,SMALLFONT,0,"Anlernen/Testen",RAW_learnset}; - const BUTTON button2 = {BC_Button,0,35,120,15,SMALLFONT,0,"Taste loeschen",RAW_keyerase}; - const BUTTON button3 = {BC_Button,0,55,120,15,SMALLFONT,0,"Alle Tasten loeschen",RAW_allkeyserase}; - const LABEL label1 = {BC_Labelnotab,0,80,60,10,BOLDFONT,0,"Bezeichnung",0}; - TXTBOX txtbox1 = {BC_Txtbox,0,90,120,10,SMALLFONT,20,0,(char*)RAWset.name,NULL,NULL}; - - CONTROL* controls[5] = { (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3, - (CONTROL*)&label1, - (CONTROL*)&txtbox1}; - - FORM form2 = {"RAW Set bearbeiten",0,0,0,0,0,controls,0,5,0,0}; - unsigned long x; - - x = (unsigned long)BFS_LoadFileAddr(BFS_ID_RAWslot0 + ((LABEL*)control)->tag); - - if(x) - memcpy(&RAWset,(void *)x,sizeof(struct RAWset_)); - else - RAWset.id[0] = 0xff; - - x=memcmp(&RAWset,"RC01",4); - if(x) { - for(x=0;xtag, sizeof(struct RAWset_), (unsigned char*) &RAWset); - } - - if(RAWset.name[0]==0xff) - memcpy(&RAWset.name[0],(char*)string_unknown,len_string_unknown); - - form2.tag =(unsigned long)&RAWset; - - form_exec(&form2); - - if(!memcmp(&RAWset.name[0],string_unknown,len_string_unknown)) - for(x=0;xtag, sizeof(struct RAWset_), (unsigned char*) &RAWset) == 0) { - x=msgbox(50,BC_YesNo | BC_DefaultButton1,"Sollen die Aenderungen\ngespeichert werden?\n"); - if(x == BC_Yes) { - memcpy(&RAWset.id[0],"RC01",4); - BFS_SaveFile(BFS_ID_RAWslot0 + ((LABEL*)control)->tag, sizeof(struct RAWset_), (unsigned char*) &RAWset); - if(BFS_CmpFile(BFS_ID_RAWslot0 + ((LABEL*)control)->tag, sizeof(struct RAWset_), (unsigned char*) &RAWset) == 0) { - msgbox(50,BC_OKOnly | BC_DefaultButton1,"Fehler\n"); - } - } - } - - form_draw(form); -} - -void RAW_eraseall(FORM* form, CONTROL* control) { - - unsigned char x; - - x=msgbox(50,BC_YesNo | BC_DefaultButton2,"Moechten Sie wirklich\nalle gespeicherten\nCodes loeschen?\n"); - if(x == BC_Yes) { - for(x=0;x<4;x++) - BFS_DeleteFile(BFS_ID_RAWslot0 + x); - } - form_draw(form); -} -extern const struct TABLES_N RAW; - -void RAW_learnmenue(void) { - - const LABEL label5 = {BC_Labelnotab,0,15,100,10,BOLDFONT,0,"RAW Set bearbeiten:",0}; - const BUTTON button1 = {BC_Button,0,70,80,15,SMALLFONT,0,"Alles loeschen",RAW_eraseall}; - - CONTROL* controls[2 + MAX_slots]; - LABEL l_rawset[MAX_slots]; - controls[0] = (CONTROL*)&label5; - controls[1] = (CONTROL*)&button1; - - FORM form = {"IR-Codes anlernen",0,0,0,0,0,controls,2, 2 + MAX_slots,0,0}; - - int set; - /* load menu entries for four RAW sets from filesystem / default names */ - for (set = 0; set < MAX_slots; set++) { - l_rawset[set] = (LABEL){BC_Label,0,25 + 10*set,50,10,SMALLFONT,set,NULL,RAW_editset}; - struct RAWset_ *rs = (struct RAWset_*)BFS_LoadFileAddr(BFS_ID_RAWslot0 + set); - if(rs && (rs->name[0] != 0xff)) { - l_rawset[set].caption = (char*)rs->name; - } else - l_rawset[set].caption = (char*)RAW.table[set].name; - - controls[2 + set] = (CONTROL*)&l_rawset[set]; - } - - form_exec(&form); - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - -} - diff --git a/boop/trunk/infrared/ir_capture.h b/boop/trunk/infrared/ir_capture.h deleted file mode 100644 index cc9aa60..0000000 --- a/boop/trunk/infrared/ir_capture.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - ir_capture.h - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef IR_CAPTURE_H -#define IR_CAPTURE_H - -#define max_CMD_data 102 - -#define MAX_slots 4 -#define RAWnamelen 20 -struct RAWcmd_ { - unsigned char tval; - unsigned char borders; - unsigned char flags; - unsigned char toggle; - unsigned char CMDstart[3]; - unsigned char CMDlen[3]; - unsigned short pulselen[16]; - unsigned char data[max_CMD_data]; -}; - -struct RAWset_ { - unsigned char id[4]; - unsigned char name[RAWnamelen]; - struct RAWcmd_ RAWcmd[38]; -}; - -struct widetable_ { - unsigned short value[15]; - unsigned char count; -}; - -#define max_capture_data 200 - -struct ir_raw_ { - unsigned long pulsetime; - unsigned char data[max_capture_data]; - struct widetable_ widetable[2]; - unsigned char count; - -}; - -void getIR_test(struct RAWcmd_* cmd); -void RAW_learnmenue(void); -void clear_cmd(struct RAWcmd_* cmd); - -#endif diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_019 b/boop/trunk/infrared/ir_codes/itt/seleco_019 deleted file mode 100644 index ae2cf7c..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_019 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 019 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x330, // Up -> Play - 0x340, // Down -> Stop - 0x020, // Left -> Rewind - 0x310, // Right -> Forward - 0x080, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x070, // Prog+ -> Prog+ - 0x040, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x3F0, // -/-- -> A/B - 0x000, // AV -> - 0x1D0, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x1E0, // VTX1 -> VTX2 - 0x3C0, // VTX2 -> VTX3 - 0x020, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1E0, // Red -> Record - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_049 b/boop/trunk/infrared/ir_codes/itt/seleco_049 deleted file mode 100644 index 584144f..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_049 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 019 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x360, // Up -> Play - 0x330, // Down -> Stop - 0x320, // Left -> Rewind - 0x350, // Right -> Forward - 0x050, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x0D0, // Prog+ -> Prog+ - 0x0E0, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x1F0, // -/-- -> A/B - 0x000, // AV -> - 0x3A0, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x1E0, // VTX1 -> VTX2 - 0x3C0, // VTX2 -> VTX3 - 0x020, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1E0, // Red -> Record - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_108 b/boop/trunk/infrared/ir_codes/itt/seleco_108 deleted file mode 100644 index 883e336..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_108 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 108 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x1C0, // Up -> Play - 0x330, // Down -> Stop - 0x210, // Left -> Rewind - 0x1F0, // Right -> Forward - 0x230, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x3F0, // Mute -> Muting - 0x070, // Prog+ -> Prog+ - 0x080, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x1E0, // -/-- -> A/B - 0x000, // AV -> - 0x000, // Menu -> - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x0F0, // Info -> VTX1 - 0x0D0, // VTX1 -> VTX2 - 0x200, // VTX2 -> VTX3 - 0x000, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1D0, // Red -> Pause - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_131 b/boop/trunk/infrared/ir_codes/itt/seleco_131 deleted file mode 100644 index 7bd12ee..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_131 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 131 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x020, // Up -> Play - 0x300, // Down -> Stop - 0x250, // Left -> Rewind - 0x050, // Right -> Forward - 0x390, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x0D0, // Prog+ -> Prog+ - 0x040, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x000, // -/-- -> - 0x000, // AV -> - 0x390, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x0A0, // VTX1 -> VTX2 - 0x380, // VTX2 -> VTX3 - 0x200, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1D0, // Red -> Pause - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/lirc/apple_remote1 b/boop/trunk/infrared/ir_codes/lirc/apple_remote1 deleted file mode 100644 index e962faf..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/apple_remote1 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Apple Remote 1st generation (6 buttons) http://lirc.sourceforge.net/remotes/apple/A1156 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 3 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, see . */ /*pre_data*/ 0x77E1, /*Apple's ID for NEC code*/ /*post_data*/ 0xC5, /*Remote's ID (which can be changed on the original remote)*/ /*toggle_bit_mask*/ 0x00, /*gap*/ 37600, /*repeat_gap*/ 0, /*bits*/ 8, /*pre_data_bits*/ 16, /*post_data_bits*/ 8, /*rc6_bit*/ 0, /*frequency*/ 38000, /*flags*/ LIRC_SPACE_ENC, /*header*/ 9000,4500, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 560,1690, /*zero*/ 560,560, /*plead*/ 0, /*ptrail*/ 560, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 9000,2250, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x00, // A -> 0x00, // B -> 0x00, // C -> 0x00, // D -> 0x00, // Betty -> 0x00, // Exit -> 0xD0, // Up -> up, plus 0xB0, // Down -> down, minus 0x10, // Left -> << rev 0xE0, // Right -> >> ffwd 0x20, // OK -> play 0x00, // Vol+ -> 0x00, // Vol- -> 0x40, // Mute -> menu 0x00, // Prog+ -> 0x00, // Prog- -> 0x00, // 1 -> 0x00, // 2 -> 0x00, // 3 -> 0x00, // 4 -> 0x00, // 5 -> 0x00, // 6 -> 0x00, // 7 -> 0x00, // 8 -> 0x00, // 9 -> 0x00, // 0 -> 0x00, // -/-- -> 0x00, // AV -> 0x00, // Menu -> 0x00, // PiP -> 0x00, // A/B -> 0x00, // 16:9 -> 0x00, // Info -> 0x00, // VTX1 -> 0x00, // VTX2 -> 0x00, // VTX3 -> 0x00, // Blue -> 0x00, // Yello -> 0x00, // Green -> 0x00, // Red -> 0x00, // TV -> 0x00 // Power -> }, diff --git a/boop/trunk/infrared/ir_codes/lirc/fs20 b/boop/trunk/infrared/ir_codes/lirc/fs20 deleted file mode 100644 index dcdd03e..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/fs20 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for FS20 Copyright (C) 2009 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 3 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, see . */ /*pre_data*/ calcFS20pre(0x11,0,0x11,0), //Synchr + HC:12121212 /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x00, /*gap*/ 10000, /*repeat_gap*/ 500000, //gap after min_repeats /*bits*/ 27, /*pre_data_bits*/ 32, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x0020293E, //868.350174MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 600,600, /*zero*/ 400,400, /*plead*/ 0, /*ptrail*/ 400, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 2, /*duty cycle*/ 0, { 0x00000, // A -> 0x00000, // B -> 0x00000, // C -> 0x00000, // D -> 0x00000, // Betty -> 0x00000, // Exit -> 0x00000, // Up -> 0x00000, // Down -> 0x00000, // Left -> 0x00000, // Right -> 0x00000, // OK -> 0x00000, // Vol+ -> 0x00000, // Vol- -> 0x00000, // Mute -> 0x00000, // Prog+ -> 0x00000, // Prog- -> calcFS20code(0x01,1,0x00,0,0x29,1), // 1 -> Addr:1112 Cmd:0(Off) calcFS20code(0x01,1,0x12,0,0x3B,1), // 2 -> Addr:1112 Cmd:18(Toggle) calcFS20code(0x01,1,0x11,0,0x3A,0), // 3 -> Addr:1112 Cmd:17(On) 0x00000, // 4 -> 0x00000, // 5 -> 0x00000, // 6 -> 0x00000, // 7 -> 0x00000, // 8 -> 0x00000, // 9 -> 0x00000, // 0 -> 0x00000, // -/-- -> 0x00000, // AV -> 0x00000, // Menu -> 0x00000, // PiP -> 0x00000, // A/B -> 0x00000, // 16:9 -> 0x00000, // Info -> 0x00000, // VTX1 -> 0x00000, // VTX2 -> 0x00000, // VTX3 -> 0x00000, // Blue -> 0x00000, // Yello -> 0x00000, // Green -> 0x00000, // Red -> 0x00000, // TV -> 0x00000 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/hx2262 b/boop/trunk/infrared/ir_codes/lirc/hx2262 deleted file mode 100644 index 06e220e..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/hx2262 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for HX2262 Copyright (C) 2009 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 3 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, see . */ //Bit translation: //HX2262 LIRC_RF //0 00 //F (floating) 01 //1 11 /*pre_data*/ 0x00000000, //bit 0-4 = 00000 /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x00, /*gap*/ 11160, /*repeat_gap*/ 11160, //gap after min_repeats /*bits*/ 14, /*pre_data_bits*/ 10, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x00101234, //433,919861MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1080,360, /*zero*/ 360,1080, /*plead*/ 0, /*ptrail*/ 360, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 10, /*duty cycle*/ 0, { 0x00000, // A -> 0x00000, // B -> 0x00000, // C -> 0x00000, // D -> 0x00000, // Betty -> 0x00000, // Exit -> 0x00000, // Up -> 0x00000, // Down -> 0x00000, // Left -> 0x00000, // Right -> 0x00000, // OK -> 0x00000, // Vol+ -> 0x00000, // Vol- -> 0x00000, // Mute -> 0x00000, // Prog+ -> 0x00000, // Prog- -> 0x00551, // 1 -> bit5-8(Device) 0FFF bit9-11(cmd) F0F ->ON 0x01151, // 2 -> bit5-8(Device) 0FFF bit9-11(cmd) FF0 ->OFF 0x01451, // 3 -> bit5-8(Device) F0FF bit9-11(cmd) F0F ->ON 0x00554, // 4 -> bit5-8(Device) F0FF bit9-11(cmd) FF0 ->OFF 0x01154, // 5 -> bit5-8(Device) FF0F bit9-11(cmd) F0F ->ON 0x01454, // 6 -> bit5-8(Device) FF0F bit9-11(cmd) FF0 ->OFF 0x00000, // 7 -> 0x00000, // 8 -> 0x00000, // 9 -> 0x00000, // 0 -> 0x00000, // -/-- -> 0x00000, // AV -> 0x00000, // Menu -> 0x00000, // PiP -> 0x00000, // A/B -> 0x00000, // 16:9 -> 0x00000, // Info -> 0x00000, // VTX1 -> 0x00000, // VTX2 -> 0x00000, // VTX3 -> 0x00000, // Blue -> 0x00000, // Yello -> 0x00000, // Green -> 0x00000, // Red -> 0x00000, // TV -> 0x00000 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 b/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 deleted file mode 100644 index ab59b3c..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Olympus RM-1 (digital camera remote) NEC Code http://lirc.sourceforge.net/remotes/olympus/RM-1 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 3 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, see . */ /*pre_data*/ 0x61DC, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000000000, /*gap*/ 107013, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 16, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 38000, /*flags*/ LIRC_SPACE_ENC | LIRC_CONST_LENGTH, /*header*/ 9000,4500, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 560,1690, /*zero*/ 560,560, /*plead*/ 0, /*ptrail*/ 560, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 9000,2250, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0xC03F, // Up -> tele 0x40BF, // Down -> wide 0x20DF, // Left -> - 0xA05F, // Right -> + 0x807F, // OK -> capture 0x0000, // Vol+ -> 0x0000, // Vol- -> 0x0000, // Mute -> 0x0000, // Prog+ -> 0x0000, // Prog- -> 0x0000, // 1 -> 0x0000, // 2 -> 0x0000, // 3 -> 0x0000, // 4 -> 0x0000, // 5 -> 0x0000, // 6 -> 0x0000, // 7 -> 0x0000, // 8 -> 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0000 // Power -> }, diff --git a/boop/trunk/infrared/ir_codes/lirc/rev008340 b/boop/trunk/infrared/ir_codes/lirc/rev008340 deleted file mode 100644 index c3a55e3..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/rev008340 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for REV 008340 remote control HS2260A-R4 based on hx2262 by telekatz 2010-10-04 by eme 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 3 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, see . */ // Bit translation: // HX2262 LIRC_RF // 0 00 // F (floating) 01 // 1 11 // "channel" // A: 1FFF -> 11010101 -> 0xD5 // B: F1FF -> 01110101 -> 0x75 // C: FF1F -> 01011101 -> 0x5D // D: FFF1 -> 01010111 -> 0x57 // "device" // 1: 1FF0 -> 11010100 -> 0xD4 // 2: F1F0 -> 01110100 -> 0x74 // 3: FFF1 -> 01010111 -> 0x57 // "action" // 1: 0010 (on/+) -> 00001100 -> 0x0C // 0: 0001 (off/-) -> 00000011 -> 0x03 /*pre_data*/ 0xD5, // A0-A3 /*post_data*/ 0x00, /*toggle_bit_mask*/ 0x00, /*gap*/ 14570, /*repeat_gap*/ 14570, // gap after min_repeats /*bits*/ 16, // data bits /*pre_data_bits*/ 8, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x00101234, // 433,919861MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1410,470, /*zero*/ 470,1410, /*plead*/ 0, /*ptrail*/ 470, // sync pulse /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 0, /*duty cycle*/ 0, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0000, // Up -> 0x0000, // Down -> 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0000, // Vol+ -> 0x0000, // Vol- -> 0x0000, // Mute -> 0x0000, // Prog+ -> 0x0000, // Prog- -> 0xD40C, // 1 -> 1 on 0xD403, // 2 -> 1 off 0x0000, // 3 -> 0x740C, // 4 -> dim2 + 0x7403, // 5 -> dim2 - 0x0000, // 6 -> 0x570C, // 7 -> dim3 + 0x5703, // 8 -> dim3 - 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0000 // Power -> }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 b/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 deleted file mode 100644 index 508fdcd..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Samsung UE46B6000 Copyright (C) 2009 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 3 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, see . */ /*pre_data*/ 0x0000E0E0, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000000000, /*gap*/ 107635, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 16, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 36000, /*flags*/ LIRC_CONST_LENGTH, /*header*/ 4498,4450, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 588,1646, /*zero*/ 588,535, /*plead*/ 0, /*ptrail*/ 584, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0xB44B, // Exit -> Exit 0x06F9, // Up -> UP 0x8679, // Down -> Down 0xA659, // Left -> Left 0x46B9, // Right -> Right 0x16E9, // OK -> OK 0xE01F, // Vol+ -> Vol+ 0xD02F, // Vol- -> Vol- 0xF00F, // Mute -> Mute 0x48B7, // Prog+ -> Prog+ 0x48B7, // Prog- -> Prog- 0x20DF, // 1 -> 1 0xA05F, // 2 -> 2 0x609F, // 3 -> 3 0x10EF, // 4 -> 4 0x906F, // 5 -> 5 0x50AF, // 6 -> 6 0x30CF, // 7 -> 7 0xB04F, // 8 -> 8 0x708F, // 9 -> 9 0x8877, // 0 -> 0 0xF20D, // -/-- -> Guide 0x807F, // AV -> Source 0x58A7, // Menu -> Menue 0xD22D, // PiP -> Tools 0x1AE5, // A/B -> Return 0x7C83, // 16:9 -> P.Size 0xF807, // Info -> Info 0xD629, // VTX1 -> Ch.List 0x0000, // VTX2 -> 0xC837, // VTX3 -> Pre-CH 0x6897, // Blue -> Blue 0xA857, // Yello -> Yellow 0x28D7, // Green -> Green 0x36C9, // Red -> Red 0xC23D, // TV -> TV/DTV 0x40BF // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/str_de545 b/boop/trunk/infrared/ir_codes/lirc/str_de545 deleted file mode 100644 index ff078e4..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/str_de545 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 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 3 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, see . */ /*pre_data*/ 0x00000000, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 45152, /*repeat_gap*/ 0, /*bits*/ 12, /*pre_data_bits*/ 0, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 40000, /*flags*/ LIRC_CONST_LENGTH, /*header*/ 2400,600, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1200,600, /*zero*/ 600,600, /*plead*/ 0, /*ptrail*/ 0, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 25, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0000, // Up -> 0x0000, // Down -> 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0481, // Vol+ -> Vol+ 0x0C81, // Vol- -> Vol- 0x0281, // Mute -> Mute 0x0096, // Prog+ -> Tuner Prog+ 0x0896, // Prog- -> Tuner Prog- 0x0561, // 1 -> TV/SAT 0x0441, // 2 -> Video 0x0BE1, // 3 -> DVD 0x0841, // 4 -> Tuner 0x0A41, // 5 -> CD 0x0B81, // 6 -> AUX 0x0961, // 7 -> MD/TAPE 0x04E1, // 8 -> 5.1 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0A81 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/ufs910 b/boop/trunk/infrared/ir_codes/lirc/ufs910 deleted file mode 100644 index 4b03d1d..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/ufs910 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS910 Copyright (C) 2009 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 3 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, see . */ /*pre_data*/ 0x00229000, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 99000, /*repeat_gap*/ 0, /*bits*/ 8, /*pre_data_bits*/ 24, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 36000, /*flags*/ LIRC_RCMM | LIRC_CONST_LENGTH, /*header*/ 417,278, /*three*/ 167,778, /*two*/ 167,611, /*one*/ 167,444, /*zero*/ 167,278, /*plead*/ 0, /*ptrail*/ 167, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x00, // A -> 0x00, // B -> 0x00, // C -> 0x00, // D -> 0x00, // Betty -> 0x55, // Exit -> Back 0x58, // Up -> Up 0x59, // Down -> Down 0x5A, // Left -> Left 0x5B, // Right -> Right 0x5c, // OK -> OK 0x10, // Vol+ -> Vol+ 0x11, // Vol- -> Vol- 0x0D, // Mute -> Mute 0x1E, // Prog+ -> Prog+ 0x1F, // Prog- -> Prog- 0x01, // 1 -> 1 0x02, // 2 -> 2 0x03, // 3 -> 3 0x04, // 4 -> 4 0x05, // 5 -> 5 0x06, // 6 -> 6 0x07, // 7 -> 7 0x08, // 8 -> 8 0x09, // 9 -> 9 0x100, // 0 -> 0 //eigentlich 0x00 0xCC, // -/-- -> EPG 0x00, // AV -> 0x54, // Menu -> Menue 0x21, // PiP -> Rewind 0x38, // A/B -> Play 0x20, // 16:9 -> Forward 0x0F, // Info -> Info 0x39, // VTX1 -> Pause 0x37, // VTX2 -> Record 0x31, // VTX3 -> Stop 0x70, // Blue -> Blue 0x6F, // Yello -> Yellow 0x6E, // Green -> Green 0x6D, // Red -> Red 0x3C, // TV -> Text 0x0C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/ufs922 b/boop/trunk/infrared/ir_codes/lirc/ufs922 deleted file mode 100644 index 45ec946..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/ufs922 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 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 3 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, see . */ /*pre_data*/ 0x00037FB9, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 106291, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 21, /*post_data_bits*/ 0, /*rc6_bit*/ 5, /*frequency*/ 36000, /*flags*/ LIRC_RC6 | LIRC_CONST_LENGTH, /*header*/ 2676,870, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 454,429, /*zero*/ 454,429, /*plead*/ 0, /*ptrail*/ 0, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0xFFAA, // Exit -> Back 0xFFA7, // Up -> Up 0xFFA6, // Down -> Down 0xFFA5, // Left -> Left 0xFFA4, // Right -> Right 0xFFA3, // OK -> OK 0xFFEF, // Vol+ -> Vol+ 0xFFEE, // Vol- -> Vol- 0xFFF2, // Mute -> Mute 0xFFE1, // Prog+ -> Prog+ 0xFFE0, // Prog- -> Prog- 0xFFFE, // 1 -> 1 0xFFFD, // 2 -> 2 0xFFFC, // 3 -> 3 0xFFFB, // 4 -> 4 0xFFFA, // 5 -> 5 0xFFF9, // 6 -> 6 0xFFF8, // 7 -> 7 0xFFF7, // 8 -> 8 0xFFF6, // 9 -> 9 0xFFF5, // 0 -> 0 0xFF33, // -/-- -> EPG 0xFFB9, // AV -> Archiv 0xFFAB, // Menu -> Menue 0xFFDE, // PiP -> Rewind 0xFFC7, // A/B -> Play 0xFFDF, // 16:9 -> Forward 0xFFF0, // Info -> Info 0xFFC6, // VTX1 -> Pause 0xFFC8, // VTX2 -> Record 0xFFCE, // VTX3 -> Stop 0xFF8F, // Blue -> Blue 0xFF90, // Yello -> Yellow 0xFF91, // Green -> Green 0xFF92, // Red -> Red 0xFF2A, // TV -> Media 0xFFF3 // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/nrc17/dbox2 b/boop/trunk/infrared/ir_codes/nrc17/dbox2 deleted file mode 100644 index e6f2c73..0000000 --- a/boop/trunk/infrared/ir_codes/nrc17/dbox2 +++ /dev/null @@ -1,64 +0,0 @@ -/* - NRC17_dbox2.code - infrared codes for the dbox2 in NRC17 coding - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -// codes are: subcode[4]:address[4]:command[8] = 16 bits - -{ - 0x0000, // A - 0x0000, // B - 0x0000, // C - 0x0000, // D - 0x5c20, // Betty -> Home - 0x5c27, // Exit -> dbox - 0x5c0e, // Up -> Up - 0x5c0f, // Down -> Down - 0x5c2f, // Left -> Left - 0x5c2e, // Right -> Right - 0x5c30, // OK -> OK - 0x5c16, // Vol+ -> Vol+ - 0x5c17, // Vol- -> Vol- - 0x5c28, // Mute -> Mute - 0x5c54, // Prog+ -> Next - 0x5c53, // Prog- -> Prev - 0x5c01, // 1 -> 1 - 0x5c02, // 2 -> 2 - 0x5c03, // 3 -> 3 - 0x5c04, // 4 -> 4 - 0x5c05, // 5 -> 5 - 0x5c06, // 6 -> 6 - 0x5c07, // 7 -> 7 - 0x5c08, // 8 -> 8 - 0x5c09, // 9 -> 9 - 0x5c00, // 0 -> 0 - 0x0000, // -/-- - 0x0000, // AV - 0x5c27, // Menu -> dbox - 0x0000, // PiP - 0x0000, // A/B - 0x0000, // 16:9 - 0x5c82, // Info -> Help - 0x0000, // VTX1 - 0x0000, // VTX2 - 0x0000, // VTX3 - 0x5c3b, // Blue -> Blue - 0x5c52, // Yellow -> Yellow - 0x5c55, // Green -> Green - 0x5c2d, // Red -> Red - 0x5c20, // TV -> Home - 0x5c0c // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 b/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 deleted file mode 100644 index 20ea9ae..0000000 --- a/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 +++ /dev/null @@ -1,64 +0,0 @@ -/* - infrared codes for the grundig tp720 tv - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -// codes are: command[9] = 9 bits - -{ - 0x0000, // A - 0x0000, // B - 0x0000, // C - 0x0000, // D - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x000C, // Up -> COLOR+ - 0x000D, // Down -> COLOR- - 0x000B, // Left -> BR- - 0x000A, // Right -> BR+ - 0x8000, // OK -> OK - 0x0008, // Vol+ -> V+ - 0x0009, // Vol- -> V- - 0x0001, // Mute -> Mute - 0x002A, // Prog+ -> P+ - 0x002B, // Prog- -> P- - 0x0011, // 1 -> 1 - 0x0012, // 2 -> 2 - 0x0013, // 3 -> 3 - 0x0014, // 4 -> 4 - 0x0015, // 5 -> 5 - 0x0016, // 6 -> 6 - 0x0017, // 7 -> 7 - 0x0018, // 8 -> 8 - 0x0019, // 9 -> 9 - 0x0010, // 0 -> 0 - 0x0000, // -/-- - 0x0000, // AV - 0x001A, // Menu -> PC - 0x0000, // PiP - 0x0000, // A/B - 0x0000, // 16:9 - 0x002D, // Info -> I - 0x0030, // VTX1 -> Teletext - 0x0000, // VTX2 - 0x0000, // VTX3 - 0x002E, // Blue -> Blue - 0x003B, // Yellow -> Yellow - 0x003e, // Green -> Green - 0x003a, // Red -> Red - 0x0007, // TV -> Aux - 0x0002 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 b/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 deleted file mode 100644 index fa174b0..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for technisat satreceiver - Copyright (C) 2008 p.c.squirrel - - 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 3 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, see . -*/ -{ - RC5_STD(0x0000), // A -> - RC5_STD(0x0000), // B -> - RC5_STD(0x0000), // C -> - RC5_STD(0x0000), // D -> - RC5_STD(0x0000), // Betty -> - RC5_STD(0x100B), // Exit -> Zurück - RC5_STD(0x1012), // Up -> - RC5_STD(0x1013), // Down -> - RC5_STD(0x1015), // Left -> - RC5_STD(0x1014), // Right -> - RC5_STD(0x1023), // OK -> - RC5_STD(0x0210), // Vol+ -> Vol+ - RC5_STD(0x0211), // Vol- -> Vol- - RC5_STD(0x020D), // Mute -> Mute - RC5_STD(0x1020), // Prog+ -> Prog+ - RC5_STD(0x1021), // Prog- -> Prog- - RC5_STD(0x0201), // 1 -> 1 - RC5_STD(0x0202), // 2 -> 2 - RC5_STD(0x0203), // 3 -> 3 - RC5_STD(0x0204), // 4 -> 4 - RC5_STD(0x0205), // 5 -> 5 - RC5_STD(0x0206), // 6 -> 6 - RC5_STD(0x0207), // 7 -> 7 - RC5_STD(0x0208), // 8 -> 8 - RC5_STD(0x0209), // 9 -> 9 - RC5_STD(0x1000), // 0 -> 0 - RC5_STD(0x17C0), // -/-- -> AUDIO - RC5_STD(0x0238), // AV -> EXT - RC5_STD(0x100E), // Menu -> - RC5_STD(0x17FB), // PiP -> Full - RC5_STD(0x17FC), // A/B -> GO - RC5_STD(0x1165), // 16:9 -> FR - RC5_STD(0x1166), // Info -> FF - RC5_STD(0x1175), // VTX1 -> Play - RC5_STD(0x17F6), // VTX2 -> Stop - RC5_STD(0x17F7), // VTX3 -> Record - RC5_STD(0x1034), // Blue -> - RC5_STD(0x1032), // Yello -> - RC5_STD(0x1036), // Green -> - RC5_STD(0x1037), // Red -> - RC5_STD(0x1169), // TV -> Pause - RC5_STD(0x020C) // Power -> Standby -}, - diff --git a/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 b/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 deleted file mode 100644 index 8cc2205..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for technisat satreceiver Copyright (C) 2008 p.c.squirrel 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 3 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, see . */ { RC5_STD(0x0000), // A -> RC5_STD(0x0000), // B -> RC5_STD(0x0000), // C -> RC5_STD(0x0000), // D -> RC5_STD(0x0000), // Betty -> RC5_STD(0x0000), // Exit -> RC5_STD(0x0210), // Up -> RC5_STD(0x0211), // Down -> RC5_STD(0x0215), // Left -> RC5_STD(0x0216), // Right -> RC5_STD(0x0217), // OK -> RC5_STD(0x0210), // Vol+ -> Vol+ RC5_STD(0x0211), // Vol- -> Vol- RC5_STD(0x020D), // Mute -> Mute RC5_STD(0x0220), // Prog+ -> Prog+ RC5_STD(0x0221), // Prog- -> Prog- RC5_STD(0x0201), // 1 -> 1 RC5_STD(0x0202), // 2 -> 2 RC5_STD(0x0203), // 3 -> 3 RC5_STD(0x0204), // 4 -> 4 RC5_STD(0x0205), // 5 -> 5 RC5_STD(0x0206), // 6 -> 6 RC5_STD(0x0207), // 7 -> 7 RC5_STD(0x0208), // 8 -> 8 RC5_STD(0x0209), // 9 -> 9 RC5_STD(0x0200), // 0 -> 0 RC5_STD(0x0000), // -/-- -> RC5_STD(0x0238), // AV ->EXT RC5_STD(0x0000), // Menu -> RC5_STD(0x0000), // PiP -> RC5_STD(0x0000), // A/B -> RC5_STD(0x0000), // 16:9 -> RC5_STD(0x0000), // Info -> RC5_STD(0x0000), // VTX1 -> RC5_STD(0x0000), // VTX2 -> RC5_STD(0x0000), // VTX3 -> RC5_STD(0x022E), // Blue -> RC5_STD(0x022D), // Yello -> RC5_STD(0x022C), // Green -> RC5_STD(0x022B), // Red -> RC5_STD(0x0000), // TV -> RC5_STD(0x020C) // Power -> Standby /* SAT1-OPTION 0x000000000000120A SAT1-A/B 0x0000000000001223 SAT1-SFI 0x000000000000122F SAT1-EXIT 0x0000000000001222 SAT1-INFO 0x000000000000020F SAT1-TV/RADIO 0x0000000000000213 SAT1-MENU 0x0000000000000212 SAT1-TV/SAT 0x0000000000000200 SAT1-TXT 0x000000000000123C SAT1-STOP 0x0000000000001229*/ }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc5/tv b/boop/trunk/infrared/ir_codes/rc5/tv deleted file mode 100644 index 532d2b8..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/tv +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC5 tv Copyright (C) 2007 Ch. Klippel 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 3 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, see . */ { RC5_STD(0x0000), // A -> RC5_STD(0x0000), // B -> RC5_STD(0x0000), // C -> RC5_STD(0x0000), // D -> RC5_STD(0x0000), // Betty -> RC5_STD(0x0000), // Exit -> RC5_STD(0x0812), // Up -> Brightness+ RC5_STD(0x0813), // Down -> Brightness- RC5_STD(0x0000), // Left -> RC5_STD(0x0000), // Right -> RC5_STD(0x0000), // OK -> RC5_STD(0x0810), // Vol+ -> Vol+ RC5_STD(0x0811), // Vol- -> Vol- RC5_STD(0x080D), // Mute -> Mute RC5_STD(0x0820), // Prog+ -> Prog+ RC5_STD(0x0821), // Prog- -> Prog- RC5_STD(0x0801), // 1 -> 1 RC5_STD(0x0802), // 2 -> 2 RC5_STD(0x0803), // 3 -> 3 RC5_STD(0x0804), // 4 -> 4 RC5_STD(0x0805), // 5 -> 5 RC5_STD(0x0806), // 6 -> 6 RC5_STD(0x0807), // 7 -> 7 RC5_STD(0x0808), // 8 -> 8 RC5_STD(0x0809), // 9 -> 9 RC5_STD(0x0800), // 0 -> 0 RC5_STD(0x080A), // -/-- -> RC5_STD(0x0000), // AV -> RC5_STD(0x0000), // Menu -> RC5_STD(0x0000), // PiP -> RC5_STD(0x0000), // A/B -> RC5_STD(0x0000), // 16:9 -> RC5_STD(0x0000), // Info -> RC5_STD(0x0000), // VTX1 -> RC5_STD(0x0000), // VTX2 -> RC5_STD(0x0000), // VTX3 -> RC5_STD(0x0000), // Blue -> RC5_STD(0x0000), // Yello -> RC5_STD(0x0000), // Green -> RC5_STD(0x0000), // Red -> RC5_STD(0x0000), // TV -> RC5_STD(0x080C) // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/dvd b/boop/trunk/infrared/ir_codes/rc6/dvd deleted file mode 100644 index b351666..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/dvd +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC6 DVD Copyright (C) 2008 p.c.squirrel 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 3 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, see . */ { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0458, // Up -> Brightness+ 0x0459, // Down -> Brightness- 0xFBA5, // Left -> 0x045B, // Right -> 0x045C, // OK -> 0x1810, // Vol+ -> Vol+ 0x1811, // Vol- -> Vol- 0x180D, // Mute -> Mute 0x1820, // Prog+ -> Prog+ 0x1821, // Prog- -> Prog- 0x0401, // 1 -> 1 0x0402, // 2 -> 2 0x0403, // 3 -> 3 0x0404, // 4 -> 4 0x0405, // 5 -> 5 0x0406, // 6 -> 6 0x0407, // 7 -> 7 0x0408, // 8 -> 8 0x0409, // 9 -> 9 0x040A, // 0 -> 0 0x1800, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x180C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/tv b/boop/trunk/infrared/ir_codes/rc6/tv deleted file mode 100644 index 365ee3a..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/tv +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC6 TV Copyright (C) 2008 p.c.squirrel 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 3 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, see . */ { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0012, // Up -> Brightness+ 0x0013, // Down -> Brightness- 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0010, // Vol+ -> Vol+ 0x0011, // Vol- -> Vol- 0x000D, // Mute -> Mute 0x0020, // Prog+ -> Prog+ 0x0021, // Prog- -> Prog- 0x0001, // 1 -> 1 0x0002, // 2 -> 2 0x0003, // 3 -> 3 0x0004, // 4 -> 4 0x0005, // 5 -> 5 0x0006, // 6 -> 6 0x0007, // 7 -> 7 0x0008, // 8 -> 8 0x0009, // 9 -> 9 0x000A, // 0 -> 0 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x000C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/ufs922 b/boop/trunk/infrared/ir_codes/rc6/ufs922 deleted file mode 100644 index ba92abf..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/ufs922 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 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 3 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, see . */ { 0x00000000, // A -> 0x00000000, // B -> 0x00000000, // C -> 0x00000000, // D -> 0x00000000, // Betty -> 0x80460055, // Exit -> Back 0x80460058, // Up -> Up 0x80460059, // Down -> Down 0x8046005A, // Left -> Left 0x8046005B, // Right -> Right 0x8046005c, // OK -> OK 0x80460010, // Vol+ -> Vol+ 0x80460011, // Vol- -> Vol- 0x8046000D, // Mute -> Mute 0x8046001E, // Prog+ -> Prog+ 0x8046001F, // Prog- -> Prog- 0x80460001, // 1 -> 1 0x80460002, // 2 -> 2 0x80460003, // 3 -> 3 0x80460004, // 4 -> 4 0x80460005, // 5 -> 5 0x80460006, // 6 -> 6 0x80460007, // 7 -> 7 0x80460008, // 8 -> 8 0x80460009, // 9 -> 9 0x80460000, // 0 -> 0 0x804600CC, // -/-- -> EPG 0x80460046, // AV -> Archiv 0x80460054, // Menu -> Menue 0x80460021, // PiP -> Rewind 0x80460038, // A/B -> Play 0x80460020, // 16:9 -> Forward 0x8046000F, // Info -> Info 0x80460039, // VTX1 -> Pause 0x80460037, // VTX2 -> Record 0x80460031, // VTX3 -> Stop 0x80460070, // Blue -> Blue 0x8046006F, // Yello -> Yellow 0x8046006E, // Green -> Green 0x8046006D, // Red -> Red 0x804600D5, // TV -> Media 0x8046000C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rca/xbox b/boop/trunk/infrared/ir_codes/rca/xbox deleted file mode 100644 index 38679e8..0000000 --- a/boop/trunk/infrared/ir_codes/rca/xbox +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RCA xbox - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x27, // Exit -> Back - 0x59, // Up -> Up - 0x58, // Down -> Down - 0x56, // Left -> Left - 0x57, // Right -> Right - 0xF4, // OK -> Select - 0x33, // Vol+ -> - 0x36, // Vol- -> - 0x39, // Mute -> - 0x20, // Prog+ -> Skip+ - 0x22, // Prog- -> Skip- - 0x31, // 1 -> 1 - 0x32, // 2 -> 2 - 0x33, // 3 -> 3 - 0x34, // 4 -> 4 - 0x35, // 5 -> 5 - 0x36, // 6 -> 6 - 0x37, // 7 -> 7 - 0x38, // 8 -> 8 - 0x39, // 9 -> 9 - 0x30, // 0 -> 0 - 0x15, // -/-- -> Play - 0x1F, // AV -> Stop - 0x08, // Menu -> Menu - 0x19, // PiP -> Pause - 0x1C, // A/B -> Forward - 0x1D, // 16:9 -> Reverse - 0x3C, // Info -> Info - 0x1A, // VTX1 -> Title - 0x2A, // VTX2 -> Display - 0x00, // VTX3 -> - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x00, // Red -> - 0x00, // TV -> - 0x30 // Power -> -}, diff --git a/boop/trunk/infrared/ir_codes/rcmm/galaxis b/boop/trunk/infrared/ir_codes/rcmm/galaxis deleted file mode 100644 index 7b7767f..0000000 --- a/boop/trunk/infrared/ir_codes/rcmm/galaxis +++ /dev/null @@ -1,62 +0,0 @@ -/* - rcmm_galaxis.code - infrared codes for the galaxis receiver in RCMM coding - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x0D500800, // A -> - 0x0D500861, // B -> Alt - 0x0D500879, // C -> List - 0x0D50080A, // D -> Back - 0x0D500845, // Betty -> Setup - 0x0D500855, // Exit -> Exit - 0x0D500858, // Up -> Up - 0x0D500859, // Down -> Down - 0x0D50085A, // Left -> Left - 0x0D50085B, // Right -> Right - 0x0D50085C, // OK -> OK - 0x0D500810, // Vol+ -> Vol+ - 0x0D500811, // Vol- -> Vol- - 0x0D50080D, // Mute -> Mute - 0x0D500820, // Prog+ -> Prog+ - 0x0D500821, // Prog- -> Prog- - 0x0D500801, // 1 -> 1 - 0x0D500802, // 2 -> 2 - 0x0D500803, // 3 -> 3 - 0x0D500804, // 4 -> 4 - 0x0D500805, // 5 -> 5 - 0x0D500806, // 6 -> 6 - 0x0D500807, // 7 -> 7 - 0x0D500808, // 8 -> 8 - 0x0D500809, // 9 -> 9 - 0x0D500800, // 0 -> 0 - 0x0D500850, // -/-- -> Audio - 0x0D5008FF, // AV -> VCR - 0x0D500878, // Menu -> Menu - 0x0D500879, // PiP -> List - 0x0D50084E, // A/B -> Language - 0x0D500861, // 16:9 -> Alt - 0x0D50080F, // Info -> Info - 0x0D50083C, // VTX1 -> Text - 0x0D50084B, // VTX2 -> Subtitle - 0x0D5008CC, // VTX3 -> EPG - 0x0D500870, // Blue -> Blue - 0x0D50086F, // Yello -> Yellow - 0x0D50086E, // Green -> Green - 0x0D50086D, // Red -> Red - 0x0D50083F, // TV -> TV - 0x0D50080C // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rcmm/ufs910 b/boop/trunk/infrared/ir_codes/rcmm/ufs910 deleted file mode 100644 index 0554c3e..0000000 --- a/boop/trunk/infrared/ir_codes/rcmm/ufs910 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS910 Copyright (C) 2009 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 3 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, see . */ { 0x00000000, // A -> 0x00000000, // B -> 0x00000000, // C -> 0x00000000, // D -> 0x00000000, // Betty -> 0x22908055, // Exit -> Back 0x22908058, // Up -> Up 0x22908059, // Down -> Down 0x2290805A, // Left -> Left 0x2290805B, // Right -> Right 0x2290805c, // OK -> OK 0x22908010, // Vol+ -> Vol+ 0x22908011, // Vol- -> Vol- 0x2290800D, // Mute -> Mute 0x2290801E, // Prog+ -> Prog+ 0x2290801F, // Prog- -> Prog- 0x22908001, // 1 -> 1 0x22908002, // 2 -> 2 0x22908003, // 3 -> 3 0x22908004, // 4 -> 4 0x22908005, // 5 -> 5 0x22908006, // 6 -> 6 0x22908007, // 7 -> 7 0x22908008, // 8 -> 8 0x22908009, // 9 -> 9 0x22908000, // 0 -> 0 0x229080CC, // -/-- -> EPG 0x00000000, // AV -> 0x22908054, // Menu -> Menue 0x22908021, // PiP -> Rewind 0x22908038, // A/B -> Play 0x22908020, // 16:9 -> Forward 0x2290800F, // Info -> Info 0x22908039, // VTX1 -> Pause 0x22908037, // VTX2 -> Record 0x22908031, // VTX3 -> Stop 0x22908070, // Blue -> Blue 0x2290806F, // Yello -> Yellow 0x2290806E, // Green -> Green 0x2290806D, // Red -> Red 0x2290803C, // TV -> Text 0x2290800C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk b/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk deleted file mode 100644 index 2dc8181..0000000 --- a/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for REC80 rak sc957wk - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x80F64A1C, // A -> Subwoofer - 0x8024981C, // B -> Auto Off - 0x802A961C, // C -> Sleep - 0x800EA40A, // D -> Disc - 0x80208A0A, // Betty -> Program - 0x8009A30A, // Exit -> Cancel - 0x80B60A1C, // Up -> Up - 0x80BA061C, // Down -> Down - 0x80F5491C, // Left -> SkipBack/Rewind - 0x80F64A1C, // Right -> SkipForward/FastForward - 0x80000000, // OK -> - 0x80802000, // Vol+ -> Vol+ - 0x80812100, // Vol- -> Vol- - 0x80923200, // Mute -> Muting - 0x80000000, // Prog+ -> - 0x80000000, // Prog- -> - 0x80AC101C, // 1 -> 1 - 0x80AD111C, // 2 -> 2 - 0x80AE121C, // 3 -> 3 - 0x80AF131C, // 4 -> 4 - 0x80A8141C, // 5 -> 5 - 0x80A9151C, // 6 -> 6 - 0x80AA161C, // 7 -> 7 - 0x80AB171C, // 8 -> 8 - 0x80A4181C, // 9 -> 9 - 0x80A5191C, // 0 -> 0 - 0x8038841C, // -/-- -> >10 - 0x80000000, // AV -> - 0x80BC001C, // Menu -> Stop - 0x80ED470A, // PiP -> Repeat - 0x80E74D0A, // A/B -> Random - 0x80813110, // 16:9 -> 3D AI - 0x80000000, // Info -> CD - 0x80000000, // VTX1 -> Tuner - 0x80000000, // VTX2 -> Aux - 0x80338310, // VTX3 -> EQ - 0x80813110, // Blue -> Tape - 0x80349400, // Yello -> CD - 0x8000A404, // Green -> Tuner - 0x803A9A00, // Red -> Aux - 0x80000000, // TV -> - 0x80813D1C // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/recs80/seleco_020 b/boop/trunk/infrared/ir_codes/recs80/seleco_020 deleted file mode 100644 index d957ed9..0000000 --- a/boop/trunk/infrared/ir_codes/recs80/seleco_020 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RECS80 seleco 020 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x05DC, // Up -> - 0x05DE, // Down -> - 0x05DA, // Left -> - 0x05DB, // Right -> - 0x05EC, // OK -> Enter - 0x05D0, // Vol+ -> Vol+ - 0x05D1, // Vol- -> Vol- - 0x05E9, // Mute -> Muting - 0x05CA, // Prog+ -> Prog+ - 0x05CB, // Prog- -> Prog- - 0x05C1, // 1 -> 1 - 0x05C2, // 2 -> 2 - 0x05C3, // 3 -> 3 - 0x05C4, // 4 -> 4 - 0x05C5, // 5 -> 5 - 0x05C6, // 6 -> 6 - 0x05C7, // 7 -> 7 - 0x05C8, // 8 -> 8 - 0x05C9, // 9 -> 9 - 0x05C0, // 0 -> 0 - 0x0000, // -/-- -> - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x05EE, // A/B -> A/B - 0x0000, // 16:9 -> - 0x05EE, // Info -> Info - 0x05F6, // VTX1 -> VTX1 - 0x05F0, // VTX2 -> VTX3 - 0x05F7, // VTX3 -> VTX4 - 0x0000, // Blue -> - 0x0000, // Yello -> - 0x0000, // Green -> - 0x0000, // Red -> - 0x0000, // TV -> - 0x05CC // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/recs80/seleco_157 b/boop/trunk/infrared/ir_codes/recs80/seleco_157 deleted file mode 100644 index 70cd77f..0000000 --- a/boop/trunk/infrared/ir_codes/recs80/seleco_157 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RECS80 seleco 157 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x05DC, // Up -> - 0x05DE, // Down -> - 0x05DA, // Left -> - 0x05DB, // Right -> - 0x05EC, // OK -> Enter - 0x05D0, // Vol+ -> Vol+ - 0x05D1, // Vol- -> Vol- - 0x05E9, // Mute -> Muting - 0x05D2, // Prog+ -> Prog+ - 0x05D3, // Prog- -> Prog- - 0x05C1, // 1 -> 1 - 0x05C2, // 2 -> 2 - 0x05C3, // 3 -> 3 - 0x05C4, // 4 -> 4 - 0x05C5, // 5 -> 5 - 0x05C6, // 6 -> 6 - 0x05C7, // 7 -> 7 - 0x05C8, // 8 -> 8 - 0x05C9, // 9 -> 9 - 0x05C0, // 0 -> 0 - 0x0000, // -/-- -> - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x05CA, // A/B -> A/B - 0x0000, // 16:9 -> - 0x05E8, // Info -> Info - 0x05F3, // VTX1 -> VTX1 - 0x05E5, // VTX2 -> VTX2 - 0x05F6, // VTX3 -> VTX3 - 0x0000, // Blue -> - 0x0000, // Yello -> - 0x0000, // Green -> - 0x0000, // Red -> - 0x0000, // TV -> - 0x05F0 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rf/cc1100_a0 b/boop/trunk/infrared/ir_codes/rf/cc1100_a0 deleted file mode 100644 index 2e05ed9..0000000 --- a/boop/trunk/infrared/ir_codes/rf/cc1100_a0 +++ /dev/null @@ -1,62 +0,0 @@ -/* - RF codes for cc1100 Adress 0 - Copyright (C) 2008 - - 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 3 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, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x000b, // Up -> Brightness+ - 0x000c, // Down -> Brightness- - 0x000d, // Left -> Left - 0x000e, // Right -> Right - 0x000f, // OK -> OK - 0x0010, // Vol+ -> Vol+ - 0x0011, // Vol- -> Vol- - 0x0012, // Mute -> Mute - 0x0013, // Prog+ -> Prog+ - 0x0014, // Prog- -> Prog- - 0x0001, // 1 -> 1 - 0x0002, // 2 -> 2 - 0x0003, // 3 -> 3 - 0x0004, // 4 -> 4 - 0x0005, // 5 -> 5 - 0x0006, // 6 -> 6 - 0x0007, // 7 -> 7 - 0x0008, // 8 -> 8 - 0x0009, // 9 -> 9 - 0x000a, // 0 -> 0 - 0x0015, // -/-- -> -/-- - 0x0016, // AV -> AV - 0x0017, // Menu -> Menu - 0x0018, // PiP -> PiP - 0x0019, // A/B -> A/B - 0x001a, // 16:9 -> 16:9 - 0x001b, // Info -> Info - 0x001c, // VTX1 -> VTX1 - 0x001d, // VTX2 -> VTX2 - 0x001e, // VTX3 -> VTX3 - 0x001f, // Blue -> Blue - 0x0020, // Yello -> Yello - 0x0021, // Green -> Green - 0x0022, // Red -> Red - 0x0023, // TV -> TV - 0x0024 // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/rf/cc1100_a1 b/boop/trunk/infrared/ir_codes/rf/cc1100_a1 deleted file mode 100644 index ec84a50..0000000 --- a/boop/trunk/infrared/ir_codes/rf/cc1100_a1 +++ /dev/null @@ -1,62 +0,0 @@ -/* - RF codes for cc1100 Adress 1 - Copyright (C) 2008 - - 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 3 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, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x010b, // Up -> Brightness+ - 0x010c, // Down -> Brightness- - 0x010d, // Left -> Left - 0x010e, // Right -> Right - 0x010f, // OK -> OK - 0x0110, // Vol+ -> Vol+ - 0x0111, // Vol- -> Vol- - 0x0112, // Mute -> Mute - 0x0113, // Prog+ -> Prog+ - 0x0114, // Prog- -> Prog- - 0x0101, // 1 -> 1 - 0x0102, // 2 -> 2 - 0x0103, // 3 -> 3 - 0x0104, // 4 -> 4 - 0x0105, // 5 -> 5 - 0x0106, // 6 -> 6 - 0x0107, // 7 -> 7 - 0x0108, // 8 -> 8 - 0x0109, // 9 -> 9 - 0x010a, // 0 -> 0 - 0x0115, // -/-- -> -/-- - 0x0116, // AV -> AV - 0x0117, // Menu -> Menu - 0x0118, // PiP -> PiP - 0x0119, // A/B -> A/B - 0x011a, // 16:9 -> 16:9 - 0x011b, // Info -> Info - 0x011c, // VTX1 -> VTX1 - 0x011d, // VTX2 -> VTX2 - 0x011e, // VTX3 -> VTX3 - 0x011f, // Blue -> Blue - 0x0120, // Yello -> Yello - 0x0121, // Green -> Green - 0x0122, // Red -> Red - 0x0123, // TV -> TV - 0x0124 // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/UFD400 b/boop/trunk/infrared/ir_codes/sirc/UFD400 deleted file mode 100644 index 158abcd..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/UFD400 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC seleco 027 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x0000, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x47B8, // Exit -> - 0x0BF4, // Up -> Play - 0x738C, // Down -> Stop - 0x6798, // Left -> Rewind - 0x27D8, // Right -> Forward - 0x3BC4, // OK -> Enter - 0x4BB4, // Vol+ -> Vol+ - 0x2BD4, // Vol- -> Vol- - 0x1BE4, // Mute -> Muting - 0x00, // Prog+ -> Prog+ - 0x00, // Prog- -> Prog- - 0x3FC0, // 1 -> 1 - 0x5FA0, // 2 -> 2 - 0x1FE0, // 3 -> 3 - 0x6F90, // 4 -> 4 - 0x2FD0, // 5 -> 5 - 0x4FB0, // 6 -> 6 - 0x0FF0, // 7 -> 7 - 0x7788, // 8 -> 8 - 0x37C8, // 9 -> 9 - 0x7F80, // 0 -> 0 - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x26D9, // A/B -> A/B - 0x15EA, // 16:9 -> - 0x659A, // Info -> Info - 0x6798, // VTX1 -> VTX1 - 0x7B84, // VTX2 -> VTX3 - 0x5EA1, // VTX3 -> VTX4 - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x00, // Red -> Pause - 0x07F8, // TV -> - 0x5BA4 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/rm-pp411 b/boop/trunk/infrared/ir_codes/sirc/rm-pp411 deleted file mode 100644 index d849442..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/rm-pp411 +++ /dev/null @@ -1,64 +0,0 @@ -/* - Infrared codes for Sony RM-PP411 Receiver AV2 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -// 15 bit commands, msb = 1 - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0xD877, // Betty -> Main Menu - 0x9860, // Exit -> Sleep - 0x0000, // Up -> - 0x0000, // Down -> - 0x0000, // Left -> - 0x0000, // Right -> - 0x0000, // OK -> - 0x9812, // Vol+ -> Master Vol+ - 0x9813, // Vol- -> Master Vol- - 0x9814, // Mute -> Muting - 0xD86E, // Prog+ -> Mode+ - 0xD86F, // Prog- -> Mode- - 0x9822, // 1 -> Video 1 - 0x981E, // 2 -> Video 2 - 0x9842, // 3 -> Video 3 - 0x987D, // 4 -> DVD/LD - 0x9869, // 5 -> MD/Tape - 0x9825, // 6 -> CD/SACD - 0x9821, // 7 -> Tuner - 0x9820, // 8 -> Phono - 0x981D, // 9 -> Aux - 0x9849, // 0 -> Analog Direct - 0xD841, // -/-- -> 2 CH - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x0000, // A/B -> - 0x0000, // 16:9 -> - 0x9853, // Info -> On Screen - 0x9815, // VTX1 -> I/O - 0xD847, // VTX2 -> AUTO Decoding - 0x9817, // VTX3 -> MPX/Dual - 0xD826, // Blue -> Preset - 0xD84A, // Yello -> Test Tone - 0xBCFB, // Green -> Source - 0x9872, // Red -> Multi CH - 0x986A, // TV -> TV/Sat - 0x8237, // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/tv b/boop/trunk/infrared/ir_codes/sirc/tv deleted file mode 100644 index 02ab553..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/tv +++ /dev/null @@ -1,64 +0,0 @@ -/* - Infrared codes for Sony TV - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -// 12 bit commands (MSB = 0) - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x0000, // Up -> - 0x0000, // Down -> - 0x0000, // Left -> - 0x0000, // Right -> - 0x0000, // OK -> - 0x0092, // Vol+ -> Vol+ - 0x0093, // Vol- -> Vol- - 0x0094, // Mute -> Mute - 0x0090, // Prog+ -> Prog+ - 0x0091, // Prog- -> Prog- - 0x0080, // 1 -> 1 - 0x0081, // 2 -> 2 - 0x0082, // 3 -> 3 - 0x0083, // 4 -> 4 - 0x0084, // 5 -> 5 - 0x0085, // 6 -> 6 - 0x0086, // 7 -> 7 - 0x0087, // 8 -> 8 - 0x0088, // 9 -> 9 - 0x0089, // 0 -> 0 - 0x009D, // -/-- -> -/-- - 0x00A5, // AV -> Ext - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x0000, // A/B -> - 0x0000, // 16:9 -> - 0x0000, // Info -> - 0x00BF, // VTX1 -> Teletext - 0x0000, // VTX2 -> - 0x0000, // VTX3 -> - 0x0182, // Blue -> Blue - 0x0182, // Yellow -> Yellow - 0x0181, // Green -> Green - 0x0180, // Red -> Red - 0x00B8, // TV -> TV - 0x0095 // Power -> -}, diff --git a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 b/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 deleted file mode 100644 index 488e73d..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC schneider dtv3 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x00, // Exit -> - 0x00, // Up -> Chan+ Fast - 0x00, // Down -> Chan- Fast - 0x00, // Left -> Vol- Fast - 0x00, // Right -> Vol+ Fast - 0x00, // OK -> - 0x05, // Vol+ -> Vol+ - 0x06, // Vol- -> Vol- - 0x00, // Mute -> - 0x07, // Prog+ -> Chan+ - 0x08, // Prog- -> Chan-- - 0x00, // 1 -> - 0x00, // 2 -> - 0x00, // 3 -> - 0x00, // 4 -> - 0x00, // 5 -> - 0x00, // 6 -> - 0x00, // 7 -> - 0x00, // 8 -> - 0x00, // 9 -> - 0x00, // 0 -> - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x00, // A/B -> - 0x00, // 16:9 -> - 0x09, // Info -> White - 0x00, // VTX1 -> - 0x00, // VTX2 -> - 0x00, // VTX3 -> - 0x0A, // Blue -> Blue - 0x0B, // Yello -> Yellow - 0x0C, // Green -> Green - 0x0D, // Red -> Red - 0x00, // TV -> - 0x0E // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra b/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra deleted file mode 100644 index da11f31..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra +++ /dev/null @@ -1,55 +0,0 @@ -/* - infrared codes for SPACEENC schneider dtv3 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -const unsigned int dtv3_codes[15] = -{ - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000003F, // Vol+ - 0x0008007E, // Vol- - 0x0000207F, // Chan+ - 0x000840FC, // Chan- - 0x90000027, // White - 0x2000004F, // Blue - 0x08000067, // Yellow - 0xC000000F, // Green - 0x8000001F, // Red - 0x30000087 // Power -}; - -const unsigned char dtv3_pre[15] = -{ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, // Vol+ - 0x7F, // Vol- - 0xCF, // Chan+ - 0xCF, // Chan- - 0xFF, // White - 0xFF, // Blue - 0xFF, // Yellow - 0xFF, // Green - 0xFF, // Red - 0xFF // Power -}; diff --git a/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 b/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 deleted file mode 100644 index 08ec25e..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC seleco 027 - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x00, // Exit -> - 0x1C, // Up -> Play - 0x1E, // Down -> Stop - 0x1A, // Left -> Rewind - 0x1B, // Right -> Forward - 0x07, // OK -> Enter - 0x01, // Vol+ -> Vol+ - 0x02, // Vol- -> Vol- - 0x05, // Mute -> Muting - 0x03, // Prog+ -> Prog+ - 0x04, // Prog- -> Prog- - 0x10, // 1 -> 1 - 0x11, // 2 -> 2 - 0x12, // 3 -> 3 - 0x13, // 4 -> 4 - 0x14, // 5 -> 5 - 0x15, // 6 -> 6 - 0x16, // 7 -> 7 - 0x17, // 8 -> 8 - 0x18, // 9 -> 9 - 0x19, // 0 -> 0 - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x1F, // A/B -> A/B - 0x00, // 16:9 -> - 0x28, // Info -> Info - 0x3F, // VTX1 -> VTX1 - 0x0B, // VTX2 -> VTX3 - 0x0D, // VTX3 -> VTX4 - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x1D, // Red -> Pause - 0x00, // TV -> - 0x0E // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_itt.c b/boop/trunk/infrared/ir_itt.c deleted file mode 100644 index 6294cc4..0000000 --- a/boop/trunk/infrared/ir_itt.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - ir_itt.c - itt protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_itt.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule ITT_Module = -{ - ITT_Encode, - ITT_Send, - ITT_Repeat, - ITT_Stop, - 103, // carrier - 2, // carrier-on - 3 // carrier-off -}; - -const struct irModule ITT2_Module = -{ - ITT_Encode, - ITT_Send, - ITT_Repeat, - ITT_Stop, - 111, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define ITT_IDLE 0x00 -#define ITT_LEADIN_A 0x01 -#define ITT_LEADIN_B 0x02 -#define ITT_START_A 0x03 -#define ITT_START_B 0x04 -#define ITT_BIT_A 0x05 -#define ITT_BIT_B 0x06 -#define ITT_LEADOUT_A 0x07 -#define ITT_LEADOUT_B 0x08 -#define ITT_STOP 0x09 -#define ITT_WAIT 0x0A - -#define ITT_LEADTIME 13 -#define ITT_BITTIME_0 4 -#define ITT_BITTIME_1 8 -#define ITT_WAITTIME 130 - -#define ITT2_LEADTIME 15 -#define ITT2_BITTIME_0 4 -#define ITT2_BITTIME_1 9 - -void __attribute__ ((section(".text.fastcode"))) ITT_Encode (void) -{ - switch(ir.state) - { - case ITT_IDLE: - mod_enable = 0; - break; - - case ITT_LEADIN_A: - case ITT_START_A: - case ITT_BIT_A: - case ITT_LEADOUT_A: - case ITT_STOP: - cycles = 1; - mod_enable = 1; - ir.state++; - break; - - case ITT_LEADIN_B: - case ITT_LEADOUT_B: - mod_enable = 0; - cycles = ir.general.leadtime; - ir.state++; - break; - - case ITT_START_B: - mod_enable = 0; - cycles = ir.general.bittime0; - ir.state++; - break; - - case ITT_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case ITT_WAIT: - mod_enable = 0; - cycles = 40; - ir.general.wait++; - if(ir.general.wait >= ITT_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = ITT_IDLE; - } - break; - } -} - -void ITT_LoadMap(unsigned char map) -{ - switch(map) - { - case 2: - ir.general.leadtime = ITT2_LEADTIME; - ir.general.bittime0 = ITT2_BITTIME_0; - ir.general.bittime1 = ITT2_BITTIME_1; - setIR(ITT2_Module); - break; - default: - ir.general.leadtime = ITT_LEADTIME; - ir.general.bittime0 = ITT_BITTIME_0; - ir.general.bittime1 = ITT_BITTIME_1; - setIR(ITT_Module); - break; - } -} - -void ITT_Init(unsigned char map) -{ - if(map < ITT.num_tables) - { - ir.state = ITT_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.numbits = 0x0A; - ir.general.wait = 0; - copyMapS((unsigned short*)ITT.table[map].codes); - ITT_LoadMap(map); - cycles = 1; - } -} - -void ITT_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(ITT_Module); - if(ir.actcmd != 0x0000) - { - if(ir.state == ITT_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void ITT_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == ITT_IDLE) - { - ir.cmd = ir.actcmd ^ 0x00f; - ir.state++; - runIR(); - } - } -} - -void ITT_Stop(void) -{ -/* -waitend1: - if(ir.state != ITT_IDLE) - goto waitend1; - - ir.state++; -*/ - if(ir.actcmd != 0x00000000) - { -waitend2: - if(ir.state != ITT_IDLE) - goto waitend2; - } - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_itt.h b/boop/trunk/infrared/ir_itt.h deleted file mode 100644 index b9faf4f..0000000 --- a/boop/trunk/infrared/ir_itt.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_itt.h - itt protocol ir encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_ITT_H -#define IR_ITT_H - -void ITT_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void ITT_Init(unsigned char map); -void ITT_Send(unsigned long cmd); -void ITT_Repeat(void); -void ITT_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_lirc.c b/boop/trunk/infrared/ir_lirc.c deleted file mode 100644 index 7e34d60..0000000 --- a/boop/trunk/infrared/ir_lirc.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - ir_lirc.c - lirc ir encoder - Copyright (C) 2009 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_lirc.h" -#include "encoders.h" -#include "codes.h" -#include "fonty.h" -#include "lcd.h" -#include "rf.h" -#include "cc1100.h" - -#include "global.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -/* -#define RAW_IDLE 0x00 -#define RAW_HI 0x01 -#define RAW_LO 0x02 -*/ - -#define LIRC_IDLE 0x00 -#define LIRC_HEAD_P 0x01 -#define LIRC_HEAD_S 0x02 -#define LIRC_LEAD_P 0x03 -#define LIRC_PRE_DAT_P 0x04 -#define LIRC_PRE_DAT_S 0x05 -#define LIRC_PRE_P 0x06 -#define LIRC_PRE_S 0x07 -#define LIRC_DATA_P 0x08 -#define LIRC_DATA_S 0x09 -#define LIRC_POST_P 0x0A -#define LIRC_POST_S 0x0B -#define LIRC_POST_DAT_P 0x0C -#define LIRC_POST_DAT_S 0x0D -#define LIRC_REPEAT_P 0x0E -#define LIRC_REPEAT_S 0x0F -#define LIRC_TRAIL_P 0x10 -#define LIRC_FOOT_S 0x11 -#define LIRC_FOOT_P 0x12 -#define LIRC_GAP 0x13 - -const struct irModule LIRC_Module = -{ - LIRC_Encode, - LIRC_Send, - LIRC_Repeat, - LIRC_Stop, - 136, // carrier - 1, // carrier-on - 3 // carrier-off -}; - - -unsigned char __attribute__ ((section(".text.fastcode"))) send_data (unsigned long data, unsigned char pulse) { - - const unsigned char* bittimes[4] = {&(ir.lirc.pzero), &(ir.lirc.pone), &(ir.lirc.ptwo), &(ir.lirc.pthree)}; - unsigned char notpulse = 1; - - if(pulse) { - pulse = 1; - notpulse = 0; - } - - if(is_rcmm) { - switch(data & 0xC0000000) { - case 0x00000000: - cycles = bittimes[0][notpulse]; - break; - case 0x40000000: - cycles = bittimes[1][notpulse]; - break; - case 0x80000000: - cycles = bittimes[2][notpulse]; - break; - case 0xC0000000: - cycles = bittimes[3][notpulse]; - break; - } - mod_enable = pulse; - if(!pulse) { - ir.lirc.bit +=2; - return(2); - } - return(0); - } - else if(is_biphase) { - if(data & 0x80000000) { - cycles = bittimes[1][pulse]; - mod_enable = notpulse; - } - else { - cycles = bittimes[0][notpulse]; - mod_enable = pulse; - } - if((ir.lirc.bit+1 == ir.lirc.rc6_bit)) - cycles <<= 1; - } - else { - if(data & 0x80000000) { - cycles = bittimes[1][notpulse]; - } - else { - cycles = bittimes[0][notpulse]; - } - mod_enable = pulse; - } - if(!pulse) { - ir.lirc.bit++; - return(1); - } - return(0); -} - -void __attribute__ ((section(".text.fastcode"))) LIRC_Encode (void) { - unsigned short gap; - - ir.lirc.cycles_counter += cycles; - - switch(ir.state) - { - case LIRC_IDLE: - cycles = ir.lirc.pone; - mod_enable = 0; - break; - case LIRC_HEAD_P: - ir.lirc.cycles_counter = 0; - if(has_header && (!ir.lirc.repeats || (!(ir.lirc.flags&LIRC_NO_HEAD_REP) && !has_repeat) || (ir.lirc.flags&LIRC_REPEAT_HEADER))) { // - mod_enable = 1; - cycles = ir.lirc.phead; - ir.state++; - break; - case LIRC_HEAD_S: - mod_enable = 0; - cycles = ir.lirc.shead; - ir.state++; - break; - } - ir.state = LIRC_LEAD_P; - case LIRC_LEAD_P: - if(ir.lirc.plead) { - mod_enable = 1; - cycles = ir.lirc.plead; - ir.state++; - break; - } - ir.state++; - case LIRC_PRE_DAT_P: - if(!has_repeat || !(ir.lirc.repeats)) { - if(ir.lirc.pre_data_bits) { - send_data(ir.lirc.pre_data,1); - ir.state++; - break; - case LIRC_PRE_DAT_S: - ir.lirc.pre_data <<= send_data(ir.lirc.pre_data,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits) - ir.state++; - else - ir.state--; - break; - case LIRC_PRE_P: - if(ir.lirc.pre_p && ir.lirc.pre_s) { - mod_enable = 1; - cycles = ir.lirc.pre_p; - ir.state++; - break; - case LIRC_PRE_S: - mod_enable = 0; - cycles = ir.lirc.pre_s; - ir.state++; - break; - } - } - ir.state = LIRC_DATA_P; - case LIRC_DATA_P: - send_data(ir.cmd,1); - ir.state++; - break; - case LIRC_DATA_S: - ir.cmd <<= send_data(ir.cmd,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits + ir.lirc.bits) - ir.state++; - else - ir.state--; - break; - case LIRC_POST_P: - if(ir.lirc.post_data_bits) { - if(ir.lirc.post_p && ir.lirc.post_s) { - mod_enable = 1; - cycles = ir.lirc.post_p; - ir.state++; - break; - case LIRC_POST_S: - mod_enable = 0; - cycles = ir.lirc.post_s; - ir.state++; - break; - } - ir.state = LIRC_POST_DAT_P; - case LIRC_POST_DAT_P: - send_data(ir.lirc.post_data,1); - ir.state++; - break; - case LIRC_POST_DAT_S: - ir.lirc.post_data <<= send_data(ir.lirc.post_data,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits + ir.lirc.bits +ir.lirc.post_data_bits) - ir.state = LIRC_TRAIL_P; - else - ir.state--; - break; - } - } - ir.state = LIRC_REPEAT_P; - case LIRC_REPEAT_P: - if(has_repeat && ir.lirc.repeats) { - mod_enable = 1; - cycles = ir.lirc.prepeat; - ir.state++; - break; - case LIRC_REPEAT_S: - mod_enable = 0; - cycles = ir.lirc.srepeat; - ir.state++; - break; - } - ir.state = LIRC_TRAIL_P; - case LIRC_TRAIL_P: - if(ir.lirc.ptrail) { - mod_enable = 1; - cycles = ir.lirc.ptrail; - ir.state++; - break; - } - ir.state++; - case LIRC_FOOT_S: - if(has_foot && (!ir.lirc.repeats || !(ir.lirc.flags&LIRC_NO_FOOT_REP)) && (!has_repeat || !ir.lirc.repeats)) { - mod_enable = 0; - cycles = ir.lirc.sfoot; - ir.state++; - break; - case LIRC_FOOT_P: - mod_enable = 1; - cycles = ir.lirc.pfoot; - ir.state++; - break; - } - case LIRC_GAP: - default: - mod_enable = 0; - ir.lirc.bit = 0; - ir.cmd = ir.actcmd; - ir.lirc.pre_data = ir.lirc.actpre_data; - ir.lirc.post_data = ir.lirc.actpost_data; - - if((ir.lirc.repeat_gap && has_repeat && ir.lirc.repeats) | (is_RF && (ir.lirc.repeats >= ir.lirc.min_repeat))) - gap = ir.lirc.repeat_gap; - else - gap = ir.lirc.gap; - - if(is_const && (ir.lirc.cycles_counter < gap)) - cycles = gap - ir.lirc.cycles_counter; - else - cycles = gap; - - if((ir.lirc.repeats >= ir.lirc.min_repeat) && ir.lirc.stop) { - ir.state = LIRC_IDLE; - } - else { - if(ir.lirc.repeats < 0xff) - ir.lirc.repeats++; - ir.state = LIRC_HEAD_P; - } - } -} - -void LIRC_Init(unsigned char map) -{ - unsigned long freq; - struct CODE_TABLE_L *lirctable; - - if(map < LIRC.num_tables) { - - lirctable = (struct CODE_TABLE_L*)&(LIRC.table[map]); - - copyMapI((unsigned int*)LIRC.table[map].codes); - setIR(LIRC_Module); - - if(lirctable->flags&LIRC_RF) { - hi_border = 0; - lo_border = 1; - freq = 20000; - } - else { - freq = lirctable->freq; - if(!freq) - freq = 38000; - - if(lirctable->duty_cycle == 0) { //default 50% - hi_border = 1; - lo_border = 2; - } - else if(lirctable->duty_cycle <= 25) { - hi_border = 1; - lo_border = 4; - } - else if(lirctable->duty_cycle <= 33) { - hi_border = 1; - lo_border = 3; - } - else if(lirctable->duty_cycle <= 50) { - hi_border = 1; - lo_border = 2; - } - else if(lirctable->duty_cycle <= 66) { - hi_border = 2; - lo_border = 3; - } - else { //75% - hi_border = 3; - lo_border = 4; - } - } - - T1MR0 = 15000000 / (freq * lo_border); - - - ir.lirc.phead = (lirctable->phead * freq) / 1000000; - ir.lirc.shead = (lirctable->shead * freq) / 1000000; - - ir.lirc.plead = (lirctable->plead * freq) / 1000000; - - ir.lirc.actpre_data = (lirctable->pre_data)<<(32-lirctable->pre_data_bits); - ir.lirc.pre_data_bits = lirctable->pre_data_bits; - ir.lirc.pre_p = (lirctable->pre_p * freq) / 1000000; - ir.lirc.pre_s = (lirctable->pre_s * freq) / 1000000; - - ir.lirc.post_p = (lirctable->post_p * freq) / 1000000; - ir.lirc.post_s = (lirctable->post_s * freq) / 1000000; - ir.lirc.actpost_data = (lirctable->post_data)<<(32-lirctable->post_data_bits); - ir.lirc.post_data_bits = lirctable->post_data_bits; - - ir.lirc.ptrail = (lirctable->ptrail * freq) / 1000000; - - ir.lirc.pfoot = (lirctable->pfoot * freq) / 1000000; - ir.lirc.sfoot = (lirctable->sfoot * freq) / 1000000; - - ir.lirc.prepeat = (lirctable->prepeat * freq) / 1000000; - ir.lirc.srepeat = (lirctable->srepeat * freq) / 1000000; - - ir.lirc.pzero = (lirctable->pzero * freq) / 1000000; - ir.lirc.szero = (lirctable->szero * freq) / 1000000; - ir.lirc.pone = (lirctable->pone * freq) / 1000000; - ir.lirc.sone = (lirctable->sone * freq) / 1000000; - ir.lirc.ptwo = (lirctable->ptwo * freq) / 1000000; - ir.lirc.stwo = (lirctable->stwo * freq) / 1000000; - ir.lirc.pthree = (lirctable->pthree * freq) / 1000000; - ir.lirc.sthree = (lirctable->sthree * freq) / 1000000; - - ir.lirc.gap = (lirctable->gap * freq) / 1000000; - ir.lirc.repeat_gap = (lirctable->repeat_gap * freq) / 1000000; - - ir.lirc.rc6_bit = lirctable->rc6_bit; - ir.lirc.flags = lirctable->flags; - ir.lirc.bits = lirctable->bits; - ir.lirc.min_repeat = lirctable->min_repeat; - - ir.cmd = 0; - ir.actcmd = 0; - ir.lirc.stop = 0; - ir.state = LIRC_IDLE; - ir.lirc.bit = 0; - ir.lirc.map = map; - - } -} - -void LIRC_Send(unsigned long cmd) -{ - unsigned long togglemask; - if(cmd != 0x0000) { - - ir.lirc.pre_data = ir.lirc.actpre_data; - ir.actcmd = cmd<<(32-ir.lirc.bits); - ir.lirc.post_data = ir.lirc.actpost_data; - ir.lirc.stop = 0; - ir.lirc.repeats = 0; - - if(ir.toggle & 0x01) { - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask) << (32-ir.lirc.post_data_bits); - ir.lirc.post_data ^= togglemask; - - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask>>ir.lirc.post_data_bits) << (32-ir.lirc.bits); - ir.actcmd ^= togglemask; - - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask>>(ir.lirc.post_data_bits + ir.lirc.bits)) << (32-ir.lirc.pre_data_bits); - ir.lirc.pre_data ^= togglemask; - } - - if(ir.state == LIRC_IDLE) { - ir.cmd = ir.actcmd; - ir.lirc.bit = 0; - ir.state++; - if(is_RF) { - RFasyncmode(true); - cc1100_write1(FREQ2,((LIRC.table[ir.lirc.map].freq)>>16) & 0xFF); - cc1100_write1(FREQ1,((LIRC.table[ir.lirc.map].freq)>>8) & 0xFF); - cc1100_write1(FREQ0,(LIRC.table[ir.lirc.map].freq) & 0xFF); - cc1100_strobe(STX); - } - runIR(); - } - } -} - -void LIRC_Repeat(void) { - -} - -void LIRC_Stop(void) -{ - ir.lirc.stop = 1; - if(ir.lirc.bits){ - while(ir.state != LIRC_IDLE); - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); - if(is_RF) { - RFasyncmode(false); - } -} diff --git a/boop/trunk/infrared/ir_lirc.h b/boop/trunk/infrared/ir_lirc.h deleted file mode 100644 index 2154aa9..0000000 --- a/boop/trunk/infrared/ir_lirc.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - ir_lirc.h - lirc ir encoder - Copyright (C) 2009 - - 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 3 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, see . -*/ - -#ifndef IR_LIRC_H -#define IR_LIRC_H - - -#define LIRC_RC5 0x0002 /* IR data follows RC5 protocol */ -#define LIRC_SHIFT_ENC LIRC_RC5 /* IR data is shift encoded (name obsolete) */ -#define LIRC_RC6 0x0004 /* IR data follows RC6 protocol */ -#define LIRC_RCMM 0x0008 /* IR data follows RC-MM protocol */ -#define LIRC_SPACE_ENC 0x0010 /* IR data is space encoded */ -//#define LIRC_SPACE_FIRST 0x0020 /* bits are encoded as space+pulse */ -//#define LIRC_GOLDSTAR 0x0040 /* encoding found on Goldstar remote */ -//#define LIRC_GRUNDIG 0x0080 /* encoding found on Grundig remote */ -//#define LIRC_BO 0x0100 /* encoding found on Bang & Olufsen remote */ -#define LIRC_RF 0x0100 /* RF ASK/OOK modulator */ -//#define LIRC_SERIAL 0x0200 /* serial protocol */ -//#define LIRC_XMP 0x0400 /* XMP protocol */ - -/* additinal flags: can be orred together with protocol flag */ -//#define REVERSE 0x0800 -#define LIRC_NO_HEAD_REP 0x1000 /* no header for key repeats */ -#define LIRC_NO_FOOT_REP 0x2000 /* no foot for key repeats */ -#define LIRC_CONST_LENGTH 0x4000 /* signal length+gap is always constant */ -#define LIRC_REPEAT_HEADER 0x8000 /* header is also sent before repeat code */ - -#define is_rc6 (ir.lirc.flags & LIRC_RC6) -#define is_biphase ((ir.lirc.flags & LIRC_RC5) || is_rc6) -#define is_rcmm (ir.lirc.flags & LIRC_RCMM) -#define is_const (ir.lirc.flags & LIRC_CONST_LENGTH) -#define is_RF (ir.lirc.flags & LIRC_RF) -#define has_header (ir.lirc.phead && ir.lirc.shead) -#define has_foot (ir.lirc.pfoot && ir.lirc.sfoot) -#define has_repeat (ir.lirc.prepeat && ir.lirc.srepeat) - -//FS20 Protocol description see http://fhz4linux.info/tiki-index.php?page=FS20%20Protocol -#define calcFS20pre(HC1,par1,HC2,par2) ((1<<18) | (HC1<<10) | (par1<<9) | (HC2<<1) | par2) -#define calcFS20code(Adr,parAdr,Cmd,parCmd,Chk,parChk) ((Adr<<19) | (parAdr<<18) | (Cmd<<10) | (parCmd<<9) | (Chk<<1) | parChk) - -void LIRC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void LIRC_Init(unsigned char map); -void LIRC_Send(unsigned long cmd); -void LIRC_Repeat(void); -void LIRC_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_nrc17.c b/boop/trunk/infrared/ir_nrc17.c deleted file mode 100644 index afbe81f..0000000 --- a/boop/trunk/infrared/ir_nrc17.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - ir_nrc17.c - nokia remote control 17 encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_nrc17.h" -#include "encoders.h" -#include "codes.h" - -#define NRC17_IDLE 0x00 -#define NRC17_PRE_A 0x01 -#define NRC17_PRE_B 0x02 -#define NRC17_START_A 0x03 -#define NRC17_START_B 0x04 -#define NRC17_BIT_A 0x05 -#define NRC17_BIT_B 0x06 -#define NRC17_WAIT 0x07 - -#define NRC17_BONTIME 19 -#define NRC17_BOFFTIME 19 -#define NRC17_PTIME 95 -#define NRC17_GTIME 156 -#define NRC17_WTIME 38 - -#define NRC17_STARTSTOP_DBOX2 0xFEFF -#define NRC17_STARTSTOP_TP720 0x01FF - -const struct irModule NRC17_Module = -{ - NRC17_Encode, - NRC17_Send, - NRC17_Repeat, - NRC17_Stop, - 132, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -void __attribute__ ((section(".text.fastcode"))) NRC17_Encode(void) -{ - switch(ir.state) - { - case NRC17_IDLE: - mod_enable = 0; - break; - - case NRC17_PRE_A: - case NRC17_START_A: - cycles = NRC17_BONTIME; // 0.5 ms - mod_enable = 1; - ir.state++; - break; - - case NRC17_PRE_B: - case NRC17_START_B: - if(ir.state == NRC17_PRE_B) - cycles = NRC17_PTIME; // 2,5 ms - else - cycles = NRC17_BOFFTIME; // 0.5 ms - mod_enable = 0; - ir.state++; - break; - - case NRC17_BIT_A: - if(ir.cmd & 0x0001) - mod_enable = 1; - else - mod_enable = 0; - ir.cmd >>= 1; - ir.state++; - break; - - case NRC17_BIT_B: - if(mod_enable == 1) - mod_enable = 0; - else - mod_enable = 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case NRC17_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = NRC17_BONTIME; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = NRC17_PTIME; - ir.state = NRC17_IDLE; - } - break; - - } -} -/* -void NRC17_CopyMap(unsigned char xtra, unsigned short *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -}*/ - -void NRC17_LoadMap(unsigned char map) -{ - switch(map) - { - case 1: // tp720 - tv, 9 bit data - ir.general.startstop = NRC17_STARTSTOP_TP720; - ir.general.numbits = 9; - break; - default: // nokia dbox2, 16 bit data - ir.general.startstop = NRC17_STARTSTOP_DBOX2; - ir.general.numbits = 16; - break; - } - -} - -void NRC17_Init(unsigned char map) -{ - if(map < NRC17.num_tables) - { - ir.state = NRC17_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.numbits = 16; - ir.general.wait = 0; - ir.general.pause = NRC17_BONTIME; - copyMapS((unsigned short*)NRC17.table[map].codes); - NRC17_LoadMap(map); - setIR(NRC17_Module); - } -} - -void NRC17_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x0000) - { - setIRspeed(NRC17_Module); - if(ir.state == NRC17_IDLE) - { - ir.general.pause = NRC17_WTIME; - ir.cmd = ir.general.startstop; - ir.state++; - runIR(); - } - } -} - -void NRC17_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == NRC17_IDLE) - { - ir.general.pause = NRC17_GTIME; - ir.cmd = ir.actcmd; - ir.state++; - } - } -} - -void NRC17_Stop(void) -{ - if(ir.actcmd != 0x0000) - { -retry: - if(ir.state == NRC17_IDLE) - { - ir.cmd = ir.general.startstop; - ir.state++; - } - else - goto retry; - -waitend: - if(ir.state != NRC17_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - stopIR(); -} - diff --git a/boop/trunk/infrared/ir_nrc17.h b/boop/trunk/infrared/ir_nrc17.h deleted file mode 100644 index 73cf199..0000000 --- a/boop/trunk/infrared/ir_nrc17.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_nrc17.h - nokia remote control 17 encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_NRC17_H -#define IR_NRC17_H - -void NRC17_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void NRC17_Init(unsigned char map); -void NRC17_Send(unsigned long cmd); -void NRC17_Repeat(void); -void NRC17_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_raw.c b/boop/trunk/infrared/ir_raw.c deleted file mode 100644 index 726ade8..0000000 --- a/boop/trunk/infrared/ir_raw.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - ir_raw.c - raw ir encoder - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_raw.h" -#include "encoders.h" -#include "codes.h" -#include "ir_capture.h" -#include "fonty.h" -#include "lcd.h" - -#include "global.h" -#include "bfs.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -struct RAWcmd_* RAWcmd; - -#define RAW_IDLE 0x00 -#define RAW_HI 0x01 -#define RAW_LO 0x02 - -const struct irModule RAW_Module = -{ - RAW_Encode, - RAW_Send, - RAW_Repeat, - RAW_Stop, - 91, // carrier - 1, // carrier-on - 3, // carrier-off -}; - -void __attribute__ ((section(".text.fastcode"))) RAW_Encode (void) -{ - - switch(ir.state) - { unsigned char* x; - - case RAW_IDLE: - mod_enable = 0; - break; - - case RAW_HI: - mod_enable = 1; - - x=(unsigned char*)&(RAWcmd->pulselen[(RAWcmd->data[RAWcmd->CMDstart[ir.actcmd]+ir.general.bit])>>4]); - cycles = x[0] + (x[1]<<8); - ir.state++; - break; - - case RAW_LO: - mod_enable = 0; - x=(unsigned char*)&(RAWcmd->pulselen[(RAWcmd->data[RAWcmd->CMDstart[ir.actcmd]+ir.general.bit])&0x0f]); - cycles = x[0] + (x[1]<<8); - ir.general.bit++; - if (ir.general.bit >= RAWcmd->CMDlen[ir.actcmd]) { - ir.general.bit = 0; - if (ir.general.trail) { - ir.state = RAW_HI; - ir.actcmd = 1; - } - else - ir.state = RAW_IDLE; - } - else - ir.state--; - break; - - - } -} - -void RAW_Init(unsigned char map) -{ - if(map < RAW.num_tables) - { - struct RAWset_ *RAWset; - unsigned long RAWcmdbase; - - int x; - for(x=0;x<42;x++) { - keyMap[x] = (unsigned long)&ir.cmd; - } - ir.actcmd = 0; - ir.general.bit = 0; - ir.state = RAW_IDLE; - setIR(RAW_Module); - ir.cmd = 0xff; - - RAWcmdbase = (unsigned long)BFS_LoadFileAddr(BFS_ID_RAWslot0 + map); - if(!RAWcmdbase) - return; - - RAWset = (struct RAWset_ *)RAWcmdbase; - - x = memcmp(RAWset,"RC01",4); - if(x == 0) { - for(x=0;x<38;x++) { - keyMap[x+4] = (unsigned long)&RAWset->RAWcmd[x]; - } - } - - } -} - -void RAW_Send(unsigned long cmd) -{ - RAWcmd = (struct RAWcmd_*)cmd; - ir.actcmd = RAWcmd->tval; - if(RAWcmd->tval != 0xff) { - setIR(RAW_Module); - T1MR0 = RAWcmd->tval; - hi_border = (RAWcmd->borders)>>4; - lo_border = (RAWcmd->borders)&0x0f; - ir.actcmd = 0; - ir.general.trail = 0x01; - sysInfo |= SYS_IR; - if(ir.state == RAW_IDLE) - { - ir.general.bit = 0; - ir.state++; - runIR(); - } - } -} - -void RAW_Repeat(void) -{ - -} - -void RAW_Stop(void) -{ - if(RAWcmd->tval != 0xff) { - ir.general.trail = 0; - while(ir.state != RAW_IDLE); - ir.actcmd = 2; - if(RAWcmd->CMDstart[1] != RAWcmd->CMDstart[2]) - ir.state++; - - while(ir.state != RAW_IDLE); - stopIR(); - sysInfo &= ~SYS_IR; - } -} diff --git a/boop/trunk/infrared/ir_raw.h b/boop/trunk/infrared/ir_raw.h deleted file mode 100644 index 35a0ad1..0000000 --- a/boop/trunk/infrared/ir_raw.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_raw.h - raw ir encoder - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef IR_RAW_H -#define IR_RAW_H - -void RAW_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RAW_Init(unsigned char map); -void RAW_Send(unsigned long cmd); -void RAW_Repeat(void); -void RAW_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rc5.c b/boop/trunk/infrared/ir_rc5.c deleted file mode 100644 index 8c6c6c1..0000000 --- a/boop/trunk/infrared/ir_rc5.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - ir_rc5.c - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rc5.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RC5_Module = -{ - RC5_Encode, - RC5_Send, - RC5_Repeat, - RC5_Stop, - 139, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RC5_IDLE 0x00 -#define RC5_START_A 0x01 -#define RC5_START_B 0x02 -#define RC5_BIT_A 0x03 -#define RC5_BIT_B 0x04 -#define RC5_WAIT 0x05 - - -#define RC5_BITTIME 32 -#define RC5_WAITTIME 100 - -void __attribute__ ((section(".text.fastcode"))) RC5_Encode (void) -{ - switch(ir.state) - { - case RC5_IDLE: - mod_enable = 0; - break; - - case RC5_START_A: - mod_enable = 0; - ir.state++; - break; - - case RC5_START_B: - mod_enable = 1; - ir.state++; - break; - - case RC5_BIT_A: - if(ir.cmd & 0x1000) - mod_enable = 0; - else - mod_enable = 1; - ir.cmd <<= 1; - ir.state++; - break; - - case RC5_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.bit++; - if(ir.general.bit == 13) - ir.state++; - else - ir.state--; - break; - - case RC5_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= RC5_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = RC5_IDLE; - } - break; - } -} - -void RC5_Init(unsigned char map) -{ - if(map < RC5.num_tables) - { - ir.state = RC5_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - copyMapS((unsigned short*)RC5.table[map].codes); - setIR(RC5_Module); - cycles = RC5_BITTIME; - } -} - -void RC5_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(RC5_Module); - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { - //toggle bit sollte nicht über dir Konfiguration gesetzt werden - if(ir.toggle & 0x01) - ir.actcmd &= 0xF7FF; - else - ir.actcmd |= 0x0800; - RC5_Repeat(); - } -} - -void RC5_Repeat(void) -{ - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { - if(ir.state == RC5_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RC5_Stop(void) -{ - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { -waitend: - if(ir.state != RC5_IDLE) - goto waitend; - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rc5.h b/boop/trunk/infrared/ir_rc5.h deleted file mode 100644 index 7f199ff..0000000 --- a/boop/trunk/infrared/ir_rc5.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rc5.h - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_RC5_H -#define IR_RC5_H - -void RC5_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RC5_Init(unsigned char map); -void RC5_Send(unsigned long cmd); -void RC5_Repeat(void); -void RC5_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rc6.c b/boop/trunk/infrared/ir_rc6.c deleted file mode 100644 index d42b43a..0000000 --- a/boop/trunk/infrared/ir_rc6.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - ir_rc6.c - phillips rc6 protocoll encoder - Copyright (C) 2008 p.c.squirrel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rc6.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RC6_Module = -{ - RC6_Encode, - RC6_Send, - RC6_Repeat, - RC6_Stop, - 136, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RC6_IDLE 0x00 -#define RC6_LEADER_A 0x01 -#define RC6_LEADER_B 0x02 -#define RC6_HEADER_BIT_A 0x03 -#define RC6_HEADER_BIT_B 0x04 -#define RC6_TRAILER_BIT_A 0x05 -#define RC6_TRAILER_BIT_B 0x06 -#define RC6_BIT_A 0x07 -#define RC6_BIT_B 0x08 -#define RC6_WAIT 0x09 - - -#define RC6_BITTIME 16 -#define RC6_WAITTIME_M0 188 //~80 ms -#define RC6_WAITTIME_M6 155 - -void __attribute__ ((section(".text.fastcode"))) RC6_Encode (void) -{ - cycles = RC6_BITTIME; //? - switch(ir.state) - { - case RC6_IDLE: - mod_enable = 0; - break; - - case RC6_LEADER_A: - mod_enable = 1; - cycles = RC6_BITTIME*6; - ir.state++; - break; - - case RC6_LEADER_B: - mod_enable = 0; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_HEADER_BIT_A: - if(ir.general.header_cmd & 0x8) //0b1000 4. bit SB, mb2, mb1, mb0 - mod_enable = 1; - else - mod_enable = 0; - ir.general.header_cmd <<= 1; - cycles = RC6_BITTIME; - ir.state++; - break; - - case RC6_HEADER_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.header_bit++; - cycles = RC6_BITTIME; - if(ir.general.header_bit == 4) - ir.state++; - else - ir.state--; - break; - - case RC6_TRAILER_BIT_A: - if(ir.general.trail) - mod_enable = 1; - else - mod_enable = 0; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_TRAILER_BIT_B: - if(ir.general.trail) - mod_enable = 0; - else - mod_enable = 1; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_BIT_A: - if(ir.cmd & 0x80000000) - mod_enable = 1; - else - mod_enable = 0; - ir.cmd <<= 1; - ir.state++; - break; - - case RC6_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case RC6_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= ir.general.waittime) - { - ir.general.bit = 0; - ir.general.header_bit = 0; - ir.general.wait = 0; - ir.state = RC6_IDLE; - } - break; - } -} - -void RC6_Init(unsigned char map) -{ - if(map < RC6.num_tables) - { - ir.state = RC6_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.wait = 0; - ir.general.bit = 0; - copyMapI((unsigned int*)RC6.table[map].codes); - setIR(RC6_Module); - cycles = RC6_BITTIME; - } -} - -void RC6_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - setIRspeed(RC6_Module); - -// if(ir.general.toggle & 0x01) - // ir.actcmd &= 0xF7FF; - RC6_Repeat(); -} - -void RC6_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == RC6_IDLE) - { - ir.cmd = ir.actcmd; - if(ir.cmd > 0xffff) { - if(ir.toggle & 0x01) - ir.cmd &= 0xFFFF7FFF; - else - ir.cmd |= 0x00008000; - ir.general.numbits = 32; - ir.general.header_cmd = 0x0E; //0b1110 ->Mode 6; - ir.general.trail = 0; - ir.general.waittime = RC6_WAITTIME_M6; - } - else { - ir.cmd <<=16; - ir.general.numbits = 16; - ir.general.header_cmd = 0x08; //0b1000 ->Mode 0; - ir.general.trail = ir.toggle & 0x01; - ir.general.waittime = RC6_WAITTIME_M0; - } - ir.general.header_bit = 0; - ir.state++; - runIR(); - } - } -} - -void RC6_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RC6_IDLE) - goto waitend; - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rc6.h b/boop/trunk/infrared/ir_rc6.h deleted file mode 100644 index 1347e6f..0000000 --- a/boop/trunk/infrared/ir_rc6.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rc6.h - phillips rc6 protocoll encoder - Copyright (C) 2008 p.c.squirrel - - 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 3 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, see . -*/ - -#ifndef IR_RC6_H -#define IR_RC6_H - -void RC6_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RC6_Init(unsigned char map); -void RC6_Send(unsigned long cmd); -void RC6_Repeat(void); -void RC6_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rca.c b/boop/trunk/infrared/ir_rca.c deleted file mode 100644 index 84e95d5..0000000 --- a/boop/trunk/infrared/ir_rca.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - ir_rca.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rca.h" -#include "encoders.h" -#include "codes.h" -#include "global.h" - -const struct irModule RCA_Module = -{ - RCA_Encode, - RCA_Send, - RCA_Repeat, - RCA_Stop, - 134, // carrier - 1, // carrier-on - 2 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RCA_IDLE 0x00 -#define RCA_PRE_A 0x01 -#define RCA_PRE_B 0x02 -#define RCA_BIT_A 0x03 -#define RCA_BIT_B 0x04 -#define RCA_IBIT_A 0x05 -#define RCA_IBIT_B 0x06 -#define RCA_STOP 0x07 -#define RCA_WAIT 0x08 - -#define RCA_NUMBITS 12 -#define RCA_BITTIME 28 -#define RCA_BIT0 2*RCA_BITTIME -#define RCA_BIT1 4*RCA_BITTIME -#define RCA_PRETIME 8*RCA_BITTIME -#define RCA_WAITTIME 16 - -void __attribute__ ((section(".text.fastcode"))) RCA_Encode (void) -{ - switch(ir.state) - { - case RCA_IDLE: - mod_enable = 0; - break; - - case RCA_PRE_A: - cycles = RCA_PRETIME; - mod_enable = 1; - ir.state++; - break; - - case RCA_PRE_B: - mod_enable = 0; - ir.cmd = ir.actcmd; - ir.state++; - break; - - case RCA_BIT_A: - case RCA_IBIT_A: - case RCA_STOP: - cycles = RCA_BITTIME; - mod_enable = 1; - ir.state++; - break; - - case RCA_BIT_B: - case RCA_IBIT_B: - mod_enable = 0; - if(ir.cmd & 0x0800) - cycles = RCA_BIT1; - else - cycles = RCA_BIT0; - ir.cmd <<= 1; - ir.general.bit++; - if(ir.general.bit == RCA_NUMBITS) - { - if(ir.state == RCA_BIT_B) - { - ir.cmd = ~ir.actcmd; - ir.general.bit = 0; - } - ir.state++; - } - else - ir.state--; - break; - - case RCA_WAIT: - mod_enable = 0; - cycles = RCA_BITTIME; - ir.general.wait++; - if(ir.general.wait >= RCA_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - if (ir.general.trail) - ir.state = RCA_PRE_A; - else - ir.state = RCA_IDLE; - } - break; - } -} - -void RCA_LoadMap(unsigned char map) -{ - switch(map) - { - default: - copyMapPC(0x0500, (unsigned char*)RCA.table[map].codes); - break; - } -} -void RCA_Init(unsigned char map) -{ - if(map < RCA.num_tables) - { - ir.state = RCA_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - RCA_LoadMap(map); - setIR(RCA_Module); - cycles = RCA_BITTIME; - } -} - -void RCA_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x0000) { - setIRspeed(RCA_Module); - ir.general.trail = 0x01; - sysInfo |= SYS_IR; - if (ir.state != RCA_IDLE) - while(ir.state != RCA_IDLE); - ir.state = RCA_PRE_A; - runIR(); - } -} - -void RCA_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - - if(ir.state == RCA_IDLE) - { - //ir.state++; - //runIR(); - } - } -} - -void RCA_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { - ir.general.trail = 0; - sysInfo &= ~SYS_IR; -waitend: - if(ir.state != RCA_IDLE) - goto waitend; - } - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rca.h b/boop/trunk/infrared/ir_rca.h deleted file mode 100644 index 19738c8..0000000 --- a/boop/trunk/infrared/ir_rca.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rca.h - rca protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_RCA_H -#define IR_RCA_H - -void RCA_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RCA_Init(unsigned char map); -void RCA_Send(unsigned long cmd); -void RCA_Repeat(void); -void RCA_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rcmm.c b/boop/trunk/infrared/ir_rcmm.c deleted file mode 100644 index 2424391..0000000 --- a/boop/trunk/infrared/ir_rcmm.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - ir_rcmm.c - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rcmm.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RCMM_Module = -{ - RCMM_Encode, - RCMM_Send, - RCMM_Repeat, - RCMM_Stop, - 139, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RCMM_IDLE 0x00 -#define RCMM_HEADER_A 0x01 -#define RCMM_HEADER_B 0x02 -#define RCMM_BIT_A 0x03 -#define RCMM_BIT_B 0x04 -#define RCMM_TRAIL 0x05 -#define RCMM_WAIT 0x06 - -#define RCMM_HEADER_ON 15 -#define RCMM_HEADER_OFF 10 -#define RCMM_BIT_ON 6 -#define RCMM_BIT_00 10 -#define RCMM_BIT_01 16 -#define RCMM_BIT_10 22 -#define RCMM_BIT_11 28 -#define RCMM_PTIME 110; - -const unsigned char ir_times[4] = { RCMM_BIT_00, RCMM_BIT_01, RCMM_BIT_10, RCMM_BIT_11 }; - -void __attribute__ ((section(".text.fastcode"))) RCMM_Encode (void) -{ - switch(ir.state) - { - case RCMM_IDLE: - mod_enable = 0; - break; - - case RCMM_HEADER_A: - case RCMM_BIT_A: - mod_enable = 1; - if(ir.state == RCMM_HEADER_A) - cycles = RCMM_HEADER_ON; - else - cycles = RCMM_BIT_ON; - ir.state++; - break; - - case RCMM_HEADER_B: - mod_enable = 0; - cycles = RCMM_HEADER_OFF; - ir.state++; - break; - - case RCMM_BIT_B: - mod_enable = 0; - cycles = ir_times[(ir.cmd & 0xC0000000) >> 30]; - ir.cmd <<= 2; - ir.general.bit += 2; - if(ir.general.bit == ir.general.len) - ir.state++; - else - ir.state--; - break; - - case RCMM_TRAIL: - if(ir.general.trail) - { - mod_enable = 1; - cycles = RCMM_BIT_ON; - } - else - cycles = 1; - ir.state++; - break; - - case RCMM_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = RCMM_BIT_ON; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = RCMM_PTIME; - ir.state = RCMM_IDLE; - } - break; - - - } -} - -void RCMM_LoadMap(unsigned char map) -{ - copyMapI((unsigned int*)RCMM.table[map].codes); - - switch(map) - { - case 1: - ir.general.len = 32; - ir.general.trail = 1; - ir.general.togglebit = 16; - break; - default: - ir.general.len = 32; - ir.general.trail = 1; - ir.general.togglebit = 0; - break; - } -} - -void RCMM_Init(unsigned char map) -{ - if(map < RCMM.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.state = RCMM_IDLE; - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = RCMM_PTIME; - RCMM_LoadMap(map); - setIR(RCMM_Module); - } -} - -void RCMM_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x00000000) { - if(ir.general.togglebit) { - if(ir.toggle & 0x01) - ir.actcmd &= ~(1<<(ir.general.togglebit-1)); - else - ir.actcmd |= 1<<(ir.general.togglebit-1); - } - setIRspeed(RCMM_Module); - RCMM_Repeat(); - } -} - -void RCMM_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == RCMM_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RCMM_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RCMM_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - ir.toggle++; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rcmm.h b/boop/trunk/infrared/ir_rcmm.h deleted file mode 100644 index b71dec4..0000000 --- a/boop/trunk/infrared/ir_rcmm.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rcmm.h - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_RCMM_H -#define IR_RCMM_H - -void RCMM_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RCMM_Init(unsigned char map); -void RCMM_Send(unsigned long cmd); -void RCMM_Repeat(void); -void RCMM_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rec80.c b/boop/trunk/infrared/ir_rec80.c deleted file mode 100644 index 6f4f8b1..0000000 --- a/boop/trunk/infrared/ir_rec80.c +++ /dev/null @@ -1,186 +0,0 @@ -/* - ir_rec80.c - nec rec80 and derivates ir encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rec80.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule REC80_Module = -{ - REC80_Encode, - REC80_Send, - REC80_Repeat, - REC80_Stop, - 151, // carrier - 1, // carrier-on - 3 // carrier-off -}; - - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define REC80_IDLE 0x00 -#define REC80_HEAD_A 0x01 -#define REC80_HEAD_B 0x02 -#define REC80_PRE_A 0x03 -#define REC80_PRE_B 0x04 -#define REC80_BIT_A 0x05 -#define REC80_BIT_B 0x06 -#define REC80_TRAIL 0x07 -#define REC80_WAIT 0x08 - -#define REC80_HEADER_1 128 -#define REC80_HEADER_0 51 -#define REC80_BONTIME 13 -#define REC80_BITTIME_0 13 -#define REC80_BITTIME_1 38 -#define REC80_WAITTIME 187 - -void __attribute__ ((section(".text.fastcode"))) REC80_Encode (void) -{ - switch(ir.state) - { - case REC80_IDLE: - mod_enable = 0; - break; - - case REC80_HEAD_B: - mod_enable = 0; - cycles = REC80_HEADER_0; - ir.cmd = ir.general.preamble; - ir.general.bit = 0; - ir.state++; - break; - - case REC80_HEAD_A: - case REC80_PRE_A: - case REC80_BIT_A: - case REC80_TRAIL: - mod_enable = 1; - if(ir.state == REC80_HEAD_A) - cycles = REC80_HEADER_1; - else - cycles = REC80_BONTIME; - ir.state++; - break; - - case REC80_PRE_B: - case REC80_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = REC80_BITTIME_1; - else - cycles = REC80_BITTIME_0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - { - if(ir.state == REC80_PRE_B) - { - ir.general.bit = 0; - ir.cmd = ir.actcmd; - } - ir.state++; - } - else - ir.state--; - break; - - case REC80_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = REC80_BONTIME; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = REC80_IDLE; - } - break; - } -} - -void REC80_LoadMap(unsigned char map) -{ - switch(map) - { - default: - ir.general.preamble = 0x00A02002; - copyMapI((unsigned int*)REC80.table[map].codes); - break; - } -} - -void REC80_Init(unsigned char map) -{ - if(map < REC80.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.general.bit = 0; - ir.general.numbits = 24; - ir.general.wait = 0; - ir.general.pause = REC80_WAITTIME; - ir.state = REC80_IDLE; - REC80_LoadMap(map); - setIR(REC80_Module); - } -} - -void REC80_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.actcmd & 0x80000000) - ir.general.numbits = 24; - else - ir.general.numbits = 0; - - ir.actcmd &= 0x0FFFFFFF; - - setIRspeed(REC80_Module); - REC80_Repeat(); -} - -void REC80_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == REC80_IDLE) - { - ir.state++; - runIR(); - } - } -} - -void REC80_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != REC80_IDLE) - goto waitend; - } - ir.actcmd = 0x00000000; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_rec80.h b/boop/trunk/infrared/ir_rec80.h deleted file mode 100644 index 641408e..0000000 --- a/boop/trunk/infrared/ir_rec80.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rec80.h - nec rec80 and derivates ir encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_REC80_H -#define IR_REC80_H - -void REC80_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void REC80_Init(unsigned char map); -void REC80_Send(unsigned long cmd); -void REC80_Repeat(void); -void REC80_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_recs80.c b/boop/trunk/infrared/ir_recs80.c deleted file mode 100644 index d15dbd1..0000000 --- a/boop/trunk/infrared/ir_recs80.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - ir_recs80.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_recs80.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RECS80_Module = -{ - RECS80_Encode, - RECS80_Send, - RECS80_Repeat, - RECS80_Stop, - 128, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RECS80_IDLE 0x00 -#define RECS80_BIT_A 0x01 -#define RECS80_BIT_B 0x02 -#define RECS80_STOP 0x03 -#define RECS80_WAIT 0x04 - -#define RECS80_NUMBITS 11 -#define RECS80_BITTIME 7 -#define RECS80_BIT0 27*RECS80_BITTIME -#define RECS80_BIT1 41*RECS80_BITTIME -#define RECS80_WAITTIME 10 - -void __attribute__ ((section(".text.fastcode"))) RECS80_Encode (void) -{ - switch(ir.state) - { - case RECS80_IDLE: - mod_enable = 0; - break; - - case RECS80_BIT_A: - case RECS80_STOP: - cycles = RECS80_BITTIME; - mod_enable = 1; - ir.state++; - break; - - case RECS80_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x0400) - cycles = RECS80_BIT1; - else - cycles = RECS80_BIT0; - ir.cmd <<= 1; - ir.general.bit++; - if(ir.general.bit == RECS80_NUMBITS) - ir.state++; - else - ir.state--; - break; - - case RECS80_WAIT: - mod_enable = 0; - cycles = RECS80_BIT0; - ir.general.wait++; - if(ir.general.wait >= RECS80_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = RECS80_IDLE; - } - break; - } -} - -void RECS80_Init(unsigned char map) -{ - if(map < RECS80.num_tables) - { - ir.state = RECS80_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - ir.toggle = 1; - copyMapS((unsigned short*)RECS80.table[map].codes); - setIR(RECS80_Module); - cycles = RECS80_BITTIME; - } -} - -void RECS80_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.toggle & 0x01) - ir.actcmd |= 0x0200; - setIRspeed(RECS80_Module); - RECS80_Repeat(); -} - -void RECS80_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == RECS80_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RECS80_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RECS80_IDLE) - goto waitend; - } - ir.toggle++; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_recs80.h b/boop/trunk/infrared/ir_recs80.h deleted file mode 100644 index fbcbe99..0000000 --- a/boop/trunk/infrared/ir_recs80.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_recs80.h - phillips recs80 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_RECS80_H -#define IR_RECS80_H - -void RECS80_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RECS80_Init(unsigned char map); -void RECS80_Send(unsigned long cmd); -void RECS80_Repeat(void); -void RECS80_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rf.c b/boop/trunk/infrared/ir_rf.c deleted file mode 100644 index b1dcbe3..0000000 --- a/boop/trunk/infrared/ir_rf.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - ir_rf.c - RF IR encoder - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rf.h" -#include "encoders.h" -#include "codes.h" -#include "rf.h" - -const struct irModule IRRF_Module = -{ - IRRF_Encode, - IRRF_Send, - IRRF_Repeat, - IRRF_Stop, - 75, // carrier turbo mode - 1, // carrier-on - 4 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define IRRF_IDLE 0x00 -#define IRRF_WAIT 0x01 - -#define IRRF_BITTIME 40 -#define IRRF_WAITTIME 125 - -void __attribute__ ((section(".text.fastcode"))) IRRF_Encode (void) -{ - switch(ir.state) - { - case IRRF_IDLE: - mod_enable = 0; - break; - - case IRRF_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= IRRF_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = IRRF_IDLE; - } - break; - } -} - -void IRRF_Init(unsigned char map) -{ - if(map < IRRF.num_tables) - { - ir.state = IRRF_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - copyMapS((unsigned short*)IRRF.table[map].codes); - setIR(IRRF_Module); - cycles = IRRF_BITTIME; - } -} - -void IRRF_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - ir.general.trail=(unsigned int)openEP(0,0, packet_RFenc); - setIRspeed(IRRF_Module); - - if((ir.toggle & 0x01) &&(ir.actcmd != 0x0000)) - ir.actcmd |= 0x0080; - IRRF_Repeat(); -} - -void IRRF_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == IRRF_IDLE) - { - struct RFendpoint_* cur_ep; - cur_ep = (struct RFendpoint_*)ir.general.trail; - if((cur_ep) && !(cur_ep->flags & EPnewdata)) { - cur_ep->dest = (ir.actcmd & 0xff00) >> 8; - cur_ep->data[0] = (ir.actcmd & 0x00ff); - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata; - - RF_changestate(RFtx); - } - ir.state++; - runIR(); - } - } -} - -void IRRF_Stop(void) -{ - if(ir.actcmd != 0x00000000) - while(ir.state != IRRF_IDLE); - - closeEP((struct RFendpoint_*)ir.general.trail); - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rf.h b/boop/trunk/infrared/ir_rf.h deleted file mode 100644 index 2f3c546..0000000 --- a/boop/trunk/infrared/ir_rf.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - iir_rf.h - RF IR encoder - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef IR_RF_H -#define IR_RF_H - -void IRRF_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void IRRF_Init(unsigned char map); -void IRRF_Send(unsigned long cmd); -void IRRF_Repeat(void); -void IRRF_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_selector.c b/boop/trunk/infrared/ir_selector.c deleted file mode 100644 index 385525d..0000000 --- a/boop/trunk/infrared/ir_selector.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - ir_selector.c - select ir encoder & codetable - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "infrared.h" -#include "codes.h" -#include "encoders.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "ir_selector.h" -#include "bfs.h" -#include "ir_capture.h" -#include "controls.h" -#include "global.h" - -extern volatile unsigned char autorepeat; -extern unsigned char act_encoder, act_set; - -const struct irDeviceTable_ default_irDevTab = -{ - 0x04, - 0x00, - { - { 0x01, 0x00 }, - { 0x02, 0x00 }, - { 0xff, 0xff }, - { 0xff, 0xff } - } -}; - -struct irDeviceTable_ irDevTab; - -char* getEncName(unsigned char enc) -{ - return (char*) encoders.encoder[enc].name; -} - -char* getSetName(unsigned char enc, unsigned char set) -{ - struct TABLES_C *ctab; - struct TABLES_S *stab; - struct TABLES_I *itab; - struct TABLES_N *ntab; - struct TABLES_L *ltab; - struct RAWset_ *RAWset; - - if (enc < encoders.num_encoders) { - switch(encoders.encoder[enc].type) - { - case 0: - ctab = (TABLES_C*)encoders.encoder[enc].data; - if (set < ctab->num_tables) - return (char*) ctab->table[set].name; - break; - case 1: - stab = (TABLES_S*)encoders.encoder[enc].data; - if (set < stab->num_tables) - return (char*) stab->table[set].name; - break; - case 2: - itab = (TABLES_I*)encoders.encoder[enc].data; - if (set < itab->num_tables) - return (char*) itab->table[set].name; - break; - case 3: - ntab = (TABLES_N*)encoders.encoder[enc].data; - if (set < ntab->num_tables) { - RAWset = (struct RAWset_*)BFS_LoadFileAddr(BFS_ID_RAWslot0 + set); - if(RAWset && (RAWset->name[0] != 0xff)) { - return (char*) RAWset->name; - } - else - return (char*) ntab->table[set].name; - } - break; - case 4: - ltab = (TABLES_L*)encoders.encoder[enc].data; - if (set < ltab->num_tables) { - return (char*) ltab->table[set].name; - } - break; - } - } - - return "unknown\0"; -} - -unsigned char EncIsValid(unsigned char enc, unsigned char set) -{ - struct TABLES_C *ctab; - - if (!(enc < encoders.num_encoders)) - return 0; - ctab = (TABLES_C*)encoders.encoder[enc].data; - if (!(set < ctab->num_tables)) - return 0; - return 1; -} - -unsigned char listSet(unsigned int enc, unsigned char sset) -{ - unsigned char set; - - if (!(sset < (((TABLES_C*)(encoders.encoder[enc].data))->num_tables))) - sset = 0; - - lcd_fill(0); - set_font(BOLDFONT); - draw_hexC(0,0,((TABLES_C*)(encoders.encoder[enc].data))->num_tables, 3, DRAW_PUT); - draw_string(16, 0, "remotes in", 3, DRAW_PUT); - draw_string(77, 0, (char*) encoders.encoder[enc].name, 3, DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - - set_font(SMALLFONT); - - for(set=0;set<((TABLES_C*)(encoders.encoder[enc].data))->num_tables; set++) - { - draw_string(1, 15+(set*9), getSetName(enc, set), 3, DRAW_PUT); - } - - draw_string(0, 120, "\"Left\" to return", 3, DRAW_PUT); - draw_string(0, 130, "\"OK\" to select remote", 3, DRAW_PUT); - - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - - while(!KEY_Left) - { - waitKeyUpDown(); - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - if(KEY_OK) - { - return sset; - } - if(KEY_Up) - { - sset--; - if(sset >= ((TABLES_C*)(encoders.encoder[enc].data))->num_tables) - sset = ((TABLES_C*)(encoders.encoder[enc].data))->num_tables-1; - } - if(KEY_Down) - { - sset++; - if(sset == ((TABLES_C*)(encoders.encoder[enc].data))->num_tables) - sset = 0; - } - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - } - return 0xFF; -} - -#define maxenclist 8 -void select_ir(unsigned char *encoder,unsigned char *set) -{ - static unsigned char enc, senc, cenc, sset; - unsigned char moff; - unsigned char moffold; - - if (*encoder < encoders.num_encoders) - senc = *encoder; - else - senc = 0; - cenc = senc; - sset = *set; - moff = 0; - - if(senc >= maxenclist) - moff = senc - maxenclist +1; - -again: - moffold = encoders.num_encoders; - - set_font(BOLDFONT); - - lcd_fill(0); - draw_string(0, 0, "Encoders: ", 3, DRAW_PUT); - draw_hexC(54,0,encoders.num_encoders,3,DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - - set_font(SMALLFONT); - - draw_string(0, 106, "\"OK\" to accept select remote", 3, DRAW_PUT); - draw_string(0, 115, "\"Exit\" to return", 3, DRAW_PUT); - draw_string(0, 124, "\"Right\" to show names for", 3, DRAW_PUT); - draw_string(35, 133, "selected encoder", 3, DRAW_PUT); - set_font(BOLDFONT); - draw_string(0, 142, "Currently Selected:", 3, DRAW_PUT); - draw_string(0, 152, (char*) encoders.encoder[cenc].name, 3, DRAW_PUT); - draw_string(48, 152, getSetName(cenc,sset), 3, DRAW_PUT); - set_font(SMALLFONT); - - while(!KEY_Exit) - { - if(moff!=moffold) { - draw_block(0, 14, 128, 9*maxenclist, 3, DRAW_ERASE); - for(enc=moff;(encnum_tables, 3, DRAW_PUT); - draw_string(15, 15+((enc-moff)*9), "remotes in", 3, DRAW_PUT); - draw_string(65, 15+((enc-moff)*9), (char*) encoders.encoder[enc].name, 3, DRAW_PUT); - } - - if(encoders.num_encoders > moff+maxenclist) { - draw_hline(120,8+9*maxenclist,5,3,DRAW_PUT); - draw_hline(121,9+9*maxenclist,3,3,DRAW_PUT); - draw_hline(122,10+9*maxenclist,1,3,DRAW_PUT); - } - if(moff) { - draw_hline(120,19,5,3,DRAW_PUT); - draw_hline(121,18,3,3,DRAW_PUT); - draw_hline(122,17,1,3,DRAW_PUT); - } - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - } - moffold = moff; - waitKeyUpDown(); - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - if(KEY_Right) - { - enc = sset; - sset = listSet(senc,sset); - if(sset != 0xFF) - cenc = senc; - else - sset = enc; - goto again; - } - if(KEY_Up) - { - senc--; - if(senc= encoders.num_encoders) { - if(encoders.num_encoders > maxenclist) - moff = encoders.num_encoders - maxenclist; - senc = encoders.num_encoders-1; - } - } - if(KEY_Down) - { - senc++; - if(senc == maxenclist+moff) - moff++; - if(senc == encoders.num_encoders) { - moff = 0; - senc = 0; - } - } - if(KEY_OK) - { - //setEncoder(cenc, sset); - *encoder = cenc; - *set = sset; - return; - } - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - } -} - -void remote_click(FORM* form, CONTROL* control) { - unsigned char sel; - - sel = ((LABEL*)control)->tag; - select_ir(&irDevTab.device[sel].encoder, &irDevTab.device[sel].set); - ((LABEL*)control)->caption = getSetName(irDevTab.device[sel].encoder, irDevTab.device[sel].set); - - form_draw(form); -} - -void RC_setting(void) { - unsigned char set; - unsigned char i; - - LABEL label[irDevTab.count]; - LABEL remote[irDevTab.count]; - char caption[irDevTab.count][6]; - - CONTROL* controls[irDevTab.count * 2]; - - for(i=0;i - - 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 3 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, see . -*/ - -#ifndef IR_SELECTOR_H -#define IR_SELECTOR_H - -struct irDevice_ { - unsigned char encoder; - unsigned char set; -}; - -struct irDeviceTable_ { - unsigned char count; - unsigned char active; - struct irDevice_ device[4]; -}; - -struct irDeviceTable_ irDevTab; -const struct irDeviceTable_ default_irDevTab; - -char* getSetName(unsigned char enc, unsigned char set); -unsigned char EncIsValid(unsigned char enc, unsigned char set); -void select_ir(unsigned char *encoder,unsigned char *set); -void RC_setting(void); - -#endif diff --git a/boop/trunk/infrared/ir_sirc.c b/boop/trunk/infrared/ir_sirc.c deleted file mode 100644 index 0bcfa8a..0000000 --- a/boop/trunk/infrared/ir_sirc.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - ir_sirc.c - sony sirc protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_sirc.h" -#include "encoders.h" -#include "codes.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define SIRC_IDLE 0x00 -#define SIRC_START_A 0x01 -#define SIRC_START_B 0x02 -#define SIRC_BIT_A 0x03 -#define SIRC_BIT_B 0x04 -#define SIRC_WAIT 0x05 - -#define SIRC_STARTLEN 96 -#define SIRC_BITLEN_0 24 -#define SIRC_BITLEN_1 48 -#define SIRC_BITOFF 24 -#define SIRC_GTIME 45 - -const struct irModule SIRC_Module = -{ - SIRC_Encode, - SIRC_Send, - SIRC_Repeat, - SIRC_Stop, - 122, // carrier - 1, // carrier-on - 3, // carrier-off -}; - -void __attribute__ ((section(".text.fastcode"))) SIRC_Encode (void) -{ - switch(ir.state) - { - case SIRC_IDLE: - mod_enable = 0; - break; - - case SIRC_START_A: - mod_enable = 1; - cycles = SIRC_STARTLEN; - ir.state++; - break; - - case SIRC_START_B: - mod_enable = 0; - cycles = SIRC_BITOFF; - ir.state++; - break; - - case SIRC_BIT_A: - mod_enable = 1; - if(ir.cmd & 0x01) - cycles = SIRC_BITLEN_1; - else - cycles = SIRC_BITLEN_0; - ir.cmd >>= 1; - ir.state++; - break; - - case SIRC_BIT_B: - mod_enable = 0; - cycles = SIRC_BITOFF; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case SIRC_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = SIRC_BITOFF; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = SIRC_IDLE; - } - break; - - } -} - -void SIRC_Init(unsigned char map) -{ - if(map < SIRC.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.general.bit = 0; - ir.general.numbits = 12; - ir.general.wait = 0; - ir.general.pause = SIRC_GTIME; - ir.state = SIRC_IDLE; - copyMapS((unsigned short*)SIRC.table[map].codes); - setIR(SIRC_Module); - } -} - -void SIRC_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.actcmd & 0x800000) - ir.general.numbits = 20; - else if(ir.actcmd & 0x8000) - ir.general.numbits = 15; - else - ir.general.numbits = 12; - setIRspeed(SIRC_Module); - SIRC_Repeat(); -} - -void SIRC_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SIRC_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void SIRC_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != SIRC_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_sirc.h b/boop/trunk/infrared/ir_sirc.h deleted file mode 100644 index 358096f..0000000 --- a/boop/trunk/infrared/ir_sirc.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_sirc.h - sony sirc protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_SIRC_H -#define IR_SIRC_H - -void SIRC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void SIRC_Init(unsigned char map); -void SIRC_Send(unsigned long cmd); -void SIRC_Repeat(void); -void SIRC_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_spaceenc.c b/boop/trunk/infrared/ir_spaceenc.c deleted file mode 100644 index d6c0ccc..0000000 --- a/boop/trunk/infrared/ir_spaceenc.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - ir_spaceenc.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_spaceenc.h" -#include "encoders.h" -#include "codes.h" -#include "ir_codes/spaceenc/schneider_dtv3_xtra" - -const struct irModule SPACEENC_Module = -{ - SPACEENC_Encode, - SPACEENC_Send, - SPACEENC_Repeat, - SPACEENC_Stop, - 119, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -const struct irModule SPACEENC2_Module = -{ - SPACEENC_Encode, - SPACEENC2_Send, - SPACEENC2_Repeat, - SPACEENC2_Stop, - 119, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -static unsigned int *ir_codes; -static unsigned char *ir_precodes; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define SPACEENC_IDLE 0x00 -#define SPACEENC_PRE_A 0x01 -#define SPACEENC_PRE_B 0x02 -#define SPACEENC_BIT_A 0x03 -#define SPACEENC_BIT_B 0x04 -#define SPACEENC_STOP 0x05 -#define SPACEENC_WAIT 0x06 - -#define SPACEENC_NUMBITS 6 -#define SPACEENC_BITTIME 20 -#define SPACEENC_BIT0 65 -#define SPACEENC_BIT1 150 -#define SPACEENC_WAITTIME 59 - -#define SPACEENC2_BITTIME 14 -#define SPACEENC2_BIT0 7 -#define SPACEENC2_BIT1 28 -#define SPACEENC2_WAITTIME 170 - -void __attribute__ ((section(".text.fastcode"))) SPACEENC_Encode (void) -{ - switch(ir.state) - { - case SPACEENC_IDLE: - mod_enable = 0; - break; - - case SPACEENC_PRE_A: - case SPACEENC_BIT_A: - cycles = ir.general.bittime; - mod_enable = 1; - ir.state++; - break; - - case SPACEENC_PRE_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.prebits) - { - ir.state = SPACEENC_BIT_A; - ir.general.bit = 0; - ir.cmd = ir_codes[ir.actcmd]; - } - else - { - ir.state--; - } - break; - - case SPACEENC_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case SPACEENC_STOP: - cycles = ir.general.bittime; - mod_enable = 1; - ir.state++; - break; - - case SPACEENC_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= ir.general.waittime) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = SPACEENC_IDLE; - } - break; - } -} - -void SPACEENC_LoadMap(unsigned char map) -{ - switch(map) - { - case 1: - ir.general.numbits = SPACEENC_NUMBITS; - ir.general.prebits = 0; - ir.general.pre = 0x00; - ir.general.bittime = SPACEENC_BITTIME; - ir.general.bittime0 = SPACEENC_BIT0; - ir.general.bittime1 = SPACEENC_BIT1; - ir.general.waittime = SPACEENC_WAITTIME; - setIR(SPACEENC_Module); - break; - default: - ir.general.numbits = 32; - ir.general.prebits = 8; - ir.general.bittime = SPACEENC2_BITTIME; - ir.general.bittime0 = SPACEENC2_BIT0; - ir.general.bittime1 = SPACEENC2_BIT1; - ir.general.waittime = SPACEENC2_WAITTIME; - ir_codes = (unsigned int*) dtv3_codes; - ir_precodes = (unsigned char*) dtv3_pre; - setIR(SPACEENC2_Module); - break; - } -} - -void SPACEENC_Init(unsigned char map) -{ - if(map < SPACEENC.num_tables) - { - ir.state = SPACEENC_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.wait = 0; - ir.general.bit = 0; - copyMapC((unsigned char*)SPACEENC.table[map].codes); - SPACEENC_LoadMap(map); - cycles = SPACEENC_BITTIME; - } -} - -void SPACEENC_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(SPACEENC_Module); - SPACEENC_Repeat(); - runIR(); -} - -void SPACEENC_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SPACEENC_IDLE) - { - ir.cmd = ir.actcmd; - ir.state = SPACEENC_BIT_A; - } - } -} - -void SPACEENC_Stop(void) -{ -waitend1: - while(ir.state != SPACEENC_IDLE) - goto waitend1; - - if(ir.actcmd != 0x00000000) - { - SPACEENC_Repeat(); - -waitend2: - if(ir.state != SPACEENC_IDLE) - goto waitend2; - } - ir.actcmd = 0x00000000; - stopIR(); -} - -void SPACEENC2_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - SPACEENC2_Repeat(); -} - -void SPACEENC2_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SPACEENC_IDLE) - { - ir.cmd = ir_precodes[ir.actcmd]; - ir.state = SPACEENC_PRE_A; - runIR(); - } - } -} - -void SPACEENC2_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend2: - if(ir.state != SPACEENC_IDLE) - goto waitend2; - } - ir.actcmd = 0x00000000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_spaceenc.h b/boop/trunk/infrared/ir_spaceenc.h deleted file mode 100644 index 8132701..0000000 --- a/boop/trunk/infrared/ir_spaceenc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - ir_spaceenc.h - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IR_SPACEENC_H -#define IR_SPACEENC_H - -void SPACEENC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void SPACEENC_Init(unsigned char map); -void SPACEENC_Send(unsigned long cmd); -void SPACEENC_Repeat(void); -void SPACEENC_Stop(void); -void SPACEENC2_Send(unsigned long cmd); -void SPACEENC2_Repeat(void); -void SPACEENC2_Stop(void); - -#endif diff --git a/boop/trunk/interrupt/Make.conf b/boop/trunk/interrupt/Make.conf deleted file mode 100644 index e7853f8..0000000 --- a/boop/trunk/interrupt/Make.conf +++ /dev/null @@ -1 +0,0 @@ -SRCS := irq.c diff --git a/boop/trunk/interrupt/irq.c b/boop/trunk/interrupt/irq.c deleted file mode 100644 index 9c8f965..0000000 --- a/boop/trunk/interrupt/irq.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - irq.c - irq core functions - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "irq.h" -#include "soundirq.h" -#include "infraredirq.h" - -#define IRQ_MASK 0x000000C0 - -extern unsigned char bl_val, cmp_val; - -static inline unsigned asm_get_cpsr(void) -{ - unsigned long retval; - asm volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ ); - return retval; -} - -static inline void asm_set_cpsr(unsigned val) -{ - asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (val) ); -} - -unsigned enableIRQ(void) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr(_cpsr & ~IRQ_MASK); - return _cpsr; -} - -unsigned disableIRQ(void) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr(_cpsr | IRQ_MASK); - return _cpsr; -} - -unsigned restoreIRQ(unsigned oldCPSR) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr((_cpsr & ~IRQ_MASK) | (oldCPSR & IRQ_MASK)); - return _cpsr; -} - - -// handle sound, IR, backlight in timer ISR -// user manual section 5.1, p. 62: -// Fast Interrupt reQuest (FIQ) requests have the highest priority. -// (where's the vector? in lpc2220_rom.ld ?) -void __attribute__ ((section(".text.fastcode"))) FIQ_Routine (void) -{ - while ((PWMIR == 0x01) || (T1IR == 1)) - { - if (PWMIR == 0x01) - soundIRQ(); // sound, backlight - if (T1IR == 1) - irIRQ(); // IR - } -} - - -void SWI_Routine (void) { - while (1) ; -} - - -void UNDEF_Routine (void) { - while (1) ; -} - - diff --git a/boop/trunk/interrupt/irq.h b/boop/trunk/interrupt/irq.h deleted file mode 100644 index 23b898a..0000000 --- a/boop/trunk/interrupt/irq.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - irq.h - irq core functions - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef IRQ_H -#define IRQ_H - -#define INT_WDT 0x00000001 -#define INT_CORE0 0x00000004 -#define INT_CORE1 0x00000008 -#define INT_TIMER0 0x00000010 -#define INT_TIMER1 0x00000020 -#define INT_UART0 0x00000040 -#define INT_UART1 0x00000080 -#define INT_PWM 0x00000100 -#define INT_I2C 0x00000200 -#define INT_SPI0 0x00000400 -#define INT_SPI1 0x00000800 -#define INT_PLL 0x00001000 -#define INT_RTC 0x00002000 -#define INT_EINT0 0x00004000 -#define INT_EINT1 0x00008000 -#define INT_EINT2 0x00010000 -#define INT_EINT3 0x00020000 -#define INT_ADC 0x00040000 - -#define INT_SRC_WDT 0 -#define INT_SRC_CORE0 2 -#define INT_SRC_CORE1 3 -#define INT_SRC_TIMER0 4 -#define INT_SRC_TIMER1 5 -#define INT_SRC_UART0 6 -#define INT_SRC_UART1 7 -#define INT_SRC_PWM 8 -#define INT_SRC_I2C 9 -#define INT_SRC_SPI0 10 -#define INT_SRC_SPI1 11 -#define INT_SRC_PLL 12 -#define INT_SRC_RTC 13 -#define INT_SRC_EINT0 14 -#define INT_SRC_EINT1 15 -#define INT_SRC_EINT2 16 -#define INT_SRC_EINT3 17 -#define INT_SRC_ADC 18 - -#define VIC_SLOT_EN 0x00000020 - -void __attribute__ ((section(".text.fastcode"))) FIQ_Routine (void); -void SWI_Routine (void) __attribute__ ((interrupt("SWI"))); -void UNDEF_Routine (void) __attribute__ ((interrupt("UNDEF"))); - - -unsigned enableIRQ(void); -unsigned disableIRQ(void); -unsigned restoreIRQ(unsigned oldCPSR); - -#endif diff --git a/boop/trunk/keyboard/Make.conf b/boop/trunk/keyboard/Make.conf deleted file mode 100644 index 42df737..0000000 --- a/boop/trunk/keyboard/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := keyboard.c -SRCS := keyirq.c diff --git a/boop/trunk/keyboard/keyboard.c b/boop/trunk/keyboard/keyboard.c deleted file mode 100644 index 2be0baa..0000000 --- a/boop/trunk/keyboard/keyboard.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - keyboard.c - button handling - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "keyboard.h" -#include "keyirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" -#include "backlight.h" -#include "irq.h" - - -void initKeys(void) -{ - keys[0] = 0; - keys[1] = 0; - IOCLR2=((1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)|(1<<24)); - FIODIR0 &= ~(1<<30); - startCB(addTimerCB(keyScanner, 15)); - - EXTWAKE |= 0x08; - PINSEL1 |= (1<<29); -} - -void waitKeyUp(void) -{ - while((keys[0] != 0) || (keys[1] != 0)) {}; -} - -extern void cpu_idle(); - -void waitKeyDown(void) -{ - while ((keys[0] == 0) && (keys[1] == 0)) - { - cpu_idle(); - }; - setBacklight(BL_AUTO); // pwm value -} - -inline char isKeyPressed (void) -{ - return ((keys[0] != 0) || (keys[1] != 0)); -} - -signed char getNumKeyValue(void) { - signed char x; - - switch (keys[0]) { - case 0x00000002: - x= 7; - break; - case 0x00000008: - x= 4; - break; - case 0x00000020: - x= 1; - break; - case 0x00020000: - x= 0; - break; - case 0x00040000: - x= 9; - break; - case 0x00080000: - x= 8; - break; - case 0x00100000: - x= 6; - break; - default: - x=-1; - } - switch (keys[1]) { - case 0x00000040: - x= 2; - break; - case 0x00000080: - x= 3; - break; - case 0x00040000: - x= 5; - break; - } - return(x); -} - -#define keynum( _X, _Y ) if(_X) return _Y - -unsigned char getKeynum(void) -{ - keynum(KEY_A, 0); - keynum(KEY_B, 1); - keynum(KEY_C, 2); - keynum(KEY_D, 3); - keynum(KEY_Betty, 4); - keynum(KEY_Exit, 5); - keynum(KEY_Up, 6); - keynum(KEY_Down, 7); - keynum(KEY_Left, 8); - keynum(KEY_Right, 9); - keynum(KEY_OK, 10); - keynum(KEY_Vplus, 11); - keynum(KEY_Vminus, 12); - keynum(KEY_Mute, 13); - keynum(KEY_Pplus, 14); - keynum(KEY_Pminus, 15); - keynum(KEY_1, 16); - keynum(KEY_2, 17); - keynum(KEY_3, 18); - keynum(KEY_4, 19); - keynum(KEY_5, 20); - keynum(KEY_6, 21); - keynum(KEY_7, 22); - keynum(KEY_8, 23); - keynum(KEY_9, 24); - keynum(KEY_0, 25); - keynum(KEY_Minus, 26); - keynum(KEY_AV, 27); - keynum(KEY_Menu, 28); - keynum(KEY_PiP, 29); - keynum(KEY_AB, 30); - keynum(KEY_16_9, 31); - keynum(KEY_Info, 32); - keynum(KEY_VTX1, 33); - keynum(KEY_VTX2, 34); - keynum(KEY_VTX3, 35); - keynum(KEY_Blue, 36); - keynum(KEY_Yellow, 37); - keynum(KEY_Green, 38); - keynum(KEY_Red, 39); - keynum(KEY_TV, 40); - keynum(KEY_Power, 41); - return 42; -} - diff --git a/boop/trunk/keyboard/keyboard.h b/boop/trunk/keyboard/keyboard.h deleted file mode 100644 index d589840..0000000 --- a/boop/trunk/keyboard/keyboard.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - keyboard.h - button handling - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef KEYBOARD_H -#define KEYBOARD_H - - -//Uncomment if you have a swisscom Betty -//#define SWISSCOM - -/* -#define KEY_5 (keys[0] & 0x00000001) -#define KEY_6 (keys[0] & 0x00000002) -#define KEY_C (keys[0] & 0x00000004) -#define KEY_B (keys[0] & 0x00000008) -#define KEY_A (keys[0] & 0x00000010) -#define KEY_1 (keys[0] & 0x00000020) -#define KEY_8 (keys[0] & 0x00000040) -#define KEY_9 (keys[0] & 0x00000080) -#define KEY_D (keys[0] & 0x00000100) -#define KEY_Up (keys[0] & 0x00000200) -#define KEY_Betty (keys[0] & 0x00000400) -#define KEY_4 (keys[0] & 0x00000800) -#define KEY_0 (keys[0] & 0x00001000) -#define KEY_AV (keys[0] & 0x00002000) -#define KEY_Right (keys[0] & 0x00004000) -#define KEY_Left (keys[0] & 0x00008000) -#define KEY_Vplus (keys[0] & 0x00010000) -#define KEY_7 (keys[0] & 0x00020000) -#define KEY_AB (keys[0] & 0x00040000) -#define KEY_16_9 (keys[0] & 0x00080000) -#define KEY_Exit (keys[0] & 0x00100000) -#define KEY_OK (keys[0] & 0x00200000) -#define KEY_Vminus (keys[0] & 0x00400000) -#define KEY_Minus (keys[0] & 0x00800000) -#define KEY_VTX2 (keys[0] & 0x01000000) -#define KEY_VTX3 (keys[0] & 0x02000000) -#define KEY_Pplus (keys[0] & 0x04000000) -#define KEY_Down (keys[0] & 0x08000000) -#define KEY_Menu (keys[0] & 0x10000000) -#define KEY_PiP (keys[0] & 0x20000000) - -#define KEY_Yellow (keys[1] & 0x00000001) -#define KEY_Blue (keys[1] & 0x00000002) -#define KEY_Pminus (keys[1] & 0x00000004) -#define KEY_Mute (keys[1] & 0x00000008) -#define KEY_Info (keys[1] & 0x00000010) -#define KEY_VTX1 (keys[1] & 0x00000020) -#define KEY_TV (keys[1] & 0x00000040) -#define KEY_Power (keys[1] & 0x00000080) -#define KEY_3 (keys[1] & 0x00000100) -#define KEY_2 (keys[1] & 0x00000200) -#define KEY_Red (keys[1] & 0x00000400) -#define KEY_Green (keys[1] & 0x00000800) -*/ - -#ifdef SWISSCOM - #define KEY_B (keys[0] & 0x00000001) - #define KEY_C (keys[0] & 0x00000002) - #define KEY_6 (keys[0] & 0x00000004) - #define KEY_5 (keys[0] & 0x00000008) - #define KEY_Up (keys[0] & 0x00000010) - #define KEY_D (keys[0] & 0x00000020) - #define KEY_9 (keys[0] & 0x00000040) - #define KEY_8 (keys[0] & 0x00000080) - #define KEY_Left (keys[0] & 0x00000100) - #define KEY_Right (keys[0] & 0x00000200) - #define KEY_AV (keys[0] & 0x00000400) - #define KEY_0 (keys[0] & 0x00000800) - #define KEY_OK (keys[0] & 0x00001000) - #define KEY_Exit (keys[0] & 0x00002000) - #define KEY_16_9 (keys[0] & 0x00004000) - #define KEY_AB (keys[0] & 0x00008000) - #define KEY_Down (keys[0] & 0x00010000) - #define KEY_Pplus (keys[0] & 0x00020000) - #define KEY_VTX3 (keys[0] & 0x00040000) - #define KEY_VTX2 (keys[0] & 0x00080000) - #define KEY_Mute (keys[0] & 0x00100000) - #define KEY_Pminus (keys[0] & 0x00200000) - #define KEY_Blue (keys[0] & 0x00400000) - #define KEY_Yellow (keys[0] & 0x00800000) - #define KEY_2 (keys[0] & 0x01000000) - #define KEY_3 (keys[0] & 0x02000000) - #define KEY_Power (keys[0] & 0x04000000) - #define KEY_TV (keys[0] & 0x08000000) - - #define KEY_A (keys[1] & 0x00000001) - #define KEY_1 (keys[1] & 0x00000002) - #define KEY_Betty (keys[1] & 0x00000004) - #define KEY_4 (keys[1] & 0x00000008) - #define KEY_Vplus (keys[1] & 0x00000010) - #define KEY_7 (keys[1] & 0x00000020) - #define KEY_Vminus (keys[1] & 0x00000040) - #define KEY_Minus (keys[1] & 0x00000080) - #define KEY_Menu (keys[1] & 0x00000100) - #define KEY_PiP (keys[1] & 0x00000200) - #define KEY_Info (keys[1] & 0x00000400) - #define KEY_VTX1 (keys[1] & 0x00000800) - #define KEY_Red (keys[1] & 0x00001000) - #define KEY_Green (keys[1] & 0x00002000) - -#else - - #define KEY_OK (keys[0] & 0x00000001) - #define KEY_7 (keys[0] & 0x00000002) - #define KEY_Vplus (keys[0] & 0x00000004) - #define KEY_4 (keys[0] & 0x00000008) - #define KEY_Betty (keys[0] & 0x00000010) - #define KEY_1 (keys[0] & 0x00000020) - #define KEY_A (keys[0] & 0x00000040) - #define KEY_Left (keys[0] & 0x00000080) - #define KEY_Exit (keys[0] & 0x00000100) - #define KEY_Up (keys[0] & 0x00000200) - #define KEY_B (keys[0] & 0x00000400) - #define KEY_16_9 (keys[0] & 0x00000800) - #define KEY_AB (keys[0] & 0x00001000) - #define KEY_D (keys[0] & 0x00002000) - #define KEY_Right (keys[0] & 0x00004000) - #define KEY_C (keys[0] & 0x00008000) - #define KEY_AV (keys[0] & 0x00010000) - #define KEY_0 (keys[0] & 0x00020000) - #define KEY_9 (keys[0] & 0x00040000) - #define KEY_8 (keys[0] & 0x00080000) - #define KEY_6 (keys[0] & 0x00100000) - - #define KEY_Green (keys[1] & 0x00000001) - #define KEY_Red (keys[1] & 0x00000002) - #define KEY_VTX1 (keys[1] & 0x00000004) - #define KEY_Info (keys[1] & 0x00000008) - #define KEY_PiP (keys[1] & 0x00000010) - #define KEY_Menu (keys[1] & 0x00000020) - #define KEY_2 (keys[1] & 0x00000040) - #define KEY_3 (keys[1] & 0x00000080) - #define KEY_Mute (keys[1] & 0x00000100) - #define KEY_Pminus (keys[1] & 0x00000200) - #define KEY_Down (keys[1] & 0x00000400) - #define KEY_Pplus (keys[1] & 0x00000800) - #define KEY_Power (keys[1] & 0x00001000) - #define KEY_TV (keys[1] & 0x00002000) - #define KEY_Blue (keys[1] & 0x00004000) - #define KEY_Yellow (keys[1] & 0x00008000) - #define KEY_VTX3 (keys[1] & 0x00010000) - #define KEY_VTX2 (keys[1] & 0x00020000) - #define KEY_5 (keys[1] & 0x00040000) - #define KEY_Minus (keys[1] & 0x00080000) - #define KEY_Vminus (keys[1] & 0x00100000) - -#endif - -#define AUTO_TIMEOUT 5 - -#define KEY_IDLE 0x00 -#define KEY_PRESS 0x01 -#define KEY_HOLD 0x02 -#define KEY_RELEASE 0x03 - -#define FIOPIN0_KBDINT (1<<30) -#define ANYKEY (!(FIOPIN0 & FIOPIN0_KBDINT)) - -#define testLine(_c) \ -{ \ - if(!(_c)) \ - { \ - keys[half] |= keytest; \ - } \ - keytest <<= 1; \ -} - -volatile unsigned int keys[2]; - -void initKeys(void); -void scanKeys(void); -void waitKeyUp(void); -void waitKeyDown(void); -/// Return 1 if any key is pressed. -inline char isKeyPressed (void); -signed char getNumKeyValue(void); -unsigned char getKeynum(void); - -#define waitKeyUpDown() { waitKeyUp(); waitKeyDown(); } - -#endif diff --git a/boop/trunk/keyboard/keyirq.c b/boop/trunk/keyboard/keyirq.c deleted file mode 100644 index 6a11f45..0000000 --- a/boop/trunk/keyboard/keyirq.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - keyirq.c - keyboard scanning interrupt - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "keyboard.h" -#include "keyirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" -#include "global.h" - -static unsigned char scannerTimeout; -static unsigned char repeatTimeout; -static unsigned char fastToggle; -static unsigned char scannerState = 0; - -#define S_IDLE 0x00 -#define S_PRESSED 0x01 -#define S_HOLD 0x02 -#define S_REPEAT 0x03 - -#define S_REPEATDELAY 6 -#define S_REPEATRATE 4 - -#define MASK0 0x18402000 -#define MASK3 0x00300000 - -void __attribute__ ((section(".text.fastcode"))) keyScanner(unsigned int cb) -{ -#ifdef SWISSCOM - static unsigned int IO2_P, IO2_PC, IO2_0, IO2_1; -#else - static unsigned int temp; - - keys[0] = 0; - keys[1] = 0; -#endif - - if(ANYKEY) - { -#ifdef SWISSCOM - IOSET2= (126<<18); - IO2_P = (1<<18); - IO2_0=0; - IO2_1=0; - keys[0]=0; - keys[1]=0; - for(IO2_PC=18;IO2_PC<=24;IO2_PC++) - { - IOCLR2 = IO2_P; - keys[0] |= ((IOPIN1>>16) & 0xF)<>21) & 0x3)<>1; - keys[0] |= (IOPIN3 & MASK3) >> 14; - - IOSET2 = (1<<18); - IOCLR2 = (1<<19); - - keys[0] |= FIOPIN0>> 3; - keys[0] |= (IOPIN3 & MASK3) >> 16; - - IOSET2 = (1<<19); - IOCLR2 = (1<<20); - - keys[0] |= FIOPIN0>> 5; - keys[0] |= (IOPIN3 & MASK3) >> 18; - - IOSET2 = (1<<20); - IOCLR2 = (1<<21); - - keys[0] |= FIOPIN0 >> 13; - keys[0] |= (IOPIN3 & MASK3) << 8; - - keys[0] = ~keys[0]; - keys[0] &= 0x3FEAD7FD; - - IOSET2 = (1<<21); - IOCLR2 = (1<<22); - - keys[1] = FIOPIN0>> 3; - keys[1] |= (IOPIN3 & MASK3) >> 16; - - IOSET2 = (1<<22); - IOCLR2 = (1<<23); - - keys[1] |= FIOPIN0>> 5; - keys[1] |= (IOPIN3 & MASK3) >> 18; - - IOSET2 = (1<<23); - IOCLR2 = (1<<24); - - keys[1] |= FIOPIN0>> 7; - keys[1] |= (IOPIN3 & MASK3) >> 20; - - keys[1] = ~keys[1]; - keys[1] &= 0x3FA857F; - - temp = (keys[0] & 0x3FE80000)>>3; - keys[0] &= 0x0002D7FD; - keys[0] |= temp; - - temp = (keys[0] & 0x07FFD000)>>1; - keys[0] &= 0x000007FD; - keys[0] |= temp; - - temp = keys[0]>>1; - keys[0] &= 0x00000001; - keys[0] |= temp; - - temp = (keys[0] & 0x1FFF000)>>1; - keys[0] &= 0x7FF; - keys[0] |= temp; - - temp = (keys[1] & 0x03FA8000) >> 8; - keys[1] &= 0x0000057F; - keys[1] |= temp; - - temp = keys[0] & 0x00E00000; - keys[0] &= 0x1FFFFF; - keys[1] |= (temp>>3); - - FIOMASK0 &= MASK0; - IOCLR2=((1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)); -#endif - } - - if((keys[0] == 0) && (keys[1] == 0)) - { - scannerTimeout = 0; - repeatTimeout = S_REPEATDELAY; - scannerState = S_IDLE; - } - else if(scannerState == S_IDLE) - { - scannerState = S_PRESSED; - } - - switch(scannerState) - { - case S_PRESSED: - scannerTimeout++; - if((scannerTimeout > repeatTimeout) && (repeatTimeout != 0) && !(sysInfo & SYS_IR)) - { - repeatTimeout = S_REPEATRATE; - scannerState++; - } - break; - case S_HOLD: - keys[0] = 0; - keys[1] = 0; - scannerState++; - break; - - case S_REPEAT: - scannerTimeout++; - if(scannerTimeout > repeatTimeout) - { - keys[0] = 0; - keys[1] = 0; - scannerTimeout = 0; - fastToggle++; - if((fastToggle > 4) && (repeatTimeout > 1)) - { - repeatTimeout >>= 1; - fastToggle = 0; - } - } - break; - } -} diff --git a/boop/trunk/keyboard/keyirq.h b/boop/trunk/keyboard/keyirq.h deleted file mode 100644 index c510ce1..0000000 --- a/boop/trunk/keyboard/keyirq.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - keyirq.h - keyboard scanning interrupt - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef KEYIRQ_H -#define KEYIRQ_H - -#define AUTO_TIMEOUT 5 - -#define testLine(_c) \ -{ \ - if(!(_c)) \ - { \ - keys[half] |= keytest; \ - } \ - keytest <<= 1; \ -} - -void __attribute__ ((section(".text.fastcode"))) keyScanner (unsigned int cb); - -#endif diff --git a/boop/trunk/lpc2220.h b/boop/trunk/lpc2220.h deleted file mode 100644 index 36693c3..0000000 --- a/boop/trunk/lpc2220.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - lpc2220.h - register definitions - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef LPC2220_H -#define LPC2220_H - -/* External Memory Controller (EMC) */ -#define BCFG0 (*((volatile unsigned long *) 0xFFE00000)) -#define BCFG1 (*((volatile unsigned long *) 0xFFE00004)) -#define BCFG2 (*((volatile unsigned long *) 0xFFE00008)) -#define BCFG3 (*((volatile unsigned long *) 0xFFE0000C)) - -/* Vectored Interrupt Controller (VIC) */ -#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000)) -#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004)) -#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008)) -#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C)) -#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010)) -#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014)) -#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018)) -#define VICSoftIntClr (*((volatile unsigned long *) 0xFFFFF01C)) -#define VICProtection (*((volatile unsigned long *) 0xFFFFF020)) -#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030)) -#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034)) -#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100)) -#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104)) -#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108)) -#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C)) -#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110)) -#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114)) -#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118)) -#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C)) -#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120)) -#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124)) -#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128)) -#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C)) -#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130)) -#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134)) -#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138)) -#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C)) -#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200)) -#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204)) -#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208)) -#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C)) -#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210)) -#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214)) -#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218)) -#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C)) -#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220)) -#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224)) -#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228)) -#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C)) -#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230)) -#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234)) -#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238)) -#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C)) - -#define SCS (*((volatile unsigned char *) 0xE01FC1A0)) -#define FIOPIN0 (*((volatile unsigned long *) 0x3FFFC014)) -#define FIOSET0 (*((volatile unsigned long *) 0x3FFFC018)) -#define FIODIR0 (*((volatile unsigned long *) 0x3FFFC000)) -#define FIOCLR0 (*((volatile unsigned long *) 0x3FFFC01C)) -#define FIOMASK0 (*((volatile unsigned long *) 0x3FFFC010)) - -/* Pin Connect Block */ -#define PINSEL0 (*((volatile unsigned long *) 0xE002C000)) -#define PINSEL1 (*((volatile unsigned long *) 0xE002C004)) -#define PINSEL2 (*((volatile unsigned long *) 0xE002C014)) - -/* General Purpose Input/Output (GPIO) */ -#define IOPIN0 (*((volatile unsigned long *) 0xE0028000)) -#define IOSET0 (*((volatile unsigned long *) 0xE0028004)) -#define IODIR0 (*((volatile unsigned long *) 0xE0028008)) -#define IOCLR0 (*((volatile unsigned long *) 0xE002800C)) -#define IOPIN1 (*((volatile unsigned long *) 0xE0028010)) -#define IOSET1 (*((volatile unsigned long *) 0xE0028014)) -#define IODIR1 (*((volatile unsigned long *) 0xE0028018)) -#define IOCLR1 (*((volatile unsigned long *) 0xE002801C)) -#define IOPIN2 (*((volatile unsigned long *) 0xE0028020)) -#define IOSET2 (*((volatile unsigned long *) 0xE0028024)) -#define IODIR2 (*((volatile unsigned long *) 0xE0028028)) -#define IOCLR2 (*((volatile unsigned long *) 0xE002802C)) -#define IOPIN3 (*((volatile unsigned long *) 0xE0028030)) -#define IOSET3 (*((volatile unsigned long *) 0xE0028034)) -#define IODIR3 (*((volatile unsigned long *) 0xE0028038)) -#define IOCLR3 (*((volatile unsigned long *) 0xE002803C)) - -/* Phase Locked Loop (PLL) */ -#define PLLCON (*((volatile unsigned char *) 0xE01FC080)) -#define PLLCFG (*((volatile unsigned char *) 0xE01FC084)) -#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088)) -#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C)) - -/* VPB Divider */ -#define VPBDIV (*((volatile unsigned char *) 0xE01FC100)) - -/* Power Control */ -#define PCON (*((volatile unsigned char *) 0xE01FC0C0)) -#define PCONP (*((volatile unsigned long *) 0xE01FC0C4)) - -/* External Interrupts */ -#define EXTINT (*((volatile unsigned char *) 0xE01FC140)) -#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144)) -#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) -#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) - -/* Timer 0 */ -#define T0IR (*((volatile unsigned long *) 0xE0004000)) -#define T0TCR (*((volatile unsigned long *) 0xE0004004)) -#define T0TC (*((volatile unsigned long *) 0xE0004008)) -#define T0PR (*((volatile unsigned long *) 0xE000400C)) -#define T0PC (*((volatile unsigned long *) 0xE0004010)) -#define T0MCR (*((volatile unsigned long *) 0xE0004014)) -#define T0MR0 (*((volatile unsigned long *) 0xE0004018)) -#define T0MR1 (*((volatile unsigned long *) 0xE000401C)) -#define T0MR2 (*((volatile unsigned long *) 0xE0004020)) -#define T0MR3 (*((volatile unsigned long *) 0xE0004024)) -#define T0CCR (*((volatile unsigned long *) 0xE0004028)) -#define T0CR0 (*((volatile unsigned long *) 0xE000402C)) -#define T0CR1 (*((volatile unsigned long *) 0xE0004030)) -#define T0CR2 (*((volatile unsigned long *) 0xE0004034)) -#define T0CR3 (*((volatile unsigned long *) 0xE0004038)) -#define T0EMR (*((volatile unsigned long *) 0xE000403C)) - -/* Timer 1 */ -#define T1IR (*((volatile unsigned long *) 0xE0008000)) -#define T1TCR (*((volatile unsigned long *) 0xE0008004)) -#define T1TC (*((volatile unsigned long *) 0xE0008008)) -#define T1PR (*((volatile unsigned long *) 0xE000800C)) -#define T1PC (*((volatile unsigned long *) 0xE0008010)) -#define T1MCR (*((volatile unsigned long *) 0xE0008014)) -#define T1MR0 (*((volatile unsigned long *) 0xE0008018)) -#define T1MR1 (*((volatile unsigned long *) 0xE000801C)) -#define T1MR2 (*((volatile unsigned long *) 0xE0008020)) -#define T1MR3 (*((volatile unsigned long *) 0xE0008024)) -#define T1CCR (*((volatile unsigned long *) 0xE0008028)) -#define T1CR0 (*((volatile unsigned long *) 0xE000802C)) -#define T1CR1 (*((volatile unsigned long *) 0xE0008030)) -#define T1CR2 (*((volatile unsigned long *) 0xE0008034)) -#define T1CR3 (*((volatile unsigned long *) 0xE0008038)) -#define T1EMR (*((volatile unsigned long *) 0xE000803C)) - -/* Pulse Width Modulator (PWM) */ -#define PWMIR (*((volatile unsigned long *) 0xE0014000)) -#define PWMTCR (*((volatile unsigned long *) 0xE0014004)) -#define PWMTC (*((volatile unsigned long *) 0xE0014008)) -#define PWMPR (*((volatile unsigned long *) 0xE001400C)) -#define PWMPC (*((volatile unsigned long *) 0xE0014010)) -#define PWMMCR (*((volatile unsigned long *) 0xE0014014)) -#define PWMMR0 (*((volatile unsigned long *) 0xE0014018)) -#define PWMMR1 (*((volatile unsigned long *) 0xE001401C)) -#define PWMMR2 (*((volatile unsigned long *) 0xE0014020)) -#define PWMMR3 (*((volatile unsigned long *) 0xE0014024)) -#define PWMMR4 (*((volatile unsigned long *) 0xE0014040)) -#define PWMMR5 (*((volatile unsigned long *) 0xE0014044)) -#define PWMMR6 (*((volatile unsigned long *) 0xE0014048)) -#define PWMCCR (*((volatile unsigned long *) 0xE0014028)) -#define PWMCR0 (*((volatile unsigned long *) 0xE001402C)) -#define PWMCR1 (*((volatile unsigned long *) 0xE0014030)) -#define PWMCR2 (*((volatile unsigned long *) 0xE0014034)) -#define PWMCR3 (*((volatile unsigned long *) 0xE0014038)) -#define PWMEMR (*((volatile unsigned long *) 0xE001403C)) -#define PWMPCR (*((volatile unsigned long *) 0xE001404C)) -#define PWMLER (*((volatile unsigned long *) 0xE0014050)) - -/* Universal Asynchronous Receiver Transmitter 0 (UART0) */ -#define U0RBR (*((volatile unsigned char *) 0xE000C000)) -#define U0THR (*((volatile unsigned char *) 0xE000C000)) -#define U0IER (*((volatile unsigned char *) 0xE000C004)) -#define U0IIR (*((volatile unsigned char *) 0xE000C008)) -#define U0FCR (*((volatile unsigned char *) 0xE000C008)) -#define U0LCR (*((volatile unsigned char *) 0xE000C00C)) -#define U0MCR (*((volatile unsigned char *) 0xE000C010)) -#define U0LSR (*((volatile unsigned char *) 0xE000C014)) -#define U0MSR (*((volatile unsigned char *) 0xE000C018)) -#define U0SCR (*((volatile unsigned char *) 0xE000C01C)) -#define U0FDR (*((volatile unsigned char *) 0xE000C028)) -#define U0DLL (*((volatile unsigned char *) 0xE000C000)) -#define U0DLM (*((volatile unsigned char *) 0xE000C004)) - -/* Universal Asynchronous Receiver Transmitter 1 (UART1) */ -#define U1RBR (*((volatile unsigned char *) 0xE0010000)) -#define U1THR (*((volatile unsigned char *) 0xE0010000)) -#define U1IER (*((volatile unsigned char *) 0xE0010004)) -#define U1IIR (*((volatile unsigned char *) 0xE0010008)) -#define U1FCR (*((volatile unsigned char *) 0xE0010008)) -#define U1LCR (*((volatile unsigned char *) 0xE001000C)) -#define U1MCR (*((volatile unsigned char *) 0xE0010010)) -#define U1LSR (*((volatile unsigned char *) 0xE0010014)) -#define U1MSR (*((volatile unsigned char *) 0xE0010018)) -#define U1SCR (*((volatile unsigned char *) 0xE001001C)) -#define U1DLL (*((volatile unsigned char *) 0xE0010000)) -#define U1DLM (*((volatile unsigned char *) 0xE0010004)) - -/* I2C Interface */ -#define I2CONSET (*((volatile unsigned char *) 0xE001C000)) -#define I2STAT (*((volatile unsigned char *) 0xE001C004)) -#define I2DAT (*((volatile unsigned char *) 0xE001C008)) -#define I2ADR (*((volatile unsigned char *) 0xE001C00C)) -#define I2SCLH (*((volatile unsigned short*) 0xE001C010)) -#define I2SCLL (*((volatile unsigned short*) 0xE001C014)) -#define I2CONCLR (*((volatile unsigned char *) 0xE001C018)) - -/* SPI0 (Serial Peripheral Interface 0) */ -#define S0SPCR (*((volatile unsigned char *) 0xE0020000)) -#define S0SPSR (*((volatile unsigned char *) 0xE0020004)) -#define S0SPDR (*((volatile unsigned char *) 0xE0020008)) -#define S0SPCCR (*((volatile unsigned char *) 0xE002000C)) -#define S0SPTCR (*((volatile unsigned char *) 0xE0020010)) -#define S0SPTSR (*((volatile unsigned char *) 0xE0020014)) -#define S0SPTOR (*((volatile unsigned char *) 0xE0020018)) -#define S0SPINT (*((volatile unsigned char *) 0xE002001C)) - -/* SPI1 (Serial Peripheral Interface 1) */ -#define S1SPCR (*((volatile unsigned char *) 0xE0030000)) -#define S1SPSR (*((volatile unsigned char *) 0xE0030004)) -#define S1SPDR (*((volatile unsigned char *) 0xE0030008)) -#define S1SPCCR (*((volatile unsigned char *) 0xE003000C)) -#define S1SPTCR (*((volatile unsigned char *) 0xE0030010)) -#define S1SPTSR (*((volatile unsigned char *) 0xE0030014)) -#define S1SPTOR (*((volatile unsigned char *) 0xE0030018)) -#define S1SPINT (*((volatile unsigned char *) 0xE003001C)) - -/* Real Time Clock */ -#define ILR (*((volatile unsigned char *) 0xE0024000)) -#define CTC (*((volatile unsigned short*) 0xE0024004)) -#define CCR (*((volatile unsigned char *) 0xE0024008)) -#define CIIR (*((volatile unsigned char *) 0xE002400C)) -#define AMR (*((volatile unsigned char *) 0xE0024010)) -#define CTIME0 (*((volatile unsigned long *) 0xE0024014)) -#define CTIME1 (*((volatile unsigned long *) 0xE0024018)) -#define CTIME2 (*((volatile unsigned long *) 0xE002401C)) -#define SEC (*((volatile unsigned char *) 0xE0024020)) -#define MIN (*((volatile unsigned char *) 0xE0024024)) -#define HOUR (*((volatile unsigned char *) 0xE0024028)) -#define DOM (*((volatile unsigned char *) 0xE002402C)) -#define DOW (*((volatile unsigned char *) 0xE0024030)) -#define DOY (*((volatile unsigned short*) 0xE0024034)) -#define MONTH (*((volatile unsigned char *) 0xE0024038)) -#define YEAR (*((volatile unsigned short*) 0xE002403C)) -#define ALSEC (*((volatile unsigned char *) 0xE0024060)) -#define ALMIN (*((volatile unsigned char *) 0xE0024064)) -#define ALHOUR (*((volatile unsigned char *) 0xE0024068)) -#define ALDOM (*((volatile unsigned char *) 0xE002406C)) -#define ALDOW (*((volatile unsigned char *) 0xE0024070)) -#define ALDOY (*((volatile unsigned short*) 0xE0024074)) -#define ALMON (*((volatile unsigned char *) 0xE0024078)) -#define ALYEAR (*((volatile unsigned short*) 0xE002407C)) -#define PREINT (*((volatile unsigned short*) 0xE0024080)) -#define PREFRAC (*((volatile unsigned short*) 0xE0024084)) - -/* A/D Converter */ -#define ADCR (*((volatile unsigned long *) 0xE0034000)) -#define ADDR (*((volatile unsigned long *) 0xE0034004)) -#define ADINTEN (*((volatile unsigned long *) 0xE003400C)) -#define ADSTAT (*((volatile unsigned long *) 0xE0034030)) - -/* Watchdog */ -#define WDMOD (*((volatile unsigned char *) 0xE0000000)) -#define WDTC (*((volatile unsigned long *) 0xE0000004)) -#define WDFEED (*((volatile unsigned char *) 0xE0000008)) -#define WDTV (*((volatile unsigned long *) 0xE000000C)) - -/* Memory Mapping control register */ -#define MEMMAP (*((volatile unsigned long *) 0xE01FC040)) - -/* SSP control register */ -#define SSPCR0 (*((volatile unsigned long *) 0xE005C000)) -#define SSPCR1 (*((volatile unsigned char *) 0xE005C004)) -#define SSPDR (*((volatile unsigned char *) 0xE005C008)) -#define SSPSR (*((volatile unsigned char *) 0xE005C00C)) -#define SSPCPSR (*((volatile unsigned char *) 0xE005C010)) - - -#endif /* __ASM_ARCH_HARDWARE_H */ diff --git a/boop/trunk/lpc2220_rom.ld b/boop/trunk/lpc2220_rom.ld deleted file mode 100644 index f7470bf..0000000 --- a/boop/trunk/lpc2220_rom.ld +++ /dev/null @@ -1,144 +0,0 @@ -/* - lpc2220.ld - linker script, flash based - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -/* identify the Entry Point */ - -ENTRY(_startup) - -/* specify the LPC2106 memory areas */ - -MEMORY -{ - ram : ORIGIN = 0x40000000, LENGTH = 64K-0x400 /* free RAM area */ - flash : ORIGIN = 0x80000000, LENGTH = 1M /* FLASH ROM */ -} - -/* define a global symbol _stack_end */ - -/* _stack_end = 0x4000F9DC; */ -_stack_end = 0x40010000; - -/* now define the output sections */ - -SECTIONS -{ - . = 0; /* set location counter to address zero */ - - startup : - { - *(.startup) - } >flash /* the startup code goes into FLASH */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .text : /* collect all sections that should go into FLASH after startup */ - { - *(.text) /* all .text sections (code) */ - *(.rodata) /* all .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ - *(.glue_7) /* all .glue_7 sections (no idea what these are) */ - *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ - _etext = .; /* define a global symbol _etext just after the last code byte */ - } >flash /* put all the above into FLASH */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - __exidx_start = .; - PROVIDE(__exidx_start = __exidx_start); - - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*); - } > flash AT > flash /* index entries for section unwinding */ - - . = ALIGN(4); - __exidx_end = .; - PROVIDE(__exidx_end = __exidx_end); - - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .fastcode : - { - __fastcode_load = LOADADDR(.fastcode); - __fastcode_start = .; - /* functions with __attribute__ ((section (".text.fastcode")))*/ - *(.text.fastcode) - *(.text.ramvectors) - *(.text.do_vic) - *(.text.do_fiq) - *(.text.timerIRQ) - *(.text.soundIRQ) - *(.text.FIQ_Routine) - *(.text.keyScanner) - *(.text.adcIRQ) - *(.text.irIRQ) - *(.text.defIR) - *(.text.NRC17_Encode) - *(.text.ITT_Encode) - *(.text.RC5_Encode) - *(.text.RCA_Encode) - *(.text.RCMM_Encode) - *(.text.REC80_Encode) - *(.text.RECS80_Encode) - *(.text.SIRC_Encode) - *(.text.SPACEENC_Encode) - *(.text.cc1100IRQ) - *(.text._evaluate) - *(.text._push_state) - *(.text._mcpy) - *(.text._do_rcu) - *(.text._do_rcuS) - *(.text._draw_block) - *(.text._draw_hline) - *(.text._draw_vline) - - . = ALIGN (4); - __fastcode_end = .; - } >ram AT>flash - - - .data : /* collect all initialized .data sections that go into RAM */ - { - _data = .; /* create a global symbol marking the start of the .data section */ - *(.data) /* all .data sections */ - _edata = .; /* define a global symbol marking the end of the .data section */ - } >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .bss : /* collect all uninitialized .bss sections that go into RAM */ - { - _bss_start = .; /* define a global symbol marking the start of the .bss section */ - *(.bss) /* all .bss sections */ - } >ram /* put all the above in RAM (it will be cleared in the startup code */ - - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - _bss_end = . ; /* define a global symbol marking the end of the .bss section */ -} -end = .; /* define a global symbol marking the end of application RAM */ - -PROVIDE( MEMMAP = 0xE01FC040 ); -PROVIDE( BCFG0 = 0xFFE00000 ); -PROVIDE( BCFG1 = 0xFFE00004 ); -PROVIDE( BCFG2 = 0xFFE00008 ); -PROVIDE( PINSEL0 = 0xE002C000 ); -PROVIDE( PINSEL1 = 0xE002C004 ); -PROVIDE( PINSEL2 = 0xE002C014 ); -PROVIDE( IO0PIN = 0xE0028000 ); -PROVIDE( IO0DIR = 0xE0028008 ); -PROVIDE( IO2SET = 0xE0028024 ); -PROVIDE( SCS = 0xE01FC1A0 ); -PROVIDE( FIODIR0 = 0x3FFFC000 ); -PROVIDE( VICVectAddr = 0xFFFFF030 ); diff --git a/boop/trunk/main.c b/boop/trunk/main.c deleted file mode 100644 index 5f8fba8..0000000 --- a/boop/trunk/main.c +++ /dev/null @@ -1,417 +0,0 @@ -/* - main.c - main program routines - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -//typedef volatile unsigned int *reg32_t; - -#include "lpc2220.h" - - -#include "lcd.h" -#include "irq.h" -#include "keyboard.h" -#include "lcd.h" -#include "fonty.h" -#include "sid.h" -#include "sound.h" -//#include "sounds.h" -//#include "sound3.h" -#include "infrared.h" -#include "codes.h" -#include "encoders.h" -#include "ir_selector.h" -#include "serial.h" -#include "flash.h" -#include "rf.h" -#include "menu.h" -#include "testmenu.h" -#include "mainmenu.h" -#include "timerfuncs.h" -#define __MAIN_C__ -#include "global.h" -#include "adc.h" -#include "backlight.h" -#include "rtc.h" -#include "i2c.h" -#include "bfs.h" -#include "settingsmenu.h" -#include "ir_raw.h" -#include "ir_capture.h" -#include "controls.h" -#include "buffer.h" - -unsigned char sysInfo; - -extern volatile char timeout; - -extern ir_sfn irSend; -extern ir_fn irRepeat; -extern ir_fn irStop; - -const char hval[16] = "0123456789ABCDEF"; - -unsigned int oldkeys[2]; -unsigned int key_state; - -extern unsigned char act_encoder, act_set; - -extern unsigned char bl_val; - - -// betty runs on 10 MHz * 1/4 on reset -// this enables the PLL clock generation and sets the prescaler -void setSpeed(unsigned char sp) -{ - disableIRQ(); - switch(sp) - { - case SPEED_60: // turbo speed (60 mhz) - BCFG0 = 0x100005EF; - PLLCFG = 0x45; // 0100.0101 = PSEL=10=4 MSEL=00101=6 = 240mhz Fcco - PLLFEED = 0xAA; - PLLFEED = 0x55; - - VPBDIV = 0x00; - - BCFG0 = 0x100004A0; - BCFG2 = 0x100004A0; - BCFG1 = 0x00000C21; - sysInfo |= SYS_TURBO; - break; - - case SPEED_30: // normal speed (30 mhz) - default: - BCFG0 = 0x100005EF; - PLLCFG = 0x42; // 0100.0010 = PSEL=10=4 MSEL=00010=3 - PLLFEED = 0xAA; - PLLFEED = 0x55; - - VPBDIV = 0x02; - - BCFG0 = 0x10000420; - BCFG2 = 0x10000420; - BCFG1 = 0x00000400; - sysInfo &= ~SYS_TURBO; - break; - } - enableIRQ(); -} - -/* -// draw "emitting waves" symbol -// used when a button is pressed -void draw_ir (unsigned char x, unsigned char y, unsigned char m) -{ - //~ 0 1: ##### - //~ 1 2: # # - //~ 2 4: ### - //~ 3 8: # # - //~ 4 1: - //~ 5 2: ### - //~ 6 4: ##### - - draw_hline(x+1,y,5,3,m); // 0 - - draw_pixel(x ,y+1,3,m); // 1 - draw_pixel(x+6,y+1,3,m); // 1 - - draw_hline(x+2,y+2,3,3,m); // 2 - - draw_pixel(x+1,y+3,3,m); // 3 - draw_pixel(x+5,y+3,3,m); // 3 - - draw_hline(x+2,y+5,3,3,m); // 5 - - draw_hline(x+1,y+6,5,3,m); // 6 - - draw_symbol(x,y,7,(unsigned char*)symIR,LCD_COLOR_B,m); - -}*/ - - - -// shows current IR set on top of main screen -void drawSet (void) -{ - set_font(SMALLFONT); - draw_block (0, 0, 99, 9, LCD_COLOR_B, DRAW_ERASE); - draw_string (0,0,getSetName (irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set), LCD_COLOR_B, DRAW_PUT); -} - - -// -void drawMainscreen (void) -{ - //~ set_font(SMALLFONT); // done in drawSet() - - lcd_fill(0); - draw_logo(); - - // top bar - drawSet(); - -/* is updated in main loop - // time -#if FF_LARGE_IDLE_CLOCK - printTime (6,20, (struct time_ *)&rtc.time, 1); -#else - printTime (86,152, (struct time_ *)&rtc.time, 0); - printDate(0,152,(struct date_ *)&rtc.date,0); -#endif -*/ - showBat(0xff); // battery indicator - redraw_symbols(); // -} - - -//unsigned char i; - -/** let the LPC2200 sleep until the next IRQ - * - * This function tries to enter the sleep mode and stays - * there until the next interrupt wakes up the CPU. - * If that is not possible, the function returns immediately. - */ -extern unsigned char sact; -void cpu_idle () -{ - /* fall through if a key was pressed */ - if (ANYKEY) - return; - - //fall through if UART0 Scratch pad register is not empty - //OpenOCD can set this register with "mwb 0xE000C01C 0x01" to disable idle and power down mode - if(U0SCR) - return; - - /* only idle mode instead of power down when: - * * backlight on - * * IR transmission - * * RF is activated - * * sound is playing - * * I2C access - * * SYS_NOPDOWN in sysInfo is set - */ - if (bl_val != 0 || key_state != KEY_IDLE || - (RF.state > RFidle) || - (SID.flags & SIDenable) || sact || i2ccurrentjob || (sysInfo & SYS_NOPDOWN)) - { - if(sysInfo & SYS_NOIDLE) - return; - /* WARNING: no code reuse here: - * PCON = causes timing problems */ - EXTINT = 0x08; - PCON = PCON_IDLE; - PLLFEED = 0xAA; - PLLFEED = 0x55; - } - else - { - refresh_symbols(0xff); - EXTINT = 0x08; - sysInfo |= SYS_NOIDLE; - PCON = PCON_PDOWN; - PLLFEED = 0xAA; - PLLFEED = 0x55; - } -} // cpu_idle - -int main(void) -{ - sysInfo = SYS_NOIDLE; - - SCS |= 0x01; - FIODIR0 |= ((1<<21) | (1<<11) | (1<<6) | (1<<23) | (1<<19) | (1<<17)); - FIODIR0 |= (1<<12); - FIOSET0 |= (1<<12); - FIOCLR0 |= (1<<4); - - setSpeed(SPEED_30); - - lcd_init(0); - serial_init(); - - startTimerIRQ(); - startADC(); - - initKeys(); - - initSound(); - startSoundIRQ(); - - initIR(); - startIrIRQ(); - - RF_init(); - load_RF_setting(); - startRFIRQ(); - RF_changestate(RFwor); - - initI2C(); - initRTC(); - startRtcIRQ(); - - enableIRQ(); - - //testmenu_init(); - init_menu(); - - initBacklight(); - - oldkeys[0] = keys[0]; - oldkeys[1] = keys[0]; - - key_state = KEY_IDLE; - - set_font(BOLDFONT); - - BFS_Mount(); // flash file system - load_RC_setting(); // learned remote codes - load_setting(); // display settings - - - // recorded raw IR commands - { - struct RAWset_ RAWset; - unsigned char x; - unsigned long RAWcmdbase; - - RAWcmdbase = FLASH1_BASE +(secaddr[0]<<1); // data address - x=memcmp((void*)RAWcmdbase,"RC01",4); // check ID - - if(!x) // - { - memcpy(&RAWset,(void *)RAWcmdbase,sizeof(struct RAWset_)); - RAWset.name[7] = 0; - BFS_SaveFile(BFS_ID_RAWslot0, sizeof(struct RAWset_), (unsigned char*) &RAWset); - eraseSector(1,0); - } - } - - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - - drawMainscreen(); - ask_for_time(0); - -/* - playSound((unsigned char*)sound1_data, sound1_len); - waitSound(); - playSound((unsigned char*)sound2_data, sound2_len); -*/ - - // main loop - while (1) - { - // detect keyboard action (keyboard matrix scanned by interrupt) - if(keys[0] != oldkeys[0] || keys[1] != oldkeys[1]) - { - oldkeys[0] = keys[0]; - oldkeys[1] = keys[1]; - sysInfo |= SYS_KEY; - } - - // determine keyboard actions on main screen - switch(key_state) - { - case KEY_IDLE: - if(sysInfo & SYS_KEY) - { - sysInfo &= ~SYS_KEY; - if(KEY_Betty) - { - setBacklight(BL_AUTO); // activate backlight - menu_exec(&mainMenu); // select menu - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - drawMainscreen(); // draw new menu - while(KEY_Exit); // block until - } - //~ else if(KEY_2) - //~ { - //setSpeed(SPEED_30); - //~ } - //~ else if(KEY_3) - //~ { - //setSpeed(SPEED_60); - //~ } - else if(KEY_A || KEY_B || KEY_C || KEY_D) - { - // select encoder - unsigned char x; - //playSound((unsigned char*)sound3_data, sound3_len); - x=0; - if (KEY_B) x=1; - if (KEY_C) x=2; - if (KEY_D) x=3; - - if (setEncoder(irDevTab.device[x].encoder, irDevTab.device[x].set)) { - setBacklight(BL_AUTO); - irDevTab.active = x; - //~ drawMainscreen(); - drawSet(); - } - } - - // (last-minute detection of regular key?) - if((keys[0] != 0) || (keys[1] != 0)) - key_state = KEY_PRESS; - } - break; - - case KEY_PRESS: - irSend(getCode()); - key_state = KEY_HOLD; - if(!(T1TCR & 0x02)) - draw_symbol(90,0,7,(unsigned char*)symIR,LCD_COLOR_B,DRAW_PUT); -// autorepeat = 0; - break; - - case KEY_HOLD: -// if(autorepeat >= AUTO_TIMEOUT) - irRepeat(); - //draw_ir(90, 0, DRAW_XOR); - if(keys[0] == 0 && keys[1] == 0) - key_state = KEY_RELEASE; - - break; - - case KEY_RELEASE: - if(!(T1TCR & 0x02)) - draw_symbol(90,0,7,(unsigned char*)symIR,LCD_COLOR_B,DRAW_ERASE); - irStop(); - key_state = KEY_IDLE; - break; - } - - cpu_idle(); // let the LPC2200 sleep until the next IRQ - - // display time - if (timeInfo & TIMECHANGED) - { -#if FF_LARGE_IDLE_CLOCK - // time large, no date - printTime( 6, 20, (struct time_ *)&rtc.time, 1); -#else - // time and date small - printTime( 86, 152, (struct time_ *)&rtc.time, 0); - printDate( 0, 152, (struct date_ *)&rtc.date, 0); -#endif - timeInfo &= ~TIMECHANGED; // clear update flag - } - - } // while (1) - return 0; // never returns -} // main diff --git a/boop/trunk/rtc/Make.conf b/boop/trunk/rtc/Make.conf deleted file mode 100644 index 8293f8f..0000000 --- a/boop/trunk/rtc/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := rtc.c i2c.c rtctimer.c diff --git a/boop/trunk/rtc/i2c.c b/boop/trunk/rtc/i2c.c deleted file mode 100644 index 3aa1edd..0000000 --- a/boop/trunk/rtc/i2c.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - i2c.c - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "i2c.h" -#include "irq.h" -#include "rtc.h" -#include "global.h" - -volatile struct i2cjob_* volatile i2ccurrentjob; - -unsigned char i2c_jobexec(struct i2cjob_* job) { - - VICVectCntl3 &= ~VIC_SLOT_EN; - while(i2ccurrentjob); - i2ccurrentjob = job; - I2CONSET = STA; - while(i2ccurrentjob); - VICVectCntl3 |= VIC_SLOT_EN; - return 1; -} - -void i2cIRQ(void) { - unsigned char state; - - state = I2STAT; - i2ccurrentjob->buffer; - - switch(state) { - case 0x08: //A START condition has been transmitted - I2DAT = RTCslaveaddr | I2C_write; - I2CONSET = AA; - I2CONCLR = SI | STA; - i2ccurrentjob->pos = 0; - break; - case 0x18: //SLA+W has been transmitted; ACK has been received. - I2DAT = i2ccurrentjob->byteaddr; - I2CONSET = AA; - I2CONCLR = SI; - break; - case 0x28: //Data byte in I2DAT has been transmitted; ACK has been received. - switch(i2ccurrentjob->action) { - case I2C_read: - I2CONSET = STA; - I2CONCLR = AA | SI; - break; - case I2C_write: - if(i2ccurrentjob->len > i2ccurrentjob->pos) { - I2DAT = i2ccurrentjob->buffer[i2ccurrentjob->pos++]; - I2CONSET = AA; - I2CONCLR = SI; - } - else - i2ccurrentjob->action = I2C_done; - break; - default: - i2ccurrentjob->action = I2C_error; - } - break; - case 0x10: //A repeated START condition has been transmitted - I2DAT = RTCslaveaddr | I2C_read; - I2CONSET = AA; - I2CONCLR = SI | STA; - break; - case 0x40: //SLA+R has been transmitted; ACK has been received. - I2CONSET = AA; - I2CONCLR = SI; - break; - case 0x50: //Data byte has been received; ACK has been returned. - i2ccurrentjob->buffer[i2ccurrentjob->pos++] = I2DAT; - if(i2ccurrentjob->len > i2ccurrentjob->pos+1) - I2CONSET = AA; - else - I2CONCLR = AA; - I2CONCLR = SI; - break; - case 0x58: //Data byte has been received; NOT ACK has been returned. - i2ccurrentjob->buffer[i2ccurrentjob->pos] = I2DAT; - i2ccurrentjob->action = I2C_done; - break; - case 0x20: //SLA+W has been transmitted; NOT ACK has been received. - case 0x30: //Data byte in I2DAT has been transmitted; NOT ACK has been received. - if(i2ccurrentjob->pos) - i2ccurrentjob->pos--; - default: - i2ccurrentjob->action = I2C_error; - break; - } - - if((i2ccurrentjob->action == I2C_done) || (i2ccurrentjob->action == I2C_error)) { - I2CONSET = STO; - I2CONCLR = SI; - if(i2ccurrentjob->onfinish) { - struct i2cjob_* job; - job = (struct i2cjob_*)i2ccurrentjob; - i2ccurrentjob = 0; - job->onfinish(job); - } - else - i2ccurrentjob = 0; - } -} - -void initI2C(void) { - PINSEL0 |= (1<<4) | (1<<6); - I2SCLL = 19; - I2SCLH = 19; - - I2CONSET = I2EN; - i2ccurrentjob = 0; - - VICVectAddr4 = (unsigned long)&(i2cIRQ); - VICVectCntl4 = VIC_SLOT_EN | INT_SRC_I2C; - VICIntEnable = INT_I2C; -} - diff --git a/boop/trunk/rtc/i2c.h b/boop/trunk/rtc/i2c.h deleted file mode 100644 index 82f6932..0000000 --- a/boop/trunk/rtc/i2c.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - i2c.h - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef I2C_H -#define I2C_H - -#define AA 0x04 -#define SI 0x08 -#define STO 0x10 -#define STA 0x20 -#define I2EN 0x40 - -extern struct i2cjob_ dummyjob; - -typedef void(*i2c_fn)(struct i2cjob_*); - -struct i2cjob_ { - unsigned char* buffer; - i2c_fn onfinish; - unsigned char len; - unsigned char pos; - unsigned char byteaddr; - unsigned char action; -}; - -#define I2C_write 0 -#define I2C_read 1 -#define I2C_done 2 -#define I2C_error 3 - -volatile struct i2cjob_* volatile i2ccurrentjob; - -unsigned char i2c_jobexec(struct i2cjob_* job); -void initI2C(void); - -#endif diff --git a/boop/trunk/rtc/rtc.c b/boop/trunk/rtc/rtc.c deleted file mode 100644 index d176f96..0000000 --- a/boop/trunk/rtc/rtc.c +++ /dev/null @@ -1,432 +0,0 @@ -/* - rtc.c - - real-time clock PCF8563 by NXP Semiconductors - I2C Bus - Interrupt - - display date / time - set date / time - date calculations - settings menu - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "rtc.h" -#include "i2c.h" -#include "lcd.h" -#include "fonty.h" -#include "drawDigit.h" -#include "irq.h" -#include "adc.h" -#include "keyboard.h" -#include "rf.h" -#include "global.h" -#include "rtc.h" -#include "controls.h" -#include "timerfuncs.h" - -const unsigned long default_time[1] = {0x00000000}; -const unsigned char default_date[4] = {0x01, 0x02, 0x01, 0x08}; -const unsigned char months[36] = "JANFEBMRZAPRMAIJUNJULAUGSEPOKTNOVDEZ"; -const unsigned char days[14] = "SOMODIMIDOFRSA"; - -void initRTC (void) -{ - struct i2cjob_ job; - unsigned char buffer[4]; - - job.buffer = buffer; - job.onfinish = 0; - - //init rtc - job.len = 2; - job.byteaddr = RTCREG_CONTROL_STATUS_1; - job.buffer[0] = 0x08; - job.buffer[1] = 0x01; - do { - job.action = I2C_write; - i2c_jobexec(&job); - } while(!(job.action == I2C_done)); - - //init rtc alarm - job.len = 4; - job.byteaddr = RTCREG_MINUTE_ALARM;; - job.buffer[0] = (1<<7); - job.buffer[1] = (1<<7); - job.buffer[2] = (1<<7); - job.buffer[3] = (1<<7); - job.action = I2C_write; - i2c_jobexec(&job); - - //init rtc timer - job.len = 2; - job.byteaddr = RTCREG_TIMER_CONTROL; - job.buffer[0] = 0x82; - job.buffer[1] = 0x01; - job.action = I2C_write; - i2c_jobexec(&job); - - timeInfo =0; - - setTimeDate((struct time_*) default_time,(struct date_*) default_date); -} - -unsigned char getTimeDate (struct time_* t, struct date_ *d) -{ - struct i2cjob_ job; - unsigned char buffer[7]; - - job.buffer = buffer; - job.onfinish = 0; - job.len = 7; - job.byteaddr = RTCREG_SECOND; - job.action = I2C_read; - i2c_jobexec(&job); - - t->second = buffer[0] & 0x7F; - t->minute = buffer[1] & 0x7F; - t->hour = buffer[2] & 0x3F; - d->day = buffer[3] & 0x3F; - d->weekday = buffer[4] & 0x07; - d->month = buffer[5] & 0x1F; - d->year = buffer[6]; - - return buffer[0] & 0x80; /// \return VL - clock integrity. 0 is good. -} - -void setTimeDate (struct time_ *t, struct date_ *d) -{ - struct i2cjob_ job; - unsigned char buffer[7]; - - job.buffer = buffer; - job.onfinish = 0; - memcpy(job.buffer,(unsigned char *)t,3); - memcpy(job.buffer+3,(unsigned char *)d,4); - job.len = 7; - job.byteaddr = RTCREG_SECOND; - job.action = I2C_write; - i2c_jobexec(&job); - -} - -void printTime (unsigned char x, unsigned char y, struct time_* t, unsigned char format) -{ - if (format) - { - // 00:00 - unsigned char w = 25; - unsigned char h = 45; - - drawDigit (x+0, y, w, h, (t->hour >> 4) & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+w+2, y, w, h, t->hour & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+2*w +15, y, w, h, (t->minute >> 4) & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+3*w+2+15, y, w, h, t->minute & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - - draw_char (x+2*w+10, y+h/2, ':', LCD_COLOR_B, DRAW_PUT); - } - else - { - unsigned char f = activefont; - - set_font (SMALLFONT); - draw_block (x,y,42,7,LCD_COLOR_B,DRAW_ERASE); - draw_hexC (x+30,y,t->second, LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+15,y,t->minute, LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+0,y,t->hour, LCD_COLOR_B, DRAW_PUT); - draw_char (x+12,y,':', LCD_COLOR_B, DRAW_PUT); - draw_char (x+27,y,':', LCD_COLOR_B, DRAW_PUT); - set_font (f); - } -} - - -void printDate (unsigned char x, unsigned char y, struct date_* d, unsigned char format) -{ - unsigned char f; - char s[16]; - - f=activefont; - set_font(SMALLFONT); - - switch(format) { - case 1: - draw_block (x,y,80,7,LCD_COLOR_B,DRAW_ERASE); - s[ 0] = days[d->weekday * 2]; - s[ 1] = days[(d->weekday * 2) + 1]; - s[ 2] = ','; - s[ 3] = ' '; - s[ 4] = ((d->day & 0xf0)>>4) + 0x30; - s[ 5] = ((d->day & 0x0f)) + 0x30; - s[ 6] = '.'; - s[ 7] = ' '; - s[ 8] = months[(d->month - 1) * 3]; - s[ 9] = months[((d->month - 1) * 3)+1]; - s[10] = months[((d->month - 1) * 3)+2]; - s[11] = ' '; - s[12] = '2'; - s[13] = '0'; - s[14] = ((d->year & 0xf0)>>4) + 0x30; - s[15] = ((d->year & 0x0f)) + 0x30; - s[16] = 0; - draw_string (x, y, s, LCD_COLOR_B, DRAW_PUT); - break; - default: - draw_block(x,y,57,7,3,DRAW_ERASE); - draw_char (x+0,y,days[d->weekday * 2], LCD_COLOR_B, DRAW_PUT); - draw_char (x+6,y,days[ (d->weekday * 2) + 1], LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+15,y,d->day, LCD_COLOR_B, DRAW_PUT); - draw_char (x+27,y,'.', LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+30,y,d->month, LCD_COLOR_B, DRAW_PUT); - draw_char (x+42,y,'.', LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+45,y,d->year, LCD_COLOR_B, DRAW_PUT); - } - - set_font(f); -} - -void rtcIRQreenable (struct i2cjob_* job) -{ - EXTINT |= (1<<2); - VICIntEnable = INT_EINT2; -} - -void rtcAckIRQ (struct i2cjob_* job) -{ - if (timeInfo & SETNEWTIME) { - rtcbuffer[1] = rtc.time.second; - rtcbuffer[2] = rtc.time.minute; - rtcbuffer[3] = rtc.time.hour; - rtcbuffer[4] = rtc.date.day; - rtcbuffer[5] = rtc.date.weekday; - rtcbuffer[6] = rtc.date.month; - rtcbuffer[7] = rtc.date.year; - i2cintjob.len = 8; - timeInfo &= ~SETNEWTIME; - timeInfo |= TIME_ACCURATE; // doesn't mean it's accurate, just that it was set - } - else { - rtc.time.second = job->buffer[1] & 0x7F; - rtc.time.minute = job->buffer[2] & 0x7F; - rtc.time.hour = job->buffer[3] & 0x3F; - rtc.date.day = job->buffer[4] & 0x3F; - rtc.date.weekday = job->buffer[5] & 0x07; - rtc.date.month = job->buffer[6] & 0x1F; - rtc.date.year = job->buffer[7]; - i2cintjob.len = 1; - } - - if(job->buffer[0] & ALARM_FLAG) - timeInfo |= ALARM_PENDING; - - timeInfo |= TIMECHANGED; - T0overflow = 0; - - i2cintjob.byteaddr = RTCREG_CONTROL_STATUS_2; - i2cintjob.buffer = rtcbuffer; - i2cintjob.buffer[0] = 0x01 | (timeInfo & ALARM_ENABLED); - i2cintjob.onfinish = rtcIRQreenable; - i2cintjob.action = I2C_write; - i2ccurrentjob = &i2cintjob; - I2CONSET = STA; - -} - -void rtcIRQ (void) -{ - EXTINT = (1<<2); - - i2cintjob.buffer = rtcbuffer; - i2cintjob.onfinish = rtcAckIRQ; - i2cintjob.len = 8; - i2cintjob.byteaddr = RTCREG_CONTROL_STATUS_2; - i2cintjob.action = I2C_read; - i2ccurrentjob = &i2cintjob; - I2CONSET = STA; - - if (!(PLLSTAT & (1<<8))) { - if ((rtc.time.second & 0x0f) == 9) - calcBat(0xff); - if ((rtc.time.second & 0x0f) == 0) - showBat(0xff); - } - - VICSoftIntClr = INT_EINT2; - VICIntEnClr = INT_EINT2; -} - -void startRtcIRQ (void) -{ - PINSEL0 |= (1<<31); - EXTWAKE |= (1<<2); - EXTINT |= (1<<2); - - VICVectAddr3 = (unsigned long)&(rtcIRQ); - VICVectCntl3 = VIC_SLOT_EN | INT_SRC_EINT2; - VICIntEnable = INT_EINT2; -} - -void calcBCD (unsigned char* value, char a, char max, char min) -{ - signed char x; - unsigned char y; - - x = (((*value & 0xf0)>>4) * 10 + (*value & 0x0f)) + a; - if (x > max) - x -= (1 + max - min); - if (x < min) - x += (1 + max - min); - y = x % 10; - y |= ((x-y) / 10)<<4; - *value = y; -} - -unsigned char checkBCD (unsigned char value, char max, char min) -{ - signed char x; - unsigned char y; - - x = (((value & 0xf0)>>4) * 10 + (value & 0x0f)); - if (x > max) - x = max; - if (x < min) - x = min; - y = x % 10; - y |= ((x-y) / 10)<<4; - return(y); -} - -void send_time (unsigned char dest, unsigned char wor) -{ - struct RFendpoint_* cur_ep; - - cur_ep = openEP((unsigned char*)&rtc,0, packet_time); - if (cur_ep) - { - cur_ep->dest = dest; - cur_ep->bufferlen = 7; - - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce; - if(wor) - cur_ep->flags |= EPsendwor; - RF_changestate(RFtx); - } -} - -void ask_for_time (unsigned char dest) -{ - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_time); - if(cur_ep) - { - cur_ep->dest = dest; - cur_ep->data[0] = 0xFF; - cur_ep->bufferlen = 1; - - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - RF_timed_rx(400); - } -} - -void settime_click (FORM* form, CONTROL* control) -{ - VICIntEnClr = INT_EINT2; - rtc.date = ((DATEBOX*)(form->controls[0]))->date; - rtc.time = ((TIMEBOX*)(form->controls[1]))->time; - send_time(0,1); - setTimeDate((struct time_ *)&rtc.time, (struct date_ *)&rtc.date); - timeInfo |= TIME_ACCURATE; - VICIntEnable = INT_EINT2; - - form->flags |= BC_Form_exit; -} - - -// Settings > Clock menu -// -void change_clock (void) -{ - const LABEL label1 = {BC_Labelnotab,0,15,100,10,BOLDFONT,0,"Datum",0}; - DATEBOX datebox1 = {BC_Datebox,0,25,58,9,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - const LABEL label2 = {BC_Labelnotab,0,37,100,10,BOLDFONT,0,"Uhrzeit",0}; - TIMEBOX timebox1 = {BC_Timebox,0,47,43,9,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - const BUTTON button1 = {BC_Button,0,63,50,15,SMALLFONT,0,"Speichern",settime_click}; - - timebox1.time = rtc.time; - datebox1.date = rtc.date; - - CONTROL* controls[5] = { (CONTROL*)&datebox1, - (CONTROL*)&timebox1, - (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&button1}; - - FORM form = {"Datum & Uhrzeit"," ",0,0,0,0,controls,0,5,0,0}; - - form_exec(&form); -} - -/* Globale zur Verfügung stehenden Variablen: -//Variablen für die Zeit: -u08 dayofweek = 1, day = 1, month = 1; -u16 year = 2004; -u08 isschaltjahr; -*/ - -unsigned char isschaltjahr(unsigned int year) { - - if ( (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0) ) - return 1; - else - return 0; -} - -void calcweekday(struct date_* d) { - - unsigned int tagdesjahres; - unsigned int jahrdiff; - unsigned int tempwochentag; - unsigned char day; - unsigned char month; - unsigned char year; - - day = (d->day >> 4)*10 + (d->day & 0x0f); - month = (d->month >> 4)*10 + (d->month & 0x0f); - year = 2000+(d->year >> 4)*10 + (d->year & 0x0f); - - tagdesjahres = 31*(month-1); - if (month > 2) tagdesjahres = tagdesjahres -3 +isschaltjahr(year); - if (month > 4) tagdesjahres--; - if (month > 6) tagdesjahres--; - if (month > 9) tagdesjahres--; - if (month > 11) tagdesjahres--; - tagdesjahres += day; - - jahrdiff = year -2000; - tempwochentag = jahrdiff + (jahrdiff-1) / 4 - (jahrdiff-1) / 100 + (jahrdiff-1) / 400 + tagdesjahres; - if (jahrdiff > 0) - tempwochentag++; - tempwochentag = (tempwochentag % 7)+3; - if (tempwochentag > 6) - tempwochentag -= 7; - d->weekday = tempwochentag; -} diff --git a/boop/trunk/rtc/rtc.h b/boop/trunk/rtc/rtc.h deleted file mode 100644 index 81a520e..0000000 --- a/boop/trunk/rtc/rtc.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - rtc.h - - Copyright (C) 2008 - - 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 3 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, see . -*/ - -#ifndef RTC_H -#define RTC_H - -#include "i2c.h" - -#define RTCslaveaddr 0xA2 - -//PCF8563 registers -#define RTCREG_CONTROL_STATUS_1 0x00 -#define RTCREG_CONTROL_STATUS_2 0x01 -#define RTCREG_SECOND 0x02 -#define RTCREG_MINUTES 0x03 -#define RTCREG_HOURS 0x04 -#define RTCREG_DAYS 0x05 -#define RTCREG_WEEKDAYS 0x06 -#define RTCREG_MONTHS_CENTURY 0x07 -#define RTCREG_YEARS 0x08 -#define RTCREG_MINUTE_ALARM 0x09 -#define RTCREG_HOUR_ALARM 0x0A -#define RTCREG_DAY_ALARM 0x0B -#define RTCREG_WEEKDAY_ALARM 0x0C -#define RTCREG_CLKOUT_CONTROL 0x0D -#define RTCREG_TIMER_CONTROL 0x0E -#define RTCREG_TIMER 0x0F - -//RTCREG_CONTROL_STATUS_2 -#define TIMER_INT_EN (1<<0) -#define ALARM_INT_EN (1<<1) -#define TIMER_FLAG (1<<2) -#define ALARM_FLAG (1<<3) - -struct time_ -{ - unsigned char second; - unsigned char minute; - unsigned char hour; - unsigned char tag; -}; - -struct date_ -{ - unsigned char day; - unsigned char weekday; - unsigned char month; - unsigned char year; -}; - -struct rtc_ -{ - struct date_ date; - struct time_ time; -}; - -volatile struct rtc_ rtc; - -volatile unsigned char timeInfo; -#define TIMECHANGED (1<<0) -#define ALARM_ENABLED (1<<1) -#define SETNEWTIME (1<<2) -#define TIME_ACCURATE (1<<3) -#define ALARM_PENDING (1<<3) - - -struct i2cjob_ i2cintjob; -unsigned char rtcbuffer[8]; - -const unsigned char days[14]; - -void initRTC(void); -unsigned char getTimeDate(struct time_* t, struct date_ *d); -void setTimeDate(struct time_* t, struct date_ *d); -void printTime (unsigned char x, unsigned char y, struct time_* t, unsigned char format); -void printDate(unsigned char x, unsigned char y, struct date_* d, unsigned char format); -void rtcIRQ (void); -void startRtcIRQ(void); -void change_clock(void); -void calcweekday(struct date_* d); - -/// Send the time via RF packet @see RF_PACKET_TIME to dest -void send_time(unsigned char dest, unsigned char wor); - -/// Request to receive time via RF packet @see RF_PACKET_TIME from dest -void ask_for_time(unsigned char dest); - -void calcBCD(unsigned char* value, char a, char max, char min); -unsigned char checkBCD(unsigned char value, char max, char min); - -#endif diff --git a/boop/trunk/rtc/rtctimer.c b/boop/trunk/rtc/rtctimer.c deleted file mode 100644 index 1944f90..0000000 --- a/boop/trunk/rtc/rtctimer.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - rtctimer.c - real-time clock timer - Copyright (C) 2010 - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "rtc.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "global.h" -#include "controls.h" -#include "sid.h" - -void initRTCtimer (void) { - -} - - -void RTCtimer_timer (FORM* form) -{ - ((TIMEBOX*)(form->controls[0]))->time = rtc.time; - control_draw(form->controls[0],0); //redraw timebox1 - if(timeInfo & ALARM_PENDING) { - form->tag=9; - timeInfo &= ~ALARM_PENDING; - } - if(form->tag) { - if(form->tag & 0x01) beep(1); - form->tag--; - } -} - -void RTCsave_click(FORM* form, CONTROL* control) { - struct i2cjob_ job; - unsigned char buffer[4]; - - buffer[0] = ((TIMEBOX*)(form->controls[8]))->time.minute; - buffer[1] = ((TIMEBOX*)(form->controls[8]))->time.hour | (1<<7); - buffer[2] = (1<<7); - buffer[3] = (1<<7); - - job.buffer = buffer; - job.onfinish = 0; - job.len = 4; - job.byteaddr = RTCREG_MINUTE_ALARM; - job.action = I2C_write; - i2c_jobexec(&job); - - timeInfo |= ALARM_ENABLED; -} - -void RTCtimer_edit(void) { - - const char* listbox1items[] = {"Alarm","Tastendruck","Makro","Funktion"}; - const char* listbox2items[] = {"Stunde","Tag","Monat"}; - - TIMEBOX timebox1 = {BC_Timebox | BC_NoTabStop,85,151,43,8,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - timebox1.time = rtc.time; - - const LABEL label1 = {BC_Labelnotab,0,20,70,9,BOLDFONT,0,"Timer",0}; - const LABEL label2 = {BC_Labelnotab,0,32,70,9,BOLDFONT,0,"Typ",0}; - const LABEL label3 = {BC_Labelnotab,0,44,70,9,BOLDFONT,0,"Wiederholung",0}; - const LABEL label4 = {BC_Labelnotab,0,56,70,9,BOLDFONT,0,"Alarmzeit",0}; - - NUMBOX numbox1 = {BC_Numbox,76,20,20,9,SMALLFONT,1,1,1,NULL,NULL}; - LISTBOX listbox1 = {BC_Listbox,76,32,50,10,SMALLFONT,0,1,(char**)listbox1items,NULL,NULL}; - LISTBOX listbox2 = {BC_Listbox,76,44,50,10,SMALLFONT,0,1,(char**)listbox2items,NULL,NULL}; - TIMEBOX timebox2 = {BC_Timebox,76,56,43,8,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - - const BUTTON button1 = {BC_Button,0,80,60,15,SMALLFONT,0,"Speichern",RTCsave_click}; - - CONTROL* controls[] = { (CONTROL*)&timebox1, - (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&label4, - (CONTROL*)&numbox1, - (CONTROL*)&listbox1, - (CONTROL*)&listbox2, - (CONTROL*)&timebox2, - (CONTROL*)&button1}; - - timebox2.time = rtc.time; - - FORM form = {"Timer bearbeiten","",NULL,NULL,RTCtimer_timer,0,controls,0,NUM_OF_ELEMENTS(controls),0,200}; - form_exec(&form); - - timeInfo &= ~ALARM_ENABLED; -} diff --git a/boop/trunk/rtc/rtctimer.h b/boop/trunk/rtc/rtctimer.h deleted file mode 100644 index 6bc0018..0000000 --- a/boop/trunk/rtc/rtctimer.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - rtctimer.h - real-time clock timer - Copyright (C) 2010 - - 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 3 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, see . -*/ - -#ifndef RTCTIMER_H -#define RTCTIMER_H - -struct RTCtimer_ { - unsigned char flags; - unsigned char minute; - unsigned char hour; - unsigned char day; - unsigned char month; - unsigned char repeat; //!< repeat alarm: Bit0=So...Bit6=Sa - unsigned char arg[4]; //!< argument for timer execution -}; -#endif - -//RTCtimer_ flags -#define RTCTIMER_TYPEMASK 0x07 -#define RTCTIMER_ALARM 0x00 -#define RTCTIMER_KEY 0x01 -#define RTCTIMER_MACRO 0x02 -#define RTCTIMER_FUNCTION 0x03 -#define RTCTIMER_OBSOLETE (1<<6) -#define RTCTIMER_SLOTFREE (1<<7) - -void RTCtimer_edit(void); diff --git a/boop/trunk/serial/Make.conf b/boop/trunk/serial/Make.conf deleted file mode 100644 index e36a9e2..0000000 --- a/boop/trunk/serial/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := serial.c redirector.c -SRCS := serirq.c diff --git a/boop/trunk/serial/redirector.c b/boop/trunk/serial/redirector.c deleted file mode 100644 index df263bd..0000000 --- a/boop/trunk/serial/redirector.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - redirector.h - serial port redirector - Copyright (C) 2009 Telekatz - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "redirector.h" -#include "serial.h" -#include "buffer.h" -#include "global.h" -#include "controls.h" -#include "fonty.h" -#include "rf.h" -#include "timerfuncs.h" - -#define redirectorbuffersize 200 - -extern unsigned int is_drawing; - -struct redirector_ { - struct cBuffer_ incbuffer; - struct cBuffer_ outcbuffer; - struct RFendpoint_* dataout_ep; - struct RFendpoint_* datain_ep; - struct RFendpoint_* cmdout_ep; - struct RFendpoint_* cmdin_ep; - unsigned long lastlen; - unsigned char timeoutcnt; - unsigned char inbuffer[redirectorbuffersize]; - unsigned char outbuffer[redirectorbuffersize]; - unsigned char status; -}; - -const unsigned int listbrg[8] = { 1200,2400,4800,9600,14400,19200,28800,38400}; - -void redirector_start(FORM* form, struct redirector_* redirectorvars) { - - redirectorvars->dataout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->lastlen = 0; - redirectorvars->timeoutcnt = 0; - - cBufferFlush(&redirectorvars->incbuffer); - cBufferFlush(&redirectorvars->outcbuffer); - uart0_incbuffer = &redirectorvars->incbuffer; - uart0_outcbuffer = &redirectorvars->outcbuffer; - - redirectorvars->dataout_ep->flags |= EPenabled; - redirectorvars->datain_ep->flags |= EPenabled; - - U0FCR |= (1<<7); // trigger level 1 - serial_setbrg (listbrg[((LISTBOX*)(form->controls[2]))->listindex]); - sysInfo |= SYS_NOPDOWN; - - form->controls[2]->type |= BC_NoTabStop; - form->controls[3]->type |= BC_NoTabStop; - form->controls[5]->type |= BC_Disabled; - form->controls[6]->type &= ~BC_Disabled; - form->sel = 6; - form->flags |= BC_Form_redraw; - -} - -void redirector_start_click(FORM* form, CONTROL* control) { - - volatile unsigned long timeout; - - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - RF_changestate(RFrx); - - redirectorvars->cmdout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->cmdout_ep->data[0] = redir_SET; - redirectorvars->cmdout_ep->data[1] = ((LISTBOX*)(form->controls[2]))->listindex; - redirectorvars->cmdout_ep->bufferlen = 2; - redirectorvars->cmdout_ep->flags |= EPnewdata | EPsendwor; - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - RF_changestate(RFtx); - - addTimeout(&timeout, 200); - while(timeout && !(redirectorvars->cmdin_ep->flags & EPnewdata)); - removeTimeout(&timeout); - - if(!timeout) { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nZiel antwortet nicht"); - form_draw(form); - RF_changestate(RFwor); - return; - } - - redirectorvars->cmdout_ep->data[0] = redir_START; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - RF_changestate(RFtx); - - addTimeout(&timeout, 200); - while(timeout && !(redirectorvars->cmdin_ep->flags & EPnewdata)); - removeTimeout(&timeout); - - if(!timeout) { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nZiel antwortet nicht"); - form->flags |= BC_Form_redraw; - RF_changestate(RFwor); - return; - } - - redirector_start(form, redirectorvars); - -} - - -void redirector_stop_click(FORM* form, CONTROL* control) { - - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - redirectorvars->cmdout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->cmdout_ep->data[0] = redir_STOP; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - - RF_changestate(RFtx); - - redirectorvars->dataout_ep->flags &= ~EPenabled; - redirectorvars->datain_ep->flags &= ~EPenabled; - - U0FCR &= ~((1<<6) | (1<<7)); // trigger level 0 - uart0_incbuffer = 0; - uart0_outcbuffer = 0; - serial_setbrg (DEFAULTBRG); - sysInfo &= ~SYS_NOPDOWN; - RF_changestate(RFwor); - - form->controls[2]->type &= ~BC_NoTabStop; - form->controls[3]->type &= ~BC_NoTabStop; - form->controls[5]->type &= ~BC_Disabled; - form->controls[6]->type |= BC_Disabled; - form->sel = 5; - form->flags |= BC_Form_redraw; - -} - -#define sendcount 59 -void redirector_timer(FORM* form) { - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - //((NUMBOX*)(form->controls[4]))->value = redirectorvars->outcbuffer.len; - //control_draw(form->controls[4],0); - - if(redirectorvars->incbuffer.len == redirectorvars->lastlen) { - if(redirectorvars->timeoutcnt) - redirectorvars->timeoutcnt--; - } - else { - redirectorvars->timeoutcnt = 2; - } - redirectorvars->lastlen = redirectorvars->incbuffer.len; - - - if(redirectorvars->dataout_ep && redirectorvars->incbuffer.len && !(redirectorvars->dataout_ep->flags & EPnewdata) && - ((redirectorvars->incbuffer.len >= sendcount) | !(redirectorvars->timeoutcnt))) { - - if(redirectorvars->incbuffer.len >= sendcount) - redirectorvars->dataout_ep->bufferlen = sendcount; - else - redirectorvars->dataout_ep->bufferlen = redirectorvars->incbuffer.len; - - redirectorvars->dataout_ep->flags |= EPnewdata; - RF_changestate(RFtx); - } - - if(redirectorvars->outcbuffer.len) { - if(!(U0IER & IER_THRE)) { - U0IER |= IER_THRE; - U0THR = cBufferGet(uart0_outcbuffer); - (((NUMBOX*)(form->controls[4]))->value)++; - control_draw(form->controls[4],0); - } - } - - if(redirectorvars->cmdin_ep->flags & EPnewdata) { - unsigned char ACK = 0; - switch (redirectorvars->cmdin_ep->data[0]) { - case redir_ACK: - break; - case redir_SET: - if (redirectorvars->cmdin_ep->bufferlen > 1) { - if(redirectorvars->cmdin_ep->data[1] <= baud_38400) { - ((LISTBOX*)(form->controls[2]))->listindex = redirectorvars->cmdin_ep->data[1]; - form->flags |= BC_Form_redraw; - } - ACK = 1; - } - break; - case redir_START: - ((NUMBOX*)(form->controls[3]))->value = redirectorvars->cmdin_ep->dest; - form->flags |= BC_Form_redraw; - /*redir_dest = RXframe->srcAddr; - setbaud(redir_baud); - redirector = 1; - ACK = 1;*/ - break; - case redir_STOP: - /*redirector = 0; - setbaud(baud_default); - ACK = 1;*/ - break; - case redir_PING: - ACK = 1; - break; - } - - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - if(ACK) { - redirectorvars->cmdout_ep->data[0] = redir_ACK; - redirectorvars->cmdout_ep->dest = redirectorvars->cmdin_ep->dest; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - RF_changestate(RFtx); - } - } -} - - -void redirector_test(FORM* form, CONTROL* control) { - - if(uart0_incbuffer) { - cBufferAdd(uart0_incbuffer,'a'); - cBufferAdd(uart0_incbuffer,'b'); - cBufferAdd(uart0_incbuffer,'c'); - } -} - - -// menu (Tool>Redirector) -void uarto_redirector(void) { - - struct redirector_ redirectorvars; - - cBufferInit(&redirectorvars.incbuffer, redirectorvars.inbuffer, redirectorbuffersize); - cBufferInit(&redirectorvars.outcbuffer, redirectorvars.outbuffer, redirectorbuffersize); - - const char* listbox1items[8] = {"1200","2400","4800","9600","14400","19200","28800","38400"}; - - const LABEL label1 = {BC_Labelnotab,0,20,70,9,BOLDFONT,0,"Baud",0}; - const LABEL label2 = {BC_Labelnotab,0,32,70,9,BOLDFONT,0,"Zieladresse",0}; - LISTBOX listbox1 = {BC_Listbox,78,20,40,10,SMALLFONT,5,8,(char**)listbox1items,NULL,NULL}; - NUMBOX numbox1 = {BC_Numbox,78,32,20,9,SMALLFONT,1,0,255,NULL,NULL}; - NUMBOX numbox2 = {BC_Numbox | BC_NoTabStop,0,100,20,9,SMALLFONT,redirectorvars.outcbuffer.len,0,redirectorbuffersize,NULL,NULL}; - BUTTON button1 = {BC_Button,10,120,48,15,SMALLFONT,0,"Start",redirector_start_click}; - BUTTON button2 = {BC_Button | BC_Disabled,70,120,48,15,SMALLFONT,0,"Stop",redirector_stop_click}; - const BUTTON button3 = {BC_Button, 0,50,48,15,SMALLFONT,0,"test",redirector_test}; - - CONTROL* controls[8] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&listbox1, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2, - (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3}; - - FORM form = {"Com redirector","",NULL,NULL,redirector_timer,(unsigned long)&redirectorvars,controls,2,8,0,2}; - - redirectorvars.dataout_ep = openEP(&redirectorvars.incbuffer, 0, packet_redirDAT); - redirectorvars.datain_ep = openEP(&redirectorvars.outcbuffer, 0, packet_redirDAT); - redirectorvars.cmdout_ep = openEP(0, 0, packet_redirCMD); - redirectorvars.cmdin_ep = openEP(0, 0, packet_redirCMD); - - if(redirectorvars.dataout_ep && redirectorvars.datain_ep && redirectorvars.cmdout_ep && redirectorvars.cmdin_ep) { - redirectorvars.dataout_ep->flags |= EPoutput | EPtypecbuffer; - redirectorvars.datain_ep->flags |= EPinput | EPtypecbuffer; - redirectorvars.cmdout_ep->flags |= EPoutput | EPtypedata | EPenabled; - redirectorvars.cmdin_ep->flags |= EPinput | EPtypedata | EPenabled; - form_exec(&form); - } - else { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nKein freier RF Endpoint\nverfuegbar.\n"); - } - - redirector_stop_click(&form,form.controls[6]); - - closeEP(redirectorvars.datain_ep); - closeEP(redirectorvars.dataout_ep); - closeEP(redirectorvars.cmdin_ep); - closeEP(redirectorvars.cmdout_ep); - -} diff --git a/boop/trunk/serial/redirector.h b/boop/trunk/serial/redirector.h deleted file mode 100644 index 428fbe8..0000000 --- a/boop/trunk/serial/redirector.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - redirector.h - serial port redirector - Copyright (C) 2009 Telekatz - - 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 3 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, see . -*/ - -#ifndef REDIRECTOR_H -#define REDIRECTOR_H - -#define redir_ACK 0 -#define redir_SET 1 -#define redir_START 2 -#define redir_STOP 3 -#define redir_PING 4 - -#define baud_1200 0 -#define baud_2400 1 -#define baud_4800 2 -#define baud_9600 3 -#define baud_14400 4 -#define baud_19200 5 -#define baud_28800 6 -#define baud_38400 7 -#define baud_57600 8 -#define baud_115200 9 - -void uarto_redirector(void); - -#endif diff --git a/boop/trunk/serial/serial.c b/boop/trunk/serial/serial.c deleted file mode 100644 index de8dc65..0000000 --- a/boop/trunk/serial/serial.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * minor changes (c) 2007 ch.klippel - * - * (C) Copyright 2004 - * DAVE Srl - * http://www.dave-tech.it - * http://www.wawnet.biz - * mailto:info@wawnet.biz - * - * (C) Copyright 2002-2004 - * Wolfgang Denk, DENX Software Engineering, - * - * (C) Copyright 2002 - * Sysgo Real-Time Solutions, GmbH - * Marius Groeger - * - * (C) Copyright 2002 - * Sysgo Real-Time Solutions, GmbH - * Alex Zuepke - * - * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) - * - * 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 "lpc2220.h" -#include "serial.h" -#include "irq.h" -#include "backlight.h" -#include "buffer.h" - -extern const char hval[16]; - -extern void uart0_irq(void); - -/* flush serial input queue. returns 0 on success or negative error - * number otherwise - */ -int serial_flush_input(void) -{ - volatile unsigned int tmp; - - /* keep on reading as long as the receiver is not empty */ - while(RX_DATA(U0LSR)) { - tmp = GET_CHAR(U0RBR); - } - - return 0; -} - - -/* flush output queue. returns 0 on success or negative error number - * otherwise - */ -int serial_flush_output(void) -{ - /* wait until the transmitter is no longer busy */ - while(TX_READY(U0LSR)==0) { - } - - return 0; -} - - -void serial_setbrg (unsigned int baudrate) -{ - - /* get correct divisor */ - /*for PCLK 15 Mhz */ - U0LCR = 0x83; - - switch(baudrate) { - - case 75: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 3; - break; - - case 150: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 1; - break; - - case 300: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 0; - break; - - case 600: - U0DLL = 2; - U0DLM = 78; - U0FDR = (4 << 4) + 1; - break; - - case 1200: - U0DLL = 1; - U0DLM = 39; - U0FDR = (4 << 4) + 1; - break; - - case 2400: - U0DLL = 186; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 4800: - U0DLL = 93; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 9600: - U0DLL = 71; - U0DLM = 0; - U0FDR = (8 << 4) + 3; - break; - - case 14400: - U0DLL = 31; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 19200: - U0DLL = 38; - U0DLM = 0; - U0FDR = (14 << 4) + 4; - break; - - case 28800: - U0DLL = 24; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 38400: - U0DLL = 19; - U0DLM = 0; - U0FDR = (14 << 4) + 4; - break; - - case 57600: - U0DLL = 12; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 115200: - U0DLL = 6; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 230400: - U0DLL = 3; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - } - U0LCR = 0x03; - - serial_flush_output(); - serial_flush_input(); -} - - -/* - * Initialise the serial port with the given baudrate. The settings - * are always 8 data bits, no parity, 1 stop bit, no start bits. - * - */ -int serial_init (void) -{ -// PINSEL0=0x05; // pin select -> tx, rx - serial_setbrg (DEFAULTBRG); -// serial_setbrg (57600); - U0FCR = 0x07; // enable fifo - uart0_incbuffer = 0; - uart0_outcbuffer = 0; - - // enable IRQ5 for UART0 - VICVectAddr5 = (unsigned long)&(uart0_irq); - VICVectCntl5 = VIC_SLOT_EN | INT_SRC_UART0; - VICIntEnable = INT_UART0; - U0IER = IER_RBR | IER_RXLS; - return (0); -} - - -/* - * Output a single byte to the serial port. - */ -void serial_putc (const char c) -{ - // proper CRLF transmission - if (c == '\n') - serial_putc('\r'); - - /* wait for room in the transmit FIFO */ - while(TX_READY(U0LSR)==0); - - PUT_CHAR(U0THR,c); -} - -void serial_putbyte (const char c) -{ - /* wait for room in the transmit FIFO */ - while(TX_READY(U0LSR)==0); - - PUT_CHAR(U0THR,c); -} -/* - * Read a single byte from the serial port. Returns 1 on success, 0 - * otherwise. When the function is succesfull, the character read is - * written into its argument c. - */ -int serial_tstc (void) -{ - return (RX_DATA(U0LSR)); -} - -/* - * Read a single byte from the serial port. Returns 1 on success, 0 - * otherwise. When the function is succesfull, the character read is - * written into its argument c. - */ -int serial_getc (void) -{ - int rv; - - for(;;) { - rv = serial_tstc(); - - if(rv > 0) - return (GET_CHAR(U0RBR)); - } -} - -void -serial_puts (const char *s) -{ - while (*s != 0) { - serial_putc (*s++); - } -} - -void putHexC(const unsigned char v) -{ - serial_putc(hval[v>>4]); - serial_putc(hval[v & 0x0F]); -} - -void putHexS(const unsigned short v) -{ - putHexC(v >> 8); - putHexC(v & 0xFF); -} - -void putHexW(const unsigned long v) -{ - putHexS(v >> 16); - putHexS(v & 0xFFFF); -} - -void serial_interactive(void) { - int ch = serial_getc(); - switch (ch) { - case '.': - serial_puts("Betty Boop ("__DATE__ " " __TIME__ ")\n"); - break; - case '0': - setBacklight(0x00); // pwm value - break; - case '1': - setBacklight(0x1F); // pwm value - break; - case '2': - setBacklight(0x3F); // pwm value - break; - default: - serial_putc(ch); - } -} diff --git a/boop/trunk/serial/serial.h b/boop/trunk/serial/serial.h deleted file mode 100644 index 292174f..0000000 --- a/boop/trunk/serial/serial.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - serial.h - serial port functions - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef BOOP_SERIAL_H -#define BOOP_SERIAL_H - -#define USRRxData (1 << 0) -#define USRTxHoldEmpty (1 << 6) - -#define IER_RBR 1 -#define IER_THRE 2 -#define IER_RXLS 4 - -#define IIR_RLS 0x06 -#define IIR_RDA 0x04 -#define IIR_CTI 0x0c -#define IIR_THRE 0x02 - -#define GET_CHAR(p) p -#define PUT_CHAR(p,c) (p= (unsigned )(c)) -#define TX_READY(s) ((s) & USRTxHoldEmpty) -#define RX_DATA(s) ((s) & USRRxData) - -#define DEFAULTBRG 115200 - -struct cBuffer_* uart0_incbuffer; -struct cBuffer_* uart0_outcbuffer; - -int serial_flush_input(void); -int serial_flush_output(void); -void serial_setbrg (unsigned int baudrate); -int serial_init (void); -void serial_putc (const char c); -void serial_putbyte (const char c); -int serial_tstc (void); -int serial_getc (void); -void serial_puts (const char *s); - -void putHexC(const unsigned char v); -void putHexS(const unsigned short v); -void putHexW(const unsigned long v); - -void serial_interactive(void); - -#endif /* BOOP_SERIAL_H */ diff --git a/boop/trunk/serial/serirq.c b/boop/trunk/serial/serirq.c deleted file mode 100644 index 8216acb..0000000 --- a/boop/trunk/serial/serirq.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - serirq.c - serial interrupr - Copyright (C) 2009 - - 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 3 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, see . -*/ - -#include "backlight.h" -#include "lpc2220.h" -#include "serial.h" -#include "buffer.h" - -//volatile int uart0_active = 0; - -void uart0_irq(void) { - char st = U0IIR & 0x0f; - - // IRQ only valid when IIR_bit_0 == 0 - if (st & 1) - return; - - switch (st) { - case IIR_RLS: // Receive Line Status - putHexW(U0LSR); - serial_puts(" RLS?!\n"); - - break; - case IIR_RDA: // Receive Data Available - case IIR_CTI: // Character Time-out indication - if(uart0_incbuffer) { - while(U0LSR & (1 << 0)) { - cBufferAdd(uart0_incbuffer,U0RBR); - } - } - else { - setBacklight(BL_AUTO); - serial_interactive(); - } - break; - case IIR_THRE: - if(uart0_outcbuffer) { - if(uart0_outcbuffer->len) { - unsigned char x = 14; - while(x-- && uart0_outcbuffer->len) { - U0THR = cBufferGet(uart0_outcbuffer); - } - } - else { - U0IER &= ~IER_THRE; - } - } - else { - serial_puts("THRE?!\n"); - } - - } - -} - - diff --git a/boop/trunk/sound3.h b/boop/trunk/sound3.h deleted file mode 100644 index 01655d7..0000000 --- a/boop/trunk/sound3.h +++ /dev/null @@ -1,1571 +0,0 @@ -#define sound3_len 25060 -const unsigned char sound3_data[] = { -0x80,0x80,0x80,0x80, -0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80, -0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x81, -0x81,0x82,0x82,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x80, -0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x80, -0x80,0x80,0x80,0x80,0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, -0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x80,0x81,0x81, -0x81,0x81,0x80,0x7F,0x7F,0x7E,0x7E,0x7F,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81, -0x81,0x81,0x81,0x81,0x80,0x80,0x81,0x82,0x83,0x83,0x83,0x83,0x82,0x81,0x81,0x80, -0x80,0x80,0x81,0x82,0x82,0x83,0x82,0x82,0x81,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F, -0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x81, -0x81,0x80,0x80,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7C,0x77,0x71,0x67, -0x5F,0x58,0x55,0x55,0x58,0x5B,0x5D,0x5D,0x5B,0x58,0x54,0x4D,0x42,0x38,0x3F,0x56, -0x6D,0x81,0x94,0xA6,0xB7,0xC1,0xC8,0xD0,0xDA,0xE3,0xE8,0xEA,0xE6,0xDE,0xD3,0xC5, -0xB7,0xAA,0x9F,0x9A,0x99,0x97,0x95,0x96,0x96,0x95,0x92,0x8F,0x8D,0x8E,0x8E,0x90, -0x8F,0x87,0x80,0x79,0x70,0x68,0x62,0x65,0x6B,0x6F,0x73,0x76,0x76,0x77,0x7B,0x7D, -0x77,0x72,0x6C,0x68,0x6B,0x72,0x7F,0x8A,0x8E,0x8C,0x83,0x6E,0x59,0x48,0x38,0x30, -0x2C,0x2B,0x2E,0x39,0x47,0x4E,0x54,0x5C,0x60,0x5E,0x58,0x56,0x5A,0x67,0x78,0x8D, -0xA2,0xB6,0xC1,0xC3,0xC0,0xBB,0xB2,0xAA,0xA1,0x93,0x89,0x85,0x83,0x80,0x81,0x84, -0x82,0x7D,0x72,0x63,0x55,0x48,0x40,0x3F,0x48,0x55,0x63,0x76,0x89,0x95,0x91,0x90, -0x89,0x83,0x7E,0x7B,0x7A,0x75,0x70,0x67,0x6D,0x75,0x7F,0x93,0xAB,0xB9,0xB6,0xAE, -0x9B,0x90,0x7B,0x6B,0x66,0x5F,0x5E,0x6A,0x76,0x7D,0x7F,0x82,0x85,0x7D,0x78,0x77, -0x82,0x89,0x99,0xAB,0xC3,0xC5,0xB3,0xA6,0xA0,0x93,0x85,0x8C,0x97,0x9F,0x9B,0x8A, -0x71,0x5C,0x53,0x57,0x62,0x77,0x88,0x9A,0xA6,0xAC,0xB0,0xB5,0xC5,0xD1,0xD6,0xCF, -0xCE,0xCE,0xC4,0xAE,0x97,0x81,0x71,0x65,0x5F,0x5D,0x5C,0x57,0x43,0x35,0x2C,0x27, -0x29,0x32,0x45,0x59,0x6B,0x76,0x75,0x74,0x78,0x7D,0x7D,0x77,0x71,0x73,0x78,0x70, -0x6A,0x63,0x55,0x4F,0x51,0x5B,0x57,0x54,0x60,0x6F,0x7A,0x8C,0xAB,0xCB,0xE5,0xEE, -0xD6,0xAD,0x84,0x6D,0x6F,0x7B,0x86,0x82,0x78,0x6C,0x5C,0x50,0x4E,0x53,0x59,0x6D, -0x74,0x7F,0x89,0x85,0x90,0x9F,0xB9,0xCA,0xCF,0xD3,0xD8,0xE1,0xE1,0xD2,0xB0,0x86, -0x6B,0x74,0x86,0x88,0x84,0x86,0x88,0x85,0x8C,0x98,0x97,0x95,0x93,0x92,0x8E,0x86, -0x87,0x8C,0x8D,0x8B,0x7E,0x6A,0x53,0x40,0x3C,0x3D,0x3C,0x48,0x5E,0x6F,0x7B,0x88, -0x8F,0x88,0x81,0x82,0x7D,0x72,0x6C,0x68,0x64,0x5B,0x56,0x5B,0x62,0x6A,0x6A,0x6F, -0x73,0x73,0x70,0x69,0x5F,0x5F,0x5C,0x54,0x57,0x5F,0x6B,0x77,0x86,0xA3,0xC9,0xDD, -0xD5,0xC9,0xC1,0xBA,0xB7,0xB6,0xB3,0xAA,0xA0,0x96,0x94,0x93,0x90,0x8A,0x87,0x7D, -0x71,0x67,0x5B,0x55,0x55,0x59,0x5B,0x5B,0x59,0x5F,0x79,0x8F,0x9B,0x9B,0x8F,0x86, -0x7E,0x7E,0x84,0x84,0x74,0x6B,0x6C,0x67,0x5D,0x54,0x51,0x5E,0x6E,0x6C,0x63,0x60, -0x67,0x73,0x7F,0x79,0x64,0x58,0x62,0x77,0x78,0x6B,0x63,0x5E,0x5C,0x5E,0x57,0x4F, -0x55,0x60,0x65,0x69,0x65,0x5D,0x60,0x6B,0x73,0x71,0x76,0x7F,0x8C,0x95,0x96,0x93, -0xA3,0xBE,0xC5,0xC4,0xCA,0xD6,0xD5,0xBC,0xAA,0x9F,0x97,0x9A,0xA4,0xA5,0xA6,0xAB, -0xAC,0xB1,0xB5,0xAC,0x9E,0x91,0x86,0x7E,0x83,0x8D,0x99,0xA7,0xAA,0xA4,0xA2,0x9E, -0x9D,0x9A,0x91,0x89,0x85,0x7B,0x73,0x79,0x83,0x81,0x72,0x68,0x62,0x5A,0x52,0x5A, -0x6E,0x86,0x98,0xA0,0xA3,0x9F,0x95,0x87,0x79,0x73,0x6D,0x68,0x66,0x68,0x69,0x6A, -0x6A,0x6D,0x6E,0x6C,0x6E,0x69,0x5F,0x59,0x5C,0x62,0x67,0x6B,0x6C,0x6C,0x6F,0x79, -0x80,0x7C,0x73,0x6D,0x68,0x68,0x6A,0x76,0x8C,0xA5,0xB6,0xBD,0xBD,0xB3,0xAB,0xAB, -0xAE,0xAF,0xB2,0xB3,0xA4,0x97,0x8D,0x81,0x76,0x69,0x62,0x63,0x60,0x58,0x4B,0x3B, -0x31,0x37,0x45,0x4E,0x56,0x5F,0x72,0x86,0x90,0x95,0x90,0x84,0x89,0x93,0x9B,0xA1, -0xA3,0xAA,0xA7,0xA0,0x96,0x96,0x97,0x91,0x96,0x99,0x99,0x95,0x8F,0x8C,0x89,0x8E, -0x94,0x8B,0x79,0x64,0x4B,0x37,0x2F,0x33,0x40,0x50,0x5E,0x69,0x63,0x57,0x53,0x50, -0x46,0x41,0x46,0x56,0x68,0x77,0x85,0x8F,0x92,0x9A,0xA2,0xA8,0xAC,0xB0,0xB1,0xB0, -0xB1,0xB7,0xB5,0xB0,0xAC,0xA5,0xA7,0xA8,0x9F,0x93,0x8A,0x87,0x8B,0x8A,0x85,0x7B, -0x6E,0x61,0x56,0x52,0x59,0x62,0x65,0x6B,0x77,0x81,0x7F,0x75,0x75,0x7E,0x86,0x8B, -0x8E,0x96,0x9E,0x9B,0x94,0x8F,0x89,0x92,0xA3,0xAE,0xB3,0xAD,0xA1,0x94,0x87,0x7B, -0x74,0x70,0x6C,0x69,0x61,0x55,0x48,0x47,0x52,0x63,0x71,0x73,0x75,0x77,0x7E,0x84, -0x7A,0x6E,0x70,0x77,0x7E,0x7C,0x79,0x7C,0x7C,0x79,0x75,0x70,0x71,0x76,0x7E,0x81, -0x84,0x85,0x7D,0x73,0x6F,0x75,0x81,0x84,0x88,0x88,0x7E,0x68,0x50,0x4F,0x60,0x72, -0x7D,0x84,0x80,0x6F,0x59,0x49,0x44,0x46,0x57,0x74,0x8B,0x91,0x8B,0x8A,0x8C,0x8B, -0x86,0x83,0x84,0x84,0x89,0x90,0x98,0xAA,0xBF,0xC9,0xCB,0xD1,0xCE,0xBD,0xAF,0xAC, -0xA8,0x9C,0x91,0x8A,0x88,0x8E,0x91,0x91,0x96,0xA2,0xAF,0xB3,0xAE,0x9D,0x86,0x73, -0x6C,0x6D,0x74,0x7F,0x7E,0x78,0x7E,0x89,0x8C,0x85,0x84,0x89,0x8B,0x8C,0x8A,0x81, -0x7D,0x85,0x8F,0x8E,0x87,0x8A,0x99,0xA7,0xAF,0xA9,0xA0,0x93,0x87,0x7D,0x76,0x76, -0x79,0x7E,0x7D,0x73,0x6B,0x67,0x6C,0x75,0x76,0x78,0x7A,0x7D,0x81,0x78,0x6B,0x66, -0x65,0x63,0x66,0x6B,0x6A,0x61,0x56,0x51,0x54,0x5F,0x69,0x75,0x82,0x8B,0x90,0x8C, -0x85,0x80,0x85,0x8C,0x8D,0x88,0x7B,0x67,0x57,0x4A,0x44,0x49,0x52,0x5A,0x65,0x6F, -0x70,0x71,0x6D,0x63,0x52,0x4A,0x45,0x42,0x49,0x55,0x66,0x75,0x7C,0x7D,0x78,0x73, -0x72,0x75,0x72,0x65,0x5F,0x64,0x71,0x7F,0x89,0x96,0xA6,0xB3,0xB4,0xB0,0xA9,0xA3, -0x9A,0x96,0x9A,0xA0,0xAB,0xB7,0xC0,0xC0,0xB9,0xA6,0x8E,0x7C,0x7A,0x7E,0x7C,0x79, -0x7A,0x79,0x75,0x71,0x78,0x83,0x87,0x86,0x7B,0x6B,0x67,0x6B,0x7A,0x91,0xA2,0xA7, -0xA9,0xAD,0xB0,0xB0,0xAE,0xA4,0x92,0x85,0x80,0x7F,0x7D,0x78,0x73,0x7F,0x98,0xA7, -0xA1,0x91,0x86,0x81,0x7B,0x6F,0x62,0x57,0x55,0x56,0x55,0x51,0x58,0x68,0x78,0x80, -0x80,0x7D,0x7B,0x80,0x89,0x92,0x8F,0x83,0x77,0x6F,0x6A,0x67,0x67,0x6C,0x6F,0x72, -0x73,0x73,0x78,0x80,0x82,0x7F,0x7A,0x7A,0x7F,0x86,0x92,0xA8,0xBD,0xC7,0xC7,0xC5, -0xC6,0xCB,0xC8,0xB8,0xA1,0x85,0x72,0x6C,0x6B,0x68,0x66,0x74,0x8E,0x9F,0xA5,0x9D, -0x88,0x6E,0x57,0x4E,0x51,0x5B,0x65,0x71,0x7B,0x80,0x76,0x65,0x5D,0x5D,0x61,0x5D, -0x52,0x4C,0x46,0x3C,0x3C,0x44,0x52,0x67,0x80,0x8F,0x90,0x87,0x80,0x7D,0x7A,0x7C, -0x81,0x83,0x7D,0x72,0x67,0x64,0x69,0x73,0x82,0x91,0xA1,0xAA,0xA4,0x91,0x7D,0x70, -0x69,0x6C,0x73,0x79,0x87,0x98,0xA6,0xB0,0xBB,0xD0,0xDE,0xDC,0xD8,0xD8,0xD1,0xBE, -0xA9,0x9E,0xA3,0xAE,0xAE,0xA2,0x8E,0x7B,0x74,0x78,0x7D,0x80,0x85,0x8A,0x8B,0x87, -0x7F,0x7E,0x83,0x87,0x83,0x76,0x6A,0x65,0x67,0x73,0x86,0x96,0x9F,0x9B,0x8C,0x7F, -0x75,0x6C,0x64,0x59,0x50,0x51,0x5A,0x64,0x68,0x66,0x68,0x74,0x84,0x8C,0x88,0x86, -0x86,0x7D,0x6D,0x64,0x5A,0x46,0x33,0x31,0x3B,0x41,0x3F,0x3A,0x3C,0x43,0x4F,0x5B, -0x61,0x61,0x69,0x74,0x78,0x7A,0x7A,0x7C,0x7F,0x7E,0x7E,0x83,0x8B,0x94,0x9B,0x9D, -0x92,0x88,0x89,0x89,0x80,0x76,0x74,0x7A,0x7E,0x80,0x83,0x88,0x8B,0x8F,0x98,0xA3, -0xAC,0xB0,0xA9,0x9D,0x97,0x99,0x96,0x8A,0x7A,0x78,0x7D,0x7D,0x77,0x73,0x7F,0x94, -0xA8,0xB1,0xAE,0xA9,0xA6,0x9D,0x8B,0x7D,0x72,0x6F,0x75,0x80,0x8B,0x90,0x90,0x84, -0x72,0x6B,0x74,0x79,0x76,0x7B,0x7D,0x72,0x6C,0x74,0x81,0x8A,0x8C,0x84,0x71,0x5F, -0x56,0x58,0x5C,0x59,0x51,0x4D,0x51,0x5F,0x6A,0x6B,0x73,0x86,0x93,0x98,0x98,0x96, -0x90,0x89,0x8B,0x9B,0xAC,0xB3,0xB5,0xB6,0xB9,0xB6,0xAE,0xA5,0x9F,0x9C,0xA0,0xA9, -0xAB,0xA4,0x9A,0x97,0x97,0x96,0x93,0x8F,0x88,0x7A,0x6D,0x65,0x68,0x74,0x7B,0x7D, -0x7A,0x76,0x78,0x83,0x92,0x9A,0x97,0x90,0x8B,0x8F,0x92,0x89,0x7D,0x79,0x77,0x6F, -0x65,0x5D,0x5E,0x6C,0x80,0x88,0x85,0x83,0x82,0x81,0x7C,0x77,0x74,0x77,0x7C,0x7F, -0x81,0x82,0x83,0x7C,0x6B,0x5B,0x56,0x5C,0x5F,0x5C,0x57,0x54,0x53,0x50,0x51,0x5D, -0x71,0x7D,0x83,0x87,0x86,0x84,0x85,0x8C,0x9B,0xA7,0xA2,0x92,0x88,0x88,0x8C,0x96, -0xA1,0xA3,0x98,0x89,0x7F,0x78,0x70,0x6C,0x72,0x7B,0x7A,0x73,0x6E,0x6E,0x74,0x78, -0x7A,0x7D,0x81,0x81,0x74,0x63,0x59,0x5B,0x65,0x6D,0x72,0x75,0x77,0x7A,0x81,0x83, -0x86,0x8C,0x84,0x76,0x6D,0x70,0x7C,0x88,0x8A,0x86,0x87,0x8D,0x8A,0x8A,0x96,0xA0, -0x98,0x8A,0x88,0x94,0x9F,0x9F,0x99,0x8E,0x84,0x81,0x7C,0x7B,0x80,0x82,0x7F,0x7A, -0x75,0x72,0x77,0x84,0x92,0x9B,0x9C,0x93,0x85,0x7A,0x78,0x84,0x94,0x9C,0x9A,0x8E, -0x84,0x87,0x8C,0x87,0x76,0x62,0x4E,0x41,0x43,0x56,0x6D,0x75,0x73,0x6F,0x76,0x84, -0x8C,0x8C,0x8B,0x87,0x81,0x7B,0x79,0x7E,0x7F,0x7B,0x74,0x74,0x7E,0x8B,0x92,0x93, -0x83,0x6F,0x67,0x65,0x61,0x5C,0x5A,0x5C,0x62,0x68,0x6B,0x6F,0x6D,0x63,0x5F,0x68, -0x74,0x7B,0x7D,0x7C,0x87,0x9C,0xAA,0xAA,0x9F,0x99,0xA3,0xA8,0xA5,0xA5,0xA3,0xA0, -0xA0,0x9E,0x9F,0xA7,0xA9,0xA4,0x9A,0x90,0x8D,0x8E,0x8A,0x85,0x81,0x7D,0x7A,0x76, -0x76,0x7C,0x86,0x8C,0x89,0x85,0x7E,0x76,0x70,0x6B,0x6B,0x71,0x74,0x6E,0x66,0x69, -0x79,0x8D,0x9B,0xA1,0x9D,0x96,0x93,0x92,0x8F,0x8E,0x8E,0x8C,0x86,0x81,0x83,0x85, -0x80,0x7B,0x7E,0x82,0x80,0x7F,0x81,0x81,0x7C,0x7D,0x7E,0x79,0x7A,0x7B,0x74,0x6D, -0x6B,0x73,0x80,0x92,0x9A,0x90,0x89,0x89,0x85,0x79,0x67,0x5B,0x63,0x75,0x7F,0x7B, -0x72,0x6E,0x76,0x80,0x88,0x8C,0x91,0x97,0x97,0x97,0x99,0x93,0x83,0x74,0x71,0x70, -0x6D,0x66,0x62,0x64,0x70,0x84,0x98,0xA2,0xA0,0x9C,0x97,0x91,0x8B,0x84,0x7E,0x7A, -0x72,0x67,0x65,0x76,0x8B,0x8F,0x87,0x82,0x86,0x8B,0x86,0x75,0x66,0x6A,0x75,0x7D, -0x83,0x85,0x85,0x89,0x90,0x90,0x85,0x74,0x62,0x50,0x42,0x46,0x5D,0x6D,0x6E,0x72, -0x81,0x8F,0x91,0x8B,0x84,0x7E,0x76,0x7A,0x8A,0x92,0x8C,0x87,0x8B,0x8F,0x8B,0x80, -0x75,0x6D,0x61,0x54,0x4D,0x53,0x5C,0x5D,0x55,0x46,0x40,0x4B,0x5B,0x67,0x6E,0x70, -0x6F,0x72,0x7C,0x85,0x81,0x75,0x70,0x77,0x86,0x91,0x93,0x96,0x9A,0x9D,0xA4,0xAE, -0xB8,0xB3,0xA2,0x94,0x8C,0x82,0x7C,0x81,0x8E,0x9A,0x9B,0x9B,0xA6,0xB0,0xAE,0x9E, -0x8D,0x85,0x7D,0x71,0x76,0x8E,0xA1,0xA5,0x9F,0x99,0x91,0x86,0x86,0x89,0x88,0x77, -0x64,0x61,0x6D,0x7C,0x87,0x8D,0x8A,0x80,0x76,0x70,0x74,0x83,0x8D,0x89,0x7E,0x7C, -0x79,0x73,0x75,0x7F,0x7D,0x6C,0x5C,0x63,0x79,0x81,0x7E,0x7B,0x73,0x6E,0x69,0x60, -0x60,0x6A,0x70,0x77,0x84,0x94,0x9C,0x95,0x8C,0x87,0x85,0x8D,0x91,0x8F,0x8E,0x8C, -0x8D,0x93,0x9F,0xAC,0xB1,0xA5,0x91,0x87,0x88,0x89,0x87,0x82,0x7B,0x7B,0x80,0x85, -0x92,0xA7,0xB1,0xAF,0xAB,0xA5,0xA0,0x99,0x88,0x72,0x60,0x52,0x52,0x64,0x7B,0x8B, -0x97,0x9D,0x97,0x82,0x6E,0x6A,0x73,0x74,0x69,0x62,0x65,0x68,0x63,0x62,0x6E,0x82, -0x95,0x90,0x7E,0x78,0x80,0x80,0x6D,0x5F,0x65,0x77,0x83,0x84,0x8B,0x95,0x98,0x9E, -0xA6,0x9F,0x90,0x8E,0x89,0x75,0x61,0x55,0x53,0x56,0x5B,0x63,0x6D,0x7B,0x7E,0x73, -0x66,0x5D,0x58,0x55,0x55,0x56,0x50,0x4D,0x5E,0x7B,0x96,0xA8,0xA8,0x99,0x88,0x7B, -0x79,0x84,0x8A,0x8C,0x94,0x9B,0x93,0x86,0x85,0x8A,0x93,0x95,0x85,0x73,0x6B,0x66, -0x64,0x69,0x69,0x6A,0x71,0x71,0x73,0x7E,0x8D,0x98,0x94,0x8A,0x8E,0x9A,0x9C,0x94, -0x90,0x8C,0x87,0x82,0x7C,0x77,0x79,0x85,0x99,0xA2,0x97,0x8A,0x83,0x82,0x89,0x89, -0x81,0x84,0x90,0x8E,0x82,0x7F,0x81,0x78,0x68,0x5E,0x5F,0x5D,0x5A,0x5E,0x5C,0x56, -0x51,0x56,0x62,0x74,0x83,0x85,0x87,0x8B,0x8C,0x8E,0x94,0x95,0x8C,0x88,0x94,0xAC, -0xBC,0xBC,0xBC,0xBE,0xB5,0xAB,0x9F,0x91,0x84,0x7B,0x70,0x6F,0x78,0x7E,0x79,0x78, -0x78,0x69,0x59,0x51,0x45,0x3A,0x33,0x31,0x36,0x3E,0x47,0x53,0x62,0x69,0x68,0x67, -0x6F,0x7E,0x88,0x8E,0x92,0x9A,0xA9,0xB9,0xBE,0xBF,0xC1,0xBF,0xBB,0xB0,0xA1,0x9A, -0x9E,0xA5,0xA8,0xA9,0xA4,0x99,0x8B,0x7F,0x78,0x6A,0x5F,0x60,0x61,0x62,0x6A,0x6E, -0x6D,0x70,0x76,0x7C,0x81,0x91,0x9D,0x9A,0x92,0x86,0x80,0x82,0x87,0x8A,0x94,0xA4, -0xAD,0xAD,0xA7,0xA7,0xAF,0xAC,0xA4,0x97,0x82,0x7F,0x8C,0x98,0xA3,0xA2,0x8D,0x7A, -0x75,0x70,0x66,0x60,0x63,0x65,0x64,0x61,0x63,0x65,0x63,0x5E,0x58,0x58,0x5A,0x56, -0x58,0x67,0x78,0x81,0x7D,0x7F,0x8B,0x91,0x8B,0x83,0x83,0x84,0x82,0x85,0x8E,0x91, -0x8A,0x85,0x7B,0x6B,0x6F,0x81,0x95,0xA5,0xA8,0x9B,0x93,0x97,0x96,0x8F,0x91,0x97, -0x8F,0x75,0x5A,0x58,0x65,0x71,0x79,0x80,0x82,0x7D,0x78,0x75,0x70,0x69,0x62,0x61, -0x64,0x62,0x64,0x6F,0x80,0x8F,0x9D,0xAD,0xB5,0xAE,0x98,0x7D,0x73,0x72,0x70,0x6C, -0x69,0x6C,0x6F,0x6E,0x6C,0x6B,0x68,0x69,0x69,0x64,0x5B,0x4E,0x46,0x47,0x54,0x63, -0x6D,0x6F,0x71,0x72,0x70,0x74,0x77,0x75,0x71,0x68,0x65,0x73,0x89,0x96,0x9B,0xA0, -0xA8,0xA8,0xA8,0xAA,0xA9,0xA2,0x99,0x90,0x8D,0x8D,0x8E,0x8E,0x90,0x89,0x7D,0x75, -0x6C,0x6F,0x7B,0x7B,0x73,0x73,0x77,0x7B,0x78,0x6F,0x6A,0x6A,0x67,0x6D,0x7B,0x7A, -0x7B,0x84,0x89,0x86,0x80,0x85,0x8B,0x87,0x83,0x7F,0x7C,0x87,0x96,0xA8,0xBF,0xC7, -0xBD,0xBD,0xCB,0xC6,0xAE,0x93,0x82,0x78,0x73,0x75,0x7D,0x86,0x82,0x70,0x5D,0x60, -0x73,0x81,0x85,0x82,0x73,0x66,0x6C,0x7F,0x8D,0x8C,0x82,0x76,0x69,0x60,0x5E,0x5E, -0x60,0x63,0x69,0x77,0x83,0x87,0x95,0x9D,0x9C,0xA3,0xA5,0x9A,0x93,0x99,0x9D,0x9E, -0x9E,0x9E,0x9D,0x95,0x8A,0x7A,0x72,0x77,0x7B,0x84,0x95,0x92,0x83,0x81,0x87,0x8B, -0x88,0x7E,0x74,0x69,0x5B,0x5D,0x6A,0x6E,0x6C,0x69,0x69,0x6C,0x6F,0x72,0x6E,0x64, -0x66,0x73,0x89,0xA0,0xAF,0xB9,0xC1,0xB4,0x9D,0x95,0x96,0x8B,0x84,0x83,0x73,0x59, -0x54,0x6E,0x8D,0x9C,0x95,0x7D,0x69,0x69,0x73,0x6A,0x5F,0x6A,0x79,0x7F,0x7B,0x7B, -0x7F,0x87,0x88,0x83,0x7C,0x74,0x6D,0x71,0x78,0x7B,0x78,0x7D,0x89,0x8F,0x8A,0x7A, -0x70,0x6B,0x6A,0x73,0x7A,0x7A,0x81,0x8D,0x8F,0x91,0x94,0x90,0x88,0x7D,0x73,0x72, -0x74,0x7A,0x82,0x81,0x82,0x89,0x89,0x80,0x79,0x71,0x6D,0x74,0x84,0x8D,0x85,0x74, -0x6C,0x68,0x65,0x63,0x5D,0x5B,0x64,0x66,0x5F,0x67,0x78,0x8A,0x9A,0xA2,0x9E,0x92, -0x8B,0x8E,0x96,0x99,0xA0,0xAE,0xB0,0xA5,0x91,0x84,0x77,0x67,0x5F,0x60,0x5F,0x58, -0x4A,0x41,0x4B,0x55,0x65,0x7B,0x7E,0x7E,0x84,0x8B,0x89,0x82,0x7C,0x78,0x79,0x7D, -0x80,0x86,0x89,0x8C,0x90,0x8D,0x89,0x8E,0x95,0x92,0x8B,0x86,0x8B,0x96,0x99,0x97, -0x93,0x93,0x9A,0xA3,0x9E,0x87,0x73,0x67,0x6A,0x6B,0x66,0x64,0x65,0x6B,0x74,0x7A, -0x78,0x72,0x6B,0x68,0x6E,0x75,0x72,0x69,0x6C,0x7D,0x83,0x79,0x6D,0x72,0x7F,0x85, -0x8E,0x9A,0xA6,0xAF,0xAE,0xA8,0xA1,0x97,0x91,0x9A,0xA5,0xA3,0x9E,0x9D,0x9B,0x96, -0x8D,0x87,0x8C,0x8F,0x7E,0x6C,0x6E,0x74,0x81,0x94,0x9D,0x93,0x83,0x7E,0x86,0x8D, -0x86,0x7A,0x73,0x6F,0x69,0x65,0x63,0x62,0x64,0x67,0x67,0x6D,0x79,0x7D,0x7B,0x81, -0x8D,0x96,0x9B,0xA1,0xA2,0xA0,0x9F,0xA7,0xB0,0xAF,0xA8,0x9D,0x95,0x8F,0x8D,0x8B, -0x8A,0x8F,0x92,0x83,0x6F,0x6B,0x73,0x77,0x77,0x71,0x65,0x57,0x4F,0x54,0x5B,0x5E, -0x5F,0x5A,0x59,0x62,0x6E,0x7A,0x7F,0x83,0x86,0x83,0x82,0x7A,0x6D,0x6D,0x7A,0x8F, -0xA5,0xB6,0xAF,0x97,0x8D,0x93,0x9B,0xA6,0x9E,0x88,0x7E,0x79,0x70,0x68,0x66,0x70, -0x84,0x99,0xA1,0x9A,0x90,0x87,0x7A,0x69,0x56,0x43,0x34,0x31,0x3C,0x4F,0x64,0x76, -0x7E,0x82,0x86,0x87,0x85,0x81,0x78,0x74,0x80,0x91,0x95,0x9A,0xA5,0xA1,0x92,0x87, -0x8C,0x94,0x8D,0x89,0x8B,0x88,0x84,0x7D,0x71,0x6A,0x5D,0x58,0x60,0x67,0x6D,0x73, -0x79,0x81,0x82,0x7C,0x71,0x6A,0x67,0x64,0x62,0x67,0x74,0x84,0x8F,0x96,0xA0,0xA9, -0xAF,0xB1,0xB4,0xB1,0x9D,0x8D,0x88,0x8A,0x8E,0x91,0x98,0xA2,0x9F,0x92,0x86,0x72, -0x60,0x56,0x48,0x3E,0x3C,0x3A,0x3B,0x3E,0x47,0x55,0x61,0x6D,0x74,0x7A,0x79,0x73, -0x78,0x83,0x80,0x6C,0x66,0x76,0x8C,0x9A,0xA6,0xB1,0xB4,0xB3,0xAA,0x9B,0x91,0x8D, -0x90,0x91,0x95,0xA0,0xAA,0xB7,0xBC,0xB5,0xA5,0x8D,0x72,0x61,0x62,0x64,0x61,0x63, -0x69,0x6C,0x6D,0x6D,0x73,0x74,0x6B,0x64,0x5E,0x57,0x5C,0x6B,0x79,0x86,0x92,0x9D, -0x99,0x92,0x9A,0xA5,0xAF,0xAB,0xA4,0xA5,0x9D,0x8E,0x88,0x92,0xA0,0x98,0x86,0x89, -0x95,0xA3,0xB4,0xB7,0xAA,0x9D,0x90,0x83,0x7C,0x74,0x64,0x54,0x5D,0x69,0x61,0x51, -0x4F,0x54,0x55,0x57,0x60,0x62,0x5E,0x63,0x6D,0x74,0x7A,0x7F,0x83,0x8B,0x9D,0xB2, -0xBD,0xBE,0xB9,0xB3,0xAA,0x9B,0x8F,0x8E,0x98,0x92,0x85,0x87,0x93,0xAA,0xB5,0xB8, -0xB5,0x9E,0x7F,0x70,0x6F,0x68,0x57,0x4A,0x4E,0x59,0x61,0x6C,0x74,0x74,0x6F,0x62, -0x5E,0x61,0x5D,0x56,0x58,0x6C,0x87,0x8F,0x90,0x91,0x89,0x83,0x8D,0x90,0x86,0x83, -0x8D,0x9A,0x8C,0x6C,0x60,0x75,0x92,0x98,0x90,0x89,0x78,0x6C,0x72,0x78,0x76,0x72, -0x65,0x5A,0x57,0x58,0x5B,0x67,0x72,0x6D,0x61,0x63,0x6D,0x71,0x6B,0x65,0x6E,0x79, -0x76,0x73,0x7A,0x84,0x88,0x83,0x8A,0x9D,0xAB,0xA6,0x8C,0x7D,0x87,0x91,0x95,0xA0, -0xA9,0xA1,0x96,0x8D,0x8F,0xA0,0xAC,0xA3,0x8A,0x73,0x6F,0x74,0x70,0x5B,0x49,0x49, -0x60,0x79,0x84,0x7D,0x73,0x78,0x7B,0x81,0x87,0x78,0x66,0x67,0x6D,0x6D,0x71,0x7E, -0x86,0x8B,0x95,0xA5,0xAD,0xAF,0xA8,0x99,0x8D,0x83,0x80,0x83,0x7E,0x7C,0x7E,0x7B, -0x75,0x71,0x71,0x71,0x69,0x62,0x6B,0x76,0x79,0x72,0x6A,0x74,0x7B,0x79,0x7B,0x85, -0x99,0xA3,0xA0,0x99,0x8F,0x8C,0x8A,0x89,0x87,0x7D,0x78,0x7F,0x88,0x95,0x9E,0x9A, -0x91,0x91,0x95,0x99,0x91,0x82,0x86,0x82,0x76,0x76,0x81,0x8A,0x87,0x7B,0x7C,0x7B, -0x6B,0x65,0x6F,0x72,0x77,0x7F,0x6C,0x54,0x5C,0x78,0x81,0x76,0x76,0x79,0x71,0x6A, -0x6D,0x79,0x81,0x77,0x75,0x8C,0x9B,0x99,0x9D,0xA7,0xA8,0xA4,0xA0,0xA1,0x9E,0x8B, -0x6F,0x63,0x6C,0x74,0x77,0x72,0x66,0x67,0x6E,0x73,0x7A,0x80,0x81,0x75,0x71,0x85, -0x88,0x77,0x73,0x7E,0x82,0x82,0x83,0x7E,0x8C,0x9D,0x9A,0xA2,0xA6,0x9D,0x96,0x90, -0x8B,0x8B,0x92,0x91,0x8F,0x9C,0xA6,0xAA,0xAB,0xA8,0x9F,0x93,0x83,0x70,0x64,0x60, -0x65,0x74,0x81,0x80,0x7C,0x7D,0x7B,0x80,0x7C,0x78,0x82,0x89,0x80,0x6B,0x62,0x72, -0x7E,0x82,0x83,0x7B,0x6E,0x6E,0x77,0x83,0x8A,0x8E,0x87,0x79,0x7C,0x89,0x89,0x83, -0x79,0x6C,0x61,0x64,0x72,0x7E,0x8C,0x92,0x82,0x6A,0x5F,0x64,0x6C,0x70,0x64,0x57, -0x63,0x76,0x85,0x91,0x93,0x7F,0x70,0x75,0x78,0x7C,0x81,0x7D,0x7C,0x80,0x7F,0x90, -0xA3,0xA0,0x98,0x99,0x95,0x86,0x7F,0x77,0x69,0x5F,0x61,0x69,0x6F,0x72,0x75,0x7A, -0x7E,0x74,0x69,0x6A,0x6B,0x70,0x7E,0x82,0x73,0x6F,0x84,0x9D,0xAA,0xAD,0xAA,0xA0, -0x96,0x88,0x75,0x6C,0x6A,0x5D,0x5B,0x64,0x72,0x7D,0x7F,0x78,0x75,0x77,0x70,0x68, -0x6D,0x73,0x73,0x73,0x70,0x79,0x81,0x7F,0x7E,0x88,0x91,0x89,0x7C,0x87,0x91,0x82, -0x74,0x7D,0x8D,0x92,0x8B,0x94,0x9E,0x9D,0x9B,0x9B,0xAC,0xB0,0x90,0x7A,0x86,0x8B, -0x84,0x7C,0x65,0x54,0x57,0x62,0x70,0x7D,0x81,0x78,0x72,0x6C,0x6B,0x6E,0x71,0x75, -0x76,0x6C,0x69,0x72,0x7A,0x8C,0xA0,0xAF,0xAF,0x9A,0x8F,0x89,0x7F,0x7A,0x7F,0x84, -0x83,0x82,0x80,0x80,0x8C,0xA3,0xB9,0xC5,0xC2,0xAE,0xA3,0xA5,0x99,0x8C,0x8F,0x8B, -0x8C,0x98,0x97,0x8B,0x86,0x81,0x6D,0x68,0x6F,0x72,0x6E,0x62,0x60,0x6E,0x74,0x7B, -0x84,0x7E,0x7B,0x89,0x97,0x96,0x90,0x87,0x84,0x89,0x83,0x7B,0x7A,0x71,0x74,0x7E, -0x7F,0x86,0x90,0x9B,0x9D,0x8F,0x8B,0x8E,0x94,0x92,0x7F,0x72,0x72,0x75,0x6F,0x6B, -0x77,0x7B,0x64,0x57,0x62,0x60,0x57,0x52,0x53,0x60,0x5D,0x51,0x59,0x60,0x5D,0x70, -0x80,0x7C,0x72,0x74,0x6E,0x5D,0x64,0x6E,0x70,0x81,0x93,0x97,0x93,0x96,0xA1,0xA9, -0xAB,0xA5,0xAB,0xAF,0x9E,0x96,0x93,0x86,0x7E,0x82,0x87,0x84,0x7C,0x7F,0x80,0x81, -0x86,0x82,0x76,0x77,0x7E,0x7B,0x73,0x71,0x70,0x72,0x7A,0x7C,0x8B,0x9A,0x9B,0x92, -0x86,0x86,0x8C,0x8C,0x8B,0x8E,0x91,0x90,0x99,0xA0,0x92,0x7C,0x81,0x93,0x95,0x88, -0x7A,0x7A,0x7A,0x73,0x6A,0x66,0x68,0x6C,0x72,0x6C,0x67,0x6B,0x71,0x86,0x98,0x87, -0x6B,0x6F,0x85,0x8C,0x87,0x76,0x66,0x6D,0x6D,0x6A,0x7A,0x82,0x7D,0x79,0x74,0x6C, -0x69,0x69,0x6D,0x75,0x7D,0x7B,0x78,0x82,0x86,0x7F,0x80,0x8A,0x86,0x7B,0x7F,0x84, -0x7A,0x72,0x72,0x73,0x71,0x6E,0x62,0x51,0x4E,0x54,0x66,0x75,0x72,0x6E,0x70,0x6D, -0x77,0x8F,0x92,0x8A,0x9A,0xA8,0xA3,0xAB,0xB7,0xB6,0xAC,0xA1,0x99,0x9D,0xA8,0xA2, -0x8E,0x84,0x87,0x89,0x7F,0x72,0x62,0x5F,0x71,0x81,0x7F,0x7A,0x7B,0x7D,0x81,0x82, -0x89,0x93,0x9C,0x9A,0x89,0x7B,0x7F,0x89,0x90,0x85,0x75,0x7F,0x8A,0x8E,0x87,0x85, -0x8E,0x84,0x76,0x78,0x81,0x87,0x85,0x88,0x86,0x75,0x67,0x63,0x71,0x83,0x85,0x82, -0x8D,0x8F,0x82,0x85,0x8A,0x7B,0x6E,0x70,0x78,0x7D,0x75,0x67,0x6C,0x7A,0x89,0x95, -0x87,0x6F,0x65,0x6F,0x80,0x8F,0x8D,0x84,0x84,0x88,0x8D,0x91,0x93,0x98,0xA0,0xA8, -0xAA,0x9F,0x97,0x8E,0x78,0x72,0x7D,0x78,0x75,0x7D,0x85,0x7F,0x7D,0x8A,0x7E,0x6E, -0x7A,0x87,0x88,0x82,0x7E,0x85,0x8E,0x90,0x8D,0x91,0x99,0xA1,0xA0,0x96,0x9A,0x99, -0x8E,0x7F,0x76,0x77,0x6C,0x67,0x6F,0x77,0x7D,0x7B,0x74,0x78,0x70,0x66,0x6E,0x7D, -0x85,0x7A,0x67,0x67,0x79,0x86,0x88,0x85,0x80,0x7F,0x75,0x6C,0x6F,0x73,0x79,0x76, -0x67,0x67,0x73,0x7A,0x69,0x58,0x65,0x75,0x7E,0x8B,0x86,0x7C,0x82,0x86,0x83,0x7C, -0x7B,0x7B,0x7D,0x81,0x7F,0x6D,0x5A,0x5D,0x63,0x62,0x60,0x60,0x5B,0x5F,0x74,0x87, -0x9B,0x99,0x86,0x8C,0xAD,0xB1,0x9F,0x97,0x8B,0x80,0x85,0x8A,0x89,0x7F,0x7D,0x7E, -0x79,0x7B,0x71,0x5C,0x62,0x73,0x71,0x69,0x76,0x89,0x86,0x7A,0x73,0x76,0x79,0x74, -0x78,0x86,0x91,0x85,0x6A,0x67,0x76,0x85,0x8C,0x91,0x97,0x91,0x91,0x95,0x95,0xA0, -0x9F,0x99,0x9F,0xA2,0xA2,0x9B,0x9A,0x9C,0x94,0x82,0x70,0x74,0x7A,0x72,0x69,0x70, -0x7C,0x78,0x80,0x89,0x7D,0x73,0x76,0x79,0x74,0x66,0x60,0x6B,0x79,0x7F,0x84,0x8D, -0x97,0x9C,0x9B,0x8A,0x79,0x77,0x71,0x6B,0x6F,0x7C,0x88,0x8E,0xA2,0xB4,0xAE,0x9E, -0x8D,0x82,0x7F,0x7B,0x80,0x7F,0x7F,0x80,0x7D,0x84,0x85,0x79,0x71,0x68,0x63,0x5F, -0x57,0x4C,0x4D,0x5C,0x63,0x68,0x69,0x69,0x73,0x78,0x7E,0x8C,0x92,0x98,0x99,0x99, -0x9E,0xA7,0xB0,0xA9,0xA6,0xAA,0xA9,0xAF,0xAD,0xA2,0x97,0x8C,0x81,0x77,0x78,0x75, -0x6D,0x6D,0x74,0x7C,0x84,0x8B,0x83,0x72,0x76,0x85,0x86,0x79,0x70,0x70,0x70,0x77, -0x7E,0x81,0x88,0x8D,0x87,0x83,0x83,0x84,0x8E,0x99,0x9A,0x97,0x8B,0x81,0x86,0x8F, -0x8E,0x88,0x92,0x9E,0xA4,0x99,0x81,0x7D,0x7B,0x67,0x53,0x50,0x53,0x55,0x5B,0x5F, -0x5E,0x5E,0x5F,0x63,0x68,0x6A,0x60,0x62,0x77,0x77,0x6B,0x74,0x84,0x8F,0x93,0x97, -0x96,0x8A,0x7A,0x80,0x9A,0xA2,0x99,0x98,0x9C,0x8E,0x81,0x85,0x8D,0x97,0x9E,0x9F, -0x8E,0x7E,0x76,0x70,0x78,0x8B,0x8F,0x80,0x75,0x67,0x56,0x4E,0x4A,0x54,0x65,0x6D, -0x74,0x77,0x6E,0x68,0x7C,0x98,0xA3,0xA4,0xA3,0x95,0x86,0x87,0x91,0x9F,0xA6,0x95, -0x78,0x6E,0x71,0x71,0x71,0x70,0x6E,0x6C,0x6F,0x76,0x84,0x96,0x8E,0x84,0x84,0x7E, -0x7A,0x71,0x64,0x6A,0x73,0x77,0x7D,0x87,0x92,0x8A,0x6F,0x61,0x66,0x73,0x75,0x6B, -0x64,0x6C,0x77,0x7E,0x78,0x73,0x7D,0x84,0x89,0x8A,0x89,0x88,0x84,0x7B,0x7A,0x7F, -0x86,0x8F,0x9A,0x9B,0x8A,0x74,0x79,0x8F,0x97,0x91,0x80,0x73,0x6F,0x72,0x75,0x77, -0x81,0x84,0x7F,0x7B,0x76,0x78,0x8D,0xA3,0xA0,0x94,0x8B,0x80,0x76,0x67,0x5F,0x5C, -0x63,0x6E,0x6F,0x7A,0x91,0x9A,0x95,0x96,0xA2,0xAE,0x9C,0x8B,0x9D,0xA2,0x96,0x8F, -0x8C,0x8F,0x84,0x7F,0x81,0x75,0x66,0x5E,0x63,0x68,0x66,0x68,0x70,0x7E,0x84,0x7E, -0x77,0x75,0x82,0x88,0x94,0xAB,0xAE,0xA4,0x9A,0x91,0x88,0x84,0x89,0x91,0x8C,0x88, -0x8B,0x88,0x81,0x85,0x9A,0xA3,0x98,0x8B,0x82,0x92,0xAB,0xA9,0x95,0x87,0x74,0x65, -0x6A,0x76,0x7B,0x7E,0x7B,0x7B,0x79,0x7F,0x83,0x80,0x7A,0x67,0x63,0x66,0x67,0x7B, -0x7D,0x72,0x78,0x88,0x8D,0x7B,0x76,0x7F,0x7E,0x76,0x75,0x7A,0x86,0x91,0x94,0x8F, -0x87,0x87,0x8A,0x88,0x82,0x7E,0x7D,0x76,0x70,0x73,0x80,0x80,0x78,0x67,0x56,0x68, -0x82,0x88,0x7A,0x6F,0x72,0x7A,0x86,0x88,0x82,0x7C,0x7E,0x7A,0x6A,0x56,0x54,0x65, -0x74,0x8C,0x96,0x8A,0x87,0x93,0x9E,0x9F,0x9D,0x9B,0x94,0x8D,0x8F,0x87,0x78,0x6C, -0x6A,0x71,0x7D,0x84,0x86,0x82,0x6E,0x63,0x6C,0x7A,0x7A,0x6A,0x6D,0x83,0x86,0x79, -0x6F,0x75,0x86,0x96,0x9D,0x96,0x83,0x75,0x6D,0x65,0x62,0x69,0x75,0x81,0x8E,0x94, -0x8A,0x77,0x79,0x7F,0x76,0x71,0x70,0x7B,0x89,0x8D,0x8B,0x81,0x7C,0x7E,0x74,0x5F, -0x55,0x51,0x58,0x67,0x6D,0x71,0x72,0x7B,0x8B,0x93,0x8F,0x81,0x80,0x8E,0x87,0x7F, -0x81,0x85,0x8E,0x9B,0xB0,0xAC,0x94,0x93,0x99,0x8E,0x75,0x64,0x5C,0x57,0x57,0x61, -0x70,0x77,0x7D,0x87,0x8D,0x89,0x83,0x91,0xA1,0x97,0x8B,0x91,0x9B,0x98,0x9E,0xA4, -0xA5,0xA8,0x9D,0x84,0x70,0x6B,0x76,0x7C,0x89,0x97,0x95,0x92,0x8C,0x93,0x94,0x76, -0x6A,0x71,0x75,0x71,0x6B,0x69,0x6E,0x80,0x95,0x8B,0x72,0x71,0x7A,0x83,0x8B,0x91, -0x9C,0x9D,0x8B,0x86,0x8F,0x88,0x77,0x74,0x78,0x84,0x8F,0x8E,0x8B,0x96,0x9D,0x9D, -0x9C,0x96,0x98,0x92,0x82,0x6F,0x61,0x59,0x53,0x5E,0x69,0x62,0x60,0x67,0x6E,0x6F, -0x67,0x66,0x65,0x63,0x6A,0x6E,0x76,0x80,0x8A,0x93,0x9A,0x98,0x96,0x9C,0x99,0x91, -0x8C,0x83,0x80,0x81,0x81,0x81,0x8A,0x93,0x8F,0x87,0x84,0x78,0x77,0x85,0x91,0x99, -0x99,0x8E,0x77,0x62,0x55,0x57,0x74,0x82,0x72,0x6D,0x70,0x73,0x80,0x8C,0x8D,0x93, -0x93,0x88,0x7D,0x7C,0x87,0x99,0x9C,0x93,0x91,0x91,0x92,0x9D,0xAE,0xAD,0x9B,0x8B, -0x7C,0x71,0x6A,0x62,0x69,0x6E,0x77,0x80,0x87,0x8D,0x80,0x70,0x6B,0x6D,0x76,0x7C, -0x7B,0x78,0x73,0x6F,0x66,0x5E,0x5E,0x5E,0x62,0x67,0x65,0x5D,0x62,0x75,0x7E,0x7D, -0x76,0x76,0x7F,0x82,0x8A,0x92,0xA3,0xAE,0xAB,0xA4,0x94,0x91,0x96,0x83,0x6F,0x72, -0x7D,0x83,0x8D,0x90,0x7B,0x66,0x60,0x5B,0x62,0x78,0x7A,0x6F,0x66,0x61,0x6F,0x89, -0x8C,0x84,0x7D,0x68,0x58,0x5F,0x63,0x68,0x74,0x84,0x93,0x9B,0x92,0x88,0x8F,0x9F, -0x9E,0x97,0x95,0x97,0x8C,0x7E,0x79,0x85,0x8A,0x80,0x87,0x93,0x8F,0x89,0x83,0x76, -0x6A,0x63,0x5E,0x54,0x52,0x5F,0x6E,0x80,0x83,0x8A,0x99,0x95,0x8C,0x8D,0x89,0x85, -0x83,0x7E,0x88,0x91,0x92,0x9E,0x9B,0x93,0x95,0x8D,0x85,0x7D,0x7D,0x82,0x7D,0x7B, -0x6E,0x5E,0x6C,0x79,0x81,0x8C,0x89,0x75,0x6F,0x87,0x96,0x91,0x99,0x95,0x87,0x80, -0x75,0x6C,0x6B,0x6B,0x68,0x6A,0x71,0x78,0x78,0x77,0x79,0x7E,0x8B,0x94,0x98,0x91, -0x89,0x82,0x89,0xA3,0xAF,0xAF,0xAF,0xAB,0xA1,0x8F,0x7D,0x81,0x84,0x81,0x7B,0x82, -0x7F,0x77,0x78,0x84,0x84,0x79,0x63,0x5F,0x74,0x72,0x72,0x82,0x92,0x94,0x91,0x8E, -0x88,0x8A,0x94,0x8C,0x83,0x8C,0x93,0x99,0x9F,0x98,0x8D,0x91,0x99,0x9E,0x93,0x7D, -0x72,0x7E,0x87,0x7C,0x7B,0x7B,0x82,0x85,0x79,0x68,0x66,0x68,0x6D,0x70,0x73,0x7A, -0x71,0x67,0x65,0x6D,0x6B,0x65,0x6E,0x7C,0x7F,0x82,0x6F,0x5E,0x69,0x7C,0x84,0x7A, -0x7F,0x7E,0x76,0x7A,0x8C,0x97,0x89,0x66,0x61,0x71,0x79,0x84,0x86,0x81,0x7A,0x7E, -0x78,0x6B,0x6C,0x79,0x80,0x87,0x87,0x85,0x8F,0x93,0x83,0x81,0x83,0x82,0x84,0x76, -0x6C,0x6C,0x69,0x65,0x68,0x66,0x6D,0x7B,0x84,0x82,0x80,0x7F,0x80,0x87,0x7F,0x76, -0x79,0x86,0x8E,0x81,0x75,0x7C,0x8B,0x95,0x88,0x79,0x85,0x92,0x8D,0x8E,0x91,0x8B, -0x9D,0xA9,0xA5,0xAE,0xAE,0xA2,0x9B,0x98,0x8D,0x7E,0x79,0x73,0x6D,0x68,0x61,0x71, -0x80,0x75,0x59,0x4E,0x51,0x50,0x56,0x65,0x71,0x79,0x6E,0x65,0x7D,0x89,0x85,0x86, -0x87,0x92,0x9D,0xA4,0x99,0x7B,0x63,0x66,0x7C,0x88,0x87,0x83,0x80,0x7F,0x83,0x88, -0x81,0x78,0x6F,0x6D,0x69,0x60,0x74,0x88,0x8F,0x91,0x97,0x9D,0x9C,0x90,0x94,0x91, -0x7E,0x6E,0x74,0x80,0x7B,0x78,0x78,0x84,0x8A,0x88,0x8B,0x93,0x91,0x90,0x97,0x9A, -0x9D,0xA2,0xA5,0x94,0x83,0x85,0x91,0x8F,0x8D,0x8E,0x92,0x91,0x83,0x73,0x70,0x74, -0x76,0x76,0x76,0x6B,0x66,0x68,0x69,0x83,0x8C,0x8B,0x8A,0x7B,0x78,0x85,0x84,0x79, -0x68,0x6B,0x7D,0x84,0x8E,0x8B,0x86,0x8C,0x98,0xA3,0xA0,0x94,0x8B,0x72,0x6D,0x75, -0x72,0x79,0x8A,0x8E,0x82,0x70,0x6B,0x6F,0x79,0x70,0x66,0x72,0x7B,0x81,0x81,0x8C, -0x8E,0x80,0x72,0x6E,0x75,0x7C,0x81,0x7A,0x70,0x7A,0x84,0x86,0x7F,0x80,0x89,0x87, -0x81,0x79,0x7E,0x89,0x8D,0x85,0x7B,0x78,0x7B,0x78,0x75,0x78,0x7F,0x8A,0x8A,0x81, -0x7D,0x81,0x8C,0x82,0x74,0x78,0x81,0x86,0x89,0x84,0x85,0x83,0x67,0x53,0x61,0x75, -0x71,0x6A,0x6A,0x71,0x85,0x8C,0x92,0x9A,0x9F,0xA0,0x9D,0x9C,0x9B,0xA0,0xA3,0x9D, -0x97,0x8C,0x81,0x7E,0x7F,0x73,0x66,0x64,0x6C,0x6C,0x74,0x8A,0x93,0x8A,0x76,0x76, -0x83,0x75,0x6C,0x81,0x8A,0x84,0x86,0x93,0x9E,0x9D,0x99,0x8E,0x82,0x7A,0x6D,0x69, -0x68,0x61,0x57,0x57,0x5A,0x6A,0x7B,0x7B,0x7C,0x83,0x8A,0x87,0x80,0x7C,0x72,0x6D, -0x6E,0x70,0x7B,0x86,0x8C,0x90,0x83,0x67,0x68,0x74,0x6C,0x63,0x61,0x61,0x77,0x82, -0x78,0x76,0x74,0x79,0x7D,0x73,0x7D,0x8F,0x93,0x8B,0x71,0x5F,0x6E,0x84,0x94,0x9B, -0x95,0x7F,0x6A,0x68,0x7B,0x90,0x96,0x96,0xA2,0xA9,0xA6,0x96,0x92,0x9D,0x92,0x8B, -0x90,0x91,0x88,0x7E,0x7C,0x87,0x90,0x87,0x7F,0x7D,0x77,0x75,0x79,0x67,0x65,0x76, -0x7D,0x79,0x81,0x92,0x9C,0xA0,0xA0,0x98,0x8A,0x80,0x73,0x77,0x7B,0x75,0x7E,0x95, -0x97,0x88,0x83,0x8E,0x85,0x73,0x73,0x7B,0x85,0x7D,0x65,0x5B,0x78,0x94,0x9A,0x98, -0x94,0x8D,0x89,0x88,0x80,0x7B,0x72,0x66,0x66,0x7D,0x89,0x77,0x71,0x6D,0x75,0x8C, -0x8D,0x8A,0x8D,0x92,0x94,0x94,0x94,0x94,0x98,0x96,0x88,0x78,0x79,0x72,0x67,0x69, -0x65,0x6B,0x7D,0x80,0x71,0x72,0x74,0x6D,0x6D,0x7A,0x7C,0x7B,0x80,0x7F,0x82,0x93, -0xA7,0xA5,0xA4,0xB0,0xB1,0x9A,0x83,0x79,0x72,0x6F,0x73,0x74,0x79,0x84,0x87,0x7F, -0x7C,0x82,0x82,0x85,0x8D,0x94,0x87,0x78,0x73,0x73,0x72,0x78,0x85,0x93,0xAE,0xBC, -0xA8,0x87,0x7B,0x7E,0x6C,0x60,0x64,0x58,0x4A,0x60,0x7B,0x7B,0x7A,0x78,0x6E,0x6F, -0x82,0x85,0x7D,0x6F,0x55,0x5B,0x76,0x81,0x70,0x60,0x62,0x61,0x6A,0x76,0x7B,0x88, -0x8A,0x7C,0x71,0x6D,0x8C,0xAC,0x9F,0x84,0x85,0x95,0x8D,0x8D,0x98,0x96,0x8D,0x7C, -0x6A,0x5A,0x53,0x57,0x61,0x67,0x5E,0x5D,0x6A,0x7C,0x86,0x88,0x86,0x88,0x8B,0x86, -0x8B,0x9A,0x8F,0x7A,0x72,0x78,0x7F,0x80,0x7E,0x7D,0x8D,0x9E,0x9A,0x8E,0x80,0x7B, -0x7E,0x81,0x8B,0x92,0x95,0x92,0x87,0x83,0x81,0x84,0x8A,0x8F,0x8C,0x74,0x67,0x77, -0x80,0x87,0x96,0xAA,0xB3,0x9F,0x8B,0x7E,0x77,0x71,0x7B,0x85,0x80,0x7E,0x8C,0xA4, -0xAF,0xA9,0xA5,0xA0,0x90,0x76,0x69,0x75,0x7C,0x7D,0x78,0x6B,0x76,0x89,0x98,0x99, -0x87,0x79,0x72,0x72,0x6D,0x6A,0x6C,0x61,0x6C,0x7F,0x81,0x79,0x73,0x73,0x6E,0x63, -0x59,0x52,0x5E,0x77,0x77,0x6A,0x63,0x75,0x89,0x8E,0x8F,0x8A,0x83,0x79,0x83,0x93, -0x93,0x82,0x76,0x81,0x8F,0x99,0x94,0x75,0x62,0x6B,0x81,0x94,0x89,0x80,0x87,0x80, -0x78,0x7D,0x7A,0x7C,0x83,0x7C,0x6B,0x61,0x6A,0x7A,0x83,0x87,0x8B,0xA1,0xA8,0x98, -0x8D,0x89,0x84,0x7C,0x6D,0x6A,0x7A,0x86,0x92,0xA9,0xAA,0x8E,0x7E,0x95,0xA2,0x89, -0x79,0x79,0x82,0x90,0x8F,0x7F,0x7F,0x8E,0x9C,0xA6,0x99,0x85,0x84,0x7F,0x77,0x79, -0x79,0x71,0x66,0x62,0x68,0x70,0x76,0x71,0x6D,0x78,0x85,0x91,0x95,0x93,0x8D,0x8E, -0x98,0x8D,0x7A,0x7D,0x95,0x97,0x85,0x7F,0x82,0x7E,0x72,0x6D,0x7C,0x7E,0x6F,0x67, -0x63,0x67,0x71,0x7D,0x80,0x7A,0x85,0x9A,0xA6,0xA8,0x9D,0x87,0x81,0x85,0x80,0x71, -0x63,0x5D,0x5D,0x69,0x78,0x79,0x6C,0x71,0x78,0x76,0x7B,0x74,0x6C,0x74,0x8A,0x97, -0x8B,0x82,0x88,0x8F,0x91,0x88,0x86,0x88,0x7C,0x6A,0x6A,0x70,0x75,0x6B,0x70,0x82, -0x82,0x7D,0x81,0x81,0x7D,0x88,0x8D,0x8A,0x7E,0x70,0x75,0x7B,0x7F,0x7D,0x71,0x6D, -0x73,0x7A,0x8B,0x8F,0x82,0x8C,0xA5,0xAB,0xA9,0xA8,0x99,0x81,0x76,0x7A,0x7A,0x72, -0x70,0x76,0x7E,0x82,0x6F,0x61,0x68,0x6F,0x67,0x59,0x5A,0x53,0x4A,0x56,0x6B,0x6B, -0x68,0x7E,0x93,0x92,0x8E,0x90,0x8D,0x8C,0x8C,0x7F,0x7C,0x8F,0x8E,0x7D,0x7F,0x91, -0xA5,0xA7,0xA4,0x90,0x7C,0x7B,0x6B,0x61,0x6F,0x84,0x8C,0x82,0x76,0x7C,0x8B,0x94, -0x90,0x89,0x85,0x7C,0x76,0x78,0x84,0x82,0x77,0x7C,0x7F,0x74,0x69,0x75,0x84,0x81, -0x81,0x8E,0x9D,0xA5,0xA5,0xA7,0xA5,0x9B,0x93,0x90,0x97,0xA1,0x98,0x90,0x95,0x97, -0x91,0x86,0x7C,0x82,0x7D,0x68,0x60,0x61,0x6E,0x78,0x75,0x79,0x7F,0x82,0x8D,0x8E, -0x7E,0x75,0x86,0x96,0x97,0x8B,0x7E,0x85,0x87,0x86,0x8F,0x9B,0x95,0x84,0x7D,0x7F, -0x7C,0x70,0x73,0x82,0x81,0x7E,0x82,0x8A,0x92,0x98,0x9B,0x95,0x87,0x7F,0x80,0x7B, -0x79,0x78,0x67,0x5E,0x5C,0x67,0x7F,0x8A,0x75,0x56,0x57,0x61,0x61,0x5E,0x6D,0x77, -0x68,0x71,0x8C,0x93,0x8F,0x8A,0x90,0xA2,0x9C,0x78,0x62,0x5D,0x5C,0x62,0x6C,0x6E, -0x6E,0x71,0x7E,0x8E,0x96,0x9A,0x90,0x8B,0x8E,0x8D,0x87,0x78,0x6B,0x6E,0x87,0x9A, -0x9C,0x8E,0x7B,0x7D,0x81,0x70,0x5A,0x4D,0x48,0x59,0x66,0x64,0x74,0x8B,0x8B,0x87, -0x88,0x87,0x91,0x97,0x91,0x8E,0x8F,0x8E,0x8C,0x89,0x8A,0x90,0xA2,0xAC,0x9C,0x81, -0x7C,0x85,0x8B,0x93,0x93,0x88,0x7E,0x70,0x73,0x7C,0x74,0x73,0x78,0x7F,0x81,0x7A, -0x76,0x7A,0x7F,0x83,0x85,0x77,0x6E,0x69,0x64,0x6E,0x79,0x81,0x8A,0x94,0x8F,0x8A, -0x8D,0x94,0x96,0x98,0x90,0x79,0x70,0x7F,0x92,0x9F,0x96,0x88,0x7E,0x7F,0x7F,0x76, -0x6F,0x69,0x68,0x6B,0x6D,0x67,0x62,0x72,0x8B,0x8D,0x77,0x6C,0x7D,0x86,0x82,0x72, -0x63,0x66,0x6D,0x71,0x7D,0x8F,0x9D,0x98,0x8A,0x86,0x87,0x86,0x84,0x7D,0x7D,0x7D, -0x79,0x7D,0x89,0x8E,0x88,0x8E,0x9D,0xA3,0x97,0x83,0x6E,0x62,0x6A,0x73,0x73,0x6D, -0x68,0x66,0x5C,0x5A,0x68,0x76,0x80,0x85,0x7E,0x7C,0x7C,0x7D,0x88,0x95,0x8D,0x84, -0x7D,0x7D,0x9C,0xB8,0xB8,0xAB,0xA6,0xA3,0x92,0x8A,0x85,0x7A,0x69,0x51,0x52,0x6E, -0x84,0x8F,0x92,0x90,0x95,0x9F,0xA1,0x93,0x7B,0x6B,0x7D,0x97,0x87,0x6B,0x6E,0x73, -0x73,0x70,0x74,0x71,0x6C,0x71,0x70,0x72,0x76,0x85,0x97,0x8A,0x7D,0x88,0x90,0x92, -0x98,0x9F,0x9E,0x91,0x89,0x85,0x82,0x7F,0x7C,0x8B,0x8D,0x84,0x7D,0x7F,0x7F,0x80, -0x8D,0x96,0x8E,0x80,0x7B,0x76,0x6E,0x73,0x77,0x7A,0x76,0x6A,0x64,0x5F,0x68,0x78, -0x80,0x78,0x7A,0x88,0x93,0xA9,0xAD,0x91,0x74,0x78,0x87,0x8A,0x82,0x75,0x76,0x83, -0x84,0x7B,0x75,0x7A,0x7A,0x7A,0x79,0x79,0x76,0x6C,0x6C,0x78,0x7C,0x7E,0x88,0x8D, -0x8D,0x89,0x7E,0x79,0x77,0x7A,0x84,0x8B,0x92,0x89,0x8A,0x9A,0x95,0x89,0x89,0x90, -0x8D,0x80,0x7E,0x92,0x98,0x85,0x76,0x72,0x6E,0x70,0x77,0x7C,0x78,0x72,0x69,0x5B, -0x5E,0x70,0x7D,0x7C,0x80,0x79,0x6D,0x74,0x78,0x75,0x75,0x7A,0x77,0x65,0x5B,0x5E, -0x6B,0x6F,0x61,0x63,0x79,0x89,0x8D,0x84,0x83,0x88,0x85,0x8C,0x93,0x89,0x85,0x8B, -0x8F,0x86,0x74,0x76,0x77,0x6C,0x68,0x6E,0x73,0x78,0x7B,0x7F,0x76,0x6E,0x77,0x81, -0x88,0x8C,0x8D,0x8E,0x92,0x91,0x93,0x9F,0x9F,0x8E,0x75,0x72,0x77,0x7A,0x7E,0x80, -0x8E,0x93,0x93,0x94,0x93,0x90,0x8B,0x88,0x86,0x88,0x8C,0x8E,0x8C,0x8C,0x96,0x95, -0x89,0x87,0x80,0x6E,0x6D,0x72,0x6B,0x70,0x79,0x83,0x91,0x86,0x78,0x83,0x8E,0x8A, -0x86,0x92,0x9A,0x8F,0x8E,0x90,0x84,0x81,0x78,0x65,0x65,0x78,0x84,0x93,0x94,0x89, -0x92,0x91,0x7E,0x7B,0x87,0x88,0x87,0x87,0x7C,0x6E,0x73,0x7B,0x83,0x83,0x74,0x73, -0x7F,0x80,0x77,0x78,0x80,0x8B,0x8A,0x77,0x6A,0x6C,0x7B,0x81,0x87,0x96,0x9C,0x99, -0x98,0x98,0x91,0x88,0x78,0x6C,0x67,0x63,0x66,0x6E,0x79,0x87,0x90,0x8A,0x85,0x85, -0x83,0x76,0x6D,0x61,0x5C,0x68,0x83,0x9B,0x95,0x85,0x7E,0x88,0x90,0x84,0x6E,0x6D, -0x71,0x75,0x75,0x73,0x7E,0x8D,0x99,0x9C,0x99,0x9B,0x99,0x95,0x8F,0x81,0x75,0x79, -0x7F,0x78,0x67,0x59,0x5A,0x67,0x7A,0x77,0x70,0x7D,0x85,0x83,0x86,0x85,0x80,0x7B, -0x75,0x70,0x75,0x7E,0x86,0x92,0x94,0x8D,0x83,0x7B,0x83,0x8D,0x86,0x72,0x76,0x87, -0x90,0x9E,0x9D,0x91,0x8C,0x83,0x7E,0x75,0x6B,0x62,0x52,0x53,0x63,0x64,0x5D,0x5F, -0x5B,0x58,0x68,0x79,0x7E,0x86,0x91,0x8E,0x83,0x8A,0x9A,0xA4,0xA0,0x95,0x87,0x86, -0x8E,0x95,0x92,0x7D,0x7B,0x89,0x86,0x76,0x6E,0x77,0x8C,0x8B,0x82,0x87,0x82,0x7D, -0x7D,0x7D,0x7C,0x6F,0x70,0x82,0x81,0x76,0x6F,0x71,0x75,0x78,0x78,0x78,0x82,0x88, -0x8D,0x8F,0x93,0x97,0x8C,0x86,0x8D,0x8C,0x8F,0x94,0x92,0x8E,0x8F,0x99,0xA9,0xA5, -0x8F,0x77,0x64,0x67,0x70,0x72,0x69,0x6A,0x73,0x74,0x74,0x81,0x8E,0x88,0x7F,0x7D, -0x79,0x75,0x76,0x79,0x79,0x79,0x7D,0x84,0x8F,0x8C,0x88,0x8C,0x87,0x7B,0x7A,0x7E, -0x7E,0x7D,0x79,0x81,0x93,0x91,0x83,0x87,0x8C,0x81,0x71,0x7E,0x87,0x72,0x5E,0x60, -0x6E,0x77,0x76,0x7B,0x7F,0x77,0x6F,0x75,0x86,0x90,0x90,0x7E,0x66,0x66,0x70,0x7E, -0x88,0x82,0x80,0x87,0x96,0x96,0x8D,0x8B,0x92,0x95,0x91,0x96,0x91,0x85,0x76,0x6F, -0x76,0x7E,0x84,0x86,0x85,0x85,0x87,0x8A,0x8C,0x88,0x85,0x80,0x78,0x76,0x78,0x7B, -0x76,0x6E,0x73,0x7E,0x90,0x8D,0x78,0x70,0x77,0x7F,0x7F,0x80,0x81,0x88,0x92,0x8D, -0x95,0xAD,0xAD,0x9D,0x9D,0x9D,0x95,0x95,0x8A,0x76,0x71,0x79,0x82,0x84,0x82,0x81, -0x75,0x6C,0x70,0x6E,0x70,0x7C,0x8B,0x86,0x71,0x6C,0x73,0x81,0x8B,0x7F,0x7A,0x83, -0x8E,0x96,0x8D,0x7F,0x79,0x79,0x81,0x7E,0x76,0x7A,0x78,0x78,0x81,0x8C,0x92,0x83, -0x78,0x7C,0x79,0x70,0x74,0x84,0x8C,0x7D,0x76,0x7C,0x7E,0x72,0x6D,0x76,0x71,0x66, -0x6D,0x71,0x75,0x76,0x6B,0x6B,0x70,0x6C,0x67,0x70,0x7E,0x8A,0x95,0x94,0x7E,0x79, -0x83,0x83,0x7D,0x7D,0x81,0x7D,0x82,0x89,0x85,0x8A,0x8B,0x7B,0x7B,0x7F,0x6F,0x74, -0x7A,0x74,0x80,0x92,0x8E,0x80,0x85,0x8F,0x8F,0x8D,0x82,0x73,0x71,0x79,0x77,0x70, -0x71,0x7A,0x76,0x76,0x82,0x7F,0x6F,0x62,0x62,0x71,0x77,0x7B,0x82,0x7C,0x78,0x7F, -0x88,0x8D,0x8A,0x7A,0x73,0x89,0x98,0x8F,0x8F,0x96,0x98,0x91,0x87,0x88,0x8B,0x8B, -0x88,0x7D,0x79,0x7C,0x77,0x7E,0x8E,0x86,0x76,0x77,0x7F,0x86,0x8E,0x93,0x99,0x8D, -0x75,0x6F,0x75,0x71,0x6F,0x75,0x7B,0x80,0x8F,0x91,0x80,0x70,0x7A,0x81,0x85,0x93, -0x9E,0x94,0x87,0x82,0x8E,0xA4,0xA7,0x9E,0x94,0x7E,0x77,0x80,0x71,0x75,0x80,0x86, -0x90,0x92,0x91,0x8F,0x8F,0x90,0x83,0x82,0x91,0x90,0x97,0x87,0x6B,0x6D,0x74,0x6E, -0x65,0x75,0x8C,0x92,0x94,0x83,0x79,0x80,0x7B,0x79,0x75,0x72,0x6B,0x66,0x6F,0x81, -0x91,0x9B,0x9C,0x9C,0x90,0x78,0x7E,0x7E,0x7D,0x75,0x75,0x77,0x64,0x65,0x7C,0x91, -0x9C,0x98,0x85,0x7A,0x6A,0x61,0x69,0x77,0x6F,0x61,0x6D,0x89,0x8D,0x84,0x7B,0x85, -0x96,0x8C,0x84,0x81,0x7B,0x70,0x6A,0x73,0x7A,0x78,0x72,0x6D,0x73,0x74,0x69,0x6A, -0x6E,0x66,0x64,0x79,0x83,0x88,0x8E,0x88,0x7B,0x7D,0x87,0x8F,0x88,0x7C,0x77,0x74, -0x72,0x6C,0x69,0x72,0x81,0x7E,0x73,0x6B,0x6F,0x7B,0x8D,0x9B,0x9C,0x9D,0x92,0x86, -0x86,0x8C,0x8D,0x97,0x9D,0x94,0x84,0x8A,0x8F,0x87,0x7B,0x7C,0x8B,0x92,0x81,0x6D, -0x74,0x85,0x8D,0x85,0x7C,0x86,0x94,0x9D,0x96,0x87,0x85,0x7A,0x6E,0x70,0x77,0x72, -0x68,0x7A,0x89,0x83,0x7F,0x83,0x8D,0x84,0x7B,0x8D,0x94,0x91,0x94,0x98,0x8B,0x81, -0x87,0x89,0x7E,0x76,0x75,0x74,0x74,0x6C,0x66,0x6F,0x7A,0x79,0x74,0x73,0x72,0x6D, -0x68,0x6C,0x7C,0x8D,0x99,0x9A,0x8F,0x8B,0x94,0x8D,0x77,0x74,0x7A,0x7B,0x7B,0x77, -0x74,0x6E,0x65,0x6F,0x81,0x87,0x82,0x7D,0x73,0x6F,0x6B,0x6F,0x7B,0x7C,0x7B,0x8F, -0x99,0x91,0x8F,0x94,0x8D,0x7A,0x74,0x81,0x88,0x87,0x86,0x8A,0x8A,0x8C,0x9A,0xA1, -0x8A,0x7C,0x7F,0x75,0x6E,0x6B,0x66,0x71,0x7F,0x79,0x71,0x7D,0x82,0x77,0x6D,0x71, -0x72,0x62,0x64,0x7B,0x86,0x81,0x81,0x83,0x80,0x7B,0x76,0x80,0x84,0x84,0x8F,0x9F, -0xA6,0xA5,0x9D,0x8D,0x8A,0x91,0x90,0x87,0x6F,0x62,0x76,0x8A,0x88,0x78,0x73,0x7E, -0x7D,0x7B,0x75,0x67,0x6B,0x7D,0x80,0x7A,0x83,0x90,0x93,0x97,0x9A,0x9A,0x92,0x84, -0x7F,0x79,0x7F,0x8C,0x8A,0x83,0x7E,0x7C,0x80,0x91,0x9F,0x9D,0x9B,0x9E,0x99,0x89, -0x7F,0x81,0x8A,0x8E,0x90,0x8F,0x89,0x8C,0x88,0x7E,0x7C,0x70,0x63,0x6A,0x74,0x6B, -0x68,0x6E,0x6F,0x67,0x67,0x78,0x84,0x80,0x83,0x8B,0x8F,0x91,0x94,0x99,0x9A,0x98, -0x93,0x83,0x73,0x6E,0x77,0x7B,0x77,0x76,0x7A,0x7E,0x80,0x84,0x84,0x82,0x7F,0x71, -0x68,0x72,0x7B,0x7B,0x79,0x78,0x7D,0x85,0x7F,0x74,0x70,0x64,0x56,0x57,0x62,0x65, -0x66,0x72,0x7F,0x84,0x86,0x82,0x85,0x8D,0x8A,0x80,0x7D,0x82,0x82,0x7E,0x83,0x88, -0x89,0x92,0x94,0x8B,0x7A,0x69,0x6A,0x7A,0x7D,0x71,0x76,0x81,0x7C,0x6E,0x65,0x70, -0x76,0x70,0x71,0x68,0x62,0x6B,0x76,0x80,0x86,0x85,0x89,0x8F,0x8D,0x83,0x8B,0x9C, -0xA2,0x9C,0x8E,0x88,0x82,0x84,0x89,0x93,0x9D,0x9B,0x95,0x94,0x90,0x87,0x86,0x82, -0x75,0x7B,0x78,0x73,0x73,0x67,0x64,0x70,0x78,0x78,0x7A,0x87,0x8A,0x84,0x8A,0x96, -0x98,0x95,0x98,0x97,0x84,0x77,0x7F,0x84,0x79,0x76,0x71,0x77,0x8A,0x91,0x8E,0x8C, -0x94,0x8F,0x7B,0x75,0x75,0x83,0x86,0x74,0x77,0x8C,0x90,0x8C,0x91,0x91,0x8F,0x90, -0x81,0x72,0x72,0x6F,0x6B,0x70,0x6A,0x63,0x73,0x83,0x7C,0x72,0x7A,0x82,0x7E,0x73, -0x6B,0x70,0x76,0x7E,0x87,0x8A,0x8A,0x89,0x8E,0x8F,0x90,0x98,0x91,0x7D,0x7B,0x8E, -0x99,0x95,0x8E,0x8B,0x92,0x90,0x7F,0x71,0x71,0x7D,0x7E,0x77,0x7D,0x8D,0x9A,0xA4, -0x9A,0x84,0x7E,0x83,0x80,0x75,0x68,0x60,0x60,0x67,0x70,0x70,0x6E,0x6C,0x73,0x7A, -0x7A,0x7C,0x88,0x9B,0x9A,0x8A,0x84,0x81,0x86,0x8C,0x86,0x87,0x8E,0x83,0x77,0x78, -0x75,0x6F,0x70,0x7F,0x7C,0x72,0x74,0x79,0x75,0x65,0x6E,0x80,0x82,0x82,0x75,0x6C, -0x71,0x70,0x6F,0x72,0x7B,0x82,0x7F,0x78,0x6F,0x72,0x83,0x88,0x83,0x84,0x89,0x86, -0x81,0x8A,0x8E,0x8B,0x88,0x8B,0x9B,0x9E,0x8D,0x83,0x82,0x86,0x81,0x70,0x6F,0x88, -0x8F,0x82,0x7A,0x77,0x81,0x91,0x94,0x91,0x8C,0x81,0x82,0x85,0x80,0x83,0x94,0x95, -0x87,0x83,0x8D,0x92,0x8D,0x87,0x7C,0x74,0x6C,0x6A,0x6E,0x75,0x73,0x82,0x93,0x8E, -0x8A,0x90,0x8E,0x88,0x87,0x81,0x84,0x8B,0x89,0x89,0x83,0x77,0x73,0x71,0x79,0x86, -0x8E,0x87,0x76,0x6E,0x6C,0x71,0x78,0x75,0x71,0x6E,0x63,0x68,0x7C,0x82,0x82,0x85, -0x88,0x82,0x82,0x83,0x77,0x67,0x60,0x5C,0x6C,0x7B,0x71,0x72,0x7A,0x7B,0x7E,0x84, -0x82,0x83,0x86,0x81,0x7B,0x79,0x83,0x93,0x9C,0x9D,0x91,0x86,0x89,0x8F,0x8C,0x7F, -0x71,0x6B,0x69,0x6C,0x6E,0x6F,0x75,0x6C,0x5D,0x62,0x7A,0x89,0x7C,0x71,0x87,0x9A, -0x9B,0x9C,0x9B,0x97,0x93,0x8D,0x87,0x87,0x8B,0x84,0x77,0x76,0x78,0x81,0x86,0x87, -0x86,0x7F,0x75,0x76,0x8A,0x9F,0xA0,0x92,0x87,0x8C,0x8F,0x88,0x87,0x8F,0x8F,0x8D, -0x8C,0x7C,0x6D,0x70,0x74,0x75,0x75,0x7A,0x89,0x90,0x86,0x7A,0x72,0x73,0x70,0x70, -0x73,0x7D,0x8A,0x92,0x99,0xA5,0xAC,0xA5,0x90,0x85,0x81,0x74,0x60,0x50,0x57,0x6A, -0x78,0x7E,0x89,0x8F,0x8F,0x8B,0x82,0x83,0x80,0x72,0x68,0x69,0x71,0x77,0x76,0x75, -0x7D,0x87,0x88,0x7A,0x75,0x7F,0x84,0x84,0x85,0x85,0x8B,0x96,0x97,0x86,0x7E,0x89, -0x97,0x99,0x8F,0x82,0x79,0x84,0x91,0x8B,0x7D,0x79,0x7A,0x74,0x6E,0x77,0x7D,0x73, -0x73,0x7E,0x88,0x8D,0x90,0x8C,0x7B,0x72,0x78,0x80,0x7E,0x7F,0x7E,0x79,0x7E,0x81, -0x80,0x7D,0x7B,0x84,0x98,0x9E,0x8D,0x7B,0x78,0x79,0x74,0x73,0x7D,0x88,0x83,0x77, -0x74,0x7A,0x89,0x8B,0x8A,0x8A,0x7D,0x74,0x78,0x7B,0x7D,0x7D,0x73,0x6C,0x71,0x75, -0x76,0x78,0x7E,0x7C,0x73,0x7A,0x7E,0x75,0x6E,0x70,0x7C,0x8A,0x8E,0x8B,0x81,0x7E, -0x76,0x7B,0x8C,0x8F,0x84,0x74,0x6D,0x72,0x79,0x7E,0x80,0x7E,0x85,0x8A,0x81,0x6F, -0x68,0x71,0x73,0x63,0x64,0x78,0x90,0x98,0x8F,0x83,0x81,0x8C,0x85,0x72,0x6C,0x68, -0x6A,0x76,0x80,0x85,0x86,0x85,0x86,0x85,0x84,0x91,0x93,0x7C,0x6E,0x73,0x78,0x79, -0x8C,0x94,0x8F,0x97,0xA2,0x9E,0x94,0x96,0x94,0x89,0x81,0x80,0x7D,0x89,0x93,0x8B, -0x80,0x7C,0x7E,0x7E,0x82,0x80,0x7E,0x81,0x80,0x76,0x66,0x70,0x86,0x7D,0x6B,0x70, -0x83,0x92,0x98,0x95,0x8E,0x91,0x91,0x92,0x95,0x96,0x8D,0x84,0x84,0x86,0x86,0x90, -0x9C,0x92,0x8B,0x93,0x89,0x75,0x6B,0x6B,0x6B,0x69,0x74,0x77,0x69,0x6C,0x79,0x76, -0x79,0x82,0x8A,0x88,0x76,0x62,0x61,0x6D,0x71,0x78,0x85,0x8F,0x8A,0x77,0x7A,0x8B, -0x87,0x81,0x7F,0x7E,0x7D,0x7F,0x7E,0x7D,0x80,0x83,0x8B,0x85,0x75,0x77,0x7A,0x75, -0x7D,0x8E,0x94,0x8A,0x78,0x75,0x7E,0x83,0x84,0x71,0x64,0x6F,0x76,0x7C,0x8B,0x8A, -0x7E,0x88,0x91,0x82,0x76,0x78,0x79,0x74,0x76,0x78,0x79,0x85,0x8E,0x82,0x83,0x90, -0x83,0x6C,0x6D,0x78,0x78,0x7A,0x83,0x87,0x8E,0x93,0x97,0x91,0x84,0x94,0x9F,0x94, -0x82,0x78,0x7A,0x7A,0x7E,0x8B,0x93,0x8D,0x8D,0x90,0x82,0x74,0x77,0x7E,0x7F,0x78, -0x6C,0x72,0x84,0x7E,0x6C,0x69,0x7D,0x8B,0x80,0x74,0x71,0x82,0x8B,0x83,0x72,0x72, -0x88,0x9E,0xA4,0x97,0x86,0x7E,0x7D,0x77,0x72,0x74,0x76,0x78,0x79,0x7D,0x8D,0x8D, -0x8D,0x89,0x7C,0x7B,0x79,0x6D,0x73,0x7F,0x85,0x82,0x77,0x75,0x79,0x7B,0x7A,0x7D, -0x85,0x85,0x85,0x8D,0x8A,0x79,0x66,0x69,0x73,0x75,0x7A,0x88,0x94,0x8D,0x84,0x92, -0x98,0x8C,0x7C,0x7D,0x83,0x78,0x71,0x74,0x7F,0x87,0x93,0x91,0x86,0x7C,0x76,0x7F, -0x7F,0x77,0x70,0x67,0x68,0x72,0x74,0x73,0x70,0x84,0x92,0x7D,0x6E,0x7B,0x85,0x87, -0x87,0x88,0x8A,0x8B,0x8F,0x92,0x8F,0x89,0x86,0x87,0x8B,0x8B,0x97,0xA3,0x99,0x83, -0x78,0x78,0x79,0x71,0x64,0x5E,0x67,0x72,0x6E,0x6D,0x75,0x72,0x6F,0x7B,0x7A,0x6D, -0x6A,0x68,0x71,0x80,0x8C,0x90,0x91,0x94,0x92,0x8B,0x8F,0x8B,0x7E,0x7F,0x79,0x6F, -0x6F,0x7E,0x8B,0x8C,0x8D,0x93,0x8E,0x86,0x7E,0x80,0x8A,0x86,0x76,0x71,0x7D,0x7D, -0x7B,0x80,0x7E,0x7F,0x7E,0x7D,0x77,0x73,0x7C,0x7C,0x7A,0x86,0x91,0x9D,0x9D,0x98, -0x97,0x98,0x9B,0x97,0x8E,0x83,0x80,0x87,0x94,0x92,0x85,0x82,0x86,0x88,0x87,0x7E, -0x7A,0x7B,0x78,0x7D,0x88,0x86,0x86,0x90,0x97,0x8B,0x7E,0x74,0x6C,0x6B,0x70,0x7C, -0x81,0x7B,0x79,0x7D,0x7C,0x86,0x8C,0x81,0x7D,0x85,0x84,0x8F,0xA0,0x96,0x91,0x96, -0x94,0x88,0x7F,0x71,0x5E,0x56,0x5D,0x69,0x67,0x68,0x77,0x89,0x91,0x85,0x71,0x6A, -0x67,0x5B,0x60,0x6F,0x7C,0x88,0x90,0x9A,0x96,0x7D,0x6E,0x76,0x7C,0x75,0x6D,0x72, -0x7B,0x7D,0x7D,0x86,0x90,0x88,0x81,0x85,0x86,0x78,0x6A,0x61,0x5E,0x60,0x6A,0x7B, -0x8C,0x90,0x89,0x85,0x85,0x80,0x79,0x72,0x71,0x7B,0x79,0x6D,0x6C,0x74,0x7D,0x90, -0x9E,0x9F,0x9A,0x8E,0x7F,0x77,0x80,0x85,0x82,0x82,0x89,0x83,0x78,0x7A,0x83,0x80, -0x7F,0x87,0x83,0x7A,0x77,0x77,0x7A,0x82,0x89,0x88,0x7E,0x7D,0x86,0x8B,0x81,0x7E, -0x86,0x87,0x7C,0x76,0x7D,0x8A,0x94,0x99,0x94,0x85,0x82,0x87,0x8E,0x93,0x90,0x85, -0x88,0x8D,0x8C,0x8C,0x85,0x82,0x86,0x82,0x80,0x80,0x83,0x83,0x82,0x82,0x78,0x72, -0x75,0x80,0x8B,0x92,0x8B,0x7C,0x75,0x79,0x78,0x73,0x73,0x73,0x75,0x79,0x7F,0x81, -0x82,0x81,0x87,0x91,0x90,0x79,0x6E,0x6A,0x67,0x70,0x7A,0x84,0x89,0x8A,0x89,0x86, -0x82,0x7D,0x6F,0x67,0x6F,0x6F,0x70,0x7C,0x82,0x86,0x8F,0x97,0x9D,0x94,0x86,0x85, -0x85,0x82,0x7E,0x7B,0x84,0x86,0x81,0x75,0x75,0x81,0x7F,0x71,0x79,0x87,0x7E,0x7C, -0x83,0x88,0x83,0x82,0x83,0x80,0x7A,0x6F,0x6C,0x78,0x83,0x80,0x7C,0x81,0x87,0x89, -0x7F,0x6F,0x76,0x7E,0x7E,0x7D,0x83,0x81,0x7A,0x86,0x93,0x9D,0x97,0x85,0x7A,0x78, -0x7B,0x86,0x88,0x82,0x84,0x89,0x8C,0x86,0x82,0x7F,0x7D,0x87,0x8D,0x83,0x75,0x79, -0x84,0x87,0x85,0x6F,0x69,0x73,0x79,0x7A,0x79,0x79,0x72,0x6C,0x75,0x82,0x85,0x8B, -0x90,0x92,0x98,0x9E,0x9A,0x96,0x8C,0x7C,0x75,0x7B,0x7B,0x82,0x87,0x7C,0x79,0x7C, -0x7D,0x7B,0x7C,0x79,0x71,0x6D,0x6A,0x6D,0x78,0x8D,0x9E,0x9D,0x92,0x85,0x74,0x6F, -0x70,0x73,0x78,0x7A,0x7C,0x8B,0x8F,0x87,0x7B,0x7E,0x7E,0x7A,0x82,0x84,0x7D,0x7B, -0x81,0x88,0x8B,0x85,0x7D,0x73,0x6C,0x63,0x5F,0x6B,0x79,0x83,0x89,0x8B,0x86,0x81, -0x8A,0x93,0x8F,0x83,0x77,0x7A,0x82,0x88,0x8C,0x86,0x80,0x7E,0x83,0x8C,0x8D,0x8B, -0x8E,0x86,0x77,0x75,0x7A,0x79,0x76,0x7B,0x7D,0x7D,0x80,0x84,0x83,0x78,0x73,0x79, -0x74,0x6B,0x69,0x7A,0x86,0x83,0x81,0x83,0x93,0x91,0x7B,0x7A,0x85,0x8D,0x87,0x7D, -0x82,0x82,0x73,0x6A,0x7C,0x8D,0x8D,0x83,0x7B,0x7D,0x80,0x83,0x7E,0x7F,0x86,0x7E, -0x79,0x7C,0x7D,0x7B,0x79,0x7B,0x83,0x87,0x7F,0x7C,0x70,0x66,0x75,0x7A,0x6B,0x68, -0x77,0x85,0x86,0x86,0x8C,0x91,0x8A,0x88,0x92,0x92,0x88,0x85,0x7C,0x70,0x71,0x84, -0x8F,0x8F,0x95,0x8B,0x82,0x89,0x96,0x94,0x91,0x91,0x8A,0x77,0x69,0x6A,0x74,0x88, -0x91,0x87,0x7F,0x7F,0x83,0x80,0x7D,0x7F,0x83,0x8A,0x87,0x7B,0x7C,0x7F,0x76,0x83, -0x94,0x96,0x91,0x8E,0x89,0x82,0x81,0x8C,0x8D,0x86,0x85,0x81,0x85,0x90,0x98,0x96, -0x8D,0x89,0x80,0x77,0x72,0x6D,0x6A,0x5C,0x58,0x65,0x73,0x7C,0x7F,0x80,0x81,0x82, -0x79,0x69,0x70,0x87,0x8A,0x88,0x84,0x7C,0x7D,0x8D,0x99,0x90,0x81,0x70,0x69,0x75, -0x7F,0x7F,0x78,0x7A,0x89,0x8C,0x84,0x7D,0x7A,0x74,0x75,0x7C,0x81,0x82,0x7C,0x75, -0x73,0x71,0x6F,0x73,0x71,0x6C,0x66,0x67,0x69,0x66,0x6F,0x81,0x8C,0x87,0x7E,0x82, -0x8C,0x94,0x98,0x8B,0x84,0x8D,0x8C,0x7F,0x82,0x8A,0x8D,0x8E,0x8F,0x99,0x95,0x84, -0x81,0x89,0x89,0x7C,0x6E,0x6D,0x6F,0x7C,0x89,0x7E,0x73,0x6E,0x6A,0x77,0x87,0x89, -0x83,0x89,0x97,0x9A,0x92,0x90,0x8F,0x85,0x7B,0x76,0x75,0x7B,0x81,0x83,0x7E,0x80, -0x80,0x83,0x87,0x8A,0x8D,0x8E,0x82,0x71,0x6E,0x74,0x7A,0x7B,0x76,0x7A,0x85,0x81, -0x6F,0x69,0x6B,0x70,0x79,0x76,0x6D,0x69,0x74,0x83,0x89,0x80,0x82,0x8B,0x8C,0x88, -0x7F,0x83,0x91,0x8F,0x8B,0x8F,0x8A,0x7A,0x77,0x81,0x7D,0x77,0x7E,0x86,0x89,0x7C, -0x71,0x7C,0x86,0x84,0x7F,0x79,0x74,0x75,0x76,0x79,0x79,0x7A,0x7E,0x7E,0x88,0x8C, -0x87,0x8E,0x8E,0x85,0x81,0x85,0x8C,0x8B,0x88,0x8F,0x99,0x96,0x91,0x94,0x9C,0x94, -0x87,0x85,0x84,0x7E,0x76,0x70,0x6F,0x72,0x74,0x70,0x79,0x8B,0x8C,0x83,0x85,0x8A, -0x83,0x78,0x73,0x78,0x7C,0x7B,0x7D,0x82,0x86,0x8B,0x8F,0x94,0x93,0x8D,0x86,0x85, -0x86,0x7E,0x73,0x6B,0x75,0x87,0x83,0x77,0x7C,0x86,0x87,0x78,0x71,0x7B,0x7B,0x79, -0x7A,0x75,0x77,0x72,0x6C,0x6B,0x71,0x7A,0x79,0x7C,0x7D,0x78,0x79,0x76,0x73,0x73, -0x75,0x78,0x75,0x77,0x7D,0x7D,0x83,0x88,0x92,0x95,0x8C,0x88,0x8A,0x8C,0x8B,0x83, -0x82,0x86,0x82,0x7B,0x78,0x7B,0x7E,0x82,0x7E,0x7A,0x7D,0x7C,0x74,0x71,0x70,0x71, -0x80,0x88,0x76,0x76,0x93,0x94,0x83,0x7D,0x81,0x80,0x7F,0x80,0x81,0x89,0x91,0x91, -0x94,0x9B,0x97,0x8D,0x8D,0x82,0x70,0x78,0x8A,0x86,0x79,0x78,0x7E,0x86,0x83,0x7F, -0x80,0x88,0x87,0x7F,0x7E,0x87,0x8B,0x7D,0x6F,0x78,0x8D,0x90,0x87,0x82,0x85,0x85, -0x79,0x77,0x80,0x87,0x8D,0x86,0x74,0x77,0x89,0x8E,0x87,0x81,0x7A,0x7D,0x8A,0x8E, -0x82,0x7D,0x7D,0x74,0x6C,0x6D,0x74,0x73,0x6F,0x6B,0x73,0x72,0x68,0x72,0x7C,0x77, -0x72,0x7F,0x8F,0x8F,0x77,0x68,0x71,0x7E,0x7B,0x7D,0x82,0x82,0x7D,0x83,0x8B,0x90, -0x8B,0x83,0x84,0x84,0x87,0x79,0x67,0x6E,0x7B,0x7F,0x7A,0x78,0x81,0x86,0x83,0x7A, -0x73,0x7D,0x88,0x85,0x7E,0x81,0x89,0x8C,0x90,0x92,0x84,0x7E,0x85,0x87,0x81,0x7C, -0x7C,0x74,0x6E,0x6F,0x74,0x88,0x97,0x8E,0x80,0x7D,0x85,0x89,0x81,0x7B,0x81,0x87, -0x86,0x8B,0x99,0x9F,0x93,0x88,0x87,0x86,0x82,0x8A,0x8D,0x7E,0x7B,0x81,0x88,0x8E, -0x83,0x74,0x7A,0x7A,0x71,0x6F,0x74,0x77,0x7A,0x7D,0x7F,0x7F,0x79,0x73,0x76,0x7C, -0x76,0x75,0x82,0x94,0x95,0x8D,0x8D,0x82,0x78,0x75,0x7D,0x8B,0x8D,0x88,0x8A,0x92, -0x9E,0x97,0x7A,0x71,0x7B,0x82,0x83,0x7E,0x7E,0x79,0x78,0x7A,0x7A,0x7E,0x7F,0x74, -0x76,0x80,0x87,0x8E,0x8A,0x7D,0x7A,0x77,0x76,0x73,0x67,0x6B,0x77,0x7E,0x81,0x81, -0x83,0x8B,0x8D,0x81,0x75,0x78,0x7F,0x7E,0x82,0x84,0x86,0x91,0x95,0x8B,0x88,0x8D, -0x92,0x86,0x74,0x73,0x77,0x7B,0x83,0x81,0x72,0x6E,0x7A,0x80,0x7E,0x75,0x7A,0x80, -0x79,0x7D,0x7E,0x77,0x77,0x78,0x7F,0x7C,0x78,0x83,0x91,0x91,0x92,0x93,0x91,0x8B, -0x7E,0x7A,0x77,0x71,0x78,0x7E,0x81,0x88,0x85,0x7A,0x7E,0x83,0x73,0x6B,0x70,0x71, -0x73,0x7D,0x7E,0x7B,0x7B,0x74,0x6E,0x71,0x79,0x7E,0x80,0x81,0x7D,0x77,0x7E,0x7D, -0x81,0x8A,0x82,0x7A,0x83,0x87,0x7F,0x81,0x81,0x7C,0x7B,0x81,0x8B,0x90,0x8D,0x83, -0x7A,0x79,0x7A,0x82,0x90,0x92,0x8F,0x95,0x97,0x8A,0x77,0x6E,0x72,0x73,0x76,0x77, -0x7D,0x83,0x81,0x82,0x7F,0x83,0x8A,0x85,0x85,0x84,0x7F,0x7F,0x88,0x8F,0x8A,0x8E, -0x8D,0x89,0x8F,0x8D,0x89,0x94,0x92,0x89,0x8F,0x98,0x92,0x89,0x88,0x8A,0x84,0x7B, -0x78,0x73,0x78,0x7E,0x7A,0x76,0x75,0x79,0x71,0x6B,0x6E,0x6C,0x75,0x7F,0x7A,0x7D, -0x86,0x83,0x80,0x7F,0x79,0x76,0x74,0x74,0x74,0x7C,0x83,0x7C,0x7A,0x83,0x8B,0x82, -0x78,0x7B,0x87,0x8E,0x88,0x81,0x84,0x8B,0x87,0x7E,0x79,0x7E,0x7F,0x7D,0x7C,0x7D, -0x88,0x8A,0x7D,0x7C,0x7C,0x69,0x66,0x76,0x78,0x71,0x76,0x88,0x93,0x87,0x7D,0x82, -0x81,0x7A,0x7F,0x87,0x81,0x6B,0x66,0x7E,0x95,0x8F,0x79,0x6B,0x6F,0x72,0x69,0x6E, -0x84,0x8F,0x8C,0x8A,0x93,0x98,0x90,0x8A,0x84,0x7F,0x7B,0x7C,0x82,0x82,0x7D,0x7B, -0x7F,0x86,0x8D,0x8E,0x87,0x81,0x7D,0x7C,0x7A,0x83,0x8E,0x92,0x8E,0x89,0x87,0x86, -0x85,0x86,0x8A,0x8B,0x84,0x7D,0x80,0x7E,0x72,0x66,0x68,0x76,0x7D,0x81,0x8D,0x98, -0x96,0x87,0x83,0x8B,0x8D,0x8E,0x91,0x8E,0x86,0x7C,0x7C,0x86,0x87,0x82,0x81,0x82, -0x8B,0x8C,0x81,0x7E,0x7E,0x7A,0x70,0x6B,0x6B,0x72,0x78,0x75,0x75,0x76,0x71,0x66, -0x62,0x6B,0x79,0x81,0x83,0x7F,0x7A,0x7F,0x86,0x82,0x82,0x8C,0x8F,0x88,0x82,0x82, -0x83,0x82,0x7F,0x81,0x7C,0x75,0x80,0x8A,0x90,0x8E,0x7D,0x6F,0x67,0x6D,0x7A,0x7F, -0x7C,0x7E,0x86,0x7F,0x74,0x77,0x81,0x7B,0x69,0x6A,0x75,0x79,0x78,0x74,0x73,0x7F, -0x91,0x94,0x88,0x7C,0x74,0x76,0x78,0x78,0x7D,0x88,0x8C,0x8C,0x8D,0x93,0x9D,0x97, -0x8A,0x83,0x85,0x85,0x80,0x85,0x8C,0x8D,0x90,0x8C,0x84,0x7D,0x77,0x75,0x72,0x70, -0x70,0x71,0x76,0x8A,0x8F,0x82,0x7B,0x74,0x71,0x77,0x82,0x82,0x80,0x85,0x8D,0x91, -0x8A,0x82,0x89,0x98,0x99,0x90,0x8C,0x8F,0x97,0x8F,0x7D,0x7D,0x7F,0x7B,0x70,0x68, -0x6F,0x7A,0x81,0x87,0x86,0x85,0x7E,0x77,0x72,0x70,0x6E,0x6D,0x74,0x79,0x81,0x8C, -0x8E,0x88,0x86,0x8A,0x85,0x7B,0x74,0x74,0x7B,0x84,0x8C,0x88,0x86,0x8C,0x90,0x92, -0x8C,0x88,0x85,0x85,0x8D,0x89,0x76,0x71,0x79,0x78,0x73,0x75,0x7F,0x86,0x86,0x88, -0x80,0x73,0x69,0x65,0x6B,0x73,0x73,0x72,0x75,0x75,0x73,0x76,0x85,0x92,0x8B,0x7C, -0x7A,0x82,0x83,0x7E,0x80,0x86,0x88,0x8C,0x8F,0x8D,0x87,0x80,0x80,0x85,0x89,0x8E, -0x96,0x98,0x8E,0x83,0x7C,0x80,0x89,0x88,0x81,0x7E,0x7D,0x76,0x6B,0x6D,0x76,0x75, -0x75,0x75,0x77,0x7A,0x77,0x72,0x79,0x7D,0x71,0x70,0x81,0x8C,0x85,0x7E,0x7D,0x7F, -0x80,0x83,0x87,0x85,0x83,0x87,0x95,0xA1,0x9E,0x90,0x84,0x89,0x8D,0x8C,0x8C,0x8A, -0x8C,0x8B,0x86,0x7E,0x74,0x6B,0x67,0x6A,0x6D,0x70,0x75,0x74,0x75,0x7D,0x75,0x66, -0x67,0x71,0x6C,0x66,0x73,0x84,0x88,0x8A,0x8B,0x89,0x8F,0x8E,0x7F,0x76,0x74,0x7B, -0x8C,0x92,0x94,0x95,0x92,0x96,0x98,0x96,0x8C,0x86,0x81,0x78,0x72,0x6D,0x72,0x7F, -0x81,0x83,0x84,0x81,0x81,0x84,0x85,0x7D,0x72,0x71,0x73,0x73,0x76,0x79,0x77,0x71, -0x7B,0x89,0x82,0x7C,0x7D,0x79,0x80,0x81,0x7D,0x82,0x91,0x9A,0x97,0x94,0x9B,0x9D, -0x9C,0x8D,0x83,0x8A,0x7D,0x73,0x79,0x83,0x83,0x7E,0x81,0x7D,0x79,0x7C,0x73,0x71, -0x76,0x6C,0x63,0x69,0x6D,0x6C,0x76,0x7F,0x7E,0x79,0x7C,0x75,0x73,0x70,0x6D,0x79, -0x85,0x7B,0x72,0x7D,0x91,0x95,0x90,0x8A,0x89,0x95,0x8E,0x89,0x96,0x93,0x89,0x8D, -0x91,0x88,0x83,0x84,0x7F,0x7F,0x7E,0x75,0x79,0x89,0x8A,0x84,0x78,0x6E,0x6C,0x69, -0x61,0x57,0x61,0x6D,0x73,0x82,0x89,0x85,0x86,0x89,0x8E,0x8C,0x89,0x8B,0x88,0x8F, -0x93,0x94,0x9A,0x93,0x83,0x85,0x8A,0x8C,0x87,0x86,0x7D,0x7F,0x8F,0x90,0x92,0x9B, -0x94,0x87,0x82,0x83,0x83,0x84,0x85,0x79,0x7A,0x77,0x6D,0x70,0x77,0x74,0x6F,0x6F, -0x72,0x75,0x7D,0x7E,0x81,0x93,0x84,0x74,0x7A,0x7F,0x7F,0x80,0x7E,0x82,0x85,0x85, -0x7F,0x7E,0x86,0x81,0x81,0x7F,0x7F,0x86,0x8C,0x89,0x7F,0x7A,0x79,0x75,0x76,0x76, -0x76,0x77,0x73,0x70,0x60,0x63,0x72,0x73,0x6C,0x68,0x6A,0x71,0x78,0x81,0x87,0x83, -0x7E,0x88,0x8C,0x85,0x84,0x8A,0x87,0x7F,0x83,0x8D,0x93,0x90,0x94,0x92,0x85,0x82, -0x8A,0x93,0x90,0x82,0x7F,0x7B,0x79,0x81,0x7E,0x7D,0x7F,0x84,0x83,0x7F,0x86,0x7D, -0x6F,0x72,0x77,0x81,0x88,0x84,0x83,0x87,0x8A,0x7F,0x7A,0x7C,0x7D,0x83,0x83,0x6F, -0x6F,0x7E,0x91,0x94,0x89,0x8E,0x94,0x92,0x86,0x85,0x91,0x88,0x77,0x7B,0x83,0x84, -0x77,0x7A,0x80,0x7A,0x74,0x79,0x7E,0x77,0x6F,0x74,0x72,0x6D,0x77,0x7F,0x84,0x87, -0x86,0x85,0x83,0x7C,0x77,0x7C,0x82,0x7E,0x7A,0x79,0x83,0x8C,0x8C,0x8A,0x7F,0x76, -0x76,0x7C,0x80,0x7F,0x7D,0x81,0x82,0x83,0x83,0x85,0x86,0x7E,0x7B,0x82,0x79,0x79, -0x83,0x82,0x7B,0x78,0x7D,0x82,0x84,0x78,0x6E,0x6E,0x79,0x7B,0x77,0x71,0x72,0x82, -0x8F,0x88,0x7F,0x81,0x8D,0x90,0x8D,0x80,0x75,0x82,0x87,0x7B,0x72,0x7C,0x85,0x89, -0x8A,0x88,0x82,0x87,0x89,0x81,0x7E,0x84,0x8A,0x8E,0x93,0x90,0x91,0x91,0x85,0x83, -0x8A,0x89,0x8F,0x8F,0x81,0x7B,0x83,0x89,0x86,0x7A,0x70,0x6B,0x6A,0x6C,0x6E,0x7C, -0x87,0x89,0x84,0x81,0x84,0x84,0x81,0x81,0x84,0x8D,0x8E,0x87,0x7E,0x7A,0x82,0x8F, -0x90,0x82,0x79,0x7F,0x86,0x82,0x7D,0x84,0x8F,0x8F,0x8C,0x8B,0x8B,0x7D,0x75,0x72, -0x6A,0x66,0x61,0x5C,0x5B,0x5E,0x5F,0x69,0x77,0x7B,0x79,0x7A,0x79,0x7E,0x86,0x86, -0x85,0x8A,0x90,0x94,0x97,0x9B,0x99,0x91,0x85,0x83,0x8C,0x88,0x79,0x71,0x74,0x72, -0x6E,0x77,0x83,0x82,0x81,0x81,0x80,0x82,0x7C,0x7B,0x7D,0x74,0x75,0x7C,0x7D,0x80, -0x7A,0x74,0x7E,0x8A,0x87,0x7E,0x7E,0x85,0x85,0x81,0x82,0x86,0x81,0x7C,0x79,0x79, -0x7C,0x79,0x80,0x8B,0x8A,0x84,0x86,0x8F,0x94,0x91,0x90,0x90,0x90,0x8D,0x86,0x80, -0x7C,0x80,0x84,0x82,0x84,0x81,0x7D,0x75,0x6B,0x6D,0x69,0x6B,0x75,0x77,0x74,0x77, -0x82,0x89,0x82,0x7C,0x7D,0x88,0x91,0x8C,0x78,0x6D,0x71,0x75,0x79,0x7E,0x7E,0x7B, -0x7E,0x80,0x7F,0x85,0x8F,0x9B,0x9E,0x91,0x86,0x8C,0x93,0x88,0x7B,0x74,0x7A,0x83, -0x83,0x7F,0x7E,0x7E,0x80,0x79,0x71,0x75,0x7F,0x79,0x6F,0x73,0x7A,0x7B,0x7E,0x85, -0x84,0x7F,0x7D,0x79,0x79,0x82,0x85,0x86,0x8F,0x95,0x90,0x8D,0x96,0x92,0x83,0x7E, -0x72,0x6E,0x7C,0x82,0x84,0x8D,0x92,0x8F,0x8B,0x88,0x7B,0x73,0x77,0x71,0x62,0x64, -0x72,0x71,0x6F,0x73,0x7A,0x79,0x78,0x77,0x7C,0x86,0x8A,0x87,0x81,0x7E,0x85,0x89, -0x8A,0x8C,0x90,0x91,0x8D,0x85,0x83,0x87,0x8C,0x8B,0x8A,0x85,0x78,0x71,0x71,0x75, -0x7A,0x7F,0x84,0x81,0x7F,0x82,0x83,0x80,0x79,0x7B,0x83,0x79,0x6F,0x6F,0x76,0x7E, -0x82,0x7D,0x70,0x69,0x75,0x83,0x8C,0x8B,0x84,0x8B,0x93,0x91,0x83,0x78,0x7D,0x85, -0x91,0x9A,0x92,0x8D,0x91,0x94,0x97,0x96,0x8D,0x7C,0x69,0x6D,0x7E,0x84,0x89,0x8F, -0x8A,0x7F,0x7B,0x7A,0x7A,0x76,0x6B,0x5F,0x5C,0x60,0x6E,0x7C,0x7C,0x77,0x78,0x7E, -0x81,0x83,0x83,0x7C,0x80,0x8F,0x8F,0x88,0x8F,0x9A,0xA0,0xA0,0x96,0x87,0x7E,0x7E, -0x7A,0x7A,0x84,0x83,0x7D,0x84,0x84,0x76,0x6F,0x80,0x90,0x89,0x76,0x6D,0x70,0x72, -0x70,0x75,0x7A,0x77,0x6C,0x6A,0x71,0x73,0x75,0x79,0x80,0x86,0x85,0x8A,0x89,0x85, -0x87,0x86,0x84,0x8D,0x92,0x81,0x6E,0x70,0x80,0x8A,0x85,0x7C,0x74,0x74,0x77,0x75, -0x77,0x7F,0x7B,0x77,0x7A,0x77,0x76,0x84,0x91,0x93,0x7E,0x6C,0x74,0x80,0x7E,0x7C, -0x7E,0x7B,0x6E,0x6A,0x74,0x7A,0x84,0x8B,0x8C,0x86,0x80,0x8D,0x94,0x8C,0x8A,0x89, -0x7F,0x78,0x7F,0x8D,0x90,0x84,0x74,0x73,0x7B,0x82,0x87,0x8A,0x8E,0x8B,0x90,0x98, -0x94,0x88,0x85,0x87,0x83,0x7C,0x79,0x81,0x83,0x7A,0x75,0x7A,0x82,0x7D,0x7B,0x75, -0x69,0x6A,0x73,0x7E,0x8B,0x8F,0x93,0x93,0x8F,0x88,0x84,0x89,0x8A,0x87,0x7F,0x7A, -0x88,0x94,0x90,0x88,0x7F,0x7C,0x7D,0x7E,0x84,0x84,0x80,0x7C,0x82,0x8A,0x85,0x84, -0x88,0x82,0x7B,0x82,0x89,0x83,0x7F,0x81,0x7B,0x73,0x78,0x7D,0x78,0x6D,0x6C,0x76, -0x7E,0x82,0x7C,0x72,0x73,0x76,0x74,0x74,0x7B,0x81,0x7E,0x82,0x8D,0x89,0x83,0x82, -0x84,0x85,0x7D,0x76,0x6F,0x6E,0x7C,0x82,0x81,0x82,0x82,0x80,0x7C,0x7F,0x87,0x87, -0x81,0x7B,0x76,0x7A,0x83,0x85,0x85,0x82,0x81,0x82,0x83,0x82,0x80,0x85,0x8B,0x8B, -0x82,0x76,0x71,0x6D,0x72,0x75,0x73,0x79,0x84,0x87,0x85,0x7B,0x76,0x7C,0x84,0x89, -0x82,0x78,0x77,0x75,0x76,0x83,0x88,0x82,0x83,0x84,0x83,0x87,0x8C,0x8A,0x84,0x79, -0x75,0x81,0x84,0x80,0x85,0x8D,0x8E,0x8E,0x8C,0x85,0x7F,0x82,0x85,0x87,0x86,0x7C, -0x7D,0x83,0x82,0x82,0x7E,0x78,0x76,0x7B,0x7F,0x80,0x8A,0x93,0x8D,0x82,0x7E,0x85, -0x93,0x98,0x8F,0x8F,0x8C,0x8B,0x8C,0x89,0x83,0x78,0x79,0x7A,0x71,0x6B,0x6E,0x77, -0x78,0x7B,0x88,0x8A,0x82,0x7B,0x79,0x7B,0x7B,0x78,0x7D,0x80,0x7C,0x75,0x72,0x75, -0x7B,0x87,0x86,0x7C,0x7B,0x7D,0x79,0x79,0x82,0x82,0x75,0x72,0x7D,0x91,0xA1,0xA2, -0x95,0x84,0x79,0x78,0x77,0x70,0x6A,0x66,0x66,0x69,0x69,0x6A,0x76,0x80,0x77,0x6F, -0x73,0x71,0x71,0x77,0x7F,0x86,0x88,0x83,0x83,0x86,0x89,0x8C,0x87,0x8A,0x8B,0x88, -0x7F,0x78,0x81,0x8D,0x8C,0x84,0x83,0x87,0x89,0x88,0x8C,0x92,0x92,0x8B,0x84,0x80, -0x82,0x81,0x7D,0x76,0x77,0x78,0x70,0x70,0x7D,0x8A,0x89,0x89,0x86,0x7A,0x75,0x7A, -0x7D,0x7D,0x7F,0x87,0x8E,0x83,0x78,0x7E,0x8B,0x99,0x9F,0x99,0x92,0x8C,0x82,0x7C, -0x7F,0x82,0x80,0x80,0x85,0x8C,0x8A,0x87,0x8F,0x8A,0x7B,0x70,0x6D,0x6D,0x72,0x75, -0x76,0x7B,0x82,0x85,0x82,0x7F,0x82,0x85,0x87,0x7A,0x68,0x6C,0x7D,0x81,0x7D,0x80, -0x85,0x86,0x84,0x7B,0x78,0x7C,0x7A,0x79,0x81,0x89,0x91,0x93,0x92,0x92,0x8F,0x8D, -0x8D,0x8D,0x88,0x80,0x78,0x7B,0x88,0x85,0x7B,0x71,0x6B,0x71,0x7A,0x78,0x6A,0x62, -0x66,0x6C,0x73,0x81,0x87,0x86,0x86,0x7F,0x7A,0x7A,0x7D,0x83,0x87,0x88,0x88,0x8A, -0x93,0x9A,0x94,0x86,0x7F,0x80,0x81,0x83,0x83,0x7C,0x77,0x78,0x7B,0x80,0x8B,0x91, -0x8A,0x7F,0x6D,0x60,0x65,0x72,0x6F,0x6C,0x70,0x74,0x7C,0x7F,0x81,0x80,0x7B,0x74, -0x70,0x72,0x72,0x6E,0x74,0x79,0x79,0x84,0x94,0x98,0x95,0x95,0x95,0x93,0x90,0x8A, -0x88,0x8C,0x89,0x81,0x7D,0x79,0x79,0x85,0x8C,0x84,0x79,0x76,0x7B,0x82,0x85,0x7F, -0x76,0x73,0x71,0x72,0x7B,0x82,0x7B,0x71,0x78,0x7D,0x78,0x73,0x72,0x7B,0x7E,0x7D, -0x82,0x83,0x82,0x8A,0x8F,0x92,0x95,0x96,0x97,0x96,0x9A,0x9D,0x96,0x8A,0x7F,0x76, -0x78,0x84,0x88,0x84,0x80,0x80,0x83,0x85,0x7D,0x74,0x71,0x75,0x76,0x77,0x7F,0x83, -0x86,0x8D,0x8F,0x8C,0x89,0x84,0x7F,0x7F,0x7B,0x7B,0x83,0x88,0x87,0x88,0x8A,0x86, -0x7A,0x6C,0x70,0x81,0x91,0x8B,0x77,0x78,0x87,0x8E,0x89,0x78,0x6A,0x65,0x6A,0x73, -0x78,0x79,0x78,0x7B,0x78,0x71,0x77,0x84,0x84,0x7A,0x72,0x6E,0x70,0x78,0x79,0x79, -0x81,0x8D,0x94,0x92,0x8D,0x8C,0x8D,0x8A,0x85,0x7F,0x78,0x77,0x7C,0x7C,0x71,0x6B, -0x73,0x7F,0x87,0x85,0x81,0x84,0x88,0x7D,0x72,0x71,0x71,0x71,0x71,0x7A,0x83,0x83, -0x8A,0x90,0x91,0x8E,0x88,0x87,0x92,0x93,0x80,0x78,0x84,0x85,0x7F,0x7E,0x82,0x86, -0x8B,0x8A,0x81,0x82,0x87,0x8A,0x8C,0x89,0x85,0x83,0x82,0x82,0x7E,0x7C,0x7C,0x80, -0x76,0x70,0x7C,0x86,0x7E,0x71,0x6E,0x72,0x7A,0x7C,0x80,0x95,0x9F,0x92,0x84,0x84, -0x8B,0x8E,0x8A,0x7F,0x7B,0x7E,0x7F,0x7C,0x7D,0x81,0x86,0x87,0x80,0x7A,0x76,0x70, -0x6E,0x72,0x75,0x7B,0x80,0x82,0x7B,0x7A,0x81,0x7D,0x73,0x70,0x78,0x7A,0x73,0x74, -0x81,0x90,0x97,0x8D,0x87,0x88,0x85,0x86,0x88,0x81,0x7F,0x82,0x82,0x88,0x8C,0x86, -0x81,0x84,0x85,0x85,0x79,0x6D,0x70,0x78,0x78,0x71,0x6F,0x76,0x7B,0x7B,0x73,0x70, -0x7B,0x7A,0x79,0x81,0x84,0x84,0x8C,0x91,0x8A,0x83,0x89,0x8D,0x84,0x7F,0x85,0x8C, -0x8F,0x88,0x83,0x88,0x8D,0x86,0x83,0x8C,0x89,0x80,0x7A,0x76,0x75,0x7F,0x86,0x7A, -0x75,0x7F,0x7F,0x80,0x84,0x82,0x7A,0x77,0x74,0x73,0x75,0x74,0x73,0x75,0x7B,0x7B, -0x81,0x84,0x85,0x8A,0x89,0x84,0x7A,0x6E,0x73,0x80,0x88,0x8B,0x91,0x95,0x8B,0x88, -0x89,0x81,0x7E,0x7E,0x7D,0x7D,0x7C,0x7E,0x78,0x77,0x75,0x74,0x7A,0x77,0x74,0x78, -0x77,0x77,0x7D,0x85,0x88,0x85,0x83,0x80,0x80,0x7E,0x7C,0x86,0x8E,0x8A,0x85,0x82, -0x84,0x7A,0x71,0x70,0x72,0x7D,0x87,0x8F,0x94,0x8F,0x84,0x85,0x8D,0x91,0x90,0x91, -0x8C,0x83,0x87,0x87,0x83,0x89,0x88,0x82,0x7F,0x7A,0x7B,0x7A,0x75,0x75,0x7F,0x83, -0x7F,0x78,0x6E,0x5F,0x63,0x76,0x7B,0x7F,0x80,0x81,0x7F,0x85,0x8B,0x8D,0x92,0x8A, -0x7E,0x82,0x84,0x7F,0x84,0x8B,0x8B,0x8A,0x8F,0x8E,0x89,0x85,0x83,0x8A,0x90,0x7C, -0x69,0x76,0x84,0x7E,0x7C,0x7E,0x7C,0x81,0x80,0x7A,0x79,0x77,0x75,0x7B,0x7F,0x7C, -0x75,0x73,0x72,0x73,0x73,0x76,0x77,0x7D,0x86,0x84,0x86,0x88,0x85,0x84,0x7B,0x77, -0x7D,0x7E,0x81,0x84,0x84,0x88,0x91,0x97,0x95,0x91,0x8C,0x85,0x7E,0x7A,0x78,0x7A, -0x82,0x87,0x7F,0x79,0x7D,0x77,0x6D,0x73,0x7D,0x86,0x85,0x7E,0x7D,0x78,0x6E,0x67, -0x69,0x76,0x81,0x86,0x85,0x84,0x8D,0x90,0x84,0x7F,0x7E,0x7B,0x7C,0x7D,0x7F,0x83, -0x85,0x85,0x86,0x85,0x82,0x7C,0x75,0x71,0x70,0x70,0x7C,0x8B,0x8D,0x86,0x7B,0x79, -0x7E,0x75,0x72,0x7F,0x83,0x79,0x79,0x82,0x83,0x80,0x83,0x81,0x7F,0x7E,0x7B,0x83, -0x94,0x95,0x8A,0x8C,0x91,0x8C,0x8C,0x8E,0x8B,0x8B,0x8A,0x79,0x77,0x81,0x80,0x7F, -0x7D,0x78,0x75,0x74,0x76,0x7A,0x7E,0x7D,0x77,0x7B,0x84,0x87,0x88,0x85,0x7F,0x7A, -0x74,0x79,0x83,0x8A,0x87,0x85,0x86,0x7E,0x78,0x77,0x79,0x7F,0x89,0x8B,0x89,0x8B, -0x8D,0x8E,0x91,0x91,0x86,0x7D,0x7E,0x7F,0x82,0x88,0x8B,0x85,0x7F,0x7E,0x80,0x81, -0x77,0x71,0x6E,0x6D,0x77,0x80,0x7D,0x7B,0x81,0x82,0x83,0x86,0x84,0x7B,0x76,0x7F, -0x86,0x88,0x86,0x84,0x89,0x8B,0x7F,0x73,0x76,0x81,0x8B,0x8A,0x7F,0x79,0x7F,0x80, -0x78,0x77,0x7C,0x81,0x81,0x81,0x83,0x83,0x81,0x7F,0x7D,0x75,0x70,0x77,0x74,0x68, -0x6D,0x78,0x78,0x75,0x77,0x7D,0x84,0x81,0x76,0x76,0x7C,0x79,0x78,0x86,0x95,0x9B, -0x99,0x8F,0x82,0x7A,0x78,0x6D,0x64,0x70,0x7C,0x7C,0x7F,0x87,0x8B,0x8A,0x89,0x8E, -0x8D,0x89,0x82,0x7A,0x79,0x87,0x91,0x8B,0x86,0x86,0x86,0x85,0x81,0x75,0x79,0x8C, -0x87,0x78,0x78,0x7C,0x7B,0x77,0x73,0x78,0x7E,0x77,0x72,0x7E,0x8F,0x8E,0x89,0x8B, -0x8C,0x8A,0x85,0x85,0x85,0x86,0x8C,0x91,0x93,0x92,0x8D,0x87,0x81,0x7C,0x7F,0x78, -0x73,0x78,0x7A,0x7D,0x82,0x8B,0x8F,0x8D,0x8A,0x8B,0x8C,0x85,0x82,0x86,0x84,0x7A, -0x7D,0x83,0x86,0x7B,0x6A,0x62,0x5E,0x5E,0x60,0x68,0x74,0x78,0x79,0x7E,0x81,0x83, -0x89,0x8F,0x94,0x95,0x95,0x93,0x92,0x97,0x8B,0x7C,0x7D,0x80,0x82,0x80,0x7F,0x80, -0x85,0x84,0x7F,0x80,0x83,0x79,0x71,0x72,0x73,0x73,0x75,0x83,0x8B,0x7A,0x6E,0x6F, -0x6D,0x62,0x5F,0x6B,0x74,0x6E,0x6E,0x78,0x81,0x7F,0x73,0x76,0x83,0x87,0x87,0x88, -0x95,0x9A,0x96,0x91,0x95,0xA2,0x9A,0x87,0x7A,0x78,0x7A,0x7D,0x7E,0x83,0x8C,0x8E, -0x87,0x7A,0x76,0x6E,0x64,0x68,0x70,0x71,0x6D,0x72,0x7A,0x82,0x88,0x85,0x7D,0x79, -0x75,0x71,0x6F,0x73,0x7A,0x7F,0x8C,0x98,0x9A,0x99,0x97,0x91,0x8B,0x85,0x83,0x88, -0x91,0x8F,0x86,0x87,0x8D,0x8D,0x8C,0x8C,0x86,0x81,0x83,0x82,0x7A,0x76,0x72,0x6E, -0x6D,0x6D,0x70,0x74,0x76,0x76,0x77,0x7B,0x85,0x8B,0x8E,0x91,0x8A,0x83,0x7E,0x82, -0x94,0x9A,0x8E,0x88,0x92,0x97,0x8B,0x8A,0x97,0x9B,0x8E,0x82,0x80,0x7E,0x7A,0x7D, -0x78,0x7A,0x84,0x85,0x80,0x7E,0x7D,0x7D,0x7D,0x7E,0x7C,0x72,0x69,0x67,0x6A,0x70, -0x77,0x7D,0x7C,0x7A,0x7F,0x89,0x87,0x7A,0x77,0x7E,0x7E,0x80,0x82,0x86,0x8B,0x8D, -0x90,0x91,0x8E,0x8D,0x87,0x84,0x81,0x7D,0x75,0x6C,0x71,0x7A,0x7D,0x7C,0x77,0x71, -0x6A,0x65,0x63,0x69,0x73,0x7C,0x7E,0x76,0x71,0x78,0x79,0x79,0x81,0x86,0x84,0x83, -0x7D,0x73,0x75,0x85,0x8D,0x84,0x7C,0x7B,0x7F,0x80,0x80,0x80,0x86,0x8E,0x8D,0x8D, -0x8F,0x88,0x7E,0x7D,0x83,0x8B,0x8A,0x7F,0x79,0x78,0x76,0x75,0x79,0x7B,0x73,0x6C, -0x6E,0x7A,0x85,0x8B,0x8B,0x85,0x84,0x88,0x89,0x8A,0x8D,0x85,0x7F,0x7D,0x83,0x88, -0x83,0x7F,0x87,0x90,0x8E,0x88,0x86,0x8B,0x93,0x91,0x87,0x7F,0x81,0x88,0x8A,0x89, -0x85,0x81,0x7C,0x79,0x77,0x7B,0x82,0x88,0x8B,0x87,0x7F,0x78,0x76,0x79,0x7D,0x7D, -0x80,0x83,0x82,0x7E,0x7B,0x7C,0x83,0x83,0x81,0x81,0x80,0x80,0x84,0x81,0x77,0x79, -0x7D,0x7F,0x81,0x80,0x84,0x86,0x81,0x81,0x80,0x81,0x7A,0x69,0x68,0x7A,0x8F,0x97, -0x90,0x8A,0x87,0x86,0x81,0x7B,0x78,0x6C,0x6D,0x7C,0x80,0x79,0x7A,0x86,0x8A,0x7F, -0x76,0x7A,0x7B,0x6E,0x64,0x74,0x86,0x85,0x80,0x83,0x88,0x8A,0x86,0x7A,0x6F,0x74, -0x7E,0x85,0x8A,0x8B,0x85,0x80,0x81,0x84,0x8A,0x84,0x7F,0x81,0x80,0x76,0x73,0x7E, -0x89,0x8C,0x87,0x7F,0x82,0x88,0x84,0x7B,0x78,0x7B,0x7B,0x78,0x77,0x74,0x73,0x75, -0x74,0x72,0x75,0x79,0x7D,0x80,0x7E,0x7C,0x83,0x8E,0x93,0x96,0x92,0x92,0x94,0x8C, -0x89,0x8A,0x88,0x81,0x7C,0x80,0x8B,0x87,0x7C,0x78,0x77,0x73,0x74,0x7F,0x80,0x79, -0x76,0x74,0x77,0x80,0x84,0x84,0x83,0x7E,0x73,0x70,0x79,0x80,0x81,0x7F,0x84,0x8B, -0x82,0x76,0x7B,0x8C,0x94,0x8C,0x86,0x82,0x84,0x87,0x8B,0x93,0x91,0x8A,0x88,0x88, -0x86,0x84,0x83,0x85,0x7F,0x76,0x76,0x7D,0x84,0x89,0x84,0x85,0x88,0x83,0x83,0x88, -0x87,0x7D,0x7A,0x7C,0x7B,0x75,0x75,0x7D,0x83,0x83,0x7F,0x86,0x8C,0x84,0x79,0x7A, -0x84,0x87,0x89,0x8C,0x86,0x7A,0x72,0x73,0x79,0x82,0x83,0x7F,0x81,0x80,0x7B,0x78, -0x79,0x7A,0x74,0x6E,0x71,0x71,0x6A,0x64,0x69,0x7A,0x86,0x81,0x76,0x73,0x7A,0x7E, -0x76,0x73,0x7A,0x85,0x87,0x89,0x8D,0x87,0x7E,0x80,0x7D,0x7B,0x85,0x89,0x8A,0x88, -0x84,0x80,0x7E,0x88,0x86,0x7A,0x80,0x88,0x86,0x80,0x7E,0x84,0x84,0x7D,0x74,0x73, -0x76,0x71,0x68,0x6A,0x7B,0x87,0x89,0x83,0x7F,0x7F,0x82,0x83,0x82,0x84,0x85,0x7E, -0x77,0x7B,0x88,0x92,0xA1,0xA4,0x98,0x90,0x90,0x89,0x80,0x7C,0x7B,0x7C,0x82,0x85, -0x83,0x87,0x88,0x84,0x7E,0x7B,0x7E,0x7D,0x79,0x79,0x79,0x82,0x8F,0x90,0x8A,0x83, -0x7D,0x80,0x82,0x77,0x6D,0x6F,0x76,0x7B,0x80,0x82,0x84,0x89,0x87,0x7D,0x83,0x8C, -0x8A,0x7E,0x74,0x73,0x7D,0x87,0x86,0x80,0x83,0x87,0x89,0x87,0x87,0x85,0x7E,0x79, -0x79,0x7A,0x7E,0x82,0x7D,0x76,0x78,0x84,0x8E,0x90,0x83,0x7A,0x7C,0x7D,0x76,0x7D, -0x86,0x82,0x79,0x78,0x76,0x73,0x77,0x79,0x7D,0x80,0x82,0x86,0x90,0x95,0x94,0x89, -0x7E,0x78,0x79,0x7C,0x7B,0x80,0x83,0x87,0x87,0x84,0x83,0x81,0x77,0x77,0x83,0x84, -0x79,0x78,0x7D,0x7E,0x84,0x8D,0x89,0x82,0x81,0x7F,0x7F,0x7E,0x7E,0x7B,0x75,0x6C, -0x70,0x78,0x78,0x70,0x6B,0x74,0x7E,0x7D,0x79,0x7C,0x81,0x8D,0x92,0x8E,0x8A,0x88, -0x82,0x7A,0x76,0x7C,0x83,0x81,0x7E,0x84,0x90,0x91,0x8E,0x8B,0x81,0x76,0x6D,0x73, -0x7D,0x7C,0x7A,0x75,0x74,0x77,0x77,0x7E,0x84,0x81,0x79,0x6D,0x68,0x67,0x6A,0x7F, -0x8B,0x84,0x80,0x84,0x85,0x8A,0x92,0x90,0x88,0x89,0x85,0x7B,0x77,0x7D,0x85,0x88, -0x8B,0x8B,0x85,0x85,0x7B,0x7E,0x98,0xA0,0x98,0x99,0x9A,0x8D,0x80,0x83,0x86,0x7F, -0x77,0x71,0x75,0x79,0x74,0x6C,0x65,0x6B,0x77,0x7A,0x7E,0x7E,0x7B,0x7B,0x7D,0x81, -0x84,0x89,0x8A,0x85,0x8A,0x90,0x86,0x82,0x89,0x83,0x7C,0x84,0x8B,0x89,0x8E,0x91, -0x8F,0x8E,0x8E,0x90,0x91,0x86,0x76,0x72,0x76,0x78,0x77,0x7F,0x87,0x89,0x80,0x75, -0x75,0x7A,0x7B,0x74,0x74,0x76,0x76,0x72,0x71,0x76,0x7B,0x7C,0x7B,0x7B,0x7D,0x78, -0x73,0x79,0x84,0x8A,0x87,0x85,0x82,0x80,0x86,0x8C,0x89,0x85,0x7F,0x7D,0x84,0x89, -0x86,0x85,0x83,0x7C,0x7B,0x80,0x7A,0x6D,0x67,0x6C,0x77,0x7D,0x7F,0x83,0x80,0x79, -0x7A,0x7A,0x7C,0x79,0x76,0x77,0x78,0x81,0x87,0x87,0x8A,0x92,0x94,0x8D,0x89,0x84, -0x7A,0x79,0x7C,0x7E,0x83,0x85,0x8A,0x91,0x8B,0x82,0x7F,0x82,0x82,0x7D,0x79,0x73, -0x72,0x77,0x7A,0x79,0x79,0x7E,0x80,0x7E,0x7A,0x71,0x76,0x83,0x85,0x80,0x7D,0x7F, -0x84,0x82,0x81,0x8C,0x98,0x98,0x89,0x7F,0x7D,0x85,0x8D,0x89,0x84,0x85,0x88,0x85, -0x7E,0x78,0x7C,0x83,0x7E,0x7A,0x88,0x93,0x8C,0x85,0x84,0x7E,0x81,0x82,0x7B,0x79, -0x75,0x72,0x78,0x7D,0x79,0x79,0x84,0x87,0x7C,0x79,0x84,0x85,0x85,0x82,0x7D,0x82, -0x85,0x86,0x8A,0x8D,0x8C,0x87,0x84,0x82,0x7A,0x7A,0x7C,0x80,0x83,0x88,0x8D,0x97, -0x97,0x8A,0x84,0x89,0x84,0x7A,0x75,0x73,0x77,0x75,0x6C,0x6D,0x78,0x7B,0x73,0x71, -0x7B,0x81,0x7D,0x75,0x6F,0x73,0x79,0x74,0x74,0x7C,0x7D,0x7E,0x8A,0x95,0x94,0x92, -0x8D,0x87,0x84,0x7C,0x78,0x7F,0x83,0x80,0x7A,0x7E,0x85,0x82,0x7C,0x7B,0x80,0x81, -0x7C,0x75,0x75,0x79,0x72,0x68,0x68,0x6C,0x6F,0x72,0x76,0x7F,0x84,0x85,0x83,0x7B, -0x79,0x78,0x78,0x7D,0x7F,0x7E,0x81,0x89,0x94,0x92,0x84,0x7F,0x80,0x7E,0x7A,0x7C, -0x81,0x84,0x81,0x79,0x79,0x88,0x93,0x90,0x8A,0x8F,0x95,0x8F,0x86,0x84,0x88,0x89, -0x85,0x80,0x7A,0x7A,0x7C,0x7D,0x7C,0x75,0x7A,0x85,0x85,0x7D,0x75,0x71,0x79,0x82, -0x82,0x85,0x8C,0x91,0x8C,0x88,0x89,0x8D,0x92,0x8F,0x89,0x84,0x7C,0x7B,0x86,0x8D, -0x8A,0x8A,0x8C,0x88,0x83,0x7E,0x7E,0x83,0x86,0x85,0x88,0x89,0x81,0x7B,0x7D,0x7D, -0x78,0x75,0x73,0x73,0x74,0x6E,0x6E,0x7C,0x86,0x86,0x82,0x7E,0x7F,0x80,0x7C,0x7D, -0x89,0x8C,0x88,0x89,0x8D,0x8A,0x86,0x89,0x8B,0x83,0x78,0x7C,0x81,0x7C,0x76,0x76, -0x7F,0x89,0x8A,0x88,0x85,0x83,0x7A,0x72,0x70,0x6F,0x6E,0x70,0x76,0x75,0x73,0x70, -0x6F,0x77,0x81,0x7D,0x78,0x7C,0x7F,0x7C,0x78,0x7A,0x82,0x87,0x8A,0x89,0x86,0x7D, -0x76,0x7D,0x86,0x85,0x7F,0x7B,0x76,0x76,0x75,0x75,0x7B,0x86,0x89,0x86,0x83,0x80, -0x7D,0x7B,0x7A,0x74,0x6D,0x6E,0x79,0x7E,0x7D,0x7C,0x82,0x86,0x8A,0x8A,0x88,0x87, -0x83,0x7D,0x7E,0x81,0x7F,0x77,0x70,0x77,0x82,0x88,0x85,0x81,0x84,0x8B,0x8D,0x87, -0x86,0x89,0x87,0x86,0x8A,0x8E,0x91,0x8F,0x8D,0x89,0x89,0x8B,0x86,0x81,0x75,0x68, -0x6A,0x72,0x77,0x7D,0x83,0x83,0x7B,0x76,0x79,0x82,0x89,0x88,0x89,0x8E,0x90,0x8B, -0x86,0x85,0x84,0x80,0x83,0x88,0x85,0x7E,0x7C,0x84,0x8B,0x8D,0x8B,0x8C,0x8E,0x8A, -0x80,0x7F,0x82,0x81,0x7E,0x7C,0x82,0x89,0x89,0x84,0x85,0x88,0x85,0x80,0x7C,0x74, -0x6D,0x6C,0x73,0x7D,0x81,0x7C,0x7A,0x7E,0x7D,0x76,0x77,0x79,0x77,0x78,0x79,0x81, -0x8A,0x8E,0x8F,0x8C,0x8C,0x8B,0x82,0x75,0x6E,0x6D,0x75,0x7B,0x7D,0x7E,0x80,0x83, -0x84,0x81,0x7C,0x7C,0x81,0x88,0x89,0x80,0x73,0x70,0x6E,0x6C,0x72,0x78,0x77,0x73, -0x74,0x74,0x71,0x6F,0x70,0x78,0x7F,0x85,0x85,0x82,0x80,0x7C,0x7E,0x86,0x88,0x86, -0x85,0x85,0x84,0x7F,0x7E,0x80,0x7E,0x7E,0x80,0x7C,0x78,0x7B,0x80,0x85,0x92,0x9C, -0x97,0x91,0x92,0x87,0x79,0x74,0x74,0x76,0x73,0x71,0x75,0x80,0x8A,0x8B,0x86,0x85, -0x84,0x7A,0x71,0x74,0x7A,0x7B,0x7D,0x83,0x8F,0x9B,0x9D,0x96,0x8D,0x83,0x7F,0x7D, -0x7D,0x84,0x88,0x87,0x86,0x86,0x8F,0x9D,0xA0,0x99,0x8D,0x7E,0x74,0x76,0x78,0x78, -0x7D,0x7F,0x7F,0x81,0x7F,0x76,0x76,0x7F,0x7D,0x78,0x7D,0x81,0x81,0x81,0x86,0x8B, -0x8A,0x86,0x82,0x79,0x72,0x73,0x76,0x7A,0x80,0x8A,0x91,0x92,0x8E,0x88,0x84,0x83, -0x82,0x81,0x85,0x87,0x81,0x77,0x76,0x7B,0x7F,0x7C,0x75,0x6E,0x68,0x6A,0x6C,0x6C, -0x6B,0x6C,0x72,0x78,0x7E,0x80,0x7F,0x83,0x83,0x7B,0x7A,0x7F,0x86,0x87,0x88,0x8E, -0x94,0x97,0x95,0x92,0x92,0x88,0x79,0x6F,0x6F,0x74,0x6E,0x71,0x7E,0x7D,0x7A,0x7E, -0x81,0x80,0x77,0x70,0x6B,0x6A,0x6E,0x6E,0x76,0x82,0x86,0x8A,0x8E,0x88,0x7F,0x7E, -0x83,0x81,0x7B,0x79,0x7F,0x82,0x7F,0x7A,0x77,0x7D,0x88,0x8A,0x8A,0x8D,0x8E,0x8B, -0x8B,0x8E,0x91,0x8A,0x7D,0x79,0x76,0x75,0x74,0x73,0x7D,0x86,0x86,0x83,0x7F,0x7B, -0x79,0x77,0x75,0x78,0x81,0x86,0x88,0x8D,0x8C,0x85,0x84,0x85,0x85,0x80,0x79,0x7A, -0x7B,0x7D,0x80,0x84,0x8B,0x8C,0x85,0x83,0x8D,0x94,0x90,0x8E,0x8C,0x85,0x82,0x82, -0x82,0x84,0x82,0x80,0x81,0x81,0x78,0x74,0x78,0x7F,0x84,0x85,0x82,0x80,0x7F,0x7F, -0x80,0x7E,0x7B,0x7B,0x7E,0x7E,0x7F,0x82,0x85,0x89,0x8B,0x88,0x85,0x86,0x89,0x8B, -0x85,0x80,0x7F,0x86,0x8F,0x95,0x96,0x93,0x87,0x80,0x7F,0x7D,0x76,0x72,0x6B,0x67, -0x69,0x6B,0x6E,0x72,0x75,0x76,0x7C,0x83,0x80,0x76,0x74,0x74,0x7A,0x82,0x81,0x7F, -0x82,0x82,0x7C,0x81,0x8F,0x8E,0x82,0x7B,0x75,0x71,0x74,0x7D,0x84,0x87,0x84,0x81, -0x81,0x7D,0x71,0x6F,0x74,0x77,0x77,0x73,0x75,0x82,0x83,0x7A,0x74,0x79,0x7E,0x7B, -0x7C,0x7E,0x84,0x8B,0x87,0x84,0x86,0x8B,0x87,0x7E,0x80,0x80,0x7B,0x7B,0x7B,0x80, -0x8A,0x8C,0x89,0x87,0x88,0x86,0x7D,0x7B,0x7F,0x84,0x83,0x85,0x8B,0x8B,0x8E,0x91, -0x88,0x77,0x6F,0x74,0x76,0x72,0x76,0x80,0x89,0x8F,0x89,0x7F,0x7C,0x7C,0x7E,0x7D, -0x7E,0x7E,0x79,0x77,0x78,0x7E,0x88,0x8C,0x8C,0x8C,0x8E,0x8D,0x83,0x7C,0x81,0x87, -0x89,0x82,0x80,0x7F,0x81,0x8C,0x91,0x8E,0x8A,0x8E,0x88,0x7C,0x74,0x73,0x75,0x76, -0x77,0x7C,0x80,0x7F,0x7D,0x80,0x82,0x7D,0x7A,0x83,0x85,0x7D,0x80,0x84,0x84,0x81, -0x83,0x85,0x88,0x83,0x78,0x78,0x7F,0x82,0x83,0x80,0x7D,0x83,0x83,0x7C,0x76,0x79, -0x81,0x8A,0x87,0x7C,0x7C,0x8A,0x8D,0x8A,0x86,0x7D,0x78,0x7A,0x74,0x6B,0x6A,0x70, -0x78,0x7A,0x7C,0x7C,0x88,0x8E,0x87,0x85,0x89,0x85,0x85,0x86,0x82,0x7D,0x80,0x7F, -0x7D,0x83,0x82,0x7B,0x7F,0x7C,0x74,0x75,0x76,0x75,0x70,0x74,0x79,0x79,0x7A,0x7B, -0x83,0x8F,0x8D,0x87,0x89,0x88,0x83,0x7C,0x77,0x76,0x7D,0x81,0x80,0x7C,0x7F,0x7F, -0x7E,0x7E,0x81,0x7F,0x7B,0x7C,0x7A,0x75,0x76,0x7D,0x83,0x85,0x82,0x87,0x8A,0x8A, -0x85,0x7F,0x7A,0x82,0x84,0x7F,0x7C,0x7E,0x85,0x82,0x82,0x7C,0x7B,0x7A,0x75,0x71, -0x7A,0x81,0x8B,0x8F,0x8D,0x83,0x7B,0x7D,0x7F,0x7D,0x81,0x88,0x8B,0x8A,0x88,0x8B, -0x88,0x89,0x80,0x83,0x8F,0x95,0x8D,0x85,0x80,0x82,0x87,0x8D,0x8F,0x87,0x7F,0x73, -0x72,0x73,0x76,0x81,0x8E,0x8B,0x82,0x75,0x75,0x78,0x7C,0x7F,0x7E,0x86,0x8B,0x85, -0x83,0x82,0x80,0x83,0x84,0x85,0x7F,0x82,0x7E,0x7D,0x84,0x84,0x80,0x87,0x8A,0x87, -0x84,0x8A,0x8E,0x82,0x7A,0x76,0x75,0x70,0x65,0x67,0x78,0x82,0x8A,0x88,0x85,0x80, -0x81,0x80,0x7A,0x7B,0x7D,0x7A,0x7C,0x78,0x72,0x78,0x7C,0x7C,0x78,0x7C,0x7A,0x75, -0x76,0x74,0x74,0x81,0x82,0x87,0x92,0x97,0x97,0x8D,0x82,0x78,0x7C,0x87,0x8B,0x88, -0x82,0x78,0x77,0x78,0x7C,0x7D,0x76,0x72,0x70,0x73,0x77,0x70,0x70,0x75,0x7A,0x85, -0x8A,0x8D,0x87,0x81,0x7C,0x78,0x73,0x74,0x75,0x78,0x79,0x7B,0x80,0x87,0x8F,0x8E, -0x88,0x8C,0x8E,0x85,0x80,0x7F,0x84,0x82,0x81,0x83,0x84,0x85,0x80,0x7A,0x7D,0x80, -0x7C,0x76,0x79,0x7E,0x7D,0x7D,0x7F,0x80,0x83,0x87,0x83,0x83,0x85,0x80,0x7B,0x7D, -0x84,0x8A,0x89,0x83,0x81,0x7F,0x7F,0x84,0x89,0x89,0x89,0x89,0x87,0x82,0x80,0x7D, -0x81,0x85,0x80,0x7B,0x7E,0x7E,0x81,0x87,0x86,0x83,0x81,0x81,0x82,0x80,0x7D,0x7E, -0x82,0x87,0x8A,0x89,0x87,0x85,0x81,0x84,0x89,0x8B,0x8B,0x8A,0x85,0x80,0x7E,0x7F, -0x81,0x7F,0x7B,0x76,0x7B,0x85,0x88,0x84,0x85,0x88,0x8D,0x8A,0x86,0x89,0x8A,0x81, -0x76,0x72,0x73,0x72,0x6B,0x6D,0x7A,0x82,0x81,0x7D,0x7C,0x7F,0x7D,0x74,0x70,0x71, -0x74,0x7D,0x88,0x8C,0x8A,0x86,0x87,0x8B,0x89,0x81,0x78,0x75,0x71,0x69,0x69,0x77, -0x82,0x85,0x87,0x88,0x86,0x86,0x7F,0x74,0x73,0x7A,0x7A,0x71,0x6F,0x70,0x72,0x7C, -0x83,0x81,0x7B,0x76,0x70,0x6D,0x71,0x73,0x78,0x80,0x84,0x87,0x8B,0x8F,0x8D,0x84, -0x7E,0x7F,0x82,0x80,0x7A,0x77,0x7E,0x87,0x89,0x88,0x87,0x81,0x79,0x79,0x7F,0x81, -0x7F,0x87,0x8F,0x90,0x8D,0x88,0x86,0x85,0x85,0x8A,0x8E,0x85,0x7C,0x79,0x7E,0x85, -0x84,0x7E,0x7F,0x85,0x85,0x82,0x7F,0x80,0x85,0x8B,0x8C,0x8D,0x8C,0x85,0x7F,0x7F, -0x80,0x7F,0x7B,0x7B,0x7E,0x7F,0x7E,0x7F,0x83,0x83,0x84,0x86,0x87,0x85,0x81,0x7E, -0x7B,0x7A,0x7D,0x84,0x8D,0x8F,0x8D,0x8F,0x90,0x8C,0x84,0x7E,0x7F,0x7F,0x7B,0x7A, -0x7F,0x81,0x81,0x82,0x84,0x81,0x78,0x71,0x70,0x6F,0x6A,0x6B,0x73,0x79,0x7B,0x7B, -0x7A,0x7B,0x7F,0x86,0x88,0x88,0x8D,0x8C,0x86,0x82,0x84,0x88,0x8C,0x8E,0x88,0x80, -0x77,0x76,0x7C,0x7C,0x79,0x78,0x7C,0x80,0x7C,0x7C,0x82,0x83,0x80,0x79,0x78,0x79, -0x77,0x79,0x7D,0x82,0x84,0x7F,0x79,0x75,0x70,0x6A,0x65,0x67,0x6E,0x73,0x7B,0x80, -0x80,0x7F,0x7E,0x82,0x87,0x8C,0x91,0x91,0x8C,0x84,0x85,0x88,0x87,0x86,0x86,0x86, -0x85,0x7E,0x7E,0x80,0x83,0x84,0x7E,0x77,0x73,0x70,0x70,0x73,0x75,0x79,0x7E,0x83, -0x89,0x89,0x88,0x82,0x76,0x70,0x74,0x79,0x7D,0x83,0x89,0x8D,0x93,0x94,0x8F,0x90, -0x8D,0x87,0x81,0x80,0x83,0x87,0x8D,0x8F,0x8A,0x88,0x87,0x89,0x87,0x81,0x7B,0x75, -0x71,0x6E,0x6F,0x76,0x79,0x7E,0x87,0x8A,0x87,0x86,0x86,0x83,0x7C,0x7A,0x7C,0x7F, -0x81,0x83,0x85,0x87,0x8B,0x91,0x94,0x97,0x96,0x91,0x88,0x7F,0x7E,0x87,0x91,0x92, -0x8D,0x8B,0x8A,0x83,0x7F,0x79,0x74,0x6F,0x67,0x63,0x6B,0x76,0x7C,0x81,0x84,0x81, -0x81,0x86,0x85,0x7E,0x75,0x71,0x73,0x77,0x78,0x7B,0x81,0x85,0x84,0x82,0x82,0x85, -0x84,0x7F,0x7D,0x7E,0x7F,0x7C,0x7D,0x86,0x8B,0x89,0x86,0x82,0x80,0x7C,0x7A,0x7B, -0x77,0x6E,0x68,0x6A,0x6F,0x6F,0x6D,0x6C,0x6E,0x71,0x73,0x78,0x7B,0x7E,0x7F,0x7D, -0x81,0x80,0x7A,0x77,0x78,0x78,0x76,0x7A,0x82,0x8C,0x90,0x89,0x80,0x81,0x80,0x83, -0x86,0x85,0x8C,0x92,0x8F,0x8A,0x8B,0x8E,0x8A,0x86,0x83,0x7D,0x79,0x76,0x71,0x71, -0x74,0x7A,0x81,0x80,0x7D,0x78,0x75,0x7A,0x7E,0x84,0x84,0x82,0x82,0x85,0x86,0x84, -0x83,0x86,0x88,0x90,0x90,0x8E,0x91,0x92,0x8D,0x8C,0x91,0x95,0x8E,0x88,0x83,0x84, -0x8A,0x88,0x7D,0x75,0x76,0x7C,0x7B,0x7A,0x7E,0x82,0x8C,0x8E,0x85,0x7B,0x76,0x7E, -0x83,0x7C,0x7A,0x7F,0x85,0x86,0x7E,0x7C,0x80,0x83,0x7F,0x7F,0x80,0x7C,0x77,0x7A, -0x7B,0x81,0x87,0x8B,0x89,0x82,0x81,0x82,0x85,0x85,0x7F,0x7D,0x81,0x89,0x89,0x7A, -0x73,0x76,0x76,0x75,0x73,0x77,0x81,0x80,0x7B,0x76,0x77,0x7C,0x80,0x84,0x81,0x7D, -0x81,0x84,0x87,0x86,0x83,0x83,0x7A,0x74,0x75,0x7A,0x7B,0x76,0x7A,0x82,0x86,0x80, -0x77,0x78,0x7E,0x7F,0x7A,0x71,0x73,0x7D,0x85,0x87,0x89,0x8F,0x90,0x8A,0x82,0x7E, -0x79,0x75,0x74,0x78,0x78,0x78,0x7C,0x82,0x83,0x7D,0x7B,0x81,0x85,0x7F,0x78,0x75, -0x77,0x7B,0x7D,0x7C,0x83,0x8D,0x8C,0x84,0x7D,0x7E,0x81,0x83,0x84,0x80,0x7C,0x7C, -0x7C,0x80,0x84,0x87,0x8A,0x8B,0x81,0x79,0x7E,0x85,0x88,0x84,0x7A,0x7B,0x87,0x8B, -0x85,0x80,0x81,0x82,0x82,0x7F,0x7E,0x7F,0x80,0x7E,0x7E,0x7F,0x7F,0x7E,0x7D,0x79, -0x73,0x73,0x79,0x7B,0x7F,0x86,0x8E,0x93,0x94,0x92,0x8F,0x8A,0x80,0x78,0x78,0x81, -0x89,0x8F,0x92,0x94,0x95,0x92,0x8E,0x89,0x84,0x7B,0x77,0x7A,0x7B,0x79,0x7B,0x87, -0x8E,0x85,0x7A,0x7A,0x81,0x82,0x78,0x6C,0x6A,0x73,0x79,0x7C,0x7A,0x7B,0x81,0x86, -0x88,0x85,0x81,0x81,0x89,0x88,0x82,0x82,0x83,0x82,0x7B,0x75,0x79,0x85,0x8D,0x84, -0x7E,0x85,0x87,0x81,0x7D,0x78,0x73,0x73,0x71,0x72,0x77,0x78,0x76,0x77,0x78,0x74, -0x7A,0x83,0x82,0x7A,0x77,0x78,0x79,0x7B,0x7C,0x7D,0x87,0x89,0x84,0x83,0x83,0x81, -0x7D,0x7B,0x7A,0x80,0x82,0x7D,0x78,0x7A,0x79,0x80,0x8C,0x90,0x8B,0x83,0x7F,0x7D, -0x7C,0x78,0x74,0x77,0x7B,0x77,0x7D,0x8C,0x92,0x90,0x88,0x7D,0x7A,0x7B,0x75,0x70, -0x78,0x7F,0x81,0x88,0x87,0x82,0x88,0x8C,0x86,0x88,0x87,0x7C,0x76,0x80,0x86,0x8E, -0x92,0x87,0x80,0x7F,0x79,0x77,0x85,0x87,0x7B,0x7F,0x86,0x86,0x89,0x8B,0x8C,0x8B, -0x83,0x7C,0x81,0x89,0x84,0x81,0x82,0x7E,0x7B,0x84,0x82,0x7B,0x7D,0x79,0x74,0x74, -0x7A,0x7C,0x80,0x84,0x84,0x8B,0x8A,0x86,0x84,0x83,0x80,0x82,0x8B,0x8E,0x83,0x83, -0x83,0x7D,0x7E,0x7F,0x77,0x7C,0x7A,0x79,0x80,0x80,0x7E,0x7D,0x81,0x7D,0x79,0x84, -0x8A,0x86,0x88,0x89,0x8B,0x82,0x79,0x70,0x74,0x79,0x6F,0x70,0x78,0x75,0x7E,0x85, -0x84,0x85,0x7E,0x7C,0x79,0x76,0x6B,0x6B,0x7C,0x87,0x84,0x89,0x89,0x8C,0x93,0x90, -0x8B,0x84,0x8E,0x87,0x7E,0x82,0x84,0x84,0x81,0x78,0x78,0x79,0x7B,0x7C,0x80,0x7C, -0x73,0x7B,0x7F,0x72,0x6A,0x6C,0x6E,0x73,0x74,0x7D,0x80,0x86,0x88,0x88,0x8C,0x8A, -0x85,0x88,0x7B,0x72,0x7B,0x82,0x85,0x82,0x82,0x81,0x82,0x87,0x89,0x81,0x80,0x84, -0x87,0x84,0x79,0x77,0x84,0x7C,0x7B,0x79,0x7B,0x79,0x73,0x73,0x74,0x7A,0x7A,0x71, -0x78,0x7F,0x7B,0x84,0x84,0x83,0x86,0x8D,0x8E,0x87,0x88,0x86,0x80,0x8D,0x86,0x7F, -0x85,0x86,0x8A,0x86,0x84,0x85,0x8B,0x8D,0x7B,0x76,0x82,0x82,0x84,0x88,0x8A,0x90, -0x90,0x8A,0x7F,0x7C,0x7D,0x72,0x75,0x7B,0x6C,0x72,0x7B,0x7F,0x80,0x84,0x87,0x8A, -0x87,0x7D,0x73,0x7C,0x83,0x7E,0x82,0x8A,0x96,0x9D,0x96,0x88,0x82,0x83,0x81,0x79, -0x7F,0x7F,0x7D,0x80,0x80,0x87,0x8D,0x89,0x88,0x80,0x77,0x72,0x75,0x79,0x76,0x7D, -0x80,0x79,0x7C,0x7D,0x7A,0x7C,0x7A,0x75,0x76,0x7A,0x7C,0x7C,0x82,0x7F,0x7A,0x7E, -0x7F,0x82,0x86,0x82,0x80,0x80,0x84,0x85,0x86,0x83,0x7E,0x83,0x88,0x82,0x81,0x83, -0x7F,0x7D,0x7D,0x80,0x80,0x7D,0x76,0x74,0x7B,0x7C,0x7A,0x7C,0x78,0x78,0x7A,0x7A, -0x78,0x7B,0x83,0x82,0x7B,0x7E,0x82,0x84,0x86,0x89,0x8D,0x8C,0x84,0x7E,0x7B,0x77, -0x72,0x79,0x82,0x81,0x7E,0x7B,0x79,0x76,0x77,0x7B,0x83,0x8C,0x8E,0x8E,0x8D,0x86, -0x7D,0x81,0x88,0x89,0x83,0x7D,0x7B,0x80,0x84,0x7E,0x77,0x7A,0x80,0x81,0x76,0x6B, -0x6C,0x75,0x7F,0x89,0x8B,0x8B,0x8A,0x88,0x87,0x87,0x87,0x81,0x7E,0x7E,0x7E,0x7D, -0x81,0x81,0x7B,0x77,0x7B,0x81,0x88,0x8E,0x8E,0x8B,0x8C,0x8D,0x89,0x85,0x84,0x7E, -0x7A,0x7A,0x7E,0x80,0x7E,0x7F,0x81,0x80,0x7F,0x81,0x81,0x7E,0x7C,0x79,0x7B,0x80, -0x7F,0x7C,0x80,0x8E,0x94,0x90,0x8B,0x8B,0x8A,0x81,0x7B,0x80,0x84,0x85,0x84,0x7F, -0x7C,0x82,0x86,0x8B,0x8E,0x88,0x7F,0x7F,0x80,0x7D,0x7A,0x75,0x72,0x73,0x74,0x76, -0x7E,0x85,0x83,0x7D,0x7A,0x79,0x75,0x73,0x76,0x82,0x87,0x7F,0x7B,0x78,0x78,0x7B, -0x80,0x87,0x8A,0x82,0x79,0x7B,0x7D,0x79,0x79,0x81,0x83,0x83,0x85,0x80,0x7E,0x80, -0x80,0x7D,0x82,0x87,0x83,0x7D,0x78,0x75,0x75,0x74,0x77,0x7D,0x7D,0x79,0x7A,0x7F, -0x82,0x7E,0x78,0x72,0x6A,0x6A,0x77,0x7F,0x7D,0x7C,0x7F,0x82,0x85,0x87,0x86,0x85, -0x85,0x81,0x7C,0x7A,0x80,0x8B,0x8F,0x93,0x94,0x90,0x8C,0x8B,0x8C,0x88,0x7F,0x7A, -0x7D,0x85,0x8A,0x86,0x84,0x84,0x81,0x7D,0x76,0x74,0x74,0x75,0x74,0x72,0x7A,0x7F, -0x80,0x86,0x8F,0x8E,0x8A,0x88,0x85,0x88,0x8B,0x8C,0x89,0x8A,0x89,0x88,0x8B,0x87, -0x7E,0x7D,0x7E,0x7B,0x7F,0x86,0x88,0x84,0x83,0x81,0x81,0x86,0x87,0x83,0x81,0x7E, -0x7E,0x7C,0x78,0x74,0x79,0x7A,0x76,0x7D,0x83,0x80,0x7D,0x7A,0x75,0x73,0x71,0x77, -0x7E,0x88,0x94,0x99,0x98,0x90,0x8B,0x8A,0x85,0x80,0x7E,0x7C,0x7B,0x7C,0x84,0x87, -0x81,0x80,0x86,0x8B,0x83,0x72,0x6B,0x6A,0x6C,0x6B,0x68,0x6F,0x78,0x7F,0x7F,0x7C, -0x7E,0x7D,0x78,0x7A,0x79,0x7A,0x7B,0x7F,0x82,0x83,0x88,0x8C,0x8B,0x8F,0x91,0x8D, -0x87,0x81,0x7A,0x72,0x70,0x74,0x77,0x7A,0x7C,0x7E,0x84,0x83,0x84,0x84,0x84,0x87, -0x86,0x7F,0x76,0x73,0x75,0x76,0x74,0x6D,0x6E,0x79,0x7A,0x7B,0x80,0x7E,0x7A,0x7C, -0x84,0x88,0x85,0x87,0x87,0x84,0x82,0x82,0x88,0x8C,0x8E,0x90,0x90,0x8D,0x85,0x7B, -0x78,0x73,0x72,0x77,0x79,0x7A,0x82,0x8D,0x8F,0x8A,0x87,0x86,0x86,0x81,0x79,0x79, -0x7E,0x80,0x7D,0x78,0x78,0x7E,0x8A,0x93,0x8B,0x83,0x83,0x83,0x7F,0x79,0x7C,0x83, -0x88,0x8C,0x89,0x87,0x8C,0x8E,0x8C,0x84,0x81,0x86,0x88,0x85,0x7C,0x7A,0x7E,0x79, -0x76,0x7C,0x84,0x84,0x7C,0x7F,0x88,0x88,0x81,0x7B,0x7C,0x82,0x83,0x83,0x85,0x86, -0x84,0x81,0x84,0x85,0x82,0x7E,0x78,0x7A,0x7F,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x83, -0x86,0x85,0x80,0x77,0x79,0x7E,0x81,0x84,0x87,0x86,0x81,0x7B,0x7B,0x7C,0x79,0x77, -0x78,0x78,0x77,0x77,0x78,0x77,0x78,0x77,0x78,0x7C,0x7A,0x7B,0x80,0x82,0x7E,0x79, -0x77,0x77,0x77,0x77,0x73,0x75,0x79,0x7D,0x7A,0x7A,0x81,0x89,0x89,0x84,0x7D,0x78, -0x7C,0x84,0x85,0x7F,0x78,0x7A,0x82,0x87,0x87,0x87,0x8C,0x8C,0x85,0x82,0x83,0x87, -0x8B,0x87,0x7E,0x79,0x7B,0x7F,0x7E,0x7E,0x7E,0x81,0x84,0x83,0x7E,0x76,0x72,0x6F, -0x70,0x74,0x77,0x7E,0x8A,0x8F,0x90,0x95,0x9B,0x97,0x8C,0x83,0x7F,0x7E,0x7E,0x7F, -0x80,0x86,0x90,0x90,0x8C,0x8B,0x89,0x85,0x81,0x7B,0x77,0x7A,0x82,0x88,0x89,0x8B, -0x8C,0x8B,0x87,0x7B,0x73,0x72,0x73,0x72,0x6F,0x74,0x7C,0x82,0x84,0x85,0x87,0x87, -0x83,0x7F,0x7E,0x83,0x89,0x8B,0x88,0x88,0x8A,0x88,0x83,0x85,0x84,0x81,0x7E,0x7C, -0x77,0x77,0x79,0x79,0x7A,0x7B,0x7C,0x7E,0x7B,0x77,0x75,0x75,0x73,0x72,0x74,0x75, -0x7B,0x82,0x85,0x8A,0x8B,0x84,0x81,0x83,0x82,0x7A,0x74,0x75,0x7B,0x82,0x88,0x87, -0x8A,0x91,0x90,0x8C,0x86,0x7E,0x75,0x70,0x70,0x74,0x7E,0x85,0x87,0x8B,0x89,0x82, -0x7D,0x7B,0x7D,0x7A,0x75,0x6B,0x6A,0x78,0x7F,0x82,0x86,0x84,0x7F,0x75,0x71,0x75, -0x7A,0x7E,0x7D,0x82,0x89,0x88,0x89,0x84,0x7D,0x7B,0x7E,0x85,0x85,0x83,0x88,0x8D, -0x89,0x85,0x87,0x89,0x84,0x7F,0x7E,0x7F,0x80,0x78,0x75,0x7A,0x83,0x88,0x82,0x7C, -0x7B,0x7E,0x7E,0x75,0x76,0x7C,0x7D,0x7E,0x7C,0x77,0x79,0x7F,0x84,0x85,0x83,0x81, -0x84,0x87,0x7E,0x78,0x81,0x8A,0x8D,0x8F,0x8D,0x8C,0x8A,0x89,0x8B,0x8A,0x85,0x81, -0x81,0x81,0x7E,0x82,0x8D,0x8F,0x86,0x7D,0x7D,0x7B,0x7A,0x7D,0x7C,0x78,0x7C,0x80, -0x81,0x81,0x88,0x8F,0x88,0x7F,0x78,0x79,0x7F,0x7C,0x7D,0x83,0x82,0x87,0x8F,0x91, -0x89,0x80,0x80,0x7A,0x76,0x79,0x79,0x7E,0x82,0x83,0x8A,0x87,0x80,0x76,0x75,0x78, -0x7B,0x7B,0x78,0x71,0x74,0x79,0x7D,0x83,0x86,0x87,0x85,0x81,0x7A,0x74,0x76,0x7B, -0x82,0x89,0x88,0x88,0x87,0x86,0x7D,0x75,0x79,0x7A,0x76,0x77,0x7D,0x7B,0x77,0x73, -0x7B,0x7E,0x82,0x82,0x81,0x82,0x7A,0x78,0x7E,0x7A,0x75,0x76,0x79,0x85,0x87,0x87, -0x84,0x88,0x80,0x72,0x71,0x71,0x71,0x78,0x7C,0x7E,0x8E,0x98,0x94,0x8C,0x8D,0x88, -0x84,0x82,0x7C,0x74,0x76,0x75,0x7F,0x85,0x84,0x8B,0x96,0x97,0x89,0x85,0x8B,0x8C, -0x83,0x7D,0x7C,0x81,0x81,0x7C,0x79,0x7C,0x7D,0x7E,0x78,0x75,0x77,0x7E,0x82,0x7E, -0x7F,0x7F,0x86,0x86,0x89,0x87,0x86,0x86,0x90,0x8F,0x86,0x7F,0x7F,0x7E,0x79,0x76, -0x7B,0x7C,0x78,0x78,0x7A,0x86,0x8D,0x8F,0x8B,0x8E,0x8A,0x7E,0x7A,0x83,0x86,0x82, -0x83,0x87,0x85,0x85,0x82,0x77,0x72,0x70,0x6F,0x77,0x80,0x7C,0x75,0x73,0x7C,0x80, -0x85,0x85,0x85,0x84,0x7F,0x7A,0x77,0x7D,0x7D,0x7E,0x7E,0x7C,0x7F,0x85,0x83,0x80, -0x7E,0x82,0x81,0x7E,0x7E,0x77,0x7E,0x86,0x87,0x8B,0x8B,0x88,0x84,0x7E,0x7D,0x7D, -0x81,0x7F,0x78,0x7D,0x81,0x80,0x80,0x7C,0x7C,0x7C,0x7C,0x7D,0x7E,0x80,0x7E,0x7F, -0x81,0x7F,0x82,0x81,0x7C,0x7A,0x77,0x75,0x73,0x77,0x7E,0x82,0x8B,0x90,0x8E,0x8C, -0x83,0x7D,0x7E,0x7E,0x81,0x82,0x85,0x89,0x88,0x81,0x7D,0x84,0x86,0x7C,0x73,0x70, -0x73,0x77,0x7A,0x77,0x75,0x7C,0x80,0x80,0x83,0x80,0x7C,0x82,0x84,0x80,0x7D,0x7D, -0x7E,0x7F,0x82,0x82,0x82,0x84,0x81,0x7B,0x7A,0x7D,0x81,0x82,0x84,0x8A,0x89,0x83, -0x7F,0x82,0x84,0x84,0x80,0x7B,0x7F,0x87,0x86,0x81,0x7E,0x7C,0x78,0x79,0x7E,0x80, -0x81,0x80,0x7F,0x82,0x84,0x89,0x8F,0x91,0x95,0x95,0x8E,0x84,0x7D,0x79,0x76,0x77, -0x7E,0x81,0x82,0x86,0x90,0x96,0x91,0x8A,0x82,0x7D,0x7A,0x75,0x72,0x78,0x82,0x85, -0x86,0x89,0x87,0x82,0x7E,0x7D,0x79,0x72,0x70,0x74,0x7C,0x7F,0x7F,0x85,0x8F,0x8F, -0x8D,0x88,0x80,0x80,0x80,0x7F,0x80,0x83,0x83,0x83,0x86,0x84,0x7D,0x79,0x76,0x72, -0x6A,0x67,0x6D,0x79,0x83,0x88,0x8A,0x88,0x85,0x82,0x81,0x7E,0x76,0x6B,0x6B,0x74, -0x7E,0x83,0x85,0x86,0x86,0x80,0x7B,0x78,0x7C,0x82,0x7F,0x7E,0x84,0x89,0x88,0x86, -0x8B,0x8F,0x87,0x80,0x7D,0x79,0x79,0x7C,0x7C,0x7C,0x7E,0x7E,0x7F,0x83,0x81,0x7D, -0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x82,0x80,0x7C,0x81,0x86,0x82,0x7C,0x7A,0x79,0x7C, -0x7E,0x80,0x87,0x8A,0x85,0x87,0x8E,0x8D,0x85,0x80,0x7C,0x77,0x74,0x72,0x73,0x7B, -0x80,0x82,0x84,0x84,0x84,0x84,0x85,0x87,0x8A,0x88,0x82,0x7F,0x81,0x80,0x83,0x8B, -0x8D,0x8B,0x85,0x7E,0x78,0x76,0x7A,0x80,0x87,0x88,0x82,0x7F,0x7E,0x7F,0x7F,0x7C, -0x78,0x77,0x7C,0x84,0x88,0x86,0x80,0x7E,0x81,0x7F,0x7B,0x76,0x76,0x7B,0x77,0x73, -0x78,0x83,0x87,0x82,0x80,0x81,0x83,0x86,0x82,0x7E,0x80,0x86,0x8A,0x8C,0x90,0x92, -0x8B,0x87,0x85,0x84,0x7F,0x7B,0x7C,0x7E,0x7A,0x7C,0x84,0x86,0x84,0x83,0x85,0x7F, -0x7C,0x7F,0x7C,0x7E,0x7C,0x74,0x70,0x6F,0x76,0x7E,0x82,0x80,0x79,0x77,0x77,0x77, -0x7D,0x81,0x85,0x86,0x81,0x81,0x83,0x8B,0x93,0x90,0x8F,0x89,0x84,0x7E,0x76,0x77, -0x76,0x71,0x71,0x71,0x75,0x7D,0x82,0x81,0x7A,0x76,0x78,0x7C,0x82,0x7C,0x78,0x7E, -0x81,0x81,0x7D,0x7C,0x81,0x7F,0x7C,0x7B,0x7E,0x7F,0x7A,0x78,0x7B,0x80,0x88,0x89, -0x86,0x82,0x82,0x83,0x7E,0x7D,0x7F,0x80,0x82,0x80,0x7D,0x7F,0x80,0x83,0x83,0x80, -0x7F,0x81,0x81,0x7C,0x7A,0x7F,0x84,0x86,0x80,0x7B,0x7E,0x84,0x88,0x85,0x7F,0x7E, -0x7F,0x83,0x80,0x80,0x8C,0x93,0x8F,0x89,0x88,0x8B,0x8A,0x87,0x82,0x7E,0x82,0x86, -0x86,0x85,0x7F,0x7D,0x7F,0x7F,0x7C,0x7C,0x7F,0x7E,0x7A,0x7A,0x7C,0x83,0x89,0x86, -0x83,0x81,0x7F,0x81,0x84,0x83,0x7E,0x7B,0x7C,0x7D,0x83,0x89,0x89,0x85,0x7F,0x82, -0x8A,0x8B,0x82,0x7A,0x7C,0x81,0x83,0x83,0x84,0x88,0x87,0x83,0x7D,0x7B,0x7A,0x7C, -0x7A,0x7A,0x7C,0x7A,0x71,0x6D,0x70,0x72,0x77,0x7F,0x87,0x8A,0x88,0x86,0x83,0x7D, -0x75,0x6E,0x70,0x77,0x7E,0x83,0x87,0x8A,0x8B,0x8A,0x87,0x84,0x80,0x7B,0x78,0x76, -0x73,0x71,0x77,0x7E,0x81,0x81,0x83,0x88,0x8D,0x89,0x7F,0x7A,0x7D,0x7C,0x75,0x74, -0x78,0x7D,0x7D,0x7B,0x7B,0x7E,0x80,0x82,0x83,0x83,0x83,0x82,0x82,0x83,0x7E,0x7B, -0x7E,0x82,0x85,0x88,0x8B,0x87,0x80,0x7D,0x80,0x87,0x88,0x7E,0x7A,0x7D,0x84,0x86, -0x83,0x82,0x81,0x80,0x7C,0x79,0x7B,0x80,0x82,0x82,0x80,0x7D,0x7A,0x7D,0x82,0x80, -0x80,0x82,0x83,0x83,0x7E,0x7C,0x84,0x89,0x86,0x7D,0x7F,0x85,0x87,0x89,0x8B,0x8B, -0x8E,0x8B,0x83,0x7A,0x76,0x78,0x7A,0x7C,0x7E,0x82,0x87,0x8B,0x89,0x83,0x7C,0x7A, -0x7B,0x7B,0x7A,0x79,0x79,0x7B,0x7D,0x7F,0x84,0x8C,0x92,0x90,0x87,0x80,0x80,0x83, -0x83,0x82,0x84,0x85,0x85,0x85,0x85,0x80,0x7A,0x76,0x74,0x76,0x79,0x7B,0x7C,0x7D, -0x7F,0x81,0x82,0x81,0x7F,0x83,0x84,0x7D,0x79,0x7B,0x80,0x86,0x8E,0x8D,0x82,0x7D, -0x7C,0x7B,0x7A,0x75,0x6F,0x73,0x76,0x76,0x7C,0x88,0x8C,0x86,0x84,0x80,0x7B,0x7C, -0x77,0x72,0x73,0x75,0x75,0x7A,0x85,0x85,0x82,0x83,0x7F,0x79,0x7D,0x7E,0x7D,0x7E, -0x7D,0x7D,0x82,0x87,0x83,0x7C,0x80,0x83,0x82,0x7D,0x75,0x79,0x82,0x81,0x7C,0x7F, -0x85,0x86,0x84,0x83,0x7C,0x7B,0x80,0x80,0x7F,0x7B,0x7A,0x7F,0x82,0x7C,0x7F,0x85, -0x83,0x7A,0x7A,0x7F,0x84,0x90,0x97,0x91,0x93,0x98,0x8F,0x83,0x7C,0x7B,0x80,0x88, -0x85,0x7F,0x83,0x88,0x84,0x83,0x7E,0x76,0x74,0x78,0x78,0x7C,0x7F,0x79,0x79,0x82, -0x86,0x8C,0x98,0x8F,0x81,0x7A,0x73,0x71,0x79,0x78,0x7D,0x87,0x8F,0x8A,0x88,0x8D, -0x8C,0x89,0x81,0x78,0x78,0x81,0x7A,0x7D,0x83,0x81,0x83,0x8E,0x8D,0x87,0x83,0x83, -0x7E,0x7D,0x77,0x75,0x85,0x85,0x7A,0x73,0x79,0x7B,0x7E,0x7B,0x74,0x71,0x79,0x7C, -0x7A,0x7F,0x7E,0x83,0x85,0x7E,0x7F,0x80,0x82,0x80,0x7A,0x80,0x83,0x8C,0x8D,0x83, -0x83,0x86,0x81,0x7E,0x79,0x75,0x7A,0x7D,0x7C,0x78,0x7F,0x84,0x83,0x8A,0x88,0x81, -0x7A,0x73,0x73,0x71,0x74,0x74,0x75,0x7B,0x7C,0x7E,0x86,0x84,0x83,0x86,0x8C,0x8B, -0x82,0x7D,0x79,0x7C,0x83,0x80,0x86,0x85,0x86,0x89,0x82,0x79,0x76,0x7C,0x85,0x7E, -0x7B,0x79,0x76,0x7D,0x7B,0x7D,0x83,0x85,0x89,0x85,0x81,0x82,0x83,0x87,0x7E,0x7C, -0x82,0x81,0x85,0x81,0x7F,0x86,0x84,0x84,0x85,0x84,0x88,0x7E,0x7D,0x80,0x81,0x86, -0x83,0x83,0x88,0x84,0x84,0x85,0x7F,0x7C,0x7B,0x81,0x83,0x7F,0x7B,0x73,0x77,0x7A, -0x78,0x7F,0x81,0x80,0x7F,0x85,0x85,0x81,0x84,0x87,0x86,0x86,0x82,0x7B,0x7B,0x7E, -0x85,0x8B,0x90,0x8E,0x84,0x80,0x85,0x87,0x89,0x82,0x7D,0x7D,0x7F,0x7D,0x7B,0x7F, -0x86,0x8A,0x89,0x83,0x7E,0x83,0x83,0x7F,0x7E,0x7B,0x7C,0x7E,0x7E,0x7C,0x7A,0x7D, -0x81,0x7E,0x79,0x75,0x79,0x7A,0x75,0x75,0x7A,0x79,0x7A,0x81,0x88,0x87,0x88,0x86, -0x83,0x7D,0x71,0x70,0x77,0x7E,0x83,0x83,0x7D,0x7D,0x81,0x85,0x82,0x82,0x82,0x79, -0x75,0x78,0x7C,0x81,0x7F,0x7D,0x7F,0x84,0x85,0x85,0x86,0x86,0x81,0x80,0x82,0x7E, -0x79,0x79,0x7E,0x7C,0x78,0x75,0x70,0x71,0x72,0x77,0x7C,0x82,0x83,0x82,0x83,0x7F, -0x78,0x79,0x7A,0x7F,0x84,0x85,0x86,0x8E,0x95,0x98,0x95,0x8F,0x88,0x81,0x7E,0x7B, -0x7A,0x7C,0x7D,0x7D,0x7D,0x7C,0x7D,0x81,0x86,0x89,0x86,0x81,0x7F,0x81,0x82,0x86, -0x88,0x87,0x81,0x7B,0x7A,0x7B,0x7E,0x83,0x85,0x86,0x82,0x7E,0x7E,0x7F,0x7F,0x82, -0x82,0x80,0x7F,0x84,0x8B,0x8B,0x86,0x7E,0x7C,0x81,0x86,0x84,0x7D,0x79,0x7E,0x82, -0x83,0x81,0x81,0x84,0x84,0x84,0x85,0x84,0x84,0x86,0x85,0x7D,0x75,0x76,0x7B,0x7C, -0x77,0x74,0x79,0x80,0x84,0x84,0x87,0x86,0x7F,0x7B,0x76,0x73,0x74,0x76,0x79,0x7F, -0x87,0x8B,0x8F,0x92,0x8F,0x88,0x81,0x7A,0x74,0x76,0x79,0x7F,0x83,0x84,0x84,0x84, -0x85,0x82,0x7D,0x7C,0x7E,0x7D,0x79,0x76,0x78,0x7C,0x7A,0x7A,0x7B,0x7D,0x83,0x86, -0x86,0x85,0x82,0x7F,0x80,0x83,0x84,0x84,0x86,0x86,0x85,0x84,0x86,0x88,0x86,0x82, -0x7D,0x79,0x7B,0x7B,0x77,0x75,0x76,0x80,0x88,0x85,0x83,0x86,0x85,0x81,0x79,0x7A, -0x77,0x74,0x75,0x76,0x7B,0x7E,0x81,0x87,0x87,0x83,0x7F,0x7B,0x75,0x73,0x7F,0x88, -0x89,0x89,0x85,0x81,0x7F,0x7F,0x82,0x82,0x83,0x80,0x76,0x72,0x71,0x77,0x7A,0x79, -0x79,0x7B,0x7B,0x7A,0x80,0x87,0x88,0x87,0x88,0x8A,0x8B,0x87,0x87,0x88,0x81,0x7B, -0x7D,0x85,0x8B,0x8A,0x8B,0x8A,0x89,0x89,0x83,0x7F,0x7D,0x7B,0x7E,0x7C,0x7C,0x7E, -0x7F,0x83,0x80,0x80,0x7E,0x7C,0x7F,0x80,0x7D,0x7E,0x7D,0x83,0x85,0x82,0x7F,0x7C, -0x7E,0x81,0x7D,0x85,0x8B,0x87,0x82,0x7D,0x78,0x75,0x7B,0x85,0x88,0x89,0x85,0x83, -0x81,0x7E,0x80,0x82,0x80,0x7D,0x7B,0x81,0x84,0x83,0x86,0x85,0x80,0x7E,0x7A,0x7B, -0x7A,0x78,0x78,0x75,0x71,0x75,0x7B,0x7C,0x79,0x79,0x7D,0x80,0x80,0x81,0x7F,0x7D, -0x7E,0x7E,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x7F,0x80,0x80,0x7C,0x7C,0x80,0x83,0x82, -0x7D,0x7D,0x80,0x7F,0x7B,0x7F,0x85,0x85,0x84,0x85,0x80,0x7C,0x7A,0x7B,0x81,0x81, -0x7C,0x7A,0x7C,0x7C,0x78,0x76,0x77,0x78,0x7D,0x7F,0x7E,0x82,0x8A,0x8C,0x90,0x95, -0x98,0x95,0x8E,0x88,0x7F,0x77,0x74,0x73,0x77,0x7D,0x7D,0x7B,0x7B,0x7B,0x7C,0x81, -0x84,0x82,0x7D,0x7C,0x80,0x7E,0x7A,0x7E,0x87,0x8C,0x8A,0x87,0x87,0x83,0x7D,0x7A, -0x7C,0x82,0x86,0x86,0x87,0x84,0x81,0x7F,0x80,0x84,0x88,0x8B,0x8B,0x8C,0x8E,0x8C, -0x85,0x7D,0x79,0x78,0x77,0x7B,0x7D,0x7D,0x79,0x78,0x7B,0x7E,0x84,0x88,0x83,0x7D, -0x7C,0x7D,0x7F,0x81,0x82,0x80,0x7B,0x7A,0x7D,0x82,0x86,0x87,0x85,0x81,0x81,0x80, -0x7A,0x79,0x7C,0x80,0x81,0x7F,0x81,0x87,0x8C,0x8C,0x89,0x8A,0x8D,0x8A,0x83,0x7C, -0x7A,0x7D,0x81,0x84,0x86,0x88,0x85,0x7F,0x7D,0x7C,0x79,0x77,0x75,0x71,0x70,0x72, -0x73,0x74,0x75,0x77,0x7A,0x7C,0x7D,0x81,0x88,0x8B,0x86,0x83,0x87,0x8C,0x8E,0x8B, -0x85,0x80,0x82,0x82,0x7D,0x7B,0x7F,0x81,0x81,0x7C,0x74,0x6F,0x71,0x75,0x7B,0x80, -0x81,0x82,0x88,0x88,0x86,0x88,0x88,0x85,0x81,0x7A,0x74,0x77,0x77,0x72,0x70,0x74, -0x78,0x7A,0x7A,0x79,0x77,0x7A,0x80,0x80,0x83,0x86,0x8C,0x90,0x8C,0x89,0x8D,0x8C, -0x87,0x81,0x80,0x82,0x84,0x82,0x7B,0x7A,0x7F,0x7E,0x7A,0x7C,0x80,0x83,0x83,0x86, -0x88,0x85,0x81,0x7D,0x81,0x83,0x7F,0x81,0x86,0x87,0x83,0x82,0x87,0x89,0x85,0x81, -0x7E,0x85,0x88,0x7C,0x76,0x79,0x82,0x8C,0x91,0x90,0x8B,0x8B,0x89,0x86,0x8B,0x87, -0x7F,0x87,0x84,0x7B,0x78,0x7E,0x83,0x81,0x7F,0x78,0x79,0x7F,0x77,0x70,0x72,0x71, -0x70,0x72,0x77,0x7F,0x8D,0x92,0x89,0x8A,0x8D,0x89,0x8B,0x85,0x73,0x71,0x77,0x7E, -0x7E,0x80,0x82,0x86,0x8C,0x8D,0x89,0x8B,0x88,0x7A,0x6E,0x69,0x6D,0x7A,0x7D,0x7A, -0x7D,0x7F,0x75,0x71,0x73,0x76,0x79,0x7E,0x7C,0x78,0x75,0x76,0x7D,0x7F,0x7B,0x79, -0x7E,0x82,0x7F,0x84,0x82,0x7D,0x7E,0x81,0x81,0x84,0x8D,0x8C,0x80,0x7C,0x7E,0x85, -0x88,0x85,0x87,0x85,0x81,0x7F,0x7B,0x77,0x72,0x75,0x7D,0x73,0x72,0x75,0x76,0x7C, -0x7F,0x84,0x87,0x87,0x8F,0x87,0x86,0x83,0x82,0x86,0x7E,0x78,0x7A,0x79,0x7B,0x7E, -0x7C,0x80,0x81,0x86,0x85,0x82,0x8B,0x8D,0x8C,0x87,0x83,0x84,0x85,0x87,0x82,0x7F, -0x82,0x7E,0x7E,0x76,0x75,0x78,0x75,0x74,0x78,0x7B,0x81,0x81,0x82,0x81,0x7E,0x89, -0x91,0x89,0x87,0x88,0x8B,0x89,0x83,0x80,0x7D,0x7D,0x7D,0x81,0x86,0x8B,0x89,0x87, -0x81,0x7E,0x85,0x88,0x83,0x7D,0x7C,0x7D,0x7F,0x80,0x7D,0x7F,0x87,0x8B,0x8A,0x7F, -0x77,0x7D,0x7D,0x77,0x76,0x7C,0x80,0x82,0x81,0x80,0x7E,0x84,0x89,0x85,0x83,0x82, -0x7C,0x7F,0x80,0x82,0x83,0x87,0x8B,0x85,0x84,0x86,0x86,0x82,0x7C,0x7B,0x7A,0x77, -0x79,0x7C,0x7D,0x7F,0x7F,0x7D,0x77,0x76,0x7A,0x7A,0x79,0x77,0x7B,0x81,0x7F,0x7F, -0x83,0x8B,0x8D,0x85,0x7F,0x77,0x72,0x7A,0x7D,0x7D,0x7A,0x7A,0x7D,0x7B,0x7D,0x7D, -0x7A,0x7D,0x80,0x7B,0x76,0x78,0x81,0x85,0x85,0x85,0x82,0x80,0x7F,0x82,0x85,0x86, -0x88,0x83,0x7B,0x79,0x7D,0x84,0x87,0x84,0x82,0x80,0x7F,0x7A,0x75,0x78,0x7D,0x80, -0x81,0x82,0x85,0x86,0x84,0x81,0x82,0x86,0x84,0x7F,0x7E,0x82,0x84,0x84,0x86,0x86, -0x83,0x85,0x86,0x87,0x85,0x81,0x80,0x7F,0x80,0x81,0x82,0x88,0x8B,0x8B,0x85,0x7C, -0x7C,0x80,0x7E,0x7C,0x7F,0x80,0x7F,0x7F,0x83,0x87,0x86,0x85,0x84,0x85,0x83,0x80, -0x7F,0x7C,0x79,0x78,0x7A,0x80,0x85,0x84,0x7E,0x76,0x78,0x7B,0x7E,0x7E,0x7E,0x80, -0x80,0x81,0x84,0x84,0x83,0x81,0x82,0x86,0x89,0x8A,0x8A,0x84,0x7D,0x7C,0x7F,0x82, -0x7F,0x7C,0x77,0x75,0x77,0x79,0x7F,0x82,0x84,0x85,0x83,0x80,0x7B,0x77,0x76,0x76, -0x75,0x73,0x73,0x77,0x7C,0x7F,0x81,0x7F,0x80,0x80,0x7F,0x7D,0x7B,0x7F,0x80,0x82, -0x83,0x81,0x81,0x83,0x82,0x86,0x87,0x85,0x86,0x87,0x89,0x85,0x82,0x80,0x7D,0x7B, -0x79,0x76,0x78,0x7B,0x80,0x85,0x85,0x85,0x87,0x8A,0x85,0x7C,0x79,0x77,0x74,0x72, -0x71,0x79,0x7F,0x85,0x8B,0x8B,0x89,0x83,0x7F,0x7E,0x7D,0x80,0x7C,0x73,0x76,0x7D, -0x83,0x85,0x87,0x8C,0x8E,0x8E,0x8B,0x84,0x81,0x80,0x87,0x8D,0x87,0x82,0x7E,0x7B, -0x7A,0x7D,0x84,0x82,0x7C,0x79,0x77,0x7C,0x7D,0x7D,0x83,0x82,0x7E,0x79,0x79,0x79, -0x75,0x7A,0x7F,0x83,0x89,0x89,0x89,0x88,0x83,0x81,0x7D,0x7B,0x78,0x7C,0x86,0x87, -0x86,0x8D,0x90,0x8C,0x85,0x86,0x87,0x88,0x87,0x80,0x79,0x75,0x75,0x79,0x7B,0x7A, -0x81,0x85,0x84,0x80,0x7C,0x7A,0x79,0x7D,0x82,0x84,0x87,0x89,0x8F,0x90,0x8A,0x86, -0x86,0x82,0x79,0x79,0x7B,0x79,0x7B,0x80,0x83,0x82,0x80,0x7E,0x7D,0x7B,0x7C,0x78, -0x71,0x6B,0x6C,0x7D,0x8A,0x89,0x88,0x86,0x82,0x7B,0x79,0x7C,0x79,0x75,0x76,0x7C, -0x82,0x83,0x86,0x88,0x83,0x7B,0x7D,0x83,0x80,0x7A,0x79,0x78,0x7C,0x80,0x80,0x81, -0x87,0x8C,0x87,0x80,0x7C,0x78,0x77,0x77,0x77,0x7F,0x83,0x83,0x7E,0x79,0x76,0x73, -0x75,0x7A,0x7C,0x7B,0x7C,0x84,0x89,0x88,0x8C,0x90,0x8E,0x83,0x79,0x78,0x7C,0x7E, -0x7F,0x7F,0x81,0x83,0x85,0x8A,0x8C,0x88,0x82,0x80,0x80,0x7D,0x7D,0x82,0x86,0x8C, -0x91,0x90,0x8A,0x83,0x7D,0x7F,0x84,0x84,0x80,0x79,0x77,0x78,0x7D,0x80,0x80,0x81, -0x81,0x7C,0x7B,0x7B,0x7D,0x80,0x84,0x85,0x82,0x80,0x7F,0x81,0x86,0x89,0x8C,0x8E, -0x8A,0x85,0x86,0x86,0x84,0x82,0x81,0x7E,0x7B,0x7A,0x78,0x76,0x7B,0x81,0x81,0x7E, -0x7B,0x7E,0x82,0x80,0x7C,0x7D,0x7E,0x7C,0x7A,0x7E,0x7E,0x7F,0x7E,0x7F,0x7F,0x82, -0x85,0x82,0x7C,0x7A,0x79,0x7B,0x7D,0x7E,0x7E,0x7F,0x81,0x85,0x85,0x83,0x80,0x7E, -0x7B,0x76,0x74,0x75,0x76,0x78,0x7B,0x7E,0x81,0x85,0x88,0x86,0x81,0x80,0x82,0x85, -0x84,0x84,0x85,0x87,0x89,0x89,0x88,0x86,0x84,0x7F,0x7E,0x7B,0x78,0x75,0x76,0x77, -0x78,0x76,0x77,0x7B,0x80,0x79,0x75,0x7B,0x80,0x81,0x84,0x86,0x87,0x87,0x87,0x84, -0x80,0x80,0x7F,0x80,0x82,0x7E,0x7D,0x80,0x82,0x84,0x87,0x84,0x83,0x84,0x85,0x7E, -0x7C,0x7D,0x7F,0x7F,0x7E,0x7E,0x80,0x82,0x81,0x7F,0x81,0x84,0x86,0x89,0x87,0x80, -0x7D,0x79,0x76,0x77,0x77,0x7A,0x7C,0x7E,0x7B,0x7C,0x82,0x83,0x81,0x7F,0x7D,0x80, -0x83,0x7F,0x7E,0x86,0x89,0x86,0x86,0x8A,0x8B,0x87,0x87,0x84,0x85,0x85,0x80,0x7E, -0x7B,0x77,0x7B,0x81,0x81,0x80,0x86,0x86,0x84,0x87,0x89,0x84,0x83,0x85,0x82,0x80, -0x7D,0x79,0x7A,0x7B,0x79,0x78,0x7E,0x80,0x7D,0x80,0x7C,0x7E,0x81,0x82,0x85,0x88, -0x8C,0x8E,0x8F,0x8F,0x87,0x86,0x8C,0x87,0x85,0x85,0x83,0x80,0x7E,0x79,0x74,0x75, -0x76,0x72,0x76,0x75,0x72,0x7A,0x7E,0x79,0x78,0x7D,0x7D,0x7A,0x7D,0x7F,0x7E,0x82, -0x86,0x84,0x84,0x82,0x7F,0x7C,0x7B,0x78,0x80,0x82,0x7D,0x7F,0x83,0x87,0x82,0x83, -0x84,0x81,0x7E,0x7C,0x7C,0x7D,0x7B,0x7A,0x7A,0x7E,0x79,0x7E,0x84,0x79,0x74,0x7B, -0x76,0x74,0x7A,0x7A,0x7C,0x7D,0x85,0x87,0x83,0x87,0x81,0x82,0x84,0x81,0x86,0x88, -0x89,0x89,0x85,0x84,0x84,0x89,0x86,0x82,0x84,0x86,0x87,0x8A,0x81,0x7F,0x81,0x76, -0x75,0x78,0x81,0x83,0x83,0x85,0x83,0x7F,0x7C,0x77,0x7C,0x77,0x77,0x7F,0x85,0x87, -0x82,0x85,0x87,0x83,0x7E,0x7D,0x7A,0x80,0x7D,0x82,0x86,0x87,0x8D,0x90,0x8A,0x8D, -0x8B,0x8A,0x82,0x7A,0x7E,0x7E,0x83,0x89,0x8B,0x82,0x7D,0x7E,0x7A,0x7A,0x7E,0x79, -0x79,0x7A,0x78,0x7A,0x7F,0x83,0x83,0x82,0x86,0x81,0x77,0x7A,0x72,0x76,0x7B,0x7B, -0x7B,0x7E,0x83,0x86,0x82,0x7E,0x7B,0x7D,0x83,0x83,0x7C,0x7B,0x7F,0x83,0x87,0x89, -0x90,0x91,0x93,0x8F,0x85,0x81,0x81,0x7C,0x78,0x79,0x7C,0x78,0x74,0x74,0x76,0x78, -0x78,0x7A,0x7A,0x7B,0x7A,0x79,0x79,0x78,0x79,0x7E,0x86,0x8A,0x84,0x7F,0x82,0x84, -0x84,0x85,0x85,0x83,0x7D,0x77,0x78,0x82,0x8D,0x91,0x89,0x80,0x7F,0x80,0x7F,0x81, -0x82,0x84,0x86,0x89,0x86,0x7F,0x7B,0x78,0x71,0x6B,0x6A,0x6F,0x7A,0x7F,0x79,0x76, -0x7D,0x81,0x7F,0x7B,0x7B,0x7B,0x79,0x76,0x78,0x7C,0x83,0x84,0x85,0x89,0x8B,0x8A, -0x87,0x86,0x86,0x87,0x89,0x8C,0x8D,0x8C,0x8A,0x85,0x80,0x7F,0x80,0x83,0x83,0x7F, -0x79,0x78,0x7B,0x7B,0x7A,0x7C,0x7E,0x7F,0x7D,0x79,0x7B,0x81,0x86,0x8C,0x8A,0x82, -0x7C,0x7C,0x82,0x84,0x83,0x80,0x7E,0x7F,0x7E,0x7D,0x7E,0x83,0x8B,0x8F,0x8C,0x8A, -0x89,0x8B,0x8C,0x8C,0x8B,0x8A,0x8A,0x86,0x7F,0x7C,0x7C,0x7E,0x81,0x81,0x81,0x7B, -0x74,0x70,0x6F,0x73,0x76,0x7B,0x80,0x80,0x81,0x80,0x7C,0x78,0x75,0x72,0x74,0x7A, -0x81,0x85,0x83,0x84,0x86,0x88,0x86,0x86,0x89,0x8C,0x88,0x82,0x80,0x7E,0x7D,0x81, -0x84,0x83,0x81,0x7D,0x7B,0x7A,0x75,0x72,0x74,0x77,0x7A,0x7A,0x79,0x76,0x78,0x7F, -0x7F,0x7B,0x76,0x74,0x78,0x7C,0x7F,0x85,0x8A,0x8B,0x87,0x88,0x85,0x7F,0x81,0x81, -0x84,0x82,0x80,0x80,0x7D,0x7D,0x80,0x83,0x85,0x82,0x81,0x80,0x7B,0x79,0x79,0x7A, -0x81,0x80,0x7E,0x80,0x81,0x82,0x80,0x80,0x7F,0x7D,0x80,0x80,0x80,0x80,0x7F,0x80, -0x84,0x86,0x86,0x86,0x88,0x88,0x84,0x82,0x81,0x83,0x85,0x83,0x85,0x89,0x86,0x83, -0x7F,0x7C,0x76,0x76,0x7B,0x80,0x83,0x7E,0x7E,0x86,0x88,0x84,0x86,0x8A,0x88,0x80, -0x7F,0x81,0x81,0x83,0x84,0x82,0x80,0x7B,0x7E,0x7E,0x77,0x72,0x73,0x7E,0x86,0x88, -0x85,0x7E,0x7E,0x7E,0x7D,0x7C,0x7B,0x7D,0x81,0x82,0x84,0x88,0x8C,0x89,0x84,0x86, -0x85,0x81,0x84,0x84,0x82,0x83,0x86,0x8A,0x88,0x85,0x82,0x7C,0x79,0x75,0x74,0x76, -0x7A,0x7C,0x7B,0x7C,0x7D,0x80,0x7E,0x7C,0x7F,0x84,0x81,0x7A,0x77,0x78,0x7C,0x7C, -0x81,0x85,0x80,0x7E,0x7F,0x85,0x89,0x85,0x85,0x84,0x87,0x87,0x85,0x85,0x81,0x7D, -0x79,0x7B,0x81,0x80,0x7C,0x7D,0x81,0x80,0x79,0x75,0x75,0x75,0x75,0x75,0x77,0x7E, -0x84,0x85,0x82,0x7D,0x7A,0x79,0x7D,0x7E,0x7A,0x78,0x77,0x7C,0x82,0x82,0x7D,0x7A, -0x7B,0x7F,0x84,0x8D,0x91,0x8D,0x8A,0x8B,0x8B,0x87,0x81,0x83,0x83,0x81,0x7C,0x78, -0x78,0x79,0x7D,0x7B,0x78,0x79,0x79,0x78,0x77,0x76,0x79,0x80,0x88,0x8A,0x84,0x7F, -0x7F,0x82,0x83,0x7E,0x7E,0x84,0x89,0x8A,0x86,0x85,0x84,0x82,0x83,0x83,0x84,0x85, -0x88,0x8C,0x8C,0x8D,0x8F,0x90,0x8E,0x88,0x84,0x81,0x80,0x81,0x83,0x83,0x84,0x84, -0x80,0x7C,0x7B,0x78,0x73,0x70,0x6F,0x71,0x77,0x7A,0x7B,0x7E,0x81,0x83,0x84,0x86, -0x83,0x83,0x83,0x82,0x81,0x82,0x85,0x8B,0x8E,0x91,0x8E,0x89,0x85,0x80,0x7A,0x78, -0x79,0x79,0x77,0x75,0x78,0x7D,0x86,0x89,0x84,0x7E,0x7D,0x7E,0x7B,0x77,0x70,0x6F, -0x72,0x73,0x71,0x75,0x7B,0x80,0x7D,0x80,0x81,0x80,0x82,0x83,0x7F,0x7D,0x80,0x82, -0x81,0x83,0x85,0x85,0x88,0x8B,0x86,0x81,0x7E,0x7C,0x7E,0x7A,0x76,0x76,0x7A,0x81, -0x82,0x83,0x83,0x84,0x82,0x81,0x81,0x80,0x7C,0x7B,0x7E,0x7E,0x7A,0x7B,0x7E,0x7C, -0x80,0x84,0x81,0x83,0x85,0x81,0x7D,0x77,0x75,0x76,0x80,0x8A,0x89,0x87,0x85,0x83, -0x85,0x86,0x86,0x88,0x88,0x84,0x7E,0x7F,0x81,0x84,0x81,0x7D,0x7E,0x83,0x84,0x86, -0x87,0x80,0x7B,0x7B,0x81,0x7E,0x83,0x84,0x81,0x82,0x80,0x7F,0x81,0x80,0x82,0x7E, -0x86,0x8A,0x7C,0x7D,0x7D,0x79,0x77,0x7A,0x81,0x81,0x80,0x83,0x7D,0x80,0x80,0x80, -0x83,0x7E,0x83,0x82,0x7F,0x81,0x84,0x85,0x87,0x88,0x8C,0x83,0x86,0x85,0x7F,0x80, -0x79,0x75,0x7C,0x80,0x82,0x82,0x87,0x8B,0x83,0x87,0x7F,0x7A,0x80,0x7F,0x80,0x81, -0x7E,0x81,0x7B,0x7C,0x82,0x82,0x85,0x80,0x7E,0x78,0x77,0x78,0x79,0x79,0x7F,0x7C, -0x80,0x86,0x89,0x89,0x86,0x86,0x82,0x80,0x82,0x7F,0x7E,0x81,0x7E,0x7F,0x78,0x7B, -0x7F,0x81,0x7F,0x7D,0x79,0x76,0x74,0x75,0x74,0x78,0x81,0x80,0x7E,0x79,0x7A,0x79, -0x79,0x7C,0x7F,0x84,0x8E,0x89,0x84,0x84,0x7D,0x7A,0x7B,0x7F,0x7C,0x77,0x7D,0x7D, -0x80,0x85,0x88,0x87,0x82,0x7E,0x7B,0x7D,0x80,0x7D,0x7D,0x7D,0x7F,0x80,0x83,0x81, -0x82,0x7F,0x77,0x71,0x6F,0x74,0x7B,0x83,0x86,0x81,0x84,0x87,0x8B,0x8E,0x86,0x81, -0x82,0x84,0x82,0x82,0x82,0x81,0x82,0x88,0x86,0x87,0x8A,0x86,0x85,0x86,0x85,0x87, -0x8C,0x88,0x81,0x85,0x8B,0x8A,0x86,0x7E,0x75,0x76,0x78,0x78,0x79,0x7B,0x7A,0x79, -0x79,0x77,0x7A,0x82,0x83,0x85,0x89,0x86,0x84,0x87,0x84,0x7F,0x83,0x8A,0x8B,0x89, -0x86,0x83,0x83,0x88,0x89,0x8C,0x8E,0x89,0x87,0x87,0x80,0x76,0x73,0x74,0x71,0x73, -0x78,0x7A,0x7B,0x7A,0x78,0x79,0x7C,0x7B,0x7C,0x7B,0x7C,0x7A,0x79,0x7B,0x82,0x8B, -0x8B,0x86,0x83,0x81,0x80,0x7B,0x76,0x73,0x73,0x78,0x7C,0x81,0x80,0x7E,0x80,0x85, -0x89,0x8C,0x8A,0x84,0x80,0x7D,0x7B,0x76,0x78,0x7E,0x81,0x82,0x81,0x7E,0x7D,0x7B, -0x7C,0x78,0x75,0x75,0x78,0x7A,0x7B,0x7F,0x86,0x8A,0x8C,0x8A,0x85,0x87,0x8A,0x8C, -0x86,0x80,0x7A,0x78,0x7A,0x7C,0x7C,0x7B,0x7A,0x7C,0x7E,0x7E,0x80,0x81,0x83,0x84, -0x82,0x82,0x84,0x88,0x84,0x7F,0x80,0x84,0x8B,0x8E,0x8A,0x86,0x81,0x7C,0x78,0x75, -0x74,0x73,0x75,0x7B,0x81,0x85,0x86,0x86,0x87,0x85,0x84,0x87,0x8A,0x88,0x81,0x7B, -0x76,0x74,0x7A,0x81,0x86,0x83,0x7E,0x7E,0x7F,0x7F,0x7D,0x7D,0x7F,0x82,0x84,0x85, -0x83,0x84,0x84,0x84,0x86,0x87,0x85,0x83,0x83,0x83,0x80,0x80,0x80,0x7F,0x81,0x7E, -0x7D,0x80,0x87,0x89,0x85,0x82,0x80,0x82,0x85,0x83,0x7A,0x76,0x78,0x7B,0x7E,0x83, -0x89,0x8B,0x88,0x85,0x7F,0x7C,0x7E,0x7B,0x78,0x76,0x79,0x7D,0x83,0x85,0x86,0x87, -0x88,0x86,0x81,0x7C,0x7A,0x7A,0x78,0x76,0x79,0x7E,0x84,0x85,0x84,0x83,0x80,0x7C, -0x79,0x79,0x78,0x76,0x78,0x7C,0x7D,0x81,0x84,0x87,0x83,0x7F,0x7E,0x81,0x81,0x7E, -0x7D,0x7E,0x7E,0x7F,0x7E,0x7D,0x7F,0x83,0x81,0x7F,0x7E,0x7D,0x7B,0x7B,0x78,0x75, -0x74,0x79,0x7D,0x7F,0x81,0x82,0x7D,0x7B,0x7A,0x7D,0x83,0x86,0x83,0x82,0x83,0x85, -0x82,0x80,0x7F,0x7D,0x7D,0x7C,0x7B,0x7E,0x81,0x83,0x86,0x8B,0x8D,0x8D,0x8E,0x8B, -0x85,0x80,0x80,0x87,0x8C,0x8C,0x8B,0x87,0x7F,0x77,0x73,0x73,0x75,0x75,0x77,0x79, -0x7B,0x7F,0x81,0x86,0x8B,0x8B,0x88,0x83,0x81,0x82,0x82,0x83,0x82,0x81,0x83,0x88, -0x8A,0x86,0x7F,0x7E,0x7F,0x81,0x82,0x83,0x87,0x89,0x87,0x84,0x80,0x81,0x84,0x87, -0x86,0x82,0x81,0x81,0x82,0x80,0x7D,0x79,0x76,0x76,0x77,0x74,0x75,0x76,0x78,0x78, -0x78,0x7B,0x7F,0x82,0x87,0x86,0x84,0x83,0x81,0x7E,0x7C,0x7D,0x7D,0x7E,0x80,0x82, -0x85,0x89,0x8A,0x89,0x86,0x85,0x83,0x81,0x7F,0x80,0x7F,0x7E,0x7D,0x79,0x76,0x77, -0x7B,0x7E,0x80,0x7F,0x7D,0x79,0x74,0x71,0x75,0x7B,0x80,0x82,0x82,0x7F,0x7D,0x7E, -0x81,0x85,0x86,0x87,0x86,0x81,0x7C,0x7D,0x82,0x81,0x7D,0x7A,0x78,0x7C,0x84,0x86, -0x85,0x87,0x89,0x89,0x84,0x7D,0x7B,0x7B,0x7E,0x7E,0x7F,0x7E,0x80,0x83,0x85,0x81, -0x7D,0x7C,0x7D,0x7A,0x78,0x78,0x7D,0x81,0x83,0x83,0x7F,0x79,0x7A,0x7D,0x7E,0x7D, -0x79,0x77,0x7B,0x80,0x82,0x84,0x87,0x8A,0x88,0x83,0x80,0x82,0x87,0x8E,0x8F,0x8B, -0x89,0x86,0x84,0x82,0x7F,0x7E,0x7B,0x79,0x79,0x77,0x76,0x79,0x7F,0x89,0x8A,0x84, -0x7E,0x7C,0x7D,0x7E,0x7F,0x84,0x83,0x84,0x87,0x8C,0x8B,0x89,0x89,0x83,0x7F,0x7E, -0x7B,0x7B,0x7C,0x81,0x85,0x85,0x88,0x88,0x87,0x88,0x88,0x85,0x80,0x7F,0x80,0x84, -0x82,0x83,0x7F,0x7E,0x82,0x7C,0x7B,0x7D,0x7C,0x7A,0x75,0x74,0x76,0x77,0x7A,0x7B, -0x7D,0x83,0x85,0x81,0x84,0x84,0x85,0x86,0x88,0x83,0x7E,0x7E,0x7C,0x7C,0x7D,0x80, -0x83,0x82,0x81,0x7A,0x72,0x78,0x82,0x8A,0x88,0x89,0x8B,0x83,0x7B,0x79,0x74,0x77, -0x7C,0x7B,0x78,0x78,0x7D,0x82,0x7F,0x79,0x74,0x70,0x71,0x6F,0x73,0x79,0x7A,0x7F, -0x82,0x87,0x86,0x85,0x83,0x80,0x7F,0x7C,0x7C,0x7E,0x80,0x86,0x91,0x92,0x8D,0x8A, -0x85,0x82,0x81,0x82,0x7D,0x7A,0x83,0x81,0x80,0x87,0x85,0x83,0x84,0x7F,0x74,0x70, -0x79,0x78,0x79,0x7B,0x7B,0x7F,0x81,0x85,0x84,0x83,0x86,0x85,0x84,0x83,0x82,0x85, -0x80,0x78,0x86,0x8B,0x8C,0x8A,0x82,0x89,0x87,0x89,0x8C,0x8C,0x8E,0x86,0x84,0x81, -0x7B,0x7E,0x7D,0x7C,0x78,0x78,0x7A,0x76,0x79,0x79,0x74,0x78,0x80,0x81,0x85,0x85, -0x88,0x85,0x82,0x83,0x80,0x85,0x86,0x83,0x87,0x82,0x81,0x7E,0x78,0x79,0x7A,0x7F, -0x7A,0x7E,0x83,0x81,0x86,0x8A,0x88,0x8A,0x8A,0x8A,0x85,0x7F,0x79,0x70,0x73,0x72, -0x6F,0x7A,0x7C,0x78,0x7A,0x77,0x7A,0x77,0x7D,0x85,0x7F,0x84,0x87,0x84,0x88,0x88, -0x89,0x84,0x7E,0x81,0x7F,0x83,0x8B,0x8C,0x8B,0x86,0x85,0x82,0x7E,0x7F,0x79,0x78, -0x78,0x76,0x7B,0x83,0x89,0x87,0x83,0x86,0x83,0x7C,0x75,0x6E,0x6E,0x71,0x76,0x7B, -0x79,0x7D,0x82,0x80,0x80,0x7E,0x7A,0x76,0x77,0x79,0x78,0x7B,0x81,0x83,0x81,0x7F, -0x80,0x82,0x88,0x8A,0x87,0x88,0x89,0x88,0x86,0x86,0x83,0x7D,0x7D,0x81,0x81,0x80, -0x7F,0x7F,0x81,0x83,0x82,0x7F,0x7B,0x79,0x77,0x75,0x76,0x7C,0x80,0x80,0x81,0x7C, -0x78,0x79,0x7D,0x7D,0x7C,0x7E,0x82,0x84,0x88,0x86,0x83,0x86,0x87,0x89,0x8B,0x8E, -0x8F,0x88,0x83,0x80,0x7F,0x82,0x84,0x85,0x85,0x83,0x87,0x87,0x86,0x82,0x7F,0x81, -0x82,0x7F,0x7C,0x7B,0x7D,0x80,0x84,0x88,0x86,0x82,0x81,0x82,0x82,0x80,0x7F,0x7D, -0x7B,0x7F,0x83,0x85,0x88,0x87,0x86,0x80,0x7B,0x79,0x76,0x7A,0x7F,0x81,0x82,0x82, -0x86,0x86,0x86,0x86,0x82,0x7F,0x7E,0x7A,0x77,0x79,0x7F,0x83,0x85,0x8A,0x83,0x7C, -0x7B,0x79,0x74,0x71,0x70,0x6F,0x73,0x7C,0x83,0x89,0x8D,0x89,0x84,0x7E,0x79,0x7C, -0x7F,0x81,0x80,0x7D,0x7C,0x79,0x76,0x74,0x73,0x76,0x76,0x7B,0x83,0x82,0x7E,0x7F, -0x84,0x89,0x8E,0x8C,0x82,0x7B,0x7A,0x7A,0x7D,0x7E,0x7F,0x80,0x80,0x7F,0x7F,0x81, -0x81,0x7D,0x7B,0x7A,0x7A,0x7D,0x7E,0x80,0x81,0x80,0x83,0x86,0x83,0x85,0x88,0x88, -0x84,0x82,0x81,0x7E,0x7D,0x7E,0x7F,0x81,0x89,0x8A,0x84,0x80,0x7E,0x80,0x83,0x82, -0x82,0x82,0x81,0x81,0x82,0x87,0x87,0x80,0x7B,0x7D,0x83,0x83,0x7F,0x7D,0x7E,0x80, -0x86,0x88,0x83,0x81,0x7F,0x7B,0x78,0x78,0x78,0x77,0x7B,0x81,0x87,0x89,0x8A,0x8A, -0x86,0x84,0x80,0x80,0x86,0x86,0x84,0x82,0x85,0x88,0x84,0x80,0x7E,0x7D,0x7A,0x78, -0x76,0x78,0x7C,0x7F,0x81,0x80,0x80,0x80,0x81,0x80,0x7E,0x7D,0x7F,0x83,0x86,0x86, -0x87,0x83,0x81,0x80,0x7D,0x79,0x76,0x78,0x7A,0x7C,0x7F,0x82,0x83,0x84,0x84,0x86, -0x87,0x87,0x84,0x80,0x7E,0x7F,0x82,0x83,0x81,0x7E,0x80,0x81,0x81,0x82,0x82,0x7D, -0x79,0x78,0x77,0x75,0x75,0x74,0x77,0x7B,0x80,0x81,0x82,0x83,0x84,0x85,0x83,0x80, -0x80,0x7F,0x7C,0x7C,0x7C,0x7D,0x80,0x87,0x8A,0x86,0x82,0x82,0x84,0x83,0x7C,0x78, -0x79,0x79,0x79,0x7C,0x81,0x82,0x83,0x83,0x7F,0x7C,0x7A,0x76,0x72,0x71,0x74,0x77, -0x78,0x7A,0x7B,0x7A,0x7D,0x82,0x89,0x8E,0x8D,0x8B,0x89,0x88,0x89,0x8A,0x89,0x85, -0x81,0x7E,0x80,0x81,0x7F,0x7F,0x82,0x82,0x80,0x7C,0x76,0x78,0x7D,0x7D,0x7B,0x79, -0x7D,0x82,0x89,0x8C,0x8B,0x8B,0x8B,0x89,0x85,0x83,0x82,0x81,0x81,0x82,0x7E,0x80, -0x84,0x84,0x83,0x81,0x84,0x89,0x8C,0x8C,0x84,0x81,0x7D,0x78,0x76,0x77,0x79,0x7E, -0x85,0x89,0x88,0x8B,0x8A,0x86,0x82,0x7F,0x7E,0x7E,0x7E,0x80,0x7D,0x7C,0x7E,0x82, -0x83,0x83,0x84,0x81,0x79,0x76,0x77,0x7B,0x82,0x85,0x87,0x87,0x88,0x86,0x81,0x83, -0x82,0x7D,0x7D,0x79,0x76,0x76,0x79,0x75,0x74,0x75,0x74,0x7B,0x79,0x77,0x77,0x74, -0x7B,0x83,0x7F,0x7A,0x7D,0x85,0x84,0x80,0x81,0x7D,0x80,0x85,0x81,0x7E,0x7E,0x80, -0x80,0x7F,0x83,0x84,0x85,0x87,0x86,0x84,0x85,0x88,0x82,0x7F,0x7E,0x7E,0x7C,0x7D, -0x7D,0x79,0x7A,0x7F,0x80,0x7E,0x7A,0x7A,0x7B,0x7C,0x79,0x76,0x79,0x7B,0x7B,0x78, -0x7E,0x82,0x81,0x85,0x89,0x8B,0x88,0x85,0x81,0x7D,0x80,0x84,0x83,0x84,0x89,0x8A, -0x89,0x89,0x86,0x83,0x83,0x85,0x80,0x80,0x7E,0x7A,0x84,0x89,0x86,0x81,0x7F,0x80, -0x7E,0x7E,0x7C,0x79,0x7E,0x78,0x78,0x80,0x7F,0x87,0x84,0x80,0x7A,0x79,0x82,0x7D, -0x83,0x82,0x74,0x81,0x82,0x87,0x8B,0x8C,0x8E,0x8A,0x8B,0x84,0x7A,0x80,0x82,0x81, -0x87,0x82,0x82,0x80,0x7C,0x7B,0x77,0x7A,0x7B,0x7D,0x81,0x77,0x7C,0x80,0x7B,0x85, -0x86,0x89,0x8B,0x89,0x8A,0x81,0x84,0x83,0x78,0x83,0x7B,0x7A,0x83,0x7D,0x7B,0x79, -0x7F,0x85,0x83,0x8A,0x84,0x7D,0x87,0x7F,0x7C,0x79,0x75,0x79,0x7A,0x82,0x81,0x7F, -0x85,0x7B,0x7C,0x7E,0x7D,0x80,0x7A,0x79,0x79,0x7C,0x84,0x82,0x86,0x84,0x7F,0x80, -0x81,0x85,0x87,0x80,0x7B,0x75,0x74,0x76,0x76,0x7A,0x7A,0x7D,0x84,0x86,0x88,0x84, -0x7E,0x7A,0x7A,0x7C,0x7A,0x7D,0x7F,0x7D,0x7E,0x7F,0x83,0x87,0x87,0x82,0x7E,0x7E, -0x7D,0x7B,0x7D,0x7C,0x7C,0x7D,0x7C,0x7B,0x7A,0x7D,0x7D,0x7F,0x83,0x84,0x84,0x85, -0x83,0x82,0x7E,0x7D,0x7F,0x83,0x84,0x83,0x83,0x81,0x80,0x84,0x88,0x89,0x86,0x84, -0x82,0x7E,0x7B,0x7A,0x7C,0x80,0x85,0x89,0x88,0x86,0x87,0x87,0x84,0x82,0x7F,0x82, -0x83,0x82,0x83,0x82,0x82,0x82,0x82,0x82,0x80,0x81,0x82,0x81,0x7F,0x7E,0x7F,0x7F, -0x81,0x82,0x80,0x80,0x81,0x82,0x83,0x82,0x7F,0x80,0x84,0x88,0x87,0x84,0x84,0x81, -0x80,0x7E,0x7A,0x7B,0x7C,0x7E,0x80,0x82,0x83,0x7F,0x80,0x80,0x7C,0x79,0x77,0x76, -0x76,0x79,0x7F,0x7F,0x81,0x83,0x80,0x82,0x81,0x7E,0x7E,0x7B,0x7C,0x7D,0x80,0x84, -0x85,0x89,0x8A,0x86,0x84,0x81,0x7F,0x7B,0x79,0x7B,0x79,0x78,0x7A,0x7D,0x81,0x83, -0x83,0x80,0x7E,0x7F,0x7D,0x78,0x76,0x73,0x75,0x79,0x83,0x88,0x83,0x7E,0x7A,0x7C, -0x7F,0x7D,0x7D,0x7C,0x7E,0x7F,0x7F,0x86,0x87,0x84,0x7F,0x7E,0x86,0x89,0x88,0x87, -0x85,0x85,0x80,0x81,0x84,0x85,0x87,0x86,0x81,0x7F,0x7D,0x7B,0x7A,0x7A,0x7A,0x7A, -0x7B,0x7C,0x7A,0x79,0x79,0x7B,0x7F,0x82,0x81,0x84,0x89,0x87,0x83,0x81,0x81,0x80, -0x7C,0x7B,0x7C,0x7E,0x7F,0x83,0x84,0x84,0x88,0x8C,0x8A,0x87,0x88,0x87,0x84,0x80, -0x7A,0x7B,0x80,0x80,0x7E,0x7F,0x82,0x84,0x83,0x80,0x7A,0x7A,0x7E,0x7E,0x7D,0x7A, -0x7D,0x82,0x87,0x89,0x88,0x87,0x85,0x82,0x80,0x7F,0x80,0x80,0x7D,0x7B,0x7D,0x82, -0x86,0x87,0x88,0x87,0x85,0x83,0x83,0x84,0x85,0x87,0x86,0x81,0x7E,0x7B,0x7A,0x7B, -0x7B,0x7B,0x7E,0x7F,0x7B,0x74,0x74,0x7B,0x80,0x80,0x7D,0x7A,0x7C,0x81,0x82,0x7F, -0x80,0x80,0x80,0x81,0x83,0x84,0x83,0x80,0x7E,0x7C,0x7C,0x7E,0x81,0x83,0x85,0x87, -0x88,0x83,0x7D,0x77,0x76,0x7A,0x7D,0x7D,0x7C,0x7F,0x82,0x7F,0x7B,0x77,0x79,0x7A, -0x79,0x79,0x7A,0x7B,0x7A,0x7A,0x7C,0x7D,0x7C,0x7B,0x7B,0x7C,0x7C,0x7C,0x7D,0x7E, -0x82,0x87,0x8A,0x89,0x85,0x82,0x81,0x82,0x82,0x7F,0x7E,0x85,0x8A,0x88,0x85,0x87, -0x87,0x84,0x80,0x80,0x82,0x86,0x85,0x7E,0x78,0x77,0x7B,0x80,0x80,0x7D,0x7F,0x84, -0x86,0x88,0x84,0x7E,0x80,0x82,0x81,0x7F,0x81,0x83,0x82,0x81,0x81,0x81,0x88,0x86, -0x7E,0x79,0x7A,0x7D,0x7E,0x85,0x88,0x86,0x86,0x83,0x7F,0x83,0x82,0x89,0x86,0x83, -0x87,0x83,0x86,0x83,0x82,0x80,0x7C,0x81,0x7E,0x7A,0x82,0x82,0x7F,0x7B,0x78,0x79, -0x7F,0x7F,0x80,0x7C,0x83,0x87,0x84,0x86,0x7E,0x80,0x81,0x7B,0x7D,0x79,0x7F,0x83, -0x80,0x7E,0x76,0x7F,0x7C,0x7A,0x7F,0x79,0x7E,0x83,0x84,0x84,0x82,0x86,0x84,0x83, -0x85,0x83,0x83,0x88,0x82,0x78,0x7A,0x78,0x7F,0x7A,0x7E,0x7F,0x7D,0x83,0x7E,0x84, -0x80,0x80,0x7E,0x72,0x72,0x78,0x7A,0x7D,0x7F,0x83,0x84,0x89,0x89,0x86,0x83,0x84, -0x80,0x80,0x7F,0x79,0x79,0x7F,0x81,0x7F,0x80,0x87,0x82,0x82,0x7F,0x7D,0x7B,0x7B, -0x78,0x74,0x7A,0x81,0x81,0x83,0x7F,0x7F,0x7E,0x7E,0x7B,0x78,0x7B,0x7C,0x7C,0x78, -0x77,0x7C,0x81,0x8B,0x89,0x8E,0x8A,0x8A,0x8C,0x83,0x81,0x81,0x87,0x87,0x84,0x85, -0x82,0x81,0x80,0x7D,0x78,0x7A,0x78,0x74,0x7B,0x7D,0x81,0x84,0x82,0x80,0x7A,0x7E, -0x80,0x83,0x83,0x82,0x82,0x80,0x7E,0x7C,0x7C,0x7B,0x7C,0x80,0x81,0x86,0x8B,0x84, -0x83,0x86,0x85,0x83,0x84,0x84,0x87,0x8A,0x8A,0x86,0x88,0x8E,0x8D,0x8D,0x8D,0x83, -0x7E,0x7D,0x7A,0x78,0x73,0x72,0x77,0x7B,0x7C,0x7A,0x7C,0x7E,0x7F,0x83,0x84,0x83, -0x83,0x82,0x81,0x82,0x81,0x7E,0x7E,0x82,0x84,0x88,0x89,0x89,0x8A,0x87,0x82,0x7C, -0x78,0x78,0x76,0x75,0x75,0x76,0x7A,0x7D,0x80,0x83,0x85,0x85,0x82,0x7B,0x78,0x77, -0x78,0x7A,0x7C,0x7F,0x7D,0x7A,0x7A,0x78,0x79,0x7C,0x7E,0x7F,0x81,0x84,0x86,0x87, -0x86,0x81,0x80,0x7E,0x7D,0x80,0x82,0x83,0x80,0x7D,0x7A,0x77,0x79,0x79,0x78,0x7C, -0x7E,0x7E,0x7D,0x7B,0x7D,0x7F,0x83,0x85,0x82,0x83,0x82,0x81,0x7F,0x7C,0x82,0x89, -0x8A,0x85,0x82,0x82,0x85,0x8A,0x88,0x81,0x7B,0x7A,0x7A,0x7B,0x78,0x7A,0x7F,0x84, -0x86,0x85,0x85,0x84,0x83,0x82,0x7F,0x7D,0x7F,0x80,0x81,0x84,0x83,0x81,0x7F,0x80, -0x88,0x89,0x87,0x84,0x85,0x86,0x88,0x88,0x84,0x80,0x81,0x83,0x88,0x82,0x7F,0x81, -0x81,0x7E,0x76,0x76,0x78,0x7B,0x81,0x7F,0x80,0x83,0x85,0x82,0x81,0x80,0x7D,0x7D, -0x79,0x7C,0x81,0x83,0x82,0x7C,0x7D,0x7D,0x7E,0x83,0x82,0x7E,0x7D,0x7A,0x7F,0x82, -0x86,0x89,0x8A,0x88,0x82,0x83,0x83,0x81,0x80,0x7F,0x82,0x80,0x7D,0x7E,0x78,0x7B, -0x7B,0x7A,0x80,0x81,0x84,0x84,0x80,0x7F,0x7B,0x7D,0x7F,0x7D,0x7B,0x7D,0x7F,0x83, -0x81,0x7E,0x81,0x82,0x83,0x80,0x7C,0x7B,0x7D,0x82,0x7F,0x7C,0x7E,0x81,0x86,0x85, -0x86,0x85,0x82,0x82,0x7E,0x7C,0x7C,0x7D,0x7F,0x7B,0x75,0x76,0x7A,0x7D,0x7F,0x7F, -0x80,0x7E,0x7B,0x7C,0x7D,0x81,0x81,0x81,0x82,0x80,0x81,0x81,0x84,0x83,0x82,0x81, -0x7E,0x7F,0x81,0x82,0x82,0x80,0x7E,0x7D,0x7E,0x80,0x80,0x7F,0x7E,0x7C,0x7B,0x7B, -0x7B,0x7B,0x79,0x7C,0x80,0x80,0x82,0x81,0x7E,0x79,0x79,0x7D,0x7D,0x7F,0x7F,0x81, -0x87,0x8B,0x8A,0x86,0x83,0x84,0x8A,0x8E,0x8D,0x89,0x89,0x89,0x88,0x87,0x86,0x83, -0x83,0x84,0x86,0x84,0x80,0x80,0x81,0x80,0x81,0x82,0x7F,0x78,0x73,0x72,0x6E,0x72, -0x79,0x7F,0x84,0x86,0x85,0x83,0x83,0x88,0x88,0x89,0x85,0x7E,0x7D,0x7E,0x81,0x81, -0x84,0x88,0x87,0x85,0x84,0x84,0x84,0x81,0x7B,0x7A,0x7D,0x85,0x88,0x85,0x85,0x82, -0x84,0x84,0x82,0x83,0x80,0x7F,0x7F,0x7B,0x75,0x70,0x70,0x72,0x78,0x7E,0x7E,0x80, -0x82,0x7F,0x7C,0x7B,0x7C,0x7B,0x7D,0x7B,0x79,0x79,0x7A,0x79,0x7D,0x81,0x82,0x83, -0x83,0x85,0x83,0x80,0x7F,0x7F,0x85,0x83,0x80,0x7E,0x7A,0x80,0x83,0x85,0x84,0x7D, -0x7B,0x7A,0x80,0x7F,0x7E,0x7D,0x7B,0x7D,0x79,0x80,0x85,0x86,0x83,0x7C,0x7C,0x76, -0x78,0x7B,0x7C,0x7D,0x7B,0x84,0x83,0x88,0x8C,0x8B,0x88,0x85,0x83,0x80,0x7E,0x7E, -0x7C,0x7C,0x7F,0x83,0x83,0x8A,0x8A,0x8B,0x8C,0x88,0x84,0x79,0x77,0x74,0x74,0x7A, -0x7B,0x7D,0x80,0x81,0x81,0x80,0x7E,0x7F,0x83,0x82,0x81,0x81,0x80,0x82,0x83,0x85, -0x84,0x89,0x85,0x89,0x87,0x82,0x81,0x7E,0x83,0x82,0x81,0x82,0x7B,0x7F,0x82,0x81, -0x87,0x85,0x85,0x88,0x8B,0x89,0x86,0x7F,0x78,0x78,0x7A,0x7B,0x7A,0x7C,0x7D,0x7C, -0x7B,0x77,0x7B,0x80,0x80,0x7C,0x7A,0x7A,0x7A,0x81,0x85,0x80,0x81,0x82,0x86,0x8A, -0x88,0x88,0x85,0x80,0x80,0x7E,0x7E,0x7D,0x7C,0x7F,0x83,0x88,0x8C,0x8E,0x8B,0x84, -0x7E,0x7B,0x7C,0x7C,0x7C,0x7B,0x78,0x78,0x79,0x79,0x79,0x7A,0x7A,0x77,0x74,0x74, -0x76,0x78,0x7D,0x81,0x81,0x82,0x82,0x82,0x83,0x81,0x80,0x81,0x84,0x86,0x87,0x89, -0x88,0x83,0x7D,0x76,0x7A,0x7F,0x80,0x7F,0x7E,0x7E,0x80,0x83,0x84,0x81,0x82,0x80, -0x7A,0x77,0x76,0x73,0x72,0x74,0x78,0x7D,0x81,0x83,0x84,0x85,0x81,0x7E,0x7C,0x7D, -0x7F,0x7E,0x7E,0x80,0x82,0x86,0x8B,0x8F,0x8E,0x89,0x84,0x81,0x80,0x80,0x7B,0x7A, -0x7E,0x82,0x84,0x84,0x88,0x89,0x87,0x82,0x7A,0x75,0x75,0x78,0x7C,0x7D,0x7B,0x7D, -0x81,0x86,0x85,0x83,0x84,0x81,0x82,0x83,0x84,0x8A,0x8E,0x91,0x90,0x90,0x8C,0x87, -0x85,0x82,0x7D,0x7C,0x78,0x78,0x7B,0x80,0x86,0x87,0x86,0x82,0x82,0x82,0x7F,0x7F, -0x7A,0x79,0x7A,0x7C,0x7C,0x7B,0x80,0x7D,0x7B,0x7B,0x77,0x7A,0x7B,0x7E,0x83,0x85, -0x87,0x88,0x87,0x83,0x7E,0x7E,0x82,0x81,0x80,0x7E,0x7F,0x81,0x80,0x7D,0x7C,0x7E, -0x81,0x7F,0x7B,0x78,0x7A,0x7E,0x7D,0x7F,0x81,0x83,0x86,0x83,0x82,0x7E,0x7D,0x7D, -0x79,0x75,0x75,0x78,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x80,0x7A,0x7C,0x7D,0x82,0x81, -0x80,0x80,0x7F,0x83,0x84,0x84,0x83,0x7F,0x7E,0x7D,0x7F,0x7E,0x7B,0x7C,0x7B,0x7C, -0x7E,0x7F,0x80,0x80,0x80,0x82,0x83,0x83,0x84,0x85,0x88,0x89,0x87,0x85,0x81,0x7F, -0x7D,0x7A,0x7B,0x7B,0x7A,0x7A,0x7C,0x80,0x81,0x83,0x84,0x85,0x83,0x83,0x84,0x83, -0x7F,0x7E,0x80,0x81,0x82,0x81,0x82,0x82,0x7F,0x7B,0x79,0x7A,0x7C,0x7D,0x80,0x82, -0x85,0x87,0x88,0x89,0x89,0x87,0x83,0x80,0x83,0x85,0x84,0x81,0x7E,0x7D,0x7D,0x7F, -0x81,0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x81,0x7F,0x7F,0x7C,0x7C,0x80,0x80,0x7E, -0x7F,0x81,0x81,0x85,0x85,0x81,0x81,0x7E,0x7E,0x80,0x83,0x84,0x82,0x85,0x89,0x86, -0x88,0x88,0x85,0x83,0x80,0x7F,0x82,0x82,0x83,0x80,0x7A,0x78,0x79,0x7F,0x7D,0x7B, -0x7D,0x79,0x79,0x75,0x73,0x73,0x78,0x7F,0x7F,0x83,0x84,0x81,0x82,0x80,0x7F,0x80, -0x7F,0x82,0x84,0x83,0x85,0x83,0x82,0x82,0x7F,0x7E,0x7D,0x80,0x81,0x81,0x7F,0x7F, -0x81,0x83,0x83,0x7F,0x7A,0x78,0x76,0x74,0x74,0x73,0x75,0x76,0x79,0x7C,0x7C,0x7B, -0x7D,0x80,0x82,0x81,0x7E,0x7F,0x81,0x82,0x83,0x82,0x86,0x85,0x86,0x86,0x82,0x82, -0x7F,0x82,0x85,0x87,0x87,0x85,0x89,0x87,0x84,0x7E,0x7D,0x7F,0x7C,0x7C,0x7A,0x7C, -0x7E,0x7D,0x7F,0x7F,0x81,0x84,0x85,0x86,0x84,0x84,0x7F,0x7E,0x81,0x84,0x88,0x87, -0x86,0x83,0x82,0x81,0x80,0x7F,0x7B,0x7D,0x7F,0x80,0x82,0x84,0x86,0x87,0x89,0x8A, -0x86,0x86,0x84,0x85,0x83,0x84,0x83,0x81,0x80,0x7B,0x79,0x7B,0x7A,0x79,0x76,0x77, -0x7C,0x7D,0x80,0x80,0x82,0x87,0x87,0x85,0x81,0x7F,0x83,0x82,0x81,0x82,0x80,0x80, -0x80,0x7D,0x7B,0x7D,0x80,0x84,0x83,0x81,0x80,0x82,0x85,0x83,0x80,0x81,0x80,0x7E, -0x7B,0x77,0x77,0x76,0x76,0x76,0x76,0x75,0x77,0x7C,0x7E,0x7F,0x7D,0x7E,0x80,0x81, -0x81,0x82,0x84,0x86,0x84,0x84,0x85,0x86,0x86,0x84,0x82,0x80,0x7E,0x7C,0x7B,0x7E, -0x7F,0x7E,0x7E,0x7F,0x81,0x83,0x84,0x82,0x7F,0x7C,0x7B,0x7E,0x82,0x83,0x83,0x82, -0x7F,0x7A,0x77,0x79,0x7E,0x81,0x80,0x7E,0x7F,0x7F,0x7D,0x7B,0x7B,0x7F,0x82,0x82, -0x81,0x80,0x7F,0x7B,0x7B,0x7F,0x82,0x85,0x87,0x89,0x8A,0x89,0x87,0x86,0x86,0x81, -0x7C,0x7D,0x7D,0x7D,0x7C,0x79,0x79,0x7A,0x80,0x87,0x88,0x87,0x85,0x84,0x80,0x7D, -0x7A,0x79,0x7D,0x82,0x84,0x81,0x7F,0x82,0x85,0x89,0x87,0x81,0x7D,0x78,0x77,0x78, -0x7B,0x7F,0x82,0x87,0x86,0x86,0x88,0x88,0x85,0x7E,0x7C,0x7E,0x84,0x85,0x85,0x87, -0x85,0x84,0x81,0x7F,0x7C,0x7D,0x82,0x82,0x82,0x82,0x82,0x83,0x85,0x82,0x80,0x7F, -0x7E,0x80,0x81,0x80,0x7D,0x7A,0x7A,0x7D,0x84,0x88,0x87,0x84,0x81,0x80,0x80,0x7F, -0x7B,0x7A,0x7B,0x7B,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x84,0x82,0x7F,0x7F,0x7F,0x7D, -0x7D,0x7F,0x82,0x84,0x85,0x86,0x83,0x7E,0x78,0x74,0x73,0x72,0x73,0x76,0x79,0x7C, -0x80,0x81,0x7E,0x7D,0x7E,0x81,0x83,0x83,0x80,0x7C,0x7A,0x7B,0x7E,0x83,0x85,0x86, -0x85,0x83,0x7E,0x7A,0x78,0x7A,0x7F,0x82,0x83,0x7F,0x7D,0x7B,0x7A,0x7A,0x7B,0x7E, -0x7F,0x7F,0x81,0x80,0x7F,0x80,0x82,0x85,0x87,0x87,0x85,0x82,0x80,0x7F,0x80,0x82, -0x84,0x85,0x88,0x88,0x85,0x86,0x86,0x84,0x80,0x7C,0x7D,0x80,0x81,0x80,0x7E,0x7E, -0x7F,0x80,0x81,0x81,0x7F,0x80,0x80,0x7D,0x7D,0x7E,0x83,0x86,0x83,0x81,0x7E,0x81, -0x85,0x84,0x84,0x88,0x88,0x8C,0x8B,0x89,0x87,0x86,0x86,0x83,0x7F,0x7C,0x7A,0x78, -0x78,0x79,0x7C,0x7E,0x81,0x80,0x7E,0x7B,0x7E,0x81,0x7F,0x7F,0x80,0x81,0x82,0x82, -0x80,0x80,0x7D,0x80,0x80,0x7E,0x7B,0x7A,0x7A,0x7C,0x7C,0x81,0x85,0x87,0x88,0x8A, -0x89,0x88,0x82,0x7F,0x81,0x81,0x82,0x7E,0x7B,0x7B,0x7A,0x79,0x79,0x78,0x7A,0x7B, -0x7D,0x7D,0x79,0x78,0x7D,0x83,0x86,0x85,0x83,0x84,0x85,0x85,0x84,0x83,0x83,0x81, -0x7E,0x7B,0x7A,0x7A,0x7A,0x7B,0x7E,0x81,0x82,0x82,0x80,0x7D,0x7A,0x7A,0x7B,0x7D, -0x7E,0x7E,0x80,0x82,0x85,0x85,0x82,0x81,0x7D,0x7A,0x78,0x79,0x7D,0x81,0x84,0x85, -0x85,0x85,0x85,0x85,0x83,0x7F,0x7C,0x7C,0x81,0x86,0x87,0x85,0x82,0x82,0x80,0x7F, -0x7D,0x7A,0x7B,0x7E,0x80,0x7D,0x7B,0x7C,0x7C,0x7D,0x7B,0x7A,0x7C,0x7E,0x7E,0x7B, -0x7B,0x7E,0x82,0x84,0x82,0x80,0x81,0x83,0x84,0x84,0x83,0x82,0x83,0x84,0x84,0x83, -0x85,0x8A,0x8E,0x8E,0x89,0x85,0x84,0x83,0x83,0x82,0x81,0x80,0x80,0x7F,0x80,0x82, -0x82,0x7F,0x7D,0x7C,0x7D,0x7E,0x7D,0x7B,0x7B,0x7C,0x7F,0x80,0x81,0x82,0x84,0x83, -0x81,0x7E,0x7D,0x81,0x86,0x87,0x86,0x87,0x86,0x86,0x84,0x84,0x84,0x85,0x85,0x83, -0x81,0x7F,0x7A,0x77,0x78,0x7D,0x84,0x87,0x85,0x82,0x80,0x80,0x7F,0x7B,0x77,0x76, -0x7A,0x7C,0x7B,0x77,0x76,0x79,0x7B,0x7C,0x7B,0x7B,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F, -0x7F,0x7F,0x7E,0x7E,0x82,0x86,0x86,0x86,0x85,0x83,0x80,0x7F,0x7F,0x7C,0x77,0x73, -0x75,0x7B,0x82,0x86,0x87,0x84,0x80,0x7D,0x7C,0x7C,0x7A,0x78,0x76,0x78,0x7A,0x7B, -0x7E,0x81,0x81,0x7F,0x7E,0x7F,0x81,0x82,0x82,0x83,0x86,0x87,0x87,0x86,0x84,0x82, -0x83,0x85,0x84,0x81,0x80,0x82,0x83,0x84,0x84,0x83,0x84,0x83,0x81,0x7E,0x7D,0x7E, -0x7F,0x80,0x80,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x81,0x81,0x80,0x7F,0x80,0x82,0x83, -0x83,0x82,0x81,0x81,0x82,0x82,0x81,0x82,0x82,0x82,0x81,0x81,0x83,0x86,0x89,0x89, -0x87,0x84,0x81,0x80,0x81,0x83,0x83,0x80,0x7F,0x80,0x81,0x81,0x7F,0x7E,0x7D,0x7F, -0x81,0x81,0x7E,0x7B,0x79,0x79,0x7B,0x7C,0x7E,0x7E,0x7C,0x7A,0x79,0x7A,0x7C,0x7E, -0x7E,0x7E,0x82,0x86,0x89,0x88,0x88,0x87,0x87,0x89,0x89,0x8A,0x89,0x85,0x84,0x83, -0x82,0x7F,0x7C,0x7A,0x79,0x78,0x77,0x76,0x77,0x79,0x7B,0x7C,0x7D,0x7F,0x7F,0x79, -0x74,0x73,0x75,0x79,0x7E,0x82,0x85,0x86,0x87,0x87,0x88,0x86,0x84,0x82,0x81,0x80, -0x7E,0x7E,0x81,0x84,0x85,0x84,0x83,0x83,0x84,0x81,0x7C,0x78,0x77,0x77,0x76,0x77, -0x78,0x77,0x77,0x79,0x7D,0x7E,0x7D,0x7D,0x7E,0x81,0x83,0x81,0x7F,0x80,0x80,0x7F, -0x7E,0x7E,0x80,0x83,0x85,0x85,0x84,0x81,0x7F,0x7E,0x7F,0x82,0x86,0x89,0x89,0x85, -0x80,0x7E,0x7E,0x7E,0x7D,0x7F,0x84,0x88,0x88,0x87,0x84,0x81,0x81,0x83,0x84,0x82, -0x7E,0x7B,0x7A,0x7B,0x7D,0x81,0x83,0x82,0x82,0x81,0x7F,0x7D,0x7D,0x7F,0x82,0x85, -0x86,0x86,0x86,0x83,0x81,0x82,0x85,0x89,0x8A,0x8B,0x8A,0x8A,0x87,0x81,0x7F,0x7F, -0x80,0x80,0x7F,0x80,0x82,0x82,0x83,0x84,0x83,0x80,0x7E,0x80,0x80,0x7E,0x7A,0x79, -0x7A,0x7B,0x7B,0x78,0x76,0x76,0x76,0x77,0x78,0x7A,0x7D,0x81,0x85,0x89,0x8B,0x8B, -0x89,0x87,0x84,0x81,0x7E,0x7B,0x79,0x7A,0x7D,0x80,0x82,0x82,0x81,0x80,0x7F,0x7D, -0x7A,0x7A,0x78,0x76,0x75,0x77,0x7B,0x7E,0x7E,0x7E,0x7F,0x80,0x7F,0x7B,0x78,0x77, -0x78,0x7D,0x81,0x81,0x80,0x81,0x82,0x82,0x83,0x87,0x8A,0x8B,0x8A,0x86,0x81,0x7F, -0x7F,0x7E,0x7B,0x78,0x78,0x7B,0x7F,0x80,0x7F,0x7F,0x7E,0x7F,0x82,0x83,0x82,0x83, -0x83,0x80,0x80,0x82,0x84,0x80,0x7B,0x7B,0x7F,0x83,0x83,0x82,0x82,0x82,0x81,0x81, -0x81,0x80,0x7F,0x7C,0x78,0x79,0x7D,0x81,0x85,0x88,0x88,0x86,0x85,0x84,0x86,0x87, -0x86,0x85,0x83,0x83,0x85,0x85,0x85,0x85,0x84,0x84,0x83,0x7F,0x7A,0x78,0x79,0x7A, -0x7B,0x7D,0x81,0x85,0x89,0x89,0x85,0x80,0x7D,0x79,0x78,0x77,0x76,0x77,0x79,0x7B, -0x7D,0x80,0x82,0x85,0x87,0x88,0x88,0x88,0x87,0x86,0x85,0x84,0x83,0x85,0x87,0x85, -0x81,0x81,0x81,0x81,0x81,0x7F,0x7D,0x7C,0x7E,0x7F,0x80,0x81,0x81,0x7F,0x7D,0x7D, -0x80,0x80,0x80,0x7F,0x7E,0x7A,0x76,0x75,0x79,0x7B,0x79,0x79,0x7C,0x81,0x85,0x86, -0x84,0x81,0x80,0x81,0x82,0x81,0x7F,0x7D,0x7D,0x7F,0x80,0x7F,0x80,0x80,0x81,0x80, -0x7F,0x7F,0x80,0x7F,0x7C,0x7C,0x7D,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x7C,0x7A,0x79, -0x78,0x77,0x76,0x77,0x77,0x7A,0x7D,0x81,0x85,0x84,0x84,0x83,0x82,0x85,0x86,0x84, -0x80,0x7F,0x82,0x86,0x89,0x89,0x86,0x83,0x80,0x7C,0x79,0x78,0x7A,0x7F,0x80,0x7F, -0x7E,0x7E,0x7E,0x7D,0x7C,0x7B,0x7B,0x7C,0x7E,0x7F,0x7F,0x80,0x83,0x85,0x84,0x84, -0x86,0x86,0x84,0x84,0x86,0x8A,0x8B,0x8A,0x8A,0x8A,0x8A,0x8C,0x8C,0x8A,0x87,0x83, -0x80,0x80,0x82,0x84,0x84,0x84,0x83,0x81,0x80,0x7D,0x7B,0x79,0x78,0x76,0x78,0x78, -0x77,0x78,0x7C,0x7F,0x80,0x82,0x81,0x80,0x7C,0x7A,0x7C,0x7F,0x82,0x83,0x85,0x88, -0x8B,0x8D,0x8C,0x8B,0x88,0x85,0x84,0x82,0x81,0x7E,0x7D,0x7C,0x7C,0x7E,0x7E,0x7E, -0x7E,0x7F,0x7F,0x7E,0x7A,0x76,0x75,0x76,0x77,0x78,0x7A,0x7C,0x7B,0x78,0x76,0x78, -0x7B,0x7E,0x7D,0x7D,0x7E,0x7F,0x80,0x83,0x85,0x85,0x83,0x82,0x82,0x84,0x85,0x86, -0x86,0x83,0x7E,0x79,0x77,0x79,0x79,0x79,0x7A,0x7D,0x80,0x80,0x80,0x82,0x82,0x83, -0x83,0x82,0x81,0x81,0x81,0x81,0x82,0x85,0x87,0x85,0x82,0x7E,0x7B,0x7A,0x7C,0x7D, -0x7A,0x78,0x79,0x7D,0x7F,0x7E,0x7F,0x81,0x83,0x83,0x82,0x82,0x83,0x84,0x85,0x84, -0x83,0x83,0x84,0x85,0x86,0x86,0x83,0x7F,0x7E,0x80,0x81,0x81,0x80,0x7E,0x7D,0x7E, -0x82,0x85,0x86,0x88,0x88,0x86,0x81,0x7C,0x7B,0x7C,0x7D,0x7B,0x7A,0x7C,0x7E,0x7E, -0x7C,0x79,0x78,0x7A,0x80,0x84,0x85,0x84,0x85,0x87,0x8A,0x8D,0x8E,0x8B,0x87,0x83, -0x80,0x7F,0x80,0x7E,0x7C,0x7B,0x7C,0x7E,0x80,0x81,0x82,0x81,0x7F,0x7D,0x7D,0x7E, -0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7D,0x7E,0x81,0x83,0x84,0x85,0x85,0x85,0x85,0x83, -0x82,0x81,0x80,0x80,0x80,0x80,0x81,0x82,0x82,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7B, -0x79,0x79,0x7C,0x7E,0x7D,0x7C,0x7C,0x7B,0x79,0x77,0x77,0x77,0x78,0x7A,0x7D,0x80, -0x83,0x86,0x86,0x85,0x81,0x80,0x81,0x85,0x87,0x84,0x7F,0x7D,0x7D,0x7E,0x7E,0x7E, -0x80,0x81,0x81,0x80,0x80,0x7F,0x7E,0x7C,0x7B,0x7A,0x79,0x7B,0x7B,0x7B,0x79,0x78, -0x7A,0x7E,0x82,0x82,0x81,0x7F,0x7C,0x7A,0x79,0x7B,0x7D,0x80,0x83,0x85,0x87,0x88, -0x88,0x87,0x88,0x87,0x86,0x86,0x85,0x85,0x85,0x84,0x83,0x83,0x83,0x81,0x80,0x81, -0x83,0x83,0x85,0x85,0x84,0x80,0x7D,0x7A,0x77,0x74,0x76,0x7A,0x7F,0x83,0x84,0x84, -0x84,0x85,0x84,0x80,0x7C,0x7A,0x7B,0x7E,0x82,0x87,0x8B,0x8D,0x8E,0x8D,0x8A,0x85, -0x81,0x7F,0x7D,0x7D,0x80,0x85,0x88,0x89,0x88,0x87,0x85,0x83,0x82,0x80,0x7A,0x76, -0x74,0x73,0x74,0x76,0x78,0x7B,0x7E,0x7F,0x7F,0x7E,0x7F,0x7E,0x7C,0x7C,0x80,0x84, -0x85,0x82,0x80,0x80,0x84,0x88,0x8C,0x8C,0x88,0x84,0x82,0x82,0x80,0x7C,0x7B,0x7B, -0x7B,0x77,0x74,0x74,0x74,0x75,0x79,0x7D,0x81,0x82,0x80,0x7E,0x7E,0x80,0x80,0x7F, -0x7E,0x7C,0x7B,0x7E,0x83,0x87,0x87,0x84,0x82,0x81,0x82,0x83,0x82,0x7F,0x7C,0x7A, -0x7A,0x7E,0x82,0x84,0x84,0x84,0x83,0x81,0x7F,0x7E,0x7D,0x7C,0x7D,0x7C,0x7D,0x7E, -0x7E,0x7E,0x7E,0x7F,0x7F,0x7D,0x7B,0x79,0x79,0x7C,0x81,0x83,0x84,0x87,0x88,0x86, -0x84,0x83,0x81,0x80,0x7F,0x7F,0x80,0x82,0x82,0x81,0x80,0x7F,0x7E,0x7E,0x7E,0x82, -0x86,0x88,0x88,0x86,0x84,0x7F,0x7B,0x7A,0x79,0x78,0x78,0x7A,0x7C,0x7E,0x82,0x85, -0x87,0x85,0x81,0x7F,0x7C,0x7B,0x7C,0x7E,0x80,0x82,0x85,0x89,0x8E,0x91,0x8F,0x88, -0x84,0x81,0x81,0x81,0x7F,0x7F,0x80,0x82,0x84,0x85,0x85,0x82,0x80,0x7E,0x7D,0x7E, -0x7D,0x7C,0x7A,0x79,0x78,0x7A,0x7E,0x83,0x86,0x89,0x88,0x84,0x82,0x80,0x7F,0x7F, -0x80,0x83,0x86,0x87,0x86,0x85,0x84,0x82,0x80,0x7C,0x7A,0x79,0x7C,0x7F,0x81,0x80, -0x80,0x83,0x86,0x83,0x7F,0x7C,0x7A,0x78,0x77,0x77,0x79,0x7B,0x7E,0x7E,0x7A,0x76, -0x74,0x76,0x7C,0x82,0x85,0x86,0x88,0x89,0x89,0x88,0x85,0x80,0x7C,0x79,0x77,0x77, -0x79,0x7A,0x7B,0x7C,0x7F,0x81,0x82,0x81,0x7E,0x7B,0x79,0x7B,0x7D,0x7D,0x7C,0x7B, -0x7D,0x7F,0x80,0x82,0x82,0x80,0x7D,0x7C,0x7C,0x7E,0x80,0x82,0x82,0x81,0x80,0x80, -0x80,0x7F,0x7E,0x7F,0x81,0x82,0x82,0x83,0x86,0x89,0x8A,0x87,0x83,0x80,0x7D,0x7A, -0x79,0x7B,0x7E,0x80,0x83,0x87,0x8B,0x8A,0x85,0x7F,0x7E,0x7E,0x7F,0x81,0x82,0x84, -0x86,0x87,0x87,0x86,0x84,0x83,0x82,0x7F,0x7E,0x7F,0x81,0x81,0x7F,0x7E,0x7D,0x7F, -0x83,0x85,0x84,0x81,0x80,0x80,0x80,0x81,0x7F,0x7E,0x7F,0x82,0x82,0x80,0x81,0x84, -0x85,0x83,0x7F,0x7C,0x7C,0x7E,0x80,0x81,0x83,0x86,0x88,0x89,0x87,0x85,0x83,0x81, -0x7F,0x7D,0x7D,0x7D,0x7C,0x7C,0x7D,0x7B,0x7A,0x79,0x7B,0x7B,0x7C,0x7D,0x7C,0x79, -0x79,0x7B,0x80,0x82,0x83,0x83,0x84,0x86,0x85,0x82,0x80,0x81,0x81,0x80,0x80,0x81, -0x81,0x80,0x7F,0x7F,0x81,0x81,0x80,0x80,0x80,0x80,0x7F,0x80,0x7F,0x7E,0x7E,0x7D, -0x7C,0x79,0x78,0x79,0x7A,0x79,0x77,0x78,0x7C,0x80,0x7F,0x7D,0x7D,0x80,0x82,0x83, -0x83,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x83,0x84,0x85,0x86,0x85,0x84,0x80, -0x7B,0x78,0x78,0x79,0x7A,0x7B,0x7C,0x7C,0x7D,0x7D,0x7B,0x7A,0x79,0x7A,0x7D,0x80, -0x81,0x81,0x82,0x85,0x88,0x89,0x88,0x86,0x85,0x83,0x82,0x81,0x7F,0x7D,0x7F,0x81, -0x82,0x84,0x85,0x86,0x86,0x84,0x82,0x84,0x86,0x86,0x84,0x81,0x7F,0x7F,0x7E,0x7D, -0x7D,0x7F,0x7F,0x80,0x80,0x7F,0x80,0x82,0x84,0x86,0x86,0x86,0x86,0x84,0x82,0x81, -0x81,0x83,0x84,0x84,0x84,0x83,0x83,0x85,0x85,0x83,0x81,0x80,0x81,0x82,0x82,0x82, -0x82,0x82,0x82,0x82,0x82,0x81,0x7F,0x7D,0x7C,0x7B,0x7A,0x7A,0x7B,0x7C,0x7D,0x7E, -0x7F,0x7F,0x7E,0x7B,0x79,0x79,0x7B,0x7C,0x7E,0x80,0x82,0x83,0x85,0x85,0x84,0x81, -0x7E,0x7F,0x80,0x7E,0x7A,0x79,0x7B,0x7D,0x7E,0x80,0x82,0x83,0x80,0x7E,0x7C,0x7A, -0x78,0x77,0x76,0x76,0x77,0x79,0x7C,0x7E,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x7F,0x7D, -0x7C,0x7C,0x7C,0x7C,0x7D,0x7F,0x81,0x80,0x7F,0x81,0x84,0x89,0x8A,0x88,0x85,0x83, -0x82,0x80,0x7E,0x7C,0x7A,0x7A,0x7E,0x83,0x85,0x84,0x84,0x85,0x86,0x85,0x83,0x83, -0x83,0x82,0x7E,0x7C,0x7A,0x7A,0x7B,0x7D,0x7F,0x81,0x82,0x83,0x84,0x84,0x83,0x81, -0x80,0x80,0x80,0x82,0x86,0x89,0x88,0x83,0x80,0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x80, -0x82,0x85,0x89,0x8B,0x8B,0x89,0x86,0x83,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x80, -0x7E,0x7C,0x7C,0x7D,0x7E,0x80,0x81,0x80,0x7E,0x7D,0x7B,0x7A,0x7C,0x7E,0x7F,0x80, -0x81,0x83,0x83,0x81,0x7F,0x7E,0x7F,0x80,0x81,0x83,0x83,0x84,0x84,0x83,0x82,0x7F, -0x7D,0x7B,0x7C,0x7E,0x81,0x83,0x83,0x81,0x82,0x85,0x84,0x81,0x7C,0x79,0x79,0x7A, -0x7D,0x7F,0x82,0x85,0x83,0x80,0x7E,0x7E,0x7D,0x7B,0x79,0x77,0x77,0x7B,0x80,0x83, -0x81,0x7F,0x80,0x82,0x84,0x83,0x81,0x81,0x81,0x7F,0x7C,0x7A,0x7A,0x7C,0x7E,0x7F, -0x7F,0x7F,0x7D,0x7A,0x78,0x76,0x74,0x76,0x7A,0x7D,0x80,0x83,0x85,0x84,0x81,0x80, -0x7F,0x7F,0x7F,0x7F,0x81,0x83,0x83,0x82,0x81,0x82,0x82,0x81,0x7F,0x81,0x84,0x83, -0x80,0x7F,0x82,0x85,0x86,0x86,0x85,0x80,0x7B,0x79,0x79,0x7B,0x7D,0x7E,0x7F,0x7D, -0x7B,0x7A,0x7D,0x82,0x84,0x84,0x85,0x85,0x86,0x85,0x83,0x83,0x85,0x86,0x87,0x88, -0x88,0x86,0x84,0x84,0x84,0x84,0x83,0x84,0x85,0x83,0x81,0x83,0x85,0x86,0x85,0x84, -0x82,0x80,0x7F,0x7F,0x7F,0x7E,0x7F,0x81,0x83,0x84,0x84,0x81,0x7E,0x7C,0x7B,0x7A, -0x7B,0x7F,0x82,0x83,0x81,0x7F,0x7F,0x81,0x82,0x81,0x7F,0x7F,0x80,0x81,0x82,0x81, -0x81,0x83,0x82,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7D,0x7C,0x7B,0x79,0x79, -0x7B,0x7D,0x7D,0x7B,0x7A,0x7C,0x7E,0x7F,0x7F,0x7D,0x7A,0x78,0x76,0x75,0x76,0x79, -0x7D,0x80,0x82,0x83,0x83,0x83,0x82,0x80,0x80,0x7F,0x7F,0x80,0x81,0x81,0x80,0x80, -0x83,0x85,0x87,0x86,0x83,0x80,0x7C,0x79,0x75,0x75,0x78,0x7D,0x7F,0x7F,0x7F,0x82, -0x86,0x87,0x86,0x84,0x81,0x7E,0x7A,0x77,0x74,0x76,0x7C,0x80,0x83,0x86,0x89,0x8C, -0x8C,0x8A,0x87,0x86,0x85,0x82,0x80,0x7E,0x7C,0x7D,0x7F,0x81,0x83,0x84,0x83,0x82, -0x81,0x81,0x80,0x7E,0x7D,0x7D,0x7E,0x80,0x81,0x82,0x84,0x86,0x85,0x84,0x83,0x81, -0x7F,0x7D,0x7D,0x7E,0x80,0x82,0x83,0x84,0x85,0x85,0x85,0x85,0x82,0x7F,0x7D,0x7C, -0x7B,0x7A,0x79,0x79,0x7B,0x7F,0x82,0x86,0x88,0x88,0x85,0x81,0x81,0x81,0x82,0x82, -0x81,0x81,0x81,0x83,0x84,0x82,0x81,0x80,0x81,0x81,0x81,0x80,0x80,0x81,0x83,0x85, -0x85,0x82,0x80,0x80,0x80,0x7E,0x7B,0x7A,0x7D,0x7F,0x80,0x7D,0x7C,0x7B,0x7A,0x78, -0x78,0x7A,0x7E,0x81,0x83,0x85,0x87,0x88,0x86,0x84,0x83,0x80,0x7D,0x7B,0x7A,0x79, -0x78,0x79,0x7C,0x7E,0x81,0x81,0x81,0x80,0x80,0x81,0x82,0x83,0x82,0x81,0x80,0x7F, -0x7E,0x7C,0x7C,0x80,0x82,0x82,0x80,0x7E,0x7C,0x7B,0x7C,0x7D,0x7E,0x7D,0x7C,0x7C, -0x7B,0x7A,0x79,0x7A,0x7B,0x7B,0x7A,0x7C,0x7F,0x81,0x80,0x7F,0x81,0x83,0x82,0x80, -0x7F,0x80,0x80,0x7F,0x7F,0x83,0x87,0x8A,0x89,0x86,0x83,0x82,0x83,0x84,0x83,0x83, -0x84,0x85,0x83,0x80,0x7E,0x7E,0x7D,0x7C,0x7B,0x7A,0x7D,0x81,0x84,0x86,0x86,0x84, -0x83,0x82,0x81,0x80,0x80,0x81,0x83,0x85,0x85,0x87,0x88,0x88,0x86,0x84,0x84,0x83, -0x81,0x7F,0x7E,0x7E,0x7E,0x7F,0x82,0x85,0x86,0x85,0x82,0x80,0x81,0x82,0x81,0x7F, -0x7D,0x7C,0x7E,0x7F,0x7F,0x7F,0x80,0x81,0x83,0x83,0x82,0x82,0x82,0x7F,0x7D,0x7E, -0x7F,0x7F,0x7E,0x7F,0x82,0x83,0x82,0x82,0x83,0x83,0x82,0x81,0x80,0x7D,0x7A,0x7A, -0x7B,0x7C,0x7D,0x7B,0x7A,0x7C,0x7F,0x81,0x81,0x7F,0x7B,0x78,0x79,0x7B,0x7A,0x7A, -0x7C,0x7E,0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7E,0x7E,0x80,0x83,0x85,0x85,0x82,0x80, -0x7F,0x80,0x81,0x81,0x81,0x83,0x85,0x84,0x81,0x7F,0x7D,0x7C,0x7A,0x78,0x7A,0x7C, -0x7E,0x7E,0x7D,0x7D,0x7E,0x81,0x82,0x81,0x7F,0x7E,0x7F,0x7E,0x7B,0x7A,0x7B,0x7C, -0x7D,0x7E,0x81,0x84,0x86,0x86,0x85,0x84,0x82,0x80,0x7F,0x80,0x81,0x81,0x83,0x86, -0x89,0x8B,0x8C,0x8C,0x8A,0x86,0x80,0x7B,0x78,0x79,0x7A,0x7C,0x7D,0x7D,0x7C,0x7E, -0x81,0x82,0x81,0x7F,0x7B,0x79,0x79,0x7C,0x7F,0x83,0x86,0x87,0x87,0x86,0x84,0x83, -0x81,0x81,0x81,0x81,0x81,0x80,0x7F,0x7E,0x80,0x80,0x80,0x7F,0x7F,0x80,0x83,0x87, -0x8A,0x8C,0x8C,0x8A,0x86,0x80,0x7C,0x7A,0x79,0x7B,0x7E,0x81,0x81,0x81,0x81,0x80, -0x7E,0x7E,0x7E,0x80,0x81,0x81,0x81,0x80,0x80,0x82,0x83,0x84,0x83,0x82,0x81,0x80, -0x7E,0x7E,0x7D,0x7C,0x7E,0x81,0x83,0x83,0x81,0x7F,0x7E,0x80,0x83,0x85,0x84,0x81, -0x7D,0x7B,0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x7E,0x7A,0x77,0x76,0x77,0x77, -0x77,0x78,0x7B,0x7D,0x7E,0x7E,0x7F,0x81,0x81,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7E, -0x7F,0x81,0x81,0x82,0x82,0x83,0x84,0x85,0x85,0x83,0x81,0x81,0x82,0x80,0x7D,0x7B, -0x7C,0x7C,0x7C,0x79,0x78,0x79,0x7A,0x7A,0x7A,0x7A,0x7B,0x7C,0x7C,0x7B,0x7C,0x7E, -0x81,0x83,0x85,0x86,0x85,0x83,0x83,0x84,0x85,0x84,0x85,0x86,0x89,0x8B,0x8B,0x89, -0x86,0x85,0x85,0x85,0x84,0x84,0x84,0x85,0x86,0x85,0x83,0x7F,0x7A,0x77,0x78,0x7C, -0x80,0x82,0x82,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7D,0x7C,0x7B,0x7D,0x7F,0x81,0x84, -0x85,0x84,0x84,0x84,0x86,0x85,0x84,0x83,0x83,0x84,0x86,0x8B,0x8D,0x8C,0x88,0x85, -0x82,0x7E,0x7B,0x7A,0x7C,0x7E,0x7F,0x7E,0x7C,0x79,0x78,0x78,0x79,0x79,0x79,0x78, -0x78,0x77,0x77,0x7A,0x7D,0x7F,0x80,0x81,0x83,0x84,0x85,0x85,0x85,0x83,0x83,0x85, -0x87,0x86,0x83,0x81,0x83,0x84,0x83,0x80,0x7F,0x80,0x82,0x81,0x7F,0x7D,0x7B,0x78, -0x76,0x76,0x77,0x77,0x78,0x79,0x79,0x79,0x7B,0x7E,0x81,0x81,0x80,0x7E,0x7C,0x7B, -0x7A,0x79,0x79,0x7B,0x80,0x85,0x89,0x8A,0x89,0x89,0x89,0x87,0x84,0x81,0x7F,0x80, -0x81,0x80,0x7F,0x7F,0x82,0x84,0x85,0x82,0x7D,0x7A,0x78,0x77,0x76,0x75,0x77,0x7B, -0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7D,0x7C,0x7D,0x80,0x82,0x82,0x83,0x85,0x85,0x84, -0x83,0x84,0x86,0x86,0x83,0x81,0x82,0x85,0x86,0x86,0x85,0x84,0x84,0x85,0x85,0x84, -0x82,0x81,0x81,0x82,0x83,0x81,0x7D,0x7B,0x7B,0x7C,0x7E,0x7F,0x7F,0x7F,0x7F,0x80, -0x81,0x84,0x85,0x84,0x83,0x83,0x86,0x88,0x88,0x86,0x85,0x86,0x85,0x85,0x86,0x85, -0x83,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x85,0x83,0x7E,0x7C,0x7C,0x7C,0x7D, -0x7F,0x80,0x81,0x81,0x81,0x7F,0x7E,0x7E,0x7E,0x7D,0x7A,0x77,0x76,0x78,0x7A,0x7D, -0x7F,0x80,0x82,0x85,0x89,0x8A,0x89,0x86,0x81,0x7E,0x7D,0x7D,0x7D,0x7B,0x79,0x76, -0x76,0x78,0x7B,0x7E,0x7F,0x80,0x80,0x7F,0x7B,0x79,0x7B,0x7E,0x7F,0x81,0x81,0x82, -0x81,0x7D,0x7B,0x79,0x79,0x78,0x77,0x78,0x79,0x7B,0x7C,0x7C,0x7E,0x80,0x82,0x83, -0x83,0x83,0x83,0x83,0x82,0x7F,0x7D,0x7C,0x7D,0x7E,0x80,0x84,0x86,0x86,0x85,0x85, -0x86,0x85,0x83,0x81,0x7E,0x7D,0x7D,0x7F,0x81,0x84,0x87,0x89,0x8A,0x8A,0x86,0x81, -0x7F,0x7F,0x7E,0x7D,0x7E,0x80,0x82,0x81,0x80,0x7D,0x7B,0x7A,0x7A,0x7B,0x7C,0x7E, -0x00 -}; diff --git a/boop/trunk/syscalls.c b/boop/trunk/syscalls.c deleted file mode 100644 index eea9557..0000000 --- a/boop/trunk/syscalls.c +++ /dev/null @@ -1,22 +0,0 @@ -/* based on a example-code from Keil for CS G++ */ - -/* for caddr_t (typedef char * caddr_t;) */ -#include - -extern int _bss_end; - -caddr_t _sbrk ( int incr ) -{ - static unsigned char *heap = NULL; - unsigned char *prev_heap; - - if (heap == NULL) { - heap = (unsigned char *)&_bss_end; - } - prev_heap = heap; - /* check removed to show basic approach */ - - heap += incr; - - return (caddr_t) prev_heap; -} diff --git a/boop/trunk/timer/Make.conf b/boop/trunk/timer/Make.conf deleted file mode 100644 index 6a23f8a..0000000 --- a/boop/trunk/timer/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := timerfuncs.c -SRCS := timerirq.c diff --git a/boop/trunk/timer/timerfuncs.c b/boop/trunk/timer/timerfuncs.c deleted file mode 100644 index f7749c1..0000000 --- a/boop/trunk/timer/timerfuncs.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - timerfuncs.c - timer control functions - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "timerfuncs.h" -#include "irq.h" -#include "keyboard.h" - -extern struct CB callbacks[MAX_CB]; -extern unsigned long* timeouts[MAX_TO]; - -void startTimerIRQ(void) -{ - int i; - struct CB *cur_cb; - - for(i=0; istate = SLOT_FREE; - cur_cb->exec = 0; - } - - for(i=0; i PR = 15 - 1 = 0x0e - T0MR0 = 5000; // 1.000.000 Hz / 5000 = 200 Hz = 5 msec intervall time - T0MCR = 0x03; // reset and issue IRQ on TC == MR0 - T0TCR = 0x01; // enable timer - - T0overflow = 0; - - VICVectAddr15 = (unsigned long)&(timerIRQ); - VICVectCntl15 = VIC_SLOT_EN | INT_SRC_TIMER0; - VICIntEnable = INT_TIMER0; -} - -void wait5ms(void) { - - unsigned long x; - - x=T0TC; - while(x==T0TC); - while(x!=T0TC); -} - -void waitus(unsigned long d) { - - unsigned long x,y; - - x=(T0TC+d)%5000; - y= T0overflow; - - if(xT0TC); -} - -unsigned int addTimerCB(cb_fn cb, unsigned short intervall) -{ - int i; - struct CB *cur_cb; - - for(i=0; istate == SLOT_FREE) - { - cur_cb->exec = cb; - cur_cb->intervall = intervall; - cur_cb->cur_intervall = 0; - cur_cb->state = SLOT_HALT | SLOT_USED; - return i; - } - i++; - } - return 0xFF; -} - -unsigned int removeTimerCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state = SLOT_FREE; - return MAX_CB; - } - return 0xFF; -} - -void startCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state &= ~SLOT_HALT; - } -} - -void stopCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state |= SLOT_HALT; - } -} - -void setCBIntervall(unsigned int cb, unsigned short intervall) -{ - if(cb < MAX_CB) - { - callbacks[cb].intervall = intervall; - callbacks[cb].cur_intervall = 0; - } -} - -unsigned char addTimeout(volatile unsigned long* counter, unsigned long value) { - - int i; - - for(i=0; i - - 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 3 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, see . -*/ - -#ifndef TIMERFUNCS_H -#define TIMERFUNCS_H - -//////////////////////////////////////////////// -///@Attention: Timer are using 5msec intervall! -//////////////////////////////////////////////// -#define TIME_MSEC2TICKS(t) (t/5) - -#include "timerirq.h" - -volatile unsigned long T0overflow; - -void startTimerIRQ(void); - -/** -@brief Alocate a timer, set the time but do *NOT* start. - - Use @see startCB to start the timer - -@Param Timer expiry callback, time intervall - -@return index of the allocated timer on success - 0xFF is no timer left -*/ -unsigned int addTimerCB(cb_fn cb, unsigned short intervall); -unsigned int removeTimerCB(unsigned int cb); -void startCB(unsigned int cb); -void stopCB(unsigned int cb); -void setCBIntervall(unsigned int cb, unsigned short intervall); -void wait5ms(void); -void waitus(unsigned long d); -unsigned char addTimeout(volatile unsigned long* counter, unsigned long value); -unsigned char removeTimeout(volatile unsigned long* counter); - -#endif diff --git a/boop/trunk/timer/timerirq.c b/boop/trunk/timer/timerirq.c deleted file mode 100644 index a19cfae..0000000 --- a/boop/trunk/timer/timerirq.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - timerirq.c - timekeeping and calllbacks - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#include "lpc2220.h" -#include "timerirq.h" -#include "timerfuncs.h" -#include "lcd.h" - -struct CB callbacks[MAX_CB]; -unsigned long* timeouts[MAX_TO]; - - -// wird alle 5 ms aufgerufen (s. startTimerIRQ() in timerfuncs) -// bearbeitet eingetragene "timer" -void __attribute__ ((section(".text.fastcode"))) timerIRQ(void) -{ - unsigned int cnt; - struct CB *cur_cb; - - for(cnt=0; cntstate & SLOT_USED) - { - if(!(cur_cb->state & SLOT_HALT)) - { - cur_cb->cur_intervall++; - if(cur_cb->cur_intervall >= cur_cb->intervall) - { - if(cur_cb->exec) - (cur_cb->exec)(cnt); // run callback function - cur_cb->cur_intervall = 0; - } - } - } - } - - for(cnt = 0; cnt < MAX_TO; cnt++) { - if(timeouts[cnt]) { - if(*timeouts[cnt]) - (*timeouts[cnt])--; - else - timeouts[cnt] = 0; - } - } - - if(oldsymbols != symbols) { - volatile cb_fn x; - x=refresh_symbols; - x(0xff); - } - - T0overflow++; - T0IR = 1; -} diff --git a/boop/trunk/timer/timerirq.h b/boop/trunk/timer/timerirq.h deleted file mode 100644 index c39a6ae..0000000 --- a/boop/trunk/timer/timerirq.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - timerirq.h - timekeeping and calllbacks - Copyright (C) 2007 Ch. Klippel - - 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 3 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, see . -*/ - -#ifndef TIMERIRQ_H -#define TIMERIRQ_H - -#define MAX_CB 32 -#define MAX_TO 10 - -#define SLOT_FREE 0x00 -#define SLOT_USED 0x01 -#define SLOT_HALT 0x02 - -typedef void(*cb_fn)(unsigned int cb); - -typedef struct CB -{ - unsigned int state; - unsigned short cur_intervall; - unsigned short intervall; - cb_fn exec; -} CB; - -void __attribute__ ((section(".text.fastcode"))) timerIRQ (void); - -#endif diff --git a/boop/trunk/tools/Make.conf b/boop/trunk/tools/Make.conf deleted file mode 100644 index 1ed1f58..0000000 --- a/boop/trunk/tools/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := toolsmenu.c scart_icp.c diff --git a/boop/trunk/tools/scart_icp.c b/boop/trunk/tools/scart_icp.c deleted file mode 100644 index 3bc6cb2..0000000 --- a/boop/trunk/tools/scart_icp.c +++ /dev/null @@ -1,715 +0,0 @@ -/* - 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 3 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, see . -*/ -#ifndef DEBUGMODE - #define USE_SCART_ICP 1 -#endif - -#include "lpc2220.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" - -#if USE_SCART_ICP - -#include "scart_icp.h" -#include "scart_image.h" - - - -/* The portpins (P0.x) to use to connect to scart */ -#define PIN_RST (1<<14) /* Portpin P0.14 to RST/P1.5 on Scart */ -#define PIN_PDA (1<<1) /* Portpin P0.1 to PDA/P0.4 on Scart */ -#define PIN_PCL (1<<0) /* Portpin P0.0 to PCL/P0.5 on Scart */ - -/* bit mask for port value and direction register */ -#define PORT_MASK (PIN_RST | PIN_PDA | PIN_PCL) -/* bit mask for pin function select register */ -#define PINSEL_MASK (((PIN_RST*PIN_RST) | (PIN_PDA*PIN_PDA) | (PIN_PCL*PIN_PCL)) * 3) - - -/* Definitions of the ICP commands/opcodes */ -/* see http://www.zlgmcu.com/philips/yingrong/lpc900/LPC900_ICP_Spec_en.pdf */ -#define OP_NOP 0x00 /* NOP */ -#define OP_WR_FMADRL 0x08 /* Write address low command */ -#define OP_RD_FMADRL 0x09 /* Read address low command */ -#define OP_WR_FMADRH 0x0A /* Write address high command */ -#define OP_RD_FMADRH 0x0B /* Read address high command */ -#define OP_WR_FMCON 0x0E /* Write a command to FMCON */ -#define OP_RD_FMCON 0x0F /* Read a command from FMCON */ -#define OP_WR_FMDATA_PG 0x14 /* Write a command to FMDATA and increment address */ -#define OP_RD_FMDATA_PG 0x15 /* Read a command from FMDATA and increment address */ -#define OP_WR_FMDATA 0x0C /* Write a command to FMDATA */ -#define OP_RD_FMDATA 0x0D /* Read a command from FMDATA */ -#define OP_WR_FMDATA_I 0x04 /* Write a command to FMDATA and increment address */ -#define OP_RD_FMDATA_I 0x05 /* Read a command from FMDATA and increment address */ - -#define CMD_LOAD 0x00 /* Clear and then load the page register */ -#define CMD_PROG 0x48 /* Program page with page register command */ -#define CMD_ERS_G 0x72 /* Erase global command */ -#define CMD_ERS_S 0x71 /* Erase sector command */ -#define CMD_ERS_P 0x70 /* Erase page command */ -#define CMD_CONF 0x6C /* Accesses user configuration information addressed by FMADRL */ -#define CMD_CRC_G 0x1A /* Calculate CRC on the entire user code command */ -#define CMD_CRC_S 0x19 /* Calculate CRC on a sector command */ -#define CMD_CCP 0x67 /* Clear configuration protection */ - -#define ADR_UCFG1 0x00 /* User Configuration Reg. #1 */ -#define ADR_UCFG2 0x01 /* User Configuration Reg. #2 */ -#define ADR_BootVector 0x02 /* Bootvector */ -#define ADR_StatusByte 0x03 /* Status Byte */ -#define ADR_SEC0 0x08 /* Security byte, sector 0 */ -#define ADR_SEC1 0x09 /* Security byte, sector 1 */ -#define ADR_SEC2 0x0A /* Security byte, sector 2 */ -#define ADR_SEC3 0x0B /* Security byte, sector 3 */ -#define ADR_SEC4 0x0C /* Security byte, sector 4 */ -#define ADR_SEC5 0x0D /* Security byte, sector 5 */ -#define ADR_SEC6 0x0E /* Security byte, sector 6 */ -#define ADR_SEC7 0x0F /* Security byte, sector 7 */ -#define ADR_MFGID 0x10 /* Manufacturer ID */ -#define ADR_ID1 0x11 /* Device ID 1 */ -#define ADR_ID2 0x12 /* Device ID 2 */ - - -/* Scart's flash memory attributes */ -#define PAGE_SIZE 64 /* flash page size of LPC931 */ -#define SECTOR_SIZE 1024 /* flash sector size of LPC931 */ - - -/* saved pin configuration for later restore */ -static unsigned int savedPinsel0, savedPindir0, savedPin0; - - -/**************************************************************************/ -/* icp_init() */ -/* Purpose: Initialize the portpins for use as ICP */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_init() -{ - /* save the current pin configuration */ - savedPinsel0 = PINSEL0; - savedPindir0 = FIODIR0; - savedPin0 = FIOPIN0; - - /* setup all used pins as GPIO, output, low */ - PINSEL0 &= ~PINSEL_MASK; - FIODIR0 |= (PIN_RST | PIN_PDA | PIN_PCL); - FIOCLR0 = (PIN_RST | PIN_PDA | PIN_PCL); -} - -/**************************************************************************/ -/* icp_close() */ -/* Purpose: Configure the portpins as they was before used for ICP */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_close() -{ - /* restore the saved pin configuration */ - PINSEL0 = (PINSEL0 & ~PINSEL_MASK) | (savedPinsel0 & PINSEL_MASK); - FIODIR0 = (FIODIR0 & ~PORT_MASK) | (savedPindir0 & PORT_MASK); - FIOPIN0 = (FIOPIN0 & ~PORT_MASK) | (savedPin0 & PORT_MASK); -} - -/**************************************************************************/ -/* icp_wait_us() */ -/* Purpose: Wait some us */ -/* Input: time: the time to wait in us */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_wait_us(int time) -{ - int start; - - /* use Timer0, which increments every 1us and rollover at T0MR0 */ - start = T0TC; - if ((start + time) < T0MR0) - { - while (T0TC < (start + time)); - } - else - { - while ((T0TC < (start + time - T0MR0)) || (T0TC >= start)); - } -} - -/**************************************************************************/ -/* icp_wait_ns() */ -/* Purpose: Wait some ns */ -/* Input: time: the time to wait in ns */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_wait_ns(int time) -{ - int i; - - /* inaccurate, but okay */ - for (i=0; i<(time>>4); i++); -} - -/**************************************************************************/ -/* icp_mode_entry() */ -/* Purpose: Bring the scart's CPU into ICP mode */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_mode_entry() -{ - int i; - - /* see ICP spec */ - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_RST; - icp_wait_us(10); - FIOSET0 = PIN_RST; - icp_wait_us(10); - } - icp_wait_us(50); -} - -/**************************************************************************/ -/* icp_mode_exit() */ -/* Purpose: Bring the scart's CPU out of ICP mode, reset CPU */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_mode_exit() -{ - FIOCLR0 = (PIN_RST | PIN_PDA | PIN_PCL); -} - -/**************************************************************************/ -/* icp_shift_out() */ -/* Purpose: Shift out one byte to scart */ -/* Input: val: byte to shift out */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_shift_out(unsigned char val) -{ - int i; - - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_PCL; - icp_wait_ns(50); - if (val & 1) - { - FIOSET0 = PIN_PDA; - } - else - { - FIOCLR0 = PIN_PDA; - } - val >>= 1; - icp_wait_ns(50); - FIOSET0 = PIN_PCL; - icp_wait_ns(100); - } - icp_wait_ns(100); -} - -/**************************************************************************/ -/* icp_shift_in() */ -/* Purpose: Shift in one byte from scart */ -/* Input: - */ -/* Output: - */ -/* Return: byte shifted in */ -/**************************************************************************/ -static unsigned char icp_shift_in() -{ - int i; - unsigned char val; - - /* configure pin as input */ - FIODIR0 &= ~PIN_PDA; - val = 0; - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_PCL; - icp_wait_ns(100); - val >>= 1; - val |= ((FIOPIN0 & PIN_PDA) ? 0x80 : 0); - FIOSET0 = PIN_PCL; - icp_wait_ns(100); - } - /* configure pin as output */ - FIODIR0 |= PIN_PDA; - icp_wait_ns(100); - return val; -} - -/**************************************************************************/ -/* icp_read_config_byte() */ -/* Purpose: Read a configuration byte from scart */ -/* Input: adr: address of the config byte */ -/* Output: - */ -/* Return: value of the config byte */ -/**************************************************************************/ -static unsigned char icp_read_config_byte(unsigned char adr) -{ - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CONF); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr); - icp_shift_out(OP_RD_FMDATA); - return icp_shift_in(); -} - -/**************************************************************************/ -/* icp_write_config_byte() */ -/* Purpose: Write a configuration byte to scart */ -/* Input: adr: address of the config byte */ -/* val: value of the config byte */ -/* Output: - */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_write_config_byte(unsigned char adr, unsigned char val) -{ - unsigned char status; - - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CONF); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr); - icp_shift_out(OP_WR_FMDATA); - icp_shift_out(val); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -/**************************************************************************/ -/* icp_calc_sector_crc() */ -/* Purpose: Calculate the CRC of one sector */ -/* Input: adr: start address of the sector */ -/* Output: crc: value of the CRC */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_calc_sector_crc(unsigned short adr, unsigned int *pcrc) -{ - int i; - unsigned char status; - - icp_shift_out(OP_WR_FMADRH); - icp_shift_out(adr>>8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CRC_S); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - if (status & 0x8F) return (status & 0x8F); - - *pcrc = 0; - for (i=0; i<4; i++) - { - icp_shift_out(OP_RD_FMDATA_I); - *pcrc >>= 8; - *pcrc |= (unsigned int)icp_shift_in() << 24; - } - return 0; -} - -/**************************************************************************/ -/* icp_load_page_register() */ -/* Purpose: Load the page registers with bytes */ -/* Input: adr: start address of the bytes in the flash */ -/* pval: pointer to the bytes to load */ -/* nbytes: number of bytes to load */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_load_page_register(unsigned short adr, const unsigned char *pval, unsigned char nbytes) -{ - int i; - - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_LOAD); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr & 0xFF); - icp_shift_out(OP_WR_FMDATA_PG); - for (i=0; i> 8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_PROG); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -/**************************************************************************/ -/* icp_erase_sector() */ -/* Purpose: Erase one flash sector */ -/* Input: adr: start address of the sector in the flash */ -/* Output: - */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_erase_sector(unsigned short adr) -{ - unsigned char status; - - icp_shift_out(OP_WR_FMADRH); - icp_shift_out(adr >> 8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_ERS_S); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -void scart_icp_header(void) { - set_font(BOLDFONT); - draw_string(0, 0, "Scart ICP", 3, DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - draw_block(0,149,128,2,3,DRAW_PUT); - set_font(SMALLFONT); -} - -/**************************************************************************/ -/* scart_icp() */ -/* Purpose: Use ICP to program an image into scart's flash */ -/* and read some infos from scart */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -void scart_icp(void) -{ - int i; - unsigned short offs, addr, blklen; - unsigned int err, crc_sc, crc_im, tap, poly, crcf; - unsigned char data; - - - set_font(SMALLFONT); - - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Um Schaeden an der Betty", 3, DRAW_PUT); - draw_string(0, 29, "und am Scart-Adapter zu", 3, DRAW_PUT); - draw_string(0, 38, "vermeiden, folgen Sie", 3, DRAW_PUT); - draw_string(0, 47, "bitte den Anweisungen!", 3, DRAW_PUT); - draw_string(0, 56, "Entfernen Sie alle", 3, DRAW_PUT); - draw_string(0, 65, "Kabel von der Betty!", 3, DRAW_PUT); - draw_string(0, 74, "Druecken Sie dann OK.", 3, DRAW_PUT); - draw_string(0, 83, "Oder druecken Sie EXIT", 3, DRAW_PUT); - draw_string(0, 92, "um jetzt abzubrechen.", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_OK && !KEY_Exit); - - if (KEY_Exit) return; - - /* init port pins */ - icp_init(); - - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Trennen Sie zuerst die", 3, DRAW_PUT); - draw_string(0, 29, "Stromversorgung des", 3, DRAW_PUT); - draw_string(0, 38, "SCART-Adapters.", 3, DRAW_PUT); - draw_string(0, 47, "Verbinden Sie danach die", 3, DRAW_PUT); - draw_string(0, 56, "Betty mit dem SCART-", 3, DRAW_PUT); - draw_string(0, 65, "Adapter. Schliessen Sie", 3, DRAW_PUT); - draw_string(0, 74, "dann die Stromversorgung", 3, DRAW_PUT); - draw_string(0, 83, "des SCART-Adapters", 3, DRAW_PUT); - draw_string(0, 92, "wieder an.", 3, DRAW_PUT); - draw_string(0, 101, "Druecken Sie dann OK.", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_OK); - - /* bring scart into ICP mode */ - icp_mode_entry(); - - while (1) - { - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Druecken Sie eine Taste", 3, DRAW_PUT); - draw_string(0, 40, "1 Lese Config-Bytes", 3, DRAW_PUT); - draw_string(0, 49, "2 Programmiere Image", 3, DRAW_PUT); - draw_string(0, 58, "3 Vergleiche CRCs", 3, DRAW_PUT); - draw_string(0, 67, "4 Schreibe Config-Bytes", 3, DRAW_PUT); - draw_string(0, 84, "Exit Beenden", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_Exit && !KEY_1 && !KEY_2 && !KEY_3 && !KEY_4); - - lcd_fill(0); - scart_icp_header(); - if (KEY_Exit) break; - - if (KEY_1) - { /* show all config bytes */ - draw_string(0, 14, "UCFG1 & 2", 3, DRAW_PUT); - draw_hexC (60, 14, icp_read_config_byte(ADR_UCFG1), 3, DRAW_PUT); - draw_hexC (80, 14, icp_read_config_byte(ADR_UCFG2), 3, DRAW_PUT); - draw_string(0, 23, "BootVector", 3, DRAW_PUT); - draw_hexC (60, 23, icp_read_config_byte(ADR_BootVector), 3, DRAW_PUT); - draw_string(0, 32, "StatusByte", 3, DRAW_PUT); - draw_hexC (60, 32, icp_read_config_byte(ADR_StatusByte), 3, DRAW_PUT); - draw_string(0, 41, "SEC0", 3, DRAW_PUT); - draw_hexC (60, 41, icp_read_config_byte(ADR_SEC0), 3, DRAW_PUT); - draw_string(0, 50, "SEC1", 3, DRAW_PUT); - draw_hexC (60, 50, icp_read_config_byte(ADR_SEC1), 3, DRAW_PUT); - draw_string(0, 59, "SEC2", 3, DRAW_PUT); - draw_hexC (60, 59, icp_read_config_byte(ADR_SEC2), 3, DRAW_PUT); - draw_string(0, 68, "SEC3", 3, DRAW_PUT); - draw_hexC (60, 68, icp_read_config_byte(ADR_SEC3), 3, DRAW_PUT); - draw_string(0, 77, "SEC4", 3, DRAW_PUT); - draw_hexC (60, 77, icp_read_config_byte(ADR_SEC4), 3, DRAW_PUT); - draw_string(0, 86, "SEC5", 3, DRAW_PUT); - draw_hexC (60, 86, icp_read_config_byte(ADR_SEC5), 3, DRAW_PUT); - draw_string(0, 95, "SEC6", 3, DRAW_PUT); - draw_hexC (60, 95, icp_read_config_byte(ADR_SEC6), 3, DRAW_PUT); - draw_string(0, 104, "SEC7", 3, DRAW_PUT); - draw_hexC (60, 104, icp_read_config_byte(ADR_SEC7), 3, DRAW_PUT); - draw_string(0, 113, "MFGID", 3, DRAW_PUT); - draw_hexC (60, 113, icp_read_config_byte(ADR_MFGID), 3, DRAW_PUT); - draw_string(0, 122, "ID1", 3, DRAW_PUT); - draw_hexC (60, 122, icp_read_config_byte(ADR_ID1), 3, DRAW_PUT); - draw_string(0, 131, "ID2", 3, DRAW_PUT); - draw_hexC (60, 131, icp_read_config_byte(ADR_ID2), 3, DRAW_PUT); - } - - if (KEY_2) - { /* erase sectors and program image */ - draw_string(0, 20, "Loesche", 3, DRAW_PUT); - - /* only erase first 7 sectors, not all! */ - for (i=0; i<7; i++) - { - draw_block (0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "Sektor", 3, DRAW_PUT); - draw_numU (40, 29, i, 0, 3, DRAW_PUT); - err = icp_erase_sector(i*SECTOR_SIZE); - if (err) break; - } - - if (!err) - { - lcd_fill(0); - draw_string(0, 20, "Programmiere", 3, DRAW_PUT); - } - - offs = 0; - addr = scart_image_startaddr; - while (!err && (offs < sizeof(scart_image))) - { - blklen = (addr | (PAGE_SIZE-1)) + 1 - addr; - if ((sizeof(scart_image) - offs) < blklen) - { - blklen = sizeof(scart_image) - offs; - } - - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_hexS (0, 29, addr, 3, DRAW_PUT); - - icp_load_page_register(addr, &scart_image[offs], blklen); - err = icp_prog_page_register(addr); - - addr += blklen; - offs += blklen; - } - - if (!err) - { - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "BootVector", 3, DRAW_PUT); - err = icp_write_config_byte(ADR_BootVector, scart_bootvec); - } - if (!err) - { - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "StatusByte", 3, DRAW_PUT); - err = icp_write_config_byte(ADR_StatusByte, scart_bootstat); - } - if (err) - { - draw_string(0, 40, "Fehler", 3, DRAW_PUT); - draw_hexC (40, 40, err, 3, DRAW_PUT); - } - else - { - draw_string(0, 40, "OK", 3, DRAW_PUT); - } - } - - if (KEY_3) - { /* compare CRC of all programmed sectors */ - draw_string(0, 20, "Vergleiche", 3, DRAW_PUT); - err = 0; - crc_sc = 0; - offs = 0; - addr = scart_image_startaddr; - while (!err && (offs < sizeof(scart_image))) - { - blklen = (addr | (SECTOR_SIZE-1)) + 1 - addr; - if ((sizeof(scart_image) - offs) < blklen) - { - blklen = sizeof(scart_image) - offs; - } - - draw_block (0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "Sektor @", 3, DRAW_PUT); - draw_hexS (44, 29, addr, 3, DRAW_PUT); - - /* calculate CRC from scart */ - err = icp_calc_sector_crc(addr, &crc_sc); - - /* calculate CRC from image */ - poly = 0x00400007; - crc_im = tap = 0; - for (i=0; i. -*/ - - -#ifndef SCART_ICP -#define SCART_ICP - -extern void scart_icp(void); - -#endif diff --git a/boop/trunk/tools/scart_image.h b/boop/trunk/tools/scart_image.h deleted file mode 100644 index 52887f1..0000000 --- a/boop/trunk/tools/scart_image.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - 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 3 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, see . -*/ - -/* bootstat register */ -const unsigned char scart_bootstat = 0x01; - -/* bootvec register, high byte of the reset vector */ -const unsigned char scart_bootvec = 0x00; - -/* address of the first byte of scart_image to program to */ -const unsigned short scart_image_startaddr = 0x0000; - -/* from betty_scart.bin SVN #14 */ -/* truncated to a size of 0x1C00 = 7168 to preserve the content of the last flash sector */ -#include "scart_image_data.h" diff --git a/boop/trunk/tools/scart_image_data.h b/boop/trunk/tools/scart_image_data.h deleted file mode 100644 index 514f01c..0000000 --- a/boop/trunk/tools/scart_image_data.h +++ /dev/null @@ -1,484 +0,0 @@ -// Array representation of binary file betty_scart.bin - - -const unsigned char scart_image[] = -{ - 0x02,0x00,0x73,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x02,0x03,0xf7,0xff,0xff,0xff,0xff,0xff,0x32,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02, - 0x09,0x90,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x02,0x04,0x46,0x12,0x00,0xdb,0x80,0xfe,0x75,0x81,0xac,0x12,0x0d, - 0x0e,0xe5,0x82,0x60,0x03,0x02,0x00,0x6e,0x79,0x00,0xe9,0x44,0x00,0x60,0x1b, - 0x7a,0x00,0x90,0x0d,0xd3,0x78,0x00,0x75,0xa0,0x00,0xe4,0x93,0xf2,0xa3,0x08, - 0xb8,0x00,0x02,0x05,0xa0,0xd9,0xf4,0xda,0xf2,0x75,0xa0,0xff,0xe4,0x78,0xff, - 0xf6,0xd8,0xfd,0x78,0x00,0xe8,0x44,0x00,0x60,0x0a,0x79,0x00,0x75,0xa0,0x00, - 0xe4,0xf3,0x09,0xd8,0xfc,0x78,0x00,0xe8,0x44,0x00,0x60,0x0c,0x79,0x00,0x90, - 0x00,0x00,0xe4,0xf0,0xa3,0xd8,0xfc,0xd9,0xfa,0x75,0x08,0x00,0x75,0x09,0x00, - 0x75,0x22,0x00,0x75,0x23,0x05,0x02,0x00,0x6e,0x53,0x84,0x6c,0x43,0x85,0x92, - 0x75,0x80,0x83,0x53,0x91,0x3e,0x43,0x92,0xcd,0x75,0x90,0xcd,0x53,0xb1,0xfe, - 0x43,0xb2,0x01,0x75,0xb0,0x00,0x12,0x0c,0xd3,0x12,0x03,0x12,0x12,0x09,0x77, - 0x12,0x09,0x84,0xd2,0xaf,0x90,0x0d,0x12,0x75,0xf0,0x80,0x12,0x03,0x2c,0x90, - 0x0d,0x15,0x75,0xf0,0x80,0x12,0x03,0x2c,0x90,0x0d,0x12,0x75,0xf0,0x80,0x12, - 0x03,0x2c,0xd2,0x00,0x7a,0x00,0x30,0x01,0x2b,0x74,0xc6,0x25,0x09,0x50,0x0f, - 0x85,0x22,0x28,0x75,0x82,0x3a,0xc0,0x02,0x12,0x07,0x2e,0xd0,0x02,0x80,0xe8, - 0xe5,0x09,0x60,0xe4,0x30,0x8d,0xe1,0x85,0x22,0x28,0x85,0x09,0x82,0xc0,0x02, - 0x12,0x07,0x2e,0xd0,0x02,0x80,0xd2,0x20,0x00,0x03,0x02,0x02,0x63,0xc3,0xea, - 0x95,0x09,0x50,0xc6,0x8a,0x82,0x0a,0xc0,0x02,0x12,0x04,0xe1,0xab,0x82,0xd0, - 0x02,0xbb,0x0d,0x02,0x80,0x03,0x02,0x02,0x57,0x90,0x0d,0x12,0x75,0xf0,0x80, - 0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0xea,0x25,0x08,0x14,0x54,0x3f,0x24,0x2d, - 0xf8,0x76,0x00,0xc0,0x02,0x12,0x04,0x92,0xab,0x82,0xd0,0x02,0xda,0x03,0x02, - 0x02,0x36,0xbb,0x62,0x02,0x80,0x62,0xbb,0x63,0x02,0x80,0x54,0xbb,0x72,0x02, - 0x80,0x29,0xbb,0x73,0x02,0x80,0x41,0xbb,0x74,0x02,0x80,0x05,0xbb,0x77,0x65, - 0x80,0x57,0xe5,0x09,0x60,0x6c,0x8a,0x82,0x12,0x06,0xb8,0x7a,0x00,0x90,0x0d, - 0x12,0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x56,0xe5,0x09, - 0x60,0x52,0x75,0x28,0x00,0x8a,0x82,0x12,0x07,0x2e,0x7a,0x00,0x90,0x0d,0x1b, - 0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x39,0xc0,0x02,0x12, - 0x08,0x9d,0xd0,0x02,0x80,0x30,0xc0,0x02,0x12,0x07,0xd1,0xd0,0x02,0x80,0x27, - 0xc2,0x00,0x75,0x82,0x01,0xc0,0x02,0x12,0x03,0xad,0xd0,0x02,0x80,0x19,0x75, - 0x82,0x00,0xc0,0x02,0x12,0x0c,0x55,0xd0,0x02,0x80,0x0d,0x90,0x0d,0x23,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x8a,0x04,0xec,0x60,0x1b,0xc0, - 0x04,0x12,0x04,0x92,0xd0,0x04,0x1c,0x8c,0x02,0x80,0xf1,0x90,0x0d,0x15,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x02,0x8c,0x02,0x90,0x0d, - 0x12,0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x02,0x01,0x23,0x8b, - 0x82,0xc0,0x02,0x12,0x03,0xad,0xd0,0x02,0x02,0x01,0x23,0xe5,0x09,0x70,0x03, - 0x02,0x01,0x23,0xc0,0x02,0x12,0x04,0x92,0xab,0x82,0xd0,0x02,0xeb,0x24,0xf8, - 0x40,0x60,0xeb,0x2b,0x2b,0x90,0x02,0x7f,0x73,0x02,0x02,0x97,0x02,0x02,0x99, - 0x02,0x02,0xa2,0x02,0x02,0xab,0x02,0x02,0xb4,0x02,0x02,0xbd,0x02,0x02,0xc6, - 0x02,0x02,0xcf,0x80,0x49,0xc0,0x02,0x12,0x07,0x7d,0xd0,0x02,0x80,0x40,0xc0, - 0x02,0x12,0x09,0x68,0xd0,0x02,0x80,0x37,0xc0,0x02,0x12,0x08,0xc1,0xd0,0x02, - 0x80,0x2e,0xc0,0x02,0x12,0x08,0xdb,0xd0,0x02,0x80,0x25,0xc0,0x02,0x12,0x08, - 0xf5,0xd0,0x02,0x80,0x1c,0xc0,0x02,0x12,0x09,0x2d,0xd0,0x02,0x80,0x13,0xc0, - 0x02,0x12,0x09,0x71,0xd0,0x02,0x80,0x0a,0x75,0x82,0x00,0xc0,0x02,0x12,0x03, - 0xad,0xd0,0x02,0x30,0x00,0x03,0x02,0x01,0x23,0x75,0x82,0x01,0xc0,0x02,0x12, - 0x03,0xad,0xd0,0x02,0x02,0x01,0x23,0xe5,0x82,0x25,0x82,0x24,0x33,0xfa,0xe4, - 0x34,0x0d,0xfb,0x8a,0x82,0x8b,0x83,0xa3,0xe4,0x93,0xf5,0xbe,0x8a,0x82,0x8b, - 0x83,0xe4,0x93,0xf5,0xbf,0x22,0x75,0x98,0x52,0x43,0xba,0xa0,0x75,0x82,0x07, - 0x12,0x02,0xf5,0x75,0xbd,0x03,0xc2,0x98,0xd2,0xac,0xd2,0x99,0xd2,0xbc,0xd2, - 0xfe,0x22,0xaa,0x82,0xab,0x83,0xac,0xf0,0x7d,0x00,0xed,0x2a,0xfe,0xe4,0x3b, - 0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88,0xf0,0x12,0x0c,0xf2,0x60,0x2b,0x8d, - 0x06,0x0d,0xee,0x2a,0xfe,0xe4,0x3b,0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88, - 0xf0,0x12,0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0x12, - 0x03,0xad,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0x80,0xc2,0x22,0xaa,0x82, - 0xab,0x83,0xac,0xf0,0x7d,0x00,0xc3,0xed,0x95,0x0c,0x50,0x2b,0x8d,0x06,0x0d, - 0xee,0x2a,0xfe,0xe4,0x3b,0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88,0xf0,0x12, - 0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0x12,0x03,0xad, - 0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0x80,0xcf,0x22,0xaa,0x82,0x8a,0x82, - 0xc0,0x02,0x12,0x05,0x06,0xe5,0x82,0xd0,0x02,0x70,0x04,0xd2,0xee,0x80,0xef, - 0xd2,0xee,0x22,0xe5,0x82,0xfa,0xc4,0x54,0x0f,0xfb,0x53,0x03,0x0f,0x74,0x30, - 0x2b,0xfb,0x24,0xc6,0x50,0x04,0x74,0x07,0x2b,0xfb,0x8b,0x82,0xc0,0x02,0x12, - 0x03,0xad,0xd0,0x02,0x74,0x0f,0x5a,0xfb,0x74,0x30,0x2b,0xfb,0x24,0xc6,0x50, - 0x04,0x74,0x07,0x2b,0xfb,0x8b,0x82,0x02,0x03,0xad,0xc0,0x21,0xc0,0xe0,0xc0, - 0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06, - 0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0,0xd0,0x75,0xd0,0x00,0x74,0xc0,0x25,0x09, - 0x40,0x06,0x85,0x99,0x82,0x12,0x04,0xef,0xc2,0x98,0xc2,0x8d,0x75,0x8c,0x00, - 0xd0,0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0, - 0x03,0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32,0xc0, - 0x21,0xc0,0xe0,0xc0,0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02,0xc0,0x03,0xc0,0x04, - 0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0,0xd0,0x75,0xd0,0x00, - 0xe5,0x0b,0x60,0x0a,0x12,0x04,0xad,0x85,0x82,0x99,0xc2,0x99,0x80,0x02,0xc2, - 0xee,0xd0,0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04, - 0xd0,0x03,0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32, - 0x7a,0x00,0xc2,0xaf,0xe5,0x09,0x60,0x0e,0x15,0x09,0xab,0x08,0x05,0x08,0x74, - 0x3f,0x5b,0x24,0x2d,0xf8,0x86,0x02,0xd2,0xaf,0x8a,0x82,0x22,0x7a,0x00,0xc2, - 0xaf,0xe5,0x0b,0x60,0x0e,0x15,0x0b,0xab,0x0a,0x05,0x0a,0x74,0x3f,0x5b,0x24, - 0x6d,0xf8,0x86,0x02,0xd2,0xaf,0x8a,0x82,0x22,0xe5,0x09,0x60,0xfc,0xc2,0xaf, - 0x15,0x09,0xaa,0x08,0x05,0x08,0x74,0x3f,0x5a,0x24,0x2d,0xf8,0x86,0x02,0xd2, - 0xaf,0x8a,0x82,0x22,0xe5,0x82,0x25,0x08,0x54,0x3f,0x24,0x2d,0xf8,0x86,0x02, - 0x8a,0x82,0x22,0xaa,0x82,0x74,0xc0,0x25,0x09,0x40,0x0e,0xab,0x09,0x05,0x09, - 0xeb,0x25,0x08,0x54,0x3f,0x24,0x2d,0xf8,0xa6,0x02,0x22,0xaa,0x82,0xc2,0xaf, - 0x74,0xc0,0x25,0x0b,0x40,0x14,0xab,0x0b,0x05,0x0b,0xeb,0x25,0x0a,0x54,0x3f, - 0x24,0x6d,0xf8,0xa6,0x02,0xd2,0xaf,0x75,0x82,0x01,0x22,0xd2,0xaf,0x75,0x82, - 0x00,0x22,0xaa,0x82,0x7b,0x08,0xeb,0x60,0x10,0xc2,0x97,0xea,0x33,0x92,0x96, - 0xd2,0x97,0xea,0xa2,0x95,0x3a,0xfa,0x1b,0x80,0xed,0xc2,0x97,0x8a,0x82,0x22, - 0x7a,0x00,0xc2,0x96,0xc2,0x97,0x7b,0x08,0xeb,0x60,0x0c,0xd2,0x97,0xea,0xa2, - 0x95,0x3a,0xfa,0xc2,0x97,0x1b,0x80,0xf1,0x8a,0x82,0x22,0xd2,0x97,0xc2,0x96, - 0xc2,0x81,0x7a,0xff,0xea,0x60,0x03,0x1a,0x80,0xfa,0xd2,0x81,0x7a,0xff,0xea, - 0x60,0x03,0x1a,0x80,0xfa,0xc2,0x81,0xc2,0x97,0x20,0x95,0xfd,0x75,0x82,0x30, - 0x12,0x05,0x2a,0x20,0x95,0xfd,0x75,0x82,0x40,0x12,0x05,0x2a,0x7a,0x00,0xba, - 0x2f,0x00,0x50,0x11,0xea,0x90,0x0d,0x47,0x93,0xf5,0x82,0xc0,0x02,0x12,0x05, - 0x2a,0xd0,0x02,0x0a,0x80,0xea,0xd2,0x81,0x75,0x11,0xc0,0x75,0x82,0x3e,0x12, - 0x06,0x07,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0x33,0x12,0x06,0x90,0x75, - 0x82,0x3a,0x12,0x06,0x90,0x75,0x82,0x34,0x02,0x06,0x90,0xaa,0x82,0xc2,0x81, - 0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xaa,0x82,0x7b,0x00,0xc3,0xeb,0x95, - 0x10,0x50,0x23,0xeb,0x25,0x0d,0xfc,0xe4,0x35,0x0e,0xfd,0xae,0x0f,0x8c,0x82, - 0x8d,0x83,0x8e,0xf0,0x12,0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0x12,0x05, - 0x2a,0xd0,0x03,0xd0,0x02,0x0b,0x80,0xd7,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82, - 0xc2,0x81,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xaa,0x82,0x85,0x11,0x82, - 0xc0,0x02,0x12,0x05,0x2a,0xd0,0x02,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0xc2, - 0x81,0x20,0x95,0xfd,0x74,0x80,0x4a,0xf5,0x82,0x12,0x05,0x2a,0xaa,0x82,0x7b, - 0x00,0xac,0x15,0xec,0x60,0x37,0x8b,0x05,0x0b,0xed,0x25,0x12,0xfd,0xe4,0x35, - 0x13,0xfe,0xaf,0x14,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0, - 0x07,0x12,0x05,0x46,0xa8,0x82,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0, - 0x03,0xd0,0x02,0x8d,0x82,0x8e,0x83,0x8f,0xf0,0xe8,0x12,0x0c,0xd9,0x1c,0x80, - 0xc6,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0xc2,0x81,0x20,0x95,0xfd,0x74,0x80, - 0x4a,0xf5,0x82,0x12,0x05,0x2a,0x75,0x82,0x00,0x12,0x05,0x2a,0xd2,0x81,0x22, - 0xaa,0x82,0xc2,0x81,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xd2,0x81,0x22, - 0xaa,0x82,0x10,0x81,0x02,0x80,0x03,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a, - 0xaa,0x82,0x30,0x02,0x02,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0x75,0x82,0x00, - 0xc0,0x02,0x12,0x0c,0x55,0xc2,0xe9,0x75,0x82,0x36,0x12,0x06,0x90,0xd0,0x02, - 0x75,0x82,0xf5,0xc0,0x02,0x12,0x06,0x78,0xab,0x82,0xd0,0x02,0xbb,0x01,0xf1, - 0x74,0x03,0x2a,0xf5,0x24,0x75,0x25,0x00,0x85,0x16,0x26,0x75,0x27,0x01,0x75, - 0x0d,0x24,0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0xc0, - 0x02,0x12,0x05,0xc9,0xc2,0x02,0x75,0x82,0x7f,0x12,0x06,0x9f,0xd0,0x02,0x8a, - 0x03,0x1a,0xeb,0x60,0x0e,0xc0,0x02,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f, - 0xd0,0x02,0x80,0xec,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0xd2,0xe9,0x90, - 0x0d,0x79,0x75,0xf0,0x80,0x02,0x03,0x2c,0xaa,0x82,0x74,0x03,0x2a,0xf5,0x29, - 0x85,0x28,0x2a,0x85,0x16,0x2b,0x75,0x2c,0x05,0xc2,0xe9,0x75,0x0d,0x29,0x75, - 0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0xc0,0x02,0x12,0x05, - 0xc9,0xc2,0x02,0x75,0x82,0x7f,0x12,0x06,0x9f,0xd0,0x02,0x8a,0x03,0x1a,0xeb, - 0x60,0x0e,0xc0,0x02,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f,0xd0,0x02,0x80, - 0xec,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0xd2,0xe9,0x22,0xe5,0x09,0x60, - 0xfc,0x12,0x04,0x92,0xaa,0x82,0xba,0x3e,0x00,0x50,0x40,0xc2,0x02,0x75,0x82, - 0x7f,0xc0,0x02,0x12,0x06,0x9f,0xd0,0x02,0xc2,0x02,0x8a,0x82,0xc0,0x02,0x12, - 0x06,0x9f,0xd0,0x02,0x7b,0x00,0xc3,0xeb,0x9a,0x50,0x17,0xe5,0x09,0x60,0xfc, - 0xc0,0x02,0xc0,0x03,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f,0xd0,0x03,0xd0, - 0x02,0x0b,0x80,0xe4,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0x02,0x0c,0x10, - 0x75,0x82,0x00,0x02,0x03,0xad,0xc2,0x02,0x75,0x82,0xc0,0x12,0x06,0x9f,0x7a, - 0x00,0xba,0x2f,0x00,0x50,0x50,0x90,0x0d,0x81,0x75,0xf0,0x80,0xc0,0x02,0x12, - 0x03,0x2c,0xd0,0x02,0x8a,0x82,0xc0,0x02,0x12,0x03,0xc3,0x90,0x0d,0x88,0x75, - 0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x12,0x03, - 0xc3,0xd0,0x02,0x74,0x03,0x5a,0xfb,0xbb,0x03,0x0f,0x90,0x0d,0x76,0x75,0xf0, - 0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x0d,0x90,0x0d,0x8e,0x75,0xf0, - 0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x0a,0x80,0xab,0xd2,0x81,0x90,0x0d, - 0x76,0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0xfe,0x12,0x06,0x9f, - 0x7a,0x00,0xba,0x08,0x00,0x50,0x50,0x90,0x0d,0x92,0x75,0xf0,0x80,0xc0,0x02, - 0x12,0x03,0x2c,0xd0,0x02,0x8a,0x82,0xc0,0x02,0x12,0x03,0xc3,0x90,0x0d,0x9b, - 0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x12, - 0x03,0xc3,0xd0,0x02,0x74,0x03,0x5a,0xfb,0xbb,0x03,0x0f,0x90,0x0d,0x76,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x0d,0x90,0x0d,0xa2,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x0a,0x80,0xab,0xd2,0x81,0x22, - 0x90,0x0d,0xa5,0x75,0xf0,0x80,0x12,0x03,0x2c,0x75,0x82,0xbd,0x12,0x06,0x90, - 0x12,0x03,0xc3,0x90,0x0d,0xba,0x75,0xf0,0x80,0x12,0x03,0x2c,0x75,0x82,0x3d, - 0x12,0x06,0x90,0x02,0x03,0xc3,0x12,0x04,0xc8,0xaa,0x82,0x74,0x80,0x4a,0xf5, - 0x82,0xc2,0x02,0x12,0x06,0x9f,0xd2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x02, - 0x03,0xad,0x12,0x04,0xc8,0xaa,0x82,0xc2,0x02,0x8a,0x82,0x12,0x06,0x9f,0x30, - 0x98,0xfd,0xaa,0x99,0xc2,0x98,0xd2,0x02,0x8a,0x82,0x02,0x06,0x9f,0x12,0x04, - 0xc8,0xaa,0x82,0xc0,0x02,0x12,0x04,0xc8,0xab,0x82,0x74,0xc0,0x4b,0xf5,0x82, - 0xc2,0x02,0x12,0x06,0x9f,0xd0,0x02,0x7c,0x00,0xc3,0xec,0x9a,0x50,0x16,0xc2, - 0x02,0x75,0x82,0x00,0xc0,0x02,0xc0,0x04,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0, - 0x04,0xd0,0x02,0x0c,0x80,0xe5,0xd2,0x81,0x22,0x12,0x04,0xc8,0xaa,0x82,0xc0, - 0x02,0x12,0x04,0xc8,0xab,0x82,0x74,0x40,0x4b,0xf5,0x82,0xc2,0x02,0x12,0x06, - 0x9f,0xd0,0x02,0x7c,0x00,0xc3,0xec,0x9a,0x50,0x19,0x30,0x98,0xfd,0xab,0x99, - 0xc2,0x98,0xc2,0x02,0x8b,0x82,0xc0,0x02,0xc0,0x04,0x12,0x06,0x9f,0xd0,0x04, - 0xd0,0x02,0x0c,0x80,0xe2,0xd2,0x81,0x22,0x12,0x04,0xc8,0x12,0x06,0x90,0x02, - 0x03,0xad,0x12,0x04,0xc8,0x02,0x0c,0x55,0x12,0x05,0x60,0xc2,0x03,0x90,0x0d, - 0x50,0xe4,0x93,0xf5,0x16,0x22,0x75,0x93,0x40,0x75,0x86,0x40,0x75,0x94,0x02, - 0xd2,0xe9,0x22,0xc0,0x21,0xc0,0xe0,0xc0,0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02, - 0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0, - 0xd0,0x75,0xd0,0x00,0xe5,0x93,0x30,0xe6,0x09,0x75,0x93,0x00,0x75,0x94,0x02, - 0x02,0x0b,0xf3,0x75,0x82,0xfb,0x12,0x06,0x78,0xe5,0x82,0xf5,0x17,0xfa,0x70, - 0x03,0x02,0x0b,0xbd,0xc2,0x04,0xea,0x24,0xfc,0x50,0x14,0x75,0x12,0x17,0x75, - 0x13,0x00,0x75,0x14,0x40,0x75,0x15,0x04,0x75,0x82,0xff,0x12,0x06,0x24,0x80, - 0x11,0x75,0x12,0x17,0x75,0x13,0x00,0x75,0x14,0x40,0x8a,0x15,0x75,0x82,0xff, - 0x12,0x06,0x24,0xe5,0x17,0x24,0xfc,0x40,0x03,0x02,0x0b,0x93,0x20,0x00,0x06, - 0x20,0x01,0x03,0x02,0x0b,0x5d,0xc2,0x05,0xaa,0x1a,0xba,0x02,0x02,0x80,0x0d, - 0xba,0x05,0x02,0x80,0x45,0xba,0x06,0x02,0x80,0x67,0x02,0x0b,0x13,0x75,0x82, - 0xff,0x12,0x06,0x78,0xaa,0x82,0xba,0x01,0x02,0x80,0x03,0x02,0x0b,0x93,0x75, - 0x17,0x04,0xaa,0x19,0x8a,0x18,0x85,0x16,0x19,0x75,0x1a,0x02,0x75,0x0d,0x17, - 0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0x12,0x05,0xc9, - 0x75,0x11,0x02,0x75,0x82,0x7f,0x12,0x06,0x07,0xd2,0x04,0x02,0x0b,0x93,0xc2, - 0x02,0x75,0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95,0x17,0x50,0x12, - 0xc2,0x02,0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0,0x02, - 0x0a,0x80,0xe8,0xd2,0x81,0x02,0x0b,0x93,0x75,0x82,0xff,0x12,0x06,0x78,0xe5, - 0x82,0xfa,0x24,0xfb,0x40,0x4e,0xea,0x2a,0x2a,0x90,0x0a,0x99,0x73,0x02,0x0a, - 0xa8,0x02,0x0a,0xaa,0x02,0x0a,0xc3,0x02,0x0a,0xd2,0x02,0x0a,0xde,0x80,0x36, - 0xe5,0x17,0x24,0xfb,0x50,0x30,0x75,0x82,0xff,0x12,0x06,0x78,0xe5,0x82,0xfa, - 0x24,0xf6,0x40,0x02,0x8a,0x23,0xd2,0x05,0x80,0x1d,0x85,0x19,0x22,0x85,0x23, - 0x82,0x12,0x02,0xf5,0xd2,0x01,0xd2,0x05,0x80,0x0e,0xc2,0x01,0x75,0x82,0x07, - 0x12,0x02,0xf5,0xd2,0x05,0x80,0x02,0xd2,0x05,0x20,0x05,0x03,0x02,0x0b,0x93, - 0x75,0x17,0x04,0xaa,0x19,0x8a,0x18,0x85,0x16,0x19,0x75,0x1a,0x06,0x75,0x0d, - 0x17,0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0x12,0x05, - 0xc9,0x75,0x11,0x00,0x75,0x82,0x7f,0x12,0x06,0x07,0xd2,0x04,0x02,0x0b,0x93, - 0xe5,0x17,0x24,0xfc,0x50,0x7a,0x30,0x00,0x77,0x90,0x0d,0xcb,0x75,0xf0,0x80, - 0x12,0x03,0x2c,0x90,0x0d,0xce,0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75, - 0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95,0x17,0x50,0x12,0xc2,0x02, - 0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0,0x02,0x0a,0x80, - 0xe8,0xd2,0x81,0x90,0x0d,0xcb,0x75,0xf0,0x80,0x12,0x03,0x2c,0x80,0x36,0x75, - 0x82,0x02,0x12,0x03,0xad,0x75,0x0c,0x04,0x90,0x00,0x17,0x75,0xf0,0x40,0x12, - 0x03,0x73,0xc2,0x02,0x75,0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95, - 0x17,0x50,0x12,0xc2,0x02,0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03, - 0xad,0xd0,0x02,0x0a,0x80,0xe8,0xd2,0x81,0x75,0x82,0x36,0x12,0x06,0x90,0x75, - 0x82,0xf5,0x12,0x06,0x78,0xaa,0x82,0xba,0x01,0xf5,0x75,0x82,0x3a,0x12,0x06, - 0x90,0x30,0x04,0x08,0x75,0x82,0x35,0x12,0x06,0x90,0x80,0x38,0x75,0x82,0x34, - 0x12,0x06,0x90,0x80,0x30,0x75,0x82,0xf5,0x12,0x06,0x78,0xaa,0x82,0xba,0x0d, - 0x02,0x80,0x23,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0xf5,0x12,0x06,0x78, - 0xaa,0x82,0xba,0x01,0xf5,0x75,0x82,0x3a,0x12,0x06,0x90,0x75,0x82,0x3b,0x12, - 0x06,0x90,0x75,0x82,0x34,0x12,0x06,0x90,0x75,0x93,0x40,0x75,0x94,0x02,0xd0, - 0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03, - 0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32,0x7a,0x01, - 0xea,0x60,0x3f,0x75,0x82,0x3d,0xc0,0x02,0x12,0x06,0x90,0xe5,0x82,0xd0,0x02, - 0x54,0xf0,0xfb,0x60,0x21,0xbb,0x10,0x02,0x80,0x0f,0xbb,0x70,0xe4,0x75,0x82, - 0x3b,0xc0,0x02,0x12,0x06,0x90,0xd0,0x02,0x80,0xd8,0x30,0x03,0x06,0x75,0x82, - 0x36,0x12,0x06,0x90,0x7a,0x00,0x80,0xcb,0x20,0x03,0x06,0x75,0x82,0x34,0x12, - 0x06,0x90,0x7a,0x00,0x80,0xbe,0x22,0xaa,0x82,0x75,0x1b,0x01,0x8a,0x1c,0xc2, - 0xe9,0xd2,0x03,0x90,0x0d,0x5f,0xe4,0x93,0xfa,0x74,0xcf,0x5a,0xf5,0x11,0x75, - 0x82,0x18,0x12,0x06,0x07,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0x33,0x12, - 0x06,0x90,0x12,0x0c,0x10,0x7a,0x00,0x7b,0x00,0x8a,0x04,0x8b,0x05,0x0a,0xba, - 0x00,0x01,0x0b,0xc3,0xec,0x94,0xfa,0xed,0x94,0x00,0x50,0x25,0x75,0x0d,0x1b, - 0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x02,0x75,0x82,0x7f,0xc0,0x02,0xc0, - 0x03,0x12,0x05,0xc9,0x75,0x82,0x35,0x12,0x06,0x90,0x12,0x0c,0x10,0xd0,0x03, - 0xd0,0x02,0x80,0xc9,0x90,0x0d,0x5f,0xe4,0x93,0xf5,0x11,0x75,0x82,0x18,0x12, - 0x06,0x07,0xc2,0x03,0x12,0x0c,0x10,0x75,0x94,0x02,0xd2,0xe9,0x22,0x43,0x89, - 0x01,0xd2,0x8c,0x22,0x20,0xf7,0x10,0x30,0xf6,0x11,0x88,0x83,0xa8,0x82,0x20, - 0xf5,0x07,0xf6,0xa8,0x83,0x75,0x83,0x00,0x22,0xf2,0x80,0xf7,0xf0,0x22,0x20, - 0xf7,0x14,0x30,0xf6,0x14,0x88,0x83,0xa8,0x82,0x20,0xf5,0x07,0xe6,0xa8,0x83, - 0x75,0x83,0x00,0x22,0xe2,0x80,0xf7,0xe4,0x93,0x22,0xe0,0x22,0x75,0x82,0x00, - 0x22,0x0d,0x0a,0x00,0x52,0x65,0x61,0x64,0x79,0x00,0x54,0x58,0x20,0x44,0x6f, - 0x6e,0x65,0x00,0x53,0x79,0x6e,0x74,0x61,0x78,0x20,0x65,0x72,0x72,0x6f,0x72, - 0x00,0x0d,0x0a,0x00,0x2d,0x1b,0x16,0x85,0x0b,0x3b,0x05,0x95,0x03,0xb4,0x02, - 0xc3,0x01,0xd2,0x01,0x59,0x00,0xe1,0x00,0x68,0x29,0x2e,0x06,0x47,0xd3,0x91, - 0x3e,0x1a,0x45,0x01,0x01,0x06,0x00,0x10,0x0b,0xda,0x8a,0x75,0x13,0x22,0xc1, - 0x35,0x07,0x03,0x38,0x16,0x6c,0x43,0x40,0x91,0x46,0x50,0x78,0x56,0x10,0xa9, - 0x0a,0x00,0x11,0x41,0x00,0x57,0x7f,0x3f,0x98,0x31,0x0b,0x0d,0x0a,0x00,0x54, - 0x58,0x20,0x44,0x6f,0x6e,0x65,0x00,0x52,0x65,0x67,0x20,0x30,0x78,0x00,0x20, - 0x3d,0x20,0x30,0x78,0x00,0x20,0x20,0x20,0x00,0x50,0x41,0x54,0x41,0x42,0x4c, - 0x45,0x5b,0x00,0x5d,0x20,0x3d,0x20,0x30,0x78,0x00,0x20,0x20,0x00,0x43,0x43, - 0x31,0x31,0x30,0x30,0x20,0x52,0x65,0x61,0x64,0x20,0x53,0x74,0x61,0x74,0x75, - 0x73,0x3a,0x20,0x00,0x20,0x20,0x57,0x72,0x69,0x74,0x65,0x20,0x53,0x74,0x61, - 0x74,0x75,0x73,0x3a,0x20,0x00,0x0d,0x0a,0x00,0x52,0x58,0x3a,0x20,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,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -}; diff --git a/boop/trunk/tools/toolsmenu.c b/boop/trunk/tools/toolsmenu.c deleted file mode 100644 index d2b3173..0000000 --- a/boop/trunk/tools/toolsmenu.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - 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 3 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, see . -*/ -#include "global.h" -#include "menu.h" -#include "scart_icp.h" -#include "redirector.h" -#include "fs20.h" - -const struct MENU_ENTRY toolsMenuEntries[] = -{ - { scart_icp, 0, FUNCENTRY, "Scart ICP", "Program the SCART unit" }, // tools/scarticp.c -#if FF_UART_REDIRECT - { uarto_redirector, 0, FUNCENTRY, "Redirector", "Serial redirector" }, // serial/redirector.c -#endif - { fs20_decoder, 0, FUNCENTRY, "FS20 decoder", "FS20 decoder" } // cc1100/fs20.c - -}; - -const struct MENU toolsMenu = -{ - NUM_OF_ELEMENTS (toolsMenuEntries), (MENU_ENTRY*)&toolsMenuEntries, "Tools" -}; diff --git a/boop/trunk/tools/toolsmenu.h b/boop/trunk/tools/toolsmenu.h deleted file mode 100644 index 4411339..0000000 --- a/boop/trunk/tools/toolsmenu.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - 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 3 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, see . -*/ - -#ifndef TOOLSMENU_H -#define TOOLSMENU_H - -extern const struct MENU toolsMenu; - -#endif diff --git a/lpctool/trunk/ChangeLog b/lpctool/ChangeLog similarity index 100% rename from lpctool/trunk/ChangeLog rename to lpctool/ChangeLog diff --git a/lpctool/trunk/Makefile b/lpctool/Makefile similarity index 100% rename from lpctool/trunk/Makefile rename to lpctool/Makefile diff --git a/lpctool/trunk/Makefile.local.WinARM b/lpctool/Makefile.local.WinARM similarity index 100% rename from lpctool/trunk/Makefile.local.WinARM rename to lpctool/Makefile.local.WinARM diff --git a/lpctool/trunk/Makefile.local.linuxARM b/lpctool/Makefile.local.linuxARM similarity index 100% rename from lpctool/trunk/Makefile.local.linuxARM rename to lpctool/Makefile.local.linuxARM diff --git a/lpctool/trunk/bin2h.c b/lpctool/bin2h.c similarity index 100% rename from lpctool/trunk/bin2h.c rename to lpctool/bin2h.c diff --git a/lpctool/trunk/bootcom.c b/lpctool/bootcom.c similarity index 100% rename from lpctool/trunk/bootcom.c rename to lpctool/bootcom.c diff --git a/lpctool/trunk/bootcom.h b/lpctool/bootcom.h similarity index 100% rename from lpctool/trunk/bootcom.h rename to lpctool/bootcom.h diff --git a/boop/trunk/display/fonts/charset.bits b/lpctool/charset.bits similarity index 100% rename from boop/trunk/display/fonts/charset.bits rename to lpctool/charset.bits diff --git a/boop/trunk/display/fonts/charset.info b/lpctool/charset.info similarity index 100% rename from boop/trunk/display/fonts/charset.info rename to lpctool/charset.info diff --git a/lpctool/trunk/crt.s b/lpctool/crt.s similarity index 100% rename from lpctool/trunk/crt.s rename to lpctool/crt.s diff --git a/lpctool/trunk/flash.c b/lpctool/flash.c similarity index 100% rename from lpctool/trunk/flash.c rename to lpctool/flash.c diff --git a/lpctool/trunk/flash.h b/lpctool/flash.h similarity index 100% rename from lpctool/trunk/flash.h rename to lpctool/flash.h diff --git a/lpctool/trunk/fonty.c b/lpctool/fonty.c similarity index 100% rename from lpctool/trunk/fonty.c rename to lpctool/fonty.c diff --git a/lpctool/trunk/fonty.h b/lpctool/fonty.h similarity index 100% rename from lpctool/trunk/fonty.h rename to lpctool/fonty.h diff --git a/lpctool/trunk/infohelper.c b/lpctool/infohelper.c similarity index 100% rename from lpctool/trunk/infohelper.c rename to lpctool/infohelper.c diff --git a/lpctool/trunk/infohelper.h b/lpctool/infohelper.h similarity index 100% rename from lpctool/trunk/infohelper.h rename to lpctool/infohelper.h diff --git a/lpctool/trunk/irq.c b/lpctool/irq.c similarity index 100% rename from lpctool/trunk/irq.c rename to lpctool/irq.c diff --git a/lpctool/trunk/lcd.c b/lpctool/lcd.c similarity index 100% rename from lpctool/trunk/lcd.c rename to lpctool/lcd.c diff --git a/lpctool/trunk/lcd.h b/lpctool/lcd.h similarity index 100% rename from lpctool/trunk/lcd.h rename to lpctool/lcd.h diff --git a/lpctool/trunk/lpc2220.h b/lpctool/lpc2220.h similarity index 100% rename from lpctool/trunk/lpc2220.h rename to lpctool/lpc2220.h diff --git a/lpctool/trunk/lpc2220.ld b/lpctool/lpc2220.ld similarity index 100% rename from lpctool/trunk/lpc2220.ld rename to lpctool/lpc2220.ld diff --git a/lpctool/trunk/lpc2220_rom.ld b/lpctool/lpc2220_rom.ld similarity index 100% rename from lpctool/trunk/lpc2220_rom.ld rename to lpctool/lpc2220_rom.ld diff --git a/lpctool/trunk/lpctool.c b/lpctool/lpctool.c similarity index 100% rename from lpctool/trunk/lpctool.c rename to lpctool/lpctool.c diff --git a/lpctool/trunk/lpctool_serial.c b/lpctool/lpctool_serial.c similarity index 100% rename from lpctool/trunk/lpctool_serial.c rename to lpctool/lpctool_serial.c diff --git a/lpctool/trunk/lpctool_serial.h b/lpctool/lpctool_serial.h similarity index 100% rename from lpctool/trunk/lpctool_serial.h rename to lpctool/lpctool_serial.h diff --git a/lpctool/trunk/ramtool.c b/lpctool/ramtool.c similarity index 100% rename from lpctool/trunk/ramtool.c rename to lpctool/ramtool.c diff --git a/lpctool/trunk/serial.c b/lpctool/serial.c similarity index 100% rename from lpctool/trunk/serial.c rename to lpctool/serial.c diff --git a/lpctool/trunk/serial.h b/lpctool/serial.h similarity index 100% rename from lpctool/trunk/serial.h rename to lpctool/serial.h diff --git a/lpctool/trunk/toolcmd.h b/lpctool/toolcmd.h similarity index 100% rename from lpctool/trunk/toolcmd.h rename to lpctool/toolcmd.h diff --git a/lpctool/trunk/toolcom.c b/lpctool/toolcom.c similarity index 100% rename from lpctool/trunk/toolcom.c rename to lpctool/toolcom.c diff --git a/lpctool/trunk/toolcom.h b/lpctool/toolcom.h similarity index 100% rename from lpctool/trunk/toolcom.h rename to lpctool/toolcom.h diff --git a/lpctool/trunk/charset.bits b/lpctool/trunk/charset.bits deleted file mode 100644 index 307a269..0000000 --- a/lpctool/trunk/charset.bits +++ /dev/null @@ -1,118 +0,0 @@ -const unsigned char charset_bits[] = { - 0x80, 0xc0, 0x80, 0xe0, 0x80, 0xc0, 0x80, 0xf0, 0x01, 0x03, 0x01, 0x07, - 0x01, 0x03, 0x01, 0x0f, 0x80, 0x88, 0xaa, 0xff, 0xff, 0xaa, 0x88, 0x80, - 0x00, 0xc0, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x07, - 0x00, 0x03, 0x00, 0x0f, 0x80, 0x88, 0xaa, 0xab, 0xab, 0xaa, 0x88, 0x80, - 0x80, 0x80, 0x80, 0x70, 0x01, 0x01, 0x01, 0x0e, 0x0e, 0x01, 0x01, 0x01, - 0x70, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x24, - 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x80, - 0x00, 0x80, 0x00, 0x92, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xaa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x81, - 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xaa, 0x02, 0x05, 0x02, 0x00, - 0x3e, 0x41, 0x41, 0x22, 0x02, 0x05, 0x02, 0x00, 0x7f, 0x09, 0x09, 0x01, - 0x1c, 0x22, 0x41, 0x4f, 0x41, 0x22, 0x1c, 0x1c, 0x22, 0x41, 0x4f, 0x47, - 0x22, 0x1c, 0x1c, 0x22, 0x41, 0x4f, 0x4f, 0x2e, 0x1c, 0x1c, 0x22, 0x41, - 0x4f, 0x5f, 0x3e, 0x1c, 0x1c, 0x22, 0x41, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, - 0x22, 0x71, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, 0x3a, 0x79, 0x7f, 0x7f, 0x3e, - 0x1c, 0x1c, 0x3e, 0x7d, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, 0x3e, 0x7f, 0x7f, - 0x7f, 0x3e, 0x1c, 0x00, 0x00, 0x5f, 0x03, 0x00, 0x03, 0x14, 0x7f, 0x14, - 0x7f, 0x14, 0x24, 0x4a, 0xff, 0x4a, 0x32, 0x63, 0x13, 0x08, 0x64, 0x63, - 0x36, 0x49, 0x55, 0x22, 0x50, 0x03, 0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c, - 0x14, 0x08, 0x3e, 0x08, 0x14, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x80, 0x60, - 0x60, 0x08, 0x08, 0x08, 0x08, 0x08, 0x60, 0x60, 0xc0, 0x30, 0x0c, 0x03, - 0x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x42, 0x61, - 0x51, 0x49, 0x46, 0x22, 0x41, 0x49, 0x49, 0x36, 0x18, 0x14, 0x12, 0x7f, - 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3e, 0x49, 0x49, 0x49, 0x32, 0x61, - 0x11, 0x09, 0x05, 0x03, 0x36, 0x49, 0x49, 0x49, 0x36, 0x26, 0x49, 0x49, - 0x49, 0x3e, 0x6c, 0x6c, 0x80, 0x6c, 0x6c, 0x08, 0x14, 0x22, 0x41, 0x14, - 0x14, 0x14, 0x14, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x51, 0x09, 0x06, - 0x3e, 0x41, 0x59, 0x55, 0x5e, 0x7e, 0x09, 0x09, 0x09, 0x7e, 0x7f, 0x49, - 0x49, 0x49, 0x36, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x7f, 0x41, 0x41, 0x41, - 0x3e, 0x7f, 0x49, 0x49, 0x41, 0x41, 0x7f, 0x09, 0x09, 0x01, 0x01, 0x3e, - 0x41, 0x41, 0x49, 0x3a, 0x7f, 0x08, 0x08, 0x08, 0x7f, 0x41, 0x7f, 0x41, - 0x30, 0x41, 0x41, 0x41, 0x3f, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x7f, 0x40, - 0x40, 0x40, 0x40, 0x7f, 0x02, 0x0c, 0x02, 0x7f, 0x7f, 0x02, 0x04, 0x08, - 0x7f, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x7f, 0x09, 0x09, 0x09, 0x06, 0x3e, - 0x41, 0x41, 0x41, 0xbe, 0x7f, 0x09, 0x09, 0x09, 0x76, 0x26, 0x49, 0x49, - 0x49, 0x32, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x3f, - 0x1f, 0x20, 0x40, 0x20, 0x1f, 0x7f, 0x20, 0x10, 0x20, 0x7f, 0x41, 0x22, - 0x1c, 0x22, 0x41, 0x07, 0x08, 0x70, 0x08, 0x07, 0x61, 0x51, 0x49, 0x45, - 0x43, 0x7f, 0x41, 0x41, 0x03, 0x0c, 0x30, 0xc0, 0x41, 0x41, 0x7f, 0x02, - 0x01, 0x02, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x02, 0x20, 0x54, 0x54, - 0x78, 0x7f, 0x48, 0x48, 0x30, 0x38, 0x44, 0x44, 0x24, 0x30, 0x48, 0x48, - 0x7f, 0x38, 0x54, 0x54, 0x18, 0x08, 0x7e, 0x09, 0x02, 0x98, 0xa4, 0xa4, - 0x78, 0x7f, 0x08, 0x08, 0x70, 0x44, 0x7d, 0x40, 0x44, 0x84, 0x7d, 0x7f, - 0x10, 0x28, 0x44, 0x41, 0x7f, 0x40, 0x7c, 0x04, 0x18, 0x04, 0x78, 0x7c, - 0x08, 0x04, 0x78, 0x38, 0x44, 0x44, 0x38, 0xfc, 0x24, 0x24, 0x18, 0x18, - 0x24, 0x24, 0xfc, 0x7c, 0x08, 0x04, 0x08, 0x48, 0x54, 0x54, 0x24, 0x04, - 0x3f, 0x44, 0x3c, 0x40, 0x20, 0x7c, 0x1c, 0x20, 0x40, 0x20, 0x1c, 0x3c, - 0x40, 0x30, 0x40, 0x3c, 0x44, 0x28, 0x10, 0x28, 0x44, 0x9c, 0xa0, 0xa0, - 0x7c, 0x64, 0x54, 0x54, 0x4c, 0x08, 0x36, 0x41, 0x77, 0x41, 0x36, 0x08, - 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x00, 0x00, - 0x00, 0xdf, 0xdf, 0x07, 0x07, 0x00, 0x07, 0x07, 0x14, 0x3e, 0x14, 0x3e, - 0x14, 0x24, 0x4a, 0xff, 0x4a, 0x32, 0xf3, 0xfb, 0x18, 0xdf, 0xc7, 0x36, - 0x49, 0x55, 0x22, 0x50, 0x04, 0x07, 0x03, 0x3c, 0x7e, 0xc3, 0x81, 0x81, - 0xc3, 0x7e, 0x3c, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x18, 0x7e, 0x7e, 0x18, - 0x80, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x18, 0x60, 0x60, 0xc0, 0xf0, - 0x3c, 0x0f, 0x03, 0x7e, 0xff, 0xc3, 0xff, 0x7e, 0x04, 0xc6, 0xff, 0xff, - 0xc0, 0xe6, 0xf7, 0xd3, 0xdf, 0xce, 0x42, 0xc3, 0xdb, 0xff, 0x76, 0x38, - 0x3c, 0x36, 0xff, 0xff, 0x5f, 0xdf, 0xdb, 0xfb, 0x73, 0x7e, 0xff, 0xdb, - 0xfb, 0x72, 0x03, 0xf3, 0xfb, 0x0f, 0x07, 0x76, 0xff, 0xdb, 0xff, 0x76, - 0x4e, 0xdf, 0xdb, 0xff, 0x7e, 0x6c, 0x6c, 0x80, 0x6c, 0x6c, 0x18, 0x3c, - 0x66, 0xc3, 0x81, 0x36, 0x36, 0x36, 0x36, 0x81, 0xc3, 0x66, 0x3c, 0x18, - 0x06, 0xd3, 0xd9, 0x0f, 0x06, 0x7e, 0xc3, 0xdb, 0xd7, 0xde, 0xfe, 0xff, - 0x33, 0xff, 0xfe, 0xff, 0xff, 0xdb, 0xff, 0x66, 0x7e, 0xff, 0xc3, 0xe7, - 0x66, 0xff, 0xff, 0xc3, 0xff, 0x7e, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xff, - 0xff, 0x1b, 0x1b, 0x03, 0x7e, 0xff, 0xc3, 0xfb, 0x7a, 0xff, 0xff, 0x18, - 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0x60, 0xe3, 0xc3, 0xff, 0x7f, 0xff, - 0xff, 0x1c, 0xf7, 0xe3, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xfe, 0x0c, - 0xfe, 0xff, 0xff, 0xfe, 0x18, 0x7f, 0xff, 0x7e, 0xff, 0xc3, 0xff, 0x7e, - 0xff, 0xff, 0x1b, 0x1f, 0x0e, 0x7e, 0xff, 0xc3, 0x7f, 0xde, 0xff, 0xff, - 0x1b, 0xff, 0xee, 0x4e, 0xdf, 0xdb, 0xfb, 0x72, 0x03, 0xff, 0xff, 0x03, - 0x03, 0x7f, 0xff, 0xc0, 0xff, 0x7f, 0x3f, 0x7f, 0xc0, 0x7f, 0x3f, 0xff, - 0x7f, 0x30, 0x7f, 0xff, 0xe7, 0xe7, 0x18, 0x18, 0xe7, 0xe7, 0x0f, 0x1f, - 0xf0, 0x1f, 0x0f, 0xe3, 0xf3, 0xdb, 0xcf, 0xc7, 0xff, 0xff, 0xc3, 0xc3, - 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0xc3, 0xc3, 0xff, 0xff, 0x04, 0x06, 0x03, - 0x06, 0x04, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x07, 0x60, 0xf4, 0xd4, - 0xf4, 0xf8, 0xff, 0xff, 0xcc, 0xfc, 0x78, 0x78, 0xfc, 0xcc, 0xcc, 0x48, - 0x78, 0xfc, 0xcc, 0xff, 0xff, 0x78, 0xfc, 0xac, 0xbc, 0xb8, 0x18, 0xfe, - 0xff, 0x1b, 0x1b, 0xb8, 0xbc, 0xac, 0xfc, 0x78, 0xff, 0xff, 0x18, 0xf8, - 0xf0, 0xcc, 0xfd, 0xfd, 0xc0, 0xc0, 0xcc, 0xfd, 0x7d, 0xff, 0xff, 0x10, - 0xfc, 0xec, 0x7f, 0xff, 0xc0, 0xc0, 0xfc, 0xfc, 0x0c, 0xfc, 0x0c, 0xfc, - 0xf8, 0xfc, 0xf8, 0x0c, 0xfc, 0xf8, 0x78, 0xfc, 0xcc, 0xfc, 0x78, 0xfc, - 0xfc, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xfc, 0xf8, 0xfc, 0xf8, 0x0c, - 0x1c, 0x18, 0xd8, 0xdc, 0xfc, 0xec, 0x6c, 0x0c, 0x7f, 0xff, 0xcc, 0xcc, - 0x7c, 0xfc, 0xc0, 0x7c, 0xfc, 0x3c, 0x7c, 0xc0, 0x7c, 0x3c, 0x7c, 0xfc, - 0xc0, 0x60, 0xc0, 0xfc, 0x7c, 0xcc, 0xfc, 0x30, 0xfc, 0xdc, 0x9c, 0xbc, - 0xb0, 0xfc, 0x7c, 0xcc, 0xec, 0xfc, 0xdc, 0xcc, 0x10, 0x56, 0xef, 0x81, - 0xef, 0xef, 0x81, 0xee, 0x56, 0x10, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x18, - 0x3c, 0x7e, 0x18, 0x18, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, - 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xe3, 0xf1, 0xf8, 0x7c, - 0x3e, 0x1f, 0x8f, 0xc7, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, - 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0x7c, 0x3e, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, - 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0xff, 0xff, 0xe7, 0xc3, - 0xc3, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xc3, 0xc3, 0xe7, 0xff, 0xff, - 0xff, 0xf8, 0xe0, 0xc0, 0xc0, 0xe0, 0xf8, 0xff, 0xff, 0x1f, 0x07, 0x03, - 0x03, 0x07, 0x1f, 0xff, 0x1c, 0x3e, 0x77, 0x63, 0x77, 0x3e, 0x1c, 0x1c, - 0x36, 0x63, 0x41, 0x63, 0x36, 0x1c, 0x1c, 0x08, 0x41, 0x63, 0x41, 0x08, - 0x1c, 0x08, 0x14, 0x22, 0x49, 0x22, 0x14, 0x08, 0x55, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0x55, 0xaa, 0x33, 0x33, 0xcc, 0xcc, 0x33, 0x33, 0xcc, 0xcc, - 0x33, 0x33, 0x0e, 0x11, 0x0e, 0x12, 0x1f, 0x10, 0x19, 0x15, 0x12, 0x11, - 0x15, 0x0a, 0x07, 0x04, 0x1e, 0x17, 0x15, 0x09, 0x0e, 0x15, 0x09, 0x01, - 0x1d, 0x03, 0x0a, 0x15, 0x0a, 0x12, 0x15, 0x0e, 0x0a, 0x10, 0x0a, 0x04, - 0x0a, 0x11, 0x0a, 0x0a, 0x0a, 0x11, 0x0a, 0x04, 0x01, 0x15, 0x02, 0x01, - 0x03, 0x07, 0x03, 0x01, 0x04, 0x06, 0x07, 0x06, 0x04, 0x04, 0x0e, 0x1f, - 0x1f, 0x0e, 0x04, 0x18, 0x3c, 0x7e, 0x7e, 0x3c, 0x18, 0x3c, 0x42, 0x81, - 0x81, 0x81, 0x81, 0x42, 0x3c, 0x3c, 0x42, 0x99, 0xbd, 0xbd, 0x99, 0x42, - 0x3c, 0x7f, 0x49, 0x41, 0x6b, 0x41, 0x49, 0x7f, 0x80, 0x40, 0x20, 0x10, - 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x3e, 0x01, 0x01, 0x01, - 0x01, 0x02, 0x04, 0x38, 0x08, 0x08, 0x08, 0x08, 0x01, 0x01, 0x01, 0x01, - 0x15, 0x0a, 0x15, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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/lpctool/trunk/charset.info b/lpctool/trunk/charset.info deleted file mode 100644 index 5c205b8..0000000 --- a/lpctool/trunk/charset.info +++ /dev/null @@ -1,22 +0,0 @@ -const unsigned char charset_info[] = { -0x08, 0x84, 0x48, 0x84, 0x44, 0x44, 0x48, 0x88, // 0- 15 graticule & borders -0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x77, 0x77, // 16- 31 graticule & symbols -0x21, 0x35, 0x55, 0x51, 0x33, 0x55, 0x35, 0x24, // 32- 47 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x55, 0x23, 0x44, 0x45, // 48- 63 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x53, 0x55, 0x55, 0x55, // 64- 80 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x55, 0x53, 0x43, 0x35, // 80- 95 ascii, font 1 -0x24, 0x44, 0x44, 0x44, 0x43, 0x34, 0x35, 0x44, // 96-112 ascii, font 1 -0x44, 0x44, 0x34, 0x55, 0x54, 0x43, 0x13, 0x55, // 112-127 ascii, font 1 -0x32, 0x55, 0x55, 0x53, 0x44, 0x54, 0x35, 0x25, // 128-143 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x55, 0x23, 0x54, 0x55, // 144-159 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, // 160-175 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x65, 0x54, 0x54, 0x55, // 176-191 ascii, bold font -0x25, 0x55, 0x55, 0x55, 0x54, 0x45, 0x47, 0x55, // 192-207 ascii, bold font -0x55, 0x55, 0x55, 0x57, 0x55, 0x54, 0x24, 0x55, // 208-223 ascii, bold font -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, // 224-239 symbols -0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 240-255 symbols -0x33, 0x33, 0x33, 0x33, 0x33, 0x12, 0x33, 0x33, // 256-271 small numbers -0x55, 0x33, 0x68, 0x87, 0x84, 0x44, 0x44, 0x44 // 272-288 symbols -}; - -const unsigned char charset_dlines = 1;