diff -u --recursive --new-file v2.1.16/linux/CREDITS linux/CREDITS --- v2.1.16/linux/CREDITS Wed Dec 18 15:58:33 1996 +++ linux/CREDITS Sat Dec 21 12:22:56 1996 @@ -122,7 +122,9 @@ S: The Netherlands N: Hennus Bergman -E: hennus@sky.ow.nl [My uucp-fed Linux box at home] +E: hennus@cybercomm.nl +W: http://www.cybercomm.nl/~hennus/ +P: 1024/77D50909 76 99 FD 31 91 E1 96 1C 90 BB 22 80 62 F6 BD 63 D: Author and maintainer of the QIC-02 tape driver S: The Netherlands @@ -499,7 +501,7 @@ N: Grant Guenther E: grant@torque.net -D: Iomega PPA / ZIP driver +D: drivers for parallel port devices: ppa, ez, bpcd S: 906-1001 Bay St. S: Toronto, Ontario, M5S 3A6 S: Canada diff -u --recursive --new-file v2.1.16/linux/Documentation/00-INDEX linux/Documentation/00-INDEX --- v2.1.16/linux/Documentation/00-INDEX Thu Dec 12 19:36:55 1996 +++ linux/Documentation/00-INDEX Wed Dec 18 15:57:28 1996 @@ -28,6 +28,8 @@ - info on the Digiboard PC/X{i,e,eve} multiport boards. exception.txt - how linux v2.1 handles exceptions without verify_area etc. +ez.txt + - documentation for the SyQuest parallel port EZ drive support. filesystems/ - directory with info on the various filesystems that Linux supports. ide.txt diff -u --recursive --new-file v2.1.16/linux/Documentation/Changes linux/Documentation/Changes --- v2.1.16/linux/Documentation/Changes Wed Dec 18 15:58:33 1996 +++ linux/Documentation/Changes Thu Dec 19 10:31:52 1996 @@ -89,19 +89,9 @@ Networking Changes ================== - The network code now assumes less about your setup, which can cause -routing problems due to init scripts expecting the old behavior. - - Lines like: - - `/sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0' - - need to be changed to something like: - - `/sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 netmask -255.0.0.0 dev lo' - - for routing to be set up correctly. + Please read Documentation/networking/routing.txt. People wanting to use +all the new routing table features such as OSPF classes should also read +Documentation/networking/policy-routing.txt. SysVinit ======== diff -u --recursive --new-file v2.1.16/linux/Documentation/Configure.help linux/Documentation/Configure.help --- v2.1.16/linux/Documentation/Configure.help Wed Dec 18 15:58:34 1996 +++ linux/Documentation/Configure.help Sat Dec 21 11:56:01 1996 @@ -354,6 +354,15 @@ Documentation/modules.txt. It's pretty unlikely that you have one of these: say N. +SyQuest EZ parallel port disk support +CONFIG_BLK_DEV_EZ + If you have a parallel port version of SyQuest's EZ135 or EZ230 removable + media devices you can use this driver. Answer Y to build the driver into + the kernel, or M if you would like to build it as a loadable module. + Read the file linux/Documentation/ez.txt. If you have several different + devices that will share a common parallel port you should build them all + as modules. + Multiple devices driver support CONFIG_BLK_DEV_MD This driver lets you combine several harddisk partitions into one @@ -2065,14 +2074,12 @@ This is an experimental driver for Baycom style simple amateur radio modems that connect to either a serial interface or a parallel interface. The driver supports the ser12 and par96 designs. To - configure the driver, use the sethdlc utility available in the - standard ax25 utilities package. For information on the modems, see - http://www.baycom.de and drivers/net/README.baycom. If you want to - use this, you need to say Y to "Amateur Radio AX.25 Level 2" support - as well. If you want to compile this driver as a module ( = code - which can be inserted in and removed from the running kernel - whenever you want), say M here and read - Documentation/modules.txt. This is recommended. + configure the driver, use the sethdlc utility available + in the standard ax25 utilities package. For information on the modems, + see http://www.baycom.de and drivers/net/README.baycom. + If you want to compile this as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read Documentation/modules.txt. This is recommended. Soundcard modem driver for AX.25 CONFIG_SOUNDMODEM @@ -2082,12 +2089,57 @@ utilities available in the standard ax25 utilities package. For informations on how to key the transmitter, see http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html and - drivers/net/README.soundmodem. To use this driver, you also need to - say Y to "Amateur Radio AX.25 Level 2" support. If you want to - compile this driver as a module ( = code which can be inserted in - and removed from the running kernel whenever you want), say M here - and read Documentation/modules.txt. This is recommended. Note that - this driver and the sound driver cannot both work at the same time. + drivers/net/README.soundmodem. If you want to compile this as a + module ( = code which can be inserted in and removed from the + running kernel whenever you want), say M here and read + Documentation/modules.txt. This is recommended. + +Soundcard modem support for SoundBlaster and compatible cards +CONFIG_SOUNDMODEM_SBC + This option enables the soundmodem driver to use SoundBlaster + and compatible cards. Dual mode cards (i.e. WSS cards with a + SoundBlaster emulation) should be used in WSS mode because + this results in usually better performance. + +Soundcard modem support for WSS and Crystal cards +CONFIG_SOUNDMODEM_WSS + This option enables the soundmodem driver to use WindowsSoundSystem + compatible cards. These cards feature a codec chip from either + Analog Devices (such as AD1848, AD1845, AD1812) or Crystal Semiconductors + (such as CS4248, CS423x). This option also supports the WSS full duplex + operation which currently works with Crystal CS423x chips. If you don't + need full duplex operation, do not enable it to save performance. + +Soundcard modem support for 1200 baud AFSK modulation +CONFIG_SOUNDMODEM_AFSK1200 + This option enables the soundmodem driver 1200 baud AFSK modem, + compatible to popular modems using TCM3105 or AM7911. The demodulator + requires about 12% of the CPU power of a Pentium 75 CPU per channel. + +Soundcard modem support for 1200 baud AFSK modulation +CONFIG_SOUNDMODEM_AFSK1200_FP + This option enables floating point calculations to be used for the + AFSK1200 baud modem. The Intel Pentium is a perverted chip because + integer multiplications are, altough easier to implement in silicon, + an order of a magnitude slower than floating point calculations. + Enabling this option uses a highly optimized assembler routine for + correlations, modelled after the one published by Phil Karn, KA9Q. + This reduces the computing power needed on Intel Pentium chips to about + 50%. On the other hand, Pentium clones with faster integer multiply and + slower floating point multiply will probably take longer with this + option turned on. As a rule of thumb, enable it for Intel Pentium and + Pentium Pro processors, and disable it for anything else. + I (sailer@ife.ee.ethz.ch) am very interested in figures. If you are + willing to give me a feedback, please compile the driver once with this + option enabled and once with it disabled, and send me the cycle counter + numbers obtained with both compilations, and your exact chip. The cycle + counter numbers can be optained by a recent sethdlc utility. + +Soundcard modem support for 9600 baud FSK G3RUH modulation +CONFIG_SOUNDMODEM_FSK9600 + This option enables the soundmodem driver 9600 baud FSK modem, + compatible to the G3RUH standard. The demodulator requires about 4% + of the CPU power of a Pentium 75 CPU per channel. Serial port KISS driver for AX.25 CONFIG_MKISS @@ -2879,21 +2931,9 @@ Traffic Shaper (EXPERIMENTAL) CONFIG_SHAPER - A traffic shaper is a special device (typically called /dev/shaper0) - that attaches to some other network device (such as your first - ethernet card /dev/eth0) and limits the outgoing bandwidth on that - device to a configurable upper bound, for example 64000 bits per - second. It works like this: you can send all the traffic that would - normally go to /dev/eth0 to /dev/shaper0 instead; the traffic will - be slowed down a bit and then forwarded to /dev/eth0. This could be - useful for something, but I don't know for what. To set up and - configure shaper devices, you need the shapecfg program, available - via ftp (user: anonymous) from shadow.cabi.net/pub/Linux in the - shaper package. Please read Documentation/networking/shaper.txt. - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you - want). If you want to compile it as a module, say M here and read - Documentation/modules.txt. If unsure, say N. + The traffic shaper is a virtual network device that allows you to limit + the rate of data flow over another device. See + Documentation/networking/shaper.txt for more information. FDDI driver support CONFIG_FDDI @@ -3018,6 +3058,15 @@ change a setting in the file include/linux/gscd.h before compiling the kernel. +MicroSolutions backpack CDROM support +CONFIG_BPCD + MicroSolutions backpack CDROM is an external drive that connects to + the parallel port. The bpcd driver supports model 164550 (and perhaps + other models). Say Y if you have one of these, and read the + file linux/Documentation/cdrom/bpcd. If you have several different + devices that will share a common parallel port, say M and build them + as modules. + Philips/LMS CM206 CDROM support CONFIG_CM206 If you have a Philips/LMS CDROM drive cm206 in combination with a @@ -3867,6 +3916,11 @@ that are at sunsite.unc.edu:/pub/Linux/kernel/patches/console/pcsndrv-X.X.tar.gz, to be extracted with "tar xzvf filename". + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want) on the + Motorola 680x0 architecture. If you are compiling a kernel for + Linux/m68k and want to compile this driver as a module, say M here + and read Documentation/modules.txt. ProAudioSpectrum 16 support CONFIG_PAS @@ -4112,6 +4166,407 @@ called an AP1000+. For details on our efforts to port Linux to this machine see http://cap.anu.edu.au/cap/projects/linux or mail to hackers@cafe.anu.edu.au + +Sparc ESP SCSI support +CONFIG_SCSI_SUNESP + This is the driver for the Sun ESP SCSI host adapter. The ESP + chipset is present in most SPARC-based computers. + +Sparc /dev/openprom compatibility driver +CONFIG_SUN_OPENPROMIO + This driver provides user programs with an interface to the Sparc + PROM device tree. The driver implements a SunOS-compatible + interface and a NetBSD-compatible interface. If you want to + compile this as a module ( = code which can be inserted in and + removed from the running kernel whenever you want), say M and read + Documentation/modules.txt. If unsure, say Y. + +# m68k-specific kernel options +# Documented by Chris Lawrence et al. + +Amiga support +CONFIG_AMIGA + This option enables support for the Amiga series of computers. If + you plan to use this kernel on an Amiga, say Y here; otherwise say N. + +Atari support +CONFIG_ATARI + This option enables support for the 68000-based Atari series of + computers (including the TT, Falcon and Medusa). If you plan to use + this kernel on an Atari, say Y here; otherwise say N. + +Macintosh support +CONFIG_MAC + This option would enable support for the Apple Macintosh if there was + any for it. Say N unless you've coded all the necessary support. ;) + +# CONFIG_APOLLO, etc. coming soon (?) + +68020 support +CONFIG_M68020 + If you anticipate running this kernel on a computer with a MC68020 processor, + say Y. Otherwise, say N. Note that the 68020 requires a 68851 MMU + (= memory management unit) to run Linux/m68k. + +68030 support +CONFIG_M68030 + If you anticipate running this kernel on a computer with a MC68030 processor, + say Y. Otherwise, say N. Note that a MC68EC030 will not work, as it does + not include an MMU (= memory management unit). + +68040 support +CONFIG_M68040 + If you anticipate running this kernel on a computer with a MC68LC040 or + MC68040 processor, say Y. Otherwise, say N. Note that an MC68EC040 will + not work, as it does not include an MMU (= memory management unit). + +Use -m68040 flag for 68040 specific optimizations +CONFIG_OPTIMIZE_040 + If you will only be running this kernel on a 68040-series processor, + this will make the kernel run somewhat faster. However, it will no longer + run on a 68020 or 68030, no matter whether you included 68020 and 68030 + support or not. Say N unless the only processor you are compiling support + for is the 68040 (or 68LC040). + +68060 support +CONFIG_M68060 + If you anticipate running this kernel on a computer with a MC68060 + processor, say Y. Otherwise, say N. + +Use -m68060 flag for 68060 specific optimizations +CONFIG_OPTIMIZE_060 + If you will only be running this kernel on a 68060-series processor, + this will make the kernel run somewhat faster. However, it will no longer + run on a 68020, 68030 or 68040, no matter whether you included support + for those processors or not. Say N unless the only processor you are + compiling support for is the 68060. + +Advanced processor options +CONFIG_ADVANCED_CPU + This gives you access to some advanced options for the CPU. The + defaults should be fine for most users, but these options may make + it possible for you to improve performance somewhat if you know what + you are doing. Most users should say N to this question. + +Use read-modify-write instructions +CONFIG_RMW_INSNS + This allows to use certain instructions that work with indivisible + read-modify-write bus cycles. While this is faster than the + workaround of disabling interrupts, it can conflict with DMA (= + direct memory access) on many Amiga systems, and it is also said to + destabilize other machines. It is very likely that this will cause + serious problems on any Amiga or Atari Medusa if set. The only + configuration where it should work are 68030-based Ataris, where it + apparently improves performance. But you've been warned! Unless you + really know what you are doing, say N. Try Y only if you're + quite adventurous. + +Amiga AutoConfig Identification +CONFIG_ZORRO + This enables support for automatic identification of Amiga expansion + cards that obey the AutoConfig(tm) specification. You should say Y + to this question unless you have no expansion cards and no intention + of getting any. + +Amiga OCS chipset support +CONFIG_AMIFB_OCS + This enables support for the original Agnus and Denise video chips, + found in the Amiga 1000 and most A500's and A2000's. If you intend + to run Linux on any of these systems, say Y; otherwise say N. + +Amiga ECS chipset support +CONFIG_AMIFB_ECS + This enables support for the Enhanced Chip Set, found in later A500's, + later A2000's, the A600, the A3000, the A3000T and CDTV. If you intend to + run Linux on any of these systems, say Y; otherwise say N. + +Amiga AGA chipset support +CONFIG_AMIFB_AGA + This enables support for the Advanced Graphics Architecture (also + known as the AGA or AA) Chip Set, found in the A1200, A4000, A4000T + and CD32. If you intend to run Linux on any of these systems, say Y; + otherwise say N. + +Amiga Cybervision support +CONFIG_FB_CYBER + This enables support for the Cybervision 64 graphics card from Phase5. + Please note that its use is not all that intuitive (i.e. if you have + any questions, be sure to ask!). Say N unless you have a Cybervision + 64 or plan to get one before you next recompile the kernel. + +Amiga GSP (TMS340x0) support +CONFIG_AMIGA_GSP + Include support for Amiga graphics cards that use the Texas Instruments + TMS340x0 GSP (= graphics signal processor) chips. Say Y if you want + to use a DMI Resolver or Commodore A2410 (Lowell) graphics card on + an Amiga; otherwise, say N. + +DMI Resolver support +CONFIG_GSP_RESOLVER + Include support in the kernel for the DMI Resolver graphics card. If + you have one, say Y; otherwise, say N. + +A2410 support +CONFIG_GSP_A2410 + Include support in the kernel for the Commodore/University of Lowell + A2410 graphics card. If you have one, say Y; otherwise, say N. + +Amiga Zorro II ramdisk support +CONFIG_AMIGA_Z2RAM + This enables support for using Chip RAM and Zorro II RAM as a ramdisk + or as a swap partition. Say Y if you want to include this driver in + the kernel. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Atari ACSI support +CONFIG_ATARI_ACSI + This enables support for the Atari ACSI interface. This driver is + also available as a module ( = code which can be inserted in and + removed from the running kernel whenever you want). The driver + supports hard disks and CD-ROMs, which have 512-byte sectors, or can + be switched to that mode. Due to the ACSI command format, only disks + up to 1 GB are supported. Special support for certain ACSI to SCSI + adapters, which could relax that, isn't included yet. The ACSI + driver is also the basis for certain other drivers for devices + attached to the ACSI bus: Atari SLM laser printer, BioNet-100 + Ethernet, and PAMsNet Ethernet. If you want to use one of these + devices, you need ACSI support, too. + +Probe all LUNs on each ACSI device +CONFIG_ACSI_MULTI_LUN + If you have a ACSI device that supports more than one LUN (Logical + Unit Number), e.g. a CD jukebox, you should say Y here so that all + will be found by the ACSI driver. An ACSI device with multiple LUNs + acts logically like multiple ACSI devices. The vast majority of ACSI + devices have only one LUN, and so most people can say N here and + should in fact do so, because it is safer. + +Atari SLM laser printer support +CONFIG_ATARI_SLM + If you have an Atari SLM laser printer, say Y to include support for + it in the kernel. Otherwise, say N. This driver is also available as + a module ( = code which can be inserted in and removed from the + running kernel whenever you want). + Be warned: the driver needs much ST-RAM and can cause problems due + to that fact! + +A3000 WD33C93A support +CONFIG_A3000_SCSI + If you have an Amiga 3000 and have SCSI devices connected to the built-in + SCSI controller, say Y. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +A2091 WD33C93A support +CONFIG_A2091_SCSI + If you have a Commodore A2091 SCSI controller, say Y. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +GVP Series II WD33C93A support +CONFIG_GVP11_SCSI + If you have a Great Valley Products Series II SCSI controller, say Y. + Also say Y if you have a later model of GVP SCSI controller (such as + the GVP A4008 or a Combo board). Otherwise, say N. + This driver does NOT work for the T-Rex series of accelerators from + TekMagic and GVP-M. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Cyberstorm SCSI support +CONFIG_CYBERSTORM_SCSI + If you have an Amiga with an original (MkI) Phase5 Cyberstorm accelerator + board and the optional Cyberstorm SCSI controller, say Y. Otherwise, + say N. + +Cyberstorm II SCSI support +CONFIG_CYBERSTORMII_SCSI + If you have an Amiga with a Phase5 Cyberstorm MkII accelerator board + and the optional Cyberstorm SCSI controller, say Y. Otherwise, say N. + +Blizzard 2060 SCSI support +CONFIG_BLZ2060_SCSI + If you have an Amiga with a Phase5 Blizzard 2060 accelerator board and + want to use the onboard SCSI controller, say Y. Otherwise, say N. + +Blizzard 1230IV/1260 SCSI support +CONFIG_BLZ1230_SCSI + If you have an Amiga 1200 with a Phase5 Blizzard 1230IV or Blizzard 1260 + accelerator, and the optional SCSI module, say Y. Otherwise, say N. + +Atari native SCSI support +CONFIG_ATARI_SCSI + If you have an Atari with built-in NCR5380 SCSI controller (TT, + Falcon, ...) say Y to get it supported. Of course also, if you have + an compatible SCSI controller (e.g. for Medusa). This driver is also + available as a module ( = code which can be inserted in and removed + from the running kernel whenever you want). If you want to compile + it as a module, say M here and read Documentation/modules.txt. + This driver supports both styles of NCR integration into the system: + the TT style (separate DMA), and the Falcon style (via ST-DMA, + replacing ACSI). It does NOT support other schemes, like in the + Hades (without DMA). + +Long delays for Toshiba CD-ROMs +CONFIG_ATARI_SCSI_TOSHIBA_DELAY + This option increases the delay after a SCSI arbitration to + accomodate some flakey Toshiba CD-ROM drives. Say Y if you intend to + use a Toshiba CD-ROM drive; otherwise, the option is not needed and + would impact performance a bit, so say N. + +Ariadne support +CONFIG_ARIADNE + If you have a VillageTronics Ariadne Ethernet adapter, say Y. Otherwise, + say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +A2065 support +CONFIG_A2065 + If you have a Commodore A2065 Ethernet adapter, say Y. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Hydra support +CONFIG_HYDRA + If you have a Hydra Ethernet adapter, say Y. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Atari Lance support +CONFIG_ATARILANCE + Say Y to include support for several Atari Ethernet adapters based + on the AMD Lance chipset: RieblCard (with or without battery), or + PAMCard VME (also the version by Rhotron, with different addresses). + +BioNet-100 support +CONFIG_ATARI_BIONET + Say Y to include support for BioData's BioNet-100 Ethernet adapter + for the ACSI port. The driver works (has to work...) with a polled + I/O scheme, so it's rather slow :-( + +PAMsNet support +CONFIG_ATARI_PAMSNET + Say Y to include support for the PAMsNet Ethernet adapter for the + ACSI port ("ACSI node"). The driver works (has to work...) with a + polled I/O scheme, so it's rather slow :-( + +Multiface Card III parallel support +CONFIG_MULTIFACE_III_LP + If you have a Multiface III card for your Amiga, and want to use its + parallel port in Linux, say Y. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Amiga mouse support +CONFIG_AMIGAMOUSE + If you want to be able to use an Amiga mouse in Linux, say Y. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Amiga Copper Console +CONFIG_COPCON + This configures the console to use the Amiga's graphics coprocessor for + scrolling, instead of using the CPU. This option markedly improves + response times in the high color modes (5 bitplanes and up). If you + would like to use this, say Y; otherwise, say N. + +Atari mouse support +CONFIG_ATARIMOUSE + If you want to be able to use an Atari mouse in Linux, say Y. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Atari MFP serial support +CONFIG_ATARI_MFPSER + If you like to use the MFP serial ports ("Modem1", "Serial1") under + Linux, say Y. The driver equally supports all kinds of MFP serial + ports and automatically detects whether Serial1 is available. This + driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + Note for Falcon users: You also have an MFP port, it's just not + wired to the outside... But you could use the port under Linux. + +Atari SCC serial support +CONFIG_ATARI_SCC + If you have serial ports based on a Zilog SCC chip (Modem2, Serial2, + LAN) and like to use them under Linux, say Y. All built-in SCC's are + supported (TT, MegaSTE, Falcon), and also the ST-ESCC. If you have + two connectors for channel A (Serial2 and LAN), they are visible as + two separate devices. This driver is also available as a module ( = + code which can be inserted in and removed from the running kernel + whenever you want). If you want to compile it as a module, say M + here and read Documentation/modules.txt. + +Atari MIDI serial support +CONFIG_ATARI_MIDI + If you want to use your Atari's MIDI port in Linux, say Y. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Amiga builtin serial support +CONFIG_AMIGA_BUILTIN_SERIAL + If you want to use your Amiga's built-in serial port in Linux, say Y. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +GVP IO-Extender support +CONFIG_GVPIOEXT + If you want to use a GVP IO-Extender serial card in Linux, say Y. + Otherwise, say N. + +Multiface Card III serial support +CONFIG_MULTIFACE_III_TTY + If you want to use a Multiface III card's serial port in Linux, say Y. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +Amiga or Atari DMA sound support +CONFIG_DMASOUND + If you want to use the internal audio of your Atari or Amiga in Linux, + answer Y to this question. This will provide a Sun-like /dev/audio, + compatible with the Linux/i386 sound system. Otherwise, say N. + This driver is also available as a module ( = code which can be inserted + in and removed from the running kernel whenever you want). If you + want to compile it as a module, say M here and read + Documentation/modules.txt. + +MSDOS partition support +CONFIG_MSDOS_PARTITION + This option enables support for using hard disks that were + partitioned on an MS-DOS system. This may be useful if you are + sharing a hard disk between i386 and m68k Linux boxes, for example. + Say Y if you need this feature; users who are only using their + system-native partitioning scheme can say N here. # need an empty line after last entry, for sed script in Configure. diff -u --recursive --new-file v2.1.16/linux/Documentation/cdrom/00-INDEX linux/Documentation/cdrom/00-INDEX --- v2.1.16/linux/Documentation/cdrom/00-INDEX Mon Aug 12 13:44:46 1996 +++ linux/Documentation/cdrom/00-INDEX Wed Dec 18 15:57:28 1996 @@ -2,6 +2,9 @@ - this file (info on CD-ROMs and Linux) aztcd - info on Aztech/Orchid/Okano/Wearnes/Conrad/CyCDROM driver. +bpcd + - info on MicroSolutions backpack CDROM + cdrom-standard.tex - LaTeX document on standardizing the CD-ROM programming interface. cdu31a diff -u --recursive --new-file v2.1.16/linux/Documentation/cdrom/bpcd linux/Documentation/cdrom/bpcd --- v2.1.16/linux/Documentation/cdrom/bpcd Thu Jan 1 02:00:00 1970 +++ linux/Documentation/cdrom/bpcd Wed Dec 18 15:57:28 1996 @@ -0,0 +1,74 @@ +linux/Documentation/cdrom/bpcd (c) 1996 Grant R. Guenther + +This file documents the bpcd driver for the MicroSolutions backpack CDrom, +an external parallel port device. + +There are apparently two versions of the backpack protocol. This +driver knows about the version 2 protocol - as is used in the 4x +and 6x products. There is no support for the sound hardware that +is included in some models. It should not be difficult to add +support for the ATAPI audio play functions and the corresponding +ioctls. + +The driver was developed by reverse engineering the protocol +and testing it on the backpack model 164550. This model +is actually a stock ATAPI drive packaged with a custom +ASIC that implements the IDE over parallel protocol. +I tested with a backpack that happened to contain a Goldstar +drive, but I've seen reports of Sony and Mitsumi drives as well. + +Before attempting to use the driver, you will need to +create a new device special file. The following commands will +do that for you: + + mknod /dev/bpcd b 41 0 + chown root:disk /dev/bpcd + chmod 660 /dev/bpcd + +Afterward, you can mount a disk in the usual way: + + mount -t iso9660 /dev/bpcd /cdrom + +(assuming you have made a directory /cdrom to use as a mount point). + +The driver will attempt to detect which parallel port your +backpack is connected to. If this fails for any reason, you +can override it by specifying a port on the LILO command line +(for built in drivers) or the insmod command (for drivers built +as modules). If your drive is on the port at 0x3bc, you would +use one of these commands: + + LILO: bpcd=0x3bc + + insmod: insmod bpcd bp_base=0x3bc + +The driver can detect if the parallel port supports 8-bit +transfers. If so, it will use them. You can force it to use +4-bit (nybble) mode by setting the variable bp_nybble to 1 on +an insmod command, or using the following LILO parameters: + + bpcd=0x3bc,1 + +(you must specify the correct port address if you use this method.) + +There is currently no support for EPP or ECP modes. Also, +as far as I can tell, the MicroSolutions protocol does not +support interrupts in the 4-bit and 8-bit modes. + +MicroSolutions' protocol allows for several drives to be +chained together off the same parallel port. Currently, this +driver will recognise only one of them. If you do have more +than one drive, it will choose the one with the lowest id number, +where the id number is the last two digits of the product's +serial number. + +It is not currently possible to connect a printer to the chained +port on the BackPack and expect Linux to use both devices at once. +If you need to use this driver together with a printer on the +same port, build both the bpcd and lp drivers as modules. + +Keep an eye on http://www.torque.net/bpcd.html for news and +other information about the driver. If you have any problems +with this driver, please send me, grant@torque.net, some mail +directly before posting into the newsgroups or mailing lists. + diff -u --recursive --new-file v2.1.16/linux/Documentation/devices.tex linux/Documentation/devices.tex --- v2.1.16/linux/Documentation/devices.tex Wed Dec 18 15:58:34 1996 +++ linux/Documentation/devices.tex Sat Dec 21 10:40:58 1996 @@ -42,7 +42,7 @@ % \title{{\bf Linux Allocated Devices}} \author{Maintained by H. Peter Anvin $<$hpa@zytor.com$>$} -\date{Last revised: December 16, 1996} +\date{Last revised: December 20, 1996} \maketitle % \noindent @@ -188,7 +188,8 @@ \major{64}{}{char }{ENskip kernel encryption package} \major{65}{}{char }{Sundance ``plink'' Transputer boards} \major{66}{}{char }{YARC PowerPC PCI coprocessor card} -\major{67}{--119}{}{Unallocated} +\major{67}{}{char }{Coda network filesystem} +\major{68}{--119}{}{Unallocated} \major{120}{--127}{}{Local/experimental use} \major{128}{--239}{}{Unallocated} \major{240}{--254}{}{Local/experimental use} @@ -1198,13 +1199,21 @@ \begin{devicelist} \major{66}{}{char }{YARC PowerPC PCI coprocessor card} - \minor{0}{/dev/yppcpci00}{First YARC card} - \minor{1}{/dev/yppcpci01}{Second YARC card} + \minor{0}{/dev/yppcpci0}{First YARC card} + \minor{1}{/dev/yppcpci1}{Second YARC card} \minordots \end{devicelist} \begin{devicelist} -\major{67}{--119}{}{Unallocated} +\major{67}{}{char }{Coda network filesystem} + \minor{0}{/dev/cfs0}{Coda cache manager} +\end{devicelist} + +\noindent +See {\em http://www.coda.cs.cmu.edu\/} for information about Coda. + +\begin{devicelist} +\major{68}{--119}{}{Unallocated} \end{devicelist} \begin{devicelist} diff -u --recursive --new-file v2.1.16/linux/Documentation/devices.txt linux/Documentation/devices.txt --- v2.1.16/linux/Documentation/devices.txt Wed Dec 18 15:58:34 1996 +++ linux/Documentation/devices.txt Sat Dec 21 10:40:58 1996 @@ -2,7 +2,7 @@ Maintained by H. Peter Anvin - Last revised: December 7, 1996 + Last revised: December 20, 1996 This list is the successor to Rick Miller's Linux Device List, which he stopped maintaining when he got busy with other things in 1993. It @@ -841,11 +841,16 @@ for information. 66 char YARC PowerPC PCI coprocessor card - 0 = /dev/yppcpci00 First YARC card - 1 = /dev/yppcpci01 Second YARC card + 0 = /dev/yppcpci0 First YARC card + 1 = /dev/yppcpci1 Second YARC card ... - 67-119 UNALLOCATED + 67 char Coda network file system + 0 = /dev/cfs0 Coda cache manager + + See http://www.coda.cs.cmu.edu for information about Coda. + + 68-119 UNALLOCATED 120-127 LOCAL/EXPERIMENTAL USE diff -u --recursive --new-file v2.1.16/linux/Documentation/ez.txt linux/Documentation/ez.txt --- v2.1.16/linux/Documentation/ez.txt Thu Jan 1 02:00:00 1970 +++ linux/Documentation/ez.txt Wed Dec 18 15:57:28 1996 @@ -0,0 +1,85 @@ +linux/Documentation/ez.txt (c) 1996 Grant R. Guenther + +This file documents the ez driver for the parallel port versions of +SyQuest's EZ135 and EZ230 removable media disk drives. + +Special thanks go to Pedro Soria-Rodriguez for his help testing +the EZFlyer 230 support. + +The drive is actually SyQuest's IDE product with a ShuttleTech +IDE <-> parallel converter chip built in. + +Before attempting to access the new driver, you will need to +create some device special files. The following commands will +do that for you: + + mknod /dev/eza b 40 0 + mknod /dev/eza1 b 40 1 + mknod /dev/eza2 b 40 2 + mknod /dev/eza3 b 40 3 + mknod /dev/eza4 b 40 4 + chown root:disk /dev/ez* + chmod 660 /dev/ez* + +You can make devices for more partitions (up to 15) if you need to. + +You can alter certain driver parameters on the LILO or LOADLIN +command line. The general syntax is + + ez=base[,irq] + +where base is the base address of the parallel port you want to use +and irq is the interrupt number for that port. By default, the +driver uses the ports at 0x378 and irq 7. You can disable the +interrupt by specifying it as 0. For example, to run the driver +on port 0x3bc without an interrupt, you would append the following +to the LILO command line: + + ez=0x3bc,0 + +If you have configured the driver as a loadable module, you can +adjust these parameters on the insmod command line using the +variables ez_base and ez_irq. For example: + + insmod ez ez_base=0x3bc + +The driver can detect if the parallel port supports 8-bit +transfers. If so, it will use them. + +The driver can be used with or without interrupts. If an IRQ +is specified the driver will use it - if it can. If the irq +number is set to 0, an alternative, polling-based, strategy +will be used. Polling consumes more CPU time, but may be more +stable on some systems. + +If you experience timeout errors while using this driver - and +you have enabled interrupts - try disabling the interrupt. I +have heard reports of some parallel ports having exceptionally +unreliable interrupts. This could happen on misconfigured +systems in which an inactive sound card shares the same IRQ with +the parallel port. (Remember that most people do not use the +parallel port interrupt for printing.) + +It would be advantageous to use multiple mode transfers, +but ShuttleTech's driver does not appear to use them, so I'm not +sure that the converter can handle it. + +It is not currently possible to connect a printer to the chained +port on an EZ drive and expect Linux to use both devices at once. +If you need to do this, build both the ez and lp drivers as modules +and load one or the other as required. + +When the EZ230 powers on, the "standby timer" is set to about 6 +minutes: if the drive is idle for that length of time, it will +put itself into a low power standby mode. It takes a couple of +seconds for the drive to come out of standby mode. So, if you +load this driver while it is in standby mode, you will notice +a "freeze" of a second or two as the driver waits for the EZ230 +to come back to life. Once loaded, this driver disables the +standby timer (until you next power up the EZ230 ...) + +Keep an eye on http://www.torque.net/ez135.html for news and +other information about the driver. If you have any problems +with this driver, please send me, grant@torque.net, some mail +directly before posting into the newsgroups or mailing lists. + diff -u --recursive --new-file v2.1.16/linux/Documentation/m68k/amiboot.README linux/Documentation/m68k/amiboot.README --- v2.1.16/linux/Documentation/m68k/amiboot.README Thu Jan 1 02:00:00 1970 +++ linux/Documentation/m68k/amiboot.README Fri Dec 20 11:19:57 1996 @@ -0,0 +1,241 @@ + + Linux/m68k Amiga Bootstrap version 5.1 + -------------------------------------- + + +0. Introduction +--------------- + +Amiboot is used to boot Linux/m68k on Amiga from the CLI/Shell. + +Before you try to boot Linux/m68k for the first time, please read the FAQ + + http://www-agrw.informatik.uni-kl.de/~jmayer/linux68k/linux68k-faq + +and the Installation Guide + + http://www.informatik.uni-oldenburg.de/~amigo/inst.html + +first. Although the Installation Guide is getting a bit outdated, it's still a +good starting point. + +Amiboot 5.1 is meant for Linux/m68k 2.0.x, 2.1.x or higher (kernel bootinfo +interface versions 1.x and 2.x). Please use an older version for older kernels. + + +1. Running Amiboot +------------------ + +The Amiboot invocation syntax looks like + + amiboot [options] [kernel command line] + +Valid options are: + + --help Display the usage information + + --kernel file Use kernel image `file' (default is `vmlinux') + + --ramdisk file Use ramdisk image `file'. + + --debug Enable debug mode + + --baud Set the serial port speed (default is 9600) + + --memfile file Use memory file `file' + + --keep-video Don't reset the video mode + + --model id Set the Amiga model to `id'. + +The kernel command line contains the options you want to pass to the kernel and +to init, the process that's started first by Linux. Please read +linux/Documentation/m68k/kernel-options.txt for more information. + +Normally you only use the --kernel option to specify the file that contains the +Linux/m68k kernel image, and --ramdisk if you want to boot from a ramdisk file, +i.e. a file containing a complete file system, instead of from a hard disk +partition. + +Example: + + amiboot -k vmlinux-2.1.13 root=/dev/hda3 video=font:PEARL8x8 + +Amiboot will boot the kernel image `vmlinux-2.1.13' and will pass +`root=/dev/hda3 video=font:PEARL8x8' to the kernel. + + +The other options are more specialized. Don't use them unless you really have +to and you know what you're doing. + +The --baud option allows you to specify the serial port speed for initial boot +information and initial kernel messages. Note: this option does not work with +kernels with bootinfo interface versions prior to 2.0. + +The --memfile option is used to specify the blocks of memory that will be used +by Linux. + +The --keep-video option is necessary if you want to retain the current graphics +mode (on a graphics board) under Linux. Currently this is only useful if you +have a CyberVision 64 graphics board. + +Finally, --model allows you to specify your Amiga model, and --debug is for +debugging purposes. + + +2. The memory file +------------------ + +If you have some non-AutoConfig memory you want to use under Linux, or if you +want to disable some parts of your memory (e.g. Zorro II RAM on '040 based +systems), you have to use a memory file and the --memfile option. This file +contains information about the memory chunks you want to use under Linux. The +format for the file is: + + chipramsize + [0xfastchunkaddr fastchunksize] + [0xfastchunkaddr fastchunksize] + ... + +For example, if you don't want Linux to use your 2nd meg of chipram, you would +create a file that looks contains only: + + 1048576 + +If you had 1M of chip ram, 2M of 16 bit FAST ram at address 0x200000 and 16M of +32 bit FAST ram at address 0x80000000, and you didn't want Linux to use the +slow 16 bit FAST ram, you'd create a file that looks like: + + 1048576 + 0x80000000 16777216 + +The memory file can also be used to specify in which block of memory the kernel +will be put. Normally Amiboot will put the kernel in the first block of Fast +RAM it will find. If you use a memory file, it will put the kernel in the first +block of fast RAM you specify. + + +3. Amiga models +--------------- + +If Amiboot incorrectly detects the model of your Amiga, you can force it to +detect any model you want using the --model option. `id' must be one of the +numbers as defined in linux/include/asm-m68k/amigahw.h (AMI_*). Currently the +following models are known: + + Model ID + ----- -- + Amiga 500 1 + Amiga 500+ 2 + Amiga 600 3 + Amiga 1000 4 + Amiga 1200 5 + Amiga 2000 6 + Amiga 2500 7 + Amiga 3000 8 + Amiga 3000T 9 + Amiga 3000+ 10 + Amiga 4000 11 + Amiga 4000T 12 + CDTV 13 + CD32 14 + Draco 15 + +Note that Amiboot can't distinguish among Amiga models that are very similar to +each other (e.g. A500/A1000/A2000/A2500 and A3000/A3000T). Of course this is +harmless and there's no real need to use --model in that case. + +Please send me the output of amiboot used with the --debug option if your Amiga +model is detected incorrectly. + + +4. Abbreviations +---------------- + +All options also have a shorthand: + + --help -h + --kernel -k + --ramdisk -r + --debug -d + --baud -b + --memfile -m + --keep-video -v + --model -t + + +5. Miscellaneous +---------------- + +Some expansion boards keep on generating interrupts once they were initialized +under AmigaOS. This can cause an interrupt deadlock while booting Linux. The +following boards are recognized and disabled: + + o Helfrich Rainbow 3 Graphics Board + o Helfrich Piccolo Graphics Board + o Helfrich SD64 Graphics Board + o Village Tronic Ariadne Ethernet Board + o Hydra Systems Amiganet Ethernet Board + +The following boards are known to cause problems but we don't have a disable +routine for them yet: + + o Commodore A2060 Arcnet Card + o Ameristar A560 Arcnet Card + +If you write a routine to disable an expansion board, please let me know. + + +6. Troubleshooting +------------------ + + - Amiboot says + + This bootstrap is too old/new for this kernel + + This means that you're using a version of Amiboot that's not compatible + with the kernel you want to boot. + + Solution: use the correct Amiboot, or use another kernel. + + - Amiboot says + + Warning: too many AutoConfig devices. Ignoring device at 0x???????? + + or + + Warning: too many memory blocks. Ignoring block of ???K at 0x???????? + + This means that you have more AutoConfig devices or memory chunks than + Amiboot supports. Note that you can still boot Linux/m68k, but that the + additional devices or memory blocks can't be used. + + Solution: increase the ZORRO_NUM_AUTO (for AutoConfig devices) or + NUM_MEMINFO (for memory chunks) values in the kernel sources + (linux/include/asm-m68k/zorro.h and linux/include/asm-m68k/setup.h) and + recompile both Amiboot and the kernel. + + - If all you get is a grey screen, or if Linux/m68k suddenly locks up during + booting, try the following things: + + o Boot with the Startup-Sequence disabled, run SetPatch and try again. + + o If that doesn't work, remove any expansion devices and retry. + + o Look at the characters that are dumped to the serial port during + booting. + + +7. Amiga-Lilo +------------- + +Once you have a stable Linux/m68k installation, you may want to try Amiga-Lilo. +Amiga-Lilo allows you to boot Linux/m68k without the overhead of booting +AmigaOS first, and it provides you with a boot menu. + + +8. Credits +---------- + +This readme was written by Geert Uytterhoeven. A lot of information was taken +from the ANNOUNCE-* files by Hamish Macdonald. diff -u --recursive --new-file v2.1.16/linux/Documentation/m68k/kernel-options.txt linux/Documentation/m68k/kernel-options.txt --- v2.1.16/linux/Documentation/m68k/kernel-options.txt Thu Jan 1 02:00:00 1970 +++ linux/Documentation/m68k/kernel-options.txt Fri Dec 20 11:19:57 1996 @@ -0,0 +1,835 @@ + + + Command Line Options for Linux/m68k + =================================== + +Date: Sep 14, 1996 +Linux/m68k version: 2.0.20 +Author: Roman.Hodek@informatik.uni-erlangen.de (Roman Hodek) +Update: jds@kom.auc.dk (Jes Sorensen) + +0) Introduction +=============== + + Often I've been asked which command line options the Linux/m68k +kernel understands, or how the exact syntax for the ... option is, or +... about the option ... . I hope, this document supplies all the +answers... + + Note that some options might be outdated, their descriptions being +incomplete or missing. Please update the information and send in the +patches. + + +1) Overview of the Kernel's Option Processing +============================================= + +The kernel knows three kinds of options on its command line: + + 1) kernel options + 2) environment settings + 3) arguments for init + +To which of these classes an argument belongs is determined as +follows: If the option is known to the kernel itself, i.e. if the name +(the part before the '=') or, in some cases, the whole argument string +is known to the kernel, it belongs to class 1. Otherwise, if the +argument contains an '=', it is of class 2, and the definition is put +into init's environment. All other arguments are passed to init as +command line options. + + This document describes the valid kernel options for Linux/m68k in +the version mentioned at the start of this file. Later revisions may +add new such options, and some may be missing in older versions. + + In general, the value (the part after the '=') of an option is a +list of values separated by commas. The interpretation of these values +is up to the driver that "owns" the option. This association of +options with drivers is also the reason that some are further +subdivided. + + +2) General Kernel Options +========================= + +2.1) root= +---------- + +Syntax: root=/dev/ + or: root= + +This tells the kernel which device it should mount as the root +filesystem. The device must be a block device with a valid filesystem +on it. + + The first syntax gives the device by name. These names are converted +into a major/minor number internally in the kernel in an unusual way. +Normally, this "conversion" is done by the device files in /dev, but +this isn't possible here, because the root filesystem (with /dev) +isn't mounted yet... So the kernel parses the name itself, with some +hardcoded name to number mappings. The name must always be a +combination of two or three letters, followed by a decimal number. +Valid names are: + + /dev/ram: -> 0x0100 (initial ramdisk) + /dev/hda: -> 0x0300 (first IDE disk) + /dev/hdb: -> 0x0340 (second IDE disk) + /dev/sda: -> 0x0800 (first SCSI disk) + /dev/sdb: -> 0x0810 (second SCSI disk) + /dev/sdc: -> 0x0820 (third SCSI disk) + /dev/sdd: -> 0x0830 (forth SCSI disk) + /dev/sde: -> 0x0840 (fifth SCSI disk) + /dev/fd : -> 0x0200 (floppy disk) + /dev/xda: -> 0x0c00 (first XT disk, unused in Linux/m68k) + /dev/xdb: -> 0x0c40 (second XT disk, unused in Linux/m68k) + /dev/ada: -> 0x1c00 (first ACSI device) + /dev/adb: -> 0x1c10 (second ACSI device) + /dev/adc: -> 0x1c20 (third ACSI device) + /dev/add: -> 0x1c30 (forth ACSI device) + +The last for names are available only if the kernel has been compiled +with Atari and ACSI support. + + The name must be followed by a decimal number, that stands for the +partition number. Internally, the value of the number is just +added to the device number mentioned in the table above. The +exceptions are /dev/ram and /dev/fd, where /dev/ram refers to an +initial ramdisk loaded by your bootstrap program (please consult the +instructions for your bootstrap program to find out how to load an +initial ramdisk). As of kernel version 2.0.18 you must specify +/dev/ram as the root device if you want to boot from an initial +ramdisk. For the floppy devices, /dev/fd, the number stands for the +floppy drive number (there are no partitions on floppy disks). I.e., +/dev/fd0 stands for the first drive, /dev/fd1 for the second, and so +on. Since the number is just added, you can also force the disk format +by adding a number greater than 3. If you look into your /dev +directory, use can see the /dev/fd0D720 has major 2 and minor 16. You +can specify this device for the root FS by writing "root=/dev/fd16" on +the kernel command line. + +[Strange and maybe uninteresting stuff ON] + + This unusual translation of device names has some strange +consequences: If, for example, you have a symbolic link from /dev/fd +to /dev/fd0D720 as an abbreviation for floppy driver #0 in DD format, +you cannot use this name for specifying the root device, because the +kernel cannot see this symlink before mounting the root FS and it +isn't in the table above. If you would use it, the root device weren't +set at all, without error message. Another example: You cannot use a +partition on e.g. the sixth SCSI disk as the root filesystem, if you +want to specify it by name. This is, because only the devices up to +/dev/sde are in the table above, but not /dev/sdf. Although, you can +use the sixth SCSI disk for the root FS, but you have to specify the +device by number... (see below). Or, even more strange, you can use the +fact that there is no range checking of the partition number, and your +knowledge that each disk uses 16 minors, and write "root=/dev/sde17" +(for /dev/sdf1). + +[Strange and maybe uninteresting stuff OFF] + + If the device containing your root partition isn't in the table +above, you can also specify it by major and minor numbers. These are +written in hex, with no prefix and no separator between. E.g., if you +have a CD with contents appropriate as a root filesystem in the first +SCSI CD-ROM drive, you boot from it by "root=0b00". Here, hex "0b" = +decimal 11 is the major of SCSI CD-ROMs, and the minor 0 stands for +the first of these. You can find out all valid major numbers by +looking into include/linux/major.h. + + +2.2) ro, rw +----------- + +Syntax: ro + or: rw + +These two options tell the kernel whether it should mount the root +filesystem read-only or read-write. The default is read-only, except +for ramdisks which are read-write. + + +2.3) debug +---------- + +Syntax: debug + +This raises the kernel log level to 10 (the default is 7). This is the +same level as set by the "dmesg" command, just that the maximum level +selectable by dmesg is 8. + + +2.4) debug= +----------- + +Syntax: debug= + +This option causes certain kernel messages be printed to the selected +debugging device. This can aid debugging the kernel, since the +messages can be captured and analyzed on some other machine. Which +devices are possible depends on the machine type. There are no checks +for the validity of the device name. If the device isn't implemented, +nothing happens. + + Messages logged this way are in general stack dumps after kernel +memory faults or bad kernel traps, and kernel panics. To be exact: all +messages of level 0 (panic messages) and all messages printed while +the log level is 8 or more (their level doesn't matter). Before stack +dumps, the kernel sets the log level to 10 automatically. A level of +at least 8 can also be set by the "debug" command line option (see +2.3) and at run time with "dmesg -n 8". + +Devices possible for Amiga: + + - "ser": built-in serial port; parameters: 9600bps, 8N1 + - "mem": Save the messages to a reserved area in chip mem. After + rebooting, they can be read under AmigaOS with the tool + 'dmesg'. + +Devices possible for Atari: + + - "ser1": ST-MFP serial port ("Modem1"); parameters: 9600bps, 8N1 + - "ser2": SCC channel B serial port ("Modem2"); parameters: 9600bps, 8N1 + - "ser" : default serial port + This is "ser2" for a Falcon, and "ser1" for any other machine + - "par" : parallel port + The printing routine for this implements a timeout for the + case there's no printer connected (else the kernel would + lock up). The timeout is not exact, but usually a few + seconds. + + +2.6) ramdisk= +------------- + +Syntax: ramdisk= + + This option instructs the kernel to set up a ramdisk of the given +size in KBytes. Do not use this option if the ramdisk contents are +passed by bootstrap! In this case, the size is selected automatically +and should not be overwritten. + + The only application is for root filesystems on floppy disks, that +should be loaded into memory. To do that, select the corresponding +size of the disk as ramdisk size, and set the root device to the disk +drive (with "root="). + + +2.7) swap= +----------- + +Syntax: swap=,,,,,,\ + , +(All optional) + +TODO + + +2.8) buff= +----------- + +Syntax: buff=,,,,, +(All optional) + +TODO + + + +3) General Device Options (Amiga and Atari) +=========================================== + +3.1) ether= +----------- + +Syntax: ether=[[,[,[,]]]], + + is the name of a net driver, as specified in +drivers/net/Space.c in the Linux source. Most prominent are eth0, ... +eth3, sl0, ... sl3, ppp0, ..., ppp3, dummy, and lo. + + The non-ethernet drivers (sl, ppp, dummy, lo) obviously ignore the +settings by this options. Also, the existing ethernet drivers for +Linux/m68k (ariadne, a2065, hydra) don't use them because Zorro boards +are really Plug-'n-Play, so the "ether=" option is useless altogether +for Linux/m68k. + + +3.2) hd= +-------- + +Syntax: hd=,, + + This option sets the disk geometry of an IDE disk. The first hd= +option is for the first IDE disk, the second for the second one. +(I.e., you can give this option twice.) In most cases, you won't have +to use this option, since the kernel can obtain the geometry data +itself. It exists just for the case that this fails for one of your +disks. + + +3.3) max_scsi_luns= +------------------- + +Syntax: max_scsi_luns= + + Sets the maximum number of LUNs (logical units) of SCSI devices to +be scanned. Valid values for are between 1 and 8. Default is 8 if +"Probe all LUNs on each SCSI device" was selected during the kernel +configuration, else 1. + + +3.4) st= +-------- + +Syntax: st=,[,[]] + + Sets several parameters of the SCSI tape driver. is +the number of 512-byte buffers reserved for tape operations for each +device. sets the number of blocks which must be filled +to start an actual write operation to the tape. Maximum value is the +total number of buffers. limits the total number of +buffers allocated for all tape devices. + + +3.5) dmasound= +-------------- + +Syntax: dmasound=[,[,]] + + This option controls some configurations of the Linux/m68k DMA sound +driver (Amiga and Atari): is the number of buffers you want +to use (minimum 4, default 4), is the size of each +buffer in kilobytes (minimum 4, default 32) and says +how much percent of error will be tolerated when setting a frequency +(maximum 10, default 0). For example with 3% you can play 8000Hz +AU-Files on the Falcon with its hardware frequency of 8195Hz and thus +don't need to expand the sound. + + + +4) Options for Atari Only +========================= + +4.1) video= +-------------- + +Syntax: video= + +The is a comma-separated list of the sub-options listed +below. + +NB: Please notice that this option was renamed from `atavideo' to + `video' during the development of the 1.3.x kernels, thus you + might need to update your boot-scripts if upgrading to 2.0.x from + an 1.2.13ply kernel. + +4.1.1) Video Mode +----------------- + +This sub-option may be any of the predefined video modes, as listed +in atari/atafb.c in the Linux/m68k source tree. The kernel will +activate the given video mode at boot time and make it the default +mode, if the hardware allows. Currently defined names are: + + - stlow : 320x200x4 + - stmid, default5 : 640x200x2 + - sthigh, default4: 640x400x1 + - ttlow : 320x480x8, TT only + - ttmid, default1 : 640x480x4, TT only + - tthigh, default2: 1280x960x1, TT only + - vga2 : 640x480x1, Falcon only + - vga4 : 640x480x2, Falcon only + - vga16, default3 : 640x480x4, Falcon only + - vga256 : 640x480x8, Falcon only + - falh2 : 896x608x1, Falcon only + - falh16 : 896x608x4, Falcon only + + If no video mode is given on the command line, the kernel tries the +modes names "default" in turn, until one is possible with the +hardware in use. + + A video mode setting doesn't make sense, if the external driver is +activated by a "external:" sub-option. + +4.1.2) inverse +-------------- + +Invert the display. This affects both, text (consoles) and graphics +(X) display. Usually, the background is chosen to be black. With this +option, you can make the background white. + +4.1.3) font +----------- + +Syntax: font: + +Specify the font to use in text modes. Currently you can choose only +between `VGA8x8', `VGA8x16' and `PEARL8x8'. `VGA8x8' is default, if the +vertical size of the display is less than 400 pixel rows. Otherwise, the +`VGA8x16' font is the default. + +4.1.4) hwscroll_ +---------------- + +Syntax: hwscroll_ + +The number of additional lines of video memory to reserve for +speeding up the scrolling ("hardware scrolling"). Hardware scrolling +is possible only if the kernel can set the video base address in steps +fine enough. This is true for STE, MegaSTE, TT, and Falcon. It is not +possible with plain STs and graphics cards (The former because the +base address must be on a 256 byte boundary there, the latter because +the kernel doesn't know how to set the base address at all.) + + By default, is set to the number of visible text lines on the +display. Thus, the amount of video memory is doubled, compared to no +hardware scrolling. You can turn off the hardware scrolling altogether +by setting to 0. + +4.1.5) internal: +---------------- + +Syntax: internal:;[;;;] + +This option specifies the capabilities of some extended internal video +hardware, like e.g. OverScan. and give the (extended) +dimensions of the screen. + + If your OverScan needs a black border, you have to write the last +three arguments of the "internal:". is the maximum line +length the hardware allows, the maximum number of lines. + is the offset of the visible part of the screen memory to its +physical start, in bytes. + + Often, extended interval video hardware has to be activated somehow. +For this, see the "sw_*" options below. + +4.1.6) sw_acia, sw_snd6, sw_snd7 +-------------------------------- + +This specifies the method for turning on extended internal video +hardware, like OverScan. Several methods are in use: + + sw_acia: Set RTS of the keyboard ACIA high + sw_snd6: Set bit 6 of the PSG port A + sw_snd7: Set bit 7 of the PSG port A + +These sub-options are generally only useful together with "internal:". + +4.1.7) external: +---------------- + +Syntax: + external:;;;;[;[;\ + [;[;]]]] + +[I had to break this line...] + + This is probably the most complicated parameter... It specifies that +you have some external video hardware (a graphics board), and how to +use it under Linux/m68k. The kernel cannot know more about the hardware +than you tell it here! The kernel also is unable to set or change any +video modes, since it doesn't know about any board internal. So, you +have to switch to that video mode before you start Linux, and cannot +switch to another mode once Linux has started. + + The first 3 parameters of this sub-option should be obvious: , + and give the dimensions of the screen and the number of +planes (depth). The depth is is the logarithm to base 2 of the number +of colors possible. (Or, the other way round: The number of colors is +2^depth). + + You have to tell the kernel furthermore how the video memory is +organized. This is done by a letter as parameter: + + 'n': "normal planes", i.e. one whole plane after another + 'i': "interleaved planes", i.e. 16 bit of the first plane, than 16 bit + of the next, and so on... This mode is used only with the + built-in Atari video modes, I think there is no card that + supports this mode. + 'p': "packed pixels", i.e. consecutive bits stand for all + planes of one pixel; this is the most common mode for 8 planes + (256 colors) on graphic cards + 't': "true color" (more or less packed pixels, but without a color + lookup table); usually depth is 24 + +For monochrome modes (i.e., is 1), the letter has a +different meaning: + + 'n': normal colors, i.e. 0=white, 1=black + 'i': inverted colors, i.e. 0=black, 1=white + + The next important information about the video hardware is the base +address of the video memory. That is given in the parameter, +as a hexadecimal number with a "0x" prefix. You have to find out this +address in the documentation of your hardware. + + The next parameter, , tells the kernel about the size of the +video memory. If it's missing, the size is calculated from , +, and . For now, it is not useful to write a value here. +It would be used only for hardware scrolling (which isn't possible +with the external driver, because the kernel cannot set the video base +address), or for virtual resolutions under X (which the X server +doesn't support yet). So, it's currently best to leave this field +empty, either by ending the "external:" after the video address or by +writing two consecutive semicolons, if you want to give a +(it is allowed to leave this parameter empty). + + The parameter is optional. If it is not given, the kernel +cannot read or write any color registers of the video hardware, and +thus you have to set appropriate colors before you start Linux. But if +your card is somehow VGA compatible, you can tell the kernel the base +address of the VGA register set, so it can change the color lookup +table. You have to look up this address in your board's documentation. +To avoid misunderstandings: is the _base_ address, i.e. a 4k +aligned address. For read/writing the color registers, the kernel +uses the addresses vgabase+0x3c7...vgabase+0x3c9. The +parameter is written in hexadecimal with a "0x" prefix, just as +. + + is meaningful only if is specified. It tells the +kernel how wide each of the color register is, i.e. the number of bits +per single color (red/green/blue). Default is 6, another quite usual +value is 8. + + Also is used together with . It tells the kernel +about the color register model of your gfx board. Currently, the types +"vga" (which is also the default) and "mv300" (SANG MV300) are +implemented. + +4.1.8) eclock: +-------------- + +The external pixel clock attached to the Falcon VIDEL shifter. This +currently works only with the ScreenWonder! + +4.1.9) monitorcap: +------------------- + +Syntax: monitorcap:;;; + +This describes the capabilities of a multisync monitor. Don't use it +with a fixed-frequency monitor! For now, only the Falcon frame buffer +uses the settings of "monitorcap:". + + and are the minimum and maximum, resp., vertical frequencies +your monitor can work with, in Hz. and are the same for +the horizontal frequency, in kHz. + + The defaults are 58;62;31;32 (VGA compatible). + + The defaults for TV/SC1224/SC1435 cover both PAL and NTSC standards. + +4.1.10) keep +------------ + +If this option is given, the framebuffer device doesn't do any video +mode calculations and settings on its own. The only Atari fb device +that does this currently is the Falcon. + + What you reach with this: Settings for unknown video extensions +aren't overridden by the driver, so you can still use the mode found +when booting, when the driver doesn't know to set this mode itself. +But this also means, that you can't switch video modes anymore... + + An example where you may want to use "keep" is the ScreenBlaster for +the Falcon. + + +4.2) atamouse= +-------------- + +Syntax: atamouse=,[] + + With this option, you can set the mouse movement reporting threshold. +This is the number of pixels of mouse movement that have to accumulate +before the IKBD sends a new mouse packet to the kernel. Higher values +reduce the mouse interrupt load and thus reduce the chance of keyboard +overruns. Lower values give a slightly faster mouse responses and +slightly better mouse tracking. + + You can set the threshold in x and y separately, but usually this is +of little practical use. If there's just one number in the option, it +is used for both dimensions. The default value is 2 for both +thresholds. + + +4.3) ataflop= +------------- + +Syntax: ataflop=[,[,[,]]] + + The drive type may be 0, 1, or 2, for DD, HD, and ED, resp. This + setting affects how much buffers are reserved and which formats are + probed (see also below). The default is 1 (HD). Only one drive type + can be selected. If you have two disk drives, select the "better" + type. + + The second parameter tells the kernel whether to use + track buffering (1) or not (0). The default is machine dependant: + no for the Medusa and yes for all others. + + With the two following parameters, you can change the default + steprate used for drive A and B, resp. + + +4.4) atascsi= +------------- + +Syntax: atascsi=[,[,[,[,]]]] + + This option sets some parameters for the Atari native SCSI driver. +Generally, any number of arguments can be omitted from the end. And +for each of the numbers, a negative value means "use default". The +defaults depend on whether TT-style or Falcon-style SCSI is used. +Below, defaults are noted as n/m, where the first value refers to +TT-SCSI and the latter to Falcon-SCSI. If an illegal value is given +for one parameter, an error message is printed and that one setting is +ignored (other aren't affected). + + : + This is the maximum number of SCSI commands queued internal to the + Atari SCSI driver. A value of 1 effectively turns off the driver + internal multitasking (if it makes problems). Legal values are >= + 1. can be as high as you like, but values greater than + times the number of SCSI targets (LUNs) you have + don't make sense. Default: 16/8. + + : + Maximum number of SCSI commands issued to the driver for one + logical unit (LUN, usually one SCSI target). Legal values start + from 1. If tagged queuing (see below) is not used, values greater + than 2 don't make sense, but waste memory. Otherwise, the maximum + is the number of command tags available to the driver (currently + 32). Default: 8/1. (Note: Values > 1 seem to cause problems on a + Falcon, cause not yet known.) + + The value at a great part determines the amount of + memory SCSI reserves for itself. The formula is rather + complicated, but I can give you some hints: + no scatter-gather : cmd_per_lun * 232 bytes + full scatter-gather: cmd_per_lun * approx. 17 Kbytes + + : + Size of the scatter-gather table, i.e. the number of requests + consecutive on the disk that can be merged into one SCSI command. + Legal values are between 0 and 255. Default: 255/0. Note: This + value is forced to 0 on a Falcon, since scatter-gather isn't + possible with the ST-DMA. Not using scatter-gather hurts + perfomance significantly. + + : + The SCSI ID to be used by the initiator (your Atari). This is + usually 7, the highest possible ID. Every ID on the SCSI bus must + be unique. Default: determined at run time: If the NV-RAM checksum + is valid, and bit 7 in byte 30 of the NV-RAM is set, the lower 3 + bits of this byte are used as the host ID. (This method is defined + by Atari and also used by some TOS HD drivers.) If the above + isn't given, the default ID is 7. (both, TT and Falcon). + + : + 0 means turn off tagged queuing support, all other values > 0 mean + use tagged queuing for targets that support it. Default: currently + off, but this may change when tagged queuing handling has been + proofed to be reliable. + + Tagged queuing means that more than one command can be issued to + one LUN, and the SCSI device itself orders the requests so they + can be performed in optimal order. Not all SCSI devices support + tagged queuing (:-(). + + + +5) Options for Amiga Only: +========================== + +5.1) video= +----------- + +Syntax: video= + +The is a comma-separated list of the sub-options listed +below. This option is organized similar to the Atari version of the +"video"-option (4.1), but knows fewer sub-options. + +5.1.1) video mode +----------------- + +Again, similar to the video mode for the Atari (see 4.1.1). Predefined +modes depend on the used frame buffer device. + +OCS, ECS and AGA machines all use the color frame buffer. The following +predefined video modes are available: + +NTSC modes: + - ntsc : 640x200, 15 kHz, 60 Hz + - ntsc-lace : 640x400, 15 kHz, 60 Hz interlaced +PAL modes: + - pal : 640x256, 15 kHz, 50 Hz + - pal-lace : 640x512, 15 kHz, 50 Hz interlaced +ECS modes: + - multiscan : 640x480, 29 kHz, 57 Hz + - multiscan-lace : 640x960, 29 kHz, 57 Hz interlaced + - euro36 : 640x200, 15 kHz, 72 Hz + - euro36-lace : 640x400, 15 kHz, 72 Hz interlaced + - euro72 : 640x400, 29 kHz, 68 Hz + - euro72-lace : 640x800, 29 kHz, 68 Hz interlaced + - super72 : 800x300, 23 kHz, 70 Hz + - super72-lace : 800x600, 23 kHz, 70 Hz interlaced + - dblntsc-ff : 640x400, 27 kHz, 57 Hz + - dblntsc-lace : 640x800, 27 kHz, 57 Hz interlaced + - dblpal-ff : 640x512, 27 kHz, 47 Hz + - dblpal-lace : 640x1024, 27 kHz, 47 Hz interlaced + - dblntsc : 640x200, 27 kHz, 57 Hz doublescan + - dblpal : 640x256, 27 kHz, 47 Hz doublescan +VGA modes: + - vga : 640x480, 31 kHz, 60 Hz + - vga70 : 640x400, 31 kHz, 70 Hz + +Please notice that the ECS and VGA modes require either an ECS or AGA +chipset, and that these modes are limited to 2-bit color for the ECS +chipset and 8-bit color for the AGA chipset. + +5.1.2) depth +------------ + +Syntax: depth: + +Specify the number of bit-planes for the selected video-mode. + +5.1.3) inverse +-------------- + +Use inverted display. Functionally the same as the "inverse" +sub-option for the Atari. + +5.1.4) font +----------- + +Syntax: font: + +Specify the font to use in text modes. Functionally the same as the +"font" sub-option for the Atari, except that `PEARL8x8' is used instead +of `VGA8x8' if the vertical size of the display is less than 400 pixel +rows. + +5.1.5) monitorcap: +------------------- + +Syntax: monitorcap:;;; + +This describes the capabilities of a multisync monitor. For now, only +the color frame buffer uses the settings of "monitorcap:". + + and are the minimum and maximum, resp., vertical frequencies +your monitor can work with, in Hz. and are the same for +the horizontal frequency, in kHz. + + The defaults are 50;90;15;38 (Generic Amiga monitor). + + +5.2) fd_def_df0= +---------------- + +Syntax: fd_def_df0= + +Sets the df0 value for "silent" floppy drives. The value should be in +hexadecimal with "0x" prefix. + + +5.3) wd33c93= +------------- + +Syntax: wd33c93= + +The is a comma-separated list of the sub-options listed +below. + +5.3.1) nosync +------------- + +Syntax: nosync:bitmask + + bitmask is a byte where the 1st 7 bits correspond with the 7 +possible SCSI devices. Set a bit to prevent sync negotiation on that +device. To maintain backwards compatibility, a command-line such as +"wd33c93=255" will be automatically translated to +"wd33c93=nosync:0xff". The default is to disable sync negotiation for +all devices, eg. nosync:0xff. + +5.3.2) period +------------- + +Syntax: period:ns + + `ns' is the minimum # of nanoseconds in a SCSI data transfer +period. Default is 500; acceptable values are 250 - 1000. + +5.3.3) disconnect +----------------- + +Syntax: disconnect:x + + Specify x = 0 to never allow disconnects, 2 to always allow them. +x = 1 does 'adaptive' disconnects, which is the default and generally +the best choice. + +5.3.4) debug +------------ + +Syntax: debug:x + + If `DEBUGGING_ON' is defined, x is a bit mask that causes various +types of debug output to printed - see the DB_xxx defines in +wd33c93.h. + +5.3.5) clock +------------ + +Syntax: clock:x + + x = clock input in MHz for WD33c93 chip. Normal values would be from +8 through 20. The default value depends on your hostadapter(s), +default for the A3000 internal controller is 14, for the A2091 its 8 +and for the GVP hostadapters its either 8 or 14, depending on the +hostadapter and the SCSI-clock jumper present on some GVP +hostadapters. + +5.3.6) next +----------- + + No argument. Used to separate blocks of keywords when there's more +than one host adapter in the system. + + +5.4) gvp11= +----------- + +Syntax: gvp11= + + The earlier versions of the GVP driver did not handle DMA +address-mask settings correctly which made it necessary for some +people to use this option, in order to get their GVP controller +running under Linux. These problems have hopefully been solved and the +use of this option is now highly unrecommended! + + Incorrect use can lead to unpredictable behavior, so please only use +this option if you *know* what you are doing and have a reason to do +so. In any case if you experience problems and need to use this +option, please inform us about it by mailing to the Linux/68k kernel +mailing list. + + The address mask set by this option specifies which addresses are +valid for DMA with the GVP Series II SCSI controller. An address is +valid, if no bits are set except the bits that are set in the mask, +too. + + Some versions of the GVP can only DMA into a 24 bit address range, +some can address a 25 bit address range while others can use the whole +32 bit address range for DMA. The correct setting depends on your +controller and should be autodetected by the driver. An example is the +24 bit region which is specified by a mask of 0x00fffffe. + + +/* Local Variables: */ +/* mode: text */ +/* End: */ diff -u --recursive --new-file v2.1.16/linux/Documentation/modules.txt linux/Documentation/modules.txt --- v2.1.16/linux/Documentation/modules.txt Sun Jun 9 18:01:04 1996 +++ linux/Documentation/modules.txt Wed Dec 18 15:57:28 1996 @@ -63,6 +63,7 @@ aztcd: Aztech,Orchid,Okano,Wearnes cm206: Philips/LMS CM206 gscd: Goldstar GCDR-420 + bpcd: MicroSolutions backpack CDrom mcd, mcdx: Mitsumi LU005, FX001 optcd: Optics Storage Dolphin 8000AT sjcd: Sanyo CDR-H94A diff -u --recursive --new-file v2.1.16/linux/Documentation/networking/net-modules.txt linux/Documentation/networking/net-modules.txt --- v2.1.16/linux/Documentation/networking/net-modules.txt Wed Oct 16 10:48:06 1996 +++ linux/Documentation/networking/net-modules.txt Sat Dec 21 13:16:57 1996 @@ -213,8 +213,10 @@ in increments of 0x020) ibmtr.c: - io = 0xA20 - (Probes ports: 0xA20, 0xA24 -- Ok, 0x220, 0x224, but IBM style..) + io = 0xa20, 0xa24 (autoprobed by default) + irq = 0 (driver cannot select irq - read from hardware) + mem = 0 (shared memory base set at 0xd0000 and not yet + able to override thru mem= parameter.) lance.c: *Not modularized* (PCI, and ISA probing; "CONFIG_PCI" needed for PCI support) diff -u --recursive --new-file v2.1.16/linux/Documentation/networking/routing.txt linux/Documentation/networking/routing.txt --- v2.1.16/linux/Documentation/networking/routing.txt Wed Dec 18 15:58:34 1996 +++ linux/Documentation/networking/routing.txt Thu Dec 19 10:31:52 1996 @@ -1,6 +1,4 @@ -The directory ip-routing contains: - -- patch to official linux-2.0 kernel tree +The directory ftp.inr.ac.ru:/ip-routing contains: - iproute.c - "professional" routing table maintainance utility. diff -u --recursive --new-file v2.1.16/linux/MAINTAINERS linux/MAINTAINERS --- v2.1.16/linux/MAINTAINERS Wed Dec 18 15:58:34 1996 +++ linux/MAINTAINERS Sat Dec 21 13:16:57 1996 @@ -107,6 +107,12 @@ L: linux-laptop@vger.rutgers.edu S: Maintained +TOKEN-RING NETWORK DRIVER +P: Paul Norton +M: pnorton@cts.com +L: linux-net@vger.rutgers.edu +S: Maintained + APPLETALK NETWORK LAYER P: Alan Cox & University Of Michigan M: net-patches@lxorguk.ukuu.org.uk diff -u --recursive --new-file v2.1.16/linux/Makefile linux/Makefile --- v2.1.16/linux/Makefile Wed Dec 18 15:58:34 1996 +++ linux/Makefile Wed Dec 18 15:58:14 1996 @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 1 -SUBLEVEL = 16 +SUBLEVEL = 17 ARCH = i386 diff -u --recursive --new-file v2.1.16/linux/arch/alpha/kernel/process.c linux/arch/alpha/kernel/process.c --- v2.1.16/linux/arch/alpha/kernel/process.c Tue Oct 29 19:58:01 1996 +++ linux/arch/alpha/kernel/process.c Thu Dec 19 16:48:08 1996 @@ -133,7 +133,7 @@ * Use the passed "regs" pointer to determine how much space we need * for a kernel fork(). */ -void copy_thread(int nr, unsigned long clone_flags, unsigned long usp, +int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, struct task_struct * p, struct pt_regs * regs) { struct pt_regs * childregs; @@ -159,6 +159,8 @@ p->tss.pal_flags = 1; /* set FEN, clear everything else */ p->tss.flags = current->tss.flags; p->mm->context = 0; + + return 0; } /* diff -u --recursive --new-file v2.1.16/linux/arch/alpha/mm/init.c linux/arch/alpha/mm/init.c --- v2.1.16/linux/arch/alpha/mm/init.c Tue Oct 29 19:58:02 1996 +++ linux/arch/alpha/mm/init.c Thu Dec 19 16:46:09 1996 @@ -145,7 +145,7 @@ unsigned long tmp; end_mem &= PAGE_MASK; - max_mapnr = MAP_NR(end_mem); + max_mapnr = num_physpages = MAP_NR(end_mem); high_memory = (void *) end_mem; start_mem = PAGE_ALIGN(start_mem); diff -u --recursive --new-file v2.1.16/linux/arch/i386/defconfig linux/arch/i386/defconfig --- v2.1.16/linux/arch/i386/defconfig Wed Dec 18 15:58:34 1996 +++ linux/arch/i386/defconfig Thu Dec 19 10:54:05 1996 @@ -59,6 +59,7 @@ # CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_EZ is not set # CONFIG_BLK_DEV_HD is not set # @@ -116,7 +117,6 @@ # CONFIG_PLIP is not set # CONFIG_PPP is not set # CONFIG_NET_RADIO is not set -# CONFIG_NET_HAM is not set # CONFIG_SLIP is not set # CONFIG_TR is not set diff -u --recursive --new-file v2.1.16/linux/arch/i386/kernel/process.c linux/arch/i386/kernel/process.c --- v2.1.16/linux/arch/i386/kernel/process.c Tue Oct 29 19:58:02 1996 +++ linux/arch/i386/kernel/process.c Thu Dec 19 21:44:20 1996 @@ -298,7 +298,7 @@ { } -void copy_thread(int nr, unsigned long clone_flags, unsigned long esp, +int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, struct task_struct * p, struct pt_regs * regs) { int i; @@ -338,6 +338,7 @@ p->tss.io_bitmap[i] = ~0; if (last_task_used_math == current) __asm__("clts ; fnsave %0 ; frstor %0":"=m" (p->tss.i387)); + return 0; } /* diff -u --recursive --new-file v2.1.16/linux/arch/i386/mm/init.c linux/arch/i386/mm/init.c --- v2.1.16/linux/arch/i386/mm/init.c Thu Dec 12 19:36:58 1996 +++ linux/arch/i386/mm/init.c Thu Dec 19 16:46:09 1996 @@ -211,7 +211,7 @@ end_mem &= PAGE_MASK; high_memory = (void *) end_mem; - max_mapnr = MAP_NR(end_mem); + max_mapnr = num_physpages = MAP_NR(end_mem); /* clear the zero-page */ memset(empty_zero_page, 0, PAGE_SIZE); diff -u --recursive --new-file v2.1.16/linux/arch/m68k/Makefile linux/arch/m68k/Makefile --- v2.1.16/linux/arch/m68k/Makefile Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/Makefile Fri Dec 20 11:19:57 1996 @@ -18,19 +18,11 @@ # override top level makefile AS += -m68020 -ifdef CONFIG_KERNEL_ELF LD += -m m68kelf ifneq ($(COMPILE_ARCH),$(ARCH)) # prefix for cross-compiling binaries CROSS_COMPILE = m68k-linux- endif -else -LD += -m m68klinux -ifneq ($(COMPILE_ARCH),$(ARCH)) - # prefix for cross-compiling binaries - CROSS_COMPILE = m68k-linuxaout- -endif -endif # # Set these to indicate how to link it.. @@ -42,11 +34,7 @@ # -qmagic (we need to remove the 32 byte header for bootup purposes) # -ifdef CONFIG_KERNEL_ELF LINKFLAGS = -Ttext 0x1000 -else -LINKFLAGS = -qmagic -Ttext 0xFE0 -endif CFLAGS := $(CFLAGS) -pipe @@ -55,7 +43,7 @@ endif ifdef CONFIG_OPTIMIZE_060 -CFLAGS := $(CFLAGS) -m68020-40 -Wa,-m68060 +CFLAGS := $(CFLAGS) -m68020-40 endif HEAD := arch/m68k/kernel/head.o diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/amifb.c linux/arch/m68k/amiga/amifb.c --- v2.1.16/linux/arch/m68k/amiga/amifb.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/amifb.c Fri Dec 20 11:19:57 1996 @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -606,6 +605,8 @@ #define SPRITEMEMSIZE (64*64/4) /* max 64*64*4 */ #define DUMMYSPRITEMEMSIZE (8) +#define CHIPRAM_SAFETY_LIMIT (16384) + static u_long videomemory, spritememory; static u_long videomemorysize; @@ -639,7 +640,7 @@ u_short w[2]; } copins; -struct copdisplay { +static struct copdisplay { copins *init; copins *wait; copins *list[2][2]; @@ -662,7 +663,7 @@ * Current Video Mode */ -struct amiga_fb_par { +static struct amiga_fb_par { /* General Values */ @@ -835,7 +836,7 @@ "user0", "user1", "user2", "user3", "user4", "user5", "user6", "user7" }; -struct fb_var_screeninfo amiga_fb_predefined[] = { +static struct fb_var_screeninfo amiga_fb_predefined[] = { /* * Autodetect (Default) Video Mode @@ -1814,7 +1815,7 @@ custom.dmacon = DMAF_ALL | DMAF_MASTER; - switch (boot_info.bi_amiga.chipset) { + switch (amiga_chipset) { #ifdef CONFIG_AMIFB_OCS case CS_OCS: strcat(amiga_fb_name, "OCS"); @@ -1825,7 +1826,7 @@ maxdepth[TAG_LORES] = 6; maxfmode = TAG_FMODE_1; if (!amifb_usermode) /* Set the Default Video Mode */ - get_video_mode(boot_info.bi_un.bi_ami.vblank == 50 ? + get_video_mode(amiga_vblank == 50 ? DEFMODE_PAL : DEFMODE_NTSC); videomemorysize = VIDEOMEMSIZE_OCS; break; @@ -1841,13 +1842,14 @@ maxfmode = TAG_FMODE_1; if (!amifb_usermode) { /* Set the Default Video Mode */ if (AMIGAHW_PRESENT(AMBER_FF)) - get_video_mode(boot_info.bi_un.bi_ami.vblank == 50 ? + get_video_mode(amiga_vblank == 50 ? DEFMODE_AMBER_PAL : DEFMODE_AMBER_NTSC); else - get_video_mode(boot_info.bi_un.bi_ami.vblank == 50 ? + get_video_mode(amiga_vblank == 50 ? DEFMODE_PAL : DEFMODE_NTSC); } - if (boot_info.bi_amiga.chip_size > 1048576) + if (amiga_chip_avail()-CHIPRAM_SAFETY_LIMIT > + VIDEOMEMSIZE_ECS_1M) videomemorysize = VIDEOMEMSIZE_ECS_2M; else videomemorysize = VIDEOMEMSIZE_ECS_1M; @@ -1864,7 +1866,8 @@ maxfmode = TAG_FMODE_4; if (!amifb_usermode) /* Set the Default Video Mode */ get_video_mode(DEFMODE_AGA); - if (boot_info.bi_amiga.chip_size > 1048576) + if (amiga_chip_avail()-CHIPRAM_SAFETY_LIMIT > + VIDEOMEMSIZE_AGA_1M) videomemorysize = VIDEOMEMSIZE_AGA_2M; else videomemorysize = VIDEOMEMSIZE_AGA_1M; @@ -2504,7 +2507,7 @@ AMIGAHW_PRESENT(AGNUS_HR_NTSC)) { par->beamcon0 = BMC0_PAL; par->hsstop = 1; - } else if (boot_info.bi_un.bi_ami.vblank != 50) + } else if (amiga_vblank != 50) return -EINVAL; } else { /* NTSC video mode @@ -2526,7 +2529,7 @@ AMIGAHW_PRESENT(AGNUS_HR_NTSC)) { par->beamcon0 = 0; par->hsstop = 1; - } else if (boot_info.bi_un.bi_ami.vblank != 60) + } else if (amiga_vblank != 60) return -EINVAL; } if (IS_OCS) { diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/amiints.c linux/arch/m68k/amiga/amiints.c --- v2.1.16/linux/arch/m68k/amiga/amiints.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/amiints.c Fri Dec 20 11:19:57 1996 @@ -97,7 +97,7 @@ cia_init_IRQ(&ciab_base); } -void amiga_insert_irq(irq_node_t **list, irq_node_t *node) +static inline void amiga_insert_irq(irq_node_t **list, irq_node_t *node) { unsigned long flags; irq_node_t *cur; @@ -135,7 +135,7 @@ restore_flags(flags); } -void amiga_delete_irq(irq_node_t **list, void *dev_id) +static inline void amiga_delete_irq(irq_node_t **list, void *dev_id) { unsigned long flags; irq_node_t *node; diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/amikeyb.c linux/arch/m68k/amiga/amikeyb.c --- v2.1.16/linux/arch/m68k/amiga/amikeyb.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/amiga/amikeyb.c Fri Dec 20 11:19:57 1996 @@ -23,8 +23,6 @@ #include #include -#include -#include #include #include #include diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/amisound.c linux/arch/m68k/amiga/amisound.c --- v2.1.16/linux/arch/m68k/amiga/amisound.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/amiga/amisound.c Fri Dec 20 11:19:57 1996 @@ -11,7 +11,6 @@ #include #include -#include #include #include diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/chipram.c linux/arch/m68k/amiga/chipram.c --- v2.1.16/linux/arch/m68k/amiga/chipram.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/amiga/chipram.c Fri Dec 20 11:19:57 1996 @@ -8,7 +8,6 @@ #include #include -#include #include struct chip_desc { @@ -21,7 +20,7 @@ #define DP(ptr) ((struct chip_desc *)(ptr)) -static unsigned long chipsize; +u_long amiga_chip_size; static unsigned long chipavail; /*MILAN*/ /*MILAN*/ @@ -41,22 +40,20 @@ if (!AMIGAHW_PRESENT(CHIP_RAM)) return; - chipsize = boot_info.bi_amiga.chip_size; - /* initialize start boundary */ dp = DP(chipaddr); dp->first = 1; dp->alloced = 0; - dp->length = chipsize - 2*sizeof(*dp); + dp->length = amiga_chip_size - 2*sizeof(*dp); /* initialize end boundary */ - dp = DP(chipaddr + chipsize) - 1; + dp = DP(chipaddr + amiga_chip_size) - 1; dp->last = 1; dp->alloced = 0; - dp->length = chipsize - 2*sizeof(*dp); + dp->length = amiga_chip_size - 2*sizeof(*dp); chipavail = dp->length; /*MILAN*/ #ifdef DEBUG @@ -82,7 +79,7 @@ * get pointer to descriptor for last chunk by * going backwards from end chunk */ - dp = DP(chipaddr + chipsize) - 1; + dp = DP(chipaddr + amiga_chip_size) - 1; dp = DP((unsigned long)dp - dp->length) - 1; while ((dp->alloced || dp->length < size) diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/config.c linux/arch/m68k/amiga/config.c --- v2.1.16/linux/arch/m68k/amiga/config.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/config.c Fri Dec 20 11:19:57 1996 @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -28,13 +29,25 @@ #include #include #include +#include +u_long amiga_model; +u_long amiga_eclock; u_long amiga_masterclock; u_long amiga_colorclock; +u_long amiga_chipset; +u_char amiga_vblank; +u_char amiga_psfreq; +struct amiga_hw_present amiga_hw_present; + +static const char *amiga_models[] = { + "A500", "A500+", "A600", "A1000", "A1200", "A2000", "A2500", "A3000", + "A3000T", "A3000+", "A4000", "A4000T", "CDTV", "CD32", "Draco" +}; extern char m68k_debug_device[]; -extern void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *)); +static void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *)); /* amiga specific keyboard functions */ extern int amiga_keyb_init(void); extern int amiga_kbdrate (struct kbd_repeat *); @@ -46,140 +59,141 @@ extern int amiga_free_irq (unsigned int irq, void *dev_id); extern void amiga_enable_irq (unsigned int); extern void amiga_disable_irq (unsigned int); +static void amiga_get_model(char *model); +static int amiga_get_hardware_list(char *buffer); extern int amiga_get_irq_list (char *); /* amiga specific timer functions */ -extern unsigned long amiga_gettimeoffset (void); -extern void a3000_gettod (int *, int *, int *, int *, int *, int *); -extern void a2000_gettod (int *, int *, int *, int *, int *, int *); -extern int amiga_hwclk (int, struct hwclk_time *); -extern int amiga_set_clock_mmss (unsigned long); +static unsigned long amiga_gettimeoffset (void); +static void a3000_gettod (int *, int *, int *, int *, int *, int *); +static void a2000_gettod (int *, int *, int *, int *, int *, int *); +static int amiga_hwclk (int, struct hwclk_time *); +static int amiga_set_clock_mmss (unsigned long); extern void amiga_mksound( unsigned int count, unsigned int ticks ); #ifdef CONFIG_BLK_DEV_FD extern int amiga_floppy_init (void); extern void amiga_floppy_setup(char *, int *); #endif -extern void amiga_reset (void); -extern void amiga_waitbut(void); +static void amiga_reset (void); +static void amiga_waitbut(void); extern struct consw fb_con; extern struct fb_info *amiga_fb_init(long *); extern void zorro_init(void); static void ami_savekmsg_init(void); static void ami_mem_print(const char *b); -extern void amiga_debug_init(void); +static void amiga_debug_init(void); extern void amiga_video_setup(char *, int *); +extern void amiga_syms_export(void); extern void (*kd_mksound)(unsigned int, unsigned int); + /* + * Parse an Amiga-specific record in the bootinfo + */ + +int amiga_parse_bootinfo(const struct bi_record *record) +{ + int unknown = 0; + const u_long *data = record->data; + + switch (record->tag) { + case BI_AMIGA_MODEL: + amiga_model = *data; + break; + + case BI_AMIGA_ECLOCK: + amiga_eclock = *data; + break; + + case BI_AMIGA_CHIPSET: + amiga_chipset = *data; + break; + + case BI_AMIGA_CHIP_SIZE: + amiga_chip_size = *(const int *)data; + break; + + case BI_AMIGA_VBLANK: + amiga_vblank = *(const u_char *)data; + break; + + case BI_AMIGA_PSFREQ: + amiga_psfreq = *(const u_char *)data; + break; + + case BI_AMIGA_AUTOCON: + if (zorro_num_autocon < ZORRO_NUM_AUTO) + memcpy(&zorro_autocon[zorro_num_autocon++], + (const struct ConfigDev *)data, + sizeof(struct ConfigDev)); + else + printk("amiga_parse_bootinfo: too many AutoConfig devices\n"); + break; + + case BI_AMIGA_SERPER: + /* serial port period: ignored here */ + break; + + default: + unknown = 1; + } + return(unknown); +} + + /* + * Setup the Amiga configuration info + */ + void config_amiga(void) { - char *type = NULL; + /* Fill in some default values, if necessary */ + if (amiga_eclock == 0) + amiga_eclock = 709379; + + memset(&amiga_hw_present, 0, sizeof(amiga_hw_present)); - switch(boot_info.bi_amiga.model) { - case AMI_500: - type = "A500"; - break; - case AMI_500PLUS: - type = "A500+"; - break; - case AMI_600: - type = "A600"; - break; - case AMI_1000: - type = "A1000"; - break; - case AMI_1200: - type = "A1200"; - break; - case AMI_2000: - type = "A2000"; - break; - case AMI_2500: - type = "A2500"; - break; - case AMI_3000: - type = "A3000"; - break; - case AMI_3000T: - type = "A3000T"; - break; - case AMI_3000PLUS: - type = "A3000+"; - break; - case AMI_4000: - type = "A4000"; - break; - case AMI_4000T: - type = "A4000T"; - break; - case AMI_CDTV: - type = "CDTV"; - break; - case AMI_CD32: - type = "CD32"; - break; - case AMI_DRACO: - type = "Draco"; - break; - } printk("Amiga hardware found: "); - if (type) - printk("[%s] ", type); - switch(boot_info.bi_amiga.model) { - case AMI_UNKNOWN: - goto Generic; + if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) + printk("[%s] ", amiga_models[amiga_model-AMI_500]); - case AMI_500: - case AMI_500PLUS: - case AMI_1000: - AMIGAHW_SET(A2000_CLK); /* Is this correct? */ - printk("A2000_CLK "); + switch(amiga_model) { + case AMI_UNKNOWN: goto Generic; case AMI_600: case AMI_1200: AMIGAHW_SET(A1200_IDE); - printk("A1200_IDE "); - AMIGAHW_SET(A2000_CLK); /* Is this correct? */ - printk("A2000_CLK "); - goto Generic; - + case AMI_500: + case AMI_500PLUS: + case AMI_1000: case AMI_2000: case AMI_2500: - AMIGAHW_SET(A2000_CLK); - printk("A2000_CLK "); + AMIGAHW_SET(A2000_CLK); /* Is this correct for all models? */ goto Generic; case AMI_3000: case AMI_3000T: AMIGAHW_SET(AMBER_FF); - printk("AMBER_FF "); AMIGAHW_SET(MAGIC_REKICK); - printk("MAGIC_REKICK "); /* fall through */ case AMI_3000PLUS: AMIGAHW_SET(A3000_SCSI); - printk("A3000_SCSI "); AMIGAHW_SET(A3000_CLK); - printk("A3000_CLK "); + AMIGAHW_SET(ZORRO3); goto Generic; case AMI_4000T: AMIGAHW_SET(A4000_SCSI); - printk("A4000_SCSI "); /* fall through */ case AMI_4000: AMIGAHW_SET(A4000_IDE); - printk("A4000_IDE "); AMIGAHW_SET(A3000_CLK); - printk("A3000_CLK "); + AMIGAHW_SET(ZORRO3); goto Generic; case AMI_CDTV: case AMI_CD32: AMIGAHW_SET(CD_ROM); - printk("CD_ROM "); AMIGAHW_SET(A2000_CLK); /* Is this correct? */ - printk("A2000_CLK "); goto Generic; Generic: @@ -193,61 +207,49 @@ AMIGAHW_SET(AMI_PARALLEL); AMIGAHW_SET(CHIP_RAM); AMIGAHW_SET(PAULA); - printk("VIDEO BLITTER AUDIO FLOPPY KEYBOARD MOUSE SERIAL PARALLEL " - "CHIP_RAM PAULA "); - switch(boot_info.bi_amiga.chipset) { + switch(amiga_chipset) { case CS_OCS: case CS_ECS: case CS_AGA: switch (custom.deniseid & 0xf) { case 0x0c: AMIGAHW_SET(DENISE_HR); - printk("DENISE_HR "); break; case 0x08: AMIGAHW_SET(LISA); - printk("LISA "); break; } break; default: AMIGAHW_SET(DENISE); - printk("DENISE "); break; } switch ((custom.vposr>>8) & 0x7f) { case 0x00: AMIGAHW_SET(AGNUS_PAL); - printk("AGNUS_PAL "); break; case 0x10: AMIGAHW_SET(AGNUS_NTSC); - printk("AGNUS_NTSC "); break; case 0x20: case 0x21: AMIGAHW_SET(AGNUS_HR_PAL); - printk("AGNUS_HR_PAL "); break; case 0x30: case 0x31: AMIGAHW_SET(AGNUS_HR_NTSC); - printk("AGNUS_HR_NTSC "); break; case 0x22: case 0x23: AMIGAHW_SET(ALICE_PAL); - printk("ALICE_PAL "); break; case 0x32: case 0x33: AMIGAHW_SET(ALICE_NTSC); - printk("ALICE_NTSC "); break; } AMIGAHW_SET(ZORRO); - printk("ZORRO "); break; case AMI_DRACO: @@ -256,8 +258,45 @@ default: panic("Unknown Amiga Model"); } + +#define AMIGAHW_ANNOUNCE(name, str) \ + if (AMIGAHW_PRESENT(name)) \ + printk(str) + + AMIGAHW_ANNOUNCE(AMI_VIDEO, "VIDEO "); + AMIGAHW_ANNOUNCE(AMI_BLITTER, "BLITTER "); + AMIGAHW_ANNOUNCE(AMBER_FF, "AMBER_FF "); + AMIGAHW_ANNOUNCE(AMI_AUDIO, "AUDIO "); + AMIGAHW_ANNOUNCE(AMI_FLOPPY, "FLOPPY "); + AMIGAHW_ANNOUNCE(A3000_SCSI, "A3000_SCSI "); + AMIGAHW_ANNOUNCE(A4000_SCSI, "A4000_SCSI "); + AMIGAHW_ANNOUNCE(A1200_IDE, "A1200_IDE "); + AMIGAHW_ANNOUNCE(A4000_IDE, "A4000_IDE "); + AMIGAHW_ANNOUNCE(CD_ROM, "CD_ROM "); + AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "KEYBOARD "); + AMIGAHW_ANNOUNCE(AMI_MOUSE, "MOUSE "); + AMIGAHW_ANNOUNCE(AMI_SERIAL, "SERIAL "); + AMIGAHW_ANNOUNCE(AMI_PARALLEL, "PARALLEL "); + AMIGAHW_ANNOUNCE(A2000_CLK, "A2000_CLK "); + AMIGAHW_ANNOUNCE(A3000_CLK, "A3000_CLK "); + AMIGAHW_ANNOUNCE(CHIP_RAM, "CHIP_RAM "); + AMIGAHW_ANNOUNCE(PAULA, "PAULA "); + AMIGAHW_ANNOUNCE(DENISE, "DENISE "); + AMIGAHW_ANNOUNCE(DENISE_HR, "DENISE_HR "); + AMIGAHW_ANNOUNCE(LISA, "LISA "); + AMIGAHW_ANNOUNCE(AGNUS_PAL, "AGNUS_PAL "); + AMIGAHW_ANNOUNCE(AGNUS_NTSC, "AGNUS_NTSC "); + AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "AGNUS_HR_PAL "); + AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "AGNUS_HR_NTSC "); + AMIGAHW_ANNOUNCE(ALICE_PAL, "ALICE_PAL "); + AMIGAHW_ANNOUNCE(ALICE_NTSC, "ALICE_NTSC "); + AMIGAHW_ANNOUNCE(MAGIC_REKICK, "MAGIC_REKICK "); + if (AMIGAHW_SET(ZORRO)) + printk("ZORRO%s ", AMIGAHW_SET(ZORRO3) ? "3" : ""); printk("\n"); - + +#undef AMIGAHW_ANNOUNCE + mach_sched_init = amiga_sched_init; mach_keyb_init = amiga_keyb_init; mach_kbdrate = amiga_kbdrate; @@ -267,6 +306,8 @@ mach_free_irq = amiga_free_irq; mach_enable_irq = amiga_enable_irq; mach_disable_irq = amiga_disable_irq; + mach_get_model = amiga_get_model; + mach_get_hardware_list = amiga_get_hardware_list; mach_get_irq_list = amiga_get_irq_list; mach_gettimeoffset = amiga_gettimeoffset; if (AMIGAHW_PRESENT(A3000_CLK)){ @@ -299,11 +340,12 @@ mach_fb_init = amiga_fb_init; mach_debug_init = amiga_debug_init; mach_video_setup = amiga_video_setup; + mach_syms_export = amiga_syms_export; kd_mksound = amiga_mksound; /* Fill in the clock values (based on the 700 kHz E-Clock) */ amiga_masterclock = 40*amiga_eclock; /* 28 MHz */ - amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */ + amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */ /* clear all DMA bits */ custom.dmacon = DMAF_ALL; @@ -335,7 +377,8 @@ static unsigned short jiffy_ticks; -void amiga_sched_init(void (*timer_routine)(int, void *, struct pt_regs *)) +static void amiga_sched_init(void (*timer_routine)(int, void *, + struct pt_regs *)) { jiffy_ticks = (amiga_eclock+HZ/2)/HZ; @@ -356,7 +399,7 @@ #define TICK_SIZE 10000 /* This is always executed with interrupts disabled. */ -unsigned long amiga_gettimeoffset (void) +static unsigned long amiga_gettimeoffset (void) { unsigned short hi, lo, hi2; unsigned long ticks, offset = 0; @@ -384,8 +427,8 @@ return ticks + offset; } -void a3000_gettod (int *yearp, int *monp, int *dayp, - int *hourp, int *minp, int *secp) +static void a3000_gettod (int *yearp, int *monp, int *dayp, + int *hourp, int *minp, int *secp) { volatile struct tod3000 *tod = TOD_3000; @@ -401,8 +444,8 @@ tod->cntrl1 = TOD3000_CNTRL1_FREE; } -void a2000_gettod (int *yearp, int *monp, int *dayp, - int *hourp, int *minp, int *secp) +static void a2000_gettod (int *yearp, int *monp, int *dayp, + int *hourp, int *minp, int *secp) { volatile struct tod2000 *tod = TOD_2000; @@ -427,7 +470,7 @@ tod->cntrl1 &= ~TOD2000_CNTRL1_HOLD; } -int amiga_hwclk(int op, struct hwclk_time *t) +static int amiga_hwclk(int op, struct hwclk_time *t) { if (AMIGAHW_PRESENT(A3000_CLK)) { volatile struct tod3000 *tod = TOD_3000; @@ -511,7 +554,7 @@ return 0; } -int amiga_set_clock_mmss (unsigned long nowtime) +static int amiga_set_clock_mmss (unsigned long nowtime) { short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; @@ -545,7 +588,7 @@ return 0; } -void amiga_waitbut (void) +static void amiga_waitbut (void) { int i; @@ -585,7 +628,7 @@ } } -void amiga_debug_init (void) +static void amiga_debug_init (void) { extern void (*debug_print_proc)(const char *); @@ -612,10 +655,10 @@ console_print (buf); } -NORET_TYPE void amiga_reset( void ) +static NORET_TYPE void amiga_reset( void ) ATTRIB_NORET; -void amiga_reset (void) +static void amiga_reset (void) { unsigned long jmp_addr040 = VTOP(&&jmp_addr_label040); unsigned long jmp_addr = VTOP(&&jmp_addr_label); @@ -717,71 +760,25 @@ } -void amiga_get_model(char *model) +static void amiga_get_model(char *model) { strcpy(model, "Amiga "); - switch (boot_info.bi_amiga.model) { - case AMI_500: - strcat(model, "500"); - break; - case AMI_500PLUS: - strcat(model, "500+"); - break; - case AMI_600: - strcat(model, "600"); - break; - case AMI_1000: - strcat(model, "1000"); - break; - case AMI_1200: - strcat(model, "1200"); - break; - case AMI_2000: - strcat(model, "2000"); - break; - case AMI_2500: - strcat(model, "2500"); - break; - case AMI_3000: - strcat(model, "3000"); - break; - case AMI_3000T: - strcat(model, "3000T"); - break; - case AMI_3000PLUS: - strcat(model, "3000+"); - break; - case AMI_4000: - strcat(model, "4000"); - break; - case AMI_4000T: - strcat(model, "4000T"); - break; - case AMI_CDTV: - strcat(model, "CDTV"); - break; - case AMI_CD32: - strcat(model, "CD32"); - break; - case AMI_DRACO: - strcpy(model, "DRACO"); - break; - } + if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) + strcat(model, amiga_models[amiga_model-AMI_500]); } -int amiga_get_hardware_list(char *buffer) +static int amiga_get_hardware_list(char *buffer) { int len = 0; if (AMIGAHW_PRESENT(CHIP_RAM)) - len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", - boot_info.bi_amiga.chip_size>>10); + len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10); len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n", - boot_info.bi_amiga.psfreq, amiga_eclock); + amiga_psfreq, amiga_eclock); if (AMIGAHW_PRESENT(AMI_VIDEO)) { char *type; - switch(boot_info.bi_amiga.chipset) { + switch(amiga_chipset) { case CS_OCS: type = "OCS"; break; @@ -798,7 +795,7 @@ len += sprintf(buffer+len, "Graphics:\t%s\n", type); } -#define AMIGAHW_ANNOUNCE(name, str) \ +#define AMIGAHW_ANNOUNCE(name, str) \ if (AMIGAHW_PRESENT(name)) \ len += sprintf (buffer+len, "\t%s\n", str) @@ -833,9 +830,11 @@ AMIGAHW_ANNOUNCE(ALICE_NTSC, "NTSC Alice 8374"); AMIGAHW_ANNOUNCE(MAGIC_REKICK, "Magic Hard Rekick"); if (AMIGAHW_PRESENT(ZORRO)) - len += sprintf(buffer+len, "\tZorro AutoConfig: %d Expansion Device%s\n", - boot_info.bi_amiga.num_autocon, - boot_info.bi_amiga.num_autocon == 1 ? "" : "s"); + len += sprintf(buffer+len, "\tZorro%s AutoConfig: %d Expansion Device%s\n", + AMIGAHW_PRESENT(ZORRO3) ? " III" : "", + zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s"); + +#undef AMIGAHW_ANNOUNCE return(len); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/cyberfb.c linux/arch/m68k/amiga/cyberfb.c --- v2.1.16/linux/arch/m68k/amiga/cyberfb.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/cyberfb.c Fri Dec 20 11:19:57 1996 @@ -424,6 +424,7 @@ fix->xpanstep = 0; fix->ypanstep = 0; fix->ywrapstep = 0; + fix->line_length = 0; for (i = 0; i < arraysize(fix->reserved); i++) fix->reserved[i] = 0; @@ -896,10 +897,10 @@ memcpy(to, from, len); return; case 1: - memcpy_fromfs(to, from, len); + copy_from_user(to, from, len); return; case 2: - memcpy_tofs(to, from, len); + copy_to_user(to, from, len); return; } } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/ksyms.c linux/arch/m68k/amiga/ksyms.c --- v2.1.16/linux/arch/m68k/amiga/ksyms.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/ksyms.c Fri Dec 20 11:19:57 1996 @@ -1,18 +1,20 @@ +#include #include #include -#include #include -#include extern volatile u_short amiga_audio_min_period; extern u_short amiga_audio_period; -static struct symbol_table mach_amiga_symbol_table = { +static struct symbol_table amiga_symbol_table = { #include /* * Add things here when you find the need for it. */ + X(amiga_model), + X(amiga_hw_present), + X(amiga_eclock), X(amiga_colorclock), X(amiga_chip_alloc), X(amiga_chip_free), @@ -34,7 +36,7 @@ #include }; -void mach_amiga_syms_export(void) +void amiga_syms_export(void) { - register_symtab(&mach_amiga_symbol_table); + register_symtab(&amiga_symbol_table); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/amiga/zorro.c linux/arch/m68k/amiga/zorro.c --- v2.1.16/linux/arch/m68k/amiga/zorro.c Fri Nov 22 18:28:13 1996 +++ linux/arch/m68k/amiga/zorro.c Fri Dec 20 11:19:57 1996 @@ -614,10 +614,12 @@ /* - * Configured Expansion Devices + * Expansion Devices */ -static u_long BoardPartFlags[NUM_AUTO] = { 0, }; +int zorro_num_autocon; +struct ConfigDev zorro_autocon[ZORRO_NUM_AUTO]; +static u_long BoardPartFlags[ZORRO_NUM_AUTO] = { 0, }; /* @@ -657,14 +659,14 @@ return(0); } - for (key = index + 1; key <= boot_info.bi_amiga.num_autocon; key++) { - cd = &boot_info.bi_amiga.autocon[key-1]; + for (key = index + 1; key <= zorro_num_autocon; key++) { + cd = &zorro_autocon[key-1]; if ((cd->cd_Rom.er_Manufacturer == manuf) && (cd->cd_Rom.er_Product == prod) && !(BoardPartFlags[key-1] & (1< boot_info.bi_amiga.num_autocon)) + if ((key < 1) || (key > zorro_num_autocon)) printk("zorro_get_board: bad key %d\n", key); else - cd = &boot_info.bi_amiga.autocon[key-1]; + cd = &zorro_autocon[key-1]; return(cd); } @@ -691,7 +693,7 @@ void zorro_config_board(int key, int part) { - if ((key < 1) || (key > boot_info.bi_amiga.num_autocon)) + if ((key < 1) || (key > zorro_num_autocon)) printk("zorro_config_board: bad key %d\n", key); else if ((part < 0) || (part > 31)) printk("zorro_config_board: bad part %d\n", part); @@ -708,7 +710,7 @@ void zorro_unconfig_board(int key, int part) { - if ((key < 1) || (key > boot_info.bi_amiga.num_autocon)) + if ((key < 1) || (key > zorro_num_autocon)) printk("zorro_unconfig_board: bad key %d\n", key); else if ((part < 0) || (part > 31)) printk("zorro_unconfig_board: bad part %d\n", part); @@ -738,7 +740,7 @@ int i, j, k, len = 0; enum GVP_ident epc; - cd = &boot_info.bi_amiga.autocon[devnum]; + cd = &zorro_autocon[devnum]; manuf = cd->cd_Rom.er_Manufacturer; prod = cd->cd_Rom.er_Product; addr = (u_long)cd->cd_BoardAddr; @@ -820,11 +822,11 @@ return; printk("Probing AutoConfig expansion device(s):\n"); - for (i = 0; i < boot_info.bi_amiga.num_autocon; i++) { + for (i = 0; i < zorro_num_autocon; i++) { identify(i, tmp); printk(tmp); } - if (!boot_info.bi_amiga.num_autocon) + if (!zorro_num_autocon) printk("No AutoConfig expansion devices present.\n"); } @@ -840,7 +842,7 @@ if (MACH_IS_AMIGA && AMIGAHW_PRESENT(ZORRO)) { len = sprintf(buffer, "AutoConfig expansion devices:\n"); - for (i = 0; i < boot_info.bi_amiga.num_autocon; i++) { + for (i = 0; i < zorro_num_autocon; i++) { j = identify(i, tmp); if (len+j >= 4075) { len += sprintf(buffer+len, "4K limit reached!\n"); @@ -911,12 +913,12 @@ return; /* Mark all available Zorro II memory */ - for (i = 0; i < boot_info.bi_amiga.num_autocon; i++) { - cd = &boot_info.bi_amiga.autocon[i]; + for (i = 0; i < zorro_num_autocon; i++) { + cd = &zorro_autocon[i]; if (cd->cd_Rom.er_Type & ERTF_MEMLIST) mark_region((u_long)cd->cd_BoardAddr, cd->cd_BoardSize, 1); } /* Unmark all used Zorro II memory */ - for (i = 0; i < boot_info.num_memory; i++) - mark_region(boot_info.memory[i].addr, boot_info.memory[i].size, 0); + for (i = 0; i < m68k_num_memory; i++) + mark_region(m68k_memory[i].addr, m68k_memory[i].size, 0); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/Makefile linux/arch/m68k/atari/Makefile --- v2.1.16/linux/arch/m68k/atari/Makefile Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/atari/Makefile Fri Dec 20 11:19:57 1996 @@ -7,8 +7,6 @@ # # Note 2! The CFLAGS definitions are now in the main makefile... -EXTRA_CFLAGS := -Wa,-m68030 - O_TARGET := atari.o O_OBJS := config.o atakeyb.o ataints.o \ stdma.o atasound.o joystick.o stram.o atafb.o ksyms.o diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/atafb.c linux/arch/m68k/atari/atafb.c --- v2.1.16/linux/arch/m68k/atari/atafb.c Fri Nov 22 18:28:14 1996 +++ linux/arch/m68k/atari/atafb.c Fri Dec 20 11:19:57 1996 @@ -210,11 +210,11 @@ just keep track of the set colors in our own array here, and use that! */ -struct { unsigned char red,green,blue,pad; } MV300_color[256]; +static struct { unsigned char red,green,blue,pad; } MV300_color[256]; #endif /* ATAFB_EXT */ -int inverse=0; +static int inverse=0; extern int fontheight_8x8; extern int fontwidth_8x8; @@ -332,7 +332,7 @@ static char *user7_names[] = {"user7", NULL}; static char *dummy_names[] = {"dummy", NULL}; -char **fb_var_names[] = { +static char **fb_var_names[] = { /* Writing the name arrays directly in this array (via "(char *[]){...}") * crashes gcc 2.5.8 (sigsegv) if the inner array * contains more than two items. I've also seen that all elements @@ -365,7 +365,7 @@ /* ,NULL */ /* this causes a sigsegv on my gcc-2.5.8 */ }; -struct fb_var_screeninfo atari_fb_predefined[] = { +static struct fb_var_screeninfo atari_fb_predefined[] = { /* * yres_virtual==0 means use hw-scrolling if possible, else yres */ @@ -467,7 +467,7 @@ 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 } }; -int num_atari_fb_predefined=arraysize(atari_fb_predefined); +static int num_atari_fb_predefined=arraysize(atari_fb_predefined); static int @@ -2348,7 +2348,7 @@ #ifdef ATAFB_TT -struct fb_hwswitch tt_switch = { +static struct fb_hwswitch tt_switch = { tt_detect, tt_encode_fix, tt_decode_var, tt_encode_var, tt_get_par, tt_set_par, tt_getcolreg, tt_setcolreg, set_screen_base, NULL, pan_display @@ -2356,7 +2356,7 @@ #endif #ifdef ATAFB_FALCON -struct fb_hwswitch falcon_switch = { +static struct fb_hwswitch falcon_switch = { falcon_detect, falcon_encode_fix, falcon_decode_var, falcon_encode_var, falcon_get_par, falcon_set_par, falcon_getcolreg, falcon_setcolreg, set_screen_base, falcon_blank, falcon_pan_display @@ -2364,7 +2364,7 @@ #endif #ifdef ATAFB_STE -struct fb_hwswitch st_switch = { +static struct fb_hwswitch st_switch = { stste_detect, stste_encode_fix, stste_decode_var, stste_encode_var, stste_get_par, stste_set_par, stste_getcolreg, stste_setcolreg, stste_set_screen_base, NULL, pan_display @@ -2372,7 +2372,7 @@ #endif #ifdef ATAFB_EXT -struct fb_hwswitch ext_switch = { +static struct fb_hwswitch ext_switch = { ext_detect, ext_encode_fix, ext_decode_var, ext_encode_var, ext_get_par, ext_set_par, ext_getcolreg, ext_setcolreg, NULL, NULL, NULL }; @@ -2463,9 +2463,15 @@ static short blue2[]= { 0x0000,0xffff}; -struct fb_cmap default_16_colors = { 0, 16, red16, green16, blue16, NULL }; -struct fb_cmap default_4_colors = { 0, 4, red4, green4, blue4, NULL }; -struct fb_cmap default_2_colors = { 0, 2, red2, green2, blue2, NULL }; +static struct fb_cmap default_16_colors = { + 0, 16, red16, green16, blue16, NULL +}; +static struct fb_cmap default_4_colors = { + 0, 4, red4, green4, blue4, NULL +}; +static struct fb_cmap default_2_colors = { + 0, 2, red2, green2, blue2, NULL +}; static struct fb_cmap * get_default_colormap(int bpp) diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/ataints.c linux/arch/m68k/atari/ataints.c --- v2.1.16/linux/arch/m68k/atari/ataints.c Fri Nov 22 18:28:14 1996 +++ linux/arch/m68k/atari/ataints.c Fri Dec 20 11:19:58 1996 @@ -40,7 +40,6 @@ #include #include -#include #include #include diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/atasound.c linux/arch/m68k/atari/atasound.c --- v2.1.16/linux/arch/m68k/atari/atasound.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/atari/atasound.c Fri Dec 20 11:19:58 1996 @@ -21,7 +21,6 @@ #include #include -#include #include #include #include diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/config.c linux/arch/m68k/atari/config.c --- v2.1.16/linux/arch/m68k/atari/config.c Fri Nov 22 18:28:14 1996 +++ linux/arch/m68k/atari/config.c Fri Dec 20 11:19:58 1996 @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -44,7 +45,10 @@ #include #include -extern void atari_sched_init(void (*)(int, void *, struct pt_regs *)); +u_long atari_mch_cookie; +struct atari_hw_present atari_hw_present; + +static void atari_sched_init(void (*)(int, void *, struct pt_regs *)); /* atari specific keyboard functions */ extern int atari_keyb_init(void); extern int atari_kbdrate (struct kbd_repeat *); @@ -57,25 +61,28 @@ extern void atari_enable_irq (unsigned int); extern void atari_disable_irq (unsigned int); extern int atari_get_irq_list (char *buf); +static void atari_get_model(char *model); +static int atari_get_hardware_list(char *buffer); /* atari specific timer functions */ -extern unsigned long atari_gettimeoffset (void); -extern void atari_mste_gettod (int *, int *, int *, int *, int *, int *); -extern void atari_gettod (int *, int *, int *, int *, int *, int *); -extern int atari_mste_hwclk (int, struct hwclk_time *); -extern int atari_hwclk (int, struct hwclk_time *); -extern int atari_mste_set_clock_mmss (unsigned long); -extern int atari_set_clock_mmss (unsigned long); +static unsigned long atari_gettimeoffset (void); +static void atari_mste_gettod (int *, int *, int *, int *, int *, int *); +static void atari_gettod (int *, int *, int *, int *, int *, int *); +static int atari_mste_hwclk (int, struct hwclk_time *); +static int atari_hwclk (int, struct hwclk_time *); +static int atari_mste_set_clock_mmss (unsigned long); +static int atari_set_clock_mmss (unsigned long); extern void atari_mksound( unsigned int count, unsigned int ticks ); -extern void atari_reset( void ); +static void atari_reset( void ); #ifdef CONFIG_BLK_DEV_FD extern int atari_floppy_init (void); extern void atari_floppy_setup(char *, int *); #endif -extern void atari_waitbut (void); +static void atari_waitbut (void); extern struct consw fb_con; extern struct fb_info *atari_fb_init(long *); -extern void atari_debug_init (void); +static void atari_debug_init (void); extern void atari_video_setup(char *, int *); +extern void atari_syms_export(void); extern void (*kd_mksound)(unsigned int, unsigned int); @@ -205,8 +212,34 @@ return( 1 ); } + + /* + * Parse an Atari-specific record in the bootinfo + */ + +int atari_parse_bootinfo(const struct bi_record *record) +{ + int unknown = 0; + const u_long *data = record->data; + + switch (record->tag) { + case BI_ATARI_MCH_COOKIE: + atari_mch_cookie = *data; + break; + default: + unknown = 1; + } + return(unknown); +} + + /* + * Setup the Atari configuration info + */ + void config_atari(void) { + memset(&atari_hw_present, 0, sizeof(atari_hw_present)); + mach_sched_init = atari_sched_init; mach_keyb_init = atari_keyb_init; mach_kbdrate = atari_kbdrate; @@ -216,6 +249,8 @@ mach_free_irq = atari_free_irq; mach_enable_irq = atari_enable_irq; mach_disable_irq = atari_disable_irq; + mach_get_model = atari_get_model; + mach_get_hardware_list = atari_get_hardware_list; mach_get_irq_list = atari_get_irq_list; mach_gettimeoffset = atari_gettimeoffset; mach_mksound = atari_mksound; @@ -230,6 +265,7 @@ mach_max_dma_address = 0xffffff; mach_debug_init = atari_debug_init; mach_video_setup = atari_video_setup; + mach_syms_export = atari_syms_export; kd_mksound = atari_mksound; /* ++bjoern: @@ -432,7 +468,7 @@ } } -void atari_sched_init(void (*timer_routine)(int, void *, struct pt_regs *)) +static void atari_sched_init(void (*timer_routine)(int, void *, struct pt_regs *)) { /* set Timer C data Register */ mfp.tim_dt_c = INT_TICKS; @@ -448,7 +484,7 @@ #define TICK_SIZE 10000 /* This is always executed with interrupts disabled. */ -unsigned long atari_gettimeoffset (void) +static unsigned long atari_gettimeoffset (void) { unsigned long ticks, offset = 0; @@ -511,8 +547,8 @@ } while(0) -void atari_mste_gettod (int *yearp, int *monp, int *dayp, - int *hourp, int *minp, int *secp) +static void atari_mste_gettod (int *yearp, int *monp, int *dayp, + int *hourp, int *minp, int *secp) { int hr24=0, hour; struct MSTE_RTC val; @@ -538,8 +574,8 @@ } -void atari_gettod (int *yearp, int *monp, int *dayp, - int *hourp, int *minp, int *secp) +static void atari_gettod (int *yearp, int *monp, int *dayp, + int *hourp, int *minp, int *secp) { unsigned char ctrl; unsigned short tos_version; @@ -591,7 +627,7 @@ #define HWCLK_POLL_INTERVAL 5 -int atari_mste_hwclk( int op, struct hwclk_time *t ) +static int atari_mste_hwclk( int op, struct hwclk_time *t ) { int hour, year; int hr24=0; @@ -650,7 +686,7 @@ return 0; } -int atari_hwclk( int op, struct hwclk_time *t ) +static int atari_hwclk( int op, struct hwclk_time *t ) { int sec=0, min=0, hour=0, day=0, mon=0, year=0, wday=0; unsigned long flags; @@ -777,7 +813,7 @@ } -int atari_mste_set_clock_mmss (unsigned long nowtime) +static int atari_mste_set_clock_mmss (unsigned long nowtime) { short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; struct MSTE_RTC val; @@ -800,7 +836,7 @@ return 0; } -int atari_set_clock_mmss (unsigned long nowtime) +static int atari_set_clock_mmss (unsigned long nowtime) { int retval = 0; short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; @@ -840,7 +876,7 @@ } -void atari_waitbut (void) +static void atari_waitbut (void) { /* sorry, no-op */ } @@ -922,7 +958,7 @@ } -void atari_debug_init( void ) +static void atari_debug_init( void ) { extern void (*debug_print_proc)(const char *); extern char m68k_debug_device[]; @@ -930,7 +966,7 @@ if (!strcmp( m68k_debug_device, "ser" )) { /* defaults to ser2 for a Falcon and ser1 otherwise */ strcpy( m68k_debug_device, - ((boot_info.bi_atari.mch_cookie >> 16) == ATARI_MCH_FALCON) ? + ((atari_mch_cookie >> 16) == ATARI_MCH_FALCON) ? "ser2" : "ser1" ); } @@ -1036,7 +1072,7 @@ /* ++andreas: no need for complicated code, just depend on prefetch */ -void atari_reset (void) +static void atari_reset (void) { long tc_val = 0; long reset_addr; @@ -1062,7 +1098,9 @@ /* 68060: clear PCR to turn off superscalar operation */ __asm__ __volatile__ ("moveq #0,%/d0\n\t" - ".long 0x4e7b0808" /* movec d0,pcr */ + ".chip 68060\n\t" + "movec %%d0,%%pcr\n\t" + ".chip 68k" : : : "d0" ); } @@ -1070,8 +1108,10 @@ ("movel %0,%/d0\n\t" "andl #0xff000000,%/d0\n\t" "orw #0xe020,%/d0\n\t" /* map 16 MB, enable, cacheable */ - ".long 0x4e7b0004\n\t" /* movec d0,itt0 */ - ".long 0x4e7b0006\n\t" /* movec d0,dtt0 */ + ".chip 68040\n\t" + "movec %%d0,%%itt0\n\t" + "movec %%d0,%%dtt0\n\t" + ".chip 68k\n\t" "jmp %0@\n\t" : /* no outputs */ : "a" (jmp_addr040) @@ -1080,9 +1120,11 @@ __asm__ __volatile__ ("moveq #0,%/d0\n\t" "nop\n\t" - ".word 0xf4d8\n\t" /* cinva i/d */ - ".word 0xf518\n\t" /* pflusha */ - ".long 0x4e7b0003\n\t" /* movec d0,tc */ + ".chip 68040\n\t" + "cinva %%bc\n\t" + "pflusha\n\t" + "movec %%d0,%%tc\n\t" + ".chip 68k\n\t" "jmp %0@" : /* no outputs */ : "a" (reset_addr) @@ -1097,10 +1139,10 @@ } -void atari_get_model(char *model) +static void atari_get_model(char *model) { strcpy(model, "Atari "); - switch (boot_info.bi_atari.mch_cookie >> 16) { + switch (atari_mch_cookie >> 16) { case ATARI_MCH_ST: if (ATARIHW_PRESENT(MSTE_CLK)) strcat (model, "Mega ST"); @@ -1108,7 +1150,7 @@ strcat (model, "ST"); break; case ATARI_MCH_STE: - if ((boot_info.bi_atari.mch_cookie & 0xffff) == 0x10) + if ((atari_mch_cookie & 0xffff) == 0x10) strcat (model, "Mega STE"); else strcat (model, "STE"); @@ -1125,21 +1167,20 @@ break; default: sprintf (model + strlen (model), "(unknown mach cookie 0x%lx)", - boot_info.bi_atari.mch_cookie); + atari_mch_cookie); break; } } -int atari_get_hardware_list(char *buffer) +static int atari_get_hardware_list(char *buffer) { int len = 0, i; - for (i = 0; i < boot_info.num_memory; i++) + for (i = 0; i < m68k_num_memory; i++) len += sprintf (buffer+len, "\t%3ld MB at 0x%08lx (%s)\n", - boot_info.memory[i].size >> 20, - boot_info.memory[i].addr, - (boot_info.memory[i].addr & 0xff000000 ? + m68k_memory[i].size >> 20, m68k_memory[i].addr, + (m68k_memory[i].addr & 0xff000000 ? "alternate RAM" : "ST-RAM")); #define ATARIHW_ANNOUNCE(name,str) \ diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/ksyms.c linux/arch/m68k/atari/ksyms.c --- v2.1.16/linux/arch/m68k/atari/ksyms.c Fri Nov 22 18:28:14 1996 +++ linux/arch/m68k/atari/ksyms.c Fri Dec 20 11:19:58 1996 @@ -9,9 +9,11 @@ extern void atari_microwire_cmd( int cmd ); -static struct symbol_table mach_atari_symbol_table = { +static struct symbol_table atari_symbol_table = { #include + X(atari_mch_cookie), + X(atari_hw_present), X(is_medusa), X(atari_register_vme_int), X(atari_unregister_vme_int), @@ -23,6 +25,7 @@ X(atari_mouse_buttons), X(atari_mouse_interrupt_hook), X(atari_MIDI_interrupt_hook), + X(atari_mch_cookie), X(ikbd_write), X(ikbd_mouse_y0_top), X(ikbd_mouse_thresh), @@ -34,7 +37,7 @@ #include }; -void mach_atari_syms_export(void) +void atari_syms_export(void) { - register_symtab(&mach_atari_symbol_table); + register_symtab(&atari_symbol_table); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/stdma.c linux/arch/m68k/atari/stdma.c --- v2.1.16/linux/arch/m68k/atari/stdma.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/atari/stdma.c Fri Dec 20 11:19:58 1996 @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff -u --recursive --new-file v2.1.16/linux/arch/m68k/atari/stram.c linux/arch/m68k/atari/stram.c --- v2.1.16/linux/arch/m68k/atari/stram.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/atari/stram.c Fri Dec 20 11:19:58 1996 @@ -26,8 +26,8 @@ atari_stram_init (void) { struct stram_desc *dp; - stramaddr = boot_info.bi_atari.stram_start; - stramsize = boot_info.bi_atari.stram_size; + stramaddr = atari_stram_start; + stramsize = atari_stram_size; /* initialize start boundary */ dp = DP (stramaddr); @@ -194,11 +194,11 @@ { int i; - for( i = 0; i < boot_info.num_memory; ++i ) { - if (boot_info.memory[i].addr == 0) { + for( i = 0; i < m68k_num_memory; ++i ) { + if (m68k_memory[i].addr == 0) { rsvd_stram_beg = PTOV( 0x800 ); /* skip super-only first 2 KB! */ rsvd_stram_end = rsvd_stram_beg; - stram_end = rsvd_stram_beg - 0x800 + boot_info.memory[i].size; + stram_end = rsvd_stram_beg - 0x800 + m68k_memory[i].size; return; } } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/amiga/bootstrap.c linux/arch/m68k/boot/amiga/bootstrap.c --- v2.1.16/linux/arch/m68k/boot/amiga/bootstrap.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/boot/amiga/bootstrap.c Fri Dec 20 11:19:58 1996 @@ -21,6 +21,8 @@ ** Modified 9-Sep-96 by Geert Uytterhoeven ** - Rewritten option parsing ** - New parameter passing to linuxboot() (linuxboot_args) +** Modified 6-Oct-96 by Geert Uytterhoeven +** - Updated for the new boot information structure ** ** This file is subject to the terms and conditions of the GNU General Public ** License. See the file COPYING in the main directory of this archive @@ -40,7 +42,7 @@ /* required Linux/m68k include files */ #include #include -#include +#include #include /* Amiga bootstrap include files */ @@ -78,7 +80,7 @@ static void Close(int fd); static int FileSize(const char *path); static void Sleep(u_long micros); -static int ModifyBootinfo(struct bootinfo *bi); +static int ModifyBootinfo(struct amiga_bootinfo *bi); static void Usage(void) @@ -91,6 +93,7 @@ " -k, --kernel file Use kernel image `file' (default is `vmlinux')\n" " -r, --ramdisk file Use ramdisk image `file'\n" " -d, --debug Enable debug mode\n" + " -b, --baud speed Set the serial port speed (default is 9600)\n" " -m, --memfile file Use memory file `file'\n" " -v, --keep-video Don't reset the video mode\n" " -t, --model id Set the Amiga model to `id'\n\n", @@ -103,6 +106,7 @@ { int i; int debugflag = 0, keep_video = 0; + u_int baud = 0; const char *kernel_name = NULL; const char *ramdisk_name = NULL; char commandline[CL_SIZE] = ""; @@ -126,6 +130,12 @@ Usage(); else if (!strcmp(argv[0], "-d") || !strcmp(argv[0], "--debug")) debugflag = 1; + else if (!strcmp(argv[0], "-b") || !strcmp(argv[0], "--baud")) + if (--argc && !baud) { + baud = atoi(argv[1]); + argv++; + } else + Usage(); else if (!strcmp(argv[0], "-m") || !strcmp(argv[0], "--memfile")) if (--argc && !memfile_name) { memfile_name = argv[1]; @@ -183,6 +193,7 @@ args.debugflag = debugflag; args.keep_video = keep_video; args.reset_boards = 1; + args.baud = baud; args.puts = Puts; args.getchar = GetChar; args.putchar = PutChar; @@ -290,7 +301,7 @@ } -static int ModifyBootinfo(struct bootinfo *bi) +static int ModifyBootinfo(struct amiga_bootinfo *bi) { /* * if we have a memory file, read the memory information from it @@ -305,7 +316,7 @@ return(FALSE); } - if (fscanf(fp, "%lu", &bi->bi_amiga.chip_size) != 1) { + if (fscanf(fp, "%lu", &bi->chip_size) != 1) { fprintf(stderr, "memory file does not contain chip memory size\n"); fclose(fp); return(FALSE); @@ -327,7 +338,7 @@ * change the Amiga model, if necessary */ if (model != AMI_UNKNOWN) - bi->bi_amiga.model = model; + bi->model = model; return(TRUE); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/amiga/bootstrap.h linux/arch/m68k/boot/amiga/bootstrap.h --- v2.1.16/linux/arch/m68k/boot/amiga/bootstrap.h Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/boot/amiga/bootstrap.h Fri Dec 20 11:19:58 1996 @@ -20,8 +20,6 @@ ** */ -#include - struct MsgPort { u_char fill1[15]; diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/amiga/linuxboot.c linux/arch/m68k/boot/amiga/linuxboot.c --- v2.1.16/linux/arch/m68k/boot/amiga/linuxboot.c Wed Sep 25 10:47:38 1996 +++ linux/arch/m68k/boot/amiga/linuxboot.c Fri Dec 20 11:19:58 1996 @@ -28,6 +28,8 @@ #endif /* __GNUC__ */ +#define BOOTINFO_COMPAT_1_0 /* bootinfo interface version 1.0 compatible */ + #include #include #include @@ -36,8 +38,7 @@ #include #include #include -#include -#include +#include #include #include @@ -48,22 +49,37 @@ #define custom ((*(volatile struct CUSTOM *)(CUSTOM_PHYSADDR))) /* temporary stack size */ -#define TEMP_STACKSIZE (256) +#define TEMP_STACKSIZE (256) + +#define DEFAULT_BAUD (9600) extern char copyall, copyallend; static struct exec kexec; static Elf32_Ehdr kexec_elf; -static struct bootinfo bi; - static const struct linuxboot_args *linuxboot_args; +/* Bootinfo */ +static struct amiga_bootinfo bi; + +#ifdef BOOTINFO_COMPAT_1_0 +static struct compat_bootinfo compat_bootinfo; +#endif /* BOOTINFO_COMPAT_1_0 */ + +#define MAX_BI_SIZE (4096) +static u_long bi_size; +static union { + struct bi_record record; + u_char fake[MAX_BI_SIZE]; +} bi_union; + #define kernelname linuxboot_args->kernelname #define ramdiskname linuxboot_args->ramdiskname #define commandline linuxboot_args->commandline #define debugflag linuxboot_args->debugflag #define keep_video linuxboot_args->keep_video #define reset_boards linuxboot_args->reset_boards +#define baud linuxboot_args->baud #define Puts linuxboot_args->puts #define GetChar linuxboot_args->getchar @@ -83,15 +99,22 @@ */ static u_long get_chipset(void); -static u_long get_cpu(void); +static void get_processor(u_long *cpu, u_long *fpu, u_long *mmu); static u_long get_model(u_long chipset); static int probe_resident(const char *name); static int probe_resource(const char *name); +static int create_bootinfo(void); +#ifdef BOOTINFO_COMPAT_1_0 +static int create_compat_bootinfo(void); +#endif /* BOOTINFO_COMPAT_1_0 */ +static int add_bi_record(u_short tag, u_short size, const void *data); +static int add_bi_string(u_short tag, const u_char *s); static int check_bootinfo_version(const char *memptr); static void start_kernel(void (*startfunc)(), char *stackp, char *memptr, u_long start_mem, u_long mem_size, u_long rd_size, u_long kernel_size) __attribute__ ((noreturn)); asmlinkage u_long maprommed(void); +asmlinkage u_long check346(void); /* @@ -126,7 +149,7 @@ }; #define NUM_BOARDRESET sizeof(boardresetdb)/sizeof(*boardresetdb) -static void (*boardresetfuncs[NUM_AUTO])(const struct ConfigDev *cd); +static void (*boardresetfuncs[ZORRO_NUM_AUTO])(const struct ConfigDev *cd); const char *amiga_models[] = { @@ -159,11 +182,13 @@ u_long *stack = NULL; u_long fast_total, model_mask, startcodesize, start_mem, mem_size, rd_size; u_long kernel_size; + u_int realbaud; u_long memreq = 0, text_offset = 0; Elf32_Phdr *kernel_phdrs = NULL; void (*startfunc)(void); u_short manuf; u_char prod; + void *bi_ptr; linuxboot_args = args; @@ -171,30 +196,31 @@ Puts("\nLinux/m68k Amiga Bootstrap version " AMIBOOT_VERSION "\n"); Puts("Copyright 1993,1994 by Hamish Macdonald and Greg Harp\n\n"); + memset(&bi, 0, sizeof(bi)); + /* machine is Amiga */ bi.machtype = MACH_AMIGA; /* determine chipset */ - bi.bi_amiga.chipset = get_chipset(); + bi.chipset = get_chipset(); - /* determine CPU type */ - bi.cputype = get_cpu(); + /* determine CPU, FPU and MMU type */ + get_processor(&bi.cputype, &bi.fputype, &bi.mmutype); /* determine Amiga model */ - bi.bi_amiga.model = get_model(bi.bi_amiga.chipset); - model_mask = (bi.bi_amiga.model != AMI_UNKNOWN) ? 1<cd_BoardAddr); @@ -257,13 +283,17 @@ (u_long)mh.mh_Lower); } else if (mh.mh_Attributes & MEMF_CHIP) /* if CHIP memory, record the size */ - bi.bi_amiga.chip_size = (u_long)mh.mh_Upper; + bi.chip_size = (u_long)mh.mh_Upper; } /* get info from ExecBase */ - bi.bi_amiga.vblank = SysBase->VBlankFrequency; - bi.bi_amiga.psfreq = SysBase->PowerSupplyFrequency; - bi.bi_amiga.eclock = SysBase->ex_EClockFrequency; + bi.vblank = SysBase->VBlankFrequency; + bi.psfreq = SysBase->PowerSupplyFrequency; + bi.eclock = SysBase->ex_EClockFrequency; + + /* serial port */ + realbaud = baud ? baud : DEFAULT_BAUD; + bi.serper = (5*bi.eclock+realbaud/2)/realbaud-1; /* copy command line options into the kernel command line */ strncpy(bi.command_line, commandline, CL_SIZE); @@ -274,17 +304,15 @@ if (ModifyBootinfo && !ModifyBootinfo(&bi)) goto Fail; - /* display Amiga model */ - if (bi.bi_amiga.model >= first_amiga_model && - bi.bi_amiga.model <= last_amiga_model) - Printf("%s ", amiga_models[bi.bi_amiga.model-first_amiga_model]); + if (bi.model >= first_amiga_model && bi.model <= last_amiga_model) + Printf("%s ", amiga_models[bi.model-first_amiga_model]); else Puts("Amiga "); /* display the CPU type */ Puts("CPU: "); - switch (bi.cputype & CPU_MASK) { + switch (bi.cputype) { case CPU_68020: Puts("68020 (Do you have an MMU?)"); break; @@ -302,7 +330,7 @@ Printf("SysBase->AttnFlags = 0x%08lx\n", SysBase->AttnFlags); goto Fail; } - switch (bi.cputype & ~CPU_MASK) { + switch (bi.fputype) { case FPU_68881: Puts(" with 68881 FPU"); break; @@ -319,7 +347,7 @@ } /* display the chipset */ - switch(bi.bi_amiga.chipset) { + switch(bi.chipset) { case CS_STONEAGE: Puts(", old or unknown chipset"); break; @@ -340,21 +368,21 @@ Printf("Command line is '%s'\n", bi.command_line); /* display the clock statistics */ - Printf("Vertical Blank Frequency: %ldHz\n", bi.bi_amiga.vblank); - Printf("Power Supply Frequency: %ldHz\n", bi.bi_amiga.psfreq); - Printf("EClock Frequency: %ldHz\n\n", bi.bi_amiga.eclock); + Printf("Vertical Blank Frequency: %ldHz\n", bi.vblank); + Printf("Power Supply Frequency: %ldHz\n", bi.psfreq); + Printf("EClock Frequency: %ldHz\n\n", bi.eclock); /* display autoconfig devices */ - if (bi.bi_amiga.num_autocon) { - Printf("Found %ld AutoConfig Device%s\n", bi.bi_amiga.num_autocon, - bi.bi_amiga.num_autocon > 1 ? "s" : ""); - for (i = 0; i < bi.bi_amiga.num_autocon; i++) { + if (bi.num_autocon) { + Printf("Found %ld AutoConfig Device%s\n", bi.num_autocon, + bi.num_autocon > 1 ? "s" : ""); + for (i = 0; i < bi.num_autocon; i++) { Printf("Device %ld: addr = 0x%08lx", i, - (u_long)bi.bi_amiga.autocon[i].cd_BoardAddr); + (u_long)bi.autocon[i].cd_BoardAddr); boardresetfuncs[i] = NULL; if (reset_boards) { - manuf = bi.bi_amiga.autocon[i].cd_Rom.er_Manufacturer; - prod = bi.bi_amiga.autocon[i].cd_Rom.er_Product; + manuf = bi.autocon[i].cd_Rom.er_Manufacturer; + prod = bi.autocon[i].cd_Rom.er_Product; for (j = 0; j < NUM_BOARDRESET; j++) if ((manuf == boardresetdb[j].manuf) && (prod == boardresetdb[j].prod)) { @@ -383,7 +411,7 @@ } /* display chip memory size */ - Printf("%ldK of CHIP memory\n", bi.bi_amiga.chip_size>>10); + Printf("%ldK of CHIP memory\n", bi.chip_size>>10); start_mem = bi.memory[0].addr; mem_size = bi.memory[0].size; @@ -392,7 +420,7 @@ Printf("\nThe kernel will be located at 0x%08lx\n", start_mem); /* verify that there is enough Chip RAM */ - if (bi.bi_amiga.chip_size < 512*1024) { + if (bi.chip_size < 512*1024) { Puts("Not enough Chip RAM in this system. Aborting...\n"); goto Fail; } @@ -414,11 +442,15 @@ goto Fail; } /* record ramdisk size */ - bi.ramdisk_size = (size+1023)>>10; + bi.ramdisk.size = size; } else - bi.ramdisk_size = 0; - rd_size = bi.ramdisk_size<<10; - bi.ramdisk_addr = start_mem+mem_size-rd_size; + bi.ramdisk.size = 0; + rd_size = bi.ramdisk.size; + bi.ramdisk.addr = (u_long)start_mem+mem_size-rd_size; + + /* create the bootinfo structure */ + if (!create_bootinfo()) + goto Fail; /* open kernel executable and read exec header */ if ((kfd = Open(kernelname)) == -1) { @@ -511,7 +543,11 @@ kernel_size = max_addr-min_addr; } else kernel_size = kexec.a_text+kexec.a_data+kexec.a_bss; - memreq = kernel_size+sizeof(struct bootinfo)+rd_size; + memreq = kernel_size+bi_size+rd_size; +#ifdef BOOTINFO_COMPAT_1_0 + if (sizeof(compat_bootinfo) > bi_size) + memreq = kernel_size+sizeof(compat_bootinfo)+rd_size; +#endif /* BOOTINFO_COMPAT_1_0 */ if (!(memptr = (char *)AllocMem(memreq, MEMF_FAST | MEMF_PUBLIC | MEMF_CLEAR))) { Puts("Unable to allocate memory\n"); @@ -533,16 +569,16 @@ } else { if (Seek(kfd, text_offset) == -1) { - Printf("Failed to seek to text\n"); + Puts("Failed to seek to text\n"); goto Fail; } if (Read(kfd, memptr, kexec.a_text) != kexec.a_text) { - Printf("Failed to read text\n"); + Puts("Failed to read text\n"); goto Fail; } /* data follows immediately after text */ if (Read(kfd, memptr+kexec.a_text, kexec.a_data) != kexec.a_data) { - Printf("Failed to read data\n"); + Puts("Failed to read data\n"); goto Fail; } } @@ -550,19 +586,34 @@ kfd = -1; /* Check kernel's bootinfo version */ - if (!check_bootinfo_version(memptr)) - goto Fail; + switch (check_bootinfo_version(memptr)) { + case BI_VERSION_MAJOR(AMIGA_BOOTI_VERSION): + bi_ptr = &bi_union.record; + break; + +#ifdef BOOTINFO_COMPAT_1_0 + case BI_VERSION_MAJOR(COMPAT_AMIGA_BOOTI_VERSION): + if (!create_compat_bootinfo()) + goto Fail; + bi_ptr = &compat_bootinfo; + bi_size = sizeof(compat_bootinfo); + break; +#endif /* BOOTINFO_COMPAT_1_0 */ + + default: + goto Fail; + } /* copy the bootinfo to the end of the kernel image */ - memcpy((void *)(memptr+kernel_size), &bi, sizeof(struct bootinfo)); + memcpy((void *)(memptr+kernel_size), bi_ptr, bi_size); if (ramdiskname) { if ((rfd = Open(ramdiskname)) == -1) { Printf("Unable to open ramdisk file `%s'\n", ramdiskname); goto Fail; } - if (Read(rfd, memptr+kernel_size+sizeof(bi), rd_size) != rd_size) { - Printf("Failed to read ramdisk file\n"); + if (Read(rfd, memptr+kernel_size+bi_size, rd_size) != rd_size) { + Puts("Failed to read ramdisk file\n"); goto Fail; } Close(rfd); @@ -587,9 +638,9 @@ memcpy(startfunc, ©all, startcodesize); if (debugflag) { - if (bi.ramdisk_size) + if (bi.ramdisk.size) Printf("RAM disk at 0x%08lx, size is %ldK\n", - (u_long)memptr+kernel_size, bi.ramdisk_size); + (u_long)memptr+kernel_size, bi.ramdisk.size>>10); if (elf_kernel) { PutChar('\n'); @@ -611,9 +662,10 @@ kexec.a_entry); Printf("ramdisk dest top is 0x%08lx\n", start_mem+mem_size); - Printf("ramdisk lower limit is 0x%08lx\n", (u_long)memptr+kernel_size); + Printf("ramdisk lower limit is 0x%08lx\n", + (u_long)(memptr+kernel_size)); Printf("ramdisk src top is 0x%08lx\n", - (u_long)memptr+kernel_size+rd_size); + (u_long)(memptr+kernel_size)+rd_size); Puts("\nType a key to continue the Linux/m68k boot..."); GetChar(); @@ -631,9 +683,9 @@ /* reset nasty Zorro boards */ if (reset_boards) - for (i = 0; i < bi.bi_amiga.num_autocon; i++) + for (i = 0; i < bi.num_autocon; i++) if (boardresetfuncs[i]) - boardresetfuncs[i](&bi.bi_amiga.autocon[i]); + boardresetfuncs[i](&bi.autocon[i]); /* Turn off all DMA */ custom.dmacon = DMAF_ALL | DMAF_MASTER; @@ -696,32 +748,49 @@ * Determine the CPU Type */ -static u_long get_cpu(void) -{ - u_long cpu = 0; +/* Dectection of 68030 and up is unreliable, so we check ourself */ +/* Keep consistent with asm/setup.h! */ +/* 24.11.1996 Joerg Dorchain */ +asm( ".text\n" +ALIGN_STR "\n" +SYMBOL_NAME_STR(check346) ": + orw #0x700,%sr | disable ints + movec %vbr,%a0 | get vbr + movel %a0@(11*4),%a1 | save old trap vector (Line F) + movel #L1,%a0@(11*4) | set L1 as new vector + movel %sp,%d1 | save stack pointer + moveq #2,%d0 | value with exception (030) + .long 0xf6208000 | move16 %a0@+,%a0@+, the 030 test instruction + nop | clear instruction pipeline + movel %d1,%sp | restore stack pointer + movec %vbr,%a0 | get vbr again + moveq #4,%d0 | value with exception (040) + .word 0xf5c8 | plpar %a0@, the 040 test instruction + nop | clear instruction pipeline + moveq #8,%d0 | value if we come here +L1: movel %d1,%sp | restore stack pointer + movel %a1,%a0@(11*4) | restore vector + rte" +); - if (SysBase->AttnFlags & AFF_68060) { - cpu = CPU_68060; - if (SysBase->AttnFlags & AFF_FPU40) - cpu |= FPU_68060; - } else if (SysBase->AttnFlags & AFF_68040) { - cpu = CPU_68040; +static void get_processor(u_long *cpu, u_long *fpu, u_long *mmu) +{ + if (SysBase->AttnFlags & (AFF_68030|AFF_68040|AFF_68060)) + *cpu = Supervisor(check346); + else if (SysBase->AttnFlags & AFF_68020) + *cpu = CPU_68020; + if (*cpu == CPU_68040 || *cpu == CPU_68060) { if (SysBase->AttnFlags & AFF_FPU40) - cpu |= FPU_68040; + *fpu = *cpu; } else { - if (SysBase->AttnFlags & AFF_68030) - cpu = CPU_68030; - else if (SysBase->AttnFlags & AFF_68020) - cpu = CPU_68020; if (SysBase->AttnFlags & AFF_68882) - cpu |= FPU_68882; + *fpu = FPU_68882; else if (SysBase->AttnFlags & AFF_68881) - cpu |= FPU_68881; + *cpu = FPU_68881; } - return(cpu); + *mmu = *cpu; } - /* * Determine the Amiga Model */ @@ -810,7 +879,7 @@ if (res) Printf("0x%08lx\n", res); else - Printf("not present\n"); + Puts("not present\n"); return(res ? TRUE : FALSE); } @@ -830,12 +899,179 @@ if (res) Printf("0x%08lx\n", res); else - Printf("not present\n"); + Puts("not present\n"); return(res ? TRUE : FALSE); } /* + * Create the Bootinfo structure + */ + +static int create_bootinfo(void) +{ + int i; + struct bi_record *record; + + /* Initialization */ + bi_size = 0; + + /* Generic tags */ + if (!add_bi_record(BI_MACHTYPE, sizeof(bi.machtype), &bi.machtype)) + return(0); + if (!add_bi_record(BI_CPUTYPE, sizeof(bi.cputype), &bi.cputype)) + return(0); + if (!add_bi_record(BI_FPUTYPE, sizeof(bi.fputype), &bi.fputype)) + return(0); + if (!add_bi_record(BI_MMUTYPE, sizeof(bi.mmutype), &bi.mmutype)) + return(0); + for (i = 0; i < bi.num_memory; i++) + if (!add_bi_record(BI_MEMCHUNK, sizeof(bi.memory[i]), &bi.memory[i])) + return(0); + if (bi.ramdisk.size) + if (!add_bi_record(BI_RAMDISK, sizeof(bi.ramdisk), &bi.ramdisk)) + return(0); + if (!add_bi_string(BI_COMMAND_LINE, bi.command_line)) + return(0); + + /* Amiga tags */ + if (!add_bi_record(BI_AMIGA_MODEL, sizeof(bi.model), &bi.model)) + return(0); + for (i = 0; i < bi.num_autocon; i++) + if (!add_bi_record(BI_AMIGA_AUTOCON, sizeof(bi.autocon[i]), + &bi.autocon[i])) + return(0); + if (!add_bi_record(BI_AMIGA_CHIP_SIZE, sizeof(bi.chip_size), &bi.chip_size)) + return(0); + if (!add_bi_record(BI_AMIGA_VBLANK, sizeof(bi.vblank), &bi.vblank)) + return(0); + if (!add_bi_record(BI_AMIGA_PSFREQ, sizeof(bi.psfreq), &bi.psfreq)) + return(0); + if (!add_bi_record(BI_AMIGA_ECLOCK, sizeof(bi.eclock), &bi.eclock)) + return(0); + if (!add_bi_record(BI_AMIGA_CHIPSET, sizeof(bi.chipset), &bi.chipset)) + return(0); + if (!add_bi_record(BI_AMIGA_SERPER, sizeof(bi.serper), &bi.serper)) + return(0); + + /* Trailer */ + record = (struct bi_record *)((u_long)&bi_union.record+bi_size); + record->tag = BI_LAST; + bi_size += sizeof(bi_union.record.tag); + + return(1); +} + + + /* + * Add a Record to the Bootinfo Structure + */ + +static int add_bi_record(u_short tag, u_short size, const void *data) +{ + struct bi_record *record; + u_int size2; + + size2 = (sizeof(struct bi_record)+size+3)&-4; + if (bi_size+size2+sizeof(bi_union.record.tag) > MAX_BI_SIZE) { + Puts("Can't add bootinfo record. Ask a wizard to enlarge me.\n"); + return(0); + } + record = (struct bi_record *)((u_long)&bi_union.record+bi_size); + record->tag = tag; + record->size = size2; + memcpy(record->data, data, size); + bi_size += size2; + return(1); +} + + + /* + * Add a String Record to the Bootinfo Structure + */ + +static int add_bi_string(u_short tag, const u_char *s) +{ + return(add_bi_record(tag, strlen(s)+1, (void *)s)); +} + + +#ifdef BOOTINFO_COMPAT_1_0 + + /* + * Create the Bootinfo structure for backwards compatibility mode + */ + +static int create_compat_bootinfo(void) +{ + u_int i; + + compat_bootinfo.machtype = bi.machtype; + if (bi.cputype & CPU_68020) + compat_bootinfo.cputype = COMPAT_CPU_68020; + else if (bi.cputype & CPU_68030) + compat_bootinfo.cputype = COMPAT_CPU_68030; + else if (bi.cputype & CPU_68040) + compat_bootinfo.cputype = COMPAT_CPU_68040; + else if (bi.cputype & CPU_68060) + compat_bootinfo.cputype = COMPAT_CPU_68060; + else { + Printf("CPU type 0x%08lx not supported by kernel\n", bi.cputype); + return(0); + } + if (bi.fputype & FPU_68881) + compat_bootinfo.cputype |= COMPAT_FPU_68881; + else if (bi.fputype & FPU_68882) + compat_bootinfo.cputype |= COMPAT_FPU_68882; + else if (bi.fputype & FPU_68040) + compat_bootinfo.cputype |= COMPAT_FPU_68040; + else if (bi.fputype & FPU_68060) + compat_bootinfo.cputype |= COMPAT_FPU_68060; + else { + Printf("FPU type 0x%08lx not supported by kernel\n", bi.fputype); + return(0); + } + compat_bootinfo.num_memory = bi.num_memory; + if (compat_bootinfo.num_memory > COMPAT_NUM_MEMINFO) { + Printf("Warning: using only %ld blocks of memory\n", + COMPAT_NUM_MEMINFO); + compat_bootinfo.num_memory = COMPAT_NUM_MEMINFO; + } + for (i = 0; i < compat_bootinfo.num_memory; i++) { + compat_bootinfo.memory[i].addr = bi.memory[i].addr; + compat_bootinfo.memory[i].size = bi.memory[i].size; + } + if (bi.ramdisk.size) { + compat_bootinfo.ramdisk_size = (bi.ramdisk.size+1023)/1024; + compat_bootinfo.ramdisk_addr = bi.ramdisk.addr; + } else { + compat_bootinfo.ramdisk_size = 0; + compat_bootinfo.ramdisk_addr = 0; + } + strncpy(compat_bootinfo.command_line, bi.command_line, COMPAT_CL_SIZE); + compat_bootinfo.command_line[COMPAT_CL_SIZE-1] = '\0'; + + compat_bootinfo.bi_amiga.model = bi.model; + compat_bootinfo.bi_amiga.num_autocon = bi.num_autocon; + if (compat_bootinfo.bi_amiga.num_autocon > COMPAT_NUM_AUTO) { + Printf("Warning: using only %ld AutoConfig devices\n", + COMPAT_NUM_AUTO); + compat_bootinfo.bi_amiga.num_autocon = COMPAT_NUM_AUTO; + } + for (i = 0; i < compat_bootinfo.bi_amiga.num_autocon; i++) + compat_bootinfo.bi_amiga.autocon[i] = bi.autocon[i]; + compat_bootinfo.bi_amiga.chip_size = bi.chip_size; + compat_bootinfo.bi_amiga.vblank = bi.vblank; + compat_bootinfo.bi_amiga.psfreq = bi.psfreq; + compat_bootinfo.bi_amiga.eclock = bi.eclock; + compat_bootinfo.bi_amiga.chipset = bi.chipset; + compat_bootinfo.bi_amiga.hw_present = 0; + return(1); +} +#endif /* BOOTINFO_COMPAT_1_0 */ + + + /* * Compare the Bootstrap and Kernel Versions */ @@ -852,7 +1088,7 @@ break; } if (!version) - Printf("Kernel has no bootinfo version info, assuming 0.0\n"); + Puts("Kernel has no bootinfo version info, assuming 0.0\n"); kernel_major = BI_VERSION_MAJOR(version); kernel_minor = BI_VERSION_MINOR(version); @@ -863,16 +1099,27 @@ Printf("Kernel's bootinfo version : %ld.%ld\n", kernel_major, kernel_minor); - if (kernel_major != boots_major) { - Printf("\nThis bootstrap is too %s for this kernel!\n", - boots_major < kernel_major ? "old" : "new"); - return(0); - } - if (kernel_minor > boots_minor) { - Printf("Warning: Bootinfo version of bootstrap and kernel differ!\n" ); - Printf(" Certain features may not work.\n"); + switch (kernel_major) { + case BI_VERSION_MAJOR(AMIGA_BOOTI_VERSION): + if (kernel_minor > boots_minor) { + Puts("Warning: Bootinfo version of bootstrap and kernel " + "differ!\n"); + Puts(" Certain features may not work.\n"); + } + break; + +#ifdef BOOTINFO_COMPAT_1_0 + case BI_VERSION_MAJOR(COMPAT_AMIGA_BOOTI_VERSION): + Puts("(using backwards compatibility mode)\n"); + break; +#endif /* BOOTINFO_COMPAT_1_0 */ + + default: + Printf("\nThis bootstrap is too %s for this kernel!\n", + boots_major < kernel_major ? "old" : "new"); + return(0); } - return(1); + return(kernel_major); } @@ -891,7 +1138,7 @@ register u_long d0 __asm("d0") = mem_size; register u_long d1 __asm("d1") = rd_size; register u_long d2 __asm("d2") = kernel_size; - register u_long d3 __asm("d3") = sizeof(struct bootinfo); + register u_long d3 __asm("d3") = bi_size; __asm __volatile ("movel a2,sp;" "jmp a0@" @@ -915,7 +1162,7 @@ * d0 = mem_size * d1 = rd_size * d2 = kernel_size - * d3 = sizeof(struct bootinfo) + * d3 = bi_size */ asm(".text\n" @@ -931,10 +1178,10 @@ moveb a0@+,a1@+ | *dest++ = *src++; jra 1b 2: - | /* copy early bootinfo to end of bss */ + | /* copy bootinfo to end of bss */ movel a3,a0 | src = (u_long *)(memptr+kernel_size); addl d2,a0 | dest = end of bss (already in a1) - movel d3,d7 | count = sizeof(struct bootinfo) + movel d3,d7 | count = bi_size subql #1,d7 1: moveb a0@+,a1@+ | while (--count > -1) dbra d7,1b | *dest++ = *src++ @@ -944,7 +1191,7 @@ movel a4,a1 | dest = (u_long *)(start_mem+mem_size); addl d0,a1 movel a3,a2 | limit = (u_long *)(memptr+kernel_size + - addl d2,a2 | sizeof(struct bootinfo)); + addl d2,a2 | bi_size); addl d3,a2 movel a2,a0 | src = (u_long *)((u_long)limit+rd_size); addl d1,a0 diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/amiga/linuxboot.h linux/arch/m68k/boot/amiga/linuxboot.h --- v2.1.16/linux/arch/m68k/boot/amiga/linuxboot.h Wed Sep 25 10:47:39 1996 +++ linux/arch/m68k/boot/amiga/linuxboot.h Fri Dec 20 11:19:58 1996 @@ -31,7 +31,35 @@ * Amiboot Version */ -#define AMIBOOT_VERSION "4.0" +#define AMIBOOT_VERSION "5.1" + + + /* + * Amiga Bootinfo Definitions + * + * All limits herein are `soft' limits, i.e. they don't put constraints + * on the actual parameters in the kernel. + */ + +struct amiga_bootinfo { + u_long machtype; /* machine type */ + u_long cputype; /* system CPU */ + u_long fputype; /* system FPU */ + u_long mmutype; /* system MMU */ + int num_memory; /* # of memory blocks found */ + struct mem_info memory[NUM_MEMINFO];/* memory description */ + struct mem_info ramdisk; /* ramdisk description */ + char command_line[CL_SIZE]; /* kernel command line parameters */ + u_long model; /* Amiga Model */ + int num_autocon; /* # of autoconfig devices found */ + struct ConfigDev autocon[ZORRO_NUM_AUTO]; /* autoconfig devices */ + u_long chip_size; /* size of chip memory (bytes) */ + u_char vblank; /* VBLANK frequency */ + u_char psfreq; /* power supply frequency */ + u_long eclock; /* EClock frequency */ + u_long chipset; /* native chipset present */ + u_short serper; /* serial port period */ +}; /* @@ -45,6 +73,7 @@ int debugflag; int keep_video; int reset_boards; + u_int baud; void (*puts)(const char *str); long (*getchar)(void); void (*putchar)(char c); @@ -55,7 +84,7 @@ void (*close)(int fd); int (*filesize)(const char *path); void (*sleep)(u_long micros); - int (*modify_bootinfo)(struct bootinfo *bi); + int (*modify_bootinfo)(struct amiga_bootinfo *bi); }; diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/atari/bootstrap.c linux/arch/m68k/boot/atari/bootstrap.c --- v2.1.16/linux/arch/m68k/boot/atari/bootstrap.c Wed Sep 25 10:47:39 1996 +++ linux/arch/m68k/boot/atari/bootstrap.c Fri Dec 20 11:19:58 1996 @@ -8,7 +8,11 @@ ** for more details. ** ** History: -** 10 Dec 1995 BOOTP/TFTP support (Roman) +** 27 Nov 1996 Compatibility with bootinfo interface version 1.0 (Geert) +** 12 Nov 1996 Fixed and tested previous change (Andreas) +** 18 Aug 1996 Updated for the new boot information structure (untested!) +** (Geert) +** 10 Dec 1995 BOOTP/TFTP support (Roman) ** 03 Oct 1995 Allow kernel to be loaded to TT ram again (Andreas) ** 11 Jul 1995 Add support for ELF format kernel (Andreas) ** 16 Jun 1995 Adapted to Linux 1.2: kernel always loaded into ST ram @@ -26,6 +30,9 @@ ** 14 Mar 1994 New mini-copy routine used (rdv) */ + +#define BOOTINFO_COMPAT_1_0 /* bootinfo interface version 1.0 compatible */ + #include #include #include @@ -43,6 +50,7 @@ #include #define _LINUX_TYPES_H /* Hack to prevent including */ +#include #include /* Atari bootstrap include file */ @@ -54,10 +62,29 @@ extern char *optarg; extern int optind; static void get_default_args( int *argc, char ***argv ); +static int create_bootinfo(void); +#ifdef BOOTINFO_COMPAT_1_0 +static int create_compat_bootinfo(void); +#endif /* BOOTINFO_COMPAT_1_0 */ +static int add_bi_record(u_short tag, u_short size, const void *data); +static int add_bi_string(u_short tag, const u_char *s); /* This is missing in */ extern int sync (void); -struct bootinfo bi; +/* Bootinfo */ +static struct atari_bootinfo bi; + +#ifdef BOOTINFO_COMPAT_1_0 +static struct compat_bootinfo compat_bootinfo; +#endif /* BOOTINFO_COMPAT_1_0 */ + +#define MAX_BI_SIZE (4096) +static u_long bi_size; +static union { +struct bi_record record; + u_char fake[MAX_BI_SIZE]; +} bi_union; + u_long *cookiejar; u_long userstk; @@ -303,16 +330,27 @@ printf("Kernel's bootinfo version : %d.%d\n", kernel_major, kernel_minor); - if (kernel_major != boots_major) { - printf("\nThis bootstrap is too %s for this kernel!\n", - boots_major < kernel_major ? "old" : "new"); - return 0; - } - if (kernel_minor > boots_minor) { - printf("Warning: Bootinfo version of bootstrap and kernel differ!\n"); - printf(" Certain features may not work.\n"); + switch (kernel_major) { + case BI_VERSION_MAJOR(ATARI_BOOTI_VERSION): + if (kernel_minor > boots_minor) { + printf("Warning: Bootinfo version of bootstrap and kernel " + "differ!\n"); + printf(" Certain features may not work.\n"); + } + break; + +#ifdef BOOTINFO_COMPAT_1_0 + case BI_VERSION_MAJOR(COMPAT_ATARI_BOOTI_VERSION): + printf("(using backwards compatibility mode)\n"); + break; +#endif /* BOOTINFO_COMPAT_1_0 */ + + default: + printf("\nThis bootstrap is too %s for this kernel!\n", + boots_major < kernel_major ? "old" : "new"); + return 0; } - return 1; + return kernel_major; } @@ -350,12 +388,13 @@ #ifdef USE_BOOTP int prefer_bootp = 1, kname_set = 0; #endif + void *bi_ptr; ramdisk_name = NULL; kernel_name = "vmlinux"; /* print the startup message */ - puts("\fLinux/68k Atari Bootstrap version 1.8" + puts("\fLinux/68k Atari Bootstrap version 2.0" #ifdef USE_BOOTP " (with BOOTP)" #endif @@ -447,10 +486,10 @@ switch(cpu_type) { case 0: case 10: break; - case 20: bi.cputype = CPU_68020; break; - case 30: bi.cputype = CPU_68030; break; - case 40: bi.cputype = CPU_68040; break; - case 60: bi.cputype = CPU_68060; break; + case 20: bi.cputype = CPU_68020; bi.mmutype = MMU_68851; break; + case 30: bi.cputype = CPU_68030; bi.mmutype = MMU_68030; break; + case 40: bi.cputype = CPU_68040; bi.mmutype = MMU_68040; break; + case 60: bi.cputype = CPU_68060; bi.mmutype = MMU_68060; break; default: fprintf(stderr, "Error: Unknown CPU type. Aborting...\n"); boot_exit(EXIT_FAILURE); @@ -463,11 +502,11 @@ /* check for FPU; in case of a '040 or '060, don't look at _FPU itself, * some software may set it to wrong values (68882 or the like) */ if (cpu_type == 40) { - bi.cputype |= FPU_68040; + bi.fputype = FPU_68040; puts( "68040\n" ); } else if (cpu_type == 60) { - bi.cputype |= FPU_68060; + bi.fputype = FPU_68060; puts( "68060\n" ); } else { @@ -484,12 +523,12 @@ goto m68882; /* fall through */ case 4: - bi.cputype |= FPU_68881; + bi.fputype = FPU_68881; puts("68881\n"); break; case 6: m68882: - bi.cputype |= FPU_68882; + bi.fputype = FPU_68882; puts("68882\n"); break; default: @@ -499,15 +538,13 @@ } /* ++roman: If an FPU was announced in the cookie, test whether it is a real hardware FPU or a software emulator! */ - if (bi.cputype & FPU_MASK) { + if (bi.fputype) { if (test_software_fpu()) { - bi.cputype &= ~FPU_MASK; + bi.fputype = 0; puts("FPU: software emulated. Assuming no FPU."); } } - memset(&bi.bi_atari.hw_present, 0, sizeof(bi.bi_atari.hw_present)); - /* Get the amounts of ST- and TT-RAM. */ /* The size must be a multiple of 1MB. */ i = 0; @@ -678,7 +715,7 @@ #endif /* Pass contents of the _MCH cookie to the kernel */ - bi.bi_atari.mch_cookie = mch_type; + bi.mch_cookie = mch_type; /* * Copy command line options into the kernel command line. @@ -806,19 +843,23 @@ ramdisk_name); boot_exit(EXIT_FAILURE); } - bi.ramdisk_size = (lseek(rfd, 0, SEEK_END) + 1023) / 1024; + bi.ramdisk.size = lseek(rfd, 0, SEEK_END); } else - bi.ramdisk_size = 0; + bi.ramdisk.size = 0; - rd_size = bi.ramdisk_size << 10; + rd_size = bi.ramdisk.size; if (mem_size - rd_size < MB && bi.num_memory > 1) /* If running low on ST ram load ramdisk into alternate ram. */ - bi.ramdisk_addr = (u_long) bi.memory[1].addr + bi.memory[1].size - rd_size; + bi.ramdisk.addr = (u_long) bi.memory[1].addr + bi.memory[1].size - rd_size; else /* Else hopefully there is enough ST ram. */ - bi.ramdisk_addr = (u_long)start_mem + mem_size - rd_size; + bi.ramdisk.addr = (u_long)start_mem + mem_size - rd_size; + /* create the bootinfo structure */ + if (!create_bootinfo()) + boot_exit (EXIT_FAILURE); + /* calculate the total required amount of memory */ if (elf_kernel) { @@ -844,7 +885,11 @@ } else kernel_size = kexec.a_text + kexec.a_data + kexec.a_bss; - memreq = kernel_size + sizeof (bi); + memreq = kernel_size + bi_size; +#ifdef BOOTINFO_COMPAT_1_0 + if (sizeof(compat_bootinfo) > bi_size) + memreq = kernel_size+sizeof(compat_bootinfo); +#endif /* BOOTINFO_COMPAT_1_0 */ /* align load address of ramdisk image, read() is sloooow on odd addr. */ memreq = ((memreq + 3) & ~3) + rd_size; @@ -905,14 +950,29 @@ kclose (kfd); /* Check kernel's bootinfo version */ - if (!check_bootinfo_version(memptr)) { - Mfree ((void *)memptr); - boot_exit (EXIT_FAILURE); + switch (check_bootinfo_version(memptr)) { + case BI_VERSION_MAJOR(ATARI_BOOTI_VERSION): + bi_ptr = &bi_union.record; + break; + +#ifdef BOOTINFO_COMPAT_1_0 + case BI_VERSION_MAJOR(COMPAT_ATARI_BOOTI_VERSION): + if (!create_compat_bootinfo()) { + Mfree ((void *)memptr); + boot_exit (EXIT_FAILURE); + } + bi_ptr = &compat_bootinfo; + bi_size = sizeof(compat_bootinfo); + break; +#endif /* BOOTINFO_COMPAT_1_0 */ + + default: + Mfree ((void *)memptr); + boot_exit (EXIT_FAILURE); } - + /* copy the boot_info struct to the end of the kernel image */ - memcpy ((void *)(memptr + kernel_size), - &bi, sizeof(bi)); + memcpy ((void *)(memptr + kernel_size), bi_ptr, bi_size); /* read the ramdisk image */ if (rfd != -1) @@ -936,10 +996,10 @@ /* for those who want to debug */ if (debugflag) { - if (bi.ramdisk_size) + if (bi.ramdisk.size) printf ("RAM disk at %#lx, size is %ldK\n", (u_long)(memptr + memreq - rd_size), - bi.ramdisk_size); + bi.ramdisk.size); if (elf_kernel) { @@ -963,7 +1023,7 @@ start_mem + kernel_size); printf ("\nKernel entry is %#lx\n", elf_kernel ? kexec_elf.e_entry : kexec.a_entry); - printf ("ramdisk dest top is %#lx\n", bi.ramdisk_addr + rd_size); + printf ("ramdisk dest top is %#lx\n", bi.ramdisk.addr + rd_size); printf ("ramdisk lower limit is %#lx\n", (u_long)(memptr + memreq - rd_size)); printf ("ramdisk src top is %#lx\n", (u_long)(memptr + memreq)); @@ -1013,9 +1073,8 @@ */ jump_to_mover((char *) start_mem, memptr, - (char *) bi.ramdisk_addr + rd_size, memptr + memreq, - kernel_size + sizeof (bi), - rd_size, + (char *) bi.ramdisk.addr + rd_size, memptr + memreq, + kernel_size + bi_size, rd_size, (void *) 0x400); for (;;); @@ -1081,3 +1140,141 @@ nargv[*argc] = 0; } + + /* + * Create the Bootinfo Structure + */ + +static int create_bootinfo(void) +{ + int i; + struct bi_record *record; + + /* Initialization */ + bi_size = 0; + + /* Generic tags */ + if (!add_bi_record(BI_MACHTYPE, sizeof(bi.machtype), &bi.machtype)) + return(0); + if (!add_bi_record(BI_CPUTYPE, sizeof(bi.cputype), &bi.cputype)) + return(0); + if (!add_bi_record(BI_FPUTYPE, sizeof(bi.fputype), &bi.fputype)) + return(0); + if (!add_bi_record(BI_MMUTYPE, sizeof(bi.mmutype), &bi.mmutype)) + return(0); + for (i = 0; i < bi.num_memory; i++) + if (!add_bi_record(BI_MEMCHUNK, sizeof(bi.memory[i]), &bi.memory[i])) + return(0); + if (bi.ramdisk.size) + if (!add_bi_record(BI_RAMDISK, sizeof(bi.ramdisk), &bi.ramdisk)) + return(0); + if (!add_bi_string(BI_COMMAND_LINE, bi.command_line)) + return(0); + + /* Atari tags */ + if (!add_bi_record(BI_ATARI_MCH_COOKIE, sizeof(bi.mch_cookie), + &bi.mch_cookie)) + return(0); + + /* Trailer */ + record = (struct bi_record *)((u_long)&bi_union.record+bi_size); + record->tag = BI_LAST; + bi_size += sizeof(bi_union.record.tag); + + return(1); +} + + + /* + * Add a Record to the Bootinfo Structure + */ + +static int add_bi_record(u_short tag, u_short size, const void *data) +{ + struct bi_record *record; + u_int size2; + + size2 = (sizeof(struct bi_record)+size+3)&-4; + if (bi_size+size2+sizeof(bi_union.record.tag) > MAX_BI_SIZE) { + fprintf (stderr, "Can't add bootinfo record. Ask a wizard to enlarge me.\n"); + return(0); + } + record = (struct bi_record *)((u_long)&bi_union.record+bi_size); + record->tag = tag; + record->size = size2; + memcpy(record->data, data, size); + bi_size += size2; + return(1); +} + + + /* + * Add a String Record to the Bootinfo Structure + */ + +static int add_bi_string(u_short tag, const u_char *s) +{ + return add_bi_record(tag, strlen(s)+1, (void *)s); +} + + +#ifdef BOOTINFO_COMPAT_1_0 + + /* + * Create the Bootinfo structure for backwards compatibility mode + */ + +static int create_compat_bootinfo(void) +{ + u_int i; + + compat_bootinfo.machtype = bi.machtype; + if (bi.cputype & CPU_68020) + compat_bootinfo.cputype = COMPAT_CPU_68020; + else if (bi.cputype & CPU_68030) + compat_bootinfo.cputype = COMPAT_CPU_68030; + else if (bi.cputype & CPU_68040) + compat_bootinfo.cputype = COMPAT_CPU_68040; + else if (bi.cputype & CPU_68060) + compat_bootinfo.cputype = COMPAT_CPU_68060; + else { + Printf("CPU type 0x%08lx not supported by kernel\n", bi.cputype); + return(0); + } + if (bi.fputype & FPU_68881) + compat_bootinfo.cputype |= COMPAT_FPU_68881; + else if (bi.fputype & FPU_68882) + compat_bootinfo.cputype |= COMPAT_FPU_68882; + else if (bi.fputype & FPU_68040) + compat_bootinfo.cputype |= COMPAT_FPU_68040; + else if (bi.fputype & FPU_68060) + compat_bootinfo.cputype |= COMPAT_FPU_68060; + else { + Printf("FPU type 0x%08lx not supported by kernel\n", bi.fputype); + return(0); + } + compat_bootinfo.num_memory = bi.num_memory; + if (compat_bootinfo.num_memory > COMPAT_NUM_MEMINFO) { + Printf("Warning: using only %d blocks of memory\n", + COMPAT_NUM_MEMINFO); + compat_bootinfo.num_memory = COMPAT_NUM_MEMINFO; + } + for (i = 0; i < compat_bootinfo.num_memory; i++) { + compat_bootinfo.memory[i].addr = bi.memory[i].addr; + compat_bootinfo.memory[i].size = bi.memory[i].size; + } + if (bi.ramdisk.size) { + compat_bootinfo.ramdisk_size = (bi.ramdisk.size+1023)/1024; + compat_bootinfo.ramdisk_addr = bi.ramdisk.addr; + } else { + compat_bootinfo.ramdisk_size = 0; + compat_bootinfo.ramdisk_addr = 0; + } + strncpy(compat_bootinfo.command_line, bi.command_line, COMPAT_CL_SIZE); + compat_bootinfo.command_line[COMPAT_CL_SIZE-1] = '\0'; + + compat_bootinfo.bi_atari.hw_present = 0; + compat_bootinfo.bi_atari.mch_cookie = bi.mch_cookie; + return(1); +} +#endif /* BOOTINFO_COMPAT_1_0 */ diff -u --recursive --new-file v2.1.16/linux/arch/m68k/boot/atari/bootstrap.h linux/arch/m68k/boot/atari/bootstrap.h --- v2.1.16/linux/arch/m68k/boot/atari/bootstrap.h Mon May 20 07:54:26 1996 +++ linux/arch/m68k/boot/atari/bootstrap.h Fri Dec 20 11:19:58 1996 @@ -4,7 +4,11 @@ ** Copyright 1993 by Arjan Knor ** ** Modified by Andreas Schwab -** - clear transparent translation registers +** - clear transparent translation registers +** Modified 18-Aug-96 by Geert Uytterhoeven +** - Updated for the new boot information structure (untested!) +** Modified 1996-11-12 by Andreas Schwab +** - Fixed and tested previous change ** ** This file is subject to the terms and conditions of the GNU General Public ** License. See the file COPYING in the main directory of this archive @@ -15,6 +19,26 @@ #ifndef BOOTSTRAP_H #define BOOTSTRAP_H + /* + * Atari Bootinfo Definitions + * + * All limits herein are `soft' limits, i.e. they don't put constraints + * on the actual parameters in the kernel. + */ + +struct atari_bootinfo { + unsigned long machtype; /* machine type */ + unsigned long cputype; /* system CPU */ + unsigned long fputype; /* system FPU */ + unsigned long mmutype; /* system MMU */ + int num_memory; /* # of memory blocks found */ + struct mem_info memory[NUM_MEMINFO]; /* memory description */ + struct mem_info ramdisk; /* ramdisk description */ + char command_line[CL_SIZE]; /* kernel command line parameters */ + unsigned long mch_cookie; /* _MCH cookie from TOS */ +}; + + /* _MCH cookie values */ #define MACH_ST 0 #define MACH_STE 1 @@ -74,7 +98,7 @@ __asm__ volatile ("orw #0x700,sr":); } -extern struct bootinfo bi; +extern struct atari_bootinfo bi; static __inline void disable_cache (void) { __asm__ volatile ("movec %0,cacr" :: "d" (0)); diff -u --recursive --new-file v2.1.16/linux/arch/m68k/config.in linux/arch/m68k/config.in --- v2.1.16/linux/arch/m68k/config.in Fri Nov 22 18:28:14 1996 +++ linux/arch/m68k/config.in Fri Dec 20 11:19:58 1996 @@ -51,7 +51,6 @@ bool 'System V IPC' CONFIG_SYSVIPC tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF -bool 'Compile kernel as ELF - if your GCC is ELF-GCC' CONFIG_KERNEL_ELF if [ "$CONFIG_AMIGA" = "y" ]; then bool 'Amiga AutoConfig Identification' CONFIG_ZORRO bool 'Amiga OCS chipset support' CONFIG_AMIFB_OCS @@ -79,6 +78,7 @@ dep_tristate ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD $CONFIG_BLK_DEV_IDE dep_tristate ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE $CONFIG_BLK_DEV_IDE dep_tristate ' Include IDE/ATAPI FLOPPY support' CONFIG_BLK_DEV_IDEFLOPPY $CONFIG_BLK_DEV_IDE + dep_tristate ' SCSI emulation support' CONFIG_BLK_DEV_IDESCSI $CONFIG_BLK_DEV_IDE fi if [ "$CONFIG_AMIGA" = "y" ]; then tristate 'Amiga Zorro II ramdisk support' CONFIG_AMIGA_Z2RAM @@ -122,6 +122,9 @@ dep_tristate 'SCSI disk support' CONFIG_BLK_DEV_SD $CONFIG_SCSI dep_tristate 'SCSI tape support' CONFIG_CHR_DEV_ST $CONFIG_SCSI dep_tristate 'SCSI CD-ROM support' CONFIG_BLK_DEV_SR $CONFIG_SCSI +if [ "$CONFIG_BLK_DEV_SR" != "n" ]; then + bool ' Enable vendor-specific extentions (for SCSI CDROM)' CONFIG_BLK_DEV_SR_VENDOR +fi dep_tristate 'SCSI generic support' CONFIG_CHR_DEV_SG $CONFIG_SCSI comment 'Some SCSI devices (e.g. CD jukebox) support multiple LUNs' diff -u --recursive --new-file v2.1.16/linux/arch/m68k/console/fbcon.c linux/arch/m68k/console/fbcon.c --- v2.1.16/linux/arch/m68k/console/fbcon.c Fri Nov 22 18:28:16 1996 +++ linux/arch/m68k/console/fbcon.c Fri Dec 20 11:19:58 1996 @@ -160,8 +160,8 @@ #endif -struct fb_info *fb_info; -struct display *disp; +static struct fb_info *fb_info; +static struct display *disp; /* ++Geert: Sorry, no hardware cursor support at the moment; @@ -455,56 +455,56 @@ #ifdef CONFIG_FBCON_MONO -struct display_switch dispsw_mono = { +static struct display_switch dispsw_mono = { bmove_mono, clear_mono, putc_mono, putcs_mono, rev_char_mono }; #endif /* CONFIG_FBCON_MONO */ #ifdef CONFIG_FBCON_ILBM -struct display_switch dispsw_ilbm = { +static struct display_switch dispsw_ilbm = { bmove_ilbm, clear_ilbm, putc_ilbm, putcs_ilbm, rev_char_ilbm }; #endif /* CONFIG_FBCON_ILBM */ #ifdef CONFIG_FBCON_PLANES -struct display_switch dispsw_plan = { +static struct display_switch dispsw_plan = { bmove_plan, clear_plan, putc_plan, putcs_plan, rev_char_plan }; #endif /* CONFIG_FBCON_PLANES */ #ifdef CONFIG_FBCON_2PLANE -struct display_switch dispsw_2_plane = { +static struct display_switch dispsw_2_plane = { bmove_2_plane, clear_2_plane, putc_2_plane, putcs_2_plane, rev_char_2_plane }; #endif /* CONFIG_FBCON_2PLANE */ #ifdef CONFIG_FBCON_4PLANE -struct display_switch dispsw_4_plane = { +static struct display_switch dispsw_4_plane = { bmove_4_plane, clear_4_plane, putc_4_plane, putcs_4_plane, rev_char_4_plane }; #endif /* CONFIG_FBCON_4PLANE */ #ifdef CONFIG_FBCON_8PLANE -struct display_switch dispsw_8_plane = { +static struct display_switch dispsw_8_plane = { bmove_8_plane, clear_8_plane, putc_8_plane, putcs_8_plane, rev_char_8_plane }; #endif /* CONFIG_FBCON_8PLANE */ #ifdef CONFIG_FBCON_8PACKED -struct display_switch dispsw_8_packed = { +static struct display_switch dispsw_8_packed = { bmove_8_packed, clear_8_packed, putc_8_packed, putcs_8_packed, rev_char_8_packed }; #endif /* CONFIG_FBCON_8PACKED */ #ifdef CONFIG_FBCON_16PACKED -struct display_switch dispsw_16_packed = { +static struct display_switch dispsw_16_packed = { bmove_16_packed, clear_16_packed, putc_16_packed, putcs_16_packed, rev_char_16_packed }; #endif /* CONFIG_FBCON_16PACKED */ #ifdef CONFIG_FBCON_CYBER -struct display_switch dispsw_cyber = { +static struct display_switch dispsw_cyber = { bmove_cyber, clear_cyber, putc_cyber, putcs_cyber, rev_char_cyber }; #endif /* CONFIG_FBCON_CYBER */ diff -u --recursive --new-file v2.1.16/linux/arch/m68k/defconfig linux/arch/m68k/defconfig --- v2.1.16/linux/arch/m68k/defconfig Fri Nov 22 18:28:16 1996 +++ linux/arch/m68k/defconfig Fri Dec 20 11:19:58 1996 @@ -40,7 +40,6 @@ CONFIG_SYSVIPC=y CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_ELF=y -CONFIG_KERNEL_ELF=y CONFIG_ZORRO=y CONFIG_AMIFB_OCS=y CONFIG_AMIFB_ECS=y @@ -60,6 +59,7 @@ # CONFIG_BLK_DEV_IDECD is not set # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_AMIGA_Z2RAM is not set # CONFIG_ATARI_ACSI is not set # CONFIG_ACSI_MULTI_LUN is not set @@ -74,12 +74,12 @@ # # Networking options # +# CONFIG_NETLINK is not set # CONFIG_FIREWALL is not set # CONFIG_NET_ALIAS is not set CONFIG_INET=y # CONFIG_IP_FORWARD is not set # CONFIG_IP_MULTICAST is not set -# CONFIG_IP_FIREWALL is not set # CONFIG_IP_ACCT is not set # @@ -87,8 +87,7 @@ # # CONFIG_INET_PCTCP is not set # CONFIG_INET_RARP is not set -# CONFIG_NO_PATH_MTU_DISCOVERY is not set -# CONFIG_TCP_NAGLE_OFF is not set +CONFIG_PATH_MTU_DISCOVERY=y CONFIG_IP_NOSR=y # CONFIG_SKB_LARGE is not set # CONFIG_IPV6 is not set @@ -100,7 +99,6 @@ # CONFIG_ATALK is not set # CONFIG_AX25 is not set # CONFIG_BRIDGE is not set -# CONFIG_NETLINK is not set # # SCSI support diff -u --recursive --new-file v2.1.16/linux/arch/m68k/fpsp040/Makefile linux/arch/m68k/fpsp040/Makefile --- v2.1.16/linux/arch/m68k/fpsp040/Makefile Wed Apr 24 07:31:23 1996 +++ linux/arch/m68k/fpsp040/Makefile Fri Dec 20 11:19:58 1996 @@ -9,7 +9,6 @@ .S.o: $(CC) -D__ASSEMBLY__ -traditional -c -o $*.o $< -# $(AS) -o $*.o $< OS_TARGET := fpsp.o diff -u --recursive --new-file v2.1.16/linux/arch/m68k/ifpsp060/Makefile linux/arch/m68k/ifpsp060/Makefile --- v2.1.16/linux/arch/m68k/ifpsp060/Makefile Wed Sep 25 10:47:39 1996 +++ linux/arch/m68k/ifpsp060/Makefile Fri Dec 20 11:19:58 1996 @@ -5,7 +5,6 @@ # for more details. .S.o: -# $(AS) -o $*.o $< $(CC) -D__ASSEMBLY__ -traditional -c -o $*.o $< OS_TARGET := ifpsp.o diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/console.c linux/arch/m68k/kernel/console.c --- v2.1.16/linux/arch/m68k/kernel/console.c Fri Nov 22 18:28:16 1996 +++ linux/arch/m68k/kernel/console.c Fri Dec 20 11:19:58 1996 @@ -970,7 +970,7 @@ tty_schedule_flip(tty); } -static void cursor_report(int currcons, struct tty_struct * tty) +static inline void cursor_report(int currcons, struct tty_struct * tty) { char buf[40]; @@ -1242,7 +1242,7 @@ } } -static void insert_char(int currcons) +static inline void insert_char(int currcons) { int i; unsigned short *p = pos; diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/entry.S linux/arch/m68k/kernel/entry.S --- v2.1.16/linux/arch/m68k/kernel/entry.S Fri Nov 22 18:28:16 1996 +++ linux/arch/m68k/kernel/entry.S Fri Dec 20 11:19:58 1996 @@ -148,37 +148,18 @@ pea SYMBOL_NAME(ret_from_exception) jmp SYMBOL_NAME(schedule) -ENTRY(system_call) - SAVE_ALL - movel #-LENOSYS,LD0(%sp) | default return value in d0 - | original D0 is in orig_d0 - movel %d0,%d2 - - | save top of frame - pea %sp@ - jbsr SYMBOL_NAME(set_esp0) - addql #4,%sp - - cmpl #NR_syscalls,%d2 - jcc SYMBOL_NAME(ret_from_exception) - lea SYMBOL_NAME(sys_call_table),%a0 - movel %a0@(%d2:l:4),%d3 - jeq SYMBOL_NAME(ret_from_exception) - movel SYMBOL_NAME(current_set),%a0 - btst #5,%a0@(LTASK_FLAGS+3) | PF_TRACESYS - bnes 1f - movel %d3,%a0 - jbsr %a0@ - movel %d0,%sp@(LD0) | save the return value +badsys: + movel #-LENOSYS,LD0(%sp) jra SYMBOL_NAME(ret_from_exception) -1: + +do_trace: + movel #-LENOSYS,LD0(%sp) | needed for strace subql #4,%sp SAVE_SWITCH_STACK jbsr SYMBOL_NAME(syscall_trace) RESTORE_SWITCH_STACK addql #4,%sp - movel %d3,%a0 - jbsr %a0@ + jbsr @(SYMBOL_NAME(sys_call_table),%d2:l:4)@(0) movel %d0,%sp@(LD0) | save the return value subql #4,%sp | dummy return address SAVE_SWITCH_STACK @@ -187,6 +168,24 @@ SYMBOL_NAME_LABEL(ret_from_signal) RESTORE_SWITCH_STACK addql #4,%sp + jra SYMBOL_NAME(ret_from_exception) + +ENTRY(system_call) + SAVE_ALL + movel %d0,%d2 + + | save top of frame + pea %sp@ + jbsr SYMBOL_NAME(set_esp0) + addql #4,%sp + + cmpl #NR_syscalls,%d2 + jcc badsys + movel SYMBOL_NAME(current_set),%a0 + btst #5,%a0@(LTASK_FLAGS+3) | PF_TRACESYS + jne do_trace + jbsr @(SYMBOL_NAME(sys_call_table),%d2:l:4)@(0) + movel %d0,%sp@(LD0) | save the return value SYMBOL_NAME_LABEL(ret_from_exception) btst #5,%sp@(LSR) | check if returning to kernel @@ -197,17 +196,8 @@ cmpl #SYMBOL_NAME(task),%a0 | task[0] cannot have signals jeq 2f bclr #5,%a0@(LTASK_FLAGS+1) | check for delayed trace - jeq 1f - bclr #7,%sp@(LSR) | clear trace bit in SR - pea 1 | send SIGTRAP - movel %a0,%sp@- - pea 5 - jbsr SYMBOL_NAME(send_sig) - addql #8,%sp - addql #4,%sp - movel SYMBOL_NAME(current_set),%a0 - -1: + jne do_delayed_trace +5: tstl %a0@(LTASK_STATE) | state jne SYMBOL_NAME(reschedule) tstl %a0@(LTASK_COUNTER) | counter @@ -234,6 +224,17 @@ addql #4,%sp RESTORE_ALL +do_delayed_trace: + bclr #7,%sp@(LSR) | clear trace bit in SR + pea 1 | send SIGTRAP + movel %a0,%sp@- + pea 5 + jbsr SYMBOL_NAME(send_sig) + addql #8,%sp + addql #4,%sp + movel SYMBOL_NAME(current_set),%a0 + jra 5b + /* ** This is the main interrupt handler, responsible for calling process_int() */ @@ -361,7 +362,7 @@ #if defined(CONFIG_M68060) #if !defined(CONFIG_M68060_ONLY) - btst #3,SYMBOL_NAME(boot_info)+BI_cputype+3 + btst #3,SYMBOL_NAME(m68k_cputype)+3 beqs 1f #endif /* The 060 FPU keeps status in bits 15-8 of the first longword */ @@ -414,23 +415,25 @@ /* * switch address space */ + .chip 68040 /* flush address translation cache (user entries) */ - .word 0xf510 /* pflushan */ + pflushan /* switch the root pointer */ movel %a1@(LTSS_CRP+4),%d0 - .long 0x4e7b0806 /* movec d0,urp */ + movec %d0,%urp #if defined (CONFIG_M68060) /* is it a '060 ? */ - btst #3,SYMBOL_NAME(boot_info)+BI_cputype+3 + btst #3,SYMBOL_NAME(m68k_cputype)+3 beqs 2f /* clear user entries in the branch cache */ movec %cacr,%d0 orl #0x00200000,%d0 movec %d0,%cacr #endif /* CONFIG_M68060 */ + .chip 68k #endif /* CONFIG_M68040_OR_M68060 */ 2: 4: @@ -438,7 +441,7 @@ #if defined(CONFIG_M68060) #if !defined(CONFIG_M68060_ONLY) - btst #3,SYMBOL_NAME(boot_info)+BI_cputype+3 + btst #3,SYMBOL_NAME(m68k_cputype)+3 beqs 1f #endif /* The 060 FPU keeps status in bits 15-8 of the first longword */ @@ -592,7 +595,7 @@ .long SYMBOL_NAME(sys_ni_syscall) /* iopl for i386 */ /* 110 */ .long SYMBOL_NAME(sys_vhangup) .long SYMBOL_NAME(sys_idle) - .long SYMBOL_NAME(sys_ni_syscall) /* vm86 for i386 */ + .long SYMBOL_NAME(sys_ni_syscall) /* vm86old for i386 */ .long SYMBOL_NAME(sys_wait4) .long SYMBOL_NAME(sys_swapoff) /* 115 */ .long SYMBOL_NAME(sys_sysinfo) @@ -645,4 +648,7 @@ .long SYMBOL_NAME(sys_mremap) .long SYMBOL_NAME(sys_setresuid) .long SYMBOL_NAME(sys_getresuid) - .space (NR_syscalls-165)*4 + .long SYMBOL_NAME(sys_ni_syscall) /* for vm86 */ + .rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4 + .long SYMBOL_NAME(sys_ni_syscall) + .endr diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/head.S linux/arch/m68k/kernel/head.S --- v2.1.16/linux/arch/m68k/kernel/head.S Fri Nov 22 18:28:16 1996 +++ linux/arch/m68k/kernel/head.S Fri Dec 20 11:19:58 1996 @@ -67,6 +67,7 @@ #include #include +#include #include #include @@ -178,21 +179,29 @@ lea %pc@(SYMBOL_NAME(_stext):w),%sp /* - * Copy bootinfo from position after BSS to final resting place - */ - lea %pc@(SYMBOL_NAME(_end)),%a0 - lea %pc@(SYMBOL_NAME(boot_info)),%a1 - movel %pc@(SYMBOL_NAME(bisize)),%d0 - subql #1,%d0 -1: moveb %a0@+,%a1@+ - dbra %d0,1b - -/* * Record the CPU and machine type. */ - lea %pc@(SYMBOL_NAME(boot_info)),%a0 - movel %a0@(BI_machtype),%d4 - movel %a0@(BI_cputype),%d0 + + movew #BI_MACHTYPE,%d0 + jbsr Lget_bi_record + movel %a0@,%d4 + lea %pc@(SYMBOL_NAME(m68k_machtype)),%a0 + movel %d4,%a0@ + movew #BI_FPUTYPE,%d0 + jbsr Lget_bi_record + movel %a0@,%d0 + lea %pc@(SYMBOL_NAME(m68k_fputype)),%a0 + movel %d0,%a0@ + movew #BI_MMUTYPE,%d0 + jbsr Lget_bi_record + movel %a0@,%d0 + lea %pc@(SYMBOL_NAME(m68k_mmutype)),%a0 + movel %d0,%a0@ + movew #BI_CPUTYPE,%d0 + jbsr Lget_bi_record + movel %a0@,%d0 + lea %pc@(SYMBOL_NAME(m68k_cputype)),%a0 + movel %d0,%a0@ btst #CPUB_68060,%d0 jeq 1f @@ -234,10 +243,10 @@ putc('A') /* - * Get address at end of kernel code/data/bss and - * mask off at a page boundary. + * Get address at end of bootinfo and mask off at a page boundary. */ - lea %pc@(SYMBOL_NAME(_end)),%a0 + moveq #0,%d0 + jbsr Lget_bi_record addw #PAGESIZE-1,%a0 movel %a0,%d0 andl #-PAGESIZE,%d0 @@ -250,10 +259,6 @@ */ lea %pc@(SYMBOL_NAME(_stext)-PAGESIZE:w),%a0 movel %a0,%d5 -#ifdef HACKER_KERNEL - lea %pc@(Lkernel_start),%a0 - movel %d5,%a0@ -#endif /* * initialize the kernel root table. @@ -637,45 +642,47 @@ /* no limit, 4byte descriptors */ movel #0x80000002,%a3@ movel %a5,%a3@(4) - .long 0xf0134800 /* pmove %a3@,%srp */ - .long 0xf0134c00 /* pmove %a3@,%crp */ - .long 0xf0002400 /* pflusha */ + pmove %a3@,%srp + pmove %a3@,%crp + pflusha /* * enable,super root enable,4096 byte pages,7 bit root index, * 7 bit pointer index, 6 bit page table index. */ movel #0x82c07760,%a3@ - .long 0xf0134000 /* pmove %a3@,%tc (enable the MMU) */ + pmove %a3@,%tc /* enable the MMU */ tstl %d0 jne 1f jmp %pc@(2f+0x80000000) 1: jmp 2f:w 2: movel %d2,%a5@(%d0:w) - .long 0xf0002400 /* pflusha */ + pflusha jmp LdoneMMUenable:w Lamimmu68040: + .chip 68040 lea 2f:w,%a0 movel %d5,%d0 andl #0xff000000,%d0 jne 1f lea %pc@(2f+0x80000000),%a0 1: orw #TTR_ENABLE+TTR_KERNELMODE+_PAGE_NOCACHE_S,%d0 - .long 0x4e7b0004 /* movec %d0,%itt0 */ - .long 0x4e7bd806 /* movec %a5,%urp */ - .long 0x4e7bd807 /* movec %a5,%srp */ - .word 0xf518 /* pflusha */ + movec %d0,%itt0 + movec %a5,%urp + movec %a5,%srp + pflusha movel #TC_ENABLE+TC_PAGE4K,%d0 /* * this value is also ok for the 68060, we don`t use the cache * mode/protection defaults */ - .long 0x4e7b0003 /* movec %d0,%tc (enable the MMU) */ + movec %d0,%tc /* enable the MMU */ jmp %a0@ 2: moveq #0,%d0 - .long 0x4e7b0004 /* movec %d0,%itt0 */ + movec %d0,%itt0 jmp LdoneMMUenable:w + .chip 68k Lmapphysnotamiga: #endif @@ -696,6 +703,7 @@ is_040_or_060(Latarimmu68040) + .chip 68030 lea %pc@(Lmmu),%a3 movel %d5,%d0 jne 1f @@ -706,7 +714,7 @@ jeq 2f orw #TTR_ENABLE+TTR_CI+TTR_RWM+TTR_FCB2+TTR_FCM1+TTR_FCM0,%d0 movel %d0,%a3@ - .long 0xf0130800 /* pmove %a3@,%tt0 */ + pmove %a3@,%tt0 jra 3f /* tt0 doesn't work if physical and virtual address of kernel is in * the same 16M area (Falcon with Magnum/FX, kernel in alternate ram) @@ -729,23 +737,25 @@ /* no limit, 4byte descriptors */ 3: movel #0x80000002,%a3@ movel %a5,%a3@(4) - .long 0xf0134800 /* pmove %a3@,%srp */ - .long 0xf0134c00 /* pmove %a3@,%crp */ - .long 0xf0002400 /* pflusha */ + pmove %a3@,%srp + pmove %a3@,%crp + pflusha /* * enable,super root enable,4096 byte pages,7 bit root index, * 7 bit pointer index, 6 bit page table index. */ movel #0x82c07760,%a3@ - .long 0xf0134000 /* pmove %a3@,%tc (enable the MMU) */ + pmove %a3@,%tc /* enable the MMU */ jmp %a0@ 4: clrl %a3@ - .long 0xf0130800 /* pmove %a3@,%tt0 */ + pmove %a3@,%tt0 jra LdoneMMUenable 5: movel %d2,%a1@ jra LdoneMMUenable + .chip 68k Latarimmu68040: + .chip 68040 movel %d5,%d0 jne 1f lea LdoneMMUenable:w,%a0 @@ -753,22 +763,22 @@ 1: lea 3f:w,%a0 andl #0xff000000,%d0 /* logical address base */ orw #TTR_ENABLE+TTR_KERNELMODE+_PAGE_NOCACHE_S,%d0 - .long 0x4e7b0004 /* movec %d0,%itt0 */ + movec %d0,%itt0 2: nop - .word 0xf518 /* pflusha */ - .long 0x4e7bd807 /* movec %a5,%srp */ - .long 0x4e7bd806 /* movec %a5,%urp */ + pflusha + movec %a5,%srp + movec %a5,%urp movel #TC_ENABLE+TC_PAGE4K,%d0 /* * this value is also ok for the 68060, we don`t use the cache * mode/protection defaults */ - .long 0x4e7b0003 /* movec %d0,%tc (enable the MMU) */ + movec %d0,%tc /* enable the MMU */ jmp %a0@ 3: moveq #0,%d0 - .long 0x4e7b0004 /* movec %d0,%itt0 */ - tstl %a1 + movec %d0,%itt0 jra LdoneMMUenable + .chip 68k Lmapphysnotatari: #endif @@ -830,7 +840,9 @@ jra 1f Lcache680460: - .word 0xf4f8 /* cpusha %bc */ + .chip 68040 + cpusha %bc + .chip 68k is_060(Lcache68060) @@ -840,12 +852,14 @@ jra 1f Lcache68060: + .chip 68060 movel #CC6_ENABLE_D+CC6_ENABLE_I+CC6_ENABLE_SB+CC6_PUSH_DPI+CC6_ENABLE_B+CC6_CLRA_B,%d0 /* MMU stuff works in copyback mode now, so enable the cache */ movec %d0,%cacr /* enable superscalar dispatch in PCR */ moveq #1,%d0 - .long 0x4e7b0808 /* movec d0,pcr */ + movec %d0,%pcr + .chip 68k 1: /* @@ -859,43 +873,26 @@ jbsr SYMBOL_NAME(start_kernel) /* - * switch off mmu and exit + * Find a tag record in the bootinfo structure + * The bootinfo structure is located right after the kernel bss + * Returns: d0: size (-1 if not found) + * a0: data pointer (end-of-records if not found) */ - -#ifdef HACKER_KERNEL -ENTRY(kernel_exit) - lea 2f:w,%a0 - movel %pc@(Lkernel_start),%a0 - lea %a0@(2f:w),%a1 - movel %a1,%d0 - andl #0xff000000,%d0 - jne 1f - jmp %a0@(1f+0x80000000) -1: orw #TTR_ENABLE+TTR_KERNELMODE+_PAGE_NOCACHE_S,%d0 - .long 0x4e7b0004 /* movec %d0,%itt0 */ - jmp %a1@ +Lget_bi_record: + lea %pc@(SYMBOL_NAME(_end)),%a0 +1: tstw %a0@(BIR_tag) + jeq 3f + cmpw %a0@(BIR_tag),%d0 + jeq 2f + addw %a0@(BIR_size),%a0 + jra 1b 2: moveq #0,%d0 - .long 0x4e7b0003 /* movec %d0,%tc (disable the MMU) */ - .word 0xf518 /* pflusha */ - .long 0x4e7b0004 /* movec %d0,%itt0 */ - movec %d0,%cacr - .word 0xf4f8 /* cpusha %bc */ - - lea %pc@(SYMBOL_NAME(boot_info)),%a0 - jmp %a0@(BI_amiga_exit_func:w)@(0:w) -#endif - -/* - * Serial port output support. - */ -LSERPER = 0xdff032 -LSERDAT = 0xdff030 -LSERDATR = 0xdff018 -LNTSC_PERIOD = 371 -LPAL_PERIOD = 368 -LNTSC_ECLOCK = 7159090 -LSERIAL_CNTRL = 0xbfd000 -LSERIAL_DTR = 7 + movew %a0@(BIR_size),%d0 + lea %a0@(BIR_data),%a0 + rts +3: moveq #-1,%d0 + lea %a0@(BIR_size),%a0 + rts /* * Debug output support @@ -953,8 +950,18 @@ #endif /* + * Serial port output support. + */ +LSERPER = 0xdff032 +LSERDAT = 0xdff030 +LSERDATR = 0xdff018 +LSERIAL_CNTRL = 0xbfd000 +LSERIAL_DTR = 7 + +/* * Initialize serial port hardware for 9600/8/1 * a0 thrashed + * Amiga d0 trashed * Atari d0 trashed (a1 in case of SCC) */ .even @@ -962,12 +969,10 @@ #ifdef CONFIG_AMIGA cmpil #MACH_AMIGA,%d4 jne 1f - lea %pc@(SYMBOL_NAME(boot_info)),%a0 bclr #LSERIAL_DTR,LSERIAL_CNTRL - movew #LNTSC_PERIOD,LSERPER - cmpl #LNTSC_ECLOCK,%a0@(BI_amiga_eclock) - jeq 9f - movew #LPAL_PERIOD,LSERPER + movew #BI_AMIGA_SERPER,%d0 + jbsr Lget_bi_record + movew %a0@,LSERPER jra 9f 1: #endif @@ -1073,8 +1078,6 @@ /* * Output number in d7 in hex notation on serial port. - * d0-d2 trashed. - * d7 trashed. */ Lserial_putnum: @@ -1103,7 +1106,7 @@ putc('=') putn(%a1) - .long 0xf0119f15 | ptestr #5,%a1@,#7,%a0 + ptestr #5,%a1@,#7,%a0 putc('D') putc('A') @@ -1117,7 +1120,7 @@ putc('S') putc('=') lea %pc@(Lmmu),%a0 - .long 0xf0106200 | pmove %psr,%a0@ + pmove %psr,%a0@ clrl %d7 movew %a0@,%d7 jbsr Lserial_putnum @@ -1128,10 +1131,6 @@ .data .even -#ifdef HACKER_KERNEL -Lkernel_start: - .long 0 -#endif Lcustom: Liobase: .long 0 diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/ksyms.c linux/arch/m68k/kernel/ksyms.c --- v2.1.16/linux/arch/m68k/kernel/ksyms.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/kernel/ksyms.c Fri Dec 20 11:19:58 1996 @@ -1,4 +1,3 @@ -#include #include #include #include @@ -8,6 +7,7 @@ #include #include +#include #include #include #include @@ -15,16 +15,6 @@ asmlinkage long long __ashrdi3 (long long, int); extern char m68k_debug_device[]; -#ifdef CONFIG_ATARI -extern void mach_atari_syms_export (void); -#endif -#ifdef CONFIG_AMIGA -extern void mach_amiga_syms_export (void); -#endif -#ifdef CONFIG_MAC -extern void mach_mac_syms_export (void); -#endif - extern void dump_thread(struct pt_regs *, struct user *); extern int dump_fpu(elf_fpregset_t *); @@ -33,7 +23,8 @@ /* platform dependent support */ X(memcmp), - X(boot_info), + X(m68k_machtype), + X(m68k_cputype), X(m68k_is040or060), X(cache_push), X(cache_push_v), @@ -48,6 +39,7 @@ X(dump_thread), X(strnlen), X(strrchr), + X(strstr), /* The following are special because they're not called explicitly (the C compiler generates them). Fortunately, @@ -67,23 +59,6 @@ { register_symtab(&arch_symbol_table); - switch (boot_info.machtype) { -#ifdef CONFIG_ATARI - case MACH_ATARI: - mach_atari_syms_export(); - break; -#endif -#ifdef CONFIG_AMIGA - case MACH_AMIGA: - mach_amiga_syms_export(); - break; -#endif -#ifdef CONFIG_MAC - case MACH_MAC: - mach_mac_syms_export(); - break; -#endif - default: - break; - } + if (mach_syms_export) + mach_syms_export(); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/process.c linux/arch/m68k/kernel/process.c --- v2.1.16/linux/arch/m68k/kernel/process.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/kernel/process.c Thu Dec 19 16:48:08 1996 @@ -106,7 +106,7 @@ { } -void copy_thread(int nr, unsigned long clone_flags, unsigned long usp, +int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, struct task_struct * p, struct pt_regs * regs) { struct pt_regs * childregs; @@ -145,6 +145,8 @@ : "memory"); /* Restore the state in case the fpu was busy */ asm volatile ("frestore %0" : : "m" (p->tss.fpstate[0])); + + return 0; } /* Fill in the fpu structure for a core dump. */ diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/setup.c linux/arch/m68k/kernel/setup.c --- v2.1.16/linux/arch/m68k/kernel/setup.c Wed Sep 25 10:47:39 1996 +++ linux/arch/m68k/kernel/setup.c Fri Dec 20 11:19:58 1996 @@ -19,19 +19,26 @@ #include #include +#include #include #include #include -#include +#ifdef CONFIG_AMIGA #include +#endif +#ifdef CONFIG_ATARI +#include +#endif #ifdef CONFIG_BLK_DEV_INITRD #include #include #endif -struct bootinfo boot_info = {0,}; -int bisize = sizeof boot_info; +u_long m68k_machtype; +u_long m68k_cputype; +u_long m68k_fputype; +u_long m68k_mmutype; int m68k_is040or060 = 0; @@ -40,6 +47,12 @@ extern int end; extern unsigned long availmem; +int m68k_num_memory = 0; +struct mem_info m68k_memory[NUM_MEMINFO]; + +static struct mem_info m68k_ramdisk = { 0, 0 }; + +static char m68k_command_line[CL_SIZE]; char saved_command_line[CL_SIZE]; /* setup some dummy routines */ @@ -60,6 +73,8 @@ int (*mach_free_irq) (unsigned int, void *); void (*mach_enable_irq) (unsigned int) = NULL; void (*mach_disable_irq) (unsigned int) = NULL; +void (*mach_get_model) (char *model) = NULL; +int (*mach_get_hardware_list) (char *buffer) = NULL; int (*mach_get_irq_list) (char *) = NULL; void (*mach_process_int) (int, struct pt_regs *) = NULL; /* machine dependent timer functions */ @@ -79,48 +94,95 @@ void (*mach_floppy_setup) (char *, int *) = NULL; void (*mach_floppy_eject) (void) = NULL; #endif +void (*mach_syms_export)(void) = NULL; + +extern int amiga_parse_bootinfo(const struct bi_record *); +extern int atari_parse_bootinfo(const struct bi_record *); extern void config_amiga(void); extern void config_atari(void); extern void config_mac(void); extern void config_sun3(void); +extern void config_apollo(void); extern void register_console(void (*proc)(const char *)); -extern void ami_serial_print (const char *str); -extern void ata_serial_print (const char *str); +extern void ami_serial_print(const char *str); +extern void ata_serial_print(const char *str); -extern void (*kd_mksound)(unsigned int, unsigned int); +#define MASK_256K 0xfffc0000 -extern void amiga_get_model(char *model); -extern void atari_get_model(char *model); -extern void mac_get_model(char *model); -extern int amiga_get_hardware_list(char *buffer); -extern int atari_get_hardware_list(char *buffer); -extern int mac_get_hardware_list(char *buffer); -#define MASK_256K 0xfffc0000 +static void m68k_parse_bootinfo(const struct bi_record *record) +{ + while (record->tag != BI_LAST) { + int unknown = 0; + const u_long *data = record->data; + switch (record->tag) { + case BI_MACHTYPE: + case BI_CPUTYPE: + case BI_FPUTYPE: + case BI_MMUTYPE: + /* Already set up by head.S */ + break; + + case BI_MEMCHUNK: + if (m68k_num_memory < NUM_MEMINFO) { + m68k_memory[m68k_num_memory].addr = data[0]; + m68k_memory[m68k_num_memory].size = data[1]; + m68k_num_memory++; + } else + printk("m68k_parse_bootinfo: too many memory chunks\n"); + break; + + case BI_RAMDISK: + m68k_ramdisk.addr = data[0]; + m68k_ramdisk.size = data[1]; + break; + + case BI_COMMAND_LINE: + strncpy(m68k_command_line, (const char *)data, CL_SIZE); + m68k_command_line[CL_SIZE-1] = '\0'; + break; + + default: + if (MACH_IS_AMIGA) + unknown = amiga_parse_bootinfo(record); + else if (MACH_IS_ATARI) + unknown = atari_parse_bootinfo(record); + else + unknown = 1; + } + if (unknown) + printk("m68k_parse_bootinfo: unknown tag 0x%04x ignored\n", + record->tag); + record = (struct bi_record *)((u_long)record+record->size); + } +} -void setup_arch(char **cmdline_p, - unsigned long * memory_start_p, unsigned long * memory_end_p) +void setup_arch(char **cmdline_p, unsigned long * memory_start_p, + unsigned long * memory_end_p) { unsigned long memory_start, memory_end; extern int _etext, _edata, _end; int i; char *p, *q; + /* machtype is set up by head.S, thus we know our gender */ if (MACH_IS_AMIGA) register_console(ami_serial_print); - if (MACH_IS_ATARI) register_console(ata_serial_print); + /* The bootinfo is located right after the kernel bss */ + m68k_parse_bootinfo((const struct bi_record *)&_end); + if (CPU_IS_040) m68k_is040or060 = 4; else if (CPU_IS_060) m68k_is040or060 = 6; /* clear the fpu if we have one */ - if (boot_info.cputype & (FPU_68881|FPU_68882|FPU_68040|FPU_68060)) { + if (m68k_fputype & (FPU_68881|FPU_68882|FPU_68040|FPU_68060)) { volatile int zero = 0; asm __volatile__ ("frestore %0" : : "m" (zero)); } @@ -128,15 +190,15 @@ memory_start = availmem; memory_end = 0; - for (i = 0; i < boot_info.num_memory; i++) - memory_end += boot_info.memory[i].size & MASK_256K; + for (i = 0; i < m68k_num_memory; i++) + memory_end += m68k_memory[i].size & MASK_256K; init_task.mm->start_code = 0; init_task.mm->end_code = (unsigned long) &_etext; init_task.mm->end_data = (unsigned long) &_edata; init_task.mm->brk = (unsigned long) &_end; - *cmdline_p = boot_info.command_line; + *cmdline_p = m68k_command_line; memcpy(saved_command_line, *cmdline_p, CL_SIZE); /* Parse the command line for arch-specific options. @@ -166,7 +228,7 @@ *memory_start_p = memory_start; *memory_end_p = memory_end; - switch (boot_info.machtype) { + switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA: config_amiga(); @@ -187,21 +249,26 @@ config_sun3(); break; #endif +#ifdef CONFIG_APOLLO + case MACH_APOLLO: + config_apollo(); + break; +#endif default: panic ("No configuration setup"); } #ifdef CONFIG_BLK_DEV_INITRD - if (boot_info.ramdisk_size) { - initrd_start = PTOV (boot_info.ramdisk_addr); - initrd_end = initrd_start + boot_info.ramdisk_size * 1024; + if (m68k_ramdisk.size) { + initrd_start = PTOV (m68k_ramdisk.addr); + initrd_end = initrd_start + m68k_ramdisk.size; } #endif } int get_cpuinfo(char * buffer) { - char *cpu, *mmu, *fpu; + const char *cpu, *mmu, *fpu; u_long clockfreq, clockfactor; #define LOOP_CYCLES_68020 (8) @@ -211,33 +278,49 @@ if (CPU_IS_020) { cpu = "68020"; - mmu = "68851"; clockfactor = LOOP_CYCLES_68020; } else if (CPU_IS_030) { - cpu = mmu = "68030"; + cpu = "68030"; clockfactor = LOOP_CYCLES_68030; } else if (CPU_IS_040) { - cpu = mmu = "68040"; + cpu = "68040"; clockfactor = LOOP_CYCLES_68040; } else if (CPU_IS_060) { - cpu = mmu = "68060"; + cpu = "68060"; clockfactor = LOOP_CYCLES_68060; } else { - cpu = mmu = "680x0"; + cpu = "680x0"; clockfactor = 0; } - if (boot_info.cputype & FPU_68881) + if (m68k_fputype & FPU_68881) fpu = "68881"; - else if (boot_info.cputype & FPU_68882) + else if (m68k_fputype & FPU_68882) fpu = "68882"; - else if (boot_info.cputype & FPU_68040) + else if (m68k_fputype & FPU_68040) fpu = "68040"; - else if (boot_info.cputype & FPU_68060) + else if (m68k_fputype & FPU_68060) fpu = "68060"; + else if (m68k_fputype & FPU_SUNFPA) + fpu = "Sun FPA"; else fpu = "none"; + if (m68k_mmutype & MMU_68851) + mmu = "68851"; + else if (m68k_mmutype & MMU_68030) + mmu = "68030"; + else if (m68k_mmutype & MMU_68040) + mmu = "68040"; + else if (m68k_mmutype & MMU_68060) + mmu = "68060"; + else if (m68k_mmutype & MMU_SUN3) + mmu = "Sun-3"; + else if (m68k_mmutype & MMU_APOLLO) + mmu = "Apollo"; + else + mmu = "unknown"; + clockfreq = loops_per_sec*clockfactor; return(sprintf(buffer, "CPU:\t\t%s\n" @@ -260,48 +343,19 @@ u_long mem; int i; - switch (boot_info.machtype) { -#ifdef CONFIG_AMIGA - case MACH_AMIGA: - amiga_get_model(model); - break; -#endif -#ifdef CONFIG_ATARI - case MACH_ATARI: - atari_get_model(model); - break; -#endif -#ifdef CONFIG_MAC - case MACH_MAC: - mac_get_model(model); - break; -#endif - default: - strcpy(model, "Unknown m68k"); - } /* boot_info.machtype */ + if (mach_get_model) + mach_get_model(model); + else + strcpy(model, "Unknown m68k"); len += sprintf(buffer+len, "Model:\t\t%s\n", model); len += get_cpuinfo(buffer+len); - for (mem = 0, i = 0; i < boot_info.num_memory; i++) - mem += boot_info.memory[i].size; + for (mem = 0, i = 0; i < m68k_num_memory; i++) + mem += m68k_memory[i].size; len += sprintf(buffer+len, "System Memory:\t%ldK\n", mem>>10); - switch (boot_info.machtype) { -#ifdef CONFIG_AMIGA - case MACH_AMIGA: - len += amiga_get_hardware_list(buffer+len); - break; -#endif -#ifdef CONFIG_ATARI - case MACH_ATARI: - len += atari_get_hardware_list(buffer+len); - break; -#endif -#ifdef CONFIG_MAC - case MACH_MAC: - break; -#endif - } /* boot_info.machtype */ + if (mach_get_hardware_list) + len += mach_get_hardware_list(buffer+len); return(len); } diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/signal.c linux/arch/m68k/kernel/signal.c --- v2.1.16/linux/arch/m68k/kernel/signal.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/kernel/signal.c Fri Dec 20 11:19:58 1996 @@ -127,26 +127,26 @@ /* Verify the frame format. */ if (!CPU_IS_060 && (context.sc_fpstate[0] != fpu_version)) goto badframe; - if (boot_info.cputype & FPU_68881) + if (m68k_fputype & FPU_68881) { if (context.sc_fpstate[1] != 0x18 && context.sc_fpstate[1] != 0xb4) goto badframe; } - else if (boot_info.cputype & FPU_68882) + else if (m68k_fputype & FPU_68882) { if (context.sc_fpstate[1] != 0x38 && context.sc_fpstate[1] != 0xd4) goto badframe; } - else if (boot_info.cputype & FPU_68040) + else if (m68k_fputype & FPU_68040) { if (!(context.sc_fpstate[1] == 0x00 || context.sc_fpstate[1] == 0x28 || context.sc_fpstate[1] == 0x60)) goto badframe; } - else if (boot_info.cputype & FPU_68060) + else if (m68k_fputype & FPU_68060) { if (!(context.sc_fpstate[3] == 0x00 || context.sc_fpstate[3] == 0x60 || @@ -261,8 +261,8 @@ #define UFRAME_SIZE(fs) (sizeof(struct sigcontext)/4 + 6 + fs/4) -static void setup_frame (struct sigaction * sa, struct pt_regs *regs, - int signr, unsigned long oldmask) +static inline void setup_frame (struct sigaction * sa, struct pt_regs *regs, + int signr, unsigned long oldmask) { struct sigcontext context; unsigned long *frame, *tframe; @@ -361,8 +361,8 @@ /* * OK, we're invoking a handler */ -static void handle_signal(unsigned long signr, struct sigaction *sa, - unsigned long oldmask, struct pt_regs *regs) +static inline void handle_signal(unsigned long signr, struct sigaction *sa, + unsigned long oldmask, struct pt_regs *regs) { /* are we from a system call? */ if (regs->orig_d0 >= 0) { diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/sys_m68k.c linux/arch/m68k/kernel/sys_m68k.c --- v2.1.16/linux/arch/m68k/kernel/sys_m68k.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/kernel/sys_m68k.c Fri Dec 20 11:19:59 1996 @@ -192,15 +192,14 @@ in VALID whether the virtual address is actually mapped. */ #define virt_to_phys_040(vaddr, paddr, valid) \ { \ - register unsigned long _tmp1 __asm__ ("a0") = (vaddr); \ - register unsigned long _tmp2 __asm__ ("d0"); \ unsigned long _mmusr; \ \ - __asm__ __volatile__ (".word 0xf568 /* ptestr (%1) */\n\t" \ - ".long 0x4e7a0805 /* movec %%mmusr,%0 */" \ - : "=d" (_tmp2) \ - : "a" (_tmp1)); \ - _mmusr = _tmp2; \ + __asm__ __volatile__ (".chip 68040\n\t" \ + "ptestr (%1)\n\t" \ + "movec %%mmusr,%0\n\t" \ + ".chip 68k" \ + : "=r" (_mmusr) \ + : "a" (vaddr)); \ if (!(_mmusr & MMU_R_040)) \ (valid) = 0; \ else \ @@ -224,16 +223,22 @@ case FLUSH_CACHE_DATA: /* This nop is needed for some broken versions of the 68040. */ __asm__ __volatile__ ("nop\n\t" - ".word 0xf478 /* cpusha %%dc */"); + ".chip 68040\n\t" + "cpusha %dc\n\t" + ".chip 68k"); break; case FLUSH_CACHE_INSN: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4b8 /* cpusha %%ic */"); + ".chip 68040\n\t" + "cpusha %ic\n\t" + ".chip 68k"); break; default: case FLUSH_CACHE_BOTH: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4f8 /* cpusha %%bc */"); + ".chip 68040\n\t" + "cpusha %bc\n\t" + ".chip 68k"); break; } break; @@ -254,23 +259,28 @@ } while (len--) { - register unsigned long tmp __asm__ ("a0") = paddr; switch (cache) { case FLUSH_CACHE_DATA: __asm__ __volatile__ ("nop\n\t" - ".word 0xf468 /* cpushl %%dc,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushl %%dc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; case FLUSH_CACHE_INSN: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4a8 /* cpushl %%ic,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushl %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; default: case FLUSH_CACHE_BOTH: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4e8 /* cpushl %%bc,(%0) */" + ".chip 68040\n\t" + "cpushl %%bc,(%0)\n\t" + ".chip 68k" : : "a" (paddr)); break; } @@ -302,28 +312,32 @@ case FLUSH_SCOPE_PAGE: for (len >>= PAGE_SHIFT; len--; addr += PAGE_SIZE) { - register unsigned long tmp __asm__ ("a0"); virt_to_phys_040 (addr, paddr, valid); if (!valid) continue; - tmp = paddr; switch (cache) { case FLUSH_CACHE_DATA: __asm__ __volatile__ ("nop\n\t" - ".word 0xf470 /* cpushp %%dc,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushp %%dc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; case FLUSH_CACHE_INSN: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4b0 /* cpushp %%ic,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushp %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; default: case FLUSH_CACHE_BOTH: __asm__ __volatile__ ("nop\n\t" - ".word 0xf4f0 /* cpushp %%bc,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushp %%bc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; } } @@ -334,13 +348,12 @@ #define virt_to_phys_060(vaddr, paddr, valid) \ { \ - register unsigned long _tmp __asm__ ("a0") = (vaddr); \ - \ - __asm__ __volatile__ (".word 0xf5c8 /* plpar (%1) */" \ - : "=a" (_tmp) \ - : "0" (_tmp)); \ + __asm__ __volatile__ (".chip 68060\n\t" \ + "plpar (%0)\n\t" \ + ".chip 68k" \ + : "=a" (paddr) \ + : "0" (vaddr)); \ (valid) = 1; /* XXX */ \ - (paddr) = _tmp; \ } static inline int @@ -355,17 +368,23 @@ switch (cache) { case FLUSH_CACHE_DATA: - __asm__ __volatile__ (".word 0xf478 /* cpusha %%dc */\n\t" - ".word 0xf458 /* cinva %%dc */"); + __asm__ __volatile__ (".chip 68060\n\t" + "cpusha %dc\n\t" + "cinva %dc\n\t" + ".chip 68k"); break; case FLUSH_CACHE_INSN: - __asm__ __volatile__ (".word 0xf4b8 /* cpusha %%ic */\n\t" - ".word 0xf498 /* cinva %%ic */"); + __asm__ __volatile__ (".chip 68060\n\t" + "cpusha %ic\n\t" + "cinva %ic\n\t" + ".chip 68k"); break; default: case FLUSH_CACHE_BOTH: - __asm__ __volatile__ (".word 0xf4f8 /* cpusha %%bc */\n\t" - ".word 0xf4d8 /* cinva %%bc */"); + __asm__ __volatile__ (".chip 68060\n\t" + "cpusha %bc\n\t" + "cinva %bc\n\t" + ".chip 68k"); break; } break; @@ -386,23 +405,28 @@ } while (len--) { - register unsigned long tmp __asm__ ("a0") = paddr; switch (cache) { case FLUSH_CACHE_DATA: - __asm__ __volatile__ (".word 0xf468 /* cpushl %%dc,(%0) */\n\t" - ".word 0xf448 /* cinv %%dc,(%0) */" - : : "a" (tmp)); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushl %%dc,(%0)\n\t" + "cinvl %%dc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; case FLUSH_CACHE_INSN: - __asm__ __volatile__ (".word 0xf4a8 /* cpushl %%ic,(%0) */\n\t" - ".word 0xf488 /* cinv %%ic,(%0) */" - : : "a" (tmp)); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushl %%ic,(%0)\n\t" + "cinvl %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; default: case FLUSH_CACHE_BOTH: - __asm__ __volatile__ (".word 0xf4e8 /* cpushl %%bc,(%0) */\n\t" - ".word 0xf4c8 /* cinv %%bc,(%0) */" + __asm__ __volatile__ (".chip 68060\n\t" + "cpushl %%bc,(%0)\n\t" + "cinvl %%bc,(%0)\n\t" + ".chip 68k" : : "a" (paddr)); break; } @@ -434,28 +458,32 @@ case FLUSH_SCOPE_PAGE: for (len >>= PAGE_SHIFT; len--; addr += PAGE_SIZE) { - register unsigned long tmp __asm__ ("a0"); virt_to_phys_060 (addr, paddr, valid); if (!valid) continue; - tmp = paddr; switch (cache) { case FLUSH_CACHE_DATA: - __asm__ __volatile__ (".word 0xf470 /* cpushp %%dc,(%0) */\n\t" - ".word 0xf450 /* cinv %%dc,(%0) */" - : : "a" (tmp)); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushp %%dc,(%0)\n\t" + "cinvp %%dc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; case FLUSH_CACHE_INSN: - __asm__ __volatile__ (".word 0xf4b0 /* cpushp %%ic,(%0) */\n\t" - ".word 0xf490 /* cinv %%ic,(%0) */" - : : "a" (tmp)); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushp %%ic,(%0)\n\t" + "cinvp %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; default: case FLUSH_CACHE_BOTH: - __asm__ __volatile__ (".word 0xf4f0 /* cpushp %%bc,(%0) */\n\t" - ".word 0xf4d0 /* cinv %%bc,(%0) */" - : : "a" (tmp)); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushp %%bc,(%0)\n\t" + "cinvp %%bc,(%0)\n\t" + ".chip 68k" + : : "a" (paddr)); break; } } @@ -490,16 +518,35 @@ } if (CPU_IS_020_OR_030) { - /* Always flush the whole cache, everything else would not be - worth the hassle. */ - __asm__ __volatile__ - ("movec %%cacr, %%d0\n\t" - "or %0, %%d0\n\t" - "movec %%d0, %%cacr" - : /* no outputs */ - : "di" ((cache & FLUSH_CACHE_INSN ? 8 : 0) - | (cache & FLUSH_CACHE_DATA ? 0x800 : 0)) - : "d0"); + if (scope == FLUSH_SCOPE_LINE) + { + unsigned long cacr; + __asm__ ("movec %%cacr, %0" : "=r" (cacr)); + if (cache & FLUSH_CACHE_INSN) + cacr |= 4; + if (cache & FLUSH_CACHE_DATA) + cacr |= 0x400; + len >>= 4; + while (len--) + { + __asm__ __volatile__ ("movec %1, %%caar\n\t" + "movec %0, %%cacr" + : /* no outputs */ + : "r" (cacr), "r" (addr)); + addr += 16; + } + } + else + { + /* Flush the whole cache, even if page granularity is requested. */ + unsigned long cacr; + __asm__ ("movec %%cacr, %0" : "=r" (cacr)); + if (cache & FLUSH_CACHE_INSN) + cacr |= 8; + if (cache & FLUSH_CACHE_DATA) + cacr |= 0x800; + __asm__ __volatile__ ("movec %0, %%cacr" : : "r" (cacr)); + } return 0; } else if (CPU_IS_040) return cache_flush_040 (addr, scope, cache, len); diff -u --recursive --new-file v2.1.16/linux/arch/m68k/kernel/traps.c linux/arch/m68k/kernel/traps.c --- v2.1.16/linux/arch/m68k/kernel/traps.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/kernel/traps.c Fri Dec 20 11:19:59 1996 @@ -218,7 +218,7 @@ #endif /* CONFIG_M68060 */ #if defined (CONFIG_M68040) -static unsigned long probe040 (int iswrite, int fc, unsigned long addr) +static inline unsigned long probe040 (int iswrite, int fc, unsigned long addr) { unsigned long mmusr; unsigned long fs = get_fs(); @@ -227,28 +227,26 @@ if (iswrite) /* write */ - asm volatile ("movel %1,%/a0\n\t" - ".word 0xf548\n\t" /* ptestw (a0) */ - ".long 0x4e7a8805\n\t" /* movec mmusr,a0 */ - "movel %/a0,%0" - : "=g" (mmusr) - : "g" (addr) - : "a0"); + asm volatile (".chip 68040\n\t" + "ptestw (%1)\n\t" + "movec %%mmusr,%0\n\t" + ".chip 68k" + : "=r" (mmusr) + : "a" (addr)); else - asm volatile ("movel %1,%/a0\n\t" - ".word 0xf568\n\t" /* ptestr (a0) */ - ".long 0x4e7a8805\n\t" /* movec mmusr,a0 */ - "movel %/a0,%0" - : "=g" (mmusr) - : "g" (addr) - : "a0"); + asm volatile (".chip 68040\n\t" + "ptestr (%1)\n\t" + "movec %%mmusr,%0\n\t" + ".chip 68k" + : "=r" (mmusr) + : "a" (addr)); set_fs (fs); return mmusr; } -static void do_040writeback (unsigned short ssw, +static inline void do_040writeback (unsigned short ssw, unsigned short wbs, unsigned long wba, unsigned long wbd, @@ -313,11 +311,9 @@ /* MMU error, get the MMUSR info for this access */ mmusr = probe040 (!(ssw & RW_040), ssw & TM_040, addr); - /* #ifdef DEBUG printk("mmusr = %lx\n", mmusr); #endif -*/ errorcode = ((mmusr & MMU_R_040) ? 1 : 0) | ((ssw & RW_040) ? 0 : 2); do_page_fault (&fp->ptregs, addr, errorcode); @@ -605,7 +601,7 @@ printk ("level 0 mmusr is %#x\n", mmusr); #ifdef DEBUG - if (boot_info.cputype & CPU_68030) { + if (m68k_cputype & CPU_68030) { asm volatile ("pmove %/tt0,%0@" : /* no outputs */ : "a" (&tlong)); @@ -869,12 +865,16 @@ { unsigned char fstate[216]; - __asm__ __volatile__ ("fsave %0@" : : "a" (fstate) : "memory"); + __asm__ __volatile__ (".chip 68k/68881\n\t" + "fsave %0@\n\t" + ".chip 68k" : : "a" (fstate) : "memory"); /* Set the exception pending bit in the 68882 idle frame */ if (*(unsigned short *) fstate == 0x1f38) { fstate[fstate[1]] |= 1 << 3; - __asm__ __volatile__ ("frestore %0@" : : "a" (fstate)); + __asm__ __volatile__ (".chip 68k/68881\n\t" + "frestore %0@\n\t" + ".chip 68k" : : "a" (fstate)); } } /* fall through */ diff -u --recursive --new-file v2.1.16/linux/arch/m68k/mm/fault.c linux/arch/m68k/mm/fault.c --- v2.1.16/linux/arch/m68k/mm/fault.c Wed Dec 18 15:58:34 1996 +++ linux/arch/m68k/mm/fault.c Sat Dec 21 14:24:02 1996 @@ -96,7 +96,8 @@ * Until I found it, this one cures the problem and makes * 1.2 run on the 68040 (Martin Apel). */ - flush_tlb_page(vma, address); + if (CPU_IS_040_OR_060) + flush_tlb_page(vma, address); return 0; /* @@ -113,7 +114,7 @@ fault_pc = regs->pc; if ((fixup = search_exception_table(fault_pc)) != 0) { struct pt_regs *tregs; - printk("Exception at [<%lx>] (%lx)\n", fault_pc, fixup); + printk(KERN_DEBUG "Exception at [<%lx>] (%lx)\n", fault_pc, fixup); /* Create a new four word stack frame, discarding the old one. */ regs->stkadj = frame_extra_sizes[regs->format]; diff -u --recursive --new-file v2.1.16/linux/arch/m68k/mm/init.c linux/arch/m68k/mm/init.c --- v2.1.16/linux/arch/m68k/mm/init.c Fri Nov 22 18:28:17 1996 +++ linux/arch/m68k/mm/init.c Fri Dec 20 11:19:59 1996 @@ -102,8 +102,12 @@ { pte_t *ptablep; - ptablep = (pte_t *)*memavailp; - *memavailp += PAGE_SIZE; + if (memavailp) { + ptablep = (pte_t *)*memavailp; + *memavailp += PAGE_SIZE; + } + else + ptablep = (pte_t *)__get_free_page(GFP_KERNEL); nocache_page ((unsigned long)ptablep); @@ -318,10 +322,9 @@ * tables and thus modify availmem. */ - for (chunk = 0; chunk < boot_info.num_memory; chunk++) { - mem_avail = map_chunk (boot_info.memory[chunk].addr, - boot_info.memory[chunk].size, - &availmem); + for (chunk = 0; chunk < m68k_num_memory; chunk++) { + mem_avail = map_chunk (m68k_memory[chunk].addr, + m68k_memory[chunk].size, &availmem); } flush_tlb_all(); @@ -374,17 +377,17 @@ #endif if (CPU_IS_040_OR_060) - asm __volatile__ ("movel %0,%/d0\n\t" - ".long 0x4e7b0806" /* movec d0,urp */ + asm __volatile__ (".chip 68040\n\t" + "movec %0,%%urp\n\t" + ".chip 68k" : /* no outputs */ - : "g" (task[0]->tss.crp[1]) - : "d0"); + : "r" (task[0]->tss.crp[1])); else - asm __volatile__ ("movel %0,%/a0\n\t" - ".long 0xf0104c00" /* pmove %/a0@,%/crp */ + asm __volatile__ (".chip 68030\n\t" + "pmove %0,%%crp\n\t" + ".chip 68k" : /* no outputs */ - : "g" (task[0]->tss.crp) - : "a0"); + : "m" (task[0]->tss.crp[0])); #ifdef DEBUG printk ("set crp\n"); #endif @@ -410,7 +413,7 @@ end_mem &= PAGE_MASK; high_memory = (void *) end_mem; - max_mapnr = MAP_NR(end_mem); + max_mapnr = num_physpages = MAP_NR(end_mem); start_mem = PAGE_ALIGN(start_mem); while (start_mem < end_mem) { diff -u --recursive --new-file v2.1.16/linux/arch/m68k/mm/memory.c linux/arch/m68k/mm/memory.c --- v2.1.16/linux/arch/m68k/mm/memory.c Wed Sep 25 10:47:40 1996 +++ linux/arch/m68k/mm/memory.c Fri Dec 20 11:19:59 1996 @@ -250,31 +250,84 @@ } } +static unsigned long transp_transl_matches( unsigned long regval, + unsigned long vaddr ) +{ + unsigned long base, mask; + + /* enabled? */ + if (!(regval & 0x8000)) + return( 0 ); + + if (CPU_IS_030) { + /* function code match? */ + base = (regval >> 4) & 7; + mask = ~(regval & 7); + if ((SUPER_DATA & mask) != (base & mask)) + return( 0 ); + } + else { + /* must not be user-only */ + if ((regval & 0x6000) == 0) + return( 0 ); + } + + /* address match? */ + base = regval & 0xff000000; + mask = ~((regval << 8) & 0xff000000); + return( (vaddr & mask) == (base & mask) ); +} + /* * The following two routines map from a physical address to a kernel * virtual address and vice versa. */ unsigned long mm_vtop (unsigned long vaddr) { - int i; + int i=0; unsigned long voff = vaddr; unsigned long offset = 0; - for (i = 0; i < boot_info.num_memory; i++) - { - if (voff < offset + boot_info.memory[i].size) { + do{ + if (voff < offset + m68k_memory[i].size) { #ifdef DEBUGPV printk ("VTOP(%lx)=%lx\n", vaddr, - boot_info.memory[i].addr + voff - offset); + m68k_memory[i].addr + voff - offset); #endif - return boot_info.memory[i].addr + voff - offset; + return m68k_memory[i].addr + voff - offset; } else - offset += boot_info.memory[i].size; + offset += m68k_memory[i].size; + i++; + }while (i < m68k_num_memory); + + /* not in one of the memory chunks; test for applying transparent + * translation */ + + if (CPU_IS_030) { + unsigned long ttreg; + + asm volatile( "pmove %/tt0,%0@" : : "a" (&ttreg) ); + if (transp_transl_matches( ttreg, vaddr )) + return vaddr; + asm volatile( "pmove %/tt1,%0@" : : "a" (&ttreg) ); + if (transp_transl_matches( ttreg, vaddr )) + return vaddr; + } + else { + register unsigned long ttreg __asm__( "d0" ); + + asm volatile( ".long 0x4e7a0006" /* movec %dtt0,%d0 */ + : "=d" (ttreg) ); + if (transp_transl_matches( ttreg, vaddr )) + return vaddr; + asm volatile( ".long 0x4e7a0007" /* movec %dtt1,%d0 */ + : "=d" (ttreg) ); + if (transp_transl_matches( ttreg, vaddr )) + return vaddr; } - /* not in one of the memory chunks; get the actual - * physical address from the MMU. - */ + /* no match, too, so get the actual physical address from the MMU. */ + if (CPU_IS_060) { unsigned long fs = get_fs(); unsigned long paddr; @@ -284,12 +337,11 @@ /* The PLPAR instruction causes an access error if the translation * is not possible. We don't catch that here, so a bad kernel trap * will be reported in this case. */ - asm volatile ("movel %1,%/a0\n\t" - ".word 0xf5c8\n\t" /* plpar (a0) */ - "movel %/a0,%0" - : "=g" (paddr) - : "g" (vaddr) - : "a0" ); + asm volatile (".chip 68060\n\t" + "plpar (%0)\n\t" + ".chip 68k" + : "=a" (paddr) + : "0" (vaddr)); set_fs (fs); return paddr; @@ -300,13 +352,12 @@ set_fs (SUPER_DATA); - asm volatile ("movel %1,%/a0\n\t" - ".word 0xf568\n\t" /* ptestr (a0) */ - ".long 0x4e7a8805\n\t" /* movec mmusr, a0 */ - "movel %/a0,%0" - : "=g" (mmusr) - : "g" (vaddr) - : "a0", "d0"); + asm volatile (".chip 68040\n\t" + "ptestr (%1)\n\t" + "movec %%mmusr, %0\n\t" + ".chip 68k" + : "=r" (mmusr) + : "a" (vaddr)); set_fs (fs); if (mmusr & MMU_R_040) @@ -347,22 +398,22 @@ unsigned long mm_ptov (unsigned long paddr) { - int i; + int i = 0; unsigned long offset = 0; - for (i = 0; i < boot_info.num_memory; i++) - { - if (paddr >= boot_info.memory[i].addr && - paddr < (boot_info.memory[i].addr - + boot_info.memory[i].size)) { + do{ + if (paddr >= m68k_memory[i].addr && + paddr < (m68k_memory[i].addr + + m68k_memory[i].size)) { #ifdef DEBUGPV printk ("PTOV(%lx)=%lx\n", paddr, - (paddr - boot_info.memory[i].addr) + offset); + (paddr - m68k_memory[i].addr) + offset); #endif - return (paddr - boot_info.memory[i].addr) + offset; + return (paddr - m68k_memory[i].addr) + offset; } else - offset += boot_info.memory[i].size; - } + offset += m68k_memory[i].size; + i++; + }while (i < m68k_num_memory); /* * assume that the kernel virtual address is the same as the @@ -389,62 +440,67 @@ } /* invalidate page in both caches */ -#define clear040(paddr) __asm__ __volatile__ ("movel %0,%/a0\n\t"\ - "nop\n\t"\ - ".word 0xf4d0"\ - /* CINVP I/D (a0) */\ - : : "g" ((paddr))\ - : "a0") +#define clear040(paddr) \ + __asm__ __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "cinvp %%bc,(%0)\n\t" \ + ".chip 68k" \ + : : "a" (paddr)) /* invalidate page in i-cache */ -#define cleari040(paddr) __asm__ __volatile__ ("movel %0,%/a0\n\t"\ - /* CINVP I (a0) */\ - "nop\n\t"\ - ".word 0xf490"\ - : : "g" ((paddr))\ - : "a0") +#define cleari040(paddr) \ + __asm__ __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "cinvp %%ic,(%0)\n\t" \ + ".chip 68k" \ + : : "a" (paddr)) /* push page in both caches */ -#define push040(paddr) __asm__ __volatile__ ("movel %0,%/a0\n\t"\ - "nop\n\t"\ - ".word 0xf4f0"\ - /* CPUSHP I/D (a0) */\ - : : "g" ((paddr))\ - : "a0") +#define push040(paddr) \ + __asm__ __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "cpushp %%bc,(%0)\n\t" \ + ".chip 68k" \ + : : "a" (paddr)) /* push and invalidate page in both caches */ -#define pushcl040(paddr) do { push040((paddr));\ - if (CPU_IS_060) clear040((paddr));\ - } while(0) +#define pushcl040(paddr) \ + do { push040(paddr); \ + if (CPU_IS_060) clear040(paddr); \ + } while(0) /* push page in both caches, invalidate in i-cache */ -#define pushcli040(paddr) do { push040((paddr));\ - if (CPU_IS_060) cleari040((paddr));\ - } while(0) +#define pushcli040(paddr) \ + do { push040(paddr); \ + if (CPU_IS_060) cleari040(paddr); \ + } while(0) /* push page defined by virtual address in both caches */ -#define pushv040(vaddr) __asm__ __volatile__ ("movel %0,%/a0\n\t"\ - /* ptestr (a0) */\ - "nop\n\t"\ - ".word 0xf568\n\t"\ - /* movec mmusr,d0 */\ - ".long 0x4e7a0805\n\t"\ - "andw #0xf000,%/d0\n\t"\ - "movel %/d0,%/a0\n\t"\ - /* CPUSHP I/D (a0) */\ - "nop\n\t"\ - ".word 0xf4f0"\ - : : "g" ((vaddr))\ - : "a0", "d0") +#define pushv040(vaddr) \ + do { unsigned long _tmp1, _tmp2; \ + __asm__ __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "ptestr (%2)\n\t" \ + "movec %%mmusr,%0\n\t" \ + "andw #0xf000,%0\n\t" \ + "movel %0,%1\n\t" \ + "nop\n\t" \ + "cpushp %%bc,(%1)\n\t" \ + ".chip 68k" \ + : "=d" (_tmp1), "=a" (_tmp2) \ + : "a" (vaddr)); \ + } while (0) /* push page defined by virtual address in both caches */ -#define pushv060(vaddr) __asm__ __volatile__ ("movel %0,%/a0\n\t"\ - /* plpar (a0) */\ - ".word 0xf5c8\n\t"\ - /* CPUSHP I/D (a0) */\ - ".word 0xf4f0"\ - : : "g" ((vaddr))\ - : "a0") +#define pushv060(vaddr) \ + do { unsigned long _tmp; \ + __asm__ __volatile__ (".chip 68060\n\t" \ + "plpar (%0)\n\t" \ + "cpushp %%bc,(%0)\n\t" \ + ".chip 68k" \ + : "=a" (_tmp) \ + : "0" (vaddr)); \ + } while (0) /* @@ -633,9 +689,8 @@ { int i; - for (i = 0; i < boot_info.num_memory; i++) - if (boot_info.memory[i].addr + boot_info.memory[i].size - == addr + len) + for (i = 0; i < m68k_num_memory; i++) + if (m68k_memory[i].addr + m68k_memory[i].size == addr + len) return 1; return 0; } diff -u --recursive --new-file v2.1.16/linux/arch/mips/kernel/process.c linux/arch/mips/kernel/process.c --- v2.1.16/linux/arch/mips/kernel/process.c Wed Dec 13 12:39:43 1995 +++ linux/arch/mips/kernel/process.c Thu Dec 19 16:48:08 1996 @@ -115,7 +115,7 @@ */ } -void copy_thread(int nr, unsigned long clone_flags, unsigned long usp, +int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, struct task_struct * p, struct pt_regs * regs) { struct pt_regs * childregs; @@ -145,6 +145,8 @@ p->tss.cp0_status = read_32bit_cp0_register(CP0_STATUS) & ~(ST0_CU3|ST0_CU2|ST0_CU1|ST0_KSU|ST0_ERL|ST0_EXL); childregs->cp0_status &= ~(ST0_CU3|ST0_CU2|ST0_CU1); + + return 0; } /* diff -u --recursive --new-file v2.1.16/linux/arch/ppc/kernel/process.c linux/arch/ppc/kernel/process.c --- v2.1.16/linux/arch/ppc/kernel/process.c Wed Dec 18 15:58:42 1996 +++ linux/arch/ppc/kernel/process.c Thu Dec 19 16:48:08 1996 @@ -168,7 +168,7 @@ /* * Copy a thread.. */ -void copy_thread(int nr, unsigned long clone_flags, unsigned long usp, +int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, struct task_struct * p, struct pt_regs * regs) { int i; @@ -218,6 +218,8 @@ childregs->gpr[1] = usp; } p->tss.fp_used = 0; + + return 0; } /* diff -u --recursive --new-file v2.1.16/linux/arch/sparc/Makefile linux/arch/sparc/Makefile --- v2.1.16/linux/arch/sparc/Makefile Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/Makefile Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.21 1996/11/13 05:09:12 davem Exp $ +# $Id: Makefile,v 1.22 1996/12/18 06:17:39 tridge Exp $ # sparc/Makefile # # Makefile for the architecture dependent flags and dependencies on the @@ -34,9 +34,10 @@ FINITOBJ = $(TOPDIR)/arch/sparc/kernel/finitobj.o ifdef CONFIG_AP1000 -SUBDIRS := $(SUBDIRS) arch/sparc/ap1000 -ARCHIVES := $(TOPDIR)/arch/sparc/ap1000/ap1000lib.o $(ARCHIVES) +SUBDIRS := $(SUBDIRS) arch/sparc/ap1000 mpp +ARCHIVES := $(TOPDIR)/arch/sparc/ap1000/ap1000lib.o $(TOPDIR)/mpp/mpplib.o $(ARCHIVES) DRIVERS := $(DRIVERS) drivers/ap1000/ap1000.a +CFLAGS := $(CFLAGS) -D__MPP__=1 endif archclean: diff -u --recursive --new-file v2.1.16/linux/arch/sparc/config.in linux/arch/sparc/config.in --- v2.1.16/linux/arch/sparc/config.in Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/config.in Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -# $Id: config.in,v 1.29 1996/12/08 08:13:34 davem Exp $ +# $Id: config.in,v 1.31 1996/12/18 06:18:35 tridge Exp $ # For a description of the syntax of this configuration file, # see the Configure script. # @@ -28,7 +28,7 @@ define_bool CONFIG_APFDDI y define_bool CONFIG_APBLOCK y define_bool CONFIG_APBIF y - define_bool CONFIG_DDV y + tristate 'OPIU DDV Driver' CONFIG_DDV else # Global things across all Sun machines. define_bool CONFIG_SBUS y @@ -129,6 +129,7 @@ bool 'Sun LANCE support' CONFIG_SUNLANCE tristate 'Sun Happy Meal 10/100baseT support' CONFIG_HAPPYMEAL tristate 'Sun QuadEthernet support' CONFIG_SUNQE + tristate 'MyriCOM Gigabit Ethernet support' CONFIG_MYRI_SBUS # bool 'FDDI driver support' CONFIG_FDDI # if [ "$CONFIG_FDDI" = "y" ]; then # fi diff -u --recursive --new-file v2.1.16/linux/arch/sparc/defconfig linux/arch/sparc/defconfig --- v2.1.16/linux/arch/sparc/defconfig Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/defconfig Thu Dec 19 11:03:32 1996 @@ -100,7 +100,7 @@ # # CONFIG_INET_PCTCP is not set CONFIG_INET_RARP=m -# CONFIG_NO_PATH_MTU_DISCOVERY is not set +# CONFIG_PATH_MTU_DISCOVERY is not set CONFIG_IP_NOSR=y CONFIG_SKB_LARGE=y CONFIG_IPV6=m @@ -110,9 +110,12 @@ # CONFIG_IPX=m # CONFIG_IPX_INTERN is not set +# CONFIG_IPX_PPROP_ROUTING is not set CONFIG_ATALK=m # CONFIG_AX25 is not set +CONFIG_X25=m # CONFIG_BRIDGE is not set +# CONFIG_LLC is not set # # SCSI support @@ -157,6 +160,7 @@ CONFIG_SUNLANCE=y CONFIG_HAPPYMEAL=m CONFIG_SUNQE=m +CONFIG_MYRI_SBUS=m # # Filesystems diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/devices.c linux/arch/sparc/kernel/devices.c --- v2.1.16/linux/arch/sparc/kernel/devices.c Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/devices.c Thu Dec 19 11:03:32 1996 @@ -29,12 +29,6 @@ int cpu_nds[NCPUS]; /* One node for each cpu */ int cpu_ctr = 0; -#if CONFIG_AP1000 - printk("Not scanning device list for CPUs\n"); - linux_num_cpus = 1; - return mem_start; -#endif - prom_getstring(prom_root_node, "device_type", node_str, sizeof(node_str)); if(strcmp(node_str, "cpu") == 0) { diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/entry.S linux/arch/sparc/kernel/entry.S --- v2.1.16/linux/arch/sparc/kernel/entry.S Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/entry.S Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: entry.S,v 1.126 1996/12/10 06:06:12 davem Exp $ +/* $Id: entry.S,v 1.128 1996/12/18 06:33:39 tridge Exp $ * arch/sparc/kernel/entry.S: Sparc trap low-level entry points. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -29,7 +29,7 @@ #define curptr g6 -#define NR_SYSCALLS 255 /* Each OS is different... */ +#define NR_SYSCALLS 256 /* Each OS is different... */ /* First, KGDB low level things. This is a rewrite * of the routines found in the sparc-stub.c asm() statement @@ -1326,21 +1326,47 @@ call C_LABEL(do_fork) mov %l5, %o7 + .align 4 +linux_sparc_ni_syscall: + sethi %hi(C_LABEL(sys_ni_syscall)), %l7 + b syscall_is_too_hard + or %l7, %lo(C_LABEL(sys_ni_syscall)), %l7 + +linux_fast_syscall: + andn %l7, 3, %l7 + mov %i0, %o0 + mov %i1, %o1 + mov %i2, %o2 + jmpl %l7 + %g0, %g0 + mov %i3, %o3 + +linux_syscall_trace: + call C_LABEL(syscall_trace) + nop + mov %i0, %o0 + mov %i1, %o1 + mov %i2, %o2 + mov %i3, %o3 + b 2f + mov %i4, %o4 + + .globl C_LABEL(ret_from_syscall) +C_LABEL(ret_from_syscall): + b C_LABEL(ret_sys_call) + ld [%sp + REGWIN_SZ + PT_I0], %o0 + /* Linux native and SunOS system calls enter here... */ .align 4 .globl linux_sparc_syscall linux_sparc_syscall: /* Direct access to user regs, must faster. */ cmp %g1, NR_SYSCALLS - blu,a 1f + bgeu linux_sparc_ni_syscall sll %g1, 2, %l4 - - sethi %hi(C_LABEL(sys_ni_syscall)), %l7 - b syscall_is_too_hard - or %l7, %lo(C_LABEL(sys_ni_syscall)), %l7 - -1: ld [%l7 + %l4], %l7 + andcc %l7, 1, %g0 + bne linux_fast_syscall + /* Just do first insn from SAVE_ALL in the delay slot */ .globl syscall_is_too_hard syscall_is_too_hard: @@ -1349,23 +1375,17 @@ ENTER_SYSCALL wr %l0, PSR_ET, %psr - WRITE_PAUSE - - ld [%curptr + 0x14], %l5 - andcc %l5, 0x20, %g0 - be,a 2f - mov %i0, %o0 - - call C_LABEL(syscall_trace) - nop - mov %i0, %o0 -2: mov %i1, %o1 mov %i2, %o2 - mov %i0, %l5 + + ld [%curptr + 0x14], %l5 mov %i3, %o3 + andcc %l5, 0x20, %g0 mov %i4, %o4 + bne linux_syscall_trace + mov %i0, %l5 +2: call %l7 mov %i5, %o5 @@ -1373,18 +1393,23 @@ .globl C_LABEL(ret_sys_call) C_LABEL(ret_sys_call): - ld [%sp + REGWIN_SZ + PT_I0], %o0 - set PSR_C, %g2 + ld [%curptr + 0x14], %l6 cmp %o0, -ENOIOCTLCMD + ld [%sp + REGWIN_SZ + PT_PSR], %g3 + set PSR_C, %g2 bgeu 1f - ld [%sp + REGWIN_SZ + PT_PSR], %g3 + andcc %l6, 0x20, %l6 /* System call success, clear Carry condition code. */ andn %g3, %g2, %g3 clr %l6 - b 2f - st %g3, [%sp + REGWIN_SZ + PT_PSR] - + st %g3, [%sp + REGWIN_SZ + PT_PSR] + bne linux_syscall_trace2 + ld [%sp + REGWIN_SZ + PT_NPC], %l1 /* pc = npc */ + add %l1, 0x4, %l2 /* npc = npc+4 */ + st %l1, [%sp + REGWIN_SZ + PT_PC] + b ret_trap_entry + st %l2, [%sp + REGWIN_SZ + PT_NPC] 1: /* System call failure, set Carry condition code. * Also, get abs(errno) to return to the process. @@ -1394,24 +1419,21 @@ st %o0, [%sp + REGWIN_SZ + PT_I0] mov 1, %l6 st %g3, [%sp + REGWIN_SZ + PT_PSR] - -2: - ld [%curptr + 0x14], %g2 - andcc %g2, 0x20, %g0 - be,a 3f + bne linux_syscall_trace2 ld [%sp + REGWIN_SZ + PT_NPC], %l1 /* pc = npc */ + add %l1, 0x4, %l2 /* npc = npc+4 */ + st %l1, [%sp + REGWIN_SZ + PT_PC] + b ret_trap_entry + st %l2, [%sp + REGWIN_SZ + PT_NPC] +linux_syscall_trace2: call C_LABEL(syscall_trace) - nop - - /* Advance the pc and npc over the trap instruction. */ - ld [%sp + REGWIN_SZ + PT_NPC], %l1 /* pc = npc */ -3: - add %l1, 0x4, %l2 /* npc = npc+4 */ + add %l1, 0x4, %l2 /* npc = npc+4 */ st %l1, [%sp + REGWIN_SZ + PT_PC] b ret_trap_entry st %l2, [%sp + REGWIN_SZ + PT_NPC] + /* * Solaris system calls and indirect system calls enter here. * @@ -1443,16 +1465,9 @@ ENTER_SYSCALL wr %l0, PSR_ET, %psr - WRITE_PAUSE - -2: - mov %i0, %o0 - mov %i1, %o1 - mov %i2, %o2 + nop + nop mov %i0, %l5 - mov %i3, %o3 - mov %i4, %o4 - mov %i5, %o5 call C_LABEL(do_solaris_syscall) add %sp, REGWIN_SZ, %o0 diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/irq.c linux/arch/sparc/kernel/irq.c --- v2.1.16/linux/arch/sparc/kernel/irq.c Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/irq.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: irq.c,v 1.57 1996/11/30 02:13:53 davem Exp $ +/* $Id: irq.c,v 1.58 1996/12/18 06:33:41 tridge Exp $ * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the * Sparc the IRQ's are basically 'cast in stone' * and you are supposed to probe the prom's device @@ -395,11 +395,6 @@ { extern void sun4c_init_IRQ( void ); extern void sun4m_init_IRQ( void ); -#if CONFIG_AP1000 - extern void ap_init_IRQ(void); - ap_init_IRQ(); - return; -#endif switch(sparc_cpu_model) { case sun4c: @@ -409,6 +404,12 @@ case sun4m: sun4m_init_IRQ(); break; + + case ap1000: +#if CONFIG_AP1000 + ap_init_IRQ();; + break; +#endif default: prom_printf("Cannot initialize IRQ's on this Sun machine..."); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/ksyms.c linux/arch/sparc/kernel/ksyms.c --- v2.1.16/linux/arch/sparc/kernel/ksyms.c Mon Mar 4 08:49:55 1996 +++ linux/arch/sparc/kernel/ksyms.c Thu Jan 1 02:00:00 1970 @@ -1,34 +0,0 @@ -/* $Id: ksyms.c,v 1.1 1996/02/25 06:30:18 davem Exp $ - * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. - * - * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) - */ - -#include -#include -#include - -/* We really haven't played around with modules at all in our - * port, but this is here as a starting point for when we do. - * One thing to note is that the way the symbols of the mul/div - * support routines are named is a mess, they all start with - * a '.' which makes it a bitch to export, we'll see. - */ - -extern void bcopy (const char *src, char *dst, int len); -extern void * memmove(void *,const void *,size_t); -extern void * memcpy(void *,const void *,size_t); - -static struct symbol_table arch_symbol_table = { -#include - /* platform dependent support */ - X(bcopy), - X(memmove), - X(memcpy), -#include -}; - -void arch_syms_export(void) -{ - register_symtab(&arch_symbol_table); -} diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/process.c linux/arch/sparc/kernel/process.c --- v2.1.16/linux/arch/sparc/kernel/process.c Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/process.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.83 1996/12/10 07:38:39 davem Exp $ +/* $Id: process.c,v 1.85 1996/12/18 06:33:42 tridge Exp $ * linux/arch/sparc/kernel/process.c * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -215,6 +215,9 @@ void show_regs(struct pt_regs * regs) { +#if __MPP__ + printk("CID: %d\n",mpp_cid()); +#endif printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx\n", regs->psr, regs->pc, regs->npc, regs->y); printk("g0: %08lx g1: %08lx g2: %08lx g3: %08lx\n", @@ -305,7 +308,7 @@ current->tss.sstk_info.cur_status = 0; current->tss.sstk_info.the_stack = 0; - /* No new signal delivey by default */ + /* No new signal delivery by default */ current->tss.new_signal = 0; #ifndef __SMP__ if(last_task_used_math == current) { @@ -406,7 +409,7 @@ * allocate the task_struct and kernel stack in * do_fork(). */ -extern void ret_sys_call(void); +extern void ret_from_syscall(void); int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, struct task_struct *p, struct pt_regs *regs) @@ -439,7 +442,7 @@ copy_regwin(new_stack, (((struct reg_window *) regs) - 1)); p->tss.ksp = p->saved_kernel_stack = (unsigned long) new_stack; - p->tss.kpc = (((unsigned long) ret_sys_call) - 0x8); + p->tss.kpc = (((unsigned long) ret_from_syscall) - 0x8); p->tss.kpsr = current->tss.fork_kpsr; p->tss.kwim = current->tss.fork_kwim; p->tss.kregs = childregs; diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/ptrace.c linux/arch/sparc/kernel/ptrace.c --- v2.1.16/linux/arch/sparc/kernel/ptrace.c Tue Nov 12 15:56:03 1996 +++ linux/arch/sparc/kernel/ptrace.c Thu Dec 19 11:03:32 1996 @@ -537,7 +537,7 @@ return; } - if(request == PTRACE_SUNATTACH) { + if(request == PTRACE_SUNATTACH || request == PTRACE_ATTACH) { if(child == current) { /* Try this under SunOS/Solaris, bwa haha * You'll never be able to kill the process. ;-) @@ -568,7 +568,8 @@ pt_succ_return(regs, 0); return; } - if(!(child->flags & PF_PTRACED)) { + if(!(child->flags & PF_PTRACED) && (request!=PTRACE_SUNATTACH) && + (request!=PTRACE_ATTACH)) { pt_error_return(regs, ESRCH); return; } diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/setup.c linux/arch/sparc/kernel/setup.c --- v2.1.16/linux/arch/sparc/kernel/setup.c Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/setup.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: setup.c,v 1.76 1996/11/13 05:09:32 davem Exp $ +/* $Id: setup.c,v 1.78 1996/12/19 08:06:30 davem Exp $ * linux/arch/sparc/kernel/setup.c * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -111,8 +111,10 @@ #define BOOTME_SINGLE 0x2 #define BOOTME_KGDB 0x4 +#ifdef CONFIG_SUN_CONSOLE extern char *console_fb_path; static int console_fb = 0; +#endif void kernel_enter_debugger(void) { @@ -200,6 +202,7 @@ } commands += 9; } else { +#if CONFIG_SUN_CONSOLE if (!strncmp(commands, "console=", 8)) { commands += 8; if (!strncmp (commands, "ttya", 4)) { @@ -213,6 +216,7 @@ console_fb_path = commands; } } +#endif while (*commands && *commands != ' ') commands++; } @@ -244,6 +248,8 @@ extern int root_mountflags; +extern void register_console(void (*proc)(char *)); + char saved_command_line[256]; char reboot_command[256]; enum sparc_cpu sparc_cpu_model; @@ -257,11 +263,6 @@ { int total, i, packed; -#if CONFIG_AP1000 - register_console(prom_printf); - ((char *)(&cputypval))[4] = 'm'; /* ugly :-( */ -#endif - sparc_ttable = (struct tt_entry *) &start; /* Initialize PROM console and command line. */ @@ -276,6 +277,10 @@ if(!strcmp(&cputypval,"sun4d")) { sparc_cpu_model=sun4d; } if(!strcmp(&cputypval,"sun4e")) { sparc_cpu_model=sun4e; } if(!strcmp(&cputypval,"sun4u")) { sparc_cpu_model=sun4u; } +#if CONFIG_AP1000 + sparc_cpu_model=ap1000; + strcpy(&cputypval, "ap+"); +#endif printk("ARCH: "); packed = 0; switch(sparc_cpu_model) { @@ -304,6 +309,11 @@ case sun4u: printk("SUN4U\n"); break; + case ap1000: + register_console(prom_printf); + printk("AP1000\n"); + packed = 1; + break; default: printk("UNKNOWN!\n"); break; @@ -348,7 +358,8 @@ *memory_end_p = 0xfd000000; } else { if((sparc_cpu_model == sun4m) || - (sparc_cpu_model == sun4d)) + (sparc_cpu_model == sun4d) || + (sparc_cpu_model == ap1000)) *memory_end_p = srmmu_endmem_fixup(*memory_end_p); } not_relevant: @@ -385,7 +396,9 @@ init_task.mm->mmap->vm_end = *memory_end_p; init_task.tss.kregs = &fake_swapper_regs; +#ifdef CONFIG_SUN_SERIAL *memory_start_p = sun_serial_setup(*memory_start_p); /* set this up ASAP */ +#endif { extern int serial_console; /* in console.c, of course */ #if !CONFIG_SUN_SERIAL @@ -456,11 +469,7 @@ , sparc_cpu_type[cpuid], sparc_fpu_type[cpuid], -#if CONFIG_AP1000 - 0, 0, 0, 0 -#else romvec->pv_romvers, prom_rev, romvec->pv_printrev >> 16, (short)romvec->pv_printrev, -#endif &cputypval, linux_num_cpus, smp_num_cpus, #ifndef __SMP__ diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/smp.c linux/arch/sparc/kernel/smp.c --- v2.1.16/linux/arch/sparc/kernel/smp.c Wed Dec 18 15:58:43 1996 +++ linux/arch/sparc/kernel/smp.c Thu Dec 19 11:03:32 1996 @@ -89,6 +89,11 @@ static char smp_buf[512]; +/* Not supported on Sparc yet. */ +void smp_setup(char *str, int *ints) +{ +} + char *smp_info(void) { sprintf(smp_buf, diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/sparc_ksyms.c linux/arch/sparc/kernel/sparc_ksyms.c --- v2.1.16/linux/arch/sparc/kernel/sparc_ksyms.c Wed Dec 18 15:58:45 1996 +++ linux/arch/sparc/kernel/sparc_ksyms.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: sparc_ksyms.c,v 1.30 1996/12/03 08:44:44 jj Exp $ +/* $Id: sparc_ksyms.c,v 1.32 1996/12/18 06:33:45 tridge Exp $ * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. * * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) @@ -107,8 +107,9 @@ X(sparc_dvma_malloc), X(sun4c_unmapioaddr), X(srmmu_unmapioaddr), +#if CONFIG_SBUS X(SBus_chain), - +#endif /* Solaris/SunOS binary compatibility */ X(svr4_setcontext), X(svr4_getcontext), @@ -137,6 +138,7 @@ X(prom_feval), X(prom_getstring), X(prom_apply_sbus_ranges), + X(prom_getint), X(prom_getintdefault), X(romvec), @@ -198,7 +200,4 @@ void arch_syms_export(void) { register_symtab(&arch_symbol_table); -#if CONFIG_AP1000 - ap_register_ksyms(); -#endif } diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/sparc_namei.c linux/arch/sparc/kernel/sparc_namei.c --- v2.1.16/linux/arch/sparc/kernel/sparc_namei.c Wed Dec 18 15:58:45 1996 +++ linux/arch/sparc/kernel/sparc_namei.c Thu Jan 1 02:00:00 1970 @@ -1,61 +0,0 @@ -/* $Id: sparc_namei.c,v 1.2 1996/12/12 09:39:25 jj Exp $ - * linux/arch/sparc/kernel/sparc_namei.c - * - * Routines to handle famous /usr/gnemul/s*. - * Included from linux/fs/namei.c - */ - - -#define BSD_EMUL "usr/gnemul/sunos/" -#define SOL_EMUL "usr/gnemul/solaris/" - -static int dir_namei(const char *pathname, int *namelen, const char **name, - struct inode * base, struct inode **res_inode); -static int _namei(const char * pathname, struct inode * base, - int follow_links, struct inode ** res_inode); -int open_namei(const char * pathname, int flag, int mode, - struct inode ** res_inode, struct inode * base); - -static int sparc_namei(const char ** pathname, struct inode ** base, - int follow_links, struct inode ** res_inode) -{ - struct inode *emul_ino; - int namelen; - const char *name; - int error; - - while (**pathname == '/') - (*pathname)++; - current->fs->root->i_count++; - if (dir_namei (current->personality & PER_BSD ? BSD_EMUL : SOL_EMUL, - &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { - *res_inode = NULL; - if ((error = _namei (*pathname, emul_ino, follow_links, res_inode)) >= 0 && *res_inode) { - return 0; - } - } - *base = current->fs->root; - (*base)->i_count++; - return -ENOTDIR; -} - -static int sparc_open_namei(const char ** pathname, int flag, int mode, - struct inode ** res_inode, struct inode ** base) -{ - struct inode *emul_ino; - int namelen; - const char *name; - - while (**pathname == '/') - (*pathname)++; - current->fs->root->i_count++; - if (dir_namei (current->personality & PER_BSD ? BSD_EMUL : SOL_EMUL, - &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { - *res_inode = NULL; - if (open_namei (*pathname, flag /* & ~O_CREAT */, mode, res_inode, emul_ino) >= 0 && *res_inode) - return 0; - } - *base = current->fs->root; - (*base)->i_count++; - return -ENOTDIR; -} diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/sys_sparc.c linux/arch/sparc/kernel/sys_sparc.c --- v2.1.16/linux/arch/sparc/kernel/sys_sparc.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/kernel/sys_sparc.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: sys_sparc.c,v 1.28 1996/12/12 09:39:25 jj Exp $ +/* $Id: sys_sparc.c,v 1.32 1996/12/19 05:25:46 davem Exp $ * linux/arch/sparc/kernel/sys_sparc.c * * This file contains various random system calls that @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -18,6 +19,7 @@ #include #include +#include /* XXX Make this per-binary type, this way we can detect the type of * XXX a binary. Every Sparc executable calls this very early on. @@ -62,23 +64,6 @@ * This is really horribly ugly. */ -struct ipc_kludge { - struct msgbuf *msgp; - long msgtyp; -}; - -#define SEMOP 1 -#define SEMGET 2 -#define SEMCTL 3 -#define MSGSND 11 -#define MSGRCV 12 -#define MSGGET 13 -#define MSGCTL 14 -#define SHMAT 21 -#define SHMDT 22 -#define SHMGET 23 -#define SHMCTL 24 - asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, long fifth) { int version; @@ -184,6 +169,11 @@ if((len > (TASK_SIZE - PAGE_SIZE)) || (addr > (TASK_SIZE-len-PAGE_SIZE))) return -EINVAL; + if(sparc_cpu_model == sun4c) { + if(((addr >= 0x20000000) && (addr < 0xe0000000))) + return current->mm->brk; + } + retval = do_mmap(file, addr, len, prot, flags, off); return retval; } @@ -224,3 +214,11 @@ return sys_sigaction (-signum, action, oldaction); } } + +#ifndef CONFIG_AP1000 +/* only AP+ systems have sys_aplib */ +asmlinkage int sys_aplib(void) +{ + return -ENOSYS; +} +#endif diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/sys_sunos.c linux/arch/sparc/kernel/sys_sunos.c --- v2.1.16/linux/arch/sparc/kernel/sys_sunos.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/kernel/sys_sunos.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: sys_sunos.c,v 1.65 1996/12/10 07:08:09 tridge Exp $ +/* $Id: sys_sunos.c,v 1.68 1996/12/19 05:25:43 davem Exp $ * sys_sunos.c: SunOS specific syscall compatibility support. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -112,6 +112,11 @@ if((len > (TASK_SIZE - PAGE_SIZE)) || (addr > (TASK_SIZE-len-PAGE_SIZE))) return -EINVAL; + if(sparc_cpu_model == sun4c) { + if(((addr >= 0x20000000) && (addr < 0xe0000000))) + return current->mm->brk; + } + retval = do_mmap(file, addr, len, prot, flags, off); if(ret_type) return retval; @@ -825,12 +830,8 @@ extern asmlinkage unsigned long sunos_gethostid(void) { -#if CONFIG_AP1000 - return mpp_cid(); -#else return ((unsigned long)idprom->id_machtype << 24) | (unsigned long)idprom->id_sernum; -#endif } extern asmlinkage long sunos_sysconf (int name) @@ -1161,7 +1162,7 @@ struct sigaction tmp_sa, *tmp_sap; const int sigaction_size = sizeof (struct sigaction) - sizeof (void *); int err; - int old_fs; + int old_fs = USER_DS; current->personality |= PER_BSD; @@ -1182,7 +1183,7 @@ set_fs (get_ds ()); tmp_sap = &tmp_sa; } else { - tmp_sap = action; + tmp_sap = (struct sigaction *) action; } err = sys_sigaction (signum, tmp_sap, oldaction); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/systbls.S linux/arch/sparc/kernel/systbls.S --- v2.1.16/linux/arch/sparc/kernel/systbls.S Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/kernel/systbls.S Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: systbls.S,v 1.54 1996/12/03 08:44:37 jj Exp $ +/* $Id: systbls.S,v 1.55 1996/12/18 06:33:47 tridge Exp $ * systbls.S: System call entry point tables for OS compatibility. * The native Linux system call table lives here also. * @@ -134,7 +134,7 @@ /*250*/ .long C_LABEL(sys_mremap) .long C_LABEL(sys_sysctl) .long C_LABEL(sys_getsid), C_LABEL(sys_fdatasync), C_LABEL(sys_nis_syscall) - .long C_LABEL(sys_nis_syscall), C_LABEL(sys_nis_syscall) + .long C_LABEL(sys_aplib), C_LABEL(sys_nis_syscall) /* Now the SunOS syscall table. */ @@ -227,7 +227,7 @@ .long C_LABEL(sunos_nosys), C_LABEL(sunos_nosys), C_LABEL(sunos_nosys) .long C_LABEL(sunos_nosys), C_LABEL(sunos_nosys) /*250*/ .long C_LABEL(sunos_nosys), C_LABEL(sunos_nosys), C_LABEL(sunos_nosys) - .long C_LABEL(sunos_nosys), C_LABEL(sunos_nosys) + .long C_LABEL(sunos_nosys), C_LABEL(sunos_nosys), C_LABEL(sys_aplib) #if 0 /* Not used yet - {net, open}bsd is a TODO */ diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/time.c linux/arch/sparc/kernel/time.c --- v2.1.16/linux/arch/sparc/kernel/time.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/kernel/time.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: time.c,v 1.20 1996/11/13 05:09:40 davem Exp $ +/* $Id: time.c,v 1.22 1996/12/19 08:06:32 davem Exp $ * linux/arch/sparc/kernel/time.c * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -25,11 +25,6 @@ #include #include -#ifdef CONFIG_AP1000 -#include -#endif - - enum sparc_clock_type sp_clock_typ; struct mostek48t02 *mstk48t02_regs = 0; struct mostek48t08 *mstk48t08_regs = 0; @@ -162,6 +157,8 @@ char model[128]; register int node, cpuunit, bootbus; + cpuunit = bootbus = 0; + /* Determine the correct starting PROM node for the probe. */ node = prom_getchild(prom_root_node); switch (sparc_cpu_model) { @@ -244,11 +241,7 @@ #if CONFIG_AP1000 init_timers(timer_interrupt); - { - extern struct cap_init cap_init; - xtime.tv_sec = cap_init.init_time; - xtime.tv_usec = 0; - } + ap_init_time(&xtime); return; #endif @@ -273,7 +266,6 @@ return; } -#if !CONFIG_AP1000 static __inline__ unsigned long do_gettimeoffset(void) { unsigned long offset = 0; @@ -286,7 +278,6 @@ return offset + count; } -#endif void do_gettimeofday(struct timeval *tv) { diff -u --recursive --new-file v2.1.16/linux/arch/sparc/kernel/traps.c linux/arch/sparc/kernel/traps.c --- v2.1.16/linux/arch/sparc/kernel/traps.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/kernel/traps.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: traps.c,v 1.48 1996/11/13 05:09:42 davem Exp $ +/* $Id: traps.c,v 1.49 1996/12/18 06:33:49 tridge Exp $ * arch/sparc/kernel/traps.c * * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) @@ -85,9 +85,6 @@ printk("%s(%d): %s\n", current->comm, current->pid, str); show_regs(regs); -#if CONFIG_AP1000 - ap_panic(); -#endif printk("Instruction DUMP:"); instruction_dump ((unsigned long *) regs->pc); if(regs->psr & PSR_PS) diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/asyncd.c linux/arch/sparc/mm/asyncd.c --- v2.1.16/linux/arch/sparc/mm/asyncd.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/mm/asyncd.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: asyncd.c,v 1.8 1996/09/21 04:30:12 davem Exp $ +/* $Id: asyncd.c,v 1.9 1996/12/18 06:43:22 tridge Exp $ * The asyncd kernel daemon. This handles paging on behalf of * processes that receive page faults due to remote (async) memory * accesses. @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include /* for cli()/sti() */ @@ -26,6 +28,15 @@ #include #include +#define DEBUG 0 + +#define WRITE_LIMIT 100 +#define LOOP_LIMIT 200 + +static struct { + int faults, read, write, success, failure, errors; +} stats; + /* * The wait queue for waking up the async daemon: */ @@ -51,8 +62,16 @@ { struct async_job *a = kmalloc(sizeof(*a),GFP_ATOMIC); - if (!a) - panic("out of memory in asyncd\n"); + if (!a) { + printk("ERROR: out of memory in asyncd\n"); + a->callback(taskid,address,write,1); + return; + } + + if (write) + stats.write++; + else + stats.read++; a->next = NULL; a->taskid = taskid; @@ -76,17 +95,23 @@ struct task_struct *tsk = task[taskid]; struct mm_struct *mm = tsk->mm; + stats.faults++; + #if 0 printk("paging in %x for task=%d\n",address,taskid); #endif + add_to_async_queue(taskid, mm, address, write, callback); wake_up(&asyncd_wait); + mark_bh(TQUEUE_BH); } static int fault_in_page(int taskid, struct vm_area_struct *vma, unsigned address,int write) { + static unsigned last_address; + static int last_task, loop_counter; struct task_struct *tsk = task[taskid]; pgd_t *pgd; pmd_t *pmd; @@ -99,7 +124,27 @@ goto bad_area; if (vma->vm_start > address) goto bad_area; - + + if (address == last_address && taskid == last_task) { + loop_counter++; + } else { + loop_counter = 0; + last_address = address; + last_task = taskid; + } + + if (loop_counter == WRITE_LIMIT && !write) { + printk("MSC bug? setting write request\n"); + stats.errors++; + write = 1; + } + + if (loop_counter == LOOP_LIMIT) { + printk("MSC bug? failing request\n"); + stats.errors++; + return 1; + } + pgd = pgd_offset(vma->vm_mm, address); pmd = pmd_alloc(pgd,address); if(!pmd) @@ -124,34 +169,51 @@ /* Fall through for do_wp_page */ finish_up: + stats.success++; update_mmu_cache(vma, address, *pte); return 0; no_memory: + stats.failure++; oom(tsk); return 1; bad_area: + stats.failure++; tsk->tss.sig_address = address; tsk->tss.sig_desc = SUBSIG_NOMAPPING; send_sig(SIGSEGV, tsk, 1); return 1; } + /* Note the semaphore operations must be done here, and _not_ * in async_fault(). */ static void run_async_queue(void) { int ret; + unsigned flags; + while (async_queue) { - volatile struct async_job *a = async_queue; - struct mm_struct *mm = a->mm; + volatile struct async_job *a; + struct mm_struct *mm; struct vm_area_struct *vma; + + save_flags(flags); cli(); + a = async_queue; async_queue = async_queue->next; + restore_flags(flags); + + mm = a->mm; + down(&mm->mmap_sem); vma = find_vma(mm, a->address); ret = fault_in_page(a->taskid,vma,a->address,a->write); +#if DEBUG + printk("fault_in_page(task=%d addr=%x write=%d) = %d\n", + a->taskid,a->address,a->write,ret); +#endif a->callback(a->taskid,a->address,a->write,ret); up(&mm->mmap_sem); kfree_s((void *)a,sizeof(*a)); @@ -159,6 +221,14 @@ } +#if CONFIG_AP1000 +static void asyncd_info(void) +{ + printk("CID(%d) faults: total=%d read=%d write=%d success=%d fail=%d err=%d\n", + mpp_cid(),stats.faults, stats.read, stats.write, stats.success, + stats.failure, stats.errors); +} +#endif /* @@ -172,17 +242,30 @@ sprintf(current->comm, "asyncd"); current->blocked = ~0UL; /* block all signals */ - /* Give kswapd a realtime priority. */ + /* Give asyncd a realtime priority. */ current->policy = SCHED_FIFO; current->priority = 32; /* Fixme --- we need to standardise our namings for POSIX.4 realtime scheduling priorities. */ printk("Started asyncd\n"); - + +#if CONFIG_AP1000 + bif_add_debug_key('a',asyncd_info,"stats on asyncd"); +#endif + while (1) { - current->signal = 0; - interruptible_sleep_on(&asyncd_wait); + unsigned flags; + + save_flags(flags); cli(); + + while (!async_queue) { + current->signal = 0; + interruptible_sleep_on(&asyncd_wait); + } + + restore_flags(flags); + run_async_queue(); } } diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/fault.c linux/arch/sparc/mm/fault.c --- v2.1.16/linux/arch/sparc/mm/fault.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/mm/fault.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: fault.c,v 1.84 1996/12/10 06:06:23 davem Exp $ +/* $Id: fault.c,v 1.85 1996/12/18 06:43:23 tridge Exp $ * fault.c: Page fault handlers for the Sparc. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -285,10 +285,10 @@ if ((pte_val(*ptep) & (_SUN4C_PAGE_WRITE|_SUN4C_PAGE_PRESENT)) == (_SUN4C_PAGE_WRITE|_SUN4C_PAGE_PRESENT)) { - pte_val(*ptep) |= (_SUN4C_PAGE_ACCESSED | - _SUN4C_PAGE_MODIFIED | - _SUN4C_PAGE_VALID | - _SUN4C_PAGE_DIRTY); + *ptep = __pte(pte_val(*ptep) | _SUN4C_PAGE_ACCESSED | + _SUN4C_PAGE_MODIFIED | + _SUN4C_PAGE_VALID | + _SUN4C_PAGE_DIRTY); if (sun4c_get_segmap(address) != invalid_segment) { sun4c_put_pte(address, pte_val(*ptep)); @@ -299,8 +299,8 @@ if ((pte_val(*ptep) & (_SUN4C_PAGE_READ|_SUN4C_PAGE_PRESENT)) == (_SUN4C_PAGE_READ|_SUN4C_PAGE_PRESENT)) { - pte_val(*ptep) |= (_SUN4C_PAGE_ACCESSED | - _SUN4C_PAGE_VALID); + *ptep = __pte(pte_val(*ptep) | _SUN4C_PAGE_ACCESSED | + _SUN4C_PAGE_VALID); if (sun4c_get_segmap(address) != invalid_segment) { sun4c_put_pte(address, pte_val(*ptep)); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/generic.c linux/arch/sparc/mm/generic.c --- v2.1.16/linux/arch/sparc/mm/generic.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/mm/generic.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: generic.c,v 1.4 1996/10/27 08:36:41 davem Exp $ +/* $Id: generic.c,v 1.5 1996/12/18 06:43:23 tridge Exp $ * generic.c: Generic Sparc mm routines that are not dependent upon * MMU type but are Sparc specific. * @@ -104,7 +104,7 @@ unsigned long beg = from; unsigned long end = from + size; - pgprot_val(prot) = pg_iobits; + prot = __pgprot(pg_iobits); offset -= from; dir = pgd_offset(current->mm, from); flush_cache_range(current->mm, beg, end); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/init.c linux/arch/sparc/mm/init.c --- v2.1.16/linux/arch/sparc/mm/init.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/mm/init.c Thu Dec 19 11:03:32 1996 @@ -1,4 +1,4 @@ -/* $Id: init.c,v 1.45 1996/12/11 10:23:06 davem Exp $ +/* $Id: init.c,v 1.46 1996/12/18 06:43:24 tridge Exp $ * linux/arch/sparc/mm/init.c * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -132,6 +132,14 @@ start_mem = srmmu_paging_init(start_mem, end_mem); sparc_unmapped_base = 0x50000000; break; + + case ap1000: +#if CONFIG_AP1000 + start_mem = apmmu_paging_init(start_mem, end_mem); + sparc_unmapped_base = 0x50000000; + break; +#endif + default: prom_printf("paging_init: Cannot init paging on this Sparc\n"); prom_printf("paging_init: sparc_cpu_model = %d\n", sparc_cpu_model); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/loadmmu.c linux/arch/sparc/mm/loadmmu.c --- v2.1.16/linux/arch/sparc/mm/loadmmu.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/mm/loadmmu.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: loadmmu.c,v 1.42 1996/12/03 08:44:47 jj Exp $ +/* $Id: loadmmu.c,v 1.43 1996/12/18 06:43:24 tridge Exp $ * loadmmu.c: This code loads up all the mm function pointers once the * machine type has been determined. It also sets the static * mmu values such as PAGE_NONE, etc. @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -162,6 +163,11 @@ case sun4d: ld_mmu_srmmu(); break; + case ap1000: +#if CONFIG_AP1000 + ld_mmu_apmmu(); + break; +#endif default: printk("load_mmu:MMU support not available for this architecture\n"); printk("load_mmu:sparc_cpu_model = %d\n", (int) sparc_cpu_model); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/srmmu.c linux/arch/sparc/mm/srmmu.c --- v2.1.16/linux/arch/sparc/mm/srmmu.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/mm/srmmu.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: srmmu.c,v 1.116 1996/12/12 11:57:59 davem Exp $ +/* $Id: srmmu.c,v 1.119 1996/12/19 08:06:37 davem Exp $ * srmmu.c: SRMMU specific routines for memory management. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -148,12 +148,6 @@ */ static inline unsigned long srmmu_swap(unsigned long *addr, unsigned long value) { -#if MEM_BUS_SPACE - /* the AP1000 has its memory on bus 8, not 0 like suns do */ - if (!(value&KERNBASE)) - value |= MEM_BUS_SPACE<<28; - if (value == MEM_BUS_SPACE<<28) value = 0; -#endif __asm__ __volatile__("swap [%2], %0\n\t" : "=&r" (value) : "0" (value), "r" (addr)); @@ -174,27 +168,29 @@ return SRMMU_VMALLOC_START; } +static inline int srmmu_device_memory(unsigned long x) +{ + return ((x & 0xF0000000) != 0); +} + static unsigned long srmmu_pgd_page(pgd_t pgd) -{ return srmmu_p2v((pgd_val(pgd) & SRMMU_PTD_PMASK) << 4); } +{ return srmmu_device_memory(pgd_val(pgd))?~0:srmmu_p2v((pgd_val(pgd) & SRMMU_PTD_PMASK) << 4); } static unsigned long srmmu_pmd_page(pmd_t pmd) -{ return srmmu_p2v((pmd_val(pmd) & SRMMU_PTD_PMASK) << 4); } - -static inline int srmmu_device_memory(pte_t pte) -{ - return (pte_val(pte)>>28) != MEM_BUS_SPACE; -} +{ return srmmu_device_memory(pmd_val(pmd))?~0:srmmu_p2v((pmd_val(pmd) & SRMMU_PTD_PMASK) << 4); } static unsigned long srmmu_pte_page(pte_t pte) -{ return srmmu_device_memory(pte)?~0:srmmu_p2v((pte_val(pte) & SRMMU_PTE_PMASK) << 4); } +{ return srmmu_device_memory(pte_val(pte))?~0:srmmu_p2v((pte_val(pte) & SRMMU_PTE_PMASK) << 4); } -static int srmmu_pte_none(pte_t pte) { return !pte_val(pte); } +static int srmmu_pte_none(pte_t pte) +{ return !(pte_val(pte) & 0xFFFFFFF); } static int srmmu_pte_present(pte_t pte) { return ((pte_val(pte) & SRMMU_ET_MASK) == SRMMU_ET_PTE); } static void srmmu_pte_clear(pte_t *ptep) { set_pte(ptep, __pte(0)); } -static int srmmu_pmd_none(pmd_t pmd) { return !pmd_val(pmd); } +static int srmmu_pmd_none(pmd_t pmd) +{ return !(pmd_val(pmd) & 0xFFFFFFF); } static int srmmu_pmd_bad(pmd_t pmd) { return (pmd_val(pmd) & SRMMU_ET_MASK) != SRMMU_ET_PTD; } @@ -203,7 +199,9 @@ static void srmmu_pmd_clear(pmd_t *pmdp) { set_pte((pte_t *)pmdp, __pte(0)); } -static int srmmu_pgd_none(pgd_t pgd) { return !pgd_val(pgd); } +static int srmmu_pgd_none(pgd_t pgd) +{ return !(pgd_val(pgd) & 0xFFFFFFF); } + static int srmmu_pgd_bad(pgd_t pgd) { return (pgd_val(pgd) & SRMMU_ET_MASK) != SRMMU_ET_PTD; } @@ -216,28 +214,26 @@ static int srmmu_pte_dirty(pte_t pte) { return pte_val(pte) & SRMMU_DIRTY; } static int srmmu_pte_young(pte_t pte) { return pte_val(pte) & SRMMU_REF; } -static pte_t srmmu_pte_wrprotect(pte_t pte) { pte_val(pte) &= ~SRMMU_WRITE; return pte;} -static pte_t srmmu_pte_mkclean(pte_t pte) { pte_val(pte) &= ~SRMMU_DIRTY; return pte; } -static pte_t srmmu_pte_mkold(pte_t pte) { pte_val(pte) &= ~SRMMU_REF; return pte; } -static pte_t srmmu_pte_mkwrite(pte_t pte) { pte_val(pte) |= SRMMU_WRITE; return pte; } -static pte_t srmmu_pte_mkdirty(pte_t pte) { pte_val(pte) |= SRMMU_DIRTY; return pte; } -static pte_t srmmu_pte_mkyoung(pte_t pte) { pte_val(pte) |= SRMMU_REF; return pte; } +static pte_t srmmu_pte_wrprotect(pte_t pte) { return __pte(pte_val(pte) & ~SRMMU_WRITE);} +static pte_t srmmu_pte_mkclean(pte_t pte) { return __pte(pte_val(pte) & ~SRMMU_DIRTY);} +static pte_t srmmu_pte_mkold(pte_t pte) { return __pte(pte_val(pte) & ~SRMMU_REF);} +static pte_t srmmu_pte_mkwrite(pte_t pte) { return __pte(pte_val(pte) | SRMMU_WRITE);} +static pte_t srmmu_pte_mkdirty(pte_t pte) { return __pte(pte_val(pte) | SRMMU_DIRTY);} +static pte_t srmmu_pte_mkyoung(pte_t pte) { return __pte(pte_val(pte) | SRMMU_REF);} /* * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. */ static pte_t srmmu_mk_pte(unsigned long page, pgprot_t pgprot) -{ pte_t pte; pte_val(pte) = ((srmmu_v2p(page)) >> 4) | pgprot_val(pgprot); return pte; } +{ return __pte(((srmmu_v2p(page)) >> 4) | pgprot_val(pgprot)); } static pte_t srmmu_mk_pte_phys(unsigned long page, pgprot_t pgprot) -{ pte_t pte; pte_val(pte) = ((page) >> 4) | pgprot_val(pgprot); return pte; } +{ return __pte(((page) >> 4) | pgprot_val(pgprot)); } static pte_t srmmu_mk_pte_io(unsigned long page, pgprot_t pgprot, int space) { - pte_t pte; - pte_val(pte) = ((page) >> 4) | (space << 28) | pgprot_val(pgprot); - return pte; + return __pte(((page) >> 4) | (space << 28) | pgprot_val(pgprot)); } static void srmmu_ctxd_set(ctxd_t *ctxp, pgd_t *pgdp) @@ -257,8 +253,7 @@ static pte_t srmmu_pte_modify(pte_t pte, pgprot_t newprot) { - pte_val(pte) = (pte_val(pte) & SRMMU_CHG_MASK) | pgprot_val(newprot); - return pte; + return __pte((pte_val(pte) & SRMMU_CHG_MASK) | pgprot_val(newprot)); } /* to find an entry in a top-level page table... */ @@ -785,7 +780,7 @@ set = ((unsigned long)ptep >> 5) & 0x7f; vaddr = (KERNBASE + PAGE_SIZE) | (set << 5); - srmmu_set_entry(ptep, pteval); + srmmu_set_entry(ptep, pte_val(pteval)); for (i = 0; i < 8; i++) { __asm__ __volatile__ ("ld [%0], %%g0" : : "r" (vaddr)); vaddr += PAGE_SIZE; @@ -800,7 +795,6 @@ while (1) ; #else extern void die_if_kernel(char *str, struct pt_regs *regs); - printk("Kernel faults at addr=0x%08lx\n", address); printk("PTE=%08lx\n", srmmu_hwprobe((address & PAGE_MASK))); die_if_kernel("SRMMU bolixed...", current->tss.kregs); @@ -812,13 +806,6 @@ struct mm_struct *mm = tsk->mm; struct ctx_list *ctxp; -#if CONFIG_AP1000 - if (tsk->taskid >= MPP_TASK_BASE) { - mm->context = MPP_CONTEXT_BASE + (tsk->taskid - MPP_TASK_BASE); - return; - } -#endif - ctxp = ctx_free.next; if(ctxp != &ctx_free) { remove_from_ctx_list(ctxp); @@ -845,11 +832,6 @@ { struct ctx_list *ctx_old; -#if CONFIG_AP1000 - if (context >= MPP_CONTEXT_BASE) - return; /* nothing to do! */ -#endif - ctx_old = ctx_list_pool + context; remove_from_ctx_list(ctx_old); add_to_free_ctxlist(ctx_old); @@ -891,7 +873,7 @@ else tmp |= SRMMU_PRIV; flush_page_to_ram(virt_addr); - set_pte(ptep, tmp); + set_pte(ptep, __pte(tmp)); flush_tlb_all(); } @@ -906,7 +888,7 @@ ptep = srmmu_pte_offset(pmdp, virt_addr); /* No need to flush uncacheable page. */ - set_pte(ptep, pte_val(srmmu_mk_pte((unsigned long) EMPTY_PGE, PAGE_SHARED))); + set_pte(ptep, srmmu_mk_pte((unsigned long) EMPTY_PGE, PAGE_SHARED)); flush_tlb_all(); } @@ -2009,7 +1991,7 @@ static void hypersparc_ctxd_set(ctxd_t *ctxp, pgd_t *pgdp) { hyper_flush_whole_icache(); - set_pte((pte_t *)ctxp, (SRMMU_ET_PTD | (srmmu_v2p((unsigned long) pgdp) >> 4))); + set_pte((pte_t *)ctxp, __pte((SRMMU_ET_PTD | (srmmu_v2p((unsigned long) pgdp) >> 4)))); } static void hypersparc_update_rootmmu_dir(struct task_struct *tsk, pgd_t *pgdp) @@ -2049,7 +2031,7 @@ iopte += ((first - iommu->start) >> PAGE_SHIFT); while(first <= last) { - iopte_val(*iopte++) = MKIOPTE(srmmu_v2p(first)); + *iopte++ = __iopte(MKIOPTE(srmmu_v2p(first))); first += PAGE_SIZE; } } @@ -2229,12 +2211,12 @@ static inline void srmmu_early_pgd_set(pgd_t *pgdp, pmd_t *pmdp) { - set_pte((pte_t *)pgdp, (SRMMU_ET_PTD | (srmmu_early_paddr((unsigned long) pmdp) >> 4))); + set_pte((pte_t *)pgdp, __pte((SRMMU_ET_PTD | (srmmu_early_paddr((unsigned long) pmdp) >> 4)))); } static inline void srmmu_early_pmd_set(pmd_t *pmdp, pte_t *ptep) { - set_pte((pte_t *)pmdp, (SRMMU_ET_PTD | (srmmu_early_paddr((unsigned long) ptep) >> 4))); + set_pte((pte_t *)pmdp, __pte((SRMMU_ET_PTD | (srmmu_early_paddr((unsigned long) ptep) >> 4)))); } static inline unsigned long srmmu_early_pgd_page(pgd_t pgd) @@ -2316,7 +2298,7 @@ pgdp = srmmu_pgd_offset(init_task.mm, start); if(what == 2) { - pgd_val(*pgdp) = prompte; + *pgdp = __pgd(prompte); start += SRMMU_PGDIR_SIZE; continue; } @@ -2326,7 +2308,7 @@ } pmdp = srmmu_early_pmd_offset(pgdp, start); if(what == 1) { - pmd_val(*pmdp) = prompte; + *pmdp = __pmd(prompte); start += SRMMU_PMD_SIZE; continue; } @@ -2335,11 +2317,12 @@ srmmu_early_pmd_set(pmdp, ptep); } ptep = srmmu_early_pte_offset(pmdp, start); - pte_val(*ptep) = prompte; + *ptep = __pte(prompte); start += PAGE_SIZE; } } +#ifdef CONFIG_SBUS static void srmmu_map_dma_area(unsigned long addr, int len) { unsigned long page, end; @@ -2394,6 +2377,7 @@ flush_tlb_all(); iommu_invalidate(iommu->regs); } +#endif /* #define DEBUG_MAP_KERNEL */ @@ -2416,7 +2400,7 @@ MKTRACE(("dlm[v<%08lx>-->p<%08lx>]", vaddr, phys_base)); big_pte = KERNEL_PTE(phys_base >> 4); - pgd_val(*pgdp) = big_pte; + *pgdp = __pgd(big_pte); } /* Create second-level SRMMU 256K medium sized page mappings. */ @@ -2432,7 +2416,7 @@ pgdp = srmmu_pgd_offset(init_task.mm, vaddr); pmdp = srmmu_early_pmd_offset(pgdp, vaddr); medium_pte = KERNEL_PTE(phys_base >> 4); - pmd_val(*pmdp) = medium_pte; + *pmdp = __pmd(medium_pte); phys_base += SRMMU_PMD_SIZE; vaddr += SRMMU_PMD_SIZE; } @@ -2454,7 +2438,7 @@ pmdp = srmmu_early_pmd_offset(pgdp, start); ptep = srmmu_early_pte_offset(pmdp, start); - pte_val(*ptep) = KERNEL_PTE(phys_base >> 4); + *ptep = __pte(KERNEL_PTE(phys_base >> 4)); phys_base += PAGE_SIZE; start += PAGE_SIZE; } @@ -2763,9 +2747,6 @@ sparc_iobase_vaddr = 0xfd000000; /* 16MB of IOSPACE on all sun4m's. */ physmem_mapped_contig = 0; /* for init.c:taint_real_pages() */ -#if CONFIG_AP1000 - num_contexts = AP_NUM_CONTEXTS; -#else /* Find the number of contexts on the srmmu. */ cpunode = prom_getchild(prom_root_node); num_contexts = 0; @@ -2776,7 +2757,7 @@ break; } } -#endif + if(!num_contexts) { prom_printf("Something wrong, can't find cpu node in paging_init.\n"); prom_halt(); @@ -2795,22 +2776,9 @@ #endif mempool = PAGE_ALIGN(mempool); -#if CONFIG_AP1000 - ap_inherit_mappings(); -#else srmmu_inherit_prom_mappings(0xfe400000,(LINUX_OPPROM_ENDVM-PAGE_SIZE)); -#endif map_kernel(); -#if CONFIG_AP1000 - /* the MSC wants this aligned on a 16k boundary */ - srmmu_context_table = - sparc_init_alloc(&mempool, - num_contexts*sizeof(ctxd_t)<0x4000? - 0x4000: - num_contexts*sizeof(ctxd_t)); -#else srmmu_context_table = sparc_init_alloc(&mempool, num_contexts*sizeof(ctxd_t)); -#endif srmmu_ctx_table_phys = (ctxd_t *) srmmu_v2p((unsigned long) srmmu_context_table); for(i = 0; i < num_contexts; i++) ctxd_set(&srmmu_context_table[i], swapper_pg_dir); @@ -2831,13 +2799,7 @@ flush_tlb_all(); poke_srmmu(); -#if CONFIG_AP1000 - /* on the AP we don't put the top few contexts into the free - context list as these are reserved for parallel tasks */ - start_mem = sparc_context_init(start_mem, MPP_CONTEXT_BASE); -#else start_mem = sparc_context_init(start_mem, num_contexts); -#endif start_mem = free_area_init(start_mem, end_mem); return PAGE_ALIGN(start_mem); @@ -2960,7 +2922,7 @@ pgdp = srmmu_pgd_offset(vma->vm_mm, address); ptep = srmmu_pte_offset((pmd_t *) pgdp, address); flush_cache_page(vma, address); - pte_val(*ptep) = (pte_val(*ptep) | _SUN4C_PAGE_NOCACHE); + *ptep = __pte(pte_val(*ptep) | _SUN4C_PAGE_NOCACHE); flush_tlb_page(vma, address); } done: @@ -3360,9 +3322,6 @@ mreg |= (VIKING_ICENABLE | VIKING_DCENABLE); mreg |= VIKING_SBENABLE; mreg &= ~(VIKING_ACENABLE); -#if CONFIG_AP1000 - mreg &= ~(VIKING_SBENABLE); -#endif srmmu_set_mmureg(mreg); #ifdef __SMP__ @@ -3382,7 +3341,6 @@ unsigned long mreg = srmmu_get_mmureg(); /* Ahhh, the viking. SRMMU VLSI abortion number two... */ - if(mreg & VIKING_MMODE) { unsigned long bpreg; @@ -3457,6 +3415,7 @@ init_hypersparc(); break; case 0: + case 2: /* Uniprocessor Cypress */ init_cypress_604(); break; @@ -3644,7 +3603,9 @@ mmu_release_scsi_one = srmmu_release_scsi_one; mmu_release_scsi_sgl = srmmu_release_scsi_sgl; +#ifdef CONFIG_SBUS mmu_map_dma_area = srmmu_map_dma_area; +#endif mmu_info = srmmu_mmu_info; mmu_v2p = srmmu_v2p; diff -u --recursive --new-file v2.1.16/linux/arch/sparc/mm/sun4c.c linux/arch/sparc/mm/sun4c.c --- v2.1.16/linux/arch/sparc/mm/sun4c.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/mm/sun4c.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: sun4c.c,v 1.132 1996/12/10 06:06:27 davem Exp $ +/* $Id: sun4c.c,v 1.133 1996/12/18 06:43:28 tridge Exp $ * sun4c.c: Doing in software what should be done in hardware. * * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) @@ -1723,7 +1723,7 @@ { return ((pte_val(pte) & (_SUN4C_PAGE_PRESENT | _SUN4C_PAGE_PRIV)) != 0); } -static void sun4c_pte_clear(pte_t *ptep) { pte_val(*ptep) = 0; } +static void sun4c_pte_clear(pte_t *ptep) { *ptep = __pte(0); } static int sun4c_pmd_none(pmd_t pmd) { return !pmd_val(pmd); } static int sun4c_pmd_bad(pmd_t pmd) @@ -1736,7 +1736,7 @@ { return ((pmd_val(pmd) & PGD_PRESENT) != 0); } -static void sun4c_pmd_clear(pmd_t *pmdp) { pmd_val(*pmdp) = 0; } +static void sun4c_pmd_clear(pmd_t *pmdp) { *pmdp = __pmd(0); } static int sun4c_pgd_none(pgd_t pgd) { return 0; } static int sun4c_pgd_bad(pgd_t pgd) { return 0; } @@ -1764,43 +1764,40 @@ static pte_t sun4c_pte_wrprotect(pte_t pte) { - pte_val(pte) &= ~(_SUN4C_PAGE_WRITE | _SUN4C_PAGE_SILENT_WRITE); - return pte; + return __pte(pte_val(pte) & ~(_SUN4C_PAGE_WRITE | _SUN4C_PAGE_SILENT_WRITE)); } static pte_t sun4c_pte_mkclean(pte_t pte) { - pte_val(pte) &= ~(_SUN4C_PAGE_MODIFIED | _SUN4C_PAGE_SILENT_WRITE); - return pte; + return __pte(pte_val(pte) & ~(_SUN4C_PAGE_MODIFIED | _SUN4C_PAGE_SILENT_WRITE)); } static pte_t sun4c_pte_mkold(pte_t pte) { - pte_val(pte) &= ~(_SUN4C_PAGE_ACCESSED | _SUN4C_PAGE_SILENT_READ); - return pte; + return __pte(pte_val(pte) & ~(_SUN4C_PAGE_ACCESSED | _SUN4C_PAGE_SILENT_READ)); } static pte_t sun4c_pte_mkwrite(pte_t pte) { - pte_val(pte) |= _SUN4C_PAGE_WRITE; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_WRITE); if (pte_val(pte) & _SUN4C_PAGE_MODIFIED) - pte_val(pte) |= _SUN4C_PAGE_SILENT_WRITE; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_SILENT_WRITE); return pte; } static pte_t sun4c_pte_mkdirty(pte_t pte) { - pte_val(pte) |= _SUN4C_PAGE_MODIFIED; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_MODIFIED); if (pte_val(pte) & _SUN4C_PAGE_WRITE) - pte_val(pte) |= _SUN4C_PAGE_SILENT_WRITE; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_SILENT_WRITE); return pte; } static pte_t sun4c_pte_mkyoung(pte_t pte) { - pte_val(pte) |= _SUN4C_PAGE_ACCESSED; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_ACCESSED); if (pte_val(pte) & _SUN4C_PAGE_READ) - pte_val(pte) |= _SUN4C_PAGE_SILENT_READ; + pte = __pte(pte_val(pte) | _SUN4C_PAGE_SILENT_READ); return pte; } @@ -1825,9 +1822,8 @@ static pte_t sun4c_pte_modify(pte_t pte, pgprot_t newprot) { - pte_val(pte) = (pte_val(pte) & _SUN4C_PAGE_CHG_MASK) | - pgprot_val(newprot); - return pte; + return __pte((pte_val(pte) & _SUN4C_PAGE_CHG_MASK) | + pgprot_val(newprot)); } static unsigned long sun4c_pte_page(pte_t pte) @@ -1903,17 +1899,17 @@ if (page) { /* See above comment. */ page = (pte_t *) sun4c_lockarea((char *)page, PAGE_SIZE); - pmd_val(*pmd) = PGD_TABLE | (unsigned long) page; + *pmd = __pmd(PGD_TABLE | (unsigned long) page); return page + address; } - pmd_val(*pmd) = PGD_TABLE | (unsigned long) BAD_PAGETABLE; + *pmd = __pmd(PGD_TABLE | (unsigned long) BAD_PAGETABLE); return NULL; } free_page((unsigned long) page); } if (sun4c_pmd_bad(*pmd)) { printk("Bad pmd in pte_alloc_kernel: %08lx\n", pmd_val(*pmd)); - pmd_val(*pmd) = PGD_TABLE | (unsigned long) BAD_PAGETABLE; + *pmd = __pmd(PGD_TABLE | (unsigned long) BAD_PAGETABLE); return NULL; } return (pte_t *) sun4c_pmd_page(*pmd) + address; @@ -1925,7 +1921,7 @@ */ static void sun4c_pmd_free_kernel(pmd_t *pmd) { - pmd_val(*pmd) = 0; + *pmd = __pmd(0); } static pmd_t *sun4c_pmd_alloc_kernel(pgd_t *pgd, unsigned long address) @@ -1945,17 +1941,17 @@ pte_t *page = (pte_t *) get_free_page(GFP_KERNEL); if (sun4c_pmd_none(*pmd)) { if (page) { - pmd_val(*pmd) = PGD_TABLE | (unsigned long) page; + *pmd = __pmd(PGD_TABLE | (unsigned long) page); return page + address; } - pmd_val(*pmd) = PGD_TABLE | (unsigned long) BAD_PAGETABLE; + *pmd = __pmd(PGD_TABLE | (unsigned long) BAD_PAGETABLE); return NULL; } free_page((unsigned long) page); } if (sun4c_pmd_bad(*pmd)) { printk("Bad pmd in pte_alloc: %08lx\n", pmd_val(*pmd)); - pmd_val(*pmd) = PGD_TABLE | (unsigned long) BAD_PAGETABLE; + *pmd = __pmd(PGD_TABLE | (unsigned long) BAD_PAGETABLE); return NULL; } return (pte_t *) sun4c_pmd_page(*pmd) + address; @@ -1967,7 +1963,7 @@ */ static void sun4c_pmd_free(pmd_t * pmd) { - pmd_val(*pmd) = 0; + *pmd = __pmd(0); } static pmd_t *sun4c_pmd_alloc(pgd_t * pgd, unsigned long address) @@ -2043,8 +2039,8 @@ vmaring->vm_mm->context, start); #endif sun4c_flush_cache_page(vmaring, start); - pte_val(*ptep) = (pte_val(*ptep) | - _SUN4C_PAGE_NOCACHE); + *ptep = __pte(pte_val(*ptep) | + _SUN4C_PAGE_NOCACHE); sun4c_flush_tlb_page(vmaring, start); } next: @@ -2056,7 +2052,7 @@ if(alias_found && !(pte_val(pte) & _SUN4C_PAGE_NOCACHE)) { pgdp = sun4c_pgd_offset(vma->vm_mm, address); ptep = sun4c_pte_offset((pmd_t *) pgdp, address); - pte_val(*ptep) = (pte_val(*ptep) | _SUN4C_PAGE_NOCACHE); + *ptep = __pte(pte_val(*ptep) | _SUN4C_PAGE_NOCACHE); pte = pte_val(*ptep); } } @@ -2098,8 +2094,7 @@ memset(swapper_pg_dir, 0, PAGE_SIZE); memset(pg0, 0, PAGE_SIZE); /* Save work later. */ - pgd_val(swapper_pg_dir[SUN4C_VMALLOC_START>>SUN4C_PGDIR_SHIFT]) = - PGD_TABLE | (unsigned long) pg0; + swapper_pg_dir[SUN4C_VMALLOC_START>>SUN4C_PGDIR_SHIFT] = __pgd(PGD_TABLE | (unsigned long) pg0); sun4c_init_ss2_cache_bug(); start_mem = PAGE_ALIGN(start_mem); start_mem = sparc_context_init(start_mem, num_contexts); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/prom/bootstr.c linux/arch/sparc/prom/bootstr.c --- v2.1.16/linux/arch/sparc/prom/bootstr.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/prom/bootstr.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: bootstr.c,v 1.11 1996/07/27 05:02:06 zaitcev Exp $ +/* $Id: bootstr.c,v 1.12 1996/12/18 06:46:54 tridge Exp $ * bootstr.c: Boot string/argument acquisition from the PROM. * * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -51,13 +51,10 @@ strncpy(barg_buf, *romvec->pv_v2bootargs.bootargs, BARG_LEN-1); break; case PROM_AP1000: - /* - * Get message from host boot process. - */ #if CONFIG_AP1000 ap_getbootargs(barg_buf, BARG_LEN); -#endif break; +#endif default: break; } diff -u --recursive --new-file v2.1.16/linux/arch/sparc/prom/console.c linux/arch/sparc/prom/console.c --- v2.1.16/linux/arch/sparc/prom/console.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/prom/console.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: console.c,v 1.9 1996/09/19 20:27:17 davem Exp $ +/* $Id: console.c,v 1.10 1996/12/18 06:46:54 tridge Exp $ * console.c: Routines that deal with sending and receiving IO * to/from the current console device using the PROM. * @@ -80,8 +80,6 @@ ap_putchar(c); i = 0; } -#else - i = -1; #endif break; diff -u --recursive --new-file v2.1.16/linux/arch/sparc/prom/init.c linux/arch/sparc/prom/init.c --- v2.1.16/linux/arch/sparc/prom/init.c Wed Dec 18 15:58:46 1996 +++ linux/arch/sparc/prom/init.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: init.c,v 1.8 1996/11/13 05:10:06 davem Exp $ +/* $Id: init.c,v 1.9 1996/12/18 06:46:55 tridge Exp $ * init.c: Initialize internal variables used by the PROM * library functions. * @@ -32,14 +32,13 @@ __initfunc(void prom_init(struct linux_romvec *rp)) { - romvec = rp; - #if CONFIG_AP1000 - prom_vers = PROM_AP1000; - prom_meminit(); - prom_ranges_init(); - return; + extern struct linux_romvec *ap_prom_init(void); + rp = ap_prom_init(); #endif + + romvec = rp; + switch(romvec->pv_romvers) { case 0: prom_vers = PROM_V0; @@ -55,6 +54,10 @@ prom_printf("PROMLIB: Sun IEEE Prom not supported yet\n"); prom_halt(); break; + case 42: /* why not :-) */ + prom_vers = PROM_AP1000; + break; + default: prom_printf("PROMLIB: Bad PROM version %d\n", romvec->pv_romvers); diff -u --recursive --new-file v2.1.16/linux/arch/sparc/prom/misc.c linux/arch/sparc/prom/misc.c --- v2.1.16/linux/arch/sparc/prom/misc.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/prom/misc.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.11 1996/10/12 13:12:58 davem Exp $ +/* $Id: misc.c,v 1.12 1996/12/18 06:46:55 tridge Exp $ * misc.c: Miscellaneous prom functions that don't belong * anywhere else. * @@ -107,10 +107,6 @@ void prom_setsync(sfunc_t funcp) { -#ifdef CONFIG_AP1000 - printk("not doing setsync\n"); - return; -#endif if(!funcp) return; *romvec->pv_synchook = funcp; } diff -u --recursive --new-file v2.1.16/linux/arch/sparc/prom/tree.c linux/arch/sparc/prom/tree.c --- v2.1.16/linux/arch/sparc/prom/tree.c Tue Nov 12 15:56:04 1996 +++ linux/arch/sparc/prom/tree.c Thu Dec 19 11:03:33 1996 @@ -1,4 +1,4 @@ -/* $Id: tree.c,v 1.12 1996/10/12 12:37:40 davem Exp $ +/* $Id: tree.c,v 1.13 1996/12/18 06:46:56 tridge Exp $ * tree.c: Basic device tree traversal/scanning for the Linux * prom library. * @@ -27,11 +27,6 @@ save_flags(flags); cli(); -#if CONFIG_AP1000 - printk("prom_getchild -> 0\n"); - restore_flags(flags); - return 0; -#else if(node == -1) { ret = 0; } else { @@ -46,7 +41,6 @@ "memory"); restore_flags(flags); return ret; -#endif } /* Return the next sibling of node 'node' or zero if no more siblings @@ -60,11 +54,6 @@ save_flags(flags); cli(); -#if CONFIG_AP1000 - printk("prom_getsibling -> 0\n"); - restore_flags(flags); - return 0; -#else if(node == -1) { ret = 0; } else { @@ -79,7 +68,6 @@ "memory"); restore_flags(flags); return ret; -#endif } /* Return the length in bytes of property 'prop' at node 'node'. @@ -93,11 +81,6 @@ save_flags(flags); cli(); -#if CONFIG_AP1000 - printk("prom_getproplen(%s) -> -1\n",prop); - restore_flags(flags); - return -1; -#endif if((!node) || (!prop)) ret = -1; else @@ -121,11 +104,6 @@ save_flags(flags); cli(); -#if CONFIG_AP1000 - printk("prom_getproperty(%s) -> -1\n",prop); - restore_flags(flags); - return -1; -#endif plen = prom_getproplen(node, prop); if((plen > bufsize) || (plen == 0) || (plen == -1)) ret = -1; @@ -148,10 +126,6 @@ { static int intprop; -#if CONFIG_AP1000 - printk("prom_getint(%s) -> -1\n",prop); - return -1; -#endif if(prom_getproperty(node, prop, (char *) &intprop, sizeof(int)) != -1) return intprop; @@ -167,10 +141,6 @@ { int retval; -#if CONFIG_AP1000 - printk("prom_getintdefault(%s) -> 0\n",property); - return 0; -#endif retval = prom_getint(node, property); if(retval == -1) return deflt; @@ -183,10 +153,6 @@ { int retval; -#if CONFIG_AP1000 - printk("prom_getbool(%s) -> 0\n",prop); - return 0; -#endif retval = prom_getproplen(node, prop); if(retval == -1) return 0; return 1; @@ -201,10 +167,6 @@ { int len; -#if CONFIG_AP1000 - printk("prom_getstring(%s) -> .\n",prop); - return; -#endif len = prom_getproperty(node, prop, user_buf, ubuf_size); if(len != -1) return; user_buf[0] = 0; diff -u --recursive --new-file v2.1.16/linux/drivers/Makefile linux/drivers/Makefile --- v2.1.16/linux/drivers/Makefile Tue Nov 12 15:56:04 1996 +++ linux/drivers/Makefile Thu Dec 19 11:03:33 1996 @@ -8,8 +8,8 @@ # Note 2! The CFLAGS definitions are now in the main makefile... SUB_DIRS := block char net #streams -MOD_SUB_DIRS := $(SUB_DIRS) -ALL_SUB_DIRS := $(SUB_DIRS) pci sbus scsi sound cdrom isdn +MOD_SUB_DIRS := $(SUB_DIRS) sbus +ALL_SUB_DIRS := $(SUB_DIRS) pci scsi sbus sound cdrom isdn ifdef CONFIG_PCI SUB_DIRS += pci diff -u --recursive --new-file v2.1.16/linux/drivers/block/Config.in linux/drivers/block/Config.in --- v2.1.16/linux/drivers/block/Config.in Thu Dec 12 19:36:58 1996 +++ linux/drivers/block/Config.in Wed Dec 18 15:57:28 1996 @@ -59,7 +59,7 @@ bool ' Initial RAM disk (initrd) support' CONFIG_BLK_DEV_INITRD fi tristate 'XT harddisk support' CONFIG_BLK_DEV_XD - +tristate 'SyQuest EZ parallel port disk support' CONFIG_BLK_DEV_EZ if [ "$CONFIG_BLK_DEV_HD_IDE" = "y" -o "$CONFIG_BLK_DEV_HD_ONLY" = "y" ]; then define_bool CONFIG_BLK_DEV_HD y diff -u --recursive --new-file v2.1.16/linux/drivers/block/Makefile linux/drivers/block/Makefile --- v2.1.16/linux/drivers/block/Makefile Thu Dec 12 19:36:58 1996 +++ linux/drivers/block/Makefile Sat Dec 21 14:24:02 1996 @@ -30,6 +30,14 @@ endif endif +ifeq ($(CONFIG_AMIGA_Z2RAM),y) +L_OBJS += z2ram.o +else + ifeq ($(CONFIG_AMIGA_Z2RAM),m) + M_OBJS += z2ram.o + endif +endif + ifeq ($(CONFIG_BLK_DEV_RAM),y) L_OBJS += rd.o else @@ -142,6 +150,14 @@ else ifeq ($(CONFIG_BLK_DEV_XD),m) M_OBJS += xd.o + endif +endif + +ifeq ($(CONFIG_BLK_DEV_EZ),y) +L_OBJS += ez.o +else + ifeq ($(CONFIG_BLK_DEV_EZ),m) + M_OBJS += ez.o endif endif diff -u --recursive --new-file v2.1.16/linux/drivers/block/acsi.c linux/drivers/block/acsi.c --- v2.1.16/linux/drivers/block/acsi.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/block/acsi.c Fri Dec 20 11:19:59 1996 @@ -0,0 +1,1926 @@ +/* + * acsi.c -- Device driver for Atari ACSI hard disks + * + * Copyright 1994 Roman Hodek + * + * Some parts are based on hd.c by Linus Thorvalds + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive for + * more details. + * + */ + +/* + * Still to in this file: + * - If a command ends with an error status (!= 0), the following + * REQUEST SENSE commands (4 to fill the ST-DMA FIFO) are done by + * polling the _IRQ signal (not interrupt-driven). This should be + * avoided in future because it takes up a non-neglectible time in + * the interrupt service routine while interrupts are disabled. + * Maybe a timer interrupt will get lost :-( + */ + +/* + * General notes: + * + * - All ACSI devices (disks, CD-ROMs, ...) use major number 28. + * Minors are organized like it is with SCSI: The upper 4 bits + * identify the device, the lower 4 bits the partition. + * The device numbers (the upper 4 bits) are given in the same + * order as the devices are found on the bus. + * - Up to 8 LUNs are supported for each target (if CONFIG_ACSI_MULTI_LUN + * is defined), but only a total of 16 devices (due to minor + * numbers...). Note that Atari allows only a maximum of 4 targets + * (i.e. controllers, not devices) on the ACSI bus! + * - A optimizing scheme similar to SCSI scatter-gather is implemented. + * - Removable media are supported. After a medium change to device + * is reinitialized (partition check etc.). Also, if the device + * knows the PREVENT/ALLOW MEDIUM REMOVAL command, the door should + * be locked and unlocked when mounting the first or unmounting the + * last filesystem on the device. The code is untested, because I + * don't have a removable harddisk. + * + */ + +#include + +#define MAJOR_NR ACSI_MAJOR + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define DEBUG +#undef DEBUG_DETECT +#undef NO_WRITE + +#define MAX_ERRORS 8 /* Max read/write errors/sector */ +#define MAX_LUN 8 /* Max LUNs per target */ +#define MAX_DEV 16 + +#define ACSI_BUFFER_SIZE (16*1024) /* "normal" ACSI buffer size */ +#define ACSI_BUFFER_MINSIZE (2048) /* min. buf size if ext. DMA */ +#define ACSI_BUFFER_SIZE_ORDER 2 /* order size for above */ +#define ACSI_BUFFER_MINSIZE_ORDER 0 /* order size for above */ +#define ACSI_BUFFER_SECTORS (ACSI_BUFFER_SIZE/512) + +#define ACSI_BUFFER_ORDER \ + (ATARIHW_PRESENT(EXTD_DMA) ? \ + ACSI_BUFFER_MINSIZE_ORDER : \ + ACSI_BUFFER_SIZE_ORDER) + +#define ACSI_TIMEOUT (4*HZ) + +/* minimum delay between two commands */ + +#define COMMAND_DELAY 500 + +typedef enum { + NONE, HARDDISK, CDROM +} ACSI_TYPE; + +struct acsi_info_struct { + ACSI_TYPE type; /* type of device */ + unsigned target; /* target number */ + unsigned lun; /* LUN in target controller */ + unsigned removable : 1; /* Flag for removable media */ + unsigned read_only : 1; /* Flag for read only devices */ + unsigned old_atari_disk : 1; /* Is an old Atari disk */ + unsigned changed : 1; /* Medium has been changed */ + unsigned long size; /* #blocks */ +} acsi_info[MAX_DEV]; + +/* + * SENSE KEYS + */ + +#define NO_SENSE 0x00 +#define RECOVERED_ERROR 0x01 +#define NOT_READY 0x02 +#define MEDIUM_ERROR 0x03 +#define HARDWARE_ERROR 0x04 +#define ILLEGAL_REQUEST 0x05 +#define UNIT_ATTENTION 0x06 +#define DATA_PROTECT 0x07 +#define BLANK_CHECK 0x08 +#define COPY_ABORTED 0x0a +#define ABORTED_COMMAND 0x0b +#define VOLUME_OVERFLOW 0x0d +#define MISCOMPARE 0x0e + + +/* + * DEVICE TYPES + */ + +#define TYPE_DISK 0x00 +#define TYPE_TAPE 0x01 +#define TYPE_WORM 0x04 +#define TYPE_ROM 0x05 +#define TYPE_MOD 0x07 +#define TYPE_NO_LUN 0x7f + +/* The data returned by MODE SENSE differ between the old Atari + * harddisks and SCSI disks connected to ACSI. In the following, both + * formats are defined and some macros to operate on them potably. + */ + +typedef struct { + unsigned long dummy[2]; + unsigned long sector_size; + unsigned char format_code; +#define ATARI_SENSE_FORMAT_FIX 1 +#define ATARI_SENSE_FORMAT_CHNG 2 + unsigned char cylinders_h; + unsigned char cylinders_l; + unsigned char heads; + unsigned char reduced_h; + unsigned char reduced_l; + unsigned char precomp_h; + unsigned char precomp_l; + unsigned char landing_zone; + unsigned char steprate; + unsigned char type; +#define ATARI_SENSE_TYPE_FIXCHNG_MASK 4 +#define ATARI_SENSE_TYPE_SOFTHARD_MASK 8 +#define ATARI_SENSE_TYPE_FIX 4 +#define ATARI_SENSE_TYPE_CHNG 0 +#define ATARI_SENSE_TYPE_SOFT 0 +#define ATARI_SENSE_TYPE_HARD 8 + unsigned char sectors; +} ATARI_SENSE_DATA; + +#define ATARI_CAPACITY(sd) \ + (((int)((sd).cylinders_h<<8)|(sd).cylinders_l) * \ + (sd).heads * (sd).sectors) + + +typedef struct { + unsigned char dummy1; + unsigned char medium_type; + unsigned char dummy2; + unsigned char descriptor_size; + unsigned long block_count; + unsigned long sector_size; + /* Page 0 data */ + unsigned char page_code; + unsigned char page_size; + unsigned char page_flags; + unsigned char qualifier; +} SCSI_SENSE_DATA; + +#define SCSI_CAPACITY(sd) ((sd).block_count & 0xffffff) + + +typedef union { + ATARI_SENSE_DATA atari; + SCSI_SENSE_DATA scsi; +} SENSE_DATA; + +#define SENSE_TYPE_UNKNOWN 0 +#define SENSE_TYPE_ATARI 1 +#define SENSE_TYPE_SCSI 2 + +#define SENSE_TYPE(sd) \ + (((sd).atari.dummy[0] == 8 && \ + ((sd).atari.format_code == 1 || \ + (sd).atari.format_code == 2)) ? SENSE_TYPE_ATARI : \ + ((sd).scsi.dummy1 >= 11) ? SENSE_TYPE_SCSI : \ + SENSE_TYPE_UNKNOWN) + +#define CAPACITY(sd) \ + (SENSE_TYPE(sd) == SENSE_TYPE_ATARI ? \ + ATARI_CAPACITY((sd).atari) : \ + SCSI_CAPACITY((sd).scsi)) + +#define SECTOR_SIZE(sd) \ + (SENSE_TYPE(sd) == SENSE_TYPE_ATARI ? \ + (sd).atari.sector_size : \ + (sd).scsi.sector_size & 0xffffff) + +/* Default size if capacity cannot be determined (1 GByte) */ +#define DEFAULT_SIZE 0x1fffff + +#define CARTRCH_STAT(dev,buf) \ + (acsi_info[(dev)].old_atari_disk ? \ + (((buf)[0] & 0x7f) == 0x28) : \ + ((((buf)[0] & 0x70) == 0x70) ? \ + (((buf)[2] & 0x0f) == 0x06) : \ + (((buf)[0] & 0x0f) == 0x06))) \ + +/* These two are also exported to other drivers that work on the ACSI bus and + * need an ST-RAM buffer. */ +char *acsi_buffer; +unsigned long phys_acsi_buffer; + +static int NDevices = 0; +static int acsi_sizes[MAX_DEV<<4] = { 0, }; +static int acsi_blocksizes[MAX_DEV<<4] = { 0, }; +static struct hd_struct acsi_part[MAX_DEV<<4] = { {0,0}, }; +static int access_count[MAX_DEV] = { 0, }; +static char busy[MAX_DEV] = { 0, }; +static struct wait_queue *busy_wait; + +static int CurrentNReq; +static int CurrentNSect; +static char *CurrentBuffer; + + +#define SET_TIMER() \ + do { \ + del_timer( &acsi_timer ); \ + acsi_timer.expires = jiffies + ACSI_TIMEOUT; \ + add_timer( &acsi_timer ); \ + } while(0) + +#define CLEAR_TIMER() \ + do { \ + del_timer( &acsi_timer ); \ + } while(0) + +static unsigned long STramMask; +#define STRAM_ADDR(a) (((a) & STramMask) == 0) + + + +/* ACSI commands */ + +static char tur_cmd[6] = { 0x00, 0, 0, 0, 0, 0 }; +static char modesense_cmd[6] = { 0x1a, 0, 0, 0, 24, 0 }; +static char modeselect_cmd[6] = { 0x15, 0, 0, 0, 12, 0 }; +static char inquiry_cmd[6] = { 0x12, 0, 0, 0,255, 0 }; +static char reqsense_cmd[6] = { 0x03, 0, 0, 0, 4, 0 }; +static char read_cmd[6] = { 0x08, 0, 0, 0, 0, 0 }; +static char write_cmd[6] = { 0x0a, 0, 0, 0, 0, 0 }; +static char pa_med_rem_cmd[6] = { 0x1e, 0, 0, 0, 0, 0 }; + +#define CMDSET_TARG_LUN(cmd,targ,lun) \ + do { \ + cmd[0] = (cmd[0] & ~0xe0) | (targ)<<5; \ + cmd[1] = (cmd[1] & ~0xe0) | (lun)<<5; \ + } while(0) + +#define CMDSET_BLOCK(cmd,blk) \ + do { \ + unsigned long __blk = (blk); \ + cmd[3] = __blk; __blk >>= 8; \ + cmd[2] = __blk; __blk >>= 8; \ + cmd[1] = (cmd[1] & 0xe0) | (__blk & 0x1f); \ + } while(0) + +#define CMDSET_LEN(cmd,len) \ + do { \ + cmd[4] = (len); \ + } while(0) + +#define min(a,b) (((a)<(b))?(a):(b)) + + +/* ACSI errors (from REQUEST SENSE); There are two tables, one for the + * old Atari disks and one for SCSI on ACSI disks. + */ + +struct acsi_error { + unsigned char code; + const char *text; +} atari_acsi_errors[] = { + { 0x00, "No error (??)" }, + { 0x01, "No index pulses" }, + { 0x02, "Seek not complete" }, + { 0x03, "Write fault" }, + { 0x04, "Drive not ready" }, + { 0x06, "No Track 00 signal" }, + { 0x10, "ECC error in ID field" }, + { 0x11, "Uncorrectable data error" }, + { 0x12, "ID field address mark not found" }, + { 0x13, "Data field address mark not found" }, + { 0x14, "Record not found" }, + { 0x15, "Seek error" }, + { 0x18, "Data check in no retry mode" }, + { 0x19, "ECC error during verify" }, + { 0x1a, "Access to bad block" }, + { 0x1c, "Unformatted or bad format" }, + { 0x20, "Invalid command" }, + { 0x21, "Invalid block address" }, + { 0x23, "Volume overflow" }, + { 0x24, "Invalid argument" }, + { 0x25, "Invalid drive number" }, + { 0x26, "Byte zero parity check" }, + { 0x28, "Cartride changed" }, + { 0x2c, "Error count overflow" }, + { 0x30, "Controller selftest failed" } +}, + + scsi_acsi_errors[] = { + { 0x00, "No error (??)" }, + { 0x01, "Recovered error" }, + { 0x02, "Drive not ready" }, + { 0x03, "Uncorrectable medium error" }, + { 0x04, "Hardware error" }, + { 0x05, "Illegal request" }, + { 0x06, "Unit attention (Reset or cartridge changed)" }, + { 0x07, "Data protection" }, + { 0x08, "Blank check" }, + { 0x0b, "Aborted Command" }, + { 0x0d, "Volume overflow" } +}; + + + +/***************************** Prototypes *****************************/ + +static int acsicmd_dma( const char *cmd, char *buffer, int blocks, int + rwflag, int enable); +static int acsi_reqsense( char *buffer, int targ, int lun); +static void acsi_print_error( const unsigned char *errblk, int dev ); +static void acsi_interrupt (int irq, void *data, struct pt_regs *fp); +static void unexpected_acsi_interrupt( void ); +static void bad_rw_intr( void ); +static void read_intr( void ); +static void write_intr( void); +static void acsi_times_out( unsigned long dummy ); +static void copy_to_acsibuffer( void ); +static void copy_from_acsibuffer( void ); +static void do_end_requests( void ); +static void do_acsi_request( void ); +static void redo_acsi_request( void ); +static int acsi_ioctl( struct inode *inode, struct file *file, unsigned int + cmd, unsigned long arg ); +static int acsi_open( struct inode * inode, struct file * filp ); +static void acsi_release( struct inode * inode, struct file * file ); +static void acsi_prevent_removal( int target, int flag ); +static int acsi_change_blk_size( int target, int lun); +static int acsi_mode_sense( int target, int lun, SENSE_DATA *sd ); +static void acsi_geninit( struct gendisk *gd ); +static int revalidate_acsidisk( int dev, int maxusage ); +static int acsi_revalidate (dev_t); + +/************************* End of Prototypes **************************/ + + +struct timer_list acsi_timer = { NULL, NULL, 0, 0, acsi_times_out }; + + +#ifdef CONFIG_ATARI_SLM + +extern void attach_slm( int target, int lun ); +extern int slm_init( void ); + +#endif + + + +/*********************************************************************** + * + * ACSI primitives + * + **********************************************************************/ + + +/* + * The following two functions wait for _IRQ to become Low or High, + * resp., with a timeout. The 'timeout' parameter is in jiffies + * (10ms). + * If the functions are called with timer interrupts on (int level < + * 6), the timeout is based on the 'jiffies' variable to provide exact + * timeouts for device probing etc. + * If interrupts are disabled, the number of tries is based on the + * 'loops_per_sec' variable. A rough estimation is sufficient here... + */ + +#define INT_LEVEL \ + ({ unsigned __sr; \ + __asm__ __volatile__ ( "movew %/sr,%0" : "=dm" (__sr) ); \ + (__sr >> 8) & 7; \ + }) + +int acsi_wait_for_IRQ( unsigned timeout ) + +{ + if (INT_LEVEL < 6) { + unsigned long maxjif; + for( maxjif = jiffies + timeout; jiffies < maxjif; ) + if (!(mfp.par_dt_reg & 0x20)) return( 1 ); + } + else { + long tries = loops_per_sec / HZ / 8 * timeout; + while( --tries >= 0 ) + if (!(mfp.par_dt_reg & 0x20)) return( 1 ); + } + return( 0 ); /* timeout! */ +} + + +int acsi_wait_for_noIRQ( unsigned timeout ) + +{ + if (INT_LEVEL < 6) { + unsigned long maxjif; + for( maxjif = jiffies + timeout; jiffies < maxjif; ) + if (mfp.par_dt_reg & 0x20) return( 1 ); + } + else { + long tries = loops_per_sec * timeout / HZ / 8; + while( tries-- >= 0 ) + if (mfp.par_dt_reg & 0x20) return( 1 ); + } + return( 0 ); /* timeout! */ +} + +static struct timeval start_time; + +void +acsi_delay_start(void) +{ + do_gettimeofday(&start_time); +} + +/* wait from acsi_delay_start to now usec (<1E6) usec */ + +void +acsi_delay_end(long usec) +{ + struct timeval end_time; + long deltau,deltas; + do_gettimeofday(&end_time); + deltau=end_time.tv_usec - start_time.tv_usec; + deltas=end_time.tv_sec - start_time.tv_sec; + if (deltas > 1 || deltas < 0) + return; + if (deltas > 0) + deltau += 1000*1000; + if (deltau >= usec) + return; + udelay(usec-deltau); +} + +/* acsicmd_dma() sends an ACSI command and sets up the DMA to transfer + * 'blocks' blocks of 512 bytes from/to 'buffer'. + * Because the _IRQ signal is used for handshaking the command bytes, + * the ACSI interrupt has to be disabled in this function. If the end + * of the operation should be signalled by a real interrupt, it has to be + * reenabled afterwards. + */ + +static int acsicmd_dma( const char *cmd, char *buffer, int blocks, int rwflag, int enable) + +{ unsigned long flags, paddr; + int i; + +#ifdef NO_WRITE + if (rwflag || *cmd == 0x0a) { + printk( "ACSI: Write commands disabled!\n" ); + return( 0 ); + } +#endif + + rwflag = rwflag ? 0x100 : 0; + paddr = VTOP( buffer ); + + acsi_delay_end(COMMAND_DELAY); + DISABLE_IRQ(); + + save_flags(flags); + cli(); + /* Low on A1 */ + dma_wd.dma_mode_status = 0x88 | rwflag; + MFPDELAY(); + + /* set DMA address */ + dma_wd.dma_lo = (unsigned char)paddr; + paddr >>= 8; + MFPDELAY(); + dma_wd.dma_md = (unsigned char)paddr; + paddr >>= 8; + MFPDELAY(); + if (ATARIHW_PRESENT(EXTD_DMA)) + st_dma_ext_dmahi = (unsigned short)paddr; + else + dma_wd.dma_hi = (unsigned char)paddr; + MFPDELAY(); + restore_flags(flags); + + /* send the command bytes except the last */ + for( i = 0; i < 5; ++i ) { + DMA_LONG_WRITE( *cmd++, 0x8a | rwflag ); + udelay(20); + if (!acsi_wait_for_IRQ( HZ/2 )) return( 0 ); /* timeout */ + } + + /* Clear FIFO and switch DMA to correct direction */ + dma_wd.dma_mode_status = 0x92 | (rwflag ^ 0x100); + MFPDELAY(); + dma_wd.dma_mode_status = 0x92 | rwflag; + MFPDELAY(); + + /* How many sectors for DMA */ + dma_wd.fdc_acces_seccount = blocks; + MFPDELAY(); + + /* send last command byte */ + dma_wd.dma_mode_status = 0x8a | rwflag; + MFPDELAY(); + DMA_LONG_WRITE( *cmd++, 0x0a | rwflag ); + if (enable) + ENABLE_IRQ(); + udelay(80); + + return( 1 ); +} + + +/* + * acsicmd_nodma() sends an ACSI command that requires no DMA. + */ + +int acsicmd_nodma( const char *cmd, int enable) + +{ int i; + + acsi_delay_end(COMMAND_DELAY); + DISABLE_IRQ(); + + /* send first command byte */ + dma_wd.dma_mode_status = 0x88; + MFPDELAY(); + DMA_LONG_WRITE( *cmd++, 0x8a ); + udelay(20); + if (!acsi_wait_for_IRQ( HZ/2 )) return( 0 ); /* timeout */ + + /* send the intermediate command bytes */ + for( i = 0; i < 4; ++i ) { + DMA_LONG_WRITE( *cmd++, 0x8a ); + udelay(20); + if (!acsi_wait_for_IRQ( HZ/2 )) return( 0 ); /* timeout */ + } + + /* send last command byte */ + DMA_LONG_WRITE( *cmd++, 0x0a ); + if (enable) + ENABLE_IRQ(); + udelay(80); + + return( 1 ); + /* Note that the ACSI interrupt is still disabled after this + * function. If you want to get the IRQ delivered, enable it manually! + */ +} + + +static int acsi_reqsense( char *buffer, int targ, int lun) + +{ + CMDSET_TARG_LUN( reqsense_cmd, targ, lun); + if (!acsicmd_dma( reqsense_cmd, buffer, 1, 0, 0 )) return( 0 ); + if (!acsi_wait_for_IRQ( 10 )) return( 0 ); + acsi_getstatus(); + if (!acsicmd_nodma( reqsense_cmd, 0 )) return( 0 ); + if (!acsi_wait_for_IRQ( 10 )) return( 0 ); + acsi_getstatus(); + if (!acsicmd_nodma( reqsense_cmd, 0 )) return( 0 ); + if (!acsi_wait_for_IRQ( 10 )) return( 0 ); + acsi_getstatus(); + if (!acsicmd_nodma( reqsense_cmd, 0 )) return( 0 ); + if (!acsi_wait_for_IRQ( 10 )) return( 0 ); + acsi_getstatus(); + dma_cache_maintenance( VTOP(buffer), 16, 0 ); + + return( 1 ); +} + + +/* + * ACSI status phase: get the status byte from the bus + * + * I've seen several times that a 0xff status is read, propably due to + * a timing error. In this case, the procedure is repeated after the + * next _IRQ edge. + */ + +int acsi_getstatus( void ) + +{ int status; + + DISABLE_IRQ(); + for(;;) { + if (!acsi_wait_for_IRQ( 100 )) { + acsi_delay_start(); + return( -1 ); + } + dma_wd.dma_mode_status = 0x8a; + MFPDELAY(); + status = dma_wd.fdc_acces_seccount; + if (status != 0xff) break; +#ifdef DEBUG + printk("ACSI: skipping 0xff status byte\n" ); +#endif + udelay(40); + acsi_wait_for_noIRQ( 20 ); + } + dma_wd.dma_mode_status = 0x80; + udelay(40); + acsi_wait_for_noIRQ( 20 ); + + acsi_delay_start(); + return( status & 0x1f ); /* mask of the device# */ +} + + +#if (defined(CONFIG_ATARI_SLM) || defined(CONFIG_ATARI_SLM_MODULE)) + +/* Receive data in an extended status phase. Needed by SLM printer. */ + +int acsi_extstatus( char *buffer, int cnt ) + +{ int status; + + DISABLE_IRQ(); + udelay(80); + while( cnt-- > 0 ) { + if (!acsi_wait_for_IRQ( 40 )) return( 0 ); + dma_wd.dma_mode_status = 0x8a; + MFPDELAY(); + status = dma_wd.fdc_acces_seccount; + MFPDELAY(); + *buffer++ = status & 0xff; + udelay(40); + } + return( 1 ); +} + + +/* Finish an extended status phase */ + +void acsi_end_extstatus( void ) + +{ + dma_wd.dma_mode_status = 0x80; + udelay(40); + acsi_wait_for_noIRQ( 20 ); + acsi_delay_start(); +} + + +/* Send data in an extended command phase */ + +int acsi_extcmd( unsigned char *buffer, int cnt ) + +{ + while( cnt-- > 0 ) { + DMA_LONG_WRITE( *buffer++, 0x8a ); + udelay(20); + if (!acsi_wait_for_IRQ( HZ/2 )) return( 0 ); /* timeout */ + } + return( 1 ); +} + +#endif + + +static void acsi_print_error( const unsigned char *errblk, int dev ) + +{ int atari_err, i, errcode; + struct acsi_error *arr; + + atari_err = acsi_info[dev].old_atari_disk; + if (atari_err) + errcode = errblk[0] & 0x7f; + else + if ((errblk[0] & 0x70) == 0x70) + errcode = errblk[2] & 0x0f; + else + errcode = errblk[0] & 0x0f; + + printk( KERN_ERR "ACSI error 0x%02x", errcode ); + + if (errblk[0] & 0x80) + printk( " for sector %d", + ((errblk[1] & 0x1f) << 16) | + (errblk[2] << 8) | errblk[0] ); + + arr = atari_err ? atari_acsi_errors : scsi_acsi_errors; + i = atari_err ? sizeof(atari_acsi_errors)/sizeof(*atari_acsi_errors) : + sizeof(scsi_acsi_errors)/sizeof(*scsi_acsi_errors); + + for( --i; i >= 0; --i ) + if (arr[i].code == errcode) break; + if (i >= 0) + printk( ": %s\n", arr[i].text ); +} + +/******************************************************************* + * + * ACSI interrupt routine + * Test, if this is a ACSI interrupt and call the irq handler + * Otherwise ignore this interrupt. + * + *******************************************************************/ + +static void acsi_interrupt(int irq, void *data, struct pt_regs *fp ) + +{ void (*acsi_irq_handler)(void) = DEVICE_INTR; + + DEVICE_INTR = NULL; + CLEAR_TIMER(); + + if (!acsi_irq_handler) + acsi_irq_handler = unexpected_acsi_interrupt; + acsi_irq_handler(); +} + + +/****************************************************************** + * + * The Interrupt handlers + * + *******************************************************************/ + + +static void unexpected_acsi_interrupt( void ) + +{ + printk( KERN_WARNING "Unexpected ACSI interrupt\n" ); +} + + +/* This function is called in case of errors. Because we cannot reset + * the ACSI bus or a single device, there is no other choice than + * retrying several times :-( + */ + +static void bad_rw_intr( void ) + +{ + if (!CURRENT) + return; + + if (++CURRENT->errors >= MAX_ERRORS) + end_request(0); + /* Otherwise just retry */ +} + + +static void read_intr( void ) + +{ int status; + + status = acsi_getstatus(); + if (status != 0) { + int dev = DEVICE_NR(MINOR(CURRENT->rq_dev)); + printk( KERN_ERR "ad%c: ", dev+'a' ); + if (!acsi_reqsense( acsi_buffer, acsi_info[dev].target, + acsi_info[dev].lun)) + printk( "ACSI error and REQUEST SENSE failed (status=0x%02x)\n", status ); + else { + acsi_print_error( acsi_buffer, dev ); + if (CARTRCH_STAT( dev, acsi_buffer )) + acsi_info[dev].changed = 1; + } + ENABLE_IRQ(); + bad_rw_intr(); + redo_acsi_request(); + return; + } + + dma_cache_maintenance( VTOP(CurrentBuffer), CurrentNSect*512, 0 ); + if (CurrentBuffer == acsi_buffer) + copy_from_acsibuffer(); + + do_end_requests(); + redo_acsi_request(); +} + + +static void write_intr(void) + +{ int status; + + status = acsi_getstatus(); + if (status != 0) { + int dev = DEVICE_NR(MINOR(CURRENT->rq_dev)); + printk( KERN_ERR "ad%c: ", dev+'a' ); + if (!acsi_reqsense( acsi_buffer, acsi_info[dev].target, + acsi_info[dev].lun)) + printk( "ACSI error and REQUEST SENSE failed (status=0x%02x)\n", status ); + else { + acsi_print_error( acsi_buffer, dev ); + if (CARTRCH_STAT( dev, acsi_buffer )) + acsi_info[dev].changed = 1; + } + bad_rw_intr(); + redo_acsi_request(); + return; + } + + do_end_requests(); + redo_acsi_request(); +} + + +static void acsi_times_out( unsigned long dummy ) + +{ + DISABLE_IRQ(); + if (!DEVICE_INTR) return; + + DEVICE_INTR = NULL; + printk( KERN_ERR "ACSI timeout\n" ); + if (!CURRENT) return; + if (++CURRENT->errors >= MAX_ERRORS) { +#ifdef DEBUG + printk( KERN_ERR "ACSI: too many errors.\n" ); +#endif + end_request(0); + } + + redo_acsi_request(); +} + + + +/*********************************************************************** + * + * Scatter-gather utility functions + * + ***********************************************************************/ + + +static void copy_to_acsibuffer( void ) + +{ int i; + char *src, *dst; + struct buffer_head *bh; + + src = CURRENT->buffer; + dst = acsi_buffer; + bh = CURRENT->bh; + + if (!bh) + memcpy( dst, src, CurrentNSect*512 ); + else + for( i = 0; i < CurrentNReq; ++i ) { + memcpy( dst, src, bh->b_size ); + dst += bh->b_size; + if ((bh = bh->b_reqnext)) + src = bh->b_data; + } +} + + +static void copy_from_acsibuffer( void ) + +{ int i; + char *src, *dst; + struct buffer_head *bh; + + dst = CURRENT->buffer; + src = acsi_buffer; + bh = CURRENT->bh; + + if (!bh) + memcpy( dst, src, CurrentNSect*512 ); + else + for( i = 0; i < CurrentNReq; ++i ) { + memcpy( dst, src, bh->b_size ); + src += bh->b_size; + if ((bh = bh->b_reqnext)) + dst = bh->b_data; + } +} + + +static void do_end_requests( void ) + +{ int i, n; + + if (!CURRENT->bh) { + CURRENT->nr_sectors -= CurrentNSect; + CURRENT->current_nr_sectors -= CurrentNSect; + CURRENT->sector += CurrentNSect; + if (CURRENT->nr_sectors == 0) + end_request(1); + } + else { + for( i = 0; i < CurrentNReq; ++i ) { + n = CURRENT->bh->b_size >> 9; + CURRENT->nr_sectors -= n; + CURRENT->current_nr_sectors -= n; + CURRENT->sector += n; + end_request(1); + } + } +} + + + + +/*********************************************************************** + * + * do_acsi_request and friends + * + ***********************************************************************/ + +static void do_acsi_request( void ) + +{ + stdma_lock( acsi_interrupt, NULL ); + redo_acsi_request(); +} + + +static void redo_acsi_request( void ) + +{ unsigned block, dev, target, lun, nsect; + char *buffer; + unsigned long pbuffer; + struct buffer_head *bh; + + if (CURRENT && CURRENT->rq_status == RQ_INACTIVE) { + if (!DEVICE_INTR) { + ENABLE_IRQ(); + stdma_release(); + } + return; + } + + if (DEVICE_INTR) + return; + + repeat: + CLEAR_TIMER(); + /* Another check here: An interrupt or timer event could have + * happened since the last check! + */ + if (CURRENT && CURRENT->rq_status == RQ_INACTIVE) { + if (!DEVICE_INTR) { + ENABLE_IRQ(); + stdma_release(); + } + return; + } + if (DEVICE_INTR) + return; + + if (!CURRENT) { + CLEAR_INTR; + ENABLE_IRQ(); + stdma_release(); + return; + } + + if (MAJOR(CURRENT->rq_dev) != MAJOR_NR) + panic(DEVICE_NAME ": request list destroyed"); + if (CURRENT->bh) { + if (!CURRENT->bh && !buffer_locked(CURRENT->bh)) + panic(DEVICE_NAME ": block not locked"); + } + + dev = MINOR(CURRENT->rq_dev); + block = CURRENT->sector; + if (DEVICE_NR(dev) >= NDevices || + block+CURRENT->nr_sectors >= acsi_part[dev].nr_sects) { +#ifdef DEBUG + printk( "ad%c: attempted access for blocks %d...%ld past end of device at block %ld.\n", + DEVICE_NR(dev)+'a', + block, block + CURRENT->nr_sectors - 1, + acsi_part[dev].nr_sects); +#endif + end_request(0); + goto repeat; + } + if (acsi_info[DEVICE_NR(dev)].changed) { + printk( KERN_NOTICE "ad%c: request denied because cartridge has " + "been changed.\n", DEVICE_NR(dev)+'a' ); + end_request(0); + goto repeat; + } + + block += acsi_part[dev].start_sect; + target = acsi_info[DEVICE_NR(dev)].target; + lun = acsi_info[DEVICE_NR(dev)].lun; + + /* Find out how many sectors should be transferred from/to + * consecutive buffers and thus can be done with a single command. + */ + buffer = CURRENT->buffer; + pbuffer = VTOP(buffer); + nsect = CURRENT->current_nr_sectors; + CurrentNReq = 1; + + if ((bh = CURRENT->bh) && bh != CURRENT->bhtail) { + if (!STRAM_ADDR(pbuffer)) { + /* If transfer is done via the ACSI buffer anyway, we can + * assemble as much bh's as fit in the buffer. + */ + while( (bh = bh->b_reqnext) ) { + if (nsect + (bh->b_size>>9) > ACSI_BUFFER_SECTORS) break; + nsect += bh->b_size >> 9; + ++CurrentNReq; + if (bh == CURRENT->bhtail) break; + } + buffer = acsi_buffer; + pbuffer = phys_acsi_buffer; + } + else { + unsigned long pendadr, pnewadr; + pendadr = pbuffer + nsect*512; + while( (bh = bh->b_reqnext) ) { + pnewadr = VTOP(bh->b_data); + if (!STRAM_ADDR(pnewadr) || pendadr != pnewadr) break; + nsect += bh->b_size >> 9; + pendadr = pnewadr + bh->b_size; + ++CurrentNReq; + if (bh == CURRENT->bhtail) break; + } + } + } + else { + if (!STRAM_ADDR(pbuffer)) { + buffer = acsi_buffer; + pbuffer = phys_acsi_buffer; + if (nsect > ACSI_BUFFER_SECTORS) + nsect = ACSI_BUFFER_SECTORS; + } + } + CurrentBuffer = buffer; + CurrentNSect = nsect; + + if (CURRENT->cmd == WRITE) { + CMDSET_TARG_LUN( write_cmd, target, lun ); + CMDSET_BLOCK( write_cmd, block ); + CMDSET_LEN( write_cmd, nsect ); + if (buffer == acsi_buffer) + copy_to_acsibuffer(); + dma_cache_maintenance( pbuffer, nsect*512, 1 ); + SET_INTR(write_intr); + if (!acsicmd_dma( write_cmd, buffer, nsect, 1, 1)) { + CLEAR_INTR; + printk( KERN_ERR "ACSI (write): Timeout in command block\n" ); + bad_rw_intr(); + goto repeat; + } + SET_TIMER(); + return; + } + if (CURRENT->cmd == READ) { + CMDSET_TARG_LUN( read_cmd, target, lun ); + CMDSET_BLOCK( read_cmd, block ); + CMDSET_LEN( read_cmd, nsect ); + SET_INTR(read_intr); + if (!acsicmd_dma( read_cmd, buffer, nsect, 0, 1)) { + CLEAR_INTR; + printk( KERN_ERR "ACSI (read): Timeout in command block\n" ); + bad_rw_intr(); + goto repeat; + } + SET_TIMER(); + return; + } + panic("unknown ACSI command"); +} + + + +/*********************************************************************** + * + * Misc functions: ioctl, open, release, check_change, ... + * + ***********************************************************************/ + + +static int acsi_ioctl( struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg ) +{ int dev; + + if (!inode) + return -EINVAL; + dev = DEVICE_NR(MINOR(inode->i_rdev)); + if (dev >= NDevices) + return -EINVAL; + switch (cmd) { + /* I left out the GETGEO cmd; This doesn't make much sense for + * ACSI disks... + */ + case BLKGETSIZE: /* Return device size */ + if (put_user(acsi_part[MINOR(inode->i_rdev)].nr_sects, + (long *)arg)) + return -EFAULT; + case BLKFLSBUF: + if(!suser()) return -EACCES; + if(!inode->i_rdev) return -EINVAL; + fsync_dev(inode->i_rdev); + invalidate_buffers(inode->i_rdev); + return 0; + + case BLKRRPART: /* Re-read partition tables */ + return revalidate_acsidisk(inode->i_rdev, 1); + RO_IOCTLS(inode->i_rdev,arg); + default: + return -EINVAL; + } +} + + +/* + * Open a device, check for read-only and lock the medium if it is + * removable. + * + * Changes by Martin Rogge, 9th Aug 1995: + * Check whether check_disk_change (and therefore revalidate_acsidisk) + * was successful. They fail when there is no medium in the drive. + * + * The problem of media being changed during an operation can be + * ignored because of the prevent_removal code. + * + * Added check for the validity of the device number. + * + */ + +static int acsi_open( struct inode * inode, struct file * filp ) +{ + int device; + struct acsi_info_struct *aip; + + device = DEVICE_NR(MINOR(inode->i_rdev)); + if (device >= NDevices) + return -ENXIO; + aip = &acsi_info[device]; + while (busy[device]) + sleep_on(&busy_wait); + + if (access_count[device] == 0 && aip->removable) { +#if 0 + aip->changed = 1; /* safety first */ +#endif + check_disk_change( inode->i_rdev ); + if (aip->changed) /* revalidate was not successful (no medium) */ + return -ENXIO; + acsi_prevent_removal(device, 1); + } + access_count[device]++; + MOD_INC_USE_COUNT; + + if (filp && filp->f_mode) { + check_disk_change( inode->i_rdev ); + if (filp->f_mode & 2) { + if (aip->read_only) { + acsi_release( inode, filp ); + return -EROFS; + } + } + } + + return 0; +} + +/* + * Releasing a block device means we sync() it, so that it can safely + * be forgotten about... + */ + +static void acsi_release( struct inode * inode, struct file * file ) +{ + int device; + + sync_dev(inode->i_rdev); + + device = DEVICE_NR(MINOR(inode->i_rdev)); + if (--access_count[device] == 0 && acsi_info[device].removable) + acsi_prevent_removal(device, 0); + MOD_DEC_USE_COUNT; +} + +/* + * Prevent or allow a media change for removable devices. + */ + +static void acsi_prevent_removal(int device, int flag) +{ + stdma_lock( NULL, NULL ); + + CMDSET_TARG_LUN(pa_med_rem_cmd, acsi_info[device].target, + acsi_info[device].lun); + CMDSET_LEN( pa_med_rem_cmd, flag ); + + if (acsicmd_nodma(pa_med_rem_cmd, 0) && acsi_wait_for_IRQ(3*HZ)) + acsi_getstatus(); + /* Do not report errors -- some devices may not know this command. */ + + ENABLE_IRQ(); + stdma_release(); +} + +static int acsi_media_change (dev_t dev) +{ + int device = DEVICE_NR(MINOR(dev)); + struct acsi_info_struct *aip; + + aip = &acsi_info[device]; + if (!aip->removable) + return 0; + + if (aip->changed) + /* We can be sure that the medium has been changed -- REQUEST + * SENSE has reported this earlier. + */ + return 1; + + /* If the flag isn't set, make a test by reading block 0. + * If errors happen, it seems to be better to say "changed"... + */ + stdma_lock( NULL, NULL ); + CMDSET_TARG_LUN(read_cmd, aip->target, aip->lun); + CMDSET_BLOCK( read_cmd, 0 ); + CMDSET_LEN( read_cmd, 1 ); + if (acsicmd_dma(read_cmd, acsi_buffer, 1, 0, 0) && + acsi_wait_for_IRQ(3*HZ)) { + if (acsi_getstatus()) { + if (acsi_reqsense(acsi_buffer, aip->target, aip->lun)) { + if (CARTRCH_STAT(device, acsi_buffer)) + aip->changed = 1; + } + else { + printk( KERN_ERR "ad%c: REQUEST SENSE failed in test for " + "medium change; assuming a change\n", device + 'a' ); + aip->changed = 1; + } + } + } + else { + printk( KERN_ERR "ad%c: Test for medium changed timed out; " + "assuming a change\n", device + 'a'); + aip->changed = 1; + } + ENABLE_IRQ(); + stdma_release(); + + /* Now, after reading a block, the changed status is surely valid. */ + return aip->changed; +} + + +static int acsi_change_blk_size( int target, int lun) + +{ int i; + + for (i=0; i<12; i++) + acsi_buffer[i] = 0; + + acsi_buffer[3] = 8; + acsi_buffer[10] = 2; + CMDSET_TARG_LUN( modeselect_cmd, target, lun); + + if (!acsicmd_dma( modeselect_cmd, acsi_buffer, 1,1,0) || + !acsi_wait_for_IRQ( 3*HZ ) || + acsi_getstatus() != 0 ) { + return(0); + } + return(1); +} + + +static int acsi_mode_sense( int target, int lun, SENSE_DATA *sd ) + +{ + int page; + + CMDSET_TARG_LUN( modesense_cmd, target, lun ); + for (page=0; page<4; page++) { + modesense_cmd[2] = page; + if (!acsicmd_dma( modesense_cmd, acsi_buffer, 1, 0, 0 ) || + !acsi_wait_for_IRQ( 3*HZ ) || + acsi_getstatus()) + continue; + + /* read twice to jump over the second 16-byte border! */ + udelay(300); + if (acsi_wait_for_noIRQ( 20 ) && + acsicmd_nodma( modesense_cmd, 0 ) && + acsi_wait_for_IRQ( 3*HZ ) && + acsi_getstatus() == 0); + break; + } + if (page == 4) { + return(0); + } + + dma_cache_maintenance( phys_acsi_buffer, sizeof(SENSE_DATA), 0 ); + *sd = *(SENSE_DATA *)acsi_buffer; + + /* Validity check, depending on type of data */ + + switch( SENSE_TYPE(*sd) ) { + + case SENSE_TYPE_ATARI: + if (CAPACITY(*sd) == 0) + goto invalid_sense; + break; + + case SENSE_TYPE_SCSI: + if (sd->scsi.descriptor_size != 8) + goto invalid_sense; + break; + + case SENSE_TYPE_UNKNOWN: + + printk( KERN_ERR "ACSI target %d, lun %d: Cannot interpret " + "sense data\n", target, lun ); + + invalid_sense: + +#ifdef DEBUG + { int i; + printk( "Mode sense data for ACSI target %d, lun %d seem not valid:", + target, lun ); + for( i = 0; i < sizeof(SENSE_DATA); ++i ) + printk( "%02x ", (unsigned char)acsi_buffer[i] ); + printk( "\n" ); + } +#endif + return( 0 ); + } + + return( 1 ); +} + + + +/******************************************************************* + * + * Initialization + * + ********************************************************************/ + + +static struct gendisk acsi_gendisk = { + MAJOR_NR, /* Major number */ + "ad", /* Major name */ + 4, /* Bits to shift to get real from partition */ + 1 << 4, /* Number of partitions per real */ + MAX_DEV, /* maximum number of real */ +#ifdef MODULE + NULL, /* called from init_module() */ +#else + acsi_geninit, /* init function */ +#endif + acsi_part, /* hd struct */ + acsi_sizes, /* block sizes */ + 0, /* number */ + (void *)acsi_info, /* internal */ + NULL /* next */ +}; + +#define MAX_SCSI_DEVICE_CODE 10 + +static const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE] = +{ + "Direct-Access ", + "Sequential-Access", + "Printer ", + "Processor ", + "WORM ", + "CD-ROM ", + "Scanner ", + "Optical Device ", + "Medium Changer ", + "Communications " +}; + +static void print_inquiry(unsigned char *data) +{ + int i; + + printk(KERN_INFO " Vendor: "); + for (i = 8; i < 16; i++) + { + if (data[i] >= 0x20 && i < data[4] + 5) + printk("%c", data[i]); + else + printk(" "); + } + + printk(" Model: "); + for (i = 16; i < 32; i++) + { + if (data[i] >= 0x20 && i < data[4] + 5) + printk("%c", data[i]); + else + printk(" "); + } + + printk(" Rev: "); + for (i = 32; i < 36; i++) + { + if (data[i] >= 0x20 && i < data[4] + 5) + printk("%c", data[i]); + else + printk(" "); + } + + printk("\n"); + + i = data[0] & 0x1f; + + printk(KERN_INFO " Type: %s ", (i < MAX_SCSI_DEVICE_CODE + ? scsi_device_types[i] + : "Unknown ")); + printk(" ANSI SCSI revision: %02x", data[2] & 0x07); + if ((data[2] & 0x07) == 1 && (data[3] & 0x0f) == 1) + printk(" CCS\n"); + else + printk("\n"); +} + + +/* + * Changes by Martin Rogge, 9th Aug 1995: + * acsi_devinit has been taken out of acsi_geninit, because it needs + * to be called from revalidate_acsidisk. The result of request sense + * is now checked for DRIVE NOT READY. + * + * The structure *aip is only valid when acsi_devinit returns + * DEV_SUPPORTED. + * + */ + +#define DEV_NONE 0 +#define DEV_UNKNOWN 1 +#define DEV_SUPPORTED 2 +#define DEV_SLM 3 + +static int acsi_devinit(struct acsi_info_struct *aip) +{ + int status, got_inquiry; + SENSE_DATA sense; + unsigned char reqsense, extsense; + + /*****************************************************************/ + /* Do a TEST UNIT READY command to test the presence of a device */ + /*****************************************************************/ + + CMDSET_TARG_LUN(tur_cmd, aip->target, aip->lun); + if (!acsicmd_nodma(tur_cmd, 0)) { + /* timed out -> no device here */ +#ifdef DEBUG_DETECT + printk("target %d lun %d: timeout\n", aip->target, aip->lun); +#endif + return DEV_NONE; + } + + /*************************/ + /* Read the ACSI status. */ + /*************************/ + + status = acsi_getstatus(); + if (status) { + if (status == 0x12) { + /* The SLM printer should be the only device that + * responds with the error code in the status byte. In + * correct status bytes, bit 4 is never set. + */ + printk( KERN_INFO "Detected SLM printer at id %d lun %d\n", + aip->target, aip->lun); + return DEV_SLM; + } + /* ignore CHECK CONDITION, since some devices send a + UNIT ATTENTION */ + if ((status & 0x1e) != 0x2) { +#ifdef DEBUG_DETECT + printk("target %d lun %d: status %d\n", + aip->target, aip->lun, status); +#endif + return DEV_UNKNOWN; + } + } + + /*******************************/ + /* Do a REQUEST SENSE command. */ + /*******************************/ + + if (!acsi_reqsense(acsi_buffer, aip->target, aip->lun)) { + printk( KERN_WARNING "acsi_reqsense failed\n"); + acsi_buffer[0] = 0; + acsi_buffer[2] = UNIT_ATTENTION; + } + reqsense = acsi_buffer[0]; + extsense = acsi_buffer[2] & 0xf; + if (status) { + if ((reqsense & 0x70) == 0x70) { /* extended sense */ + if (extsense != UNIT_ATTENTION && + extsense != NOT_READY) { +#ifdef DEBUG_DETECT + printk("target %d lun %d: extended sense %d\n", + aip->target, aip->lun, extsense); +#endif + return DEV_UNKNOWN; + } + } + else { + if (reqsense & 0x7f) { +#ifdef DEBUG_DETECT + printk("target %d lun %d: sense %d\n", + aip->target, aip->lun, reqsense); +#endif + return DEV_UNKNOWN; + } + } + } + else + if (reqsense == 0x4) { /* SH204 Bug workaround */ +#ifdef DEBUG_DETECT + printk("target %d lun %d status=0 sense=4\n", + aip->target, aip->lun); +#endif + return DEV_UNKNOWN; + } + + /***********************************************************/ + /* Do an INQUIRY command to get more infos on this device. */ + /***********************************************************/ + + /* Assume default values */ + aip->removable = 1; + aip->read_only = 0; + aip->old_atari_disk = 0; + aip->changed = (extsense == NOT_READY); /* medium inserted? */ + aip->size = DEFAULT_SIZE; + got_inquiry = 0; + /* Fake inquiry result for old atari disks */ + memcpy(acsi_buffer, "\000\000\001\000 Adaptec 40xx" + " ", 40); + CMDSET_TARG_LUN(inquiry_cmd, aip->target, aip->lun); + if (acsicmd_dma(inquiry_cmd, acsi_buffer, 1, 0, 0) && + acsi_getstatus() == 0) { + acsicmd_nodma(inquiry_cmd, 0); + acsi_getstatus(); + dma_cache_maintenance( phys_acsi_buffer, 256, 0 ); + got_inquiry = 1; + aip->removable = !!(acsi_buffer[1] & 0x80); + } + if (aip->type == NONE) /* only at boot time */ + print_inquiry(acsi_buffer); + switch(acsi_buffer[0]) { + case TYPE_DISK: + aip->type = HARDDISK; + break; + case TYPE_ROM: + aip->type = CDROM; + aip->read_only = 1; + break; + default: + return DEV_UNKNOWN; + } + /****************************/ + /* Do a MODE SENSE command. */ + /****************************/ + + if (!acsi_mode_sense(aip->target, aip->lun, &sense)) { + printk( KERN_WARNING "No mode sense data.\n" ); + return DEV_UNKNOWN; + } + if ((SECTOR_SIZE(sense) != 512) && + ((aip->type != CDROM) || + !acsi_change_blk_size(aip->target, aip->lun) || + !acsi_mode_sense(aip->target, aip->lun, &sense) || + (SECTOR_SIZE(sense) != 512))) { + printk( KERN_WARNING "Sector size != 512 not supported.\n" ); + return DEV_UNKNOWN; + } + /* There are disks out there that claim to have 0 sectors... */ + if (CAPACITY(sense)) + aip->size = CAPACITY(sense); /* else keep DEFAULT_SIZE */ + if (!got_inquiry && SENSE_TYPE(sense) == SENSE_TYPE_ATARI) { + /* If INQUIRY failed and the sense data suggest an old + * Atari disk (SH20x, Megafile), the disk is not removable + */ + aip->removable = 0; + aip->old_atari_disk = 1; + } + + /******************/ + /* We've done it. */ + /******************/ + + return DEV_SUPPORTED; +} + +#ifdef CONFIG_ATARI_SLM_MODULE +void acsi_attach_SLMs( int (*attach_func)( int, int ) ); +#endif + +static struct symbol_table acsi_symbol_table = +{ +#include + + X(acsi_delay_start), + X(acsi_delay_end), + X(acsi_wait_for_IRQ), + X(acsi_wait_for_noIRQ), + X(acsicmd_nodma), + X(acsi_getstatus), + X(acsi_buffer), + X(phys_acsi_buffer), +#ifdef CONFIG_ATARI_SLM_MODULE + X(acsi_extstatus), + X(acsi_end_extstatus), + X(acsi_extcmd), + X(acsi_attach_SLMs), +#endif + +#include +}; + +#ifdef CONFIG_ATARI_SLM_MODULE +/* to remember IDs of SLM devices, SLM module is loaded later + * (index is target#, contents is lun#, -1 means "no SLM") */ +int SLM_devices[8]; +#endif + +static void acsi_geninit( struct gendisk *gd ) +{ + int i, target, lun; + struct acsi_info_struct *aip; +#ifdef CONFIG_ATARI_SLM + int n_slm = 0; +#endif + + printk( KERN_INFO "Probing ACSI devices:\n" ); + NDevices = 0; +#ifdef CONFIG_ATARI_SLM_MODULE + for( i = 0; i < 8; ++i ) + SLM_devices[i] = -1; +#endif + stdma_lock(NULL, NULL); + + for (target = 0; target < 8 && NDevices < MAX_DEV; ++target) { + lun = 0; + do { + aip = &acsi_info[NDevices]; + aip->type = NONE; + aip->target = target; + aip->lun = lun; + i = acsi_devinit(aip); + switch (i) { + case DEV_SUPPORTED: + printk( KERN_INFO "Detected "); + switch (aip->type) { + case HARDDISK: + printk("disk"); + break; + case CDROM: + printk("cdrom"); + break; + default: + } + printk(" ad%c at id %d lun %d ", + 'a' + NDevices, target, lun); + if (aip->removable) + printk("(removable) "); + if (aip->read_only) + printk("(read-only) "); + if (aip->size == DEFAULT_SIZE) + printk(" unkown size, using default "); + printk("%ld MByte\n", + (aip->size*512+1024*1024/2)/(1024*1024)); + NDevices++; + break; + case DEV_SLM: +#ifdef CONFIG_ATARI_SLM + n_slm += attach_slm( target, lun ); + break; +#endif +#ifdef CONFIG_ATARI_SLM_MODULE + SLM_devices[target] = lun; + break; +#endif + /* neither of the above: fall through to unknown device */ + case DEV_UNKNOWN: + printk( KERN_INFO "Detected unsupported device at " + "id %d lun %d\n", target, lun); + break; + } + } +#ifdef CONFIG_ACSI_MULTI_LUN + while (i != DEV_NONE && ++lun < MAX_LUN); +#else + while (0); +#endif + } + + /* reenable interrupt */ + ENABLE_IRQ(); + stdma_release(); + +#ifndef CONFIG_ATARI_SLM + printk( KERN_INFO "Found %d ACSI device(s) total.\n", NDevices ); +#else + printk( KERN_INFO "Found %d ACSI device(s) and %d SLM printer(s) total.\n", + NDevices, n_slm ); +#endif + + for( i = 0; i < NDevices; ++i ) { + acsi_part[i<<4].start_sect = 0; + acsi_part[i<<4].nr_sects = acsi_info[i].size; + } + acsi_gendisk.nr_real = NDevices; + for( i = 0; i < (MAX_DEV << 4); i++ ) + acsi_blocksizes[i] = 1024; + blksize_size[MAJOR_NR] = acsi_blocksizes; + register_symtab (&acsi_symbol_table); +} + +#ifdef CONFIG_ATARI_SLM_MODULE +/* call attach_slm() for each device that is a printer; needed for init of SLM + * driver as a module, since it's not yet present if acsi.c is inited and thus + * the bus gets scanned. */ +void acsi_attach_SLMs( int (*attach_func)( int, int ) ) +{ + int i, n = 0; + + for( i = 0; i < 8; ++i ) + if (SLM_devices[i] >= 0) + n += (*attach_func)( i, SLM_devices[i] ); + printk( KERN_INFO "Found %d SLM printer(s) total.\n", n ); +} +#endif /* CONFIG_ATARI_SLM_MODULE */ + +static struct file_operations acsi_fops = { + NULL, /* lseek - default */ + block_read, /* read - general block-dev read */ + block_write, /* write - general block-dev write */ + NULL, /* readdir - bad */ + NULL, /* select */ + acsi_ioctl, /* ioctl */ + NULL, /* mmap */ + acsi_open, /* open */ + acsi_release, /* release */ + block_fsync, /* fsync */ + NULL, /* fasync */ + acsi_media_change, /* media_change */ + acsi_revalidate, /* revalidate */ +}; + + +int acsi_init( void ) + +{ + if (!MACH_IS_ATARI || !ATARIHW_PRESENT(ACSI)) + return 0; + + if (register_blkdev( MAJOR_NR, "ad", &acsi_fops )) { + printk( KERN_ERR "Unable to get major %d for ACSI\n", MAJOR_NR ); + return -EBUSY; + } + + if (!(acsi_buffer = (char *)__get_free_pages(GFP_KERNEL, + ACSI_BUFFER_ORDER, 1))) { + printk( KERN_ERR "Unable to get ACSI ST-Ram buffer.\n" ); + unregister_blkdev( MAJOR_NR, "ad" ); + return -ENOMEM; + } + phys_acsi_buffer = VTOP( acsi_buffer ); + STramMask = ATARIHW_PRESENT(EXTD_DMA) ? 0x00000000 : 0xff000000; + + blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST; + read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read-ahead */ + acsi_gendisk.next = gendisk_head; + gendisk_head = &acsi_gendisk; + +#ifdef CONFIG_ATARI_SLM + return( slm_init() ); +#else + return 0; +#endif +} + + +#ifdef MODULE +int init_module(void) +{ + int err; + + if ((err = acsi_init())) + return( err ); + printk( KERN_INFO "ACSI driver loaded as module.\n"); + acsi_geninit( &(struct gendisk){ 0,0,0,0,0,0,0,0,0,0,0 } ); + return( 0 ); +} + +void cleanup_module(void) +{ + del_timer( &acsi_timer ); + blk_dev[MAJOR_NR].request_fn = 0; + free_pages( acsi_buffer, ACSI_BUFFER_ORDER ); + + if (unregister_blkdev( MAJOR_NR, "ad" ) != 0) + printk( KERN_ERR "acsi: cleanup_module failed\n"); +} +#endif + +#define DEVICE_BUSY busy[device] +#define USAGE access_count[device] +#define GENDISK_STRUCT acsi_gendisk + +/* + * This routine is called to flush all partitions and partition tables + * for a changed scsi disk, and then re-read the new partition table. + * If we are revalidating a disk because of a media change, then we + * enter with usage == 0. If we are using an ioctl, we automatically have + * usage == 1 (we need an open channel to use an ioctl :-), so this + * is our limit. + * + * Changes by Martin Rogge, 9th Aug 1995: + * got cd-roms to work by calling acsi_devinit. There are only two problems: + * First, if there is no medium inserted, the status will remain "changed". + * That is no problem at all, but our design of three-valued logic (medium + * changed, medium not changed, no medium inserted). + * Secondly the check could fail completely and the drive could deliver + * nonsensical data, which could mess up the acsi_info[] structure. In + * that case we try to make the entry safe. + * + */ + +static int revalidate_acsidisk( int dev, int maxusage ) +{ + int device, major; + struct gendisk * gdev; + int max_p, start, i; + struct acsi_info_struct *aip; + + device = DEVICE_NR(MINOR(dev)); + aip = &acsi_info[device]; + gdev = &GENDISK_STRUCT; + + cli(); + if (DEVICE_BUSY || USAGE > maxusage) { + sti(); + return -EBUSY; + }; + DEVICE_BUSY = 1; + sti(); + + max_p = gdev->max_p; + start = device << gdev->minor_shift; + major = MAJOR_NR << 8; + + for( i = max_p - 1; i >= 0 ; i-- ) { + sync_dev( major | start | i ); + invalidate_inodes( major | start | i ); + invalidate_buffers( major | start | i ); + gdev->part[start+i].start_sect = 0; + gdev->part[start+i].nr_sects = 0; + }; + + stdma_lock( NULL, NULL ); + + if (acsi_devinit(aip) != DEV_SUPPORTED) { + printk( KERN_ERR "ACSI: revalidate failed for target %d lun %d\n", + aip->target, aip->lun); + aip->size = 0; + aip->read_only = 1; + aip->removable = 1; + aip->changed = 1; /* next acsi_open will try again... */ + } + + ENABLE_IRQ(); + stdma_release(); + + gdev->part[start].nr_sects = aip->size; + if (aip->type == HARDDISK && aip->size > 0) + resetup_one_dev(gdev, device); + + DEVICE_BUSY = 0; + wake_up(&busy_wait); + return 0; +} + + +static int acsi_revalidate (dev_t dev) +{ + return revalidate_acsidisk (dev, 0); +} diff -u --recursive --new-file v2.1.16/linux/drivers/block/acsi_slm.c linux/drivers/block/acsi_slm.c --- v2.1.16/linux/drivers/block/acsi_slm.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/block/acsi_slm.c Fri Dec 20 11:19:59 1996 @@ -0,0 +1,1032 @@ +/* + * acsi_slm.c -- Device driver for the Atari SLM laser printer + * + * Copyright 1995 Roman Hodek + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive for + * more details. + * + */ + +/* + +Notes: + +The major number for SLM printers is 28 (like ACSI), but as a character +device, not block device. The minor number is the number of the printer (if +you have more than one SLM; currently max. 2 (#define-constant) SLMs are +supported). The device can be opened for reading and writing. If reading it, +you get some status infos (MODE SENSE data). Writing mode is used for the data +to be printed. Some ioctls allow to get the printer status and to tune printer +modes and some internal variables. + +A special problem of the SLM driver is the timing and thus the buffering of +the print data. The problem is that all the data for one page must be present +in memory when printing starts, else --when swapping occurs-- the timing could +not be guaranteed. There are several ways to assure this: + + 1) Reserve a buffer of 1196k (maximum page size) statically by + atari_stram_alloc(). The data are collected there until they're complete, + and then printing starts. Since the buffer is reserved, no further + considerations about memory and swapping are needed. So this is the + simplest method, but it needs a lot of memory for just the SLM. + + An striking advantage of this method is (supposed the SLM_CONT_CNT_REPROG + method works, see there), that there are no timing problems with the DMA + anymore. + + 2) The other method would be to reserve the buffer dynamically each time + printing is required. I could think of looking at mem_map where the + largest unallocted ST-RAM area is, taking the area, and then extending it + by swapping out the neighbored pages, until the needed size is reached. + This requires some mm hacking, but seems possible. The only obstacle could + be pages that cannot be swapped out (reserved pages)... + + 3) Another possibility would be to leave the real data in user space and to + work with two dribble buffers of about 32k in the driver: While the one + buffer is DMAed to the SLM, the other can be filled with new data. But + to keep the timing, that requires that the user data remain in memory and + are not swapped out. Requires mm hacking, too, but maybe not so bad as + method 2). + +*/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +#undef DEBUG + +/* Define this if the page data are continuous in physical memory. That + * requires less reprogramming of the ST-DMA */ +#define SLM_CONTINUOUS_DMA + +/* Use continuous reprogramming of the ST-DMA counter register. This is + * --strictly speaking-- not allowed, Atari recommends not to look at the + * counter register while a DMA is going on. But I don't know if that applies + * only for reading the register, or also writing to it. Writing only works + * fine for me... The advantage is that the timing becomes absolutely + * uncritical: Just update each, say 200ms, the counter reg to its maximum, + * and the DMA will work until the status byte interrupt occurs. + */ +#define SLM_CONT_CNT_REPROG + +#define MAJOR_NR ACSI_MAJOR + +#define CMDSET_TARG_LUN(cmd,targ,lun) \ + do { \ + cmd[0] = (cmd[0] & ~0xe0) | (targ)<<5; \ + cmd[1] = (cmd[1] & ~0xe0) | (lun)<<5; \ + } while(0) + +#define START_TIMER(to) \ + do { \ + del_timer( &slm_timer ); \ + slm_timer.expires = jiffies + (to); \ + add_timer( &slm_timer ); \ + } while(0) + +#define STOP_TIMER() \ + do { \ + del_timer( &slm_timer ); \ + } while(0) + + +static char slmreqsense_cmd[6] = { 0x03, 0, 0, 0, 0, 0 }; +static char slmprint_cmd[6] = { 0x0a, 0, 0, 0, 0, 0 }; +static char slminquiry_cmd[6] = { 0x12, 0, 0, 0, 0, 0x80 }; +static char slmmsense_cmd[6] = { 0x1a, 0, 0, 0, 255, 0 }; +static char slmmselect_cmd[6] = { 0x15, 0, 0, 0, 0, 0 }; + + +#define MAX_SLM 2 + +static struct slm { + unsigned target; /* target number */ + unsigned lun; /* LUN in target controller */ + unsigned wbusy : 1; /* output part busy */ + unsigned rbusy : 1; /* status part busy */ +} slm_info[MAX_SLM]; + +int N_SLM_Printers = 0; + +/* printer buffer */ +static unsigned char *SLMBuffer; /* start of buffer */ +static unsigned char *BufferP; /* current position in buffer */ +static int BufferSize; /* length of buffer for page size */ + +typedef enum { IDLE, FILLING, PRINTING } SLMSTATE; +static SLMSTATE SLMState; +static int SLMBufOwner; /* SLM# currently using the buffer */ + +/* DMA variables */ +#ifndef SLM_CONT_CNT_REPROG +static unsigned long SLMCurAddr; /* current base addr of DMA chunk */ +static unsigned long SLMEndAddr; /* expected end addr */ +static unsigned long SLMSliceSize; /* size of one DMA chunk */ +#endif +static int SLMError; + +/* wait queues */ +static struct wait_queue *slm_wait; /* waiting for buffer */ +static struct wait_queue *print_wait; /* waiting for printing finished */ + +/* status codes */ +#define SLMSTAT_OK 0x00 +#define SLMSTAT_ORNERY 0x02 +#define SLMSTAT_TONER 0x03 +#define SLMSTAT_WARMUP 0x04 +#define SLMSTAT_PAPER 0x05 +#define SLMSTAT_DRUM 0x06 +#define SLMSTAT_INJAM 0x07 +#define SLMSTAT_THRJAM 0x08 +#define SLMSTAT_OUTJAM 0x09 +#define SLMSTAT_COVER 0x0a +#define SLMSTAT_FUSER 0x0b +#define SLMSTAT_IMAGER 0x0c +#define SLMSTAT_MOTOR 0x0d +#define SLMSTAT_VIDEO 0x0e +#define SLMSTAT_SYSTO 0x10 +#define SLMSTAT_OPCODE 0x12 +#define SLMSTAT_DEVNUM 0x15 +#define SLMSTAT_PARAM 0x1a +#define SLMSTAT_ACSITO 0x1b /* driver defined */ +#define SLMSTAT_NOTALL 0x1c /* driver defined */ + +static char *SLMErrors[] = { + /* 0x00 */ "OK and ready", + /* 0x01 */ NULL, + /* 0x02 */ "ornery printer", + /* 0x03 */ "toner empty", + /* 0x04 */ "warming up", + /* 0x05 */ "paper empty", + /* 0x06 */ "drum empty", + /* 0x07 */ "input jam", + /* 0x08 */ "through jam", + /* 0x09 */ "output jam", + /* 0x0a */ "cover open", + /* 0x0b */ "fuser malfunction", + /* 0x0c */ "imager malfunction", + /* 0x0d */ "motor malfunction", + /* 0x0e */ "video malfunction", + /* 0x0f */ NULL, + /* 0x10 */ "printer system timeout", + /* 0x11 */ NULL, + /* 0x12 */ "invalid operation code", + /* 0x13 */ NULL, + /* 0x14 */ NULL, + /* 0x15 */ "invalid device number", + /* 0x16 */ NULL, + /* 0x17 */ NULL, + /* 0x18 */ NULL, + /* 0x19 */ NULL, + /* 0x1a */ "invalid parameter list", + /* 0x1b */ "ACSI timeout", + /* 0x1c */ "not all printed" +}; + +#define N_ERRORS (sizeof(SLMErrors)/sizeof(*SLMErrors)) + +/* real (driver caused) error? */ +#define IS_REAL_ERROR(x) (x > 0x10) + + +static struct { + char *name; + int w, h; +} StdPageSize[] = { + { "Letter", 2400, 3180 }, + { "Legal", 2400, 4080 }, + { "A4", 2336, 3386 }, + { "B5", 2016, 2914 } +}; + +#define N_STD_SIZES (sizeof(StdPageSize)/sizeof(*StdPageSize)) + +#define SLM_BUFFER_SIZE (2336*3386/8) /* A4 for now */ +#define SLM_DMA_AMOUNT 255 /* #sectors to program the DMA for */ + +#ifdef SLM_CONTINUOUS_DMA +# define SLM_DMA_INT_OFFSET 0 /* DMA goes until seccnt 0, no offs */ +# define SLM_DMA_END_OFFSET 32 /* 32 Byte ST-DMA FIFO */ +# define SLM_SLICE_SIZE(w) (255*512) +#else +# define SLM_DMA_INT_OFFSET 32 /* 32 Byte ST-DMA FIFO */ +# define SLM_DMA_END_OFFSET 32 /* 32 Byte ST-DMA FIFO */ +# define SLM_SLICE_SIZE(w) ((254*512)/(w/8)*(w/8)) +#endif + +/* calculate the number of jiffies to wait for 'n' bytes */ +#ifdef SLM_CONT_CNT_REPROG +#define DMA_TIME_FOR(n) 50 +#define DMA_STARTUP_TIME 0 +#else +#define DMA_TIME_FOR(n) (n/1400-1) +#define DMA_STARTUP_TIME 650 +#endif + +/***************************** Prototypes *****************************/ + +static char *slm_errstr( int stat ); +static int slm_getstats( char *buffer, int device ); +static long slm_read( struct inode *node, struct file* file, char *buf, + unsigned long count ); +static void start_print( int device ); +static void slm_interrupt(int irc, void *data, struct pt_regs *fp); +static void slm_test_ready( unsigned long dummy ); +static void set_dma_addr( unsigned long paddr ); +static unsigned long get_dma_addr( void ); +static long slm_write( struct inode *node, struct file *file, const char *buf, + unsigned long count ); +static int slm_ioctl( struct inode *inode, struct file *file, unsigned int + cmd, unsigned long arg ); +static int slm_open( struct inode *inode, struct file *file ); +static void slm_release( struct inode *inode, struct file *file ); +static int slm_req_sense( int device ); +static int slm_mode_sense( int device, char *buffer, int abs_flag ); +static int slm_mode_select( int device, char *buffer, int len, int + default_flag ); +static int slm_get_pagesize( int device, int *w, int *h ); + +/************************* End of Prototypes **************************/ + + +static struct timer_list slm_timer = { NULL, NULL, 0, 0, slm_test_ready }; + +static struct file_operations slm_fops = { + NULL, /* lseek - default */ + slm_read, /* read - status reading */ + slm_write, /* write - printing data write */ + NULL, /* readdir - bad */ + NULL, /* select */ + slm_ioctl, /* ioctl */ + NULL, /* mmap */ + slm_open, /* open */ + slm_release, /* release */ + NULL /* fsync */ +}; + + +/* ---------------------------------------------------------------------- */ +/* Status Functions */ + + +static char *slm_errstr( int stat ) + +{ char *p; + static char str[22]; + + stat &= 0x1f; + if (stat >= 0 && stat < N_ERRORS && (p = SLMErrors[stat])) + return( p ); + sprintf( str, "unknown status 0x%02x", stat ); + return( str ); +} + + +static int slm_getstats( char *buffer, int device ) + +{ int len = 0, stat, i, w, h; + unsigned char buf[256]; + + stat = slm_mode_sense( device, buf, 0 ); + if (IS_REAL_ERROR(stat)) + return( -EIO ); + +#define SHORTDATA(i) ((buf[i] << 8) | buf[i+1]) +#define BOOLDATA(i,mask) ((buf[i] & mask) ? "on" : "off") + + w = SHORTDATA( 3 ); + h = SHORTDATA( 1 ); + + len += sprintf( buffer+len, "Status\t\t%s\n", + slm_errstr( stat ) ); + len += sprintf( buffer+len, "Page Size\t%dx%d", + w, h ); + + for( i = 0; i < N_STD_SIZES; ++i ) { + if (w == StdPageSize[i].w && h == StdPageSize[i].h) + break; + } + if (i < N_STD_SIZES) + len += sprintf( buffer+len, " (%s)", StdPageSize[i].name ); + buffer[len++] = '\n'; + + len += sprintf( buffer+len, "Top/Left Margin\t%d/%d\n", + SHORTDATA( 5 ), SHORTDATA( 7 ) ); + len += sprintf( buffer+len, "Manual Feed\t%s\n", + BOOLDATA( 9, 0x01 ) ); + len += sprintf( buffer+len, "Input Select\t%d\n", + (buf[9] >> 1) & 7 ); + len += sprintf( buffer+len, "Auto Select\t%s\n", + BOOLDATA( 9, 0x10 ) ); + len += sprintf( buffer+len, "Prefeed Paper\t%s\n", + BOOLDATA( 9, 0x20 ) ); + len += sprintf( buffer+len, "Thick Pixels\t%s\n", + BOOLDATA( 9, 0x40 ) ); + len += sprintf( buffer+len, "H/V Resol.\t%d/%d dpi\n", + SHORTDATA( 12 ), SHORTDATA( 10 ) ); + len += sprintf( buffer+len, "System Timeout\t%d\n", + buf[14] ); + len += sprintf( buffer+len, "Scan Time\t%d\n", + SHORTDATA( 15 ) ); + len += sprintf( buffer+len, "Page Count\t%d\n", + SHORTDATA( 17 ) ); + len += sprintf( buffer+len, "In/Out Cap.\t%d/%d\n", + SHORTDATA( 19 ), SHORTDATA( 21 ) ); + len += sprintf( buffer+len, "Stagger Output\t%s\n", + BOOLDATA( 23, 0x01 ) ); + len += sprintf( buffer+len, "Output Select\t%d\n", + (buf[23] >> 1) & 7 ); + len += sprintf( buffer+len, "Duplex Print\t%s\n", + BOOLDATA( 23, 0x10 ) ); + len += sprintf( buffer+len, "Color Sep.\t%s\n", + BOOLDATA( 23, 0x20 ) ); + + return( len ); +} + + +static long slm_read( struct inode *node, struct file* file, + char *buf, unsigned long count ) + +{ unsigned long page; + int length; + int end; + + if (count < 0) + return( -EINVAL ); + if (!(page = __get_free_page( GFP_KERNEL ))) + return( -ENOMEM ); + + length = slm_getstats( (char *)page, MINOR(node->i_rdev) ); + if (length < 0) { + free_page( page ); + return( length ); + } + if (file->f_pos >= length) { + free_page( page ); + return( 0 ); + } + if (count + file->f_pos > length) + count = length - file->f_pos; + end = count + file->f_pos; + copy_to_user( buf, (char *)page + file->f_pos, count ); + free_page( page ); + file->f_pos = end; + return( count ); +} + + +/* ---------------------------------------------------------------------- */ +/* Printing */ + + +static void start_print( int device ) + +{ struct slm *sip = &slm_info[device]; + unsigned char *cmd; + unsigned long paddr; + int i; + + stdma_lock( slm_interrupt, NULL ); + + CMDSET_TARG_LUN( slmprint_cmd, sip->target, sip->lun ); + cmd = slmprint_cmd; + paddr = VTOP( SLMBuffer ); + dma_cache_maintenance( paddr, VTOP(BufferP)-paddr, 1 ); + DISABLE_IRQ(); + + /* Low on A1 */ + dma_wd.dma_mode_status = 0x88; + MFPDELAY(); + + /* send the command bytes except the last */ + for( i = 0; i < 5; ++i ) { + DMA_LONG_WRITE( *cmd++, 0x8a ); + udelay(20); + if (!acsi_wait_for_IRQ( HZ/2 )) { + SLMError = 1; + return; /* timeout */ + } + } + /* last command byte */ + DMA_LONG_WRITE( *cmd++, 0x82 ); + MFPDELAY(); + /* set DMA address */ + set_dma_addr( paddr ); + /* program DMA for write and select sector counter reg */ + dma_wd.dma_mode_status = 0x192; + MFPDELAY(); + /* program for 255*512 bytes and start DMA */ + DMA_LONG_WRITE( SLM_DMA_AMOUNT, 0x112 ); + +#ifndef SLM_CONT_CNT_REPROG + SLMCurAddr = paddr; + SLMEndAddr = paddr + SLMSliceSize + SLM_DMA_INT_OFFSET; +#endif + START_TIMER( DMA_STARTUP_TIME + DMA_TIME_FOR( SLMSliceSize )); +#if !defined(SLM_CONT_CNT_REPROG) && defined(DEBUG) + printk( "SLM: CurAddr=%#lx EndAddr=%#lx timer=%ld\n", + SLMCurAddr, SLMEndAddr, DMA_TIME_FOR( SLMSliceSize ) ); +#endif + + ENABLE_IRQ(); +} + + +/* Only called when an error happened or at the end of a page */ + +static void slm_interrupt(int irc, void *data, struct pt_regs *fp) + +{ unsigned long addr; + int stat; + + STOP_TIMER(); + addr = get_dma_addr(); + stat = acsi_getstatus(); + SLMError = (stat < 0) ? SLMSTAT_ACSITO : + (addr < VTOP(BufferP)) ? SLMSTAT_NOTALL : + stat; + + dma_wd.dma_mode_status = 0x80; + MFPDELAY(); +#ifdef DEBUG + printk( "SLM: interrupt, addr=%#lx, error=%d\n", addr, SLMError ); +#endif + + wake_up( &print_wait ); + stdma_release(); + ENABLE_IRQ(); +} + + +static void slm_test_ready( unsigned long dummy ) + +{ +#ifdef SLM_CONT_CNT_REPROG + /* program for 255*512 bytes again */ + dma_wd.fdc_acces_seccount = SLM_DMA_AMOUNT; + START_TIMER( DMA_TIME_FOR(0) ); +#ifdef DEBUG + printk( "SLM: reprogramming timer for %d jiffies, addr=%#lx\n", + DMA_TIME_FOR(0), get_dma_addr() ); +#endif + +#else /* !SLM_CONT_CNT_REPROG */ + + unsigned long flags, addr; + int d, ti; +#ifdef DEBUG + struct timeval start_tm, end_tm; + int did_wait = 0; +#endif + + save_flags(flags); + cli(); + + addr = get_dma_addr(); + if ((d = SLMEndAddr - addr) > 0) { + restore_flags(flags); + + /* slice not yet finished, decide whether to start another timer or to + * busy-wait */ + ti = DMA_TIME_FOR( d ); + if (ti > 0) { +#ifdef DEBUG + printk( "SLM: reprogramming timer for %d jiffies, rest %d bytes\n", + ti, d ); +#endif + START_TIMER( ti ); + return; + } + /* wait for desired end address to be reached */ +#ifdef DEBUG + do_gettimeofday( &start_tm ); + did_wait = 1; +#endif + cli(); + while( get_dma_addr() < SLMEndAddr ) + barrier(); + } + + /* slice finished, start next one */ + SLMCurAddr += SLMSliceSize; + +#ifdef SLM_CONTINUOUS_DMA + /* program for 255*512 bytes again */ + dma_wd.fdc_acces_seccount = SLM_DMA_AMOUNT; +#else + /* set DMA address; + * add 2 bytes for the ones in the SLM controller FIFO! */ + set_dma_addr( SLMCurAddr + 2 ); + /* toggle DMA to write and select sector counter reg */ + dma_wd.dma_mode_status = 0x92; + MFPDELAY(); + dma_wd.dma_mode_status = 0x192; + MFPDELAY(); + /* program for 255*512 bytes and start DMA */ + DMA_LONG_WRITE( SLM_DMA_AMOUNT, 0x112 ); +#endif + + restore_flags(flags); + +#ifdef DEBUG + if (did_wait) { + int ms; + do_gettimeofday( &end_tm ); + ms = (end_tm.tv_sec*1000000+end_tm.tv_usec) - + (start_tm.tv_sec*1000000+start_tm.tv_usec); + printk( "SLM: did %ld.%ld ms busy waiting for %d bytes\n", + ms/1000, ms%1000, d ); + } + else + printk( "SLM: didn't wait (!)\n" ); +#endif + + if ((unsigned char *)PTOV( SLMCurAddr + SLMSliceSize ) >= BufferP) { + /* will be last slice, no timer necessary */ +#ifdef DEBUG + printk( "SLM: CurAddr=%#lx EndAddr=%#lx last slice -> no timer\n", + SLMCurAddr, SLMEndAddr ); +#endif + } + else { + /* not last slice */ + SLMEndAddr = SLMCurAddr + SLMSliceSize + SLM_DMA_INT_OFFSET; + START_TIMER( DMA_TIME_FOR( SLMSliceSize )); +#ifdef DEBUG + printk( "SLM: CurAddr=%#lx EndAddr=%#lx timer=%ld\n", + SLMCurAddr, SLMEndAddr, DMA_TIME_FOR( SLMSliceSize ) ); +#endif + } +#endif /* SLM_CONT_CNT_REPROG */ +} + + +static void set_dma_addr( unsigned long paddr ) + +{ unsigned long flags; + + save_flags(flags); + cli(); + dma_wd.dma_lo = (unsigned char)paddr; + paddr >>= 8; + MFPDELAY(); + dma_wd.dma_md = (unsigned char)paddr; + paddr >>= 8; + MFPDELAY(); + if (ATARIHW_PRESENT( EXTD_DMA )) + st_dma_ext_dmahi = (unsigned short)paddr; + else + dma_wd.dma_hi = (unsigned char)paddr; + MFPDELAY(); + restore_flags(flags); +} + + +static unsigned long get_dma_addr( void ) + +{ unsigned long addr; + + addr = dma_wd.dma_lo & 0xff; + MFPDELAY(); + addr |= (dma_wd.dma_md & 0xff) << 8; + MFPDELAY(); + addr |= (dma_wd.dma_hi & 0xff) << 16; + MFPDELAY(); + + return( addr ); +} + + +static long slm_write( struct inode *node, struct file *file, + const char *buf, unsigned long count ) + +{ int device = MINOR( node->i_rdev ); + int n, filled, w, h; + + while( SLMState == PRINTING || + (SLMState == FILLING && SLMBufOwner != device) ) { + interruptible_sleep_on( &slm_wait ); + if (current->signal & ~current->blocked) + return( -ERESTARTSYS ); + } + if (SLMState == IDLE) { + /* first data of page: get current page size */ + if (slm_get_pagesize( device, &w, &h )) + return( -EIO ); + BufferSize = w*h/8; + if (BufferSize > SLM_BUFFER_SIZE) + return( -ENOMEM ); + + SLMState = FILLING; + SLMBufOwner = device; + } + + n = count; + filled = BufferP - SLMBuffer; + if (filled + n > BufferSize) + n = BufferSize - filled; + + copy_from_user( BufferP, buf, n ); + BufferP += n; + filled += n; + + if (filled == BufferSize) { + /* Check the paper size again! The user may have switched it in the + * time between starting the data and finishing them. Would end up in + * a trashy page... */ + if (slm_get_pagesize( device, &w, &h )) + return( -EIO ); + if (BufferSize != w*h/8) { + printk( KERN_NOTICE "slm%d: page size changed while printing\n", + device ); + return( -EAGAIN ); + } + + SLMState = PRINTING; + /* choose a slice size that is a multiple of the line size */ +#ifndef SLM_CONT_CNT_REPROG + SLMSliceSize = SLM_SLICE_SIZE(w); +#endif + + start_print( device ); + sleep_on( &print_wait ); + if (SLMError && IS_REAL_ERROR(SLMError)) { + printk( KERN_ERR "slm%d: %s\n", device, slm_errstr(SLMError) ); + n = -EIO; + } + + SLMState = IDLE; + BufferP = SLMBuffer; + wake_up_interruptible( &slm_wait ); + } + + return( n ); +} + + +/* ---------------------------------------------------------------------- */ +/* ioctl Functions */ + + +static int slm_ioctl( struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg ) + +{ int device = MINOR( inode->i_rdev ), err; + + /* I can think of setting: + * - manual feed + * - paper format + * - copy count + * - ... + * but haven't implemented that yet :-) + * BTW, has anybody better docs about the MODE SENSE/MODE SELECT data? + */ + switch( cmd ) { + + case SLMIORESET: /* reset buffer, i.e. empty the buffer */ + if (!(file->f_mode & 2)) + return( -EINVAL ); + if (SLMState == PRINTING) + return( -EBUSY ); + SLMState = IDLE; + BufferP = SLMBuffer; + wake_up_interruptible( &slm_wait ); + return( 0 ); + + case SLMIOGSTAT: { /* get status */ + int stat; + char *str; + + stat = slm_req_sense( device ); + if (arg) { + str = slm_errstr( stat ); + if (put_user(stat, + (long *)&((struct SLM_status *)arg)->stat)) + return -EFAULT; + copy_to_user( ((struct SLM_status *)arg)->str, str, + strlen(str) + 1 ); + } + return( stat ); + } + + case SLMIOGPSIZE: { /* get paper size */ + int w, h; + + err = verify_area( VERIFY_WRITE, (long *)arg, + sizeof(struct SLM_paper_size) ); + if (err) return( err ); + + if ((err = slm_get_pagesize( device, &w, &h ))) return( err ); + + if (put_user(w, (long *)&((struct SLM_paper_size *)arg)->width)) + return -EFAULT; + if (put_user(h, (long *)&((struct SLM_paper_size *)arg)->height)) + return -EFAULT; + return( 0 ); + } + + case SLMIOGMFEED: /* get manual feed */ + return( -EINVAL ); + + case SLMIOSPSIZE: /* set paper size */ + return( -EINVAL ); + + case SLMIOSMFEED: /* set manual feed */ + return( -EINVAL ); + + } + return( -EINVAL ); +} + + +/* ---------------------------------------------------------------------- */ +/* Opening and Closing */ + + +static int slm_open( struct inode *inode, struct file *file ) + +{ int device; + struct slm *sip; + + device = MINOR(inode->i_rdev); + if (device >= N_SLM_Printers) + return( -ENXIO ); + sip = &slm_info[device]; + + if (file->f_mode & 2) { + /* open for writing is exclusive */ + if (sip->wbusy) + return( -EBUSY ); + sip->wbusy = 1; + } + if (file->f_mode & 1) { + /* open for writing is exclusive */ + if (sip->rbusy) + return( -EBUSY ); + sip->rbusy = 1; + } + + return( 0 ); +} + + +static void slm_release( struct inode *inode, struct file *file ) + +{ int device; + struct slm *sip; + + device = MINOR(inode->i_rdev); + sip = &slm_info[device]; + + if (file->f_mode & 2) + sip->wbusy = 0; + if (file->f_mode & 1) + sip->rbusy = 0; +} + + +/* ---------------------------------------------------------------------- */ +/* ACSI Primitives for the SLM */ + + +static int slm_req_sense( int device ) + +{ int stat, rv; + struct slm *sip = &slm_info[device]; + + stdma_lock( NULL, NULL ); + + CMDSET_TARG_LUN( slmreqsense_cmd, sip->target, sip->lun ); + if (!acsicmd_nodma( slmreqsense_cmd, 0 ) || + (stat = acsi_getstatus()) < 0) + rv = SLMSTAT_ACSITO; + else + rv = stat & 0x1f; + + ENABLE_IRQ(); + stdma_release(); + return( rv ); +} + + +static int slm_mode_sense( int device, char *buffer, int abs_flag ) + +{ unsigned char stat, len; + int rv = 0; + struct slm *sip = &slm_info[device]; + + stdma_lock( NULL, NULL ); + + CMDSET_TARG_LUN( slmmsense_cmd, sip->target, sip->lun ); + slmmsense_cmd[5] = abs_flag ? 0x80 : 0; + if (!acsicmd_nodma( slmmsense_cmd, 0 )) { + rv = SLMSTAT_ACSITO; + goto the_end; + } + + if (!acsi_extstatus( &stat, 1 )) { + acsi_end_extstatus(); + rv = SLMSTAT_ACSITO; + goto the_end; + } + + if (!acsi_extstatus( &len, 1 )) { + acsi_end_extstatus(); + rv = SLMSTAT_ACSITO; + goto the_end; + } + buffer[0] = len; + if (!acsi_extstatus( buffer+1, len )) { + acsi_end_extstatus(); + rv = SLMSTAT_ACSITO; + goto the_end; + } + + acsi_end_extstatus(); + rv = stat & 0x1f; + + the_end: + ENABLE_IRQ(); + stdma_release(); + return( rv ); +} + + +static int slm_mode_select( int device, char *buffer, int len, + int default_flag ) + +{ int stat, rv; + struct slm *sip = &slm_info[device]; + + stdma_lock( NULL, NULL ); + + CMDSET_TARG_LUN( slmmselect_cmd, sip->target, sip->lun ); + slmmselect_cmd[5] = default_flag ? 0x80 : 0; + if (!acsicmd_nodma( slmmselect_cmd, 0 )) { + rv = SLMSTAT_ACSITO; + goto the_end; + } + + if (!default_flag) { + unsigned char c = len; + if (!acsi_extcmd( &c, 1 )) { + rv = SLMSTAT_ACSITO; + goto the_end; + } + if (!acsi_extcmd( buffer, len )) { + rv = SLMSTAT_ACSITO; + goto the_end; + } + } + + stat = acsi_getstatus(); + rv = (stat < 0 ? SLMSTAT_ACSITO : stat); + + the_end: + ENABLE_IRQ(); + stdma_release(); + return( rv ); +} + + +static int slm_get_pagesize( int device, int *w, int *h ) + +{ char buf[256]; + int stat; + + stat = slm_mode_sense( device, buf, 0 ); + ENABLE_IRQ(); + stdma_release(); + + if (stat != SLMSTAT_OK) + return( -EIO ); + + *w = (buf[3] << 8) | buf[4]; + *h = (buf[1] << 8) | buf[2]; + return( 0 ); +} + + +/* ---------------------------------------------------------------------- */ +/* Initialization */ + + +int attach_slm( int target, int lun ) + +{ static int did_register = 0; + int len; + + if (N_SLM_Printers >= MAX_SLM) { + printk( KERN_WARNING "Too much SLMs\n" ); + return( 0 ); + } + + /* do an INQUIRY */ + udelay(100); + CMDSET_TARG_LUN( slminquiry_cmd, target, lun ); + if (!acsicmd_nodma( slminquiry_cmd, 0 )) { + inq_timeout: + printk( KERN_ERR "SLM inquiry command timed out.\n" ); + inq_fail: + acsi_end_extstatus(); + return( 0 ); + } + /* read status and header of return data */ + if (!acsi_extstatus( SLMBuffer, 6 )) + goto inq_timeout; + + if (SLMBuffer[1] != 2) { /* device type == printer? */ + printk( KERN_ERR "SLM inquiry returned device type != printer\n" ); + goto inq_fail; + } + len = SLMBuffer[5]; + + /* read id string */ + if (!acsi_extstatus( SLMBuffer, len )) + goto inq_timeout; + acsi_end_extstatus(); + SLMBuffer[len] = 0; + + if (!did_register) { + did_register = 1; + } + + slm_info[N_SLM_Printers].target = target; + slm_info[N_SLM_Printers].lun = lun; + slm_info[N_SLM_Printers].wbusy = 0; + slm_info[N_SLM_Printers].rbusy = 0; + + printk( KERN_INFO " Printer: %s\n", SLMBuffer ); + printk( KERN_INFO "Detected slm%d at id %d lun %d\n", + N_SLM_Printers, target, lun ); + N_SLM_Printers++; + return( 1 ); +} + + +int slm_init( void ) + +{ + if (register_chrdev( MAJOR_NR, "slm", &slm_fops )) { + printk( KERN_ERR "Unable to get major %d for ACSI SLM\n", MAJOR_NR ); + return -EBUSY; + } + + if (!(SLMBuffer = kmalloc( SLM_BUFFER_SIZE, GFP_KERNEL | GFP_DMA))) { + printk( KERN_ERR "Unable to get SLM ST-Ram buffer.\n" ); + unregister_chrdev( MAJOR_NR, "slm" ); + return -ENOMEM; + } + BufferP = SLMBuffer; + SLMState = IDLE; + + return 0; +} + +#ifdef MODULE + +/* from acsi.c */ +void acsi_attach_SLMs( int (*attach_func)( int, int ) ); + +int init_module(void) +{ + int err; + + if ((err = slm_init())) + return( err ); + /* This calls attach_slm() for every target/lun where acsi.c detected a + * printer */ + acsi_attach_SLMs( attach_slm ); + return( 0 ); +} + +void cleanup_module(void) +{ + if (unregister_chrdev( MAJOR_NR, "slm" ) != 0) + printk( KERN_ERR "acsi_slm: cleanup_module failed\n"); +} +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/block/amiflop.c linux/drivers/block/amiflop.c --- v2.1.16/linux/drivers/block/amiflop.c Wed Oct 16 10:48:07 1996 +++ linux/drivers/block/amiflop.c Fri Dec 20 11:20:00 1996 @@ -24,7 +24,7 @@ * - works but I think it's inefficient. (look in redo_fd_request) * But the changes were very efficient. (only three and a half lines) * - * january 1995 added special ioctl for tracking down read/write problems + * january 1996 added special ioctl for tracking down read/write problems * - usage ioctl(d, RAW_TRACK, ptr); the raw track buffer (MFM-encoded data * is copied to area. (area should be large enough since no checking is * done - 30K is currently sufficient). return the actual size of the @@ -32,6 +32,10 @@ * - replaced udelays() by a timer (CIAA timer B) for the waits * needed for the disk mechanic. * + * february 1996 fixed error recovery and multiple disk access + * - both got broken the first time I tampered with the driver :-( + * - still not safe, but better than before + * * revised Marts 3rd, 1996 by Jes Sorensen for use in the 1.3.28 kernel. * - Minor changes to accept the kdev_t. * - Replaced some more udelays with ms_delays. Udelay is just a loop, @@ -43,6 +47,9 @@ * that when we start using 16 (24?) bit minors. */ +#ifdef MODULE +#include +#endif #include #include #include @@ -55,13 +62,13 @@ #include #include +#include +#include #include #include #include #include #include -#include -#include #define MAJOR_NR FLOPPY_MAJOR #include @@ -126,15 +133,15 @@ static struct fd_drive_type drive_types[] = { /* code name tr he rdsz wrsz sm pc1 pc2 sd st st*/ /* warning: times are now in milliseconds (ms) */ - { FD_DD_3, "DD 3.5", 160, 2, 14716, 13630, 1, 80,161, 3, 18, 1}, - { FD_HD_3, "HD 3.5", 160, 2, 28344, 27258, 2, 80,161, 3, 18, 1}, - { FD_DD_5, "DD 5.25", 80, 2, 14716, 13630, 1, 40, 81, 6, 30, 2}, + { FD_DD_3, "DD 3.5", 80, 2, 14716, 13630, 1, 80,161, 3, 18, 1}, + { FD_HD_3, "HD 3.5", 80, 2, 28344, 27258, 2, 80,161, 3, 18, 1}, + { FD_DD_5, "DD 5.25", 40, 2, 14716, 13630, 1, 40, 81, 6, 30, 2}, { FD_NODRIVE, "No Drive", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; static int num_dr_types = sizeof(drive_types) / sizeof(drive_types[0]); /* defaults for 3 1/2" HD-Disks */ -static int floppy_sizes[256]={880,880,880,880,720,720,720,}; +static int floppy_sizes[256]={880,880,880,880,720,720,720,720,}; static int floppy_blocksizes[256]={0,}; /* hardsector size assumed to be 512 */ @@ -142,7 +149,6 @@ { "Amiga", 11 , amiga_read, amiga_write}, { "MS-Dos", 9, dos_read, dos_write} }; -static int num_da_types = sizeof(data_types) / sizeof(data_types[0]); /* current info on each unit */ static struct amiga_floppy_struct unit[FD_MAX_UNITS]; @@ -168,13 +174,20 @@ * information to interrupts. They are the data used for the current * request. */ -static char block_flag = 0; -static int selected = 0; +static volatile char block_flag = 0; +static volatile int selected = 0; static struct wait_queue *wait_fd_block = NULL; -/* Synchronization of FDC access. */ -static volatile int fdc_busy = 0; +/* Synchronization of FDC access */ +/* request loop (trackbuffer) */ +static volatile int fdc_busy = -1; +static volatile int fdc_nested = 0; static struct wait_queue *fdc_wait = NULL; +/* hardware */ +static volatile int hw_busy = -1; +static volatile int hw_nested = 0; +static struct wait_queue *hw_wait = NULL; + static struct wait_queue *motor_wait = NULL; /* MS-Dos MFM Coding tables (should go quick and easy) */ @@ -185,28 +198,117 @@ static unsigned char mfmdecode[128]; /* floppy internal millisecond timer stuff */ -static struct semaphore ms_sem = MUTEX; +static volatile int ms_busy = -1; static struct wait_queue *ms_wait = NULL; #define MS_TICKS ((amiga_eclock+50)/1000) -static void ms_isr(int irq, struct pt_regs *fp, void *dummy) +/* + * Note that MAX_ERRORS=X doesn't imply that we retry every bad read + * max X times - some types of errors increase the errorcount by 2 or + * even 3, so we might actually retry only X/2 times before giving up. + */ +#define MAX_ERRORS 12 + +/* + * The driver is trying to determine the correct media format + * while probing is set. rw_interrupt() clears it after a + * successful access. + */ +static int probing = 0; + +/* Prevent "aliased" accesses. */ +static fd_ref[4] = { 0,0,0,0 }; +static fd_device[4] = { 0,0,0,0 }; + +/* + * Current device number. Taken either from the block header or from the + * format request descriptor. + */ +#define CURRENT_DEVICE (CURRENT->rq_dev) + +/* Current error count. */ +#define CURRENT_ERRORS (CURRENT->errors) + +static void get_fdc(int drive) { +unsigned long flags; + + drive &= 3; + save_flags(flags); + cli(); + if (fdc_busy != drive) + while (!(fdc_busy < 0)) + sleep_on(&fdc_wait); + fdc_busy = drive; + fdc_nested++; + restore_flags(flags); +} + +static inline void rel_fdc(void) +{ +#ifdef DEBUG + if (fdc_nested == 0) + printk("fd: unmatched rel_fdc\n"); +#endif + fdc_nested--; + if (fdc_nested == 0) { + fdc_busy = -1; + wake_up(&fdc_wait); + } +} + +static void get_hw(int drive) +{ +unsigned long flags; + + drive &= 3; + save_flags(flags); + cli(); + if (hw_busy != drive) + while (!(hw_busy < 0)) + sleep_on(&hw_wait); + hw_busy = drive; + hw_nested++; + restore_flags(flags); +} + +static inline void rel_hw(void) +{ +#ifdef DEBUG + if (hw_nested == 0) + printk("fd: unmatched hw_rel\n"); +#endif + hw_nested--; + if (hw_nested == 0) { + hw_busy = -1; + wake_up(&hw_wait); + } +} + +static void ms_isr(int irq, void *dummy, struct pt_regs *fp) +{ +ms_busy = -1; wake_up(&ms_wait); } -/* with the semaphore waits are queued up +/* all waits are queued up A more generic routine would do a schedule a la timer.device */ static void ms_delay(int ms) { + unsigned long flags; int ticks; if (ms > 0) { - down(&ms_sem); - ticks=MS_TICKS*ms-1; + save_flags(flags); + cli(); + while (ms_busy == 0) + sleep_on(&ms_wait); + ms_busy = 0; + restore_flags(flags); + ticks = MS_TICKS*ms-1; ciaa.tblo=ticks%256; ciaa.tbhi=ticks/256; - ciaa.crb=0x19; /* count clock, force load, one-shot, start */ + ciaa.crb=0x19; /*count eclock, force load, one-shoot, start */ sleep_on(&ms_wait); - up(&ms_sem); } } @@ -223,6 +325,7 @@ unsigned char prb = ~0; drive&=3; + get_hw(drive); save_flags(flags); cli(); @@ -238,6 +341,15 @@ selected = -1; unit[drive].motor = 0; + rel_hw(); +#ifdef MODULE +/* +this is the last interrupt for any drive access, happens after +release. So we have to wait until now to decrease the use count. +*/ + if (fd_ref[drive] == 0) + MOD_DEC_USE_COUNT; +#endif restore_flags(flags); } @@ -260,6 +372,7 @@ unsigned char prb = ~0; nr &= 3; + get_hw(nr); save_flags (flags); cli(); del_timer(motor_off_timer + nr); @@ -284,12 +397,17 @@ while (!unit[nr].motor) sleep_on (&motor_wait); } + rel_hw(); restore_flags(flags); if (on_attempts == 0) { - printk ("motor_on failed, turning motor off\n"); +#if 0 + printk (KERN_ERR "motor_on failed, turning motor off\n"); fd_motor_off (nr); return 0; +#else + printk (KERN_WARNING "DSKRDY not set after 1.5 seconds - assuming drive is spinning notwithstanding\n"); +#endif } return 1; @@ -310,6 +428,7 @@ drive&=3; if (drive == selected) return; + get_hw(drive); selected = drive; if (unit[drive].track % 2 != 0) @@ -320,6 +439,7 @@ ciab.prb = prb; prb &= ~SELMASK(drive); ciab.prb = prb; + rel_hw(); } static void fd_deselect (int drive) @@ -331,6 +451,7 @@ if (drive != selected) return; + get_hw(drive); save_flags (flags); sti(); @@ -341,6 +462,7 @@ ciab.prb = prb; restore_flags (flags); + rel_hw(); } @@ -355,6 +477,7 @@ int n; drive &= 3; + get_hw(drive); if (!motor_on (drive)) return 0; fd_select (drive); @@ -362,38 +485,40 @@ prb |= DSKSIDE; prb &= ~DSKDIREC; ciab.prb = prb; - for (n = unit[drive].type->tracks/4; n != 0; --n) { + for (n = unit[drive].type->tracks/2; n != 0; --n) { if (ciaa.pra & DSKTRACK0) break; prb &= ~DSKSTEP; ciab.prb = prb; prb |= DSKSTEP; - ms_delay (2); + udelay (2); ciab.prb = prb; ms_delay(unit[drive].type->step_delay); } ms_delay (unit[drive].type->settle_time); prb |= DSKDIREC; - n = unit[drive].type->tracks/2 + 20; + n = unit[drive].type->tracks + 20; for (;;) { prb &= ~DSKSTEP; ciab.prb = prb; prb |= DSKSTEP; - ms_delay (2); + udelay (2); ciab.prb = prb; ms_delay(unit[drive].type->step_delay + 1); if ((ciaa.pra & DSKTRACK0) == 0) break; if (--n == 0) { - printk ("calibrate failed, turning motor off\n"); + printk (KERN_ERR "calibrate failed, turning motor off\n"); fd_motor_off (drive); unit[drive].track = -1; + rel_hw(); return 0; } } unit[drive].track = 0; ms_delay(unit[drive].type->settle_time); + rel_hw(); return 1; } @@ -408,13 +533,20 @@ int cnt; drive &= 3; - if (unit[drive].track == track) + get_hw(drive); + if (unit[drive].track == track) { + rel_hw(); return 1; - if (!motor_on(drive)) + } + if (!motor_on(drive)) { + rel_hw(); return 0; + } fd_select (drive); - if (unit[drive].track < 0 && !fd_calibrate(drive)) + if (unit[drive].track < 0 && !fd_calibrate(drive)) { + rel_hw(); return 0; + } cnt = unit[drive].track/2 - track/2; prb = ciab.prb; @@ -429,18 +561,21 @@ if (track % 2 != unit[drive].track % 2) ms_delay (unit[drive].type->side_time); unit[drive].track = track; - if (cnt == 0) + if (cnt == 0) { + rel_hw(); return 1; + } do { prb &= ~DSKSTEP; ciab.prb = prb; prb |= DSKSTEP; - ms_delay (1); + udelay (1); ciab.prb = prb; ms_delay (unit[drive].type->step_delay); } while (--cnt != 0); ms_delay (unit[drive].type->settle_time); + rel_hw(); return 1; } @@ -504,9 +639,6 @@ struct header hdr; int i; - if (!AMIGAHW_PRESENT(AMI_FLOPPY)) - return 0; - disk&=3; *raw = (raw[-1]&1) ? 0x2AAAAAAA : 0xAAAAAAAA; raw++; @@ -618,7 +750,7 @@ for (scnt = 0;scnt < unit[drive].sects; scnt++) { if (!(raw = scan_sync(raw, end))) { - printk ("can't find sync for sector %d\n", scnt); + printk (KERN_INFO "can't find sync for sector %d\n", scnt); return MFM_NOSYNC; } @@ -638,13 +770,13 @@ #endif if (hdr.hdrchk != csum) { - printk("MFM_HEADER: %08lx,%08lx\n", hdr.hdrchk, csum); + printk(KERN_INFO "MFM_HEADER: %08lx,%08lx\n", hdr.hdrchk, csum); return MFM_HEADER; } /* verify track */ if (hdr.track != track) { - printk("MFM_TRACK: %d, %d\n", hdr.track, track); + printk(KERN_INFO "MFM_TRACK: %d, %d\n", hdr.track, track); return MFM_TRACK; } @@ -653,10 +785,10 @@ csum = checksum((ulong *)(track_data + hdr.sect*512), 512); if (hdr.datachk != csum) { - printk("MFM_DATA: (%x:%d:%d:%d) sc=%d %lx, %lx\n", + printk(KERN_INFO "MFM_DATA: (%x:%d:%d:%d) sc=%d %lx, %lx\n", hdr.magic, hdr.track, hdr.sect, hdr.ord, scnt, hdr.datachk, csum); - printk ("data=(%lx,%lx,%lx,%lx)\n", + printk (KERN_INFO "data=(%lx,%lx,%lx,%lx)\n", ((ulong *)(track_data+hdr.sect*512))[0], ((ulong *)(track_data+hdr.sect*512))[1], ((ulong *)(track_data+hdr.sect*512))[2], @@ -852,7 +984,7 @@ for (scnt=0;scntheads) { - printk("dos_read: MFM_TRACK %d, %d\n", hdr.track, + printk(KERN_INFO "dos_read: MFM_TRACK %d, %d\n", hdr.track, track/unit[drive].type->heads); return MFM_TRACK; } if (hdr.side != track%unit[drive].type->heads) { - printk("dos_read: MFM_SIDE %d, %d\n", hdr.side, + printk(KERN_INFO "dos_read: MFM_SIDE %d, %d\n", hdr.side, track%unit[drive].type->heads); return MFM_TRACK; } if (hdr.len_desc != 2) { - printk("dos_read: unknown sector len descriptor %d\n", hdr.len_desc); + printk(KERN_INFO "dos_read: unknown sector len descriptor %d\n", hdr.len_desc); return MFM_DATA; } #ifdef DEBUG printk("hdr accepted\n"); #endif if (!(raw = scan_sync (raw, end))) { - printk("dos_read: no data sync on track %d, unit %d for sector%d, disk sector %d\n", + printk(KERN_INFO "dos_read: no data sync on track %d, unit %d for sector%d, disk sector %d\n", track, drive, scnt, hdr.sec); return MFM_NOSYNC; } @@ -902,7 +1034,7 @@ #endif if (*((ushort *)raw)!=0x5545) { - printk("dos_read: no data mark after sync (%d,%d,%d,%d) sc=%d\n", + printk(KERN_INFO "dos_read: no data mark after sync (%d,%d,%d,%d) sc=%d\n", hdr.track,hdr.side,hdr.sec,hdr.len_desc,scnt); return MFM_NOSYNC; } @@ -913,10 +1045,10 @@ crc = dos_data_crc(track_data + (hdr.sec - 1) * 512); if (crc != data_crc[0]) { - printk("dos_read: MFM_DATA (%d,%d,%d,%d) sc=%d, %x %x\n", + printk(KERN_INFO "dos_read: MFM_DATA (%d,%d,%d,%d) sc=%d, %x %x\n", hdr.track, hdr.side, hdr.sec, hdr.len_desc, scnt,data_crc[0], crc); - printk("data=(%lx,%lx,%lx,%lx,...)\n", + printk(KERN_INFO "data=(%lx,%lx,%lx,%lx,...)\n", ((ulong *)(track_data+(hdr.sec-1)*512))[0], ((ulong *)(track_data+(hdr.sec-1)*512))[1], ((ulong *)(track_data+(hdr.sec-1)*512))[2], @@ -1039,33 +1171,6 @@ *(ushort *)ptr = 0xaaa8; /* MFM word before is always 0x9254 */ } -/* - * Note that MAX_ERRORS=X doesn't imply that we retry every bad read - * max X times - some types of errors increase the errorcount by 2 or - * even 3, so we might actually retry only X/2 times before giving up. - */ -#define MAX_ERRORS 12 - -/* - * The driver is trying to determine the correct media format - * while probing is set. rw_interrupt() clears it after a - * successful access. - */ -static int probing = 0; - -/* Prevent "aliased" accesses. */ -static fd_ref[4] = { 0,0,0,0 }; -static fd_device[4] = { 0,0,0,0 }; - -/* - * Current device number. Taken either from the block header or from the - * format request descriptor. - */ -#define CURRENT_DEVICE (CURRENT->rq_dev) - -/* Current error count. */ -#define CURRENT_ERRORS (CURRENT->errors) - static void request_done(int uptodate) { timer_active &= ~(1 << FLOPPY_TIMER); @@ -1082,15 +1187,22 @@ { int drive = dev & 3; int changed; + static int first_time = 1; if (MAJOR(dev) != MAJOR_NR) { - printk("floppy_change: not a floppy\n"); + printk(KERN_CRIT "floppy_change: not a floppy\n"); return 0; } - fd_select (drive); - changed = !(ciaa.pra & DSKCHANGE); - fd_deselect (drive); + if (first_time) + changed = first_time--; + else { + get_hw(drive); + fd_select (drive); + changed = !(ciaa.pra & DSKCHANGE); + fd_deselect (drive); + rel_hw(); + } if (changed) { fd_probe(dev); @@ -1119,6 +1231,7 @@ static void raw_read(int drive, int track, char *ptrack, int len) { drive&=3; + get_hw(drive); /* setup adkcon bits correctly */ custom.adkcon = ADK_MSBSYNC; custom.adkcon = ADK_SETCLR|ADK_WORDSYNC|ADK_FAST; @@ -1139,6 +1252,7 @@ sleep_on (&wait_fd_block); custom.dsklen = 0; + rel_hw(); } static int raw_write(int drive, int track, char *ptrack, int len) @@ -1149,6 +1263,7 @@ if ((ciaa.pra & DSKPROT) == 0) return 0; + get_hw(drive); /* corresponds to rel_hw() in post_write() */ /* clear adkcon bits */ custom.adkcon = ADK_PRECOMP1|ADK_PRECOMP0|ADK_WORDSYNC|ADK_MSBSYNC; /* set appropriate adkcon bits */ @@ -1176,30 +1291,45 @@ custom.dsklen = 0; writepending = 0; writefromint = 0; + rel_hw(); /* corresponds to get_hw() in raw_write */ } static int get_track(int drive, int track) { - int error; + int error, errors; drive&=3; - if ((lastdrive == drive) && (savedtrack == track)) - return 0; - - lastdrive = drive; - raw_read(drive, track, raw_buf, unit[drive].type->read_size); - savedtrack = -1; - error = (*unit[drive].dtype->read_fkt)(drive, trackdata, (unsigned long)raw_buf, track); - switch (error) { - case 0: - savedtrack = track; - return 0; - case MFM_TRACK: - unit[drive].track = -1; - /* fall through */ - default: - return -1; + get_hw(drive); + if (!motor_on(drive)) { + rel_hw(); + return -1; + } + fd_select(drive); + errors = 0; + while (errors < MAX_ERRORS) { + if (!fd_seek(drive, track)) { + rel_hw(); + return -1; /* we can not calibrate - no chance */ + } + if ((lastdrive == drive) && (savedtrack == track)) { + rel_hw(); + return 0; + } + lastdrive = drive; + raw_read(drive, track, raw_buf, unit[drive].type->read_size); + savedtrack = -1; + error = (*unit[drive].dtype->read_fkt)(drive, trackdata, (unsigned long)raw_buf, track); + if (error == 0) { + savedtrack = track; + rel_hw(); + return 0; + } + if (error == MFM_TRACK) + unit[drive].track = -1; + errors++; } + rel_hw(); + return -1; } static void flush_track_callback(unsigned long nr) @@ -1208,7 +1338,7 @@ writefromint = 1; (*unit[nr].dtype->write_fkt)(nr, (unsigned long)raw_buf, trackdata, savedtrack); if (!raw_write(nr, savedtrack, raw_buf, unit[nr].type->write_size)) { - printk ("floppy disk write protected\n"); + printk (KERN_NOTICE "floppy disk write protected\n"); writefromint = 0; writepending = 0; } @@ -1227,7 +1357,7 @@ restore_flags(flags); (*unit[nr].dtype->write_fkt)(nr, (unsigned long)raw_buf, trackdata, savedtrack); if (!raw_write(nr, savedtrack, raw_buf, unit[nr].type->write_size)) { - printk ("floppy disk write protected in write!\n"); + printk (KERN_NOTICE "floppy disk write protected in write!\n"); writepending = 0; return 0; } @@ -1255,10 +1385,9 @@ repeat: if (!CURRENT) { - if (!fdc_busy) - printk("FDC access conflict!"); - fdc_busy = 0; - wake_up(&fdc_wait); + if (fdc_busy < 0) + printk(KERN_CRIT "FDC access conflict!"); + rel_fdc(); CLEAR_INTR; return; } @@ -1324,15 +1453,6 @@ switch (CURRENT->cmd) { case READ: - if (!motor_on (drive)) { - end_request(0); - goto repeat; - } - fd_select (drive); - if (!fd_seek(drive, track)) { - end_request(0); - goto repeat; - } if (get_track(drive, track) == -1) { end_request(0); goto repeat; @@ -1341,15 +1461,6 @@ break; case WRITE: - if (!motor_on (drive)) { - end_request(0); - goto repeat; - } - fd_select (drive); - if (!fd_seek(drive, track)) { - end_request(0); - goto repeat; - } if (get_track(drive, track) == -1) { end_request(0); goto repeat; @@ -1374,7 +1485,7 @@ break; default: - printk("do_fd_request: unknown command\n"); + printk(KERN_WARNING "do_fd_request: unknown command\n"); request_done(0); goto repeat; } @@ -1388,13 +1499,7 @@ static void do_fd_request(void) { -unsigned long flags; - - save_flags(flags); - cli(); - while (fdc_busy) sleep_on(&fdc_wait); - fdc_busy = 1; - restore_flags(flags); /* sti(); */ + get_fdc(CURRENT_DEVICE & 3); redo_fd_request(); } @@ -1404,22 +1509,33 @@ int drive = inode->i_rdev & 3; static struct floppy_struct getprm; int error; + unsigned long flags; switch(cmd) { case FDFMTBEG: - if (fd_ref[drive] > 1) + get_hw(drive); + if (fd_ref[drive] > 1) { + rel_hw(); return -EBUSY; + } fsync_dev(inode->i_rdev); - if (motor_on(drive) == 0) + if (motor_on(drive) == 0) { + rel_hw(); return -ENODEV; - if (fd_calibrate(drive) == 0) + } + if (fd_calibrate(drive) == 0) { + rel_hw(); return -ENXIO; + } floppy_off(drive); + rel_hw(); break; case FDFMTTRK: - if (param < unit[drive].type->tracks) + if (param < unit[drive].type->tracks * unit[drive].type->heads) { + get_fdc(drive); + get_hw(drive); fd_select(drive); if (fd_seek(drive,param)!=0) { @@ -1428,6 +1544,8 @@ non_int_flush_track(drive); } floppy_off(drive); + rel_hw(); + rel_fdc(); } else return -EINVAL; @@ -1443,27 +1561,29 @@ if (error) return error; memset((void *)&getprm, 0, sizeof (getprm)); - getprm.track=unit[drive].type->tracks/unit[drive].type->heads; + getprm.track=unit[drive].type->tracks; getprm.head=unit[drive].type->heads; getprm.sect=unit[drive].sects; getprm.size=unit[drive].blocks; copy_to_user((void *)param,(void *)&getprm,sizeof(struct floppy_struct)); break; case BLKGETSIZE: - error = verify_area(VERIFY_WRITE, (void *)param, - sizeof(long)); - if (error) - return error; - put_fs_long(unit[drive].blocks,(long *)param); + if (put_user(unit[drive].blocks,(long *)param)) + return -EFAULT; break; case FDSETPRM: case FDDEFPRM: return -EINVAL; case FDFLUSH: + save_flags(flags); + cli(); if ((drive == selected) && (writepending)) { del_timer (&flush_track_timer); + restore_flags(flags); non_int_flush_track(selected); } + else + restore_flags(flags); break; #ifdef RAW_IOCTL case IOCTL_RAW_TRACK: @@ -1475,7 +1595,7 @@ return unit[drive].type->read_size; #endif default: - printk("fd_ioctl: unknown cmd %d for drive %d.",cmd,drive); + printk(KERN_DEBUG "fd_ioctl: unknown cmd %d for drive %d.",cmd,drive); return -ENOSYS; } return 0; @@ -1486,10 +1606,12 @@ ======================================================================*/ static unsigned long get_drive_id(int drive) { + static int called = 0; int i; ulong id = 0; drive&=3; + get_hw(drive); /* set up for ID */ MOTOR_ON; udelay(2); @@ -1517,6 +1639,7 @@ } selected = -1; + rel_hw(); /* * RB: At least A500/A2000's df0: don't identify themselves. @@ -1527,7 +1650,10 @@ if(drive == 0 && id == FD_NODRIVE) { id = fd_def_df0; - printk("fd: drive 0 didn't identify, setting default %08lx\n",(ulong)fd_def_df0); + printk("%sfd: drive 0 didn't identify, setting default %08lx\n", + (called == 0)? KERN_NOTICE:"", (ulong)fd_def_df0); + if (called == 0) + called++; } /* return the ID value */ return (id); @@ -1550,7 +1676,7 @@ break; if (type >= num_dr_types) { - printk("fd_probe: unsupported drive type %08lx found\n", + printk(KERN_WARNING "fd_probe: unsupported drive type %08lx found\n", code); return; } @@ -1578,7 +1704,7 @@ { int drive,found; - printk("FD: probing units\nfound "); + printk(KERN_INFO "FD: probing units\n" KERN_INFO "found "); found=0; for(drive=0;drivei_rdev & 3; old_dev = fd_device[drive]; @@ -1611,33 +1738,42 @@ if (unit[drive].type->code == FD_NODRIVE) return -ENODEV; - fd_ref[drive]++; - fd_device[drive] = inode->i_rdev; - - if (old_dev && old_dev != inode->i_rdev) - invalidate_buffers(old_dev); - - if (filp && filp->f_mode) - check_disk_change(inode->i_rdev); - if (filp && (filp->f_flags & (O_WRONLY|O_RDWR))) { int wrprot; + get_hw(drive); fd_select (drive); wrprot = !(ciaa.pra & DSKPROT); fd_deselect (drive); + rel_hw(); if (wrprot) return -EROFS; } + save_flags(flags); + cli(); + fd_ref[drive]++; + fd_device[drive] = inode->i_rdev; +#ifdef MODULE + if (unit[drive].motor == 0) + MOD_INC_USE_COUNT; +#endif + restore_flags(flags); + + if (old_dev && old_dev != inode->i_rdev) + invalidate_buffers(old_dev); + + if (filp && filp->f_mode) + check_disk_change(inode->i_rdev); + system=(inode->i_rdev & 4)>>2; unit[drive].dtype=&data_types[system]; unit[drive].sects=data_types[system].sects*unit[drive].type->sect_mult; unit[drive].blocks=unit[drive].type->heads*unit[drive].type->tracks* unit[drive].sects; -printk("fd%d: accessing %s-disk with %s-layout\n",drive,unit[drive].type->name, +printk(KERN_INFO "fd%d: accessing %s-disk with %s-layout\n",drive,unit[drive].type->name, data_types[system].name); return 0; @@ -1660,9 +1796,13 @@ restore_flags (flags); if (!fd_ref[inode->i_rdev & 3]--) { - printk("floppy_release with fd_ref == 0"); + printk(KERN_CRIT "floppy_release with fd_ref == 0"); fd_ref[inode->i_rdev & 3] = 0; } +#ifdef MODULE +/* the mod_use counter is handled this way */ + floppy_off (inode->i_rdev & 3); +#endif } void amiga_floppy_setup (char *str, int *ints) @@ -1687,7 +1827,7 @@ NULL, /* revalidate */ }; -static void fd_block_done(int irq, struct pt_regs *fp, void *dummy) +static void fd_block_done(int irq, void *dummy, struct pt_regs *fp) { if (block_flag) custom.dsklen = 0x4000; @@ -1755,13 +1895,18 @@ timer_table[FLOPPY_TIMER].fn = NULL; timer_active &= ~(1 << FLOPPY_TIMER); + #if 0 /* Doesn't seem to be correct */ if (fd_def_df0==0) { - if ((boot_info.bi_amiga.model == AMI_3000) || - (boot_info.bi_amiga.model == AMI_4000)) + if ((amiga.model == AMI_3000) || (amiga.model == AMI_3000T) || + (amiga.model == AMI_3000PLUS) || (amiga.model == AMI_4000)) fd_def_df0=FD_HD_3; else fd_def_df0=FD_DD_3; } + #else + /* Now we hope that every HD drive will identify itself correctly */ + fd_def_df0 = FD_DD_3; + #endif probe_drives(); @@ -1775,8 +1920,35 @@ /* make sure that disk DMA is enabled */ custom.dmacon = DMAF_SETCLR | DMAF_DISK; - add_isr(IRQ_FLOPPY, fd_block_done, 0, NULL, "floppy_dma"); - add_isr(IRQ_AMIGA_CIAA_TB, ms_isr, 0, NULL, "floppy_timer"); + /* init ms timer */ + ciaa.crb = 8; /* one-shot, stop */ + + request_irq(IRQ_FLOPPY, fd_block_done, 0, "floppy_dma", NULL); + request_irq(IRQ_AMIGA_CIAA_TB, ms_isr, 0, "floppy_timer", NULL); return 0; } + +#ifdef MODULE +#include + +int init_module(void) +{ + if (!MACH_IS_AMIGA) + return -ENXIO; + return amiga_floppy_init(); +} + +void cleanup_module(void) +{ +free_irq(IRQ_AMIGA_CIAA_TB, NULL); +free_irq(IRQ_FLOPPY, NULL); +custom.dmacon = DMAF_DISK; /* disable DMA */ +amiga_chip_free(raw_buf); +timer_active &= ~(1 << FLOPPY_TIMER); +blk_size[MAJOR_NR] = NULL; +blksize_size[MAJOR_NR] = NULL; +blk_dev[MAJOR_NR].request_fn = NULL; +unregister_blkdev(MAJOR_NR, "fd"); +} +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/block/ataflop.c linux/drivers/block/ataflop.c --- v2.1.16/linux/drivers/block/ataflop.c Wed Oct 16 10:48:07 1996 +++ linux/drivers/block/ataflop.c Fri Dec 20 11:20:00 1996 @@ -49,6 +49,9 @@ * Andreas 95/12/12: * - increase gap size at start of track for HD/ED disks * + * Michael (MSch) 11/07/96: + * - implemented FDSETPRM and FDDEFPRM ioctl + * * Things left to do: * - Formatting * - Maybe a better strategy for disk change detection (does anyone @@ -70,12 +73,13 @@ #include #include +#include #include #include #include #include +#include -#include #include #include #include @@ -193,6 +197,21 @@ */ #define MAX_DISK_SIZE 3280 +/* + * MSch: User-provided type information. 'drive' points to + * the respective entry of this array. Set by FDSETPRM ioctls. + */ +static struct atari_disk_type user_params[FD_MAX_UNITS]; + +/* + * User-provided permanent type information. 'drive' points to + * the respective entry of this array. Set by FDDEFPRM ioctls, + * restored upon disk change by floppy_revalidate() if valid (as seen by + * default_params[].blocks > 0 - a bit in unit[].flags might be used for this?) + */ +static struct atari_disk_type default_params[FD_MAX_UNITS] = { + { NULL, 0, 0, 0, 0}, }; + static int floppy_sizes[256]; static int floppy_blocksizes[256] = { 0, }; @@ -359,7 +378,7 @@ static void check_change( void ); static __inline__ void set_head_settle_flag( void ); static __inline__ int get_head_settle_flag( void ); -static void floppy_irq (int irq, struct pt_regs *fp, void *dummy); +static void floppy_irq (int irq, void *dummy, struct pt_regs *fp); static void fd_error( void ); static int do_format(kdev_t drive, struct atari_format_descr *desc); static void do_fd_action( int drive ); @@ -572,7 +591,7 @@ static void (*FloppyIRQHandler)( int status ) = NULL; -static void floppy_irq (int irq, struct pt_regs *fp, void *dummy) +static void floppy_irq (int irq, void *dummy, struct pt_regs *fp) { unsigned char status; void (*handler)( int ); @@ -1065,9 +1084,12 @@ !(read_track && FDC_READ(FDCREG_SECTOR) > SUDT->spt)) { if (Probing) { if (SUDT > disk_type) { + if (SUDT[-1].blocks > ReqBlock) { /* try another disk type */ SUDT--; floppy_sizes[SelectedDrive] = SUDT->blocks >> 1; + } else + Probing = 0; } else { if (SUD.flags & FTD_MSG) @@ -1308,8 +1330,8 @@ /* Prevent "aliased" accesses. */ -static fd_ref[4] = { 0,0,0,0 }; -static fd_device[4] = { 0,0,0,0 }; +static int fd_ref[4] = { 0,0,0,0 }; +static int fd_device[4] = { 0,0,0,0 }; /* * Current device number. Taken either from the block header or from the @@ -1374,10 +1396,20 @@ if (test_bit (drive, &changed_floppies) || test_bit (drive, &fake_change) || unit[drive].disktype == 0) { + if (UD.flags & FTD_MSG) + printk (KERN_ERR "floppy: clear format %p!\n", UDT); BufferDrive = -1; clear_bit (drive, &fake_change); clear_bit (drive, &changed_floppies); + /* + * MSch: clearing geometry makes sense only for autoprobe formats, + * for 'permanent user-defined' parameter: restore default_params[] + * here if flagged valid! + */ + if (default_params[drive].blocks == 0) UDT = 0; + else + UDT = &default_params[drive]; } return 0; } @@ -1532,13 +1564,14 @@ #define IOCTL_MODE_BIT 8 #define OPEN_WRITE_BIT 16 #define IOCTL_ALLOWED (filp && (filp->f_mode & IOCTL_MODE_BIT)) -#define COPYIN(x) (copy_from_user( &(x), (void *) param, sizeof(x))) - int drive, type, error; + int drive, type; kdev_t device; struct atari_format_descr fmt_desc; struct atari_disk_type *dtp; struct floppy_struct getprm; + int settype; + struct floppy_struct setprm; device = inode->i_rdev; switch (cmd) { @@ -1556,6 +1589,9 @@ return -ENODEV; type = minor2disktype[type].index; dtp = &disk_type[type]; + if (UD.flags & FTD_MSG) + printk (KERN_ERR "floppy%d: found dtp %p name %s!\n", + drive, dtp, dtp->name); } else { if (!UDT) @@ -1563,17 +1599,14 @@ else dtp = UDT; } - error = verify_area(VERIFY_WRITE, (void *)param, - sizeof(struct floppy_struct)); - if (error) - return( error ); memset((void *)&getprm, 0, sizeof(getprm)); getprm.size = dtp->blocks; getprm.sect = dtp->spt; getprm.head = 2; getprm.track = dtp->blocks/dtp->spt/2; getprm.stretch = dtp->stretch; - copy_to_user((void *)param, &getprm, sizeof(struct floppy_struct)); + if (copy_to_user((void *)param, &getprm, sizeof(getprm))) + return -EFAULT; return 0; } if (!IOCTL_ALLOWED) @@ -1581,7 +1614,112 @@ switch (cmd) { case FDSETPRM: case FDDEFPRM: + /* + * MSch 7/96: simple 'set geometry' case: just set the + * 'default' device params (minor == 0). + * Currently, the drive geometry is cleared after each + * disk change and subsequent revalidate()! simple + * implementation of FDDEFPRM: save geometry from a + * FDDEFPRM call and restore it in floppy_revalidate() ! + */ + + /* get the parameters from user space */ + if (fd_ref[drive] != 1 && fd_ref[drive] != -1) + return -EBUSY; + if (copy_from_user(&setprm, (void *) param, sizeof(setprm))) + return -EFAULT; + /* + * first of all: check for floppy change and revalidate, + * or the next access will revalidate - and clear UDT :-( + */ + + if (check_floppy_change(device)) + floppy_revalidate(device); + + if (UD.flags & FTD_MSG) + printk (KERN_INFO "floppy%d: setting size %d spt %d str %d!\n", + drive, setprm.size, setprm.sect, setprm.stretch); + + /* what if type > 0 here? Overwrite specified entry ? */ + if (type) { + /* refuse to re-set a predefined type for now */ + redo_fd_request(); + return -EINVAL; + } + + /* + * type == 0: first look for a matching entry in the type list, + * and set the UD.disktype field to use the perdefined entry. + * TODO: add user-defined format to head of autoprobe list ? + * Useful to include the user-type for future autodetection! + */ + + for (settype = 0; settype < NUM_DISK_MINORS; settype++) { + int setidx = 0; + if (minor2disktype[settype].drive_types > DriveType) { + /* skip this one, invalid for drive ... */ + continue; + } + setidx = minor2disktype[settype].index; + dtp = &disk_type[setidx]; + + /* found matching entry ?? */ + if ( dtp->blocks == setprm.size + && dtp->spt == setprm.sect + && dtp->stretch == setprm.stretch ) { + if (UD.flags & FTD_MSG) + printk (KERN_INFO "floppy%d: setting %s %p!\n", + drive, dtp->name, dtp); + UDT = dtp; + floppy_sizes[drive] = UDT->blocks >> 1; + + if (cmd == FDDEFPRM) { + /* save settings as permanent default type */ + default_params[drive].name = dtp->name; + default_params[drive].spt = dtp->spt; + default_params[drive].blocks = dtp->blocks; + default_params[drive].fdc_speed = dtp->fdc_speed; + default_params[drive].stretch = dtp->stretch; + } + + return 0; + } + + } + + /* no matching disk type found above - setting user_params */ + + if (cmd == FDDEFPRM) { + /* set permanent type */ + dtp = &default_params[drive]; + } else + /* set user type (reset by disk change!) */ + dtp = &user_params[drive]; + + dtp->name = "user format"; + dtp->blocks = setprm.size; + dtp->spt = setprm.sect; + if (setprm.sect > 14) + dtp->fdc_speed = 3; + else + dtp->fdc_speed = 0; + dtp->stretch = setprm.stretch; + + if (UD.flags & FTD_MSG) + printk (KERN_INFO "floppy%d: blk %d spt %d str %d!\n", + drive, dtp->blocks, dtp->spt, dtp->stretch); + + /* sanity check */ + if (!dtp || setprm.track != dtp->blocks/dtp->spt/2 + || setprm.head != 2) { + redo_fd_request(); return -EINVAL; + } + + UDT = dtp; + floppy_sizes[drive] = UDT->blocks >> 1; + + return 0; case FDMSGON: UD.flags |= FTD_MSG; return 0; @@ -1595,13 +1733,13 @@ case FDFMTTRK: if (fd_ref[drive] != 1 && fd_ref[drive] != -1) return -EBUSY; - if ((error = verify_area(VERIFY_READ, (void *)param, - sizeof(struct atari_format_descr) ))) - return( error ); - COPYIN( fmt_desc ); + if (copy_from_user(&fmt_desc, (void *) param, sizeof(fmt_desc))) + return -EFAULT; return do_format(device, &fmt_desc); case FDCLRPRM: UDT = NULL; + /* MSch: invalidate default_params */ + default_params[drive].blocks = 0; floppy_sizes[drive] = MAX_DISK_SIZE; return invalidate_drive (device); case FDFMTEND: @@ -1761,7 +1899,7 @@ drive = MINOR (inode->i_rdev) & 3; type = MINOR(inode->i_rdev) >> 2; DPRINT(("fd_open: type=%d\n",type)); - if (type > NUM_DISK_MINORS) + if (drive >= FD_MAX_UNITS || type > NUM_DISK_MINORS) return -ENXIO; old_dev = fd_device[drive]; diff -u --recursive --new-file v2.1.16/linux/drivers/block/ez.c linux/drivers/block/ez.c --- v2.1.16/linux/drivers/block/ez.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/block/ez.c Wed Dec 18 15:57:28 1996 @@ -0,0 +1,1020 @@ +/* + ez.c (c) 1996 Grant R. Guenther + Under the terms of the GNU public license. + + This is a driver for the parallel port versions of SyQuest's + EZ135 and EZ230 removable media disk drives. + + Special thanks go to Pedro Soria-Rodriguez for his help testing + the EZFlyer 230 support. + + The drive is actually SyQuest's IDE product with a + ShuttleTech IDE <-> parallel converter chip built in. + + To compile the driver, ensure that /usr/include/linux and + /usr/include/asm are links to the correct include files for + the target system. Then compile the driver with + + cc -D__KERNEL__ -DMODULE -O2 -c ez.c + + If you are using MODVERSIONS, add the following to the cc command: + + -DMODVERSIONS -I /usr/include/linux/modversions.h + + You must then load it with insmod. + + Before attempting to access the new driver, you will need to + create some device special files. The following commands will + do that for you: + + mknod /dev/eza b 40 0 + mknod /dev/eza1 b 40 1 + mknod /dev/eza2 b 40 2 + mknod /dev/eza3 b 40 3 + mknod /dev/eza4 b 40 4 + chown root:disk /dev/ez* + chmod 660 /dev/ez* + + You can make devices for more partitions (up to 15) if you need to. + + You can alter the port used by the driver in two ways: either + change the definition of EZ_BASE or modify the ez_base variable + on the insmod command line, for example: + + insmod ez ez_base=0x3bc + + The driver can detect if the parallel port supports 8-bit + transfers. If so, it will use them. You can force it to use + 4-bit (nybble) mode by setting the variable ez_nybble to 1. + + The driver can be used with or without interrupts. If an IRQ + is specified in the variable ez_irq, the driver will use it. + If ez_irq is set to 0, an alternative, polling-based, strategy + will be used. + + If you experience timeout errors while using this driver - and + you have enabled interrupts - try disabling the interrupt. I + have heard reports of some parallel ports having exceptionally + unreliable interrupts. This could happen on misconfigured + systems in which an inactive sound card shares the same IRQ with + the parallel port. (Remember that most people do not use the + parallel port interrupt for printing.) + + It would be advantageous to use multiple mode transfers, + but ShuttleTech's driver does not appear to use them, so I'm not + sure that the converter can handle it. + + It is not currently possible to connect a printer to the chained + port on the EZ135p and expect Linux to use both devices at once. + + When the EZ230 powers on, the "standby timer" is set to about 6 + minutes: if the drive is idle for that length of time, it will + put itself into a low power standby mode. It takes a couple of + seconds for the drive to come out of standby mode. So, if you + load this driver while it is in standby mode, you will notice + a "freeze" of a second or two as the driver waits for the EZ230 + to come back to life. Once loaded, this driver disables the + standby timer (until you next power up the EZ230 ...) + + Keep an eye on http://www.torque.net/ez135.html for news and + other information about the driver. If you have any problems + with this driver, please send me, grant@torque.net, some mail + directly before posting into the newsgroups or mailing lists. + +*/ + +#define EZ_VERSION "0.11" + +#define EZ_BASE 0x378 +#define EZ_IRQ 7 +#define EZ_REP 4 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define EZ_BITS 4 /* compatible with SCSI version */ +#define EZ_MAJOR 40 /* as assigned by hpa */ + +#define MAJOR_NR EZ_MAJOR + +/* set up defines for blk.h, why don't all drivers do it this way ? */ + +#define DEVICE_NAME "ez" +#define DEVICE_REQUEST do_ez_request +#define DEVICE_NR(device) (MINOR(device)>>EZ_BITS) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) + +#include + +#define EZ_PARTNS (1<i_rdev); + + if (dev >= ez_gendisk.nr_real) return -ENODEV; + + MOD_INC_USE_COUNT; + + while (!ez_valid) sleep_on(&ez_wait_open); + ez_access++; + ez_media_check(); + ez_doorlock(IDE_DOORLOCK); + return 0; +} + +static void do_ez_request (void) + +{ int dev; + + if (ez_busy) return; +repeat: + if ((!CURRENT) || (CURRENT->rq_status == RQ_INACTIVE)) return; + INIT_REQUEST; + + dev = MINOR(CURRENT->rq_dev); + ez_block = CURRENT->sector; + ez_count = CURRENT->nr_sectors; + + if ((dev >= EZ_PARTNS) || ((ez_block+ez_count) > ez[dev].nr_sects)) { + end_request(0); + goto repeat; + } + + ez_block += ez[dev].start_sect; + ez_buf = CURRENT->buffer; + + if (CURRENT->cmd == READ) do_ez_read(); + else if (CURRENT->cmd == WRITE) do_ez_write(); + else { end_request(0); + goto repeat; + } +} + +static int ez_ioctl(struct inode *inode,struct file *file, + unsigned int cmd, unsigned long arg) + +{ struct hd_geometry *geo = (struct hd_geometry *) arg; + int dev, err; + + if ((!inode) || (!inode->i_rdev)) return -EINVAL; + dev = MINOR(inode->i_rdev); + if (dev >= EZ_PARTNS) return -EINVAL; + + switch (cmd) { + case HDIO_GETGEO: + if (!geo) return -EINVAL; + err = verify_area(VERIFY_WRITE,geo,sizeof(*geo)); + if (err) return err; + put_user(ez_capacity/(EZ_LOG_HEADS*EZ_LOG_SECTS), + (short *) &geo->cylinders); + put_user(EZ_LOG_HEADS, (char *) &geo->heads); + put_user(EZ_LOG_SECTS, (char *) &geo->sectors); + put_user(ez[dev].start_sect,(long *)&geo->start); + return 0; + case BLKRASET: + if(!suser()) return -EACCES; + if(!(inode->i_rdev)) return -EINVAL; + if(arg > 0xff) return -EINVAL; + read_ahead[MAJOR(inode->i_rdev)] = arg; + return 0; + case BLKRAGET: + if (!arg) return -EINVAL; + err = verify_area(VERIFY_WRITE,(long *) arg,sizeof(long)); + if (err) return (err); + put_user(read_ahead[MAJOR(inode->i_rdev)],(long *) arg); + return (0); + case BLKGETSIZE: + if (!arg) return -EINVAL; + err = verify_area(VERIFY_WRITE,(long *) arg,sizeof(long)); + if (err) return (err); + put_user(ez[dev].nr_sects,(long *) arg); + return (0); + case BLKFLSBUF: + if(!suser()) return -EACCES; + if(!(inode->i_rdev)) return -EINVAL; + fsync_dev(inode->i_rdev); + invalidate_buffers(inode->i_rdev); + return 0; + case BLKRRPART: + return ez_revalidate(inode->i_rdev); + RO_IOCTLS(inode->i_rdev,arg); + default: + return -EINVAL; + } +} + +static void ez_release (struct inode *inode, struct file *file) + +{ kdev_t devp; + + devp = inode->i_rdev; + if (DEVICE_NR(devp) == 0) { + fsync_dev(devp); + invalidate_inodes(devp); + invalidate_buffers(devp); + ez_access--; + if (!ez_access) ez_doorlock(IDE_DOORUNLOCK); + MOD_DEC_USE_COUNT; + } +} + +static int ez_check_media( kdev_t dev) + +{ int t; + + t = ez_changed; + ez_changed = 0; + return t; +} + +static int ez_revalidate(kdev_t dev) + +{ int p; + long flags; + kdev_t devp; + + save_flags(flags); + cli(); + if (ez_access > 1) { + restore_flags(flags); + return -EBUSY; + } + ez_valid = 0; + restore_flags(flags); + + for (p=(EZ_PARTNS-1);p>=0;p--) { + devp = MKDEV(MAJOR_NR, p); + fsync_dev(devp); + invalidate_inodes(devp); + invalidate_buffers(devp); + ez[p].start_sect = 0; + ez[p].nr_sects = 0; + } + + ez_get_capacity(); + ez[0].nr_sects = ez_capacity; + resetup_one_dev(&ez_gendisk,0); + + ez_valid = 1; + wake_up(&ez_wait_open); + + return 0; +} + +#ifdef MODULE + +/* Glue for modules ... */ + +void cleanup_module(void); + +int init_module(void) + +{ int err; + long flags; + + save_flags(flags); + cli(); + + err = ez_init(); + if (err) { + restore_flags(flags); + return err; + } + ez_geninit(&ez_gendisk); + + if (!ez_gendisk.nr_real) { + restore_flags(flags); + return -1; + } + + ez_valid = 0; + resetup_one_dev(&ez_gendisk,0); + ez_valid = 1; + + restore_flags(flags); + return 0; +} + +void cleanup_module(void) + +{ struct gendisk **gdp; + long flags; + + save_flags(flags); + cli(); + + unregister_blkdev(MAJOR_NR,"ez"); + + for(gdp=&gendisk_head;*gdp;gdp=&((*gdp)->next)) + if (*gdp == &ez_gendisk) break; + if (*gdp) *gdp = (*gdp)->next; + + if (ez_gendisk.nr_real) { + release_region(ez_base,3); + if (ez_irq) free_irq(ez_irq,NULL); + } + + restore_flags(flags); +} + +#else + +/* ez_setup: process lilo command parameters ... + + syntax: ez=base[,irq[,rep[,nybble]]] +*/ + +void ez_setup(char *str, int *ints) + +{ if (ints[0] > 0) ez_base = ints[1]; + if (ints[0] > 1) ez_irq = ints[2]; + if (ints[0] > 2) ez_rep = ints[3]; + if (ints[0] > 3) ez_nybble = ints[4]; +} + +#endif + +/* Now the actual hardware interface to the EZ135p */ + +static void out_p( short port, char byte) + +{ int i; + + for(i=0;i> 4; + w2(4); + h = r1() & 0xf0; + return h + l; + } else { /* byte mode */ + w0(regr+0x20); + w2(1); w2(0x25); + h = r0(); + w2(4); + return h; + } +} + +static void write_regr( char regr, char val ) + +{ w0(regr); + w2(1); + w0(val); + w2(4); +} + +/* connect / disconnect code */ + +static void prefix( char byte ) + +{ w2(4); w0(0x22); w0(0xaa); w0(0x55); w0(0); + w0(0xff); w0(0x87); w0(0x78); w0(byte); + w2(5); w2(4); w0(0xff); +} + +static void connect ( void ) + +{ prefix(0x40); prefix(0x50); prefix(0xe0); + w0(0); w2(1); w2(4); + read_regr(0xd); + write_regr(0x6d,0xe8); + write_regr(0x6c,0x1c); + write_regr(0x72,0x10); + write_regr(0x6a,0x38); + write_regr(0x68,0x10); + read_regr(0x12); + write_regr(0x72,0x10); + read_regr(0xd); + write_regr(0x6d,0xaa); + write_regr(0x6d,0xaa); +} + +static void disconnect ( void ) + +{ read_regr(0xd); + write_regr(0x6d,0xa8); + prefix(0x30); +} + +/* basic i/o */ + +static void read_block( char * buf ) + +/* the nybble mode read has a curious optimisation in it: there are actually + five bits available on each read. The extra bit is used to signal that + the next nybble is identical ... I wonder how much research went into + designing this use of the extra bit ? +*/ + +{ int j, k, n0, n1, n2, n3; + + read_regr(0xd); write_regr(0x6d,0xe9); + + j = 0; + if (ez_mode == 1) { /* nybble mode */ + + w0(7); w2(1); w2(3); w0(0xff); + for(k=0;k<256;k++) { + w2(6); n0 = r1(); + if (n0 & 8) n1 = n0; else { w2(4); n1 = r1(); } + w2(7); n2 = r1(); + if (n2 & 8) n3 = n2; else { w2(5); n3 = r1(); } + buf[j++] = (n0 >> 4) + (n1 & 0xf0); + buf[j++] = (n2 >> 4) + (n3 & 0xf0); + } + + } else { /* byte mode */ + + w0(0x27); w2(1); w2(0x25); w0(0); + for(k=0;k<256;k++) { + w2(0x24); buf[j++] = r0(); + w2(0x25); buf[j++] = r0(); + } + w2(0x26); w2(0x27); w0(0); w2(0x25); w2(4); + + } +} + +static void write_block( char * buf ) + +{ int j; + + read_regr(0xd); write_regr(0x6d,0xe9); + + w0(0x67); w2(1); w2(5); + for(j=0;j<256;j++) { + w0(buf[2*j]); w2(4); + w0(buf[2*j+1]); w2(5); + } + w2(7); w2(4); +} + +/* ide command interface */ + +void ez_print_error( char * msg, int status ) + +{ char *e, *p; + int i; + + e = ez_scratch; + for(i=0;i<18;i++) if (status & (1<= EZ_SPIN) || ez_timeout) e |= (ERR_TMO|STAT_ERR); + if ((e & STAT_ERR) & (msg != NULL)) ez_print_error(msg,e); + return e; +} + +static void send_command( int n, int s, int h, int c0, int c1, int func ) + +{ + read_regr(0xd); write_regr(0x6d,0xa9); + + write_regr(0x76,0); + write_regr(0x79,0); /* the IDE task file */ + write_regr(0x7a,n); + write_regr(0x7b,s); + write_regr(0x7c,c0); + write_regr(0x7d,c1); + write_regr(0x7e,0xa0+h); + write_regr(0x7f,func); + + udelay(1); +} + +static void ez_ide_command( int func, int block ) + +{ int c1, c0, h, s; + + s = ( block % ez_sectors) + 1; + h = ( block / ez_sectors) % ez_heads; + c0 = ( block / (ez_sectors*ez_heads)) % 256; + c1 = ( block / (ez_sectors*ez_heads*256)); + + send_command(1,s,h,c0,c1,func); +} + +static void ez_gate_intr( int flag ) + +{ if (flag) write_regr(0x6d,0x39); /* gate interrupt line to bus */ + if (flag && ez_irq) w2(0x14); /* enable IRQ */ + if (!flag) w2(4); /* disable IRQ */ +} + +static int check_int( void ) /* is the interrupt bit set ? */ + +{ return (r1() & 0x40); +} + +static void ez_doorlock( int func ) + +{ connect(); + if (wait_for(STAT_READY,"Lock") & STAT_ERR) { + disconnect(); + return; + } + ez_ide_command(func,0); + wait_for(STAT_READY,"Lock done"); + disconnect(); +} + +/* ez_media_check: check for and acknowledge the MC flag */ + +static void ez_media_check( void ) + +{ int r; + + ez_changed = 0; + connect(); + r = wait_for(STAT_READY,"Media check ready"); + if (!(r & STAT_ERR)) { + ez_ide_command(IDE_READ,0); /* try to read block 0 */ + r = wait_for(STAT_DRQ,"Media check"); + if (!(r & STAT_ERR)) read_block(ez_scratch); + } else ez_changed = 1; /* say changed if other error */ + if (r & ERR_MC) { + ez_changed = 1; + ez_ide_command(IDE_ACKCHANGE,0); + wait_for(STAT_READY,"Ack. media change"); + } + disconnect(); +} + +static int ez_identify( void ) + + +{ int k, r; + + connect(); + wait_for(0,NULL); /* wait until not busy, quietly */ + ez_ide_command(IDE_IDENTIFY,0); + + if (ez_irq) { /* check that the interrupt works */ + ez_gate_intr(1); + k = 0; + while ((k++ < EZ_ISPIN) && !ez_int_seen) EZ_DELAY; + ez_gate_intr(0); + r = read_regr(0x1f); + if ((!ez_int_seen) || !(r & STAT_DRQ)) { + free_irq(ez_irq,NULL); + ez_irq = 0; + } + } + + if (wait_for(STAT_DRQ,NULL) & STAT_ERR) { + disconnect(); + return 0; + } + read_block(ez_scratch); + disconnect(); + return 1; +} + +#define word_val(n) (ez_scratch[2*n]+256*ez_scratch[2*n+1]) + +static void ez_get_capacity( void ) + +{ int ez_cylinders; + + connect(); + wait_for(0,NULL); + ez_ide_command(IDE_IDENTIFY,0); + if (wait_for(STAT_DRQ,"Get capacity") & STAT_ERR) { + disconnect(); + return; + } + read_block(ez_scratch); + disconnect(); + ez_sectors = word_val(6); + ez_heads = word_val(3); + ez_cylinders = word_val(1); + ez_capacity = ez_sectors*ez_heads*ez_cylinders; + printk("ez: Capacity = %d, (%d/%d/%d)\n",ez_capacity,ez_cylinders, + ez_heads,ez_sectors); +} + +static void ez_standby_off( void ) + +{ connect(); + wait_for(0,NULL); + send_command(0,0,0,0,0,IDE_STANDBY); + wait_for(0,NULL); + disconnect(); +} + +static int ez_port_check( void ) /* check for 8-bit port */ + +{ int r; + + w2(0); + w0(0x55); if (r0() != 0x55) return 0; + w0(0xaa); if (r0() != 0xaa) return 0; + w2(0x20); w0(0x55); r = r0(); w0(0xaa); + if (r0() == r) return 2; + if (r0() == 0xaa) return 1; + return 0; +} + +static int ez_detect( void ) + +{ int j, k; + char sig[EZ_SIGLEN] = EZ_SIG; + char id[EZ_ID_LEN+1]; + long flags; + + if (check_region(ez_base,3)) { + printk("ez: Ports at 0x%x are not available\n",ez_base); + return 0; + } + + ez_mode = ez_port_check(); + if (!ez_mode) { + printk("ez: No parallel port at 0x%x\n",ez_base); + return 0; + } + + if (ez_irq && request_irq(ez_irq,ez_interrupt,0,"ez",NULL)) ez_irq = 0; + + if (ez_nybble) ez_mode = 1; + + request_region(ez_base,3,"ez"); + + save_flags(flags); + sti(); + + k = 0; + if (ez_identify()) { + k = 1; + for(j=0;j= EZ_TMO); + if (check_int() || ez_timeout) { + con = ez_continuation; + ez_continuation = NULL; + if (con) con(); + } else { + ez_loops++; + queue_task(&ez_tq,&tq_scheduler); + } +} + +static void ez_timer_int( unsigned long data) + +{ void (*con)(void); + + con = ez_continuation; + if (!con) return; + ez_continuation = NULL; + ez_gate_intr(0); + ez_timeout = 1; + con(); +} + +static void ez_interrupt( int irq, void * dev_id, struct pt_regs * regs) + +{ void (*con)(void); + + ez_int_seen = 1; + con = ez_continuation; + if (!con) return; + ez_gate_intr(0); + del_timer(&ez_timer); + ez_continuation = NULL; + con(); +} + +/* The i/o request engine */ + +#define EZ_DONE(s) { disconnect(); end_request(s); ez_busy = 0;\ + cli(); do_ez_request(); return; } + +static void do_ez_read( void ) + +{ ez_busy = 1; + if (!ez_count) { + ez_busy = 0; + return; + } + sti(); + connect(); + if (wait_for(STAT_READY,"do_ez_read") & STAT_ERR) EZ_DONE(0); + ez_ide_command(IDE_READ,ez_block); + ez_set_intr(do_ez_read_drq); +} + +static void do_ez_read_drq( void ) + +{ sti(); + if (wait_for(STAT_DRQ,"do_ez_read_drq") & STAT_ERR) EZ_DONE(0); + read_block(ez_buf); + ez_count--; + if (ez_count) { + ez_buf += 512; + ez_block++; + disconnect(); + do_ez_read(); + return; + } + EZ_DONE(1); +} + +static void do_ez_write( void ) + +{ ez_busy = 1; + if (!ez_count) { + ez_busy = 0; + return; + } + sti(); + connect(); + if (wait_for(STAT_READY,"do_ez_write") & STAT_ERR) + EZ_DONE(0); + ez_ide_command(IDE_WRITE,ez_block); + if (wait_for(STAT_DRQ,"do_ez_write_drq") & STAT_ERR) + EZ_DONE(0); + write_block(ez_buf); + ez_set_intr(do_ez_write_done); +} + +static void do_ez_write_done( void ) + +{ sti(); + if (wait_for(STAT_READY,"do_ez_write_done") & STAT_ERR) EZ_DONE(0); + ez_count--; + if (ez_count) { + ez_buf += 512; + ez_block++; + disconnect(); + do_ez_write(); + return; + } + EZ_DONE(1); +} + +/* end of ez.c */ diff -u --recursive --new-file v2.1.16/linux/drivers/block/ll_rw_blk.c linux/drivers/block/ll_rw_blk.c --- v2.1.16/linux/drivers/block/ll_rw_blk.c Thu Dec 12 19:36:59 1996 +++ linux/drivers/block/ll_rw_blk.c Fri Dec 20 11:20:00 1996 @@ -383,6 +383,7 @@ case FLOPPY_MAJOR: case IDE2_MAJOR: case IDE3_MAJOR: + case ACSI_MAJOR: /* * The scsi disk and cdrom drivers completely remove the request * from the queue when they start processing an entry. For this @@ -622,6 +623,13 @@ } } +#ifdef CONFIG_BLK_DEV_EZ +extern void ez_init( void ); +#endif +#ifdef CONFIG_BPCD +extern void bpcd_init( void ); +#endif + int blk_dev_init(void) { struct request * req; @@ -644,6 +652,9 @@ req->next = NULL; } memset(ro_bits,0,sizeof(ro_bits)); +#ifdef CONFIG_AMIGA_Z2RAM + z2_init(); +#endif #ifdef CONFIG_BLK_DEV_RAM rd_init(); #endif @@ -665,14 +676,22 @@ #ifdef CONFIG_BLK_DEV_XD xd_init(); #endif +#ifdef CONFIG_BLK_DEV_EZ + ez_init(); +#endif #ifdef CONFIG_BLK_DEV_FD floppy_init(); #else +#if !defined (__mc68000__) outb_p(0xc, 0x3f2); #endif +#endif #ifdef CONFIG_CDU31A cdu31a_init(); #endif CONFIG_CDU31A +#ifdef CONFIG_ATARI_ACSI + acsi_init(); +#endif CONFIG_ATARI_ACSI #ifdef CONFIG_MCD mcd_init(); #endif CONFIG_MCD @@ -691,6 +710,9 @@ #ifdef CONFIG_GSCD gscd_init(); #endif CONFIG_GSCD +#ifdef CONFIG_BPCD + bpcd_init(); +#endif CONFIG_BPCD #ifdef CONFIG_CM206 cm206_init(); #endif diff -u --recursive --new-file v2.1.16/linux/drivers/block/rd.c linux/drivers/block/rd.c --- v2.1.16/linux/drivers/block/rd.c Tue Oct 29 19:58:03 1996 +++ linux/drivers/block/rd.c Fri Dec 20 11:20:00 1996 @@ -564,7 +564,7 @@ static unsigned insize = 0; /* valid bytes in inbuf */ static unsigned inptr = 0; /* index of next byte to be processed in inbuf */ static unsigned outcnt = 0; /* bytes in output buffer */ -static exit_code = 0; +static int exit_code = 0; static long bytes_out = 0; static struct file *crd_infp, *crd_outfp; diff -u --recursive --new-file v2.1.16/linux/drivers/block/z2ram.c linux/drivers/block/z2ram.c --- v2.1.16/linux/drivers/block/z2ram.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/block/z2ram.c Fri Dec 20 11:20:00 1996 @@ -0,0 +1,354 @@ +/* +** z2ram - Amiga pseudo-driver to access 16bit-RAM in ZorroII space +** as a block device, to be used as a RAM disk or swap space +** +** Copyright (C) 1994 by Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) +** +** ++Geert: support for zorro_unused_z2ram, better range checking +** ++roman: translate accesses via an array +** ++Milan: support for ChipRAM usage +** ++yambo: converted to 2.0 kernel +** ++yambo: modularized and support added for 3 minor devices including: +** MAJOR MINOR DESCRIPTION +** ----- ----- ---------------------------------------------- +** 37 0 Use Zorro II and Chip ram +** 37 1 Use only Zorro II ram +** 37 2 Use only Chip ram +** +** Permission to use, copy, modify, and distribute this software and its +** documentation for any purpose and without fee is hereby granted, provided +** that the above copyright notice appear in all copies and that both that +** copyright notice and this permission notice appear in supporting +** documentation. This software is provided "as is" without express or +** implied warranty. +*/ + +#define MAJOR_NR Z2RAM_MAJOR + +#include +#include +#include + +#if defined(MODULE) +#include +#endif + +#include +#include +#include +#include + +#define TRUE (1) +#define FALSE (0) + +#define Z2MINOR_COMBINED (0) +#define Z2MINOR_Z2ONLY (1) +#define Z2MINOR_CHIPONLY (2) + +#define Z2RAM_CHUNK1024 ( Z2RAM_CHUNKSIZE >> 10 ) + +static u_long *z2ram_map = NULL; +static u_long z2ram_size = 0; +static int z2_blocksizes[3] = { 1024, 1024, 1024 }; +static int z2_sizes[3] = { 0, 0, 0 }; +static int z2_count = 0; +static int chip_count = 0; +static int current_device = -1; + +static void +do_z2_request( void ) +{ + u_long start, len, addr, size; + + while ( TRUE ) + { + INIT_REQUEST; + + start = CURRENT->sector << 9; + len = CURRENT->current_nr_sectors << 9; + + if ( ( start + len ) > z2ram_size ) + { + printk( KERN_ERR DEVICE_NAME ": bad access: block=%ld, count=%ld\n", + CURRENT->sector, + CURRENT->current_nr_sectors); + end_request( FALSE ); + continue; + } + + if ( ( CURRENT->cmd != READ ) && ( CURRENT->cmd != WRITE ) ) + { + printk( KERN_ERR DEVICE_NAME ": bad command: %d\n", CURRENT->cmd ); + end_request( FALSE ); + continue; + } + + while ( len ) + { + addr = start & Z2RAM_CHUNKMASK; + size = Z2RAM_CHUNKSIZE - addr; + if ( len < size ) + size = len; + + addr += z2ram_map[ start >> Z2RAM_CHUNKSHIFT ]; + + if ( CURRENT->cmd == READ ) + memcpy( CURRENT->buffer, (char *)addr, size ); + else + memcpy( (char *)addr, CURRENT->buffer, size ); + + start += size; + len -= size; + } + + end_request( TRUE ); + } +} + +static void +get_z2ram( void ) +{ + int i; + + for ( i = 0; i < Z2RAM_SIZE / Z2RAM_CHUNKSIZE; i++ ) + { + if ( test_bit( i, zorro_unused_z2ram ) ) + { + z2_count++; + z2ram_map[ z2ram_size++ ] = + ZTWO_VADDR( Z2RAM_START ) + ( i << Z2RAM_CHUNKSHIFT ); + clear_bit( i, zorro_unused_z2ram ); + } + } + + return; +} + +static void +get_chipram( void ) +{ + + while ( amiga_chip_avail() > ( Z2RAM_CHUNKSIZE * 4 ) ) + { + chip_count++; + z2ram_map[ z2ram_size ] = + (u_long)amiga_chip_alloc( Z2RAM_CHUNKSIZE ); + + if ( z2ram_map[ z2ram_size ] == 0 ) + { + break; + } + + z2ram_size++; + } + + return; +} + +static int +z2_open( struct inode *inode, struct file *filp ) +{ + int device; + int max_z2_map = ( Z2RAM_SIZE / Z2RAM_CHUNKSIZE ) * + sizeof( z2ram_map[0] ); + int max_chip_map = ( amiga_chip_size / Z2RAM_CHUNKSIZE ) * + sizeof( z2ram_map[0] ); + + device = DEVICE_NR( inode->i_rdev ); + + if ( current_device != -1 && current_device != device ) + { + return -EBUSY; + } + + if ( current_device == -1 ) + { + z2_count = 0; + chip_count = 0; + z2ram_size = 0; + + switch ( device ) + { + case Z2MINOR_COMBINED: + + z2ram_map = kmalloc( max_z2_map + max_chip_map, GFP_KERNEL ); + if ( z2ram_map == NULL ) + { + printk( KERN_ERR DEVICE_NAME + ": cannot get mem for z2ram_map\n" ); + return -ENOMEM; + } + + get_z2ram(); + get_chipram(); + + if ( z2ram_size != 0 ) + printk( KERN_INFO DEVICE_NAME + ": using %iK Zorro II RAM and %iK Chip RAM (Total %dK)\n", + z2_count * Z2RAM_CHUNK1024, + chip_count * Z2RAM_CHUNK1024, + ( z2_count + chip_count ) * Z2RAM_CHUNK1024 ); + + break; + + case Z2MINOR_Z2ONLY: + z2ram_map = kmalloc( max_z2_map, GFP_KERNEL ); + if ( z2ram_map == NULL ) + { + printk( KERN_ERR DEVICE_NAME + ": cannot get mem for z2ram_map\n" ); + return -ENOMEM; + } + + get_z2ram(); + + if ( z2ram_size != 0 ) + printk( KERN_INFO DEVICE_NAME + ": using %iK of Zorro II RAM\n", + z2_count * Z2RAM_CHUNK1024 ); + + break; + + case Z2MINOR_CHIPONLY: + z2ram_map = kmalloc( max_chip_map, GFP_KERNEL ); + if ( z2ram_map == NULL ) + { + printk( KERN_ERR DEVICE_NAME + ": cannot get mem for z2ram_map\n" ); + return -ENOMEM; + } + + get_chipram(); + + if ( z2ram_size != 0 ) + printk( KERN_INFO DEVICE_NAME + ": using %iK Chip RAM\n", + chip_count * Z2RAM_CHUNK1024 ); + + break; + + default: + return -ENODEV; + } + + if ( z2ram_size == 0 ) + { + kfree( z2ram_map ); + printk( KERN_NOTICE DEVICE_NAME + ": no unused ZII/Chip RAM found\n" ); + return -ENOMEM; + } + + current_device = device; + z2ram_size <<= Z2RAM_CHUNKSHIFT; + z2_sizes[ device ] = z2ram_size >> 10; + blk_size[ MAJOR_NR ] = z2_sizes; + } + +#if defined(MODULE) + MOD_INC_USE_COUNT; +#endif + + return 0; +} + +static void +z2_release( struct inode *inode, struct file *filp ) +{ + + if ( current_device == -1 ) + return; + + sync_dev( inode->i_rdev ); + +#if defined(MODULE) + MOD_DEC_USE_COUNT; +#endif + + return; +} + +static struct file_operations z2_fops = +{ + NULL, /* lseek - default */ + block_read, /* read - general block-dev read */ + block_write, /* write - general block-dev write */ + NULL, /* readdir - bad */ + NULL, /* select */ + NULL, /* ioctl */ + NULL, /* mmap */ + z2_open, /* open */ + z2_release, /* release */ + block_fsync /* fsync */ +}; + +int +z2_init( void ) +{ + + if ( !MACH_IS_AMIGA ) + return -ENXIO; + + if ( register_blkdev( MAJOR_NR, DEVICE_NAME, &z2_fops ) ) + { + printk( KERN_ERR DEVICE_NAME ": Unable to get major %d\n", + MAJOR_NR ); + return -EBUSY; + } + + blk_dev[ MAJOR_NR ].request_fn = DEVICE_REQUEST; + blksize_size[ MAJOR_NR ] = z2_blocksizes; + blk_size[ MAJOR_NR ] = z2_sizes; + + return 0; +} + +#if defined(MODULE) +int +init_module( void ) +{ + int error; + + error = z2_init(); + if ( error == 0 ) + { + printk( KERN_INFO DEVICE_NAME ": loaded as module\n" ); + } + + return error; +} + +void +cleanup_module( void ) +{ + int i, j; + + if ( unregister_blkdev( MAJOR_NR, DEVICE_NAME ) != 0 ) + printk( KERN_ERR DEVICE_NAME ": unregister of device failed\n"); + + if ( current_device != -1 ) + { + i = 0; + + for ( j = 0 ; j < z2_count; j++ ) + { + set_bit( i++, zorro_unused_z2ram ); + } + + for ( j = 0 ; j < chip_count; j++ ) + { + if ( z2ram_map[ i ] ) + { + amiga_chip_free( (void *) z2ram_map[ i++ ] ); + } + } + + if ( z2ram_map != NULL ) + { + kfree( z2ram_map ); + } + } + + return; +} +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/cdrom/Config.in linux/drivers/cdrom/Config.in --- v2.1.16/linux/drivers/cdrom/Config.in Thu May 16 16:35:39 1996 +++ linux/drivers/cdrom/Config.in Wed Dec 18 15:57:28 1996 @@ -13,6 +13,7 @@ fi fi fi +tristate 'MicroSolutions backpack CDROM support' CONFIG_BPCD tristate 'Mitsumi (standard) [no XA/Multisession] CDROM support' CONFIG_MCD tristate 'Mitsumi [XA/MultiSession] CDROM support' CONFIG_MCDX tristate 'Optics Storage DOLPHIN 8000AT CDROM support' CONFIG_OPTCD diff -u --recursive --new-file v2.1.16/linux/drivers/cdrom/Makefile linux/drivers/cdrom/Makefile --- v2.1.16/linux/drivers/cdrom/Makefile Fri Nov 15 23:49:07 1996 +++ linux/drivers/cdrom/Makefile Wed Dec 18 15:57:28 1996 @@ -114,6 +114,14 @@ endif endif #CONFIG_SJCD +ifeq ($(CONFIG_BPCD),y) +L_OBJS += bpcd.o +else + ifeq ($(CONFIG_BPCD),m) + M_OBJS += bpcd.o + endif +endif #CONFIG_BPCD + ifeq ($(CONFIG_CDI_INIT),y) L_OBJS += cdi.o endif #CONFIG_CDI_INIT diff -u --recursive --new-file v2.1.16/linux/drivers/cdrom/bpcd.c linux/drivers/cdrom/bpcd.c --- v2.1.16/linux/drivers/cdrom/bpcd.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/cdrom/bpcd.c Wed Dec 18 15:57:28 1996 @@ -0,0 +1,791 @@ +/* + bpcd.c (c) 1996 Grant R. Guenther + Under the terms of the GNU public license. + + bpcd.c is a driver for the MicroSolutions "backpack" CDrom, + an external parallel port device. + + There are apparently two versions of the backpack protocol. This + driver knows about the version 2 protocol - as is used in the 4x + and 6x products. There is no support for the sound hardware that + is included in some models. It should not be difficult to add + support for the ATAPI audio play functions and the corresponding + ioctls. + + The driver was developed by reverse engineering the protocol + and testing it on the backpack model 164550. This model + is actually a stock ATAPI drive packaged with a custom + ASIC that implements the IDE over parallel protocol. + I tested with a backpack that happened to contain a Goldstar + drive, but I've seen reports of Sony and Mitsumi drives as well. + + bpcd.c can be compiled for version 1.2.13 of the Linux kernel + and for the 2.0 series. (It should also work with most of the + later 1.3 kernels.) + + If you have a copy of the driver that has not been integrated into + the kernel source tree, you can compile the driver manually, as a + module. Ensure that /usr/include/linux and /usr/include/asm are + links to the correct include files for the target system. Compile + the driver with + + cc -D__KERNEL__ -DMODULE -O2 -c bpcd.c + + You must then load it with insmod. If you are using + MODVERSIONS, add the following to the cc command: + + -DMODVERSIONS -I /usr/include/linux/modversions.h + + Before attempting to access the new driver, you will need to + create a new device special file. The following commands will + do that for you: + + mknod /dev/bpcd b 41 0 + chown root:disk /dev/bpcd + chmod 660 /dev/bpcd + + Afterward, you can mount a disk in the usual way: + + mount -t iso9660 /dev/bpcd /cdrom + + (assuming you have made a directory /cdrom to use as a + mount point). + + The driver will attempt to detect which parallel port your + backpack is connected to. If this fails for any reason, you + can override it by specifying a port on the LILO command line + (for built in drivers) or the insmod command (for drivers built + as modules). If your drive is on the port at 0x3bc, you would + use one of these commands: + + LILO: bpcd=0x3bc + + insmod: insmod bpcd bp_base=0x3bc + + The driver can detect if the parallel port supports 8-bit + transfers. If so, it will use them. You can force it to use + 4-bit (nybble) mode by setting the variable bp_nybble to 1 on + an insmod command, or using the following LILO parameters: + + bpcd=0x3bc,1 + + (you must specify the correct port address if you use this method.) + + There is currently no support for EPP or ECP modes. Also, + as far as I can tell, the MicroSolutions protocol does not + support interrupts in the 4-bit and 8-bit modes. + + MicroSolutions' protocol allows for several drives to be + chained together off the same parallel port. Currently, this + driver will recognise only one of them. If you do have more + than one drive, it will choose the one with the lowest id number, + where the id number is the last two digits of the product's + serial number. + + It is not currently possible to connect a printer to the chained + port on the BackPack and expect Linux to use both devices at once. + + If you need to use this driver together with a printer on the + same port, build both the bpcd and lp drivers are modules. + + Keep an eye on http://www.torque.net/bpcd.html for news and + other information about the driver. If you have any problems + with this driver, please send me, grant@torque.net, some mail + directly before posting into the newsgroups or mailing lists. + +*/ + +#define BP_VERSION "0.14" + +#define BP_BASE 0 /* set to 0 for autoprobe */ +#define BP_REP 4 + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifndef BPCD_MAJOR +#define BPCD_MAJOR 41 +#endif + +#define MAJOR_NR BPCD_MAJOR + +/* set up defines for blk.h, why don't all drivers do it this way ? */ + +#define DEVICE_NAME "BackPack" +#define DEVICE_REQUEST do_bp_request +#define DEVICE_NR(device) (MINOR(device)) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) + +#include + +#define BP_TMO 300 /* timeout in jiffies */ +#define BP_DELAY 50 /* spin delay in uS */ + +#define BP_SPIN (10000/BP_DELAY)*BP_TMO + +int bpcd_init(void); +void bpcd_setup(char * str, int * ints); +void cleanup_module( void ); + +static int bp_open(struct inode *inode, struct file *file); +static void do_bp_request(void); +static void do_bp_read(void); +static int bp_ioctl(struct inode *inode,struct file *file, + unsigned int cmd, unsigned long arg); +static void bp_release (struct inode *inode, struct file *file); + +static int bp_detect(void); +static int bp_lock(void); +static void bp_unlock(void); +static void bp_eject(void); +static void bp_interrupt(void *data); + +static int bp_base = BP_BASE; +static int bp_rep = BP_REP; +static int bp_nybble = 0; /* force 4-bit mode ? */ + +static int bp_unit_id; + +static int bp_access = 0; /* count of active opens ... */ +static int bp_mode = 1; /* 4- or 8-bit mode */ +static int bp_busy = 0; /* request being processed ? */ +static int bp_timeout; /* "interrupt" loop limiter */ +static int bp_sector; /* address of next requested sector */ +static int bp_count; /* number of blocks still to do */ +static char * bp_buf; /* buffer for request in progress */ +static char bp_buffer[2048]; /* raw block buffer */ +static int bp_bufblk = -1; /* block in buffer, in CD units, + -1 for nothing there */ +static int nyb_map[256]; /* decodes a nybble */ +static int PortCache = 0; /* cache of the control port */ + +static struct tq_struct bp_tq = {0,0,bp_interrupt,NULL}; + +/* kernel glue structures */ + +static struct file_operations bp_fops = { + NULL, /* lseek - default */ + block_read, /* read - general block-dev read */ + block_write, /* write - general block-dev write */ + NULL, /* readdir - bad */ + NULL, /* select */ + bp_ioctl, /* ioctl */ + NULL, /* mmap */ + bp_open, /* open */ + bp_release, /* release */ + block_fsync, /* fsync */ + NULL, /* fasync */ + NULL, /* media change ? */ + NULL /* revalidate new media */ +}; + + +/* the MicroSolutions protocol uses bits 3,4,5 & 7 of the status port to + deliver a nybble in 4 bit mode. We use a table lookup to extract the + nybble value. The following function initialises the table. +*/ + +static void init_nyb_map( void ) + +{ int i, j; + + for(i=0;i<256;i++) { + j = (i >> 3) & 0x7; + if (i & 0x80) j |= 8; + nyb_map[i] = j; + } +} + +int bpcd_init (void) /* preliminary initialisation */ + +{ init_nyb_map(); + + if (bp_detect()) return -1; + + if (register_blkdev(MAJOR_NR,"bpcd",&bp_fops)) { + printk("bpcd: unable to get major number %d\n",MAJOR_NR); + return -1; + } + blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST; + read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read ahead */ + + return 0; +} + +static int bp_open (struct inode *inode, struct file *file) + +{ + if (file->f_mode & 2) return -EROFS; /* wants to write ? */ + + MOD_INC_USE_COUNT; + + if (!bp_access) + if (bp_lock()) { + MOD_DEC_USE_COUNT; + return -ENXIO; + } + bp_access++; + return 0; +} + +static void do_bp_request (void) + +{ if (bp_busy) return; + while (1) { + if ((!CURRENT) || (CURRENT->rq_status == RQ_INACTIVE)) return; + INIT_REQUEST; + if (CURRENT->cmd == READ) { + bp_sector = CURRENT->sector; + bp_count = CURRENT->nr_sectors; + bp_buf = CURRENT->buffer; + do_bp_read(); + if (bp_busy) return; + } + else end_request(0); + } +} + +static int bp_ioctl(struct inode *inode,struct file *file, + unsigned int cmd, unsigned long arg) + +/* we currently support only the EJECT ioctl. */ + +{ switch (cmd) { + case CDROMEJECT: if (bp_access == 1) { + bp_eject(); + return 0; + } + default: + return -EINVAL; + } +} + +static void bp_release (struct inode *inode, struct file *file) + +{ kdev_t devp; + + bp_access--; + if (!bp_access) { + devp = inode->i_rdev; + fsync_dev(devp); + invalidate_inodes(devp); + invalidate_buffers(devp); + bp_unlock(); + } + MOD_DEC_USE_COUNT; +} + +#ifdef MODULE + +/* Glue for modules ... */ + +int init_module(void) + +{ int err; + long flags; + + save_flags(flags); + cli(); + + err = bpcd_init(); + + restore_flags(flags); + return err; +} + +void cleanup_module(void) + +{ long flags; + + save_flags(flags); + cli(); + unregister_blkdev(MAJOR_NR,"bpcd"); + release_region(bp_base,3); + restore_flags(flags); +} + +#else + +/* bpcd_setup: process lilo command parameters ... + + syntax: bpcd=base[,nybble[,rep]] +*/ + +void bpcd_setup(char *str, int *ints) + +{ if (ints[0] > 0) bp_base = ints[1]; + if (ints[0] > 1) bp_nybble = ints[2]; + if (ints[0] > 2) bp_rep = ints[3]; +} + +#endif + +static void out_p( short port, char byte) + +{ int i; + + for(i=0;i= BP_SPIN)) break; + udelay(BP_DELAY); + } + + if ((j >= BP_SPIN) || (r & 1)) { + if (lab && fun) + printk("bpcd: %s (%s): %s status: %x error: %x\n", + lab,fun,(j >= BP_SPIN)?"timeout, ":"",r,e); + return -1; + } + return 0; +} + +static int bp_wait( char * lab, char * fun ) + +{ int j, r, e; + + j = 0; + while ((!(read_regr(0xb) & 0x80)) && (j++ < BP_SPIN)) udelay(BP_DELAY); + r = read_regr(0x47); + e = read_regr(0x41); + if ((j >= BP_SPIN) || (r & 1)) { + if (lab && fun) + printk("bpcd: %s (%s): %s status: %x error: %x\n", + lab,fun,(j >= BP_SPIN)?"timeout, ":"",r,e); + return -1; + } + return 0; +} + +static int bp_command( char * cmd, int dlen, char * fun ) + +{ int r; + + connect(); + write_regr(0x44,dlen % 256); + write_regr(0x45,dlen / 256); + write_regr(0x46,0xa0); /* drive 0 */ + write_regr(0x47,0xa0); /* ATAPI packet command */ + if ((r=bp_wait_drq("bp_command",fun))) { + disconnect(); + return r; + } + write_cmd(cmd,12); + return 0; +} + +static int bp_completion( char * fun ) + +{ int r, n; + + if (!(r=bp_wait("bp_completion",fun))) { + if (read_regr(0x42) == 2) { + n = (read_regr(0x44) + 256*read_regr(0x45)); + read_data(bp_buffer,n); + r=bp_wait("transfer done",fun); + } + } + disconnect(); + return r; +} + +static int bp_atapi( char * cmd, int dlen, char * fun ) + +{ int r; + + if (!(r=bp_command(cmd,dlen,fun))) + r = bp_completion(fun); + return r; +} + +static int bp_req_sense( char * msg ) + +{ char rs_cmd[12] = { 0x03,0,0,0,18,0,0,0,0,0,0,0 }; + int r; + + r = bp_atapi(rs_cmd,18,"request sense"); + if (msg) printk("bpcd: %s: sense key: %x, ASC: %x, ASQ: %x\n",msg, + bp_buffer[2]&0xf, bp_buffer[12], bp_buffer[13]); + return r; +} + +static int bp_lock(void) + +{ char lo_cmd[12] = { 0x1e,0,0,0,1,0,0,0,0,0,0,0 }; + char cl_cmd[12] = { 0x1b,0,0,0,3,0,0,0,0,0,0,0 }; + + bp_atapi(cl_cmd,0,"close door"); + if (bp_req_sense(NULL)) return -1; /* check for disk */ + bp_atapi(lo_cmd,0,NULL); + bp_req_sense(NULL); /* in case there was a media change */ + bp_atapi(lo_cmd,0,"lock door"); + return 0; +} + +static void bp_unlock( void) + +{ char un_cmd[12] = { 0x1e,0,0,0,0,0,0,0,0,0,0,0 }; + + bp_atapi(un_cmd,0,"unlock door"); +} + +static void bp_eject( void) + +{ char ej_cmd[12] = { 0x1b,0,0,0,2,0,0,0,0,0,0,0 }; + + bp_unlock(); + bp_atapi(ej_cmd,0,"eject"); +} + +static int bp_reset( void ) + +/* the ATAPI standard actually specifies the contents of all 7 registers + after a reset, but the specification is ambiguous concerning the last + two bytes, and different drives interpret the standard differently. +*/ + +{ int i, flg; + int expect[5] = {1,1,1,0x14,0xeb}; + long flags; + + connect(); + write_regr(0x46,0xa0); + write_regr(0x47,8); + + save_flags(flags); + sti(); + udelay(500000); /* delay 0.5 seconds */ + restore_flags(flags); + + flg = 1; + for(i=0;i<5;i++) flg &= (read_regr(i+0x41) == expect[i]); + + disconnect(); + return flg-1; +} + +static int bp_identify( char * id ) + +{ int k; + char id_cmd[12] = {0x12,0,0,0,36,0,0,0,0,0,0,0}; + + bp_bufblk = -1; + if (bp_atapi(id_cmd,36,"identify")) return -1; + for (k=0;k<16;k++) id[k] = bp_buffer[16+k]; + id[16] = 0; + return 0; +} + +static int bp_port_check( void ) /* check for 8-bit port */ + +{ int r; + + w2(0); + w0(0x55); if (r0() != 0x55) return 0; + w0(0xaa); if (r0() != 0xaa) return 0; + w2(0x20); w0(0x55); r = r0(); w0(0xaa); + if (r0() == r) return 2; + if (r0() == 0xaa) return 1; + return 0; +} + +static int bp_locate( void ) + +{ int k; + + for(k=0;k<100;k++) + if (!probe(k)) { + bp_unit_id = k; + return 0; + } + return -1; +} + +static int bp_do_detect( int autop ) + +{ char id[18]; + + if (autop) bp_base = autop; + + if (check_region(bp_base,3)) { + if (!autop) + printk("bpcd: Ports at 0x%x are not available\n",bp_base); + return -1; + } + + bp_mode = bp_port_check(); + + if (!bp_mode) { + if (!autop) + printk("bpcd: No parallel port at 0x%x\n",bp_base); + return -1; + } + + if (bp_nybble) bp_mode = 1; + + if (bp_locate()) { + if (!autop) + printk("bpcd: Couldn't find a backpack adapter at 0x%x\n", + bp_base); + return -1; + } + + if (bp_reset()) { + if (!autop) + printk("bpcd: Failed to reset CD drive\n"); + return -1; + } + + if (bp_identify(id)) { + if (!autop) + printk("bpcd: ATAPI inquiry failed\n"); + return -1; + } + + request_region(bp_base,3,"bpcd"); + + printk("bpcd: Found %s, ID %d, using port 0x%x in %d-bit mode\n", + id,bp_unit_id,bp_base,4*bp_mode); + + return 0; +} + +/* If you know about some other weird parallel port base address, + add it here .... +*/ + +static int bp_detect( void ) + +{ if (bp_base) return bp_do_detect(0); + if (!bp_do_detect(0x378)) return 0; + if (!bp_do_detect(0x278)) return 0; + if (!bp_do_detect(0x3bc)) return 0; + printk("bpcd: Autoprobe failed\n"); + return -1; +} + + +static void bp_transfer( void ) + +{ int k, o; + + while (bp_count && (bp_sector/4 == bp_bufblk)) { + o = (bp_sector % 4) * 512; + for(k=0;k<512;k++) bp_buf[k] = bp_buffer[o+k]; + bp_count--; + bp_buf += 512; + bp_sector++; + } +} + +static void do_bp_read( void ) + +{ int b, i; + char rd_cmd[12] = {0xa8,0,0,0,0,0,0,0,0,1,0,0}; + + bp_busy = 1; + bp_transfer(); + if (!bp_count) { + end_request(1); + bp_busy = 0; + return; + } + sti(); + + bp_bufblk = bp_sector / 4; + b = bp_bufblk; + for(i=0;i<4;i++) { + rd_cmd[5-i] = b & 0xff; + b = b >> 8; + } + + if (bp_command(rd_cmd,2048,"read block")) { + bp_bufblk = -1; + bp_busy = 0; + cli(); + bp_req_sense("send read command"); + end_request(0); + return; + } + bp_timeout = jiffies + BP_TMO; + queue_task(&bp_tq,&tq_scheduler); +} + +static void bp_interrupt( void *data) + +{ if (!(read_regr(0xb) & 0x80)) { + if (jiffies > bp_timeout) { + bp_bufblk = -1; + bp_busy = 0; + bp_req_sense("interrupt timeout"); + end_request(0); + do_bp_request(); + } + queue_task(&bp_tq,&tq_scheduler); + return; + } + sti(); + if (bp_completion("read completion")) { + cli(); + bp_busy = 0; + bp_bufblk = -1; + bp_req_sense("read completion"); + end_request(0); + do_bp_request(); + } + do_bp_read(); + do_bp_request(); +} + +/* end of bpcd.c */ diff -u --recursive --new-file v2.1.16/linux/drivers/char/Makefile linux/drivers/char/Makefile --- v2.1.16/linux/drivers/char/Makefile Wed Dec 18 15:58:47 1996 +++ linux/drivers/char/Makefile Sat Dec 21 14:24:02 1996 @@ -159,8 +159,36 @@ endif endif +ifeq ($(CONFIG_AMIGAMOUSE),y) +M = y +L_OBJS += amigamouse.o +else + ifeq ($(CONFIG_AMIGAMOUSE),m) + M_OBJS += amigamouse.o + MM = m + endif +endif + +ifeq ($(CONFIG_ATARIMOUSE),y) +M = y +L_OBJS += atarimouse.o +else + ifeq ($(CONFIG_ATARIMOUSE),m) + M_OBJS += atarimouse.o + MM = m + endif +endif + ifdef CONFIG_SUN_MOUSE M = y +endif + +ifeq ($(CONFIG_SUN_OPENPROMIO),y) +M = y +else + ifeq ($(CONFIG_SUN_OPENPROMIO),m) + MM = m + endif endif ifeq ($(CONFIG_WDT),y) diff -u --recursive --new-file v2.1.16/linux/drivers/char/amigamouse.c linux/drivers/char/amigamouse.c --- v2.1.16/linux/drivers/char/amigamouse.c Tue Oct 29 19:58:05 1996 +++ linux/drivers/char/amigamouse.c Sat Dec 21 14:24:02 1996 @@ -26,6 +26,10 @@ * renamed this file mouse.c => busmouse.c * * Modified for use in the 1.3 kernels by Jes Sorensen. + * + * Moved the isr-allocation to the mouse_{open,close} calls, as there + * is no reason to service the mouse in the vertical blank isr if + * the mouse is not in use. Jes Sorensen */ #include @@ -39,13 +43,13 @@ #include #include +#include #include #include #include #include #include #include -#include #define MSE_INT_ON() mouseint_allowed = 1 #define MSE_INT_OFF() mouseint_allowed = 0 @@ -55,7 +59,7 @@ static int mouseint_allowed; -static void mouse_interrupt(int irq, struct pt_regs *fp, void *dummy) +static void mouse_interrupt(int irq, void *dummy, struct pt_regs *fp) { static int lastx=0, lasty=0; int dx, dy; @@ -172,6 +176,7 @@ fasync_mouse(inode, file, 0); if (--mouse.active) return; + free_irq(IRQ_AMIGA_VERTB, mouse_interrupt); MSE_INT_OFF(); MOD_DEC_USE_COUNT; } @@ -183,25 +188,37 @@ static int open_mouse(struct inode * inode, struct file * file) { - if (!mouse.present) - return -EINVAL; - if (mouse.active++) - return 0; - mouse.ready = 0; - mouse.dx = 0; - mouse.dy = 0; - mouse.buttons = 0x87; - mouse.active = 1; - MOD_INC_USE_COUNT; - MSE_INT_ON(); - return 0; + if (!mouse.present) + return -EINVAL; + if (mouse.active++) + return 0; + /* + * use VBL to poll mouse deltas + */ + + if(request_irq(IRQ_AMIGA_VERTB, mouse_interrupt, 0, + "Amiga mouse", mouse_interrupt)) { + mouse.present = 0; + printk(KERN_INFO "Installing Amiga mouse failed.\n"); + return -EIO; + } + + mouse.ready = 0; + mouse.dx = 0; + mouse.dy = 0; + mouse.buttons = 0x87; + mouse.active = 1; + MOD_INC_USE_COUNT; + MSE_INT_ON(); + return 0; } /* * writes are disallowed */ -static int write_mouse(struct inode * inode, struct file * file, const char * buffer, int count) +static long write_mouse(struct inode * inode, struct file * file, + const char * buffer, unsigned long count) { return -EINVAL; } @@ -210,7 +227,8 @@ * read mouse data. Currently never blocks. */ -static int read_mouse(struct inode * inode, struct file * file, char * buffer, int count) +static long read_mouse(struct inode * inode, struct file * file, + char * buffer, unsigned long count) { int r; int dx; @@ -227,8 +245,8 @@ /* * Obtain the current mouse parameters and limit as appropriate for * the return data format. Interrupts are only disabled while - * obtaining the parameters, NOT during the puts_fs_byte() calls, - * so paging in put_fs_byte() does not effect mouse tracking. + * obtaining the parameters, NOT during the puts_user() calls, + * so paging in put_user() does not effect mouse tracking. */ MSE_INT_OFF(); @@ -250,11 +268,11 @@ mouse.ready = 0; MSE_INT_ON(); - put_fs_byte(buttons | 0x80, buffer); - put_fs_byte((char)dx, buffer + 1); - put_fs_byte((char)dy, buffer + 2); + put_user(buttons | 0x80, buffer); + put_user((char)dx, buffer + 1); + put_user((char)dy, buffer + 2); for (r = 3; r < count; r++) - put_fs_byte(0x00, buffer + r); + put_user(0x00, buffer + r); return r; } @@ -306,17 +324,6 @@ mouse.dy = 0; mouse.wait = NULL; - /* - * use VBL to poll mouse deltas - */ - - if(!add_isr(IRQ_AMIGA_VERTB, mouse_interrupt, 0, NULL, "Amiga mouse")) - { - mouse.present = 0; - printk(KERN_INFO "Installing Amiga mouse failed.\n"); - return -EIO; - } - mouse.present = 1; printk(KERN_INFO "Amiga mouse installed.\n"); @@ -325,7 +332,7 @@ } #ifdef MODULE -#include +#include int init_module(void) { @@ -334,7 +341,6 @@ void cleanup_module(void) { - remove_isr(IRQ_AMIGA_VERTB, mouse_interrupt, NULL); - misc_deregister(&amiga_mouse); + misc_deregister(&amiga_mouse); } #endif diff -u --recursive --new-file v2.1.16/linux/drivers/char/atarimouse.c linux/drivers/char/atarimouse.c --- v2.1.16/linux/drivers/char/atarimouse.c Tue Oct 29 19:58:05 1996 +++ linux/drivers/char/atarimouse.c Fri Dec 20 11:20:00 1996 @@ -20,10 +20,10 @@ #include #include +#include #include #include #include -#include static struct mouse_status mouse; static int atari_mouse_x_threshold = 2, atari_mouse_y_threshold = 2; @@ -87,12 +87,14 @@ return 0; } -static int write_mouse(struct inode *inode, struct file *file, const char *buffer, int count) +static long write_mouse(struct inode *inode, struct file *file, + const char *buffer, unsigned long count) { return -EINVAL; } -static int read_mouse(struct inode *inode, struct file *file, char *buffer, int count) +static long read_mouse(struct inode *inode, struct file *file, + char *buffer, unsigned long count) { int dx, dy, buttons; int r; @@ -199,7 +201,7 @@ } #ifdef MODULE -#include +#include int init_module(void) { diff -u --recursive --new-file v2.1.16/linux/drivers/char/fbmem.c linux/drivers/char/fbmem.c --- v2.1.16/linux/drivers/char/fbmem.c Tue Oct 29 19:58:05 1996 +++ linux/drivers/char/fbmem.c Fri Dec 20 11:20:00 1996 @@ -17,8 +17,8 @@ #include #include +#include #include -#include #include #include @@ -55,8 +55,8 @@ return MINOR(current->tty->device) - 1; } -static int -fb_read(struct inode *inode, struct file *file, char *buf, int count) +static long +fb_read(struct inode *inode, struct file *file, char *buf, unsigned long count) { unsigned long p = file->f_pos; struct fb_ops *fb = registered_fb[GET_FB_IDX(inode->i_rdev)]; @@ -66,8 +66,6 @@ if (! fb) return -ENODEV; - if (count < 0) - return -EINVAL; fb->fb_get_fix(&fix,PROC_CONSOLE()); base_addr=(char *) fix.smem_start; @@ -77,8 +75,9 @@ return copy_size; } -static int -fb_write(struct inode *inode, struct file *file, const char *buf, int count) +static long +fb_write(struct inode *inode, struct file *file, const char *buf, + unsigned long count) { unsigned long p = file->f_pos; struct fb_ops *fb = registered_fb[GET_FB_IDX(inode->i_rdev)]; @@ -88,8 +87,6 @@ if (! fb) return -ENODEV; - if (count < 0) - return -EINVAL; fb->fb_get_fix(&fix, PROC_CONSOLE()); base_addr=(char *) fix.smem_start; copy_size=(count + p <= fix.smem_len ? count : fix.smem_len - p); @@ -212,13 +209,13 @@ fb->fb_get_fix(&fix, PROC_CONSOLE()); if ((vma->vm_end - vma->vm_start + vma->vm_offset) > fix.smem_len) return -EINVAL; - vma->vm_offset += fix.smem_start; + vma->vm_offset += __pa(fix.smem_start); if (vma->vm_offset & ~PAGE_MASK) return -ENXIO; - if (m68k_is040or060) { + if (CPU_IS_040_OR_060) { pgprot_val(vma->vm_page_prot) &= _CACHEMASK040; /* Use write-through cache mode */ - pgprot_val(vma->vm_page_prot) |= _PAGE_CACHE040W; + pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S; } if (remap_page_range(vma->vm_start, vma->vm_offset, vma->vm_end - vma->vm_start, vma->vm_page_prot)) diff -u --recursive --new-file v2.1.16/linux/drivers/char/lp_intern.c linux/drivers/char/lp_intern.c --- v2.1.16/linux/drivers/char/lp_intern.c Fri Apr 26 12:12:25 1996 +++ linux/drivers/char/lp_intern.c Fri Dec 20 11:20:00 1996 @@ -14,39 +14,44 @@ * Copyright (C) 1993 by Nigel Gamble (added interrupt code) */ +#include #include -#include #include +#include +#include +#include +#include #ifdef CONFIG_AMIGA #include +#include #endif #ifdef CONFIG_ATARI #include #include -#include #include +#include #endif +#include +static int my_inter = 0; +static int minor = -1; static void lp_int_out(int, int); static int lp_int_busy(int); static int lp_int_pout(int); static int lp_int_online(int); -static int lp_int_interrupt(int); - -int lp_internal_init(struct lp_struct *, int, int, int); static void lp_int_out (int c, int dev) { - switch (boot_info.machtype) + switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA: { int wait = 0; - while (wait != lp_table[dev].wait) wait++; + while (wait != lp_table[dev]->wait) wait++; ciaa.prb = c; } break; @@ -58,7 +63,7 @@ sound_ym.rd_data_reg_sel = 15; sound_ym.wd_data = c; sound_ym.rd_data_reg_sel = 14; - while (wait != lp_table[dev].wait) wait++; + while (wait != lp_table[dev]->wait) wait++; sound_ym.wd_data = sound_ym.rd_data_reg_sel & ~(1 << 5); while (wait) wait--; sound_ym.wd_data = sound_ym.rd_data_reg_sel | (1 << 5); @@ -71,7 +76,7 @@ static int lp_int_busy (int dev) { - switch (boot_info.machtype) + switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA: @@ -89,7 +94,7 @@ static int lp_int_pout (int dev) { - switch (boot_info.machtype) + switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA: @@ -106,7 +111,7 @@ static int lp_int_online (int dev) { - switch (boot_info.machtype) + switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA: @@ -121,21 +126,59 @@ } } -static int lp_int_interrupt(int dev) +static int lp_int_my_interrupt(int dev) +{ + return my_inter; +} + +static void lp_int_interrupt(int irq, void *data, struct pt_regs *fp) +{ + my_inter = 1; + lp_interrupt(irq, data, fp); + my_inter = 0; +} + +static void lp_int_open(void) +{ + MOD_INC_USE_COUNT; +} + +static void lp_int_release(void) { - return 1; + MOD_DEC_USE_COUNT; } -int lp_internal_init(struct lp_struct *lp_table, int entry, - int max_lp, int irq) +static struct lp_struct tab = { + "Builtin parallel port", /* name */ + 0, /* irq */ + lp_int_out, + lp_int_busy, + lp_int_pout, + lp_int_online, + lp_int_my_interrupt, + NULL, /* ioctl */ + lp_int_open, + lp_int_release, + LP_EXIST, + LP_INIT_CHAR, + LP_INIT_TIME, + LP_INIT_WAIT, + NULL, + NULL, +}; + +int lp_internal_init(void) { - if (max_lp-entry < 1) - return 0; #ifdef CONFIG_AMIGA - if (MACH_IS_AMIGA) + if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_PARALLEL)) { ciaa.ddrb = 0xff; ciab.ddra &= 0xf8; + if (lp_irq) + tab.irq = request_irq(IRQ_AMIGA_CIAA_FLG, lp_int_interrupt, + 0, "builtin printer port", lp_int_interrupt); + tab.base = (void *) &ciaa.prb; /* dummy, not used */ + tab.type = LP_AMIGA; } #endif #ifdef CONFIG_ATARI @@ -148,22 +191,50 @@ sound_ym.rd_data_reg_sel = 7; sound_ym.wd_data = (sound_ym.rd_data_reg_sel & 0x3f) | 0xc0; restore_flags(flags); + if (lp_irq) + tab.irq = request_irq(IRQ_MFP_BUSY, lp_int_interrupt, + IRQ_TYPE_SLOW, "builtin printer port", lp_int_interrupt); + tab.base = (void *) &sound_ym.wd_data; /* dummy, not used */ + tab.type = LP_ATARI; } #endif - lp_table[entry].name = "Builtin LP"; - lp_table[entry].lp_out = lp_int_out; - lp_table[entry].lp_is_busy = lp_int_busy; - lp_table[entry].lp_has_pout = lp_int_pout; - lp_table[entry].lp_is_online = lp_int_online; - lp_table[entry].lp_my_interrupt = lp_int_interrupt; - lp_table[entry].flags = LP_EXIST; - lp_table[entry].chars = LP_INIT_CHAR; - lp_table[entry].time = LP_INIT_TIME; - lp_table[entry].wait = LP_INIT_WAIT; - lp_table[entry].lp_wait_q = NULL; - printk("lp%d: internal port\n", entry); + if ((minor = register_parallel(&tab, minor)) < 0) { + printk("builtin lp init: cant get a minor\n"); + if (lp_irq) { +#ifdef CONFIG_AMIGA + if (MACH_IS_AMIGA) + free_irq(IRQ_AMIGA_CIAA_FLG, lp_int_interrupt); +#endif +#ifdef CONFIG_ATARI + if (MACH_IS_ATARI) + free_irq(IRQ_MFP_BUSY, lp_int_interrupt); +#endif + } + return -ENODEV; + } + + return 0; +} - return 1; +#ifdef MODULE +int init_module(void) +{ +return lp_internal_init(); } +void cleanup_module(void) +{ +if (lp_irq) { +#ifdef CONFIG_AMIGA + if (MACH_IS_AMIGA) + free_irq(IRQ_AMIGA_CIAA_FLG, lp_int_interrupt); +#endif +#ifdef CONFIG_ATARI + if (MACH_IS_ATARI) + free_irq(IRQ_MFP_BUSY, lp_int_interrupt); +#endif +} +unregister_parallel(minor); +} +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/char/lp_m68k.c linux/drivers/char/lp_m68k.c --- v2.1.16/linux/drivers/char/lp_m68k.c Tue Oct 29 19:58:06 1996 +++ linux/drivers/char/lp_m68k.c Fri Dec 20 11:20:00 1996 @@ -34,23 +34,23 @@ * */ +#include #include #include #include #include #include +#include #include +#ifdef CONFIG_KERNELD +#include +#endif #ifdef CONFIG_AMIGA -#include #ifdef CONFIG_MULTIFACE_III_LP #include #endif #endif -#ifdef CONFIG_ATARI -#include -#include -#endif #include #include @@ -68,13 +68,16 @@ */ #define FORCE_POLLING 0 #define FORCE_INTERRUPT 1 +/* + * PREFER_INTERRUPT doesn't make much sense on m68k. + * it is preserved here in case of joining with the i386 driver + * #define PREFER_INTERRUPT 2 + */ #define WHICH_DRIVER FORCE_INTERRUPT -#define MAX_LP 3 /* the maximum number of devices */ - -struct lp_struct lp_table[MAX_LP] = {{0,},}; +struct lp_struct *lp_table[MAX_LP] = {NULL,}; static int max_lp; /* the real number of devices */ @@ -100,9 +103,9 @@ count ++; if(need_resched) schedule(); - } while (lp_table[dev].lp_is_busy(dev) && count < lp_table[dev].chars); + } while (lp_table[dev]->lp_is_busy(dev) && count < lp_table[dev]->chars); - if (count == lp_table[dev].chars) { + if (count == lp_table[dev]->chars) { return 0; /* we timed out, and the character was /not/ printed */ } @@ -112,7 +115,7 @@ lp_max_count = count; } #endif - lp_table[dev].lp_out(lpchar, dev); + lp_table[dev]->lp_out(lpchar, dev); return 1; } #endif @@ -127,8 +130,8 @@ #if WHICH_DRIVER != FORCE_POLLING static __inline__ int lp_char_interrupt(char lpchar, int dev) { - if (!lp_table[dev].lp_is_busy(dev)) { - lp_table[dev].lp_out(lpchar,dev); + if (!lp_table[dev]->lp_is_busy(dev)) { + lp_table[dev]->lp_out(lpchar,dev); return 1; } return 0; @@ -136,37 +139,37 @@ static int lp_error; -static void lp_interrupt(int irq, struct pt_regs *fp, void *dummy) +void lp_interrupt(int irq, void *dummy, struct pt_regs *fp) { unsigned long flags; int dev; - for (dev = 0; dev < max_lp; dev++) { - if (lp_table[dev].lp_my_interrupt(dev) != 0) - if (lp_table[dev].do_print) + for (dev = 0; dev < MAX_LP; dev++) { + if ((lp_table[dev] != NULL) && (lp_table[dev]->lp_my_interrupt(dev) != 0)) + if (lp_table[dev]->do_print) { - if (lp_table[dev].copy_size) + if (lp_table[dev]->copy_size) { save_flags(flags); cli(); - if (lp_char_interrupt(lp_table[dev].lp_buffer[lp_table[dev].bytes_written], dev)) { - --lp_table[dev].copy_size; - ++lp_table[dev].bytes_written; + if (lp_char_interrupt(lp_table[dev]->lp_buffer[lp_table[dev]->bytes_written], dev)) { + --lp_table[dev]->copy_size; + ++lp_table[dev]->bytes_written; restore_flags(flags); } else { - lp_table[dev].do_print = 0; + lp_table[dev]->do_print = 0; restore_flags(flags); lp_error = 1; - wake_up_interruptible(&lp_table[dev].lp_wait_q); + wake_up_interruptible(&lp_table[dev]->lp_wait_q); } } else { - lp_table[dev].do_print = 0; + lp_table[dev]->do_print = 0; lp_error = 0; - wake_up_interruptible(&lp_table[dev].lp_wait_q); + wake_up_interruptible(&lp_table[dev]->lp_wait_q); } } @@ -174,11 +177,11 @@ } #if WHICH_DRIVER == FORCE_INTERRUPT -static int lp_write(struct inode *inode, struct file *file, - const char *buf, int count) +static long lp_write(struct inode *inode, struct file *file, + const char *buf, unsigned long count) #else -static int lp_write_interrupt(struct inode *inode, struct file *file, - const char *buf, int count) +static long lp_write_interrupt(struct inode *inode, struct file *file, + const char *buf, unsigned long count) #endif { unsigned long total_bytes_written = 0; @@ -187,21 +190,21 @@ int dev = MINOR(inode->i_rdev); do { - lp_table[dev].do_print = 0; /* disable lp_interrupt() */ - lp_table[dev].bytes_written = 0; /* init buffer read-pointer */ + lp_table[dev]->do_print = 0; /* disable lp_interrupt() */ + lp_table[dev]->bytes_written = 0; /* init buffer read-pointer */ lp_error = 0; - lp_table[dev].copy_size = (count <= LP_BUFFER_SIZE ? count : LP_BUFFER_SIZE); - copy_from_user(lp_table[dev].lp_buffer, buf, lp_table[dev].copy_size); - while (lp_table[dev].copy_size) { + lp_table[dev]->copy_size = (count <= LP_BUFFER_SIZE ? count : LP_BUFFER_SIZE); + copy_from_user(lp_table[dev]->lp_buffer, buf, lp_table[dev]->copy_size); + while (lp_table[dev]->copy_size) { save_flags(flags); cli(); /* no interrupts now */ - lp_table[dev].do_print = 1; /* enable lp_interrupt() */ - if (lp_char_interrupt(lp_table[dev].lp_buffer[lp_table[dev].bytes_written], dev)) { - ++lp_table[dev].bytes_written; - --lp_table[dev].copy_size; + lp_table[dev]->do_print = 1; /* enable lp_interrupt() */ + if (lp_char_interrupt(lp_table[dev]->lp_buffer[lp_table[dev]->bytes_written], dev)) { + ++lp_table[dev]->bytes_written; + --lp_table[dev]->copy_size; lp_error = 0; } else { /* something went wrong */ - lp_table[dev].do_print = 0; /* disable lp_interrupt() */ + lp_table[dev]->do_print = 0; /* disable lp_interrupt() */ lp_error = 1; /* printer caused error */ } if (lp_error) { @@ -214,14 +217,14 @@ current->timeout = jiffies + LP_TIMEOUT_INTERRUPT; } - interruptible_sleep_on(&lp_table[dev].lp_wait_q); + interruptible_sleep_on(&lp_table[dev]->lp_wait_q); restore_flags(flags); /* we're up again and running. we first disable lp_interrupt(), then check what happened meanwhile */ - lp_table[dev].do_print = 0; - rc = total_bytes_written + lp_table[dev].bytes_written; + lp_table[dev]->do_print = 0; + rc = total_bytes_written + lp_table[dev]->bytes_written; if (current->signal & ~current->blocked) { if (rc) @@ -235,17 +238,17 @@ figure out the type of error, exit on request or if nothing has been printed at all. */ - if (lp_table[dev].lp_has_pout(dev)) { + if (lp_table[dev]->lp_has_pout(dev)) { printk(KERN_NOTICE "lp%d: paper-out\n",dev); if (!rc) rc = -ENOSPC; - } else if (!lp_table[dev].lp_is_online(dev)) { + } else if (!lp_table[dev]->lp_is_online(dev)) { printk(KERN_NOTICE "lp%d: off-line\n",dev); if (!rc) rc = -EIO; - } else if (lp_table[dev].lp_is_busy(dev)) { + } else if (lp_table[dev]->lp_is_busy(dev)) { printk(KERN_NOTICE "lp%d: on fire\n",dev); if (!rc) rc = -EIO; } - if (lp_table[dev].flags & LP_ABORT) + if (lp_table[dev]->flags & LP_ABORT) return rc; } /* check if our buffer was completely printed, if not, most likely @@ -253,31 +256,33 @@ against, we start all over again. Else we set the read-pointer of the buffer and count the printed characters */ - if (!lp_table[dev].copy_size) { - total_bytes_written += lp_table[dev].bytes_written; - buf += lp_table[dev].bytes_written; - count -= lp_table[dev].bytes_written; + if (!lp_table[dev]->copy_size) { + total_bytes_written += lp_table[dev]->bytes_written; + buf += lp_table[dev]->bytes_written; + count -= lp_table[dev]->bytes_written; } } } while (count > 0); return total_bytes_written; } +#else +void (*lp_interrupt)() = NULL; #endif #if WHICH_DRIVER != FORCE_INTERRUPT #if WHICH_DRIVER == FORCE_POLLING -static int lp_write(struct inode *inode, struct file *file, - const char *buf, int count) +static long lp_write(struct inode *inode, struct file *file, + const char *buf, unsigned long count) #else -static int lp_write_polled(struct inode *inode, struct file *file, - const char *buf, int count) +static long lp_write_polled(struct inode *inode, struct file *file, + const char *buf, unsigned long count) #endif { char *temp = buf; int dev = MINOR(inode->i_rdev); #ifdef LP_DEBUG - if (jiffies-lp_last_call > lp_table[dev].time) { + if (jiffies-lp_last_call > lp_table[dev]->time) { lp_total_chars = 0; lp_max_count = 1; } @@ -293,25 +298,25 @@ lp_total_chars++; #endif } else { /* if printer timed out */ - if (lp_table[dev].lp_has_pout(dev)) { + if (lp_table[dev]->lp_has_pout(dev)) { printk(KERN_NOTICE "lp%d: out of paper\n",dev); - if (lp_table[dev].flags & LP_ABORT) + if (lp_table[dev]->flags & LP_ABORT) return temp - buf ? temp-buf : -ENOSPC; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + LP_TIMEOUT_POLLED; schedule(); - } else if (!lp_table[dev].lp_is_online(dev)) { + } else if (!lp_table[dev]->lp_is_online(dev)) { printk(KERN_NOTICE "lp%d: off-line\n",dev); - if (lp_table[dev].flags & LP_ABORT) + if (lp_table[dev]->flags & LP_ABORT) return temp - buf ? temp-buf : -EIO; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + LP_TIMEOUT_POLLED; schedule(); } else /* not offline or out of paper. on fire? */ - if (lp_table[dev].lp_is_busy(dev)) { + if (lp_table[dev]->lp_is_busy(dev)) { printk(KERN_NOTICE "lp%d: on fire\n",dev); - if (lp_table[dev].flags & LP_ABORT) + if (lp_table[dev]->flags & LP_ABORT) return temp - buf ? temp-buf : -EFAULT; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + LP_TIMEOUT_POLLED; @@ -327,11 +332,11 @@ } #ifdef LP_DEBUG printk("lp sleeping at %d characters for %d jiffies\n", - lp_total_chars, lp_table[dev].time); + lp_total_chars, lp_table[dev]->time); lp_total_chars = 0; #endif current->state = TASK_INTERRUPTIBLE; - current->timeout = jiffies + lp_table[dev].time; + current->timeout = jiffies + lp_table[dev]->time; schedule(); } } @@ -339,11 +344,11 @@ } #endif -static unsigned int lp_irq = 0; +unsigned int lp_irq = 0; #if WHICH_DRIVER == PREFER_INTERRUPT -static int lp_write(struct inode *inode, struct file *file, - const char *buf, int count) +static long lp_write(struct inode *inode, struct file *file, + const char *buf, unsigned long count) { if (lp_irq) return lp_write_interrupt(inode, file, buf, count); @@ -352,8 +357,8 @@ } #endif -static int lp_lseek(struct inode *inode, struct file *file, - off_t offset, int origin) +static long long lp_lseek(struct inode * inode, struct file * file, + long long offset, int origin) { return -ESPIPE; } @@ -362,21 +367,38 @@ { int dev = MINOR(inode->i_rdev); - if (dev >= max_lp) + if (dev >= MAX_LP) return -ENODEV; - if (!(lp_table[dev].flags & LP_EXIST)) +#ifdef CONFIG_KERNELD + if (!lp_table[dev]) { + char modname[30]; + + sprintf(modname, "char-major-%d-%d", LP_MAJOR, dev); + request_module(modname); + } +#endif + if (!lp_table[dev]) return -ENODEV; - if (lp_table[dev].flags & LP_BUSY) + if (!(lp_table[dev]->flags & LP_EXIST)) + return -ENODEV; + if (lp_table[dev]->flags & LP_BUSY) return -EBUSY; - lp_table[dev].flags |= LP_BUSY; + lp_table[dev]->flags |= LP_BUSY; + + MOD_INC_USE_COUNT; + lp_table[dev]->lp_open(); return 0; } static void lp_release(struct inode *inode, struct file *file) { - lp_table[MINOR(inode->i_rdev)].flags &= ~LP_BUSY; + int dev =MINOR(inode->i_rdev); + + lp_table[dev]->flags &= ~LP_BUSY; + lp_table[dev]->lp_release(); + MOD_DEC_USE_COUNT; } @@ -391,30 +413,33 @@ #endif if (minor >= max_lp) return -ENODEV; - if (!(lp_table[minor].flags & LP_EXIST)) + if (!(lp_table[minor]->flags & LP_EXIST)) return -ENODEV; switch (cmd) { case LPTIME: - lp_table[minor].time = arg; + lp_table[minor]->time = arg; break; case LPCHAR: - lp_table[minor].chars = arg; + lp_table[minor]->chars = arg; break; case LPABORT: if (arg) - lp_table[minor].flags |= LP_ABORT; + lp_table[minor]->flags |= LP_ABORT; else - lp_table[minor].flags &= ~LP_ABORT; + lp_table[minor]->flags &= ~LP_ABORT; break; case LPWAIT: - lp_table[minor].wait = arg; + lp_table[minor]->wait = arg; break; case LPSETIRQ: case LPGETIRQ: retval = lp_irq; break; default: - retval = -EINVAL; + if (lp_table[minor]->lp_ioctl) + retval = lp_table[minor]->lp_ioctl(minor, cmd, arg); + else + retval = -EINVAL; } return retval; } @@ -432,6 +457,18 @@ lp_release }; +#ifdef CONFIG_MODULES +static struct symbol_table parallel_syms = { +#include + X(lp_table), + X(lp_irq), + X(lp_interrupt), + X(lp_init), + X(register_parallel), + X(unregister_parallel), +#include +}; +#endif int lp_init(void) { @@ -441,44 +478,31 @@ return -EBUSY; if (register_chrdev(LP_MAJOR,"lp", &lp_fops)) { - printk("unable to get major %d for line printer\n", LP_MAJOR); - return -EBUSY; + printk(KERN_ERR "unable to get major %d for line printer\n", LP_MAJOR); + return -ENXIO; } +#ifdef CONFIG_MODULES + if (register_symtab(¶llel_syms)) { + unregister_chrdev(LP_MAJOR, "lp"); + printk(KERN_CRIT "unable to register parallel symtab\n"); + return -ENXIO; + } +#endif + #if WHICH_DRIVER == FORCE_POLLING lp_irq = 0; printk(KERN_INFO "lp_init: lp using polling driver\n"); #else -#ifdef CONFIG_AMIGA - if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_PARALLEL)) - lp_irq = add_isr(IRQ_AMIGA_CIAA_FLG, lp_interrupt, 0, - NULL, "printer"); -#endif -#ifdef CONFIG_ATARI - if (MACH_IS_ATARI) - lp_irq = add_isr(IRQ_MFP_BUSY, lp_interrupt, IRQ_TYPE_SLOW, - NULL, "printer"); -#endif - - if (lp_irq) - printk(KERN_INFO "lp_init: lp using interrupt\n"); - else - -#if WHICH_DRIVER == PREFER_INTERRUPT - printk(KERN_INFO "lp_init: lp using polling driver\n"); -#else - printk(KERN_WARNING "lp_init: can't get interrupt, and polling driver not configured\n"); -#endif + lp_irq = 1; + printk(KERN_INFO "lp_init: lp using interrupt driver\n"); #endif - max_lp = 0; - max_lp += lp_internal_init(lp_table, max_lp, MAX_LP, WHICH_DRIVER); +#ifndef MODULE + lp_internal_init(); #ifdef CONFIG_MULTIFACE_III_LP - max_lp += lp_mfc_init(lp_table, max_lp, MAX_LP, WHICH_DRIVER); -#if WHICH_DRIVER != FORCE_POLLING - add_isr(IRQ_AMIGA_PORTS, lp_interrupt, 0, NULL, - "Multiface III printer"); + lp_mfc_init(); #endif #endif return 0; @@ -490,3 +514,47 @@ void lp_setup(char *str, int *ints) { } + +#ifdef MODULE +int init_module(void) +{ +return lp_init(); +} + +void cleanup_module(void) +{ +unregister_chrdev(LP_MAJOR, "lp"); +} +#endif + +/* + * (un-)register for hardware drivers + * tab is an inititalised lp_struct, dev the desired minor + * if dev < 0, let the driver choose the first free minor + * if sucessful return the minor, else -1 + */ +int register_parallel(struct lp_struct *tab, int dev) +{ +if (dev < 0) { + dev = 0; + while ((dev < MAX_LP) && (lp_table[dev] != NULL)) + dev++; +} +if (dev > MAX_LP) + return -1; +if (lp_table[dev] != NULL) + return -1; +lp_table[dev] = tab; +printk(KERN_INFO "lp%d: %s at 0x%08lx\n", dev, tab->name, (long)tab->base); +return dev; +} + +#ifdef CONFIG_MODULES +void unregister_parallel(int dev) +{ +if ((dev < 0) || (dev > MAX_LP) || (lp_table[dev] == NULL)) + printk(KERN_ERR "WARNING: unregister_parallel for non-existant device ignored!\n"); +else + lp_table[dev] = NULL; +} +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/char/mem.c linux/drivers/char/mem.c --- v2.1.16/linux/drivers/char/mem.c Thu Dec 12 17:02:40 1996 +++ linux/drivers/char/mem.c Fri Dec 20 11:20:00 1996 @@ -61,7 +61,8 @@ if (count > end_mem - p) count = end_mem - p; read = 0; -#if defined(__sparc__) /* we don't have page 0 mapped on sparc.. */ +#if defined(__sparc__) || defined(__mc68000__) + /* we don't have page 0 mapped on sparc and m68k.. */ while (p < PAGE_SIZE && count > 0) { put_user(0,buf); buf++; @@ -91,7 +92,8 @@ if (count > end_mem - p) count = end_mem - p; written = 0; -#if defined(__sparc__) /* we don't have page 0 mapped on sparc.. */ +#if defined(__sparc__) || defined(__mc68000__) + /* we don't have page 0 mapped on sparc and m68k.. */ while (p < PAGE_SIZE && count > 0) { /* Hmm. Do something? */ buf++; @@ -453,6 +455,7 @@ #if defined (CONFIG_BUSMOUSE) || defined(CONFIG_UMISC) || \ defined (CONFIG_PSMOUSE) || defined (CONFIG_MS_BUSMOUSE) || \ defined (CONFIG_ATIXL_BUSMOUSE) || defined(CONFIG_SOFT_WATCHDOG) || \ + defined (CONFIG_AMIGAMOUSE) || defined (CONFIG_ATARIMOUSE) || \ defined (CONFIG_PCWATCHDOG) || \ defined (CONFIG_APM) || defined (CONFIG_RTC) || defined (CONFIG_SUN_MOUSE) misc_init(); diff -u --recursive --new-file v2.1.16/linux/drivers/char/misc.c linux/drivers/char/misc.c --- v2.1.16/linux/drivers/char/misc.c Sun Nov 10 20:12:11 1996 +++ linux/drivers/char/misc.c Fri Dec 20 11:20:00 1996 @@ -65,6 +65,8 @@ extern int psaux_init(void); extern int ms_bus_mouse_init(void); extern int atixl_busmouse_init(void); +extern int amiga_mouse_init(void); +extern int atari_mouse_init(void); extern int sun_mouse_init(void); extern void watchdog_init(void); extern void wdt_init(void); diff -u --recursive --new-file v2.1.16/linux/drivers/char/rtc.c linux/drivers/char/rtc.c --- v2.1.16/linux/drivers/char/rtc.c Tue Oct 29 19:58:06 1996 +++ linux/drivers/char/rtc.c Thu Dec 19 11:03:34 1996 @@ -57,10 +57,10 @@ /* * We sponge a minor off of the misc major. No need slurping - * up another valuable major dev number for this. + * up another valuable major dev number for this. If you add + * an ioctl, make sure you don't conflict with SPARC's RTC + * ioctls. */ - -#define RTC_MINOR 135 static struct wait_queue *rtc_wait; diff -u --recursive --new-file v2.1.16/linux/drivers/char/vga.c linux/drivers/char/vga.c --- v2.1.16/linux/drivers/char/vga.c Thu Dec 12 19:37:02 1996 +++ linux/drivers/char/vga.c Fri Dec 20 10:20:18 1996 @@ -134,7 +134,7 @@ /* This is inefficient, we could just put the cursor at 0xffff, but perhaps the delays due to the inefficiency are useful for some hardware... */ - write_vga(14, (video_mem_term - video_mem_base + 1)>>1); + write_vga(14, (video_mem_term - video_mem_base - 1)>>1); } void diff -u --recursive --new-file v2.1.16/linux/drivers/net/Config.in linux/drivers/net/Config.in --- v2.1.16/linux/drivers/net/Config.in Wed Dec 18 15:58:47 1996 +++ linux/drivers/net/Config.in Fri Dec 20 13:16:51 1996 @@ -113,22 +113,31 @@ bool 'Radio network interfaces' CONFIG_NET_RADIO if [ "$CONFIG_NET_RADIO" != "n" ]; then - tristate 'STRIP (Metricom starmode radio IP)' CONFIG_STRIP - tristate 'WaveLAN support' CONFIG_WAVELAN - tristate 'WIC Radio IP bridge' CONFIG_WIC -fi - -bool 'AX.25 network interfaces' CONFIG_NET_HAM -if [ "$CONFIG_NET_HAM" != "n" ]; then - tristate 'Serial port KISS driver' CONFIG_MKISS - tristate 'BPQ Ethernet driver' CONFIG_BPQETHER - tristate 'Gracilis PackeTwin driver' CONFIG_PT - tristate 'Ottawa PI and PI2 driver' CONFIG_PI - tristate 'Z8530 SCC driver' CONFIG_SCC + if [ "$CONFIG_AX25" != "n" ]; then + tristate 'Serial port KISS driver for AX.25' CONFIG_MKISS + tristate 'BPQ Ethernet driver for AX.25' CONFIG_BPQETHER + tristate 'Gracilis PackeTwin driver for AX.25' CONFIG_PT + tristate 'Ottawa PI and PI2 driver for AX.25' CONFIG_PI + tristate 'Z8530 SCC driver for AX.25' CONFIG_SCC + fi if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - tristate 'BAYCOM ser12 and par96 driver' CONFIG_BAYCOM - tristate 'Soundcard modem driver' CONFIG_SOUNDMODEM + tristate 'BAYCOM ser12 and par96 driver for AX.25' CONFIG_BAYCOM + tristate 'Soundcard modem driver for AX.25' CONFIG_SOUNDMODEM + if [ "$CONFIG_SOUNDMODEM" != "n" ]; then + bool 'Soundmodem support for Soundblaster and compatible cards' CONFIG_SOUNDMODEM_SBC + bool 'Soundmodem support for WSS and Crystal cards' CONFIG_SOUNDMODEM_WSS + bool 'Soundmodem support for 1200 baud AFSK modulation' CONFIG_SOUNDMODEM_AFSK1200 + if [ "$CONFIG_M586" = "y" -o "$CONFIG_M686" = "y" ]; then + if [ "$CONFIG_SOUNDMODEM_AFSK1200" != "n" ]; then + bool 'Soundmodem 1200 baud AFSK using floating point' CONFIG_SOUNDMODEM_AFSK1200_FP + fi + fi + bool 'Soundmodem support for 9600 baud FSK G3RUH modulation' CONFIG_SOUNDMODEM_FSK9600 + fi fi + tristate 'STRIP (Metricom starmode radio IP)' CONFIG_STRIP + tristate 'AT&T WaveLAN & DEC RoamAbout DS support' CONFIG_WAVELAN + tristate 'WIC Radio IP bridge' CONFIG_WIC fi tristate 'SLIP (serial line) support' CONFIG_SLIP diff -u --recursive --new-file v2.1.16/linux/drivers/net/Makefile linux/drivers/net/Makefile --- v2.1.16/linux/drivers/net/Makefile Thu Dec 12 19:37:04 1996 +++ linux/drivers/net/Makefile Fri Dec 20 11:20:00 1996 @@ -282,6 +282,30 @@ L_OBJS += sunlance.o endif +ifeq ($(CONFIG_HAPPYMEAL),y) +L_OBJS += sunhme.o +else + ifeq ($(CONFIG_HAPPYMEAL),m) + M_OBJS += sunhme.o + endif +endif + +ifeq ($(CONFIG_SUNQE),y) +L_OBJS += sunqe.o +else + ifeq ($(CONFIG_SUNQE),m) + M_OBJS += sunqe.o + endif +endif + +ifeq ($(CONFIG_MYRI_SBUS),y) +L_OBJS += myri_sbus.o +else + ifeq ($(CONFIG_MYRI_SBUS),m) + M_OBJS += myri_sbus.o + endif +endif + ifeq ($(CONFIG_AT1700),y) L_OBJS += at1700.o else @@ -535,6 +559,22 @@ else ifeq ($(CONFIG_ATARILANCE),m) M_OBJS += atarilance.o + endif +endif + +ifeq ($(CONFIG_ATARI_BIONET),y) +L_OBJS += atari_bionet.o +else + ifeq ($(CONFIG_ATARI_BIONET),m) + M_OBJS += atari_bionet.o + endif +endif + +ifeq ($(CONFIG_ATARI_PAMSNET),y) +L_OBJS += atari_pamsnet.o +else + ifeq ($(CONFIG_ATARI_PAMSNET),m) + M_OBJS += atari_pamsnet.o endif endif diff -u --recursive --new-file v2.1.16/linux/drivers/net/README.dgrs linux/drivers/net/README.dgrs --- v2.1.16/linux/drivers/net/README.dgrs Sat Apr 20 11:22:02 1996 +++ linux/drivers/net/README.dgrs Sat Dec 21 17:23:20 1996 @@ -9,14 +9,16 @@ The management tool lets you watch the performance graphically, as well as set the SNMP agent IP and IPX addresses, IEEE Spanning Tree, and Aging time. These can also be set from the command line -when the driver is loaded. The command line options are: +when the driver is loaded. The driver command line options are: - debug=NNN Debug printing level - dma=0/1 Disable/Enable DMA on PCI card - spantree=0/1 Disable/Enable IEEE spanning tree - hashexpire=NNN Change address aging time (default 300 seconds) - ipaddr=A,B,C,D Set SNMP agent IP address i.e. 199,86,8,221 - ipxnet=NNN Set SNMP agent IPX network number + debug=NNN Debug printing level + dma=0/1 Disable/Enable DMA on PCI card + spantree=0/1 Disable/Enable IEEE spanning tree + hashexpire=NNN Change address aging time (default 300 seconds) + ipaddr=A,B,C,D Set SNMP agent IP address i.e. 199,86,8,221 + iptrap=A,B,C,D Set SNMP agent IP trap address i.e. 199,86,8,221 + ipxnet=NNN Set SNMP agent IPX network number + nicmode=0/1 Disable/Enable multiple NIC mode There is also a tool for setting up input and output packet filters on each port, called "dgrsfilt". @@ -25,6 +27,11 @@ separately from the following FTP site: ftp://ftp.dgii.com/drivers/rightswitch/linux/ + +When nicmode=1, the board and driver operate as 4 or 6 individual +NIC ports (eth0...eth5) instead of as a switch. All switching +functions are disabled. In the future, the board firmware may include +a routing cache when in this mode. Copyright 1995-1996 Digi International Inc. diff -u --recursive --new-file v2.1.16/linux/drivers/net/Space.c linux/drivers/net/Space.c --- v2.1.16/linux/drivers/net/Space.c Thu Dec 12 19:37:05 1996 +++ linux/drivers/net/Space.c Sat Dec 21 13:16:57 1996 @@ -77,6 +77,9 @@ extern int dgrs_probe(struct device *); extern int smc_init( struct device * ); extern int sparc_lance_probe(struct device *); +extern int happy_meal_probe(struct device *); +extern int qec_probe(struct device *); +extern int myri_sbus_probe(struct device *); extern int atarilance_probe(struct device *); extern int a2065_probe(struct device *); extern int ariadne_probe(struct device *); @@ -225,12 +228,24 @@ #ifdef CONFIG_SUNLANCE && sparc_lance_probe(dev) #endif +#ifdef CONFIG_HAPPYMEAL + && happy_meal_probe(dev) +#endif +#ifdef CONFIG_SUNQE + && qec_probe(dev) +#endif +#ifdef CONFIG_MYRI_SBUS + && myri_sbus_probe(dev) +#endif && 1 ) { return 1; /* -ENODEV or -EAGAIN would be more accurate. */ } return 0; } + + + #ifdef CONFIG_SDLA extern int sdla_init(struct device *); static struct device sdla0_dev = { "sdla0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, sdla_init, }; @@ -378,41 +393,43 @@ # define NEXT_DEV (&eql_dev) #endif -#ifdef CONFIG_IBMTR +#ifdef CONFIG_TR +/* Token-ring device probe */ +extern int ibmtr_probe(struct device *); - extern int tok_probe(struct device *dev); - static struct device ibmtr_dev1 = { - "tr1", /* IBM Token Ring (Non-DMA) Interface */ - 0x0, /* recv memory end */ - 0x0, /* recv memory start */ - 0x0, /* memory end */ - 0x0, /* memory start */ - 0xa24, /* base I/O address */ - 0, /* IRQ */ - 0, 0, 0, /* flags */ - NEXT_DEV, /* next device */ - tok_probe /* ??? Token_init should set up the rest */ - }; -# undef NEXT_DEV -# define NEXT_DEV (&ibmtr_dev1) - - - static struct device ibmtr_dev0 = { - "tr0", /* IBM Token Ring (Non-DMA) Interface */ - 0x0, /* recv memory end */ - 0x0, /* recv memory start */ - 0x0, /* memory end */ - 0x0, /* memory start */ - 0xa20, /* base I/O address */ - 0, /* IRQ */ - 0, 0, 0, /* flags */ - NEXT_DEV, /* next device */ - tok_probe /* ??? Token_init should set up the rest */ - }; -# undef NEXT_DEV -# define NEXT_DEV (&ibmtr_dev0) +static int +trif_probe(struct device *dev) +{ + if (1 +#ifdef CONFIG_IBMTR + && ibmtr_probe(dev) +#endif + && 1 ) { + return 1; /* -ENODEV or -EAGAIN would be more accurate. */ + } + return 0; +} +static struct device tr7_dev = { + "tr7",0,0,0,0,0,0,0,0,0, NEXT_DEV, trif_probe }; +static struct device tr6_dev = { + "tr6",0,0,0,0,0,0,0,0,0, &tr7_dev, trif_probe }; +static struct device tr5_dev = { + "tr5",0,0,0,0,0,0,0,0,0, &tr6_dev, trif_probe }; +static struct device tr4_dev = { + "tr4",0,0,0,0,0,0,0,0,0, &tr5_dev, trif_probe }; +static struct device tr3_dev = { + "tr3",0,0,0,0,0,0,0,0,0, &tr4_dev, trif_probe }; +static struct device tr2_dev = { + "tr2",0,0,0,0,0,0,0,0,0, &tr3_dev, trif_probe }; +static struct device tr1_dev = { + "tr1",0,0,0,0,0,0,0,0,0, &tr2_dev, trif_probe }; +static struct device tr0_dev = { + "tr0",0,0,0,0,0,0,0,0,0, &tr1_dev, trif_probe }; +# undef NEXT_DEV +# define NEXT_DEV (&tr0_dev) #endif + #ifdef CONFIG_NET_IPIP extern int tunnel_init(struct device *); diff -u --recursive --new-file v2.1.16/linux/drivers/net/a2065.c linux/drivers/net/a2065.c --- v2.1.16/linux/drivers/net/a2065.c Mon May 20 07:54:28 1996 +++ linux/drivers/net/a2065.c Fri Dec 20 11:20:00 1996 @@ -41,33 +41,27 @@ #include #include #include -#include +#include #include -#include #include #include -#include -#include -#include -#include +#include +#include #include #include #include +#include -#include #include #include #include +#include +#include +#include #include "a2065.h" -#ifdef A2065_DEBUG -int a2065_debug = A2065_DEBUG; -#else -int a2065_debug = 1; -#endif - /* * Transmit/Receive Ring Definitions @@ -82,722 +76,736 @@ #define TX_RING_MOD_MASK (TX_RING_SIZE-1) #define RX_RING_MOD_MASK (RX_RING_SIZE-1) -#define PKT_BUF_SIZE (1520) +#define PKT_BUF_SIZE (1544) +#define RX_BUFF_SIZE PKT_BUF_SIZE +#define TX_BUFF_SIZE PKT_BUF_SIZE /* - * Private Device Data + * Layout of the Lance's RAM Buffer */ -struct a2065_private { - struct A2065Board *board; - struct TDRE *tx_ring[TX_RING_SIZE]; - struct RDRE *rx_ring[RX_RING_SIZE]; - u_char *tx_buff[TX_RING_SIZE]; - u_char *rx_buff[RX_RING_SIZE]; - int cur_tx, cur_rx; /* The next free ring entry */ - int dirty_tx; /* The ring entries to be free()ed. */ - struct enet_statistics stats; - char tx_full; - unsigned long lock; - int key; + +struct lance_init_block { + unsigned short mode; /* Pre-set mode (reg. 15) */ + unsigned char phys_addr[6]; /* Physical ethernet address */ + unsigned filter[2]; /* Multicast filter. */ + + /* Receive and transmit ring base, along with extra bits. */ + unsigned short rx_ptr; /* receive descriptor addr */ + unsigned short rx_len; /* receive len and high addr */ + unsigned short tx_ptr; /* transmit descriptor addr */ + unsigned short tx_len; /* transmit len and high addr */ + + /* The Tx and Rx ring entries must aligned on 8-byte boundaries. */ + struct lance_rx_desc brx_ring[RX_RING_SIZE]; + struct lance_tx_desc btx_ring[TX_RING_SIZE]; + + char rx_buf [RX_RING_SIZE][RX_BUFF_SIZE]; + char tx_buf [TX_RING_SIZE][TX_BUFF_SIZE]; }; /* - * Structure Created in the A2065's RAM Buffer + * Private Device Data */ -struct lancedata { - struct InitBlock init; - struct TDRE tx_ring[TX_RING_SIZE]; - struct RDRE rx_ring[RX_RING_SIZE]; - u_char tx_buff[TX_RING_SIZE][PKT_BUF_SIZE]; - u_char rx_buff[RX_RING_SIZE][PKT_BUF_SIZE]; +struct lance_private { + char *name; + volatile struct lance_regs *ll; + volatile struct lance_init_block *init_block; /* Hosts view */ + volatile struct lance_init_block *lance_init_block; /* Lance view */ + + int rx_new, tx_new; + int rx_old, tx_old; + + int lance_log_rx_bufs, lance_log_tx_bufs; + int rx_ring_mod_mask, tx_ring_mod_mask; + + struct enet_statistics stats; + int tpe; /* cable-selection is TPE */ + int auto_select; /* cable-selection by carrier */ + unsigned short busmaster_regval; + +#ifdef CONFIG_AMIGA + int key; +#endif +#ifdef CONFIG_SUNLANCE + struct Linux_SBus_DMA *ledma; /* if set this points to ledma and arch=4m */ + int burst_sizes; /* ledma SBus burst sizes */ +#endif }; +#define TX_BUFFS_AVAIL ((lp->tx_old<=lp->tx_new)?\ + lp->tx_old+lp->tx_ring_mod_mask-lp->tx_new:\ + lp->tx_old - lp->tx_new-1) -static int a2065_open(struct device *dev); -static void a2065_init_ring(struct device *dev); -static int a2065_start_xmit(struct sk_buff *skb, struct device *dev); -static int a2065_rx(struct device *dev); -static void a2065_interrupt(int irq, struct pt_regs *fp, void *data); -static int a2065_close(struct device *dev); -static struct enet_statistics *a2065_get_stats(struct device *dev); -static void set_multicast_list(struct device *dev); +#define LANCE_ADDR(x) ((int)(x) & ~0xff000000) -int a2065_probe(struct device *dev) +/* Load the CSR registers */ +static void load_csrs (struct lance_private *lp) { - int key1, key2; - struct ConfigDev *cd; - u_long board; - u_long sn; - struct a2065_private *priv; + volatile struct lance_regs *ll = lp->ll; + volatile struct lance_init_block *aib = lp->lance_init_block; + int leptr; - if ((key1 = zorro_find(MANUF_COMMODORE, PROD_A2065, 0, 0)) || - (key2 = zorro_find(MANUF_AMERISTAR, PROD_AMERISTAR2065, 0, 0))) { - cd = zorro_get_board(key1 ? key1 : key2); - if ((board = (u_long)cd->cd_BoardAddr)) { - sn = cd->cd_Rom.er_SerialNumber; - if (key1) { /* Commodore */ - dev->dev_addr[0] = 0x00; - dev->dev_addr[1] = 0x80; - dev->dev_addr[2] = 0x10; - } else { /* Ameristar */ - dev->dev_addr[0] = 0x00; - dev->dev_addr[1] = 0x00; - dev->dev_addr[2] = 0x9f; - } - dev->dev_addr[3] = (sn>>16) & 0xff; - dev->dev_addr[4] = (sn>>8) & 0xff; - dev->dev_addr[5] = sn & 0xff; - printk("%s: A2065 at 0x%08lx, Ethernet Address %02x:%02x:%02x:%02x:%02x:%02x\n", - dev->name, board, dev->dev_addr[0], - dev->dev_addr[1], dev->dev_addr[2], - dev->dev_addr[3], dev->dev_addr[4], - dev->dev_addr[5]); + leptr = LANCE_ADDR (aib); - init_etherdev(dev, 0); + ll->rap = LE_CSR1; + ll->rdp = (leptr & 0xFFFF); + ll->rap = LE_CSR2; + ll->rdp = leptr >> 16; + ll->rap = LE_CSR3; + ll->rdp = lp->busmaster_regval; - dev->priv = kmalloc(sizeof(struct - a2065_private), - GFP_KERNEL); - priv = (struct a2065_private *)dev->priv; - memset(priv, 0, sizeof(struct a2065_private)); + /* Point back to csr0 */ + ll->rap = LE_CSR0; +} - priv->board = (struct A2065Board *)ZTWO_VADDR(board); - priv->key = key1 ? key1 : key2; +#define ZERO 0 - dev->open = &a2065_open; - dev->stop = &a2065_close; - dev->hard_start_xmit = &a2065_start_xmit; - dev->get_stats = &a2065_get_stats; - dev->set_multicast_list = &set_multicast_list; +/* Setup the Lance Rx and Tx rings */ +/* Sets dev->tbusy */ +static void lance_init_ring (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_init_block *ib = lp->init_block; + volatile struct lance_init_block *aib; /* for LANCE_ADDR computations */ + int leptr; + int i; - zorro_config_board(key1 ? key1 : key2, 0); - return(0); - } - } - return(ENODEV); -} + aib = lp->lance_init_block; + /* Lock out other processes while setting up hardware */ + dev->tbusy = 1; + lp->rx_new = lp->tx_new = 0; + lp->rx_old = lp->tx_old = 0; + + ib->mode = 0; + + /* Copy the ethernet address to the lance init block + * Note that on the sparc you need to swap the ethernet address. + */ + ib->phys_addr [0] = dev->dev_addr [1]; + ib->phys_addr [1] = dev->dev_addr [0]; + ib->phys_addr [2] = dev->dev_addr [3]; + ib->phys_addr [3] = dev->dev_addr [2]; + ib->phys_addr [4] = dev->dev_addr [5]; + ib->phys_addr [5] = dev->dev_addr [4]; + + if (ZERO) + printk ("TX rings:\n"); + + /* Setup the Tx ring entries */ + for (i = 0; i <= (1<lance_log_tx_bufs); i++) { + leptr = LANCE_ADDR(&aib->tx_buf[i][0]); + ib->btx_ring [i].tmd0 = leptr; + ib->btx_ring [i].tmd1_hadr = leptr >> 16; + ib->btx_ring [i].tmd1_bits = 0; + ib->btx_ring [i].length = 0xf000; /* The ones required by tmd2 */ + ib->btx_ring [i].misc = 0; + if (i < 3) + if (ZERO) printk ("%d: 0x%8.8x\n", i, leptr); + } + + /* Setup the Rx ring entries */ + if (ZERO) + printk ("RX rings:\n"); + for (i = 0; i < (1<lance_log_rx_bufs); i++) { + leptr = LANCE_ADDR(&aib->rx_buf[i][0]); + + ib->brx_ring [i].rmd0 = leptr; + ib->brx_ring [i].rmd1_hadr = leptr >> 16; + ib->brx_ring [i].rmd1_bits = LE_R1_OWN; + ib->brx_ring [i].length = -RX_BUFF_SIZE | 0xf000; + ib->brx_ring [i].mblength = 0; + if (i < 3 && ZERO) + printk ("%d: 0x%8.8x\n", i, leptr); + } + + /* Setup the initialization block */ + + /* Setup rx descriptor pointer */ + leptr = LANCE_ADDR(&aib->brx_ring); + ib->rx_len = (lp->lance_log_rx_bufs << 13) | (leptr >> 16); + ib->rx_ptr = leptr; + if (ZERO) + printk ("RX ptr: %8.8x\n", leptr); + + /* Setup tx descriptor pointer */ + leptr = LANCE_ADDR(&aib->btx_ring); + ib->tx_len = (lp->lance_log_tx_bufs << 13) | (leptr >> 16); + ib->tx_ptr = leptr; + if (ZERO) + printk ("TX ptr: %8.8x\n", leptr); + + /* Clear the multicast filter */ + ib->filter [0] = 0; + ib->filter [1] = 0; +} -static int a2065_open(struct device *dev) +static int init_restart_lance (struct lance_private *lp) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; - struct A2065Board *board = priv->board; - struct lancedata *lancedata; /* LANCE point of view */ - struct lancedata *alancedata; /* Amiga point of view */ - - lancedata = (struct lancedata *)offsetof(struct A2065Board, RAM); - alancedata = (struct lancedata *)board->RAM; - - /* Stop the LANCE */ - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = STOP; - - /* Enable big endian byte ordering */ - board->Lance.RAP = CSR3; /* CSR3 */ - board->Lance.RDP = BSWP; - - /* Set the Init Block Pointer */ - board->Lance.RAP = CSR1; /* IADR[15:0] */ - board->Lance.RDP = (u_long)&lancedata->init; - board->Lance.RAP = CSR2; /* IADR[23:16] */ - board->Lance.RDP = 0x0000; - - /* Set the Mode */ - alancedata->init.Mode = 0; - - /* Set the Ethernet Hardware Address */ - /* Physical Address Register */ - alancedata->init.PADR[0] = dev->dev_addr[1]; - alancedata->init.PADR[1] = dev->dev_addr[0]; - alancedata->init.PADR[2] = dev->dev_addr[3]; - alancedata->init.PADR[3] = dev->dev_addr[2]; - alancedata->init.PADR[4] = dev->dev_addr[5]; - alancedata->init.PADR[5] = dev->dev_addr[4]; - - /* Set the Multicast Table */ - /* Logical Address Filter, LADRF[31:0] */ - alancedata->init.LADRF[0] = 0x00000000; - /* Logical Address Filter, LADRF[63:32] */ - alancedata->init.LADRF[1] = 0x00000000; - - /* Set the Receive and Transmit Descriptor Ring Pointers */ - alancedata->init.RDRA = (u_long)&lancedata->rx_ring; - alancedata->init.RLEN = LANCE_LOG_RX_BUFFERS << 13; - alancedata->init.TDRA = (u_long)&lancedata->tx_ring; - alancedata->init.TLEN = LANCE_LOG_TX_BUFFERS << 13; + volatile struct lance_regs *ll = lp->ll; + int i; - /* Initialise the Rings */ - a2065_init_ring(dev); + ll->rap = LE_CSR0; + ll->rdp = LE_C0_INIT; + /* Wait for the lance to complete initialization */ + for (i = 0; (i < 100) && !(ll->rdp & (LE_C0_ERR | LE_C0_IDON)); i++) + barrier(); + if ((i == 100) || (ll->rdp & LE_C0_ERR)) { + printk ("LANCE unopened after %d ticks, csr0=%4.4x.\n", i, ll->rdp); + return -1; + } + + /* Clear IDON by writing a "1", enable interrupts and start lance */ + ll->rdp = LE_C0_IDON; + ll->rdp = LE_C0_INEA | LE_C0_STRT; - /* Install the Interrupt handler */ - if (!add_isr(IRQ_AMIGA_PORTS, a2065_interrupt, 0, dev, "a2065 Ethernet")) - return(-EAGAIN); + return 0; +} - /* Make the LANCE read the Init Block */ - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = INEA|INIT; +static int lance_rx (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_init_block *ib = lp->init_block; + volatile struct lance_regs *ll = lp->ll; + volatile struct lance_rx_desc *rd; + unsigned char bits; + int len = 0; /* XXX shut up gcc warnings */ + struct sk_buff *skb = 0; /* XXX shut up gcc warnings */ - dev->tbusy = 0; - dev->interrupt = 0; - dev->start = 1; +#ifdef TEST_HITS + printk ("["); + for (i = 0; i < RX_RING_SIZE; i++) { + if (i == lp->rx_new) + printk ("%s", + ib->brx_ring [i].rmd1_bits & LE_R1_OWN ? "_" : "X"); + else + printk ("%s", + ib->brx_ring [i].rmd1_bits & LE_R1_OWN ? "." : "1"); + } + printk ("]"); +#endif + + ll->rdp = LE_C0_RINT|LE_C0_INEA; + for (rd = &ib->brx_ring [lp->rx_new]; + !((bits = rd->rmd1_bits) & LE_R1_OWN); + rd = &ib->brx_ring [lp->rx_new]) { + + /* We got an incomplete frame? */ + if ((bits & LE_R1_POK) != LE_R1_POK) { + lp->stats.rx_over_errors++; + lp->stats.rx_errors++; + continue; + } else if (bits & LE_R1_ERR) { + /* Count only the end frame as a tx error, not the beginning */ + if (bits & LE_R1_BUF) lp->stats.rx_fifo_errors++; + if (bits & LE_R1_CRC) lp->stats.rx_crc_errors++; + if (bits & LE_R1_OFL) lp->stats.rx_over_errors++; + if (bits & LE_R1_FRA) lp->stats.rx_frame_errors++; + if (bits & LE_R1_EOP) lp->stats.rx_errors++; + } else { + len = rd->mblength; + skb = dev_alloc_skb (len+2); - MOD_INC_USE_COUNT; + if (skb == 0) { + printk ("%s: Memory squeeze, deferring packet.\n", + dev->name); + lp->stats.rx_dropped++; + rd->mblength = 0; + rd->rmd1_bits = LE_R1_OWN; + lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask; + return 0; + } + + skb->dev = dev; + skb_reserve (skb, 2); /* 16 byte align */ + skb_put (skb, len); /* make room */ + eth_copy_and_sum(skb, + (unsigned char *)&(ib->rx_buf [lp->rx_new][0]), + len, 0); + skb->protocol = eth_type_trans (skb, dev); + netif_rx (skb); + lp->stats.rx_packets++; + } - return(0); + /* Return the packet to the pool */ + rd->mblength = 0; + rd->rmd1_bits = LE_R1_OWN; + lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask; + } + return 0; } - -static void a2065_init_ring(struct device *dev) +static int lance_tx (struct device *dev) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; - struct A2065Board *board = priv->board; - struct lancedata *lancedata; /* LANCE point of view */ - struct lancedata *alancedata; /* Amiga point of view */ - int i; + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_init_block *ib = lp->init_block; + volatile struct lance_regs *ll = lp->ll; + volatile struct lance_tx_desc *td; + int i, j; + int status; + + /* csr0 is 2f3 */ + ll->rdp = LE_C0_TINT | LE_C0_INEA; + /* csr0 is 73 */ + + j = lp->tx_old; + for (i = j; i != lp->tx_new; i = j) { + td = &ib->btx_ring [i]; + + /* If we hit a packet not owned by us, stop */ + if (td->tmd1_bits & LE_T1_OWN) + break; + + if (td->tmd1_bits & LE_T1_ERR) { + status = td->misc; + + lp->stats.tx_errors++; + if (status & LE_T3_RTY) lp->stats.tx_aborted_errors++; + if (status & LE_T3_LCOL) lp->stats.tx_window_errors++; + + if (status & LE_T3_CLOS) { + lp->stats.tx_carrier_errors++; + if (lp->auto_select) { + lp->tpe = 1 - lp->tpe; + printk("%s: Carrier Lost, trying %s\n", + dev->name, lp->tpe?"TPE":"AUI"); + /* Stop the lance */ + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; + lance_init_ring (dev); + load_csrs (lp); + init_restart_lance (lp); + return 0; + } + } - priv->lock = 0, priv->tx_full = 0; - priv->cur_rx = priv->cur_tx = 0; - priv->dirty_tx = 0; - - lancedata = (struct lancedata *)offsetof(struct A2065Board, RAM); - alancedata = (struct lancedata *)board->RAM; - - /* Set up TX Ring */ - for (i = 0; i < TX_RING_SIZE; i++) { - alancedata->tx_ring[i].TMD0 = (u_long)lancedata->tx_buff[i]; - alancedata->tx_ring[i].TMD1 = TF_STP|TF_ENP; - alancedata->tx_ring[i].TMD2 = -PKT_BUF_SIZE; - alancedata->tx_ring[i].TMD3 = 0x0000; - priv->tx_ring[i] = &alancedata->tx_ring[i]; - priv->tx_buff[i] = alancedata->tx_buff[i]; -#if 0 - printk("TX Entry %2d @ 0x%08x (LANCE 0x%08x), Buf @ 0x%08x (LANCE 0x%08x)\n", i, - (int)&alancedata->tx_ring[i], - (int)&lancedata->tx_ring[i], - (int)alancedata->tx_buff[i], - (int)lancedata->tx_buff[i]); -#endif - } + /* buffer errors and underflows turn off the transmitter */ + /* Restart the adapter */ + if (status & (LE_T3_BUF|LE_T3_UFL)) { + lp->stats.tx_fifo_errors++; + + printk ("%s: Tx: ERR_BUF|ERR_UFL, restarting\n", + dev->name); + /* Stop the lance */ + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; + lance_init_ring (dev); + load_csrs (lp); + init_restart_lance (lp); + return 0; + } + } else if ((td->tmd1_bits & LE_T1_POK) == LE_T1_POK) { + /* + * So we don't count the packet more than once. + */ + td->tmd1_bits &= ~(LE_T1_POK); + + /* One collision before packet was sent. */ + if (td->tmd1_bits & LE_T1_EONE) + lp->stats.collisions++; + + /* More than one collision, be optimistic. */ + if (td->tmd1_bits & LE_T1_EMORE) + lp->stats.collisions += 2; - /* Set up RX Ring */ - for (i = 0; i < RX_RING_SIZE; i++) { - alancedata->rx_ring[i].RMD0 = (u_long)lancedata->rx_buff[i]; - alancedata->rx_ring[i].RMD1 = RF_OWN; - alancedata->rx_ring[i].RMD2 = -PKT_BUF_SIZE; - alancedata->rx_ring[i].RMD3 = 0x0000; - priv->rx_ring[i] = &alancedata->rx_ring[i]; - priv->rx_buff[i] = alancedata->rx_buff[i]; -#if 0 - printk("RX Entry %2d @ 0x%08x (LANCE 0x%08x), Buf @ 0x%08x (LANCE 0x%08x)\n", i, - (int)&alancedata->rx_ring[i], - (int)&lancedata->rx_ring[i], - (int)alancedata->rx_buff[i], - (int)lancedata->rx_buff[i]); -#endif + lp->stats.tx_packets++; + } + + j = (j + 1) & lp->tx_ring_mod_mask; } + lp->tx_old = j; + ll->rdp = LE_C0_TINT | LE_C0_INEA; + return 0; } - -static int a2065_close(struct device *dev) +static void lance_interrupt (int irq, void *dev_id, struct pt_regs *regs) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; - struct A2065Board *board = priv->board; + struct device *dev; + struct lance_private *lp; + volatile struct lance_regs *ll; + int csr0; - dev->start = 0; - dev->tbusy = 1; + dev = (struct device *) dev_id; - board->Lance.RAP = CSR0; /* LANCE Controller Status */ + lp = (struct lance_private *) dev->priv; + ll = lp->ll; - if (a2065_debug > 1) { - printk("%s: Shutting down ethercard, status was %2.2x.\n", - dev->name, board->Lance.RDP); - printk("%s: %d packets missed\n", dev->name, - priv->stats.rx_missed_errors); - } + ll->rap = LE_CSR0; /* LANCE Controller Status */ + csr0 = ll->rdp; - /* We stop the LANCE here - it occasionally polls memory if we don't */ - board->Lance.RDP = STOP; + if (!(csr0 & LE_C0_INTR)) /* Check if any interrupt has */ + return; /* been generated by the Lance. */ - remove_isr(IRQ_AMIGA_PORTS, a2065_interrupt, dev); + if (dev->interrupt) + printk ("%s: again", dev->name); - MOD_DEC_USE_COUNT; + dev->interrupt = 1; - return(0); + /* Acknowledge all the interrupt sources ASAP */ + ll->rdp = csr0 & ~(LE_C0_INEA|LE_C0_TDMD|LE_C0_STOP|LE_C0_STRT| + LE_C0_INIT); + + if ((csr0 & LE_C0_ERR)) { + /* Clear the error condition */ + ll->rdp = LE_C0_BABL|LE_C0_ERR|LE_C0_MISS|LE_C0_INEA; + } + + if (csr0 & LE_C0_RINT) + lance_rx (dev); + + if (csr0 & LE_C0_TINT) + lance_tx (dev); + + /* Log misc errors. */ + if (csr0 & LE_C0_BABL) + lp->stats.tx_errors++; /* Tx babble. */ + if (csr0 & LE_C0_MISS) + lp->stats.rx_errors++; /* Missed a Rx frame. */ + if (csr0 & LE_C0_MERR) { + printk("%s: Bus master arbitration failure, status %4.4x.\n", dev->name, csr0); + /* Restart the chip. */ + ll->rdp = LE_C0_STRT; + } + + if ((TX_BUFFS_AVAIL >= 0) && dev->tbusy) { + dev->tbusy = 0; + mark_bh (NET_BH); + } + ll->rap = LE_CSR0; + ll->rdp = LE_C0_BABL|LE_C0_CERR|LE_C0_MISS|LE_C0_MERR| + LE_C0_IDON|LE_C0_INEA; + + dev->interrupt = 0; } +struct device *last_dev = 0; -static void a2065_interrupt(int irq, struct pt_regs *fp, void *data) +static int lance_open (struct device *dev) { - struct device *dev = (struct device *)data; - struct a2065_private *priv; - struct A2065Board *board; - int csr0, boguscnt = 10; - - if (dev == NULL) { - printk("a2065_interrupt(): irq for unknown device.\n"); - return; - } + struct lance_private *lp = (struct lance_private *)dev->priv; + volatile struct lance_regs *ll = lp->ll; + int status = 0; - priv = (struct a2065_private *)dev->priv; - board = priv->board; + last_dev = dev; - board->Lance.RAP = CSR0; /* LANCE Controller Status */ + /* Install the Interrupt handler */ + if (request_irq(IRQ_AMIGA_PORTS, lance_interrupt, 0, + "a2065 Ethernet", dev)) + return -EAGAIN; + + /* Stop the Lance */ + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; - if (!(board->Lance.RDP & INTR)) /* Check if any interrupt has - been generated by the board. */ - return; + load_csrs (lp); + lance_init_ring (dev); - if (dev->interrupt) - printk("%s: Re-entering the interrupt handler.\n", dev->name); + dev->tbusy = 0; + dev->interrupt = 0; + dev->start = 1; - dev->interrupt = 1; + status = init_restart_lance (lp); - while ((csr0 = board->Lance.RDP) & (ERR|RINT|TINT) && --boguscnt >= 0){ - /* Acknowledge all of the current interrupt sources ASAP. */ - board->Lance.RDP = csr0 & ~(INEA|TDMD|STOP|STRT|INIT); - -#if 0 - if (a2065_debug > 5) { - printk("%s: interrupt csr0=%#2.2x new csr=%#2.2x.", - dev->name, csr0, board->Lance.RDP); - printk("["); - if (csr0 & INTR) - printk(" INTR"); - if (csr0 & INEA) - printk(" INEA"); - if (csr0 & RXON) - printk(" RXON"); - if (csr0 & TXON) - printk(" TXON"); - if (csr0 & TDMD) - printk(" TDMD"); - if (csr0 & STOP) - printk(" STOP"); - if (csr0 & STRT) - printk(" STRT"); - if (csr0 & INIT) - printk(" INIT"); - if (csr0 & ERR) - printk(" ERR"); - if (csr0 & BABL) - printk(" BABL"); - if (csr0 & CERR) - printk(" CERR"); - if (csr0 & MISS) - printk(" MISS"); - if (csr0 & MERR) - printk(" MERR"); - if (csr0 & RINT) - printk(" RINT"); - if (csr0 & TINT) - printk(" TINT"); - if (csr0 & IDON) - printk(" IDON"); - printk(" ]\n"); - } -#endif + MOD_INC_USE_COUNT; - if (csr0 & RINT) /* Rx interrupt */ - a2065_rx(dev); + return status; +} - if (csr0 & TINT) { /* Tx-done interrupt */ - int dirty_tx = priv->dirty_tx; +static int lance_close (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_regs *ll = lp->ll; - while (dirty_tx < priv->cur_tx) { - int entry = dirty_tx % TX_RING_SIZE; - int status = - priv->tx_ring[entry]->TMD1 & 0xff00; - - if (status & TF_OWN) - break; /* It still hasn't been Txed */ - - priv->tx_ring[entry]->TMD1 &= 0x00ff; - - if (status & TF_ERR) { - /* There was an major error, log it. */ - int err_status = - priv->tx_ring[entry]->TMD3; - priv->stats.tx_errors++; - if (err_status & EF_RTRY) - priv->stats.tx_aborted_errors++; - if (err_status & EF_LCAR) - priv->stats.tx_carrier_errors++; - if (err_status & EF_LCOL) - priv->stats.tx_window_errors++; - if (err_status & EF_UFLO) { - /* Ackk! On FIFO errors the Tx unit is turned off! */ - priv->stats.tx_fifo_errors++; - /* Remove this verbosity later! */ - printk("%s: Tx FIFO error! Status %4.4x.\n", dev->name, csr0); - /* Restart the chip. */ - board->Lance.RDP = STRT; - } - } else { - if (status & (TF_MORE|TF_ONE)) - priv->stats.collisions++; - priv->stats.tx_packets++; - } - dirty_tx++; - } + dev->start = 0; + dev->tbusy = 1; -#ifndef final_version - if (priv->cur_tx - dirty_tx >= TX_RING_SIZE) { - printk("out-of-sync dirty pointer, %d vs. %d, full=%d.\n", - dirty_tx, priv->cur_tx, priv->tx_full); - dirty_tx += TX_RING_SIZE; - } -#endif + /* Stop the card */ + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; - if (priv->tx_full && dev->tbusy && dirty_tx > - priv->cur_tx - TX_RING_SIZE + 2) { - /* The ring is no longer full, clear tbusy. */ - priv->tx_full = 0; - dev->tbusy = 0; - mark_bh(NET_BH); - } + free_irq(IRQ_AMIGA_PORTS, dev); - priv->dirty_tx = dirty_tx; - } + MOD_DEC_USE_COUNT; - /* Log misc errors. */ - if (csr0 & BABL) - priv->stats.tx_errors++; /* Tx babble. */ - if (csr0 & MISS) - priv->stats.rx_errors++; /* Missed a Rx frame. */ - if (csr0 & MERR) { - printk("%s: Bus master arbitration failure, status %4.4x.\n", dev->name, csr0); - /* Restart the chip. */ - board->Lance.RDP = STRT; - } - } + return 0; +} - /* Clear any other interrupt, and set interrupt enable. */ - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = INEA|BABL|CERR|MISS|MERR|IDON; - -#if 0 - if (a2065_debug > 4) - printk("%s: exiting interrupt, csr%d=%#4.4x.\n", - dev->name, board->Lance.RAP, board->Lance.RDP); -#endif +static inline int lance_reset (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *)dev->priv; + volatile struct lance_regs *ll = lp->ll; + int status; + + /* Stop the lance */ + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; + load_csrs (lp); + lance_init_ring (dev); + dev->trans_start = jiffies; dev->interrupt = 0; - return; + dev->start = 1; + dev->tbusy = 0; + status = init_restart_lance (lp); +#ifdef DEBUG_DRIVER + printk ("Lance restart=%d\n", status); +#endif + return status; } - -static int a2065_start_xmit(struct sk_buff *skb, struct device *dev) +static int lance_start_xmit (struct sk_buff *skb, struct device *dev) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; - struct A2065Board *board = priv->board; - int entry; + struct lance_private *lp = (struct lance_private *)dev->priv; + volatile struct lance_regs *ll = lp->ll; + volatile struct lance_init_block *ib = lp->init_block; + int entry, skblen, len; + int status = 0; + static int outs; - /* Transmitter timeout, serious problems. */ + /* Transmitter timeout, serious problems */ if (dev->tbusy) { int tickssofar = jiffies - dev->trans_start; - if (tickssofar < 20) - return(1); - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - printk("%s: transmit timed out, status %4.4x, resetting.\n", dev->name, board->Lance.RDP); - board->Lance.RDP = STOP; - - /* Enable big endian byte ordering */ - board->Lance.RAP = CSR3; /* CSR3 */ - board->Lance.RDP = BSWP; - - priv->stats.tx_errors++; -#ifndef final_version - { - int i; - printk(" Ring data dump: dirty_tx %d cur_tx %d%s cur_rx %d.", - priv->dirty_tx, priv->cur_tx, priv->tx_full ? - " (full)" : "", priv->cur_rx); - for (i = 0 ; i < RX_RING_SIZE; i++) - printk("%s %08x %04x %04x", i & 0x3 ? "" : "\n ", - ((priv->rx_ring[i]->RMD1)<<16) | - priv->rx_ring[i]->RMD0, - -priv->rx_ring[i]->RMD2, priv->rx_ring[i]->RMD3); - for (i = 0 ; i < TX_RING_SIZE; i++) - printk("%s %08x %04x %04x", i & 0x3 ? "" : "\n ", - ((priv->tx_ring[i]->TMD1)<<16) | - priv->tx_ring[i]->TMD0, - -priv->tx_ring[i]->TMD2, priv->tx_ring[i]->TMD3); - printk("\n"); + + if (tickssofar < 100) { + status = -1; + } else { + printk ("%s: transmit timed out, status %04x, resetting\n", + dev->name, ll->rdp); + lance_reset (dev); } -#endif - a2065_init_ring(dev); - board->Lance.RDP = INEA|INIT; - - dev->tbusy = 0; - dev->trans_start = jiffies; - - return(0); + return status; } if (skb == NULL) { - dev_tint(dev); - return(0); + dev_tint (dev); + printk ("skb is NULL\n"); + return 0; } - if (skb->len <= 0) - return(0); - -#if 0 - if (a2065_debug > 3) { - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - printk("%s: a2065_start_xmit() called, csr0 %4.4x.\n", - dev->name, board->Lance.RDP); - board->Lance.RDP = 0x0000; + if (skb->len <= 0) { + printk ("skb len is %id\n", skb->len); + return 0; } -#endif - - /* - * Block a timer-based transmit from overlapping. This could better be - * done with atomic_swap(1, dev->tbusy), but set_bit() works as well. - */ - if (set_bit(0, (void*)&dev->tbusy) != 0) { - printk("%s: Transmitter access conflict.\n", dev->name); - return(1); - } - - if (set_bit(0, (void*)&priv->lock) != 0) { - if (a2065_debug > 0) - printk("%s: tx queue lock!.\n", dev->name); - /* don't clear dev->tbusy flag. */ - return(1); - } - - /* Fill in a Tx ring entry */ - -#if 0 - printk("TX pkt type 0x%04x from ", ((u_short *)skb->data)[6]); - { - int i; - u_char *ptr = &((u_char *)skb->data)[6]; - for (i = 0; i < 6; i++) - printk("%02x", ptr[i]); - } - printk(" to "); - { - int i; - u_char *ptr = (u_char *)skb->data; - for (i = 0; i < 6; i++) - printk("%02x", ptr[i]); + /* Block a timer-based transmit from overlapping. */ +#ifdef OLD_METHOD + dev->tbusy = 1; +#else + if (set_bit (0, (void *) &dev->tbusy) != 0) { + printk ("Transmitter access conflict.\n"); + return -1; } - printk(" data 0x%08x len %d\n", (int)skb->data, (int)skb->len); #endif + skblen = skb->len; - entry = priv->cur_tx % TX_RING_SIZE; + if (!TX_BUFFS_AVAIL) + return -1; - priv->tx_ring[entry]->TMD2 = -(ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN); - priv->tx_ring[entry]->TMD3 = 0x0000; - memcpy(priv->tx_buff[entry], skb->data, skb->len); - -#if 0 +#ifdef DEBUG_DRIVER + /* dump the packet */ { - int i, len; - - len = skb->len > 64 ? 64 : skb->len; - for (i = 0; i < len; i += 8) { - int j; - printk("%02x:", i); - for (j = 0; (j < 16) && ((i+j) < len); j++) { - if (!(j & 1)) - printk(" "); - printk("%02x", priv->tx_buff[entry][i+j]); - } - printk("\n"); + int i; + + for (i = 0; i < 64; i++) { + if ((i % 16) == 0) + printk ("\n"); + printk ("%2.2x ", skb->data [i]); } } #endif - - priv->tx_ring[entry]->TMD1 = (priv->tx_ring[entry]->TMD1 & - 0x00ff)|TF_OWN|TF_STP|TF_ENP; - - dev_kfree_skb(skb, FREE_WRITE); - - priv->cur_tx++; - if ((priv->cur_tx >= TX_RING_SIZE)&&(priv->dirty_tx >= TX_RING_SIZE)){ - -#if 0 - printk("*** Subtracting TX_RING_SIZE from cur_tx (%d) and dirty_tx (%d)\n", - priv->cur_tx, priv->dirty_tx); -#endif - - priv->cur_tx -= TX_RING_SIZE; - priv->dirty_tx -= TX_RING_SIZE; - } - - /* Trigger an immediate send poll. */ - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = INEA|TDMD; - + len = (skblen <= ETH_ZLEN) ? ETH_ZLEN : skblen; + entry = lp->tx_new & lp->tx_ring_mod_mask; + ib->btx_ring [entry].length = (-len) | 0xf000; + ib->btx_ring [entry].misc = 0; + + memcpy ((char *)&ib->tx_buf [entry][0], skb->data, skblen); + + /* Clear the slack of the packet, do I need this? */ + if (len != skblen) + memset ((char *) &ib->tx_buf [entry][skblen], 0, len - skblen); + + /* Now, give the packet to the lance */ + ib->btx_ring [entry].tmd1_bits = (LE_T1_POK|LE_T1_OWN); + lp->tx_new = (lp->tx_new+1) & lp->tx_ring_mod_mask; + + outs++; + /* Kick the lance: transmit now */ + ll->rdp = LE_C0_INEA | LE_C0_TDMD; dev->trans_start = jiffies; - - cli(); - priv->lock = 0; - if ((priv->tx_ring[(entry+1) % TX_RING_SIZE]->TMD1 & 0xff00) == 0) + dev_kfree_skb (skb, FREE_WRITE); + + if (TX_BUFFS_AVAIL) dev->tbusy = 0; - else - priv->tx_full = 1; - sti(); - return(0); + return status; } - -static int a2065_rx(struct device *dev) +static struct enet_statistics *lance_get_stats (struct device *dev) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; - int entry = priv->cur_rx % RX_RING_SIZE; - int i; + struct lance_private *lp = (struct lance_private *) dev->priv; - /* If we own the next entry, it's a new packet. Send it up. */ - while (!(priv->rx_ring[entry]->RMD1 & RF_OWN)) { - int status = priv->rx_ring[entry]->RMD1 & 0xff00; - - if (status != (RF_STP|RF_ENP)) { /* There was an error. */ - /* There is a tricky error noted by John Murphy, - to Russ Nelson: Even with full-sized - buffers it's possible for a jabber packet to use two - buffers, with only the last correctly noting the error. */ - if (status & RF_ENP) - /* Only count a general error at the */ - priv->stats.rx_errors++; /* end of a packet.*/ - if (status & RF_FRAM) - priv->stats.rx_frame_errors++; - if (status & RF_OFLO) - priv->stats.rx_over_errors++; - if (status & RF_CRC) - priv->stats.rx_crc_errors++; - if (status & RF_BUFF) - priv->stats.rx_fifo_errors++; - priv->rx_ring[entry]->RMD1 &= 0x00ff|RF_STP|RF_ENP; - } else { - /* Malloc up new buffer, compatible with net-3. */ - short pkt_len = priv->rx_ring[entry]->RMD3; - struct sk_buff *skb; + return &lp->stats; +} - if(pkt_len<60) - { - printk("%s: Runt packet!\n",dev->name); - priv->stats.rx_errors++; - } - else +/* taken from the depca driver */ +static void lance_load_multicast (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_init_block *ib = lp->init_block; + volatile u16 *mcast_table = (u16 *)&ib->filter; + struct dev_mc_list *dmi=dev->mc_list; + char *addrs; + int i, j, bit, byte; + u32 crc, poly = CRC_POLYNOMIAL_LE; + + /* set all multicast bits */ + if (dev->flags & IFF_ALLMULTI){ + ib->filter [0] = 0xffffffff; + ib->filter [1] = 0xffffffff; + return; + } + /* clear the multicast filter */ + ib->filter [0] = 0; + ib->filter [1] = 0; + + /* Add addresses */ + for (i = 0; i < dev->mc_count; i++){ + addrs = dmi->dmi_addr; + dmi = dmi->next; + + /* multicast address? */ + if (!(*addrs & 1)) + continue; + + crc = 0xffffffff; + for (byte = 0; byte < 6; byte++) + for (bit = *addrs++, j = 0; j < 8; j++, bit>>=1) { - skb = dev_alloc_skb(pkt_len+2); - if (skb == NULL) { - printk("%s: Memory squeeze, deferring packet.\n", dev->name); - for (i = 0; i < RX_RING_SIZE; i++) - if (priv->rx_ring[(entry+i) % RX_RING_SIZE]->RMD1 & RF_OWN) - break; - - if (i > RX_RING_SIZE-2) { - priv->stats.rx_dropped++; - priv->rx_ring[entry]->RMD1 |= RF_OWN; - priv->cur_rx++; - } - break; - } - skb->dev = dev; - skb_reserve(skb,2); /* 16 byte align */ - skb_put(skb,pkt_len); /* Make room */ - eth_copy_and_sum(skb, - priv->rx_buff[entry], - pkt_len,0); - skb->protocol=eth_type_trans(skb,dev); -#if 0 - printk("RX pkt type 0x%04x from ", - ((u_short *)skb->data)[6]); - { - int i; - u_char *ptr = &((u_char *)skb->data)[6]; - for (i = 0; i < 6; i++) - printk("%02x", ptr[i]); - } - printk(" to "); + int test; + + test = ((bit ^ crc) & 0x01); + crc >>= 1; + + if (test) { - int i; - u_char *ptr = (u_char *)skb->data; - for (i = 0; i < 6; i++) - printk("%02x", ptr[i]); + crc = crc ^ poly; } - printk(" data 0x%08x len %d\n", - (int)skb->data, (int)skb->len); -#endif - - netif_rx(skb); - priv->stats.rx_packets++; } - } - priv->rx_ring[entry]->RMD1 |= RF_OWN; - entry = (++priv->cur_rx) % RX_RING_SIZE; + + crc = crc >> 26; + mcast_table [crc >> 4] |= 1 << (crc & 0xf); } + return; +} - priv->cur_rx = priv->cur_rx % RX_RING_SIZE; - - /* We should check that at least two ring entries are free. - If not, we should free one and mark stats->rx_dropped++. */ +static void lance_set_multicast (struct device *dev) +{ + struct lance_private *lp = (struct lance_private *) dev->priv; + volatile struct lance_init_block *ib = lp->init_block; + volatile struct lance_regs *ll = lp->ll; + char shown; + + shown = 0; + while (dev->tbusy) + if (!shown++) + printk ("Waiting for tbusy to go down\n"); + set_bit (0, (void *) &dev->tbusy); + + shown = 0; + while (lp->tx_old != lp->tx_new) + if (!shown) + printk ("Waiting for buffer to empty\n"); + + ll->rap = LE_CSR0; + ll->rdp = LE_C0_STOP; + lance_init_ring (dev); - return(0); + if (dev->flags & IFF_PROMISC) { + ib->mode |= LE_MO_PROM; + } else { + ib->mode &= ~LE_MO_PROM; + lance_load_multicast (dev); + } + load_csrs (lp); + init_restart_lance (lp); + dev->tbusy = 0; } -static struct enet_statistics *a2065_get_stats(struct device *dev) +int a2065_probe(struct device *dev) { - struct a2065_private *priv = (struct a2065_private *)dev->priv; + int key1, key2 = 0; + struct ConfigDev *cd; + u_long board; + u_long sn; + struct lance_private *priv; + struct A2065Board *a2065; - return(&priv->stats); -} + if ((key1 = zorro_find(MANUF_COMMODORE, PROD_A2065, 0, 0)) || + (key1 = zorro_find(MANUF_COMMODORE, PROD_A2065_2, 0, 0)) || + (key2 = zorro_find(MANUF_AMERISTAR, PROD_AMERISTAR2065, 0, 0))) { + cd = zorro_get_board(key1 ? key1 : key2); + if ((board = (u_long)cd->cd_BoardAddr)) { + sn = cd->cd_Rom.er_SerialNumber; + if (key1) { /* Commodore */ + dev->dev_addr[0] = 0x00; + dev->dev_addr[1] = 0x80; + dev->dev_addr[2] = 0x10; + } else { /* Ameristar */ + dev->dev_addr[0] = 0x00; + dev->dev_addr[1] = 0x00; + dev->dev_addr[2] = 0x9f; + } + dev->dev_addr[3] = (sn>>16) & 0xff; + dev->dev_addr[4] = (sn>>8) & 0xff; + dev->dev_addr[5] = sn & 0xff; + printk("%s: A2065 at 0x%08lx, Ethernet Address %02x:%02x:%02x:%02x:%02x:%02x\n", + dev->name, board, dev->dev_addr[0], + dev->dev_addr[1], dev->dev_addr[2], + dev->dev_addr[3], dev->dev_addr[4], + dev->dev_addr[5]); + init_etherdev(dev, 0); -/* Set or clear the multicast filter for this adaptor. - */ -static void set_multicast_list(struct device *dev) -{ - struct a2065_private *priv = (struct a2065_private *)dev->priv; - struct A2065Board *board = priv->board; - struct lancedata *alancedata; /* Amiga point of view */ - alancedata = (struct lancedata *)board->RAM; + dev->priv = kmalloc(sizeof(struct + lance_private), + GFP_KERNEL); + priv = (struct lance_private *)dev->priv; + memset(priv, 0, sizeof(struct lance_private)); - /* We take the simple way out and always enable promiscuous mode. */ - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = STOP; /* Temporarily stop the lance. */ + a2065 = (struct A2065Board *)ZTWO_VADDR(board); + priv->ll = &a2065->Lance; + priv->init_block = + (struct lance_init_block *)&a2065->RAM; + priv->lance_init_block = (struct lance_init_block *) + offsetof(struct A2065Board, RAM); + priv->auto_select = 0; + priv->key = key1 ? key1 : key2; + priv->busmaster_regval = LE_C3_BSWP; - /* Enable big endian byte ordering */ - board->Lance.RAP = CSR3; /* CSR3 */ - board->Lance.RDP = BSWP; + priv->lance_log_rx_bufs = LANCE_LOG_RX_BUFFERS; + priv->lance_log_tx_bufs = LANCE_LOG_TX_BUFFERS; + priv->rx_ring_mod_mask = RX_RING_MOD_MASK; + priv->tx_ring_mod_mask = TX_RING_MOD_MASK; + + dev->open = &lance_open; + dev->stop = &lance_close; + dev->hard_start_xmit = &lance_start_xmit; + dev->get_stats = &lance_get_stats; + dev->set_multicast_list = &lance_set_multicast; + dev->dma = 0; - if (dev->flags&IFF_PROMISC) { - /* Log any net taps. */ - printk("%s: Promiscuous mode enabled.\n", dev->name); - alancedata->init.Mode = PROM; /* Set promiscuous mode */ - } else { - short multicast_table[4]; - int num_addrs=dev->mc_count; - if(dev->flags&IFF_ALLMULTI) - num_addrs=1; - /* - * We don't use the multicast table, - * but rely on upper-layer filtering. - */ - memset(multicast_table, (num_addrs == 0) ? 0 : -1, - sizeof(multicast_table)); - alancedata->init.LADRF[0] = multicast_table[0]<<16 | - multicast_table[1]; - alancedata->init.LADRF[1] = multicast_table[2]<<16 | - multicast_table[3]; - alancedata->init.Mode = 0x0000; + ether_setup(dev); + zorro_config_board(key1 ? key1 : key2, 0); + return(0); + } } - - board->Lance.RAP = CSR0; /* LANCE Controller Status */ - board->Lance.RDP = INEA|STRT|IDON|INIT; /* Resume normal operation. */ + return(ENODEV); } @@ -826,7 +834,7 @@ void cleanup_module(void) { - struct a2065_private *priv = (struct a2065_private *)a2065_dev.priv; + struct lance_private *priv = (struct lance_private *)a2065_dev.priv; unregister_netdev(&a2065_dev); zorro_unconfig_board(priv->key, 0); diff -u --recursive --new-file v2.1.16/linux/drivers/net/a2065.h linux/drivers/net/a2065.h --- v2.1.16/linux/drivers/net/a2065.h Mon May 20 07:54:28 1996 +++ linux/drivers/net/a2065.h Fri Dec 20 11:20:00 1996 @@ -38,149 +38,132 @@ * Am7990 Local Area Network Controller for Ethernet (LANCE) */ -struct Am7990 { - volatile u_short RDP; /* Register Data Port */ - volatile u_short RAP; /* Register Address Port */ +struct lance_regs { + unsigned short rdp; /* Register Data Port */ + unsigned short rap; /* Register Address Port */ }; +#define CRC_POLYNOMIAL_BE 0x04c11db7UL /* Ethernet CRC, big endian */ +#define CRC_POLYNOMIAL_LE 0xedb88320UL /* Ethernet CRC, little endian */ + /* * Am7990 Control and Status Registers */ -#define CSR0 0x0000 /* LANCE Controller Status */ -#define CSR1 0x0001 /* IADR[15:0] */ -#define CSR2 0x0002 /* IADR[23:16] */ -#define CSR3 0x0003 /* Misc */ +#define LE_CSR0 0x0000 /* LANCE Controller Status */ +#define LE_CSR1 0x0001 /* IADR[15:0] */ +#define LE_CSR2 0x0002 /* IADR[23:16] */ +#define LE_CSR3 0x0003 /* Misc */ /* * Bit definitions for CSR0 (LANCE Controller Status) */ -#define ERR 0x8000 /* Error */ -#define BABL 0x4000 /* Babble: Transmitted too many bits */ -#define CERR 0x2000 /* No Heartbeat (10BASE-T) */ -#define MISS 0x1000 /* Missed Frame */ -#define MERR 0x0800 /* Memory Error */ -#define RINT 0x0400 /* Receive Interrupt */ -#define TINT 0x0200 /* Transmit Interrupt */ -#define IDON 0x0100 /* Initialization Done */ -#define INTR 0x0080 /* Interrupt Flag */ -#define INEA 0x0040 /* Interrupt Enable */ -#define RXON 0x0020 /* Receive On */ -#define TXON 0x0010 /* Transmit On */ -#define TDMD 0x0008 /* Transmit Demand */ -#define STOP 0x0004 /* Stop */ -#define STRT 0x0002 /* Start */ -#define INIT 0x0001 /* Initialize */ +#define LE_C0_ERR 0x8000 /* Error */ +#define LE_C0_BABL 0x4000 /* Babble: Transmitted too many bits */ +#define LE_C0_CERR 0x2000 /* No Heartbeat (10BASE-T) */ +#define LE_C0_MISS 0x1000 /* Missed Frame */ +#define LE_C0_MERR 0x0800 /* Memory Error */ +#define LE_C0_RINT 0x0400 /* Receive Interrupt */ +#define LE_C0_TINT 0x0200 /* Transmit Interrupt */ +#define LE_C0_IDON 0x0100 /* Initialization Done */ +#define LE_C0_INTR 0x0080 /* Interrupt Flag */ +#define LE_C0_INEA 0x0040 /* Interrupt Enable */ +#define LE_C0_RXON 0x0020 /* Receive On */ +#define LE_C0_TXON 0x0010 /* Transmit On */ +#define LE_C0_TDMD 0x0008 /* Transmit Demand */ +#define LE_C0_STOP 0x0004 /* Stop */ +#define LE_C0_STRT 0x0002 /* Start */ +#define LE_C0_INIT 0x0001 /* Initialize */ /* * Bit definitions for CSR3 */ -#define BSWP 0x0004 /* Byte Swap +#define LE_C3_BSWP 0x0004 /* Byte Swap (on for big endian byte order) */ -#define ACON 0x0002 /* ALE Control +#define LE_C3_ACON 0x0002 /* ALE Control (on for active low ALE) */ -#define BCON 0x0001 /* Byte Control */ - - -/* - * Initialization Block - */ - -struct InitBlock { - u_short Mode; /* Mode */ - u_char PADR[6]; /* Physical Address */ - u_long LADRF[2]; /* Logical Address Filter */ - u_short RDRA; /* Receive Descriptor Ring Address */ - u_short RLEN; /* Receive Descriptor Ring Length */ - u_short TDRA; /* Transmit Descriptor Ring Address */ - u_short TLEN; /* Transmit Descriptor Ring Length */ -}; +#define LE_C3_BCON 0x0001 /* Byte Control */ /* * Mode Flags */ -#define PROM 0x8000 /* Promiscuous Mode */ -#define INTL 0x0040 /* Internal Loopback */ -#define DRTY 0x0020 /* Disable Retry */ -#define FCOLL 0x0010 /* Force Collision */ -#define DXMTFCS 0x0008 /* Disable Transmit CRC */ -#define LOOP 0x0004 /* Loopback Enable */ -#define DTX 0x0002 /* Disable Transmitter */ -#define DRX 0x0001 /* Disable Receiver */ - - -/* - * Receive Descriptor Ring Entry - */ - -struct RDRE { - volatile u_short RMD0; /* LADR[15:0] */ - volatile u_short RMD1; /* HADR[23:16] | Receive Flags */ - volatile u_short RMD2; /* Buffer Byte Count - (two's complement) */ - volatile u_short RMD3; /* Message Byte Count */ +#define LE_MO_PROM 0x8000 /* Promiscuous Mode */ +#define LE_MO_INTL 0x0040 /* Internal Loopback */ +#define LE_MO_DRTY 0x0020 /* Disable Retry */ +#define LE_MO_FCOLL 0x0010 /* Force Collision */ +#define LE_MO_DXMTFCS 0x0008 /* Disable Transmit CRC */ +#define LE_MO_LOOP 0x0004 /* Loopback Enable */ +#define LE_MO_DTX 0x0002 /* Disable Transmitter */ +#define LE_MO_DRX 0x0001 /* Disable Receiver */ + + +struct lance_rx_desc { + unsigned short rmd0; /* low address of packet */ + unsigned char rmd1_bits; /* descriptor bits */ + unsigned char rmd1_hadr; /* high address of packet */ + short length; /* This length is 2s complement (negative)! + * Buffer length + */ + unsigned short mblength; /* Aactual number of bytes received */ }; - - -/* - * Transmit Descriptor Ring Entry - */ - -struct TDRE { - volatile u_short TMD0; /* LADR[15:0] */ - volatile u_short TMD1; /* HADR[23:16] | Transmit Flags */ - volatile u_short TMD2; /* Buffer Byte Count - (two's complement) */ - volatile u_short TMD3; /* Error Flags */ + +struct lance_tx_desc { + unsigned short tmd0; /* low address of packet */ + unsigned char tmd1_bits; /* descriptor bits */ + unsigned char tmd1_hadr; /* high address of packet */ + short length; /* Length is 2s complement (negative)! */ + unsigned short misc; }; - + /* * Receive Flags */ -#define RF_OWN 0x8000 /* LANCE owns the descriptor */ -#define RF_ERR 0x4000 /* Error */ -#define RF_FRAM 0x2000 /* Framing Error */ -#define RF_OFLO 0x1000 /* Overflow Error */ -#define RF_CRC 0x0800 /* CRC Error */ -#define RF_BUFF 0x0400 /* Buffer Error */ -#define RF_STP 0x0200 /* Start of Packet */ -#define RF_ENP 0x0100 /* End of Packet */ +#define LE_R1_OWN 0x80 /* LANCE owns the descriptor */ +#define LE_R1_ERR 0x40 /* Error */ +#define LE_R1_FRA 0x20 /* Framing Error */ +#define LE_R1_OFL 0x10 /* Overflow Error */ +#define LE_R1_CRC 0x08 /* CRC Error */ +#define LE_R1_BUF 0x04 /* Buffer Error */ +#define LE_R1_SOP 0x02 /* Start of Packet */ +#define LE_R1_EOP 0x01 /* End of Packet */ +#define LE_R1_POK 0x03 /* Packet is complete: SOP + EOP */ /* * Transmit Flags */ -#define TF_OWN 0x8000 /* LANCE owns the descriptor */ -#define TF_ERR 0x4000 /* Error */ -#define TF_RES 0x2000 /* Reserved, +#define LE_T1_OWN 0x80 /* LANCE owns the descriptor */ +#define LE_T1_ERR 0x40 /* Error */ +#define LE_T1_RES 0x20 /* Reserved, LANCE writes this with a zero */ -#define TF_MORE 0x1000 /* More than one retry needed */ -#define TF_ONE 0x0800 /* One retry needed */ -#define TF_DEF 0x0400 /* Deferred */ -#define TF_STP 0x0200 /* Start of Packet */ -#define TF_ENP 0x0100 /* End of Packet */ +#define LE_T1_EMORE 0x10 /* More than one retry needed */ +#define LE_T1_EONE 0x08 /* One retry needed */ +#define LE_T1_EDEF 0x04 /* Deferred */ +#define LE_T1_SOP 0x02 /* Start of Packet */ +#define LE_T1_EOP 0x01 /* End of Packet */ +#define LE_T1_POK 0x03 /* Packet is complete: SOP + EOP */ /* * Error Flags */ -#define EF_BUFF 0x8000 /* Buffer Error */ -#define EF_UFLO 0x4000 /* Underflow Error */ -#define EF_LCOL 0x1000 /* Late Collision */ -#define EF_LCAR 0x0800 /* Loss of Carrier */ -#define EF_RTRY 0x0400 /* Retry Error */ -#define EF_TDR 0x003f /* Time Domain Reflectometry */ +#define LE_T3_BUF 0x8000 /* Buffer Error */ +#define LE_T3_UFL 0x4000 /* Underflow Error */ +#define LE_T3_LCOL 0x1000 /* Late Collision */ +#define LE_T3_CLOS 0x0800 /* Loss of Carrier */ +#define LE_T3_RTY 0x0400 /* Retry Error */ +#define LE_T3_TDR 0x03ff /* Time Domain Reflectometry */ /* @@ -189,7 +172,7 @@ struct A2065Board { u_char Pad1[0x4000]; - struct Am7990 Lance; + volatile struct lance_regs Lance; u_char Pad2[0x3ffc]; volatile u_char RAM[0x8000]; }; diff -u --recursive --new-file v2.1.16/linux/drivers/net/ariadne.c linux/drivers/net/ariadne.c --- v2.1.16/linux/drivers/net/ariadne.c Mon May 20 07:54:28 1996 +++ linux/drivers/net/ariadne.c Fri Dec 20 11:20:00 1996 @@ -54,7 +54,6 @@ #include #include #include -#include #include #include @@ -127,7 +126,7 @@ static void ariadne_init_ring(struct device *dev); static int ariadne_start_xmit(struct sk_buff *skb, struct device *dev); static int ariadne_rx(struct device *dev); -static void ariadne_interrupt(int irq, struct pt_regs *fp, void *data); +static void ariadne_interrupt(int irq, void *data, struct pt_regs *fp); static int ariadne_close(struct device *dev); static struct enet_statistics *ariadne_get_stats(struct device *dev); #ifdef HAVE_MULTICAST @@ -291,8 +290,8 @@ dev->interrupt = 0; dev->start = 1; - if (!add_isr(IRQ_AMIGA_PORTS, ariadne_interrupt, 0, dev, - "Ariadne Ethernet")) + if (request_irq(IRQ_AMIGA_PORTS, ariadne_interrupt, 0, + "Ariadne Ethernet", dev)) return(-EAGAIN); board->Lance.RAP = CSR0; /* PCnet-ISA Controller Status */ @@ -373,7 +372,7 @@ /* We stop the LANCE here -- it occasionally polls memory if we don't. */ board->Lance.RDP = STOP; - remove_isr(IRQ_AMIGA_PORTS, ariadne_interrupt, dev); + free_irq(IRQ_AMIGA_PORTS, dev); MOD_DEC_USE_COUNT; @@ -381,7 +380,7 @@ } -static void ariadne_interrupt(int irq, struct pt_regs *fp, void *data) +static void ariadne_interrupt(int irq, void *data, struct pt_regs *fp) { struct device *dev = (struct device *)data; struct ariadne_private *priv; diff -u --recursive --new-file v2.1.16/linux/drivers/net/atari_bionet.c linux/drivers/net/atari_bionet.c --- v2.1.16/linux/drivers/net/atari_bionet.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/atari_bionet.c Fri Dec 20 11:20:00 1996 @@ -0,0 +1,649 @@ +/* bionet.c BioNet-100 device driver for linux68k. + * + * Version: @(#)bionet.c 1.0 02/06/96 + * + * Author: Hartmut Laue + * and Torsten Narjes + * + * Little adaptions for integration into pl7 by Roman Hodek + * + What is it ? + ------------ + This driver controls the BIONET-100 LAN-Adapter which connects + an ATARI ST/TT via the ACSI-port to an Ethernet-based network. + + This version can be compiled as a loadable module (See the + compile command at the bottom of this file). + At load time, you can optionally set the debugging level and the + fastest response time on the command line of 'insmod'. + + 'bionet_debug' + controls the amount of diagnostic messages: + 0 : no messages + >0 : see code for meaning of printed messages + + 'bionet_min_poll_time' (always >=1) + gives the time (in jiffies) between polls. Low values + increase the system load (beware!) + + When loaded, a net device with the name 'bio0' becomes available, + which can be controlled with the usual 'ifconfig' command. + + It is possible to compile this driver into the kernel like other + (net) drivers. For this purpose, some source files (e.g. config-files + makefiles, Space.c) must be changed accordingly. (You may refer to + other drivers how to do it.) In this case, the device will be detected + at boot time and (probably) appear as 'eth0'. + + This code is based on several sources: + - The driver code for a parallel port ethernet adapter by + Donald Becker (see file 'atp.c' from the PC linux distribution) + - The ACSI code by Roman Hodek for the ATARI-ACSI harddisk support + and DMA handling. + - Very limited information about moving packets in and out of the + BIONET-adapter from the TCP package for TOS by BioData GmbH. + + Theory of Operation + ------------------- + Because the ATARI DMA port is usually shared between several + devices (eg. harddisk, floppy) we cannot block the ACSI bus + while waiting for interrupts. Therefore we use a polling mechanism + to fetch packets from the adapter. For the same reason, we send + packets without checking that the previous packet has been sent to + the LAN. We rely on the higher levels of the networking code to detect + missing packets and resend them. + + Before we access the ATARI DMA controller, we check if another + process is using the DMA. If not, we lock the DMA, perform one or + more packet transfers and unlock the DMA before returning. + We do not use 'stdma_lock' unconditionally because it is unclear + if the networking code can be set to sleep, which will happen if + another (possibly slow) device is using the DMA controller. + + The polling is done via timer interrupts which periodically + 'simulate' an interrupt from the Ethernet adapter. The time (in jiffies) + between polls varies depending on an estimate of the net activity. + The allowed range is given by the variable 'bionet_min_poll_time' + for the lower (fastest) limit and the constant 'MAX_POLL_TIME' + for the higher (slowest) limit. + + Whenever a packet arrives, we switch to fastest response by setting + the polling time to its lowest limit. If the following poll fails, + because no packets have arrived, we increase the time for the next + poll. When the net activity is low, the polling time effectively + stays at its maximum value, resulting in the lowest load for the + machine. + */ + +#define MAX_POLL_TIME 10 + +static char *version = + "bionet.c:v1.0 06-feb-96 (c) Hartmut Laue.\n"; + +#ifdef MODULE +#include +#else +#define MOD_INC_USE_COUNT +#define MOD_DEC_USE_COUNT +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +extern struct device *init_etherdev(struct device *dev, int sizeof_private); + +/* use 0 for production, 1 for verification, >2 for debug + */ +#ifndef NET_DEBUG +#define NET_DEBUG 0 +#endif +/* + * Global variable 'bionet_debug'. Can be set at load time by 'insmod' + */ +unsigned int bionet_debug = NET_DEBUG; +static unsigned int bionet_min_poll_time = 2; + + +/* Information that need to be kept for each board. + */ +struct net_local { + struct enet_statistics stats; + long open_time; /* for debugging */ + int poll_time; /* polling time varies with net load */ +}; + +static struct nic_pkt_s { /* packet format */ + unsigned char status; + unsigned char dummy; + unsigned char l_lo, l_hi; + unsigned char buffer[3000]; +} *nic_packet; +unsigned char *phys_nic_packet; + +/* Index to functions, as function prototypes. + */ +extern int bionet_probe(struct device *dev); + +static int bionet_open(struct device *dev); +static int bionet_send_packet(struct sk_buff *skb, struct device *dev); +static void bionet_poll_rx(struct device *); +static int bionet_close(struct device *dev); +static struct enet_statistics *net_get_stats(struct device *dev); +static void bionet_tick(unsigned long); + +static struct timer_list bionet_timer = { NULL, NULL, 0, 0, bionet_tick }; + +#define STRAM_ADDR(a) (((a) & 0xff000000) == 0) + +/* The following routines access the ethernet board connected to the + * ACSI port via the st_dma chip. + */ +#define NODE_ADR 0x60 + +#define C_READ 8 +#define C_WRITE 0x0a +#define C_GETEA 0x0f +#define C_SETCR 0x0e + +static int +sendcmd(unsigned int a0, unsigned int mod, unsigned int cmd) { + unsigned int c; + + dma_wd.dma_mode_status = (mod | ((a0) ? 2 : 0) | 0x88); + dma_wd.fdc_acces_seccount = cmd; + dma_wd.dma_mode_status = (mod | 0x8a); + + if( !acsi_wait_for_IRQ(HZ/2) ) /* wait for cmd ack */ + return -1; /* timeout */ + + c = dma_wd.fdc_acces_seccount; + return (c & 0xff); +} + + +static void +set_status(int cr) { + sendcmd(0,0x100,NODE_ADR | C_SETCR); /* CMD: SET CR */ + sendcmd(1,0x100,cr); + + dma_wd.dma_mode_status = 0x80; +} + +static int +get_status(unsigned char *adr) { + int i,c; + + DISABLE_IRQ(); + c = sendcmd(0,0x00,NODE_ADR | C_GETEA); /* CMD: GET ETH ADR*/ + if( c < 0 ) goto gsend; + + /* now read status bytes */ + + for (i=0; i<6; i++) { + dma_wd.fdc_acces_seccount = 0; /* request next byte */ + + if( !acsi_wait_for_IRQ(HZ/2) ) { /* wait for cmd ack */ + c = -1; + goto gsend; /* timeout */ + } + c = dma_wd.fdc_acces_seccount; + *adr++ = (unsigned char)c; + } + c = 1; +gsend: + dma_wd.dma_mode_status = 0x80; + return c; +} + +static void +bionet_intr(int irq, void *data, struct pt_regs *fp) { + return; +} + + +static int +get_frame(unsigned long paddr, int odd) { + int c; + unsigned long flags; + + DISABLE_IRQ(); + save_flags(flags); + cli(); + + dma_wd.dma_mode_status = 0x9a; + dma_wd.dma_mode_status = 0x19a; + dma_wd.dma_mode_status = 0x9a; + dma_wd.fdc_acces_seccount = 0x05; /* sector count */ + dma_wd.dma_lo = (unsigned char)paddr; + paddr >>= 8; + dma_wd.dma_md = (unsigned char)paddr; + paddr >>= 8; + dma_wd.dma_hi = (unsigned char)paddr; + restore_flags(flags); + + c = sendcmd(0,0x00,NODE_ADR | C_READ); /* CMD: READ */ + if( c < 128 ) goto rend; + + /* now read block */ + + c = sendcmd(1,0x00,odd); /* odd flag for address shift */ + dma_wd.dma_mode_status = 0x0a; + + if( !acsi_wait_for_IRQ(100) ) { /* wait for DMA to complete */ + c = -1; + goto rend; + } + dma_wd.dma_mode_status = 0x8a; + dma_wd.dma_mode_status = 0x18a; + dma_wd.dma_mode_status = 0x8a; + c = dma_wd.fdc_acces_seccount; + + dma_wd.dma_mode_status = 0x88; + c = dma_wd.fdc_acces_seccount; + c = 1; + +rend: + dma_wd.dma_mode_status = 0x80; + udelay(40); + acsi_wait_for_noIRQ(20); + return c; +} + + +static int +hardware_send_packet(unsigned long paddr, int cnt) { + unsigned int c; + unsigned long flags; + + DISABLE_IRQ(); + save_flags(flags); + cli(); + + dma_wd.dma_mode_status = 0x19a; + dma_wd.dma_mode_status = 0x9a; + dma_wd.dma_mode_status = 0x19a; + dma_wd.dma_lo = (unsigned char)paddr; + paddr >>= 8; + dma_wd.dma_md = (unsigned char)paddr; + paddr >>= 8; + dma_wd.dma_hi = (unsigned char)paddr; + + dma_wd.fdc_acces_seccount = 0xaa; /* sector count */ + restore_flags(flags); + + c = sendcmd(0,0x100,NODE_ADR | C_WRITE); /* CMD: WRITE */ + c = sendcmd(1,0x100,cnt&0xff); + c = sendcmd(1,0x100,cnt>>8); + + /* now write block */ + + dma_wd.dma_mode_status = 0x10a; /* DMA enable */ + if( !acsi_wait_for_IRQ(100) ) /* wait for DMA to complete */ + goto end; + + dma_wd.dma_mode_status = 0x19a; /* DMA disable ! */ + c = dma_wd.fdc_acces_seccount; + +end: + c = sendcmd(1,0x100,0); + c = sendcmd(1,0x100,0); + + dma_wd.dma_mode_status = 0x180; + udelay(40); + acsi_wait_for_noIRQ(20); + return( c & 0x02); +} + + +/* Check for a network adaptor of this type, and return '0' if one exists. + */ +int +bionet_probe(struct device *dev) { + unsigned char station_addr[6]; + static unsigned version_printed = 0; + static int no_more_found = 0; /* avoid "Probing for..." printed 4 times */ + int i; + + if (!MACH_IS_ATARI || no_more_found) + return ENODEV; + + printk("Probing for BioNet 100 Adapter...\n"); + + stdma_lock(bionet_intr, NULL); + i = get_status(station_addr); /* Read the station address PROM. */ + ENABLE_IRQ(); + stdma_release(); + + /* Check the first three octets of the S.A. for the manufactor's code. + */ + + if( i < 0 + || station_addr[0] != 'B' + || station_addr[1] != 'I' + || station_addr[2] != 'O' ) { + no_more_found = 1; + printk( "No BioNet 100 found.\n" ); + return ENODEV; + } + + + if (dev == NULL) + return ENODEV; + if (bionet_debug > 0 && version_printed++ == 0) + printk(version); + + printk("%s: %s found, eth-addr: %02x-%02x-%02x:%02x-%02x-%02x.\n", + dev->name, "BioNet 100", + station_addr[0], station_addr[1], station_addr[2], + station_addr[3], station_addr[4], station_addr[5]); + + /* Initialize the device structure. */ + + nic_packet = (struct nic_pkt_s *)acsi_buffer; + phys_nic_packet = (unsigned char *)phys_acsi_buffer; + if (bionet_debug > 0) { + printk("nic_packet at 0x%p, phys at 0x%p\n", + nic_packet, phys_nic_packet ); + } + + if (dev->priv == NULL) + dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL); + memset(dev->priv, 0, sizeof(struct net_local)); + + dev->open = bionet_open; + dev->stop = bionet_close; + dev->hard_start_xmit = bionet_send_packet; + dev->get_stats = net_get_stats; + + /* Fill in the fields of the device structure with ethernet-generic + * values. This should be in a common file instead of per-driver. + */ + + for (i = 0; i < ETH_ALEN; i++) { +#if 0 + dev->broadcast[i] = 0xff; +#endif + dev->dev_addr[i] = station_addr[i]; + } + ether_setup(dev); + return 0; +} + +/* Open/initialize the board. This is called (in the current kernel) + sometime after booting when the 'ifconfig' program is run. + + This routine should set everything up anew at each open, even + registers that "should" only need to be set once at boot, so that + there is non-reboot way to recover if something goes wrong. + */ +static int +bionet_open(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + + if (bionet_debug > 0) + printk("bionet_open\n"); + stdma_lock(bionet_intr, NULL); + + /* Reset the hardware here. + */ + set_status(4); + lp->open_time = 0; /*jiffies*/ + lp->poll_time = MAX_POLL_TIME; + + dev->tbusy = 0; + dev->interrupt = 0; + dev->start = 1; + + stdma_release(); + bionet_timer.data = (long)dev; + bionet_timer.expires = jiffies + lp->poll_time; + add_timer(&bionet_timer); + MOD_INC_USE_COUNT; + return 0; +} + +static int +bionet_send_packet(struct sk_buff *skb, struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + unsigned long flags; + + /* If some higher layer thinks we've missed an tx-done interrupt we + * are passed NULL. Caution: dev_tint() handles the cli()/sti() itself. + */ + if (skb == NULL) { + dev_tint(dev); + return 0; + } + /* Block a timer-based transmit from overlapping. This could better be + * done with atomic_swap(1, dev->tbusy), but set_bit() works as well. + */ + save_flags(flags); + cli(); + + if (stdma_islocked()) { + restore_flags(flags); + lp->stats.tx_errors++; + } + else { + int length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; + unsigned long buf = VTOP(skb->data); + int stat; + + stdma_lock(bionet_intr, NULL); + restore_flags(flags); + if( !STRAM_ADDR(buf+length-1) ) { + memcpy(nic_packet->buffer, skb->data, length); + buf = (unsigned long)&((struct nic_pkt_s *)phys_nic_packet)->buffer; + } + + dma_cache_maintenance(buf, length, 1); + + stat = hardware_send_packet(buf, length); + ENABLE_IRQ(); + stdma_release(); + + dev->trans_start = jiffies; + dev->tbusy = 0; + } + dev_kfree_skb(skb, FREE_WRITE); + + /* You might need to clean up and record Tx statistics here. + */ + lp->stats.tx_packets++; + return 0; +} + +/* We have a good packet(s), get it/them out of the buffers. + */ +static void +bionet_poll_rx(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + int boguscount = 10; + int pkt_len, status; + unsigned long flags; + + save_flags(flags); + cli(); + /* ++roman: Take care at locking the ST-DMA... This must be done with ints + * off, since otherwise an int could slip in between the question and the + * locking itself, and then we'd go to sleep... And locking itself is + * necessary to keep the floppy_change timer from working with ST-DMA + * registers. */ + if (stdma_islocked()) { + restore_flags(flags); + return; + } + stdma_lock(bionet_intr, NULL); + DISABLE_IRQ(); + restore_flags(flags); + + if( lp->poll_time < MAX_POLL_TIME ) lp->poll_time++; + + while(boguscount--) { + status = get_frame((unsigned long)phys_nic_packet, 0); + + if( status != 1 ) break; + + /* Good packet... */ + + dma_cache_maintenance((unsigned long)phys_nic_packet, 1520, 0); + + pkt_len = (nic_packet->l_hi << 8) | nic_packet->l_lo; + + lp->poll_time = bionet_min_poll_time; /* fast poll */ + if( pkt_len >= 60 && pkt_len <= 1514 ) { + + /* Malloc up new buffer. + */ + struct sk_buff *skb = alloc_skb(pkt_len, GFP_ATOMIC); + if (skb == NULL) { + printk("%s: Memory squeeze, dropping packet.\n", + dev->name); + lp->stats.rx_dropped++; + break; + } + skb->len = pkt_len; + skb->dev = dev; + + /* 'skb->data' points to the start of sk_buff data area. + */ + memcpy(skb->data, nic_packet->buffer, pkt_len); + netif_rx(skb); + lp->stats.rx_packets++; + } + } + + /* If any worth-while packets have been received, dev_rint() + has done a mark_bh(INET_BH) for us and will work on them + when we get to the bottom-half routine. + */ + + stdma_release(); + ENABLE_IRQ(); + return; +} + +/* bionet_tick: called by bionet_timer. Reads packets from the adapter, + * passes them to the higher layers and restarts the timer. + */ +static void +bionet_tick(unsigned long data) { + struct device *dev = (struct device *)data; + struct net_local *lp = (struct net_local *)dev->priv; + + if( bionet_debug > 0 && (lp->open_time++ & 7) == 8 ) + printk("bionet_tick: %ld\n", lp->open_time); + + if( !stdma_islocked() ) bionet_poll_rx(dev); + + bionet_timer.expires = jiffies + lp->poll_time; + add_timer(&bionet_timer); +} + +/* The inverse routine to bionet_open(). + */ +static int +bionet_close(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + + if (bionet_debug > 0) + printk("bionet_close, open_time=%ld\n", lp->open_time); + del_timer(&bionet_timer); + stdma_lock(bionet_intr, NULL); + + set_status(0); + lp->open_time = 0; + + dev->tbusy = 1; + dev->start = 0; + + stdma_release(); + MOD_DEC_USE_COUNT; + return 0; +} + +/* Get the current statistics. + This may be called with the card open or closed. + */ +static struct enet_statistics * +net_get_stats(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + return &lp->stats; +} + + +#ifdef MODULE + +#include + +/* We should include the kernel identification string in the module. + */ +static char kernel_version[] = UTS_RELEASE; + +#undef NEXT_DEV +#define NEXT_DEV (&bio_dev) + +static struct device bio_dev = + { + " ", /* filled in by register_netdev() */ + 0, 0, 0, 0, /* memory */ + 0, 0, /* base, irq */ + 0, 0, 0, NEXT_DEV, bionet_probe, + }; + +int +init_module(void) { + int err; + + if ((err = register_netdev(&bio_dev))) { + if (err == -EEXIST) { + printk("BIONET: devices already present. Module not loaded.\n"); + } + return err; + } + return 0; +} + +void +cleanup_module(void) { + unregister_netdev(&bio_dev); +} + +#endif /* MODULE */ + +/* Local variables: + * compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include + -b m68k-linuxaout -Wall -Wstrict-prototypes -O2 + -fomit-frame-pointer -pipe -DMODULE -I../../net/inet -c bionet.c" + * version-control: t + * kept-new-versions: 5 + * tab-width: 8 + * End: + */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/atari_pamsnet.c linux/drivers/net/atari_pamsnet.c --- v2.1.16/linux/drivers/net/atari_pamsnet.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/atari_pamsnet.c Fri Dec 20 11:20:00 1996 @@ -0,0 +1,921 @@ +/* atari_pamsnet.c PAMsNet device driver for linux68k. + * + * Version: @(#)PAMsNet.c 0.2ß 03/31/96 + * + * Author: Torsten Lang + * + * + * This driver is based on my driver PAMSDMA.c for MiNT-Net and + * on the driver bionet.c written by + * Hartmut Laue + * and Torsten Narjes + * + * Little adaptions for integration into pl7 by Roman Hodek + * + What is it ? + ------------ + This driver controls the PAMsNet LAN-Adapter which connects + an ATARI ST/TT via the ACSI-port to an Ethernet-based network. + + This version can be compiled as a loadable module (See the + compile command at the bottom of this file). + At load time, you can optionally set the debugging level and the + fastest response time on the command line of 'insmod'. + + 'pamsnet_debug' + controls the amount of diagnostic messages: + 0 : no messages + >0 : see code for meaning of printed messages + + 'pamsnet_min_poll_time' (always >=1) + gives the time (in jiffies) between polls. Low values + increase the system load (beware!) + + When loaded, a net device with the name 'eth?' becomes available, + which can be controlled with the usual 'ifconfig' command. + + It is possible to compile this driver into the kernel like other + (net) drivers. For this purpose, some source files (e.g. config-files + makefiles, Space.c) must be changed accordingly. (You may refer to + other drivers how to do it.) In this case, the device will be detected + at boot time and (probably) appear as 'eth0'. + + Theory of Operation + ------------------- + Because the ATARI DMA port is usually shared between several + devices (eg. harddisk, floppy) we cannot block the ACSI bus + while waiting for interrupts. Therefore we use a polling mechanism + to fetch packets from the adapter. For the same reason, we send + packets without checking that the previous packet has been sent to + the LAN. We rely on the higher levels of the networking code to detect + missing packets and resend them. + + Before we access the ATARI DMA controller, we check if another + process is using the DMA. If not, we lock the DMA, perform one or + more packet transfers and unlock the DMA before returning. + We do not use 'stdma_lock' unconditionally because it is unclear + if the networking code can be set to sleep, which will happen if + another (possibly slow) device is using the DMA controller. + + The polling is done via timer interrupts which periodically + 'simulate' an interrupt from the Ethernet adapter. The time (in jiffies) + between polls varies depending on an estimate of the net activity. + The allowed range is given by the variable 'bionet_min_poll_time' + for the lower (fastest) limit and the constant 'MAX_POLL_TIME' + for the higher (slowest) limit. + + Whenever a packet arrives, we switch to fastest response by setting + the polling time to its lowest limit. If the following poll fails, + because no packets have arrived, we increase the time for the next + poll. When the net activity is low, the polling time effectively + stays at its maximum value, resulting in the lowest load for the + machine. + */ + +#define MAX_POLL_TIME 10 + +static char *version = + "pamsnet.c:v0.2beta 30-mar-96 (c) Torsten Lang.\n"; + +#ifdef MODULE +#include +#else +#define MOD_INC_USE_COUNT +#define MOD_DEC_USE_COUNT +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#undef READ +#undef WRITE + +extern struct device *init_etherdev(struct device *dev, int sizeof_private); + +/* use 0 for production, 1 for verification, >2 for debug + */ +#ifndef NET_DEBUG +#define NET_DEBUG 0 +#endif +/* + * Global variable 'pamsnet_debug'. Can be set at load time by 'insmod' + */ +unsigned int pamsnet_debug = NET_DEBUG; +static unsigned int pamsnet_min_poll_time = 2; + + +/* Information that need to be kept for each board. + */ +struct net_local { + struct enet_statistics stats; + long open_time; /* for debugging */ + int poll_time; /* polling time varies with net load */ +}; + +static struct nic_pkt_s { /* packet format */ + unsigned char buffer[2048]; +} *nic_packet = 0; +unsigned char *phys_nic_packet; + +typedef unsigned char HADDR[6]; /* 6-byte hardware address of lance */ + +/* Index to functions, as function prototypes. + */ +static void start (int target); +static int stop (int target); +static int testpkt (int target); +static int sendpkt (int target, unsigned char *buffer, int length); +static int receivepkt (int target, unsigned char *buffer); +static int inquiry (int target, unsigned char *buffer); +static HADDR *read_hw_addr(int target, unsigned char *buffer); +static void setup_dma (void *address, unsigned rw_flag, int num_blocks); +static int send_first (int target, unsigned char byte); +static int send_1_5 (int lun, unsigned char *command, int dma); +static int get_status (void); +static int calc_received (void *start_address); + +extern int pamsnet_probe(struct device *dev); + +static int pamsnet_open(struct device *dev); +static int pamsnet_send_packet(struct sk_buff *skb, struct device *dev); +static void pamsnet_poll_rx(struct device *); +static int pamsnet_close(struct device *dev); +static struct enet_statistics *net_get_stats(struct device *dev); +static void pamsnet_tick(unsigned long); + +static void pamsnet_intr(int irq, void *data, struct pt_regs *fp); + +static struct timer_list pamsnet_timer = { NULL, NULL, 0, 0, pamsnet_tick }; + +#define STRAM_ADDR(a) (((a) & 0xff000000) == 0) + +typedef struct +{ + unsigned char reserved1[0x38]; + HADDR hwaddr; + unsigned char reserved2[0x1c2]; +} DMAHWADDR; + +/* + * Definitions of commands understood by the PAMs DMA adaptor. + * + * In general the DMA adaptor uses LUN 0, 5, 6 and 7 on one ID changeable + * by the PAM's Net software. + * + * LUN 0 works as a harddisk. You can boot the PAM's Net driver there. + * LUN 5 works as a harddisk and lets you access the RAM and some I/O HW + * area. In sector 0, bytes 0x38-0x3d you find the ethernet HW address + * of the adaptor. + * LUN 6 works as a harddisk and lets you access the firmware ROM. + * LUN 7 lets you send and receive packets. + * + * Some commands like the INQUIRY command work identical on all used LUNs. + * + * UNKNOWN1 seems to read some data. + * Command length is 6 bytes. + * UNKNOWN2 seems to read some data (command byte 1 must be !=0). The + * following bytes seem to be something like an allocation length. + * Command length is 6 bytes. + * READPKT reads a packet received by the DMA adaptor. + * Command length is 6 bytes. + * WRITEPKT sends a packet transferred by the following DMA phase. The length + * of the packet is transferred in command bytes 3 and 4. + * The adaptor automatically replaces the src hw address in an ethernet + * packet by its own hw address. + * Command length is 6 bytes. + * INQUIRY has the same function as the INQUIRY command supported by harddisks + * and other SCSI devices. It lets you detect which device you found + * at a given address. + * Command length is 6 bytes. + * START initializes the DMA adaptor. After this command it is able to send + * and receive packets. There is no status byte returned! + * Command length is 1 byte. + * NUMPKTS gives back the number of received packets waiting in the queue in + * the status byte. + * Command length is 1 byte. + * UNKNOWN3 + * UNKNOWN4 Function of these three commands is unknown. + * UNKNOWN5 The command length of these three commands is 1 byte. + * DESELECT immediately deselects the DMA adaptor. May important with interrupt + * driven operation. + * Command length is 1 byte. + * STOP resets the DMA adaptor. After this command packets can no longer + * be received or transferred. + * Command length is 6 byte. + */ + +enum {UNKNOWN1=3, READPKT=8, UNKNOWN2, WRITEPKT=10, INQUIRY=18, START, + NUMPKTS=22, UNKNOWN3, UNKNOWN4, UNKNOWN5, DESELECT, STOP}; + +#define READSECTOR READPKT +#define WRITESECTOR WRITEPKT + +u_char *inquire8="MV PAM's NET/GK"; + +#define DMALOW dma_wd.dma_lo +#define DMAMID dma_wd.dma_md +#define DMAHIGH dma_wd.dma_hi +#define DACCESS dma_wd.fdc_acces_seccount + +#define MFP_GPIP mfp.par_dt_reg + +/* Some useful functions */ + +#define INT (!(MFP_GPIP & 0x20)) +#define DELAY ({MFP_GPIP; MFP_GPIP; MFP_GPIP;}) +#define WRITEMODE(value) \ + ({ u_short dummy = value; \ + __asm__ volatile("movew %0, 0xFFFF8606" : : "d"(dummy)); \ + DELAY; \ + }) +#define WRITEBOTH(value1, value2) \ + ({ u_long dummy = (u_long)(value1)<<16 | (u_short)(value2); \ + __asm__ volatile("movel %0, 0xFFFF8604" : : "d"(dummy)); \ + DELAY; \ + }) + +/* Definitions for DMODE */ + +#define READ 0x000 +#define WRITE 0x100 + +#define DMA_FDC 0x080 +#define DMA_ACSI 0x000 + +#define DMA_DISABLE 0x040 + +#define SEC_COUNT 0x010 +#define DMA_WINDOW 0x000 + +#define REG_ACSI 0x008 +#define REG_FDC 0x000 + +#define A1 0x002 + +/* Timeout constants */ + +#define TIMEOUTCMD HZ/2 /* ca. 500ms */ +#define TIMEOUTDMA HZ /* ca. 1s */ +#define COMMAND_DELAY 500 /* ca. 0.5ms */ + +unsigned rw; +int lance_target = -1; +int if_up = 0; + +/* The following routines access the ethernet board connected to the + * ACSI port via the st_dma chip. + */ + +/* The following lowlevel routines work on physical addresses only and assume + * that eventually needed buffers are + * - completely located in ST RAM + * - are contigous in the physical address space + */ + +/* Setup the DMA counter */ + +static void +setup_dma (address, rw_flag, num_blocks) + void *address; + unsigned rw_flag; + int num_blocks; +{ + WRITEMODE((unsigned) rw_flag | DMA_FDC | SEC_COUNT | REG_ACSI | + A1); + WRITEMODE((unsigned)(rw_flag ^ WRITE) | DMA_FDC | SEC_COUNT | REG_ACSI | + A1); + WRITEMODE((unsigned) rw_flag | DMA_FDC | SEC_COUNT | REG_ACSI | + A1); + DMALOW = (unsigned char)((unsigned long)address & 0xFF); + DMAMID = (unsigned char)(((unsigned long)address >> 8) & 0xFF); + DMAHIGH = (unsigned char)(((unsigned long)address >> 16) & 0xFF); + WRITEBOTH((unsigned)num_blocks & 0xFF, + rw_flag | DMA_FDC | DMA_WINDOW | REG_ACSI | A1); + rw = rw_flag; +} + +/* Send the first byte of an command block */ + +static int +send_first (target, byte) + int target; + unsigned char byte; +{ + rw = READ; + acsi_delay_end(COMMAND_DELAY); + /* + * wake up ACSI + */ + WRITEMODE(DMA_FDC | DMA_WINDOW | REG_ACSI); + /* + * write command byte + */ + WRITEBOTH((target << 5) | (byte & 0x1F), DMA_FDC | + DMA_WINDOW | REG_ACSI | A1); + return (!acsi_wait_for_IRQ(TIMEOUTCMD)); +} + +/* Send the rest of an command block */ + +static int +send_1_5 (lun, command, dma) + int lun; + unsigned char *command; + int dma; +{ + int i, j; + + for (i=0; i<5; i++) { + WRITEBOTH((!i ? (((lun & 0x7) << 5) | (command[i] & 0x1F)) + : command[i]), + rw | REG_ACSI | DMA_WINDOW | + ((i < 4) ? DMA_FDC + : (dma ? DMA_ACSI + : DMA_FDC)) | A1); + if (i < 4 && (j = !acsi_wait_for_IRQ(TIMEOUTCMD))) + return (j); + } + return (0); +} + +/* Read a status byte */ + +static int +get_status (void) +{ + WRITEMODE(DMA_FDC | DMA_WINDOW | REG_ACSI | A1); + acsi_delay_start(); + return ((int)(DACCESS & 0xFF)); +} + +/* Calculate the number of received bytes */ + +static int +calc_received (start_address) + void *start_address; +{ + return (int)( + (((unsigned long)DMAHIGH << 16) | ((unsigned)DMAMID << 8) | DMALOW) + - (unsigned long)start_address); +} + +/* The following midlevel routines still work on physical addresses ... */ + +/* start() starts the PAM's DMA adaptor */ + +static void +start (target) + int target; +{ + send_first(target, START); +} + +/* stop() stops the PAM's DMA adaptor and returns a value of zero in case of success */ + +static int +stop (target) + int target; +{ + int ret = -1; + unsigned char cmd_buffer[5]; + + if (send_first(target, STOP)) + goto bad; + cmd_buffer[0] = cmd_buffer[1] = cmd_buffer[2] = + cmd_buffer[3] = cmd_buffer[4] = 0; + if (send_1_5(7, cmd_buffer, 0) || + !acsi_wait_for_IRQ(TIMEOUTDMA) || + get_status()) + goto bad; + ret = 0; +bad: + return (ret); +} + +/* testpkt() returns the number of received packets waiting in the queue */ + +static int +testpkt(target) + int target; +{ + int ret = -1; + + if (send_first(target, NUMPKTS)) + goto bad; + ret = get_status(); +bad: + return (ret); +} + +/* inquiry() returns 0 when PAM's DMA found, -1 when timeout, -2 otherwise */ +/* Please note: The buffer is for internal use only but must be defined! */ + +static int +inquiry (target, buffer) + int target; + unsigned char *buffer; +{ + int ret = -1; + unsigned char *vbuffer = (unsigned char *)PTOV(buffer); + unsigned char cmd_buffer[5]; + + if (send_first(target, INQUIRY)) + goto bad; + setup_dma(buffer, READ, 1); + vbuffer[8] = vbuffer[27] = 0; /* Avoid confusion with previous read data */ + cmd_buffer[0] = cmd_buffer[1] = cmd_buffer[2] = cmd_buffer[4] = 0; + cmd_buffer[3] = 48; + if (send_1_5(5, cmd_buffer, 1) || + !acsi_wait_for_IRQ(TIMEOUTDMA) || + get_status() || + (calc_received(buffer) < 32)) + goto bad; + dma_cache_maintenance((unsigned long)(buffer+8), 20, 0); + if (memcmp(inquire8, vbuffer+8, 20)) + goto bad; + ret = 0; +bad: + if (!!NET_DEBUG) { + vbuffer[8+20]=0; + printk("inquiry of target %d: %s\n", target, vbuffer+8); + } + return (ret); +} + +/* + * read_hw_addr() reads the sector containing the hwaddr and returns + * a pointer to it (virtual address!) or 0 in case of an error + */ + +static HADDR +*read_hw_addr(target, buffer) + int target; + unsigned char *buffer; +{ + HADDR *ret = 0; + unsigned char cmd_buffer[5]; + + if (send_first(target, READSECTOR)) + goto bad; + setup_dma(buffer, READ, 1); + cmd_buffer[0] = cmd_buffer[1] = cmd_buffer[2] = cmd_buffer[4] = 0; + cmd_buffer[3] = 1; + if (send_1_5(5, cmd_buffer, 1) || + !acsi_wait_for_IRQ(TIMEOUTDMA) || + get_status()) + goto bad; + ret = (HADDR *)PTOV(&(((DMAHWADDR *)buffer)->hwaddr)); + dma_cache_maintenance((unsigned long)buffer, 512, 0); +bad: + return (ret); +} + +static void +pamsnet_intr(irq, data, fp) + int irq; + void *data; + struct pt_regs *fp; +{ + return; +} + +/* receivepkt() loads a packet to a given buffer and returns its length */ + +static int +receivepkt (target, buffer) + int target; + unsigned char *buffer; +{ + int ret = -1; + unsigned char cmd_buffer[5]; + + if (send_first(target, READPKT)) + goto bad; + setup_dma(buffer, READ, 3); + cmd_buffer[0] = cmd_buffer[1] = cmd_buffer[2] = cmd_buffer[4] = 0; + cmd_buffer[3] = 3; + if (send_1_5(7, cmd_buffer, 1) || + !acsi_wait_for_IRQ(TIMEOUTDMA) || + get_status()) + goto bad; + ret = calc_received(buffer); +bad: + return (ret); +} + +/* sendpkt() sends a packet and returns a value of zero when the packet was sent + successfully */ + +static int +sendpkt (target, buffer, length) + int target; + unsigned char *buffer; + int length; +{ + int ret = -1; + unsigned char cmd_buffer[5]; + + if (send_first(target, WRITEPKT)) + goto bad; + setup_dma(buffer, WRITE, 3); + cmd_buffer[0] = cmd_buffer[1] = cmd_buffer[4] = 0; + cmd_buffer[2] = length >> 8; + cmd_buffer[3] = length & 0xFF; + if (send_1_5(7, cmd_buffer, 1) || + !acsi_wait_for_IRQ(TIMEOUTDMA) || + get_status()) + goto bad; + ret = 0; +bad: + return (ret); +} + +/* The following higher level routines work on virtual addresses and convert them to + * physical addresses when passed to the lowlevel routines. It's up to the higher level + * routines to copy data from Alternate RAM to ST RAM if neccesary! + */ + +/* Check for a network adaptor of this type, and return '0' if one exists. + */ + +extern int +pamsnet_probe (dev) + struct device *dev; +{ + int i; + HADDR *hwaddr; + + unsigned char station_addr[6]; + static unsigned version_printed = 0; + /* avoid "Probing for..." printed 4 times - the driver is supporting only one adapter now! */ + static int no_more_found = 0; + + if (no_more_found) + return ENODEV; + + no_more_found = 1; + + printk("Probing for PAM's Net/GK Adapter...\n"); + + /* Allocate the DMA buffer here since we need it for probing! */ + + nic_packet = (struct nic_pkt_s *)acsi_buffer; + phys_nic_packet = (unsigned char *)phys_acsi_buffer; + if (pamsnet_debug > 0) { + printk("nic_packet at 0x%p, phys at 0x%p\n", + nic_packet, phys_nic_packet ); + } + + stdma_lock(pamsnet_intr, NULL); + DISABLE_IRQ(); + + for (i=0; i<8; i++) { + /* Do two inquiries to cover cases with strange equipment on previous ID */ + /* blocking the ACSI bus (like the SLMC804 laser printer controller... */ + inquiry(i, phys_nic_packet); + if (!inquiry(i, phys_nic_packet)) { + lance_target = i; + break; + } + } + + if (!!NET_DEBUG) + printk("ID: %d\n",i); + + if (lance_target >= 0) { + if (!(hwaddr = read_hw_addr(lance_target, phys_nic_packet))) + lance_target = -1; + else + memcpy (station_addr, hwaddr, ETH_ALEN); + } + + ENABLE_IRQ(); + stdma_release(); + + if (lance_target < 0) + printk("No PAM's Net/GK found.\n"); + + if ((dev == NULL) || (lance_target < 0)) + return ENODEV; + if (pamsnet_debug > 0 && version_printed++ == 0) + printk(version); + + printk("%s: %s found on target %01d, eth-addr: %02x:%02x:%02x:%02x:%02x:%02x.\n", + dev->name, "PAM's Net/GK", lance_target, + station_addr[0], station_addr[1], station_addr[2], + station_addr[3], station_addr[4], station_addr[5]); + + /* Initialize the device structure. */ + if (dev->priv == NULL) + dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL); + memset(dev->priv, 0, sizeof(struct net_local)); + + dev->open = pamsnet_open; + dev->stop = pamsnet_close; + dev->hard_start_xmit = pamsnet_send_packet; + dev->get_stats = net_get_stats; + + /* Fill in the fields of the device structure with ethernet-generic + * values. This should be in a common file instead of per-driver. + */ + + for (i = 0; i < ETH_ALEN; i++) { +#if 0 + dev->broadcast[i] = 0xff; +#endif + dev->dev_addr[i] = station_addr[i]; + } + ether_setup(dev); + + return(0); +} + +/* Open/initialize the board. This is called (in the current kernel) + sometime after booting when the 'ifconfig' program is run. + + This routine should set everything up anew at each open, even + registers that "should" only need to be set once at boot, so that + there is non-reboot way to recover if something goes wrong. + */ +static int +pamsnet_open(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + + if (pamsnet_debug > 0) + printk("pamsnet_open\n"); + stdma_lock(pamsnet_intr, NULL); + DISABLE_IRQ(); + + /* Reset the hardware here. + */ + if (!if_up) + start(lance_target); + if_up = 1; + lp->open_time = 0; /*jiffies*/ + lp->poll_time = MAX_POLL_TIME; + + dev->tbusy = 0; + dev->interrupt = 0; + dev->start = 1; + + ENABLE_IRQ(); + stdma_release(); + pamsnet_timer.data = (long)dev; + pamsnet_timer.expires = jiffies + lp->poll_time; + add_timer(&pamsnet_timer); + MOD_INC_USE_COUNT; + return 0; +} + +static int +pamsnet_send_packet(struct sk_buff *skb, struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + unsigned long flags; + + /* If some higher layer thinks we've missed an tx-done interrupt we + * are passed NULL. Caution: dev_tint() handles the cli()/sti() itself. + */ + if (skb == NULL) { + dev_tint(dev); + return 0; + } + /* Block a timer-based transmit from overlapping. This could better be + * done with atomic_swap(1, dev->tbusy), but set_bit() works as well. + */ + save_flags(flags); + cli(); + + if (stdma_islocked()) { + restore_flags(flags); + lp->stats.tx_errors++; + } + else { + int length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; + unsigned long buf = VTOP(skb->data); + int stat; + + stdma_lock(pamsnet_intr, NULL); + DISABLE_IRQ(); + + restore_flags(flags); + if( !STRAM_ADDR(buf+length-1) ) { + memcpy(nic_packet->buffer, skb->data, length); + buf = (unsigned long)phys_nic_packet; + } + + dma_cache_maintenance(buf, length, 1); + + stat = sendpkt(lance_target, (unsigned char *)buf, length); + ENABLE_IRQ(); + stdma_release(); + + dev->trans_start = jiffies; + dev->tbusy = 0; + } + dev_kfree_skb(skb, FREE_WRITE); + + /* You might need to clean up and record Tx statistics here. + */ + lp->stats.tx_packets++; + return 0; +} + +/* We have a good packet(s), get it/them out of the buffers. + */ +static void +pamsnet_poll_rx(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + int boguscount; + int pkt_len; + struct sk_buff *skb; + unsigned long flags; + + save_flags(flags); + cli(); + /* ++roman: Take care at locking the ST-DMA... This must be done with ints + * off, since otherwise an int could slip in between the question and the + * locking itself, and then we'd go to sleep... And locking itself is + * necessary to keep the floppy_change timer from working with ST-DMA + * registers. */ + if (stdma_islocked()) { + restore_flags(flags); + return; + } + stdma_lock(pamsnet_intr, NULL); + DISABLE_IRQ(); + restore_flags(flags); + + boguscount = testpkt(lance_target); + if( lp->poll_time < MAX_POLL_TIME ) lp->poll_time++; + + while(boguscount--) { + pkt_len = receivepkt(lance_target, phys_nic_packet); + + if( pkt_len < 60 ) break; + + /* Good packet... */ + + dma_cache_maintenance((unsigned long)phys_nic_packet, pkt_len, 0); + + lp->poll_time = pamsnet_min_poll_time; /* fast poll */ + if( pkt_len >= 60 && pkt_len <= 2048 ) { + if (pkt_len > 1514) + pkt_len = 1514; + + /* Malloc up new buffer. + */ + skb = alloc_skb(pkt_len, GFP_ATOMIC); + if (skb == NULL) { + printk("%s: Memory squeeze, dropping packet.\n", + dev->name); + lp->stats.rx_dropped++; + break; + } + skb->len = pkt_len; + skb->dev = dev; + + /* 'skb->data' points to the start of sk_buff data area. + */ + memcpy(skb->data, nic_packet->buffer, pkt_len); + netif_rx(skb); + lp->stats.rx_packets++; + } + } + + /* If any worth-while packets have been received, dev_rint() + has done a mark_bh(INET_BH) for us and will work on them + when we get to the bottom-half routine. + */ + + ENABLE_IRQ(); + stdma_release(); + return; +} + +/* pamsnet_tick: called by pamsnet_timer. Reads packets from the adapter, + * passes them to the higher layers and restarts the timer. + */ +static void +pamsnet_tick(unsigned long data) { + struct device *dev = (struct device *)data; + struct net_local *lp = (struct net_local *)dev->priv; + + if( pamsnet_debug > 0 && (lp->open_time++ & 7) == 8 ) + printk("pamsnet_tick: %ld\n", lp->open_time); + + pamsnet_poll_rx(dev); + + pamsnet_timer.expires = jiffies + lp->poll_time; + add_timer(&pamsnet_timer); +} + +/* The inverse routine to pamsnet_open(). + */ +static int +pamsnet_close(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + + if (pamsnet_debug > 0) + printk("pamsnet_close, open_time=%ld\n", lp->open_time); + del_timer(&pamsnet_timer); + stdma_lock(pamsnet_intr, NULL); + DISABLE_IRQ(); + + if (if_up) + stop(lance_target); + if_up = 0; + + lp->open_time = 0; + + dev->tbusy = 1; + dev->start = 0; + + ENABLE_IRQ(); + stdma_release(); + MOD_DEC_USE_COUNT; + return 0; +} + +/* Get the current statistics. + This may be called with the card open or closed. + */ +static struct enet_statistics * +net_get_stats(struct device *dev) { + struct net_local *lp = (struct net_local *)dev->priv; + return &lp->stats; +} + + +#ifdef MODULE + +#include + +/* We should include the kernel identification string in the module. + */ +static char kernel_version[] = UTS_RELEASE; + +#undef NEXT_DEV +#define NEXT_DEV (&pam_dev) + +static struct device pam_dev = + { + " ", /* filled in by register_netdev() */ + 0, 0, 0, 0, /* memory */ + 0, 0, /* base, irq */ + 0, 0, 0, NEXT_DEV, pamsnet_probe, + }; + +int +init_module(void) { + int err; + + if ((err = register_netdev(&pam_dev))) { + if (err == -EEXIST) { + printk("PAM's Net/GK: devices already present. Module not loaded.\n"); + } + return err; + } + return 0; +} + +void +cleanup_module(void) { + unregister_netdev(&pam_dev); +} + +#endif /* MODULE */ + +/* Local variables: + * compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include + -b m68k-linuxaout -Wall -Wstrict-prototypes -O2 + -fomit-frame-pointer -pipe -DMODULE -I../../net/inet -c atari_pamsnet.c" + * version-control: t + * kept-new-versions: 5 + * tab-width: 8 + * End: + */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/atarilance.c linux/drivers/net/atarilance.c --- v2.1.16/linux/drivers/net/atarilance.c Fri Apr 26 12:12:25 1996 +++ linux/drivers/net/atarilance.c Fri Dec 20 11:20:00 1996 @@ -56,12 +56,12 @@ #include #include +#include #include #include #include #include #include -#include #include #include @@ -257,6 +257,8 @@ (highest byte stripped) */ { 0xffcf0000, 0xffcffff0, 0 }, /* PAMCard VME in TT and MSTE (highest byte stripped) */ + { 0xfecf0000, 0xfecffff0, 0 }, /* Rhotron's PAMCard VME in TT and MSTE + (highest byte stripped) */ }; #define N_LANCE_ADDR (sizeof(lance_addr_list)/sizeof(*lance_addr_list)) @@ -340,8 +342,7 @@ static int lance_open( struct device *dev ); static void lance_init_ring( struct device *dev ); static int lance_start_xmit( struct sk_buff *skb, struct device *dev ); -static void lance_interrupt( int irq, struct pt_regs *fp, struct device - *dev ); +static void lance_interrupt( int irq, void *dev_id, struct pt_regs *fp ); static int lance_rx( struct device *dev ); static int lance_close( struct device *dev ); static struct enet_statistics *lance_get_stats( struct device *dev ); @@ -533,8 +534,8 @@ if (lp->cardtype == PAM_CARD || memaddr == (unsigned short *)0xffe00000) { /* PAMs card and Riebl on ST use level 5 autovector */ - add_isr( IRQ_AUTO_5, (isrfunc)lance_interrupt, IRQ_TYPE_PRIO, dev, - "PAM/Riebl-ST Ethernet" ); + request_irq(IRQ_AUTO_5, lance_interrupt, IRQ_TYPE_PRIO, + "PAM/Riebl-ST Ethernet", dev); dev->irq = (unsigned short)IRQ_AUTO_5; } else { @@ -547,8 +548,8 @@ printk( "Lance: request for VME interrupt failed\n" ); return( 0 ); } - add_isr( irq, (isrfunc)lance_interrupt, IRQ_TYPE_PRIO, dev, - "Riebl-VME Ethernet" ); + request_irq(irq, lance_interrupt, IRQ_TYPE_PRIO, + "Riebl-VME Ethernet", dev); dev->irq = irq; } @@ -846,9 +847,10 @@ /* The LANCE interrupt handler. */ -static void lance_interrupt( int irq, struct pt_regs *fp, struct device *dev ) - -{ struct lance_private *lp; +static void lance_interrupt( int irq, void *dev_id, struct pt_regs *fp) +{ + struct device *dev = dev_id; + struct lance_private *lp; struct lance_ioreg *IO; int csr0, boguscnt = 10; diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs.c linux/drivers/net/dgrs.c --- v2.1.16/linux/drivers/net/dgrs.c Tue Nov 19 15:53:55 1996 +++ linux/drivers/net/dgrs.c Sat Dec 21 19:07:16 1996 @@ -17,10 +17,65 @@ * or 1-800-DIGIBRD. Outside the U.S., please check our Web page * at http://www.dgii.com for sales offices worldwide. * + * OPERATION: + * When compiled as a loadable module, this driver can operate + * the board as either a 4/6 port switch with a 5th or 7th port + * that is a conventional NIC interface as far as the host is + * concerned, OR as 4/6 independant NICs. To select multi-NIC + * mode, add "nicmode=1" on the insmod load line for the driver. + * + * This driver uses the "dev" common ethernet device structure + * and a private "priv" (dev->priv) structure that contains + * mostly DGRS-specific information and statistics. To keep + * the code for both the switch mode and the multi-NIC mode + * as similar as possible, I have introduced the concept of + * "dev0"/"priv0" and "devN"/"privN" pointer pairs in subroutines + * where needed. The first pair of pointers points to the + * "dev" and "priv" structures of the zeroth (0th) device + * interface associated with a board. The second pair of + * pointers points to the current (Nth) device interface + * for the board: the one for which we are processing data. + * + * In switch mode, the pairs of pointers are always the same, + * that is, dev0 == devN and priv0 == privN. This is just + * like previous releases of this driver which did not support + * NIC mode. + * + * In multi-NIC mode, the pairs of pointers may be different. + * We use the devN and privN pointers to reference just the + * name, port number, and statistics for the current interface. + * We use the dev0 and priv0 pointers to access the variables + * that control access to the board, such as board address + * and simulated 82596 variables. This is because there is + * only one "fake" 82596 that serves as the interface to + * the board. We do not want to try to keep the variables + * associated with this 82596 in sync across all devices. + * + * This scheme works well. As you will see, except for + * initialization, there is very little difference between + * the two modes as far as this driver is concerned. On the + * receive side in NIC mode, the interrupt *always* comes in on + * the 0th interface (dev0/priv0). We then figure out which + * real 82596 port it came in on from looking at the "chan" + * member that the board firmware adds at the end of each + * RBD (a.k.a. TBD). We get the channel number like this: + * int chan = ((I596_RBD *) S2H(cbp->xmit.tbdp))->chan; + * + * On the transmit side in multi-NIC mode, we specify the + * output 82596 port by setting the new "dstchan" structure + * member that is at the end of the RFD, like this: + * priv0->rfdp->dstchan = privN->chan; + * + * TODO: + * - Multi-NIC mode is not yet supported when the driver is linked + * into the kernel. + * - Better handling of multicast addresses. + * */ -static char *version = "$Id: dgrs.c,v 1.8 1996/04/18 03:11:14 rick Exp $"; +static char *version = "$Id: dgrs.c,v 1.12 1996/12/21 13:43:58 rick Exp $"; +#include #include #include @@ -36,7 +91,6 @@ #include #include #include -#include #include #include @@ -45,6 +99,22 @@ #include /* + * API changed at linux version 2.1.0 + */ +#if LINUX_VERSION_CODE >= 0x20100 + #include + #define IOREMAP(ADDR, LEN) ioremap(ADDR, LEN) + #define IOUNMAP(ADDR) iounmap(ADDR) + #define COPY_FROM_USER(DST,SRC,LEN) copy_from_user(DST,SRC,LEN) + #define COPY_TO_USER(DST,SRC,LEN) copy_to_user(DST,SRC,LEN) +#else + #define IOREMAP(ADDR, LEN) vremap(ADDR, LEN) + #define IOUNMAP(ADDR) vfree(ADDR) + #define COPY_FROM_USER(DST,SRC,LEN) memcpy_fromfs(DST,SRC,LEN) + #define COPY_TO_USER(DST,SRC,LEN) memcpy_tofs(DST,SRC,LEN) +#endif + +/* * DGRS include files */ typedef unsigned char uchar; @@ -84,8 +154,9 @@ * Macros to convert switch to host and host to switch addresses * (assumes a local variable priv points to board dependent struct) */ -#define S2H(A) ( ((unsigned long)(A)&0x00ffffff) + priv->vmem ) -#define H2S(A) ( ((char *) (A) - priv->vmem) + 0xA3000000 ) +#define S2H(A) ( ((unsigned long)(A)&0x00ffffff) + priv0->vmem ) +#define S2HN(A) ( ((unsigned long)(A)&0x00ffffff) + privN->vmem ) +#define H2S(A) ( ((char *) (A) - priv0->vmem) + 0xA3000000 ) /* * Convert a switch address to a "safe" address for use with the @@ -103,7 +174,9 @@ int dgrs_spantree = -1; int dgrs_hashexpire = -1; uchar dgrs_ipaddr[4] = { 0xff, 0xff, 0xff, 0xff}; +uchar dgrs_iptrap[4] = { 0xff, 0xff, 0xff, 0xff}; long dgrs_ipxnet = -1; +int dgrs_nicmode = 0; /* * Chain of device structures @@ -157,6 +230,17 @@ DMACHAIN *dmadesc_s; /* area for DMA chains (SW addr.) */ DMACHAIN *dmadesc_h; /* area for DMA chains (Host Virtual) */ + /* + * Multi-NIC mode variables + * + * All entries of the devtbl[] array are valid for the 0th + * device (i.e. eth0, but not eth1...eth5). devtbl[0] is + * valid for all devices (i.e. eth0, eth1, ..., eth5). + */ + int nports; /* Number of physical ports (4 or 6) */ + int chan; /* Channel # (1-6) for this device */ + struct device *devtbl[6]; /* Ptrs to N device structs */ + } DGRS_PRIV; @@ -164,23 +248,23 @@ * reset or un-reset the IDT processor */ static void -proc_reset(struct device *dev, int reset) +proc_reset(struct device *dev0, int reset) { - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv; - if (priv->plxreg) + if (priv0->plxreg) { ulong val; - val = inl(dev->base_addr + PLX_MISC_CSR); + val = inl(dev0->base_addr + PLX_MISC_CSR); if (reset) val |= SE6_RESET; else val &= ~SE6_RESET; - OUTL(dev->base_addr + PLX_MISC_CSR, val); + OUTL(dev0->base_addr + PLX_MISC_CSR, val); } else { - OUTB(dev->base_addr + ES4H_PC, reset ? ES4H_PC_RESET : 0); + OUTB(dev0->base_addr + ES4H_PC, reset ? ES4H_PC_RESET : 0); } } @@ -188,17 +272,17 @@ * See if the board supports bus master DMA */ static int -check_board_dma(struct device *dev) +check_board_dma(struct device *dev0) { - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv; ulong x; /* - * If Space.c says not to use DMA, or if it's not a PLX based + * If Space.c says not to use DMA, or if its not a PLX based * PCI board, or if the expansion ROM space is not PCI * configured, then return false. */ - if (!dgrs_dma || !priv->plxreg || !priv->plxdma) + if (!dgrs_dma || !priv0->plxreg || !priv0->plxdma) return (0); /* @@ -206,7 +290,7 @@ * area to 0x80000000 so that we can use it to access the DMA * registers from the host side. */ - OUTL(dev->base_addr + PLX_ROM_BASE_ADDR, 0x80000000); + OUTL(dev0->base_addr + PLX_ROM_BASE_ADDR, 0x80000000); /* * Set the PCI region descriptor to: @@ -221,15 +305,15 @@ * disable BURST * 0 internal wait states */ - OUTL(dev->base_addr + PLX_BUS_REGION, 0x49430343); + OUTL(dev0->base_addr + PLX_BUS_REGION, 0x49430343); /* * Now map the DMA registers into our virtual space */ - priv->vplxdma = (ulong *) ioremap (priv->plxdma, 256); - if (!priv->vplxdma) + priv0->vplxdma = (ulong *) IOREMAP (priv0->plxdma, 256); + if (!priv0->vplxdma) { - printk("%s: can't ioremap() the DMA regs", dev->name); + printk("%s: can't *remap() the DMA regs\n", dev0->name); return (0); } @@ -239,8 +323,8 @@ * DMA register. Otherwise, we probably have an old board * and wrote into regular RAM. */ - priv->vplxdma[PLX_DMA0_MODE/4] = 0xFFFFFFFF; - x = priv->vplxdma[PLX_DMA0_MODE/4]; + priv0->vplxdma[PLX_DMA0_MODE/4] = 0xFFFFFFFF; + x = priv0->vplxdma[PLX_DMA0_MODE/4]; if (x != 0x00001FFF) return (0); @@ -251,10 +335,10 @@ * Initiate DMA using PLX part on PCI board. Spin the * processor until completed. All addresses are physical! * - * If pciaddr is NULL, then it's a chaining DMA, and lcladdr is + * If pciaddr is NULL, then its a chaining DMA, and lcladdr is * the address of the first DMA descriptor in the chain. * - * If pciaddr is not NULL, then it's a single DMA. + * If pciaddr is not NULL, then its a single DMA. * * In either case, "lcladdr" must have been fixed up to make * sure the MSB isn't set using the S2DMA macro before passing @@ -329,7 +413,8 @@ if ( ! (csr & PLX_DMA_CSR_0_DONE) ) { - printk("%s: DMA done never occurred. DMA disabled.", dev->name); + printk("%s: DMA done never occurred. DMA disabled.\n", + dev->name); priv->use_dma = 0; return 1; } @@ -337,12 +422,38 @@ } /* - * Process a received frame + * dgrs_rcv_frame() + * + * Process a received frame. This is called from the interrupt + * routine, and works for both switch mode and multi-NIC mode. + * + * Note that when in multi-NIC mode, we want to always access the + * hardware using the dev and priv structures of the first port, + * so that we are using only one set of variables to maintain + * the board interface status, but we want to use the Nth port + * dev and priv structures to maintain statistics and to pass + * the packet up. + * + * Only the first device structure is attached to the interrupt. + * We use the special "chan" variable at the end of the first RBD + * to select the Nth device in multi-NIC mode. + * + * We currently do chained DMA on a per-packet basis when the + * packet is "long", and we spin the CPU a short time polling + * for DMA completion. This avoids a second interrupt overhead, + * and gives the best performance for light traffic to the host. + * + * However, a better scheme that could be implemented would be + * to see how many packets are outstanding for the host, and if + * the number is "large", create a long chain to DMA several + * packets into the host in one go. In this case, we would set + * up some state variables to let the host CPU continue doing + * other things until a DMA completion interrupt comes along. */ void dgrs_rcv_frame( - struct device *dev, - DGRS_PRIV *priv, + struct device *dev0, + DGRS_PRIV *priv0, I596_CB *cbp ) { @@ -351,8 +462,32 @@ struct sk_buff *skb; uchar *putp; uchar *p; + struct device *devN; + DGRS_PRIV *privN; - if (0) printk("%s: rcv len=%ld", dev->name, cbp->xmit.count); + /* + * Determine Nth priv and dev structure pointers + */ + if (dgrs_nicmode) + { /* Multi-NIC mode */ + int chan = ((I596_RBD *) S2H(cbp->xmit.tbdp))->chan; + + devN = priv0->devtbl[chan-1]; + /* + * If devN is null, we got an interrupt before the I/F + * has been initialized. Pitch the packet. + */ + if (devN == NULL) + goto out; + privN = (DGRS_PRIV *) devN->priv; + } + else + { /* Switch mode */ + devN = dev0; + privN = priv0; + } + + if (0) printk("%s: rcv len=%ld\n", devN->name, cbp->xmit.count); /* * Allocate a message block big enough to hold the whole frame @@ -360,12 +495,12 @@ len = cbp->xmit.count; if ((skb = dev_alloc_skb(len+5)) == NULL) { - printk("%s: dev_alloc_skb failed for rcv buffer", dev->name); - ++priv->stats.rx_dropped; + printk("%s: dev_alloc_skb failed for rcv buffer\n", devN->name); + ++privN->stats.rx_dropped; /* discarding the frame */ goto out; } - skb->dev = dev; + skb->dev = devN; skb_reserve(skb, 2); /* Align IP header */ again: @@ -374,13 +509,13 @@ /* * There are three modes here for doing the packet copy. * If we have DMA, and the packet is "long", we use the - * chaining mode of DMA. If it's shorter, we use single + * chaining mode of DMA. If its shorter, we use single * DMA's. Otherwise, we use memcpy(). */ - if (priv->use_dma && priv->dmadesc_h && len > 64) + if (priv0->use_dma && priv0->dmadesc_h && len > 64) { /* - * If we can use DMA and it's a long frame, copy it using + * If we can use DMA and its a long frame, copy it using * DMA chaining. */ DMACHAIN *ddp_h; /* Host virtual DMA desc. pointer */ @@ -394,8 +529,8 @@ */ phys_p = (uchar *) virt_to_phys(putp); - ddp_h = priv->dmadesc_h; - ddp_s = priv->dmadesc_s; + ddp_h = priv0->dmadesc_h; + ddp_s = priv0->dmadesc_s; tbdp = (I596_TBD *) S2H(cbp->xmit.tbdp); for (;;) { @@ -408,8 +543,8 @@ break; /* For safety */ if ( (p-putp) >= len) { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ + printk("%s: cbp = %x\n", devN->name, H2S(cbp)); + proc_reset(dev0, 1); /* Freeze IDT */ break; /* For Safety */ } @@ -436,23 +571,23 @@ ++ddp_h; } } - if (ddp_h - priv->dmadesc_h) + if (ddp_h - priv0->dmadesc_h) { int rc; - rc = do_plx_dma(dev, - 0, (ulong) priv->dmadesc_s, len, 0); + rc = do_plx_dma(dev0, + 0, (ulong) priv0->dmadesc_s, len, 0); if (rc) { - printk("%s: Chained DMA failure\n", dev->name); + printk("%s: Chained DMA failure\n", devN->name); goto again; } } } - else if (priv->use_dma) + else if (priv0->use_dma) { /* - * If we can use DMA and it's a shorter frame, copy it + * If we can use DMA and its a shorter frame, copy it * using single DMA transfers. */ uchar *phys_p; @@ -477,16 +612,16 @@ break; /* For safety */ if ( (p-putp) >= len) { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ + printk("%s: cbp = %x\n", devN->name, H2S(cbp)); + proc_reset(dev0, 1); /* Freeze IDT */ break; /* For Safety */ } - rc = do_plx_dma(dev, (ulong) phys_p, + rc = do_plx_dma(dev0, (ulong) phys_p, S2DMA(tbdp->buf), amt, 1); if (rc) { memcpy(p, S2H(tbdp->buf), amt); - printk("%s: Single DMA failed\n", dev->name); + printk("%s: Single DMA failed\n", devN->name); } phys_p += amt; p += amt; @@ -512,8 +647,8 @@ break; /* For safety */ if ( (p-putp) >= len) { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ + printk("%s: cbp = %x\n", devN->name, H2S(cbp)); + proc_reset(dev0, 1); /* Freeze IDT */ break; /* For Safety */ } memcpy(p, S2H(tbdp->buf), amt); @@ -527,9 +662,9 @@ /* * Pass the frame to upper half */ - skb->protocol = eth_type_trans(skb, dev); + skb->protocol = eth_type_trans(skb, devN); netif_rx(skb); - ++priv->stats.rx_packets; + ++privN->stats.rx_packets; out: cbp->xmit.status = I596_CB_STATUS_C | I596_CB_STATUS_OK; @@ -547,37 +682,58 @@ * that it is not needed. Slave writes over the PCI bus are about * as fast as DMA, due to the fact that the PLX part can do burst * writes. The same is not true for data being read from the board. + * + * For multi-NIC mode, we tell the firmware the desired 82596 + * output port by setting the special "dstchan" member at the + * end of the traditional 82596 RFD structure. */ static int -dgrs_start_xmit(struct sk_buff *skb, struct device *dev) +dgrs_start_xmit(struct sk_buff *skb, struct device *devN) { - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + DGRS_PRIV *privN = (DGRS_PRIV *) devN->priv; + struct device *dev0; + DGRS_PRIV *priv0; I596_RBD *rbdp; int count; int i, len, amt; # define mymin(A,B) ( (A) < (B) ? (A) : (B) ) - if (dgrs_debug > 1) printk("%s: xmit len=%ld\n", dev->name, skb->len); + /* + * Determine 0th priv and dev structure pointers + */ + if (dgrs_nicmode) + { + dev0 = privN->devtbl[0]; + priv0 = (DGRS_PRIV *) dev0->priv; + } + else + { + dev0 = devN; + priv0 = privN; + } - dev->trans_start = jiffies; - dev->tbusy = 0; + if (dgrs_debug > 1) + printk("%s: xmit len=%d\n", devN->name, (int) skb->len); + + devN->trans_start = jiffies; + devN->tbusy = 0; - if (priv->rfdp->cmd & I596_RFD_EL) + if (priv0->rfdp->cmd & I596_RFD_EL) { /* Out of RFD's */ - if (0) printk("%s: NO RFD's", dev->name); + if (0) printk("%s: NO RFD's\n", devN->name); goto no_resources; } - rbdp = priv->rbdp; + rbdp = priv0->rbdp; count = 0; - priv->rfdp->rbdp = (I596_RBD *) H2S(rbdp); + priv0->rfdp->rbdp = (I596_RBD *) H2S(rbdp); i = 0; len = skb->len; for (;;) { if (rbdp->size & I596_RBD_EL) { /* Out of RBD's */ - if (0) printk("%s: NO RBD's", dev->name); + if (0) printk("%s: NO RBD's\n", devN->name); goto no_resources; } @@ -611,17 +767,19 @@ } frame_done: - priv->rbdp = rbdp; - priv->rfdp->status = I596_RFD_C | I596_RFD_OK; - priv->rfdp = (I596_RFD *) S2H(priv->rfdp->next); + priv0->rbdp = rbdp; + if (dgrs_nicmode) + priv0->rfdp->dstchan = privN->chan; + priv0->rfdp->status = I596_RFD_C | I596_RFD_OK; + priv0->rfdp = (I596_RFD *) S2H(priv0->rfdp->next); - ++priv->stats.tx_packets; + ++privN->stats.tx_packets; dev_kfree_skb (skb, FREE_WRITE); return (0); no_resources: - priv->scbp->status |= I596_SCB_RNR; /* simulate I82596 */ + priv0->scbp->status |= I596_SCB_RNR; /* simulate I82596 */ return (-EAGAIN); } @@ -684,9 +842,9 @@ * Unique ioctl's */ static int -dgrs_ioctl(struct device *dev, struct ifreq *ifr, int cmd) +dgrs_ioctl(struct device *devN, struct ifreq *ifr, int cmd) { - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + DGRS_PRIV *privN = (DGRS_PRIV *) devN->priv; DGRS_IOCTL ioc; int i, rc; @@ -694,7 +852,7 @@ if (rc) return (rc); if (cmd != DGRSIOCTL) return -EINVAL; - copy_from_user(&ioc, ifr->ifr_data, sizeof(DGRS_IOCTL)); + COPY_FROM_USER(&ioc, ifr->ifr_data, sizeof(DGRS_IOCTL)); switch (ioc.cmd) { @@ -703,40 +861,40 @@ return -EINVAL; rc = verify_area(VERIFY_WRITE, (void *) ioc.data, ioc.len); if (rc) return (rc); - copy_to_user(ioc.data, &dev->mem_start, ioc.len); + COPY_TO_USER(ioc.data, &devN->mem_start, ioc.len); return (0); case DGRS_SETFILTER: rc = verify_area(VERIFY_READ, (void *) ioc.data, ioc.len); if (rc) return (rc); - if (ioc.port > priv->bcomm->bc_nports) + if (ioc.port > privN->bcomm->bc_nports) return -EINVAL; if (ioc.filter >= NFILTERS) return -EINVAL; - if (ioc.len > priv->bcomm->bc_filter_area_len) + if (ioc.len > privN->bcomm->bc_filter_area_len) return -EINVAL; /* Wait for old command to finish */ for (i = 0; i < 1000; ++i) { - if ( (volatile) priv->bcomm->bc_filter_cmd <= 0 ) + if ( (volatile) privN->bcomm->bc_filter_cmd <= 0 ) break; udelay(1); } if (i >= 1000) return -EIO; - priv->bcomm->bc_filter_port = ioc.port; - priv->bcomm->bc_filter_num = ioc.filter; - priv->bcomm->bc_filter_len = ioc.len; + privN->bcomm->bc_filter_port = ioc.port; + privN->bcomm->bc_filter_num = ioc.filter; + privN->bcomm->bc_filter_len = ioc.len; if (ioc.len) { - copy_from_user(S2H(priv->bcomm->bc_filter_area), + COPY_FROM_USER(S2HN(privN->bcomm->bc_filter_area), ioc.data, ioc.len); - priv->bcomm->bc_filter_cmd = BC_FILTER_SET; + privN->bcomm->bc_filter_cmd = BC_FILTER_SET; } else - priv->bcomm->bc_filter_cmd = BC_FILTER_CLR; + privN->bcomm->bc_filter_cmd = BC_FILTER_CLR; return(0); default: return -EOPNOTSUPP; @@ -745,34 +903,51 @@ /* * Process interrupts + * + * dev, priv will always refer to the 0th device in Multi-NIC mode. */ static void dgrs_intr(int irq, void *dev_id, struct pt_regs *regs) { - struct device *dev = (struct device *) dev_id; - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + struct device *dev0 = (struct device *) dev_id; + DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv; I596_CB *cbp; int cmd; + int i; - ++priv->intrcnt; - if (1) ++priv->bcomm->bc_cnt[4]; - if (0) printk("%s: interrupt: irq %d", dev->name, irq); + ++priv0->intrcnt; + if (1) ++priv0->bcomm->bc_cnt[4]; + if (0) + { + static int cnt = 100; + if (--cnt > 0) + printk("%s: interrupt: irq %d\n", dev0->name, irq); + } /* * Get 596 command */ - cmd = priv->scbp->cmd; + cmd = priv0->scbp->cmd; /* * See if RU has been restarted */ if ( (cmd & I596_SCB_RUC) == I596_SCB_RUC_START) { - if (0) printk("%s: RUC start", dev->name); - priv->rfdp = (I596_RFD *) S2H(priv->scbp->rfdp); - priv->rbdp = (I596_RBD *) S2H(priv->rfdp->rbdp); - dev->tbusy = 0; /* tell upper half */ - priv->scbp->status &= ~(I596_SCB_RNR|I596_SCB_RUS); + if (0) printk("%s: RUC start\n", dev0->name); + priv0->rfdp = (I596_RFD *) S2H(priv0->scbp->rfdp); + priv0->rbdp = (I596_RBD *) S2H(priv0->rfdp->rbdp); + priv0->scbp->status &= ~(I596_SCB_RNR|I596_SCB_RUS); + /* + * Tell upper half (halves) + */ + if (dgrs_nicmode) + { + for (i = 0; i < priv0->nports; ++i) + priv0->devtbl[i]->tbusy = 0; + } + else + dev0->tbusy = 0; /* if (bd->flags & TX_QUEUED) DL_sched(bd, bdd); */ } @@ -782,22 +957,22 @@ */ if ( (cmd & I596_SCB_CUC) != I596_SCB_CUC_START) { - priv->scbp->cmd = 0; /* Ignore all other commands */ + priv0->scbp->cmd = 0; /* Ignore all other commands */ goto ack_intr; } - priv->scbp->status &= ~(I596_SCB_CNA|I596_SCB_CUS); + priv0->scbp->status &= ~(I596_SCB_CNA|I596_SCB_CUS); /* * Process a command */ - cbp = (I596_CB *) S2H(priv->scbp->cbp); - priv->scbp->cmd = 0; /* Safe to clear the command */ + cbp = (I596_CB *) S2H(priv0->scbp->cbp); + priv0->scbp->cmd = 0; /* Safe to clear the command */ for (;;) { switch (cbp->nop.cmd & I596_CB_CMD) { case I596_CB_CMD_XMIT: - dgrs_rcv_frame(dev, priv, cbp); + dgrs_rcv_frame(dev0, priv0, cbp); break; default: cbp->nop.status = I596_CB_STATUS_C | I596_CB_STATUS_OK; @@ -807,23 +982,23 @@ break; cbp = (I596_CB *) S2H(cbp->nop.next); } - priv->scbp->status |= I596_SCB_CNA; + priv0->scbp->status |= I596_SCB_CNA; /* * Ack the interrupt */ ack_intr: - if (priv->plxreg) - OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1); + if (priv0->plxreg) + OUTL(dev0->base_addr + PLX_LCL2PCI_DOORBELL, 1); } /* * Download the board firmware */ static int -dgrs_download(struct device *dev) +dgrs_download(struct device *dev0) { - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv; int is; int i; @@ -836,114 +1011,115 @@ /* * Map in the dual port memory */ - priv->vmem = ioremap(dev->mem_start, 2048*1024); - if (!priv->vmem) + priv0->vmem = IOREMAP(dev0->mem_start, 2048*1024); + if (!priv0->vmem) { - printk("%s: cannot map in board memory\n", dev->name); + printk("%s: cannot map in board memory\n", dev0->name); return -ENXIO; } /* * Hold the processor and configure the board addresses */ - if (priv->plxreg) + if (priv0->plxreg) { /* PCI bus */ - proc_reset(dev, 1); + proc_reset(dev0, 1); } else { /* EISA bus */ - is = iv2is[dev->irq & 0x0f]; + is = iv2is[dev0->irq & 0x0f]; if (!is) { - printk("%s: Illegal IRQ %d\n", dev->name, dev->irq); + printk("%s: Illegal IRQ %d\n", dev0->name, dev0->irq); return -ENXIO; } - OUTB(dev->base_addr + ES4H_AS_31_24, - (uchar) (dev->mem_start >> 24) ); - OUTB(dev->base_addr + ES4H_AS_23_16, - (uchar) (dev->mem_start >> 16) ); - priv->is_reg = ES4H_IS_LINEAR | is | - ((uchar) (dev->mem_start >> 8) & ES4H_IS_AS15); - OUTB(dev->base_addr + ES4H_IS, priv->is_reg); - OUTB(dev->base_addr + ES4H_EC, ES4H_EC_ENABLE); - OUTB(dev->base_addr + ES4H_PC, ES4H_PC_RESET); - OUTB(dev->base_addr + ES4H_MW, ES4H_MW_ENABLE | 0x00); + OUTB(dev0->base_addr + ES4H_AS_31_24, + (uchar) (dev0->mem_start >> 24) ); + OUTB(dev0->base_addr + ES4H_AS_23_16, + (uchar) (dev0->mem_start >> 16) ); + priv0->is_reg = ES4H_IS_LINEAR | is | + ((uchar) (dev0->mem_start >> 8) & ES4H_IS_AS15); + OUTB(dev0->base_addr + ES4H_IS, priv0->is_reg); + OUTB(dev0->base_addr + ES4H_EC, ES4H_EC_ENABLE); + OUTB(dev0->base_addr + ES4H_PC, ES4H_PC_RESET); + OUTB(dev0->base_addr + ES4H_MW, ES4H_MW_ENABLE | 0x00); } /* * See if we can do DMA on the SE-6 */ - priv->use_dma = check_board_dma(dev); - if (priv->use_dma) - printk("%s: Bus Master DMA is enabled.\n", dev->name); + priv0->use_dma = check_board_dma(dev0); + if (priv0->use_dma) + printk("%s: Bus Master DMA is enabled.\n", dev0->name); /* * Load and verify the code at the desired address */ - memcpy(priv->vmem, dgrs_code, dgrs_ncode); /* Load code */ - if (memcmp(priv->vmem, dgrs_code, dgrs_ncode)) + memcpy(priv0->vmem, dgrs_code, dgrs_ncode); /* Load code */ + if (memcmp(priv0->vmem, dgrs_code, dgrs_ncode)) { - iounmap(priv->vmem); - priv->vmem = NULL; - printk("%s: download compare failed\n", dev->name); + IOUNMAP(priv0->vmem); + priv0->vmem = NULL; + printk("%s: download compare failed\n", dev0->name); return -ENXIO; } /* * Configurables */ - priv->bcomm = (struct bios_comm *) (priv->vmem + 0x0100); - priv->bcomm->bc_nowait = 1; /* Tell board to make printf not wait */ - priv->bcomm->bc_host = 1; /* Tell board there is a host port */ - priv->bcomm->bc_squelch = 0; /* Flag from Space.c */ - priv->bcomm->bc_150ohm = 0; /* Flag from Space.c */ - - priv->bcomm->bc_spew = 0; /* Debug flag from Space.c */ - priv->bcomm->bc_maxrfd = 0; /* Debug flag from Space.c */ - priv->bcomm->bc_maxrbd = 0; /* Debug flag from Space.c */ + priv0->bcomm = (struct bios_comm *) (priv0->vmem + 0x0100); + priv0->bcomm->bc_nowait = 1; /* Tell board to make printf not wait */ + priv0->bcomm->bc_squelch = 0; /* Flag from Space.c */ + priv0->bcomm->bc_150ohm = 0; /* Flag from Space.c */ + + priv0->bcomm->bc_spew = 0; /* Debug flag from Space.c */ + priv0->bcomm->bc_maxrfd = 0; /* Debug flag from Space.c */ + priv0->bcomm->bc_maxrbd = 0; /* Debug flag from Space.c */ + + /* + * Tell board we are operating in switch mode (1) or in + * multi-NIC mode (2). + */ + priv0->bcomm->bc_host = dgrs_nicmode ? BC_MULTINIC : BC_SWITCH; /* * Request memory space on board for DMA chains */ - if (priv->use_dma) - priv->bcomm->bc_hostarea_len = (2048/64) * 16; + if (priv0->use_dma) + priv0->bcomm->bc_hostarea_len = (2048/64) * 16; /* * NVRAM configurables from Space.c */ - priv->bcomm->bc_spantree = dgrs_spantree; - priv->bcomm->bc_hashexpire = dgrs_hashexpire; - memcpy(priv->bcomm->bc_ipaddr, dgrs_ipaddr, 4); - memcpy(priv->bcomm->bc_ipxnet, &dgrs_ipxnet, 4); + priv0->bcomm->bc_spantree = dgrs_spantree; + priv0->bcomm->bc_hashexpire = dgrs_hashexpire; + memcpy(priv0->bcomm->bc_ipaddr, dgrs_ipaddr, 4); + memcpy(priv0->bcomm->bc_iptrap, dgrs_iptrap, 4); + memcpy(priv0->bcomm->bc_ipxnet, &dgrs_ipxnet, 4); /* - * Release processor, wait 5 seconds for board to initialize + * Release processor, wait 8 seconds for board to initialize */ - proc_reset(dev, 0); + proc_reset(dev0, 0); - for (i = jiffies + 5 * HZ; i > jiffies; ) + for (i = jiffies + 8 * HZ; i > jiffies; ) { - if (priv->bcomm->bc_status >= BC_RUN) + if (priv0->bcomm->bc_status >= BC_RUN) break; } - if (priv->bcomm->bc_status < BC_RUN) + if (priv0->bcomm->bc_status < BC_RUN) { - printk("%s: board not operating", dev->name); + printk("%s: board not operating\n", dev0->name); return -ENXIO; } - priv->port = (PORT *) S2H(priv->bcomm->bc_port); - priv->scbp = (I596_SCB *) S2H(priv->port->scbp); - #if 0 /* These two methods are identical, but the 2nd is better */ - priv->rfdp = (I596_RFD *) S2H(priv->port->rfd_head); - priv->rbdp = (I596_RBD *) S2H(priv->port->rbd_head); - #else - priv->rfdp = (I596_RFD *) S2H(priv->scbp->rfdp); - priv->rbdp = (I596_RBD *) S2H(priv->rfdp->rbdp); - #endif + priv0->port = (PORT *) S2H(priv0->bcomm->bc_port); + priv0->scbp = (I596_SCB *) S2H(priv0->port->scbp); + priv0->rfdp = (I596_RFD *) S2H(priv0->scbp->rfdp); + priv0->rbdp = (I596_RBD *) S2H(priv0->rfdp->rbdp); - priv->scbp->status = I596_SCB_CNA; /* CU is idle */ + priv0->scbp->status = I596_SCB_CNA; /* CU is idle */ /* * Get switch physical and host virtual pointers to DMA @@ -952,21 +1128,21 @@ * that allows host access of the PLX DMA registers will * erroneously select the PLX registers. */ - priv->dmadesc_s = (DMACHAIN *) S2DMA(priv->bcomm->bc_hostarea); - if (priv->dmadesc_s) - priv->dmadesc_h = (DMACHAIN *) S2H(priv->dmadesc_s); + priv0->dmadesc_s = (DMACHAIN *) S2DMA(priv0->bcomm->bc_hostarea); + if (priv0->dmadesc_s) + priv0->dmadesc_h = (DMACHAIN *) S2H(priv0->dmadesc_s); else - priv->dmadesc_h = NULL; + priv0->dmadesc_h = NULL; /* * Enable board interrupts */ - if (priv->plxreg) + if (priv0->plxreg) { /* PCI bus */ - OUTL(dev->base_addr + PLX_INT_CSR, - inl(dev->base_addr + PLX_INT_CSR) + OUTL(dev0->base_addr + PLX_INT_CSR, + inl(dev0->base_addr + PLX_INT_CSR) | PLX_PCI_DOORBELL_IE); /* Enable intr to host */ - OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1); + OUTL(dev0->base_addr + PLX_LCL2PCI_DOORBELL, 1); } else { /* EISA bus */ @@ -985,7 +1161,7 @@ int i; int rc; - printk("%s: Digi RightSwitch at io=%lx mem=%lx irq=%d plx=%lx dma=%lx ", + printk("%s: Digi RightSwitch io=%lx mem=%lx irq=%d plx=%lx dma=%lx\n", dev->name, dev->base_addr, dev->mem_start, dev->irq, priv->plxreg, priv->plxdma); @@ -995,13 +1171,13 @@ rc = dgrs_download(dev); if (rc) { - printk("\n"); return rc; } /* * Get ether address of board */ + printk("%s: Ethernet address", dev->name); memcpy(dev->dev_addr, priv->port->ethaddr, 6); for (i = 0; i < 6; ++i) printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]); @@ -1009,7 +1185,7 @@ if (dev->dev_addr[0] & 1) { - printk("%s: Illegal Ethernet Address", dev->name); + printk("%s: Illegal Ethernet Address\n", dev->name); return (-ENXIO); } @@ -1029,7 +1205,7 @@ break; if (priv->intrcnt < 2) { - printk("%s: Not interrupting on IRQ %d (%d)", + printk("%s: Not interrupting on IRQ %d (%d)\n", dev->name, dev->irq, priv->intrcnt); return (-ENXIO); } @@ -1052,6 +1228,21 @@ return (0); } +int +dgrs_initclone(struct device *dev) +{ + DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; + int i; + + printk("%s: Digi RightSwitch port %d ", + dev->name, priv->chan); + for (i = 0; i < 6; ++i) + printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]); + printk("\n"); + + return (0); +} + static int dgrs_found_device( struct device *dev, @@ -1063,6 +1254,7 @@ ) { DGRS_PRIV *priv; + int i; #ifdef MODULE { @@ -1083,6 +1275,9 @@ priv->plxdma = plxdma; priv->vplxdma = NULL; + priv->chan = 1; + priv->devtbl[0] = dev; + dev->init = dgrs_probe1; ether_setup(dev); @@ -1090,6 +1285,51 @@ dgrs_root_dev = dev; if (register_netdev(dev) != 0) return -EIO; + + if ( !dgrs_nicmode ) + return (0); /* Switch mode, we are done */ + + /* + * Operating card as N separate NICs + */ + priv->nports = priv->bcomm->bc_nports; + for (i = 1; i < priv->nports; ++i) + { + struct device *devN; + DGRS_PRIV *privN; + + /* Allocate new dev and priv structures */ + devN = (struct device *) kmalloc(dev_size, GFP_KERNEL); + + /* Make it an exact copy of dev[0]... */ + memcpy(devN, dev, dev_size); + devN->priv = ((void *)devN) + sizeof(struct device); + privN = (DGRS_PRIV *)devN->priv; + + /* ... but seset devname to a NULL string */ + privN->devname[0] = 0; + devN->name = privN->devname; + + /* ... and zero out VM areas */ + privN->vmem = 0; + privN->vplxdma = 0; + + /* ... and zero out IRQ */ + devN->irq = 0; + + /* ... and base MAC address off address of 1st port */ + devN->dev_addr[5] += i; + privN->chan = i+1; + + priv->devtbl[i] = devN; + + devN->init = dgrs_initclone; + ether_setup(devN); + privN->next_dev = dgrs_root_dev; + dgrs_root_dev = devN; + if (register_netdev(devN) != 0) + return -EIO; + } } #else { @@ -1109,6 +1349,9 @@ priv->plxdma = plxdma; priv->vplxdma = NULL; + priv->chan = 1; + priv->devtbl[0] = dev; + dgrs_probe1(dev); } #endif @@ -1260,19 +1503,22 @@ #ifdef MODULE /* - * Variables that can be overridden from command line + * Variables that can be overriden from command line */ static int debug = -1; static int dma = -1; static int hashexpire = -1; static int spantree = -1; static int ipaddr[4] = { -1 }; +static int iptrap[4] = { -1 }; static long ipxnet = -1; +static int nicmode = -1; int init_module(void) { int cards_found; + int i; /* * Command line variable overrides @@ -1281,23 +1527,26 @@ * spantree=0/1 * hashexpire=NNN * ipaddr=A,B,C,D + * iptrap=A,B,C,D * ipxnet=NNN + * nicmode=NNN */ if (debug >= 0) dgrs_debug = debug; if (dma >= 0) dgrs_dma = dma; + if (nicmode >= 0) + dgrs_nicmode = nicmode; if (hashexpire >= 0) dgrs_hashexpire = hashexpire; if (spantree >= 0) dgrs_spantree = spantree; if (ipaddr[0] != -1) - { - int i; - for (i = 0; i < 4; ++i) dgrs_ipaddr[i] = ipaddr[i]; - } + if (iptrap[0] != -1) + for (i = 0; i < 4; ++i) + dgrs_iptrap[i] = iptrap[i]; if (ipxnet != -1) dgrs_ipxnet = htonl( ipxnet ); @@ -1328,16 +1577,17 @@ next_dev = priv->next_dev; unregister_netdev(dgrs_root_dev); - proc_reset(dgrs_root_dev, 1); + proc_reset(priv->devtbl[0], 1); if (priv->vmem) - iounmap(priv->vmem); + IOUNMAP(priv->vmem); if (priv->vplxdma) - iounmap((uchar *) priv->vplxdma); + IOUNMAP((uchar *) priv->vplxdma); release_region(dgrs_root_dev->base_addr, 256); - free_irq(dgrs_root_dev->irq, dgrs_root_dev); + if (dgrs_root_dev->irq) + free_irq(dgrs_root_dev->irq, dgrs_root_dev); kfree(dgrs_root_dev); dgrs_root_dev = next_dev; diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_bcomm.h linux/drivers/net/dgrs_bcomm.h --- v2.1.16/linux/drivers/net/dgrs_bcomm.h Sat Apr 20 11:22:02 1996 +++ linux/drivers/net/dgrs_bcomm.h Sat Dec 21 17:23:20 1996 @@ -13,14 +13,17 @@ * Variable Set to: Gets default of: * bc_hashexpire -1 300 (5 minutes) * bc_spantree -1 1 (spanning tree on) - * bc_ipaddr FF:FF:FF:FF 0 (no IP address) - * bc_ipxnet FF:FF:FF:FF 0 (no IPX net) + * bc_ipaddr FF:FF:FF:FF 0 (no SNMP IP address) + * bc_ipxnet FF:FF:FF:FF 0 (no SNMP IPX net) + * bc_iptrap FF:FF:FF:FF 0 (no SNMP IP trap address) * * Some variables MUST have their value set after the firmware * is loaded onto the board, but before the processor is released. * These are: * bc_host 0 means no host "port", run as standalone switch. - * 1 means there is a host "port" (normal). + * 1 means run as a switch, with a host port. (normal) + * 2 means run as multiple NICs, not as a switch. + * -1 means run in diagnostics mode. * bc_nowait * bc_hostarea_len * bc_filter_len @@ -109,7 +112,10 @@ S4(ulong, bc_filter_port) /* RW: Port # for filter 0..6 */ S4(ulong, bc_filter_num) /* RW: Filter #, 0=input, 1=output */ - S4A(long, bc_spare, 3) /* spares */ + /* more SNMP agent addresses */ + S1A(uchar, bc_iptrap, 4) /* IP address for SNMP */ + + S4A(long, bc_spare, 2) /* spares */ END_STRUCT(bios_comm) #define bc VMO(struct bios_comm, 0xa3000100) @@ -119,6 +125,14 @@ */ #define BC_INIT 0 #define BC_RUN 100 + +/* + * bc_host values + */ +#define BC_DIAGS -1 +#define BC_SASWITCH 0 +#define BC_SWITCH 1 +#define BC_MULTINIC 2 /* * Values for spew (debugging) diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_driver.c linux/drivers/net/dgrs_driver.c --- v2.1.16/linux/drivers/net/dgrs_driver.c Wed Oct 16 10:48:17 1996 +++ linux/drivers/net/dgrs_driver.c Thu Jan 1 02:00:00 1970 @@ -1,1359 +0,0 @@ -/* - * Digi RightSwitch SE-X loadable device driver for Linux - * - * The RightSwitch is a 4 (EISA) or 6 (PCI) port etherswitch and - * a NIC on an internal board. - * - * Author: Rick Richardson, rick@dgii.com, rick_richardson@dgii.com - * Derived from the SVR4.2 (UnixWare) driver for the same card. - * - * Copyright 1995-1996 Digi International Inc. - * - * This software may be used and distributed according to the terms - * of the GNU General Public License, incorporated herein by reference. - * - * For information on purchasing a RightSwitch SE-4 or SE-6 - * board, please contact Digi's sales department at 1-612-912-3444 - * or 1-800-DIGIBRD. Outside the U.S., please check our Web page - * at http://www.dgii.com for sales offices worldwide. - * - */ - -static char *version = "$Id: dgrs.c,v 1.8 1996/04/18 03:11:14 rick Exp $"; - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -/* - * DGRS include files - */ -typedef unsigned char uchar; -typedef unsigned int bool; -#define vol volatile - -#include "dgrs.h" -#include "dgrs_es4h.h" -#include "dgrs_plx9060.h" -#include "dgrs_i82596.h" -#include "dgrs_ether.h" -#include "dgrs_asstruct.h" -#include "dgrs_bcomm.h" - -/* - * Firmware. Compiled separately for local compilation, - * but #included for Linux distribution. - */ -#ifndef NOFW - #include "dgrs_firmware.c" -#else - extern int dgrs_firmnum; - extern char dgrs_firmver[]; - extern char dgrs_firmdate[]; - extern uchar dgrs_code[]; - extern int dgrs_ncode; -#endif - -/* - * Linux out*() is backwards from all other operating systems - */ -#define OUTB(ADDR, VAL) outb(VAL, ADDR) -#define OUTW(ADDR, VAL) outw(VAL, ADDR) -#define OUTL(ADDR, VAL) outl(VAL, ADDR) - -/* - * Macros to convert switch to host and host to switch addresses - * (assumes a local variable priv points to board dependent struct) - */ -#define S2H(A) ( ((unsigned long)(A)&0x00ffffff) + priv->vmem ) -#define H2S(A) ( ((char *) (A) - priv->vmem) + 0xA3000000 ) - -/* - * Convert a switch address to a "safe" address for use with the - * PLX 9060 DMA registers and the associated HW kludge that allows - * for host access of the DMA registers. - */ -#define S2DMA(A) ( (unsigned long)(A) & 0x00ffffff) - -/* - * "Space.c" variables, now settable from module interface - * Use the name below, minus the "dgrs_" prefix. See init_module(). - */ -int dgrs_debug = 1; -int dgrs_dma = 1; -int dgrs_spantree = -1; -int dgrs_hashexpire = -1; -uchar dgrs_ipaddr[4] = { 0xff, 0xff, 0xff, 0xff}; -long dgrs_ipxnet = -1; - -/* - * Chain of device structures - */ -#ifdef MODULE - static struct device *dgrs_root_dev = NULL; -#endif - -/* - * Private per-board data structure (dev->priv) - */ -typedef struct -{ - /* - * Stuff for generic ethercard I/F - */ - char devname[8]; /* "ethN" string */ - struct device *next_dev; - struct enet_statistics stats; - - /* - * DGRS specific data - */ - char *vmem; - - struct bios_comm *bcomm; /* Firmware BIOS comm structure */ - PORT *port; /* Ptr to PORT[0] struct in VM */ - I596_SCB *scbp; /* Ptr to SCB struct in VM */ - I596_RFD *rfdp; /* Current RFD list */ - I596_RBD *rbdp; /* Current RBD list */ - - int intrcnt; /* Count of interrupts */ - - /* - * SE-4 (EISA) board variables - */ - uchar is_reg; /* EISA: Value for ES4H_IS reg */ - - /* - * SE-6 (PCI) board variables - * - * The PLX "expansion rom" space is used for DMA register - * access from the host on the SE-6. These are the physical - * and virtual addresses of that space. - */ - ulong plxreg; /* Phys address of PLX chip */ - char *vplxreg; /* Virtual address of PLX chip */ - ulong plxdma; /* Phys addr of PLX "expansion rom" */ - ulong volatile *vplxdma; /* Virtual addr of "expansion rom" */ - int use_dma; /* Flag: use DMA */ - DMACHAIN *dmadesc_s; /* area for DMA chains (SW addr.) */ - DMACHAIN *dmadesc_h; /* area for DMA chains (Host Virtual) */ - -} DGRS_PRIV; - - -/* - * reset or un-reset the IDT processor - */ -static void -proc_reset(struct device *dev, int reset) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - - if (priv->plxreg) - { - ulong val; - val = inl(dev->base_addr + PLX_MISC_CSR); - if (reset) - val |= SE6_RESET; - else - val &= ~SE6_RESET; - OUTL(dev->base_addr + PLX_MISC_CSR, val); - } - else - { - OUTB(dev->base_addr + ES4H_PC, reset ? ES4H_PC_RESET : 0); - } -} - -/* - * See if the board supports bus master DMA - */ -static int -check_board_dma(struct device *dev) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - ulong x; - - /* - * If Space.c says not to use DMA, or if it's not a PLX based - * PCI board, or if the expansion ROM space is not PCI - * configured, then return false. - */ - if (!dgrs_dma || !priv->plxreg || !priv->plxdma) - return (0); - - /* - * Set the local address remap register of the "expansion rom" - * area to 0x80000000 so that we can use it to access the DMA - * registers from the host side. - */ - OUTL(dev->base_addr + PLX_ROM_BASE_ADDR, 0x80000000); - - /* - * Set the PCI region descriptor to: - * Space 0: - * disable read-prefetch - * enable READY - * enable BURST - * 0 internal wait states - * Expansion ROM: (used for host DMA register access) - * disable read-prefetch - * enable READY - * disable BURST - * 0 internal wait states - */ - OUTL(dev->base_addr + PLX_BUS_REGION, 0x49430343); - - /* - * Now map the DMA registers into our virtual space - */ - priv->vplxdma = (ulong *) ioremap (priv->plxdma, 256); - if (!priv->vplxdma) - { - printk("%s: can't ioremap() the DMA regs", dev->name); - return (0); - } - - /* - * Now test to see if we can access the DMA registers - * If we write -1 and get back 1FFF, then we accessed the - * DMA register. Otherwise, we probably have an old board - * and wrote into regular RAM. - */ - priv->vplxdma[PLX_DMA0_MODE/4] = 0xFFFFFFFF; - x = priv->vplxdma[PLX_DMA0_MODE/4]; - if (x != 0x00001FFF) - return (0); - - return (1); -} - -/* - * Initiate DMA using PLX part on PCI board. Spin the - * processor until completed. All addresses are physical! - * - * If pciaddr is NULL, then it's a chaining DMA, and lcladdr is - * the address of the first DMA descriptor in the chain. - * - * If pciaddr is not NULL, then it's a single DMA. - * - * In either case, "lcladdr" must have been fixed up to make - * sure the MSB isn't set using the S2DMA macro before passing - * the address to this routine. - */ -static int -do_plx_dma( - struct device *dev, - ulong pciaddr, - ulong lcladdr, - int len, - int to_host -) -{ - int i; - ulong csr; - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - - if (pciaddr) - { - /* - * Do a single, non-chain DMA - */ - priv->vplxdma[PLX_DMA0_PCI_ADDR/4] = pciaddr; - priv->vplxdma[PLX_DMA0_LCL_ADDR/4] = lcladdr; - priv->vplxdma[PLX_DMA0_SIZE/4] = len; - priv->vplxdma[PLX_DMA0_DESCRIPTOR/4] = to_host - ? PLX_DMA_DESC_TO_HOST - : PLX_DMA_DESC_TO_BOARD; - priv->vplxdma[PLX_DMA0_MODE/4] = - PLX_DMA_MODE_WIDTH32 - | PLX_DMA_MODE_WAITSTATES(0) - | PLX_DMA_MODE_READY - | PLX_DMA_MODE_NOBTERM - | PLX_DMA_MODE_BURST - | PLX_DMA_MODE_NOCHAIN; - } - else - { - /* - * Do a chaining DMA - */ - priv->vplxdma[PLX_DMA0_MODE/4] = - PLX_DMA_MODE_WIDTH32 - | PLX_DMA_MODE_WAITSTATES(0) - | PLX_DMA_MODE_READY - | PLX_DMA_MODE_NOBTERM - | PLX_DMA_MODE_BURST - | PLX_DMA_MODE_CHAIN; - priv->vplxdma[PLX_DMA0_DESCRIPTOR/4] = lcladdr; - } - - priv->vplxdma[PLX_DMA_CSR/4] = - PLX_DMA_CSR_0_ENABLE | PLX_DMA_CSR_0_START; - - /* - * Wait for DMA to complete - */ - for (i = 0; i < 1000000; ++i) - { - /* - * Spin the host CPU for 1 usec, so we don't thrash - * the PCI bus while the PLX 9060 is doing DMA. - */ - udelay(1); - - csr = (volatile) priv->vplxdma[PLX_DMA_CSR/4]; - - if (csr & PLX_DMA_CSR_0_DONE) - break; - } - - if ( ! (csr & PLX_DMA_CSR_0_DONE) ) - { - printk("%s: DMA done never occurred. DMA disabled.", dev->name); - priv->use_dma = 0; - return 1; - } - return 0; -} - -/* - * Process a received frame - */ -void -dgrs_rcv_frame( - struct device *dev, - DGRS_PRIV *priv, - I596_CB *cbp -) -{ - int len; - I596_TBD *tbdp; - struct sk_buff *skb; - uchar *putp; - uchar *p; - - if (0) printk("%s: rcv len=%ld", dev->name, cbp->xmit.count); - - /* - * Allocate a message block big enough to hold the whole frame - */ - len = cbp->xmit.count; - if ((skb = dev_alloc_skb(len+5)) == NULL) - { - printk("%s: dev_alloc_skb failed for rcv buffer", dev->name); - ++priv->stats.rx_dropped; - /* discarding the frame */ - goto out; - } - skb->dev = dev; - skb_reserve(skb, 2); /* Align IP header */ - -again: - putp = p = skb_put(skb, len); - - /* - * There are three modes here for doing the packet copy. - * If we have DMA, and the packet is "long", we use the - * chaining mode of DMA. If it's shorter, we use single - * DMA's. Otherwise, we use memcpy(). - */ - if (priv->use_dma && priv->dmadesc_h && len > 64) - { - /* - * If we can use DMA and it's a long frame, copy it using - * DMA chaining. - */ - DMACHAIN *ddp_h; /* Host virtual DMA desc. pointer */ - DMACHAIN *ddp_s; /* Switch physical DMA desc. pointer */ - uchar *phys_p; - - /* - * Get the physical address of the STREAMS buffer. - * NOTE: allocb() guarantees that the whole buffer - * is in a single page if the length < 4096. - */ - phys_p = (uchar *) virt_to_phys(putp); - - ddp_h = priv->dmadesc_h; - ddp_s = priv->dmadesc_s; - tbdp = (I596_TBD *) S2H(cbp->xmit.tbdp); - for (;;) - { - int count; - int amt; - - count = tbdp->count; - amt = count & 0x3fff; - if (amt == 0) - break; /* For safety */ - if ( (p-putp) >= len) - { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ - break; /* For Safety */ - } - - ddp_h->pciaddr = (ulong) phys_p; - ddp_h->lcladdr = S2DMA(tbdp->buf); - ddp_h->len = amt; - - phys_p += amt; - p += amt; - - if (count & I596_TBD_EOF) - { - ddp_h->next = PLX_DMA_DESC_TO_HOST - | PLX_DMA_DESC_EOC; - ++ddp_h; - break; - } - else - { - ++ddp_s; - ddp_h->next = PLX_DMA_DESC_TO_HOST - | (ulong) ddp_s; - tbdp = (I596_TBD *) S2H(tbdp->next); - ++ddp_h; - } - } - if (ddp_h - priv->dmadesc_h) - { - int rc; - - rc = do_plx_dma(dev, - 0, (ulong) priv->dmadesc_s, len, 0); - if (rc) - { - printk("%s: Chained DMA failure\n", dev->name); - goto again; - } - } - } - else if (priv->use_dma) - { - /* - * If we can use DMA and it's a shorter frame, copy it - * using single DMA transfers. - */ - uchar *phys_p; - - /* - * Get the physical address of the STREAMS buffer. - * NOTE: allocb() guarantees that the whole buffer - * is in a single page if the length < 4096. - */ - phys_p = (uchar *) virt_to_phys(putp); - - tbdp = (I596_TBD *) S2H(cbp->xmit.tbdp); - for (;;) - { - int count; - int amt; - int rc; - - count = tbdp->count; - amt = count & 0x3fff; - if (amt == 0) - break; /* For safety */ - if ( (p-putp) >= len) - { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ - break; /* For Safety */ - } - rc = do_plx_dma(dev, (ulong) phys_p, - S2DMA(tbdp->buf), amt, 1); - if (rc) - { - memcpy(p, S2H(tbdp->buf), amt); - printk("%s: Single DMA failed\n", dev->name); - } - phys_p += amt; - p += amt; - if (count & I596_TBD_EOF) - break; - tbdp = (I596_TBD *) S2H(tbdp->next); - } - } - else - { - /* - * Otherwise, copy it piece by piece using memcpy() - */ - tbdp = (I596_TBD *) S2H(cbp->xmit.tbdp); - for (;;) - { - int count; - int amt; - - count = tbdp->count; - amt = count & 0x3fff; - if (amt == 0) - break; /* For safety */ - if ( (p-putp) >= len) - { - printk("%s: cbp = %x", dev->name, H2S(cbp)); - proc_reset(dev, 1); /* Freeze IDT */ - break; /* For Safety */ - } - memcpy(p, S2H(tbdp->buf), amt); - p += amt; - if (count & I596_TBD_EOF) - break; - tbdp = (I596_TBD *) S2H(tbdp->next); - } - } - - /* - * Pass the frame to upper half - */ - skb->protocol = eth_type_trans(skb, dev); - netif_rx(skb); - ++priv->stats.rx_packets; - -out: - cbp->xmit.status = I596_CB_STATUS_C | I596_CB_STATUS_OK; -} - -/* - * Start transmission of a frame - * - * The interface to the board is simple: we pretend that we are - * a fifth 82596 ethernet controller 'receiving' data, and copy the - * data into the same structures that a real 82596 would. This way, - * the board firmware handles the host 'port' the same as any other. - * - * NOTE: we do not use Bus master DMA for this routine. Turns out - * that it is not needed. Slave writes over the PCI bus are about - * as fast as DMA, due to the fact that the PLX part can do burst - * writes. The same is not true for data being read from the board. - */ -static int -dgrs_start_xmit(struct sk_buff *skb, struct device *dev) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - I596_RBD *rbdp; - int count; - int i, len, amt; -# define mymin(A,B) ( (A) < (B) ? (A) : (B) ) - - if (dgrs_debug > 1) printk("%s: xmit len=%ld\n", dev->name, skb->len); - - dev->trans_start = jiffies; - dev->tbusy = 0; - - if (priv->rfdp->cmd & I596_RFD_EL) - { /* Out of RFD's */ - if (0) printk("%s: NO RFD's", dev->name); - goto no_resources; - } - - rbdp = priv->rbdp; - count = 0; - priv->rfdp->rbdp = (I596_RBD *) H2S(rbdp); - - i = 0; len = skb->len; - for (;;) - { - if (rbdp->size & I596_RBD_EL) - { /* Out of RBD's */ - if (0) printk("%s: NO RBD's", dev->name); - goto no_resources; - } - - amt = mymin(len, rbdp->size - count); - memcpy( (char *) S2H(rbdp->buf) + count, skb->data + i, amt); - i += amt; - count += amt; - len -= amt; - if (len == 0) - { - if (skb->len < 60) - rbdp->count = 60 | I596_RBD_EOF; - else - rbdp->count = count | I596_RBD_EOF; - rbdp = (I596_RBD *) S2H(rbdp->next); - goto frame_done; - } - else if (count < 32) - { - /* More data to come, but we used less than 32 - * bytes of this RBD. Keep filling this RBD. - */ - {} /* Yes, we do nothing here */ - } - else - { - rbdp->count = count; - rbdp = (I596_RBD *) S2H(rbdp->next); - count = 0; - } - } - -frame_done: - priv->rbdp = rbdp; - priv->rfdp->status = I596_RFD_C | I596_RFD_OK; - priv->rfdp = (I596_RFD *) S2H(priv->rfdp->next); - - ++priv->stats.tx_packets; - - dev_kfree_skb (skb, FREE_WRITE); - return (0); - -no_resources: - priv->scbp->status |= I596_SCB_RNR; /* simulate I82596 */ - return (-EAGAIN); -} - -/* - * Open the interface - */ -static int -dgrs_open( struct device *dev ) -{ - dev->tbusy = 0; - dev->interrupt = 0; - dev->start = 1; - - #ifdef MODULE - MOD_INC_USE_COUNT; - #endif - - return (0); -} - -/* - * Close the interface - */ -static int -dgrs_close( struct device *dev ) -{ - dev->start = 0; - dev->tbusy = 1; - - #ifdef MODULE - MOD_DEC_USE_COUNT; - #endif - - return (0); -} - -/* - * Get statistics - */ -static struct enet_statistics * -dgrs_get_stats( struct device *dev ) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - - return (&priv->stats); -} - -/* - * Set multicast list and/or promiscuous mode - */ -static void -dgrs_set_multicast_list( struct device *dev) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - - priv->port->is_promisc = (dev->flags & IFF_PROMISC) ? 1 : 0; -} - -/* - * Unique ioctl's - */ -static int -dgrs_ioctl(struct device *dev, struct ifreq *ifr, int cmd) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - DGRS_IOCTL ioc; - int i, rc; - - rc = verify_area(VERIFY_WRITE, ifr->ifr_data, sizeof(DGRS_IOCTL)); - if (rc) return (rc); - if (cmd != DGRSIOCTL) return -EINVAL; - - copy_from_user(&ioc, ifr->ifr_data, sizeof(DGRS_IOCTL)); - - switch (ioc.cmd) - { - case DGRS_GETMEM: - if (ioc.len != sizeof(ulong)) - return -EINVAL; - rc = verify_area(VERIFY_WRITE, (void *) ioc.data, ioc.len); - if (rc) return (rc); - copy_to_user(ioc.data, &dev->mem_start, ioc.len); - return (0); - case DGRS_SETFILTER: - rc = verify_area(VERIFY_READ, (void *) ioc.data, ioc.len); - if (rc) return (rc); - if (ioc.port > priv->bcomm->bc_nports) - return -EINVAL; - if (ioc.filter >= NFILTERS) - return -EINVAL; - if (ioc.len > priv->bcomm->bc_filter_area_len) - return -EINVAL; - - /* Wait for old command to finish */ - for (i = 0; i < 1000; ++i) - { - if ( (volatile) priv->bcomm->bc_filter_cmd <= 0 ) - break; - udelay(1); - } - if (i >= 1000) - return -EIO; - - priv->bcomm->bc_filter_port = ioc.port; - priv->bcomm->bc_filter_num = ioc.filter; - priv->bcomm->bc_filter_len = ioc.len; - - if (ioc.len) - { - copy_from_user(S2H(priv->bcomm->bc_filter_area), - ioc.data, ioc.len); - priv->bcomm->bc_filter_cmd = BC_FILTER_SET; - } - else - priv->bcomm->bc_filter_cmd = BC_FILTER_CLR; - return(0); - default: - return -EOPNOTSUPP; - } -} - -/* - * Process interrupts - */ -static void -dgrs_intr(int irq, void *dev_id, struct pt_regs *regs) -{ - struct device *dev = (struct device *) dev_id; - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - I596_CB *cbp; - int cmd; - - ++priv->intrcnt; - if (1) ++priv->bcomm->bc_cnt[4]; - if (0) printk("%s: interrupt: irq %d", dev->name, irq); - - /* - * Get 596 command - */ - cmd = priv->scbp->cmd; - - /* - * See if RU has been restarted - */ - if ( (cmd & I596_SCB_RUC) == I596_SCB_RUC_START) - { - if (0) printk("%s: RUC start", dev->name); - priv->rfdp = (I596_RFD *) S2H(priv->scbp->rfdp); - priv->rbdp = (I596_RBD *) S2H(priv->rfdp->rbdp); - dev->tbusy = 0; /* tell upper half */ - priv->scbp->status &= ~(I596_SCB_RNR|I596_SCB_RUS); - /* if (bd->flags & TX_QUEUED) - DL_sched(bd, bdd); */ - } - - /* - * See if any CU commands to process - */ - if ( (cmd & I596_SCB_CUC) != I596_SCB_CUC_START) - { - priv->scbp->cmd = 0; /* Ignore all other commands */ - goto ack_intr; - } - priv->scbp->status &= ~(I596_SCB_CNA|I596_SCB_CUS); - - /* - * Process a command - */ - cbp = (I596_CB *) S2H(priv->scbp->cbp); - priv->scbp->cmd = 0; /* Safe to clear the command */ - for (;;) - { - switch (cbp->nop.cmd & I596_CB_CMD) - { - case I596_CB_CMD_XMIT: - dgrs_rcv_frame(dev, priv, cbp); - break; - default: - cbp->nop.status = I596_CB_STATUS_C | I596_CB_STATUS_OK; - break; - } - if (cbp->nop.cmd & I596_CB_CMD_EL) - break; - cbp = (I596_CB *) S2H(cbp->nop.next); - } - priv->scbp->status |= I596_SCB_CNA; - - /* - * Ack the interrupt - */ -ack_intr: - if (priv->plxreg) - OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1); -} - -/* - * Download the board firmware - */ -static int -dgrs_download(struct device *dev) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - int is; - int i; - - static int iv2is[16] = { - 0, 0, 0, ES4H_IS_INT3, - 0, ES4H_IS_INT5, 0, ES4H_IS_INT7, - 0, 0, ES4H_IS_INT10, ES4H_IS_INT11, - ES4H_IS_INT12, 0, 0, ES4H_IS_INT15 }; - - /* - * Map in the dual port memory - */ - priv->vmem = ioremap(dev->mem_start, 2048*1024); - if (!priv->vmem) - { - printk("%s: cannot map in board memory\n", dev->name); - return -ENXIO; - } - - /* - * Hold the processor and configure the board addresses - */ - if (priv->plxreg) - { /* PCI bus */ - proc_reset(dev, 1); - } - else - { /* EISA bus */ - is = iv2is[dev->irq & 0x0f]; - if (!is) - { - printk("%s: Illegal IRQ %d\n", dev->name, dev->irq); - return -ENXIO; - } - OUTB(dev->base_addr + ES4H_AS_31_24, - (uchar) (dev->mem_start >> 24) ); - OUTB(dev->base_addr + ES4H_AS_23_16, - (uchar) (dev->mem_start >> 16) ); - priv->is_reg = ES4H_IS_LINEAR | is | - ((uchar) (dev->mem_start >> 8) & ES4H_IS_AS15); - OUTB(dev->base_addr + ES4H_IS, priv->is_reg); - OUTB(dev->base_addr + ES4H_EC, ES4H_EC_ENABLE); - OUTB(dev->base_addr + ES4H_PC, ES4H_PC_RESET); - OUTB(dev->base_addr + ES4H_MW, ES4H_MW_ENABLE | 0x00); - } - - /* - * See if we can do DMA on the SE-6 - */ - priv->use_dma = check_board_dma(dev); - if (priv->use_dma) - printk("%s: Bus Master DMA is enabled.\n", dev->name); - - /* - * Load and verify the code at the desired address - */ - memcpy(priv->vmem, dgrs_code, dgrs_ncode); /* Load code */ - if (memcmp(priv->vmem, dgrs_code, dgrs_ncode)) - { - iounmap(priv->vmem); - priv->vmem = NULL; - printk("%s: download compare failed\n", dev->name); - return -ENXIO; - } - - /* - * Configurables - */ - priv->bcomm = (struct bios_comm *) (priv->vmem + 0x0100); - priv->bcomm->bc_nowait = 1; /* Tell board to make printf not wait */ - priv->bcomm->bc_host = 1; /* Tell board there is a host port */ - priv->bcomm->bc_squelch = 0; /* Flag from Space.c */ - priv->bcomm->bc_150ohm = 0; /* Flag from Space.c */ - - priv->bcomm->bc_spew = 0; /* Debug flag from Space.c */ - priv->bcomm->bc_maxrfd = 0; /* Debug flag from Space.c */ - priv->bcomm->bc_maxrbd = 0; /* Debug flag from Space.c */ - - /* - * Request memory space on board for DMA chains - */ - if (priv->use_dma) - priv->bcomm->bc_hostarea_len = (2048/64) * 16; - - /* - * NVRAM configurables from Space.c - */ - priv->bcomm->bc_spantree = dgrs_spantree; - priv->bcomm->bc_hashexpire = dgrs_hashexpire; - memcpy(priv->bcomm->bc_ipaddr, dgrs_ipaddr, 4); - memcpy(priv->bcomm->bc_ipxnet, &dgrs_ipxnet, 4); - - /* - * Release processor, wait 5 seconds for board to initialize - */ - proc_reset(dev, 0); - - for (i = jiffies + 5 * HZ; i > jiffies; ) - { - if (priv->bcomm->bc_status >= BC_RUN) - break; - } - - if (priv->bcomm->bc_status < BC_RUN) - { - printk("%s: board not operating", dev->name); - return -ENXIO; - } - - priv->port = (PORT *) S2H(priv->bcomm->bc_port); - priv->scbp = (I596_SCB *) S2H(priv->port->scbp); - #if 0 /* These two methods are identical, but the 2nd is better */ - priv->rfdp = (I596_RFD *) S2H(priv->port->rfd_head); - priv->rbdp = (I596_RBD *) S2H(priv->port->rbd_head); - #else - priv->rfdp = (I596_RFD *) S2H(priv->scbp->rfdp); - priv->rbdp = (I596_RBD *) S2H(priv->rfdp->rbdp); - #endif - - priv->scbp->status = I596_SCB_CNA; /* CU is idle */ - - /* - * Get switch physical and host virtual pointers to DMA - * chaining area. NOTE: the MSB of the switch physical - * address *must* be turned off. Otherwise, the HW kludge - * that allows host access of the PLX DMA registers will - * erroneously select the PLX registers. - */ - priv->dmadesc_s = (DMACHAIN *) S2DMA(priv->bcomm->bc_hostarea); - if (priv->dmadesc_s) - priv->dmadesc_h = (DMACHAIN *) S2H(priv->dmadesc_s); - else - priv->dmadesc_h = NULL; - - /* - * Enable board interrupts - */ - if (priv->plxreg) - { /* PCI bus */ - OUTL(dev->base_addr + PLX_INT_CSR, - inl(dev->base_addr + PLX_INT_CSR) - | PLX_PCI_DOORBELL_IE); /* Enable intr to host */ - OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1); - } - else - { /* EISA bus */ - } - - return (0); -} - -/* - * Probe (init) a board - */ -int -dgrs_probe1(struct device *dev) -{ - DGRS_PRIV *priv = (DGRS_PRIV *) dev->priv; - int i; - int rc; - - printk("%s: Digi RightSwitch at io=%lx mem=%lx irq=%d plx=%lx dma=%lx ", - dev->name, dev->base_addr, dev->mem_start, dev->irq, - priv->plxreg, priv->plxdma); - - /* - * Download the firmware and light the processor - */ - rc = dgrs_download(dev); - if (rc) - { - printk("\n"); - return rc; - } - - /* - * Get ether address of board - */ - memcpy(dev->dev_addr, priv->port->ethaddr, 6); - for (i = 0; i < 6; ++i) - printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]); - printk("\n"); - - if (dev->dev_addr[0] & 1) - { - printk("%s: Illegal Ethernet Address", dev->name); - return (-ENXIO); - } - - /* - * ACK outstanding interrupts, hook the interrupt, - * and verify that we are getting interrupts from the board. - */ - if (priv->plxreg) - OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1); - rc = request_irq(dev->irq, &dgrs_intr, 0, "RightSwitch", dev); - if (rc) - return (rc); - - priv->intrcnt = 0; - for (i = jiffies + 2*HZ + HZ/2; i > jiffies; ) - if (priv->intrcnt >= 2) - break; - if (priv->intrcnt < 2) - { - printk("%s: Not interrupting on IRQ %d (%d)", - dev->name, dev->irq, priv->intrcnt); - return (-ENXIO); - } - - /* - * Register the /proc/ioports information... - */ - request_region(dev->base_addr, 256, "RightSwitch"); - - /* - * Entry points... - */ - dev->open = &dgrs_open; - dev->stop = &dgrs_close; - dev->get_stats = &dgrs_get_stats; - dev->hard_start_xmit = &dgrs_start_xmit; - dev->set_multicast_list = &dgrs_set_multicast_list; - dev->do_ioctl = &dgrs_ioctl; - - return (0); -} - -static int -dgrs_found_device( - struct device *dev, - int io, - ulong mem, - int irq, - ulong plxreg, - ulong plxdma -) -{ - DGRS_PRIV *priv; - - #ifdef MODULE - { - /* Allocate and fill new device structure. */ - int dev_size = sizeof(struct device) + sizeof(DGRS_PRIV); - - dev = (struct device *) kmalloc(dev_size, GFP_KERNEL); - memset(dev, 0, dev_size); - dev->priv = ((void *)dev) + sizeof(struct device); - priv = (DGRS_PRIV *)dev->priv; - - dev->name = priv->devname; /* An empty string. */ - dev->base_addr = io; - dev->mem_start = mem; - dev->mem_end = mem + 2048 * 1024 - 1; - dev->irq = irq; - priv->plxreg = plxreg; - priv->plxdma = plxdma; - priv->vplxdma = NULL; - - dev->init = dgrs_probe1; - - ether_setup(dev); - priv->next_dev = dgrs_root_dev; - dgrs_root_dev = dev; - if (register_netdev(dev) != 0) - return -EIO; - } - #else - { - if (dev) - { - dev->priv = kmalloc(sizeof (DGRS_PRIV), GFP_KERNEL); - memset(dev->priv, 0, sizeof (DGRS_PRIV)); - } - dev = init_etherdev(dev, sizeof(DGRS_PRIV)); - priv = (DGRS_PRIV *)dev->priv; - - dev->base_addr = io; - dev->mem_start = mem; - dev->mem_end = mem + 2048 * 1024; - dev->irq = irq; - priv->plxreg = plxreg; - priv->plxdma = plxdma; - priv->vplxdma = NULL; - - dgrs_probe1(dev); - } - #endif - - return (0); -} - -/* - * Scan for all boards - */ -static int -dgrs_scan(struct device *dev) -{ - int cards_found = 0; - uint io; - uint mem; - uint irq; - uint plxreg; - uint plxdma; - - /* - * First, check for PCI boards - */ - if (pcibios_present()) - { - int pci_index = 0; - - for (; pci_index < 8; pci_index++) - { - uchar pci_bus, pci_device_fn; - uchar pci_irq; - uchar pci_latency; - ushort pci_command; - - if (pcibios_find_device(SE6_PCI_VENDOR_ID, - SE6_PCI_DEVICE_ID, - pci_index, &pci_bus, - &pci_device_fn)) - break; - - pcibios_read_config_byte(pci_bus, pci_device_fn, - PCI_INTERRUPT_LINE, &pci_irq); - pcibios_read_config_dword(pci_bus, pci_device_fn, - PCI_BASE_ADDRESS_0, &plxreg); - pcibios_read_config_dword(pci_bus, pci_device_fn, - PCI_BASE_ADDRESS_1, &io); - pcibios_read_config_dword(pci_bus, pci_device_fn, - PCI_BASE_ADDRESS_2, &mem); - pcibios_read_config_dword(pci_bus, pci_device_fn, - 0x30, &plxdma); - irq = pci_irq; - plxreg &= ~15; - io &= ~3; - mem &= ~15; - plxdma &= ~15; - - /* - * On some BIOSES, the PLX "expansion rom" (used for DMA) - * address comes up as "0". This is probably because - * the BIOS doesn't see a valid 55 AA ROM signature at - * the "ROM" start and zeroes the address. To get - * around this problem the SE-6 is configured to ask - * for 4 MB of space for the dual port memory. We then - * must set its range back to 2 MB, and use the upper - * half for DMA register access - */ - OUTL(io + PLX_SPACE0_RANGE, 0xFFE00000L); - if (plxdma == 0) - plxdma = mem + (2048L * 1024L); - pcibios_write_config_dword(pci_bus, pci_device_fn, - 0x30, plxdma + 1); - pcibios_read_config_dword(pci_bus, pci_device_fn, - 0x30, &plxdma); - plxdma &= ~15; - - /* - * Get and check the bus-master and latency values. - * Some PCI BIOSes fail to set the master-enable bit, - * and the latency timer must be set to the maximum - * value to avoid data corruption that occurs when the - * timer expires during a transfer. Yes, it's a bug. - */ - pcibios_read_config_word(pci_bus, pci_device_fn, - PCI_COMMAND, &pci_command); - if ( ! (pci_command & PCI_COMMAND_MASTER)) - { - printk(" Setting the PCI Master Bit!\n"); - pci_command |= PCI_COMMAND_MASTER; - pcibios_write_config_word(pci_bus, - pci_device_fn, - PCI_COMMAND, pci_command); - } - pcibios_read_config_byte(pci_bus, pci_device_fn, - PCI_LATENCY_TIMER, &pci_latency); - if (pci_latency != 255) - { - printk(" Overriding PCI latency timer: " - "was %d, now is 255.\n", pci_latency); - pcibios_write_config_byte(pci_bus, - pci_device_fn, - PCI_LATENCY_TIMER, 255); - } - - dgrs_found_device(dev, io, mem, irq, plxreg, plxdma); - - dev = 0; - cards_found++; - } - } - - /* - * Second, check for EISA boards - */ - if (EISA_bus) - { - static int is2iv[8] = { 0, 3, 5, 7, 10, 11, 12, 15 }; - - for (io = 0x1000; io < 0x9000; io += 0x1000) - { - if (inb(io+ES4H_MANUFmsb) != 0x10 - || inb(io+ES4H_MANUFlsb) != 0x49 - || inb(io+ES4H_PRODUCT) != ES4H_PRODUCT_CODE) - continue; - - if ( ! (inb(io+ES4H_EC) & ES4H_EC_ENABLE) ) - continue; /* Not EISA configured */ - - mem = (inb(io+ES4H_AS_31_24) << 24) - + (inb(io+ES4H_AS_23_16) << 16); - - irq = is2iv[ inb(io+ES4H_IS) & ES4H_IS_INTMASK ]; - - dgrs_found_device(dev, io, mem, irq, 0L, 0L); - - dev = 0; - ++cards_found; - } - } - - return cards_found; -} - -/* - * Module/driver initialization points. Two ways, depending on - * whether we are a module or statically linked, ala Don Becker's - * 3c59x driver. - */ - -#ifdef MODULE - -/* - * Variables that can be overridden from command line - */ -static int debug = -1; -static int dma = -1; -static int hashexpire = -1; -static int spantree = -1; -static int ipaddr[4] = { -1 }; -static long ipxnet = -1; - -int -init_module(void) -{ - int cards_found; - - /* - * Command line variable overrides - * debug=NNN - * dma=0/1 - * spantree=0/1 - * hashexpire=NNN - * ipaddr=A,B,C,D - * ipxnet=NNN - */ - if (debug >= 0) - dgrs_debug = debug; - if (dma >= 0) - dgrs_dma = dma; - if (hashexpire >= 0) - dgrs_hashexpire = hashexpire; - if (spantree >= 0) - dgrs_spantree = spantree; - if (ipaddr[0] != -1) - { - int i; - - for (i = 0; i < 4; ++i) - dgrs_ipaddr[i] = ipaddr[i]; - } - if (ipxnet != -1) - dgrs_ipxnet = htonl( ipxnet ); - - if (dgrs_debug) - { - printk("dgrs: SW=%s FW=Build %d %s\n", - version, dgrs_firmnum, dgrs_firmdate); - } - - /* - * Find and configure all the cards - */ - dgrs_root_dev = NULL; - cards_found = dgrs_scan(0); - - return cards_found ? 0 : -ENODEV; -} - -void -cleanup_module(void) -{ - while (dgrs_root_dev) - { - struct device *next_dev; - DGRS_PRIV *priv; - - priv = (DGRS_PRIV *) dgrs_root_dev->priv; - next_dev = priv->next_dev; - unregister_netdev(dgrs_root_dev); - - proc_reset(dgrs_root_dev, 1); - - if (priv->vmem) - iounmap(priv->vmem); - if (priv->vplxdma) - iounmap((uchar *) priv->vplxdma); - - release_region(dgrs_root_dev->base_addr, 256); - - free_irq(dgrs_root_dev->irq, dgrs_root_dev); - - kfree(dgrs_root_dev); - dgrs_root_dev = next_dev; - } -} - -#else - -int -dgrs_probe(struct device *dev) -{ - int cards_found; - - cards_found = dgrs_scan(dev); - if (dgrs_debug && cards_found) - printk("dgrs: SW=%s FW=Build %d %s\n", - version, dgrs_firmnum, dgrs_firmdate); - return cards_found ? 0 : -ENODEV; -} -#endif diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_es4h.h linux/drivers/net/dgrs_es4h.h --- v2.1.16/linux/drivers/net/dgrs_es4h.h Sun Apr 21 11:40:09 1996 +++ linux/drivers/net/dgrs_es4h.h Sat Dec 21 17:23:20 1996 @@ -6,7 +6,7 @@ /* board. Everything that says "es4h" should really be */ /* "se4". But we'll keep the old name for now. */ /* */ -/* $Id: es4h.h,v 1.9 1996/04/18 02:58:25 rick Exp $ */ +/* $Id: es4h.h,v 1.10 1996/08/22 17:16:53 rick Exp $ */ /* */ /************************************************************************/ @@ -43,9 +43,9 @@ #define ES4H_IS 0x07 /* Interrupt, addr select */ # define ES4H_IS_INTMASK 0x07 /* WO, interrupt select */ # define ES4H_IS_INTOFF 0x00 /* No IRQ */ -# define ES4H_IS_INT3 0x01 /* IRQ 3 */ +# define ES4H_IS_INT3 0x03 /* IRQ 3 */ # define ES4H_IS_INT5 0x02 /* IRQ 5 */ -# define ES4H_IS_INT7 0x03 /* IRQ 7 */ +# define ES4H_IS_INT7 0x01 /* IRQ 7 */ # define ES4H_IS_INT10 0x04 /* IRQ 10 */ # define ES4H_IS_INT11 0x05 /* IRQ 11 */ # define ES4H_IS_INT12 0x06 /* IRQ 12 */ @@ -131,6 +131,7 @@ # define SE6_GPP_EED 0x0001 /* RW, EEPROM data bit */ # define SE6_GPP_EECS 0x0002 /* RW, EEPROM chip select */ # define SE6_GPP_EECK 0x0004 /* RW, EEPROM clock */ +# define SE6_GPP_LINK 0x00fc /* R, Link status LEDs */ #define ES4H_INTVEC 0xA2060000 /* RO: Interrupt Vector */ # define ES4H_IV_DMA0 0x01 /* Chan 0 DMA interrupt */ @@ -170,7 +171,7 @@ /* * Because there are differences between the SE-4 and the SE-6, * we assume that the following globals will be set up at init - * time in main.c to contain the appropriate constants from above + * time in main.c to containt the appropriate constants from above */ extern ushort Gpp; /* Softcopy of GPP register */ extern ushort EEck; /* Clock bit */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_ether.h linux/drivers/net/dgrs_ether.h --- v2.1.16/linux/drivers/net/dgrs_ether.h Sun Apr 21 11:40:09 1996 +++ linux/drivers/net/dgrs_ether.h Sat Dec 21 17:23:20 1996 @@ -1,7 +1,8 @@ /* - * A filtering function + * A filtering function. There are two filters/port. Filter "0" + * is the input filter, and filter "1" is the output filter. */ -typedef int (FILTER_FUNC)(uchar *pktp, int pktlen, ulong *scratch); +typedef int (FILTER_FUNC)(uchar *pktp, int pktlen, ulong *scratch, int port); #define NFILTERS 2 /* @@ -114,8 +115,14 @@ extern int Nports; /* Number of genuine ethernet controllers */ extern int Nchan; /* ... plus one for host interface */ -extern int FirstChan; /* 0 or 1, depending on whether host is used */ +extern int FirstChan; /* 0 or 1, depedning on whether host is used */ extern int NumChan; /* 4 or 5 */ + +/* + * A few globals + */ +extern int IsPromisc; +extern int MultiNicMode; /* * Functions diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_firmware.c linux/drivers/net/dgrs_firmware.c --- v2.1.16/linux/drivers/net/dgrs_firmware.c Sat Apr 20 11:22:02 1996 +++ linux/drivers/net/dgrs_firmware.c Sat Dec 21 17:23:21 1996 @@ -1,9345 +1,9966 @@ -int dgrs_firmnum = 517; +int dgrs_firmnum = 550; char dgrs_firmver[] = "$Version$"; -char dgrs_firmdate[] = "04/15/96 01:59:21"; +char dgrs_firmdate[] = "11/16/96 03:45:15"; unsigned char dgrs_code[] = { - 0xD5,0x05,0xC0,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,0x40,0x28,0x23,0x29, - 0x65,0x73,0x34,0x68,0x2E,0x62,0x69,0x6E,0x20,0x20,0x20,0x20, - 0x20,0x20,0x31,0x2E,0x30,0x20,0x30,0x30,0x2F,0x30,0x30,0x2F, - 0x39,0x34,0x00,0x40,0x28,0x23,0x29,0x43,0x6F,0x70,0x79,0x72, - 0x69,0x67,0x68,0x74,0x20,0x31,0x39,0x39,0x35,0x2C,0x20,0x44, - 0x69,0x67,0x69,0x20,0x49,0x6E,0x74,0x65,0x72,0x6E,0x61,0x74, - 0x69,0x6F,0x6E,0x61,0x6C,0x2E,0x20,0x20,0x41,0x6C,0x6C,0x20, - 0x52,0x69,0x67,0x68,0x74,0x73,0x20,0x52,0x65,0x73,0x65,0x72, - 0x76,0x65,0x64,0x2E,0x00,0x00,0x00,0x00,0x61,0x05,0xC0,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,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x94,0xFF,0xBD,0x27,0x10,0x00,0xA1,0xAF,0x14,0x00,0xA2,0xAF, - 0x18,0x00,0xA3,0xAF,0x1C,0x00,0xA4,0xAF,0x20,0x00,0xA5,0xAF, - 0x24,0x00,0xA6,0xAF,0x28,0x00,0xA7,0xAF,0x2C,0x00,0xA8,0xAF, - 0x30,0x00,0xA9,0xAF,0x34,0x00,0xAA,0xAF,0x38,0x00,0xAB,0xAF, - 0x3C,0x00,0xAC,0xAF,0x40,0x00,0xAD,0xAF,0x44,0x00,0xAE,0xAF, - 0x48,0x00,0xAF,0xAF,0x4C,0x00,0xB8,0xAF,0x50,0x00,0xB9,0xAF, - 0x58,0x00,0xBE,0xAF,0x5C,0x00,0xBF,0xAF,0x00,0x70,0x08,0x40, - 0x12,0x48,0x00,0x00,0x10,0x50,0x00,0x00,0x00,0x60,0x0B,0x40, - 0x54,0x00,0xA8,0xAF,0x60,0x00,0xA9,0xAF,0x64,0x00,0xAA,0xAF, - 0x68,0x00,0xAB,0xAF,0x21,0x38,0x00,0x01,0x00,0x83,0x18,0x3C, - 0x00,0x01,0x18,0x27,0x00,0x00,0x08,0x8F,0x00,0x00,0x00,0x00, - 0x01,0x00,0x08,0x21,0x00,0x00,0x08,0xAF,0x00,0x68,0x05,0x40, - 0x00,0x60,0x06,0x40,0x7C,0x00,0xA8,0x30,0xD4,0xFF,0x00,0x15, - 0x00,0x00,0x00,0x00,0x24,0x40,0xA6,0x00,0x00,0xFF,0x08,0x31, - 0x1B,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x82,0x41,0x08,0x00, - 0x02,0x83,0x09,0x3C,0x21,0x48,0x28,0x01,0xC0,0xBE,0x29,0x8D, - 0x42,0x40,0x08,0x00,0x02,0x83,0x0A,0x3C,0x21,0x50,0x48,0x01, - 0xC0,0xC2,0x4A,0x8D,0x00,0x00,0x00,0x00,0x26,0x50,0x46,0x01, - 0x01,0xFF,0x4A,0x31,0x21,0x28,0xC0,0x00,0x26,0x30,0xCA,0x00, - 0x00,0x60,0x86,0x40,0x42,0x40,0x08,0x00,0x02,0x83,0x04,0x3C, - 0x21,0x20,0x88,0x00,0xC0,0xC4,0x84,0x90,0x09,0xF8,0x20,0x01, - 0x00,0x00,0x00,0x00,0x68,0x00,0xA6,0x8F,0x00,0x00,0x00,0x00, - 0x00,0x60,0x86,0x40,0x00,0x68,0x05,0x40,0xE3,0xFF,0x00,0x10, - 0x00,0x00,0x00,0x00,0x68,0x00,0xA8,0x8F,0x60,0x00,0xA9,0x8F, - 0x64,0x00,0xAA,0x8F,0x00,0x00,0x00,0x00,0x00,0x60,0x88,0x40, - 0x13,0x00,0x20,0x01,0x11,0x00,0x40,0x01,0x14,0x00,0xA2,0x8F, - 0x18,0x00,0xA3,0x8F,0x1C,0x00,0xA4,0x8F,0x20,0x00,0xA5,0x8F, - 0x24,0x00,0xA6,0x8F,0x28,0x00,0xA7,0x8F,0x2C,0x00,0xA8,0x8F, - 0x30,0x00,0xA9,0x8F,0x34,0x00,0xAA,0x8F,0x38,0x00,0xAB,0x8F, - 0x3C,0x00,0xAC,0x8F,0x40,0x00,0xAD,0x8F,0x44,0x00,0xAE,0x8F, - 0x48,0x00,0xAF,0x8F,0x4C,0x00,0xB8,0x8F,0x50,0x00,0xB9,0x8F, - 0x58,0x00,0xBE,0x8F,0x5C,0x00,0xBF,0x8F,0x00,0x00,0x00,0x00, - 0x54,0x00,0xBA,0x8F,0x10,0x00,0xA1,0x8F,0x6C,0x00,0xBD,0x27, - 0x08,0x00,0x40,0x03,0x10,0x00,0x00,0x42,0x00,0x60,0x1A,0x40, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x1B,0x3C,0xFE,0x00,0x7B,0x37, - 0x00,0x00,0x00,0x00,0x24,0xD0,0x5B,0x03,0x00,0x00,0x00,0x00, - 0x00,0x60,0x9A,0x40,0x00,0x00,0x00,0x00,0x00,0x70,0x1A,0x40, - 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x42,0x00,0x00,0x00,0x00, - 0x08,0x00,0x40,0x03,0x00,0x00,0x00,0x00,0xFF,0xFF,0x08,0x24, - 0x85,0xFF,0x00,0x11,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x25, - 0x82,0xFF,0x00,0x15,0x00,0x00,0x00,0x00,0xFF,0xFF,0x08,0x24, - 0x21,0x08,0x00,0x01,0x7E,0xFF,0x28,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x21,0x24,0x7B,0xFF,0x20,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x02,0x24,0x78,0xFF,0x48,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x75,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x03,0x24,0x72,0xFF,0x68,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x63,0x24,0x6F,0xFF,0x60,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x04,0x24,0x6C,0xFF,0x88,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x84,0x24,0x69,0xFF,0x80,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x05,0x24,0x66,0xFF,0xA8,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0xA5,0x24,0x63,0xFF,0xA0,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x06,0x24,0x60,0xFF,0xC8,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0xC6,0x24,0x5D,0xFF,0xC0,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x07,0x24,0x5A,0xFF,0xE8,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0xE7,0x24,0x57,0xFF,0xE0,0x14,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x09,0x24,0x54,0xFF,0x28,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0x29,0x25,0x51,0xFF,0x20,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0A,0x24,0x4E,0xFF,0x48,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0x4A,0x25,0x4B,0xFF,0x40,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0B,0x24,0x48,0xFF,0x68,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0x6B,0x25,0x45,0xFF,0x60,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0C,0x24,0x42,0xFF,0x88,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0x8C,0x25,0x3F,0xFF,0x80,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0D,0x24,0x3C,0xFF,0xA8,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0xAD,0x25,0x39,0xFF,0xA0,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0E,0x24,0x36,0xFF,0xC8,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0xCE,0x25,0x33,0xFF,0xC0,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x0F,0x24,0x30,0xFF,0xE8,0x15,0x00,0x00,0x00,0x00, - 0x01,0x00,0xEF,0x25,0x2D,0xFF,0xE0,0x15,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x18,0x24,0x2A,0xFF,0x08,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0x18,0x27,0x27,0xFF,0x00,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x10,0x24,0x24,0xFF,0x08,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0x10,0x26,0x21,0xFF,0x00,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x11,0x24,0x1E,0xFF,0x28,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0x31,0x26,0x1B,0xFF,0x20,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x12,0x24,0x18,0xFF,0x48,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0x52,0x26,0x15,0xFF,0x40,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x13,0x24,0x12,0xFF,0x68,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0x73,0x26,0x0F,0xFF,0x60,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x14,0x24,0x0C,0xFF,0x88,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0x94,0x26,0x09,0xFF,0x80,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x15,0x24,0x06,0xFF,0xA8,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0xB5,0x26,0x03,0xFF,0xA0,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x16,0x24,0x00,0xFF,0xC8,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0xD6,0x26,0xFD,0xFE,0xC0,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x17,0x24,0xFA,0xFE,0xE8,0x16,0x00,0x00,0x00,0x00, - 0x01,0x00,0xF7,0x26,0xF7,0xFE,0xE0,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1A,0x24,0xF4,0xFE,0x48,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0x5A,0x27,0xF1,0xFE,0x40,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1B,0x24,0xEE,0xFE,0x68,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0x7B,0x27,0xEB,0xFE,0x60,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1C,0x24,0xE8,0xFE,0x88,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0x9C,0x27,0xE5,0xFE,0x80,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1D,0x24,0xE2,0xFE,0xA8,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0xBD,0x27,0xDF,0xFE,0xA0,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1E,0x24,0xDC,0xFE,0xC8,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0xDE,0x27,0xD9,0xFE,0xC0,0x17,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x1F,0x24,0xD6,0xFE,0xE8,0x17,0x00,0x00,0x00,0x00, - 0x01,0x00,0xFF,0x27,0xD3,0xFE,0xE0,0x17,0x00,0x00,0x00,0x00, - 0x00,0x83,0x18,0x3C,0x00,0x01,0x18,0x27,0x00,0x20,0x01,0x3C, - 0x25,0xC0,0x01,0x03,0x00,0x60,0x08,0x40,0x00,0x00,0x00,0x00, - 0x01,0x00,0x01,0x3C,0x25,0x40,0x01,0x01,0x00,0x60,0x88,0x40, - 0x21,0x10,0x00,0x00,0xA5,0xA5,0x03,0x3C,0xA5,0xA5,0x63,0x34, - 0x00,0x80,0x01,0x3C,0x00,0x00,0x23,0xAC,0x00,0x80,0x09,0x3C, - 0x00,0x00,0x29,0x8D,0x00,0x00,0x00,0x00,0x00,0x60,0x0A,0x40, - 0x00,0x00,0x00,0x00,0x08,0x00,0x01,0x3C,0x24,0x50,0x41,0x01, - 0x1D,0x00,0x40,0x15,0x00,0x00,0x00,0x00,0x1B,0x00,0x69,0x14, - 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x24,0x00,0x80,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x00,0x00,0x20,0xAC,0x40,0x10,0x02,0x00, - 0x01,0x00,0x01,0x3C,0x01,0x00,0x21,0x34,0x2B,0x08,0x41,0x00, - 0xF8,0xFF,0x20,0x14,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x24, - 0x00,0x80,0x01,0x3C,0x00,0x00,0x23,0xAC,0x00,0x01,0x02,0x24, - 0x00,0x80,0x03,0x3C,0x21,0x18,0x62,0x00,0x00,0x00,0x63,0x8C, - 0x00,0x00,0x00,0x00,0x07,0x00,0x60,0x14,0x00,0x00,0x00,0x00, - 0x40,0x10,0x02,0x00,0x01,0x00,0x01,0x3C,0x01,0x00,0x21,0x34, - 0x2B,0x08,0x41,0x00,0xF5,0xFF,0x20,0x14,0x00,0x00,0x00,0x00, - 0x00,0x60,0x80,0x40,0x00,0x00,0x00,0x00,0x54,0x00,0x02,0xAF, - 0x00,0x60,0x08,0x40,0x00,0x00,0x00,0x00,0x03,0x00,0x01,0x3C, - 0x25,0x40,0x01,0x01,0x00,0x60,0x88,0x40,0x21,0x10,0x00,0x00, - 0xA5,0xA5,0x03,0x3C,0xA5,0xA5,0x63,0x34,0x00,0x80,0x01,0x3C, - 0x00,0x00,0x23,0xAC,0x00,0x80,0x09,0x3C,0x00,0x00,0x29,0x8D, - 0x00,0x00,0x00,0x00,0x00,0x60,0x0A,0x40,0x00,0x00,0x00,0x00, - 0x08,0x00,0x01,0x3C,0x24,0x50,0x41,0x01,0x1D,0x00,0x40,0x15, - 0x00,0x00,0x00,0x00,0x1B,0x00,0x69,0x14,0x00,0x00,0x00,0x00, - 0x00,0x01,0x02,0x24,0x00,0x80,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x00,0x00,0x20,0xAC,0x40,0x10,0x02,0x00,0x01,0x00,0x01,0x3C, - 0x01,0x00,0x21,0x34,0x2B,0x08,0x41,0x00,0xF8,0xFF,0x20,0x14, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x24,0x00,0x80,0x01,0x3C, - 0x00,0x00,0x23,0xAC,0x00,0x01,0x02,0x24,0x00,0x80,0x03,0x3C, - 0x21,0x18,0x62,0x00,0x00,0x00,0x63,0x8C,0x00,0x00,0x00,0x00, - 0x07,0x00,0x60,0x14,0x00,0x00,0x00,0x00,0x40,0x10,0x02,0x00, - 0x01,0x00,0x01,0x3C,0x01,0x00,0x21,0x34,0x2B,0x08,0x41,0x00, - 0xF5,0xFF,0x20,0x14,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0x40, - 0x00,0x00,0x00,0x00,0x58,0x00,0x02,0xAF,0x58,0x00,0x09,0x8F, - 0x00,0x00,0x00,0x00,0x11,0x00,0x20,0x11,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x03,0x00,0x02,0x3C,0x00,0x00,0x00,0x00, - 0x00,0x60,0x82,0x40,0x00,0x80,0x08,0x3C,0x25,0x48,0x28,0x01, - 0x00,0x00,0x00,0xA1,0x04,0x00,0x00,0xA1,0x08,0x00,0x00,0xA1, - 0x0C,0x00,0x00,0xA1,0x10,0x00,0x00,0xA1,0x14,0x00,0x00,0xA1, - 0x18,0x00,0x00,0xA1,0x20,0x00,0x08,0x25,0xF7,0xFF,0x09,0x15, - 0xFC,0xFF,0x00,0xA1,0x54,0x00,0x09,0x8F,0x00,0x00,0x00,0x00, - 0x11,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x3C,0x00,0x00,0x00,0x00,0x00,0x60,0x82,0x40, - 0x00,0x80,0x08,0x3C,0x25,0x48,0x28,0x01,0x00,0x00,0x00,0xA1, - 0x04,0x00,0x00,0xA1,0x08,0x00,0x00,0xA1,0x0C,0x00,0x00,0xA1, - 0x10,0x00,0x00,0xA1,0x14,0x00,0x00,0xA1,0x18,0x00,0x00,0xA1, - 0x20,0x00,0x08,0x25,0xF7,0xFF,0x09,0x15,0xFC,0xFF,0x00,0xA1, - 0x20,0x00,0x08,0x3C,0x00,0x60,0x88,0x40,0x00,0x68,0x80,0x40, - 0x00,0x83,0x02,0x3C,0x98,0x1C,0x42,0x24,0xFF,0x1F,0x09,0x3C, - 0xFF,0xFF,0x29,0x35,0x24,0x10,0x49,0x00,0x00,0x80,0x09,0x3C, - 0x25,0x10,0x49,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00, - 0x02,0x83,0x08,0x3C,0xC0,0xB5,0x08,0x25,0xFC,0xFF,0x01,0x24, - 0x24,0x40,0x01,0x01,0x03,0x83,0x09,0x3C,0x2C,0xF5,0x29,0x25, - 0xFC,0xFF,0x01,0x24,0x24,0x48,0x21,0x01,0x00,0x00,0x0A,0x24, - 0x00,0x00,0x0A,0xAD,0xFE,0xFF,0x09,0x15,0x04,0x00,0x08,0x25, - 0x03,0x83,0x08,0x3C,0x30,0xF5,0x08,0x25,0xFC,0xFF,0x01,0x24, - 0x24,0x40,0x01,0x01,0x1F,0x83,0x09,0x3C,0xFC,0xFF,0x29,0x35, - 0xFC,0xFF,0x01,0x24,0x24,0x48,0x21,0x01,0xED,0xFE,0x0A,0x3C, - 0xAF,0xDE,0x4A,0x35,0x00,0x00,0x0A,0xAD,0xFE,0xFF,0x09,0x15, - 0x04,0x00,0x08,0x25,0x02,0x83,0x08,0x3C,0xC0,0xB6,0x08,0x25, - 0xFC,0xFF,0x01,0x24,0x24,0x40,0x01,0x01,0x02,0x83,0x09,0x3C, - 0xBC,0xBE,0x29,0x25,0xFC,0xFF,0x01,0x24,0x24,0x48,0x21,0x01, - 0xAD,0xDE,0x0A,0x3C,0xEF,0xBE,0x4A,0x35,0x00,0x00,0x0A,0xAD, - 0xFE,0xFF,0x09,0x15,0x04,0x00,0x08,0x25,0x00,0x04,0x08,0x3C, - 0x00,0x00,0x00,0x00,0x00,0x18,0x88,0x40,0x00,0x00,0x00,0x00, - 0x02,0x83,0x1D,0x3C,0xC0,0xBE,0xBD,0x27,0x00,0x00,0x1E,0x24, - 0x02,0x83,0x1C,0x3C,0x2B,0x08,0xC0,0x0C,0xF0,0x31,0x9C,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x04,0x80,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x08,0x80,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x0C,0x80,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x10,0x80,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x14,0x80,0x82,0x8F,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x10,0x00,0xB0,0xAF,0x01,0x00,0x43,0x24,0x14,0x80,0x83,0xAF, - 0xFF,0xFF,0x03,0x24,0x04,0x00,0x43,0x14,0xFF,0x1F,0x04,0x3C, - 0x00,0xA3,0x01,0x3C,0x08,0x01,0x20,0xAC,0xFF,0x1F,0x04,0x3C, - 0xFF,0xFF,0x84,0x34,0x00,0xA3,0x10,0x3C,0x00,0xA3,0x02,0x3C, - 0x08,0x01,0x42,0x8C,0xD0,0x83,0x83,0x8F,0xDC,0x05,0x10,0x36, - 0x23,0x10,0x43,0x00,0x00,0xA3,0x01,0x3C,0x10,0x01,0x22,0xAC, - 0x02,0x83,0x02,0x3C,0x70,0xD9,0x42,0x24,0x24,0x10,0x44,0x00, - 0x00,0xA0,0x03,0x3C,0x25,0x10,0x43,0x00,0x00,0xA3,0x03,0x3C, - 0x08,0x01,0x63,0x8C,0x1C,0x00,0x44,0x8C,0x00,0x00,0x05,0x8E, - 0x03,0x83,0x02,0x3C,0xC4,0xF4,0x42,0x8C,0xD0,0x83,0x83,0xAF, - 0x24,0x84,0x84,0xAF,0x12,0x00,0xA2,0x10,0x00,0xA3,0x04,0x3C, - 0x15,0x36,0xC0,0x0C,0xDC,0x05,0x84,0x34,0xFF,0x00,0x05,0x3C, - 0xFF,0x00,0xA5,0x34,0x00,0xFF,0x06,0x3C,0x00,0x00,0x04,0x8E, - 0x00,0xFF,0xC6,0x34,0x00,0x14,0x04,0x00,0x02,0x1C,0x04,0x00, - 0x25,0x10,0x43,0x00,0x02,0x1A,0x02,0x00,0x24,0x18,0x65,0x00, - 0x00,0x12,0x02,0x00,0x24,0x10,0x46,0x00,0x25,0x18,0x62,0x00, - 0xA0,0x84,0x84,0xAF,0xA8,0x84,0x83,0xAF,0x00,0xA3,0x10,0x3C, - 0xE0,0x05,0x10,0x36,0x00,0x00,0x03,0x8E,0x03,0x83,0x02,0x3C, - 0xC8,0xF4,0x42,0x8C,0x00,0x00,0x00,0x00,0x12,0x00,0x62,0x10, - 0x00,0xA3,0x04,0x3C,0x29,0x36,0xC0,0x0C,0xE0,0x05,0x84,0x34, - 0xFF,0x00,0x05,0x3C,0xFF,0x00,0xA5,0x34,0x00,0xFF,0x06,0x3C, - 0x00,0x00,0x04,0x8E,0x00,0xFF,0xC6,0x34,0x00,0x14,0x04,0x00, - 0x02,0x1C,0x04,0x00,0x25,0x10,0x43,0x00,0x02,0x1A,0x02,0x00, - 0x24,0x18,0x65,0x00,0x00,0x12,0x02,0x00,0x24,0x10,0x46,0x00, - 0x25,0x18,0x62,0x00,0xAC,0x84,0x84,0xAF,0xA4,0x84,0x83,0xAF, - 0x28,0x84,0x83,0x8F,0x00,0xA3,0x02,0x3C,0x90,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x05,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x04,0x3C,0x90,0x01,0x84,0x8C,0x3D,0x36,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x00,0xA3,0x03,0x3C,0x8C,0x01,0x63,0x8C, - 0x03,0x83,0x02,0x3C,0xF0,0xF4,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x05,0x00,0x62,0x10,0x00,0x00,0x00,0x00,0x00,0xA3,0x04,0x3C, - 0x8C,0x01,0x84,0x8C,0xBE,0x36,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0xAC,0x25,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x42,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0xA3,0x02,0x3C, - 0x30,0x01,0x42,0x8C,0x00,0x00,0x00,0x00,0x14,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0xA3,0x01,0x3C,0x30,0x01,0x20,0xAC, - 0x00,0xA3,0x01,0x3C,0x10,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C, - 0x14,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C,0x18,0x01,0x20,0xAC, - 0x00,0xA3,0x01,0x3C,0x1C,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C, - 0x20,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C,0x24,0x01,0x20,0xAC, - 0x00,0xA3,0x01,0x3C,0x28,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C, - 0xC3,0x0C,0xC0,0x0C,0x2C,0x01,0x20,0xAC,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0xB8,0xFF,0xBD,0x27,0x03,0x00,0x02,0x3C,0x07,0xA2,0x03,0x3C, - 0x40,0x00,0xBF,0xAF,0x3C,0x00,0xB5,0xAF,0x38,0x00,0xB4,0xAF, - 0x34,0x00,0xB3,0xAF,0x30,0x00,0xB2,0xAF,0x2C,0x00,0xB1,0xAF, - 0x28,0x00,0xB0,0xAF,0x00,0xA3,0x01,0x3C,0x5C,0x01,0x20,0xAC, - 0x00,0x00,0x63,0x8C,0x4F,0x11,0x42,0x34,0x20,0x00,0x62,0x14, - 0x57,0x00,0x04,0x3C,0x4C,0x00,0x08,0x3C,0x40,0x4B,0x08,0x35, - 0xFA,0x02,0x07,0x3C,0x80,0xF0,0xE7,0x34,0x07,0xA2,0x06,0x3C, - 0x98,0x00,0xC6,0x34,0x43,0x49,0x03,0x3C,0x43,0x03,0x63,0x34, - 0x07,0xA2,0x04,0x3C,0x30,0x01,0x84,0x34,0x07,0xA2,0x05,0x3C, - 0x00,0x01,0xA5,0x34,0x06,0x00,0x02,0x24,0x18,0x84,0x82,0xAF, - 0x00,0xA3,0x01,0x3C,0xCC,0x05,0x22,0xAC,0x04,0x00,0x02,0x24, - 0x2E,0x84,0x82,0xA7,0x02,0x00,0x02,0x24,0x2C,0x84,0x82,0xA7, - 0x01,0x00,0x02,0x24,0x14,0x84,0x82,0xA7,0x77,0x77,0x02,0x24, - 0x1C,0x84,0x88,0xAF,0x10,0x84,0x87,0xAF,0x00,0x00,0xC3,0xAC, - 0x00,0x00,0x82,0xAC,0x43,0x01,0x02,0x24,0x00,0x00,0xA2,0xAC, - 0x6A,0x08,0xC0,0x08,0x1F,0x83,0x04,0x3C,0xF0,0xBC,0x84,0x34, - 0xBD,0x02,0x03,0x3C,0x80,0xE7,0x63,0x34,0x04,0x00,0x02,0x24, - 0x18,0x84,0x82,0xAF,0x00,0xA3,0x01,0x3C,0xCC,0x05,0x22,0xAC, - 0x00,0x08,0x02,0x24,0x2E,0x84,0x82,0xA7,0x00,0x04,0x02,0x24, - 0x2C,0x84,0x82,0xA7,0x00,0x02,0x02,0x24,0x14,0x84,0x82,0xA7, - 0x1C,0x84,0x84,0xAF,0x10,0x84,0x83,0xAF,0x1F,0x83,0x04,0x3C, - 0x00,0xF0,0x84,0x34,0x18,0x84,0x83,0x8F,0x00,0x83,0x02,0x3C, - 0x00,0xA3,0x01,0x3C,0x6C,0x01,0x22,0xAC,0x00,0xA3,0x01,0x3C, - 0x70,0x01,0x24,0xAC,0x01,0x00,0x63,0x24,0x20,0x84,0x83,0xAF, - 0x80,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0xA3,0x02,0x3C, - 0x84,0x01,0x42,0x8C,0x00,0x80,0x80,0xA7,0x02,0x00,0x40,0x14, - 0x55,0x00,0x02,0x24,0x00,0x80,0x82,0xA7,0x00,0xA3,0x02,0x3C, - 0x88,0x01,0x42,0x8C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x80,0x82,0x97,0x00,0x00,0x00,0x00, - 0xAA,0x00,0x42,0x34,0x00,0x80,0x82,0xA7,0x00,0x80,0x83,0x97, - 0x05,0xA2,0x02,0x3C,0xD4,0x39,0xC0,0x0C,0x00,0x00,0x43,0xA4, - 0x02,0x83,0x04,0x3C,0xC0,0xBE,0x84,0x24,0x02,0x83,0x05,0x3C, - 0xC0,0xC2,0xA5,0x24,0x02,0x83,0x06,0x3C,0xC0,0xC4,0xC6,0x24, - 0x08,0x00,0x07,0x24,0x01,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C, - 0x5C,0x01,0x22,0xAC,0x02,0x83,0x02,0x3C,0xD0,0x81,0x42,0x24, - 0x10,0x00,0xA2,0xAF,0x02,0x83,0x02,0x3C,0xF0,0x81,0x42,0x24, - 0x14,0x00,0xA2,0xAF,0x02,0x83,0x02,0x3C,0x10,0x82,0x42,0x24, - 0x18,0x00,0xA2,0xAF,0x00,0x83,0x02,0x3C,0x24,0x1E,0x42,0x24, - 0x08,0x3A,0xC0,0x0C,0x1C,0x00,0xA2,0xAF,0x00,0xA3,0x03,0x3C, - 0x7C,0x01,0x63,0x8C,0xFF,0xFF,0x02,0x24,0x08,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x18,0x84,0x85,0x8F,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x80,0x67,0x84,0x24,0x00,0xA3,0x01,0x3C, - 0xA8,0x18,0xC0,0x0C,0x7C,0x01,0x20,0xAC,0xB4,0x09,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x21,0x20,0x00,0x00,0x02,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0xD0,0x34,0xC0,0x0C,0x5C,0x01,0x22,0xAC, - 0x03,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C,0x00,0x0B,0xC0,0x0C, - 0x5C,0x01,0x22,0xAC,0x01,0x00,0x04,0x24,0x04,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x22,0x0A,0xC0,0x0C,0x5C,0x01,0x22,0xAC, - 0x05,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC, - 0x00,0xA3,0x13,0x3C,0x7C,0x01,0x73,0x8E,0x00,0xA3,0x03,0x3C, - 0xA0,0x01,0x63,0x8C,0x01,0x00,0x62,0x2E,0x40,0x84,0x82,0xAF, - 0x00,0x80,0x02,0x3C,0x05,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x20,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0xCD,0x08,0xC0,0x08, - 0xFF,0xFF,0x42,0x24,0x20,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x44,0x84,0x82,0xAF,0x82,0x0A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x21,0x20,0x40,0x00,0x02,0x00,0x05,0x24,0xE8,0x03,0x06,0x24, - 0x00,0x83,0x07,0x3C,0x90,0x1E,0xE7,0x24,0x9C,0x0A,0xC0,0x0C, - 0x10,0x00,0xA0,0xAF,0x5B,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x06,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C,0x8C,0x22,0xC0,0x0C, - 0x5C,0x01,0x22,0xAC,0x07,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C, - 0x4B,0x2D,0xC0,0x0C,0x5C,0x01,0x22,0xAC,0x08,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0xA4,0x2F,0xC0,0x0C,0x5C,0x01,0x22,0xAC, - 0x09,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC, - 0x00,0xA3,0x02,0x3C,0xF0,0x05,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x08,0x00,0x40,0x10,0x0A,0x00,0x02,0x24,0x00,0xA3,0x04,0x3C, - 0xF0,0x05,0x84,0x8C,0x8B,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x01,0x3C,0xF4,0x05,0x22,0xAC,0x0A,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC,0x99,0x0E,0xC0,0x0C, - 0x01,0x00,0x15,0x24,0x02,0x83,0x02,0x3C,0x70,0xD9,0x42,0x24, - 0x21,0xA0,0x40,0x00,0x40,0x84,0x83,0x8F,0x0B,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC,0x64,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC,0x44,0x84,0x82,0x8F, - 0x40,0x1A,0x03,0x00,0x21,0x88,0x74,0x00,0x40,0x12,0x02,0x00, - 0x21,0x90,0x54,0x00,0x00,0xA3,0x02,0x3C,0x08,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0xA3,0x01,0x3C, - 0x08,0x01,0x22,0xAC,0x00,0xA3,0x02,0x3C,0x08,0x01,0x42,0x8C, - 0x00,0xA3,0x02,0x3C,0x7C,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x53,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x10, - 0x21,0x98,0x40,0x00,0x40,0x84,0x80,0xAF,0x1D,0x09,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x40,0x84,0x95,0xAF,0x02,0x83,0x04,0x3C, - 0xE4,0x16,0xC0,0x0C,0x70,0xD9,0x84,0x24,0x40,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x40,0x12,0x02,0x00,0x21,0x88,0x54,0x00, - 0x00,0xA3,0x02,0x3C,0x00,0x06,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x03,0x00,0x40,0x18,0x21,0x80,0x20,0x02,0xEB,0x0E,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x12,0x02,0x0B,0x00,0x40,0x10, - 0x21,0x20,0x00,0x02,0x52,0x11,0xC0,0x0C,0x0A,0x00,0x05,0x24, - 0x67,0x15,0xC0,0x0C,0x21,0x20,0x00,0x02,0xDA,0x15,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x00,0x02,0x10,0x26,0x2B,0x10,0x12,0x02, - 0xF7,0xFF,0x40,0x14,0x21,0x20,0x00,0x02,0xB8,0x0A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x07,0x09,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x40,0x00,0xBF,0x8F,0x3C,0x00,0xB5,0x8F,0x38,0x00,0xB4,0x8F, - 0x34,0x00,0xB3,0x8F,0x30,0x00,0xB2,0x8F,0x2C,0x00,0xB1,0x8F, - 0x28,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x48,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x18,0x84,0x83,0x8F,0x06,0x00,0x02,0x24, - 0x14,0x00,0xBF,0xAF,0x06,0x00,0x62,0x14,0x10,0x00,0xB0,0xAF, - 0x07,0xA2,0x03,0x3C,0xE4,0x00,0x63,0x34,0x01,0x00,0x02,0x24, - 0x56,0x09,0xC0,0x08,0x00,0x00,0x62,0xAC,0x00,0x80,0x82,0x97, - 0x05,0xA2,0x10,0x3C,0x00,0x01,0x42,0x34,0x80,0x3A,0xC0,0x0C, - 0x00,0x00,0x02,0xA6,0x00,0x80,0x82,0x97,0x00,0x00,0x00,0x00, - 0xFF,0xFE,0x42,0x30,0x00,0x00,0x02,0xA6,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0x00,0x80,0x82,0x97,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x05,0xA2,0x10,0x3C,0x14,0x00,0xBF,0xAF,0x00,0x01,0x42,0x34, - 0x80,0x3A,0xC0,0x0C,0x00,0x00,0x02,0xA6,0x00,0x80,0x82,0x97, - 0x00,0x00,0x00,0x00,0xFF,0xFE,0x42,0x30,0x00,0x00,0x02,0xA6, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x21,0x10,0x80,0x00, - 0x03,0x00,0x40,0x04,0x10,0x00,0xBF,0xAF,0xFE,0xFF,0x02,0x3C, - 0xC0,0x1D,0x42,0x34,0x00,0xA3,0x04,0x3C,0x60,0x01,0x84,0x34, - 0x00,0xA3,0x01,0x3C,0x5C,0x01,0x22,0xAC,0x00,0xA3,0x01,0x3C, - 0x68,0x01,0x26,0xAC,0xD4,0x3A,0xC0,0x0C,0x08,0x00,0x06,0x24, - 0xEC,0x3A,0xC0,0x0C,0xFF,0xFF,0x04,0x24,0x7A,0x09,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C, - 0x3F,0xF5,0x42,0x24,0xF0,0xFF,0x03,0x24,0x24,0x10,0x43,0x00, - 0x00,0xA3,0x01,0x3C,0x78,0x01,0x22,0xAC,0x00,0xA3,0x02,0x3C, - 0x78,0x01,0x42,0x8C,0x00,0xA3,0x01,0x3C,0x08,0x00,0xE0,0x03, - 0x74,0x01,0x22,0xAC,0xE0,0xFF,0xBD,0x27,0x0F,0x00,0x84,0x24, - 0xF0,0xFF,0x03,0x24,0x14,0x00,0xB1,0xAF,0x00,0xA3,0x11,0x3C, - 0x78,0x01,0x31,0x8E,0x00,0xA3,0x02,0x3C,0x78,0x01,0x42,0x8C, - 0x24,0x20,0x83,0x00,0x21,0x10,0x44,0x00,0x00,0xA3,0x01,0x3C, - 0x78,0x01,0x22,0xAC,0x00,0xA3,0x03,0x3C,0x78,0x01,0x63,0x8C, - 0x00,0xA3,0x02,0x3C,0x70,0x01,0x42,0x8C,0x18,0x00,0xBF,0xAF, - 0x2B,0x10,0x43,0x00,0x0D,0x00,0x40,0x10,0x10,0x00,0xB0,0xAF, - 0x01,0x83,0x04,0x3C,0x90,0x67,0x84,0x24,0x18,0x80,0x90,0x27, - 0x21,0x28,0x00,0x02,0x01,0x83,0x07,0x3C,0xB0,0x67,0xE7,0x24, - 0x97,0x39,0xC0,0x0C,0xFC,0x01,0x06,0x24,0x01,0x00,0x04,0x24, - 0x21,0x28,0x00,0x02,0x6A,0x09,0xC0,0x0C,0xFC,0x01,0x06,0x24, - 0x21,0x10,0x20,0x02,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x80,0x3A,0xC0,0x0C,0x10,0x00,0xB0,0xAF,0x34,0x00,0x02,0x24, - 0x04,0xA2,0x01,0x3C,0x0C,0x00,0x22,0xA0,0x80,0x3A,0xC0,0x0C, - 0xE8,0x03,0x10,0x24,0x1C,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x1B,0x00,0x50,0x00,0x02,0x00,0x00,0x16,0x00,0x00,0x00,0x00, - 0x0D,0x00,0x07,0x00,0x12,0x10,0x00,0x00,0x04,0xA2,0x11,0x3C, - 0x80,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xA2,0x1C,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x1B,0x00,0x50,0x00,0x02,0x00,0x00,0x16, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0x12,0x10,0x00,0x00, - 0x21,0x28,0x00,0x00,0x21,0x20,0x00,0x00,0x06,0xA2,0x03,0x3C, - 0x02,0x12,0x02,0x00,0x00,0x00,0x22,0xA2,0x01,0x00,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x04,0x01,0x20,0xAC,0x00,0x00,0x62,0xAC, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x24,0x00,0xB8,0xD7,0x20,0xAC, - 0x01,0x00,0xA5,0x24,0x16,0x00,0xA2,0x2C,0xFA,0xFF,0x40,0x14, - 0x14,0x00,0x84,0x24,0x1F,0x83,0x04,0x3C,0x00,0xF0,0x84,0x34, - 0x24,0x80,0x83,0x8F,0x01,0x00,0x02,0x24,0x34,0x84,0x80,0xAF, - 0x20,0x80,0x82,0xAF,0x30,0x84,0x80,0xAF,0x20,0x83,0x01,0x3C, - 0xFC,0xEF,0x24,0xAC,0x08,0x00,0x60,0x10,0x1F,0x83,0x05,0x3C, - 0xFC,0xEF,0xA5,0x34,0x1F,0x83,0x06,0x3C,0x01,0x83,0x04,0x3C, - 0xD0,0x67,0x84,0x24,0x97,0x39,0xC0,0x0C,0x00,0xF0,0xC6,0x34, - 0x24,0x80,0x80,0xAF,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x74,0x00,0x02,0x24, - 0x14,0x00,0xBF,0xAF,0x04,0xA2,0x01,0x3C,0x0C,0x00,0x22,0xA0, - 0x8A,0x3A,0xC0,0x0C,0x21,0x80,0x80,0x00,0x04,0xA2,0x01,0x3C, - 0x04,0x00,0x30,0xA0,0x8A,0x3A,0xC0,0x0C,0x03,0x82,0x10,0x00, - 0x04,0xA2,0x01,0x3C,0x8A,0x3A,0xC0,0x0C,0x04,0x00,0x30,0xA0, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x40,0x00,0x02,0x24, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x04,0xA2,0x01,0x3C,0x8A,0x3A,0xC0,0x0C,0x0C,0x00,0x22,0xA0, - 0x04,0xA2,0x11,0x3C,0x04,0x00,0x31,0x92,0x00,0x00,0x00,0x00, - 0x8A,0x3A,0xC0,0x0C,0xFF,0x00,0x31,0x32,0x04,0xA2,0x10,0x3C, - 0x04,0x00,0x10,0x92,0x00,0x00,0x00,0x00,0x8A,0x3A,0xC0,0x0C, - 0xFF,0x00,0x10,0x32,0x00,0x82,0x10,0x00,0x25,0x10,0x11,0x02, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0x20,0x80,0x82,0x8F, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x03,0x00,0x40,0x14,0x14,0x00,0xBF,0xAF,0xB4,0x09,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x12,0x00,0x00,0x00,0x00, - 0xF4,0x3A,0xC0,0x0C,0x01,0x04,0x04,0x24,0x32,0x0A,0xC0,0x08, - 0x00,0x00,0x00,0x00,0xEC,0x3A,0xC0,0x0C,0x00,0x04,0x04,0x24, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x06,0xA2,0x03,0x3C, - 0x01,0x00,0x02,0x24,0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x00,0x00,0x62,0xAC,0x00,0xA3,0x02,0x3C, - 0x04,0x01,0x42,0x8C,0x21,0x88,0xE0,0x00,0x01,0x00,0x42,0x24, - 0x00,0xA3,0x01,0x3C,0x04,0x01,0x22,0xAC,0x28,0x80,0x82,0x8F, - 0x00,0xA3,0x03,0x3C,0x04,0x01,0x63,0x8C,0x01,0x00,0x42,0x24, - 0x28,0x80,0x82,0xAF,0xE8,0x03,0x42,0x28,0x15,0x00,0x40,0x14, - 0xFF,0x7F,0x03,0x3C,0x34,0x84,0x82,0x8F,0xFE,0xFF,0x63,0x34, - 0x28,0x80,0x80,0xAF,0x01,0x00,0x42,0x24,0x2B,0x18,0x62,0x00, - 0x34,0x84,0x82,0xAF,0x0D,0x00,0x60,0x10,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x0C,0x68,0x84,0x24,0x2C,0x80,0x90,0x27, - 0x21,0x28,0x00,0x02,0x01,0x83,0x07,0x3C,0x2C,0x68,0xE7,0x24, - 0x97,0x39,0xC0,0x0C,0x90,0x00,0x06,0x24,0x01,0x00,0x04,0x24, - 0x21,0x28,0x00,0x02,0x6A,0x09,0xC0,0x0C,0x90,0x00,0x06,0x24, - 0x30,0x84,0x86,0x8F,0x00,0x00,0x00,0x00,0x0E,0x00,0xC0,0x18, - 0x21,0x18,0x00,0x00,0x02,0x83,0x05,0x3C,0xB0,0xD7,0xA5,0x24, - 0x21,0x20,0x00,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x44,0x00, - 0xB0,0xD7,0x42,0x8C,0x14,0x00,0x84,0x24,0x01,0x00,0x63,0x24, - 0xFF,0xFF,0x42,0x24,0x00,0x00,0xA2,0xAC,0x2A,0x10,0x66,0x00, - 0xF7,0xFF,0x40,0x14,0x14,0x00,0xA5,0x24,0x1F,0x83,0x04,0x3C, - 0xFC,0xEF,0x84,0x34,0x1F,0x83,0x02,0x3C,0x00,0x00,0x83,0x8C, - 0xFF,0xFF,0x42,0x34,0x00,0x00,0x71,0xAC,0x04,0x00,0x63,0x24, - 0x2B,0x10,0x43,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x1F,0x83,0x03,0x3C,0x00,0xF0,0x63,0x34,0x00,0x00,0x83,0xAC, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0x30,0x84,0x82,0x8F, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x16,0x00,0x42,0x28, - 0x0D,0x00,0x40,0x14,0x10,0x00,0xB0,0xAF,0x01,0x83,0x04,0x3C, - 0x0C,0x68,0x84,0x24,0x2C,0x80,0x90,0x27,0x21,0x28,0x00,0x02, - 0x01,0x83,0x07,0x3C,0x44,0x68,0xE7,0x24,0x97,0x39,0xC0,0x0C, - 0xAD,0x00,0x06,0x24,0x01,0x00,0x04,0x24,0x21,0x28,0x00,0x02, - 0x6A,0x09,0xC0,0x0C,0xAD,0x00,0x06,0x24,0x30,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x01,0x00,0x43,0x24,0x30,0x84,0x83,0xAF, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x80,0x10,0x04,0x00,0x21,0x10,0x44,0x00, - 0x10,0x00,0xA3,0x8F,0x80,0x10,0x02,0x00,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xB4,0xD7,0x26,0xAC,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xBC,0xD7,0x27,0xAC,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xB0,0xD7,0x26,0xAC,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xB8,0xD7,0x25,0xAC,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xC0,0xD7,0x23,0xAC,0x08,0x00,0xE0,0x03, - 0x21,0x10,0x00,0x01,0x80,0x10,0x04,0x00,0x21,0x10,0x44,0x00, - 0x80,0x10,0x02,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x08,0x00,0xE0,0x03,0xB8,0xD7,0x20,0xAC,0x30,0x84,0x82,0x8F, - 0xC0,0xFF,0xBD,0x27,0x28,0x00,0xB4,0xAF,0x21,0xA0,0x00,0x00, - 0x38,0x00,0xBF,0xAF,0x34,0x00,0xB7,0xAF,0x30,0x00,0xB6,0xAF, - 0x2C,0x00,0xB5,0xAF,0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF, - 0x1C,0x00,0xB1,0xAF,0x30,0x00,0x40,0x18,0x18,0x00,0xB0,0xAF, - 0x01,0x00,0x17,0x24,0x02,0x00,0x16,0x24,0x02,0x83,0x10,0x3C, - 0xBC,0xD7,0x10,0x26,0x04,0x00,0x13,0x26,0xF4,0xFF,0x11,0x26, - 0xFC,0xFF,0x12,0x26,0x21,0xA8,0x00,0x00,0x00,0x00,0x43,0x8E, - 0x00,0x00,0x00,0x00,0x07,0x00,0x77,0x10,0x02,0x00,0x62,0x28, - 0x19,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x09,0x00,0x76,0x10, - 0x00,0x00,0x00,0x00,0xEC,0x0A,0xC0,0x08,0x14,0x00,0x10,0x26, - 0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x1C, - 0x00,0x00,0x00,0x00,0xE6,0x0A,0xC0,0x08,0x00,0x00,0x40,0xAE, - 0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x0B,0x00,0x40,0x1C, - 0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x55,0x00, - 0xB4,0xD7,0x42,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0xAE, - 0x00,0x00,0x64,0x8E,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x10,0x26, - 0x14,0x00,0x73,0x26,0x14,0x00,0x31,0x26,0x14,0x00,0x52,0x26, - 0x30,0x84,0x82,0x8F,0x01,0x00,0x94,0x26,0x2A,0x10,0x82,0x02, - 0xDA,0xFF,0x40,0x14,0x14,0x00,0xB5,0x26,0x38,0x00,0xBF,0x8F, - 0x34,0x00,0xB7,0x8F,0x30,0x00,0xB6,0x8F,0x2C,0x00,0xB5,0x8F, - 0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x40,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x02,0x83,0x03,0x3C, - 0x70,0xD9,0x63,0x24,0x00,0x02,0x02,0x24,0x00,0xA3,0x01,0x3C, - 0xC8,0x05,0x23,0xAC,0x00,0xA3,0x01,0x3C,0xD0,0x05,0x22,0xAC, - 0x00,0xA3,0x02,0x3C,0x7C,0x01,0x42,0x8C,0xD8,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x00,0x00,0x1C,0x00,0xB3,0xAF, - 0xFF,0xFF,0x13,0x24,0x18,0x00,0xB2,0xAF,0x15,0x00,0x72,0x24, - 0x14,0x00,0xB1,0xAF,0x20,0x00,0xBF,0xAF,0x01,0x00,0x42,0x2C, - 0x40,0x84,0x82,0xAF,0x87,0x0D,0xC0,0x0C,0x14,0x00,0x71,0x24, - 0xF8,0x17,0xC0,0x0C,0x00,0x00,0x00,0x00,0xDB,0x3C,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x06,0x00,0x53,0x14,0x01,0x00,0x10,0x26, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x60,0x68,0x84,0x24, - 0x7E,0x0B,0xC0,0x08,0x01,0x00,0x02,0x24,0x00,0x00,0x22,0xA2, - 0x03,0x12,0x02,0x00,0x00,0x00,0x42,0xA2,0x02,0x00,0x52,0x26, - 0x03,0x00,0x02,0x2A,0xF1,0xFF,0x40,0x14,0x02,0x00,0x31,0x26, - 0x02,0x83,0x11,0x3C,0x84,0xD9,0x31,0x26,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x00,0xFF,0x7F,0x06,0x3C,0x33,0x18,0xC0,0x0C, - 0xFF,0xFF,0xC6,0x34,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0xEC,0xFF,0x30,0x26,0x24,0x00,0x22,0x26,0x24,0x10,0x43,0x00, - 0x00,0xA0,0x03,0x3C,0x25,0x10,0x43,0x00,0x00,0x20,0x03,0x24, - 0xEC,0xFF,0x20,0xAE,0x02,0x83,0x01,0x3C,0x8C,0xD9,0x20,0xAC, - 0x02,0x83,0x01,0x3C,0x7C,0xD9,0x20,0xAC,0x02,0x83,0x01,0x3C, - 0x9C,0xD9,0x22,0xAC,0x00,0x00,0x43,0xA4,0x2A,0x15,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x76,0x0E,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x3E,0x15,0xC0,0x0C,0x21,0x20,0x00,0x02,0x20,0x84,0x82,0x8F, - 0x01,0x00,0x10,0x24,0x2A,0x10,0x02,0x02,0x0C,0x00,0x40,0x10, - 0xFF,0x1F,0x03,0x3C,0xEC,0x01,0x31,0x26,0x85,0x0B,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x3E,0x15,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x20,0x84,0x82,0x8F,0x01,0x00,0x10,0x26,0x2A,0x10,0x02,0x02, - 0xF8,0xFF,0x40,0x14,0x00,0x02,0x31,0x26,0xFF,0x1F,0x03,0x3C, - 0xFF,0xFF,0x63,0x34,0x02,0x83,0x10,0x3C,0x70,0xE7,0x10,0x26, - 0x07,0x00,0x02,0x24,0x00,0x00,0x02,0xAE,0x38,0x00,0x02,0x26, - 0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C,0x25,0x10,0x43,0x00, - 0x00,0x20,0x03,0x24,0x02,0x83,0x01,0x3C,0x8C,0xE7,0x20,0xAC, - 0x02,0x83,0x01,0x3C,0x7C,0xE7,0x20,0xAC,0x02,0x83,0x01,0x3C, - 0x9C,0xE7,0x22,0xAC,0x00,0x00,0x43,0xA4,0x02,0x83,0x02,0x3C, - 0x84,0xD9,0x42,0x8C,0x02,0x83,0x03,0x3C,0x88,0xD9,0x63,0x84, - 0x14,0x00,0x02,0xAE,0x18,0x00,0x03,0xA6,0x02,0x83,0x02,0x3C, - 0x89,0xE7,0x42,0x90,0x00,0x00,0x00,0x00,0x07,0x00,0x42,0x24, - 0x02,0x83,0x01,0x3C,0x89,0xE7,0x22,0xA0,0x6C,0x0E,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x21,0x20,0x00,0x02,0x0F,0x0E,0xC0,0x0C, - 0x20,0x00,0x05,0x24,0x14,0x00,0x10,0x26,0x21,0x20,0x00,0x02, - 0x07,0x00,0x05,0x24,0xFF,0x7F,0x06,0x3C,0x33,0x18,0xC0,0x0C, - 0xFF,0xFF,0xC6,0x34,0x21,0x10,0x00,0x00,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0xC8,0xFF,0xBD,0x27,0x30,0x00,0xB4,0xAF,0x21,0xA0,0x80,0x00, - 0xFF,0x1F,0x06,0x3C,0xFF,0xFF,0xC6,0x34,0x40,0x1A,0x14,0x00, - 0x02,0x83,0x02,0x3C,0x70,0xD9,0x42,0x24,0x28,0x00,0xB2,0xAF, - 0x21,0x90,0x62,0x00,0xFF,0xFF,0x84,0x26,0x40,0x12,0x04,0x00, - 0x00,0xA2,0x03,0x3C,0x21,0x10,0x43,0x00,0x34,0x00,0xBF,0xAF, - 0x2C,0x00,0xB3,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x04,0x00,0x42,0xAE,0x00,0x01,0x42,0x24,0x08,0x00,0x42,0xAE, - 0x00,0x10,0x02,0x24,0x04,0x10,0x82,0x00,0x0C,0x00,0x42,0xAE, - 0x04,0x00,0x02,0x24,0x04,0x10,0x82,0x00,0x00,0xA0,0x05,0x3C, - 0x10,0x00,0x42,0xAE,0x30,0x00,0x42,0x26,0x24,0x10,0x46,0x00, - 0x25,0x10,0x45,0x00,0x24,0x00,0x42,0xAE,0x40,0x10,0x04,0x00, - 0x21,0x10,0x44,0x00,0x80,0x10,0x02,0x00,0x02,0x83,0x03,0x3C, - 0xB0,0xCA,0x63,0x24,0x21,0x10,0x43,0x00,0x24,0x10,0x46,0x00, - 0x25,0x10,0x45,0x00,0x28,0x00,0x42,0xAE,0x38,0x00,0x42,0x26, - 0x24,0x10,0x46,0x00,0x25,0x10,0x45,0x00,0x00,0x00,0x54,0xAE, - 0x2C,0x00,0x42,0xAE,0x20,0x00,0x40,0xAE,0x02,0x83,0x02,0x3C, - 0x84,0xD9,0x42,0x8C,0x02,0x83,0x03,0x3C,0x88,0xD9,0x63,0x84, - 0x14,0x00,0x42,0xAE,0x18,0x00,0x43,0xA6,0x0C,0x00,0x44,0x8E, - 0x19,0x00,0x42,0x92,0x1C,0x00,0x40,0xAE,0x01,0x00,0x84,0x34, - 0x21,0x10,0x54,0x00,0x19,0x00,0x42,0xA2,0x02,0x83,0x02,0x3C, - 0xC0,0xC5,0x42,0x24,0x24,0x10,0x46,0x00,0x25,0x80,0x45,0x00, - 0x02,0x83,0x02,0x3C,0xE0,0xC5,0x42,0x24,0x24,0x10,0x46,0x00, - 0xEC,0x3A,0xC0,0x0C,0x25,0x88,0x45,0x00,0x04,0x00,0x44,0x8E, - 0x00,0x00,0x00,0x00,0x0C,0x3D,0xC0,0x0C,0x21,0x28,0x00,0x00, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x54,0x3A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x02,0x24,0x04,0x00,0x02,0xAE, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAE, - 0x04,0x00,0x44,0x8E,0x00,0x00,0x00,0x00,0x0C,0x3D,0xC0,0x0C, - 0x01,0x00,0x05,0x36,0x04,0x00,0x04,0x26,0x21,0x28,0x00,0x00, - 0xFF,0xFF,0x06,0x24,0x93,0x3D,0xC0,0x0C,0xD0,0x07,0x07,0x24, - 0x08,0x00,0x40,0x14,0xFF,0xFF,0x02,0x34,0x01,0x83,0x04,0x3C, - 0xA8,0x68,0x84,0x24,0x04,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x80,0x02,0xFF,0xFF,0x02,0x34, - 0x30,0x01,0x22,0xAE,0x04,0x00,0x44,0x8E,0x00,0x00,0x00,0x00, - 0x0C,0x3D,0xC0,0x0C,0x03,0x00,0x25,0x36,0x30,0x01,0x24,0x26, - 0x21,0x28,0x00,0x00,0xFF,0xFF,0x06,0x34,0x93,0x3D,0xC0,0x0C, - 0xD0,0x07,0x07,0x24,0x07,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0xF8,0x68,0x84,0x24,0x30,0x01,0x26,0x8E, - 0x00,0x00,0x00,0x00,0x97,0x39,0xC0,0x0C,0x21,0x28,0x80,0x02, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x28,0x00,0x45,0x8E, - 0x04,0x00,0x44,0x8E,0x00,0x00,0x00,0x00,0x0C,0x3D,0xC0,0x0C, - 0x02,0x00,0xA5,0x34,0x2C,0x00,0x51,0x8E,0x44,0x80,0x83,0x8F, - 0x40,0x80,0x84,0x8F,0x64,0x00,0x02,0x24,0x00,0x00,0x20,0xA6, - 0x02,0x00,0x20,0xA6,0x04,0x00,0x20,0xAE,0x08,0x00,0x20,0xAE, - 0x0C,0x00,0x20,0xAE,0x10,0x00,0x20,0xAE,0x18,0x00,0x20,0xAE, - 0x14,0x00,0x20,0xAE,0x1C,0x00,0x20,0xAE,0x20,0x00,0x20,0xAE, - 0x24,0x00,0x22,0xA6,0x26,0x00,0x22,0xA6,0x24,0x00,0x23,0xA6, - 0x26,0x00,0x24,0xA6,0x24,0x00,0x53,0x8E,0x01,0x00,0x02,0x24, - 0x00,0x00,0x62,0xAE,0x2C,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x62,0xAE,0x28,0x00,0x43,0x8E,0x74,0x00,0x02,0x3C, - 0x00,0x00,0x62,0xAC,0x28,0x00,0x43,0x8E,0x24,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x08,0x00,0x62,0xAC,0x08,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xAC,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x0A,0x00,0x40,0x10,0x21,0x80,0x00,0x00, - 0xD0,0x07,0x02,0x2A,0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14,0x01,0x00,0x10,0x26, - 0x00,0x00,0x62,0x8E,0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x10, - 0x21,0x20,0x20,0x02,0x01,0x83,0x04,0x3C,0x3C,0x69,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x80,0x02,0x21,0x20,0x20,0x02, - 0x08,0x00,0x05,0x24,0x00,0x00,0x22,0x96,0x08,0x00,0x06,0x24, - 0x00,0xF0,0x42,0x30,0x00,0x06,0x42,0x34,0x02,0x00,0x22,0xA6, - 0x08,0x00,0x42,0x8E,0xD0,0x07,0x07,0x24,0x41,0x3D,0xC0,0x0C, - 0x00,0x00,0x40,0xAC,0x06,0x00,0x40,0x14,0x02,0x00,0x24,0x26, - 0x01,0x83,0x04,0x3C,0x90,0x69,0x84,0x24,0x97,0x39,0xC0,0x0C, - 0x21,0x28,0x80,0x02,0x02,0x00,0x24,0x26,0x21,0x28,0x00,0x00, - 0x00,0x00,0x22,0x96,0x21,0x30,0x00,0x00,0x00,0xF0,0x42,0x30, - 0x02,0x00,0x22,0xA6,0x08,0x00,0x42,0x8E,0xD0,0x07,0x07,0x24, - 0x41,0x3D,0xC0,0x0C,0x00,0x00,0x40,0xAC,0x04,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0xE8,0x69,0x84,0x24,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x6C,0x00,0x50,0x8E,0x00,0x80,0x02,0x34,0x00,0x00,0x00,0xA6, - 0x02,0x00,0x02,0xA6,0x2C,0x00,0x42,0x8E,0x00,0x20,0x05,0x24, - 0x04,0x00,0x50,0xAC,0x2C,0x00,0x43,0x8E,0x00,0xF1,0x02,0x34, - 0x02,0x00,0x62,0xA4,0x08,0x00,0x42,0x8E,0x00,0x20,0x06,0x24, - 0x00,0x00,0x40,0xAC,0x2C,0x00,0x44,0x8E,0x00,0x00,0x00,0x00, - 0x41,0x3D,0xC0,0x0C,0xD0,0x07,0x07,0x24,0x0C,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x45,0x94,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0x00,0x6A,0x84,0x24,0xFE,0xFF,0x04,0x24,0x01,0x83,0x05,0x3C, - 0x1C,0x6A,0xA5,0x24,0x6A,0x09,0xC0,0x0C,0xFD,0x00,0x06,0x24, - 0x6C,0x00,0x50,0x8E,0x02,0x80,0x02,0x34,0x00,0x00,0x00,0xA6, - 0x02,0x00,0x02,0xA6,0x0E,0x00,0x02,0x24,0x08,0x00,0x02,0xA2, - 0xC8,0x00,0x02,0x24,0x09,0x00,0x02,0xA2,0x41,0x00,0x02,0x24, - 0x0A,0x00,0x02,0xA2,0x2E,0x00,0x02,0x24,0x0B,0x00,0x02,0xA2, - 0x5A,0x00,0x02,0x24,0x0C,0x00,0x00,0xA2,0x0D,0x00,0x02,0xA2, - 0xF2,0x00,0x02,0x24,0x0E,0x00,0x00,0xA2,0x0F,0x00,0x02,0xA2, - 0x01,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x08,0x00,0x02,0x24, - 0x11,0x00,0x02,0xA2,0x48,0x80,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x06,0x00,0x40,0x10,0x40,0x00,0x02,0x24,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x28,0x6A,0x84,0x24,0x48,0x80,0x80,0xAF, - 0x40,0x00,0x02,0x24,0x12,0x00,0x02,0xA2,0xFF,0x00,0x02,0x24, - 0x13,0x00,0x02,0xA2,0x3F,0x00,0x02,0x24,0x14,0x00,0x00,0xA2, - 0x15,0x00,0x02,0xA2,0x2C,0x00,0x42,0x8E,0x00,0x20,0x05,0x24, - 0x04,0x00,0x50,0xAC,0x2C,0x00,0x43,0x8E,0x00,0x21,0x02,0x24, - 0x02,0x00,0x62,0xA4,0x08,0x00,0x42,0x8E,0x00,0x20,0x06,0x24, - 0x00,0x00,0x40,0xAC,0x2C,0x00,0x44,0x8E,0x00,0x00,0x00,0x00, - 0x41,0x3D,0xC0,0x0C,0xD0,0x07,0x07,0x24,0x0C,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x45,0x94,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0x00,0x6A,0x84,0x24,0xFD,0xFF,0x04,0x24,0x01,0x83,0x05,0x3C, - 0x1C,0x6A,0xA5,0x24,0x6A,0x09,0xC0,0x0C,0x4E,0x01,0x06,0x24, - 0x2A,0x15,0xC0,0x0C,0x21,0x20,0x40,0x02,0x76,0x0E,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x34,0x00,0xBF,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0xF8,0xFF,0xBD,0x27,0x20,0x84,0x85,0x8F,0x00,0x00,0x00,0x00, - 0x32,0x00,0xA0,0x18,0x21,0x20,0x00,0x00,0x02,0x83,0x03,0x3C, - 0x70,0xD9,0x63,0x24,0x2C,0x00,0x62,0x8C,0x98,0x00,0x60,0xAC, - 0x9C,0x00,0x60,0xAC,0xA0,0x00,0x60,0xAC,0xA4,0x00,0x60,0xAC, - 0xA8,0x00,0x60,0xAC,0xAC,0x00,0x60,0xAC,0xB0,0x00,0x60,0xAC, - 0xB4,0x00,0x60,0xAC,0xB8,0x00,0x60,0xAC,0xBC,0x00,0x60,0xAC, - 0xC0,0x00,0x60,0xAC,0xC4,0x00,0x60,0xAC,0xC8,0x00,0x60,0xAC, - 0xCC,0x00,0x60,0xAC,0xD0,0x00,0x60,0xAC,0xD4,0x00,0x60,0xAC, - 0xD8,0x00,0x60,0xAC,0xE0,0x00,0x60,0xAC,0xE8,0x00,0x60,0xAC, - 0xEC,0x00,0x60,0xAC,0xF0,0x00,0x60,0xAC,0xF4,0x00,0x60,0xAC, - 0xF8,0x00,0x60,0xAC,0xFC,0x00,0x60,0xAC,0x00,0x01,0x60,0xAC, - 0x04,0x01,0x60,0xAC,0x08,0x01,0x60,0xAC,0x0C,0x00,0x40,0xAC, - 0x2C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0xAC, - 0x2C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x18,0x00,0x40,0xAC, - 0x2C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x14,0x00,0x40,0xAC, - 0x2C,0x00,0x62,0x8C,0x01,0x00,0x84,0x24,0x1C,0x00,0x40,0xAC, - 0x2C,0x00,0x62,0x8C,0x00,0x02,0x63,0x24,0x20,0x00,0x40,0xAC, - 0x2A,0x10,0x85,0x00,0xD2,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x21,0x20,0x00,0x00,0x00,0xA3,0x03,0x3C,0x00,0x01,0x63,0x34, - 0x20,0x00,0x05,0x24,0x21,0x10,0x83,0x00,0xBC,0x00,0x45,0xA0, - 0x01,0x00,0x84,0x24,0x00,0x02,0x82,0x2C,0xFB,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x08,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x6C,0x84,0x82,0x8F,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x11,0x00,0x40,0x14,0x10,0x00,0xB0,0xAF,0xD0,0x07,0x10,0x24, - 0x07,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x97,0x3A,0xC0,0x0C, - 0xFF,0xFF,0x10,0x26,0x6C,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0xF9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x16, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0x40,0x6A,0x84,0x24,0x29,0x0D,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xE4,0x3A,0xC0,0x0C,0x21,0x20,0x00,0x00,0x21,0x20,0x40,0x00, - 0x6C,0x84,0x90,0x8F,0x70,0x84,0x82,0x8F,0x04,0x00,0x03,0x8E, - 0xFF,0xFF,0x42,0x24,0x70,0x84,0x82,0xAF,0x6C,0x84,0x83,0xAF, - 0xE4,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x02, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x50,0x84,0x82,0x8F, - 0x21,0x28,0x80,0x00,0x2B,0x10,0xA2,0x00,0x06,0x00,0x40,0x14, - 0x10,0x00,0xBF,0xAF,0x54,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xA2,0x00,0x06,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x64,0x6A,0x84,0x24, - 0x43,0x0D,0xC0,0x08,0x00,0x00,0x00,0x00,0x6C,0x84,0x83,0x8F, - 0x70,0x84,0x82,0x8F,0x6C,0x84,0x85,0xAF,0x01,0x00,0x42,0x24, - 0x04,0x00,0xA3,0xAC,0x70,0x84,0x82,0xAF,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x5C,0x84,0x82,0x8F,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x11,0x00,0x40,0x14,0x10,0x00,0xB0,0xAF,0xD0,0x07,0x10,0x24, - 0x07,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x97,0x3A,0xC0,0x0C, - 0xFF,0xFF,0x10,0x26,0x5C,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0xF9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x16, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0x84,0x6A,0x84,0x24,0x68,0x0D,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xE4,0x3A,0xC0,0x0C,0x21,0x20,0x00,0x00,0x21,0x20,0x40,0x00, - 0x5C,0x84,0x90,0x8F,0x68,0x84,0x82,0x8F,0x00,0x00,0x03,0x8E, - 0xFF,0xFF,0x42,0x24,0x68,0x84,0x82,0xAF,0x5C,0x84,0x83,0xAF, - 0xE4,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x02, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x58,0x84,0x82,0x8F, - 0x21,0x28,0x80,0x00,0x2B,0x10,0xA2,0x00,0x06,0x00,0x40,0x14, - 0x10,0x00,0xBF,0xAF,0x60,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xA2,0x00,0x06,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0xA8,0x6A,0x84,0x24, - 0x83,0x0D,0xC0,0x08,0x00,0x00,0x00,0x00,0x5C,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x00,0x00,0xA2,0xAC,0x68,0x84,0x82,0x8F, - 0x5C,0x84,0x85,0xAF,0x01,0x00,0x42,0x24,0x68,0x84,0x82,0xAF, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x10,0x00,0xB0,0xAF,0x6C,0x84,0x80,0xAF,0x8B,0x09,0xC0,0x0C, - 0x00,0x20,0x04,0x24,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0xFF,0x01,0x10,0x24,0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0x50,0x84,0x82,0xAF,0x00,0x20,0x42,0x24, - 0x54,0x84,0x82,0xAF,0x00,0x11,0x10,0x00,0x50,0x84,0x84,0x8F, - 0xFF,0xFF,0x10,0x26,0x2D,0x0D,0xC0,0x0C,0x21,0x20,0x82,0x00, - 0xFB,0xFF,0x01,0x06,0x00,0x11,0x10,0x00,0x00,0x02,0x02,0x24, - 0x74,0x84,0x82,0xAF,0x5C,0x84,0x80,0xAF,0x8B,0x09,0xC0,0x0C, - 0x12,0x00,0x04,0x3C,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0xFF,0x11,0x10,0x24,0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0x12,0x00,0x03,0x3C,0x58,0x84,0x82,0xAF, - 0x21,0x10,0x43,0x00,0x60,0x84,0x82,0xAF,0x00,0x12,0x10,0x00, - 0x58,0x84,0x84,0x8F,0xFF,0xFF,0x10,0x26,0x6C,0x0D,0xC0,0x0C, - 0x21,0x20,0x82,0x00,0xFB,0xFF,0x01,0x06,0x00,0x12,0x10,0x00, - 0x00,0x12,0x02,0x24,0x64,0x84,0x82,0xAF,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x02,0x3C,0xA8,0x01,0x42,0x8C,0xD8,0xFF,0xBD,0x27, - 0x1C,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00,0x20,0x00,0xB2,0xAF, - 0x21,0x90,0xA0,0x00,0x24,0x00,0xBF,0xAF,0x11,0x00,0x40,0x10, - 0x18,0x00,0xB0,0xAF,0x00,0xA3,0x02,0x3C,0xA8,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x2A,0x10,0x52,0x00,0x0C,0x00,0x40,0x10, - 0xC0,0x80,0x12,0x00,0x00,0x00,0x22,0x8E,0x00,0xA3,0x12,0x3C, - 0xA8,0x01,0x52,0x8E,0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x14, - 0xC0,0x80,0x12,0x00,0x01,0x83,0x04,0x3C,0xD0,0x6A,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x40,0x02,0xC0,0x80,0x12,0x00, - 0x23,0x80,0x12,0x02,0x80,0x80,0x10,0x00,0x8B,0x09,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x21,0x20,0x00,0x00,0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0x70,0x00,0x22,0xAE,0x70,0x00,0x23,0x8E, - 0x21,0x10,0x50,0x00,0x0F,0x00,0x40,0x1A,0x74,0x00,0x22,0xAE, - 0x08,0x00,0x05,0x24,0x01,0x00,0x84,0x24,0x1C,0x00,0x62,0x24, - 0x04,0x00,0x62,0xAC,0x02,0x00,0x65,0xA4,0x00,0x00,0x60,0xA4, - 0x08,0x00,0x60,0xAC,0x0E,0x00,0x60,0xA4,0x0C,0x00,0x60,0xA4, - 0x21,0x18,0x40,0x00,0x2A,0x10,0x92,0x00,0xF6,0xFF,0x40,0x14, - 0x01,0x00,0x84,0x24,0xFF,0xFF,0x84,0x24,0x74,0x00,0x23,0x8E, - 0x70,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0xE8,0xFF,0x62,0xAC, - 0x74,0x00,0x23,0x8E,0x00,0x00,0x00,0x00,0xCA,0xFF,0x62,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x34,0xCA,0xFF,0x62,0xA4, - 0x74,0x00,0x23,0x8E,0x00,0x00,0x00,0x00,0xE6,0xFF,0x62,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x34,0xE6,0xFF,0x62,0xA4, - 0x74,0x00,0x22,0x8E,0x70,0x00,0x23,0x8E,0xC8,0xFF,0x42,0x24, - 0x78,0x00,0x23,0xAE,0x7C,0x00,0x22,0xAE,0x24,0x00,0xBF,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27, - 0x20,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x00,0x01,0x02,0x24, - 0x30,0x00,0xBF,0xAF,0x2C,0x00,0xB5,0xAF,0x28,0x00,0xB4,0xAF, - 0x24,0x00,0xB3,0xAF,0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF, - 0x90,0x00,0x42,0xAE,0x00,0xA3,0x02,0x3C,0xAC,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x10,0x21,0xA0,0xA0,0x00, - 0x00,0xA3,0x02,0x3C,0xAC,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x2A,0x10,0x54,0x00,0x0C,0x00,0x40,0x10,0x80,0x80,0x14,0x00, - 0x00,0x00,0x42,0x8E,0x00,0xA3,0x14,0x3C,0xAC,0x01,0x94,0x8E, - 0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x14,0x80,0x80,0x14,0x00, - 0x01,0x83,0x04,0x3C,0xDC,0x6A,0x84,0x24,0x97,0x39,0xC0,0x0C, - 0x21,0x28,0x80,0x02,0x80,0x80,0x14,0x00,0x21,0x80,0x14,0x02, - 0x80,0x80,0x10,0x00,0x21,0x20,0x00,0x02,0x8B,0x09,0xC0,0x0C, - 0x94,0x00,0x54,0xAE,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x21,0x98,0x00,0x00,0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0x80,0x00,0x42,0xAE,0x80,0x00,0x51,0x8E, - 0x21,0x10,0x50,0x00,0x0F,0x00,0x80,0x1A,0x84,0x00,0x42,0xAE, - 0x00,0x01,0x15,0x24,0x14,0x00,0x30,0x26,0x04,0x00,0x30,0xAE, - 0x47,0x0D,0xC0,0x0C,0x00,0x00,0x20,0xAE,0x08,0x00,0x22,0xAE, - 0x0C,0x00,0x35,0xAE,0x00,0x00,0x42,0x8E,0x01,0x00,0x73,0x26, - 0x10,0x00,0x22,0xA2,0x11,0x00,0x20,0xA2,0x2A,0x10,0x74,0x02, - 0xF4,0xFF,0x40,0x14,0x21,0x88,0x00,0x02,0x84,0x00,0x43,0x8E, - 0x80,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0xF0,0xFF,0x62,0xAC, - 0x84,0x00,0x43,0x8E,0x00,0x00,0x00,0x00,0xE4,0xFF,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x34,0xE4,0xFF,0x62,0xAC, - 0x84,0x00,0x43,0x8E,0x00,0x00,0x00,0x00,0xF8,0xFF,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x34,0xF8,0xFF,0x62,0xAC, - 0x84,0x00,0x42,0x8E,0x80,0x00,0x43,0x8E,0xD8,0xFF,0x42,0x24, - 0x88,0x00,0x43,0xAE,0x8C,0x00,0x42,0xAE,0x30,0x00,0xBF,0x8F, - 0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0x98,0x00,0x80,0xAC, - 0x9C,0x00,0x80,0xAC,0xA0,0x00,0x80,0xAC,0xA4,0x00,0x80,0xAC, - 0xA8,0x00,0x80,0xAC,0xFC,0x00,0x80,0xAC,0x00,0x01,0x80,0xAC, - 0x98,0x00,0x80,0xAC,0x08,0x00,0xE0,0x03,0xD8,0x00,0x80,0xAC, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x14,0x00,0xBF,0xAF, - 0x6C,0x0E,0xC0,0x0C,0x21,0x80,0x80,0x00,0x21,0x20,0x00,0x02, - 0xBC,0x0D,0xC0,0x0C,0x00,0x04,0x05,0x24,0x21,0x20,0x00,0x02, - 0x0F,0x0E,0xC0,0x0C,0x80,0x02,0x05,0x24,0x78,0x00,0x03,0x8E, - 0x88,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x08,0x00,0x62,0xAC, - 0x2C,0x00,0x03,0x8E,0x78,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x08,0x00,0x62,0xAC,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x42,0x24,0x06,0x00,0x42,0x2C,0x07,0x00,0x40,0x10, - 0x10,0x00,0x03,0x24,0x2C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x02,0x00,0x43,0xA4,0x08,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0xAC,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xB8,0xFF,0xBD,0x27, - 0x00,0x20,0x06,0x24,0x44,0x00,0xBF,0xAF,0x40,0x00,0xBE,0xAF, - 0x3C,0x00,0xB7,0xAF,0x38,0x00,0xB6,0xAF,0x34,0x00,0xB5,0xAF, - 0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF, - 0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF,0x00,0xA3,0x01,0x3C, - 0xFC,0x05,0x26,0xAC,0x8B,0x09,0xC0,0x0C,0x00,0x20,0x04,0x24, - 0xFF,0x1F,0x04,0x3C,0xFF,0xFF,0x84,0x34,0x21,0xA8,0x00,0x00, - 0xFF,0x1F,0x06,0x3C,0xFF,0xFF,0xC6,0x34,0x02,0x83,0x03,0x3C, - 0x84,0xDA,0x63,0x24,0x10,0x00,0x65,0x24,0x08,0x00,0x7E,0x24, - 0xF8,0xFF,0x77,0x24,0x21,0xB0,0x60,0x00,0x24,0x10,0x44,0x00, - 0x00,0xA0,0x03,0x3C,0x25,0x10,0x43,0x00,0x10,0x00,0xA6,0xAF, - 0x00,0xA3,0x01,0x3C,0xF8,0x05,0x22,0xAC,0x00,0xA3,0x01,0x3C, - 0x00,0x06,0x20,0xAC,0x21,0xA0,0x00,0x00,0x21,0x80,0xE0,0x02, - 0x21,0x98,0xA0,0x00,0x21,0x90,0xC0,0x03,0x21,0x88,0xC0,0x02, - 0x20,0x84,0x82,0x8F,0x00,0x00,0x20,0xAE,0x00,0x00,0x00,0xAE, - 0x00,0x00,0x40,0xAE,0x2A,0x10,0xA2,0x02,0x0A,0x00,0x40,0x10, - 0x00,0x00,0x60,0xAE,0x00,0x20,0x04,0x24,0x8B,0x09,0xC0,0x0C, - 0x18,0x00,0xA5,0xAF,0x10,0x00,0xA6,0x8F,0x00,0x80,0x03,0x3C, - 0x24,0x10,0x46,0x00,0x25,0x10,0x43,0x00,0x00,0x00,0x02,0xAE, - 0x18,0x00,0xA5,0x8F,0x04,0x00,0x10,0x26,0x04,0x00,0x73,0x26, - 0x04,0x00,0x52,0x26,0x01,0x00,0x94,0x26,0x02,0x00,0x82,0x2A, - 0xEA,0xFF,0x40,0x14,0x04,0x00,0x31,0x26,0x00,0x02,0xA5,0x24, - 0x00,0x02,0xDE,0x27,0x00,0x02,0xF7,0x26,0x01,0x00,0xB5,0x26, - 0x07,0x00,0xA2,0x2A,0xDE,0xFF,0x40,0x14,0x00,0x02,0xD6,0x26, - 0x44,0x00,0xBF,0x8F,0x40,0x00,0xBE,0x8F,0x3C,0x00,0xB7,0x8F, - 0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x48,0x00,0xBD,0x27, - 0x00,0xA3,0x04,0x3C,0x00,0x06,0x84,0x8C,0x00,0xA3,0x03,0x3C, - 0x08,0x06,0x63,0x8C,0x20,0x84,0x82,0x8F,0xE0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x00,0xA3,0x10,0x3C,0x0C,0x06,0x10,0x8E, - 0x14,0x00,0xB1,0xAF,0x00,0xA3,0x11,0x3C,0x04,0x06,0x31,0x8E, - 0x2B,0x10,0x62,0x00,0x2A,0x00,0x40,0x10,0x18,0x00,0xBF,0xAF, - 0x02,0x00,0x02,0x2E,0x28,0x00,0x40,0x10,0xFF,0xFF,0x02,0x24, - 0x00,0xA3,0x02,0x3C,0xFC,0x05,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x51,0x00,0x22,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x40,0x12,0x03,0x00,0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24, - 0x21,0x18,0x43,0x00,0x01,0x00,0x02,0x24,0x05,0x00,0x82,0x10, - 0x02,0x00,0x02,0x24,0x12,0x00,0x82,0x10,0x80,0x10,0x10,0x00, - 0x20,0x0F,0xC0,0x08,0x00,0x00,0x00,0x00,0x80,0x80,0x10,0x00, - 0x21,0x80,0x03,0x02,0x0C,0x01,0x04,0x8E,0x00,0xA3,0x05,0x3C, - 0xF8,0x05,0xA5,0x8C,0x21,0x30,0x20,0x02,0x10,0x3E,0xC0,0x0C, - 0x24,0x01,0x11,0xAE,0x0C,0x01,0x04,0x8E,0x0C,0x01,0x02,0x8E, - 0x21,0x28,0x20,0x02,0x32,0x3E,0xC0,0x0C,0x14,0x01,0x02,0xAE, - 0x20,0x0F,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x14,0x01,0x40,0xAC,0x24,0x01,0x40,0xAC,0x00,0xA3,0x01,0x3C, - 0x26,0x0F,0xC0,0x08,0x00,0x06,0x20,0xAC,0xFF,0xFF,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0x00,0x06,0x22,0xAC,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xA0,0x84,0x88,0x8F,0xAC,0x84,0x89,0x8F, - 0xE8,0xFF,0xBD,0x27,0x03,0x00,0x00,0x15,0x10,0x00,0xBF,0xAF, - 0x82,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0xC2,0x94, - 0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00, - 0x25,0x38,0x62,0x00,0xFF,0xFF,0xE3,0x30,0xDD,0x05,0x62,0x2C, - 0x2A,0x00,0x40,0x14,0xAA,0xAA,0x02,0x34,0x00,0x08,0x02,0x24, - 0x17,0x00,0x62,0x14,0x06,0x08,0x02,0x24,0x15,0x00,0x00,0x11, - 0x00,0x00,0x00,0x00,0x20,0x00,0xC2,0x94,0x1E,0x00,0xC3,0x94, - 0x00,0x14,0x02,0x00,0x25,0x38,0x43,0x00,0x24,0x00,0xC3,0x94, - 0x00,0xA1,0x02,0x34,0x05,0x00,0x62,0x10,0x08,0x00,0x02,0x24, - 0x22,0x00,0xC3,0x94,0x00,0x00,0x00,0x00,0x68,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x03,0x00,0xE8,0x10,0xFF,0xFF,0x02,0x24, - 0x64,0x00,0xE2,0x14,0x00,0x00,0x00,0x00,0xA0,0x2C,0xC0,0x0C, - 0x0E,0x00,0x06,0x24,0xB3,0x0F,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x0D,0x00,0x62,0x14,0xFF,0xFF,0xE3,0x30,0x4D,0x00,0x00,0x11, - 0x37,0x81,0x02,0x34,0x20,0x00,0xC2,0x94,0x1E,0x00,0xC3,0x94, - 0x00,0x14,0x02,0x00,0x25,0x10,0x43,0x00,0x56,0x00,0x48,0x14, - 0x00,0x00,0x00,0x00,0x47,0x14,0xC0,0x0C,0x0E,0x00,0x06,0x24, - 0xB3,0x0F,0xC0,0x08,0x00,0x00,0x00,0x00,0xA4,0x0F,0xC0,0x08, - 0x37,0x81,0x02,0x34,0x0E,0x00,0xC3,0x94,0x00,0x00,0x00,0x00, - 0x3D,0x00,0x62,0x14,0xFF,0xFF,0x02,0x34,0x10,0x00,0xC3,0x90, - 0x03,0x00,0x02,0x24,0x37,0x00,0x62,0x14,0xFF,0xFF,0x02,0x34, - 0x14,0x00,0xC2,0x94,0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00, - 0x02,0x12,0x02,0x00,0x25,0x38,0x62,0x00,0xFF,0xFF,0xE3,0x30, - 0x00,0x08,0x02,0x24,0x17,0x00,0x62,0x14,0x06,0x08,0x02,0x24, - 0x15,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x28,0x00,0xC2,0x94, - 0x26,0x00,0xC3,0x94,0x00,0x14,0x02,0x00,0x25,0x38,0x43,0x00, - 0x2C,0x00,0xC3,0x94,0x00,0xA1,0x02,0x34,0x05,0x00,0x62,0x10, - 0x08,0x00,0x02,0x24,0x2A,0x00,0xC3,0x94,0x00,0x00,0x00,0x00, - 0x31,0x00,0x62,0x14,0x00,0x00,0x00,0x00,0x03,0x00,0xE8,0x10, - 0xFF,0xFF,0x02,0x24,0x2D,0x00,0xE2,0x14,0x00,0x00,0x00,0x00, - 0xA0,0x2C,0xC0,0x0C,0x16,0x00,0x06,0x24,0xB3,0x0F,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x07,0x00,0x62,0x14,0xFF,0xFF,0xE3,0x30, - 0x06,0x00,0x00,0x11,0x37,0x81,0x02,0x34,0x47,0x14,0xC0,0x0C, - 0x16,0x00,0x06,0x24,0xB3,0x0F,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x37,0x81,0x02,0x34,0x1E,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x1C,0x00,0x20,0x11,0x90,0x0F,0x03,0x24,0x26,0x00,0xC2,0x94, - 0x1C,0x00,0xC6,0x8C,0x18,0x00,0x43,0x14,0x00,0x00,0x00,0x00, - 0x03,0x00,0xC9,0x10,0x00,0x00,0x00,0x00,0x14,0x00,0xC0,0x14, - 0x00,0x00,0x00,0x00,0xB1,0x0F,0xC0,0x08,0x16,0x00,0x06,0x24, - 0x0E,0x00,0xC3,0x94,0x00,0x00,0x00,0x00,0x0E,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x20,0x11,0x90,0x0F,0x03,0x24, - 0x1E,0x00,0xC2,0x94,0x14,0x00,0xC6,0x8C,0x08,0x00,0x43,0x14, - 0x00,0x00,0x00,0x00,0x03,0x00,0xC9,0x10,0x00,0x00,0x00,0x00, - 0x04,0x00,0xC0,0x14,0x00,0x00,0x00,0x00,0x0E,0x00,0x06,0x24, - 0xAB,0x2E,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x80,0xFF,0xBD,0x27,0x74,0x00,0xB7,0xAF,0x21,0xB8,0x80,0x00, - 0x03,0x00,0x03,0x24,0x7C,0x00,0xBF,0xAF,0x78,0x00,0xBE,0xAF, - 0x70,0x00,0xB6,0xAF,0x6C,0x00,0xB5,0xAF,0x68,0x00,0xB4,0xAF, - 0x64,0x00,0xB3,0xAF,0x60,0x00,0xB2,0xAF,0x5C,0x00,0xB1,0xAF, - 0x58,0x00,0xB0,0xAF,0x00,0x00,0xF6,0x8E,0x08,0x00,0xB2,0x8C, - 0xC0,0x11,0x16,0x00,0x03,0x83,0x04,0x3C,0x21,0x20,0x82,0x00, - 0xC4,0xEF,0x84,0x8C,0x08,0x00,0x54,0x8E,0x00,0x00,0x00,0x00, - 0x3B,0x00,0x83,0x10,0x05,0x00,0x82,0x2C,0x39,0x00,0x40,0x10, - 0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x48,0x6B,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x30,0x00,0x40,0x10,0x06,0x00,0x84,0x26,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x5C,0x01,0x80,0x10,0x21,0x20,0xC0,0x02, - 0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02,0x43,0x11,0xC0,0x08, - 0x21,0x20,0x40,0x02,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x1B,0x00,0x40,0x10,0x06,0x00,0x84,0x26,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x05,0x00,0x80,0x10,0x21,0x20,0xC0,0x02, - 0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02,0x43,0x11,0xC0,0x08, - 0x21,0x20,0x40,0x02,0x06,0x00,0x84,0x26,0x00,0xA3,0x06,0x3C, - 0x8C,0x01,0xC6,0x8C,0x00,0x00,0x00,0x00,0x33,0x18,0xC0,0x0C, - 0x21,0x28,0xC0,0x02,0x43,0x11,0xC0,0x08,0x21,0x20,0x40,0x02, - 0x06,0x00,0x84,0x26,0x00,0xA3,0x06,0x3C,0x8C,0x01,0xC6,0x8C, - 0x00,0x00,0x00,0x00,0x33,0x18,0xC0,0x0C,0x21,0x28,0xC0,0x02, - 0x14,0x01,0xE2,0x8E,0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0x10, - 0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27,0x06,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x1C,0x01,0xE2,0x8E,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x43,0x11,0xC0,0x08,0x1C,0x01,0xE2,0xAE, - 0x0B,0x18,0xC0,0x0C,0x21,0x20,0x80,0x02,0x21,0xF0,0x40,0x00, - 0x9A,0x00,0xC1,0x07,0x07,0x00,0x02,0x24,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x09,0x00,0x80,0x10,0xFF,0xFF,0x02,0x24, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x10,0x01,0x40,0x10, - 0x21,0x20,0xC0,0x02,0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02, - 0x43,0x11,0xC0,0x08,0x21,0x20,0x40,0x02,0x0A,0x00,0xC2,0x17, - 0x00,0x00,0x00,0x00,0x08,0x00,0xC0,0x12,0x00,0x00,0x00,0x00, - 0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x10, - 0x01,0x00,0x13,0x24,0x40,0x84,0x93,0x8F,0x46,0x10,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x8E,0x40,0x84,0x93,0x8F, - 0x01,0x00,0x42,0x24,0x00,0x01,0xE2,0xAE,0x44,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x23,0x10,0x53,0x00,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0x42,0xA2,0x44,0x84,0x82,0x8F,0x21,0x80,0x60,0x02, - 0x2A,0x10,0x02,0x02,0x0F,0x00,0x40,0x10,0x40,0x12,0x10,0x00, - 0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24,0x21,0x88,0x43,0x00, - 0x05,0x00,0x16,0x12,0x00,0x00,0x00,0x00,0x38,0x16,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0xEE,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0x44,0x84,0x82,0x8F,0x01,0x00,0x10,0x26,0x2A,0x10,0x02,0x02, - 0xF6,0xFF,0x40,0x14,0x00,0x02,0x31,0x26,0x44,0x84,0x82,0x8F, - 0x21,0x80,0x60,0x02,0x2A,0x10,0x02,0x02,0x36,0x00,0x40,0x10, - 0x40,0x12,0x10,0x00,0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24, - 0x21,0x98,0x43,0x00,0x21,0x88,0x40,0x00,0xC0,0xA9,0x10,0x00, - 0x28,0x00,0x16,0x12,0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x51,0x00,0x88,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x40,0x10,0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27, - 0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x51,0x00,0x90,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x8C,0x10,0xC0,0x08,0x20,0x01,0x62,0xAE, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10, - 0x03,0x00,0x07,0x24,0x03,0x83,0x02,0x3C,0x21,0x10,0x55,0x00, - 0xC4,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x06,0x00,0x47,0x14, - 0x00,0x00,0x00,0x00,0x21,0x20,0x60,0x02,0x47,0x16,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0x92,0x10,0xC0,0x08,0x00,0x02,0x73,0x26, - 0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0x42,0xA2,0x11,0x00,0x42,0x92,0x00,0x02,0x73,0x26, - 0x00,0x02,0x31,0x26,0x44,0x84,0x82,0x8F,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x02,0x02,0xD1,0xFF,0x40,0x14,0x80,0x00,0xB5,0x26, - 0x0C,0x00,0x82,0x96,0x08,0x06,0x04,0x24,0x07,0x00,0x44,0x14, - 0xAA,0xAA,0x03,0x3C,0x21,0x20,0xE0,0x02,0x21,0x28,0x40,0x02, - 0x47,0x14,0xC0,0x0C,0x0E,0x00,0x06,0x24,0xB5,0x10,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x82,0x8E,0x00,0x2E,0x63,0x34, - 0x0B,0x00,0x43,0x14,0xFE,0xFF,0x02,0x24,0x14,0x00,0x82,0x96, - 0x00,0x00,0x00,0x00,0x07,0x00,0x44,0x14,0xFE,0xFF,0x02,0x24, - 0x21,0x20,0xE0,0x02,0x21,0x28,0x40,0x02,0x47,0x14,0xC0,0x0C, - 0x16,0x00,0x06,0x24,0xB5,0x10,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x04,0x00,0xC2,0x17,0x21,0x20,0xE0,0x02,0x21,0x28,0x40,0x02, - 0x2B,0x0F,0xC0,0x0C,0x21,0x30,0x80,0x02,0x11,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0x8B,0x00,0x40,0x10,0x21,0x20,0x40,0x02, - 0x3A,0x11,0xC0,0x08,0x00,0x00,0x00,0x00,0x1A,0x00,0xC2,0x17, - 0x00,0x00,0x00,0x00,0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x40,0x10,0x21,0x20,0xE0,0x02,0x09,0x00,0xC0,0x12, - 0x01,0x00,0x02,0x24,0x11,0x00,0x42,0xA2,0x02,0x83,0x04,0x3C, - 0x70,0xD9,0x84,0x24,0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0x7D,0x00,0x40,0x10,0x21,0x10,0x00,0x00,0x21,0x20,0xE0,0x02, - 0x21,0x28,0x40,0x02,0x2B,0x0F,0xC0,0x0C,0x21,0x30,0x80,0x02, - 0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x72,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x73,0x00,0xC0,0x16,0x01,0x00,0x02,0x24, - 0x43,0x11,0xC0,0x08,0x00,0x00,0x00,0x00,0x56,0x00,0xD6,0x13, - 0x40,0x82,0x1E,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x88,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x10, - 0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27,0x0B,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x02,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x90,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x90,0xDA,0x22,0xAC, - 0x43,0x11,0xC0,0x08,0x11,0x00,0x80,0xA0,0x24,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x29,0x00,0xC0,0x13,0x00,0x00,0x00,0x00,0x27,0x00,0xC0,0x12, - 0x40,0x12,0x1E,0x00,0x02,0x83,0x10,0x3C,0x70,0xD9,0x10,0x26, - 0x21,0x88,0x50,0x00,0x38,0x16,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x4A,0x00,0x40,0x10,0x21,0x10,0x00,0x00,0x38,0x16,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x3F,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x11,0x00,0x42,0xA2,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x10,0xC0,0x11,0x1E,0x00,0x03,0x83,0x03,0x3C, - 0x21,0x18,0x62,0x00,0xC4,0xEF,0x63,0x8C,0x03,0x00,0x02,0x24, - 0x06,0x00,0x62,0x14,0x00,0x00,0x00,0x00,0x21,0x20,0x20,0x02, - 0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02,0x16,0x11,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x42,0x24,0x11,0x00,0x42,0xA2,0x11,0x00,0x42,0x92, - 0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24,0x47,0x16,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0x3A,0x11,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10, - 0xC0,0x11,0x1E,0x00,0x03,0x83,0x03,0x3C,0x21,0x18,0x62,0x00, - 0xC4,0xEF,0x63,0x8C,0x03,0x00,0x02,0x24,0x1C,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24,0x11,0x00,0x42,0xA2, - 0x40,0x12,0x1E,0x00,0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24, - 0x36,0x11,0xC0,0x08,0x21,0x20,0x44,0x00,0x24,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x0F,0x00,0xC0,0x13,0x01,0x00,0x02,0x24,0x11,0x00,0x42,0xA2, - 0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24,0x47,0x16,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0x0D,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0xFC,0x00,0xE2,0x8E,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x45,0x11,0xC0,0x08,0xFC,0x00,0xE2,0xAE,0x46,0x11,0xC0,0x08, - 0x21,0x10,0x00,0x00,0x11,0x00,0x40,0xA2,0x21,0x20,0x40,0x02, - 0xE4,0x14,0xC0,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24, - 0x7C,0x00,0xBF,0x8F,0x78,0x00,0xBE,0x8F,0x74,0x00,0xB7,0x8F, - 0x70,0x00,0xB6,0x8F,0x6C,0x00,0xB5,0x8F,0x68,0x00,0xB4,0x8F, - 0x64,0x00,0xB3,0x8F,0x60,0x00,0xB2,0x8F,0x5C,0x00,0xB1,0x8F, - 0x58,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x80,0x00,0xBD,0x27, - 0x48,0xFF,0xBD,0x27,0xA4,0x00,0xB5,0xAF,0x21,0xA8,0x80,0x00, - 0xB4,0x00,0xBF,0xAF,0xB0,0x00,0xBE,0xAF,0xAC,0x00,0xB7,0xAF, - 0xA8,0x00,0xB6,0xAF,0xA0,0x00,0xB4,0xAF,0x9C,0x00,0xB3,0xAF, - 0x98,0x00,0xB2,0xAF,0x94,0x00,0xB1,0xAF,0x90,0x00,0xB0,0xAF, - 0x58,0x00,0xA5,0xAF,0x78,0x00,0xA0,0xAF,0x78,0x00,0xA7,0x8E, - 0x00,0x00,0x00,0x00,0x60,0x00,0xA7,0xAF,0x7C,0x00,0xA8,0x8E, - 0x00,0x00,0x00,0x00,0xDB,0x01,0xA0,0x18,0x68,0x00,0xA8,0xAF, - 0x60,0x00,0xA7,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x82,0x30,0xD6,0x01,0x40,0x10, - 0x00,0x00,0x00,0x00,0x80,0x00,0xA0,0xAF,0x08,0x00,0xE2,0x8C, - 0x88,0x00,0xA8,0x8E,0xFF,0xFF,0x07,0x24,0x12,0x00,0x47,0x10, - 0x70,0x00,0xA8,0xAF,0x70,0x00,0xA8,0x8F,0x00,0x00,0x00,0x00, - 0x00,0x00,0x03,0x8D,0x04,0x00,0x07,0x8D,0x80,0x00,0xA8,0x8F, - 0xFF,0x3F,0x62,0x30,0x21,0x40,0x02,0x01,0x00,0x80,0x63,0x30, - 0x70,0x00,0xA7,0xAF,0xF6,0xFF,0x60,0x10,0x80,0x00,0xA8,0xAF, - 0x60,0x00,0xA7,0x8F,0x00,0x00,0x00,0x00,0x08,0x00,0xE2,0x8C, - 0x80,0x00,0xA8,0x97,0x00,0x00,0x00,0x00,0x12,0x00,0x48,0xA4, - 0x00,0x20,0x82,0x30,0x94,0x01,0x40,0x10,0x03,0x00,0x08,0x24, - 0x00,0x00,0xBE,0x8E,0x60,0x00,0xA7,0x8F,0xC0,0x11,0x1E,0x00, - 0x08,0x00,0xF2,0x8C,0x03,0x83,0x03,0x3C,0x21,0x18,0x62,0x00, - 0xC4,0xEF,0x63,0x8C,0x08,0x00,0x54,0x8E,0x00,0x00,0x00,0x00, - 0x3B,0x00,0x68,0x10,0x05,0x00,0x62,0x2C,0x39,0x00,0x40,0x10, - 0x80,0x10,0x03,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x60,0x6B,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x30,0x00,0x40,0x10,0x06,0x00,0x84,0x26,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x5D,0x01,0x80,0x10,0x21,0x20,0xC0,0x03, - 0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02,0x09,0x13,0xC0,0x08, - 0x21,0x20,0x40,0x02,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x1B,0x00,0x40,0x10,0x06,0x00,0x84,0x26,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x05,0x00,0x80,0x10,0x21,0x20,0xC0,0x03, - 0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02,0x09,0x13,0xC0,0x08, - 0x21,0x20,0x40,0x02,0x06,0x00,0x84,0x26,0x00,0xA3,0x06,0x3C, - 0x8C,0x01,0xC6,0x8C,0x00,0x00,0x00,0x00,0x33,0x18,0xC0,0x0C, - 0x21,0x28,0xC0,0x03,0x09,0x13,0xC0,0x08,0x21,0x20,0x40,0x02, - 0x06,0x00,0x84,0x26,0x00,0xA3,0x06,0x3C,0x8C,0x01,0xC6,0x8C, - 0x00,0x00,0x00,0x00,0x33,0x18,0xC0,0x0C,0x21,0x28,0xC0,0x03, - 0x14,0x01,0xA2,0x8E,0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0x10, - 0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27,0x06,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x1C,0x01,0xA2,0x8E,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x09,0x13,0xC0,0x08,0x1C,0x01,0xA2,0xAE, - 0x0B,0x18,0xC0,0x0C,0x21,0x20,0x80,0x02,0x21,0xB8,0x40,0x00, - 0x9A,0x00,0xE1,0x06,0x07,0x00,0x02,0x24,0x04,0x00,0x83,0x96, - 0x02,0x83,0x02,0x3C,0x14,0xB3,0x42,0x94,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x21,0x20,0x00,0x00,0x00,0x00,0x82,0x8E, - 0x20,0x81,0x83,0x8F,0x00,0x00,0x00,0x00,0x26,0x10,0x43,0x00, - 0x01,0x00,0x44,0x2C,0x09,0x00,0x80,0x10,0xFF,0xFF,0x07,0x24, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x11,0x01,0x40,0x10, - 0x21,0x20,0xC0,0x03,0xAA,0x29,0xC0,0x0C,0x21,0x28,0x80,0x02, - 0x09,0x13,0xC0,0x08,0x21,0x20,0x40,0x02,0x0A,0x00,0xE7,0x16, - 0x00,0x00,0x00,0x00,0x08,0x00,0xC0,0x13,0x00,0x00,0x00,0x00, - 0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x10, - 0x01,0x00,0x13,0x24,0x40,0x84,0x93,0x8F,0x0B,0x12,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x01,0xA2,0x8E,0x40,0x84,0x93,0x8F, - 0x01,0x00,0x42,0x24,0x00,0x01,0xA2,0xAE,0x44,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x23,0x10,0x53,0x00,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0x42,0xA2,0x44,0x84,0x82,0x8F,0x21,0x80,0x60,0x02, - 0x2A,0x10,0x02,0x02,0x0F,0x00,0x40,0x10,0x40,0x12,0x10,0x00, - 0x02,0x83,0x08,0x3C,0x70,0xD9,0x08,0x25,0x21,0x88,0x48,0x00, - 0x05,0x00,0x1E,0x12,0x00,0x00,0x00,0x00,0x38,0x16,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0xEF,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0x44,0x84,0x82,0x8F,0x01,0x00,0x10,0x26,0x2A,0x10,0x02,0x02, - 0xF6,0xFF,0x40,0x14,0x00,0x02,0x31,0x26,0x44,0x84,0x82,0x8F, - 0x21,0x80,0x60,0x02,0x2A,0x10,0x02,0x02,0x36,0x00,0x40,0x10, - 0x40,0x12,0x10,0x00,0x02,0x83,0x07,0x3C,0x70,0xD9,0xE7,0x24, - 0x21,0x98,0x47,0x00,0x21,0x88,0x40,0x00,0xC0,0xB1,0x10,0x00, - 0x28,0x00,0x1E,0x12,0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x51,0x00,0x88,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x40,0x10,0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27, - 0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x51,0x00,0x90,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x51,0x12,0xC0,0x08,0x20,0x01,0x62,0xAE, - 0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10, - 0x03,0x00,0x08,0x24,0x03,0x83,0x02,0x3C,0x21,0x10,0x56,0x00, - 0xC4,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x06,0x00,0x48,0x14, - 0x00,0x00,0x00,0x00,0x21,0x20,0x60,0x02,0x47,0x16,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0x57,0x12,0xC0,0x08,0x00,0x02,0x73,0x26, - 0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0x42,0xA2,0x11,0x00,0x42,0x92,0x00,0x02,0x73,0x26, - 0x00,0x02,0x31,0x26,0x44,0x84,0x82,0x8F,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x02,0x02,0xD1,0xFF,0x40,0x14,0x80,0x00,0xD6,0x26, - 0x0C,0x00,0x82,0x96,0x08,0x06,0x04,0x24,0x07,0x00,0x44,0x14, - 0xAA,0xAA,0x03,0x3C,0x21,0x20,0xA0,0x02,0x21,0x28,0x40,0x02, - 0x47,0x14,0xC0,0x0C,0x0E,0x00,0x06,0x24,0x7A,0x12,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x82,0x8E,0x00,0x2E,0x63,0x34, - 0x0B,0x00,0x43,0x14,0xFE,0xFF,0x02,0x24,0x14,0x00,0x82,0x96, - 0x00,0x00,0x00,0x00,0x07,0x00,0x44,0x14,0xFE,0xFF,0x02,0x24, - 0x21,0x20,0xA0,0x02,0x21,0x28,0x40,0x02,0x47,0x14,0xC0,0x0C, - 0x16,0x00,0x06,0x24,0x7A,0x12,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x04,0x00,0xE2,0x16,0x21,0x20,0xA0,0x02,0x21,0x28,0x40,0x02, - 0x2B,0x0F,0xC0,0x0C,0x21,0x30,0x80,0x02,0x11,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0x8C,0x00,0x40,0x10,0x21,0x20,0x40,0x02, - 0x00,0x13,0xC0,0x08,0x00,0x00,0x00,0x00,0x1A,0x00,0xE2,0x16, - 0x00,0x00,0x00,0x00,0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x40,0x10,0x21,0x20,0xA0,0x02,0x09,0x00,0xC0,0x13, - 0x01,0x00,0x02,0x24,0x11,0x00,0x42,0xA2,0x02,0x83,0x04,0x3C, - 0x70,0xD9,0x84,0x24,0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0x7E,0x00,0x40,0x10,0x21,0x10,0x00,0x00,0x21,0x20,0xA0,0x02, - 0x21,0x28,0x40,0x02,0x2B,0x0F,0xC0,0x0C,0x21,0x30,0x80,0x02, - 0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x73,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x74,0x00,0xC0,0x17,0x01,0x00,0x02,0x24, - 0x09,0x13,0xC0,0x08,0x00,0x00,0x00,0x00,0x57,0x00,0xFE,0x12, - 0x40,0x82,0x17,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x88,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x10, - 0x21,0x20,0x80,0x02,0x12,0x00,0x45,0x96,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x10,0x00,0xA6,0x27,0x0B,0x00,0x40,0x10, - 0x21,0x20,0x40,0x02,0x02,0x83,0x07,0x3C,0x70,0xD9,0xE7,0x24, - 0x02,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0x90,0xDA,0x42,0x8C, - 0x21,0x18,0x07,0x02,0x01,0x00,0x42,0x24,0x20,0x01,0x62,0xAC, - 0x09,0x13,0xC0,0x08,0x11,0x00,0x80,0xA0,0x24,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x2A,0x00,0xE0,0x12,0x00,0x00,0x00,0x00,0x28,0x00,0xC0,0x13, - 0x40,0x12,0x17,0x00,0x02,0x83,0x08,0x3C,0x70,0xD9,0x08,0x25, - 0x21,0x80,0x48,0x00,0x38,0x16,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x4B,0x00,0x40,0x10,0x21,0x10,0x00,0x00,0x02,0x83,0x04,0x3C, - 0x38,0x16,0xC0,0x0C,0x70,0xD9,0x84,0x24,0x3F,0x00,0x40,0x10, - 0x02,0x00,0x02,0x24,0x11,0x00,0x42,0xA2,0x28,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10,0xC0,0x11,0x17,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0xC4,0xEF,0x22,0x8C, - 0x03,0x00,0x07,0x24,0x06,0x00,0x47,0x14,0x00,0x00,0x00,0x00, - 0x21,0x20,0x00,0x02,0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0xDC,0x12,0xC0,0x08,0x00,0x00,0x00,0x00,0x11,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24,0x11,0x00,0x42,0xA2, - 0x11,0x00,0x42,0x92,0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24, - 0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02,0x00,0x13,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x28,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x10,0xC0,0x11,0x17,0x00,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xC4,0xEF,0x22,0x8C,0x03,0x00,0x08,0x24, - 0x1C,0x00,0x48,0x14,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24, - 0x11,0x00,0x42,0xA2,0x40,0x22,0x17,0x00,0x02,0x83,0x07,0x3C, - 0x70,0xD9,0xE7,0x24,0xFC,0x12,0xC0,0x08,0x21,0x20,0x87,0x00, - 0x24,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x0F,0x00,0xE0,0x12,0x01,0x00,0x02,0x24, - 0x11,0x00,0x42,0xA2,0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24, - 0x47,0x16,0xC0,0x0C,0x21,0x28,0x40,0x02,0x0D,0x00,0x40,0x10, - 0x21,0x10,0x00,0x00,0xFC,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x0B,0x13,0xC0,0x08,0xFC,0x00,0xA2,0xAE, - 0x0C,0x13,0xC0,0x08,0x21,0x10,0x00,0x00,0x11,0x00,0x40,0xA2, - 0x21,0x20,0x40,0x02,0xE4,0x14,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x24,0x34,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x98,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x98,0x00,0xA2,0xAE,0x9C,0x00,0xA2,0x8E,0xA8,0x00,0xA3,0x8E, - 0x01,0x00,0x42,0x24,0x9C,0x00,0xA2,0xAE,0x80,0x00,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x21,0x18,0x68,0x00,0x2A,0x13,0xC0,0x08, - 0xA8,0x00,0xA3,0xAE,0x98,0x00,0xA2,0x8E,0xA0,0x00,0xA3,0x8E, - 0x01,0x00,0x42,0x24,0x01,0x00,0x63,0x24,0x98,0x00,0xA2,0xAE, - 0xA0,0x00,0xA3,0xAE,0x60,0x00,0xA7,0x8F,0x00,0x00,0x00,0x00, - 0x08,0x00,0xE2,0x8C,0xFF,0xFF,0x08,0x24,0x04,0x00,0x48,0x10, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE4,0x8C,0xE4,0x14,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x78,0x00,0xA7,0x8F,0x70,0x00,0xA8,0x8F, - 0x01,0x00,0xE7,0x24,0x78,0x00,0xA7,0xAF,0x88,0x00,0xA8,0xAE, - 0x60,0x00,0xA7,0x8F,0x08,0x80,0x02,0x34,0x00,0x00,0xE0,0xA4, - 0x02,0x00,0xE2,0xA4,0x68,0x00,0xA8,0x8F,0x08,0x00,0x02,0x24, - 0x02,0x00,0x02,0xA5,0x04,0x00,0x07,0x8D,0x60,0x00,0xA8,0x8F, - 0x68,0x00,0xA7,0xAF,0x04,0x00,0x08,0x8D,0x78,0x00,0xA7,0x8F, - 0x60,0x00,0xA8,0xAF,0x58,0x00,0xA8,0x8F,0x00,0x00,0x00,0x00, - 0x2A,0x10,0xE8,0x00,0x27,0xFE,0x40,0x14,0x00,0x00,0x00,0x00, - 0x60,0x00,0xA7,0x8F,0x00,0x00,0x00,0x00,0x78,0x00,0xA7,0xAE, - 0x68,0x00,0xA8,0x8F,0x00,0x00,0x00,0x00,0x7C,0x00,0xA8,0xAE, - 0x2C,0x00,0xA3,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x94, - 0x00,0x00,0x00,0x00,0x00,0x10,0x42,0x30,0x2B,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x02,0x00,0x62,0x94,0x00,0x00,0x00,0x00, - 0x27,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x94, - 0x00,0x00,0x00,0x00,0x23,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x02,0x00,0xE2,0x94,0x08,0x00,0x03,0x24,0xFF,0xFF,0x42,0x30, - 0x1E,0x00,0x43,0x14,0x00,0x00,0x00,0x00,0x88,0x00,0xA2,0x8E, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x30,0x17,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0xA4,0x00,0xA2,0x8E,0x2C,0x00,0xA3,0x8E,0x01,0x00,0x42,0x24, - 0xA4,0x00,0xA2,0xAE,0x08,0x00,0x67,0xAC,0x88,0x00,0xA2,0x8E, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE2,0xAC,0x2C,0x00,0xA3,0x8E, - 0x10,0x10,0x02,0x24,0x02,0x00,0x62,0xA4,0x00,0x00,0xA2,0x8E, - 0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x42,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00,0x78,0x13,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x08,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0xAC,0xB4,0x00,0xBF,0x8F,0xB0,0x00,0xBE,0x8F, - 0xAC,0x00,0xB7,0x8F,0xA8,0x00,0xB6,0x8F,0xA4,0x00,0xB5,0x8F, - 0xA0,0x00,0xB4,0x8F,0x9C,0x00,0xB3,0x8F,0x98,0x00,0xB2,0x8F, - 0x94,0x00,0xB1,0x8F,0x90,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0xB8,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x1C,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x20,0x00,0xB2,0xAF,0x21,0x90,0xA0,0x00, - 0x50,0x80,0x84,0x27,0x06,0x00,0x25,0x26,0x18,0x00,0xB0,0xAF, - 0x58,0x80,0x90,0x27,0x24,0x00,0xBF,0xAF,0xA8,0x13,0xC0,0x0C, - 0x21,0x30,0x00,0x02,0x5C,0x80,0x84,0x27,0x21,0x28,0x20,0x02, - 0xA8,0x13,0xC0,0x0C,0x21,0x30,0x00,0x02,0x0A,0x00,0x40,0x1A, - 0x21,0x80,0x00,0x00,0x64,0x80,0x84,0x27,0x21,0x10,0x11,0x02, - 0x0C,0x00,0x45,0x90,0x00,0x00,0x00,0x00,0x97,0x39,0xC0,0x0C, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x12,0x02,0xF8,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x6C,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x24,0x00,0xBF,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x28,0x00,0xBF,0xAF, - 0x02,0x00,0xA2,0x90,0x00,0x00,0xA3,0x90,0x01,0x00,0xA7,0x90, - 0x10,0x00,0xA2,0xAF,0x03,0x00,0xA2,0x90,0x21,0x40,0x80,0x00, - 0x14,0x00,0xA2,0xAF,0x04,0x00,0xA2,0x90,0x01,0x83,0x04,0x3C, - 0xE8,0x6A,0x84,0x24,0x18,0x00,0xA2,0xAF,0x05,0x00,0xA2,0x90, - 0x21,0x28,0x00,0x01,0x20,0x00,0xA6,0xAF,0x21,0x30,0x60,0x00, - 0x97,0x39,0xC0,0x0C,0x1C,0x00,0xA2,0xAF,0x28,0x00,0xBF,0x8F, - 0x30,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD8,0xFF,0xBD,0x27,0x20,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x21,0x28,0x00,0x00,0x21,0x40,0x00,0x00,0x24,0x00,0xBF,0xAF, - 0x84,0x00,0x03,0x8E,0x80,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x18,0x64,0x00,0x40,0x10,0x03,0x00,0x21,0x10,0x43,0x00, - 0x00,0x19,0x02,0x00,0x21,0x10,0x43,0x00,0x00,0x1A,0x02,0x00, - 0x21,0x10,0x43,0x00,0x00,0x1C,0x02,0x00,0x21,0x10,0x43,0x00, - 0x23,0x10,0x02,0x00,0x83,0x38,0x02,0x00,0x0D,0x00,0xE0,0x18, - 0x21,0x30,0x00,0x00,0x21,0x18,0x80,0x00,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xDD,0x13,0xC0,0x08,0x01,0x00,0xA5,0x24,0x01,0x00,0xC6,0x24, - 0x01,0x00,0x08,0x25,0x2A,0x10,0x07,0x01,0xF6,0xFF,0x40,0x14, - 0x14,0x00,0x63,0x24,0x01,0x83,0x04,0x3C,0x0C,0x6B,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x38,0xA6,0x00,0x21,0x28,0x00,0x00, - 0x21,0x40,0x00,0x00,0x74,0x00,0x04,0x8E,0x70,0x00,0x09,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x20,0x89,0x00,0xC0,0x10,0x04,0x00, - 0x21,0x10,0x44,0x00,0x80,0x19,0x02,0x00,0x21,0x10,0x43,0x00, - 0xC0,0x10,0x02,0x00,0x21,0x10,0x44,0x00,0xC0,0x1B,0x02,0x00, - 0x21,0x10,0x43,0x00,0xC0,0x10,0x02,0x00,0x21,0x10,0x44,0x00, - 0x23,0x10,0x02,0x00,0x83,0x38,0x02,0x00,0x0E,0x00,0xE0,0x18, - 0x21,0x30,0x00,0x00,0x21,0x20,0x20,0x01,0x00,0x00,0x82,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0x03,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x02,0x14,0xC0,0x08,0x01,0x00,0xA5,0x24, - 0x01,0x00,0xC6,0x24,0x01,0x00,0x08,0x25,0x2A,0x10,0x07,0x01, - 0xF5,0xFF,0x40,0x14,0x1C,0x00,0x84,0x24,0x01,0x83,0x04,0x3C, - 0x0C,0x6B,0x84,0x24,0x97,0x39,0xC0,0x0C,0x21,0x38,0xA6,0x00, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xF8,0xFF,0xBD,0x27,0x88,0x00,0x87,0x8C, - 0xFF,0xFF,0xA3,0x24,0x0C,0x00,0xA0,0x10,0x21,0x30,0xE0,0x00, - 0xFF,0xFF,0x05,0x24,0x0C,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x30,0x08,0x00,0x40,0x14,0x21,0x10,0x00,0x00, - 0xFF,0xFF,0x63,0x24,0x00,0x00,0xC0,0xAC,0x04,0x00,0xC6,0x8C, - 0xF7,0xFF,0x65,0x14,0x00,0x00,0x00,0x00,0x88,0x00,0x86,0xAC, - 0x21,0x10,0xE0,0x00,0x08,0x00,0xE0,0x03,0x08,0x00,0xBD,0x27, - 0x24,0x84,0x82,0x8F,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0xA0,0x00,0x18,0x00,0x40,0x10,0x14,0x00,0xBF,0xAF, - 0x00,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x14,0x00,0x40,0x10, - 0x02,0x00,0x02,0x24,0x11,0x00,0x02,0xA2,0x47,0x16,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x13,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0x02,0x83,0x04,0x3C,0x70,0xD9,0x84,0x24,0x47,0x16,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x07,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x43,0x14,0xC0,0x08,0x01,0x00,0x02,0x24,0x01,0x00,0x02,0x24, - 0x11,0x00,0x02,0xA2,0x47,0x16,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x2C,0x00,0xB5,0xAF, - 0x21,0xA8,0x80,0x00,0x00,0xA3,0x03,0x3C,0xDC,0x05,0x63,0x8C, - 0x21,0x38,0xA0,0x00,0x30,0x00,0xBF,0xAF,0x28,0x00,0xB4,0xAF, - 0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x00,0x00,0xE2,0x8C,0x21,0xA0,0xC0,0x00, - 0x13,0x00,0x54,0x14,0x10,0x00,0xA3,0xAF,0x04,0x00,0xE2,0x8C, - 0x00,0x00,0x00,0x00,0x08,0x00,0x51,0x8C,0x00,0x00,0x00,0x00, - 0x18,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x7B,0x00,0x43,0x14, - 0x08,0x00,0x03,0x3C,0x00,0x00,0x22,0x8E,0x00,0x01,0x63,0x34, - 0x77,0x00,0x43,0x14,0x00,0x01,0x03,0x3C,0x04,0x00,0x22,0x8E, - 0x06,0x04,0x63,0x34,0x1C,0x00,0x43,0x10,0x00,0x00,0x00,0x00, - 0xD9,0x14,0xC0,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0xE2,0x8C, - 0x00,0x00,0x00,0x00,0x21,0x88,0x54,0x00,0x18,0x00,0x23,0x96, - 0x10,0x00,0xA2,0x97,0x00,0x00,0x00,0x00,0x69,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x1A,0x00,0x23,0x96,0x12,0x00,0xA2,0x97, - 0x00,0x00,0x00,0x00,0x64,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x00,0x00,0x24,0x96,0x00,0x01,0x02,0x24,0x60,0x00,0x82,0x14, - 0x06,0x04,0x03,0x3C,0x02,0x00,0x22,0x8E,0x08,0x00,0x63,0x34, - 0x5C,0x00,0x43,0x14,0x00,0x00,0x00,0x00,0x06,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0x58,0x00,0x44,0x14,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x54,0x00,0x40,0x10, - 0x01,0x00,0x05,0x24,0x02,0x83,0x04,0x3C,0x70,0xE7,0x84,0x24, - 0x08,0x00,0xF3,0x8C,0x0E,0x14,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x21,0x90,0x40,0x00,0x06,0x00,0x40,0x16,0x00,0x00,0x00,0x00, - 0xF0,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0xD9,0x14,0xC0,0x08,0xF0,0x00,0xA2,0xAE,0x08,0x00,0x50,0x8E, - 0x0C,0x00,0x65,0x26,0x09,0x00,0x62,0x8A,0x06,0x00,0x62,0x9A, - 0x0A,0x00,0x63,0x82,0x0B,0x00,0x64,0x82,0x03,0x00,0x02,0xAA, - 0x00,0x00,0x02,0xBA,0x04,0x00,0x03,0xA2,0x05,0x00,0x04,0xA2, - 0x02,0x83,0x06,0x3C,0x84,0xE7,0xC6,0x24,0x03,0x00,0xC2,0x88, - 0x00,0x00,0xC2,0x98,0x04,0x00,0xC3,0x80,0x05,0x00,0xC4,0x80, - 0x09,0x00,0x02,0xAA,0x06,0x00,0x02,0xBA,0x0A,0x00,0x03,0xA2, - 0x0B,0x00,0x04,0xA2,0x0C,0x00,0x04,0x26,0x21,0x80,0x14,0x02, - 0x10,0x3E,0xC0,0x0C,0xF4,0xFF,0x86,0x26,0x03,0x00,0x22,0x8A, - 0x00,0x00,0x22,0x9A,0x04,0x00,0x23,0x82,0x05,0x00,0x24,0x82, - 0x03,0x00,0x02,0xAA,0x00,0x00,0x02,0xBA,0x04,0x00,0x03,0xA2, - 0x05,0x00,0x04,0xA2,0x00,0x02,0x02,0x24,0x06,0x00,0x02,0xA6, - 0x02,0x83,0x05,0x3C,0x84,0xE7,0xA5,0x24,0x03,0x00,0xA2,0x88, - 0x00,0x00,0xA2,0x98,0x04,0x00,0xA3,0x80,0x05,0x00,0xA4,0x80, - 0x0B,0x00,0x02,0xAA,0x08,0x00,0x02,0xBA,0x0C,0x00,0x03,0xA2, - 0x0D,0x00,0x04,0xA2,0x21,0x20,0xA0,0x02,0x10,0x00,0xA2,0x8F, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x02,0xAE,0x0B,0x00,0x22,0x8A, - 0x08,0x00,0x22,0x9A,0x0F,0x00,0x23,0x8A,0x0C,0x00,0x23,0x9A, - 0x10,0x00,0x26,0x82,0x11,0x00,0x27,0x82,0x15,0x00,0x02,0xAA, - 0x12,0x00,0x02,0xBA,0x19,0x00,0x03,0xAA,0x16,0x00,0x03,0xBA, - 0x1A,0x00,0x06,0xA2,0x1B,0x00,0x07,0xA2,0x3C,0x80,0x02,0x34, - 0x00,0x00,0x42,0xAE,0x3C,0x00,0x02,0x24,0x12,0x00,0x42,0xA6, - 0x22,0x14,0xC0,0x0C,0x21,0x28,0x40,0x02,0x03,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0xE4,0x14,0xC0,0x0C,0x21,0x20,0x40,0x02, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x81,0x09,0x34, - 0x10,0x00,0x82,0x90,0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24, - 0x40,0x12,0x02,0x00,0x21,0x38,0x43,0x00,0x8C,0x00,0xE6,0x8C, - 0x00,0x01,0x08,0x24,0x04,0x00,0xC5,0x8C,0x00,0x00,0x83,0x8C, - 0x00,0x00,0x80,0xAC,0x0C,0x00,0x89,0xAC,0x04,0x00,0xA4,0xAC, - 0x0C,0x00,0xC8,0xAC,0x21,0x30,0xA0,0x00,0xD8,0x00,0xE2,0x8C, - 0x21,0x28,0x80,0x00,0x01,0x00,0x42,0x24,0x00,0x80,0x63,0x30, - 0x04,0x00,0x60,0x14,0xD8,0x00,0xE2,0xAC,0x04,0x00,0x84,0x8C, - 0xED,0x14,0xC0,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03, - 0x8C,0x00,0xE6,0xAC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xAC,0x00,0x80,0xAC,0xB0,0x00,0x80,0xAC,0xB4,0x00,0x80,0xAC, - 0xB8,0x00,0x80,0xAC,0xBC,0x00,0x80,0xAC,0xC0,0x00,0x80,0xAC, - 0xC4,0x00,0x80,0xAC,0xC8,0x00,0x80,0xAC,0xCC,0x00,0x80,0xAC, - 0xD0,0x00,0x80,0xAC,0xD4,0x00,0x80,0xAC,0xE0,0x00,0x80,0xAC, - 0x08,0x01,0x80,0xAC,0x04,0x01,0x80,0xAC,0xEC,0x00,0x80,0xAC, - 0xF0,0x00,0x80,0xAC,0xE8,0x00,0x80,0xAC,0xF4,0x00,0x80,0xAC, - 0x08,0x00,0xE0,0x03,0xF8,0x00,0x80,0xAC,0xE0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x14,0x00,0xB1,0xAF, - 0x00,0x02,0x11,0x24,0x18,0x00,0xBF,0xAF,0x8B,0x09,0xC0,0x0C, - 0x00,0x38,0x04,0x24,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x21,0x20,0x00,0x00,0x24,0x10,0x43,0x00,0x00,0x80,0x03,0x3C, - 0x25,0x28,0x43,0x00,0x21,0x18,0xA0,0x00,0x00,0x80,0x06,0x34, - 0x01,0x00,0x84,0x24,0x1C,0x00,0x62,0x24,0x00,0x00,0x60,0xA4, - 0x02,0x00,0x66,0xA4,0x04,0x00,0x62,0xAC,0x21,0x18,0x40,0x00, - 0x2A,0x10,0x91,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x84,0x24, - 0xFF,0xFF,0x84,0x24,0xC0,0x10,0x11,0x00,0x23,0x10,0x51,0x00, - 0x80,0x10,0x02,0x00,0x21,0x10,0x45,0x00,0x38,0x00,0xA3,0x24, - 0xE8,0xFF,0x45,0xAC,0x6C,0x00,0x03,0xAE,0x68,0x00,0x03,0xAE, - 0x60,0x00,0x05,0xAE,0x64,0x00,0x02,0xAE,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xF8,0xFF,0xBD,0x27,0x00,0x20,0x0E,0x3C, - 0x04,0x00,0xB1,0xAF,0x07,0x00,0x11,0x3C,0x00,0x00,0xB0,0xAF, - 0x04,0x00,0x10,0x3C,0x02,0x83,0x19,0x3C,0x70,0xD9,0x39,0x27, - 0x00,0x01,0x0F,0x24,0x6C,0x00,0x98,0x8C,0x68,0x00,0x89,0x8C, - 0xB0,0x00,0x8C,0x8C,0xB4,0x00,0x8D,0x8C,0x5E,0x00,0x38,0x11, - 0x00,0x00,0x00,0x00,0x04,0x00,0x2B,0x8D,0x00,0x00,0x00,0x00, - 0x25,0x10,0x6E,0x01,0x00,0x00,0x42,0x94,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x30,0x56,0x00,0x40,0x10,0x25,0x10,0x2E,0x01, - 0x00,0x00,0x43,0x8C,0x00,0x00,0x00,0x00,0x24,0x10,0x71,0x00, - 0x4C,0x00,0x50,0x14,0x00,0x20,0x62,0x30,0x29,0x00,0x40,0x14, - 0x0F,0x00,0x62,0x30,0xBC,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0xBC,0x00,0x82,0xAC,0x00,0x08,0x62,0x30, - 0x06,0x00,0x40,0x10,0x00,0x04,0x62,0x30,0xC0,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xC0,0x00,0x82,0xAC, - 0x00,0x04,0x62,0x30,0x06,0x00,0x40,0x10,0x00,0x02,0x62,0x30, - 0xC4,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0xC4,0x00,0x82,0xAC,0x00,0x02,0x62,0x30,0x06,0x00,0x40,0x10, - 0x00,0x01,0x62,0x30,0xC8,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0xC8,0x00,0x82,0xAC,0x00,0x01,0x62,0x30, - 0x06,0x00,0x40,0x10,0x20,0x00,0x62,0x30,0xCC,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xCC,0x00,0x82,0xAC, - 0x20,0x00,0x62,0x30,0x06,0x00,0x40,0x10,0x0F,0x00,0x62,0x30, - 0xD0,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0xD0,0x00,0x82,0xAC,0x0F,0x00,0x62,0x30,0xD4,0x00,0x83,0x8C, - 0x08,0x00,0x25,0x8D,0x21,0x18,0x62,0x00,0xD4,0x00,0x83,0xAC, - 0x11,0x00,0xA2,0x90,0x01,0x00,0x8C,0x25,0xFF,0xFF,0x42,0x24, - 0x11,0x00,0xA2,0xA0,0x19,0x00,0x40,0x14,0x25,0x18,0x2E,0x01, - 0x10,0x00,0xA2,0x90,0x01,0x00,0xAD,0x25,0x40,0x12,0x02,0x00, - 0x21,0x40,0x59,0x00,0x8C,0x00,0x07,0x8D,0x00,0x81,0x0A,0x34, - 0x04,0x00,0xE6,0x8C,0x00,0x00,0xA3,0x8C,0x00,0x00,0xA0,0xAC, - 0x0C,0x00,0xAA,0xAC,0x04,0x00,0xC5,0xAC,0x0C,0x00,0xEF,0xAC, - 0x21,0x38,0xC0,0x00,0xD8,0x00,0x02,0x8D,0x21,0x30,0xA0,0x00, - 0x01,0x00,0x42,0x24,0x00,0x80,0x63,0x30,0x04,0x00,0x60,0x14, - 0xD8,0x00,0x02,0xAD,0x04,0x00,0xA5,0x8C,0xBE,0x15,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x8C,0x00,0x07,0xAD,0x25,0x18,0x2E,0x01, - 0x00,0x80,0x02,0x3C,0x00,0x00,0x62,0xAC,0x74,0x15,0xC0,0x08, - 0x21,0x48,0x60,0x01,0x68,0x00,0x89,0xAC,0xB0,0x00,0x8C,0xAC, - 0xB4,0x00,0x8D,0xAC,0x04,0x00,0xB1,0x8F,0x00,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x08,0x00,0xBD,0x27,0x68,0x00,0x85,0x8C, - 0x2C,0x00,0x86,0x8C,0x04,0x00,0xA7,0x8C,0x00,0x00,0xC2,0x94, - 0x00,0x00,0x00,0x00,0x00,0x20,0x42,0x30,0x55,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x02,0x00,0xA2,0x94,0x04,0x00,0x03,0x24, - 0x07,0x00,0x42,0x30,0x50,0x00,0x43,0x14,0x00,0x20,0x03,0x3C, - 0x25,0x10,0xA3,0x00,0x00,0x00,0x42,0x94,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x30,0x4A,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x02,0x00,0xE2,0x94,0x00,0x00,0x00,0x00,0x07,0x00,0x42,0x30, - 0x45,0x00,0x40,0x14,0x25,0x10,0xE3,0x00,0x00,0x00,0x42,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0x40,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x3C,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xE0,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xE0,0x00,0x82,0xAC, - 0x04,0x00,0xC5,0xAC,0x02,0x00,0xC2,0x94,0x00,0x00,0x00,0x00, - 0x2F,0x00,0x40,0x10,0x00,0x21,0x02,0x24,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xC2,0x94, - 0x00,0x00,0x00,0x00,0xD3,0xFF,0x40,0x14,0x00,0x21,0x02,0x24, - 0x02,0x00,0xC2,0xA4,0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0xAC,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x6C,0x00,0x85,0x8C,0x00,0x00,0x00,0x00,0x04,0x00,0xA2,0x8C, - 0x00,0x00,0x00,0x00,0x04,0x00,0x43,0x8C,0x68,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x05,0x00,0x62,0x14,0x21,0x10,0xA0,0x00, - 0xB8,0x00,0x83,0x8C,0x21,0x10,0x00,0x00,0x01,0x00,0x63,0x24, - 0xB8,0x00,0x83,0xAC,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x1C,0x00,0xBF,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x6C,0x00,0x12,0x8E,0x08,0x01,0x06,0x8E,0x2C,0x00,0x11,0x8E, - 0x04,0x00,0x42,0x8E,0x68,0x00,0x07,0x8E,0x04,0x00,0x42,0x8C, - 0x12,0x00,0xA3,0x94,0xAC,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x06,0x00,0x47,0x14,0xFF,0xFF,0x63,0x30,0xB8,0x00,0x03,0x8E, - 0x21,0x10,0x00,0x00,0x01,0x00,0x63,0x24,0xDE,0x16,0xC0,0x08, - 0xB8,0x00,0x03,0xAE,0x21,0x30,0xC3,0x00,0x01,0x00,0x82,0x24, - 0xAC,0x00,0x02,0xAE,0x08,0x01,0x06,0xAE,0x08,0x00,0xA2,0x8C, - 0x04,0x01,0x03,0x8E,0x00,0x00,0x46,0x90,0x21,0x20,0x40,0x02, - 0x08,0x00,0x45,0xAE,0x0C,0x00,0x40,0xAE,0x01,0x00,0xC2,0x30, - 0x02,0x00,0x40,0x10,0x01,0x00,0x62,0x24,0x04,0x01,0x02,0xAE, - 0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x23,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x12,0x00,0xA2,0x94,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x42,0x30,0x0C,0x00,0x42,0xAE,0x00,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0x00,0x20,0x42,0x30,0x18,0x00,0x40,0x10, - 0x0C,0x00,0x02,0x24,0x02,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x00,0x01,0x42,0x30,0x13,0x00,0x40,0x14,0x0C,0x00,0x02,0x24, - 0x04,0x00,0xF2,0x10,0x00,0x00,0x00,0x00,0x67,0x15,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x0C,0x00,0x02,0x24,0x02,0x00,0x42,0xA6, - 0x68,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xA4, - 0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA4, - 0x00,0x21,0x02,0x24,0x04,0x00,0x24,0xAE,0x42,0x09,0xC0,0x0C, - 0x02,0x00,0x22,0xA6,0xDB,0x16,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xDB,0x16,0xC0,0x08,0x02,0x00,0x82,0xA4,0x00,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0x00,0x20,0x42,0x30,0x45,0x00,0x40,0x10, - 0x0C,0x00,0x02,0x24,0x04,0x00,0xF2,0x10,0x00,0x00,0x00,0x00, - 0x67,0x15,0xC0,0x0C,0x21,0x20,0x00,0x02,0x0C,0x00,0x02,0x24, - 0x02,0x00,0x42,0xA6,0x68,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xA4,0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0xA4,0x04,0x00,0x24,0xAE,0x02,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0x2F,0x00,0x40,0x10,0x00,0x21,0x02,0x24, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x02,0x00,0x22,0x96,0x00,0x00,0x00,0x00,0xD3,0xFF,0x40,0x14, - 0x00,0x21,0x02,0x24,0x02,0x00,0x22,0xA6,0x08,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0xDB,0x16,0xC0,0x08,0x00,0x00,0x40,0xAC, - 0x02,0x00,0x42,0xA6,0x04,0x00,0x43,0x8E,0x01,0x00,0x02,0x24, - 0x6C,0x00,0x03,0xAE,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x18,0x00,0xB2,0xAF,0x01,0x83,0x12,0x3C, - 0xA0,0x6B,0x52,0x26,0x1C,0x00,0xB3,0xAF,0x00,0x01,0x13,0x24, - 0x20,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x68,0x00,0x30,0x8E, - 0x6C,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x16, - 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x96,0x36,0x17,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x07,0x00,0x42,0x30,0x0B,0x00,0x40,0x14,0x21,0x28,0x40,0x02, - 0x01,0x83,0x04,0x3C,0x80,0x6B,0x84,0x24,0x01,0x83,0x07,0x3C, - 0xDC,0x6B,0xE7,0x24,0x97,0x39,0xC0,0x0C,0xF8,0x01,0x06,0x24, - 0x01,0x00,0x04,0x24,0x21,0x28,0x40,0x02,0x6A,0x09,0xC0,0x0C, - 0xF8,0x01,0x06,0x24,0x02,0x00,0x02,0x96,0x04,0x00,0x03,0x24, - 0x07,0x00,0x42,0x30,0x28,0x00,0x43,0x14,0x00,0x80,0x02,0x34, - 0x08,0x00,0x03,0x8E,0x00,0x00,0x00,0x00,0x11,0x00,0x62,0x90, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24,0x11,0x00,0x62,0xA0, - 0x11,0x00,0x62,0x90,0x00,0x00,0x00,0x00,0x1E,0x00,0x40,0x14, - 0x00,0x80,0x02,0x34,0xB4,0x00,0x22,0x8E,0x21,0x20,0x60,0x00, - 0x01,0x00,0x42,0x24,0xB4,0x00,0x22,0xAE,0x10,0x00,0x82,0x90, - 0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24,0x40,0x12,0x02,0x00, - 0x21,0x38,0x43,0x00,0x8C,0x00,0xE6,0x8C,0x00,0x81,0x08,0x34, - 0x04,0x00,0xC5,0x8C,0x00,0x00,0x83,0x8C,0x00,0x00,0x80,0xAC, - 0x0C,0x00,0x88,0xAC,0x04,0x00,0xA4,0xAC,0x0C,0x00,0xD3,0xAC, - 0x21,0x30,0xA0,0x00,0xD8,0x00,0xE2,0x8C,0x21,0x28,0x80,0x00, - 0x01,0x00,0x42,0x24,0x00,0x80,0x63,0x30,0x04,0x00,0x60,0x14, - 0xD8,0x00,0xE2,0xAC,0x04,0x00,0x84,0x8C,0x20,0x17,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x8C,0x00,0xE6,0xAC,0x00,0x80,0x02,0x34, - 0x02,0x00,0x02,0xA6,0x00,0x00,0x00,0xA6,0x04,0x00,0x10,0x8E, - 0xEF,0x16,0xC0,0x08,0x00,0x00,0x00,0x00,0x2C,0x00,0x23,0x8E, - 0x68,0x00,0x30,0xAE,0x00,0x00,0x62,0x94,0x00,0x00,0x00,0x00, - 0x00,0x20,0x42,0x34,0x00,0x00,0x62,0xA4,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0x00,0xA3,0x02,0x3C,0x00,0x01,0x42,0x34,0x00,0x00,0x42,0x8C, - 0x02,0x83,0x03,0x3C,0x70,0xE9,0x63,0x24,0xFF,0x03,0x42,0x30, - 0x3C,0x00,0x42,0x24,0x00,0x80,0x42,0x34,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x62,0xAC,0xD0,0xFF,0xBD,0x27,0x1C,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x20,0x00,0xB2,0xAF,0x21,0x90,0xA0,0x00, - 0x18,0x00,0xB0,0xAF,0x00,0xA3,0x10,0x3C,0x00,0xA3,0x02,0x3C, - 0xA4,0x01,0x42,0x8C,0x00,0x01,0x10,0x36,0x2C,0x00,0xBF,0xAF, - 0x28,0x00,0xB4,0xAF,0x04,0x00,0x40,0x14,0x24,0x00,0xB3,0xAF, - 0x3C,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C,0xA4,0x01,0x22,0xAC, - 0x00,0xA3,0x02,0x3C,0xA4,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0xDD,0x05,0x42,0x28,0x03,0x00,0x40,0x14,0xDC,0x05,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0xA4,0x01,0x22,0xAC,0x00,0xA3,0x03,0x3C, - 0xA4,0x01,0x63,0x8C,0xFF,0xFF,0x02,0x24,0x15,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x70,0x80,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x05,0x00,0x43,0x14,0x02,0x00,0x05,0x24,0x82,0x0A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x70,0x80,0x82,0xAF,0x02,0x00,0x05,0x24, - 0x0A,0x00,0x06,0x24,0x70,0x80,0x84,0x8F,0x00,0x83,0x07,0x3C, - 0x0C,0x5D,0xE7,0x24,0x9C,0x0A,0xC0,0x0C,0x10,0x00,0xA0,0xAF, - 0x00,0x00,0x02,0x8E,0x02,0x83,0x03,0x3C,0x70,0xE9,0x63,0x24, - 0xFF,0x03,0x42,0x30,0x83,0x17,0xC0,0x08,0x40,0x00,0x42,0x24, - 0x00,0xA3,0x02,0x3C,0xA4,0x01,0x42,0x8C,0x02,0x83,0x03,0x3C, - 0x70,0xE9,0x63,0x24,0x00,0x80,0x42,0x34,0x00,0x00,0x62,0xAC, - 0xFF,0x1F,0x04,0x3C,0xFF,0xFF,0x84,0x34,0x02,0x83,0x02,0x3C, - 0x80,0xE9,0x42,0x24,0x24,0x10,0x44,0x00,0x00,0xA0,0x05,0x3C, - 0x25,0x10,0x45,0x00,0x02,0x83,0x03,0x3C,0x60,0xEF,0x63,0x24, - 0x02,0x83,0x01,0x3C,0x74,0xE9,0x20,0xAC,0x02,0x83,0x01,0x3C, - 0x78,0xE9,0x22,0xAC,0x0C,0x00,0x02,0x24,0x00,0x00,0x60,0xA4, - 0x02,0x83,0x01,0x3C,0x62,0xEF,0x22,0xA4,0x06,0x00,0x41,0x06, - 0x24,0x10,0x64,0x00,0x25,0x10,0x45,0x00,0x02,0x83,0x01,0x3C, - 0x64,0xEF,0x22,0xAC,0xA4,0x17,0xC0,0x08,0xFF,0x1F,0x12,0x3C, - 0x02,0x83,0x02,0x3C,0x62,0xEF,0x42,0x94,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x34,0x02,0x83,0x01,0x3C,0x62,0xEF,0x22,0xA4, - 0xFF,0x1F,0x12,0x3C,0xFF,0xFF,0x52,0x36,0x02,0x83,0x02,0x3C, - 0x70,0xE9,0x42,0x24,0x24,0x10,0x52,0x00,0x00,0xA0,0x14,0x3C, - 0x25,0x10,0x54,0x00,0x02,0x83,0x01,0x3C,0x68,0xEF,0x22,0xAC, - 0x02,0x83,0x01,0x3C,0x6C,0xEF,0x20,0xAC,0x2C,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x94,0x02,0x83,0x13,0x3C, - 0x60,0xEF,0x73,0x26,0x00,0x20,0x42,0x30,0x0F,0x00,0x40,0x14, - 0x21,0x28,0x00,0x00,0x01,0x83,0x04,0x3C,0x80,0x6B,0x84,0x24, - 0x01,0x83,0x10,0x3C,0xA0,0x6B,0x10,0x26,0x21,0x28,0x00,0x02, - 0x01,0x83,0x07,0x3C,0xF8,0x6B,0xE7,0x24,0x97,0x39,0xC0,0x0C, - 0x3F,0x02,0x06,0x24,0x01,0x00,0x04,0x24,0x21,0x28,0x00,0x02, - 0x6A,0x09,0xC0,0x0C,0x3F,0x02,0x06,0x24,0x21,0x28,0x00,0x00, - 0x21,0x30,0x00,0x00,0x24,0x10,0x72,0x02,0x2C,0x00,0x23,0x8E, - 0x25,0x10,0x54,0x00,0x04,0x00,0x62,0xAC,0x2C,0x00,0x24,0x8E, - 0xD0,0x07,0x07,0x24,0x41,0x3D,0xC0,0x0C,0x02,0x00,0x84,0x24, - 0x0C,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x2C,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x02,0x00,0x45,0x94,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x18,0x6C,0x84,0x24,0xFF,0xFF,0x04,0x24, - 0x01,0x83,0x05,0x3C,0xA0,0x6B,0xA5,0x24,0x6A,0x09,0xC0,0x0C, - 0x47,0x02,0x06,0x24,0x2C,0x00,0x22,0x8E,0x00,0x21,0x03,0x24, - 0x02,0x00,0x43,0xA4,0x08,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0xAC,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x70,0x80,0x84,0x8F,0x00,0x80,0x02,0x34, - 0x10,0x00,0xBF,0xAF,0x02,0x83,0x01,0x3C,0x03,0x00,0x80,0x04, - 0x62,0xEF,0x22,0xA4,0xB1,0x0A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xF0,0xFF,0x02,0x34,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x80,0xEF,0x20,0xAC,0xF0,0xFF,0x42,0x24, - 0xFB,0xFF,0x41,0x04,0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C, - 0x80,0xEF,0x42,0x24,0x00,0xA3,0x01,0x3C,0x0C,0x01,0x20,0xAC, - 0x00,0xA3,0x01,0x3C,0xD4,0x05,0x22,0xAC,0x01,0x00,0x02,0x3C, - 0x84,0x84,0x80,0xAF,0x80,0x84,0x80,0xAF,0x00,0xA3,0x01,0x3C, - 0x08,0x00,0xE0,0x03,0xD8,0x05,0x22,0xAC,0x00,0x00,0x88,0x94, - 0x04,0x00,0x8A,0x94,0x01,0x00,0x02,0x31,0x1E,0x00,0x40,0x14, - 0x02,0x00,0x89,0x94,0x00,0x19,0x0A,0x00,0x26,0x18,0x6A,0x00, - 0xF0,0xFF,0x63,0x30,0x02,0x83,0x0F,0x3C,0x80,0xEF,0xEF,0x25, - 0x21,0x28,0x6F,0x00,0x34,0x84,0x8E,0x8F,0x00,0x00,0xA2,0x8C, - 0x04,0x00,0xAB,0x94,0x15,0x00,0x40,0x10,0x2B,0x10,0xC2,0x01, - 0x09,0x00,0x40,0x10,0x06,0x00,0xAC,0x94,0x07,0x00,0x0B,0x15, - 0x08,0x00,0xAD,0x94,0x05,0x00,0x2C,0x15,0x00,0x00,0x00,0x00, - 0x03,0x00,0x4D,0x15,0x0A,0x00,0xA2,0x94,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xF0,0xFF,0xA5,0x24,0x2B,0x10,0xAF,0x00, - 0xF1,0xFF,0x40,0x10,0x00,0x00,0xA2,0x8C,0xF8,0x7F,0xE5,0x25, - 0xF8,0x7F,0xA5,0x24,0x19,0x18,0xC0,0x08,0x00,0x00,0xA2,0x8C, - 0x08,0x00,0xE0,0x03,0xFE,0xFF,0x02,0x24,0x08,0x00,0xE0,0x03, - 0xFF,0xFF,0x02,0x24,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x88,0x94,0x34,0x84,0x8E,0x8F,0x01,0x00,0x02,0x31, - 0x32,0x00,0x40,0x14,0x02,0x00,0x89,0x94,0x00,0x83,0x02,0x3C, - 0x0C,0x01,0x59,0x8C,0x04,0x00,0x8A,0x94,0xFF,0x0F,0x22,0x2F, - 0x2E,0x00,0x40,0x10,0x00,0x19,0x0A,0x00,0x26,0x18,0x6A,0x00, - 0xF0,0xFF,0x63,0x30,0x02,0x83,0x0F,0x3C,0x80,0xEF,0xEF,0x25, - 0x21,0x38,0x6F,0x00,0x00,0x00,0xF8,0x8C,0x04,0x00,0xEB,0x94, - 0x2B,0x10,0xD8,0x01,0x0E,0x00,0x40,0x10,0x06,0x00,0xEC,0x94, - 0x18,0x00,0x0B,0x15,0x08,0x00,0xED,0x94,0x16,0x00,0x2C,0x15, - 0xFF,0x7F,0x02,0x3C,0x14,0x00,0x4D,0x15,0xFF,0xFF,0x42,0x34, - 0x2B,0x10,0x02,0x03,0x02,0x00,0x40,0x10,0x21,0x10,0xC6,0x01, - 0x00,0x00,0xE2,0xAC,0x0A,0x00,0xE5,0xA4,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x02,0x24,0x03,0x00,0x00,0x17,0x01,0x00,0x39,0x23, - 0x00,0x83,0x02,0x3C,0x0C,0x01,0x59,0xAC,0x21,0x10,0xC6,0x01, - 0x00,0x00,0xE2,0xAC,0x0A,0x00,0xE5,0xA4,0x04,0x00,0xE8,0xA4, - 0x06,0x00,0xE9,0xA4,0x08,0x00,0xEA,0xA4,0x08,0x00,0xE0,0x03, - 0x01,0x00,0x02,0x24,0xF0,0xFF,0xE7,0x24,0x2B,0x10,0xEF,0x00, - 0xE0,0xFF,0x40,0x10,0x00,0x00,0xF8,0x8C,0xF8,0x7F,0xE7,0x25, - 0xF8,0x7F,0xE7,0x24,0x44,0x18,0xC0,0x08,0x00,0x00,0xF8,0x8C, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x02,0x24,0x84,0x84,0x82,0x8F, - 0x01,0x00,0x42,0x20,0x84,0x84,0x82,0xAF,0x08,0x00,0xE0,0x03, - 0xFF,0xFF,0x02,0x24,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x94,0x80,0x82,0x8F,0x00,0x00,0x00,0x00,0x07,0x00,0x82,0x14, - 0xE8,0xFF,0xBD,0x27,0x90,0x80,0x82,0x8F,0x02,0x83,0x03,0x3C, - 0x80,0xEF,0x63,0x24,0x00,0x11,0x02,0x00,0xA4,0x18,0xC0,0x08, - 0x21,0x10,0x43,0x00,0x2A,0x10,0x82,0x00,0x03,0x00,0x40,0x10, - 0xFF,0xFF,0x02,0x24,0x94,0x80,0x80,0xAF,0x90,0x80,0x82,0xAF, - 0x94,0x80,0x82,0x8F,0x90,0x80,0x83,0x8F,0x23,0x30,0x82,0x00, - 0x01,0x00,0x65,0x24,0x00,0x10,0xA2,0x28,0x19,0x00,0x40,0x10, - 0x00,0x19,0x05,0x00,0x34,0x84,0x87,0x8F,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x43,0x00,0x80,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xE2,0x00,0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xC6,0x24,0x06,0x00,0xC0,0x10,0x00,0x10,0xA2,0x28, - 0x01,0x00,0xA5,0x24,0x00,0x10,0xA2,0x28,0xF3,0xFF,0x40,0x14, - 0x10,0x00,0x63,0x24,0x00,0x10,0xA2,0x28,0x07,0x00,0x40,0x10, - 0x00,0x19,0x05,0x00,0x02,0x83,0x02,0x3C,0x80,0xEF,0x42,0x24, - 0x90,0x80,0x85,0xAF,0x94,0x80,0x84,0xAF,0xA4,0x18,0xC0,0x08, - 0x21,0x10,0x62,0x00,0x21,0x10,0x00,0x00,0xFF,0xFF,0x03,0x24, - 0x94,0x80,0x80,0xAF,0x90,0x80,0x83,0xAF,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x18,0xFF,0xBD,0x27,0xE4,0x00,0xBF,0xAF,0xE0,0x00,0xBE,0xAF, - 0xDC,0x00,0xB7,0xAF,0xD8,0x00,0xB6,0xAF,0xD4,0x00,0xB5,0xAF, - 0xD0,0x00,0xB4,0xAF,0xCC,0x00,0xB3,0xAF,0xC8,0x00,0xB2,0xAF, - 0xC4,0x00,0xB1,0xAF,0xC0,0x00,0xB0,0xAF,0x64,0x1B,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xA0,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C, - 0x01,0x00,0x11,0x24,0x18,0x00,0xB0,0x27,0x64,0x3E,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x18,0x00,0xA2,0x83,0x00,0x00,0x00,0x00, - 0xC1,0x18,0xC0,0x08,0x20,0x00,0x08,0x24,0x00,0x00,0x02,0x82, - 0x20,0x00,0x08,0x24,0xFD,0xFF,0x48,0x10,0x01,0x00,0x10,0x26, - 0xFF,0xFF,0x10,0x26,0x09,0x00,0x08,0x24,0xF9,0xFF,0x48,0x10, - 0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26,0x00,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0x42,0x24,0x0A,0x00,0x42,0x2C, - 0x1B,0x00,0x40,0x10,0x21,0x20,0x00,0x02,0x21,0x28,0x00,0x00, - 0x94,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x00,0x00,0x00,0x03,0x92, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0x63,0x24,0x0A,0x00,0x63,0x2C, - 0x09,0x00,0x60,0x10,0x21,0x88,0x40,0x00,0x01,0x00,0x10,0x26, - 0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0xD0,0xFF,0x42,0x24, - 0x0A,0x00,0x42,0x2C,0xFB,0xFF,0x40,0x14,0x01,0x00,0x10,0x26, - 0xFF,0xFF,0x10,0x26,0x00,0x00,0x02,0x82,0x20,0x00,0x08,0x24, - 0xFD,0xFF,0x48,0x10,0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26, - 0x09,0x00,0x08,0x24,0xF9,0xFF,0x48,0x10,0x01,0x00,0x10,0x26, - 0xFF,0xFF,0x10,0x26,0x00,0x00,0x02,0x82,0x00,0x00,0x03,0x92, - 0x00,0x00,0x00,0x00,0x16,0x00,0x40,0x10,0x68,0x00,0xB4,0x27, - 0x20,0x00,0x08,0x24,0x13,0x00,0x48,0x10,0x09,0x00,0x08,0x24, - 0x11,0x00,0x48,0x10,0x20,0x00,0x05,0x24,0x09,0x00,0x04,0x24, - 0xD0,0xFF,0x62,0x24,0x0A,0x00,0x42,0x2C,0x0C,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x26,0x00,0x00,0x83,0xA2, - 0x00,0x00,0x02,0x82,0x00,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x05,0x00,0x40,0x10,0x01,0x00,0x94,0x26,0x03,0x00,0x45,0x10, - 0x00,0x00,0x00,0x00,0xF3,0xFF,0x44,0x14,0xD0,0xFF,0x62,0x24, - 0x00,0x00,0x80,0xA2,0x68,0x00,0xB4,0x27,0x00,0x00,0x02,0x82, - 0x20,0x00,0x08,0x24,0xFD,0xFF,0x48,0x10,0x01,0x00,0x10,0x26, - 0xFF,0xFF,0x10,0x26,0x09,0x00,0x08,0x24,0xF9,0xFF,0x48,0x10, - 0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26,0x21,0xF0,0x00,0x02, - 0x00,0x00,0xC4,0x83,0x00,0x00,0x00,0x00,0xE0,0x3E,0xC0,0x0C, - 0x90,0x00,0xBE,0xAF,0x0B,0x00,0x40,0x10,0x21,0x20,0xC0,0x03, - 0x21,0x28,0x00,0x00,0x94,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x00, - 0x21,0x98,0x40,0x00,0x21,0x20,0xC0,0x03,0x21,0x28,0x00,0x00, - 0xEC,0x3E,0xC0,0x0C,0x10,0x00,0x06,0x24,0x20,0x19,0xC0,0x08, - 0x21,0x90,0x40,0x00,0xFF,0xFF,0x12,0x24,0xFF,0xFF,0x13,0x24, - 0x00,0x00,0x03,0x82,0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x11,0x00,0x60,0x10,0x20,0x00,0x08,0x24,0x0F,0x00,0x68,0x10, - 0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26,0x20,0x00,0x04,0x24, - 0x00,0x16,0x02,0x00,0x03,0x16,0x02,0x00,0x09,0x00,0x08,0x24, - 0x08,0x00,0x48,0x10,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x26, - 0x00,0x00,0x03,0x82,0x00,0x00,0x02,0x92,0x03,0x00,0x60,0x10, - 0x00,0x00,0x00,0x00,0xF6,0xFF,0x64,0x14,0x00,0x16,0x02,0x00, - 0x00,0x00,0x02,0x82,0x20,0x00,0x08,0x24,0xFD,0xFF,0x48,0x10, - 0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26,0x09,0x00,0x08,0x24, - 0xF9,0xFF,0x48,0x10,0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26, - 0x21,0xB8,0x00,0x02,0x21,0x20,0xE0,0x02,0x21,0x28,0x00,0x00, - 0x94,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x00,0x21,0x20,0xE0,0x02, - 0x21,0x28,0x00,0x00,0x10,0x00,0x06,0x24,0xEC,0x3E,0xC0,0x0C, - 0x21,0xB0,0x40,0x00,0x00,0x00,0xE3,0x82,0x00,0x00,0x00,0x00, - 0x0F,0x00,0x60,0x10,0x21,0xA8,0x40,0x00,0x20,0x00,0x08,0x24, - 0x0C,0x00,0x68,0x10,0x20,0x00,0x03,0x24,0x00,0x00,0x02,0x82, - 0x09,0x00,0x08,0x24,0x08,0x00,0x48,0x10,0x00,0x00,0x00,0x00, - 0x01,0x00,0x10,0x26,0x00,0x00,0x02,0x82,0x00,0x00,0x00,0x00, - 0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xF8,0xFF,0x43,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x82,0x00,0x00,0x00,0x00, - 0x79,0x00,0x62,0x2C,0xF4,0x01,0x40,0x10,0x80,0x10,0x03,0x00, - 0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x80,0x72,0x22,0x8C, - 0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x83,0x82,0x68,0x00,0x02,0x24,0x1A,0x00,0x62,0x10, - 0x69,0x00,0x62,0x28,0x07,0x00,0x40,0x10,0x74,0x00,0x02,0x24, - 0x22,0x00,0x60,0x10,0x62,0x00,0x02,0x24,0x0B,0x00,0x62,0x10, - 0x00,0x00,0x00,0x00,0x52,0x1B,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x05,0x00,0x62,0x10,0x77,0x00,0x08,0x24,0x1B,0x00,0x68,0x10, - 0x21,0x10,0x20,0x02,0x52,0x1B,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x04,0xA2,0x02,0x3C,0x21,0x90,0x42,0x02,0x02,0x00,0x82,0x82, - 0x00,0x00,0x00,0x00,0xD6,0x01,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x4C,0x6C,0x84,0x24,0x00,0x00,0x46,0x92, - 0x8A,0x19,0xC0,0x08,0x00,0x00,0x00,0x00,0x02,0x00,0x82,0x82, - 0x00,0x00,0x00,0x00,0xCD,0x01,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x58,0x6C,0x84,0x24,0x00,0x00,0x46,0x96, - 0x00,0x00,0x00,0x00,0x97,0x39,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02, - 0x25,0xFF,0x40,0x10,0xFF,0xFF,0x31,0x26,0x00,0x00,0x50,0x8E, - 0x01,0x83,0x04,0x3C,0x64,0x6C,0x84,0x24,0x21,0x28,0x40,0x02, - 0x04,0x00,0x52,0x26,0x97,0x39,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x21,0x10,0x20,0x02,0xF7,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x01,0x00,0x83,0x82, - 0x68,0x00,0x02,0x24,0x17,0x00,0x62,0x10,0x69,0x00,0x62,0x28, - 0x07,0x00,0x40,0x10,0x74,0x00,0x02,0x24,0x19,0x00,0x60,0x10, - 0x62,0x00,0x02,0x24,0x0B,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x52,0x1B,0xC0,0x08,0x00,0x00,0x00,0x00,0x05,0x00,0x62,0x10, - 0x77,0x00,0x08,0x24,0x11,0x00,0x68,0x10,0x00,0x00,0x00,0x00, - 0x52,0x1B,0xC0,0x08,0x00,0x00,0x00,0x00,0x04,0xA2,0x02,0x3C, - 0x21,0x90,0x42,0x02,0x02,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0x9E,0x01,0x40,0x14,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x55,0xA2,0x02,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0x98,0x01,0x40,0x14,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x55,0xA6,0xB5,0x18,0xC0,0x08,0x00,0x00,0x55,0xAE, - 0x00,0xA3,0x10,0x3C,0x1F,0xA3,0x11,0x3C,0xFF,0xFF,0x31,0x36, - 0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0x52,0x14, - 0x00,0x00,0x00,0x00,0xA4,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x04,0x00,0x10,0x26,0x2B,0x10,0x30,0x02, - 0xF6,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02,0xE4,0xFE,0x40,0x10, - 0xFF,0xFF,0x31,0x26,0x21,0x20,0x60,0x02,0xDC,0x1F,0xC0,0x0C, - 0x21,0x28,0xC0,0x02,0x21,0x10,0x20,0x02,0xFB,0xFF,0x40,0x14, - 0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x01,0x00,0x82,0x82,0x00,0x00,0x00,0x00,0x75,0x01,0x40,0x14, - 0x21,0x20,0x20,0x02,0xBD,0x1C,0xC0,0x0C,0x21,0x28,0x60,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x20,0x60,0x02, - 0x21,0x28,0x20,0x02,0x20,0x1F,0xC0,0x0C,0x21,0x30,0xC0,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x01,0x00,0x82,0x82, - 0x00,0x00,0x00,0x00,0x67,0x01,0x40,0x14,0x21,0x10,0x20,0x02, - 0xC8,0xFE,0x40,0x10,0xFF,0xFF,0x31,0x26,0x21,0x20,0x60,0x02, - 0x21,0x28,0xC0,0x02,0xEE,0x1C,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x21,0x10,0x20,0x02,0xFA,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x20,0x20,0x02, - 0x21,0x28,0x60,0x02,0x21,0x30,0xC0,0x02,0x60,0x1D,0xC0,0x0C, - 0x21,0x38,0x00,0x02,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x05,0xA2,0x02,0x3C,0x00,0x00,0x45,0x90,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x70,0x6C,0x84,0x24,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0xA3,0x01,0x3C,0x14,0x01,0x20,0xAC, - 0x0E,0x00,0x20,0x12,0x21,0x80,0x00,0x00,0x42,0x09,0xC0,0x0C, - 0x01,0x00,0x10,0x26,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x97,0x3A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x11,0x02,0xF4,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0xC0,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0xA3,0x10,0x3C, - 0x14,0x01,0x10,0x8E,0x00,0x00,0x00,0x00,0x07,0x00,0x11,0x16, - 0x21,0x28,0x20,0x02,0x01,0x83,0x04,0x3C,0x84,0x6C,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x20,0x02,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x9C,0x6C,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x30,0x00,0x02,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x82,0x07,0xA2,0x08,0x3C, - 0x10,0x00,0x40,0x10,0x21,0x90,0x48,0x02,0x21,0x10,0x20,0x02, - 0x86,0xFE,0x40,0x10,0xFF,0xFF,0x31,0x26,0x00,0x00,0x55,0xAE, - 0x01,0x83,0x04,0x3C,0x64,0x6C,0x84,0x24,0x21,0x28,0x40,0x02, - 0x97,0x39,0xC0,0x0C,0x21,0x30,0xA0,0x02,0x04,0x00,0x52,0x26, - 0x21,0x10,0x20,0x02,0xF7,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02, - 0x77,0xFE,0x40,0x10,0xFF,0xFF,0x31,0x26,0x00,0x00,0x50,0x8E, - 0x01,0x83,0x04,0x3C,0x64,0x6C,0x84,0x24,0x21,0x28,0x40,0x02, - 0x04,0x00,0x52,0x26,0x97,0x39,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x21,0x10,0x20,0x02,0xF7,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x07,0xA2,0x10,0x3C, - 0x40,0x00,0x11,0x26,0x01,0x83,0x04,0x3C,0xC4,0x6C,0x84,0x24, - 0x21,0x28,0x00,0x02,0x00,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x97,0x39,0xC0,0x0C,0x04,0x00,0x10,0x26,0x2A,0x10,0x11,0x02, - 0xF7,0xFF,0x40,0x14,0x07,0xA2,0x08,0x3C,0x80,0x00,0x10,0x25, - 0xB0,0x00,0x11,0x25,0x01,0x83,0x04,0x3C,0xC4,0x6C,0x84,0x24, - 0x21,0x28,0x00,0x02,0x00,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x97,0x39,0xC0,0x0C,0x04,0x00,0x10,0x26,0x2A,0x10,0x11,0x02, - 0xF7,0xFF,0x40,0x14,0x07,0xA2,0x08,0x3C,0xC0,0x00,0x10,0x25, - 0xF0,0x00,0x11,0x25,0x01,0x83,0x04,0x3C,0xC4,0x6C,0x84,0x24, - 0x21,0x28,0x00,0x02,0x00,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x97,0x39,0xC0,0x0C,0x04,0x00,0x10,0x26,0x2A,0x10,0x11,0x02, - 0xF7,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0xDE,0x00,0x40,0x14,0x21,0x10,0x20,0x02,0x3F,0xFE,0x40,0x10, - 0xFF,0xFF,0x31,0x26,0x21,0x20,0x60,0x02,0x0D,0x1D,0xC0,0x0C, - 0x21,0x28,0xA0,0x02,0x21,0x10,0x20,0x02,0xFB,0xFF,0x40,0x14, - 0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x01,0x00,0x82,0x82,0x00,0x00,0x00,0x00,0xD0,0x00,0x40,0x14, - 0x21,0x10,0x20,0x02,0x31,0xFE,0x40,0x10,0xFF,0xFF,0x31,0x26, - 0x21,0x20,0x60,0x02,0xD7,0x1E,0xC0,0x0C,0x21,0x28,0xC0,0x02, - 0x21,0x10,0x20,0x02,0xFB,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02, - 0x26,0xFE,0x40,0x10,0xFF,0xFF,0x31,0x26,0x08,0x20,0xC0,0x0C, - 0x21,0x20,0x00,0x00,0x21,0x20,0x00,0x00,0xDC,0x1F,0xC0,0x0C, - 0x21,0x28,0x00,0x00,0x60,0x1C,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0xBD,0x1C,0xC0,0x0C,0xFF,0xFF,0x04,0x24,0x21,0x10,0x20,0x02, - 0xF5,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x00,0x83,0x82,0x57,0x00,0x02,0x24, - 0x1B,0x00,0x62,0x10,0x58,0x00,0x62,0x28,0x07,0x00,0x40,0x10, - 0x72,0x00,0x02,0x24,0x25,0x00,0x60,0x10,0x52,0x00,0x02,0x24, - 0x09,0x00,0x62,0x10,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x05,0x00,0x62,0x10,0x77,0x00,0x08,0x24, - 0x0F,0x00,0x68,0x10,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x02,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0x9F,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0xFC,0x3A,0xC0,0x0C, - 0x21,0x20,0x60,0x02,0xA8,0x80,0x84,0x27,0x21,0x28,0x60,0x02, - 0x97,0x39,0xC0,0x0C,0x21,0x30,0x40,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x02,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0x93,0x00,0x40,0x14,0x21,0x20,0x60,0x02,0x62,0x3B,0xC0,0x0C, - 0x21,0x28,0xA0,0x02,0xF2,0xFD,0x40,0x14,0x21,0x28,0xA0,0x02, - 0x01,0x83,0x04,0x3C,0xE8,0x6C,0x84,0x24,0x97,0x39,0xC0,0x0C, - 0x21,0x30,0x60,0x02,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x10,0x20,0x02,0xE9,0xFD,0x40,0x10,0xFF,0xFF,0x31,0x26, - 0x60,0x1C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02, - 0xFC,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x00,0x85,0x82,0x57,0x00,0x02,0x24, - 0x1D,0x00,0xA2,0x10,0x58,0x00,0xA2,0x28,0x05,0x00,0x40,0x10, - 0x52,0x00,0x02,0x24,0x0B,0x00,0xA2,0x10,0x21,0x10,0x20,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x72,0x00,0x02,0x24, - 0x05,0x00,0xA2,0x10,0x77,0x00,0x08,0x24,0x13,0x00,0xA8,0x10, - 0x21,0x20,0x40,0x02,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x10,0x20,0x02,0xCE,0xFD,0x40,0x10,0xFF,0xFF,0x31,0x26, - 0x68,0x3F,0xC0,0x0C,0x21,0x20,0x40,0x02,0xA8,0x80,0x84,0x27, - 0x21,0x28,0x40,0x02,0x97,0x39,0xC0,0x0C,0x21,0x30,0x40,0x00, - 0x01,0x00,0x52,0x26,0x21,0x10,0x20,0x02,0xF7,0xFF,0x40,0x14, - 0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x20,0x40,0x02,0xDD,0x3F,0xC0,0x0C,0x21,0x28,0xA0,0x02, - 0xBD,0xFD,0x40,0x14,0x21,0x28,0xA0,0x02,0x01,0x83,0x04,0x3C, - 0x08,0x6D,0x84,0x24,0x97,0x39,0xC0,0x0C,0x21,0x30,0x40,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x90,0x00,0xA4,0x8F, - 0xB2,0x1B,0xC0,0x0C,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x21,0x10,0x60,0x02,0xAF,0xFD,0x40,0x10, - 0xFF,0xFF,0x73,0x26,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x21,0x10,0x60,0x02,0xFC,0xFF,0x40,0x14,0xFF,0xFF,0x73,0x26, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x10,0x20,0x02, - 0xA5,0xFD,0x40,0x10,0xFF,0xFF,0x31,0x26,0x21,0x20,0x60,0x02, - 0x08,0x20,0xC0,0x0C,0x21,0x28,0xC0,0x02,0x21,0x10,0x20,0x02, - 0xFB,0xFF,0x40,0x14,0xFF,0xFF,0x31,0x26,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x00,0x82,0x92,0x00,0x00,0x00,0x00, - 0x9F,0xFF,0x42,0x24,0x00,0x16,0x02,0x00,0x03,0x1E,0x02,0x00, - 0x18,0x00,0x62,0x2C,0x1B,0x00,0x40,0x10,0x80,0x10,0x03,0x00, - 0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x68,0x74,0x22,0x8C, - 0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00, - 0x44,0x20,0xC0,0x0C,0x21,0x20,0x40,0x02,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x47,0x20,0xC0,0x0C,0x21,0x20,0x60,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x4A,0x20,0xC0,0x0C, - 0x21,0x20,0x60,0x02,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x4E,0x20,0xC0,0x0C,0x21,0x20,0x60,0x02,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x51,0x20,0xC0,0x0C,0x21,0x20,0x40,0x02, - 0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00,0x21,0x20,0x40,0x02, - 0x3F,0x20,0xC0,0x0C,0x21,0x28,0xC0,0x02,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x10,0x00,0xB6,0xAF,0x21,0x20,0x20,0x02, - 0x21,0x28,0xC0,0x03,0x21,0x30,0xE0,0x02,0xD9,0x20,0xC0,0x0C, - 0x21,0x38,0xA0,0x02,0xB5,0x18,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x88,0x00,0x00,0x01,0x83,0x04,0x3C,0x28,0x6D,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x01,0x00,0x31,0x26,0x20,0x00,0x22,0x2E, - 0xFA,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0xB5,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x3C,0x6D,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x80,0x02,0xB3,0x18,0xC0,0x08, - 0x00,0x00,0x00,0x00,0xE4,0x00,0xBF,0x8F,0xE0,0x00,0xBE,0x8F, - 0xDC,0x00,0xB7,0x8F,0xD8,0x00,0xB6,0x8F,0xD4,0x00,0xB5,0x8F, - 0xD0,0x00,0xB4,0x8F,0xCC,0x00,0xB3,0x8F,0xC8,0x00,0xB2,0x8F, - 0xC4,0x00,0xB1,0x8F,0xC0,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0xE8,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x02,0x83,0x05,0x3C, - 0x20,0x82,0xA5,0x24,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x10, - 0x21,0x80,0xA0,0x00,0x00,0x00,0x05,0x8E,0xB0,0x80,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x04,0x00,0x10,0x26,0x00,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x00,0x00,0x84,0x90,0x00,0x00,0x00,0x00, - 0xD0,0xFF,0x82,0x24,0x0A,0x00,0x42,0x2C,0x04,0x00,0x40,0x10, - 0x00,0x16,0x04,0x00,0x03,0x16,0x02,0x00,0x91,0x1B,0xC0,0x08, - 0xD0,0xFF,0x42,0x24,0x9F,0xFF,0x82,0x24,0x06,0x00,0x42,0x2C, - 0x04,0x00,0x40,0x10,0x00,0x16,0x04,0x00,0x03,0x16,0x02,0x00, - 0x91,0x1B,0xC0,0x08,0xA9,0xFF,0x42,0x24,0xBF,0xFF,0x82,0x24, - 0x06,0x00,0x42,0x2C,0x03,0x00,0x40,0x14,0x00,0x16,0x04,0x00, - 0x91,0x1B,0xC0,0x08,0xFF,0xFF,0x02,0x24,0x03,0x16,0x02,0x00, - 0xC9,0xFF,0x42,0x24,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD8,0xFF,0xBD,0x27,0x18,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00, - 0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x00,0x00,0x51,0x8E,0x00,0x00,0x00,0x00, - 0x79,0x1B,0xC0,0x0C,0x21,0x20,0x20,0x02,0x21,0x18,0x40,0x00, - 0xFF,0xFF,0x13,0x24,0x09,0x00,0x73,0x10,0x00,0x81,0x03,0x00, - 0x79,0x1B,0xC0,0x0C,0x01,0x00,0x24,0x26,0x21,0x18,0x40,0x00, - 0x04,0x00,0x73,0x10,0x02,0x00,0x22,0x26,0x00,0x00,0x42,0xAE, - 0xAB,0x1B,0xC0,0x08,0x25,0x10,0x03,0x02,0xFF,0xFF,0x02,0x24, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xB0,0xFF,0xBD,0x27,0x40,0x00,0xB4,0xAF, - 0x21,0xA0,0x80,0x00,0x48,0x00,0xBF,0xAF,0x44,0x00,0xB5,0xAF, - 0x3C,0x00,0xB3,0xAF,0x38,0x00,0xB2,0xAF,0x34,0x00,0xB1,0xAF, - 0x30,0x00,0xB0,0xAF,0x00,0x00,0x82,0x82,0x00,0x00,0x00,0x00, - 0x35,0x00,0x40,0x14,0x21,0x80,0x00,0x00,0xDB,0x3C,0xC0,0x0C, - 0x21,0x20,0x00,0x00,0x01,0x00,0x04,0x24,0xDB,0x3C,0xC0,0x0C, - 0x21,0x80,0x40,0x00,0x02,0x00,0x04,0x24,0xDB,0x3C,0xC0,0x0C, - 0x21,0x88,0x40,0x00,0x21,0x18,0x40,0x00,0xFF,0xFF,0x02,0x24, - 0x05,0x00,0x02,0x12,0x00,0x00,0x00,0x00,0x03,0x00,0x22,0x12, - 0x00,0x00,0x00,0x00,0x06,0x00,0x62,0x14,0xFF,0xFF,0x02,0x34, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x1C,0x71,0x84,0x24, - 0x55,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00,0x05,0x00,0x02,0x12, - 0x00,0x00,0x00,0x00,0x03,0x00,0x22,0x12,0x00,0x00,0x00,0x00, - 0x06,0x00,0x62,0x14,0x01,0x00,0x02,0x32,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x48,0x71,0x84,0x24,0x55,0x1C,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x10,0xFF,0x00,0x05,0x32, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x64,0x71,0x84,0x24, - 0x55,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C, - 0x90,0x71,0x84,0x24,0x03,0x32,0x10,0x00,0x03,0x12,0x11,0x00, - 0x10,0x00,0xA2,0xAF,0xFF,0x00,0x62,0x30,0x14,0x00,0xA2,0xAF, - 0x03,0x12,0x03,0x00,0xFF,0x00,0x27,0x32,0x97,0x39,0xC0,0x0C, - 0x18,0x00,0xA2,0xAF,0x55,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x28,0x00,0xB4,0xAF,0x3A,0x00,0x15,0x24,0x20,0x00,0x13,0x24, - 0xFF,0xFF,0x12,0x24,0x20,0x00,0xB1,0x27,0x28,0x00,0xA2,0x8F, - 0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x80,0x00,0x00,0x00,0x00, - 0x03,0x00,0x75,0x10,0x00,0x00,0x00,0x00,0x03,0x00,0x73,0x14, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x28,0x00,0xA2,0xAF, - 0x93,0x1B,0xC0,0x0C,0x28,0x00,0xA4,0x27,0x21,0x18,0x40,0x00, - 0x4B,0x00,0x72,0x10,0x00,0x00,0x00,0x00,0x28,0x00,0xA2,0x8F, - 0x00,0x00,0x23,0xA6,0x00,0x00,0x43,0x80,0x00,0x00,0x00,0x00, - 0x03,0x00,0x75,0x10,0x00,0x00,0x00,0x00,0x03,0x00,0x73,0x14, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x28,0x00,0xA2,0xAF, - 0x93,0x1B,0xC0,0x0C,0x28,0x00,0xA4,0x27,0x21,0x18,0x40,0x00, - 0x3C,0x00,0x72,0x10,0x01,0x00,0x10,0x26,0x00,0x00,0x22,0x96, - 0x00,0x1A,0x03,0x00,0x25,0x10,0x43,0x00,0x00,0x00,0x22,0xA6, - 0x03,0x00,0x02,0x2A,0xDC,0xFF,0x40,0x14,0x02,0x00,0x31,0x26, - 0x20,0x00,0xA5,0x97,0x00,0x00,0x00,0x00,0x01,0x00,0xA2,0x30, - 0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C, - 0xB0,0x71,0x84,0x24,0x97,0x39,0xC0,0x0C,0xFF,0x00,0xA5,0x30, - 0x51,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00,0x24,0x00,0xA2,0x97, - 0x00,0x00,0x00,0x00,0x00,0x07,0x42,0x30,0x06,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0xE0,0x71,0x84,0x24,0x51,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xBF,0x3C,0xC0,0x0C,0x21,0x20,0x00,0x00,0x01,0x00,0x04,0x24, - 0x22,0x00,0xA5,0x97,0x00,0x00,0x00,0x00,0xBF,0x3C,0xC0,0x0C, - 0x21,0x80,0x00,0x00,0x24,0x00,0xA5,0x97,0x00,0x00,0x00,0x00, - 0xBF,0x3C,0xC0,0x0C,0x02,0x00,0x04,0x24,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x00,0x72,0x84,0x24,0x01,0x83,0x04,0x3C, - 0x30,0x72,0x84,0x24,0x97,0x39,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0xB4,0x80,0x84,0x27,0xB8,0x80,0x86,0x27,0xA8,0x13,0xC0,0x0C, - 0x20,0x00,0xA5,0x27,0x24,0x00,0xA2,0x97,0x01,0x00,0x10,0x26, - 0x00,0x01,0x42,0x24,0x24,0x00,0xA2,0xA7,0x08,0x00,0x02,0x2A, - 0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x40,0x1C,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x54,0x72,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x28,0x80,0x02,0x48,0x00,0xBF,0x8F, - 0x44,0x00,0xB5,0x8F,0x40,0x00,0xB4,0x8F,0x3C,0x00,0xB3,0x8F, - 0x38,0x00,0xB2,0x8F,0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x50,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x00,0x00,0x14,0x00,0xB1,0xAF,0x21,0x88,0x00,0x00, - 0x18,0x00,0xBF,0xAF,0x21,0x20,0x00,0x02,0x62,0x3B,0xC0,0x0C, - 0x21,0x28,0x00,0x00,0x2B,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x01,0x00,0x10,0x26,0x40,0x00,0x02,0x2A,0xF9,0xFF,0x40,0x14, - 0x21,0x20,0x00,0x02,0x21,0x80,0x00,0x00,0x55,0x55,0x11,0x24, - 0x21,0x20,0x00,0x02,0x62,0x3B,0xC0,0x0C,0x55,0x55,0x05,0x24, - 0x20,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x26, - 0x40,0x00,0x02,0x2A,0xF9,0xFF,0x40,0x14,0x21,0x20,0x00,0x02, - 0x21,0x80,0x00,0x00,0xAA,0xAA,0x11,0x34,0x21,0x20,0x00,0x02, - 0x62,0x3B,0xC0,0x0C,0xAA,0xAA,0x05,0x34,0x15,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x26,0x40,0x00,0x02,0x2A, - 0xF9,0xFF,0x40,0x14,0x21,0x20,0x00,0x02,0x21,0x80,0x00,0x00, - 0xFF,0xFF,0x11,0x34,0x21,0x20,0x00,0x02,0x62,0x3B,0xC0,0x0C, - 0xFF,0xFF,0x05,0x34,0x0A,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x01,0x00,0x10,0x26,0x40,0x00,0x02,0x2A,0xF9,0xFF,0x40,0x14, - 0x21,0x20,0x00,0x02,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0xD0,0x74,0x84,0x24,0x9D,0x1C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xFC,0x3A,0xC0,0x0C,0x21,0x20,0x00,0x02,0x01,0x83,0x04,0x3C, - 0xE4,0x74,0x84,0x24,0x21,0x28,0x20,0x02,0x21,0x30,0x00,0x02, - 0x97,0x39,0xC0,0x0C,0x21,0x38,0x40,0x00,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x80,0x09,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x87,0x0D,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0xB4,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00,0x20,0x84,0x84,0x8F, - 0x01,0x00,0x02,0x24,0x2A,0x10,0x44,0x00,0x09,0x00,0x40,0x10, - 0x00,0x02,0x03,0x24,0x40,0x22,0x04,0x00,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x23,0x00,0x74,0xD9,0x20,0xAC,0x00,0x02,0x63,0x24, - 0x2A,0x10,0x64,0x00,0xFA,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27,0x18,0x00,0xB2,0xAF, - 0x21,0x90,0x80,0x00,0x20,0x00,0xB4,0xAF,0x21,0xA0,0xA0,0x00, - 0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB6,0xAF,0x24,0x00,0xB5,0xAF, - 0x1C,0x00,0xB3,0xAF,0x14,0x00,0xB1,0xAF,0x03,0x00,0x80,0x1A, - 0x10,0x00,0xB0,0xAF,0xCD,0x1C,0xC0,0x08,0x01,0x00,0x93,0x26, - 0x01,0x00,0x14,0x24,0x20,0x84,0x93,0x8F,0xFF,0xFF,0x52,0x26, - 0xFF,0xFF,0x02,0x24,0x14,0x00,0x42,0x12,0xFF,0xFF,0x15,0x24, - 0x02,0x83,0x16,0x3C,0x70,0xD9,0xD6,0x26,0xA4,0x1C,0xC0,0x0C, - 0x21,0x80,0x80,0x02,0x2A,0x10,0x13,0x02,0x0A,0x00,0x40,0x10, - 0x40,0x12,0x10,0x00,0x21,0x88,0x56,0x00,0x3E,0x15,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x85,0x0B,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x13,0x02,0xF9,0xFF,0x40,0x14, - 0x00,0x02,0x31,0x26,0xFF,0xFF,0x52,0x26,0xF0,0xFF,0x55,0x16, - 0x00,0x00,0x00,0x00,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB6,0x8F, - 0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0xA0,0x00,0x1C,0x00,0xB3,0xAF, - 0x21,0x98,0xC0,0x00,0x20,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x03,0x00,0x80,0x18,0x10,0x00,0xB0,0xAF,0xFB,0x1C,0xC0,0x08, - 0x01,0x00,0x91,0x24,0x01,0x00,0x04,0x24,0x20,0x84,0x91,0x8F, - 0x21,0x80,0x80,0x00,0x2A,0x10,0x11,0x02,0x08,0x00,0x40,0x10, - 0x21,0x20,0x00,0x02,0x21,0x28,0x40,0x02,0x32,0x1D,0xC0,0x0C, - 0x21,0x30,0x60,0x02,0x01,0x00,0x10,0x26,0x2A,0x10,0x11,0x02, - 0xFA,0xFF,0x40,0x14,0x21,0x20,0x00,0x02,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x03,0x00,0x80,0x18,0x10,0x00,0xB0,0xAF,0x16,0x1D,0xC0,0x08, - 0x01,0x00,0x91,0x24,0x01,0x00,0x04,0x24,0x20,0x84,0x91,0x8F, - 0x21,0x80,0x80,0x00,0x2A,0x10,0x11,0x02,0x07,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x25,0x1D,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x11,0x02,0xFB,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0x40,0x22,0x04,0x00,0x02,0x83,0x02,0x3C,0x70,0xD9,0x42,0x24, - 0x21,0x20,0x82,0x00,0x2C,0x00,0x83,0x8C,0x01,0x00,0x02,0x24, - 0x20,0x00,0x82,0xAC,0x10,0x00,0x02,0x24,0x02,0x00,0x62,0xA4, - 0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x40,0xAC,0xD0,0xFF,0xBD,0x27,0x21,0x30,0x80,0x00, - 0x40,0x12,0x06,0x00,0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24, - 0x24,0x00,0xB1,0xAF,0x21,0x88,0x43,0x00,0x28,0x00,0xBF,0xAF, - 0x20,0x00,0xB0,0xAF,0x04,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x40,0x14,0x21,0x80,0xA0,0x00,0x01,0x00,0x04,0x24, - 0xBD,0x1C,0xC0,0x0C,0x21,0x28,0xC0,0x00,0x03,0x00,0x00,0x1E, - 0xDD,0x05,0x02,0x2A,0x49,0x1D,0xC0,0x08,0x01,0x00,0x10,0x24, - 0x03,0x00,0x40,0x14,0x21,0x20,0x20,0x02,0xDC,0x05,0x10,0x24, - 0x21,0x20,0x20,0x02,0xD0,0x07,0x05,0x24,0x6C,0x00,0x83,0x8C, - 0x0C,0x00,0x02,0x24,0x02,0x00,0x62,0xA4,0x10,0x00,0xA2,0x27, - 0x08,0x00,0x62,0xAC,0x00,0x80,0x02,0x36,0x0C,0x00,0x60,0xAC, - 0x10,0x00,0x60,0xA0,0x16,0x00,0x60,0xA4,0x10,0x00,0xA2,0xAF, - 0xFF,0xFF,0x02,0x24,0x14,0x00,0xA2,0xAF,0x02,0x83,0x02,0x3C, - 0x60,0x82,0x42,0x24,0x98,0x1E,0xC0,0x0C,0x18,0x00,0xA2,0xAF, - 0x28,0x00,0xBF,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0x40,0xFE,0xBD,0x27, - 0x98,0x01,0xB0,0xAF,0x21,0x80,0xC0,0x00,0x30,0x01,0xA4,0xAF, - 0x21,0x20,0xE0,0x00,0x40,0x12,0x05,0x00,0x02,0x83,0x03,0x3C, - 0x70,0xD9,0x63,0x24,0x21,0x10,0x43,0x00,0x38,0x01,0xA2,0xAF, - 0x40,0x12,0x10,0x00,0x21,0x10,0x43,0x00,0x28,0x00,0xA8,0x27, - 0xBC,0x01,0xBF,0xAF,0xB8,0x01,0xBE,0xAF,0xB4,0x01,0xB7,0xAF, - 0xB0,0x01,0xB6,0xAF,0xAC,0x01,0xB5,0xAF,0xA8,0x01,0xB4,0xAF, - 0xA4,0x01,0xB3,0xAF,0xA0,0x01,0xB2,0xAF,0x9C,0x01,0xB1,0xAF, - 0x40,0x01,0xA2,0xAF,0x0C,0x00,0xA0,0x18,0x60,0x01,0xA8,0xAF, - 0x20,0x84,0x83,0x8F,0x00,0x00,0x00,0x00,0x2A,0x10,0xA3,0x00, - 0x0F,0x01,0x40,0x10,0x01,0x00,0x02,0x24,0x05,0x00,0x00,0x1A, - 0x2A,0x10,0x03,0x02,0x0B,0x01,0x40,0x10,0x01,0x00,0x02,0x24, - 0x03,0x00,0xB0,0x14,0x21,0x28,0x00,0x00,0x8C,0x1E,0xC0,0x08, - 0x01,0x00,0x02,0x24,0x94,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x00, - 0x06,0x00,0x41,0x04,0x68,0x01,0xA2,0xAF,0x21,0x48,0x40,0x00, - 0x23,0x48,0x09,0x00,0x68,0x01,0xA9,0xAF,0x91,0x1D,0xC0,0x08, - 0x70,0x01,0xA0,0xAF,0x01,0x00,0x08,0x24,0x70,0x01,0xA8,0xAF, - 0x01,0x00,0x04,0x24,0xBD,0x1C,0xC0,0x0C,0x21,0x28,0x00,0x00, - 0x25,0x1D,0xC0,0x0C,0x21,0x20,0x00,0x02,0x18,0x00,0xA9,0x27, - 0x38,0x01,0xA8,0x8F,0xFF,0x00,0x02,0x24,0x50,0x01,0xA9,0xAF, - 0x6C,0x00,0x08,0x8D,0x2B,0x01,0xA3,0x27,0x48,0x01,0xA8,0xAF, - 0x00,0x00,0x62,0xA0,0xFF,0xFF,0x42,0x24,0xFD,0xFF,0x41,0x04, - 0xFF,0xFF,0x63,0x24,0x40,0x01,0xA9,0x8F,0x00,0x00,0x00,0x00, - 0x78,0x00,0x29,0x8D,0x40,0x01,0xA8,0x8F,0x78,0x01,0xA9,0xAF, - 0x7C,0x00,0x08,0x8D,0x40,0x01,0xA9,0x8F,0x80,0x01,0xA8,0xAF, - 0x2C,0x00,0x22,0x8D,0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0xAC, - 0x2C,0x00,0x22,0x8D,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0xAC, - 0x2C,0x00,0x22,0x8D,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0xAC, - 0x2C,0x00,0x22,0x8D,0x58,0x01,0xA0,0xAF,0x18,0x00,0x40,0xAC, - 0x30,0x01,0xA8,0x8F,0x00,0x00,0x00,0x00,0xA4,0x00,0x00,0x19, - 0x28,0x00,0xA9,0x27,0x88,0x01,0xA9,0xAF,0x58,0x01,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x02,0x31,0x04,0x00,0x56,0x24, - 0x3C,0x00,0xC2,0x2A,0x02,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x3C,0x00,0x16,0x24,0x68,0x01,0xA9,0x8F,0x00,0x00,0x00,0x00, - 0x02,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x68,0x01,0xB6,0x8F, - 0x38,0x01,0xA4,0x8F,0x48,0x01,0xA8,0x8F,0x0C,0x00,0x02,0x24, - 0x02,0x00,0x02,0xA5,0x50,0x01,0xA9,0x8F,0x00,0x80,0xC2,0x36, - 0x08,0x00,0x09,0xAD,0x0C,0x00,0x00,0xAD,0x10,0x00,0x00,0xA1, - 0x16,0x00,0x00,0xA5,0x00,0x00,0x22,0xAD,0xFF,0xFF,0x08,0x24, - 0x04,0x00,0x28,0xAD,0x88,0x01,0xA8,0x8F,0x00,0x00,0x00,0x00, - 0x08,0x00,0x28,0xAD,0x58,0x01,0xA8,0x8F,0x60,0x01,0xA9,0x8F, - 0xD0,0x07,0x05,0x24,0x98,0x1E,0xC0,0x0C,0x00,0x00,0x28,0xAD, - 0x00,0x80,0x05,0x34,0x00,0x80,0x06,0x34,0x78,0x01,0xA4,0x8F, - 0x00,0x00,0x00,0x00,0x41,0x3D,0xC0,0x0C,0x02,0x00,0x07,0x24, - 0x07,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x58,0x01,0xA5,0x8F, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x20,0x75,0x84,0x24, - 0x56,0x1E,0xC0,0x08,0x00,0x00,0x00,0x00,0x78,0x01,0xA9,0x8F, - 0x40,0x01,0xA8,0x8F,0x08,0x00,0x22,0x8D,0xFF,0xFF,0x09,0x24, - 0x88,0x00,0x15,0x8D,0x00,0x00,0x00,0x00,0x32,0x00,0x49,0x10, - 0x21,0xB8,0x00,0x00,0x01,0x00,0x04,0x24,0x04,0x00,0x12,0x24, - 0x04,0x00,0x03,0x24,0x00,0x00,0xBE,0x8E,0x08,0x00,0xA6,0x8E, - 0x70,0x01,0xA8,0x8F,0xFF,0x3F,0xD4,0x33,0x1E,0x00,0x00,0x11, - 0x21,0xB8,0xF4,0x02,0x2A,0x10,0x74,0x00,0x1B,0x00,0x40,0x10, - 0x21,0x98,0x60,0x00,0x88,0x01,0xA9,0x8F,0x00,0x00,0x00,0x00, - 0x21,0x88,0x49,0x02,0x21,0x80,0x66,0x00,0x0F,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x92,0x00,0x00,0x23,0x92, - 0x00,0x00,0x00,0x00,0x0A,0x00,0x43,0x10,0x21,0x30,0xC0,0x02, - 0x01,0x83,0x04,0x3C,0x3C,0x75,0x84,0x24,0x58,0x01,0xA5,0x8F, - 0x10,0x00,0xA3,0xAF,0x00,0x00,0x02,0x92,0x21,0x38,0x40,0x02, - 0x97,0x39,0xC0,0x0C,0x14,0x00,0xA2,0xAF,0x21,0x20,0x00,0x00, - 0x01,0x00,0x73,0x26,0x01,0x00,0x10,0x26,0x01,0x00,0x31,0x26, - 0x2A,0x10,0x74,0x02,0xEB,0xFF,0x40,0x14,0x01,0x00,0x52,0x26, - 0x21,0x18,0x00,0x00,0x04,0x00,0xB5,0x8E,0x00,0x80,0xC2,0x33, - 0xD9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x78,0x01,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x8D,0x00,0x00,0x00,0x00, - 0x19,0x00,0x80,0x10,0x12,0x00,0x57,0xA4,0x09,0x00,0xF6,0x12, - 0x21,0x30,0xC0,0x02,0x01,0x83,0x04,0x3C,0x6C,0x75,0x84,0x24, - 0x58,0x01,0xA5,0x8F,0x00,0x00,0x00,0x00,0x97,0x39,0xC0,0x0C, - 0x21,0x38,0xE0,0x02,0x3B,0x1E,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x40,0x01,0xA9,0x8F,0x00,0x00,0x00,0x00,0x88,0x00,0x22,0x8D, - 0x60,0x01,0xA8,0x8F,0x08,0x00,0x46,0x8C,0x00,0x00,0x02,0x8D, - 0x00,0x00,0xC6,0x8C,0x00,0x00,0x00,0x00,0x07,0x00,0xC2,0x10, - 0x00,0x00,0x00,0x00,0x58,0x01,0xA5,0x8F,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x98,0x75,0x84,0x24,0x40,0x01,0xA9,0x8F, - 0x00,0x00,0x00,0x00,0x88,0x00,0x24,0x8D,0xE4,0x14,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x40,0x01,0xA8,0x8F,0x00,0x00,0x00,0x00, - 0x88,0x00,0x15,0xAD,0x78,0x01,0xA9,0x8F,0x08,0x80,0x02,0x34, - 0x00,0x00,0x20,0xA5,0x02,0x00,0x22,0xA5,0x08,0x00,0x20,0xAD, - 0x0C,0x00,0x20,0xA5,0x80,0x01,0xA8,0x8F,0x08,0x00,0x02,0x24, - 0x02,0x00,0x02,0xA5,0x04,0x00,0x09,0x8D,0x78,0x01,0xA8,0x8F, - 0x80,0x01,0xA9,0xAF,0x04,0x00,0x08,0x8D,0x40,0x01,0xA9,0x8F, - 0x78,0x01,0xA8,0xAF,0x78,0x00,0x28,0xAD,0x80,0x01,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x7C,0x00,0x28,0xAD,0x58,0x01,0xA9,0x8F, - 0x30,0x01,0xA8,0x8F,0x01,0x00,0x29,0x25,0x2A,0x10,0x28,0x01, - 0x5F,0xFF,0x40,0x14,0x58,0x01,0xA9,0xAF,0x40,0x01,0xA9,0x8F, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x23,0x8D,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x65,0x8C,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0xB4,0x75,0x84,0x24,0x40,0x01,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x03,0x8D,0x00,0x00,0x00,0x00, - 0x10,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x10,0x00,0x65,0x8C,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0xD0,0x75,0x84,0x24,0x40,0x01,0xA9,0x8F, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x23,0x8D,0x00,0x00,0x00,0x00, - 0x20,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x20,0x00,0x65,0x8C,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0xF0,0x75,0x84,0x24,0x40,0x01,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x03,0x8D,0x00,0x00,0x00,0x00, - 0x18,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x18,0x00,0x65,0x8C,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x10,0x76,0x84,0x24,0xBC,0x01,0xBF,0x8F, - 0xB8,0x01,0xBE,0x8F,0xB4,0x01,0xB7,0x8F,0xB0,0x01,0xB6,0x8F, - 0xAC,0x01,0xB5,0x8F,0xA8,0x01,0xB4,0x8F,0xA4,0x01,0xB3,0x8F, - 0xA0,0x01,0xB2,0x8F,0x9C,0x01,0xB1,0x8F,0x98,0x01,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0xC0,0x01,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x18,0x00,0xBF,0xAF, - 0x14,0x00,0xB1,0xAF,0x2C,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x94,0x00,0x00,0x00,0x00,0x00,0x20,0x42,0x30, - 0x07,0x00,0x40,0x14,0x21,0x88,0xA0,0x00,0x00,0x00,0x85,0x94, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x30,0x76,0x84,0x24, - 0xD2,0x1E,0xC0,0x08,0x03,0x00,0x02,0x24,0x02,0x00,0x84,0x24, - 0x21,0x28,0x00,0x00,0x21,0x30,0x00,0x00,0x41,0x3D,0xC0,0x0C, - 0x21,0x38,0x20,0x02,0x0D,0x00,0x40,0x10,0x21,0x28,0x00,0x00, - 0x2C,0x00,0x03,0x8E,0x00,0x21,0x02,0x24,0x02,0x00,0x62,0xA4, - 0x08,0x00,0x02,0x8E,0x21,0x30,0x00,0x00,0x00,0x00,0x40,0xAC, - 0x2C,0x00,0x04,0x8E,0x21,0x38,0x20,0x02,0x41,0x3D,0xC0,0x0C, - 0x02,0x00,0x84,0x24,0x09,0x00,0x40,0x14,0x00,0x20,0x05,0x24, - 0x2C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x02,0x00,0x45,0x94, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x4C,0x76,0x84,0x24, - 0xD2,0x1E,0xC0,0x08,0x01,0x00,0x02,0x24,0x2C,0x00,0x04,0x8E, - 0x00,0x20,0x06,0x24,0x41,0x3D,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x08,0x00,0x40,0x14,0x21,0x10,0x00,0x00,0x2C,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x94,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x64,0x76,0x84,0x24,0x02,0x00,0x02,0x24, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0xA0,0x00,0x1C,0x00,0xBF,0xAF, - 0x14,0x00,0xB1,0xAF,0x07,0x00,0x80,0x04,0x10,0x00,0xB0,0xAF, - 0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24, - 0x2A,0x10,0x44,0x00,0x04,0x00,0x40,0x10,0x21,0x88,0x80,0x00, - 0x18,0x84,0x82,0x8F,0x21,0x20,0x00,0x00,0xFF,0xFF,0x51,0x24, - 0x21,0x80,0x80,0x00,0x2A,0x10,0x30,0x02,0x07,0x00,0x40,0x14, - 0x21,0x20,0x00,0x02,0xF7,0x1E,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x30,0x02,0xFB,0xFF,0x40,0x10, - 0x21,0x20,0x00,0x02,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0xF4,0x3A,0xC0,0x0C, - 0x01,0x10,0x04,0x24,0x55,0x00,0x02,0x24,0x83,0x83,0x01,0x3C, - 0x30,0xF5,0x22,0xA0,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27, - 0x1C,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00,0x20,0x00,0xB2,0xAF, - 0x21,0x90,0xA0,0x00,0xC4,0x80,0x84,0x27,0x24,0x00,0xBF,0xAF, - 0x97,0x39,0xC0,0x0C,0x18,0x00,0xB0,0xAF,0x09,0x00,0x40,0x1A, - 0x21,0x80,0x00,0x00,0x00,0x00,0x25,0x92,0x01,0x00,0x31,0x26, - 0xCC,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x12,0x02,0xF9,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0xD4,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0x28,0xFF,0xBD,0x27,0x21,0x38,0x80,0x00,0xC8,0x00,0xB2,0xAF, - 0x21,0x90,0xA0,0x00,0xD0,0x00,0xB4,0xAF,0x21,0xA0,0xC0,0x00, - 0xFF,0xFF,0xE2,0x24,0x06,0x00,0x42,0x2C,0xD4,0x00,0xBF,0xAF, - 0xCC,0x00,0xB3,0xAF,0xC4,0x00,0xB1,0xAF,0x02,0x00,0x40,0x14, - 0xC0,0x00,0xB0,0xAF,0x01,0x00,0x07,0x24,0x02,0x00,0x40,0x1E, - 0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x24,0x02,0x00,0x80,0x1E, - 0x40,0x12,0x07,0x00,0x3C,0x00,0x14,0x24,0x02,0x83,0x03,0x3C, - 0x70,0xD9,0x63,0x24,0x21,0x88,0x43,0x00,0x04,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x14,0x21,0x98,0x40,0x02, - 0x01,0x00,0x04,0x24,0xBD,0x1C,0xC0,0x0C,0x21,0x28,0xE0,0x00, - 0xFF,0x1F,0x04,0x3C,0xFF,0xFF,0x84,0x34,0x00,0x80,0x85,0x36, - 0x80,0x00,0xA2,0x27,0x24,0x10,0x44,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0x70,0x00,0xA5,0xAF,0x74,0x00,0xA0,0xAF, - 0x78,0x00,0xA2,0xAF,0x0C,0x00,0x02,0x24,0x50,0x00,0xA0,0xA7, - 0x52,0x00,0xA2,0xA7,0x50,0x00,0xA2,0x27,0x24,0x10,0x44,0x00, - 0x25,0x80,0x43,0x00,0x70,0x00,0xA2,0x27,0x24,0x10,0x44,0x00, - 0xD8,0x80,0x84,0x8F,0x25,0x10,0x43,0x00,0x54,0x00,0xB0,0xAF, - 0x58,0x00,0xA2,0xAF,0x5C,0x00,0xA0,0xAF,0x05,0x00,0x80,0x10, - 0x04,0x00,0x02,0x24,0x52,0x00,0xA2,0xA7,0xFF,0xFF,0x02,0x24, - 0x5C,0x00,0xA5,0xAF,0x58,0x00,0xA2,0xAF,0x2C,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x94,0x00,0x00,0x00,0x00, - 0x00,0x20,0x42,0x30,0x07,0x00,0x40,0x14,0x21,0x28,0x00,0x00, - 0xFF,0xFF,0x04,0x24,0x01,0x83,0x05,0x3C,0x98,0x76,0xA5,0x24, - 0x6A,0x09,0xC0,0x0C,0xC5,0x01,0x06,0x24,0x21,0x28,0x00,0x00, - 0x2C,0x00,0x22,0x8E,0x21,0x30,0x00,0x00,0x04,0x00,0x50,0xAC, - 0x2C,0x00,0x24,0x8E,0xD0,0x07,0x07,0x24,0x41,0x3D,0xC0,0x0C, - 0x02,0x00,0x84,0x24,0x0C,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x2C,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x02,0x00,0x45,0x94, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x4C,0x76,0x84,0x24, - 0xFF,0xFF,0x04,0x24,0x01,0x83,0x05,0x3C,0x98,0x76,0xA5,0x24, - 0x6A,0x09,0xC0,0x0C,0xCD,0x01,0x06,0x24,0x22,0x0A,0xC0,0x0C, - 0x01,0x00,0x04,0x24,0x00,0xA3,0x10,0x3C,0x04,0x01,0x10,0x8E, - 0x00,0xA3,0x02,0x3C,0x04,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0xFC,0xFF,0x02,0x12,0x00,0x21,0x03,0x24,0x2C,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x02,0x00,0x43,0xA4,0x08,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xAC,0x00,0xA3,0x10,0x3C, - 0x04,0x01,0x10,0x8E,0x2C,0x00,0x24,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0x0A,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0xFA,0xFF,0x40,0x10, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x73,0x26,0x13,0x00,0x60,0x12, - 0x21,0x28,0x40,0x02,0x2C,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0xE5,0xFF,0x40,0x10, - 0x00,0x00,0x00,0x00,0x04,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x42,0x94,0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30, - 0xFA,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x8F,0x1F,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0xA8,0x76,0x84,0x24, - 0x21,0x30,0x80,0x02,0x00,0xA3,0x03,0x3C,0x04,0x01,0x63,0x8C, - 0x00,0x80,0x02,0x34,0x52,0x00,0xA2,0xA7,0x23,0x80,0x70,0x00, - 0x97,0x39,0xC0,0x0C,0x21,0x38,0x00,0x02,0x13,0x00,0x00,0x12, - 0x40,0x29,0x12,0x00,0x23,0x28,0xB2,0x00,0x80,0x28,0x05,0x00, - 0x21,0x28,0xB2,0x00,0xC0,0x28,0x05,0x00,0x1A,0x00,0xB0,0x00, - 0x02,0x00,0x00,0x16,0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00, - 0xFF,0xFF,0x01,0x24,0x04,0x00,0x01,0x16,0x00,0x80,0x01,0x3C, - 0x02,0x00,0xA1,0x14,0x00,0x00,0x00,0x00,0x0D,0x00,0x06,0x00, - 0x12,0x28,0x00,0x00,0xDC,0x80,0x84,0x27,0x97,0x39,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xD4,0x00,0xBF,0x8F,0xD0,0x00,0xB4,0x8F, - 0xCC,0x00,0xB3,0x8F,0xC8,0x00,0xB2,0x8F,0xC4,0x00,0xB1,0x8F, - 0xC0,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0xD8,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27, - 0x14,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00,0x18,0x00,0xBF,0xAF, - 0xB4,0x09,0xC0,0x0C,0x10,0x00,0xB0,0xAF,0x22,0x0A,0xC0,0x0C, - 0x01,0x00,0x04,0x24,0x10,0x84,0x84,0x8F,0x00,0xA3,0x10,0x3C, - 0x04,0x01,0x10,0x8E,0xC9,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x02,0x3C,0x04,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x23,0x28,0x50,0x00,0x49,0xFC,0xA2,0x24,0x63,0x00,0x42,0x2C, - 0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C, - 0xFC,0x1F,0xC0,0x08,0xE0,0x76,0x84,0x24,0x05,0x00,0xA0,0x14, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x04,0x77,0x84,0x24, - 0xFC,0x1F,0xC0,0x08,0x21,0x28,0x00,0x00,0x01,0x83,0x04,0x3C, - 0x2C,0x77,0x84,0x24,0x97,0x39,0xC0,0x0C,0x01,0x00,0x10,0x24, - 0x03,0x00,0x30,0x12,0x00,0x00,0x00,0x00,0x22,0x0A,0xC0,0x0C, - 0x21,0x20,0x00,0x00,0xF0,0x80,0x90,0xAF,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x20,0x00,0xB2,0xAF, - 0x21,0x90,0x80,0x00,0x21,0x30,0x40,0x02,0x2C,0x00,0xB5,0xAF, - 0x01,0x83,0x15,0x3C,0x5C,0xE6,0xB5,0x26,0x21,0x38,0xA0,0x02, - 0x28,0x00,0xB4,0xAF,0x01,0x83,0x14,0x3C,0x70,0x77,0x94,0x26, - 0x24,0x00,0xB3,0xAF,0x00,0xA3,0x13,0x3C,0x78,0x01,0x73,0x8E, - 0x00,0xA3,0x03,0x3C,0x78,0x01,0x63,0x8C,0x20,0x83,0x02,0x3C, - 0x30,0x00,0xBF,0xAF,0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF, - 0x10,0x00,0xB4,0xAF,0x21,0x20,0x60,0x02,0x23,0x88,0x43,0x00, - 0xB0,0x41,0xC0,0x0C,0x21,0x28,0x20,0x02,0x03,0x00,0x40,0x12, - 0x21,0x80,0x40,0x00,0x0A,0x00,0x00,0x16,0x00,0x00,0x00,0x00, - 0x10,0x00,0xB4,0xAF,0x21,0x20,0x60,0x02,0x21,0x28,0x20,0x02, - 0x21,0x30,0x40,0x02,0x50,0x41,0xC0,0x0C,0x21,0x38,0xA0,0x02, - 0x21,0x80,0x02,0x02,0x05,0x00,0x00,0x12,0x21,0x28,0x60,0x02, - 0x01,0x83,0x04,0x3C,0x88,0x77,0x84,0x24,0x34,0x20,0xC0,0x08, - 0x21,0x28,0x60,0x02,0x01,0x83,0x04,0x3C,0xAC,0x77,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x30,0xB1,0x00,0x30,0x00,0xBF,0x8F, - 0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0x00,0xA3,0x01,0x3C, - 0xE8,0x05,0x24,0xAC,0x00,0xA3,0x01,0x3C,0x08,0x00,0xE0,0x03, - 0xEC,0x05,0x25,0xAC,0x0C,0x81,0x84,0xAF,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x00,0x81,0x84,0xAF,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x0F,0x00,0x84,0x30,0x04,0x81,0x84,0xAF, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x08,0x81,0x84,0xAF, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x10,0x81,0x84,0xAF, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x21,0x48,0x80,0x00, - 0x21,0x50,0xA0,0x00,0x21,0x58,0xC0,0x00,0x07,0xA2,0x04,0x3C, - 0x30,0x01,0x84,0x34,0x07,0xA2,0x08,0x3C,0x00,0x01,0x08,0x35, - 0x04,0x81,0x82,0x8F,0x08,0x81,0x83,0x8F,0x80,0x30,0x02,0x00, - 0x0C,0x81,0x82,0x8F,0x03,0x00,0xC5,0x34,0x02,0x00,0x60,0x10, - 0x00,0x00,0x82,0xAC,0x43,0x00,0xC5,0x34,0x00,0x81,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x10,0x21,0x18,0xA0,0x00, - 0x00,0x01,0x63,0x34,0x14,0x81,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x02,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x04,0x63,0x34, - 0x10,0x81,0x82,0x8F,0x00,0x00,0x03,0xAD,0x03,0x00,0x40,0x10, - 0x07,0xA2,0x05,0x3C,0x00,0x00,0x02,0xAD,0x07,0xA2,0x05,0x3C, - 0x04,0x01,0xA5,0x34,0x07,0xA2,0x06,0x3C,0x08,0x01,0xC6,0x34, - 0xFF,0x00,0x02,0x3C,0xFF,0xFF,0x42,0x34,0x07,0xA2,0x03,0x3C, - 0x0C,0x01,0x63,0x34,0x07,0xA2,0x04,0x3C,0x10,0x01,0x84,0x34, - 0x24,0x10,0x42,0x01,0x00,0x00,0xA9,0xAC,0x00,0x00,0xC2,0xAC, - 0x2B,0x10,0x07,0x00,0xC0,0x10,0x02,0x00,0x00,0x00,0x6B,0xAC, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x82,0xAC,0x07,0xA2,0x03,0x3C, - 0x28,0x01,0x63,0x34,0x03,0x00,0x02,0x24,0x00,0xA3,0x01,0x3C, - 0x14,0x01,0x20,0xAC,0x08,0x00,0xE0,0x03,0x00,0x00,0x62,0xAC, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x21,0x18,0x00,0x00, - 0x07,0xA2,0x06,0x3C,0x28,0x01,0xC6,0x34,0x0F,0x00,0x04,0x3C, - 0x3F,0x42,0x84,0x34,0x00,0x00,0xC5,0x8C,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA2,0x30,0x07,0x00,0x40,0x14,0x01,0x00,0x63,0x24, - 0x2A,0x10,0x83,0x00,0xF9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0xB2,0x20,0xC0,0x08,0xD0,0x77,0x84,0x24, - 0x14,0x81,0x82,0x8F,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x14, - 0x21,0x18,0x00,0x00,0xB5,0x20,0xC0,0x08,0x21,0x10,0x00,0x00, - 0x01,0x00,0x05,0x24,0x0F,0x00,0x04,0x3C,0x3F,0x42,0x84,0x34, - 0x00,0xA3,0x02,0x3C,0x14,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0xF7,0xFF,0x45,0x10,0x01,0x00,0x63,0x24,0x2A,0x10,0x83,0x00, - 0xF9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0xA3,0x05,0x3C, - 0x14,0x01,0xA5,0x8C,0x01,0x83,0x04,0x3C,0xF8,0x77,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF, - 0x21,0x48,0xC0,0x00,0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x21,0x40,0x00,0x00,0x24,0x20,0x83,0x00,0x00,0xA0,0x02,0x3C, - 0x25,0x20,0x82,0x00,0x24,0x28,0xA3,0x00,0x10,0x00,0x20,0x19, - 0x25,0x28,0xA2,0x00,0x00,0x00,0x86,0x90,0x00,0x00,0xA7,0x90, - 0x00,0x00,0x00,0x00,0x07,0x00,0xC7,0x10,0x01,0x00,0xA5,0x24, - 0x01,0x83,0x04,0x3C,0x28,0x78,0x84,0x24,0x97,0x39,0xC0,0x0C, - 0x21,0x28,0x00,0x01,0xD5,0x20,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x01,0x00,0x08,0x25,0x2A,0x10,0x09,0x01,0xF2,0xFF,0x40,0x14, - 0x01,0x00,0x84,0x24,0x21,0x10,0x00,0x00,0x18,0x00,0xBF,0x8F, - 0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x02,0x3C,0xE8,0x05,0x42,0x8C,0x98,0xFF,0xBD,0x27, - 0x50,0x00,0xB4,0xAF,0x78,0x00,0xB4,0x8F,0x40,0x00,0xB0,0xAF, - 0x21,0x80,0xA0,0x00,0x44,0x00,0xB1,0xAF,0x21,0x88,0xC0,0x00, - 0x48,0x00,0xB2,0xAF,0x21,0x90,0xE0,0x00,0x64,0x00,0xBF,0xAF, - 0x60,0x00,0xBE,0xAF,0x5C,0x00,0xB7,0xAF,0x58,0x00,0xB6,0xAF, - 0x54,0x00,0xB5,0xAF,0x4C,0x00,0xB3,0xAF,0x0C,0x00,0x40,0x10, - 0x10,0x00,0xA4,0xAF,0x00,0xA3,0x02,0x3C,0xEC,0x05,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x02,0x3C,0xEC,0x05,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x08,0x42,0x2C,0x0A,0x00,0x40,0x14,0x10,0x00,0x02,0x3C, - 0x00,0xA3,0x05,0x3C,0xE8,0x05,0xA5,0x8C,0x00,0xA3,0x06,0x3C, - 0xEC,0x05,0xC6,0x8C,0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C, - 0x5C,0x78,0x84,0x24,0x3F,0x22,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA8,0x8F,0x00,0x00,0x00,0x00,0x2B,0x10,0x48,0x00, - 0x06,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x8C,0x78,0x84,0x24,0x3F,0x22,0xC0,0x08, - 0x00,0x00,0x00,0x00,0xE0,0x83,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x00,0xA3,0x04,0x3C, - 0xEC,0x05,0x84,0x8C,0x8B,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0xFF,0x1F,0x03,0x3C,0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00, - 0x00,0xA0,0x03,0x3C,0x25,0x10,0x43,0x00,0xE0,0x83,0x82,0xAF, - 0xE4,0x83,0x82,0x8F,0x00,0x00,0x00,0x00,0x0B,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0xA3,0x04,0x3C,0xEC,0x05,0x84,0x8C, - 0x8B,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00,0xFF,0x1F,0x03,0x3C, - 0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00,0x00,0xA0,0x03,0x3C, - 0x25,0x10,0x43,0x00,0xE4,0x83,0x82,0xAF,0xE0,0x83,0x85,0x8F, - 0x00,0xA3,0x06,0x3C,0xE8,0x05,0xC6,0x8C,0xE4,0x83,0x87,0x8F, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0xB0,0x78,0x84,0x24, - 0x00,0x81,0x85,0x8F,0x04,0x81,0x86,0x8F,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0xE8,0x78,0x84,0x24,0x07,0xA2,0x02,0x3C, - 0xE8,0x00,0x42,0x34,0x00,0x00,0x53,0x8C,0x01,0x00,0x03,0x82, - 0x69,0x00,0x02,0x24,0x07,0x00,0x62,0x14,0xFB,0xFF,0x02,0x3C, - 0x01,0x00,0x02,0x24,0x14,0x81,0x82,0xAF,0x04,0x00,0x02,0x3C, - 0x00,0x08,0x42,0x34,0x42,0x21,0xC0,0x08,0x25,0x98,0x62,0x02, - 0x14,0x81,0x80,0xAF,0xFF,0xF7,0x42,0x34,0x24,0x98,0x62,0x02, - 0x07,0xA2,0x02,0x3C,0xE8,0x00,0x42,0x34,0x00,0x00,0x53,0xAC, - 0x00,0x00,0x05,0x82,0x72,0x00,0x02,0x24,0x03,0x00,0xA2,0x10, - 0x52,0x00,0x02,0x24,0x03,0x00,0xA2,0x14,0x77,0x00,0x02,0x24, - 0x62,0x21,0xC0,0x08,0x21,0xB0,0x00,0x00,0x03,0x00,0xA2,0x10, - 0x57,0x00,0x02,0x24,0x03,0x00,0xA2,0x14,0x6C,0x00,0x02,0x24, - 0x62,0x21,0xC0,0x08,0x01,0x00,0x16,0x24,0x03,0x00,0xA2,0x10, - 0x4C,0x00,0x02,0x24,0x03,0x00,0xA2,0x14,0x74,0x00,0x02,0x24, - 0x62,0x21,0xC0,0x08,0x02,0x00,0x16,0x24,0x76,0x00,0xA2,0x10, - 0x54,0x00,0x02,0x24,0x74,0x00,0xA2,0x10,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0x14,0x79,0x84,0x24, - 0x3F,0x22,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x82, - 0x00,0x00,0x00,0x00,0x0C,0x00,0xC0,0x10,0x63,0x00,0x02,0x24, - 0x03,0x00,0xC2,0x10,0x43,0x00,0x02,0x24,0x04,0x00,0xC2,0x14, - 0x21,0x98,0x00,0x00,0x05,0x00,0x13,0x24,0x75,0x21,0xC0,0x08, - 0x05,0x00,0x15,0x24,0x02,0x83,0x01,0x3C,0xB0,0x82,0x32,0xA0, - 0x75,0x21,0xC0,0x08,0x21,0xA8,0x00,0x00,0x21,0xA8,0x00,0x00, - 0x05,0x00,0x13,0x24,0x02,0x83,0x01,0x3C,0xB0,0x82,0x20,0xA0, - 0x10,0x00,0xA8,0x8F,0x00,0xA3,0x12,0x3C,0xEC,0x05,0x52,0x8E, - 0x00,0x00,0x00,0x00,0xC5,0x00,0x00,0x11,0xFF,0xFF,0x14,0x25, - 0xFF,0xFF,0xC2,0x26,0x02,0x00,0x57,0x2C,0x02,0x00,0x1E,0x24, - 0x21,0x80,0xA0,0x02,0x2A,0x10,0x70,0x02,0x49,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x2A,0x00,0xE0,0x12,0x05,0x00,0x02,0x24, - 0x0D,0x00,0x02,0x16,0x00,0x00,0x00,0x00,0x19,0x00,0x40,0x1A, - 0x21,0x88,0x00,0x00,0xE0,0x83,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x21,0x10,0x51,0x00,0x00,0x00,0x51,0xA0,0x01,0x00,0x31,0x26, - 0x2A,0x10,0x32,0x02,0xF9,0xFF,0x40,0x14,0x21,0x30,0x40,0x02, - 0xA1,0x21,0xC0,0x08,0x00,0x00,0x00,0x00,0x02,0x83,0x03,0x3C, - 0x21,0x18,0x70,0x00,0xB0,0x82,0x63,0x90,0x00,0x00,0x00,0x00, - 0x09,0x00,0x40,0x1A,0x21,0x88,0x00,0x00,0xE0,0x83,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x21,0x10,0x51,0x00,0x01,0x00,0x31,0x26, - 0x00,0x00,0x43,0xA0,0x2A,0x10,0x32,0x02,0xF9,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x21,0x30,0x40,0x02,0x00,0xA3,0x04,0x3C, - 0xE8,0x05,0x84,0x8C,0xE0,0x83,0x85,0x8F,0x00,0x00,0x00,0x00, - 0x54,0x20,0xC0,0x0C,0x01,0x00,0x07,0x24,0x84,0x20,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x8B,0x20,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x93,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x03,0x00,0xC0,0x12, - 0x21,0x30,0x40,0x02,0x16,0x00,0xDE,0x16,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x04,0x3C,0xE8,0x05,0x84,0x8C,0xE4,0x83,0x85,0x8F, - 0x00,0x00,0x00,0x00,0x54,0x20,0xC0,0x0C,0x21,0x38,0x00,0x00, - 0x84,0x20,0xC0,0x0C,0x00,0x00,0x00,0x00,0x8B,0x20,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x83,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x08,0x00,0xDE,0x16,0x00,0x00,0x00,0x00,0xE0,0x83,0x84,0x8F, - 0xE4,0x83,0x85,0x8F,0x00,0x00,0x00,0x00,0xB9,0x20,0xC0,0x0C, - 0x21,0x30,0x40,0x02,0x7A,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x70,0x02,0xB9,0xFF,0x40,0x10, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x94,0x26,0xFF,0xFF,0x02,0x24, - 0xB2,0xFF,0x82,0x16,0x21,0x80,0xA0,0x02,0x3F,0x22,0xC0,0x08, - 0x00,0x00,0x00,0x00,0xB4,0x09,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x22,0x0A,0xC0,0x0C,0x01,0x00,0x04,0x24,0x00,0x00,0x22,0x82, - 0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x10,0x21,0xB8,0x00,0x00, - 0x18,0x00,0xA0,0xAF,0x02,0x83,0x01,0x3C,0xB8,0x82,0x34,0xA4, - 0xE3,0x21,0xC0,0x08,0x21,0xB0,0x00,0x00,0x06,0x00,0x17,0x24, - 0x04,0x00,0x02,0x24,0x18,0x00,0xA0,0xAF,0x02,0x83,0x01,0x3C, - 0xB8,0x82,0x22,0xA4,0x21,0xB0,0x00,0x00,0x00,0x08,0x1E,0x24, - 0x18,0x00,0xB1,0x8F,0x00,0x00,0x00,0x00,0x2A,0x10,0xF1,0x02, - 0x53,0x00,0x40,0x14,0x40,0x10,0x11,0x00,0x02,0x83,0x08,0x3C, - 0xB8,0x82,0x08,0x25,0x21,0xA8,0x48,0x00,0x00,0x00,0xB2,0x96, - 0x00,0x00,0x00,0x00,0x1A,0x00,0xD2,0x03,0x02,0x00,0x40,0x16, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0xFF,0xFF,0x01,0x24, - 0x04,0x00,0x41,0x16,0x00,0x80,0x01,0x3C,0x02,0x00,0xC1,0x17, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x06,0x00,0x12,0x10,0x00,0x00, - 0x10,0x00,0xA8,0x8F,0x00,0x00,0x00,0x00,0x18,0x00,0x48,0x00, - 0x21,0x38,0xC0,0x02,0x21,0x80,0x00,0x00,0x00,0xA3,0x13,0x3C, - 0x04,0x01,0x73,0x8E,0x00,0xA3,0x04,0x3C,0xE8,0x05,0x84,0x8C, - 0xE0,0x83,0x85,0x8F,0x12,0xA0,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x54,0x20,0xC0,0x0C,0x21,0x30,0x40,0x02, - 0x0A,0x00,0x80,0x1A,0x00,0x00,0x00,0x00,0x84,0x20,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x8B,0x20,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x30,0x00,0x40,0x14,0x01,0x00,0x10,0x26,0x2A,0x10,0x14,0x02, - 0xF8,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x01,0x83,0x05,0x3C, - 0x6C,0x79,0xA5,0x24,0x00,0xA3,0x10,0x3C,0x04,0x01,0x10,0x8E, - 0x03,0x00,0xC0,0x12,0x00,0x00,0x00,0x00,0x01,0x83,0x05,0x3C, - 0x60,0x79,0xA5,0x24,0x01,0x83,0x04,0x3C,0x40,0x79,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x21,0x30,0x40,0x02,0x13,0x00,0x13,0x12, - 0x18,0x00,0x92,0x02,0x12,0x18,0x00,0x00,0x23,0x10,0x13,0x02, - 0x00,0x00,0x00,0x00,0x1B,0x00,0x62,0x00,0x02,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0x12,0x10,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x78,0x79,0x84,0x24,0x40,0x29,0x02,0x00, - 0x23,0x28,0xA2,0x00,0x80,0x28,0x05,0x00,0x21,0x28,0xA2,0x00, - 0x97,0x39,0xC0,0x0C,0xC0,0x28,0x05,0x00,0x37,0x22,0xC0,0x08, - 0x02,0x00,0xB5,0x26,0x01,0x83,0x04,0x3C,0x88,0x79,0x84,0x24, - 0x97,0x39,0xC0,0x0C,0x02,0x00,0xB5,0x26,0x01,0x00,0x31,0x26, - 0x2A,0x10,0xF1,0x02,0xB2,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x01,0x00,0xD6,0x26,0x02,0x00,0xC2,0x2A,0xA6,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x64,0x00,0xBF,0x8F,0x60,0x00,0xBE,0x8F, - 0x5C,0x00,0xB7,0x8F,0x58,0x00,0xB6,0x8F,0x54,0x00,0xB5,0x8F, - 0x50,0x00,0xB4,0x8F,0x4C,0x00,0xB3,0x8F,0x48,0x00,0xB2,0x8F, - 0x44,0x00,0xB1,0x8F,0x40,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x68,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x2B,0x10,0x86,0x00, - 0x00,0x00,0xA4,0xAF,0x04,0x00,0xA5,0xAF,0x08,0x00,0xA6,0xAF, - 0x07,0x00,0x40,0x14,0x0C,0x00,0xA7,0xAF,0x2B,0x10,0xC4,0x00, - 0x05,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0x2B,0x10,0xA7,0x00, - 0x02,0x00,0x40,0x10,0x2B,0x10,0xE5,0x00,0xFF,0xFF,0x02,0x24, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x03,0x83,0x04,0x3C,0x80,0xEF,0x84,0x24,0xAA,0x00,0x05,0x24, - 0x10,0x00,0xBF,0xAF,0x18,0x42,0xC0,0x0C,0x3C,0x00,0x06,0x24, - 0x02,0x83,0x06,0x3C,0xD0,0x82,0xC6,0x24,0x02,0x83,0x02,0x3C, - 0x84,0xD9,0x42,0x8C,0x02,0x83,0x03,0x3C,0x88,0xD9,0x63,0x84, - 0x00,0x00,0xC2,0xAC,0x04,0x00,0xC3,0xA4,0x02,0x83,0x02,0x3C, - 0xEA,0x82,0x42,0x94,0x02,0x83,0x03,0x3C,0xE4,0x82,0x63,0x94, - 0x02,0x83,0x04,0x3C,0xE6,0x82,0x84,0x94,0x02,0x83,0x05,0x3C, - 0xE8,0x82,0xA5,0x94,0x03,0x83,0x01,0x3C,0x88,0xEF,0x22,0xA4, - 0x02,0x83,0x02,0x3C,0xE2,0x82,0x42,0x94,0x03,0x83,0x0A,0x3C, - 0x8A,0xEF,0x4A,0x25,0x03,0x00,0xC7,0x88,0x00,0x00,0xC7,0x98, - 0x04,0x00,0xC8,0x80,0x05,0x00,0xC9,0x80,0x03,0x00,0x47,0xA9, - 0x00,0x00,0x47,0xB9,0x04,0x00,0x48,0xA1,0x05,0x00,0x49,0xA1, - 0x03,0x83,0x01,0x3C,0x9E,0xEF,0x23,0xA4,0x03,0x83,0x01,0x3C, - 0xA2,0xEF,0x24,0xA4,0x03,0x83,0x01,0x3C,0xA6,0xEF,0x25,0xA4, - 0x03,0x83,0x01,0x3C,0xA0,0xEF,0x22,0xA4,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x03,0x83,0x02,0x3C,0x88,0xEF,0x42,0x8C,0x03,0x83,0x03,0x3C, - 0x8C,0xEF,0x63,0x8C,0x03,0x83,0x01,0x3C,0x80,0xEF,0x22,0xAC, - 0x03,0x83,0x01,0x3C,0x84,0xEF,0x23,0xAC,0x03,0x83,0x02,0x3C, - 0x9E,0xEF,0x42,0x94,0x03,0x83,0x03,0x3C,0xA0,0xEF,0x63,0x94, - 0x03,0x83,0x04,0x3C,0xA2,0xEF,0x84,0x94,0xE8,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x03,0x83,0x01,0x3C,0x9A,0xEF,0x23,0xA4, - 0x18,0x84,0x83,0x8F,0x14,0x00,0xBF,0xAF,0x03,0x83,0x01,0x3C, - 0x90,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C,0x94,0xEF,0x20,0xAC, - 0x03,0x83,0x01,0x3C,0xA8,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C, - 0xAC,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C,0xB8,0xEF,0x20,0xA4, - 0x03,0x83,0x01,0x3C,0xB4,0xEF,0x20,0xA4,0x03,0x83,0x01,0x3C, - 0x98,0xEF,0x22,0xA4,0x21,0x10,0x44,0x00,0x03,0x83,0x01,0x3C, - 0x9C,0xEF,0x24,0xA4,0x03,0x83,0x01,0x3C,0xA4,0xEF,0x22,0xA4, - 0x08,0x00,0x60,0x18,0x01,0x00,0x10,0x24,0xCE,0x22,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x18,0x84,0x82,0x8F,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x50,0x00,0xFA,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x06,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00,0x6C,0x23,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C, - 0xB0,0xEF,0x22,0xA4,0x03,0x00,0x02,0x24,0x03,0x83,0x01,0x3C, - 0xB2,0xEF,0x20,0xA4,0x03,0x83,0x01,0x3C,0xC4,0xEF,0x22,0xAC, - 0x02,0x83,0x01,0x3C,0x54,0xDA,0x22,0xAC,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00, - 0x10,0x00,0xB0,0xAF,0xC0,0x81,0x11,0x00,0x03,0x83,0x04,0x3C, - 0xC0,0xEF,0x84,0x24,0x21,0x20,0x04,0x02,0xBB,0x00,0x05,0x24, - 0x18,0x00,0xBF,0xAF,0x18,0x42,0xC0,0x0C,0x80,0x00,0x06,0x24, - 0x02,0x83,0x02,0x3C,0xEC,0x82,0x42,0x94,0x64,0x00,0x03,0x24, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xC8,0xEF,0x23,0xAC, - 0x00,0x12,0x02,0x00,0x25,0x10,0x22,0x02,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x30,0x00,0xC0,0xEF,0x22,0xA4,0x4E,0x23,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x04,0x00,0x02,0x24,0x40,0x8A,0x11,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xC4,0xEF,0x22,0xAC, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x31,0x00,0x54,0xDA,0x22,0xAC, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xE4,0xEF,0x20,0xAC, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xE8,0xEF,0x20,0xAC, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x1A,0xF0,0x20,0xA4, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x1E,0xF0,0x20,0xA4, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x22,0xF0,0x20,0xA4, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x28,0xF0,0x20,0xAC, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0x18,0x84,0x82,0x8F, - 0xD8,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF,0x01,0x00,0x11,0x24, - 0x24,0x00,0xBF,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x37,0x00,0x40,0x18,0x10,0x00,0xB0,0xAF, - 0x03,0x83,0x14,0x3C,0x94,0xEF,0x94,0x26,0x03,0x83,0x02,0x3C, - 0xE8,0xEF,0x42,0x24,0x80,0x00,0x53,0x24,0x7C,0x00,0x52,0x24, - 0x80,0x00,0x10,0x24,0x00,0x00,0x82,0x8E,0x00,0x00,0x00,0x00, - 0x06,0x00,0x22,0x16,0x21,0x20,0x20,0x02,0x00,0x00,0x40,0xAE, - 0x9D,0x23,0xC0,0x0C,0x00,0x00,0x60,0xAE,0x40,0x23,0xC0,0x08, - 0x80,0x00,0x73,0x26,0x03,0x83,0x04,0x3C,0x21,0x20,0x90,0x00, - 0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C,0x21,0x28,0xB0,0x00, - 0xDC,0xEF,0xA5,0x8C,0xF4,0xFF,0x86,0x8E,0xF8,0xFF,0x87,0x8E, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x11,0x00,0x40,0x14, - 0x21,0x20,0x20,0x02,0x03,0x83,0x03,0x3C,0x21,0x18,0x70,0x00, - 0xE0,0xEF,0x63,0x94,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0xC0,0xEF,0x42,0x94,0x00,0x00,0x00,0x00,0x08,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0x1A,0xF0,0x20,0xA4,0x9D,0x23,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x40,0x23,0xC0,0x08,0x80,0x00,0x73,0x26,0x00,0x00,0x40,0xAE, - 0xB5,0x23,0xC0,0x0C,0x00,0x00,0x60,0xAE,0x80,0x00,0x73,0x26, - 0x80,0x00,0x52,0x26,0x18,0x84,0x82,0x8F,0x01,0x00,0x31,0x26, - 0x2A,0x10,0x51,0x00,0xD2,0xFF,0x40,0x10,0x80,0x00,0x10,0x26, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xC0,0x21,0x04,0x00, - 0x03,0x83,0x02,0x3C,0xCC,0xEF,0x42,0x24,0x21,0x18,0x82,0x00, - 0x03,0x83,0x05,0x3C,0x80,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C, - 0x84,0xEF,0xC6,0x8C,0x00,0x00,0x65,0xAC,0x04,0x00,0x66,0xAC, - 0x0C,0x00,0x42,0x24,0x03,0x83,0x03,0x3C,0x90,0xEF,0x63,0x8C, - 0x21,0x10,0x82,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x24,0x00, - 0xD4,0xEF,0x23,0xAC,0x03,0x83,0x03,0x3C,0x88,0xEF,0x63,0x8C, - 0x03,0x83,0x05,0x3C,0x8C,0xEF,0xA5,0x8C,0x00,0x00,0x43,0xAC, - 0x04,0x00,0x45,0xAC,0x03,0x83,0x02,0x3C,0x21,0x10,0x44,0x00, - 0xC0,0xEF,0x42,0x94,0x03,0x83,0x01,0x3C,0x21,0x08,0x24,0x00, - 0x08,0x00,0xE0,0x03,0xE0,0xEF,0x22,0xA4,0x18,0x84,0x82,0x8F, - 0xE0,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF,0x01,0x00,0x11,0x24, - 0x18,0x00,0xBF,0xAF,0x26,0x00,0x40,0x18,0x10,0x00,0xB0,0xAF, - 0x80,0x00,0x10,0x24,0x03,0x83,0x04,0x3C,0x21,0x20,0x90,0x00, - 0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C,0x21,0x28,0xB0,0x00, - 0xDC,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C, - 0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x12,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x21,0x18,0x70,0x00,0xE0,0xEF,0x63,0x94, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0xC0,0xEF,0x42,0x94, - 0x00,0x00,0x00,0x00,0x09,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0xC4,0xEF,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x03,0x24,0xC0,0x0C,0x21,0x20,0x20,0x02,0x18,0x84,0x82,0x8F, - 0x01,0x00,0x31,0x26,0x2A,0x10,0x51,0x00,0xDD,0xFF,0x40,0x10, - 0x80,0x00,0x10,0x26,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xC0,0x29,0x04,0x00,0x03,0x83,0x03,0x3C,0x21,0x18,0x65,0x00, - 0xC4,0xEF,0x63,0x8C,0x04,0x00,0x02,0x24,0x10,0x00,0x62,0x14, - 0xF0,0xFF,0xBD,0x27,0x01,0x00,0x02,0x24,0x40,0x1A,0x04,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00,0xC4,0xEF,0x22,0xAC, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x23,0x00,0x54,0xDA,0x22,0xAC, - 0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00, - 0x1E,0xF0,0x22,0xA4,0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00, - 0x20,0xF0,0x20,0xA4,0x08,0x00,0xE0,0x03,0x10,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00, - 0x10,0x00,0xB0,0xAF,0xC0,0x81,0x12,0x00,0x1C,0x00,0xBF,0xAF, - 0x14,0x00,0xB1,0xAF,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0xC4,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x12,0x00,0x40,0x10, - 0x04,0x00,0x11,0x24,0x10,0x00,0x51,0x10,0xFE,0xFF,0x42,0x24, - 0x02,0x00,0x42,0x2C,0x04,0x00,0x40,0x10,0x40,0x12,0x12,0x00, - 0xD9,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00,0x40,0x12,0x12,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xC4,0xEF,0x31,0xAC, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x54,0xDA,0x31,0xAC, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x1E,0xF0,0x20,0xA4, - 0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0x03,0x83,0x04,0x3C,0x80,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C, - 0x84,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C, - 0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C,0xE8,0xFF,0xBD,0x27, - 0x10,0x00,0xBF,0xAF,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x0A,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C, - 0xAC,0xEF,0x22,0xAC,0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C, - 0xB4,0xEF,0x22,0xA4,0x03,0x83,0x01,0x3C,0xB6,0xEF,0x20,0xA4, - 0xFD,0x23,0xC0,0x08,0x01,0x00,0x02,0x24,0x03,0x83,0x02,0x3C, - 0xA8,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x14, - 0x01,0x00,0x02,0x24,0x80,0x24,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0xB8,0xEF,0x22,0xA4, - 0x03,0x83,0x01,0x3C,0xBA,0xEF,0x20,0xA4,0x01,0x00,0x02,0x24, - 0x03,0x83,0x01,0x3C,0xA8,0xEF,0x22,0xAC,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00, - 0x10,0x00,0xB0,0xAF,0xC0,0x81,0x11,0x00,0x18,0x00,0xBF,0xAF, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0x22,0xF0,0x42,0x84, - 0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x10,0x01,0x00,0x02,0x24, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x7B,0x24,0xC0,0x08, - 0xE8,0xEF,0x22,0xAC,0x03,0x83,0x04,0x3C,0x80,0xEF,0x84,0x24, - 0x03,0x83,0x02,0x3C,0xF0,0xEF,0x42,0x24,0x21,0x18,0x02,0x02, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xEC,0xEF,0x20,0xA4, - 0x00,0x00,0x85,0x8C,0x04,0x00,0x86,0x8C,0x00,0x00,0x65,0xAC, - 0x04,0x00,0x66,0xAC,0x0C,0x00,0x42,0x24,0x03,0x83,0x03,0x3C, - 0x90,0xEF,0x63,0x8C,0x21,0x10,0x02,0x02,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x30,0x00,0xF8,0xEF,0x23,0xAC,0x03,0x83,0x03,0x3C, - 0x88,0xEF,0x63,0x8C,0x03,0x83,0x05,0x3C,0x8C,0xEF,0xA5,0x8C, - 0x00,0x00,0x43,0xAC,0x04,0x00,0x45,0xAC,0x03,0x83,0x02,0x3C, - 0x21,0x10,0x50,0x00,0xC0,0xEF,0x42,0x94,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x30,0x00,0x04,0xF0,0x22,0xA4,0x00,0x00,0x84,0x8C, - 0x03,0x83,0x05,0x3C,0x84,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C, - 0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0x4E,0x24,0xC0,0x08,0x06,0xF0,0x20,0xA4,0x03,0x83,0x02,0x3C, - 0x94,0xEF,0x42,0x8C,0x02,0x83,0x03,0x3C,0xE0,0x82,0x63,0x94, - 0xC0,0x11,0x02,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x1C,0xF0,0x22,0x94,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x06,0xF0,0x22,0xA4, - 0x03,0x83,0x02,0x3C,0x98,0xEF,0x42,0x94,0xC0,0x81,0x11,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x08,0xF0,0x22,0xA4, - 0x03,0x83,0x02,0x3C,0x9A,0xEF,0x42,0x94,0x21,0x20,0x20,0x02, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x0A,0xF0,0x22,0xA4, - 0x03,0x83,0x03,0x3C,0x9C,0xEF,0x63,0x94,0x03,0x83,0x02,0x3C, - 0x21,0x10,0x50,0x00,0xE4,0xEF,0x42,0x8C,0x03,0x83,0x05,0x3C, - 0xEC,0xEF,0xA5,0x24,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0xE4,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0x10,0xF0,0x22,0xAC,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0x0C,0xF0,0x23,0xA4,0x03,0x83,0x02,0x3C,0xAC,0xEF,0x42,0x8C, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x14,0xF0,0x22,0xAC, - 0x88,0x27,0xC0,0x0C,0x21,0x28,0x05,0x02,0x01,0x00,0x02,0x24, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0xE8,0xEF,0x20,0xAC, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x22,0xF0,0x22,0xA4, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00,0x24,0xF0,0x20,0xA4, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x80,0x00,0x02,0x24,0x03,0x83,0x04,0x3C,0x94,0xEF,0x84,0x8C, - 0x03,0x83,0x05,0x3C,0x18,0xF0,0xA5,0x24,0x10,0x00,0xBF,0xAF, - 0xC0,0x19,0x04,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x23,0x00, - 0x18,0xF0,0x22,0xA4,0xCF,0x27,0xC0,0x0C,0x21,0x28,0x65,0x00, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0xEC,0x79,0x84,0x24, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF, - 0x9E,0x24,0xC0,0x0C,0x00,0x00,0x00,0x00,0x45,0x25,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x18,0x84,0x82,0x8F, - 0xD0,0xFF,0xBD,0x27,0x18,0x00,0xB2,0xAF,0x21,0x90,0x00,0x00, - 0x1C,0x00,0xB3,0xAF,0x01,0x00,0x13,0x24,0x2C,0x00,0xBF,0xAF, - 0x28,0x00,0xB6,0xAF,0x24,0x00,0xB5,0xAF,0x20,0x00,0xB4,0xAF, - 0x14,0x00,0xB1,0xAF,0x6E,0x00,0x40,0x18,0x10,0x00,0xB0,0xAF, - 0x03,0x83,0x15,0x3C,0x88,0xEF,0xB5,0x26,0x03,0x83,0x16,0x3C, - 0xC0,0xEF,0xD6,0x26,0x80,0x00,0xD0,0x26,0x80,0x00,0x14,0x24, - 0xC0,0x11,0x12,0x00,0x03,0x83,0x04,0x3C,0x21,0x20,0x94,0x00, - 0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C,0x21,0x28,0xB4,0x00, - 0xDC,0xEF,0xA5,0x8C,0x00,0x00,0xA6,0x8E,0x03,0x83,0x07,0x3C, - 0x8C,0xEF,0xE7,0x8C,0x00,0x00,0x00,0x00,0x4C,0x22,0xC0,0x0C, - 0x21,0x88,0x56,0x00,0x0A,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x21,0x18,0x74,0x00,0xE0,0xEF,0x63,0x94, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x54,0x00,0xC0,0xEF,0x42,0x94, - 0x00,0x00,0x00,0x00,0x4A,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x46,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x04,0x8E,0x10,0x00,0x05,0x8E, - 0x00,0x00,0xA6,0x8E,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x3D,0x00,0x41,0x04, - 0x00,0x00,0x00,0x00,0x3A,0x00,0x40,0x12,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x04,0x8E,0x10,0x00,0x05,0x8E,0x0C,0x00,0x26,0x8E, - 0x10,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x32,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x0C,0x00,0x04,0x8E, - 0x10,0x00,0x05,0x8E,0x0C,0x00,0x26,0x8E,0x10,0x00,0x27,0x8E, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x2B,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x14,0x00,0x05,0x8E,0x08,0x00,0x03,0x8E, - 0x14,0x00,0x24,0x8E,0x08,0x00,0x22,0x8E,0x21,0x28,0xA3,0x00, - 0x21,0x20,0x82,0x00,0x2B,0x10,0xA4,0x00,0x21,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x20,0x00,0xA4,0x14,0x00,0x00,0x00,0x00, - 0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E,0x18,0x00,0x26,0x8E, - 0x1C,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x17,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x18,0x00,0x04,0x8E, - 0x1C,0x00,0x05,0x8E,0x18,0x00,0x26,0x8E,0x1C,0x00,0x27,0x8E, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x96,0x20,0x00,0x23,0x96, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x83,0x00,0x09,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x08,0x00,0x83,0x14,0x00,0x00,0x00,0x00, - 0x00,0x00,0x02,0x96,0x00,0x00,0x23,0x96,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x02,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x21,0x90,0x60,0x02,0x80,0x00,0x10,0x26,0x18,0x84,0x82,0x8F, - 0x01,0x00,0x73,0x26,0x2A,0x10,0x53,0x00,0x9A,0xFF,0x40,0x10, - 0x80,0x00,0x94,0x26,0x03,0x83,0x01,0x3C,0x94,0xEF,0x32,0xAC, - 0x0C,0x00,0x40,0x16,0xC0,0x11,0x12,0x00,0x03,0x83,0x02,0x3C, - 0x88,0xEF,0x42,0x8C,0x03,0x83,0x03,0x3C,0x8C,0xEF,0x63,0x8C, - 0x03,0x83,0x01,0x3C,0x80,0xEF,0x22,0xAC,0x03,0x83,0x01,0x3C, - 0x84,0xEF,0x23,0xAC,0x03,0x83,0x01,0x3C,0x3B,0x25,0xC0,0x08, - 0x90,0xEF,0x20,0xAC,0x03,0x83,0x03,0x3C,0x21,0x18,0x62,0x00, - 0xCC,0xEF,0x63,0x8C,0x03,0x83,0x04,0x3C,0x21,0x20,0x82,0x00, - 0xD0,0xEF,0x84,0x8C,0x03,0x83,0x01,0x3C,0x80,0xEF,0x23,0xAC, - 0x03,0x83,0x01,0x3C,0x84,0xEF,0x24,0xAC,0x03,0x83,0x03,0x3C, - 0x21,0x18,0x62,0x00,0xD4,0xEF,0x63,0x8C,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xC8,0xEF,0x22,0x8C,0x00,0x00,0x00,0x00, - 0x21,0x18,0x62,0x00,0x03,0x83,0x01,0x3C,0x90,0xEF,0x23,0xAC, - 0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F, - 0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0x18,0x84,0x82,0x8F,0xD0,0xFF,0xBD,0x27, - 0x24,0x00,0xB5,0xAF,0x01,0x00,0x15,0x24,0x2C,0x00,0xBF,0xAF, - 0x28,0x00,0xB6,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x52,0x00,0x40,0x18, - 0x10,0x00,0xB0,0xAF,0x03,0x83,0x16,0x3C,0x88,0xEF,0xD6,0x26, - 0x03,0x83,0x02,0x3C,0xE0,0xEF,0x42,0x24,0x80,0x00,0x54,0x24, - 0x60,0x00,0x53,0x24,0x7C,0x00,0x52,0x24,0x78,0x00,0x51,0x24, - 0x80,0x00,0x10,0x24,0x00,0x00,0x24,0x8E,0x00,0x00,0x45,0x8E, - 0x00,0x00,0xC6,0x8E,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x37,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x96,0x00,0x00,0x62,0x96, - 0x00,0x00,0x00,0x00,0x32,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x04,0x3C,0x21,0x20,0x90,0x00,0xCC,0xEF,0x84,0x8C, - 0x03,0x83,0x05,0x3C,0x21,0x28,0xB0,0x00,0xD0,0xEF,0xA5,0x8C, - 0xF8,0xFF,0xC6,0x8E,0x03,0x83,0x07,0x3C,0x84,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x25,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x08,0x00,0xC4,0x8E,0x03,0x83,0x03,0x3C, - 0x21,0x18,0x70,0x00,0xD4,0xEF,0x63,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x83,0x00,0x1D,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x1B,0x00,0x83,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x8E, - 0x03,0x83,0x05,0x3C,0x8C,0xEF,0xA5,0x8C,0x00,0x00,0x26,0x8E, - 0x00,0x00,0x47,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x8E, - 0x03,0x83,0x05,0x3C,0x8C,0xEF,0xA5,0x8C,0x00,0x00,0x26,0x8E, - 0x00,0x00,0x47,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x09,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x96, - 0x00,0x00,0x82,0x96,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x03,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x4E,0x23,0xC0,0x0C, - 0x21,0x20,0xA0,0x02,0x80,0x00,0x94,0x26,0x80,0x00,0x73,0x26, - 0x80,0x00,0x52,0x26,0x80,0x00,0x31,0x26,0x18,0x84,0x82,0x8F, - 0x01,0x00,0xB5,0x26,0x2A,0x10,0x55,0x00,0xB9,0xFF,0x40,0x10, - 0x80,0x00,0x10,0x26,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB6,0x8F, - 0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x03,0x83,0x04,0x3C,0xB0,0xEF,0x84,0x24,0x20,0x00,0xBF,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x00,0x00,0x82,0x84,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C, - 0xB2,0xEF,0x42,0x94,0x03,0x83,0x03,0x3C,0x9A,0xEF,0x63,0x94, - 0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C,0xB2,0xEF,0x22,0xA4, - 0xFF,0xFF,0x42,0x30,0x2B,0x10,0x43,0x00,0x03,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x43,0x26,0xC0,0x0C,0x00,0x00,0x80,0xA4, - 0x03,0x83,0x04,0x3C,0xB8,0xEF,0x84,0x24,0x00,0x00,0x82,0x84, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x03,0x83,0x02,0x3C,0xBA,0xEF,0x42,0x94,0x03,0x83,0x03,0x3C, - 0x9A,0xEF,0x63,0x94,0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C, - 0xBA,0xEF,0x22,0xA4,0xFF,0xFF,0x42,0x30,0x2B,0x10,0x43,0x00, - 0x03,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x50,0x26,0xC0,0x0C, - 0x00,0x00,0x80,0xA4,0x03,0x83,0x04,0x3C,0xB4,0xEF,0x84,0x24, - 0x00,0x00,0x82,0x84,0x00,0x00,0x00,0x00,0x0E,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C,0xB6,0xEF,0x42,0x94, - 0x03,0x83,0x03,0x3C,0xA4,0xEF,0x63,0x94,0x01,0x00,0x42,0x24, - 0x03,0x83,0x01,0x3C,0xB6,0xEF,0x22,0xA4,0xFF,0xFF,0x42,0x30, - 0x2B,0x10,0x43,0x00,0x03,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x5D,0x26,0xC0,0x0C,0x00,0x00,0x80,0xA4,0x18,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x4E,0x00,0x40,0x18,0x01,0x00,0x11,0x24, - 0x03,0x83,0x02,0x3C,0xC0,0xEF,0x42,0x24,0xE2,0x00,0x53,0x24, - 0x80,0x00,0x52,0x24,0x80,0x00,0x10,0x24,0x03,0x83,0x02,0x3C, - 0x21,0x10,0x50,0x00,0x1E,0xF0,0x42,0x84,0x00,0x00,0x00,0x00, - 0x12,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C, - 0x21,0x10,0x50,0x00,0x20,0xF0,0x42,0x94,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x60,0x00,0x42,0xA6,0x03,0x83,0x03,0x3C, - 0x9C,0xEF,0x63,0x94,0xFF,0xFF,0x42,0x30,0x2B,0x10,0x43,0x00, - 0x06,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x30,0x00,0x1E,0xF0,0x20,0xA4,0x87,0x26,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x1A,0xF0,0x42,0x84,0x00,0x00,0x00,0x00,0x12,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x1C,0xF0,0x42,0x94,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x5C,0x00,0x42,0xA6,0x03,0x83,0x03,0x3C,0x98,0xEF,0x63,0x94, - 0xFF,0xFF,0x42,0x30,0x2B,0x10,0x43,0x00,0x06,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x30,0x00, - 0x1A,0xF0,0x20,0xA4,0xB9,0x26,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x00,0x00,0x62,0x86,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0x24,0xF0,0x42,0x94,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x64,0x00,0x42,0xA6,0x03,0x83,0x03,0x3C,0xA6,0xEF,0x63,0x94, - 0xFF,0xFF,0x42,0x30,0x2B,0x10,0x43,0x00,0x04,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xA6,0xF7,0x26,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x80,0x00,0x73,0x26,0x80,0x00,0x52,0x26, - 0x18,0x84,0x82,0x8F,0x01,0x00,0x31,0x26,0x2A,0x10,0x51,0x00, - 0xB9,0xFF,0x40,0x10,0x80,0x00,0x10,0x26,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x6C,0x23,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C, - 0xB0,0xEF,0x22,0xA4,0x03,0x83,0x01,0x3C,0xB2,0xEF,0x20,0xA4, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF, - 0x80,0x24,0xC0,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x24, - 0x03,0x83,0x01,0x3C,0xB8,0xEF,0x22,0xA4,0x03,0x83,0x01,0x3C, - 0xBA,0xEF,0x20,0xA4,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xF0,0xFF,0xBD,0x27, - 0x03,0x83,0x01,0x3C,0xA8,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C, - 0xAC,0xEF,0x20,0xAC,0x08,0x00,0xE0,0x03,0x10,0x00,0xBD,0x27, - 0x18,0x84,0x82,0x8F,0xE0,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF, - 0x01,0x00,0x11,0x24,0x18,0x00,0xBF,0xAF,0x17,0x00,0x40,0x18, - 0x10,0x00,0xB0,0xAF,0x80,0x00,0x10,0x24,0x03,0x83,0x04,0x3C, - 0x21,0x20,0x90,0x00,0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C, - 0x21,0x28,0xB0,0x00,0xDC,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C, - 0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x14, - 0x01,0x00,0x31,0x26,0x82,0x26,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x2A,0x10,0x51,0x00, - 0xEC,0xFF,0x40,0x10,0x80,0x00,0x10,0x26,0x21,0x10,0x00,0x00, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0xC0,0x29,0x04,0x00,0x10,0x00,0xBF,0xAF,0x03,0x83,0x03,0x3C, - 0x21,0x18,0x65,0x00,0xC4,0xEF,0x63,0x8C,0x01,0x00,0x02,0x24, - 0x10,0x00,0x62,0x14,0x02,0x00,0x02,0x24,0x40,0x1A,0x04,0x00, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00,0xC4,0xEF,0x22,0xAC, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x23,0x00,0x54,0xDA,0x22,0xAC, - 0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00, - 0x1E,0xF0,0x22,0xA4,0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00, - 0xB5,0x26,0xC0,0x08,0x20,0xF0,0x20,0xA4,0x15,0x00,0x62,0x14, - 0x03,0x00,0x03,0x24,0x40,0x12,0x04,0x00,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x25,0x00,0xC4,0xEF,0x23,0xAC,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x54,0xDA,0x23,0xAC,0x03,0x83,0x02,0x3C, - 0x21,0x10,0x45,0x00,0x28,0xF0,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C,0x21,0x08,0x25,0x00, - 0x64,0x26,0xC0,0x0C,0x28,0xF0,0x22,0xAC,0x03,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0xD9,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x14,0x00,0xB1,0xAF,0x03,0x83,0x11,0x3C, - 0x80,0xEF,0x31,0x26,0x18,0x00,0xBF,0xAF,0x00,0x00,0x24,0x8E, - 0x03,0x83,0x05,0x3C,0x84,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C, - 0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x21,0x20,0x00,0x02, - 0x4E,0x23,0xC0,0x0C,0x01,0x00,0x50,0x2C,0x94,0x24,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x06,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x21,0x00,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x8E, - 0x03,0x83,0x05,0x3C,0x84,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C, - 0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C, - 0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00,0x16,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C,0x9E,0xEF,0x42,0x94, - 0x03,0x83,0x03,0x3C,0xA0,0xEF,0x63,0x94,0x03,0x83,0x04,0x3C, - 0xA2,0xEF,0x84,0x94,0x03,0x83,0x01,0x3C,0x98,0xEF,0x22,0xA4, - 0x03,0x83,0x01,0x3C,0x9A,0xEF,0x23,0xA4,0x03,0x83,0x01,0x3C, - 0xD9,0x23,0xC0,0x0C,0x9C,0xEF,0x24,0xA4,0x03,0x83,0x01,0x3C, - 0x6C,0x23,0xC0,0x0C,0xB8,0xEF,0x20,0xA4,0x01,0x00,0x02,0x24, - 0x03,0x83,0x01,0x3C,0xB0,0xEF,0x22,0xA4,0x03,0x83,0x01,0x3C, - 0xB2,0xEF,0x20,0xA4,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0xC0,0x11,0x04,0x00,0x10,0x00,0xBF,0xAF, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0xE8,0xEF,0x22,0x8C, - 0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x03,0x24,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x03,0x83,0x01,0x3C,0xA8,0xEF,0x20,0xAC,0x03,0x83,0x01,0x3C, - 0x08,0x00,0xE0,0x03,0xB8,0xEF,0x20,0xA4,0xE8,0xFF,0xBD,0x27, - 0xC0,0x19,0x04,0x00,0x01,0x00,0x02,0x24,0x10,0x00,0xBF,0xAF, - 0x03,0x83,0x01,0x3C,0x21,0x08,0x23,0x00,0x03,0x24,0xC0,0x0C, - 0xE4,0xEF,0x22,0xAC,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xC0,0x21,0x04,0x00, - 0x03,0x83,0x02,0x3C,0xCC,0xEF,0x42,0x24,0x21,0x18,0x82,0x00, - 0x04,0x00,0xA6,0x8C,0x08,0x00,0xA7,0x8C,0x00,0x00,0x66,0xAC, - 0x04,0x00,0x67,0xAC,0x0C,0x00,0x42,0x24,0x0C,0x00,0xA3,0x8C, - 0x21,0x10,0x82,0x00,0x03,0x83,0x01,0x3C,0x21,0x08,0x24,0x00, - 0xD4,0xEF,0x23,0xAC,0x10,0x00,0xA3,0x8C,0x14,0x00,0xA6,0x8C, - 0x00,0x00,0x43,0xAC,0x04,0x00,0x46,0xAC,0x18,0x00,0xA3,0x94, - 0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0x21,0x08,0x24,0x00, - 0x1A,0xF0,0x22,0xA4,0x03,0x83,0x01,0x3C,0x21,0x08,0x24,0x00, - 0xE0,0xEF,0x23,0xA4,0x1A,0x00,0xA2,0x94,0x03,0x83,0x01,0x3C, - 0x21,0x08,0x24,0x00,0x08,0x00,0xE0,0x03,0x1C,0xF0,0x22,0xA4, - 0x1C,0x00,0x82,0x94,0x03,0x83,0x01,0x3C,0x98,0xEF,0x22,0xA4, - 0x1E,0x00,0x82,0x94,0x03,0x83,0x01,0x3C,0x9A,0xEF,0x22,0xA4, - 0x20,0x00,0x82,0x94,0x03,0x83,0x01,0x3C,0x9C,0xEF,0x22,0xA4, - 0x28,0x00,0x82,0x8C,0x03,0x83,0x01,0x3C,0x08,0x00,0xE0,0x03, - 0xAC,0xEF,0x22,0xAC,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0xA0,0x00,0xC0,0x19,0x04,0x00,0x03,0x83,0x02,0x3C, - 0xC0,0xEF,0x42,0x24,0x14,0x00,0xB1,0xAF,0x21,0x88,0x62,0x00, - 0x18,0x00,0xBF,0xAF,0x04,0x00,0x04,0x8E,0x08,0x00,0x05,0x8E, - 0x0C,0x00,0x26,0x8E,0x10,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x30,0x00,0x40,0x04,0x01,0x00,0x02,0x24, - 0x04,0x00,0x04,0x8E,0x08,0x00,0x05,0x8E,0x0C,0x00,0x26,0x8E, - 0x10,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x28,0x00,0x40,0x14,0x21,0x10,0x00,0x00,0x0C,0x00,0x04,0x8E, - 0x14,0x00,0x23,0x8E,0x00,0x00,0x00,0x00,0x2B,0x10,0x83,0x00, - 0x22,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0x20,0x00,0x83,0x14, - 0x21,0x10,0x00,0x00,0x10,0x00,0x04,0x8E,0x14,0x00,0x05,0x8E, - 0x18,0x00,0x26,0x8E,0x1C,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x18,0x00,0x40,0x04,0x01,0x00,0x02,0x24, - 0x10,0x00,0x04,0x8E,0x14,0x00,0x05,0x8E,0x18,0x00,0x26,0x8E, - 0x1C,0x00,0x27,0x8E,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0x40,0x14,0x21,0x10,0x00,0x00,0x10,0x00,0x04,0x8E, - 0x14,0x00,0x05,0x8E,0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C, - 0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x14,0x01,0x00,0x02,0x24, - 0x18,0x00,0x03,0x96,0x20,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x01,0x00,0x42,0x38,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x28,0x84,0x82,0x8F,0xD8,0xFF,0xBD,0x27, - 0x14,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00,0x20,0x00,0xB4,0xAF, - 0x21,0xA0,0xA0,0x00,0x24,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x35,0x00,0x40,0x10,0x10,0x00,0xB0,0xAF, - 0x02,0x83,0x13,0x3C,0x70,0xE7,0x73,0x26,0x21,0x20,0x60,0x02, - 0x0E,0x14,0xC0,0x0C,0x01,0x00,0x05,0x24,0x21,0x80,0x40,0x00, - 0x08,0x00,0x00,0x16,0x40,0x1A,0x11,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x43,0x00,0x60,0xDA,0x42,0x8C,0x21,0x18,0x63,0x02, - 0x01,0x00,0x42,0x24,0xC7,0x27,0xC0,0x08,0xF0,0xF2,0x62,0xAC, - 0x08,0x00,0x04,0x8E,0x40,0x92,0x11,0x00,0x14,0xF2,0x65,0x26, - 0x21,0x28,0x45,0x02,0xE4,0x28,0xC0,0x0C,0x21,0x30,0x80,0x02, - 0x21,0x18,0x40,0x00,0x3C,0x00,0x62,0x28,0x02,0x00,0x40,0x10, - 0x00,0xF2,0x62,0x26,0x3C,0x00,0x03,0x24,0x21,0x88,0x42,0x02, - 0x21,0x20,0x20,0x02,0x21,0x28,0x00,0x02,0x01,0x00,0x02,0x24, - 0x11,0x00,0x02,0xA2,0x00,0x80,0x62,0x34,0x00,0x00,0x02,0xAE, - 0x47,0x16,0xC0,0x0C,0x12,0x00,0x03,0xA6,0x0A,0x00,0x40,0x14, - 0x21,0x20,0x00,0x02,0x02,0x83,0x02,0x3C,0x21,0x10,0x52,0x00, - 0x5C,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0xE4,0x14,0xC0,0x0C,0xEC,0x00,0x22,0xAE,0xC7,0x27,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x52,0x00, - 0x58,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0xE8,0x00,0x22,0xAE,0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0x28,0x84,0x82,0x8F,0xD8,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x20,0x00,0xB4,0xAF,0x21,0xA0,0xA0,0x00, - 0x24,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF, - 0x35,0x00,0x40,0x10,0x10,0x00,0xB0,0xAF,0x02,0x83,0x13,0x3C, - 0x70,0xE7,0x73,0x26,0x21,0x20,0x60,0x02,0x0E,0x14,0xC0,0x0C, - 0x01,0x00,0x05,0x24,0x21,0x80,0x40,0x00,0x08,0x00,0x00,0x16, - 0x40,0x1A,0x11,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x43,0x00, - 0x60,0xDA,0x42,0x8C,0x21,0x18,0x63,0x02,0x01,0x00,0x42,0x24, - 0x0E,0x28,0xC0,0x08,0xF0,0xF2,0x62,0xAC,0x08,0x00,0x04,0x8E, - 0x40,0x92,0x11,0x00,0x14,0xF2,0x65,0x26,0x21,0x28,0x45,0x02, - 0x82,0x29,0xC0,0x0C,0x21,0x30,0x80,0x02,0x21,0x18,0x40,0x00, - 0x3C,0x00,0x62,0x28,0x02,0x00,0x40,0x10,0x00,0xF2,0x62,0x26, - 0x3C,0x00,0x03,0x24,0x21,0x88,0x42,0x02,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x02,0x01,0x00,0x02,0x24,0x11,0x00,0x02,0xA2, - 0x00,0x80,0x62,0x34,0x00,0x00,0x02,0xAE,0x47,0x16,0xC0,0x0C, - 0x12,0x00,0x03,0xA6,0x0A,0x00,0x40,0x14,0x21,0x20,0x00,0x02, - 0x02,0x83,0x02,0x3C,0x21,0x10,0x52,0x00,0x5C,0xDA,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xE4,0x14,0xC0,0x0C, - 0xEC,0x00,0x22,0xAE,0x0E,0x28,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x02,0x83,0x02,0x3C,0x21,0x10,0x52,0x00,0x58,0xDA,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xE8,0x00,0x22,0xAE, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x14,0x00,0xB1,0xAF, - 0x21,0x88,0xA0,0x00,0x10,0x00,0xB0,0xAF,0x21,0x80,0xC0,0x00, - 0x24,0x00,0xBF,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x04,0x00,0x24,0x8E,0x08,0x00,0x25,0x8E,0x90,0x84,0x86,0x8F, - 0x02,0x83,0x07,0x3C,0x84,0xB6,0xE7,0x8C,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x0B,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x70,0x7A,0x84,0x24,0x97,0x39,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x54,0x81,0x84,0x27,0x5C,0x81,0x86,0x27, - 0xA8,0x13,0xC0,0x0C,0x06,0x00,0x05,0x26,0x94,0x28,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x03,0x83,0x14,0x3C,0x80,0xEF,0x94,0x26, - 0x00,0x00,0x84,0x8E,0x03,0x83,0x05,0x3C,0x84,0xEF,0xA5,0x8C, - 0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C, - 0x8C,0xEF,0xE7,0x8C,0x00,0x00,0x00,0x00,0x4C,0x22,0xC0,0x0C, - 0xC0,0x81,0x12,0x00,0x03,0x83,0x03,0x3C,0x21,0x18,0x70,0x00, - 0xC4,0xEF,0x63,0x8C,0x00,0x00,0x00,0x00,0x50,0x00,0x60,0x10, - 0x01,0x00,0x53,0x2C,0x21,0x20,0x40,0x02,0x43,0x27,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x32,0x00,0x40,0x10,0x21,0x20,0x40,0x02, - 0x17,0x27,0xC0,0x0C,0x21,0x28,0x20,0x02,0x94,0x24,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x06,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x84,0x8E,0x03,0x83,0x05,0x3C,0x84,0xEF,0xA5,0x8C, - 0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C,0x03,0x83,0x07,0x3C, - 0x8C,0xEF,0xE7,0x8C,0x4C,0x22,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x0E,0x00,0x60,0x12, - 0x00,0x00,0x00,0x00,0x03,0x83,0x02,0x3C,0xA8,0xEF,0x42,0x8C, - 0x03,0x83,0x01,0x3C,0x09,0x00,0x40,0x10,0xB0,0xEF,0x20,0xA4, - 0x03,0x83,0x01,0x3C,0x80,0x24,0xC0,0x0C,0xB4,0xEF,0x20,0xA4, - 0x01,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0xB8,0xEF,0x22,0xA4, - 0x03,0x83,0x01,0x3C,0xBA,0xEF,0x20,0xA4,0x03,0x83,0x02,0x3C, - 0x94,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x26,0x00,0x42,0x16, - 0x00,0x00,0x00,0x00,0x36,0x27,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x6C,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00,0x24,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x1E,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x06,0x27,0xC0,0x0C,0x00,0x00,0x00,0x00,0x94,0x28,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x03,0x83,0x04,0x3C,0x21,0x20,0x90,0x00, - 0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C,0x21,0x28,0xB0,0x00, - 0xDC,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C, - 0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x21,0x18,0x70,0x00,0xE0,0xEF,0x63,0x94, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0xC0,0xEF,0x42,0x94, - 0x00,0x00,0x00,0x00,0x03,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x03,0x24,0xC0,0x0C,0x21,0x20,0x40,0x02,0x24,0x00,0xBF,0x8F, - 0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x10,0x00,0xB0,0xAF,0xC0,0x81,0x11,0x00, - 0x18,0x00,0xBF,0xAF,0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00, - 0xC4,0xEF,0x42,0x8C,0x00,0x00,0x00,0x00,0x1C,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x03,0x83,0x04,0x3C,0x21,0x20,0x90,0x00, - 0xD8,0xEF,0x84,0x8C,0x03,0x83,0x05,0x3C,0x21,0x28,0xB0,0x00, - 0xDC,0xEF,0xA5,0x8C,0x03,0x83,0x06,0x3C,0x88,0xEF,0xC6,0x8C, - 0x03,0x83,0x07,0x3C,0x8C,0xEF,0xE7,0x8C,0x4C,0x22,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x21,0x18,0x70,0x00,0xE0,0xEF,0x63,0x94, - 0x03,0x83,0x02,0x3C,0x21,0x10,0x50,0x00,0xC0,0xEF,0x42,0x94, - 0x00,0x00,0x00,0x00,0x05,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0xD9,0x23,0xC0,0x0C,0x00,0x00,0x00,0x00,0x0B,0x27,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0x02,0x12,0x05,0x00,0x00,0x00,0x82,0xA0,0x08,0x00,0xE0,0x03, - 0x01,0x00,0x85,0xA0,0x02,0x16,0x05,0x00,0x00,0x00,0x82,0xA0, - 0x02,0x14,0x05,0x00,0x01,0x00,0x82,0xA0,0x02,0x12,0x05,0x00, - 0x02,0x00,0x82,0xA0,0x08,0x00,0xE0,0x03,0x03,0x00,0x85,0xA0, - 0x00,0x00,0x82,0x90,0x01,0x00,0x83,0x90,0x00,0x12,0x02,0x00, - 0x08,0x00,0xE0,0x03,0x25,0x10,0x62,0x00,0x00,0x00,0x82,0x90, - 0x01,0x00,0x83,0x90,0x02,0x00,0x85,0x90,0x00,0x16,0x02,0x00, - 0x00,0x1C,0x03,0x00,0x21,0x10,0x43,0x00,0x00,0x2A,0x05,0x00, - 0x03,0x00,0x83,0x90,0x21,0x10,0x45,0x00,0x08,0x00,0xE0,0x03, - 0x25,0x10,0x43,0x00,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x20,0x81,0x87,0x27,0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98, - 0x04,0x00,0xE3,0x80,0x05,0x00,0xE4,0x80,0x03,0x00,0x02,0xAA, - 0x00,0x00,0x02,0xBA,0x04,0x00,0x03,0xA2,0x05,0x00,0x04,0xA2, - 0x03,0x00,0xA2,0x88,0x00,0x00,0xA2,0x98,0x04,0x00,0xA3,0x80, - 0x05,0x00,0xA4,0x80,0x09,0x00,0x02,0xAA,0x06,0x00,0x02,0xBA, - 0x0A,0x00,0x03,0xA2,0x0B,0x00,0x04,0xA2,0x0C,0x00,0x04,0x26, - 0x26,0x00,0x05,0x24,0xC8,0x28,0xC0,0x0C,0x21,0x88,0xC0,0x00, - 0x0E,0x00,0x04,0x26,0xC8,0x28,0xC0,0x0C,0x42,0x42,0x05,0x24, - 0x11,0x00,0x04,0x26,0x21,0x28,0x00,0x00,0x03,0x00,0x02,0x24, - 0xC8,0x28,0xC0,0x0C,0x10,0x00,0x02,0xA2,0x13,0x00,0x00,0xA2, - 0x14,0x00,0x00,0xA2,0x28,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x2B,0x20,0x02,0x00,0x24,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x03,0x00,0x40,0x10,0x21,0x18,0x80,0x00,0x12,0x29,0xC0,0x08, - 0x80,0x00,0x82,0x34,0x21,0x10,0x60,0x00,0x15,0x00,0x02,0xA2, - 0x04,0x00,0x25,0x96,0x00,0x00,0x00,0x00,0xC8,0x28,0xC0,0x0C, - 0x16,0x00,0x04,0x26,0x09,0x00,0x22,0x8A,0x06,0x00,0x22,0x9A, - 0x0A,0x00,0x23,0x82,0x0B,0x00,0x24,0x82,0x1B,0x00,0x02,0xAA, - 0x18,0x00,0x02,0xBA,0x1C,0x00,0x03,0xA2,0x1D,0x00,0x04,0xA2, - 0x0C,0x00,0x25,0x8E,0x00,0x00,0x00,0x00,0xCC,0x28,0xC0,0x0C, - 0x1E,0x00,0x04,0x26,0x10,0x00,0x25,0x96,0x00,0x00,0x00,0x00, - 0xC8,0x28,0xC0,0x0C,0x22,0x00,0x04,0x26,0x15,0x00,0x22,0x8A, - 0x12,0x00,0x22,0x9A,0x16,0x00,0x23,0x82,0x17,0x00,0x24,0x82, - 0x27,0x00,0x02,0xAA,0x24,0x00,0x02,0xBA,0x28,0x00,0x03,0xA2, - 0x29,0x00,0x04,0xA2,0x18,0x00,0x25,0x96,0x00,0x00,0x00,0x00, - 0xC8,0x28,0xC0,0x0C,0x2A,0x00,0x04,0x26,0x1A,0x00,0x25,0x96, - 0x00,0x00,0x00,0x00,0xC8,0x28,0xC0,0x0C,0x2C,0x00,0x04,0x26, - 0x1C,0x00,0x25,0x96,0x00,0x00,0x00,0x00,0xC8,0x28,0xC0,0x0C, - 0x2E,0x00,0x04,0x26,0x1E,0x00,0x25,0x96,0x00,0x00,0x00,0x00, - 0xC8,0x28,0xC0,0x0C,0x30,0x00,0x04,0x26,0x20,0x00,0x25,0x96, - 0x00,0x00,0x00,0x00,0xC8,0x28,0xC0,0x0C,0x32,0x00,0x04,0x26, - 0x34,0x00,0x02,0x24,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0xA0,0x00, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x15,0x00,0x02,0x92, - 0x21,0x88,0x80,0x00,0x01,0x00,0x42,0x30,0x28,0x00,0x22,0xAE, - 0x16,0x00,0x02,0x92,0x16,0x00,0x04,0x26,0x80,0x00,0x42,0x30, - 0xD4,0x28,0xC0,0x0C,0x24,0x00,0x22,0xAE,0x04,0x00,0x22,0xA6, - 0x1B,0x00,0x02,0x8A,0x18,0x00,0x02,0x9A,0x1C,0x00,0x03,0x82, - 0x1D,0x00,0x04,0x82,0x09,0x00,0x22,0xAA,0x06,0x00,0x22,0xBA, - 0x0A,0x00,0x23,0xA2,0x0B,0x00,0x24,0xA2,0xD9,0x28,0xC0,0x0C, - 0x1E,0x00,0x04,0x26,0x22,0x00,0x04,0x26,0xD4,0x28,0xC0,0x0C, - 0x0C,0x00,0x22,0xAE,0x10,0x00,0x22,0xA6,0x27,0x00,0x02,0x8A, - 0x24,0x00,0x02,0x9A,0x28,0x00,0x03,0x82,0x29,0x00,0x04,0x82, - 0x15,0x00,0x22,0xAA,0x12,0x00,0x22,0xBA,0x16,0x00,0x23,0xA2, - 0x17,0x00,0x24,0xA2,0xD4,0x28,0xC0,0x0C,0x2A,0x00,0x04,0x26, - 0x2C,0x00,0x04,0x26,0xD4,0x28,0xC0,0x0C,0x18,0x00,0x22,0xA6, - 0x2E,0x00,0x04,0x26,0xD4,0x28,0xC0,0x0C,0x1A,0x00,0x22,0xA6, - 0x30,0x00,0x04,0x26,0xD4,0x28,0xC0,0x0C,0x1C,0x00,0x22,0xA6, - 0x32,0x00,0x04,0x26,0xD4,0x28,0xC0,0x0C,0x1E,0x00,0x22,0xA6, - 0x20,0x00,0x22,0xA6,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x14,0x00,0xBF,0xAF,0x20,0x81,0x86,0x27,0x03,0x00,0xC2,0x88, - 0x00,0x00,0xC2,0x98,0x04,0x00,0xC3,0x80,0x05,0x00,0xC4,0x80, - 0x03,0x00,0x02,0xAA,0x00,0x00,0x02,0xBA,0x04,0x00,0x03,0xA2, - 0x05,0x00,0x04,0xA2,0x03,0x00,0xA2,0x88,0x00,0x00,0xA2,0x98, - 0x04,0x00,0xA3,0x80,0x05,0x00,0xA4,0x80,0x09,0x00,0x02,0xAA, - 0x06,0x00,0x02,0xBA,0x0A,0x00,0x03,0xA2,0x0B,0x00,0x04,0xA2, - 0x0C,0x00,0x04,0x26,0xC8,0x28,0xC0,0x0C,0x07,0x00,0x05,0x24, - 0x0E,0x00,0x04,0x26,0xC8,0x28,0xC0,0x0C,0x42,0x42,0x05,0x24, - 0x11,0x00,0x04,0x26,0x21,0x28,0x00,0x00,0x03,0x00,0x02,0x24, - 0xC8,0x28,0xC0,0x0C,0x10,0x00,0x02,0xA2,0x15,0x00,0x02,0x24, - 0x80,0x00,0x03,0x24,0x13,0x00,0x00,0xA2,0x14,0x00,0x03,0xA2, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xB0,0xFF,0xBD,0x27,0x44,0x00,0xB1,0xAF, - 0x40,0x00,0xB0,0xAF,0x21,0x80,0xA0,0x00,0x48,0x00,0xBF,0xAF, - 0x0E,0x00,0x03,0x92,0x42,0x00,0x02,0x24,0x09,0x00,0x62,0x14, - 0x21,0x88,0x80,0x00,0x0F,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x06,0x00,0x43,0x14,0x40,0x1A,0x11,0x00,0x10,0x00,0x03,0x92, - 0x03,0x00,0x02,0x24,0x0B,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x40,0x1A,0x11,0x00,0x02,0x83,0x02,0x3C,0x21,0x10,0x43,0x00, - 0x68,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x23,0x00,0xEE,0x29,0xC0,0x08, - 0x68,0xDA,0x22,0xAC,0x14,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x05,0x00,0x60,0x10,0x80,0x00,0x02,0x24,0x15,0x00,0x62,0x10, - 0x40,0x1A,0x11,0x00,0xEB,0x29,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA4,0x27,0x40,0x1A,0x11,0x00,0x02,0x83,0x02,0x3C, - 0x21,0x10,0x43,0x00,0x64,0xDA,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x02,0x83,0x01,0x3C,0x21,0x08,0x23,0x00, - 0x64,0xDA,0x22,0xAC,0x49,0x29,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x21,0x20,0x20,0x02,0x10,0x00,0xA5,0x27,0x16,0x28,0xC0,0x0C, - 0x21,0x30,0x00,0x02,0xEE,0x29,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x02,0x83,0x02,0x3C,0x21,0x10,0x43,0x00,0x64,0xDA,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x23,0x00,0x64,0xDA,0x22,0xAC,0x9C,0x28,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0xEE,0x29,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x60,0x81,0x84,0x27,0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x48,0x00,0xBF,0x8F,0x44,0x00,0xB1,0x8F,0x40,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x50,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0xA2,0x30,0x08,0x00,0x40,0x10, - 0xFF,0xFF,0xC6,0x30,0x43,0x28,0x05,0x00,0x40,0x10,0x05,0x00, - 0x21,0x10,0x44,0x00,0x00,0x00,0x42,0x90,0x00,0x00,0x00,0x00, - 0x03,0x2A,0xC0,0x08,0x21,0x30,0xC2,0x00,0x43,0x28,0x05,0x00, - 0xFF,0xFF,0xA5,0x24,0xFF,0xFF,0x02,0x24,0x06,0x00,0xA2,0x10, - 0xFF,0xFF,0x03,0x24,0x00,0x00,0x82,0x94,0x02,0x00,0x84,0x24, - 0xFF,0xFF,0xA5,0x24,0xFC,0xFF,0xA3,0x14,0x21,0x30,0xC2,0x00, - 0xFF,0xFF,0xC3,0x30,0x02,0x14,0x06,0x00,0x21,0x30,0x62,0x00, - 0xFF,0xFF,0xC3,0x30,0x02,0x14,0x06,0x00,0x21,0x30,0x62,0x00, - 0x08,0x00,0xE0,0x03,0xFF,0xFF,0xC2,0x30,0xD0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x1C,0x00,0xB3,0xAF, - 0x21,0x98,0xA0,0x00,0x18,0x00,0xB2,0xAF,0x21,0x90,0xC0,0x00, - 0x24,0x00,0xB5,0xAF,0x21,0xA8,0x00,0x02,0x20,0x00,0xB4,0xAF, - 0x21,0xA0,0x00,0x00,0x28,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x0C,0x00,0x03,0x8E,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x18,0x62,0x00,0x2A,0x10,0x72,0x00,0x02,0x00,0x40,0x10, - 0x21,0x88,0x40,0x02,0x21,0x88,0x60,0x00,0x0D,0x00,0x20,0x12, - 0x21,0x28,0x60,0x02,0x23,0x90,0x51,0x02,0x08,0x00,0x02,0x8E, - 0x00,0x00,0x04,0x8E,0x21,0x30,0x20,0x02,0x10,0x3E,0xC0,0x0C, - 0x21,0x20,0x44,0x00,0x08,0x00,0x02,0x8E,0x00,0x00,0x02,0x8E, - 0x00,0x00,0x02,0x8E,0x21,0x98,0x71,0x02,0x21,0x10,0x51,0x00, - 0x00,0x00,0x02,0xAE,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x40,0x12,0x21,0xA0,0x82,0x02,0x04,0x00,0x10,0x8E, - 0x21,0x2A,0xC0,0x08,0x00,0x00,0x00,0x00,0x12,0x00,0xB4,0xA6, - 0x21,0x10,0x00,0x02,0x28,0x00,0xBF,0x8F,0x24,0x00,0xB5,0x8F, - 0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27,0x38,0x00,0xB4,0xAF, - 0x21,0xA0,0x80,0x00,0x50,0x00,0xA9,0x8F,0x54,0x00,0xA8,0x8F, - 0x10,0x00,0xA4,0x27,0x2C,0x00,0xB1,0xAF,0x58,0x00,0xB1,0x8F, - 0x03,0x83,0x03,0x3C,0xD0,0xF3,0x63,0x24,0x28,0x00,0xB0,0xAF, - 0x21,0x80,0xC0,0x00,0x34,0x00,0xB3,0xAF,0x5C,0x00,0xB3,0x8F, - 0x21,0x30,0x00,0x00,0x3C,0x00,0xBF,0xAF,0x30,0x00,0xB2,0xAF, - 0x00,0x00,0x62,0x8C,0x08,0x00,0x32,0x8E,0x01,0x00,0x42,0x24, - 0x00,0x00,0x62,0xAC,0x03,0x00,0xA2,0x88,0x00,0x00,0xA2,0x98, - 0x04,0x00,0xA3,0x80,0x05,0x00,0xAA,0x80,0x03,0x00,0x42,0xAA, - 0x00,0x00,0x42,0xBA,0x04,0x00,0x43,0xA2,0x05,0x00,0x4A,0xA2, - 0x17,0x00,0x82,0x8A,0x14,0x00,0x82,0x9A,0x18,0x00,0x83,0x82, - 0x19,0x00,0x85,0x82,0x09,0x00,0x42,0xAA,0x06,0x00,0x42,0xBA, - 0x0A,0x00,0x43,0xA2,0x0B,0x00,0x45,0xA2,0x45,0x00,0x02,0x24, - 0x10,0x00,0xA2,0xA3,0x11,0x00,0xA8,0xA3,0x12,0x00,0x22,0x96, - 0xF0,0x83,0x88,0x8F,0x03,0x83,0x0A,0x3C,0xB0,0xF3,0x4A,0x8D, - 0x16,0x00,0xA0,0xA7,0x19,0x00,0xA9,0xA3,0x1A,0x00,0xA0,0xA7, - 0x14,0x00,0x42,0x24,0x00,0x4A,0x02,0x00,0xFF,0xFF,0x42,0x30, - 0x02,0x12,0x02,0x00,0x25,0x48,0x22,0x01,0x00,0x1A,0x08,0x00, - 0xFF,0xFF,0x02,0x31,0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00, - 0x12,0x00,0xA9,0xA7,0x14,0x00,0xA3,0xA7,0x18,0x00,0xAA,0xA3, - 0x00,0xA3,0x0A,0x3C,0xDC,0x05,0x4A,0x35,0x03,0x00,0x42,0x89, - 0x00,0x00,0x42,0x99,0x00,0x00,0x00,0x00,0x1F,0x00,0xA2,0xAB, - 0x1C,0x00,0xA2,0xBB,0x01,0x00,0x08,0x25,0xF0,0x83,0x88,0xAF, - 0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98,0x00,0x00,0x00,0x00, - 0x23,0x00,0xA2,0xAB,0x20,0x00,0xA2,0xBB,0xF8,0x29,0xC0,0x0C, - 0x14,0x00,0x05,0x24,0x27,0x10,0x02,0x00,0x1A,0x00,0xA2,0xA7, - 0x0E,0x00,0x02,0x24,0x2C,0x00,0x02,0x16,0x08,0x00,0x02,0x24, - 0x0C,0x00,0x42,0xA6,0x13,0x00,0xA2,0x8B,0x10,0x00,0xA2,0x9B, - 0x17,0x00,0xA3,0x8B,0x14,0x00,0xA3,0x9B,0x1B,0x00,0xA4,0x8B, - 0x18,0x00,0xA4,0x9B,0x1F,0x00,0xA5,0x8B,0x1C,0x00,0xA5,0x9B, - 0x11,0x00,0x42,0xAA,0x0E,0x00,0x42,0xBA,0x15,0x00,0x43,0xAA, - 0x12,0x00,0x43,0xBA,0x19,0x00,0x44,0xAA,0x16,0x00,0x44,0xBA, - 0x1D,0x00,0x45,0xAA,0x1A,0x00,0x45,0xBA,0x23,0x00,0xA2,0x8B, - 0x20,0x00,0xA2,0x9B,0x00,0x00,0x00,0x00,0x21,0x00,0x42,0xAA, - 0x1E,0x00,0x42,0xBA,0x22,0x00,0x02,0x24,0x00,0x00,0x22,0xAE, - 0x00,0x00,0x23,0x8E,0x12,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x21,0x10,0x43,0x00,0x12,0x00,0x22,0xA6,0x12,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x2C,0x44,0x00,0x40,0x10, - 0x21,0x20,0x80,0x02,0x00,0x00,0x62,0x8E,0x12,0x00,0x23,0x96, - 0x3C,0x00,0x42,0x24,0x23,0x10,0x43,0x00,0x00,0x00,0x62,0xAE, - 0x3C,0x00,0x02,0x24,0x12,0x00,0x22,0xA6,0xFE,0x2A,0xC0,0x08, - 0x21,0x20,0x80,0x02,0x78,0x81,0x85,0x27,0x03,0x00,0xA2,0x88, - 0x00,0x00,0xA2,0x98,0x04,0x00,0xA3,0x80,0x05,0x00,0xA4,0x80, - 0x11,0x00,0x42,0xAA,0x0E,0x00,0x42,0xBA,0x12,0x00,0x43,0xA2, - 0x13,0x00,0x44,0xA2,0x08,0x00,0x02,0x24,0x14,0x00,0x42,0xA6, - 0x13,0x00,0xA2,0x8B,0x10,0x00,0xA2,0x9B,0x17,0x00,0xA3,0x8B, - 0x14,0x00,0xA3,0x9B,0x1B,0x00,0xA4,0x8B,0x18,0x00,0xA4,0x9B, - 0x1F,0x00,0xA5,0x8B,0x1C,0x00,0xA5,0x9B,0x19,0x00,0x42,0xAA, - 0x16,0x00,0x42,0xBA,0x1D,0x00,0x43,0xAA,0x1A,0x00,0x43,0xBA, - 0x21,0x00,0x44,0xAA,0x1E,0x00,0x44,0xBA,0x25,0x00,0x45,0xAA, - 0x22,0x00,0x45,0xBA,0x23,0x00,0xA2,0x8B,0x20,0x00,0xA2,0x9B, - 0x00,0x00,0x00,0x00,0x29,0x00,0x42,0xAA,0x26,0x00,0x42,0xBA, - 0x2A,0x00,0x02,0x24,0x00,0x00,0x22,0xAE,0x00,0x00,0x23,0x8E, - 0x12,0x00,0x22,0x96,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x12,0x00,0x22,0xA6,0x12,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x3C,0x00,0x42,0x2C,0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x62,0x8E,0x12,0x00,0x23,0x96,0x3C,0x00,0x42,0x24, - 0x23,0x10,0x43,0x00,0x00,0x00,0x62,0xAE,0x3C,0x00,0x02,0x24, - 0x12,0x00,0x22,0xA6,0x12,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00, - 0x0C,0x00,0x43,0xA6,0x21,0x20,0x80,0x02,0x22,0x14,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x08,0x00,0x40,0x14,0x21,0x20,0x20,0x02, - 0x03,0x83,0x03,0x3C,0xD4,0xF3,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xE4,0x14,0xC0,0x0C, - 0x00,0x00,0x62,0xAC,0x3C,0x00,0xBF,0x8F,0x38,0x00,0xB4,0x8F, - 0x34,0x00,0xB3,0x8F,0x30,0x00,0xB2,0x8F,0x2C,0x00,0xB1,0x8F, - 0x28,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27, - 0xB0,0xFF,0xBD,0x27,0x38,0x00,0xB4,0xAF,0x70,0x00,0xB4,0x8F, - 0x30,0x00,0xB2,0xAF,0x64,0x00,0xB2,0x8F,0x34,0x00,0xB3,0xAF, - 0x68,0x00,0xB3,0x8F,0x40,0x00,0xB6,0xAF,0x21,0xB0,0x80,0x00, - 0x48,0x00,0xBE,0xAF,0x21,0xF0,0xA0,0x00,0x3C,0x00,0xB5,0xAF, - 0x21,0xA8,0xE0,0x00,0x44,0x00,0xB7,0xAF,0x6C,0x00,0xB7,0x8F, - 0x02,0x83,0x04,0x3C,0x70,0xE7,0x84,0x24,0x4C,0x00,0xBF,0xAF, - 0x2C,0x00,0xB1,0xAF,0x28,0x00,0xB0,0xAF,0x20,0x00,0xA6,0xAF, - 0x07,0x02,0x82,0x26,0x02,0x82,0x02,0x00,0x0E,0x14,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x21,0x88,0x40,0x00,0x08,0x00,0x20,0x16, - 0x00,0x4A,0x12,0x00,0x01,0x83,0x04,0x3C,0xB0,0x7A,0x84,0x24, - 0x21,0x28,0x80,0x02,0x97,0x39,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x7F,0x2B,0xC0,0x08,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x32, - 0x02,0x12,0x02,0x00,0x25,0x48,0x22,0x01,0x00,0x42,0x13,0x00, - 0xFF,0xFF,0x62,0x32,0x02,0x12,0x02,0x00,0x25,0x40,0x02,0x01, - 0x08,0x00,0x82,0x26,0x00,0x3A,0x02,0x00,0xFF,0xFF,0x42,0x30, - 0x02,0x12,0x02,0x00,0x25,0x38,0xE2,0x00,0x00,0xA3,0x04,0x3C, - 0xDC,0x05,0x84,0x34,0x04,0x00,0x05,0x24,0x04,0x00,0x22,0x8E, - 0x00,0x11,0x06,0x24,0x08,0x00,0x50,0x8C,0x04,0x00,0x23,0x8E, - 0x08,0x00,0x02,0x24,0x00,0x00,0x62,0xAC,0x00,0x00,0x09,0xA6, - 0x02,0x00,0x08,0xA6,0x06,0x00,0x00,0xA6,0xF8,0x29,0xC0,0x0C, - 0x04,0x00,0x07,0xA6,0x21,0x20,0xA0,0x02,0x04,0x00,0x05,0x24, - 0xF8,0x29,0xC0,0x0C,0xFF,0xFF,0x46,0x30,0x04,0x00,0x04,0x26, - 0x02,0x00,0x05,0x24,0xF8,0x29,0xC0,0x0C,0xFF,0xFF,0x46,0x30, - 0x21,0x20,0x00,0x02,0x08,0x00,0x05,0x24,0xF8,0x29,0xC0,0x0C, - 0xFF,0xFF,0x46,0x30,0x21,0x20,0xE0,0x02,0x21,0x28,0x80,0x02, - 0xF8,0x29,0xC0,0x0C,0xFF,0xFF,0x46,0x30,0x27,0x18,0x02,0x00, - 0xFF,0xFF,0x62,0x30,0x02,0x00,0x40,0x14,0x21,0x28,0xE0,0x02, - 0xFF,0xFF,0x03,0x34,0x06,0x00,0x03,0xA6,0x04,0x00,0x24,0x8E, - 0x00,0x00,0x00,0x00,0x14,0x2A,0xC0,0x0C,0x21,0x30,0x80,0x02, - 0x21,0x20,0xC0,0x02,0x00,0x00,0x43,0x8C,0x21,0x28,0xC0,0x03, - 0x00,0x80,0x63,0x34,0x00,0x00,0x43,0xAC,0x04,0x00,0x23,0x8E, - 0x20,0x00,0xA6,0x8F,0x12,0x00,0x63,0x94,0x21,0x38,0xA0,0x02, - 0x12,0x00,0x23,0xA6,0x60,0x00,0xAA,0x8F,0x11,0x00,0x03,0x24, - 0x10,0x00,0xA3,0xAF,0x18,0x00,0xB1,0xAF,0x1C,0x00,0xA2,0xAF, - 0x49,0x2A,0xC0,0x0C,0x14,0x00,0xAA,0xAF,0x03,0x83,0x03,0x3C, - 0x2C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC,0x4C,0x00,0xBF,0x8F, - 0x48,0x00,0xBE,0x8F,0x44,0x00,0xB7,0x8F,0x40,0x00,0xB6,0x8F, - 0x3C,0x00,0xB5,0x8F,0x38,0x00,0xB4,0x8F,0x34,0x00,0xB3,0x8F, - 0x30,0x00,0xB2,0x8F,0x2C,0x00,0xB1,0x8F,0x28,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x50,0x00,0xBD,0x27,0x80,0xFF,0xBD,0x27, - 0x74,0x00,0xB7,0xAF,0x21,0xB8,0x80,0x00,0x70,0x00,0xB6,0xAF, - 0x21,0xB0,0xA0,0x00,0x68,0x00,0xB4,0xAF,0x21,0xA0,0xC0,0x00, - 0x6C,0x00,0xB5,0xAF,0x21,0xA8,0xE0,0x00,0x28,0x00,0xA4,0x27, - 0x60,0x00,0xB2,0xAF,0x90,0x00,0xB2,0x8F,0x21,0x28,0x00,0x00, - 0x64,0x00,0xB3,0xAF,0x94,0x00,0xB3,0x8F,0x10,0x00,0x06,0x24, - 0x78,0x00,0xBF,0xAF,0x5C,0x00,0xB1,0xAF,0x18,0x42,0xC0,0x0C, - 0x58,0x00,0xB0,0xAF,0x38,0x00,0xB1,0x27,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x00,0x02,0x00,0x10,0x24,0x28,0x00,0xB0,0xA7, - 0x02,0x00,0xA2,0x96,0x00,0x00,0x00,0x00,0x2A,0x00,0xA2,0xA7, - 0x13,0x00,0x82,0x8A,0x10,0x00,0x82,0x9A,0x00,0x00,0x00,0x00, - 0x2F,0x00,0xA2,0xAB,0x2C,0x00,0xA2,0xBB,0x18,0x42,0xC0,0x0C, - 0x10,0x00,0x06,0x24,0x21,0x20,0x40,0x02,0x21,0x28,0x60,0x02, - 0x28,0x00,0xA6,0x27,0x21,0x38,0x20,0x02,0x38,0x00,0xB0,0xA7, - 0x00,0x00,0xA2,0x96,0x02,0x83,0x10,0x3C,0xC0,0xD1,0x10,0x26, - 0x3A,0x00,0xA2,0xA7,0x0F,0x00,0x82,0x8A,0x0C,0x00,0x82,0x9A, - 0x00,0x00,0x00,0x00,0x3F,0x00,0xA2,0xAB,0x3C,0x00,0xA2,0xBB, - 0xEE,0x05,0x02,0x24,0x54,0x00,0xA2,0xA7,0x48,0x00,0xA2,0x27, - 0x48,0x00,0xA0,0xA7,0x4C,0x00,0xB0,0xAF,0x50,0x00,0xB0,0xAF, - 0x6B,0x42,0xC0,0x0C,0x10,0x00,0xA2,0xAF,0xFF,0xFF,0x03,0x24, - 0x16,0x00,0x43,0x10,0x0C,0x00,0x91,0x26,0x21,0x20,0xE0,0x02, - 0x06,0x00,0xC5,0x26,0x23,0x30,0x96,0x02,0x00,0x00,0xA3,0x96, - 0x04,0x00,0x02,0x24,0x10,0x00,0xA2,0xAF,0xA1,0x00,0x02,0x24, - 0x14,0x00,0xA2,0xAF,0x1C,0x00,0xB0,0xAF,0x00,0x12,0x03,0x00, - 0x02,0x1A,0x03,0x00,0x25,0x10,0x43,0x00,0xFF,0xFF,0x42,0x30, - 0x18,0x00,0xA2,0xAF,0x50,0x00,0xA2,0x8F,0x4C,0x00,0xA3,0x8F, - 0x21,0x38,0x20,0x02,0x23,0x10,0x43,0x00,0xFF,0xFF,0x42,0x30, - 0x11,0x2B,0xC0,0x0C,0x20,0x00,0xA2,0xAF,0x78,0x00,0xBF,0x8F, - 0x74,0x00,0xB7,0x8F,0x70,0x00,0xB6,0x8F,0x6C,0x00,0xB5,0x8F, - 0x68,0x00,0xB4,0x8F,0x64,0x00,0xB3,0x8F,0x60,0x00,0xB2,0x8F, - 0x5C,0x00,0xB1,0x8F,0x58,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x80,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x24,0x00,0xB3,0xAF, - 0x21,0x98,0x80,0x00,0x28,0x00,0xB4,0xAF,0x21,0xA0,0xA0,0x00, - 0x20,0x00,0xB2,0xAF,0x18,0x00,0xB0,0xAF,0x21,0x80,0xE0,0x00, - 0x2C,0x00,0xBF,0xAF,0x1C,0x00,0xB1,0xAF,0x06,0x00,0x02,0x96, - 0x40,0x00,0xB1,0x8F,0x00,0x00,0x00,0x00,0x14,0x00,0x40,0x10, - 0x21,0x90,0xC0,0x00,0x0C,0x00,0x44,0x26,0x08,0x00,0x05,0x24, - 0xF8,0x29,0xC0,0x0C,0x00,0x11,0x06,0x24,0x04,0x00,0x04,0x26, - 0x02,0x00,0x05,0x24,0xF8,0x29,0xC0,0x0C,0xFF,0xFF,0x46,0x30, - 0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02,0xF8,0x29,0xC0,0x0C, - 0xFF,0xFF,0x46,0x30,0xFF,0xFF,0x42,0x30,0xFF,0xFF,0x03,0x34, - 0x04,0x00,0x43,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0x2D,0x2C,0xC0,0x08,0x28,0xF4,0x63,0x24,0x04,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00, - 0x25,0x18,0x62,0x00,0xFF,0xFF,0x63,0x30,0x04,0x00,0x71,0x10, - 0x08,0x00,0x07,0x26,0x03,0x83,0x03,0x3C,0x2D,0x2C,0xC0,0x08, - 0x28,0xF4,0x63,0x24,0x02,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00, - 0xFF,0xFF,0x63,0x30,0xA1,0x00,0x02,0x24,0x0F,0x00,0x62,0x14, - 0xF8,0xFF,0x28,0x26,0x21,0x20,0x60,0x02,0x21,0x28,0x80,0x02, - 0x03,0x83,0x03,0x3C,0x20,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x21,0x30,0x40,0x02,0x10,0x00,0xA7,0xAF,0x21,0x38,0x00,0x02, - 0x14,0x00,0xA8,0xAF,0x01,0x00,0x42,0x24,0x8B,0x2B,0xC0,0x0C, - 0x00,0x00,0x62,0xAC,0x31,0x2C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x24,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27, - 0x34,0x00,0xB5,0xAF,0x21,0xA8,0x80,0x00,0x2C,0x00,0xB3,0xAF, - 0x21,0x98,0xA0,0x00,0x30,0x00,0xB4,0xAF,0x21,0xA0,0xC0,0x00, - 0x20,0x00,0xB0,0xAF,0x21,0x80,0xE0,0x00,0x21,0x20,0x00,0x02, - 0x21,0x30,0x00,0x00,0x28,0x00,0xB2,0xAF,0x50,0x00,0xB2,0x8F, - 0x03,0x83,0x03,0x3C,0x40,0xF3,0x63,0x24,0x38,0x00,0xBF,0xAF, - 0x24,0x00,0xB1,0xAF,0x00,0x00,0x62,0x8C,0x21,0x28,0x40,0x02, - 0x01,0x00,0x42,0x24,0xF8,0x29,0xC0,0x0C,0x00,0x00,0x62,0xAC, - 0xFF,0xFF,0x42,0x30,0xFF,0xFF,0x03,0x34,0x08,0x00,0x43,0x10, - 0x08,0x00,0x02,0x24,0x03,0x83,0x02,0x3C,0x44,0xF3,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C, - 0x97,0x2C,0xC0,0x08,0x44,0xF3,0x22,0xAC,0x00,0x00,0x03,0x96, - 0x00,0x00,0x00,0x00,0x3A,0x00,0x62,0x14,0xFF,0x01,0x45,0x26, - 0x02,0x83,0x04,0x3C,0x70,0xE7,0x84,0x24,0x03,0x83,0x02,0x3C, - 0x5C,0xF3,0x42,0x8C,0x03,0x83,0x03,0x3C,0x74,0xF3,0x63,0x8C, - 0x01,0x00,0x42,0x24,0x01,0x00,0x63,0x24,0x03,0x83,0x01,0x3C, - 0x5C,0xF3,0x22,0xAC,0x03,0x83,0x01,0x3C,0x74,0xF3,0x23,0xAC, - 0x0E,0x14,0xC0,0x0C,0x02,0x2A,0x05,0x00,0x21,0x88,0x40,0x00, - 0x08,0x00,0x20,0x16,0x21,0x20,0x00,0x02,0x03,0x83,0x02,0x3C, - 0x78,0xF3,0x42,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x03,0x83,0x01,0x3C,0x97,0x2C,0xC0,0x08,0x78,0xF3,0x22,0xAC, - 0x21,0x28,0x40,0x02,0x21,0x30,0x00,0x00,0x00,0x00,0x00,0xA2, - 0xF8,0x29,0xC0,0x0C,0x02,0x00,0x00,0xA6,0x21,0x28,0x00,0x02, - 0x27,0x10,0x02,0x00,0x02,0x00,0xA2,0xA4,0x04,0x00,0x24,0x8E, - 0x00,0x00,0x00,0x00,0x14,0x2A,0xC0,0x0C,0x21,0x30,0x40,0x02, - 0x21,0x20,0xA0,0x02,0x06,0x00,0x65,0x26,0x23,0x30,0x93,0x02, - 0x00,0x00,0x43,0x8C,0x0C,0x00,0x87,0x26,0x00,0x80,0x63,0x34, - 0x00,0x00,0x43,0xAC,0x01,0x00,0x03,0x24,0x12,0x00,0x32,0xA6, - 0x10,0x00,0xA3,0xAF,0x04,0x00,0x03,0x24,0x14,0x00,0xA3,0xAF, - 0x18,0x00,0xB1,0xAF,0x49,0x2A,0xC0,0x0C,0x1C,0x00,0xA2,0xAF, - 0x03,0x83,0x02,0x3C,0x94,0xF3,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C,0x94,0xF3,0x22,0xAC, - 0x38,0x00,0xBF,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27, - 0xC8,0xFF,0xBD,0x27,0x2C,0x00,0xB5,0xAF,0x21,0xA8,0x80,0x00, - 0x03,0x83,0x03,0x3C,0xB4,0xF3,0x63,0x24,0x30,0x00,0xBF,0xAF, - 0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF, - 0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF,0x00,0x00,0x62,0x8C, - 0x21,0x88,0xA0,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x12,0x00,0x22,0x96,0x00,0x00,0x00,0x00,0xFF,0xFF,0x54,0x30, - 0xEF,0x05,0x82,0x2E,0x08,0x00,0x40,0x14,0x21,0x98,0xC0,0x00, - 0x03,0x83,0x02,0x3C,0xB8,0xF3,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x03,0x83,0x01,0x3C,0x42,0x2D,0xC0,0x08, - 0xB8,0xF3,0x22,0xAC,0x02,0x83,0x12,0x3C,0xD0,0xCB,0x52,0x26, - 0x21,0x20,0x40,0x02,0x00,0x00,0x30,0x8E,0x08,0x00,0x25,0x8E, - 0xFF,0x3F,0x10,0x32,0x10,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30, - 0x05,0x00,0x40,0x14,0x21,0x90,0x50,0x02,0x04,0x00,0x31,0x8E, - 0x00,0x00,0x00,0x00,0xBF,0x2C,0xC0,0x08,0x21,0x20,0x40,0x02, - 0x02,0x83,0x02,0x3C,0xD0,0xCB,0x42,0x24,0x21,0x80,0x62,0x02, - 0x10,0x00,0x11,0x26,0x21,0x20,0x20,0x02,0x00,0xA3,0x05,0x3C, - 0xDC,0x05,0xA5,0x34,0x24,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24, - 0x09,0x00,0x40,0x10,0x21,0x20,0x20,0x02,0xA4,0x81,0x85,0x27, - 0x24,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24,0x04,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C,0x3E,0x2D,0xC0,0x08, - 0xBC,0xF3,0x63,0x24,0x00,0x00,0x04,0x92,0x40,0x00,0x02,0x24, - 0xF0,0x00,0x83,0x30,0x04,0x00,0x62,0x10,0x0F,0x00,0x82,0x30, - 0x03,0x83,0x03,0x3C,0x3E,0x2D,0xC0,0x08,0xB8,0xF3,0x63,0x24, - 0x80,0x88,0x02,0x00,0x14,0x00,0x22,0x2A,0x04,0x00,0x40,0x10, - 0x21,0x20,0x00,0x02,0x03,0x83,0x03,0x3C,0x3E,0x2D,0xC0,0x08, - 0xB8,0xF3,0x63,0x24,0x21,0x28,0x20,0x02,0xF8,0x29,0xC0,0x0C, - 0x21,0x30,0x00,0x00,0xFF,0xFF,0x42,0x30,0xFF,0xFF,0x03,0x34, - 0x04,0x00,0x43,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0x3E,0x2D,0xC0,0x08,0xB8,0xF3,0x63,0x24,0x06,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x3F,0xFF,0x42,0x30,0x12,0x00,0x40,0x10, - 0x21,0x38,0x11,0x02,0x03,0x83,0x03,0x3C,0xE0,0xF3,0x63,0x24, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x00,0x00,0x62,0xAC,0x03,0x83,0x02,0x3C,0xE8,0xF3,0x42,0x8C, - 0x03,0x83,0x03,0x3C,0xC8,0xF3,0x63,0x8C,0x01,0x00,0x42,0x24, - 0x01,0x00,0x63,0x24,0x03,0x83,0x01,0x3C,0xE8,0xF3,0x22,0xAC, - 0x03,0x83,0x01,0x3C,0x42,0x2D,0xC0,0x08,0xC8,0xF3,0x23,0xAC, - 0x02,0x00,0x02,0x96,0x02,0x83,0x05,0x3C,0xD0,0xCB,0xA5,0x24, - 0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00, - 0xFF,0xFF,0x63,0x30,0x23,0x40,0x71,0x00,0x23,0x10,0xE5,0x00, - 0x23,0x10,0x82,0x02,0x2A,0x10,0x48,0x00,0x04,0x00,0x40,0x10, - 0x01,0x00,0x02,0x24,0x03,0x83,0x03,0x3C,0x3E,0x2D,0xC0,0x08, - 0xC8,0xF3,0x63,0x24,0x09,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x05,0x00,0x62,0x10,0x11,0x00,0x02,0x24,0x0E,0x00,0x62,0x10, - 0x21,0x20,0xA0,0x02,0x3C,0x2D,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x20,0xA0,0x02,0x03,0x83,0x03,0x3C,0xCC,0xF3,0x63,0x24, - 0x00,0x00,0x62,0x8C,0x21,0x30,0x00,0x02,0x10,0x00,0xA8,0xAF, - 0x01,0x00,0x42,0x24,0x39,0x2C,0xC0,0x0C,0x00,0x00,0x62,0xAC, - 0x42,0x2D,0xC0,0x08,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0xCC,0xF3,0x63,0x24,0x00,0x00,0x62,0x8C,0x21,0x30,0x00,0x02, - 0x10,0x00,0xA8,0xAF,0x01,0x00,0x42,0x24,0xE7,0x2B,0xC0,0x0C, - 0x00,0x00,0x62,0xAC,0x42,0x2D,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0xC4,0xF3,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0xFF,0x00,0x0A,0x3C,0xFF,0x00,0x4A,0x35, - 0x00,0xFF,0x0B,0x3C,0x00,0xFF,0x6B,0x35,0x10,0x00,0xB0,0xAF, - 0x03,0x83,0x10,0x3C,0xB0,0xF3,0x10,0x26,0x21,0x20,0x00,0x02, - 0x21,0x28,0x00,0x00,0x00,0xA3,0x08,0x3C,0xDC,0x05,0x08,0x8D, - 0x00,0xA3,0x09,0x3C,0xE0,0x05,0x29,0x8D,0x14,0x00,0xBF,0xAF, - 0x00,0x1C,0x08,0x00,0x02,0x14,0x08,0x00,0x25,0x18,0x62,0x00, - 0x00,0x3C,0x09,0x00,0x02,0x14,0x09,0x00,0x25,0x38,0xE2,0x00, - 0x02,0x12,0x03,0x00,0x24,0x10,0x4A,0x00,0x00,0x1A,0x03,0x00, - 0x24,0x18,0x6B,0x00,0x25,0x10,0x43,0x00,0xA8,0x84,0x82,0xAF, - 0x02,0x12,0x07,0x00,0x24,0x10,0x4A,0x00,0x00,0x3A,0x07,0x00, - 0x24,0x38,0xEB,0x00,0x25,0x10,0x47,0x00,0xA0,0x84,0x88,0xAF, - 0xAC,0x84,0x89,0xAF,0xA4,0x84,0x82,0xAF,0x18,0x42,0xC0,0x0C, - 0x4C,0x00,0x06,0x24,0x03,0x83,0x04,0x3C,0x40,0xF3,0x84,0x24, - 0x21,0x28,0x00,0x00,0x20,0x00,0x02,0x24,0x00,0x00,0x02,0xAE, - 0x0A,0x00,0x02,0x24,0x03,0x83,0x01,0x3C,0xDC,0xF3,0x22,0xAC, - 0x18,0x42,0xC0,0x0C,0x68,0x00,0x06,0x24,0x03,0x83,0x04,0x3C, - 0x20,0xF4,0x84,0x24,0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C, - 0x10,0x00,0x06,0x24,0x03,0x83,0x04,0x3C,0x00,0xF4,0x84,0x24, - 0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C,0x20,0x00,0x06,0x24, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x4C,0x00,0xA2,0x8F, - 0x48,0x00,0xA9,0x8F,0x50,0x00,0xA3,0x8F,0x21,0x68,0x80,0x00, - 0x30,0x00,0xB0,0xAF,0x54,0x00,0xB0,0x8F,0x58,0x00,0xAE,0x8F, - 0x03,0x83,0x04,0x3C,0x18,0xF4,0x84,0x24,0x34,0x00,0xBF,0xAF, - 0x00,0x42,0x02,0x00,0xFF,0xFF,0x42,0x30,0x02,0x12,0x02,0x00, - 0x25,0x40,0x02,0x01,0x00,0x00,0x82,0x8C,0x08,0x00,0x0C,0x8E, - 0x01,0x00,0x42,0x24,0x00,0x00,0x82,0xAC,0x03,0x00,0xA2,0x88, - 0x00,0x00,0xA2,0x98,0x04,0x00,0xA4,0x80,0x05,0x00,0xAA,0x80, - 0x03,0x00,0x82,0xA9,0x00,0x00,0x82,0xB9,0x04,0x00,0x84,0xA1, - 0x05,0x00,0x8A,0xA1,0x17,0x00,0xA2,0x89,0x14,0x00,0xA2,0x99, - 0x18,0x00,0xA4,0x81,0x19,0x00,0xA5,0x81,0x09,0x00,0x82,0xA9, - 0x06,0x00,0x82,0xB9,0x0A,0x00,0x84,0xA1,0x0B,0x00,0x85,0xA1, - 0xFF,0xFF,0x02,0x34,0x00,0x22,0x03,0x00,0xFF,0xFF,0x63,0x30, - 0x02,0x1A,0x03,0x00,0x10,0x00,0xA2,0xA7,0x12,0x00,0x02,0x96, - 0x25,0x20,0x83,0x00,0x14,0x00,0xA0,0xA3,0x15,0x00,0xA0,0xA3, - 0x1E,0x00,0x42,0x24,0x00,0x1A,0x02,0x00,0xFF,0xFF,0x42,0x30, - 0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00,0x12,0x00,0xA3,0xA7, - 0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98,0x00,0x00,0x00,0x00, - 0x19,0x00,0xA2,0xAB,0x16,0x00,0xA2,0xBB,0x03,0x00,0x22,0x89, - 0x00,0x00,0x22,0x99,0x04,0x00,0x23,0x81,0x05,0x00,0x25,0x81, - 0x1D,0x00,0xA2,0xAB,0x1A,0x00,0xA2,0xBB,0x1E,0x00,0xA3,0xA3, - 0x1F,0x00,0xA5,0xA3,0x20,0x00,0xA8,0xA7,0x00,0xA3,0x07,0x3C, - 0xE0,0x05,0xE7,0x34,0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98, - 0x00,0x00,0x00,0x00,0x25,0x00,0xA2,0xAB,0x22,0x00,0xA2,0xBB, - 0x17,0x00,0xA2,0x89,0x14,0x00,0xA2,0x99,0x18,0x00,0xA3,0x85, - 0x29,0x00,0xA2,0xAB,0x26,0x00,0xA2,0xBB,0x2A,0x00,0xA3,0xA7, - 0x0E,0x00,0x02,0x24,0x3A,0x00,0xC2,0x14,0x2C,0x00,0xA4,0xA7, - 0x12,0x00,0xA2,0x97,0x00,0x00,0x00,0x00,0x0C,0x00,0x82,0xA5, - 0x13,0x00,0xA2,0x8B,0x10,0x00,0xA2,0x9B,0x17,0x00,0xA3,0x8B, - 0x14,0x00,0xA3,0x9B,0x1B,0x00,0xA4,0x8B,0x18,0x00,0xA4,0x9B, - 0x1F,0x00,0xA5,0x8B,0x1C,0x00,0xA5,0x9B,0x11,0x00,0x82,0xA9, - 0x0E,0x00,0x82,0xB9,0x15,0x00,0x83,0xA9,0x12,0x00,0x83,0xB9, - 0x19,0x00,0x84,0xA9,0x16,0x00,0x84,0xB9,0x1D,0x00,0x85,0xA9, - 0x1A,0x00,0x85,0xB9,0x23,0x00,0xA2,0x8B,0x20,0x00,0xA2,0x9B, - 0x27,0x00,0xA3,0x8B,0x24,0x00,0xA3,0x9B,0x2B,0x00,0xA4,0x8B, - 0x28,0x00,0xA4,0x9B,0x2C,0x00,0xA5,0x83,0x21,0x00,0x82,0xA9, - 0x1E,0x00,0x82,0xB9,0x25,0x00,0x83,0xA9,0x22,0x00,0x83,0xB9, - 0x29,0x00,0x84,0xA9,0x26,0x00,0x84,0xB9,0x2A,0x00,0x85,0xA1, - 0x2D,0x00,0xA2,0x83,0x00,0x00,0x00,0x00,0x2B,0x00,0x82,0xA1, - 0x2C,0x00,0x02,0x24,0x00,0x00,0x02,0xAE,0x00,0x00,0x03,0x8E, - 0x12,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x12,0x00,0x02,0xA6,0x12,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x3C,0x00,0x42,0x2C,0x50,0x00,0x40,0x10,0x21,0x20,0xA0,0x01, - 0x00,0x00,0xC2,0x8D,0x12,0x00,0x03,0x96,0x3C,0x00,0x42,0x24, - 0x23,0x10,0x43,0x00,0x00,0x00,0xC2,0xAD,0x3C,0x00,0x02,0x24, - 0x12,0x00,0x02,0xA6,0x57,0x2E,0xC0,0x08,0x21,0x20,0xA0,0x01, - 0xA8,0x81,0x85,0x27,0x03,0x00,0xA2,0x88,0x00,0x00,0xA2,0x98, - 0x04,0x00,0xA3,0x80,0x05,0x00,0xA4,0x80,0x11,0x00,0x82,0xA9, - 0x0E,0x00,0x82,0xB9,0x12,0x00,0x83,0xA1,0x13,0x00,0x84,0xA1, - 0x81,0x37,0x02,0x24,0x14,0x00,0x82,0xA5,0x13,0x00,0xA2,0x8B, - 0x10,0x00,0xA2,0x9B,0x17,0x00,0xA3,0x8B,0x14,0x00,0xA3,0x9B, - 0x1B,0x00,0xA4,0x8B,0x18,0x00,0xA4,0x9B,0x1F,0x00,0xA5,0x8B, - 0x1C,0x00,0xA5,0x9B,0x19,0x00,0x82,0xA9,0x16,0x00,0x82,0xB9, - 0x1D,0x00,0x83,0xA9,0x1A,0x00,0x83,0xB9,0x21,0x00,0x84,0xA9, - 0x1E,0x00,0x84,0xB9,0x25,0x00,0x85,0xA9,0x22,0x00,0x85,0xB9, - 0x23,0x00,0xA2,0x8B,0x20,0x00,0xA2,0x9B,0x27,0x00,0xA3,0x8B, - 0x24,0x00,0xA3,0x9B,0x2B,0x00,0xA4,0x8B,0x28,0x00,0xA4,0x9B, - 0x2C,0x00,0xA5,0x83,0x29,0x00,0x82,0xA9,0x26,0x00,0x82,0xB9, - 0x2D,0x00,0x83,0xA9,0x2A,0x00,0x83,0xB9,0x31,0x00,0x84,0xA9, - 0x2E,0x00,0x84,0xB9,0x32,0x00,0x85,0xA1,0x2D,0x00,0xA2,0x83, - 0x00,0x00,0x00,0x00,0x33,0x00,0x82,0xA1,0x34,0x00,0x02,0x24, - 0x00,0x00,0x02,0xAE,0x00,0x00,0x03,0x8E,0x12,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00,0x12,0x00,0x02,0xA6, - 0x12,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x2C, - 0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xC2,0x8D, - 0x12,0x00,0x03,0x96,0x3C,0x00,0x42,0x24,0x23,0x10,0x43,0x00, - 0x00,0x00,0xC2,0xAD,0x3C,0x00,0x02,0x24,0x12,0x00,0x02,0xA6, - 0x12,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00, - 0x02,0x12,0x02,0x00,0x25,0x18,0x62,0x00,0x0C,0x00,0x83,0xA5, - 0x21,0x20,0xA0,0x01,0x22,0x14,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x08,0x00,0x40,0x14,0x21,0x20,0x00,0x02,0x03,0x83,0x03,0x3C, - 0x1C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0xE4,0x14,0xC0,0x0C,0x00,0x00,0x62,0xAC, - 0x34,0x00,0xBF,0x8F,0x30,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x38,0x00,0xBD,0x27,0x90,0xFF,0xBD,0x27,0x68,0x00,0xB4,0xAF, - 0x21,0xA0,0x80,0x00,0x64,0x00,0xB3,0xAF,0x21,0x98,0xA0,0x00, - 0x5C,0x00,0xB1,0xAF,0x21,0x88,0xC0,0x00,0x21,0x20,0xE0,0x00, - 0x28,0x00,0xA6,0x27,0x38,0x00,0xA7,0x27,0x60,0x00,0xB2,0xAF, - 0x02,0x83,0x12,0x3C,0xC0,0xD1,0x52,0x26,0x58,0x00,0xB0,0xAF, - 0x80,0x00,0xB0,0x8F,0xEE,0x05,0x02,0x24,0x54,0x00,0xA2,0xA7, - 0x48,0x00,0xA2,0x27,0x6C,0x00,0xBF,0xAF,0x48,0x00,0xA0,0xA7, - 0x4C,0x00,0xB2,0xAF,0x50,0x00,0xB2,0xAF,0x10,0x00,0xA2,0xAF, - 0x6B,0x42,0xC0,0x0C,0x21,0x28,0x00,0x02,0xFF,0xFF,0x03,0x24, - 0x22,0x00,0x43,0x10,0xFF,0x01,0x05,0x26,0x02,0x83,0x04,0x3C, - 0x70,0xE7,0x84,0x24,0x0E,0x14,0xC0,0x0C,0x02,0x2A,0x05,0x00, - 0x21,0x80,0x40,0x00,0x1B,0x00,0x00,0x12,0x21,0x28,0x40,0x02, - 0x50,0x00,0xA6,0x8F,0x4C,0x00,0xA2,0x8F,0x04,0x00,0x04,0x8E, - 0x23,0x30,0xC2,0x00,0x14,0x2A,0xC0,0x0C,0xFF,0xFF,0xC6,0x30, - 0x21,0x20,0x80,0x02,0x06,0x00,0x65,0x26,0x23,0x30,0x33,0x02, - 0x00,0x00,0x43,0x8C,0x12,0x00,0x27,0x26,0x00,0x80,0x63,0x34, - 0x00,0x00,0x43,0xAC,0x1C,0x00,0x28,0x96,0x16,0x00,0x23,0x26, - 0x10,0x00,0xA3,0xAF,0x0F,0x90,0x03,0x34,0x18,0x00,0xA3,0xAF, - 0x1C,0x00,0xB0,0xAF,0x20,0x00,0xA2,0xAF,0x00,0x12,0x08,0x00, - 0x02,0x42,0x08,0x00,0x25,0x10,0x48,0x00,0xFF,0xFF,0x42,0x30, - 0x88,0x2D,0xC0,0x0C,0x14,0x00,0xA2,0xAF,0x6C,0x00,0xBF,0x8F, - 0x68,0x00,0xB4,0x8F,0x64,0x00,0xB3,0x8F,0x60,0x00,0xB2,0x8F, - 0x5C,0x00,0xB1,0x8F,0x58,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x70,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x2C,0x00,0xB5,0xAF, - 0x21,0xA8,0x80,0x00,0x1C,0x00,0xB1,0xAF,0x21,0x88,0xA0,0x00, - 0x30,0x00,0xBF,0xAF,0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF, - 0x20,0x00,0xB2,0xAF,0x18,0x00,0xB0,0xAF,0x12,0x00,0x22,0x96, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x54,0x30,0xEF,0x05,0x82,0x2E, - 0x04,0x00,0x40,0x14,0x21,0x98,0xC0,0x00,0x03,0x83,0x03,0x3C, - 0x1E,0x2F,0xC0,0x08,0x04,0xF4,0x63,0x24,0x02,0x83,0x12,0x3C, - 0xD0,0xCB,0x52,0x26,0x21,0x20,0x40,0x02,0x00,0x00,0x30,0x8E, - 0x08,0x00,0x25,0x8E,0xFF,0x3F,0x10,0x32,0x10,0x3E,0xC0,0x0C, - 0x21,0x30,0x00,0x02,0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x80,0x42,0x30,0x05,0x00,0x40,0x14,0x21,0x90,0x50,0x02, - 0x04,0x00,0x31,0x8E,0x00,0x00,0x00,0x00,0xC1,0x2E,0xC0,0x08, - 0x21,0x20,0x40,0x02,0x02,0x83,0x02,0x3C,0xD0,0xCB,0x42,0x24, - 0x21,0x80,0x62,0x02,0x06,0x00,0x11,0x26,0x21,0x20,0x20,0x02, - 0x00,0xA3,0x05,0x3C,0xE0,0x05,0xA5,0x34,0x24,0x42,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x09,0x00,0x40,0x10,0x21,0x20,0x20,0x02, - 0xB8,0x81,0x85,0x27,0x24,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24, - 0x05,0x00,0x40,0x10,0x0A,0x00,0x11,0x26,0x03,0x83,0x03,0x3C, - 0x1E,0x2F,0xC0,0x08,0x08,0xF4,0x63,0x24,0x0A,0x00,0x11,0x26, - 0x21,0x20,0x20,0x02,0x02,0x83,0x05,0x3C,0x84,0xE7,0xA5,0x24, - 0x24,0x42,0xC0,0x0C,0x06,0x00,0x06,0x24,0x09,0x00,0x40,0x10, - 0x21,0x20,0x20,0x02,0xBC,0x81,0x85,0x27,0x24,0x42,0xC0,0x0C, - 0x06,0x00,0x06,0x24,0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x1E,0x2F,0xC0,0x08,0x08,0xF4,0x63,0x24, - 0x00,0x00,0x03,0x96,0xFF,0xFF,0x02,0x34,0x04,0x00,0x62,0x10, - 0x1E,0x00,0x07,0x26,0x03,0x83,0x03,0x3C,0x1E,0x2F,0xC0,0x08, - 0x08,0xF4,0x63,0x24,0x02,0x00,0x02,0x96,0x02,0x83,0x05,0x3C, - 0xD0,0xCB,0xA5,0x24,0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00, - 0x25,0x18,0x62,0x00,0xFF,0xFF,0x63,0x30,0xE2,0xFF,0x68,0x24, - 0x23,0x10,0xE5,0x00,0x23,0x10,0x82,0x02,0x2A,0x10,0x48,0x00, - 0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0x1E,0x2F,0xC0,0x08,0x10,0xF4,0x63,0x24,0x10,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00, - 0x25,0x18,0x62,0x00,0xFF,0xFF,0x63,0x30,0x0F,0x90,0x02,0x34, - 0x0B,0x00,0x62,0x14,0x21,0x20,0xA0,0x02,0x03,0x83,0x03,0x3C, - 0x14,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x21,0x30,0x00,0x02, - 0x10,0x00,0xA8,0xAF,0x01,0x00,0x42,0x24,0x66,0x2E,0xC0,0x0C, - 0x00,0x00,0x62,0xAC,0x22,0x2F,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x0C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF, - 0x8B,0x09,0xC0,0x0C,0x00,0x08,0x04,0x24,0x08,0x84,0x82,0xAF, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x2D,0x00,0x80,0x10, - 0x10,0x00,0xBF,0xAF,0xD0,0x81,0x85,0x8F,0x07,0x00,0x82,0x24, - 0xC2,0x10,0x02,0x00,0x0A,0x00,0xA0,0x14,0x01,0x00,0x46,0x24, - 0x08,0x84,0x85,0x8F,0x00,0x84,0x82,0x27,0x00,0x84,0x85,0xAF, - 0x00,0x00,0xA2,0xAC,0x00,0x08,0x02,0x24,0xD0,0x81,0x85,0xAF, - 0x02,0x83,0x01,0x3C,0xF4,0xB5,0x20,0xAC,0x04,0x00,0xA2,0xAC, - 0x00,0x00,0xA4,0x8C,0x00,0x00,0x00,0x00,0x04,0x00,0x83,0x8C, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x66,0x00,0x0E,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x05,0x00,0x66,0x14,0x23,0x10,0x66,0x00, - 0x00,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x57,0x2F,0xC0,0x08, - 0x00,0x00,0xA2,0xAC,0x04,0x00,0x82,0xAC,0xC0,0x10,0x02,0x00, - 0x21,0x20,0x82,0x00,0x04,0x00,0x86,0xAC,0xD0,0x81,0x85,0xAF, - 0x65,0x2F,0xC0,0x08,0x08,0x00,0x82,0x24,0xD0,0x81,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x04,0x00,0x82,0x10,0x21,0x28,0x80,0x00, - 0x00,0x00,0x84,0x8C,0x48,0x2F,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x97,0x39,0xC0,0x0C,0xC0,0x7B,0x84,0x24, - 0x21,0x10,0x00,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x38,0x00,0x80,0x10, - 0xF8,0xFF,0x84,0x24,0xD0,0x81,0x85,0x8F,0x00,0x00,0x00,0x00, - 0x7A,0x2F,0xC0,0x08,0x2B,0x10,0xA4,0x00,0x00,0x00,0xA3,0x8C, - 0x00,0x00,0x00,0x00,0x2B,0x10,0xA3,0x00,0x05,0x00,0x40,0x14, - 0x2B,0x10,0xA4,0x00,0x0C,0x00,0x40,0x14,0x2B,0x10,0x83,0x00, - 0x0A,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x21,0x28,0x60,0x00, - 0x2B,0x10,0xA4,0x00,0xF4,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x82,0x00, - 0xEF,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x86,0x8C, - 0x00,0x00,0xA3,0x8C,0xC0,0x10,0x06,0x00,0x21,0x10,0x82,0x00, - 0x0B,0x00,0x43,0x14,0x00,0x00,0x00,0x00,0x04,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x21,0x10,0xC2,0x00,0x04,0x00,0x82,0xAC, - 0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x92,0x2F,0xC0,0x08,0x00,0x00,0x82,0xAC, - 0x00,0x00,0x83,0xAC,0x04,0x00,0xA3,0x8C,0x00,0x00,0x00,0x00, - 0xC0,0x10,0x03,0x00,0x21,0x10,0xA2,0x00,0x09,0x00,0x44,0x14, - 0x00,0x00,0x00,0x00,0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x21,0x10,0x62,0x00,0x04,0x00,0xA2,0xAC,0x00,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0xA1,0x2F,0xC0,0x08,0x00,0x00,0xA2,0xAC, - 0x00,0x00,0xA4,0xAC,0xD0,0x81,0x85,0xAF,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF, - 0x2C,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x01,0x00,0x03,0x24,0x05,0x00,0xC3,0x14,0xFF,0xFF,0x02,0x24, - 0x00,0x00,0xE2,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x02,0x00, - 0x23,0x10,0x02,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0xE0,0x00, - 0x14,0x00,0xB1,0xAF,0x30,0x00,0xB1,0x8F,0x01,0x00,0x02,0x24, - 0x05,0x00,0xA2,0x14,0x18,0x00,0xBF,0xAF,0x00,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x02,0x24,0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02, - 0xA4,0x42,0xC0,0x0C,0x60,0x00,0x02,0xAE,0x01,0x00,0x42,0x24, - 0x64,0x00,0x02,0xAE,0x11,0x00,0x22,0x92,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x34,0x11,0x00,0x22,0xA2,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0x8F,0x00,0x00,0x00,0x00,0x11,0x00,0x62,0x90, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x34,0x08,0x00,0xE0,0x03, - 0x11,0x00,0x62,0xA0,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0xD4,0x81,0x83,0x97,0xFF,0x00,0x02,0x24,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x04,0x00,0x02,0xAE, - 0x3C,0x00,0x00,0xAE,0x01,0x00,0x62,0x24,0xD4,0x81,0x82,0xA7, - 0x0A,0x00,0x03,0xA6,0x03,0x00,0xA2,0x88,0x00,0x00,0xA2,0x98, - 0x07,0x00,0xA3,0x88,0x04,0x00,0xA3,0x98,0x0B,0x00,0xA4,0x88, - 0x08,0x00,0xA4,0x98,0x0F,0x00,0xA7,0x88,0x0C,0x00,0xA7,0x98, - 0x0F,0x00,0x02,0xAA,0x0C,0x00,0x02,0xBA,0x13,0x00,0x03,0xAA, - 0x10,0x00,0x03,0xBA,0x17,0x00,0x04,0xAA,0x14,0x00,0x04,0xBA, - 0x1B,0x00,0x07,0xAA,0x18,0x00,0x07,0xBA,0x03,0x00,0xC2,0x88, - 0x00,0x00,0xC2,0x98,0x07,0x00,0xC3,0x88,0x04,0x00,0xC3,0x98, - 0x0B,0x00,0xC4,0x88,0x08,0x00,0xC4,0x98,0x0F,0x00,0xC5,0x88, - 0x0C,0x00,0xC5,0x98,0x1F,0x00,0x02,0xAA,0x1C,0x00,0x02,0xBA, - 0x23,0x00,0x03,0xAA,0x20,0x00,0x03,0xBA,0x27,0x00,0x04,0xAA, - 0x24,0x00,0x04,0xBA,0x2B,0x00,0x05,0xAA,0x28,0x00,0x05,0xBA, - 0x50,0x00,0x02,0x8E,0x4C,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x10,0x43,0x00,0xFF,0xFF,0x51,0x30,0x58,0x00,0x03,0x96, - 0x03,0x00,0x02,0x24,0x0D,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x02,0x83,0x12,0x3C,0xD0,0xB0,0x52,0x26,0x38,0x42,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x07,0x00,0x51,0x14,0x21,0x20,0x40,0x02, - 0x4C,0x00,0x05,0x8E,0x00,0x00,0x00,0x00,0x24,0x42,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x15,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0x02,0x83,0x12,0x3C,0xF0,0xB0,0x52,0x26,0x38,0x42,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x07,0x00,0x51,0x14,0x21,0x20,0x40,0x02, - 0x4C,0x00,0x05,0x8E,0x00,0x00,0x00,0x00,0x24,0x42,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x09,0x00,0x40,0x10,0x21,0x10,0x00,0x00, - 0x03,0x83,0x03,0x3C,0x34,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0xDA,0x2F,0xC0,0x0C, - 0x00,0x00,0x62,0xAC,0x01,0x00,0x02,0x24,0x1C,0x00,0xBF,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x14,0x00,0xB1,0xAF,0x21,0x88,0xE0,0x00,0x10,0x00,0xB0,0xAF, - 0x30,0x00,0xB0,0x8F,0x18,0x00,0xBF,0xAF,0x38,0x42,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x00,0x00,0x02,0xAE,0x21,0x10,0x20,0x02, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x21,0x10,0xE0,0x00,0x00,0x00,0xE3,0x8C,0xCC,0xCC,0x02,0x3C, - 0xCD,0xCC,0x42,0x34,0x19,0x00,0x62,0x00,0x10,0x20,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03, - 0xC2,0x10,0x04,0x00,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0xE0,0x00,0x21,0x20,0x00,0x02,0x21,0x28,0x00,0x00, - 0x14,0x00,0xB1,0xAF,0x30,0x00,0xB1,0x8F,0x18,0x00,0xBF,0xAF, - 0x44,0x42,0xC0,0x0C,0x10,0x00,0x06,0x24,0x02,0x00,0x40,0x14, - 0x23,0x10,0x50,0x00,0x10,0x00,0x02,0x24,0x00,0x00,0x22,0xAE, - 0x21,0x10,0x00,0x02,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x28,0x00,0xA4,0x8F,0x2C,0x00,0xA5,0x8F, - 0x10,0x00,0xBF,0xAF,0x58,0x36,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x28,0x00,0xA4,0x8F, - 0x2C,0x00,0xA5,0x8F,0x10,0x00,0xBF,0xAF,0x7A,0x36,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x28,0x00,0xA4,0x8F,0x2C,0x00,0xA5,0x8F,0x10,0x00,0xBF,0xAF, - 0x9C,0x36,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00,0x00,0x00,0xE2,0x8C, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27, - 0x18,0x00,0xB0,0xAF,0x38,0x00,0xB0,0x8F,0x20,0x00,0xBF,0xAF, - 0x1C,0x00,0xB1,0xAF,0x24,0x00,0x02,0x8E,0x01,0x00,0x03,0x24, - 0x14,0x00,0x51,0x8C,0xBB,0x00,0xA3,0x14,0x00,0x00,0x00,0x00, - 0x00,0x00,0xC3,0x8C,0x00,0x00,0x00,0x00,0xB7,0x00,0x60,0x10, - 0x00,0x00,0x00,0x00,0x20,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0xB2,0x00,0x40,0x14,0xFF,0xFF,0x68,0x24, - 0x40,0x12,0x08,0x00,0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24, - 0x21,0x28,0x43,0x00,0xFF,0xFF,0x84,0x24,0x16,0x00,0x82,0x2C, - 0xAA,0x00,0x40,0x10,0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x30,0x7C,0x22,0x8C,0x00,0x00,0x00,0x00, - 0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0x00,0x00,0xC3,0x8C, - 0x00,0x00,0x00,0x00,0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x21,0x20,0x20,0x02,0x11,0x00,0x03,0x92,0x04,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x28,0x00,0x00,0xA6,0x2C,0x00,0x11,0xAE, - 0x02,0x00,0x63,0x34,0x38,0x42,0xC0,0x0C,0x11,0x00,0x03,0xA2, - 0xFF,0xFF,0x42,0x30,0x21,0x10,0x22,0x02,0x30,0x00,0x02,0xAE, - 0x50,0x31,0xC0,0x08,0x34,0x00,0x00,0xA6,0x11,0x00,0x03,0x92, - 0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x1B,0x31,0xC0,0x08, - 0x28,0x00,0x11,0xAE,0x11,0x00,0x03,0x92,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x1B,0x31,0xC0,0x08,0x28,0x00,0x11,0xAE, - 0x42,0x00,0x02,0x24,0x0D,0x00,0x00,0x15,0x10,0x00,0x02,0xA2, - 0x18,0x84,0x84,0x8F,0x00,0x00,0x00,0x00,0x40,0x19,0x04,0x00, - 0x23,0x18,0x64,0x00,0x80,0x11,0x03,0x00,0x23,0x10,0x43,0x00, - 0xC0,0x10,0x02,0x00,0x21,0x10,0x44,0x00,0x80,0x18,0x02,0x00, - 0x21,0x10,0x43,0x00,0xDA,0x30,0xC0,0x08,0xC0,0x11,0x02,0x00, - 0x98,0x00,0x02,0x3C,0x80,0x96,0x42,0x34,0x28,0x00,0x02,0xAE, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0xEF,0x30,0xC0,0x08, - 0x02,0x00,0x42,0x34,0x11,0x00,0x03,0x92,0x04,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x14,0x00,0xA2,0x24,0x2C,0x00,0x02,0xAE, - 0x1A,0x00,0xA2,0x24,0x28,0x00,0x00,0xA6,0x30,0x00,0x02,0xAE, - 0x1B,0x31,0xC0,0x08,0x34,0x00,0x00,0xA6,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0x01,0x00,0x03,0x24, - 0x28,0x00,0x03,0xAE,0x02,0x00,0x42,0x34,0x50,0x31,0xC0,0x08, - 0x11,0x00,0x02,0xA2,0x11,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x19,0x31,0xC0,0x08,0x43,0x00,0x02,0x24,0x41,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0xA8,0x00,0xA3,0x8C, - 0x00,0x00,0x00,0x00,0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x9C,0x00,0xA2,0x8C, - 0x00,0x01,0xA4,0x8C,0x3E,0x31,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92, - 0x00,0x01,0xA3,0x8C,0x00,0x00,0x00,0x00,0x37,0x31,0xC0,0x08, - 0x02,0x00,0x42,0x34,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x11,0x00,0x02,0x92,0xA4,0x00,0xA3,0x8C,0x00,0x00,0x00,0x00, - 0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34,0x41,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0xA0,0x00,0xA3,0x8C, - 0x00,0x00,0x00,0x00,0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x11,0x00,0x03,0x92,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x28,0x00,0x00,0xAE,0x02,0x00,0x63,0x34,0x50,0x31,0xC0,0x08, - 0x11,0x00,0x03,0xA2,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0xAC,0x00,0xA2,0x8C,0x04,0x01,0xA4,0x8C,0x3E,0x31,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x11,0x00,0x02,0x92,0x04,0x01,0xA3,0x8C,0x00,0x00,0x00,0x00, - 0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34,0x41,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0xB8,0x00,0xA3,0x8C, - 0x00,0x00,0x00,0x00,0x37,0x31,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92, - 0xBC,0x00,0xA3,0x8C,0x02,0x00,0x42,0x34,0x28,0x00,0x03,0xAE, - 0x50,0x31,0xC0,0x08,0x11,0x00,0x02,0xA2,0x42,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0xAC,0x00,0xA2,0x8C,0xB0,0x00,0xA4,0x8C, - 0x11,0x00,0x03,0x92,0x23,0x10,0x44,0x00,0x02,0x00,0x63,0x34, - 0x28,0x00,0x02,0xAE,0x50,0x31,0xC0,0x08,0x11,0x00,0x03,0xA2, - 0x10,0x00,0xA0,0xAF,0x21,0x20,0xE0,0x00,0x21,0x28,0x00,0x02, - 0x02,0x83,0x07,0x3C,0xC0,0xB0,0xE7,0x24,0x56,0x47,0xC0,0x0C, - 0x02,0x00,0x06,0x24,0x50,0x31,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x21,0x20,0xE0,0x00,0x3C,0x47,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0xE0,0x00,0x14,0x00,0xB1,0xAF, - 0x30,0x00,0xB1,0x8F,0x01,0x00,0x02,0x24,0x0A,0x00,0xA2,0x14, - 0x18,0x00,0xBF,0xAF,0x00,0x00,0xC6,0x8C,0x00,0x00,0x00,0x00, - 0x06,0x00,0xC0,0x10,0x00,0x00,0x00,0x00,0x20,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x46,0x00,0x05,0x00,0x40,0x10, - 0x07,0x00,0x02,0x24,0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02, - 0x6E,0x31,0xC0,0x08,0x0B,0x00,0x02,0x24,0x07,0x00,0x82,0x10, - 0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02,0x11,0x00,0x02,0x24, - 0xA4,0x42,0xC0,0x0C,0x60,0x00,0x02,0xAE,0x01,0x00,0x42,0x24, - 0x64,0x00,0x02,0xAE,0x11,0x00,0x22,0x92,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x34,0x11,0x00,0x22,0xA2,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB0,0xAF, - 0x40,0x00,0xB0,0x8F,0x24,0x00,0xB1,0xAF,0x21,0x88,0xE0,0x00, - 0x04,0x00,0xA0,0x14,0x28,0x00,0xBF,0xAF,0x01,0x00,0x02,0x24, - 0x92,0x31,0xC0,0x08,0x18,0x00,0xA2,0xAF,0x00,0x00,0xC6,0x8C, - 0x20,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x2B,0x10,0xC2,0x00, - 0x03,0x00,0x40,0x10,0x01,0x00,0xC2,0x24,0x92,0x31,0xC0,0x08, - 0x18,0x00,0xA2,0xAF,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x12,0x00,0x42,0x34,0x9C,0x31,0xC0,0x08,0x11,0x00,0x02,0xA2, - 0x10,0x00,0xB0,0xAF,0x01,0x00,0x05,0x24,0x18,0x00,0xA6,0x27, - 0x89,0x30,0xC0,0x0C,0x21,0x38,0x20,0x02,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x02,0x01,0x00,0x06,0x24,0x71,0x47,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x28,0x00,0xBF,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0x10,0x00,0xA3,0x8F,0x01,0x00,0x02,0x24,0x0D,0x00,0xA2,0x14, - 0x0E,0x00,0x02,0x24,0x00,0x00,0xC6,0x8C,0x00,0x00,0x00,0x00, - 0x09,0x00,0xC0,0x10,0x00,0x00,0x00,0x00,0x20,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x46,0x00,0x04,0x00,0x40,0x14, - 0x0E,0x00,0x02,0x24,0x07,0x00,0x02,0x24,0x02,0x00,0x82,0x10, - 0x0E,0x00,0x02,0x24,0x60,0x00,0xE2,0xAC,0x11,0x00,0x62,0x90, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x34,0x08,0x00,0xE0,0x03, - 0x11,0x00,0x62,0xA0,0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x00,0x00,0xE2,0xAC,0x00,0x00,0xE2,0x8C, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x28,0x00,0xA8,0x8F,0x01,0x00,0x02,0x24,0x3D,0x00,0xA2,0x14, - 0x10,0x00,0xBF,0xAF,0x00,0x00,0xC5,0x8C,0x00,0x00,0x00,0x00, - 0x39,0x00,0xA0,0x10,0x00,0x00,0x00,0x00,0x20,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x45,0x00,0x34,0x00,0x40,0x14, - 0xFF,0xFF,0x84,0x24,0x05,0x00,0x82,0x2C,0x31,0x00,0x40,0x10, - 0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x88,0x7C,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x40,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x00,0xA3,0x05,0x3C,0xDC,0x05,0xA5,0x34,0x03,0x00,0xA2,0x88, - 0x00,0x00,0xA2,0x98,0x00,0x00,0x00,0x00,0x2B,0x00,0x02,0xA9, - 0x28,0x00,0x02,0xB9,0x11,0x00,0x02,0x91,0x00,0x00,0x00,0x00, - 0xFD,0x31,0xC0,0x08,0x02,0x00,0x42,0x34,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91,0x00,0x00,0xC3,0x8C, - 0x00,0x00,0x00,0x00,0xEE,0x31,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x40,0x00,0x02,0x24,0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91, - 0x90,0x83,0x83,0x8F,0x02,0x00,0x42,0x34,0x28,0x00,0x03,0xAD, - 0x02,0x32,0xC0,0x08,0x11,0x00,0x02,0xA1,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91,0x00,0x00,0x00,0x00, - 0xFB,0x31,0xC0,0x08,0x01,0x00,0x03,0x24,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91,0xDC,0x05,0x03,0x24, - 0x28,0x00,0x03,0xAD,0x02,0x00,0x42,0x34,0x02,0x32,0xC0,0x08, - 0x11,0x00,0x02,0xA1,0x21,0x20,0xE0,0x00,0x3C,0x47,0xC0,0x0C, - 0x21,0x28,0x00,0x01,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27, - 0x20,0x00,0xB0,0xAF,0x40,0x00,0xB0,0x8F,0x24,0x00,0xB1,0xAF, - 0x21,0x88,0xE0,0x00,0x04,0x00,0xA0,0x14,0x28,0x00,0xBF,0xAF, - 0x01,0x00,0x02,0x24,0x1D,0x32,0xC0,0x08,0x18,0x00,0xA2,0xAF, - 0x00,0x00,0xC6,0x8C,0x20,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xC2,0x00,0x03,0x00,0x40,0x10,0x01,0x00,0xC2,0x24, - 0x1D,0x32,0xC0,0x08,0x18,0x00,0xA2,0xAF,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x12,0x00,0x42,0x34,0x27,0x32,0xC0,0x08, - 0x11,0x00,0x02,0xA2,0x10,0x00,0xB0,0xAF,0x01,0x00,0x05,0x24, - 0x18,0x00,0xA6,0x27,0xBE,0x31,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x21,0x20,0x20,0x02,0x21,0x28,0x00,0x02,0x01,0x00,0x06,0x24, - 0x71,0x47,0xC0,0x0C,0x18,0x00,0xA7,0x27,0x28,0x00,0xBF,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x94,0x83,0x84,0x27, - 0x97,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x2C,0x00,0xA6,0x8F,0x21,0x20,0xE0,0x00, - 0x04,0x00,0xC0,0x10,0x10,0x00,0xBF,0xAF,0x28,0x00,0xA5,0x8F, - 0x10,0x3E,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0xE2,0x8C,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x10,0x7C,0x84,0x24,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x01,0x83,0x04,0x3C, - 0x97,0x39,0xC0,0x0C,0x20,0x7C,0x84,0x24,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0x8F,0x06,0x00,0x02,0x24,0x00,0x00,0x62,0xAC, - 0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00,0xE0,0xFF,0xBD,0x27, - 0x30,0x00,0xA8,0x8F,0x01,0x00,0x02,0x24,0x34,0x00,0xA2,0x14, - 0x18,0x00,0xBF,0xAF,0x00,0x00,0xC5,0x8C,0x00,0x00,0x00,0x00, - 0x30,0x00,0xA0,0x10,0x00,0x00,0x00,0x00,0x18,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x45,0x00,0x2B,0x00,0x40,0x14, - 0xFF,0xFF,0x84,0x24,0x05,0x00,0x82,0x2C,0x28,0x00,0x40,0x10, - 0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0xA0,0x7C,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x11,0x00,0x02,0x91,0x00,0x00,0xC3,0x8C,0x02,0x00,0x42,0x34, - 0x28,0x00,0x03,0xAD,0x98,0x32,0xC0,0x08,0x11,0x00,0x02,0xA1, - 0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA1,0x00,0x00,0xC2,0x8C, - 0x11,0x00,0x03,0x91,0x01,0x00,0x42,0x24,0x02,0x00,0x63,0x34, - 0x28,0x00,0x02,0xAD,0x98,0x32,0xC0,0x08,0x11,0x00,0x03,0xA1, - 0x10,0x00,0xA0,0xAF,0x21,0x20,0xE0,0x00,0x21,0x28,0x00,0x01, - 0x02,0x83,0x07,0x3C,0xC8,0xB0,0xE7,0x24,0x56,0x47,0xC0,0x0C, - 0x02,0x00,0x06,0x24,0x98,0x32,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x11,0x00,0x03,0x91,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x28,0x00,0x00,0xAD,0x02,0x00,0x63,0x34,0x98,0x32,0xC0,0x08, - 0x11,0x00,0x03,0xA1,0x21,0x20,0xE0,0x00,0x3C,0x47,0xC0,0x0C, - 0x21,0x28,0x00,0x01,0x18,0x00,0xBF,0x8F,0x20,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27, - 0x20,0x00,0xB0,0xAF,0x40,0x00,0xB0,0x8F,0x24,0x00,0xB1,0xAF, - 0x21,0x88,0xE0,0x00,0x04,0x00,0xA0,0x14,0x28,0x00,0xBF,0xAF, - 0x01,0x00,0x02,0x24,0xB3,0x32,0xC0,0x08,0x18,0x00,0xA2,0xAF, - 0x00,0x00,0xC6,0x8C,0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xC2,0x00,0x03,0x00,0x40,0x10,0x01,0x00,0xC2,0x24, - 0xB3,0x32,0xC0,0x08,0x18,0x00,0xA2,0xAF,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x12,0x00,0x42,0x34,0xBD,0x32,0xC0,0x08, - 0x11,0x00,0x02,0xA2,0x10,0x00,0xB0,0xAF,0x01,0x00,0x05,0x24, - 0x18,0x00,0xA6,0x27,0x5D,0x32,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x21,0x20,0x20,0x02,0x21,0x28,0x00,0x02,0x01,0x00,0x06,0x24, - 0x71,0x47,0xC0,0x0C,0x18,0x00,0xA7,0x27,0x28,0x00,0xBF,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0x00,0x00,0xE2,0x94,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00, - 0x10,0x00,0xA3,0x8F,0x08,0x00,0x02,0x24,0x00,0x00,0x62,0xAC, - 0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00,0xE0,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x30,0x00,0xB0,0x8F,0x01,0x00,0x02,0x24, - 0x18,0x00,0xBF,0xAF,0x7E,0x00,0xA2,0x14,0x14,0x00,0xB1,0xAF, - 0x00,0x00,0xC6,0x8C,0x00,0x00,0x00,0x00,0x7A,0x00,0xC0,0x10, - 0x00,0x00,0x00,0x00,0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x46,0x00,0x75,0x00,0x40,0x14,0xC0,0x11,0x06,0x00, - 0x03,0x83,0x03,0x3C,0xC0,0xEF,0x63,0x24,0x21,0x88,0x43,0x00, - 0xFF,0xFF,0x84,0x24,0x0A,0x00,0x82,0x2C,0x6E,0x00,0x40,0x10, - 0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0xB8,0x7C,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x11,0x00,0x03,0x92,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x3E,0x33,0xC0,0x08,0x28,0x00,0x06,0xAE, - 0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x00,0x00,0x22,0x96, - 0x11,0x00,0x03,0x92,0x00,0x00,0x00,0x00,0xFA,0x32,0xC0,0x08, - 0x02,0x12,0x02,0x00,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x04,0x00,0x22,0x8E,0x11,0x00,0x03,0x92,0x01,0x00,0x42,0x24, - 0x02,0x00,0x63,0x34,0x28,0x00,0x02,0xAE,0x53,0x33,0xC0,0x08, - 0x11,0x00,0x03,0xA2,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x04,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x10, - 0x02,0x00,0x03,0x24,0x01,0x00,0x03,0x24,0x11,0x00,0x02,0x92, - 0x28,0x00,0x03,0xAE,0x02,0x00,0x42,0x34,0x53,0x33,0xC0,0x08, - 0x11,0x00,0x02,0xA2,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x11,0x00,0x02,0x92,0x08,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x4D,0x33,0xC0,0x08,0x02,0x00,0x42,0x34,0x35,0x2F,0xC0,0x0C, - 0x08,0x00,0x04,0x24,0x21,0x30,0x40,0x00,0x0F,0x00,0x22,0x8A, - 0x0C,0x00,0x22,0x9A,0x13,0x00,0x23,0x8A,0x10,0x00,0x23,0x9A, - 0x03,0x00,0xC2,0xA8,0x00,0x00,0xC2,0xB8,0x07,0x00,0xC3,0xA8, - 0x2F,0x33,0xC0,0x08,0x04,0x00,0xC3,0xB8,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0x14,0x00,0x23,0x8E, - 0x00,0x00,0x00,0x00,0x4D,0x33,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x35,0x2F,0xC0,0x0C,0x08,0x00,0x04,0x24,0x21,0x30,0x40,0x00, - 0x1B,0x00,0x22,0x8A,0x18,0x00,0x22,0x9A,0x1F,0x00,0x23,0x8A, - 0x1C,0x00,0x23,0x9A,0x03,0x00,0xC2,0xA8,0x00,0x00,0xC2,0xB8, - 0x07,0x00,0xC3,0xA8,0x04,0x00,0xC3,0xB8,0x00,0x00,0xC2,0x94, - 0x00,0x00,0x00,0x00,0x00,0x1A,0x02,0x00,0x02,0x12,0x02,0x00, - 0x25,0x18,0x62,0x00,0x00,0x00,0xC3,0xA4,0x11,0x00,0x03,0x92, - 0x04,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x01,0x00,0x02,0x24, - 0x28,0x00,0x02,0xA6,0x08,0x00,0xC2,0x24,0x2C,0x00,0x06,0xAE, - 0x30,0x00,0x02,0xAE,0x34,0x00,0x00,0xA6,0x02,0x00,0x63,0x34, - 0x53,0x33,0xC0,0x08,0x11,0x00,0x03,0xA2,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92,0x20,0x00,0x23,0x96, - 0x00,0x00,0x00,0x00,0x4D,0x33,0xC0,0x08,0x02,0x00,0x42,0x34, - 0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2,0x11,0x00,0x02,0x92, - 0x68,0x00,0x23,0x8E,0x02,0x00,0x42,0x34,0x28,0x00,0x03,0xAE, - 0x53,0x33,0xC0,0x08,0x11,0x00,0x02,0xA2,0x21,0x20,0xE0,0x00, - 0x3C,0x47,0xC0,0x0C,0x21,0x28,0x00,0x02,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0xE0,0x00,0x14,0x00,0xB1,0xAF,0x30,0x00,0xB1,0x8F, - 0x01,0x00,0x02,0x24,0x0A,0x00,0xA2,0x14,0x18,0x00,0xBF,0xAF, - 0x00,0x00,0xC6,0x8C,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x10, - 0x00,0x00,0x00,0x00,0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x46,0x00,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02,0x78,0x33,0xC0,0x08, - 0x0B,0x00,0x02,0x24,0x0E,0x00,0x82,0x10,0x02,0x00,0x82,0x2C, - 0x05,0x00,0x40,0x14,0x06,0x00,0x82,0x2C,0x03,0x00,0x40,0x10, - 0x04,0x00,0x82,0x2C,0x08,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02,0x11,0x00,0x02,0x24, - 0xA4,0x42,0xC0,0x0C,0x60,0x00,0x02,0xAE,0x01,0x00,0x42,0x24, - 0x64,0x00,0x02,0xAE,0x11,0x00,0x22,0x92,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x34,0x11,0x00,0x22,0xA2,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB0,0xAF, - 0x40,0x00,0xB0,0x8F,0x24,0x00,0xB1,0xAF,0x21,0x88,0xE0,0x00, - 0x04,0x00,0xA0,0x14,0x28,0x00,0xBF,0xAF,0x01,0x00,0x02,0x24, - 0x9C,0x33,0xC0,0x08,0x18,0x00,0xA2,0xAF,0x00,0x00,0xC6,0x8C, - 0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x2B,0x10,0xC2,0x00, - 0x03,0x00,0x40,0x10,0x01,0x00,0xC2,0x24,0x9C,0x33,0xC0,0x08, - 0x18,0x00,0xA2,0xAF,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x12,0x00,0x42,0x34,0xA6,0x33,0xC0,0x08,0x11,0x00,0x02,0xA2, - 0x10,0x00,0xB0,0xAF,0x01,0x00,0x05,0x24,0x18,0x00,0xA6,0x27, - 0xCC,0x32,0xC0,0x0C,0x21,0x38,0x20,0x02,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x02,0x01,0x00,0x06,0x24,0x71,0x47,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x28,0x00,0xBF,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x21,0x40,0x80,0x00,0x10,0x00,0xB0,0xAF, - 0x28,0x00,0xB0,0x8F,0x01,0x00,0x02,0x24,0x39,0x00,0xA2,0x14, - 0x14,0x00,0xBF,0xAF,0x00,0x00,0xC4,0x8C,0x00,0x00,0x00,0x00, - 0x36,0x00,0x80,0x10,0x0E,0x00,0x02,0x24,0x18,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x44,0x00,0x31,0x00,0x40,0x14, - 0x0E,0x00,0x02,0x24,0xC0,0x11,0x04,0x00,0x03,0x83,0x03,0x3C, - 0xC0,0xEF,0x63,0x24,0x21,0x30,0x43,0x00,0x04,0x00,0x02,0x24, - 0x15,0x00,0x02,0x11,0x05,0x00,0x02,0x2D,0x05,0x00,0x40,0x10, - 0x02,0x00,0x02,0x24,0x08,0x00,0x02,0x11,0x0E,0x00,0x02,0x24, - 0xEC,0x33,0xC0,0x08,0x60,0x00,0xE2,0xAC,0x05,0x00,0x02,0x24, - 0x1C,0x00,0x02,0x11,0x0E,0x00,0x02,0x24,0xEC,0x33,0xC0,0x08, - 0x60,0x00,0xE2,0xAC,0x00,0x00,0xC3,0x90,0x00,0x00,0x00,0x00, - 0x00,0x00,0xC3,0xA4,0x28,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x12,0x02,0x00,0x25,0x18,0x62,0x00,0xEC,0x33,0xC0,0x08, - 0x00,0x00,0xC3,0xA4,0x28,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x05,0x00,0x65,0x10,0x02,0x00,0x02,0x24,0x07,0x00,0x62,0x10, - 0x0E,0x00,0x02,0x24,0xEC,0x33,0xC0,0x08,0x60,0x00,0xE2,0xAC, - 0xF3,0x29,0xC0,0x0C,0x01,0x00,0x05,0x24,0xEC,0x33,0xC0,0x08, - 0x00,0x00,0x00,0x00,0xF3,0x29,0xC0,0x0C,0x21,0x28,0x00,0x00, - 0xEC,0x33,0xC0,0x08,0x00,0x00,0x00,0x00,0x28,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0xEC,0x33,0xC0,0x08,0x08,0x00,0xC2,0xAC, - 0x0E,0x00,0x02,0x24,0x60,0x00,0xE2,0xAC,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x34,0x11,0x00,0x02,0xA2, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x14,0x00,0xB1,0xAF, - 0x21,0x88,0x80,0x00,0x1C,0x00,0xB3,0xAF,0x21,0x98,0xA0,0x00, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0xE0,0x00,0x10,0x00,0xB0,0xAF, - 0x38,0x00,0xB0,0x8F,0x01,0x00,0x02,0x24,0x2E,0x00,0x62,0x16, - 0x20,0x00,0xBF,0xAF,0x00,0x00,0xC4,0x8C,0x00,0x00,0x00,0x00, - 0x2A,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x72,0x18,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x21,0x20,0x40,0x00,0x25,0x00,0x80,0x10, - 0x02,0x00,0x02,0x24,0x0B,0x00,0x22,0x12,0x03,0x00,0x22,0x2E, - 0x05,0x00,0x40,0x10,0x03,0x00,0x02,0x24,0x0F,0x00,0x33,0x12, - 0x04,0x00,0x02,0x24,0x2E,0x34,0xC0,0x08,0x21,0x20,0x40,0x02, - 0x14,0x00,0x22,0x12,0x21,0x20,0x40,0x02,0x2E,0x34,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x11,0x00,0x02,0x92,0x0A,0x00,0x83,0x84,0x02,0x00,0x42,0x34, - 0x28,0x00,0x03,0xAE,0x30,0x34,0xC0,0x08,0x11,0x00,0x02,0xA2, - 0x11,0x00,0x03,0x92,0x10,0x00,0x02,0xA2,0x04,0x00,0x82,0x24, - 0x2C,0x00,0x02,0xAE,0x0A,0x00,0x82,0x24,0x28,0x00,0x00,0xA6, - 0x30,0x00,0x02,0xAE,0x2A,0x34,0xC0,0x08,0x34,0x00,0x00,0xA6, - 0x11,0x00,0x03,0x92,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA2, - 0x28,0x00,0x11,0xAE,0x02,0x00,0x63,0x34,0x30,0x34,0xC0,0x08, - 0x11,0x00,0x03,0xA2,0x21,0x20,0x40,0x02,0x3C,0x47,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x20,0x00,0xB0,0xAF,0x40,0x00,0xB0,0x8F,0x28,0x00,0xB2,0xAF, - 0x21,0x90,0x80,0x00,0x24,0x00,0xB1,0xAF,0x21,0x88,0xE0,0x00, - 0x03,0x00,0xA0,0x14,0x2C,0x00,0xBF,0xAF,0x45,0x34,0xC0,0x08, - 0x01,0x00,0x02,0x24,0x00,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x18,0x00,0xA2,0xAF,0x18,0x00,0xA4,0x8F, - 0x72,0x18,0xC0,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x14, - 0x21,0x20,0x40,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x12,0x00,0x42,0x34,0x5A,0x34,0xC0,0x08,0x11,0x00,0x02,0xA2, - 0x10,0x00,0xB0,0xAF,0x01,0x00,0x05,0x24,0x18,0x00,0xA6,0x27, - 0xF4,0x33,0xC0,0x0C,0x21,0x38,0x20,0x02,0x21,0x20,0x20,0x02, - 0x21,0x28,0x00,0x02,0x01,0x00,0x06,0x24,0x71,0x47,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x28,0x00,0xA8,0x8F, - 0x01,0x00,0x02,0x24,0x3F,0x00,0xA2,0x14,0x10,0x00,0xBF,0xAF, - 0x00,0x00,0xC3,0x8C,0x00,0x00,0x00,0x00,0x3B,0x00,0x60,0x10, - 0x00,0x00,0x00,0x00,0x18,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x36,0x00,0x40,0x14,0x40,0x12,0x03,0x00, - 0x02,0x83,0x03,0x3C,0x70,0xD9,0x63,0x24,0x21,0x18,0x43,0x00, - 0xFF,0xFF,0x84,0x24,0x05,0x00,0x82,0x2C,0x2F,0x00,0x40,0x10, - 0x80,0x10,0x04,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0xE0,0x7C,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x11,0x00,0x02,0x91,0x00,0x00,0xC3,0x8C,0x00,0x00,0x00,0x00, - 0x96,0x34,0xC0,0x08,0x02,0x00,0x42,0x34,0x02,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91,0xDC,0x05,0x03,0x24, - 0x28,0x00,0x03,0xAD,0x02,0x00,0x42,0x34,0xA6,0x34,0xC0,0x08, - 0x11,0x00,0x02,0xA1,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x11,0x00,0x02,0x91,0x9C,0x00,0x63,0x8C,0x00,0x00,0x00,0x00, - 0x96,0x34,0xC0,0x08,0x02,0x00,0x42,0x34,0x41,0x00,0x02,0x24, - 0x10,0x00,0x02,0xA1,0x11,0x00,0x02,0x91,0xAC,0x00,0x63,0x8C, - 0x02,0x00,0x42,0x34,0x28,0x00,0x03,0xAD,0xA6,0x34,0xC0,0x08, - 0x11,0x00,0x02,0xA1,0x41,0x00,0x02,0x24,0x10,0x00,0x02,0xA1, - 0x9C,0x00,0x62,0x8C,0xFC,0x00,0x64,0x8C,0x11,0x00,0x03,0x91, - 0x23,0x10,0x44,0x00,0x02,0x00,0x63,0x34,0x28,0x00,0x02,0xAD, - 0xA6,0x34,0xC0,0x08,0x11,0x00,0x03,0xA1,0x21,0x20,0xE0,0x00, - 0x3C,0x47,0xC0,0x0C,0x21,0x28,0x00,0x01,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB0,0xAF,0x40,0x00,0xB0,0x8F, - 0x24,0x00,0xB1,0xAF,0x21,0x88,0xE0,0x00,0x04,0x00,0xA0,0x14, - 0x28,0x00,0xBF,0xAF,0x01,0x00,0x02,0x24,0xC1,0x34,0xC0,0x08, - 0x18,0x00,0xA2,0xAF,0x00,0x00,0xC6,0x8C,0x18,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x2B,0x10,0xC2,0x00,0x03,0x00,0x40,0x10, - 0x01,0x00,0xC2,0x24,0xC1,0x34,0xC0,0x08,0x18,0x00,0xA2,0xAF, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x12,0x00,0x42,0x34, - 0xCB,0x34,0xC0,0x08,0x11,0x00,0x02,0xA2,0x10,0x00,0xB0,0xAF, - 0x01,0x00,0x05,0x24,0x18,0x00,0xA6,0x27,0x60,0x34,0xC0,0x0C, - 0x21,0x38,0x20,0x02,0x21,0x20,0x20,0x02,0x21,0x28,0x00,0x02, - 0x01,0x00,0x06,0x24,0x71,0x47,0xC0,0x0C,0x18,0x00,0xA7,0x27, - 0x28,0x00,0xBF,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x14,0x00,0xB1,0xAF, - 0x03,0x83,0x11,0x3C,0xB0,0xF4,0x31,0x26,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x00,0x00,0x1C,0x00,0xBF,0xAF,0xB0,0x84,0x80,0xAF, - 0xFC,0x3A,0xC0,0x0C,0x21,0x20,0x00,0x02,0x00,0x00,0x22,0xA6, - 0x01,0x00,0x10,0x26,0x40,0x00,0x02,0x2A,0xFA,0xFF,0x40,0x14, - 0x02,0x00,0x31,0x26,0x03,0x83,0x03,0x3C,0xC2,0xF4,0x63,0x90, - 0xFF,0x00,0x02,0x24,0x03,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x06,0x00,0x40,0x12,0x00,0xA3,0x04,0x3C,0xFD,0x35,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0x09,0x36,0xC0,0x0C,0xFF,0x00,0x04,0x24, - 0x00,0xA3,0x04,0x3C,0xDC,0x05,0x84,0x34,0xB0,0x83,0x85,0x27, - 0x24,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24,0x19,0x00,0x40,0x14, - 0x00,0xA3,0x04,0x3C,0x03,0x83,0x10,0x3C,0xC4,0xF4,0x10,0x26, - 0x21,0x20,0x00,0x02,0xB0,0x83,0x85,0x27,0x24,0x42,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x03,0x00,0x40,0x10,0x00,0xA3,0x04,0x3C, - 0x07,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0xDC,0x05,0x84,0x34, - 0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24, - 0x0B,0x35,0xC0,0x08,0x00,0xA3,0x04,0x3C,0x00,0xA3,0x05,0x3C, - 0xDC,0x05,0xA5,0x34,0x03,0x00,0x02,0x8A,0x00,0x00,0x02,0x9A, - 0x00,0x00,0x00,0x00,0x03,0x00,0xA2,0xA8,0x00,0x00,0xA2,0xB8, - 0x00,0xA3,0x04,0x3C,0x15,0x36,0xC0,0x0C,0xDC,0x05,0x84,0x34, - 0x00,0xA3,0x04,0x3C,0xE0,0x05,0x84,0x34,0xB0,0x83,0x85,0x27, - 0x24,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24,0x19,0x00,0x40,0x14, - 0x00,0xA3,0x04,0x3C,0x03,0x83,0x10,0x3C,0xC8,0xF4,0x10,0x26, - 0x21,0x20,0x00,0x02,0xB0,0x83,0x85,0x27,0x24,0x42,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x03,0x00,0x40,0x10,0x00,0xA3,0x04,0x3C, - 0x07,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0xE0,0x05,0x84,0x34, - 0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C,0x04,0x00,0x06,0x24, - 0x2C,0x35,0xC0,0x08,0x00,0xA3,0x04,0x3C,0x00,0xA3,0x05,0x3C, - 0xE0,0x05,0xA5,0x34,0x03,0x00,0x02,0x8A,0x00,0x00,0x02,0x9A, - 0x00,0x00,0x00,0x00,0x03,0x00,0xA2,0xA8,0x00,0x00,0xA2,0xB8, - 0x00,0xA3,0x04,0x3C,0x29,0x36,0xC0,0x0C,0xE0,0x05,0x84,0x34, - 0x03,0x83,0x03,0x3C,0xCC,0xF4,0x63,0x24,0x00,0x00,0x62,0x94, - 0x00,0x00,0x00,0x00,0x00,0x80,0x42,0x30,0x03,0x00,0x40,0x14, - 0x01,0x00,0x02,0x24,0x02,0x00,0x40,0x12,0x00,0x00,0x00,0x00, - 0x00,0x00,0x62,0xA4,0x00,0xA3,0x02,0x3C,0x90,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x03,0x83,0x03,0x3C,0xCC,0xF4,0x63,0x24,0x00,0x00,0x62,0x94, - 0x00,0x00,0x00,0x00,0x4D,0x35,0xC0,0x08,0xFE,0xFF,0x42,0x30, - 0x00,0xA3,0x02,0x3C,0x90,0x01,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x18,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0xCC,0xF4,0x63,0x24,0x00,0x00,0x62,0x94,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x34,0x00,0x00,0x62,0xA4,0x03,0x83,0x04,0x3C, - 0xCC,0xF4,0x84,0x94,0x00,0x00,0x00,0x00,0x3D,0x36,0xC0,0x0C, - 0x01,0x00,0x84,0x30,0x03,0x83,0x03,0x3C,0x00,0xF5,0x63,0x90, - 0xFF,0x00,0x02,0x24,0x03,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x05,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C, - 0x00,0x7D,0x84,0x24,0x58,0x36,0xC0,0x0C,0x0E,0x00,0x05,0x24, - 0x03,0x83,0x03,0x3C,0x10,0xF5,0x63,0x90,0xFF,0x00,0x02,0x24, - 0x03,0x00,0x62,0x10,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x12, - 0x00,0x00,0x00,0x00,0x01,0x83,0x04,0x3C,0x10,0x7D,0x84,0x24, - 0x7A,0x36,0xC0,0x0C,0x0B,0x00,0x05,0x24,0x03,0x83,0x03,0x3C, - 0x20,0xF5,0x63,0x90,0xFF,0x00,0x02,0x24,0x03,0x00,0x62,0x10, - 0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x12,0x00,0x00,0x00,0x00, - 0x01,0x83,0x04,0x3C,0x1C,0x7D,0x84,0x24,0x9C,0x36,0xC0,0x0C, - 0x0F,0x00,0x05,0x24,0x00,0xA3,0x02,0x3C,0x8C,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x0B,0x00,0x42,0x2C,0x08,0x00,0x40,0x14, - 0x0F,0x00,0x03,0x3C,0x0F,0x00,0x02,0x3C,0x00,0xA3,0x03,0x3C, - 0x8C,0x01,0x63,0x8C,0x3F,0x42,0x42,0x34,0x2B,0x10,0x43,0x00, - 0x0F,0x00,0x40,0x10,0x0F,0x00,0x03,0x3C,0x03,0x83,0x04,0x3C, - 0xF0,0xF4,0x84,0x8C,0x36,0x42,0x63,0x34,0xF6,0xFF,0x82,0x24, - 0x2B,0x18,0x62,0x00,0x03,0x00,0x60,0x14,0x2C,0x01,0x02,0x24, - 0x04,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0x00,0xA3,0x01,0x3C, - 0x8F,0x35,0xC0,0x08,0x8C,0x01,0x22,0xAC,0x00,0xA3,0x01,0x3C, - 0x8C,0x01,0x24,0xAC,0x00,0xA3,0x04,0x3C,0x8C,0x01,0x84,0x8C, - 0xBE,0x36,0xC0,0x0C,0x00,0x00,0x00,0x00,0x1C,0x00,0xBF,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x14,0x00,0xB1,0xAF,0x21,0x88,0x80,0x00,0x24,0x00,0xB5,0xAF, - 0x21,0xA8,0xA0,0x00,0x1C,0x00,0xB3,0xAF,0x21,0x98,0xC0,0x00, - 0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB6,0xAF,0x20,0x00,0xB4,0xAF, - 0x18,0x00,0xB2,0xAF,0x24,0x42,0xC0,0x0C,0x10,0x00,0xB0,0xAF, - 0x4C,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x03,0x83,0x16,0x3C, - 0xB0,0xF4,0xD6,0x26,0x23,0x10,0x36,0x02,0xC2,0x1F,0x02,0x00, - 0x21,0x10,0x43,0x00,0x43,0x90,0x02,0x00,0x01,0x00,0x62,0x26, - 0xC2,0x1F,0x02,0x00,0x21,0x10,0x43,0x00,0x43,0x80,0x02,0x00, - 0xFF,0xFF,0x14,0x26,0x40,0x00,0x82,0x2E,0x0E,0x00,0x40,0x14, - 0x40,0x00,0x42,0x2E,0x01,0x83,0x04,0x3C,0x2C,0x7D,0x84,0x24, - 0xB4,0x83,0x90,0x27,0x21,0x28,0x00,0x02,0x01,0x83,0x07,0x3C, - 0x4C,0x7D,0xE7,0x24,0x97,0x39,0xC0,0x0C,0x82,0x00,0x06,0x24, - 0x01,0x00,0x04,0x24,0x21,0x28,0x00,0x02,0x6A,0x09,0xC0,0x0C, - 0x82,0x00,0x06,0x24,0x40,0x00,0x42,0x2E,0x0E,0x00,0x40,0x14, - 0x21,0x20,0x20,0x02,0x01,0x83,0x04,0x3C,0x2C,0x7D,0x84,0x24, - 0xB4,0x83,0x90,0x27,0x21,0x28,0x00,0x02,0x01,0x83,0x07,0x3C, - 0x74,0x7D,0xE7,0x24,0x97,0x39,0xC0,0x0C,0x83,0x00,0x06,0x24, - 0x01,0x00,0x04,0x24,0x21,0x28,0x00,0x02,0x6A,0x09,0xC0,0x0C, - 0x83,0x00,0x06,0x24,0x21,0x20,0x20,0x02,0x21,0x28,0xA0,0x02, - 0x10,0x3E,0xC0,0x0C,0x21,0x30,0x60,0x02,0x40,0x10,0x12,0x00, - 0x21,0x88,0x56,0x00,0x21,0x80,0x80,0x02,0xFF,0xFF,0x02,0x24, - 0x19,0x00,0x02,0x12,0xFF,0xFF,0x14,0x24,0xB4,0x83,0x93,0x27, - 0x21,0x20,0x40,0x02,0xB0,0x84,0x82,0x8F,0x01,0x00,0x52,0x26, - 0x01,0x00,0x42,0x24,0xB0,0x84,0x82,0xAF,0x00,0x00,0x25,0x96, - 0x00,0x00,0x00,0x00,0x62,0x3B,0xC0,0x0C,0x02,0x00,0x31,0x26, - 0x0A,0x00,0x40,0x14,0x21,0x28,0x60,0x02,0x01,0x83,0x04,0x3C, - 0x2C,0x7D,0x84,0x24,0xBC,0x83,0x87,0x27,0x97,0x39,0xC0,0x0C, - 0x92,0x00,0x06,0x24,0x01,0x00,0x04,0x24,0x21,0x28,0x60,0x02, - 0x6A,0x09,0xC0,0x0C,0x92,0x00,0x06,0x24,0xFF,0xFF,0x10,0x26, - 0xEB,0xFF,0x14,0x16,0x21,0x20,0x40,0x02,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xA4,0xA3,0x03,0x83,0x04,0x3C, - 0xC2,0xF4,0x84,0x24,0x10,0x00,0xA5,0x27,0x18,0x00,0xBF,0xAF, - 0x99,0x35,0xC0,0x0C,0x01,0x00,0x06,0x24,0x18,0x00,0xBF,0x8F, - 0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x10,0x00,0xA4,0xA3,0x03,0x83,0x04,0x3C, - 0xC3,0xF4,0x84,0x24,0x10,0x00,0xA5,0x27,0x18,0x00,0xBF,0xAF, - 0x99,0x35,0xC0,0x0C,0x01,0x00,0x06,0x24,0x18,0x00,0xBF,0x8F, - 0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE8,0xFF,0xBD,0x27,0x21,0x28,0x80,0x00,0x10,0x00,0xB0,0xAF, - 0x03,0x83,0x10,0x3C,0xC4,0xF4,0x10,0x26,0x21,0x20,0x00,0x02, - 0x14,0x00,0xBF,0xAF,0x99,0x35,0xC0,0x0C,0x04,0x00,0x06,0x24, - 0x00,0xA3,0x05,0x3C,0xDC,0x05,0xA5,0x34,0x03,0x00,0x02,0x8A, - 0x00,0x00,0x02,0x9A,0x00,0x00,0x00,0x00,0x03,0x00,0xA2,0xA8, - 0x00,0x00,0xA2,0xB8,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x21,0x28,0x80,0x00,0x10,0x00,0xB0,0xAF,0x03,0x83,0x10,0x3C, - 0xC8,0xF4,0x10,0x26,0x21,0x20,0x00,0x02,0x14,0x00,0xBF,0xAF, - 0x99,0x35,0xC0,0x0C,0x04,0x00,0x06,0x24,0x00,0xA3,0x05,0x3C, - 0xE0,0x05,0xA5,0x34,0x03,0x00,0x02,0x8A,0x00,0x00,0x02,0x9A, - 0x00,0x00,0x00,0x00,0x03,0x00,0xA2,0xA8,0x00,0x00,0xA2,0xB8, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x03,0x83,0x02,0x3C,0xCC,0xF4,0x42,0x94, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF,0x08,0x00,0x80,0x10, - 0x10,0x00,0xA2,0xA7,0x01,0x00,0x42,0x34,0x10,0x00,0xA2,0xA7, - 0x01,0x00,0x02,0x24,0x28,0x84,0x82,0xAF,0x00,0xA3,0x01,0x3C, - 0x4F,0x36,0xC0,0x08,0x90,0x01,0x22,0xAC,0xFE,0xFF,0x42,0x30, - 0x10,0x00,0xA2,0xA7,0x28,0x84,0x80,0xAF,0x00,0xA3,0x01,0x3C, - 0x90,0x01,0x20,0xAC,0x03,0x83,0x04,0x3C,0xCC,0xF4,0x84,0x24, - 0x10,0x00,0xA5,0x27,0x99,0x35,0xC0,0x0C,0x02,0x00,0x06,0x24, - 0x18,0x00,0xBF,0x8F,0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF, - 0x21,0x38,0x80,0x00,0x21,0x30,0xA0,0x00,0x03,0x00,0xE2,0x88, - 0x00,0x00,0xE2,0x98,0x07,0x00,0xE3,0x88,0x04,0x00,0xE3,0x98, - 0x0B,0x00,0xE4,0x88,0x08,0x00,0xE4,0x98,0x0F,0x00,0xE5,0x88, - 0x0C,0x00,0xE5,0x98,0x13,0x00,0xA2,0xAB,0x10,0x00,0xA2,0xBB, - 0x17,0x00,0xA3,0xAB,0x14,0x00,0xA3,0xBB,0x1B,0x00,0xA4,0xAB, - 0x18,0x00,0xA4,0xBB,0x1F,0x00,0xA5,0xAB,0x1C,0x00,0xA5,0xBB, - 0x10,0x00,0xC2,0x2C,0x03,0x00,0x40,0x10,0x10,0x00,0xA3,0x27, - 0x21,0x10,0x66,0x00,0x00,0x00,0x40,0xA0,0x03,0x83,0x04,0x3C, - 0x00,0xF5,0x84,0x24,0x21,0x28,0xE0,0x00,0x99,0x35,0xC0,0x0C, - 0x10,0x00,0x06,0x24,0x20,0x00,0xBF,0x8F,0x28,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27, - 0x20,0x00,0xBF,0xAF,0x21,0x38,0x80,0x00,0x21,0x30,0xA0,0x00, - 0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98,0x07,0x00,0xE3,0x88, - 0x04,0x00,0xE3,0x98,0x0B,0x00,0xE4,0x88,0x08,0x00,0xE4,0x98, - 0x0F,0x00,0xE5,0x88,0x0C,0x00,0xE5,0x98,0x13,0x00,0xA2,0xAB, - 0x10,0x00,0xA2,0xBB,0x17,0x00,0xA3,0xAB,0x14,0x00,0xA3,0xBB, - 0x1B,0x00,0xA4,0xAB,0x18,0x00,0xA4,0xBB,0x1F,0x00,0xA5,0xAB, - 0x1C,0x00,0xA5,0xBB,0x10,0x00,0xC2,0x2C,0x03,0x00,0x40,0x10, - 0x10,0x00,0xA3,0x27,0x21,0x10,0x66,0x00,0x00,0x00,0x40,0xA0, - 0x03,0x83,0x04,0x3C,0x10,0xF5,0x84,0x24,0x21,0x28,0xE0,0x00, - 0x99,0x35,0xC0,0x0C,0x10,0x00,0x06,0x24,0x20,0x00,0xBF,0x8F, - 0x28,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF,0x21,0x38,0x80,0x00, - 0x21,0x30,0xA0,0x00,0x03,0x00,0xE2,0x88,0x00,0x00,0xE2,0x98, - 0x07,0x00,0xE3,0x88,0x04,0x00,0xE3,0x98,0x0B,0x00,0xE4,0x88, - 0x08,0x00,0xE4,0x98,0x0F,0x00,0xE5,0x88,0x0C,0x00,0xE5,0x98, - 0x13,0x00,0xA2,0xAB,0x10,0x00,0xA2,0xBB,0x17,0x00,0xA3,0xAB, - 0x14,0x00,0xA3,0xBB,0x1B,0x00,0xA4,0xAB,0x18,0x00,0xA4,0xBB, - 0x1F,0x00,0xA5,0xAB,0x1C,0x00,0xA5,0xBB,0x10,0x00,0xC2,0x2C, - 0x03,0x00,0x40,0x10,0x10,0x00,0xA3,0x27,0x21,0x10,0x66,0x00, - 0x00,0x00,0x40,0xA0,0x03,0x83,0x04,0x3C,0x20,0xF5,0x84,0x24, - 0x21,0x28,0xE0,0x00,0x99,0x35,0xC0,0x0C,0x10,0x00,0x06,0x24, - 0x20,0x00,0xBF,0x8F,0x28,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27,0x0F,0x00,0x02,0x3C, - 0x36,0x42,0x42,0x34,0x18,0x00,0xA4,0xAF,0xF6,0xFF,0x84,0x24, - 0x2B,0x10,0x44,0x00,0x03,0x00,0x40,0x10,0x10,0x00,0xBF,0xAF, - 0x2C,0x01,0x02,0x24,0x18,0x00,0xA2,0xAF,0x03,0x83,0x04,0x3C, - 0xF0,0xF4,0x84,0x24,0x18,0x00,0xA5,0x27,0x99,0x35,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x18,0x00,0xA2,0x8F,0x00,0xA3,0x01,0x3C, - 0x8C,0x01,0x22,0xAC,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x10,0x00,0xBF,0xAF,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x10,0x00,0xBF,0xAF,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x10,0x00,0xBF,0x8F,0x18,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xA0,0xFF,0xBD,0x27, - 0x70,0x00,0xA2,0x8F,0x48,0x00,0xB0,0xAF,0x21,0x80,0xE0,0x00, - 0x58,0x00,0xB4,0xAF,0x21,0xA0,0x00,0x00,0x54,0x00,0xB3,0xAF, - 0x21,0x98,0xC0,0x00,0x5C,0x00,0xBF,0xAF,0x50,0x00,0xB2,0xAF, - 0x07,0x00,0xA0,0x10,0x4C,0x00,0xB1,0xAF,0x06,0x00,0x41,0x04, - 0x33,0x00,0xB1,0x27,0x2D,0x00,0x14,0x24,0x03,0x00,0x00,0x12, - 0x23,0x10,0x02,0x00,0xFF,0xFF,0x10,0x26,0x33,0x00,0xB1,0x27, - 0x33,0x00,0xA0,0xA3,0x1B,0x00,0x44,0x00,0x02,0x00,0x80,0x14, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0x12,0x18,0x00,0x00, - 0x10,0x10,0x00,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x60,0xB1,0x22,0x90,0xFF,0xFF,0x31,0x26,0x02,0x00,0x00,0x12, - 0x00,0x00,0x22,0xA2,0xFF,0xFF,0x10,0x26,0x21,0x10,0x60,0x00, - 0xF1,0xFF,0x40,0x14,0x01,0x00,0x03,0x24,0x00,0x16,0x13,0x00, - 0x03,0x16,0x02,0x00,0x0B,0x00,0x43,0x14,0x21,0x20,0x80,0x02, - 0xFF,0xFF,0x10,0x26,0xFF,0xFF,0x02,0x24,0x07,0x00,0x02,0x12, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x12,0x16, - 0x21,0x20,0x80,0x02,0x04,0x00,0x80,0x10,0x00,0x16,0x13,0x00, - 0xDC,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0x16,0x13,0x00, - 0x03,0x16,0x02,0x00,0x02,0x00,0x03,0x24,0x0E,0x00,0x43,0x14, - 0xFF,0xFF,0x02,0x24,0xFF,0xFF,0x10,0x26,0x0B,0x00,0x02,0x12, - 0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00, - 0x24,0x37,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00, - 0xDC,0x39,0xC0,0x0C,0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82, - 0x00,0x00,0x24,0x92,0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14, - 0x01,0x00,0x31,0x26,0xFF,0xFF,0x31,0x26,0x00,0x16,0x13,0x00, - 0x03,0x16,0x02,0x00,0x03,0x00,0x03,0x24,0x09,0x00,0x43,0x14, - 0xFF,0xFF,0x10,0x26,0xFF,0xFF,0x02,0x24,0x06,0x00,0x02,0x12, - 0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16,0x00,0x00,0x00,0x00, - 0x5C,0x00,0xBF,0x8F,0x58,0x00,0xB4,0x8F,0x54,0x00,0xB3,0x8F, - 0x50,0x00,0xB2,0x8F,0x4C,0x00,0xB1,0x8F,0x48,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x60,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27, - 0x28,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x20,0x00,0xB0,0xAF, - 0x21,0x80,0xA0,0x00,0x24,0x00,0xB1,0xAF,0x21,0x88,0xC0,0x00, - 0x21,0x20,0x20,0x02,0x30,0x00,0xBF,0xAF,0x38,0x42,0xC0,0x0C, - 0x2C,0x00,0xB3,0xAF,0x21,0x20,0x00,0x00,0x21,0x18,0x40,0x00, - 0x2A,0x10,0x70,0x00,0x02,0x00,0x40,0x10,0x21,0x98,0x40,0x02, - 0x23,0x20,0x03,0x02,0x00,0x16,0x12,0x00,0x03,0x16,0x02,0x00, - 0x01,0x00,0x03,0x24,0x0B,0x00,0x43,0x14,0x21,0x80,0x80,0x00, - 0xFF,0xFF,0x10,0x26,0xFF,0xFF,0x02,0x24,0x08,0x00,0x02,0x12, - 0x00,0x16,0x13,0x00,0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x12,0x16, - 0x00,0x00,0x00,0x00,0x00,0x16,0x13,0x00,0x03,0x16,0x02,0x00, - 0x02,0x00,0x03,0x24,0x0E,0x00,0x43,0x14,0xFF,0xFF,0x02,0x24, - 0xFF,0xFF,0x10,0x26,0x0B,0x00,0x02,0x12,0xFF,0xFF,0x12,0x24, - 0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00,0x71,0x37,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82,0x00,0x00,0x24,0x92, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x31,0x26, - 0xFF,0xFF,0x31,0x26,0x00,0x16,0x13,0x00,0x03,0x16,0x02,0x00, - 0x03,0x00,0x03,0x24,0x09,0x00,0x43,0x14,0xFF,0xFF,0x10,0x26, - 0xFF,0xFF,0x02,0x24,0x06,0x00,0x02,0x12,0xFF,0xFF,0x11,0x24, - 0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0xFC,0xFF,0x11,0x16,0x00,0x00,0x00,0x00,0x30,0x00,0xBF,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0x20,0xFF,0xBD,0x27,0xC0,0x00,0xB2,0xAF,0x21,0x90,0xA0,0x00, - 0xC4,0x00,0xB3,0xAF,0x21,0x98,0x00,0x00,0xDC,0x00,0xBF,0xAF, - 0xD8,0x00,0xBE,0xAF,0xD4,0x00,0xB7,0xAF,0xD0,0x00,0xB6,0xAF, - 0xCC,0x00,0xB5,0xAF,0xC8,0x00,0xB4,0xAF,0xBC,0x00,0xB1,0xAF, - 0xB8,0x00,0xB0,0xAF,0x01,0x00,0x82,0x80,0x00,0x00,0x00,0x00, - 0xE5,0x01,0x40,0x10,0x21,0x88,0x00,0x00,0xFF,0xFF,0x16,0x24, - 0x01,0x00,0x17,0x24,0x02,0x00,0x1E,0x24,0x01,0x00,0x95,0x24, - 0x00,0x00,0xA2,0x92,0x00,0x00,0x00,0x00,0xDB,0xFF,0x42,0x24, - 0x00,0x16,0x02,0x00,0x03,0x1E,0x02,0x00,0x54,0x00,0x62,0x2C, - 0xD9,0x01,0x40,0x10,0x80,0x10,0x03,0x00,0x01,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0xB0,0x7D,0x22,0x8C,0x00,0x00,0x00,0x00, - 0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x59,0x38,0xC0,0x08, - 0x25,0x00,0x04,0x24,0x01,0x83,0x10,0x3C,0xA0,0x7D,0x10,0x26, - 0x38,0x42,0xC0,0x0C,0x21,0x20,0x00,0x02,0xC3,0x37,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x00,0x00,0x02,0x82,0x00,0x00,0x04,0x92, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x10,0x26, - 0x8B,0x39,0xC0,0x08,0x01,0x00,0xA2,0x26,0x00,0x26,0x12,0x00, - 0x59,0x38,0xC0,0x08,0x03,0x26,0x04,0x00,0x02,0x00,0x03,0x24, - 0x21,0x80,0x20,0x02,0x21,0x28,0x40,0x02,0x21,0xA0,0x00,0x00, - 0x33,0x00,0xB1,0x27,0x33,0x00,0xA0,0xA3,0x1B,0x00,0xA3,0x00, - 0x02,0x00,0x60,0x14,0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00, - 0x12,0x28,0x00,0x00,0x10,0x10,0x00,0x00,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x60,0xB1,0x22,0x90,0xFF,0xFF,0x31,0x26, - 0x02,0x00,0x00,0x12,0x00,0x00,0x22,0xA2,0xFF,0xFF,0x10,0x26, - 0xF2,0xFF,0xA0,0x14,0x00,0x00,0x00,0x00,0x0A,0x00,0x77,0x16, - 0x00,0x16,0x14,0x00,0xFF,0xFF,0x10,0x26,0x08,0x00,0x16,0x12, - 0x03,0x26,0x02,0x00,0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x12,0x16, - 0x00,0x16,0x14,0x00,0x03,0x26,0x02,0x00,0x03,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0xDC,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x7E,0x16,0x00,0x00,0x00,0x00,0xFF,0xFF,0x10,0x26, - 0x0B,0x00,0x16,0x12,0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C, - 0x30,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0x06,0x00,0x12,0x12, - 0x00,0x00,0x00,0x00,0xF7,0x37,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C,0x03,0x26,0x04,0x00, - 0x00,0x00,0x22,0x82,0x00,0x00,0x24,0x92,0x00,0x00,0x00,0x00, - 0xF9,0xFF,0x40,0x14,0x01,0x00,0x31,0x26,0xFF,0xFF,0x31,0x26, - 0x03,0x00,0x06,0x24,0x50,0x00,0x66,0x16,0x42,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0x4D,0x00,0x16,0x12,0xFF,0xFF,0x11,0x24, - 0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0xFC,0xFF,0x11,0x16,0x42,0x00,0x04,0x24,0x59,0x38,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x08,0x00,0x03,0x24,0x21,0x80,0x20,0x02, - 0x21,0x28,0x40,0x02,0x21,0xA0,0x00,0x00,0x33,0x00,0xB1,0x27, - 0x33,0x00,0xA0,0xA3,0x1B,0x00,0xA3,0x00,0x02,0x00,0x60,0x14, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0x12,0x28,0x00,0x00, - 0x10,0x10,0x00,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x60,0xB1,0x22,0x90,0xFF,0xFF,0x31,0x26,0x02,0x00,0x00,0x12, - 0x00,0x00,0x22,0xA2,0xFF,0xFF,0x10,0x26,0xF2,0xFF,0xA0,0x14, - 0x00,0x00,0x00,0x00,0x0A,0x00,0x77,0x16,0x00,0x16,0x14,0x00, - 0xFF,0xFF,0x10,0x26,0x08,0x00,0x16,0x12,0x03,0x26,0x02,0x00, - 0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x12,0x16,0x00,0x16,0x14,0x00, - 0x03,0x26,0x02,0x00,0x03,0x00,0x80,0x10,0x00,0x00,0x00,0x00, - 0xDC,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x0E,0x00,0x7E,0x16, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x10,0x26,0x0B,0x00,0x16,0x12, - 0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00, - 0x3E,0x38,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00, - 0xDC,0x39,0xC0,0x0C,0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82, - 0x00,0x00,0x24,0x92,0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14, - 0x01,0x00,0x31,0x26,0xFF,0xFF,0x31,0x26,0x03,0x00,0x06,0x24, - 0x09,0x00,0x66,0x16,0x51,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0x06,0x00,0x16,0x12,0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16, - 0x51,0x00,0x04,0x24,0xDC,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x8B,0x39,0xC0,0x08,0x01,0x00,0xA2,0x26,0x21,0x80,0x20,0x02, - 0x21,0x10,0x40,0x02,0x21,0xA0,0x00,0x00,0x05,0x00,0x41,0x06, - 0x0A,0x00,0x04,0x24,0x2D,0x00,0x14,0x24,0x02,0x00,0x20,0x12, - 0x23,0x10,0x12,0x00,0xFF,0xFF,0x30,0x26,0x33,0x00,0xB1,0x27, - 0x33,0x00,0xA0,0xA3,0x1B,0x00,0x44,0x00,0x02,0x00,0x80,0x14, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00,0x12,0x18,0x00,0x00, - 0x10,0x10,0x00,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x60,0xB1,0x22,0x90,0xFF,0xFF,0x31,0x26,0x02,0x00,0x00,0x12, - 0x00,0x00,0x22,0xA2,0xFF,0xFF,0x10,0x26,0x21,0x10,0x60,0x00, - 0xF1,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x0A,0x00,0x77,0x16, - 0x21,0x20,0x80,0x02,0xFF,0xFF,0x10,0x26,0x07,0x00,0x16,0x12, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x12,0x16, - 0x21,0x20,0x80,0x02,0x03,0x00,0x80,0x10,0x00,0x00,0x00,0x00, - 0xDC,0x39,0xC0,0x0C,0x00,0x00,0x00,0x00,0x0E,0x00,0x7E,0x16, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x10,0x26,0x0B,0x00,0x16,0x12, - 0xFF,0xFF,0x12,0x24,0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00, - 0x8C,0x38,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00, - 0xDC,0x39,0xC0,0x0C,0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82, - 0x00,0x00,0x24,0x92,0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14, - 0x01,0x00,0x31,0x26,0xFF,0xFF,0x31,0x26,0x03,0x00,0x06,0x24, - 0xED,0x00,0x66,0x16,0x01,0x00,0xA2,0x26,0xFF,0xFF,0x10,0x26, - 0xEA,0x00,0x16,0x12,0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16, - 0x01,0x00,0xA2,0x26,0x8B,0x39,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x0A,0x00,0x03,0x24,0x21,0x80,0x20,0x02,0x21,0x28,0x40,0x02, - 0x21,0xA0,0x00,0x00,0x33,0x00,0xB1,0x27,0x33,0x00,0xA0,0xA3, - 0x1B,0x00,0xA3,0x00,0x02,0x00,0x60,0x14,0x00,0x00,0x00,0x00, - 0x0D,0x00,0x07,0x00,0x12,0x28,0x00,0x00,0x10,0x10,0x00,0x00, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x60,0xB1,0x22,0x90, - 0xFF,0xFF,0x31,0x26,0x02,0x00,0x00,0x12,0x00,0x00,0x22,0xA2, - 0xFF,0xFF,0x10,0x26,0xF2,0xFF,0xA0,0x14,0x00,0x00,0x00,0x00, - 0x0A,0x00,0x77,0x16,0x00,0x16,0x14,0x00,0xFF,0xFF,0x10,0x26, - 0x08,0x00,0x16,0x12,0x03,0x26,0x02,0x00,0xFF,0xFF,0x12,0x24, - 0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0xFC,0xFF,0x12,0x16,0x00,0x16,0x14,0x00,0x03,0x26,0x02,0x00, - 0x03,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0xDC,0x39,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x7E,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x10,0x26,0x0B,0x00,0x16,0x12,0xFF,0xFF,0x12,0x24, - 0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00,0xD3,0x38,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82,0x00,0x00,0x24,0x92, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x31,0x26, - 0xFF,0xFF,0x31,0x26,0x03,0x00,0x06,0x24,0xA6,0x00,0x66,0x16, - 0x01,0x00,0xA2,0x26,0xFF,0xFF,0x10,0x26,0xA3,0x00,0x16,0x12, - 0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16,0x01,0x00,0xA2,0x26, - 0x8B,0x39,0xC0,0x08,0x00,0x00,0x00,0x00,0xC0,0x83,0x90,0x27, - 0x38,0x42,0xC0,0x0C,0x21,0x20,0x00,0x02,0xF8,0x38,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x00,0x00,0x02,0x82,0x00,0x00,0x04,0x92, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x10,0x26, - 0x10,0x00,0x03,0x24,0x21,0x80,0x20,0x02,0x21,0x28,0x40,0x02, - 0x21,0xA0,0x00,0x00,0x33,0x00,0xB1,0x27,0x33,0x00,0xA0,0xA3, - 0x1B,0x00,0xA3,0x00,0x02,0x00,0x60,0x14,0x00,0x00,0x00,0x00, - 0x0D,0x00,0x07,0x00,0x12,0x28,0x00,0x00,0x10,0x10,0x00,0x00, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x60,0xB1,0x22,0x90, - 0xFF,0xFF,0x31,0x26,0x02,0x00,0x00,0x12,0x00,0x00,0x22,0xA2, - 0xFF,0xFF,0x10,0x26,0xF2,0xFF,0xA0,0x14,0x00,0x00,0x00,0x00, - 0x0A,0x00,0x77,0x16,0x00,0x16,0x14,0x00,0xFF,0xFF,0x10,0x26, - 0x08,0x00,0x16,0x12,0x03,0x26,0x02,0x00,0xFF,0xFF,0x12,0x24, - 0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0xFC,0xFF,0x12,0x16,0x00,0x16,0x14,0x00,0x03,0x26,0x02,0x00, - 0x03,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0xDC,0x39,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x7E,0x16,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x10,0x26,0x0B,0x00,0x16,0x12,0xFF,0xFF,0x12,0x24, - 0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0x06,0x00,0x12,0x12,0x00,0x00,0x00,0x00,0x27,0x39,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00,0xDC,0x39,0xC0,0x0C, - 0x03,0x26,0x04,0x00,0x00,0x00,0x22,0x82,0x00,0x00,0x24,0x92, - 0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14,0x01,0x00,0x31,0x26, - 0xFF,0xFF,0x31,0x26,0x03,0x00,0x06,0x24,0x52,0x00,0x66,0x16, - 0x01,0x00,0xA2,0x26,0xFF,0xFF,0x10,0x26,0x4F,0x00,0x16,0x12, - 0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16,0x01,0x00,0xA2,0x26, - 0x8B,0x39,0xC0,0x08,0x00,0x00,0x00,0x00,0x38,0x42,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x21,0x18,0x40,0x00,0x2A,0x10,0x71,0x00, - 0x02,0x00,0x40,0x10,0x21,0x20,0x00,0x00,0x23,0x20,0x23,0x02, - 0x0A,0x00,0x77,0x16,0x21,0x80,0x80,0x00,0xFF,0xFF,0x10,0x26, - 0x07,0x00,0x16,0x12,0x00,0x00,0x00,0x00,0xFF,0xFF,0x11,0x24, - 0xDC,0x39,0xC0,0x0C,0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26, - 0xFC,0xFF,0x11,0x16,0x00,0x00,0x00,0x00,0x0E,0x00,0x7E,0x16, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x10,0x26,0x0B,0x00,0x16,0x12, - 0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C,0x30,0x00,0x04,0x24, - 0xFF,0xFF,0x10,0x26,0x06,0x00,0x11,0x12,0x00,0x00,0x00,0x00, - 0x5B,0x39,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x26,0x04,0x00, - 0xDC,0x39,0xC0,0x0C,0x03,0x26,0x04,0x00,0x00,0x00,0x42,0x82, - 0x00,0x00,0x44,0x92,0x00,0x00,0x00,0x00,0xF9,0xFF,0x40,0x14, - 0x01,0x00,0x52,0x26,0xFF,0xFF,0x52,0x26,0x03,0x00,0x06,0x24, - 0x1E,0x00,0x66,0x16,0x01,0x00,0xA2,0x26,0xFF,0xFF,0x10,0x26, - 0x1B,0x00,0x16,0x12,0xFF,0xFF,0x11,0x24,0xDC,0x39,0xC0,0x0C, - 0x20,0x00,0x04,0x24,0xFF,0xFF,0x10,0x26,0xFC,0xFF,0x11,0x16, - 0x01,0x00,0xA2,0x26,0x8B,0x39,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x85,0x39,0xC0,0x08,0x03,0x00,0x13,0x24,0x03,0x00,0x60,0x16, - 0x80,0x10,0x11,0x00,0x02,0x00,0x13,0x24,0x80,0x10,0x11,0x00, - 0x21,0x10,0x51,0x00,0x40,0x10,0x02,0x00,0x00,0x00,0xA3,0x82, - 0xD0,0xFF,0x42,0x24,0x02,0x00,0x60,0x16,0x21,0x88,0x43,0x00, - 0x01,0x00,0x13,0x24,0x01,0x00,0xB5,0x26,0x00,0x00,0xA2,0x82, - 0x00,0x00,0x00,0x00,0x21,0xFE,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x82,0x24,0xDC,0x00,0xBF,0x8F,0xD8,0x00,0xBE,0x8F, - 0xD4,0x00,0xB7,0x8F,0xD0,0x00,0xB6,0x8F,0xCC,0x00,0xB5,0x8F, - 0xC8,0x00,0xB4,0x8F,0xC4,0x00,0xB3,0x8F,0xC0,0x00,0xB2,0x8F, - 0xBC,0x00,0xB1,0x8F,0xB8,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0xE0,0x00,0xBD,0x27,0x00,0x00,0xA4,0xAF,0x04,0x00,0xA5,0xAF, - 0x08,0x00,0xA6,0xAF,0x0C,0x00,0xA7,0xAF,0xC8,0xFF,0xBD,0x27, - 0x3B,0x00,0xA2,0x27,0xFC,0xFF,0x03,0x24,0x24,0x10,0x43,0x00, - 0x34,0x00,0xBF,0xAF,0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x38,0x00,0xA4,0xAF,0x00,0x00,0x50,0x8C,0x04,0x00,0x51,0x24, - 0x00,0x00,0x02,0x82,0x00,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x1F,0x00,0x40,0x10,0x25,0x00,0x14,0x24,0x45,0x00,0x13,0x24, - 0xFC,0xFF,0x12,0x24,0x00,0x16,0x03,0x00,0x03,0x26,0x02,0x00, - 0x12,0x00,0x94,0x14,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x82, - 0x00,0x00,0x00,0x00,0x04,0x00,0x64,0x10,0x21,0x20,0x00,0x02, - 0x04,0x00,0x73,0x14,0x03,0x00,0x22,0x26,0x21,0x20,0x00,0x02, - 0xC0,0x39,0xC0,0x08,0x21,0x28,0x00,0x00,0x24,0x10,0x52,0x00, - 0x04,0x00,0x51,0x24,0x00,0x00,0x45,0x8C,0x21,0x20,0x00,0x02, - 0x95,0x37,0xC0,0x0C,0x00,0x00,0x00,0x00,0xC6,0x39,0xC0,0x08, - 0x21,0x80,0x40,0x00,0xDC,0x39,0xC0,0x0C,0x01,0x00,0x10,0x26, - 0x00,0x00,0x02,0x82,0x00,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0xE6,0xFF,0x40,0x14,0x00,0x16,0x03,0x00,0x34,0x00,0xBF,0x8F, - 0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x38,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0xFF,0x01,0x02,0x24, - 0x00,0xA3,0x01,0x3C,0xB0,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C, - 0xB4,0x01,0x20,0xAC,0x00,0xA3,0x01,0x3C,0x08,0x00,0xE0,0x03, - 0xB8,0x01,0x22,0xAC,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x14,0x00,0xBF,0xAF,0xE4,0x3A,0xC0,0x0C, - 0x21,0x20,0x00,0x00,0x21,0x28,0x40,0x00,0x00,0xA3,0x03,0x3C, - 0xB4,0x01,0x63,0x8C,0x00,0xA3,0x02,0x3C,0xB8,0x01,0x42,0x8C, - 0x00,0xA3,0x04,0x3C,0x80,0x01,0x84,0x8C,0x01,0x00,0x63,0x24, - 0x0B,0x00,0x80,0x14,0x24,0x18,0x62,0x00,0x00,0xA3,0x02,0x3C, - 0xB0,0x01,0x42,0x8C,0x00,0x00,0x00,0x00,0x06,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x00,0xA3,0x02,0x3C,0x80,0x01,0x42,0x8C, - 0x00,0x00,0x00,0x00,0xF7,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x02,0x3C,0xB4,0x01,0x42,0x8C,0x21,0x20,0xA0,0x00, - 0x00,0xA3,0x01,0x3C,0x21,0x08,0x22,0x00,0xBC,0x01,0x30,0xA0, - 0x00,0xA3,0x01,0x3C,0xE4,0x3A,0xC0,0x0C,0xB4,0x01,0x23,0xAC, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xC0,0xFF,0xBD,0x27,0x21,0x50,0x00,0x00,0x50,0x00,0xB9,0x8F, - 0x54,0x00,0xB8,0x8F,0x58,0x00,0xAF,0x8F,0x01,0x00,0x02,0x24, - 0x3C,0x00,0xB1,0xAF,0x5C,0x00,0xB1,0x8F,0x04,0x70,0xE2,0x00, - 0x0C,0x00,0xE0,0x18,0x38,0x00,0xB0,0xAF,0x01,0x00,0x09,0x24, - 0x21,0x40,0xA0,0x03,0x21,0x18,0x20,0x03,0x00,0x00,0x62,0x8C, - 0x04,0x00,0x63,0x24,0x01,0x00,0x4A,0x25,0x04,0x10,0x49,0x00, - 0x00,0x00,0x02,0xAD,0x2A,0x10,0x47,0x01,0xF9,0xFF,0x40,0x14, - 0x04,0x00,0x08,0x25,0x2E,0x00,0xC0,0x19,0x21,0x50,0x00,0x00, - 0xFF,0x00,0x10,0x24,0x21,0x48,0x00,0x00,0x00,0x00,0x91,0xAC, - 0x00,0x00,0xA0,0xA4,0x22,0x00,0xE0,0x18,0x00,0x00,0xD0,0xA0, - 0x21,0x58,0x80,0x00,0x21,0x60,0xA0,0x00,0x21,0x68,0xC0,0x00, - 0x21,0x40,0x20,0x03,0x21,0x18,0xA0,0x03,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x24,0x10,0x42,0x01,0x13,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8D,0x00,0x00,0x00,0x00, - 0x80,0x10,0x02,0x00,0x21,0x10,0x58,0x00,0x00,0x00,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x62,0xAD,0x00,0x00,0x02,0x8D, - 0x00,0x00,0x00,0x00,0x40,0x10,0x02,0x00,0x21,0x10,0x4F,0x00, - 0x00,0x00,0x42,0x94,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xA5, - 0x00,0x00,0x02,0x8D,0x00,0x00,0x00,0x00,0x47,0x3A,0xC0,0x08, - 0x00,0x00,0xA2,0xA1,0x04,0x00,0x08,0x25,0x01,0x00,0x29,0x25, - 0x2A,0x10,0x27,0x01,0xE5,0xFF,0x40,0x14,0x04,0x00,0x63,0x24, - 0x01,0x00,0xC6,0x24,0x02,0x00,0xA5,0x24,0x01,0x00,0x4A,0x25, - 0x2A,0x10,0x4E,0x01,0xD5,0xFF,0x40,0x14,0x04,0x00,0x84,0x24, - 0x3C,0x00,0xB1,0x8F,0x38,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x40,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x21,0x48,0xE0,0x03, - 0xAA,0x03,0x08,0x24,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x08,0x21,0xFC,0xFF,0x00,0x15,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x01, - 0x00,0x00,0x00,0x00,0x21,0x58,0xE0,0x03,0xE8,0x03,0x0A,0x24, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0xFF,0xFF,0x4A,0x21, - 0xFC,0xFF,0x40,0x15,0x00,0x00,0x00,0x00,0x08,0x00,0x60,0x01, - 0x00,0x00,0x00,0x00,0xFA,0xFF,0x84,0x20,0x82,0x20,0x04,0x00, - 0xFF,0xFF,0x84,0x20,0x00,0x00,0x00,0x00,0xFD,0xFF,0x80,0x14, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xF8,0xFF,0xBD,0x27,0xFF,0xFF,0xC3,0x24,0x0A,0x00,0xC0,0x10, - 0x21,0x38,0xA0,0x00,0xFF,0xFF,0x06,0x24,0x00,0x00,0xA2,0x90, - 0x01,0x00,0xA5,0x24,0x00,0x00,0x82,0xA0,0x04,0x00,0x40,0x10, - 0x01,0x00,0x84,0x24,0xFF,0xFF,0x63,0x24,0xF9,0xFF,0x66,0x14, - 0x00,0x00,0x00,0x00,0x21,0x10,0xE0,0x00,0x08,0x00,0xE0,0x03, - 0x08,0x00,0xBD,0x27,0x00,0x60,0x02,0x40,0x00,0x00,0x00,0x00, - 0x26,0x40,0x44,0x00,0x01,0xFF,0x08,0x31,0x26,0x40,0x02,0x01, - 0x00,0x60,0x88,0x40,0x08,0x00,0xE0,0x03,0x01,0xFF,0x42,0x30, - 0x00,0x60,0x02,0x40,0x00,0x00,0x00,0x00,0x01,0xFF,0x84,0x30, - 0x27,0x20,0x80,0x00,0x24,0x40,0x44,0x00,0x00,0x60,0x88,0x40, - 0x08,0x00,0xE0,0x03,0x01,0xFF,0x42,0x30,0x00,0x60,0x02,0x40, - 0x00,0x00,0x00,0x00,0x00,0xFF,0x84,0x30,0x25,0x40,0x44,0x00, - 0x01,0x00,0x08,0x35,0x00,0x60,0x88,0x40,0x08,0x00,0xE0,0x03, - 0x01,0xFF,0x42,0x30,0xD8,0xFF,0xBD,0x27,0x3F,0x00,0x84,0x30, - 0x1C,0x00,0xB3,0xAF,0x80,0x01,0x93,0x34,0x2E,0x84,0x82,0x97, - 0x2C,0x84,0x84,0x97,0x00,0x80,0x83,0x97,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x05,0xA2,0x10,0x3C,0x20,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x03,0xA6,0x54,0x3A,0xC0,0x0C, - 0x00,0x01,0x11,0x24,0x00,0x80,0x82,0x97,0x2C,0x84,0x83,0x97, - 0x05,0xA2,0x12,0x3C,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x00,0x00,0x02,0xA6,0x24,0x10,0x33,0x02,0x06,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97, - 0x00,0x00,0x00,0x00,0x20,0x3B,0xC0,0x08,0x25,0x18,0x62,0x00, - 0x14,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6, - 0x54,0x3A,0xC0,0x0C,0x42,0x88,0x11,0x00,0x00,0x80,0x82,0x97, - 0x2E,0x84,0x83,0x97,0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00, - 0x00,0x80,0x82,0xA7,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xA6, - 0x2E,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0xFF,0xFF,0x22,0x32,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x43,0xA6,0xE2,0xFF,0x40,0x14,0x24,0x10,0x33,0x02, - 0x21,0x88,0x00,0x00,0x10,0x00,0x10,0x24,0x05,0xA2,0x12,0x3C, - 0xFF,0xFF,0x13,0x24,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x80,0x83,0x97,0x2E,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x25,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0x54,0x3A,0xC0,0x0C, - 0x00,0x00,0x43,0xA6,0x08,0x00,0x00,0x12,0x00,0x00,0x00,0x00, - 0x00,0x00,0x43,0x96,0x14,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0x02,0x00,0x40,0x10,0x40,0x88,0x11,0x00, - 0x01,0x00,0x31,0x36,0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x10,0x26, - 0x2E,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0xE6,0xFF,0x13,0x16, - 0x00,0x00,0x43,0xA6,0x2C,0x84,0x82,0x97,0x00,0x80,0x83,0x97, - 0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00,0x05,0xA2,0x02,0x3C, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA4,0xFF,0xFF,0x22,0x32, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x24,0x00,0xB5,0xAF, - 0x21,0xA8,0xA0,0x00,0x20,0x00,0xB4,0xAF,0x3F,0x00,0x94,0x30, - 0x21,0x20,0x80,0x02,0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB6,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0xFC,0x3A,0xC0,0x0C,0x10,0x00,0xB0,0xAF,0x21,0x98,0x40,0x00, - 0xFF,0xFF,0xA3,0x32,0xFF,0xFF,0x62,0x32,0x03,0x00,0x62,0x14, - 0x30,0x01,0x16,0x24,0xB5,0x3C,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x05,0xA2,0x10,0x3C,0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x03,0xA6,0x54,0x3A,0xC0,0x0C, - 0x00,0x01,0x11,0x24,0x00,0x80,0x82,0x97,0x2C,0x84,0x83,0x97, - 0x05,0xA2,0x12,0x3C,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x00,0x00,0x02,0xA6,0x24,0x10,0x36,0x02,0x06,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97, - 0x00,0x00,0x00,0x00,0x92,0x3B,0xC0,0x08,0x25,0x18,0x62,0x00, - 0x14,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6, - 0x54,0x3A,0xC0,0x0C,0x42,0x88,0x11,0x00,0x00,0x80,0x82,0x97, - 0x2E,0x84,0x83,0x97,0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00, - 0x00,0x80,0x82,0xA7,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xA6, - 0x2E,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0xFF,0xFF,0x22,0x32,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x43,0xA6,0xE2,0xFF,0x40,0x14,0x24,0x10,0x36,0x02, - 0xFF,0xFF,0xA3,0x32,0xFF,0xFF,0x62,0x32,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x54,0x00,0x60,0x10,0xC0,0x01,0x93,0x36, - 0x05,0xA2,0x10,0x3C,0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x03,0xA6,0x54,0x3A,0xC0,0x0C, - 0x00,0x01,0x11,0x24,0x00,0x80,0x82,0x97,0x2C,0x84,0x83,0x97, - 0x05,0xA2,0x12,0x3C,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x00,0x00,0x02,0xA6,0x24,0x10,0x33,0x02,0x06,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97, - 0x00,0x00,0x00,0x00,0xC8,0x3B,0xC0,0x08,0x25,0x18,0x62,0x00, - 0x14,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6, - 0x54,0x3A,0xC0,0x0C,0x42,0x88,0x11,0x00,0x00,0x80,0x82,0x97, - 0x2E,0x84,0x83,0x97,0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00, - 0x00,0x80,0x82,0xA7,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xA6, - 0x2E,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0xFF,0xFF,0x22,0x32,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x43,0xA6,0xE2,0xFF,0x40,0x14,0x24,0x10,0x33,0x02, - 0x05,0xA2,0x10,0x3C,0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x03,0xA6, - 0x00,0x80,0x83,0x97,0x2C,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x25,0x18,0x62,0x00,0x00,0x00,0x03,0xA6,0x00,0x00,0x04,0x96, - 0x14,0x84,0x82,0x97,0x00,0x80,0x83,0xA7,0x24,0x10,0x44,0x00, - 0x09,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x54,0x3A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x96,0x14,0x84,0x82,0x97, - 0x00,0x00,0x00,0x00,0x24,0x10,0x43,0x00,0xF9,0xFF,0x40,0x10, - 0x00,0x00,0x00,0x00,0x2C,0x84,0x82,0x97,0x00,0x80,0x83,0x97, - 0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00,0x05,0xA2,0x02,0x3C, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA4,0xFF,0xFF,0xA3,0x32, - 0xFF,0xFF,0x02,0x34,0x7D,0x00,0x62,0x10,0x40,0x01,0x93,0x36, - 0x05,0xA2,0x10,0x3C,0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x03,0xA6,0x54,0x3A,0xC0,0x0C, - 0x00,0x01,0x11,0x24,0x00,0x80,0x82,0x97,0x2C,0x84,0x83,0x97, - 0x05,0xA2,0x12,0x3C,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x00,0x00,0x02,0xA6,0x24,0x10,0x33,0x02,0x06,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97, - 0x00,0x00,0x00,0x00,0x1F,0x3C,0xC0,0x08,0x25,0x18,0x62,0x00, - 0x14,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6, - 0x54,0x3A,0xC0,0x0C,0x42,0x88,0x11,0x00,0x00,0x80,0x82,0x97, - 0x2E,0x84,0x83,0x97,0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00, - 0x00,0x80,0x82,0xA7,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xA6, - 0x2E,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0xFF,0xFF,0x22,0x32,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x43,0xA6,0xE2,0xFF,0x40,0x14,0x24,0x10,0x33,0x02, - 0x21,0x90,0xA0,0x02,0x00,0x80,0x10,0x34,0x00,0x80,0x82,0x97, - 0x2C,0x84,0x83,0x97,0x05,0xA2,0x11,0x3C,0x25,0x10,0x43,0x00, - 0x05,0xA2,0x03,0x3C,0x00,0x80,0x82,0xA7,0x00,0x00,0x62,0xA4, - 0x24,0x10,0x12,0x02,0x06,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x48,0x3C,0xC0,0x08,0x25,0x18,0x62,0x00,0x14,0x84,0x82,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x23,0xA6,0x54,0x3A,0xC0,0x0C, - 0x42,0x80,0x10,0x00,0x00,0x80,0x82,0x97,0x2E,0x84,0x83,0x97, - 0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xA6,0x2E,0x84,0x82,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00, - 0xFF,0xFF,0x02,0x32,0x00,0x80,0x83,0xA7,0x00,0x00,0x23,0xA6, - 0xE2,0xFF,0x40,0x14,0x24,0x10,0x12,0x02,0x05,0xA2,0x10,0x3C, - 0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97,0x00,0x80,0x83,0x97, - 0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x03,0xA6,0x00,0x80,0x83,0x97, - 0x2C,0x84,0x82,0x97,0x00,0x00,0x00,0x00,0x25,0x18,0x62,0x00, - 0x00,0x00,0x03,0xA6,0x00,0x00,0x04,0x96,0x14,0x84,0x82,0x97, - 0x00,0x80,0x83,0xA7,0x24,0x10,0x44,0x00,0x09,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x03,0x96,0x14,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0xF9,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x2C,0x84,0x82,0x97,0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00, - 0x24,0x18,0x62,0x00,0x05,0xA2,0x02,0x3C,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x43,0xA4,0x00,0x01,0x13,0x24,0x05,0xA2,0x10,0x3C, - 0x2E,0x84,0x82,0x97,0x2C,0x84,0x84,0x97,0x00,0x80,0x83,0x97, - 0x27,0x10,0x44,0x00,0x24,0x18,0x62,0x00,0x00,0x80,0x83,0xA7, - 0x00,0x00,0x03,0xA6,0x54,0x3A,0xC0,0x0C,0x00,0x01,0x11,0x24, - 0x00,0x80,0x82,0x97,0x2C,0x84,0x83,0x97,0x05,0xA2,0x12,0x3C, - 0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7,0x00,0x00,0x02,0xA6, - 0x24,0x10,0x71,0x02,0x06,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x80,0x83,0x97,0x14,0x84,0x82,0x97,0x00,0x00,0x00,0x00, - 0x9C,0x3C,0xC0,0x08,0x25,0x18,0x62,0x00,0x14,0x84,0x82,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00, - 0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6,0x54,0x3A,0xC0,0x0C, - 0x42,0x88,0x11,0x00,0x00,0x80,0x82,0x97,0x2E,0x84,0x83,0x97, - 0x00,0x00,0x00,0x00,0x25,0x10,0x43,0x00,0x00,0x80,0x82,0xA7, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xA6,0x2E,0x84,0x82,0x97, - 0x00,0x80,0x83,0x97,0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00, - 0xFF,0xFF,0x22,0x32,0x00,0x80,0x83,0xA7,0x00,0x00,0x43,0xA6, - 0xE2,0xFF,0x40,0x14,0x24,0x10,0x71,0x02,0xFC,0x3A,0xC0,0x0C, - 0x21,0x20,0x80,0x02,0x26,0x10,0xA2,0x02,0xFF,0xFF,0x42,0x30, - 0x01,0x00,0x42,0x2C,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB6,0x8F, - 0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xB2,0xAF,0x21,0x90,0x00,0x00,0x40,0x10,0x04,0x00, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x44,0x00,0x21,0x20,0x00,0x02, - 0x14,0x00,0xB1,0xAF,0xFF,0xFF,0xB1,0x30,0x1C,0x00,0xBF,0xAF, - 0x62,0x3B,0xC0,0x0C,0x21,0x28,0x20,0x02,0x08,0x00,0x40,0x10, - 0x01,0x00,0x04,0x26,0x62,0x3B,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0x04,0x00,0x40,0x10,0x02,0x00,0x04,0x26,0x62,0x3B,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x2B,0x90,0x02,0x00,0x21,0x10,0x40,0x02, - 0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xD8,0xFF,0xBD,0x27,0x40,0x10,0x04,0x00,0x18,0x00,0xB2,0xAF, - 0x21,0x90,0x44,0x00,0x21,0x20,0x40,0x02,0x24,0x00,0xBF,0xAF, - 0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF,0x14,0x00,0xB1,0xAF, - 0xFC,0x3A,0xC0,0x0C,0x10,0x00,0xB0,0xAF,0x01,0x00,0x54,0x26, - 0x21,0x20,0x80,0x02,0xFC,0x3A,0xC0,0x0C,0x21,0x88,0x40,0x00, - 0x02,0x00,0x53,0x26,0x21,0x20,0x60,0x02,0xFC,0x3A,0xC0,0x0C, - 0x21,0x80,0x40,0x00,0xFF,0xFF,0x23,0x32,0xFF,0xFF,0x11,0x32, - 0x08,0x00,0x71,0x14,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x30, - 0x03,0x00,0x22,0x12,0x21,0x20,0x60,0x02,0x62,0x3B,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x02,0x3D,0xC0,0x08,0x21,0x10,0x20,0x02, - 0xFF,0xFF,0x50,0x30,0x04,0x00,0x70,0x10,0x21,0x20,0x80,0x02, - 0x05,0x00,0x30,0x16,0xFF,0xFF,0x02,0x24,0x21,0x20,0x40,0x02, - 0x62,0x3B,0xC0,0x0C,0x21,0x28,0x00,0x02,0x21,0x10,0x00,0x02, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x60,0x08,0x40,0x00,0x00,0x00,0x00, - 0xFE,0xFF,0x01,0x24,0x24,0x48,0x01,0x01,0x00,0x60,0x89,0x40, - 0x00,0x00,0x85,0xA4,0x02,0x00,0x84,0x20,0x02,0x2C,0x05,0x00, - 0x00,0x00,0x85,0xA4,0x00,0x60,0x88,0x40,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB2,0xAF, - 0x21,0x90,0x80,0x00,0x1C,0x00,0xB1,0xAF,0x21,0x88,0xA0,0x00, - 0x24,0x00,0xB3,0xAF,0x21,0x98,0xC0,0x00,0x28,0x00,0xB4,0xAF, - 0x21,0xA0,0xE0,0x00,0x2C,0x00,0xBF,0xAF,0x02,0x00,0x20,0x16, - 0x18,0x00,0xB0,0xAF,0xFF,0xFF,0x11,0x24,0x00,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00,0x03,0x00,0x53,0x14, - 0x00,0x00,0x00,0x00,0x39,0x3D,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x0B,0x00,0x80,0x1A,0x21,0x80,0x00,0x00,0x97,0x3A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x24,0x10,0x51,0x00,0xF6,0xFF,0x53,0x10,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x14,0x02,0xF7,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x21,0x10,0x00,0x00,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00, - 0x1C,0x00,0xB1,0xAF,0x21,0x88,0xA0,0x00,0x24,0x00,0xB3,0xAF, - 0x21,0x98,0xC0,0x00,0x28,0x00,0xB4,0xAF,0x21,0xA0,0xE0,0x00, - 0x2C,0x00,0xBF,0xAF,0x02,0x00,0x20,0x16,0x18,0x00,0xB0,0xAF, - 0xFF,0xFF,0x11,0x34,0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00, - 0x24,0x10,0x51,0x00,0x03,0x00,0x53,0x14,0x00,0x00,0x00,0x00, - 0x62,0x3D,0xC0,0x08,0x01,0x00,0x02,0x24,0x0B,0x00,0x80,0x1A, - 0x21,0x80,0x00,0x00,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00, - 0xF6,0xFF,0x53,0x10,0x01,0x00,0x10,0x26,0x2A,0x10,0x14,0x02, - 0xF7,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x00, - 0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x20,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x1C,0x00,0xB1,0xAF, - 0x21,0x88,0xA0,0x00,0x24,0x00,0xB3,0xAF,0x21,0x98,0xC0,0x00, - 0x28,0x00,0xB4,0xAF,0x21,0xA0,0xE0,0x00,0x2C,0x00,0xBF,0xAF, - 0x02,0x00,0x20,0x16,0x18,0x00,0xB0,0xAF,0xFF,0x00,0x11,0x24, - 0x00,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00, - 0x03,0x00,0x53,0x14,0x00,0x00,0x00,0x00,0x8B,0x3D,0xC0,0x08, - 0x01,0x00,0x02,0x24,0x0B,0x00,0x80,0x1A,0x21,0x80,0x00,0x00, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00,0xF6,0xFF,0x53,0x10, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x14,0x02,0xF7,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x00,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB2,0xAF, - 0x21,0x90,0x80,0x00,0x1C,0x00,0xB1,0xAF,0x21,0x88,0xA0,0x00, - 0x24,0x00,0xB3,0xAF,0x21,0x98,0xC0,0x00,0x28,0x00,0xB4,0xAF, - 0x21,0xA0,0xE0,0x00,0x2C,0x00,0xBF,0xAF,0x02,0x00,0x20,0x16, - 0x18,0x00,0xB0,0xAF,0xFF,0xFF,0x11,0x24,0x00,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00,0x03,0x00,0x53,0x14, - 0x00,0x00,0x00,0x00,0xB4,0x3D,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x0B,0x00,0x80,0x1A,0x21,0x80,0x00,0x00,0x97,0x3A,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x24,0x10,0x51,0x00,0xF6,0xFF,0x53,0x14,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x14,0x02,0xF7,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x21,0x10,0x00,0x00,0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xD0,0xFF,0xBD,0x27,0x20,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00, - 0x1C,0x00,0xB1,0xAF,0x21,0x88,0xA0,0x00,0x24,0x00,0xB3,0xAF, - 0x21,0x98,0xC0,0x00,0x28,0x00,0xB4,0xAF,0x21,0xA0,0xE0,0x00, - 0x2C,0x00,0xBF,0xAF,0x02,0x00,0x20,0x16,0x18,0x00,0xB0,0xAF, - 0xFF,0xFF,0x11,0x34,0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00, - 0x24,0x10,0x51,0x00,0x03,0x00,0x53,0x14,0x00,0x00,0x00,0x00, - 0xDD,0x3D,0xC0,0x08,0x01,0x00,0x02,0x24,0x0B,0x00,0x80,0x1A, - 0x21,0x80,0x00,0x00,0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00, - 0xF6,0xFF,0x53,0x14,0x01,0x00,0x10,0x26,0x2A,0x10,0x14,0x02, - 0xF7,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x00, - 0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x20,0x00,0xB2,0xAF,0x21,0x90,0x80,0x00,0x1C,0x00,0xB1,0xAF, - 0x21,0x88,0xA0,0x00,0x24,0x00,0xB3,0xAF,0x21,0x98,0xC0,0x00, - 0x28,0x00,0xB4,0xAF,0x21,0xA0,0xE0,0x00,0x2C,0x00,0xBF,0xAF, - 0x02,0x00,0x20,0x16,0x18,0x00,0xB0,0xAF,0xFF,0x00,0x11,0x24, - 0x00,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00, - 0x03,0x00,0x53,0x14,0x00,0x00,0x00,0x00,0x06,0x3E,0xC0,0x08, - 0x01,0x00,0x02,0x24,0x0B,0x00,0x80,0x1A,0x21,0x80,0x00,0x00, - 0x97,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00,0xF6,0xFF,0x53,0x14, - 0x01,0x00,0x10,0x26,0x2A,0x10,0x14,0x02,0xF7,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x21,0x10,0x00,0x00,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xF8,0xFF,0xBD,0x27,0xFF,0xFF,0xC3,0x24,0x08,0x00,0xC0,0x10, - 0x21,0x38,0x80,0x00,0xFF,0xFF,0x06,0x24,0x00,0x00,0xA2,0x90, - 0x01,0x00,0xA5,0x24,0xFF,0xFF,0x63,0x24,0x00,0x00,0x82,0xA0, - 0xFB,0xFF,0x66,0x14,0x01,0x00,0x84,0x24,0x21,0x10,0xE0,0x00, - 0x08,0x00,0xE0,0x03,0x08,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x60,0x08,0x40,0x01,0x00,0x09,0x3C, - 0x00,0x60,0x89,0x40,0x0F,0x00,0x8A,0x30,0x21,0x28,0xAA,0x00, - 0xC0,0xFF,0xA5,0x24,0x00,0x00,0x80,0xA0,0x10,0x00,0x80,0xA0, - 0x20,0x00,0x80,0xA0,0xFB,0xFF,0xA0,0x1C,0x30,0x00,0x80,0xA0, - 0x40,0x00,0x84,0x24,0x00,0x60,0x88,0x40,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x83,0x02,0x3C,0xE0,0xF8,0x42,0x24, - 0x00,0x20,0x09,0x3C,0x25,0x10,0x49,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x00,0x60,0x08,0x40,0x03,0x00,0x09,0x3C, - 0x00,0x60,0x89,0x40,0x0F,0x00,0x8A,0x30,0x21,0x28,0xAA,0x00, - 0xC0,0xFF,0xA5,0x24,0x00,0x00,0x80,0xA0,0x10,0x00,0x80,0xA0, - 0x20,0x00,0x80,0xA0,0xFB,0xFF,0xA0,0x1C,0x30,0x00,0x80,0xA0, - 0x40,0x00,0x84,0x24,0x00,0x60,0x88,0x40,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x03,0x3C,0xC0,0x03,0x63,0x8C,0x00,0xA3,0x02,0x3C, - 0xBC,0x03,0x42,0x8C,0x00,0x00,0x00,0x00,0x10,0x00,0x62,0x10, - 0xFF,0xFF,0x02,0x24,0x00,0xA3,0x02,0x3C,0xBC,0x03,0x42,0x8C, - 0x00,0xA3,0x01,0x3C,0x21,0x08,0x22,0x00,0xC8,0x03,0x22,0x90, - 0x00,0xA3,0x03,0x3C,0xBC,0x03,0x63,0x8C,0x00,0xA3,0x04,0x3C, - 0xC4,0x03,0x84,0x8C,0x00,0x16,0x02,0x00,0x03,0x16,0x02,0x00, - 0x01,0x00,0x63,0x24,0x24,0x18,0x64,0x00,0x00,0xA3,0x01,0x3C, - 0xBC,0x03,0x23,0xAC,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0xA3,0x06,0x3C,0x00,0x01,0xC6,0x34,0x0A,0x00,0x09,0x24, - 0xFF,0xFF,0x08,0x24,0x0D,0x00,0x07,0x24,0x00,0xA3,0x03,0x3C, - 0xC0,0x03,0x63,0x8C,0x00,0xA3,0x02,0x3C,0xBC,0x03,0x42,0x8C, - 0x00,0x00,0x00,0x00,0x11,0x00,0x62,0x10,0xFF,0xFF,0x05,0x24, - 0x00,0xA3,0x02,0x3C,0xBC,0x03,0x42,0x8C,0x00,0x00,0x00,0x00, - 0x21,0x10,0x46,0x00,0xC8,0x02,0x42,0x90,0x00,0x00,0x00,0x00, - 0x00,0x16,0x02,0x00,0x03,0x2E,0x02,0x00,0x00,0xA3,0x02,0x3C, - 0xBC,0x03,0x42,0x8C,0x00,0xA3,0x03,0x3C,0xC4,0x03,0x63,0x8C, - 0x01,0x00,0x42,0x24,0x24,0x10,0x43,0x00,0x00,0xA3,0x01,0x3C, - 0xBC,0x03,0x22,0xAC,0x0B,0x00,0xA9,0x10,0x0B,0x00,0xA2,0x28, - 0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xE4,0xFF,0xA8,0x10, - 0x00,0x00,0x00,0x00,0x8E,0x3E,0xC0,0x08,0x00,0x00,0x85,0xA0, - 0xE0,0xFF,0xA7,0x10,0x00,0x00,0x00,0x00,0x8E,0x3E,0xC0,0x08, - 0x00,0x00,0x85,0xA0,0x90,0x3E,0xC0,0x08,0x00,0x00,0x80,0xA0, - 0x69,0x3E,0xC0,0x08,0x01,0x00,0x84,0x24,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xD0,0xFF,0xBD,0x27,0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x24,0x00,0xB3,0xAF,0x21,0x98,0xA0,0x00,0x1C,0x00,0xB1,0xAF, - 0x21,0x88,0x00,0x00,0x20,0x00,0xB2,0xAF,0x21,0x90,0x00,0x02, - 0x05,0x00,0x40,0x16,0x28,0x00,0xBF,0xAF,0x36,0x00,0x60,0x16, - 0x21,0x10,0x00,0x00,0xD6,0x3E,0xC0,0x08,0x00,0x00,0x20,0xAE, - 0x00,0x00,0x43,0x82,0x00,0x00,0x00,0x00,0xA9,0x3E,0xC0,0x08, - 0x20,0x00,0x02,0x24,0x00,0x00,0x03,0x82,0x20,0x00,0x02,0x24, - 0xFD,0xFF,0x62,0x10,0x01,0x00,0x10,0x26,0xFF,0xFF,0x10,0x26, - 0x09,0x00,0x02,0x24,0xF9,0xFF,0x62,0x10,0x01,0x00,0x10,0x26, - 0xFF,0xFF,0x10,0x26,0x00,0x00,0x03,0x82,0x2D,0x00,0x02,0x24, - 0x04,0x00,0x62,0x14,0x2B,0x00,0x02,0x24,0x01,0x00,0x10,0x26, - 0xBA,0x3E,0xC0,0x08,0x01,0x00,0x11,0x24,0x03,0x00,0x62,0x14, - 0x21,0x20,0x00,0x02,0x01,0x00,0x10,0x26,0x21,0x20,0x00,0x02, - 0xEC,0x3E,0xC0,0x0C,0x10,0x00,0xA5,0x27,0x07,0x00,0x60,0x12, - 0x21,0x18,0x40,0x00,0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x02,0x00,0x50,0x14,0x00,0x00,0x00,0x00,0x21,0x10,0x40,0x02, - 0x00,0x00,0x62,0xAE,0x06,0x00,0x20,0x12,0x00,0x80,0x02,0x3C, - 0x2B,0x10,0x43,0x00,0x05,0x00,0x40,0x14,0xFF,0x7F,0x02,0x3C, - 0xD3,0x3E,0xC0,0x08,0x21,0x10,0x60,0x00,0x05,0x00,0x61,0x04, - 0xFF,0x7F,0x02,0x3C,0x07,0x00,0x20,0x12,0xFF,0xFF,0x42,0x34, - 0xD6,0x3E,0xC0,0x08,0x00,0x80,0x02,0x3C,0x21,0x10,0x60,0x00, - 0x02,0x00,0x20,0x12,0x00,0x00,0x00,0x00,0x23,0x10,0x02,0x00, - 0x28,0x00,0xBF,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0x82,0x24,0x0A,0x00,0x42,0x2C, - 0x07,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0xBF,0xFF,0x82,0x24, - 0x06,0x00,0x42,0x2C,0x03,0x00,0x40,0x14,0x01,0x00,0x02,0x24, - 0x9F,0xFF,0x82,0x24,0x06,0x00,0x42,0x2C,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xF8,0xFF,0xBD,0x27,0x00,0x00,0xB0,0xAF, - 0x21,0x38,0x00,0x00,0x21,0x48,0x00,0x00,0x21,0x50,0x00,0x00, - 0x21,0x70,0x00,0x00,0x05,0x00,0x80,0x14,0x21,0xC8,0x80,0x00, - 0x6E,0x00,0xA0,0x14,0x21,0x10,0x00,0x00,0x63,0x3F,0xC0,0x08, - 0x00,0x00,0xC0,0xAD,0x00,0x00,0x83,0x80,0x20,0x00,0x02,0x24, - 0xFD,0xFF,0x62,0x10,0x01,0x00,0x84,0x24,0xFF,0xFF,0x84,0x24, - 0x09,0x00,0x02,0x24,0xF9,0xFF,0x62,0x10,0x01,0x00,0x84,0x24, - 0xFF,0xFF,0x84,0x24,0x00,0x00,0x83,0x80,0x2B,0x00,0x02,0x24, - 0x03,0x00,0x62,0x14,0x2D,0x00,0x02,0x24,0x0B,0x3F,0xC0,0x08, - 0x01,0x00,0x84,0x24,0x03,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x84,0x24,0x01,0x00,0x0E,0x24,0x03,0x00,0xC0,0x10, - 0x10,0x00,0x02,0x24,0x10,0x00,0xC2,0x14,0x00,0x00,0x00,0x00, - 0x00,0x00,0x83,0x80,0x30,0x00,0x02,0x24,0x09,0x00,0x62,0x14, - 0x0A,0x00,0x02,0x24,0x01,0x00,0x83,0x80,0x58,0x00,0x02,0x24, - 0x03,0x00,0x62,0x10,0x78,0x00,0x02,0x24,0x03,0x00,0x62,0x14, - 0x08,0x00,0x02,0x24,0x10,0x00,0x02,0x24,0x02,0x00,0x84,0x24, - 0x02,0x00,0xC0,0x14,0x00,0x00,0x00,0x00,0x21,0x30,0x40,0x00, - 0x00,0x00,0x83,0x80,0xFF,0xFF,0x02,0x24,0x1B,0x00,0x46,0x00, - 0x02,0x00,0xC0,0x14,0x00,0x00,0x00,0x00,0x0D,0x00,0x07,0x00, - 0x12,0x40,0x00,0x00,0x10,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x2A,0x00,0x60,0x10,0x30,0x00,0x62,0x2C, - 0x30,0x00,0xCF,0x24,0x0B,0x00,0xCD,0x28,0x57,0x00,0xCC,0x24, - 0x37,0x00,0xCB,0x24,0x05,0x00,0x40,0x14,0x2B,0x10,0x6F,0x00, - 0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x42,0x3F,0xC0,0x08, - 0xD0,0xFF,0x63,0x24,0x1E,0x00,0xA0,0x15,0x61,0x00,0x62,0x2C, - 0x06,0x00,0x40,0x14,0x41,0x00,0x62,0x2C,0x2B,0x10,0x6C,0x00, - 0x03,0x00,0x40,0x10,0x41,0x00,0x62,0x2C,0x42,0x3F,0xC0,0x08, - 0xA9,0xFF,0x63,0x24,0x15,0x00,0x40,0x14,0x2B,0x10,0x6B,0x00, - 0x13,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xC9,0xFF,0x63,0x24, - 0x2B,0x10,0x07,0x01,0x06,0x00,0x40,0x14,0x01,0x00,0x09,0x24, - 0x06,0x00,0xE8,0x14,0x18,0x00,0xE6,0x00,0x2B,0x10,0x03,0x03, - 0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x01,0x00,0x0A,0x24, - 0x18,0x00,0xE6,0x00,0x01,0x00,0x84,0x24,0x12,0x80,0x00,0x00, - 0x21,0x38,0x03,0x02,0x00,0x00,0x83,0x80,0x00,0x00,0x00,0x00, - 0xDC,0xFF,0x60,0x14,0x30,0x00,0x62,0x2C,0x05,0x00,0x40,0x11, - 0x00,0x00,0x00,0x00,0x0D,0x00,0xA0,0x10,0xFF,0xFF,0x02,0x24, - 0x63,0x3F,0xC0,0x08,0x00,0x00,0xA4,0xAC,0x06,0x00,0xA0,0x10, - 0x00,0x00,0x00,0x00,0x03,0x00,0x20,0x15,0x00,0x00,0x00,0x00, - 0x60,0x3F,0xC0,0x08,0x00,0x00,0xB9,0xAC,0x00,0x00,0xA4,0xAC, - 0x02,0x00,0xC0,0x11,0x21,0x10,0xE0,0x00,0x23,0x10,0x02,0x00, - 0x00,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x08,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xFF,0xBD,0x27, - 0x10,0x00,0xB0,0xAF,0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36, - 0xFF,0xF0,0x03,0x3C,0xFF,0xFF,0x63,0x34,0x3F,0x00,0x84,0x30, - 0x24,0x00,0xB5,0xAF,0x80,0x01,0x95,0x34,0x18,0x00,0xB2,0xAF, - 0x00,0x01,0x12,0x24,0x14,0x00,0xB1,0xAF,0x07,0xA2,0x11,0x3C, - 0xEC,0x00,0x31,0x36,0x2C,0x00,0xB7,0xAF,0x00,0x04,0x17,0x3C, - 0x20,0x00,0xB4,0xAF,0xFF,0xFB,0x14,0x3C,0xFF,0xFF,0x94,0x36, - 0x28,0x00,0xB6,0xAF,0x00,0x01,0x16,0x3C,0x1C,0x00,0xB3,0xAF, - 0xFF,0xFE,0x13,0x3C,0x30,0x00,0xBF,0xAF,0x00,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x02,0xAE,0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x73,0x36, - 0xC0,0x84,0x82,0x8F,0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE,0x24,0x10,0x55,0x02, - 0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x96,0x3F,0xC0,0x08,0x25,0x10,0x57,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x54,0x00, - 0xC0,0x84,0x82,0xAF,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xAE, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x25,0x10,0x56,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE,0x54,0x3A,0xC0,0x0C, - 0x42,0x90,0x12,0x00,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x53,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE, - 0xFF,0xFF,0x42,0x32,0xE6,0xFF,0x40,0x14,0x24,0x10,0x55,0x02, - 0x21,0x88,0x00,0x00,0x10,0x00,0x10,0x24,0x07,0xA2,0x12,0x3C, - 0xEC,0x00,0x52,0x36,0x00,0x01,0x16,0x3C,0x00,0x08,0x15,0x3C, - 0xFF,0xFE,0x13,0x3C,0xFF,0xFF,0x73,0x36,0xFF,0xFF,0x14,0x24, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x25,0x10,0x56,0x00,0xC0,0x84,0x82,0xAF, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x42,0xAE,0x07,0x00,0x00,0x12, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x8E,0x00,0x00,0x00,0x00, - 0x24,0x10,0x55,0x00,0x02,0x00,0x40,0x10,0x40,0x88,0x11,0x00, - 0x01,0x00,0x31,0x36,0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x10,0x26, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x53,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x42,0xAE,0xE8,0xFF,0x14,0x16, - 0x07,0xA2,0x04,0x3C,0xEC,0x00,0x84,0x34,0xFF,0xFD,0x03,0x3C, - 0xC0,0x84,0x82,0x8F,0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x82,0xAC,0xFF,0xFF,0x22,0x32, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB7,0x8F,0x28,0x00,0xB6,0x8F, - 0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27, - 0x30,0x00,0xBE,0xAF,0x21,0xF0,0xA0,0x00,0x28,0x00,0xB6,0xAF, - 0x3F,0x00,0x96,0x30,0x21,0x20,0xC0,0x02,0x34,0x00,0xBF,0xAF, - 0x2C,0x00,0xB7,0xAF,0x24,0x00,0xB5,0xAF,0x20,0x00,0xB4,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x68,0x3F,0xC0,0x0C,0x10,0x00,0xB0,0xAF,0x21,0x98,0x40,0x00, - 0xFF,0xFF,0xC3,0x33,0xFF,0xFF,0x62,0x32,0x03,0x00,0x62,0x14, - 0x07,0xA2,0x10,0x3C,0x43,0x41,0xC0,0x08,0x01,0x00,0x02,0x24, - 0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x00,0x01,0x12,0x24,0x07,0xA2,0x11,0x3C,0xEC,0x00,0x31,0x36, - 0xFF,0xFB,0x15,0x3C,0xFF,0xFF,0xB5,0x36,0x00,0x01,0x17,0x3C, - 0xFF,0xFE,0x14,0x3C,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE, - 0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x94,0x36,0xC0,0x84,0x82,0x8F, - 0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x02,0xAE,0x30,0x01,0x42,0x32,0x05,0x00,0x40,0x10, - 0x00,0x04,0x06,0x3C,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x13,0x40,0xC0,0x08,0x25,0x10,0x46,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x24,0x10,0x55,0x00,0xC0,0x84,0x82,0xAF, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xAE,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x25,0x10,0x57,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x22,0xAE,0x54,0x3A,0xC0,0x0C,0x42,0x90,0x12,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x54,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE,0xFF,0xFF,0x42,0x32, - 0xE6,0xFF,0x40,0x14,0x30,0x01,0x42,0x32,0xFF,0xFF,0xC3,0x33, - 0xFF,0xFF,0x62,0x32,0x27,0x10,0x02,0x00,0x24,0x18,0x62,0x00, - 0x58,0x00,0x60,0x10,0xC0,0x01,0xD5,0x36,0x07,0xA2,0x10,0x3C, - 0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C,0xFF,0xFF,0x63,0x34, - 0x00,0x01,0x12,0x24,0x07,0xA2,0x11,0x3C,0xEC,0x00,0x31,0x36, - 0xFF,0xFB,0x14,0x3C,0xFF,0xFF,0x94,0x36,0x00,0x01,0x17,0x3C, - 0xFF,0xFE,0x13,0x3C,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE, - 0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x73,0x36,0xC0,0x84,0x82,0x8F, - 0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x02,0xAE,0x24,0x10,0x55,0x02,0x05,0x00,0x40,0x10, - 0x00,0x04,0x06,0x3C,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x4C,0x40,0xC0,0x08,0x25,0x10,0x46,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x24,0x10,0x54,0x00,0xC0,0x84,0x82,0xAF, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xAE,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x25,0x10,0x57,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x22,0xAE,0x54,0x3A,0xC0,0x0C,0x42,0x90,0x12,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x53,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE,0xFF,0xFF,0x42,0x32, - 0xE6,0xFF,0x40,0x14,0x24,0x10,0x55,0x02,0x07,0xA2,0x10,0x3C, - 0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C,0xC0,0x84,0x82,0x8F, - 0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x02,0xAE,0xC0,0x84,0x82,0x8F, - 0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x02,0xAE,0x00,0x00,0x02,0x8E,0x00,0x08,0x03,0x3C, - 0x24,0x10,0x43,0x00,0x0B,0x00,0x40,0x14,0x07,0xA2,0x04,0x3C, - 0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36,0x00,0x08,0x11,0x3C, - 0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00,0xFA,0xFF,0x40,0x10, - 0x07,0xA2,0x04,0x3C,0xEC,0x00,0x84,0x34,0xFF,0xFD,0x03,0x3C, - 0xC0,0x84,0x82,0x8F,0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x82,0xAC,0xFF,0xFF,0xC3,0x33, - 0xFF,0xFF,0x02,0x34,0x85,0x00,0x62,0x10,0x40,0x01,0xD5,0x36, - 0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C, - 0xFF,0xFF,0x63,0x34,0x00,0x01,0x12,0x24,0x07,0xA2,0x11,0x3C, - 0xEC,0x00,0x31,0x36,0xFF,0xFB,0x14,0x3C,0xFF,0xFF,0x94,0x36, - 0x00,0x01,0x17,0x3C,0xFF,0xFE,0x13,0x3C,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x02,0xAE,0x54,0x3A,0xC0,0x0C,0xFF,0xFF,0x73,0x36, - 0xC0,0x84,0x82,0x8F,0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE,0x24,0x10,0x55,0x02, - 0x05,0x00,0x40,0x10,0x00,0x04,0x06,0x3C,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0xA7,0x40,0xC0,0x08,0x25,0x10,0x46,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x54,0x00, - 0xC0,0x84,0x82,0xAF,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x22,0xAE, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x25,0x10,0x57,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE,0x54,0x3A,0xC0,0x0C, - 0x42,0x90,0x12,0x00,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x53,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE, - 0xFF,0xFF,0x42,0x32,0xE6,0xFF,0x40,0x14,0x24,0x10,0x55,0x02, - 0x21,0xA0,0xC0,0x03,0x07,0xA2,0x02,0x3C,0xEC,0x00,0x42,0x34, - 0x00,0x80,0x11,0x34,0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36, - 0x00,0x04,0x17,0x3C,0xFF,0xFB,0x13,0x3C,0xFF,0xFF,0x73,0x36, - 0x00,0x01,0x15,0x3C,0xFF,0xFE,0x12,0x3C,0xFF,0xFF,0x52,0x36, - 0xC0,0x84,0x83,0x8F,0x00,0x02,0x04,0x3C,0x25,0x18,0x64,0x00, - 0xC0,0x84,0x83,0xAF,0x00,0x00,0x43,0xAC,0x24,0x10,0x34,0x02, - 0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0xD4,0x40,0xC0,0x08,0x25,0x10,0x57,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x53,0x00, - 0xC0,0x84,0x82,0xAF,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x02,0xAE, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x25,0x10,0x55,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE,0x54,0x3A,0xC0,0x0C, - 0x42,0x88,0x11,0x00,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x52,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE, - 0xFF,0xFF,0x22,0x32,0xE6,0xFF,0x40,0x14,0x24,0x10,0x34,0x02, - 0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C, - 0xC0,0x84,0x82,0x8F,0xFF,0xFF,0x63,0x34,0x24,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x02,0xAE, - 0xC0,0x84,0x82,0x8F,0x00,0x02,0x03,0x3C,0x25,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE,0x00,0x00,0x02,0x8E, - 0x00,0x08,0x03,0x3C,0x24,0x10,0x43,0x00,0x0B,0x00,0x40,0x14, - 0x07,0xA2,0x04,0x3C,0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36, - 0x00,0x08,0x11,0x3C,0x54,0x3A,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x24,0x10,0x51,0x00, - 0xFA,0xFF,0x40,0x10,0x07,0xA2,0x04,0x3C,0xEC,0x00,0x84,0x34, - 0xFF,0xFD,0x03,0x3C,0xC0,0x84,0x82,0x8F,0xFF,0xFF,0x63,0x34, - 0x24,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x82,0xAC, - 0x07,0xA2,0x10,0x3C,0xEC,0x00,0x10,0x36,0xFF,0xFC,0x03,0x3C, - 0xFF,0xFF,0x63,0x34,0x00,0x01,0x12,0x24,0x07,0xA2,0x11,0x3C, - 0xEC,0x00,0x31,0x36,0x00,0x04,0x17,0x3C,0xFF,0xFB,0x14,0x3C, - 0xFF,0xFF,0x94,0x36,0x00,0x01,0x15,0x3C,0xFF,0xFE,0x13,0x3C, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x24,0x10,0x43,0x00, - 0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE,0x54,0x3A,0xC0,0x0C, - 0xFF,0xFF,0x73,0x36,0xC0,0x84,0x82,0x8F,0x00,0x02,0x03,0x3C, - 0x25,0x10,0x43,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x02,0xAE, - 0x00,0x01,0x42,0x32,0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00,0x2C,0x41,0xC0,0x08, - 0x25,0x10,0x57,0x00,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x54,0x00,0xC0,0x84,0x82,0xAF,0x54,0x3A,0xC0,0x0C, - 0x00,0x00,0x22,0xAE,0xC0,0x84,0x82,0x8F,0x00,0x00,0x00,0x00, - 0x25,0x10,0x55,0x00,0xC0,0x84,0x82,0xAF,0x00,0x00,0x22,0xAE, - 0x54,0x3A,0xC0,0x0C,0x42,0x90,0x12,0x00,0xC0,0x84,0x82,0x8F, - 0x00,0x00,0x00,0x00,0x24,0x10,0x53,0x00,0xC0,0x84,0x82,0xAF, - 0x00,0x00,0x22,0xAE,0xFF,0xFF,0x42,0x32,0xE6,0xFF,0x40,0x14, - 0x00,0x01,0x42,0x32,0x68,0x3F,0xC0,0x0C,0x21,0x20,0xC0,0x02, - 0x26,0x10,0xC2,0x03,0xFF,0xFF,0x42,0x30,0x01,0x00,0x42,0x2C, - 0x34,0x00,0xBF,0x8F,0x30,0x00,0xBE,0x8F,0x2C,0x00,0xB7,0x8F, - 0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0xB0,0xFF,0xBD,0x27,0x40,0x00,0xB6,0xAF, - 0x21,0xB0,0x80,0x00,0x34,0x00,0xB3,0xAF,0x21,0x98,0xA0,0x00, - 0x48,0x00,0xBE,0xAF,0x21,0xF0,0xC0,0x00,0x44,0x00,0xB7,0xAF, - 0x21,0xB8,0xE0,0x00,0x3C,0x00,0xB5,0xAF,0x21,0xA8,0x00,0x00, - 0x38,0x00,0xB4,0xAF,0x21,0xA0,0x00,0x00,0x4C,0x00,0xBF,0xAF, - 0x30,0x00,0xB2,0xAF,0x2C,0x00,0xB1,0xAF,0x28,0x00,0xB0,0xAF, - 0x02,0x83,0x06,0x3C,0x21,0x30,0xD4,0x00,0x80,0xB1,0xC6,0x90, - 0x00,0x00,0x00,0x00,0x1C,0x00,0x60,0x1A,0x21,0x80,0x00,0x00, - 0x21,0x18,0xC0,0x02,0x21,0x20,0x76,0x02,0x00,0x00,0x66,0xA0, - 0x01,0x00,0x63,0x24,0x2A,0x10,0x64,0x00,0xFC,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x13,0x00,0x60,0x1A,0x21,0x80,0x00,0x00, - 0xFF,0x00,0xD2,0x30,0x21,0x88,0xC0,0x02,0x00,0x00,0x27,0x92, - 0x00,0x00,0x00,0x00,0x09,0x00,0xF2,0x10,0x00,0x00,0x00,0x00, - 0x05,0x00,0xE0,0x12,0x21,0x28,0x00,0x02,0x60,0x00,0xA4,0x8F, - 0x00,0x00,0x00,0x00,0x09,0xF8,0xE0,0x02,0x21,0x30,0x40,0x02, - 0x20,0x00,0xC0,0x17,0x01,0x00,0xB5,0x26,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x13,0x02,0xF1,0xFF,0x40,0x14,0x01,0x00,0x31,0x26, - 0x01,0x00,0x94,0x26,0x04,0x00,0x82,0x2E,0xDC,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x07,0x00,0x60,0x1A,0x21,0x80,0x00,0x00, - 0x21,0x18,0xC0,0x02,0x00,0x00,0x70,0xA0,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x13,0x02,0xFC,0xFF,0x40,0x14,0x01,0x00,0x63,0x24, - 0x14,0x00,0x60,0x1A,0x21,0x80,0x00,0x00,0x21,0x88,0xC0,0x02, - 0x00,0x00,0x27,0x92,0xFF,0x00,0x06,0x32,0x0B,0x00,0xE6,0x10, - 0x00,0x00,0x00,0x00,0x05,0x00,0xE0,0x12,0x00,0x00,0x00,0x00, - 0x60,0x00,0xA4,0x8F,0x00,0x00,0x00,0x00,0x09,0xF8,0xE0,0x02, - 0x21,0x28,0x00,0x02,0x03,0x00,0xC0,0x13,0x01,0x00,0xB5,0x26, - 0xA4,0x41,0xC0,0x08,0x01,0x00,0x02,0x24,0x01,0x00,0x10,0x26, - 0x2A,0x10,0x13,0x02,0xEF,0xFF,0x40,0x14,0x01,0x00,0x31,0x26, - 0x21,0x10,0xA0,0x02,0x4C,0x00,0xBF,0x8F,0x48,0x00,0xBE,0x8F, - 0x44,0x00,0xB7,0x8F,0x40,0x00,0xB6,0x8F,0x3C,0x00,0xB5,0x8F, - 0x38,0x00,0xB4,0x8F,0x34,0x00,0xB3,0x8F,0x30,0x00,0xB2,0x8F, - 0x2C,0x00,0xB1,0x8F,0x28,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x50,0x00,0xBD,0x27,0xA0,0xFF,0xBD,0x27,0x58,0x00,0xBE,0xAF, - 0x21,0xF0,0x80,0x00,0x44,0x00,0xB3,0xAF,0x21,0x98,0xA0,0x00, - 0x4C,0x00,0xB5,0xAF,0x21,0xA8,0xE0,0x00,0x48,0x00,0xB4,0xAF, - 0x21,0xA0,0x00,0x00,0x21,0x10,0x60,0x02,0x5C,0x00,0xBF,0xAF, - 0x54,0x00,0xB7,0xAF,0x50,0x00,0xB6,0xAF,0x40,0x00,0xB2,0xAF, - 0x3C,0x00,0xB1,0xAF,0x38,0x00,0xB0,0xAF,0x02,0x00,0x61,0x06, - 0x10,0x00,0xA6,0xAF,0x03,0x00,0x62,0x26,0x83,0x98,0x02,0x00, - 0x21,0xB8,0x00,0x00,0x02,0x83,0x16,0x3C,0x84,0xB1,0xD6,0x26, - 0x00,0x00,0xD2,0x8E,0x00,0x00,0x00,0x00,0x07,0x00,0x60,0x12, - 0x21,0x80,0x00,0x00,0x21,0x18,0xC0,0x03,0x00,0x00,0x72,0xAC, - 0x01,0x00,0x10,0x26,0x2B,0x10,0x13,0x02,0xFC,0xFF,0x40,0x14, - 0x04,0x00,0x63,0x24,0x14,0x00,0x60,0x12,0x21,0x80,0x00,0x00, - 0x21,0x88,0xC0,0x03,0x00,0x00,0x27,0x8E,0x00,0x00,0x00,0x00, - 0x0B,0x00,0xF2,0x10,0x80,0x28,0x10,0x00,0x05,0x00,0xA0,0x12, - 0x00,0x00,0x00,0x00,0x70,0x00,0xA4,0x8F,0x00,0x00,0x00,0x00, - 0x09,0xF8,0xA0,0x02,0x21,0x30,0x40,0x02,0x10,0x00,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x15,0x01,0x00,0x94,0x26, - 0x01,0x00,0x10,0x26,0x2B,0x10,0x13,0x02,0xEF,0xFF,0x40,0x14, - 0x04,0x00,0x31,0x26,0x01,0x00,0xF7,0x26,0x04,0x00,0xE2,0x2E, - 0xDE,0xFF,0x40,0x14,0x04,0x00,0xD6,0x26,0x07,0x00,0x60,0x12, - 0x21,0x80,0x00,0x00,0x21,0x18,0xC0,0x03,0x00,0x00,0x70,0xAC, - 0x01,0x00,0x10,0x26,0x2B,0x10,0x13,0x02,0xFC,0xFF,0x40,0x14, - 0x04,0x00,0x63,0x24,0x16,0x00,0x60,0x12,0x21,0x80,0x00,0x00, - 0x21,0x88,0xC0,0x03,0x00,0x00,0x27,0x8E,0x00,0x00,0x00,0x00, - 0x0D,0x00,0xF0,0x10,0x80,0x28,0x10,0x00,0x05,0x00,0xA0,0x12, - 0x00,0x00,0x00,0x00,0x70,0x00,0xA4,0x8F,0x00,0x00,0x00,0x00, - 0x09,0xF8,0xA0,0x02,0x21,0x30,0x00,0x02,0x10,0x00,0xA8,0x8F, - 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x11,0x01,0x00,0x94,0x26, - 0x0A,0x42,0xC0,0x08,0x01,0x00,0x02,0x24,0x01,0x00,0x10,0x26, - 0x2B,0x10,0x13,0x02,0xED,0xFF,0x40,0x14,0x04,0x00,0x31,0x26, - 0x21,0x10,0x80,0x02,0x5C,0x00,0xBF,0x8F,0x58,0x00,0xBE,0x8F, - 0x54,0x00,0xB7,0x8F,0x50,0x00,0xB6,0x8F,0x4C,0x00,0xB5,0x8F, - 0x48,0x00,0xB4,0x8F,0x44,0x00,0xB3,0x8F,0x40,0x00,0xB2,0x8F, - 0x3C,0x00,0xB1,0x8F,0x38,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x60,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xF8,0xFF,0xBD,0x27,0xFF,0xFF,0xC3,0x24,0x06,0x00,0xC0,0x10, - 0x21,0x10,0x80,0x00,0xFF,0xFF,0x06,0x24,0x00,0x00,0x85,0xA0, - 0xFF,0xFF,0x63,0x24,0xFD,0xFF,0x66,0x14,0x01,0x00,0x84,0x24, - 0x08,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xC6,0x24,0x0A,0x00,0xC0,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x83,0x80,0x00,0x00,0xA2,0x80,0x00,0x00,0x00,0x00, - 0x05,0x00,0x62,0x14,0x00,0x00,0x00,0x00,0x01,0x00,0x84,0x24, - 0xFF,0xFF,0xC6,0x24,0xF8,0xFF,0xC0,0x14,0x01,0x00,0xA5,0x24, - 0x00,0x00,0x83,0x90,0x00,0x00,0xA2,0x90,0x00,0x00,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x23,0x10,0x62,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x42,0xC0,0x08, - 0x21,0x18,0x00,0x00,0x01,0x00,0x63,0x24,0x00,0x00,0x82,0x80, - 0x00,0x00,0x00,0x00,0xFC,0xFF,0x40,0x14,0x01,0x00,0x84,0x24, - 0x08,0x00,0xE0,0x03,0x21,0x10,0x60,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC6,0x24, - 0x09,0x00,0xC0,0x04,0x21,0x10,0x00,0x00,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x05,0x00,0x45,0x10,0x21,0x10,0x80,0x00, - 0xFF,0xFF,0xC6,0x24,0xFA,0xFF,0xC1,0x04,0x01,0x00,0x84,0x24, - 0x21,0x10,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x02,0x00,0xC0,0x14,0xFF,0xFF,0x02,0x24,0x01,0x00,0x02,0x24, - 0x08,0x00,0xE0,0x03,0x00,0x00,0xE2,0xAC,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x28,0x00,0xB0,0x8F, - 0x21,0x20,0xC0,0x00,0x04,0x00,0x05,0x8E,0x00,0x00,0x00,0x00, - 0x5F,0x49,0xC0,0x0C,0xFF,0xFF,0xE6,0x30,0x03,0x00,0x40,0x10, - 0xFF,0xFF,0x02,0x24,0x67,0x42,0xC0,0x08,0x00,0x00,0x02,0xAE, - 0x00,0x00,0x00,0xAE,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x28,0x00,0xBF,0xAF,0x21,0x18,0x80,0x00,0x40,0x00,0xA2,0x8F, - 0x20,0x00,0xA0,0xAF,0x24,0x00,0xA2,0xAF,0x0C,0x00,0x42,0x94, - 0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x14,0x21,0x20,0xA0,0x00, - 0x78,0x05,0x02,0x24,0xFF,0xFF,0x42,0x30,0x10,0x00,0xA2,0xAF, - 0x01,0x83,0x02,0x3C,0x64,0x09,0x42,0x24,0x14,0x00,0xA2,0xAF, - 0x01,0x83,0x02,0x3C,0x50,0x09,0x42,0x24,0x18,0x00,0xA2,0xAF, - 0x20,0x00,0xA2,0x27,0x1C,0x00,0xA2,0xAF,0xF6,0x48,0xC0,0x0C, - 0x21,0x28,0x60,0x00,0x20,0x00,0xA2,0x8F,0x28,0x00,0xBF,0x8F, - 0x30,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x58,0x00,0x83,0x94,0x04,0x00,0x02,0x24, - 0x09,0x00,0x62,0x14,0x00,0x00,0x00,0x00,0x95,0x42,0xC0,0x08, - 0x74,0x00,0x84,0x24,0x21,0x10,0x45,0x00,0x80,0x10,0x02,0x00, - 0x08,0x00,0x83,0x8C,0x00,0x00,0x00,0x00,0xA2,0x42,0xC0,0x08, - 0x21,0x10,0x43,0x00,0x68,0x00,0x84,0x24,0x0C,0x00,0x80,0x10, - 0x21,0x10,0x00,0x00,0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x2A,0x10,0xA2,0x00,0xF3,0xFF,0x40,0x14,0x00,0x11,0x05,0x00, - 0x04,0x00,0x82,0x8C,0x0C,0x00,0x84,0x8C,0x00,0x00,0x00,0x00, - 0xF7,0xFF,0x80,0x14,0x23,0x28,0xA2,0x00,0x21,0x10,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x58,0x00,0x83,0x94, - 0x04,0x00,0x02,0x24,0x03,0x00,0x62,0x14,0x21,0x30,0x00,0x00, - 0xAB,0x42,0xC0,0x08,0x74,0x00,0x84,0x24,0x68,0x00,0x84,0x24, - 0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0xA2,0x00, - 0x0E,0x00,0x40,0x10,0xFF,0xFF,0x02,0x24,0xD0,0x42,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x23,0x18,0xA3,0x00,0x00,0x11,0x03,0x00, - 0x23,0x10,0x43,0x00,0x00,0x1A,0x02,0x00,0x21,0x10,0x43,0x00, - 0x00,0x1C,0x02,0x00,0x21,0x10,0x43,0x00,0x23,0x10,0x02,0x00, - 0x83,0x10,0x02,0x00,0xD0,0x42,0xC0,0x08,0x21,0x10,0xC2,0x00, - 0x12,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x83,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x21,0x10,0x43,0x00, - 0x80,0x10,0x02,0x00,0x08,0x00,0x83,0x8C,0x00,0x00,0x00,0x00, - 0x21,0x10,0x43,0x00,0x2B,0x10,0xA2,0x00,0xE9,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x04,0x00,0x82,0x8C,0x0C,0x00,0x84,0x8C, - 0x00,0x00,0x00,0x00,0xF1,0xFF,0x80,0x14,0x21,0x30,0xC2,0x00, - 0xFF,0xFF,0x02,0x24,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x82,0x24, - 0x90,0x00,0xA3,0x8C,0x88,0x83,0x87,0x27,0x02,0x00,0x60,0x10, - 0x14,0x00,0x89,0x24,0x21,0x38,0x60,0x00,0x00,0x00,0x48,0x8C, - 0x04,0x00,0x44,0x8C,0xF8,0x42,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x1E,0x00,0x00,0x19,0x00,0x00,0x00,0x00,0x04,0x00,0xE3,0x8C, - 0x00,0x00,0x00,0x00,0x04,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x37,0x00,0x40,0x10,0xFF,0xFF,0x02,0x24,0x00,0x00,0x87,0x8C, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x47,0x10, - 0x00,0x00,0x00,0x00,0x08,0x00,0x63,0x24,0x04,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x1C,0x43,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x04,0x00,0x22,0xAD,0x04,0x00,0x67,0x8C, - 0xFF,0xFF,0x08,0x25,0x04,0x00,0x84,0x24,0x00,0x00,0xE2,0x94, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30,0xE2,0xFF,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x94,0x00,0x00,0x00,0x00, - 0x40,0x00,0x42,0x30,0x1B,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x00,0x00,0xE2,0x94,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x11,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x0D,0x00,0xC0,0x10, - 0x01,0x00,0x02,0x24,0x40,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00, - 0x09,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0x1C,0x00,0xE2,0x8C, - 0x04,0x00,0xA3,0x8C,0x00,0x00,0x00,0x00,0x24,0x10,0x43,0x00, - 0x03,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0x1C,0x43,0xC0,0x08, - 0xFF,0xFF,0x02,0x24,0x18,0x43,0xC0,0x08,0x00,0x00,0x22,0xA5, - 0x00,0x00,0x20,0xA5,0x08,0x00,0x28,0xAD,0x0C,0x00,0x24,0xAD, - 0x10,0x00,0x27,0xAD,0x21,0x10,0x00,0x00,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xC8,0xFF,0xBD,0x27,0x30,0x00,0xBF,0xAF, - 0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF, - 0x20,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00,0x21,0x80,0xA0,0x00, - 0x21,0x90,0xC0,0x00,0x00,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x30,0x00,0x82,0x28,0x02,0x00,0x40,0x10,0x08,0x00,0x71,0x26, - 0x30,0x00,0x04,0x24,0x00,0x00,0x24,0xAE,0x35,0x2F,0xC0,0x0C, - 0x80,0x20,0x04,0x00,0x03,0x00,0x40,0x14,0x04,0x00,0x22,0xAE, - 0x4A,0x43,0xC0,0x08,0xFF,0xFF,0x02,0x24,0x90,0x00,0x42,0x8E, - 0x88,0x83,0x84,0x27,0x02,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x21,0x20,0x40,0x00,0x10,0x00,0xA0,0xAF,0x14,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x00,0x00,0x05,0x8E,0x04,0x00,0x06,0x8E, - 0x00,0x00,0x00,0x00,0x51,0x43,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x21,0x80,0x40,0x00,0x04,0x00,0x00,0x1A,0x00,0x00,0x00,0x00, - 0x00,0x00,0x22,0x8E,0x4A,0x43,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xBE,0x49,0xC0,0x0C,0x21,0x20,0x20,0x02,0x21,0x10,0x00,0x02, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x38,0x00,0xBD,0x27,0xB8,0xFF,0xBD,0x27,0x44,0x00,0xBF,0xAF, - 0x40,0x00,0xBE,0xAF,0x3C,0x00,0xB7,0xAF,0x38,0x00,0xB6,0xAF, - 0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x21,0xB0,0xA0,0x00,0x21,0x88,0xE0,0x00, - 0x58,0x00,0xB7,0x8F,0x5C,0x00,0xB3,0x8F,0x60,0x00,0xBE,0x8F, - 0x20,0x00,0xE2,0x26,0x00,0x00,0x24,0x8E,0x00,0x00,0x00,0x00, - 0x2A,0x10,0x82,0x00,0x16,0x00,0x40,0x10,0x21,0xA0,0xC0,0x00, - 0x04,0x00,0x84,0x24,0x35,0x2F,0xC0,0x0C,0x80,0x20,0x04,0x00, - 0x21,0x80,0x40,0x00,0x03,0x00,0x00,0x16,0x21,0x20,0x00,0x02, - 0x0D,0x44,0xC0,0x08,0xFF,0xFF,0x02,0x24,0x00,0x00,0x26,0x8E, - 0x04,0x00,0x25,0x8E,0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C, - 0x80,0x30,0x06,0x00,0x04,0x00,0x24,0x8E,0x69,0x2F,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x04,0x00,0x30,0xAE,0x00,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x04,0x00,0x42,0x24,0x00,0x00,0x22,0xAE, - 0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x60,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x21,0x00,0xC0,0x1E, - 0x00,0x00,0x00,0x00,0x04,0x00,0x50,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x6C,0x00,0x40,0x10, - 0x80,0xA0,0x17,0x00,0x01,0x00,0xF2,0x26,0x04,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x21,0x10,0x82,0x02,0x00,0x00,0x03,0x8E, - 0x00,0x00,0x00,0x00,0x00,0x00,0x43,0xAC,0x00,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x18,0x00,0x62,0xAE,0x10,0x00,0xB2,0xAF, - 0x14,0x00,0xB3,0xAF,0x18,0x00,0xBE,0xAF,0x04,0x00,0x04,0x8E, - 0x21,0x28,0x00,0x00,0x21,0x30,0x00,0x00,0x51,0x43,0xC0,0x0C, - 0x21,0x38,0x20,0x02,0x70,0x00,0x40,0x14,0x08,0x00,0x10,0x26, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0xEA,0xFF,0x40,0x14, - 0x21,0x10,0x00,0x00,0x0D,0x44,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x04,0x00,0x50,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x4C,0x00,0x40,0x10,0x80,0xA8,0x17,0x00, - 0x01,0x00,0xF2,0x26,0x00,0x00,0x03,0x8E,0x00,0x00,0x84,0x8E, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x64,0x00,0x2A,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x13,0x00,0x64,0x14,0xFF,0xFF,0xC5,0x26, - 0x04,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x21,0x10,0xA2,0x02, - 0x00,0x00,0x43,0xAC,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x18,0x00,0x62,0xAE,0x10,0x00,0xB2,0xAF,0x14,0x00,0xB3,0xAF, - 0x18,0x00,0xBE,0xAF,0x04,0x00,0x04,0x8E,0x04,0x00,0x86,0x26, - 0x51,0x43,0xC0,0x0C,0x21,0x38,0x20,0x02,0x19,0x00,0x40,0x10, - 0x08,0x00,0x10,0x26,0x0D,0x44,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x8E,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x11,0x00,0x40,0x10,0x21,0x28,0x00,0x00,0x04,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x21,0x10,0xA2,0x02,0x00,0x00,0x43,0xAC, - 0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x18,0x00,0x62,0xAE, - 0x10,0x00,0xB2,0xAF,0x14,0x00,0xB3,0xAF,0x18,0x00,0xBE,0xAF, - 0x04,0x00,0x04,0x8E,0x21,0x30,0x00,0x00,0x51,0x43,0xC0,0x0C, - 0x21,0x38,0x20,0x02,0x34,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x08,0x00,0x10,0x26,0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0xCD,0xFF,0x40,0x14,0x21,0x10,0x00,0x00,0x0D,0x44,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00, - 0x40,0x00,0x42,0x30,0x28,0x00,0x40,0x14,0x21,0x10,0x00,0x00, - 0x03,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x0B,0x00,0x40,0x10,0x21,0x18,0x40,0x02,0x40,0x00,0xC2,0x8F, - 0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x1C,0x00,0x62,0x8C,0x04,0x00,0xC3,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0x03,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x0D,0x44,0xC0,0x08,0x21,0x10,0x00,0x00,0x0E,0x00,0xC0,0x1A, - 0x21,0x10,0xF6,0x02,0x00,0x00,0x22,0xAE,0x04,0x00,0x24,0x8E, - 0x80,0x80,0x17,0x00,0x21,0x20,0x04,0x02,0x21,0x28,0x80,0x02, - 0x10,0x3E,0xC0,0x0C,0x80,0x30,0x16,0x00,0x1C,0x00,0x76,0xAE, - 0x04,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x21,0x80,0x02,0x02, - 0x09,0x44,0xC0,0x08,0x20,0x00,0x70,0xAE,0x00,0x00,0x37,0xAE, - 0x1C,0x00,0x60,0xAE,0x20,0x00,0x60,0xAE,0x24,0x00,0x72,0xAE, - 0x01,0x00,0x02,0x24,0x14,0x00,0x62,0xA6,0x01,0x00,0x02,0x24, - 0x44,0x00,0xBF,0x8F,0x40,0x00,0xBE,0x8F,0x3C,0x00,0xB7,0x8F, - 0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x48,0x00,0xBD,0x27, - 0x03,0x00,0xA0,0x1C,0x21,0x10,0x00,0x00,0x00,0x00,0xE0,0xAC, - 0x01,0x00,0x02,0x24,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD0,0xFF,0xBD,0x27,0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB2,0xAF, - 0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00, - 0x21,0x88,0xE0,0x00,0x40,0x00,0xB0,0x8F,0x00,0x00,0x00,0x00, - 0x06,0x00,0xA0,0x18,0x18,0x00,0xA0,0xAF,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x12,0x00,0x42,0x34,0x3C,0x44,0xC0,0x08, - 0x11,0x00,0x02,0xA2,0x21,0x20,0x20,0x02,0x21,0x28,0x00,0x02, - 0x01,0x00,0x06,0x24,0x71,0x47,0xC0,0x0C,0x18,0x00,0xA7,0x27, - 0x24,0x00,0x02,0x8E,0x10,0x00,0xB0,0xAF,0x08,0x00,0x42,0x8C, - 0x21,0x20,0x40,0x02,0x01,0x00,0x05,0x24,0x18,0x00,0xA6,0x27, - 0x09,0xF8,0x40,0x00,0x21,0x38,0x20,0x02,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x1C,0x00,0xBF,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x21,0x90,0x80,0x00,0x21,0x88,0xA0,0x00,0x1F,0x00,0x51,0x12, - 0x10,0x00,0xB0,0xAF,0x04,0x00,0x50,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x0A,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x8E,0x00,0x00,0x00,0x00, - 0x42,0x44,0xC0,0x0C,0x21,0x28,0x20,0x02,0x08,0x00,0x10,0x26, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00, - 0x20,0x00,0x42,0x30,0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x04,0x00,0x44,0x8E,0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x42,0x96,0x00,0x00,0x00,0x00,0x10,0x00,0x42,0x30, - 0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x88,0x83,0x83,0x27,0x02,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x21,0x18,0x80,0x00,0x00,0x00,0xA7,0x8C, - 0x04,0x00,0xA5,0x8C,0x8E,0x44,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x1C,0x00,0xE0,0x18,0x00,0x00,0x00,0x00,0x04,0x00,0x63,0x8C, - 0x00,0x00,0x00,0x00,0x04,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xA4,0x8C, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x09,0x00,0x44,0x10, - 0x00,0x00,0x00,0x00,0x08,0x00,0x63,0x24,0x04,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x00,0x00,0xC0,0xAC,0x95,0x44,0xC0,0x08,0x02,0x00,0x02,0x24, - 0x04,0x00,0x63,0x8C,0xFF,0xFF,0xE7,0x24,0x04,0x00,0xA5,0x24, - 0x00,0x00,0x62,0x94,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0xE4,0xFF,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xC3,0xAC, - 0x2A,0x10,0x07,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xD0,0xFF,0xBD,0x27,0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB6,0xAF, - 0x24,0x00,0xB5,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0xA8,0xC0,0x00,0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00, - 0x03,0x00,0x40,0x1C,0x21,0x30,0x00,0x00,0x50,0x45,0xC0,0x08, - 0x05,0x00,0x02,0x24,0x88,0x83,0x93,0x27,0x02,0x00,0x80,0x10, - 0x00,0x00,0xE0,0xAC,0x21,0x98,0x80,0x00,0x00,0x00,0xB1,0x8C, - 0x04,0x00,0xB4,0x8C,0xC8,0x44,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x1D,0x00,0x20,0x1A,0x00,0x00,0x00,0x00,0x04,0x00,0x66,0x8E, - 0x00,0x00,0x00,0x00,0x04,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00, - 0x17,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x8E, - 0x00,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00,0x06,0x00,0x43,0x10, - 0x00,0x00,0x00,0x00,0x08,0x00,0xC6,0x24,0x04,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14,0x00,0x00,0x00,0x00, - 0x04,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x31,0x26,0x04,0x00,0x94,0x26, - 0x21,0x98,0x40,0x00,0x00,0x00,0x62,0x96,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0xE3,0xFF,0x40,0x10,0x00,0x00,0x00,0x00, - 0x1D,0x00,0x20,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x96, - 0x00,0x00,0x00,0x00,0x01,0x00,0x62,0x30,0x0B,0x00,0x40,0x10, - 0x04,0x00,0x62,0x30,0x7B,0x00,0x40,0x10,0x03,0x00,0x02,0x24, - 0x00,0x00,0xA2,0x96,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x76,0x00,0x40,0x10,0x04,0x00,0x02,0x24,0x00,0x00,0xF3,0xAC, - 0x4F,0x45,0xC0,0x08,0x04,0x00,0xD5,0xAC,0x00,0x00,0x62,0x96, - 0x00,0x00,0x00,0x00,0x04,0x00,0x42,0x30,0x6E,0x00,0x40,0x10, - 0x03,0x00,0x02,0x24,0x00,0x00,0xA2,0x96,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0x69,0x00,0x40,0x14,0x04,0x00,0x02,0x24, - 0x00,0x00,0xF3,0xAC,0x4F,0x45,0xC0,0x08,0x04,0x00,0xD5,0xAC, - 0x00,0x00,0x62,0x96,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x61,0x00,0x40,0x14,0x02,0x00,0x02,0x24,0x02,0x00,0x22,0x2A, - 0x17,0x00,0x40,0x14,0x21,0x90,0xA0,0x02,0x38,0x00,0x16,0x24, - 0x35,0x2F,0xC0,0x0C,0x10,0x00,0x04,0x24,0x21,0x80,0x40,0x00, - 0x28,0x00,0x00,0x12,0x80,0x10,0x11,0x00,0x21,0x10,0x54,0x00, - 0xFC,0xFF,0x42,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAE, - 0x04,0x00,0x12,0xAE,0x08,0x00,0x00,0xAE,0x0C,0x00,0x00,0xAE, - 0x35,0x2F,0xC0,0x0C,0x08,0x00,0x04,0x24,0x21,0x90,0x40,0x00, - 0x18,0x00,0x40,0x12,0xFF,0xFF,0x31,0x26,0x00,0x00,0x56,0xA6, - 0x02,0x00,0x22,0x2A,0xEC,0xFF,0x40,0x10,0x04,0x00,0x50,0xAE, - 0x04,0x00,0x66,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x06,0x00,0x40,0x10,0x01,0x00,0x11,0x24, - 0x08,0x00,0xC6,0x24,0x04,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00, - 0xFC,0xFF,0x40,0x14,0x01,0x00,0x31,0x26,0x01,0x00,0x24,0x26, - 0x35,0x2F,0xC0,0x0C,0xC0,0x20,0x04,0x00,0x21,0x80,0x40,0x00, - 0x0C,0x00,0x00,0x16,0x21,0x20,0x40,0x02,0x21,0x45,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x8E,0x00,0x00,0x00,0x00, - 0x69,0x2F,0xC0,0x0C,0x21,0x20,0x00,0x02,0x21,0x20,0x40,0x02, - 0x42,0x44,0xC0,0x0C,0x21,0x28,0xA0,0x02,0x50,0x45,0xC0,0x08, - 0x01,0x00,0x02,0x24,0x04,0x00,0x66,0x8E,0x00,0x00,0x00,0x00, - 0x34,0x45,0xC0,0x08,0x21,0xA8,0x00,0x02,0x04,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x0E,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0xC2,0x8C,0x04,0x00,0xC3,0x8C,0x00,0x00,0x02,0xAE, - 0x04,0x00,0x03,0xAE,0x08,0x00,0xC6,0x24,0x08,0x00,0x10,0x26, - 0xFF,0xFF,0x31,0x26,0x00,0x00,0xC2,0x8C,0x00,0x00,0x83,0x8E, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00,0xF0,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x8E,0x00,0x00,0x00,0x00, - 0x00,0x00,0x02,0xAE,0x04,0x00,0x12,0xAE,0x08,0x00,0x04,0x26, - 0x21,0x28,0xC0,0x00,0x10,0x3E,0xC0,0x0C,0xC0,0x30,0x11,0x00, - 0x04,0x00,0x66,0x8E,0x04,0x00,0x75,0xAE,0x00,0x00,0x62,0x96, - 0x00,0x00,0x00,0x00,0x20,0x00,0x42,0x30,0x03,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x21,0x20,0xC0,0x00, - 0x00,0x00,0x62,0x96,0x00,0x00,0x00,0x00,0x20,0x00,0x42,0x34, - 0x00,0x00,0x62,0xA6,0x21,0x10,0x00,0x00,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00,0x55,0x00,0x40,0x18, - 0x21,0x10,0x00,0x00,0x88,0x83,0x90,0x27,0x02,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x21,0x80,0x80,0x00,0x00,0x00,0xA4,0x8C, - 0x04,0x00,0xA5,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x8C, - 0x00,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x21,0x18,0x40,0x00, - 0x01,0x00,0x42,0x30,0x22,0x00,0x40,0x14,0x21,0x38,0x00,0x02, - 0x20,0x00,0x80,0x18,0x08,0x00,0x62,0x30,0x04,0x00,0x06,0x8E, - 0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x0C,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x21,0x38,0x00,0x02,0x00,0x00,0xA8,0x8C,0x00,0x00,0xC3,0x8C, - 0x00,0x00,0xA2,0x8C,0x00,0x00,0x00,0x00,0x0A,0x00,0x62,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0xA3,0x8C,0x04,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x14,0x00,0x40,0x10,0x08,0x00,0xC6,0x24, - 0x00,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00,0xF9,0xFF,0x43,0x14, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x84,0x24,0x04,0x00,0xD0,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x96,0x00,0x00,0x00,0x00, - 0x01,0x00,0x62,0x30,0xE0,0xFF,0x40,0x10,0x04,0x00,0xA5,0x24, - 0x24,0x00,0x80,0x14,0x21,0x10,0x00,0x00,0x00,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x30,0x03,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0xB5,0x45,0xC0,0x08,0x21,0x10,0x00,0x00, - 0x04,0x00,0xE6,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0xC2,0x8C, - 0x00,0x00,0x00,0x00,0x07,0x00,0x48,0x10,0x00,0x00,0x00,0x00, - 0x08,0x00,0xC6,0x24,0x00,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00, - 0xFD,0xFF,0x48,0x14,0x08,0x00,0xC6,0x24,0xF8,0xFF,0xC6,0x24, - 0x04,0x00,0xC7,0x8C,0x00,0x00,0x00,0x00,0x0A,0x00,0xE0,0x10, - 0x21,0x20,0xE0,0x00,0x08,0x00,0xC2,0x8C,0x0C,0x00,0xC3,0x8C, - 0x00,0x00,0xC2,0xAC,0x04,0x00,0xC3,0xAC,0x08,0x00,0xC6,0x24, - 0x04,0x00,0xC2,0x8C,0x00,0x00,0x00,0x00,0xF8,0xFF,0x40,0x14, - 0x21,0x20,0xE0,0x00,0x42,0x44,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x21,0x10,0x00,0x02,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xBD,0x27, - 0x38,0x00,0xBF,0xAF,0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF, - 0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF, - 0x20,0x00,0xB0,0xAF,0x21,0x88,0x80,0x00,0x21,0x90,0xA0,0x00, - 0x21,0x98,0xC0,0x00,0x21,0xA0,0xE0,0x00,0x50,0x00,0xB5,0x8F, - 0x00,0x00,0x00,0x00,0x24,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00, - 0x14,0x00,0x50,0x8C,0x21,0x20,0x80,0x02,0xA4,0x42,0xC0,0x0C, - 0x21,0x28,0xA0,0x02,0x10,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0xAF,0x14,0x00,0xB4,0xAF,0x18,0x00,0xA2,0xAF, - 0x00,0x00,0x02,0x8E,0x01,0x00,0x04,0x24,0x21,0x28,0x20,0x02, - 0x21,0x30,0x40,0x02,0x09,0xF8,0x40,0x00,0x21,0x38,0x60,0x02, - 0x06,0x00,0x40,0x14,0x21,0x20,0x80,0x02,0x11,0x00,0xA2,0x92, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x34,0xE5,0x45,0xC0,0x08, - 0x11,0x00,0xA2,0xA2,0x21,0x28,0xA0,0x02,0xAF,0x47,0xC0,0x0C, - 0x21,0x30,0x40,0x00,0x38,0x00,0xBF,0x8F,0x34,0x00,0xB5,0x8F, - 0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x40,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27,0x3C,0x00,0xBF,0xAF, - 0x38,0x00,0xB2,0xAF,0x34,0x00,0xB1,0xAF,0x30,0x00,0xB0,0xAF, - 0x21,0x88,0xE0,0x00,0x50,0x00,0xB2,0x8F,0x24,0x00,0xA0,0xAF, - 0x24,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x14,0x00,0x43,0x8C, - 0x02,0x00,0x50,0x90,0x00,0x00,0x00,0x00,0xFF,0x00,0x02,0x32, - 0xFE,0xFF,0x47,0x24,0x46,0x00,0xE2,0x2C,0x6E,0x00,0x40,0x10, - 0x80,0x10,0x07,0x00,0x01,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x00,0x7F,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x10,0x00,0xB1,0xAF,0x08,0x00,0x62,0x8C, - 0x10,0x00,0x67,0x8C,0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00, - 0x02,0x00,0x03,0x24,0x10,0x00,0x43,0xA2,0x6F,0x46,0xC0,0x08, - 0x28,0x00,0x42,0xAE,0x10,0x00,0xB1,0xAF,0x08,0x00,0x62,0x8C, - 0x10,0x00,0x67,0x8C,0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00, - 0x28,0x00,0xA2,0xAF,0x10,0x00,0x50,0xA2,0x28,0x00,0xA2,0x8F, - 0x00,0x00,0x00,0x00,0x6F,0x46,0xC0,0x08,0x28,0x00,0x42,0xAE, - 0x20,0x00,0xA2,0x27,0x10,0x00,0xA2,0xAF,0x14,0x00,0xB1,0xAF, - 0x24,0x00,0xA2,0x27,0x18,0x00,0xA2,0xAF,0x08,0x00,0x62,0x8C, - 0x10,0x00,0x67,0x8C,0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00, - 0x21,0x30,0x40,0x00,0x10,0x00,0x50,0xA2,0x11,0x00,0x42,0x92, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x34,0x11,0x00,0x42,0xA2, - 0x24,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x2B,0x10,0x02,0x00, - 0x28,0x00,0x42,0xA6,0x2C,0x00,0x46,0xAE,0x20,0x00,0xA2,0x97, - 0x00,0x00,0x00,0x00,0x21,0x10,0xC2,0x00,0x30,0x00,0x42,0xAE, - 0x73,0x46,0xC0,0x08,0x34,0x00,0x40,0xA6,0x10,0x00,0xB1,0xAF, - 0x24,0x00,0xA2,0x27,0x14,0x00,0xA2,0xAF,0x08,0x00,0x62,0x8C, - 0x10,0x00,0x67,0x8C,0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00, - 0x21,0x80,0x40,0x00,0x08,0x00,0x00,0x16,0x21,0x20,0x20,0x02, - 0x10,0x00,0xA0,0xAF,0x21,0x28,0x40,0x02,0x21,0x30,0x00,0x00, - 0x56,0x47,0xC0,0x0C,0x21,0x38,0x00,0x00,0x73,0x46,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x24,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA2,0xAF,0x00,0x00,0x06,0x8E,0x04,0x00,0x07,0x8E, - 0x00,0x00,0x00,0x00,0x56,0x47,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0x24,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x23,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x73,0x46,0xC0,0x08,0x00,0x00,0x00,0x00,0x05,0x00,0x02,0x24, - 0x6F,0x46,0xC0,0x08,0x10,0x00,0x42,0xA2,0x10,0x00,0xB1,0xAF, - 0x28,0x00,0xA2,0x27,0x14,0x00,0xA2,0xAF,0x08,0x00,0x62,0x8C, - 0x10,0x00,0x67,0x8C,0x09,0xF8,0x40,0x00,0x00,0x00,0x00,0x00, - 0x21,0x30,0x40,0x00,0x07,0x00,0xC0,0x10,0x40,0x00,0x02,0x24, - 0x03,0x00,0xC2,0x88,0x00,0x00,0xC2,0x98,0x00,0x00,0x00,0x00, - 0x2B,0x00,0xA2,0xAB,0x28,0x00,0xA2,0xBB,0x40,0x00,0x02,0x24, - 0x10,0x00,0x42,0xA2,0x28,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x6F,0x46,0xC0,0x08,0x28,0x00,0x42,0xAE,0x05,0x00,0x02,0x24, - 0x60,0x00,0x22,0xAE,0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00, - 0x02,0x00,0x42,0x34,0x11,0x00,0x42,0xA2,0x3C,0x00,0xBF,0x8F, - 0x38,0x00,0xB2,0x8F,0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27,0x50,0xFF,0xBD,0x27, - 0xA8,0x00,0xBF,0xAF,0xA4,0x00,0xB3,0xAF,0xA0,0x00,0xB2,0xAF, - 0x9C,0x00,0xB1,0xAF,0x98,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00, - 0x21,0x88,0xE0,0x00,0xC0,0x00,0xB2,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x14,0x00,0x43,0x8C, - 0x00,0x00,0x00,0x00,0x10,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA2,0xAF,0x14,0x00,0xB1,0xAF,0x04,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x18,0x00,0xA7,0x27, - 0x21,0x80,0x40,0x00,0x06,0x00,0x00,0x16,0x21,0x20,0x20,0x02, - 0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00,0x12,0x00,0x42,0x34, - 0xA1,0x46,0xC0,0x08,0x11,0x00,0x42,0xA2,0x21,0x28,0x40,0x02, - 0x21,0x30,0x00,0x02,0x71,0x47,0xC0,0x0C,0x18,0x00,0xA7,0x27, - 0x10,0x00,0xB2,0xAF,0x21,0x20,0x60,0x02,0x21,0x28,0x00,0x02, - 0x18,0x00,0xA6,0x27,0xEE,0x45,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0xA8,0x00,0xBF,0x8F,0xA4,0x00,0xB3,0x8F,0xA0,0x00,0xB2,0x8F, - 0x9C,0x00,0xB1,0x8F,0x98,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0xB0,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27,0x38,0x00,0xBF,0xAF, - 0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x21,0x98,0x80,0x00,0x21,0xA0,0xA0,0x00,0x21,0xA8,0xC0,0x00, - 0x21,0x88,0xE0,0x00,0x50,0x00,0xB2,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x14,0x00,0x50,0x8C, - 0x21,0x20,0x20,0x02,0xA4,0x42,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0x10,0x00,0x03,0x8E,0x00,0x00,0x00,0x00,0x10,0x00,0xA3,0xAF, - 0x14,0x00,0xB1,0xAF,0x18,0x00,0xA2,0xAF,0x00,0x00,0x02,0x8E, - 0x21,0x20,0x00,0x00,0x21,0x28,0x60,0x02,0x21,0x30,0x80,0x02, - 0x09,0xF8,0x40,0x00,0x21,0x38,0xA0,0x02,0x05,0x00,0x40,0x10, - 0x21,0x20,0x20,0x02,0x3C,0x47,0xC0,0x0C,0x21,0x28,0x40,0x02, - 0xD3,0x46,0xC0,0x08,0x00,0x00,0x00,0x00,0x10,0x00,0xB2,0xAF, - 0x21,0x20,0x60,0x02,0x21,0x28,0x80,0x02,0x21,0x30,0xA0,0x02, - 0xEE,0x45,0xC0,0x0C,0x21,0x38,0x20,0x02,0x38,0x00,0xBF,0x8F, - 0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F, - 0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27, - 0x38,0x00,0xBF,0xAF,0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF, - 0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF, - 0x20,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00,0x21,0xA0,0xA0,0x00, - 0x21,0xA8,0xC0,0x00,0x50,0x00,0xB1,0x8F,0x00,0x00,0x00,0x00, - 0x24,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x14,0x00,0x52,0x8C, - 0x02,0x00,0x42,0x90,0x00,0x00,0x00,0x00,0xFE,0xFF,0x43,0x24, - 0x46,0x00,0x62,0x2C,0x39,0x00,0x40,0x10,0x21,0x80,0xE0,0x00, - 0x80,0x10,0x03,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0x18,0x80,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x21,0x20,0x00,0x02,0xA4,0x42,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x28,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0xAF,0x14,0x00,0xB0,0xAF,0x21,0x47,0xC0,0x08, - 0x18,0x00,0xA2,0xAF,0x21,0x20,0x00,0x02,0xA4,0x42,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x2C,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0xAF,0x30,0x00,0x23,0x8E,0x2C,0x00,0x24,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x18,0x64,0x00,0x1E,0x47,0xC0,0x08, - 0xFF,0xFF,0x63,0x30,0x21,0x20,0x00,0x02,0xA4,0x42,0xC0,0x0C, - 0x21,0x28,0x20,0x02,0x28,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA3,0xAF,0x2C,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x1F,0x47,0xC0,0x08,0x14,0x00,0xA3,0xAF,0x21,0x20,0x00,0x02, - 0xA4,0x42,0xC0,0x0C,0x21,0x28,0x20,0x02,0x28,0x00,0x23,0x26, - 0x10,0x00,0xA3,0xAF,0x04,0x00,0x03,0x24,0x14,0x00,0xA3,0xAF, - 0x18,0x00,0xB0,0xAF,0x1C,0x00,0xA2,0xAF,0x0C,0x00,0x42,0x8E, - 0x21,0x20,0x60,0x02,0x21,0x28,0x80,0x02,0x10,0x00,0x47,0x8E, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x21,0x30,0xA0,0x02, - 0x2C,0x47,0xC0,0x08,0x00,0x00,0x00,0x00,0x05,0x00,0x02,0x24, - 0x60,0x00,0x02,0xAE,0x11,0x00,0x22,0x92,0x00,0x00,0x00,0x00, - 0x02,0x00,0x42,0x34,0x11,0x00,0x22,0xA2,0x38,0x00,0xBF,0x8F, - 0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F, - 0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x40,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x14,0x21,0x88,0xA0,0x00,0x02,0x00,0x02,0x24, - 0xA4,0x42,0xC0,0x0C,0x60,0x00,0x02,0xAE,0x01,0x00,0x42,0x24, - 0x4D,0x47,0xC0,0x08,0x64,0x00,0x02,0xAE,0x81,0x00,0x02,0x24, - 0x10,0x00,0x22,0xA2,0x11,0x00,0x22,0x92,0x00,0x00,0x00,0x00, - 0x02,0x00,0x42,0x34,0x11,0x00,0x22,0xA2,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x40,0xA0,0x00, - 0x21,0x20,0xC0,0x00,0x21,0x28,0xE0,0x00,0x28,0x00,0xA2,0x8F, - 0x11,0x00,0x03,0x91,0x00,0x00,0x00,0x00,0x02,0x00,0x63,0x34, - 0x11,0x00,0x03,0xA1,0x06,0x00,0x03,0x24,0x04,0x00,0x40,0x10, - 0x10,0x00,0x03,0xA1,0x28,0x00,0x04,0xAD,0x6D,0x47,0xC0,0x08, - 0x2C,0x00,0x05,0xAD,0xA0,0x49,0xC0,0x0C,0x28,0x00,0x06,0x25, - 0x02,0x00,0x40,0x10,0x05,0x00,0x02,0x24,0x60,0x00,0x02,0xAE, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x30,0x00,0xBF,0xAF, - 0x2C,0x00,0xB7,0xAF,0x28,0x00,0xB6,0xAF,0x24,0x00,0xB5,0xAF, - 0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF, - 0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF,0x21,0xB0,0x80,0x00, - 0x21,0x90,0xA0,0x00,0x21,0x98,0xC0,0x00,0x25,0x00,0x60,0x12, - 0x21,0xB8,0xE0,0x00,0x1C,0x00,0x54,0x26,0x08,0x00,0x43,0x8E, - 0x1C,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x23,0x80,0x62,0x00, - 0x2A,0x10,0x53,0x00,0x17,0x00,0x40,0x10,0x21,0xA8,0x13,0x02, - 0x35,0x2F,0xC0,0x0C,0x80,0x20,0x15,0x00,0x21,0x88,0x40,0x00, - 0x08,0x00,0x20,0x16,0x80,0x80,0x10,0x00,0x05,0x00,0x02,0x24, - 0x60,0x00,0xC2,0xAE,0x11,0x00,0x42,0x92,0x00,0x00,0x00,0x00, - 0x02,0x00,0x42,0x34,0xA4,0x47,0xC0,0x08,0x11,0x00,0x42,0xA2, - 0x21,0x20,0x20,0x02,0x0C,0x00,0x45,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x02,0xBE,0x49,0xC0,0x0C, - 0x08,0x00,0x44,0x26,0x0C,0x00,0x51,0xAE,0x21,0x80,0x30,0x02, - 0x04,0x00,0x90,0xAE,0x04,0x00,0x84,0x8E,0x21,0x28,0xE0,0x02, - 0x10,0x3E,0xC0,0x0C,0x80,0x30,0x13,0x00,0x00,0x00,0x93,0xAE, - 0x08,0x00,0x55,0xAE,0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB7,0x8F, - 0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x88,0x80,0x00,0x05,0x00,0xC0,0x18, - 0x21,0x80,0xA0,0x00,0x03,0x00,0x02,0x24,0x60,0x00,0x22,0xAE, - 0xD3,0x47,0xC0,0x08,0x64,0x00,0x26,0xAE,0x13,0x00,0xC3,0x24, - 0x13,0x00,0x62,0x2C,0x09,0x00,0x40,0x10,0x80,0x10,0x03,0x00, - 0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00,0x30,0x81,0x22,0x8C, - 0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00, - 0xCD,0x47,0xC0,0x08,0x02,0x00,0x06,0x24,0xCD,0x47,0xC0,0x08, - 0x05,0x00,0x06,0x24,0xCD,0x47,0xC0,0x08,0x03,0x00,0x06,0x24, - 0xCD,0x47,0xC0,0x08,0x01,0x00,0x06,0x24,0x23,0x30,0x06,0x00, - 0x60,0x00,0x26,0xAE,0x21,0x20,0x20,0x02,0xA4,0x42,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x01,0x00,0x42,0x24,0x64,0x00,0x22,0xAE, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x34, - 0x11,0x00,0x02,0xA2,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x60,0x00,0x05,0xAE, - 0x64,0x00,0x06,0xAE,0x80,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x0B,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xCD,0x4C,0xC0,0x0C, - 0x68,0x00,0x04,0x26,0x7C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x6C,0x00,0x02,0xAE,0x80,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x70,0x00,0x02,0xAE,0x80,0x00,0x00,0xAE,0x7C,0x00,0x00,0xAE, - 0x58,0x00,0x11,0x96,0x02,0x00,0x02,0x24,0x58,0x00,0x02,0xA6, - 0x28,0x50,0xC0,0x0C,0x21,0x20,0x00,0x02,0x21,0x38,0x40,0x00, - 0x40,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x23,0x00,0x40,0x14, - 0xFF,0xFF,0x23,0x32,0x03,0x00,0x02,0x24,0x0E,0x00,0x62,0x10, - 0xFF,0xFF,0xE3,0x30,0x3A,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x09,0x00,0x40,0x10,0x0C,0x00,0x04,0x26, - 0x30,0x00,0x02,0x8E,0x1C,0x00,0x05,0x26,0x34,0x00,0x07,0x8E, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x01,0x00,0x06,0x24, - 0x26,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0x60,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0xFA,0xFF,0x43,0x24,0x0D,0x00,0x62,0x2C, - 0x0D,0x00,0x40,0x10,0x80,0x10,0x03,0x00,0x02,0x83,0x01,0x3C, - 0x21,0x08,0x22,0x00,0x80,0x81,0x22,0x8C,0x00,0x00,0x00,0x00, - 0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x1C,0x48,0xC0,0x08, - 0x02,0x00,0x02,0x24,0x1C,0x48,0xC0,0x08,0x03,0x00,0x02,0x24, - 0x05,0x00,0x02,0x24,0x60,0x00,0x02,0xAE,0x34,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x00,0xA2,0xAF,0x2C,0x00,0x02,0x8E, - 0x0C,0x00,0x04,0x26,0x1C,0x00,0x05,0x26,0x21,0x30,0x00,0x02, - 0x09,0xF8,0x40,0x00,0xFF,0xFF,0xE7,0x30,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x60,0x00,0x05,0x8E, - 0x00,0x00,0x00,0x00,0x06,0x00,0xA0,0x10,0x00,0x00,0x00,0x00, - 0x64,0x00,0x06,0x8E,0xDC,0x47,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x88,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0x28,0x50,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x21,0x38,0x40,0x00,0x58,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x2C,0x0B,0x00,0x40,0x10, - 0xFF,0xFF,0xE3,0x30,0x3A,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x06,0x00,0x40,0x10,0x21,0x20,0x00,0x02, - 0x01,0x00,0x05,0x24,0xDC,0x47,0xC0,0x0C,0x21,0x30,0x00,0x00, - 0x88,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0x60,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x31,0x00,0x40,0x14,0x02,0x00,0x02,0x24, - 0x58,0x00,0x03,0x96,0x03,0x00,0x02,0x24,0x21,0x00,0x62,0x10, - 0x04,0x00,0x62,0x28,0x07,0x00,0x40,0x10,0x02,0x00,0x62,0x28, - 0x29,0x00,0x40,0x10,0x02,0x00,0x02,0x24,0x27,0x00,0x60,0x04, - 0x00,0x00,0x00,0x00,0x5D,0x48,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x05,0x00,0x02,0x24,0x22,0x00,0x62,0x14,0x02,0x00,0x02,0x24, - 0x03,0x83,0x03,0x3C,0x9C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x68,0x00,0x04,0x26, - 0x19,0x00,0x80,0x10,0x00,0x00,0x62,0xAC,0x03,0x83,0x05,0x3C, - 0x60,0xF4,0xA5,0x24,0x00,0x00,0xA2,0x8C,0x6C,0x00,0x03,0x8E, - 0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00,0x00,0x00,0xA2,0xAC, - 0x0C,0x00,0x84,0x8C,0x00,0x00,0x00,0x00,0xF8,0xFF,0x80,0x14, - 0x02,0x00,0x02,0x24,0x7F,0x48,0xC0,0x08,0x58,0x00,0x02,0xA6, - 0x03,0x83,0x04,0x3C,0x9C,0xF4,0x84,0x24,0x00,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x82,0xAC, - 0xC8,0xFF,0x82,0x8C,0x6C,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x21,0x10,0x43,0x00,0xC8,0xFF,0x82,0xAC,0x02,0x00,0x02,0x24, - 0x58,0x00,0x02,0xA6,0x34,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x10,0x00,0xA2,0xAF,0x2C,0x00,0x02,0x8E,0x0C,0x00,0x04,0x26, - 0x1C,0x00,0x05,0x26,0x21,0x30,0x00,0x02,0x09,0xF8,0x40,0x00, - 0xFF,0xFF,0xE7,0x30,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x58,0x00,0x03,0x96,0x01,0x00,0x02,0x24,0x19,0x00,0x62,0x10, - 0x02,0x00,0x62,0x28,0x05,0x00,0x40,0x10,0x03,0x00,0x02,0x24, - 0x07,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xC4,0x48,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x25,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0xC4,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0x70,0x00,0x04,0x8E, - 0x6C,0x00,0x03,0x8E,0x00,0x00,0x00,0x00,0x22,0x00,0x60,0x10, - 0x00,0x00,0x00,0x00,0x11,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x02,0x00,0x42,0x30,0x21,0x00,0x40,0x10,0xFF,0xFF,0x63,0x24, - 0xFA,0xFF,0x60,0x14,0x44,0x00,0x84,0x24,0xC4,0x48,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x70,0x00,0x04,0x8E,0x6C,0x00,0x03,0x8E, - 0x00,0x00,0x00,0x00,0x08,0x00,0x60,0x10,0x00,0x00,0x00,0x00, - 0x11,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x30, - 0x13,0x00,0x40,0x10,0xFF,0xFF,0x63,0x24,0xFA,0xFF,0x60,0x14, - 0x44,0x00,0x84,0x24,0xFE,0x50,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0xF1,0xFF,0x40,0x1C,0xFF,0xFF,0x42,0x28,0x07,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0xAC,0x48,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x52,0xC0,0x0C,0x21,0x20,0x00,0x02,0x05,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x2B,0x48,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x67,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x58,0x00,0x03,0x96,0x01,0x00,0x02,0x24, - 0x11,0x00,0x62,0x10,0x02,0x00,0x62,0x28,0x05,0x00,0x40,0x10, - 0x03,0x00,0x02,0x24,0x09,0x00,0x60,0x10,0x00,0x00,0x00,0x00, - 0xEC,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0x0D,0x00,0x62,0x10, - 0x05,0x00,0x02,0x24,0x07,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0xEC,0x48,0xC0,0x08,0x00,0x00,0x00,0x00,0xC4,0x52,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0xEA,0x48,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x88,0x50,0xC0,0x0C,0x21,0x20,0x00,0x02,0xEA,0x48,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x84,0x51,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x05,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x8C,0x48,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0xF2,0x48,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x67,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0xC0,0xFF,0xBD,0x27,0x3C,0x00,0xBF,0xAF,0x38,0x00,0xB6,0xAF, - 0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x21,0x40,0x80,0x00,0x21,0x88,0xC0,0x00,0x21,0x98,0xE0,0x00, - 0x54,0x00,0xB6,0x8F,0x58,0x00,0xB5,0x8F,0x5C,0x00,0xB4,0x8F, - 0x50,0x00,0xB2,0x97,0x03,0x83,0x03,0x3C,0x30,0xF4,0x63,0x24, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x00,0x00,0x62,0xAC,0x18,0x00,0xA2,0x27,0x10,0x00,0xA2,0xAF, - 0x21,0x20,0xA0,0x00,0xD0,0x49,0xC0,0x0C,0x21,0x28,0x00,0x01, - 0x21,0x80,0x40,0x00,0x39,0x00,0x00,0x12,0xFF,0xFF,0x42,0x32, - 0x3A,0x00,0x03,0x96,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x02,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x3A,0x00,0x12,0xA6, - 0x2C,0x00,0x16,0xAE,0x30,0x00,0x15,0xAE,0x34,0x00,0x14,0xAE, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10, - 0x01,0x00,0x02,0x24,0x2B,0x48,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x67,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02,0x55,0x49,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x58,0x00,0x03,0x96,0x00,0x00,0x00,0x00, - 0x10,0x00,0x62,0x10,0x02,0x00,0x62,0x28,0x05,0x00,0x40,0x10, - 0x03,0x00,0x02,0x24,0x09,0x00,0x60,0x10,0x00,0x00,0x00,0x00, - 0x44,0x49,0xC0,0x08,0x00,0x00,0x00,0x00,0x0B,0x00,0x62,0x10, - 0x05,0x00,0x02,0x24,0x1F,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x44,0x49,0xC0,0x08,0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C, - 0x3F,0x49,0xC0,0x08,0x68,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C, - 0x3F,0x49,0xC0,0x08,0x6C,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C, - 0x70,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x53,0x49,0xC0,0x08,0x00,0x00,0x62,0xAC, - 0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x67,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02,0x21,0x20,0x20,0x02, - 0x21,0x28,0x60,0x02,0x01,0x00,0x06,0x24,0x09,0xF8,0xA0,0x02, - 0x21,0x38,0x80,0x02,0x55,0x49,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xCC,0x48,0xC0,0x0C,0x21,0x20,0x00,0x02,0x3C,0x00,0xBF,0x8F, - 0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x4D,0x50,0xC0,0x0C,0xFF,0xFF,0xC6,0x30, - 0x35,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24,0x03,0x83,0x03,0x3C, - 0x40,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC,0x60,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x10,0x04,0x00,0x02,0x24, - 0x5C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x5C,0x00,0x62,0xAC,0x60,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x43,0x24,0x05,0x00,0x62,0x2C,0x20,0x00,0x40,0x10, - 0x80,0x10,0x03,0x00,0x02,0x83,0x01,0x3C,0x21,0x08,0x22,0x00, - 0xB8,0x81,0x22,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00, - 0x00,0x00,0x00,0x00,0x03,0x83,0x03,0x3C,0x96,0x49,0xC0,0x08, - 0x7C,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C,0x96,0x49,0xC0,0x08, - 0x84,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C,0x96,0x49,0xC0,0x08, - 0x88,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C,0x96,0x49,0xC0,0x08, - 0x80,0xF4,0x63,0x24,0x03,0x83,0x03,0x3C,0x96,0x49,0xC0,0x08, - 0x8C,0xF4,0x63,0x24,0x58,0x00,0x03,0x96,0x00,0x00,0x00,0x00, - 0x08,0x00,0x62,0x14,0x21,0x10,0x00,0x00,0x03,0x83,0x03,0x3C, - 0xA0,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC,0x21,0x10,0x00,0x00, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27, - 0x1C,0x00,0xBF,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x90,0xA0,0x00,0x21,0x80,0xC0,0x00, - 0x04,0x00,0x00,0xAE,0x0E,0x00,0x80,0x10,0x00,0x00,0x04,0xAE, - 0x80,0x88,0x04,0x00,0x35,0x2F,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x03,0x00,0x40,0x14,0x04,0x00,0x02,0xAE,0xB8,0x49,0xC0,0x08, - 0xFF,0xFF,0x02,0x24,0x05,0x00,0x20,0x12,0x21,0x28,0x40,0x02, - 0x04,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x21,0x10,0x00,0x00,0x1C,0x00,0xBF,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x04,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x04,0x00,0x00,0xAE,0x00,0x00,0x00,0xAE,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xFF,0xBD,0x27, - 0x50,0x00,0xBF,0xAF,0x4C,0x00,0xB7,0xAF,0x48,0x00,0xB6,0xAF, - 0x44,0x00,0xB5,0xAF,0x40,0x00,0xB4,0xAF,0x3C,0x00,0xB3,0xAF, - 0x38,0x00,0xB2,0xAF,0x34,0x00,0xB1,0xAF,0x30,0x00,0xB0,0xAF, - 0x21,0x18,0x80,0x00,0x21,0x98,0xA0,0x00,0x21,0xB0,0xC0,0x00, - 0x21,0xB8,0xE0,0x00,0x68,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x02,0x00,0x40,0x14,0x2C,0x00,0xA0,0xAF,0x28,0x00,0xA2,0x27, - 0x00,0x00,0x40,0xAC,0x18,0x00,0xA4,0x27,0x21,0x28,0x60,0x00, - 0x60,0x53,0xC0,0x0C,0x21,0x30,0x60,0x02,0x21,0x88,0x40,0x00, - 0x52,0x00,0x20,0x12,0x21,0x10,0x00,0x00,0x91,0x4C,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x21,0x90,0x40,0x00,0x05,0x00,0x40,0x16, - 0x01,0x00,0x02,0x24,0x7B,0x53,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x3C,0x4A,0xC0,0x08,0x21,0x10,0x00,0x00,0x94,0x00,0x42,0xA2, - 0x88,0x53,0xC0,0x0C,0x21,0x20,0x20,0x02,0xE0,0x00,0x55,0x30, - 0x2C,0x00,0xB0,0x27,0x21,0x20,0x20,0x02,0x40,0x54,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x21,0xA0,0x40,0x00,0x21,0x20,0x20,0x02, - 0x8A,0x54,0xC0,0x0C,0x21,0x28,0x00,0x02,0x02,0x00,0x42,0xA6, - 0x2C,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x0E,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x08,0x00,0x23,0x8E,0x04,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x80,0x62,0x00,0x02,0x00,0x42,0x96, - 0x00,0x00,0x00,0x00,0x21,0x80,0x02,0x02,0x2A,0x10,0x13,0x02, - 0x10,0x00,0x40,0x14,0x21,0x20,0x20,0x02,0x2A,0x10,0x70,0x02, - 0x10,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x67,0x4C,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x7B,0x53,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x3C,0x4A,0xC0,0x08,0x21,0x10,0x00,0x00,0x21,0x28,0x00,0x02, - 0xEE,0x53,0xC0,0x0C,0x21,0x30,0x00,0x00,0xFF,0x00,0xA2,0x32, - 0xFF,0xFF,0x83,0x32,0x25,0x10,0x43,0x00,0x30,0x00,0x03,0x24, - 0x08,0x00,0x43,0x14,0x21,0x20,0x40,0x02,0x10,0x00,0xB0,0xAF, - 0x21,0x28,0x20,0x02,0x21,0x30,0xC0,0x02,0x47,0x4A,0xC0,0x0C, - 0x21,0x38,0xE0,0x02,0x35,0x4A,0xC0,0x08,0x21,0x80,0x40,0x00, - 0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x21,0x80,0x00,0x00,0x03,0x00,0x00,0x16,0x00,0x00,0x00,0x00, - 0x67,0x4C,0xC0,0x0C,0x21,0x20,0x40,0x02,0x7B,0x53,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x21,0x10,0x00,0x02,0x50,0x00,0xBF,0x8F, - 0x4C,0x00,0xB7,0x8F,0x48,0x00,0xB6,0x8F,0x44,0x00,0xB5,0x8F, - 0x40,0x00,0xB4,0x8F,0x3C,0x00,0xB3,0x8F,0x38,0x00,0xB2,0x8F, - 0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x58,0x00,0xBD,0x27,0xB0,0xFF,0xBD,0x27,0x4C,0x00,0xBF,0xAF, - 0x48,0x00,0xB6,0xAF,0x44,0x00,0xB5,0xAF,0x40,0x00,0xB4,0xAF, - 0x3C,0x00,0xB3,0xAF,0x38,0x00,0xB2,0xAF,0x34,0x00,0xB1,0xAF, - 0x30,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x88,0xA0,0x00, - 0x21,0xA0,0xC0,0x00,0x21,0xA8,0xE0,0x00,0x60,0x00,0xB6,0x8F, - 0x18,0x00,0xA0,0xAF,0x21,0x20,0x20,0x02,0x18,0x00,0xA5,0x27, - 0x02,0x00,0x06,0x24,0xB3,0x55,0xC0,0x0C,0x21,0x38,0x00,0x00, - 0x40,0x00,0x02,0xAE,0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x9B,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x40,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x10,0x21,0x20,0x20,0x02, - 0x03,0x83,0x03,0x3C,0xFC,0x4A,0xC0,0x08,0x44,0xF4,0x63,0x24, - 0x10,0x00,0xA0,0xAF,0x48,0x00,0x05,0x26,0x18,0x00,0xA6,0x27, - 0x32,0x55,0xC0,0x0C,0x04,0x00,0x07,0x24,0x18,0x00,0xA2,0x8F, - 0x00,0x00,0x00,0x00,0x8B,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x88,0x53,0xC0,0x0C,0x21,0x20,0x20,0x02,0xE0,0x00,0x42,0x30, - 0xA0,0x00,0x03,0x24,0x85,0x00,0x43,0x14,0x21,0x20,0x20,0x02, - 0x40,0x54,0xC0,0x0C,0x18,0x00,0xA5,0x27,0x21,0x90,0x40,0x00, - 0x21,0x20,0x20,0x02,0x8A,0x54,0xC0,0x0C,0x18,0x00,0xA5,0x27, - 0x21,0x98,0x40,0x00,0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x7A,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x32, - 0x05,0x00,0x42,0x2C,0x76,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x08,0x00,0x22,0x8E,0x04,0x00,0x23,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x10,0x43,0x00,0xFF,0xFF,0x63,0x32,0x21,0x10,0x43,0x00, - 0x6E,0x00,0xC2,0x16,0x21,0x20,0x00,0x02,0x58,0x00,0x12,0xA6, - 0x5A,0x00,0x13,0xA6,0x21,0x28,0x80,0x02,0xDC,0x2F,0xC0,0x0C, - 0x21,0x30,0xA0,0x02,0x76,0x00,0x40,0x14,0x21,0x10,0x00,0x00, - 0xFF,0xFF,0x43,0x32,0x04,0x00,0x02,0x24,0x18,0x00,0x62,0x10, - 0x21,0x20,0x20,0x02,0x18,0x00,0xA5,0x27,0x02,0x00,0x06,0x24, - 0xB3,0x55,0xC0,0x0C,0x21,0x38,0x00,0x00,0x5C,0x00,0x02,0xAE, - 0x21,0x20,0x20,0x02,0x18,0x00,0xA5,0x27,0x02,0x00,0x06,0x24, - 0xB3,0x55,0xC0,0x0C,0x21,0x38,0x00,0x00,0x60,0x00,0x02,0xAE, - 0x21,0x20,0x20,0x02,0x18,0x00,0xA5,0x27,0x02,0x00,0x06,0x24, - 0xB3,0x55,0xC0,0x0C,0x21,0x38,0x00,0x00,0x64,0x00,0x02,0xAE, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x4E,0x00,0x40,0x14, - 0x21,0x20,0x20,0x02,0x03,0x4B,0xC0,0x08,0x68,0x00,0x05,0x26, - 0x04,0x00,0x02,0x24,0x58,0x00,0x02,0xA6,0x5A,0x00,0x13,0xA6, - 0x7C,0x00,0x00,0xAE,0x10,0x00,0xA0,0xAF,0x5C,0x00,0x05,0x26, - 0x18,0x00,0xA6,0x27,0x7E,0x56,0xC0,0x0C,0x06,0x00,0x07,0x24, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x3F,0x00,0x40,0x14, - 0x64,0x00,0x04,0x26,0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x20,0x00,0xA0,0xA7,0x28,0x00,0xA0,0xAF, - 0x24,0x00,0xA0,0xAF,0x2C,0x00,0xA0,0xA7,0x20,0x00,0xB2,0x27, - 0x40,0x00,0x02,0x24,0x10,0x00,0xA2,0xAF,0x21,0x20,0x20,0x02, - 0x21,0x28,0x40,0x02,0x18,0x00,0xA6,0x27,0x32,0x55,0xC0,0x0C, - 0x21,0x38,0x00,0x00,0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xDC,0x56,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0xFA,0x4A,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x28,0x00,0xA2,0x8F,0x24,0x00,0xA3,0x8F,0x00,0x00,0x00,0x00, - 0x23,0x10,0x43,0x00,0xFF,0xFF,0x46,0x30,0x05,0x00,0xC2,0x2C, - 0x02,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x04,0x00,0x06,0x24, - 0x08,0x00,0xC0,0x10,0x21,0x20,0x20,0x02,0x24,0x00,0xA5,0x8F, - 0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C,0x64,0x00,0x04,0x26, - 0xDC,0x56,0xC0,0x0C,0x20,0x00,0xA4,0x27,0x21,0x20,0x20,0x02, - 0x18,0x00,0xA5,0x27,0x02,0x00,0x06,0x24,0xB3,0x55,0xC0,0x0C, - 0x21,0x38,0x00,0x00,0x68,0x00,0x02,0xAE,0x21,0x20,0x20,0x02, - 0x18,0x00,0xA5,0x27,0x02,0x00,0x06,0x24,0xB3,0x55,0xC0,0x0C, - 0x21,0x38,0x00,0x00,0x6C,0x00,0x02,0xAE,0x21,0x20,0x20,0x02, - 0x18,0x00,0xA5,0x27,0x03,0x00,0x06,0x24,0xB3,0x55,0xC0,0x0C, - 0x40,0x00,0x07,0x24,0x70,0x00,0x02,0xAE,0x18,0x00,0xA2,0x8F, - 0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x10,0x21,0x20,0x20,0x02, - 0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24,0x00,0x00,0x62,0x8C, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAC, - 0x09,0x4B,0xC0,0x08,0x21,0x10,0x00,0x00,0x74,0x00,0x05,0x26, - 0x21,0x30,0xC0,0x02,0x63,0x4B,0xC0,0x0C,0x21,0x38,0x00,0x02, - 0xFF,0xFF,0x03,0x24,0xF8,0xFF,0x43,0x10,0x21,0x10,0x00,0x02, - 0x4C,0x00,0xBF,0x8F,0x48,0x00,0xB6,0x8F,0x44,0x00,0xB5,0x8F, - 0x40,0x00,0xB4,0x8F,0x3C,0x00,0xB3,0x8F,0x38,0x00,0xB2,0x8F, - 0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x50,0x00,0xBD,0x27,0xB8,0xFF,0xBD,0x27,0x40,0x00,0xBF,0xAF, - 0x3C,0x00,0xB7,0xAF,0x38,0x00,0xB6,0xAF,0x34,0x00,0xB5,0xAF, - 0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF, - 0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x10,0x00,0xA0,0xAF,0x08,0x00,0x02,0x8E,0x04,0x00,0x03,0x8E, - 0x00,0x00,0x00,0x00,0x23,0xB8,0x43,0x00,0x21,0x90,0x00,0x00, - 0xFF,0xFF,0xA2,0x30,0x2D,0x00,0x40,0x10,0x21,0x88,0x00,0x00, - 0x03,0x83,0x13,0x3C,0x3C,0xF4,0x73,0x26,0xFF,0xFF,0x16,0x24, - 0xFF,0xFF,0xB5,0x30,0x08,0x00,0x03,0x8E,0x04,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x23,0xA0,0x62,0x00,0x00,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x20,0x00,0x40,0x14, - 0x21,0x20,0x00,0x02,0x40,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27, - 0x21,0x20,0x00,0x02,0x8A,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27, - 0x21,0x28,0x40,0x00,0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00, - 0x06,0x00,0x40,0x14,0x21,0x20,0x00,0x02,0xFF,0xFF,0xA5,0x30, - 0xBF,0x53,0xC0,0x0C,0x01,0x00,0x06,0x24,0x07,0x00,0x56,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x8E,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0x00,0x00,0x62,0xAE,0x53,0x4B,0xC0,0x08, - 0xFF,0xFF,0x11,0x24,0x08,0x00,0x02,0x8E,0x04,0x00,0x03,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x10,0x43,0x00,0x21,0x10,0x42,0x02, - 0x23,0x90,0x54,0x00,0xFF,0xFF,0x42,0x32,0x2B,0x10,0x55,0x00, - 0xD9,0xFF,0x40,0x14,0x01,0x00,0x31,0x26,0x21,0x20,0x00,0x02, - 0x21,0x28,0xE0,0x02,0xBF,0x53,0xC0,0x0C,0x21,0x30,0x00,0x00, - 0x21,0x10,0x20,0x02,0x40,0x00,0xBF,0x8F,0x3C,0x00,0xB7,0x8F, - 0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x48,0x00,0xBD,0x27, - 0xC0,0xFF,0xBD,0x27,0x38,0x00,0xBF,0xAF,0x34,0x00,0xB5,0xAF, - 0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF, - 0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00, - 0x21,0x98,0xA0,0x00,0x21,0xA8,0xE0,0x00,0x10,0x00,0xA0,0xAF, - 0x40,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27,0x21,0x20,0x40,0x02, - 0x8A,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27,0x00,0x00,0x62,0xA6, - 0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x1C,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x42,0x8E,0x08,0x00,0x43,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x10,0x43,0x00,0x00,0x00,0x63,0x96, - 0xFF,0xFF,0x42,0x30,0x14,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0x04,0x00,0x60,0xAE,0x00,0x00,0x65,0x96,0x00,0x00,0x00,0x00, - 0x13,0x4B,0xC0,0x0C,0x21,0x20,0x40,0x02,0x21,0x20,0x40,0x00, - 0xFF,0xFF,0x02,0x24,0x2E,0x00,0x82,0x10,0x00,0x00,0x00,0x00, - 0x03,0x00,0x80,0x14,0x00,0x00,0x00,0x00,0xB6,0x4B,0xC0,0x08, - 0x08,0x00,0x60,0xAE,0xA0,0x4C,0xC0,0x0C,0x04,0x00,0x64,0xAE, - 0x0A,0x00,0x40,0x14,0x08,0x00,0x62,0xAE,0xB7,0x4B,0xC0,0x08, - 0xFF,0xFF,0x02,0x24,0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x92,0x4B,0xC0,0x08,0x00,0x00,0x62,0xAC,0x08,0x00,0x70,0x8E, - 0x04,0x00,0x62,0x8E,0x00,0x00,0x00,0x00,0x17,0x00,0x40,0x18, - 0x21,0x88,0x00,0x00,0xFF,0xFF,0x14,0x24,0x21,0x20,0x40,0x02, - 0x40,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27,0x21,0x20,0x40,0x02, - 0x8A,0x54,0xC0,0x0C,0x10,0x00,0xA5,0x27,0x04,0x00,0x02,0xA6, - 0x10,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0xE9,0xFF,0x40,0x14, - 0x21,0x20,0x40,0x02,0x21,0x28,0x00,0x02,0xC0,0x4B,0xC0,0x0C, - 0x21,0x30,0xA0,0x02,0xE2,0xFF,0x54,0x10,0x01,0x00,0x31,0x26, - 0x04,0x00,0x62,0x8E,0x00,0x00,0x00,0x00,0x2A,0x10,0x22,0x02, - 0xEC,0xFF,0x40,0x14,0x44,0x00,0x10,0x26,0x21,0x10,0x00,0x00, - 0x38,0x00,0xBF,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27, - 0xB8,0xFF,0xBD,0x27,0x44,0x00,0xBF,0xAF,0x40,0x00,0xB4,0xAF, - 0x3C,0x00,0xB3,0xAF,0x38,0x00,0xB2,0xAF,0x34,0x00,0xB1,0xAF, - 0x30,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x90,0xA0,0x00, - 0x18,0x00,0xA0,0xAF,0x10,0x00,0xA0,0xAF,0x08,0x00,0x45,0x26, - 0x18,0x00,0xA6,0x27,0x7E,0x56,0xC0,0x0C,0x06,0x00,0x07,0x24, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x67,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x88,0x53,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0xE0,0x00,0x54,0x30,0x21,0x20,0x00,0x02,0x40,0x54,0xC0,0x0C, - 0x18,0x00,0xA5,0x27,0x21,0x98,0x40,0x00,0x21,0x20,0x00,0x02, - 0x8A,0x54,0xC0,0x0C,0x18,0x00,0xA5,0x27,0x21,0x88,0x40,0x00, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x58,0x00,0x40,0x14, - 0x25,0x10,0x74,0x02,0x12,0x00,0x51,0xA6,0x10,0x00,0x42,0xA2, - 0x10,0x00,0x43,0x92,0x40,0x00,0x02,0x24,0x30,0x00,0x62,0x10, - 0x41,0x00,0x62,0x28,0x10,0x00,0x40,0x10,0x04,0x00,0x02,0x24, - 0x1F,0x00,0x62,0x10,0x05,0x00,0x62,0x28,0x05,0x00,0x40,0x10, - 0x02,0x00,0x02,0x24,0x16,0x00,0x62,0x10,0x21,0x20,0x00,0x02, - 0x39,0x4C,0xC0,0x08,0x00,0x00,0x00,0x00,0x05,0x00,0x02,0x24, - 0x41,0x00,0x62,0x10,0x06,0x00,0x02,0x24,0x1B,0x00,0x62,0x10, - 0x21,0x20,0x00,0x02,0x39,0x4C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x44,0x00,0x02,0x24,0x0F,0x00,0x62,0x10,0x44,0x00,0x62,0x28, - 0x08,0x00,0x40,0x14,0x21,0x20,0x00,0x02,0x83,0x00,0x62,0x28, - 0x39,0x00,0x40,0x10,0x80,0x00,0x62,0x28,0x33,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x39,0x4C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x25,0x32,0x68,0x55,0xC0,0x0C,0x18,0x00,0xA6,0x27, - 0x35,0x4C,0xC0,0x08,0x28,0x00,0x42,0xAE,0x21,0x20,0x00,0x02, - 0xFF,0xFF,0x25,0x32,0x28,0x00,0x46,0x26,0xD7,0x54,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x35,0x4C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x25,0x32,0x28,0x00,0x46,0x26,0xDC,0x55,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x35,0x4C,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x28,0x00,0x44,0x26,0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C, - 0x04,0x00,0x06,0x24,0x20,0x00,0xA0,0xA7,0x28,0x00,0xA0,0xAF, - 0x24,0x00,0xA0,0xAF,0x2C,0x00,0xA0,0xA7,0x21,0x20,0x00,0x02, - 0xFF,0xFF,0x25,0x32,0x20,0x00,0xA6,0x27,0xD7,0x54,0xC0,0x0C, - 0x18,0x00,0xA7,0x27,0x28,0x00,0xA2,0x8F,0x24,0x00,0xA3,0x8F, - 0x00,0x00,0x00,0x00,0x23,0x10,0x43,0x00,0xFF,0xFF,0x46,0x30, - 0x05,0x00,0xC2,0x2C,0x02,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x04,0x00,0x06,0x24,0x07,0x00,0xC0,0x10,0x00,0x00,0x00,0x00, - 0x24,0x00,0xA5,0x8F,0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C, - 0x28,0x00,0x44,0x26,0xDC,0x56,0xC0,0x0C,0x20,0x00,0xA4,0x27, - 0x18,0x00,0xA2,0x8F,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x10, - 0x21,0x10,0x00,0x00,0x03,0x83,0x03,0x3C,0x3C,0xF4,0x63,0x24, - 0x00,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x24, - 0x00,0x00,0x62,0xAC,0xFF,0xFF,0x02,0x24,0x44,0x00,0xBF,0x8F, - 0x40,0x00,0xB4,0x8F,0x3C,0x00,0xB3,0x8F,0x38,0x00,0xB2,0x8F, - 0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x48,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x4C,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xDC,0x56,0xC0,0x0C,0x48,0x00,0x04,0x26,0x58,0x00,0x03,0x96, - 0x04,0x00,0x02,0x24,0x05,0x00,0x62,0x14,0x00,0x00,0x00,0x00, - 0xBE,0x49,0xC0,0x0C,0x5C,0x00,0x04,0x26,0x5D,0x4C,0xC0,0x08, - 0x74,0x00,0x04,0x26,0xCD,0x4C,0xC0,0x0C,0x68,0x00,0x04,0x26, - 0x78,0x00,0x04,0x26,0xCD,0x4C,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x94,0x00,0x03,0x92,0x00,0x00,0x00,0x00,0xB8,0x4C,0xC0,0x0C, - 0x21,0x20,0x00,0x02,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x05,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x48,0x4C,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF, - 0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x88,0x80,0x00, - 0x35,0x2F,0xC0,0x0C,0x10,0x00,0x04,0x24,0x21,0x80,0x40,0x00, - 0x0B,0x00,0x00,0x12,0x21,0x20,0x00,0x02,0x21,0x28,0x00,0x00, - 0x18,0x42,0xC0,0x0C,0x10,0x00,0x06,0x24,0xA0,0x4C,0xC0,0x0C, - 0x21,0x20,0x20,0x02,0x04,0x00,0x40,0x10,0x08,0x00,0x02,0xAE, - 0x04,0x00,0x11,0xAE,0x8C,0x4C,0xC0,0x08,0x21,0x10,0x00,0x02, - 0x69,0x2F,0xC0,0x0C,0x21,0x20,0x00,0x02,0x21,0x10,0x00,0x00, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x35,0x2F,0xC0,0x0C, - 0x98,0x00,0x04,0x24,0x21,0x80,0x40,0x00,0x04,0x00,0x00,0x12, - 0x21,0x10,0x00,0x00,0xB8,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x21,0x10,0x00,0x02,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x00,0x11,0x04,0x00, - 0x21,0x10,0x44,0x00,0x80,0x88,0x02,0x00,0x0B,0x00,0x20,0x12, - 0x10,0x00,0xB0,0xAF,0x35,0x2F,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x21,0x80,0x40,0x00,0x04,0x00,0x00,0x12,0x21,0x20,0x00,0x02, - 0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C,0x21,0x30,0x20,0x02, - 0xB3,0x4C,0xC0,0x08,0x21,0x10,0x00,0x02,0x21,0x10,0x00,0x00, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x21,0x28,0x00,0x00,0x18,0x42,0xC0,0x0C,0x98,0x00,0x06,0x24, - 0xFF,0x00,0x02,0x24,0x58,0x00,0x02,0xA6,0x78,0x05,0x02,0x24, - 0x3A,0x00,0x02,0xA6,0x48,0x00,0x00,0xA6,0x50,0x00,0x00,0xAE, - 0x4C,0x00,0x00,0xAE,0x54,0x00,0x00,0xA6,0x94,0x00,0x00,0xA2, - 0x95,0x00,0x00,0xA2,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x28,0x00,0xBF,0xAF,0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF, - 0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x1F,0x00,0x00,0x12,0x01,0x00,0x13,0x24,0x08,0x00,0x12,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x12,0x00,0x00,0x00,0x00, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x18, - 0x21,0x88,0x00,0x00,0xFB,0x4C,0xC0,0x0C,0x21,0x20,0x40,0x02, - 0x01,0x00,0x31,0x26,0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x2A,0x10,0x22,0x02,0xF9,0xFF,0x40,0x14,0x44,0x00,0x52,0x26, - 0x08,0x00,0x04,0x8E,0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x11,0x8E,0x04,0x00,0x60,0x12,0x00,0x00,0x00,0x00, - 0x21,0x98,0x00,0x00,0xF1,0x4C,0xC0,0x08,0x04,0x00,0x00,0xAE, - 0x69,0x2F,0xC0,0x0C,0x21,0x20,0x00,0x02,0x21,0x80,0x20,0x02, - 0xE3,0xFF,0x00,0x16,0x00,0x00,0x00,0x00,0x28,0x00,0xBF,0x8F, - 0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x3C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00, - 0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0xAE,0xBE,0x49,0xC0,0x0C, - 0x08,0x00,0x04,0x26,0x0E,0x4D,0xC0,0x0C,0x21,0x20,0x00,0x02, - 0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x18,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF, - 0x10,0x00,0x83,0x90,0x06,0x00,0x02,0x24,0x12,0x00,0x62,0x10, - 0x07,0x00,0x62,0x28,0x05,0x00,0x40,0x10,0x04,0x00,0x02,0x24, - 0x06,0x00,0x62,0x10,0x00,0x00,0x00,0x00,0x27,0x4D,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x44,0x00,0x02,0x24,0x0B,0x00,0x62,0x14, - 0x00,0x00,0x00,0x00,0x2C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xDC,0x56,0xC0,0x0C, - 0x28,0x00,0x84,0x24,0x27,0x4D,0xC0,0x08,0x00,0x00,0x00,0x00, - 0xBE,0x49,0xC0,0x0C,0x28,0x00,0x84,0x24,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x5C,0x00,0x44,0x8E,0xC4,0x57,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x60,0x00,0x44,0x8E,0x00,0x00,0x00,0x00, - 0xC4,0x57,0xC0,0x0C,0x21,0x80,0x40,0x00,0x64,0x00,0x44,0x8E, - 0x00,0x00,0x00,0x00,0xC4,0x57,0xC0,0x0C,0x21,0x88,0x40,0x00, - 0x21,0x80,0x11,0x02,0x06,0x00,0x10,0x26,0x21,0x10,0x50,0x00, - 0x5A,0x00,0x42,0xA6,0x37,0x4F,0xC0,0x0C,0x68,0x00,0x44,0x26, - 0xFF,0xFF,0x43,0x30,0x5A,0x00,0x44,0x96,0x80,0x00,0x62,0x2C, - 0x05,0x00,0x40,0x14,0x02,0x00,0x82,0x24,0x00,0x01,0x62,0x2C, - 0x02,0x00,0x40,0x14,0x03,0x00,0x82,0x24,0x04,0x00,0x82,0x24, - 0x21,0x10,0x43,0x00,0x5A,0x00,0x42,0xA6,0x50,0x00,0x42,0x8E, - 0x4C,0x00,0x43,0x8E,0x5A,0x00,0x50,0x96,0x40,0x00,0x44,0x8E, - 0x00,0x00,0x00,0x00,0xC4,0x57,0xC0,0x0C,0x23,0x88,0x43,0x00, - 0xFF,0xFF,0x43,0x30,0x5A,0x00,0x44,0x96,0x00,0x00,0x00,0x00, - 0x80,0x00,0x82,0x2C,0x09,0x00,0x40,0x14,0x00,0x01,0x82,0x2C, - 0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x21,0x18,0x70,0x00, - 0x65,0x4D,0xC0,0x08,0x06,0x00,0x63,0x24,0x21,0x18,0x70,0x00, - 0x65,0x4D,0xC0,0x08,0x07,0x00,0x63,0x24,0x21,0x18,0x70,0x00, - 0x05,0x00,0x63,0x24,0xFF,0xFF,0x24,0x32,0x80,0x00,0x82,0x2C, - 0x05,0x00,0x40,0x14,0x01,0x00,0x82,0x24,0x00,0x01,0x82,0x2C, - 0x02,0x00,0x40,0x14,0x02,0x00,0x82,0x24,0x03,0x00,0x82,0x24, - 0x21,0x10,0x62,0x00,0x02,0x00,0x42,0xA6,0x02,0x00,0x43,0x96, - 0x02,0x00,0x44,0x96,0x00,0x00,0x00,0x00,0x80,0x00,0x82,0x2C, - 0x06,0x00,0x40,0x14,0x01,0x00,0x63,0x24,0x00,0x01,0x82,0x2C, - 0x04,0x00,0x40,0x14,0x02,0x00,0x62,0x24,0x7B,0x4D,0xC0,0x08, - 0x03,0x00,0x62,0x24,0x01,0x00,0x62,0x24,0x00,0x00,0x42,0xA6, - 0x00,0x00,0x42,0x96,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00,0xEF,0x57,0xC0,0x0C, - 0x5C,0x00,0x64,0x26,0x68,0x00,0x64,0x8E,0x00,0x00,0x00,0x00, - 0xC4,0x57,0xC0,0x0C,0x21,0x90,0x40,0x00,0x6C,0x00,0x64,0x8E, - 0x00,0x00,0x00,0x00,0xC4,0x57,0xC0,0x0C,0x21,0x88,0x40,0x00, - 0x70,0x00,0x64,0x8E,0x00,0x00,0x00,0x00,0xDD,0x57,0xC0,0x0C, - 0x21,0x80,0x40,0x00,0x0A,0x00,0x52,0x26,0x21,0x88,0x32,0x02, - 0x21,0x80,0x11,0x02,0x04,0x00,0x10,0x26,0x21,0x10,0x50,0x00, - 0x5A,0x00,0x62,0xA6,0x37,0x4F,0xC0,0x0C,0x74,0x00,0x64,0x26, - 0xFF,0xFF,0x43,0x30,0x5A,0x00,0x64,0x96,0x80,0x00,0x62,0x2C, - 0x05,0x00,0x40,0x14,0x02,0x00,0x82,0x24,0x00,0x01,0x62,0x2C, - 0x02,0x00,0x40,0x14,0x03,0x00,0x82,0x24,0x04,0x00,0x82,0x24, - 0x21,0x10,0x43,0x00,0x5A,0x00,0x62,0xA6,0x50,0x00,0x62,0x8E, - 0x4C,0x00,0x63,0x8E,0x5A,0x00,0x71,0x96,0x40,0x00,0x64,0x8E, - 0x00,0x00,0x00,0x00,0xC4,0x57,0xC0,0x0C,0x23,0x80,0x43,0x00, - 0xFF,0xFF,0x43,0x30,0x5A,0x00,0x64,0x96,0x00,0x00,0x00,0x00, - 0x80,0x00,0x82,0x2C,0x09,0x00,0x40,0x14,0x00,0x01,0x82,0x2C, - 0x04,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x21,0x18,0x71,0x00, - 0xC2,0x4D,0xC0,0x08,0x06,0x00,0x63,0x24,0x21,0x18,0x71,0x00, - 0xC2,0x4D,0xC0,0x08,0x07,0x00,0x63,0x24,0x21,0x18,0x71,0x00, - 0x05,0x00,0x63,0x24,0xFF,0xFF,0x04,0x32,0x80,0x00,0x82,0x2C, - 0x05,0x00,0x40,0x14,0x01,0x00,0x82,0x24,0x00,0x01,0x82,0x2C, - 0x02,0x00,0x40,0x14,0x02,0x00,0x82,0x24,0x03,0x00,0x82,0x24, - 0x21,0x10,0x62,0x00,0x02,0x00,0x62,0xA6,0x02,0x00,0x63,0x96, - 0x02,0x00,0x64,0x96,0x00,0x00,0x00,0x00,0x80,0x00,0x82,0x2C, - 0x06,0x00,0x40,0x14,0x01,0x00,0x63,0x24,0x00,0x01,0x82,0x2C, - 0x04,0x00,0x40,0x14,0x02,0x00,0x70,0x24,0xD8,0x4D,0xC0,0x08, - 0x03,0x00,0x70,0x24,0x01,0x00,0x70,0x24,0xFF,0xFF,0x02,0x32, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27,0x28,0x00,0xBF,0xAF, - 0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x98,0xC0,0x00, - 0x21,0x90,0xE0,0x00,0x21,0x88,0xA0,0x00,0x10,0x00,0x04,0x24, - 0x20,0x00,0x05,0x24,0x01,0x83,0x06,0x3C,0x48,0x66,0xC6,0x24, - 0x36,0x58,0xC0,0x0C,0x21,0x38,0x00,0x02,0xFF,0xFF,0x24,0x32, - 0x01,0x83,0x05,0x3C,0x48,0x66,0xA5,0x24,0x70,0x58,0xC0,0x0C, - 0x21,0x30,0x00,0x02,0x10,0x00,0xB0,0xAF,0x02,0x00,0x04,0x24, - 0x21,0x28,0x00,0x00,0x01,0x83,0x07,0x3C,0x48,0x66,0xE7,0x24, - 0xA2,0x58,0xC0,0x0C,0x21,0x30,0x60,0x02,0x08,0x00,0x47,0x8E, - 0x04,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x23,0x38,0xE2,0x00, - 0x01,0x83,0x02,0x3C,0x48,0x66,0x42,0x24,0x10,0x00,0xA2,0xAF, - 0x14,0x00,0xB0,0xAF,0x04,0x00,0x04,0x24,0x21,0x28,0x00,0x00, - 0x04,0x00,0x46,0x8E,0x00,0x00,0x00,0x00,0x06,0x59,0xC0,0x0C, - 0xFF,0xFF,0xE7,0x30,0x28,0x00,0xBF,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x30,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x24,0x00,0xBF,0xAF,0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x88,0xA0,0x00, - 0x58,0x00,0x04,0x96,0xA0,0x00,0x05,0x24,0x01,0x83,0x06,0x3C, - 0x48,0x66,0xC6,0x24,0x36,0x58,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x5A,0x00,0x04,0x96,0x01,0x83,0x05,0x3C,0x48,0x66,0xA5,0x24, - 0x70,0x58,0xC0,0x0C,0x21,0x30,0x20,0x02,0x10,0x00,0xB1,0xAF, - 0x06,0x00,0x04,0x24,0x21,0x28,0x00,0x00,0x01,0x83,0x07,0x3C, - 0x48,0x66,0xE7,0x24,0x53,0x59,0xC0,0x0C,0x5C,0x00,0x06,0x26, - 0x01,0x83,0x12,0x3C,0x48,0x66,0x52,0x26,0x10,0x00,0xB2,0xAF, - 0x14,0x00,0xB1,0xAF,0x21,0x20,0x00,0x00,0x40,0x00,0x05,0x24, - 0x64,0x00,0x06,0x26,0x06,0x59,0xC0,0x0C,0x04,0x00,0x07,0x24, - 0x10,0x00,0xB1,0xAF,0x02,0x00,0x04,0x24,0x21,0x28,0x00,0x00, - 0x68,0x00,0x06,0x8E,0x00,0x00,0x00,0x00,0xA2,0x58,0xC0,0x0C, - 0x21,0x38,0x40,0x02,0x10,0x00,0xB1,0xAF,0x02,0x00,0x04,0x24, - 0x21,0x28,0x00,0x00,0x6C,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0xA2,0x58,0xC0,0x0C,0x21,0x38,0x40,0x02,0x10,0x00,0xB1,0xAF, - 0x03,0x00,0x04,0x24,0x40,0x00,0x05,0x24,0x70,0x00,0x06,0x8E, - 0x00,0x00,0x00,0x00,0xD3,0x58,0xC0,0x0C,0x21,0x38,0x40,0x02, - 0x74,0x00,0x04,0x26,0x7F,0x4E,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F, - 0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x88,0xA0,0x00, - 0x58,0x00,0x04,0x96,0xA0,0x00,0x05,0x24,0x01,0x83,0x06,0x3C, - 0x48,0x66,0xC6,0x24,0x36,0x58,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x5A,0x00,0x04,0x96,0x01,0x83,0x05,0x3C,0x48,0x66,0xA5,0x24, - 0x70,0x58,0xC0,0x0C,0x21,0x30,0x20,0x02,0x10,0x00,0xB1,0xAF, - 0x02,0x00,0x04,0x24,0x5C,0x00,0x06,0x8E,0x01,0x83,0x07,0x3C, - 0x48,0x66,0xE7,0x24,0xA2,0x58,0xC0,0x0C,0x21,0x28,0x00,0x00, - 0x10,0x00,0xB1,0xAF,0x02,0x00,0x04,0x24,0x60,0x00,0x06,0x8E, - 0x01,0x83,0x07,0x3C,0x48,0x66,0xE7,0x24,0xA2,0x58,0xC0,0x0C, - 0x21,0x28,0x00,0x00,0x10,0x00,0xB1,0xAF,0x02,0x00,0x04,0x24, - 0x64,0x00,0x06,0x8E,0x01,0x83,0x07,0x3C,0x48,0x66,0xE7,0x24, - 0xA2,0x58,0xC0,0x0C,0x21,0x28,0x00,0x00,0x68,0x00,0x04,0x26, - 0x7F,0x4E,0xC0,0x0C,0x21,0x28,0x20,0x02,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27,0x34,0x00,0xBF,0xAF, - 0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF, - 0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00, - 0x21,0x88,0xA0,0x00,0x10,0x00,0x04,0x24,0x20,0x00,0x05,0x24, - 0x01,0x83,0x06,0x3C,0x48,0x66,0xC6,0x24,0x36,0x58,0xC0,0x0C, - 0x21,0x38,0x20,0x02,0x00,0x00,0x44,0x96,0x01,0x83,0x05,0x3C, - 0x48,0x66,0xA5,0x24,0x70,0x58,0xC0,0x0C,0x21,0x30,0x20,0x02, - 0x9B,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0x01,0x83,0x14,0x3C, - 0x48,0x66,0x94,0x26,0x08,0x00,0x50,0x8E,0x00,0x00,0x00,0x00, - 0x91,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x04,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x8D,0x00,0x40,0x18,0x21,0x98,0x00,0x00, - 0x10,0x00,0x04,0x24,0x20,0x00,0x05,0x24,0x21,0x30,0x80,0x02, - 0x36,0x58,0xC0,0x0C,0x21,0x38,0x20,0x02,0x04,0x00,0x04,0x96, - 0x21,0x28,0x80,0x02,0x70,0x58,0xC0,0x0C,0x21,0x30,0x20,0x02, - 0x10,0x00,0xB1,0xAF,0x06,0x00,0x04,0x24,0x21,0x28,0x00,0x00, - 0x08,0x00,0x06,0x26,0x53,0x59,0xC0,0x0C,0x21,0x38,0x80,0x02, - 0x10,0x00,0x03,0x92,0x41,0x00,0x02,0x24,0x2F,0x00,0x62,0x10, - 0x42,0x00,0x62,0x28,0x12,0x00,0x40,0x10,0x05,0x00,0x02,0x24, - 0x58,0x00,0x62,0x10,0x06,0x00,0x62,0x28,0x07,0x00,0x40,0x10, - 0x02,0x00,0x02,0x24,0x1E,0x00,0x62,0x10,0x04,0x00,0x02,0x24, - 0x33,0x00,0x62,0x10,0x04,0x00,0x04,0x24,0x26,0x4F,0xC0,0x08, - 0x01,0x00,0x73,0x26,0x06,0x00,0x02,0x24,0x44,0x00,0x62,0x10, - 0x40,0x00,0x02,0x24,0x4E,0x00,0x62,0x10,0x21,0x20,0x00,0x00, - 0x26,0x4F,0xC0,0x08,0x01,0x00,0x73,0x26,0x44,0x00,0x02,0x24, - 0x2F,0x00,0x62,0x10,0x45,0x00,0x62,0x28,0x07,0x00,0x40,0x10, - 0x42,0x00,0x02,0x24,0x18,0x00,0x62,0x10,0x43,0x00,0x02,0x24, - 0x19,0x00,0x62,0x10,0x03,0x00,0x04,0x24,0x26,0x4F,0xC0,0x08, - 0x01,0x00,0x73,0x26,0x83,0x00,0x62,0x28,0x53,0x00,0x40,0x10, - 0x80,0x00,0x62,0x28,0x44,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x26,0x4F,0xC0,0x08,0x01,0x00,0x73,0x26,0x10,0x00,0xB1,0xAF, - 0x02,0x00,0x04,0x24,0x28,0x00,0x06,0x8E,0x01,0x83,0x07,0x3C, - 0x48,0x66,0xE7,0x24,0xA2,0x58,0xC0,0x0C,0x21,0x28,0x00,0x00, - 0x26,0x4F,0xC0,0x08,0x01,0x00,0x73,0x26,0x10,0x00,0xB1,0xAF, - 0xE7,0x4E,0xC0,0x08,0x01,0x00,0x04,0x24,0x10,0x00,0xB1,0xAF, - 0xE7,0x4E,0xC0,0x08,0x02,0x00,0x04,0x24,0x10,0x00,0xB1,0xAF, - 0x28,0x00,0x06,0x8E,0x01,0x83,0x07,0x3C,0x48,0x66,0xE7,0x24, - 0xD3,0x58,0xC0,0x0C,0x40,0x00,0x05,0x24,0x26,0x4F,0xC0,0x08, - 0x01,0x00,0x73,0x26,0x30,0x00,0x07,0x8E,0x2C,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x38,0xE2,0x00,0x10,0x00,0xB4,0xAF, - 0x14,0x00,0xB1,0xAF,0xFE,0x4E,0xC0,0x08,0x21,0x28,0x00,0x00, - 0x30,0x00,0x07,0x8E,0x2C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x38,0xE2,0x00,0x10,0x00,0xB4,0xAF,0x14,0x00,0xB1,0xAF, - 0x04,0x00,0x04,0x24,0x40,0x00,0x05,0x24,0x2C,0x00,0x06,0x8E, - 0x00,0x00,0x00,0x00,0x06,0x59,0xC0,0x0C,0xFF,0xFF,0xE7,0x30, - 0x26,0x4F,0xC0,0x08,0x01,0x00,0x73,0x26,0x10,0x00,0xB1,0xAF, - 0x06,0x00,0x04,0x24,0x21,0x28,0x00,0x00,0x01,0x83,0x07,0x3C, - 0x48,0x66,0xE7,0x24,0x53,0x59,0xC0,0x0C,0x28,0x00,0x06,0x26, - 0x26,0x4F,0xC0,0x08,0x01,0x00,0x73,0x26,0x05,0x00,0x04,0x24, - 0x1C,0x4F,0xC0,0x08,0x21,0x28,0x00,0x00,0x10,0x00,0xB4,0xAF, - 0x14,0x00,0xB1,0xAF,0x40,0x00,0x05,0x24,0x28,0x00,0x06,0x26, - 0x06,0x59,0xC0,0x0C,0x04,0x00,0x07,0x24,0x26,0x4F,0xC0,0x08, - 0x01,0x00,0x73,0x26,0x10,0x00,0x04,0x92,0x10,0x00,0x05,0x92, - 0x1F,0x00,0x84,0x30,0xE0,0x00,0xA5,0x30,0x01,0x83,0x06,0x3C, - 0x48,0x66,0xC6,0x24,0x36,0x58,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x21,0x20,0x00,0x00,0x01,0x83,0x05,0x3C,0x48,0x66,0xA5,0x24, - 0x70,0x58,0xC0,0x0C,0x21,0x30,0x20,0x02,0x01,0x00,0x73,0x26, - 0x04,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x2A,0x10,0x62,0x02, - 0x75,0xFF,0x40,0x14,0x44,0x00,0x10,0x26,0x0C,0x00,0x52,0x8E, - 0x00,0x00,0x00,0x00,0x69,0xFF,0x40,0x16,0x00,0x00,0x00,0x00, - 0x34,0x00,0xBF,0x8F,0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F, - 0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27, - 0x34,0x00,0xBF,0xAF,0x30,0x00,0xB6,0xAF,0x2C,0x00,0xB5,0xAF, - 0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF, - 0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF,0x21,0xA8,0x80,0x00, - 0x21,0x98,0xA0,0x02,0x71,0x00,0xA0,0x12,0x21,0x90,0x00,0x00, - 0x04,0x00,0x16,0x24,0x08,0x00,0x70,0x8E,0x00,0x00,0x00,0x00, - 0x68,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x04,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x64,0x00,0x40,0x18,0x21,0xA0,0x00,0x00, - 0xEF,0x57,0xC0,0x0C,0x08,0x00,0x04,0x26,0xFF,0xFF,0x43,0x30, - 0x80,0x00,0x62,0x2C,0x05,0x00,0x40,0x14,0x02,0x00,0x71,0x24, - 0x00,0x01,0x62,0x2C,0x02,0x00,0x40,0x14,0x03,0x00,0x71,0x24, - 0x04,0x00,0x71,0x24,0x10,0x00,0x03,0x92,0x40,0x00,0x02,0x24, - 0x32,0x00,0x62,0x10,0x41,0x00,0x62,0x28,0x10,0x00,0x40,0x10, - 0x44,0x00,0x02,0x24,0x22,0x00,0x76,0x10,0x05,0x00,0x62,0x28, - 0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24,0x14,0x00,0x62,0x10, - 0xFF,0xFF,0x24,0x32,0x8E,0x4F,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x05,0x00,0x02,0x24,0x23,0x00,0x62,0x10,0x06,0x00,0x02,0x24, - 0x1D,0x00,0x62,0x10,0xFF,0xFF,0x24,0x32,0x8E,0x4F,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x13,0x00,0x62,0x10,0x44,0x00,0x62,0x28, - 0x0C,0x00,0x40,0x14,0x83,0x00,0x62,0x28,0x1C,0x00,0x40,0x10, - 0x80,0x00,0x62,0x28,0x1B,0x00,0x40,0x14,0xFF,0xFF,0x24,0x32, - 0x8E,0x4F,0xC0,0x08,0x12,0x00,0x00,0xA6,0x28,0x00,0x04,0x8E, - 0xC4,0x57,0xC0,0x0C,0x00,0x00,0x00,0x00,0x8D,0x4F,0xC0,0x08, - 0x12,0x00,0x02,0xA6,0x28,0x00,0x04,0x8E,0xDD,0x57,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x8D,0x4F,0xC0,0x08,0x12,0x00,0x02,0xA6, - 0x30,0x00,0x02,0x8E,0x2C,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x10,0x43,0x00,0x8D,0x4F,0xC0,0x08,0x12,0x00,0x02,0xA6, - 0xEF,0x57,0xC0,0x0C,0x28,0x00,0x04,0x26,0x8D,0x4F,0xC0,0x08, - 0x12,0x00,0x02,0xA6,0x8D,0x4F,0xC0,0x08,0x12,0x00,0x00,0xA6, - 0x12,0x00,0x16,0xA6,0xFF,0xFF,0x24,0x32,0x12,0x00,0x03,0x96, - 0x00,0x00,0x00,0x00,0x80,0x00,0x62,0x2C,0x06,0x00,0x40,0x14, - 0x01,0x00,0x84,0x24,0x00,0x01,0x62,0x2C,0x04,0x00,0x40,0x14, - 0x02,0x00,0x62,0x24,0x99,0x4F,0xC0,0x08,0x03,0x00,0x62,0x24, - 0x01,0x00,0x62,0x24,0x21,0x10,0x82,0x00,0x04,0x00,0x02,0xA6, - 0x04,0x00,0x04,0x96,0x00,0x00,0x00,0x00,0x01,0x00,0x84,0x24, - 0x04,0x00,0x03,0x96,0x00,0x00,0x00,0x00,0x80,0x00,0x62,0x2C, - 0x06,0x00,0x40,0x14,0xFF,0xFF,0x45,0x32,0x00,0x01,0x62,0x2C, - 0x04,0x00,0x40,0x14,0x02,0x00,0xA2,0x24,0xA9,0x4F,0xC0,0x08, - 0x03,0x00,0xA2,0x24,0x01,0x00,0xA2,0x24,0x21,0x90,0x44,0x00, - 0x01,0x00,0x94,0x26,0x04,0x00,0x62,0x8E,0x00,0x00,0x00,0x00, - 0x2A,0x10,0x82,0x02,0x9E,0xFF,0x40,0x14,0x44,0x00,0x10,0x26, - 0x0C,0x00,0x73,0x8E,0x00,0x00,0x00,0x00,0x92,0xFF,0x60,0x16, - 0x00,0x00,0x00,0x00,0x00,0x00,0xB2,0xA6,0xFF,0xFF,0x42,0x32, - 0x34,0x00,0xBF,0x8F,0x30,0x00,0xB6,0x8F,0x2C,0x00,0xB5,0x8F, - 0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x38,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF, - 0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0xEF,0x57,0xC0,0x0C,0x08,0x00,0x04,0x26,0xFF,0xFF,0x43,0x30, - 0x80,0x00,0x62,0x2C,0x05,0x00,0x40,0x14,0x02,0x00,0x71,0x24, - 0x00,0x01,0x62,0x2C,0x02,0x00,0x40,0x14,0x03,0x00,0x71,0x24, - 0x04,0x00,0x71,0x24,0x10,0x00,0x03,0x92,0x40,0x00,0x02,0x24, - 0x34,0x00,0x62,0x10,0x41,0x00,0x62,0x28,0x11,0x00,0x40,0x10, - 0x04,0x00,0x02,0x24,0x25,0x00,0x62,0x10,0x00,0x00,0x00,0x00, - 0x05,0x00,0x62,0x28,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x16,0x00,0x62,0x10,0xFF,0xFF,0x24,0x32,0x09,0x50,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x05,0x00,0x02,0x24,0x24,0x00,0x62,0x10, - 0x06,0x00,0x02,0x24,0x1E,0x00,0x62,0x10,0xFF,0xFF,0x24,0x32, - 0x09,0x50,0xC0,0x08,0x00,0x00,0x00,0x00,0x44,0x00,0x02,0x24, - 0x14,0x00,0x62,0x10,0x00,0x00,0x00,0x00,0x44,0x00,0x62,0x28, - 0x0C,0x00,0x40,0x14,0x83,0x00,0x62,0x28,0x1C,0x00,0x40,0x10, - 0x80,0x00,0x62,0x28,0x1B,0x00,0x40,0x14,0xFF,0xFF,0x24,0x32, - 0x09,0x50,0xC0,0x08,0x12,0x00,0x00,0xA6,0x28,0x00,0x04,0x8E, - 0xC4,0x57,0xC0,0x0C,0x00,0x00,0x00,0x00,0x08,0x50,0xC0,0x08, - 0x12,0x00,0x02,0xA6,0x28,0x00,0x04,0x8E,0xDD,0x57,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x08,0x50,0xC0,0x08,0x12,0x00,0x02,0xA6, - 0x30,0x00,0x02,0x8E,0x2C,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x07,0x50,0xC0,0x08,0x23,0x10,0x43,0x00,0xEF,0x57,0xC0,0x0C, - 0x28,0x00,0x04,0x26,0x08,0x50,0xC0,0x08,0x12,0x00,0x02,0xA6, - 0x08,0x50,0xC0,0x08,0x12,0x00,0x00,0xA6,0x04,0x00,0x02,0x24, - 0x12,0x00,0x02,0xA6,0xFF,0xFF,0x24,0x32,0x12,0x00,0x03,0x96, - 0x00,0x00,0x00,0x00,0x80,0x00,0x62,0x2C,0x06,0x00,0x40,0x14, - 0x01,0x00,0x84,0x24,0x00,0x01,0x62,0x2C,0x04,0x00,0x40,0x14, - 0x02,0x00,0x62,0x24,0x14,0x50,0xC0,0x08,0x03,0x00,0x62,0x24, - 0x01,0x00,0x62,0x24,0x21,0x10,0x82,0x00,0x04,0x00,0x02,0xA6, - 0x04,0x00,0x03,0x96,0x04,0x00,0x04,0x96,0x00,0x00,0x00,0x00, - 0x80,0x00,0x82,0x2C,0x06,0x00,0x40,0x14,0x01,0x00,0x63,0x24, - 0x00,0x01,0x82,0x2C,0x04,0x00,0x40,0x14,0x02,0x00,0x62,0x24, - 0x22,0x50,0xC0,0x08,0x03,0x00,0x62,0x24,0x01,0x00,0x62,0x24, - 0xFF,0xFF,0x42,0x30,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x10,0x00,0xBF,0xAF,0x40,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0x14,0x21,0x10,0x00,0x00, - 0x58,0x00,0x83,0x94,0x04,0x00,0x02,0x24,0x05,0x00,0x62,0x10, - 0x00,0x00,0x00,0x00,0x2C,0x4D,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x39,0x50,0xC0,0x08,0xFF,0xFF,0x42,0x30,0x83,0x4D,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x30,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x28,0x50,0xC0,0x0C, - 0x21,0x88,0xA0,0x00,0x21,0x20,0x00,0x02,0x21,0x28,0x20,0x02, - 0x4D,0x50,0xC0,0x0C,0xFF,0xFF,0x46,0x30,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x21,0x88,0xC0,0x00,0xFF,0xFF,0x22,0x32, - 0x29,0x00,0x40,0x10,0x21,0x80,0xA0,0x00,0x04,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x0B,0x00,0x40,0x14,0xFF,0xFF,0x23,0x32, - 0x35,0x2F,0xC0,0x0C,0xFF,0xFF,0x24,0x32,0x21,0x18,0x40,0x00, - 0x20,0x00,0x60,0x10,0x01,0x00,0x02,0x24,0x00,0x00,0x02,0xA6, - 0x04,0x00,0x03,0xAE,0x08,0x00,0x03,0xAE,0x6A,0x50,0xC0,0x08, - 0x0C,0x00,0x11,0xA6,0x0C,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x17,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x40,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x13,0x00,0x40,0x14, - 0xFF,0xFF,0x02,0x24,0x21,0x20,0x00,0x02,0x02,0x00,0x45,0x96, - 0x21,0x30,0x00,0x00,0xE0,0x4D,0xC0,0x0C,0x48,0x00,0x47,0x26, - 0x58,0x00,0x43,0x96,0x04,0x00,0x02,0x24,0x05,0x00,0x62,0x10, - 0x21,0x20,0x40,0x02,0x51,0x4E,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x80,0x50,0xC0,0x08,0x21,0x10,0x00,0x00,0x11,0x4E,0xC0,0x0C, - 0x21,0x28,0x00,0x02,0x80,0x50,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xFF,0xFF,0x02,0x24,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB8,0xFF,0xBD,0x27,0x40,0x00,0xBF,0xAF,0x3C,0x00,0xB7,0xAF, - 0x38,0x00,0xB6,0xAF,0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF, - 0x2C,0x00,0xB3,0xAF,0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF, - 0x20,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00,0x70,0x00,0x54,0x8E, - 0x00,0x00,0x00,0x00,0x5C,0x00,0x80,0x12,0x01,0x00,0x02,0x24, - 0x6C,0x00,0x51,0x8E,0x00,0x00,0x00,0x00,0x58,0x00,0x20,0x12, - 0x00,0x00,0x00,0x00,0x60,0x00,0x57,0x26,0x88,0x00,0x42,0xAE, - 0x8C,0x00,0x40,0xAE,0x60,0x00,0x40,0xAE,0x64,0x00,0x40,0xAE, - 0xA0,0x4C,0xC0,0x0C,0x21,0x20,0x20,0x02,0x21,0xA8,0x40,0x00, - 0x19,0x00,0xA0,0x12,0x21,0x80,0xA0,0x02,0x6C,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x7C,0x00,0x42,0xAE,0x80,0x00,0x54,0xAE, - 0x6C,0x00,0x51,0xAE,0x70,0x00,0x55,0xAE,0x1D,0x00,0x20,0x1A, - 0x21,0x98,0x00,0x00,0xFF,0xFF,0x16,0x24,0x21,0x20,0x00,0x02, - 0x08,0x00,0x85,0x26,0x21,0x30,0x40,0x02,0x1E,0x43,0xC0,0x0C, - 0x01,0x00,0x07,0x24,0x0A,0x00,0x56,0x10,0x21,0x20,0x40,0x02, - 0x0E,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x40,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x0A,0x00,0x40,0x14,0x02,0x00,0x05,0x24, - 0xC0,0x50,0xC0,0x08,0x01,0x00,0x66,0x26,0x21,0x20,0x40,0x02, - 0x05,0x00,0x05,0x24,0x21,0x30,0x00,0x00,0xDC,0x47,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xF3,0x50,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x01,0x00,0x73,0x26,0x44,0x00,0x10,0x26,0x2A,0x10,0x71,0x02, - 0xE6,0xFF,0x40,0x14,0x44,0x00,0x94,0x26,0x28,0x00,0x20,0x12, - 0x21,0x80,0xA0,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x22,0x00,0x42,0x30,0x20,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x24,0x00,0x02,0x8E,0x10,0x00,0xB0,0xAF,0x10,0x00,0x42,0x8C, - 0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E,0x20,0x00,0x06,0x8E, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x21,0x38,0x40,0x02, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x20,0x00,0x42,0x34, - 0x11,0x00,0x02,0xA2,0x00,0x00,0xE2,0x8E,0x00,0x00,0x00,0x00, - 0x0F,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0xFF,0xFF,0x31,0x26, - 0x0F,0x00,0x20,0x12,0x44,0x00,0x10,0x26,0x11,0x00,0x03,0x92, - 0x00,0x00,0x00,0x00,0x20,0x00,0x62,0x30,0x02,0x00,0x40,0x14, - 0x22,0x00,0x62,0x34,0x11,0x00,0x02,0xA2,0xFF,0xFF,0x31,0x26, - 0xF8,0xFF,0x20,0x16,0x44,0x00,0x10,0x26,0xF3,0x50,0xC0,0x08, - 0x21,0x10,0x00,0x00,0xFF,0xFF,0x31,0x26,0xDA,0xFF,0x20,0x16, - 0x44,0x00,0x10,0x26,0x21,0x10,0x00,0x00,0x40,0x00,0xBF,0x8F, - 0x3C,0x00,0xB7,0x8F,0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F, - 0x30,0x00,0xB4,0x8F,0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x48,0x00,0xBD,0x27,0xA8,0xFF,0xBD,0x27,0x50,0x00,0xBF,0xAF, - 0x4C,0x00,0xB7,0xAF,0x48,0x00,0xB6,0xAF,0x44,0x00,0xB5,0xAF, - 0x40,0x00,0xB4,0xAF,0x3C,0x00,0xB3,0xAF,0x38,0x00,0xB2,0xAF, - 0x34,0x00,0xB1,0xAF,0x30,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00, - 0x60,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x10, - 0x21,0x20,0x00,0x00,0x78,0x51,0xC0,0x08,0xFF,0xFF,0x02,0x24, - 0x74,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x10, - 0x68,0x00,0x43,0x26,0x0C,0x00,0x63,0x8C,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x62,0x8C,0x00,0x00,0x00,0x00,0xFB,0xFF,0x40,0x14, - 0x00,0x00,0x00,0x00,0x08,0x00,0x74,0x8C,0x00,0x00,0x00,0x00, - 0x5C,0x00,0x80,0x12,0x21,0x10,0x00,0x00,0x04,0x00,0x73,0x8C, - 0x00,0x00,0x00,0x00,0x58,0x00,0x60,0x12,0x00,0x00,0x00,0x00, - 0x40,0x00,0x42,0x8E,0x00,0x00,0x00,0x00,0x37,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x21,0x80,0x80,0x02,0x34,0x00,0x60,0x1A, - 0x21,0x88,0x00,0x00,0xFF,0xFF,0x17,0x24,0x02,0x00,0x16,0x24, - 0x05,0x00,0x15,0x24,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x10,0x00,0x42,0x30,0x28,0x00,0x40,0x10,0x18,0x00,0xA5,0x27, - 0x08,0x00,0x03,0x8E,0x1C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x18,0x62,0x00,0x18,0x00,0xA3,0xAF,0x0C,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x1C,0x00,0xA2,0xAF,0x80,0x18,0x03,0x00, - 0x21,0x18,0x62,0x00,0xFC,0xFF,0x62,0x8C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x24,0xFC,0xFF,0x62,0xAC,0x0C,0x00,0x00,0xAE, - 0x08,0x00,0x00,0xAE,0x21,0x20,0x00,0x02,0x21,0x30,0x40,0x02, - 0x1E,0x43,0xC0,0x0C,0x01,0x00,0x07,0x24,0x06,0x00,0x57,0x10, - 0x00,0x00,0x00,0x00,0x09,0x00,0x40,0x14,0x01,0x00,0x22,0x26, - 0x60,0x00,0x56,0xAE,0x4C,0x51,0xC0,0x08,0x64,0x00,0x42,0xAE, - 0x60,0x00,0x55,0xAE,0xBE,0x49,0xC0,0x0C,0x18,0x00,0xA4,0x27, - 0x78,0x51,0xC0,0x08,0xFF,0xFF,0x02,0x24,0xBE,0x49,0xC0,0x0C, - 0x18,0x00,0xA4,0x27,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x42,0x30,0x11,0x00,0x02,0xA2,0x01,0x00,0x04,0x24, - 0x01,0x00,0x31,0x26,0x2A,0x10,0x33,0x02,0xD1,0xFF,0x40,0x14, - 0x44,0x00,0x10,0x26,0x1B,0x00,0x80,0x10,0x21,0x80,0x80,0x02, - 0x17,0x00,0x60,0x1A,0x21,0x88,0x00,0x00,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x22,0x00,0x42,0x30,0x0E,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x24,0x00,0x02,0x8E,0x10,0x00,0xB0,0xAF, - 0x10,0x00,0x42,0x8C,0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E, - 0x20,0x00,0x06,0x8E,0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00, - 0x21,0x38,0x40,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x20,0x00,0x42,0x34,0x11,0x00,0x02,0xA2,0x01,0x00,0x31,0x26, - 0x2A,0x10,0x33,0x02,0xEB,0xFF,0x40,0x14,0x44,0x00,0x10,0x26, - 0x78,0x51,0xC0,0x08,0x01,0x00,0x02,0x24,0x21,0x10,0x00,0x00, - 0x50,0x00,0xBF,0x8F,0x4C,0x00,0xB7,0x8F,0x48,0x00,0xB6,0x8F, - 0x44,0x00,0xB5,0x8F,0x40,0x00,0xB4,0x8F,0x3C,0x00,0xB3,0x8F, - 0x38,0x00,0xB2,0x8F,0x34,0x00,0xB1,0x8F,0x30,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x58,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0xC8,0xFF,0xBD,0x27,0x30,0x00,0xBF,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x60,0x00,0x40,0xAE,0x64,0x00,0x40,0xAE, - 0x70,0x00,0x50,0x8E,0x00,0x00,0x00,0x00,0x69,0x00,0x00,0x12, - 0x21,0x10,0x00,0x00,0x6C,0x00,0x51,0x8E,0x00,0x00,0x00,0x00, - 0x65,0x00,0x20,0x12,0x00,0x00,0x00,0x00,0x40,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x2B,0x00,0x40,0x14,0x21,0x20,0x40,0x02, - 0x32,0x00,0x20,0x1A,0x21,0x98,0x00,0x00,0x21,0x20,0x00,0x02, - 0x21,0x28,0x40,0x02,0xD4,0x42,0xC0,0x0C,0x01,0x00,0x06,0x24, - 0x0D,0x00,0x40,0x14,0x21,0x20,0x40,0x02,0x14,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30,0x22,0x00,0x40,0x10, - 0x02,0x00,0x05,0x24,0x24,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x03,0x00,0x42,0x90,0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x30, - 0x03,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0xC7,0x51,0xC0,0x08, - 0x02,0x00,0x05,0x24,0x24,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x20,0x00,0x42,0x8C,0x04,0x00,0x43,0x8E,0x00,0x00,0x00,0x00, - 0x24,0x10,0x43,0x00,0x10,0x00,0x40,0x10,0x21,0x20,0x40,0x02, - 0x24,0x00,0x02,0x8E,0x10,0x00,0x03,0x92,0x02,0x00,0x42,0x90, - 0x00,0x00,0x00,0x00,0x0B,0x00,0x62,0x14,0x03,0x00,0x05,0x24, - 0x01,0x00,0x73,0x26,0x2A,0x10,0x71,0x02,0xDB,0xFF,0x40,0x14, - 0x44,0x00,0x10,0x26,0xCD,0x51,0xC0,0x08,0x60,0x00,0x53,0x26, - 0x05,0x00,0x05,0x24,0xC8,0x51,0xC0,0x08,0x21,0x30,0x00,0x00, - 0x02,0x00,0x05,0x24,0x01,0x00,0x66,0x26,0xDC,0x47,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0xF9,0x51,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x60,0x00,0x53,0x26,0x70,0x00,0x50,0x8E,0x00,0x00,0x00,0x00, - 0x29,0x00,0x20,0x12,0x21,0x10,0x00,0x00,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x11,0x00,0x42,0x30,0x20,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x24,0x00,0x02,0x8E,0x10,0x00,0xB0,0xAF, - 0x04,0x00,0x42,0x8C,0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E, - 0x20,0x00,0x06,0x8E,0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00, - 0x21,0x38,0x40,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x10,0x00,0x42,0x34,0x11,0x00,0x02,0xA2,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x0F,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x31,0x26,0x0F,0x00,0x20,0x12,0x44,0x00,0x10,0x26, - 0x11,0x00,0x03,0x92,0x00,0x00,0x00,0x00,0x10,0x00,0x62,0x30, - 0x02,0x00,0x40,0x14,0x11,0x00,0x62,0x34,0x11,0x00,0x02,0xA2, - 0xFF,0xFF,0x31,0x26,0xF8,0xFF,0x20,0x16,0x44,0x00,0x10,0x26, - 0xF9,0x51,0xC0,0x08,0x21,0x10,0x00,0x00,0xFF,0xFF,0x31,0x26, - 0xDA,0xFF,0x20,0x16,0x44,0x00,0x10,0x26,0x21,0x10,0x00,0x00, - 0x30,0x00,0xBF,0x8F,0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F, - 0x24,0x00,0xB1,0x8F,0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x38,0x00,0xBD,0x27,0xC0,0xFF,0xBD,0x27,0x38,0x00,0xBF,0xAF, - 0x34,0x00,0xB7,0xAF,0x30,0x00,0xB6,0xAF,0x2C,0x00,0xB5,0xAF, - 0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF, - 0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00, - 0x70,0x00,0x54,0x8E,0x00,0x00,0x00,0x00,0xAB,0x00,0x80,0x12, - 0x21,0x10,0x00,0x00,0x6C,0x00,0x55,0x8E,0x00,0x00,0x00,0x00, - 0xA6,0x00,0xA0,0x12,0x20,0x00,0x02,0x24,0x38,0x00,0x43,0x92, - 0x00,0x00,0x00,0x00,0x4B,0x00,0x62,0x10,0x60,0x00,0x53,0x26, - 0x21,0x00,0x62,0x28,0x05,0x00,0x40,0x10,0x40,0x00,0x02,0x24, - 0x09,0x00,0x60,0x10,0x21,0x10,0x00,0x00,0xB9,0x52,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x55,0x00,0x62,0x10,0x80,0x00,0x02,0x24, - 0x89,0x00,0x62,0x10,0x21,0x10,0x00,0x00,0xB9,0x52,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x21,0x88,0xA0,0x02,0x08,0x00,0x20,0x12, - 0x21,0x80,0x80,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0x8B,0x00,0x40,0x10,0xFF,0xFF,0x31,0x26, - 0xFA,0xFF,0x20,0x16,0x44,0x00,0x10,0x26,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x88,0x00,0x40,0x14,0x21,0x10,0x00,0x00, - 0x21,0x88,0xA0,0x02,0x2B,0x00,0x20,0x12,0x21,0x80,0x80,0x02, - 0x0E,0x00,0x16,0x24,0x40,0x00,0x17,0x24,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x22,0x00,0x42,0x30,0x21,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x24,0x00,0x02,0x8E,0x10,0x00,0xB0,0xAF, - 0x0C,0x00,0x42,0x8C,0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E, - 0x20,0x00,0x06,0x8E,0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00, - 0x21,0x38,0x40,0x02,0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x20,0x00,0x42,0x34,0x11,0x00,0x02,0xA2,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0xFF,0xFF,0x31,0x26,0x0A,0x00,0x20,0x12,0x44,0x00,0x10,0x26, - 0x11,0x00,0x03,0x92,0x00,0x00,0x00,0x00,0x20,0x00,0x62,0x30, - 0x02,0x00,0x40,0x14,0xC0,0x00,0x62,0x34,0x11,0x00,0x02,0xA2, - 0xFF,0xFF,0x31,0x26,0xF8,0xFF,0x20,0x16,0x44,0x00,0x10,0x26, - 0x00,0x00,0x76,0xAE,0x74,0x52,0xC0,0x08,0x38,0x00,0x57,0xA2, - 0xFF,0xFF,0x31,0x26,0xD9,0xFF,0x20,0x16,0x44,0x00,0x10,0x26, - 0x20,0x00,0x02,0x24,0x38,0x00,0x42,0xA2,0x00,0x00,0x62,0x8E, - 0x00,0x00,0x00,0x00,0x0D,0x00,0x40,0x14,0x40,0x00,0x02,0x24, - 0x21,0x88,0xA0,0x02,0x51,0x00,0x20,0x12,0x21,0x80,0x80,0x02, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x02,0x00,0x42,0x30, - 0x4A,0x00,0x40,0x10,0xFF,0xFF,0x31,0x26,0xFA,0xFF,0x20,0x16, - 0x44,0x00,0x10,0x26,0xB9,0x52,0xC0,0x08,0x21,0x10,0x00,0x00, - 0x38,0x00,0x42,0xA2,0x0E,0x00,0x02,0x24,0x00,0x00,0x62,0xAE, - 0x21,0x88,0xA0,0x02,0x35,0x00,0x20,0x12,0x21,0x80,0x80,0x02, - 0x02,0x00,0x17,0x24,0x0F,0x00,0x16,0x24,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0xC2,0x00,0x42,0x30,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x13,0x00,0x57,0x10,0x00,0x00,0x00,0x00, - 0xA8,0x52,0xC0,0x08,0xFF,0xFF,0x31,0x26,0x40,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x22,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x10,0x00,0xB0,0xAF,0x40,0x00,0x02,0x8E,0x18,0x00,0x04,0x8E, - 0x1C,0x00,0x05,0x8E,0x20,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x21,0x38,0x40,0x02,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0xA6,0x52,0xC0,0x08,0x40,0x00,0x42,0x34, - 0x40,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x0D,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x10,0x00,0xB0,0xAF,0x40,0x00,0x02,0x8E, - 0x18,0x00,0x04,0x8E,0x1C,0x00,0x05,0x8E,0x20,0x00,0x06,0x8E, - 0x00,0x00,0x00,0x00,0x09,0xF8,0x40,0x00,0x21,0x38,0x40,0x02, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0xA6,0x52,0xC0,0x08, - 0x40,0x00,0x42,0x34,0x00,0x00,0x76,0xAE,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34,0x11,0x00,0x02,0xA2, - 0xFF,0xFF,0x31,0x26,0xD0,0xFF,0x20,0x16,0x44,0x00,0x10,0x26, - 0x21,0x88,0xA0,0x02,0x0C,0x00,0x20,0x12,0x21,0x80,0x80,0x02, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x05,0x00,0x40,0x10,0xFF,0xFF,0x31,0x26,0xFA,0xFF,0x20,0x16, - 0x44,0x00,0x10,0x26,0xB9,0x52,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xB9,0x52,0xC0,0x08,0x01,0x00,0x02,0x24,0x21,0x10,0x00,0x00, - 0x38,0x00,0xBF,0x8F,0x34,0x00,0xB7,0x8F,0x30,0x00,0xB6,0x8F, - 0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x40,0x00,0xBD,0x27,0xB8,0xFF,0xBD,0x27, - 0x40,0x00,0xBF,0xAF,0x3C,0x00,0xB7,0xAF,0x38,0x00,0xB6,0xAF, - 0x34,0x00,0xB5,0xAF,0x30,0x00,0xB4,0xAF,0x2C,0x00,0xB3,0xAF, - 0x28,0x00,0xB2,0xAF,0x24,0x00,0xB1,0xAF,0x20,0x00,0xB0,0xAF, - 0x21,0xA0,0x80,0x00,0x70,0x00,0x93,0x8E,0x00,0x00,0x00,0x00, - 0x81,0x00,0x60,0x12,0x21,0x10,0x00,0x00,0x6C,0x00,0x92,0x8E, - 0x00,0x00,0x00,0x00,0x7D,0x00,0x40,0x12,0x60,0x00,0x97,0x26, - 0x60,0x00,0x80,0xAE,0x64,0x00,0x80,0xAE,0xA0,0x4C,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x21,0xA8,0x40,0x00,0x05,0x00,0xA0,0x16, - 0x21,0x88,0x40,0x02,0x21,0x20,0x80,0x02,0x05,0x00,0x05,0x24, - 0x03,0x53,0xC0,0x08,0x21,0x30,0x00,0x00,0x24,0x00,0x40,0x12, - 0x21,0x80,0xA0,0x02,0x05,0x00,0x16,0x24,0x10,0x00,0x16,0xA2, - 0x08,0x00,0x64,0x8E,0x0C,0x00,0x65,0x8E,0x00,0x00,0x00,0x00, - 0xA0,0x49,0xC0,0x0C,0x08,0x00,0x06,0x26,0x05,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x31,0x26,0x44,0x00,0x73,0x26, - 0xF5,0xFF,0x20,0x16,0x44,0x00,0x10,0x26,0x15,0x00,0x20,0x12, - 0x2A,0x10,0x32,0x02,0x07,0x00,0x40,0x10,0x21,0x80,0xA0,0x02, - 0xFB,0x4C,0xC0,0x0C,0x21,0x20,0x00,0x02,0x01,0x00,0x31,0x26, - 0x2A,0x10,0x32,0x02,0xFB,0xFF,0x40,0x14,0x44,0x00,0x10,0x26, - 0x69,0x2F,0xC0,0x0C,0x21,0x20,0xA0,0x02,0x21,0x20,0x80,0x02, - 0x05,0x00,0x05,0x24,0x03,0x53,0xC0,0x08,0x21,0x30,0x00,0x00, - 0x02,0x00,0x05,0x24,0x01,0x00,0x26,0x26,0xDC,0x47,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x53,0x53,0xC0,0x08,0x01,0x00,0x02,0x24, - 0x7C,0x00,0x92,0xAE,0x70,0x00,0x82,0x8E,0x00,0x00,0x00,0x00, - 0x80,0x00,0x82,0xAE,0x70,0x00,0x95,0xAE,0x21,0x80,0xA0,0x02, - 0x1B,0x00,0x40,0x1A,0x21,0x88,0x00,0x00,0x21,0x20,0x00,0x02, - 0x21,0x28,0x80,0x02,0xD4,0x42,0xC0,0x0C,0x01,0x00,0x06,0x24, - 0x0D,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x14,0x00,0x02,0x96, - 0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30,0x08,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x24,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x03,0x00,0x42,0x90,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x05,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x40,0x00,0x82,0x8E, - 0x00,0x00,0x00,0x00,0xDD,0xFF,0x40,0x10,0x21,0x20,0x80,0x02, - 0x01,0x00,0x31,0x26,0x2A,0x10,0x32,0x02,0xE7,0xFF,0x40,0x14, - 0x44,0x00,0x10,0x26,0x28,0x00,0x40,0x12,0x21,0x80,0xA0,0x02, - 0x11,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x22,0x00,0x42,0x30, - 0x20,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x24,0x00,0x02,0x8E, - 0x10,0x00,0xB0,0xAF,0x08,0x00,0x42,0x8C,0x18,0x00,0x04,0x8E, - 0x1C,0x00,0x05,0x8E,0x20,0x00,0x06,0x8E,0x00,0x00,0x00,0x00, - 0x09,0xF8,0x40,0x00,0x21,0x38,0x80,0x02,0x11,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x20,0x00,0x42,0x34,0x11,0x00,0x02,0xA2, - 0x00,0x00,0xE2,0x8E,0x00,0x00,0x00,0x00,0x0F,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x52,0x26,0x0F,0x00,0x40,0x12, - 0x44,0x00,0x10,0x26,0x11,0x00,0x03,0x92,0x00,0x00,0x00,0x00, - 0x20,0x00,0x62,0x30,0x02,0x00,0x40,0x14,0x22,0x00,0x62,0x34, - 0x11,0x00,0x02,0xA2,0xFF,0xFF,0x52,0x26,0xF8,0xFF,0x40,0x16, - 0x44,0x00,0x10,0x26,0x53,0x53,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xFF,0xFF,0x52,0x26,0xDA,0xFF,0x40,0x16,0x44,0x00,0x10,0x26, - 0x21,0x10,0x00,0x00,0x40,0x00,0xBF,0x8F,0x3C,0x00,0xB7,0x8F, - 0x38,0x00,0xB6,0x8F,0x34,0x00,0xB5,0x8F,0x30,0x00,0xB4,0x8F, - 0x2C,0x00,0xB3,0x8F,0x28,0x00,0xB2,0x8F,0x24,0x00,0xB1,0x8F, - 0x20,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x48,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0xA0,0x00,0x0A,0x00,0x80,0x14,0x21,0x88,0xC0,0x00, - 0x35,0x2F,0xC0,0x0C,0x10,0x00,0x04,0x24,0x21,0x20,0x40,0x00, - 0x03,0x00,0x80,0x14,0x01,0x00,0x02,0x24,0x76,0x53,0xC0,0x08, - 0x21,0x10,0x00,0x00,0x71,0x53,0xC0,0x08,0x00,0x00,0x82,0xA0, - 0x00,0x00,0x80,0xA0,0x04,0x00,0x90,0xAC,0x08,0x00,0x90,0xAC, - 0x21,0x10,0x11,0x02,0x0C,0x00,0x82,0xAC,0x21,0x10,0x80,0x00, - 0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xE8,0xFF,0xBD,0x27, - 0x10,0x00,0xBF,0xAF,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0x03,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00,0x10,0x00,0xBF,0x8F, - 0x18,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x10,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24,0x08,0x00,0x82,0x8C, - 0x0C,0x00,0x83,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x07,0x00,0x40,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34,0x00,0x00,0x82,0xA0, - 0x9C,0x53,0xC0,0x08,0xFF,0xFF,0x02,0x24,0x08,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x90,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0x1E,0x00,0xC0,0x18,0x21,0x38,0xC0,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x10,0x00,0x40,0x14,0xFF,0x00,0x03,0x24,0x08,0x00,0x83,0x8C, - 0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x62,0x00, - 0x05,0x00,0x40,0x10,0x01,0x00,0x62,0x24,0x08,0x00,0x82,0xAC, - 0x00,0x00,0x63,0x90,0xB4,0x53,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34, - 0x00,0x00,0x82,0xA0,0xFF,0x00,0x03,0x24,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x05,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x00,0x00,0xA3,0xA0,0xFF,0xFF,0xC6,0x24, - 0xE4,0xFF,0xC0,0x1C,0x01,0x00,0xA5,0x24,0x08,0x00,0xE0,0x03, - 0x23,0x10,0xE6,0x00,0x01,0x00,0x02,0x24,0x0F,0x00,0xC2,0x10, - 0x02,0x00,0xC2,0x28,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x07,0x00,0xC0,0x10,0xFF,0xFF,0x02,0x24,0xEC,0x53,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x0B,0x00,0xC2,0x10,0xFF,0xFF,0x02,0x24, - 0xEC,0x53,0xC0,0x08,0x00,0x00,0x00,0x00,0x04,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0xD9,0x53,0xC0,0x08,0x21,0x28,0xA2,0x00, - 0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0xD7,0x53,0xC0,0x08, - 0x21,0x28,0xA2,0x00,0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x23,0x28,0x45,0x00,0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xA2,0x00,0x11,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x45,0x00, - 0x0C,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24,0x0C,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x2B,0x10,0xA2,0x00,0x05,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x7F,0x00,0x42,0x30,0x00,0x00,0x82,0xA0,0x08,0x00,0x85,0xAC, - 0x21,0x10,0x00,0x00,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x82,0x8C,0x04,0x00,0x83,0x8C,0x00,0x00,0x00,0x00, - 0x23,0x38,0x43,0x00,0x01,0x00,0x02,0x24,0x0F,0x00,0xC2,0x10, - 0x02,0x00,0xC2,0x28,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x07,0x00,0xC0,0x10,0xFF,0xFF,0x02,0x24,0x1B,0x54,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x0C,0x00,0xC2,0x10,0xFF,0xFF,0x02,0x24, - 0x1B,0x54,0xC0,0x08,0x00,0x00,0x00,0x00,0x04,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x06,0x54,0xC0,0x08,0x21,0x10,0xA2,0x00, - 0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x21,0x10,0xA2,0x00, - 0x0C,0x54,0xC0,0x08,0x0C,0x00,0x82,0xAC,0x0C,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x23,0x10,0x45,0x00,0x0C,0x00,0x82,0xAC, - 0x08,0x00,0x82,0x8C,0x0C,0x00,0x83,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x43,0x00,0x05,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x19,0x54,0xC0,0x08, - 0x7F,0x00,0x42,0x30,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x34,0x00,0x00,0x82,0xA0,0x21,0x10,0xE0,0x00, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xE8,0xFF,0xBD,0x27, - 0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF,0x0C,0x00,0x80,0x14, - 0x21,0x80,0xA0,0x00,0x35,0x2F,0xC0,0x0C,0x10,0x00,0x04,0x24, - 0x21,0x20,0x40,0x00,0x03,0x00,0x80,0x14,0x00,0x00,0x00,0x00, - 0x3B,0x54,0xC0,0x08,0x21,0x10,0x00,0x00,0x00,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x30,0x54,0xC0,0x08,0x01,0x00,0x42,0x34, - 0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0xFE,0x00,0x42,0x30, - 0x00,0x00,0x82,0xA0,0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x04,0x00,0x82,0xAC,0x08,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x08,0x00,0x82,0xAC,0x0C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x82,0xAC,0x21,0x10,0x80,0x00,0x14,0x00,0xBF,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27, - 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x30,0x11,0x00,0x40,0x14,0x1F,0x00,0x03,0x24, - 0x08,0x00,0x83,0x8C,0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x62,0x00,0x06,0x00,0x40,0x10,0x01,0x00,0x62,0x24, - 0x08,0x00,0x82,0xAC,0x00,0x00,0x62,0x90,0x00,0x00,0x00,0x00, - 0x55,0x54,0xC0,0x08,0x1F,0x00,0x43,0x30,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34,0x00,0x00,0x82,0xA0, - 0x1F,0x00,0x03,0x24,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x30,0x04,0x00,0x40,0x10,0x01,0x00,0x02,0x24, - 0x00,0x00,0xA2,0xAC,0x88,0x54,0xC0,0x08,0x21,0x10,0x00,0x00, - 0xFF,0x00,0x63,0x30,0x1F,0x00,0x02,0x24,0x06,0x00,0x62,0x10, - 0x21,0x10,0x60,0x00,0x88,0x54,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x24,0x87,0x54,0xC0,0x08,0x00,0x00,0xA2,0xAC, - 0x21,0x30,0x00,0x00,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x30,0x10,0x00,0x40,0x14,0xFF,0x00,0x03,0x24, - 0x08,0x00,0x83,0x8C,0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x62,0x00,0x05,0x00,0x40,0x10,0x01,0x00,0x62,0x24, - 0x08,0x00,0x82,0xAC,0x00,0x00,0x63,0x90,0x7B,0x54,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x34,0x00,0x00,0x82,0xA0,0xFF,0x00,0x03,0x24, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0xE4,0xFF,0x40,0x14,0x80,0x00,0x62,0x30,0x04,0x00,0x40,0x10, - 0x7F,0x00,0x62,0x30,0x25,0x10,0xC2,0x00,0x67,0x54,0xC0,0x08, - 0xC0,0x31,0x02,0x00,0xFF,0x00,0x62,0x30,0x25,0x30,0x46,0x00, - 0xFF,0xFF,0xC2,0x30,0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x10,0x00,0x40,0x14,0xFF,0x00,0x06,0x24,0x08,0x00,0x83,0x8C, - 0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x62,0x00, - 0x05,0x00,0x40,0x10,0x01,0x00,0x62,0x24,0x08,0x00,0x82,0xAC, - 0x00,0x00,0x66,0x90,0x9E,0x54,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34, - 0x00,0x00,0x82,0xA0,0xFF,0x00,0x06,0x24,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x0D,0x00,0x40,0x14, - 0x01,0x00,0x02,0x24,0xFF,0x00,0xC3,0x30,0x80,0x00,0x02,0x24, - 0x04,0x00,0x62,0x14,0x02,0x00,0x02,0x24,0x00,0x00,0xA2,0xAC, - 0xD5,0x54,0xC0,0x08,0xFF,0xFF,0x02,0x34,0x80,0x00,0xC2,0x30, - 0x06,0x00,0x40,0x14,0x21,0x18,0x00,0x00,0xD5,0x54,0xC0,0x08, - 0xFF,0x00,0xC2,0x30,0x00,0x00,0xA2,0xAC,0xD5,0x54,0xC0,0x08, - 0x21,0x10,0x00,0x00,0x7F,0x00,0xC2,0x30,0x20,0x00,0x40,0x10, - 0xFF,0xFF,0x47,0x24,0x00,0x1A,0x03,0x00,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x10,0x00,0x40,0x14, - 0xFF,0xFF,0x66,0x30,0x08,0x00,0x83,0x8C,0x0C,0x00,0x82,0x8C, - 0x00,0x00,0x00,0x00,0x2B,0x10,0x62,0x00,0x06,0x00,0x40,0x10, - 0x01,0x00,0x62,0x24,0x08,0x00,0x82,0xAC,0x00,0x00,0x62,0x90, - 0x00,0x00,0x00,0x00,0xCB,0x54,0xC0,0x08,0x25,0x18,0xC2,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34, - 0x00,0x00,0x82,0xA0,0xFF,0x00,0xC3,0x34,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0xE0,0xFF,0x40,0x14, - 0x01,0x00,0x02,0x24,0x21,0x10,0xE0,0x00,0xFF,0x00,0x42,0x30, - 0xE2,0xFF,0x40,0x14,0xFF,0xFF,0xE7,0x24,0xFF,0xFF,0x62,0x30, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27, - 0x24,0x00,0xBF,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x98,0x80,0x00,0x21,0x80,0xC0,0x00,0x21,0x90,0xA0,0x00, - 0xFF,0xFF,0x51,0x32,0x21,0x00,0x20,0x12,0x21,0xA0,0xE0,0x00, - 0xFF,0xFF,0x02,0x34,0x1E,0x00,0x22,0x12,0x00,0x00,0x00,0x00, - 0x35,0x2F,0xC0,0x0C,0x21,0x20,0x20,0x02,0x21,0x18,0x40,0x00, - 0x1D,0x00,0x60,0x10,0x01,0x00,0x02,0x24,0x00,0x00,0x02,0xA6, - 0x04,0x00,0x03,0xAE,0x08,0x00,0x03,0xAE,0x0C,0x00,0x12,0xA6, - 0x21,0x20,0x60,0x02,0x08,0x00,0x05,0x8E,0x00,0x00,0x00,0x00, - 0x9E,0x53,0xC0,0x0C,0x21,0x30,0x20,0x02,0x21,0x18,0x40,0x00, - 0xFF,0xFF,0x64,0x30,0x0A,0x00,0x91,0x14,0x01,0x00,0x02,0x24, - 0x0C,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x23,0x10,0x43,0x00, - 0x0C,0x00,0x02,0xA6,0x08,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x21,0x10,0x82,0x00,0x08,0x55,0xC0,0x08,0x08,0x00,0x02,0xAE, - 0x08,0x55,0xC0,0x08,0x00,0x00,0x82,0xAE,0x00,0x00,0x00,0xA6, - 0x04,0x00,0x00,0xAE,0x08,0x00,0x00,0xAE,0x0C,0x00,0x00,0xA6, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x1C,0x00,0xBF,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x90,0x80,0x00,0x21,0x88,0xA0,0x00, - 0x21,0x80,0xC0,0x00,0x40,0x54,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x21,0x20,0x40,0x02,0x8A,0x54,0xC0,0x0C,0x21,0x28,0x00,0x02, - 0x21,0x28,0x40,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x07,0x00,0x40,0x14,0x21,0x20,0x40,0x02,0xFF,0xFF,0xA5,0x30, - 0x21,0x30,0x20,0x02,0xD7,0x54,0xC0,0x0C,0x21,0x38,0x00,0x02, - 0x2C,0x55,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xA6, - 0x04,0x00,0x20,0xAE,0x08,0x00,0x20,0xAE,0x0C,0x00,0x20,0xA6, - 0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xD8,0xFF,0xBD,0x27,0x24,0x00,0xBF,0xAF,0x20,0x00,0xB4,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00,0x21,0x88,0xA0,0x00, - 0x21,0x90,0xC0,0x00,0x38,0x00,0xB0,0x93,0x00,0x00,0x00,0x00, - 0x88,0x53,0xC0,0x0C,0x21,0xA0,0xE0,0x00,0xE0,0x00,0x42,0x30, - 0x07,0x00,0x50,0x14,0x21,0x20,0x60,0x02,0x40,0x54,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0xFF,0xFF,0x42,0x30,0xFF,0xFF,0x83,0x32, - 0x07,0x00,0x43,0x10,0x21,0x20,0x60,0x02,0x00,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x14,0x04,0x00,0x02,0x24, - 0x5C,0x55,0xC0,0x08,0x00,0x00,0x42,0xAE,0x8A,0x54,0xC0,0x0C, - 0x21,0x28,0x40,0x02,0x21,0x28,0x40,0x00,0x00,0x00,0x42,0x8E, - 0x00,0x00,0x00,0x00,0x07,0x00,0x40,0x14,0x21,0x20,0x60,0x02, - 0xFF,0xFF,0xA5,0x30,0x21,0x30,0x20,0x02,0xD7,0x54,0xC0,0x0C, - 0x21,0x38,0x40,0x02,0x60,0x55,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x20,0xA6,0x04,0x00,0x20,0xAE,0x08,0x00,0x20,0xAE, - 0x0C,0x00,0x20,0xA6,0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0x21,0x38,0x00,0x00,0xFF,0xFF,0xA8,0x24,0xFF,0xFF,0xA5,0x30, - 0x32,0x00,0xA0,0x10,0x01,0x00,0x09,0x24,0x01,0x00,0x0C,0x24, - 0x04,0x00,0x0A,0x24,0x03,0x00,0x0B,0x24,0xFF,0xFF,0x05,0x34, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x10,0x00,0x40,0x14,0xFF,0x00,0x03,0x24,0x08,0x00,0x83,0x8C, - 0x0C,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2B,0x10,0x62,0x00, - 0x05,0x00,0x40,0x10,0x01,0x00,0x62,0x24,0x08,0x00,0x82,0xAC, - 0x00,0x00,0x63,0x90,0x85,0x55,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x82,0x90,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34, - 0x00,0x00,0x82,0xA0,0xFF,0x00,0x03,0x24,0x00,0x00,0x82,0x90, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x03,0x00,0x40,0x10, - 0x00,0x00,0x00,0x00,0x9E,0x55,0xC0,0x08,0x00,0x00,0xCC,0xAC, - 0x0B,0x00,0x20,0x11,0xFF,0xFF,0x02,0x31,0x05,0x00,0x4A,0x14, - 0x21,0x48,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00, - 0x9E,0x55,0xC0,0x08,0x00,0x00,0xCB,0xAC,0x80,0x00,0x62,0x30, - 0x03,0x00,0x40,0x10,0x00,0x12,0x07,0x00,0xFF,0xFF,0x07,0x24, - 0x00,0x12,0x07,0x00,0x25,0x38,0x43,0x00,0x21,0x10,0x00,0x01, - 0xFF,0xFF,0x42,0x30,0xD4,0xFF,0x40,0x14,0x21,0x40,0x05,0x01, - 0x08,0x00,0xE0,0x03,0x21,0x10,0xE0,0x00,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x40,0x54,0xC0,0x0C,0x21,0x88,0xA0,0x00, - 0x21,0x20,0x00,0x02,0x8A,0x54,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0x21,0x20,0x00,0x02,0xFF,0xFF,0x45,0x30,0x68,0x55,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x18,0x00,0xBF,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27, - 0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x21,0x88,0xA0,0x00,0x21,0x98,0xC0,0x00, - 0x88,0x53,0xC0,0x0C,0x21,0x80,0xE0,0x00,0xE0,0x00,0x42,0x30, - 0xFF,0x00,0x10,0x32,0x07,0x00,0x50,0x14,0x21,0x20,0x40,0x02, - 0x40,0x54,0xC0,0x0C,0x21,0x28,0x20,0x02,0xFF,0xFF,0x42,0x30, - 0xFF,0xFF,0x63,0x32,0x08,0x00,0x43,0x10,0x21,0x20,0x40,0x02, - 0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x14, - 0x04,0x00,0x02,0x24,0x00,0x00,0x22,0xAE,0xD5,0x55,0xC0,0x08, - 0x21,0x10,0x00,0x00,0x8A,0x54,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0x21,0x20,0x40,0x02,0xFF,0xFF,0x45,0x30,0x68,0x55,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0xD0,0xFF,0xBD,0x27, - 0x2C,0x00,0xBF,0xAF,0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF, - 0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x21,0x98,0xC0,0x00,0x21,0xA0,0xE0,0x00, - 0x00,0x00,0x60,0xAE,0x04,0x00,0x60,0xAE,0x08,0x00,0x03,0x8E, - 0x04,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x23,0x18,0x62,0x00, - 0xFF,0xFF,0xA5,0x30,0x23,0x00,0xA0,0x18,0x21,0x90,0x00,0x00, - 0x01,0x00,0x06,0x24,0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x30,0x10,0x00,0x40,0x14,0xFF,0x00,0x04,0x24, - 0x08,0x00,0x04,0x8E,0x0C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00, - 0x2B,0x10,0x82,0x00,0x05,0x00,0x40,0x10,0x01,0x00,0x82,0x24, - 0x08,0x00,0x02,0xAE,0x00,0x00,0x84,0x90,0x04,0x56,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x34,0x00,0x00,0x02,0xA2,0xFF,0x00,0x04,0x24, - 0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x03,0x00,0x40,0x10,0x80,0x00,0x82,0x30,0x5A,0x56,0xC0,0x08, - 0x00,0x00,0x86,0xAE,0x02,0x00,0x40,0x14,0x00,0x00,0x00,0x00, - 0x01,0x00,0x52,0x26,0xFF,0xFF,0xA5,0x24,0xE0,0xFF,0xA0,0x1C, - 0x00,0x00,0x00,0x00,0x21,0x20,0x00,0x02,0x21,0x28,0x60,0x00, - 0xBF,0x53,0xC0,0x0C,0x21,0x30,0x00,0x00,0x44,0x00,0x40,0x12, - 0x01,0x00,0x51,0x26,0x35,0x2F,0xC0,0x0C,0x80,0x20,0x11,0x00, - 0x21,0x28,0x40,0x00,0x3F,0x00,0xA0,0x10,0x00,0x00,0x00,0x00, - 0x00,0x00,0x71,0xAE,0x04,0x00,0x65,0xAE,0x3B,0x00,0x40,0x1A, - 0x21,0x38,0x00,0x00,0x01,0x00,0x08,0x24,0x21,0x30,0x00,0x00, - 0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30, - 0x10,0x00,0x40,0x14,0xFF,0x00,0x04,0x24,0x08,0x00,0x03,0x8E, - 0x0C,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x2B,0x10,0x62,0x00, - 0x05,0x00,0x40,0x10,0x01,0x00,0x62,0x24,0x08,0x00,0x02,0xAE, - 0x00,0x00,0x64,0x90,0x36,0x56,0xC0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x02,0x92,0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x34, - 0x00,0x00,0x02,0xA2,0xFF,0x00,0x04,0x24,0x00,0x00,0x02,0x92, - 0x00,0x00,0x00,0x00,0x80,0x00,0x42,0x30,0x03,0x00,0x40,0x10, - 0xC0,0x31,0x06,0x00,0x5A,0x56,0xC0,0x08,0x00,0x00,0x88,0xAE, - 0x7F,0x00,0x82,0x30,0x25,0x30,0xC2,0x00,0x80,0x00,0x82,0x30, - 0xE1,0xFF,0x40,0x14,0x00,0x00,0x00,0x00,0x12,0x00,0xE0,0x14, - 0x28,0x00,0xC2,0x2C,0x04,0x00,0x40,0x10,0x50,0x00,0xC2,0x2C, - 0x00,0x00,0xA0,0xAC,0x55,0x56,0xC0,0x08,0x04,0x00,0xA5,0x24, - 0x05,0x00,0x40,0x10,0xD8,0xFF,0xC2,0x24,0x00,0x00,0xA8,0xAC, - 0x04,0x00,0xA5,0x24,0x56,0x56,0xC0,0x08,0x00,0x00,0xA2,0xAC, - 0x02,0x00,0x02,0x24,0x00,0x00,0xA2,0xAC,0x04,0x00,0xA5,0x24, - 0xB0,0xFF,0xC2,0x24,0x56,0x56,0xC0,0x08,0x00,0x00,0xA2,0xAC, - 0x00,0x00,0xA6,0xAC,0x01,0x00,0xE7,0x24,0x2A,0x10,0xF2,0x00, - 0xC8,0xFF,0x40,0x14,0x04,0x00,0xA5,0x24,0x2C,0x00,0xBF,0x8F, - 0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F,0x20,0x00,0xB2,0x8F, - 0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x88,0x80,0x00,0x21,0x90,0xA0,0x00,0x21,0x80,0xC0,0x00, - 0x40,0x54,0xC0,0x0C,0x21,0x28,0x00,0x02,0x21,0x20,0x20,0x02, - 0x8A,0x54,0xC0,0x0C,0x21,0x28,0x00,0x02,0x21,0x28,0x40,0x00, - 0x00,0x00,0x02,0x8E,0x00,0x00,0x00,0x00,0x05,0x00,0x40,0x14, - 0x21,0x20,0x20,0x02,0xFF,0xFF,0xA5,0x30,0x21,0x30,0x40,0x02, - 0xDC,0x55,0xC0,0x0C,0x21,0x38,0x00,0x02,0x1C,0x00,0xBF,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x20,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x24,0x00,0xBF,0xAF,0x20,0x00,0xB4,0xAF,0x1C,0x00,0xB3,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x90,0x80,0x00,0x21,0xA0,0xA0,0x00,0x21,0x88,0xC0,0x00, - 0x38,0x00,0xB0,0x93,0x00,0x00,0x00,0x00,0x88,0x53,0xC0,0x0C, - 0x21,0x98,0xE0,0x00,0xE0,0x00,0x42,0x30,0x07,0x00,0x50,0x14, - 0x21,0x20,0x40,0x02,0x40,0x54,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0xFF,0xFF,0x42,0x30,0xFF,0xFF,0x63,0x32,0x07,0x00,0x43,0x10, - 0x21,0x20,0x40,0x02,0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x0E,0x00,0x40,0x14,0x04,0x00,0x02,0x24,0xA6,0x56,0xC0,0x08, - 0x00,0x00,0x22,0xAE,0x8A,0x54,0xC0,0x0C,0x21,0x28,0x20,0x02, - 0x21,0x28,0x40,0x00,0x00,0x00,0x22,0x8E,0x00,0x00,0x00,0x00, - 0x05,0x00,0x40,0x14,0x21,0x20,0x40,0x02,0xFF,0xFF,0xA5,0x30, - 0x21,0x30,0x80,0x02,0xDC,0x55,0xC0,0x0C,0x21,0x38,0x20,0x02, - 0x24,0x00,0xBF,0x8F,0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F, - 0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x98,0x80,0x00,0x08,0x00,0x63,0x8E, - 0x04,0x00,0x62,0x8E,0x00,0x00,0x00,0x00,0x23,0x80,0x62,0x00, - 0xFF,0xFF,0x04,0x32,0x13,0x00,0x80,0x10,0x21,0x88,0xA0,0x00, - 0x35,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00,0x21,0x90,0x40,0x00, - 0x03,0x00,0x40,0x16,0xFF,0xFF,0x10,0x32,0xD5,0x56,0xC0,0x08, - 0xFF,0xFF,0x02,0x24,0x21,0x20,0x40,0x02,0x04,0x00,0x65,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C,0x21,0x30,0x00,0x02, - 0x01,0x00,0x02,0x24,0x00,0x00,0x22,0xA6,0x04,0x00,0x32,0xAE, - 0x21,0x80,0x50,0x02,0xD3,0x56,0xC0,0x08,0x08,0x00,0x30,0xAE, - 0x00,0x00,0x20,0xA6,0x04,0x00,0x20,0xAE,0x08,0x00,0x20,0xAE, - 0x0C,0x00,0x20,0xA6,0x21,0x10,0x00,0x00,0x20,0x00,0xBF,0x8F, - 0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F,0x14,0x00,0xB1,0x8F, - 0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03,0x28,0x00,0xBD,0x27, - 0xE8,0xFF,0xBD,0x27,0x14,0x00,0xBF,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x00,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00, - 0x04,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x03,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xA6,0x08,0x00,0x00,0xAE,0x04,0x00,0x00,0xAE, - 0x0C,0x00,0x00,0xA6,0x14,0x00,0xBF,0x8F,0x10,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x18,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27, - 0x18,0x00,0xBF,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x80,0x80,0x00,0x08,0x00,0xA3,0x8C,0x04,0x00,0xA2,0x8C, - 0x00,0x00,0x00,0x00,0x23,0x88,0x62,0x00,0xFF,0xFF,0x23,0x32, - 0x0C,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x04,0x00,0x40,0x10,0xFF,0xFF,0x26,0x32,0x0C,0x00,0x11,0x96, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x26,0x32,0x06,0x00,0xC0,0x10, - 0xFF,0xFF,0x22,0x32,0x08,0x00,0x04,0x8E,0x04,0x00,0xA5,0x8C, - 0x10,0x3E,0xC0,0x0C,0x00,0x00,0x00,0x00,0xFF,0xFF,0x22,0x32, - 0x08,0x00,0x03,0x8E,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x08,0x00,0x02,0xAE,0x0C,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x23,0x10,0x51,0x00,0x0C,0x00,0x02,0xA6,0x18,0x00,0xBF,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x01,0x00,0x02,0x24,0x17,0x00,0xC2,0x10, - 0x02,0x00,0xC2,0x28,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x07,0x00,0xC0,0x10,0xFF,0xFF,0x02,0x24,0x48,0x57,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x17,0x00,0xC2,0x10,0xFF,0xFF,0x02,0x24, - 0x48,0x57,0xC0,0x08,0x00,0x00,0x00,0x00,0xFF,0xFF,0xA2,0x30, - 0x04,0x00,0x83,0x8C,0x00,0x00,0x00,0x00,0x21,0x30,0x43,0x00, - 0x08,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x23,0x10,0x43,0x00, - 0x0C,0x00,0x83,0x94,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0x40,0x57,0xC0,0x08,0x23,0x28,0x45,0x00,0xFF,0xFF,0xA2,0x30, - 0x08,0x00,0x83,0x8C,0x00,0x00,0x00,0x00,0x21,0x30,0x43,0x00, - 0x0C,0x00,0x82,0x94,0x00,0x00,0x00,0x00,0x40,0x57,0xC0,0x08, - 0x23,0x28,0x45,0x00,0x0C,0x00,0x82,0x94,0x08,0x00,0x83,0x8C, - 0x00,0x00,0x00,0x00,0x21,0x30,0x43,0x00,0xFF,0xFF,0xA2,0x30, - 0x23,0x30,0xC2,0x00,0x04,0x00,0x82,0x8C,0x00,0x00,0x00,0x00, - 0x2B,0x10,0xC2,0x00,0x04,0x00,0x40,0x14,0xFF,0xFF,0x02,0x24, - 0x08,0x00,0x86,0xAC,0x0C,0x00,0x85,0xA4,0x21,0x10,0x00,0x00, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD8,0xFF,0xBD,0x27, - 0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF, - 0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00, - 0x21,0x98,0xA0,0x00,0x08,0x00,0x03,0x8E,0x04,0x00,0x02,0x8E, - 0x00,0x00,0x00,0x00,0x23,0x90,0x62,0x00,0xFF,0xFF,0x42,0x32, - 0x0C,0x00,0x03,0x96,0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00, - 0xFF,0xFF,0x63,0x32,0x2A,0x10,0x43,0x00,0x23,0x00,0x40,0x10, - 0x01,0x00,0x02,0x24,0x00,0x00,0x03,0x96,0x00,0x00,0x00,0x00, - 0x20,0x00,0x62,0x14,0xFF,0xFF,0x02,0x24,0x35,0x2F,0xC0,0x0C, - 0xFF,0xFF,0x64,0x32,0x21,0x88,0x40,0x00,0x03,0x00,0x20,0x16, - 0xFF,0xFF,0x46,0x32,0x81,0x57,0xC0,0x08,0xFF,0xFF,0x02,0x24, - 0x05,0x00,0xC0,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0x8E, - 0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C,0x21,0x20,0x20,0x02, - 0x00,0x00,0x02,0x96,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x30, - 0x07,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x8E, - 0x00,0x00,0x00,0x00,0x03,0x00,0x80,0x10,0x00,0x00,0x00,0x00, - 0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00,0x04,0x00,0x11,0xAE, - 0xFF,0xFF,0x42,0x32,0x21,0x10,0x22,0x02,0x08,0x00,0x02,0xAE, - 0x23,0x10,0x72,0x02,0x0C,0x00,0x02,0xA6,0x21,0x10,0x00,0x00, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27,0x20,0x00,0xBF,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x80,0x80,0x00,0x21,0x88,0xC0,0x00, - 0xFF,0xFF,0x24,0x32,0x23,0x00,0x80,0x10,0x21,0x98,0xA0,0x00, - 0x08,0x00,0x02,0x8E,0x04,0x00,0x03,0x8E,0x00,0x00,0x00,0x00, - 0x23,0x10,0x43,0x00,0xFF,0xFF,0x42,0x30,0x0C,0x00,0x03,0x96, - 0x00,0x00,0x00,0x00,0x21,0x10,0x43,0x00,0x2A,0x10,0x44,0x00, - 0x14,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x35,0x2F,0xC0,0x0C, - 0x00,0x00,0x00,0x00,0x21,0x90,0x40,0x00,0x18,0x00,0x40,0x12, - 0xFF,0xFF,0x02,0x24,0x00,0x00,0x02,0x96,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x30,0x08,0x00,0x40,0x10,0x01,0x00,0x02,0x24, - 0x04,0x00,0x04,0x8E,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x10, - 0x00,0x00,0x00,0x00,0x69,0x2F,0xC0,0x0C,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x24,0x00,0x00,0x02,0xA6,0x04,0x00,0x12,0xAE, - 0x04,0x00,0x04,0x8E,0x21,0x28,0x60,0x02,0x10,0x3E,0xC0,0x0C, - 0xFF,0xFF,0x26,0x32,0x21,0x20,0x00,0x02,0xFF,0xFF,0x25,0x32, - 0x19,0x57,0xC0,0x0C,0x21,0x30,0x00,0x00,0x21,0x10,0x00,0x00, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x0B,0x00,0x80,0x04,0x80,0x00,0x82,0x28, - 0x14,0x00,0x40,0x14,0x01,0x00,0x03,0x24,0xFF,0x7F,0x02,0x24, - 0x2A,0x10,0x44,0x00,0x10,0x00,0x40,0x10,0x02,0x00,0x03,0x24, - 0x7F,0x00,0x02,0x3C,0xFF,0xFF,0x42,0x34,0xD8,0x57,0xC0,0x08, - 0x2A,0x10,0x44,0x00,0x80,0xFF,0x82,0x28,0x09,0x00,0x40,0x10, - 0x01,0x00,0x03,0x24,0x00,0x80,0x82,0x28,0x06,0x00,0x40,0x10, - 0x02,0x00,0x03,0x24,0x80,0xFF,0x02,0x3C,0x2A,0x10,0x82,0x00, - 0x02,0x00,0x40,0x14,0x04,0x00,0x03,0x24,0x03,0x00,0x03,0x24, - 0x08,0x00,0xE0,0x03,0x21,0x10,0x60,0x00,0x80,0x00,0x82,0x2C, - 0x0E,0x00,0x40,0x14,0x01,0x00,0x02,0x24,0xFF,0x7F,0x02,0x24, - 0x2B,0x10,0x44,0x00,0x09,0x00,0x40,0x10,0x7F,0x00,0x02,0x3C, - 0xFF,0xFF,0x42,0x34,0x2B,0x10,0x44,0x00,0x06,0x00,0x40,0x10, - 0x03,0x00,0x02,0x24,0x04,0x00,0x80,0x04,0x05,0x00,0x02,0x24, - 0xED,0x57,0xC0,0x08,0x04,0x00,0x02,0x24,0x02,0x00,0x02,0x24, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x04,0x00,0x87,0x8C, - 0x00,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x41,0x00,0x40,0x10, - 0x21,0x10,0x00,0x00,0x00,0x00,0xE3,0x8C,0x04,0x00,0xE7,0x24, - 0x80,0x10,0x03,0x00,0x21,0x10,0x43,0x00,0xC0,0x10,0x02,0x00, - 0x00,0x00,0xE3,0x8C,0x00,0x00,0x00,0x00,0x21,0x18,0x43,0x00, - 0x80,0x00,0x62,0x2C,0x11,0x00,0x40,0x14,0x04,0x00,0xE7,0x24, - 0x00,0x40,0x62,0x2C,0x0F,0x00,0x40,0x14,0x02,0x00,0x05,0x24, - 0x1F,0x00,0x02,0x3C,0xFF,0xFF,0x42,0x34,0x2B,0x10,0x43,0x00, - 0x07,0x00,0x40,0x10,0xFF,0x0F,0x02,0x3C,0xFF,0xFF,0x42,0x34, - 0x2B,0x10,0x43,0x00,0x06,0x00,0x40,0x14,0x05,0x00,0x05,0x24, - 0x10,0x58,0xC0,0x08,0x04,0x00,0x05,0x24,0x10,0x58,0xC0,0x08, - 0x03,0x00,0x05,0x24,0x01,0x00,0x05,0x24,0x02,0x00,0x06,0x24, - 0x00,0x00,0x82,0x8C,0x00,0x00,0x00,0x00,0x2A,0x10,0xC2,0x00, - 0x1F,0x00,0x40,0x10,0xFF,0xFF,0xA2,0x30,0x1F,0x00,0x09,0x3C, - 0xFF,0xFF,0x29,0x35,0xFF,0x0F,0x08,0x3C,0xFF,0xFF,0x08,0x35, - 0x00,0x00,0x84,0x8C,0x00,0x00,0xE3,0x8C,0x04,0x00,0xE7,0x24, - 0x80,0x00,0x62,0x2C,0x10,0x00,0x40,0x14,0xFF,0xFF,0xA5,0x30, - 0x00,0x40,0x62,0x2C,0x0B,0x00,0x40,0x14,0x2B,0x10,0x23,0x01, - 0x07,0x00,0x40,0x10,0x2B,0x10,0x03,0x01,0x03,0x00,0x40,0x14, - 0x00,0x00,0x00,0x00,0x30,0x58,0xC0,0x08,0x04,0x00,0xA5,0x24, - 0x30,0x58,0xC0,0x08,0x05,0x00,0xA5,0x24,0x30,0x58,0xC0,0x08, - 0x03,0x00,0xA5,0x24,0x30,0x58,0xC0,0x08,0x02,0x00,0xA5,0x24, - 0x01,0x00,0xA5,0x24,0x01,0x00,0xC6,0x24,0x2A,0x10,0xC4,0x00, - 0xE8,0xFF,0x40,0x14,0xFF,0xFF,0xA2,0x30,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27,0x28,0x00,0xBF,0xAF, - 0x21,0x48,0xC0,0x00,0xE0,0x00,0xA5,0x30,0xFF,0xFF,0x82,0x30, - 0x1F,0x00,0x42,0x2C,0x07,0x00,0x40,0x10,0x21,0x30,0xA0,0x00, - 0x25,0x10,0x85,0x00,0x10,0x00,0xA2,0xA3,0x21,0x20,0xE0,0x00, - 0x10,0x00,0xA5,0x27,0x6A,0x58,0xC0,0x08,0x01,0x00,0x06,0x24, - 0x20,0x00,0xA3,0x27,0x21,0x28,0x00,0x00,0x1F,0x00,0xC2,0x34, - 0x18,0x00,0xA2,0xA3,0xFF,0xFF,0x82,0x30,0x08,0x00,0x40,0x10, - 0x19,0x00,0xA8,0x27,0x7F,0x00,0x82,0x30,0x00,0x00,0x62,0xA0, - 0x01,0x00,0x63,0x24,0xFF,0xFF,0x82,0x30,0xC2,0x21,0x02,0x00, - 0xFA,0xFF,0x80,0x14,0x01,0x00,0xA5,0x24,0x01,0x00,0xA6,0x24, - 0x21,0x10,0xA0,0x00,0xFF,0xFF,0x42,0x30,0x02,0x00,0x42,0x2C, - 0x0D,0x00,0x40,0x14,0xFF,0xFF,0xA5,0x24,0xFF,0xFF,0x04,0x34, - 0xFF,0xFF,0x63,0x24,0x00,0x00,0x62,0x90,0x00,0x00,0x00,0x00, - 0x80,0x00,0x42,0x34,0x00,0x00,0x02,0xA1,0x01,0x00,0x08,0x25, - 0x21,0x10,0xA0,0x00,0xFF,0xFF,0x42,0x30,0x02,0x00,0x42,0x2C, - 0xF6,0xFF,0x40,0x10,0x21,0x28,0xA4,0x00,0xFF,0xFF,0x62,0x90, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA1,0x21,0x20,0xE0,0x00, - 0x18,0x00,0xA5,0x27,0xFF,0xFF,0xC6,0x30,0x09,0xF8,0x20,0x01, - 0x00,0x00,0x00,0x00,0x28,0x00,0xBF,0x8F,0x30,0x00,0xBD,0x27, - 0x08,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27, - 0x28,0x00,0xBF,0xAF,0x21,0x48,0xA0,0x00,0xFF,0xFF,0x82,0x30, - 0x80,0x00,0x42,0x2C,0x06,0x00,0x40,0x10,0x21,0x40,0xC0,0x00, - 0x10,0x00,0xA4,0xA3,0x21,0x20,0x00,0x01,0x10,0x00,0xA5,0x27, - 0x9C,0x58,0xC0,0x08,0x01,0x00,0x06,0x24,0x18,0x00,0xA7,0x27, - 0x20,0x00,0xA5,0x27,0xFF,0xFF,0x82,0x30,0x07,0x00,0x40,0x10, - 0x21,0x18,0x00,0x00,0x00,0x00,0xA4,0xA0,0x01,0x00,0xA5,0x24, - 0xFF,0xFF,0x82,0x30,0x02,0x22,0x02,0x00,0xFB,0xFF,0x80,0x14, - 0x01,0x00,0x63,0x24,0x80,0x00,0x62,0x34,0x00,0x00,0xE2,0xA0, - 0x01,0x00,0xE7,0x24,0x01,0x00,0x66,0x24,0x21,0x10,0x60,0x00, - 0xFF,0xFF,0x42,0x30,0x0B,0x00,0x40,0x10,0xFF,0xFF,0x63,0x24, - 0xFF,0xFF,0x04,0x34,0xFF,0xFF,0xA5,0x24,0x00,0x00,0xA2,0x90, - 0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0xA0,0x01,0x00,0xE7,0x24, - 0x21,0x10,0x60,0x00,0xFF,0xFF,0x42,0x30,0xF8,0xFF,0x40,0x14, - 0x21,0x18,0x64,0x00,0x21,0x20,0x00,0x01,0x18,0x00,0xA5,0x27, - 0xFF,0xFF,0xC6,0x30,0x09,0xF8,0x20,0x01,0x00,0x00,0x00,0x00, - 0x28,0x00,0xBF,0x8F,0x30,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xC8,0xFF,0xBD,0x27,0x30,0x00,0xBF,0xAF, - 0x2C,0x00,0xB5,0xAF,0x28,0x00,0xB4,0xAF,0x24,0x00,0xB3,0xAF, - 0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF,0x18,0x00,0xB0,0xAF, - 0x21,0x88,0xA0,0x00,0x21,0x90,0xC0,0x00,0x21,0x98,0xE0,0x00, - 0x48,0x00,0xB4,0x8F,0x21,0x80,0x80,0x00,0xC4,0x57,0xC0,0x0C, - 0x21,0x20,0x40,0x02,0x21,0xA8,0x40,0x00,0xFF,0xFF,0x04,0x32, - 0xC0,0x00,0x25,0x32,0x21,0x30,0x60,0x02,0x36,0x58,0xC0,0x0C, - 0x21,0x38,0x80,0x02,0xFF,0xFF,0xB0,0x32,0x21,0x20,0x00,0x02, - 0x21,0x28,0x60,0x02,0x70,0x58,0xC0,0x0C,0x21,0x30,0x80,0x02, - 0x10,0x00,0xA2,0x27,0x21,0x18,0x50,0x00,0xFF,0xFF,0x63,0x24, - 0x06,0x00,0x62,0x10,0x00,0x00,0x72,0xA0,0x10,0x00,0xA2,0x27, - 0x03,0x92,0x12,0x00,0xFF,0xFF,0x63,0x24,0xFD,0xFF,0x62,0x14, - 0x00,0x00,0x72,0xA0,0x21,0x20,0x80,0x02,0x10,0x00,0xA5,0x27, - 0x09,0xF8,0x60,0x02,0xFF,0xFF,0xA6,0x32,0x30,0x00,0xBF,0x8F, - 0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0xC8,0xFF,0xBD,0x27, - 0x30,0x00,0xBF,0xAF,0x2C,0x00,0xB5,0xAF,0x28,0x00,0xB4,0xAF, - 0x24,0x00,0xB3,0xAF,0x20,0x00,0xB2,0xAF,0x1C,0x00,0xB1,0xAF, - 0x18,0x00,0xB0,0xAF,0x21,0x88,0xA0,0x00,0x21,0x90,0xC0,0x00, - 0x21,0xA0,0xE0,0x00,0x48,0x00,0xB5,0x8F,0x21,0x80,0x80,0x00, - 0xDD,0x57,0xC0,0x0C,0x21,0x20,0x40,0x02,0x21,0x98,0x40,0x00, - 0xFF,0xFF,0x04,0x32,0xC0,0x00,0x25,0x32,0x21,0x30,0x80,0x02, - 0x36,0x58,0xC0,0x0C,0x21,0x38,0xA0,0x02,0xFF,0xFF,0x70,0x32, - 0x21,0x20,0x00,0x02,0x21,0x28,0x80,0x02,0x70,0x58,0xC0,0x0C, - 0x21,0x30,0xA0,0x02,0x10,0x00,0xA2,0x27,0x21,0x20,0x50,0x00, - 0x09,0x00,0x00,0x12,0xFF,0xFF,0x63,0x26,0xFF,0xFF,0x05,0x34, - 0xFF,0xFF,0x84,0x24,0x00,0x00,0x92,0xA0,0x02,0x92,0x12,0x00, - 0x21,0x10,0x60,0x00,0xFF,0xFF,0x42,0x30,0xFA,0xFF,0x40,0x14, - 0x21,0x18,0x65,0x00,0x21,0x20,0xA0,0x02,0x10,0x00,0xA5,0x27, - 0x09,0xF8,0x80,0x02,0xFF,0xFF,0x66,0x32,0x30,0x00,0xBF,0x8F, - 0x2C,0x00,0xB5,0x8F,0x28,0x00,0xB4,0x8F,0x24,0x00,0xB3,0x8F, - 0x20,0x00,0xB2,0x8F,0x1C,0x00,0xB1,0x8F,0x18,0x00,0xB0,0x8F, - 0x08,0x00,0xE0,0x03,0x38,0x00,0xBD,0x27,0xD8,0xFF,0xBD,0x27, - 0x20,0x00,0xBF,0xAF,0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF, - 0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF,0x21,0x98,0xC0,0x00, - 0x38,0x00,0xB2,0x8F,0x3C,0x00,0xB1,0x8F,0x21,0x80,0xE0,0x00, - 0xFF,0xFF,0x84,0x30,0xC0,0x00,0xA5,0x30,0x21,0x30,0x40,0x02, - 0x36,0x58,0xC0,0x0C,0x21,0x38,0x20,0x02,0xFF,0xFF,0x10,0x32, - 0x21,0x20,0x00,0x02,0x21,0x28,0x40,0x02,0x70,0x58,0xC0,0x0C, - 0x21,0x30,0x20,0x02,0x04,0x00,0x00,0x12,0x21,0x20,0x20,0x02, - 0x21,0x28,0x60,0x02,0x09,0xF8,0x40,0x02,0x21,0x30,0x00,0x02, - 0x20,0x00,0xBF,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x28,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x18,0x00,0xBF,0xAF, - 0x21,0x48,0xA0,0x00,0x80,0x00,0x82,0x2C,0x12,0x00,0x40,0x14, - 0x21,0x40,0xC0,0x00,0x00,0x40,0x82,0x2C,0x0D,0x00,0x40,0x14, - 0x1F,0x00,0x02,0x3C,0xFF,0xFF,0x42,0x34,0x2B,0x10,0x44,0x00, - 0x07,0x00,0x40,0x10,0xFF,0x0F,0x02,0x3C,0xFF,0xFF,0x42,0x34, - 0x2B,0x10,0x44,0x00,0x08,0x00,0x40,0x14,0x05,0x00,0x06,0x24, - 0x3E,0x59,0xC0,0x08,0x04,0x00,0x06,0x24,0x3E,0x59,0xC0,0x08, - 0x03,0x00,0x06,0x24,0x3E,0x59,0xC0,0x08,0x02,0x00,0x06,0x24, - 0x01,0x00,0x06,0x24,0xFF,0xFF,0xC2,0x30,0x10,0x00,0xA3,0x27, - 0x21,0x28,0x62,0x00,0x09,0x00,0xA3,0x10,0x21,0x38,0x00,0x00, - 0x10,0x00,0xA3,0x27,0xFF,0xFF,0xA5,0x24,0x7F,0x00,0x82,0x30, - 0x25,0x10,0xE2,0x00,0x00,0x00,0xA2,0xA0,0xC2,0x21,0x04,0x00, - 0xFA,0xFF,0xA3,0x14,0x80,0x00,0x07,0x24,0x21,0x20,0x00,0x01, - 0x10,0x00,0xA5,0x27,0x09,0xF8,0x20,0x01,0xFF,0xFF,0xC6,0x30, - 0x18,0x00,0xBF,0x8F,0x20,0x00,0xBD,0x27,0x08,0x00,0xE0,0x03, - 0x00,0x00,0x00,0x00,0xD0,0xFF,0xBD,0x27,0x2C,0x00,0xBF,0xAF, - 0x28,0x00,0xB6,0xAF,0x24,0x00,0xB5,0xAF,0x20,0x00,0xB4,0xAF, - 0x1C,0x00,0xB3,0xAF,0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF, - 0x10,0x00,0xB0,0xAF,0x21,0x90,0xA0,0x00,0x21,0xA8,0xC0,0x00, - 0x21,0xA0,0xE0,0x00,0x40,0x00,0xB6,0x8F,0x21,0x88,0x80,0x00, - 0x04,0x00,0xB3,0x8E,0x00,0x00,0x00,0x00,0xEF,0x57,0xC0,0x0C, - 0x21,0x20,0xA0,0x02,0x21,0x80,0x40,0x00,0xFF,0xFF,0x24,0x32, - 0xC0,0x00,0x45,0x32,0x21,0x30,0x80,0x02,0x36,0x58,0xC0,0x0C, - 0x21,0x38,0xC0,0x02,0xFF,0xFF,0x10,0x32,0x21,0x20,0x00,0x02, - 0x21,0x28,0x80,0x02,0x70,0x58,0xC0,0x0C,0x21,0x30,0xC0,0x02, - 0x17,0x00,0x00,0x12,0x21,0x28,0x80,0x02,0x00,0x00,0x62,0x8E, - 0x04,0x00,0x73,0x26,0x80,0x20,0x02,0x00,0x21,0x20,0x82,0x00, - 0xC0,0x20,0x04,0x00,0x00,0x00,0x62,0x8E,0x04,0x00,0x73,0x26, - 0x21,0x20,0x82,0x00,0x26,0x59,0xC0,0x0C,0x21,0x30,0xC0,0x02, - 0x83,0x59,0xC0,0x08,0x02,0x00,0x10,0x24,0x00,0x00,0x64,0x8E, - 0x04,0x00,0x73,0x26,0x26,0x59,0xC0,0x0C,0x21,0x30,0xC0,0x02, - 0x01,0x00,0x10,0x26,0x00,0x00,0xA2,0x8E,0x00,0x00,0x00,0x00, - 0x2A,0x10,0x02,0x02,0xF7,0xFF,0x40,0x14,0x21,0x28,0x80,0x02, - 0x2C,0x00,0xBF,0x8F,0x28,0x00,0xB6,0x8F,0x24,0x00,0xB5,0x8F, - 0x20,0x00,0xB4,0x8F,0x1C,0x00,0xB3,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x30,0x00,0xBD,0x27,0xE0,0xFF,0xBD,0x27,0x1C,0x00,0xBF,0xAF, - 0x18,0x00,0xB2,0xAF,0x14,0x00,0xB1,0xAF,0x10,0x00,0xB0,0xAF, - 0x21,0x88,0x80,0x00,0x21,0x90,0xC0,0x00,0xFF,0xFF,0x43,0x32, - 0x0C,0x00,0x22,0x96,0x00,0x00,0x00,0x00,0x2B,0x10,0x43,0x00, - 0x04,0x00,0x40,0x10,0x01,0x00,0x02,0x24,0x0C,0x00,0x32,0x96, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x43,0x32,0x0B,0x00,0x62,0x10, - 0x02,0x00,0x62,0x28,0x05,0x00,0x40,0x10,0x02,0x00,0x02,0x24, - 0x32,0x00,0x60,0x10,0xFF,0xFF,0x50,0x32,0xCD,0x59,0xC0,0x08, - 0x00,0x00,0x00,0x00,0x0F,0x00,0x62,0x10,0xFF,0xFF,0x50,0x32, - 0xCD,0x59,0xC0,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x23,0x8E, - 0x00,0x00,0x00,0x00,0x01,0x00,0x62,0x24,0x08,0x00,0x22,0xAE, - 0x00,0x00,0xA2,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0xA0, - 0x0C,0x00,0x22,0x96,0x00,0x00,0x00,0x00,0xFF,0xFF,0x42,0x24, - 0xD9,0x59,0xC0,0x08,0x0C,0x00,0x22,0xA6,0x08,0x00,0x23,0x8E, - 0x00,0x00,0x00,0x00,0x01,0x00,0x62,0x24,0x08,0x00,0x22,0xAE, - 0x00,0x00,0xA2,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0xA0, - 0x08,0x00,0x23,0x8E,0x00,0x00,0x00,0x00,0x01,0x00,0x62,0x24, - 0x08,0x00,0x22,0xAE,0x01,0x00,0xA2,0x90,0x00,0x00,0x00,0x00, - 0x00,0x00,0x62,0xA0,0x0C,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0xFE,0xFF,0x42,0x24,0xD9,0x59,0xC0,0x08,0x0C,0x00,0x22,0xA6, - 0x08,0x00,0x24,0x8E,0x00,0x00,0x00,0x00,0x10,0x3E,0xC0,0x0C, - 0x21,0x30,0x00,0x02,0x0C,0x00,0x22,0x96,0x00,0x00,0x00,0x00, - 0x23,0x10,0x52,0x00,0x0C,0x00,0x22,0xA6,0x08,0x00,0x22,0x8E, - 0x00,0x00,0x00,0x00,0x21,0x80,0x02,0x02,0x08,0x00,0x30,0xAE, - 0xFF,0xFF,0x42,0x32,0x1C,0x00,0xBF,0x8F,0x18,0x00,0xB2,0x8F, - 0x14,0x00,0xB1,0x8F,0x10,0x00,0xB0,0x8F,0x08,0x00,0xE0,0x03, - 0x20,0x00,0xBD,0x27,0x23,0x20,0x70,0x6F,0x72,0x74,0x73,0x3A, - 0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x25,0x73,0x3A,0x25, - 0x64,0x3A,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x20,0x61,0x73, - 0x73,0x65,0x72,0x74,0x69,0x6F,0x6E,0x20,0x60,0x25,0x73,0x27, - 0x0A,0x00,0x00,0x00,0x62,0x63,0x2E,0x62,0x63,0x5F,0x68,0x65, - 0x61,0x70,0x65,0x6E,0x64,0x20,0x3C,0x3D,0x20,0x62,0x63,0x2E, - 0x62,0x63,0x5F,0x72,0x61,0x6D,0x65,0x6E,0x64,0x00,0x00,0x00, - 0x2A,0x2A,0x2A,0x50,0x72,0x6F,0x66,0x69,0x6C,0x69,0x6E,0x67, - 0x20,0x40,0x20,0x25,0x78,0x2C,0x20,0x25,0x78,0x0A,0x00,0x00, - 0x67,0x6F,0x74,0x20,0x68,0x65,0x72,0x65,0x20,0x63,0x61,0x75, - 0x73,0x65,0x3D,0x25,0x78,0x20,0x73,0x74,0x61,0x74,0x75,0x73, - 0x3D,0x25,0x78,0x20,0x76,0x65,0x63,0x3D,0x25,0x78,0x0A,0x00, - 0x25,0x73,0x3A,0x25,0x64,0x3A,0x20,0x66,0x61,0x69,0x6C,0x65, - 0x64,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x69,0x6F,0x6E,0x20, - 0x60,0x25,0x73,0x27,0x0A,0x00,0x00,0x00,0x53,0x65,0x63,0x6F, - 0x6E,0x64,0x73,0x20,0x3C,0x20,0x30,0x78,0x37,0x46,0x46,0x46, - 0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x54,0x69,0x6D,0x65, - 0x72,0x73,0x55,0x73,0x65,0x64,0x20,0x3C,0x20,0x4E,0x54,0x49, - 0x4D,0x45,0x52,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x45,0x45,0x50,0x52,0x4F,0x4D,0x20,0x69,0x73,0x20,0x62,0x61, - 0x64,0x0A,0x00,0x00,0x50,0x6F,0x72,0x74,0x20,0x25,0x64,0x20, - 0x65,0x74,0x68,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73, - 0x73,0x3A,0x20,0x25,0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58, - 0x3A,0x25,0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x3A,0x25, - 0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x0A,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x38,0x32,0x35,0x39,0x36,0x20,0x43,0x68, - 0x61,0x6E,0x20,0x25,0x64,0x3A,0x20,0x73,0x65,0x6C,0x66,0x74, - 0x65,0x73,0x74,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x20,0x28, - 0x25,0x78,0x29,0x0A,0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x38,0x32,0x35,0x39,0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25, - 0x64,0x3A,0x20,0x73,0x65,0x6C,0x66,0x74,0x65,0x73,0x74,0x20, - 0x70,0x61,0x73,0x73,0x65,0x64,0x0A,0x00,0x38,0x32,0x35,0x39, - 0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25,0x64,0x3A,0x20,0x64, - 0x75,0x6D,0x70,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x20,0x28, - 0x25,0x78,0x29,0x0A,0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x38,0x32,0x35,0x39,0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25, - 0x64,0x3A,0x20,0x64,0x75,0x6D,0x70,0x20,0x70,0x61,0x73,0x73, - 0x65,0x64,0x0A,0x00,0x23,0x23,0x23,0x20,0x38,0x32,0x35,0x39, - 0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25,0x64,0x3A,0x20,0x53, - 0x43,0x50,0x20,0x66,0x65,0x74,0x63,0x68,0x20,0x66,0x61,0x69, - 0x6C,0x65,0x64,0x0A,0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x38,0x32,0x35,0x39,0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25, - 0x64,0x3A,0x20,0x53,0x43,0x50,0x20,0x66,0x65,0x74,0x63,0x68, - 0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x20,0x25,0x78,0x20,0x0A, - 0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x20,0x38,0x32,0x35,0x39, - 0x36,0x20,0x50,0x6F,0x72,0x74,0x20,0x25,0x64,0x3A,0x20,0x42, - 0x55,0x53,0x54,0x49,0x4D,0x45,0x52,0x53,0x20,0x6C,0x6F,0x61, - 0x64,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x0A,0x00,0x00,0x00, - 0x2A,0x2A,0x2A,0x20,0x38,0x32,0x35,0x39,0x36,0x20,0x50,0x6F, - 0x72,0x74,0x20,0x25,0x64,0x3A,0x20,0x42,0x55,0x53,0x54,0x49, - 0x4D,0x45,0x52,0x53,0x20,0x6C,0x6F,0x61,0x64,0x20,0x70,0x61, - 0x73,0x73,0x65,0x64,0x0A,0x00,0x00,0x00,0x23,0x23,0x23,0x20, - 0x41,0x43,0x4B,0x20,0x64,0x69,0x64,0x20,0x6E,0x6F,0x74,0x20, - 0x6F,0x63,0x63,0x75,0x72,0x0A,0x00,0x00,0x23,0x23,0x23,0x20, - 0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x73,0x74,0x69,0x6C,0x6C, - 0x20,0x62,0x75,0x73,0x79,0x3A,0x20,0x25,0x78,0x0A,0x00,0x00, - 0x65,0x74,0x68,0x5F,0x69,0x6E,0x69,0x74,0x2E,0x63,0x00,0x00, - 0x2A,0x2A,0x2A,0x4C,0x31,0x57,0x41,0x0A,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x54,0x42,0x44,0x20,0x62,0x6C,0x6F,0x63, - 0x6B,0x73,0x20,0x61,0x72,0x65,0x6E,0x27,0x74,0x20,0x62,0x65, - 0x69,0x6E,0x67,0x20,0x66,0x72,0x65,0x65,0x64,0x0A,0x00,0x00, - 0x41,0x74,0x74,0x65,0x6D,0x70,0x74,0x20,0x74,0x6F,0x20,0x66, - 0x72,0x65,0x65,0x20,0x62,0x6F,0x67,0x75,0x73,0x20,0x54,0x42, - 0x44,0x20,0x25,0x78,0x0A,0x00,0x00,0x00,0x23,0x23,0x23,0x20, - 0x42,0x55,0x46,0x20,0x62,0x6C,0x6F,0x63,0x6B,0x73,0x20,0x61, - 0x72,0x65,0x6E,0x27,0x74,0x20,0x62,0x65,0x69,0x6E,0x67,0x20, - 0x66,0x72,0x65,0x65,0x64,0x0A,0x00,0x00,0x41,0x74,0x74,0x65, - 0x6D,0x70,0x74,0x20,0x74,0x6F,0x20,0x66,0x72,0x65,0x65,0x20, - 0x62,0x6F,0x67,0x75,0x73,0x20,0x42,0x55,0x46,0x20,0x25,0x78, - 0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x52,0x46,0x44,0x73,0x20,0x25,0x64,0x20,0x0A,0x00,0x00,0x00, - 0x52,0x42,0x44,0x73,0x20,0x25,0x64,0x20,0x0A,0x00,0x00,0x00, - 0x25,0x73,0x25,0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x3A, - 0x25,0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x3A,0x25,0x30, - 0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x25,0x73,0x00,0x00,0x00, - 0x75,0x73,0x65,0x64,0x20,0x3D,0x20,0x25,0x64,0x3B,0x20,0x75, - 0x6E,0x75,0x73,0x65,0x64,0x20,0x3D,0x20,0x25,0x64,0x3B,0x20, - 0x75,0x73,0x65,0x64,0x2B,0x75,0x6E,0x75,0x73,0x65,0x64,0x20, - 0x3D,0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x41,0x52,0x50,0x20, - 0x25,0x78,0x21,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x08,0x45,0x00,0x83,0x58,0x3F,0x00,0x83,0xAC,0x3F,0x00,0x83, - 0x20,0x40,0x00,0x83,0x58,0x3F,0x00,0x83,0x00,0x00,0x00,0x00, - 0x20,0x4C,0x00,0x83,0x6C,0x46,0x00,0x83,0xC0,0x46,0x00,0x83, - 0x34,0x47,0x00,0x83,0x6C,0x46,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x73,0x3A,0x25, - 0x64,0x3A,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x20,0x61,0x73, - 0x73,0x65,0x72,0x74,0x69,0x6F,0x6E,0x20,0x60,0x25,0x73,0x27, - 0x0A,0x00,0x00,0x00,0x65,0x74,0x68,0x5F,0x78,0x6D,0x69,0x74, - 0x2E,0x63,0x00,0x00,0x63,0x62,0x70,0x2D,0x3E,0x6E,0x6F,0x70, - 0x2E,0x63,0x6D,0x64,0x20,0x3D,0x3D,0x20,0x49,0x35,0x39,0x36, - 0x5F,0x43,0x42,0x5F,0x43,0x4D,0x44,0x5F,0x4E,0x4F,0x50,0x7C, - 0x49,0x35,0x39,0x36,0x5F,0x43,0x42,0x5F,0x43,0x4D,0x44,0x5F, - 0x45,0x4C,0x00,0x00,0x63,0x62,0x70,0x2D,0x3E,0x6E,0x6F,0x70, - 0x2E,0x63,0x6D,0x64,0x20,0x26,0x20,0x49,0x35,0x39,0x36,0x5F, - 0x43,0x42,0x5F,0x43,0x4D,0x44,0x00,0x00,0x70,0x2D,0x3E,0x73, - 0x63,0x62,0x70,0x2D,0x3E,0x73,0x74,0x61,0x74,0x75,0x73,0x20, - 0x26,0x20,0x49,0x35,0x39,0x36,0x5F,0x53,0x43,0x42,0x5F,0x43, - 0x4E,0x41,0x00,0x00,0x23,0x23,0x23,0x20,0x63,0x6D,0x64,0x20, - 0x73,0x74,0x69,0x6C,0x6C,0x20,0x62,0x75,0x73,0x79,0x3A,0x20, - 0x25,0x78,0x0A,0x00,0x25,0x64,0x3D,0x25,0x64,0x2C,0x25,0x78, - 0x2C,0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x27,0x25,0x73,0x27, - 0x20,0x25,0x78,0x20,0x25,0x78,0x0A,0x00,0x25,0x30,0x38,0x78, - 0x3A,0x20,0x25,0x30,0x32,0x78,0x0A,0x00,0x25,0x30,0x38,0x78, - 0x3A,0x20,0x25,0x30,0x34,0x78,0x0A,0x00,0x25,0x30,0x38,0x78, - 0x3A,0x20,0x25,0x30,0x38,0x78,0x0A,0x00,0x6C,0x69,0x6E,0x6B, - 0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x25,0x30,0x32,0x78,0x0A, - 0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x67,0x6F,0x74,0x20, - 0x25,0x64,0x20,0x69,0x6E,0x74,0x65,0x72,0x72,0x75,0x70,0x74, - 0x73,0x0A,0x00,0x00,0x23,0x23,0x23,0x20,0x45,0x78,0x70,0x65, - 0x63,0x74,0x65,0x64,0x20,0x25,0x64,0x20,0x62,0x75,0x74,0x20, - 0x67,0x6F,0x74,0x20,0x25,0x64,0x20,0x69,0x6E,0x74,0x65,0x72, - 0x72,0x75,0x70,0x74,0x73,0x0A,0x00,0x00,0x50,0x4C,0x58,0x39, - 0x30,0x36,0x30,0x20,0x41,0x64,0x64,0x72,0x65,0x73,0x73,0x20, - 0x3D,0x20,0x25,0x58,0x20,0x44,0x41,0x54,0x41,0x20,0x3D,0x20, - 0x25,0x58,0x20,0x0A,0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x57,0x72,0x69,0x74,0x65,0x20,0x6F,0x66,0x20,0x25,0x78,0x20, - 0x74,0x6F,0x20,0x25,0x64,0x20,0x66,0x61,0x69,0x6C,0x65,0x64, - 0x0A,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x57,0x72,0x69,0x74, - 0x65,0x20,0x6F,0x66,0x20,0x25,0x78,0x20,0x74,0x6F,0x20,0x25, - 0x78,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x0A,0x00,0x00,0x00, - 0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A, - 0x2A,0x2A,0x2A,0x2A,0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x49,0x6C,0x6C,0x65,0x67,0x61,0x6C,0x20,0x63,0x6F,0x6D,0x6D, - 0x61,0x6E,0x64,0x20,0x27,0x25,0x73,0x27,0x0A,0x00,0x00,0x00, - 0x2D,0x2D,0x2D,0x20,0x63,0x6F,0x6D,0x6D,0x61,0x6E,0x64,0x73, - 0x20,0x6D,0x2C,0x74,0x2C,0x65,0x2C,0x45,0x2C,0x61,0x2C,0x78, - 0x2C,0x6C,0x2C,0x73,0x2C,0x70,0x20,0x63,0x61,0x6E,0x20,0x62, - 0x65,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x65,0x64,0x20,0x77, - 0x69,0x74,0x68,0x20,0x61,0x20,0x72,0x65,0x70,0x65,0x61,0x74, - 0x20,0x63,0x6F,0x75,0x6E,0x74,0x00,0x00,0x6C,0x20,0x78,0x70, - 0x6F,0x72,0x74,0x20,0x72,0x70,0x6F,0x72,0x74,0x20,0x5B,0x6C, - 0x65,0x6E,0x5D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x4C,0x6F,0x6F,0x70,0x62,0x61,0x63,0x6B,0x20,0x74,0x65, - 0x73,0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x78,0x70,0x6F,0x72, - 0x74,0x20,0x28,0x31,0x2D,0x36,0x29,0x20,0x74,0x6F,0x20,0x72, - 0x70,0x6F,0x72,0x74,0x20,0x28,0x31,0x2D,0x36,0x29,0x00,0x00, - 0x69,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x6E, - 0x74,0x65,0x72,0x72,0x75,0x70,0x74,0x20,0x48,0x6F,0x73,0x74, - 0x20,0x20,0x7C,0x20,0x20,0x73,0x20,0x5B,0x70,0x6F,0x72,0x74, - 0x5D,0x20,0x5B,0x6C,0x65,0x6E,0x5D,0x20,0x42,0x61,0x63,0x6B, - 0x32,0x62,0x61,0x63,0x6B,0x20,0x78,0x6D,0x69,0x74,0x20,0x63, - 0x6E,0x74,0x20,0x70,0x61,0x63,0x6B,0x65,0x74,0x73,0x00,0x00, - 0x50,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x54,0x65, - 0x73,0x74,0x20,0x50,0x4C,0x58,0x20,0x39,0x30,0x36,0x30,0x20, - 0x20,0x20,0x7C,0x20,0x20,0x64,0x20,0x5B,0x72,0x7C,0x77,0x7C, - 0x6C,0x7C,0x74,0x5D,0x20,0x5B,0x76,0x61,0x6C,0x7C,0x27,0x63, - 0x27,0x5D,0x20,0x20,0x52,0x65,0x61,0x64,0x2F,0x57,0x72,0x69, - 0x74,0x65,0x2F,0x4C,0x6F,0x6F,0x70,0x2F,0x54,0x69,0x6D,0x65, - 0x20,0x44,0x4D,0x41,0x00,0x00,0x00,0x00,0x4C,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x65,0x61,0x64,0x20,0x4C, - 0x69,0x6E,0x6B,0x20,0x4C,0x45,0x44,0x73,0x20,0x20,0x7C,0x20, - 0x20,0x70,0x20,0x72,0x65,0x67,0x6E,0x6F,0x20,0x5B,0x76,0x61, - 0x6C,0x5D,0x20,0x20,0x52,0x65,0x61,0x64,0x2F,0x5B,0x77,0x72, - 0x69,0x74,0x65,0x5D,0x20,0x50,0x4C,0x58,0x20,0x72,0x65,0x67, - 0x69,0x73,0x74,0x65,0x72,0x00,0x00,0x00,0x41,0x20,0x61,0x64, - 0x64,0x72,0x20,0x20,0x20,0x20,0x53,0x65,0x74,0x20,0x65,0x74, - 0x68,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x20,0x20,0x7C,0x20, - 0x20,0x24,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x52,0x65,0x61,0x64,0x20,0x63,0x6D,0x64, - 0x73,0x20,0x66,0x72,0x6F,0x6D,0x20,0x66,0x69,0x6C,0x65,0x20, - 0x27,0x73,0x63,0x72,0x69,0x70,0x74,0x27,0x00,0x00,0x00,0x00, - 0x78,0x20,0x5B,0x70,0x6F,0x72,0x74,0x5D,0x20,0x20,0x54,0x78, - 0x20,0x65,0x74,0x68,0x65,0x72,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7C,0x20,0x20,0x52,0x20,0x5B,0x70,0x6F,0x72,0x74, - 0x5D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x78,0x20,0x65, - 0x74,0x68,0x65,0x72,0x20,0x5B,0x6F,0x6E,0x20,0x70,0x6F,0x72, - 0x74,0x20,0x31,0x2D,0x36,0x5D,0x00,0x00,0x48,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x54,0x6F,0x67,0x67,0x6C,0x65, - 0x20,0x46,0x43,0x43,0x20,0x74,0x65,0x73,0x74,0x20,0x7C,0x20, - 0x20,0x71,0x2C,0x5E,0x44,0x2C,0x5E,0x5A,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x51,0x75,0x69,0x74,0x00,0x00,0x00,0x00, - 0x61,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x54,0x65, - 0x73,0x74,0x20,0x61,0x6C,0x6C,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7C,0x20,0x20,0x5A,0x20,0x6D,0x73,0x65,0x63,0x73, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x50,0x61,0x75,0x73, - 0x65,0x20,0x66,0x6F,0x72,0x20,0x61,0x20,0x77,0x68,0x69,0x6C, - 0x65,0x00,0x00,0x00,0x45,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x54,0x65,0x73,0x74,0x20,0x45,0x45,0x50,0x52,0x4F, - 0x4D,0x20,0x20,0x20,0x20,0x20,0x7C,0x20,0x20,0x53,0x72,0x20, - 0x61,0x64,0x64,0x72,0x3B,0x20,0x53,0x77,0x20,0x61,0x64,0x64, - 0x72,0x20,0x76,0x61,0x6C,0x3B,0x20,0x20,0x52,0x65,0x61,0x64, - 0x2F,0x57,0x72,0x69,0x74,0x65,0x20,0x50,0x4C,0x58,0x20,0x45, - 0x32,0x20,0x72,0x65,0x67,0x00,0x00,0x00,0x65,0x20,0x5B,0x70, - 0x6F,0x72,0x74,0x5D,0x20,0x20,0x54,0x65,0x73,0x74,0x20,0x65, - 0x74,0x68,0x65,0x72,0x6E,0x65,0x74,0x20,0x20,0x20,0x7C,0x20, - 0x20,0x45,0x72,0x20,0x61,0x64,0x64,0x72,0x3B,0x20,0x45,0x77, - 0x20,0x61,0x64,0x64,0x72,0x20,0x76,0x61,0x6C,0x3B,0x20,0x20, - 0x52,0x65,0x61,0x64,0x2F,0x57,0x72,0x69,0x74,0x65,0x20,0x45, - 0x45,0x50,0x52,0x4F,0x4D,0x20,0x72,0x65,0x67,0x00,0x00,0x00, - 0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x54,0x65, - 0x73,0x74,0x20,0x74,0x69,0x6D,0x65,0x72,0x73,0x20,0x20,0x20, - 0x20,0x20,0x7C,0x20,0x20,0x77,0x5B,0x2A,0x5D,0x20,0x61,0x64, - 0x64,0x72,0x20,0x76,0x61,0x6C,0x20,0x20,0x57,0x72,0x69,0x74, - 0x65,0x20,0x6D,0x65,0x6D,0x6F,0x72,0x79,0x3A,0x20,0x77,0x62, - 0x20,0x77,0x68,0x2C,0x20,0x77,0x77,0x2C,0x20,0x77,0x74,0x00, - 0x6D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x54,0x65, - 0x73,0x74,0x20,0x6D,0x65,0x6D,0x6F,0x72,0x79,0x20,0x20,0x20, - 0x20,0x20,0x7C,0x20,0x20,0x72,0x5B,0x2A,0x5D,0x20,0x61,0x64, - 0x64,0x72,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x65,0x61,0x64, - 0x20,0x6D,0x65,0x6D,0x6F,0x72,0x79,0x3A,0x20,0x72,0x62,0x20, - 0x72,0x68,0x2C,0x20,0x72,0x77,0x2C,0x20,0x72,0x74,0x00,0x00, - 0x2A,0x2A,0x2A,0x20,0x52,0x69,0x67,0x68,0x74,0x53,0x77,0x69, - 0x74,0x63,0x68,0x20,0x44,0x69,0x61,0x67,0x6E,0x6F,0x73,0x74, - 0x69,0x63,0x73,0x20,0x6D,0x65,0x6E,0x75,0x20,0x2A,0x2A,0x2A, - 0x00,0x00,0x00,0x00,0x2D,0x2D,0x2D,0x20,0x54,0x68,0x72,0x65, - 0x65,0x20,0x63,0x6F,0x70,0x69,0x65,0x73,0x20,0x6F,0x66,0x20, - 0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x64,0x6F,0x20,0x6E, - 0x6F,0x74,0x20,0x61,0x67,0x72,0x65,0x65,0x21,0x0A,0x00,0x00, - 0x2D,0x2D,0x2D,0x20,0x45,0x74,0x68,0x65,0x72,0x20,0x41,0x64, - 0x64,0x72,0x65,0x73,0x73,0x20,0x4E,0x6F,0x74,0x20,0x53,0x65, - 0x74,0x21,0x0A,0x00,0x2D,0x2D,0x2D,0x20,0x45,0x74,0x68,0x65, - 0x72,0x20,0x41,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x69,0x73, - 0x20,0x61,0x20,0x6D,0x75,0x6C,0x74,0x69,0x63,0x61,0x73,0x74, - 0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x21,0x0A,0x00,0x00, - 0x2A,0x2A,0x2A,0x20,0x25,0x30,0x32,0x58,0x25,0x30,0x32,0x58, - 0x25,0x30,0x32,0x58,0x3A,0x25,0x30,0x32,0x58,0x3A,0x25,0x30, - 0x32,0x58,0x25,0x30,0x32,0x58,0x0A,0x00,0x2D,0x2D,0x2D,0x20, - 0x46,0x69,0x72,0x73,0x74,0x20,0x62,0x79,0x74,0x65,0x20,0x28, - 0x25,0x30,0x32,0x58,0x29,0x20,0x69,0x73,0x20,0x61,0x20,0x62, - 0x72,0x6F,0x61,0x64,0x63,0x61,0x73,0x74,0x20,0x61,0x64,0x64, - 0x72,0x65,0x73,0x73,0x0A,0x00,0x00,0x00,0x2D,0x2D,0x2D,0x20, - 0x4C,0x61,0x73,0x74,0x20,0x64,0x69,0x67,0x69,0x74,0x20,0x6D, - 0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x30,0x20,0x6F,0x72,0x20, - 0x38,0x0A,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x45,0x69,0x67,0x68, - 0x74,0x20,0x65,0x74,0x68,0x65,0x72,0x6E,0x65,0x74,0x20,0x61, - 0x64,0x64,0x72,0x65,0x73,0x73,0x65,0x73,0x20,0x68,0x61,0x76, - 0x65,0x20,0x62,0x65,0x65,0x6E,0x20,0x75,0x73,0x65,0x64,0x3A, - 0x0A,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x50,0x6F,0x72,0x74, - 0x20,0x25,0x64,0x20,0x65,0x74,0x68,0x65,0x72,0x6E,0x65,0x74, - 0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x69,0x73,0x20, - 0x00,0x00,0x00,0x00,0x2D,0x2D,0x2D,0x20,0x42,0x61,0x64,0x20, - 0x65,0x74,0x68,0x65,0x72,0x20,0x61,0x64,0x64,0x72,0x65,0x73, - 0x73,0x20,0x27,0x25,0x73,0x27,0x20,0x73,0x70,0x65,0x63,0x69, - 0x66,0x69,0x65,0x64,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xD4,0x62,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0xD4,0x62,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x20,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0xFC,0x6B,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x64,0x6C,0x00,0x83, - 0x78,0x6A,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0xD4,0x62,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0xF8,0x67,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x2C,0x69,0x00,0x83, - 0x48,0x6D,0x00,0x83,0xC4,0x69,0x00,0x83,0x50,0x6B,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0xFC,0x69,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x10,0x6C,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x34,0x6A,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x00,0x6D,0x00,0x83,0x68,0x67,0x00,0x83, - 0xFC,0x66,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x14,0x68,0x00,0x83,0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83, - 0xDC,0x67,0x00,0x83,0x38,0x6C,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x48,0x6D,0x00,0x83,0xA4,0x68,0x00,0x83,0x48,0x6D,0x00,0x83, - 0x94,0x65,0x00,0x83,0x88,0x67,0x00,0x83,0x3C,0x67,0x00,0x83, - 0x48,0x6D,0x00,0x83,0x48,0x6D,0x00,0x83,0x74,0x66,0x00,0x83, - 0xA0,0x67,0x00,0x83,0x00,0x00,0x00,0x00,0x9C,0x6C,0x00,0x83, - 0xAC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xDC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xCC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83,0xEC,0x6C,0x00,0x83, - 0xBC,0x6C,0x00,0x83,0xDC,0x6C,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x45,0x45,0x50,0x52, - 0x4F,0x4D,0x20,0x50,0x61,0x73,0x73,0x65,0x64,0x0A,0x00,0x00, - 0x21,0x21,0x21,0x20,0x45,0x45,0x50,0x52,0x4F,0x4D,0x20,0x46, - 0x61,0x69,0x6C,0x75,0x72,0x65,0x3A,0x20,0x57,0x72,0x6F,0x74, - 0x65,0x20,0x25,0x30,0x34,0x78,0x20,0x61,0x74,0x20,0x25,0x64, - 0x2C,0x20,0x67,0x6F,0x74,0x20,0x25,0x30,0x34,0x78,0x0A,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x23,0x23,0x23,0x46,0x72,0x61,0x6D,0x65,0x20,0x25,0x64,0x20, - 0x64,0x69,0x64,0x20,0x6E,0x6F,0x74,0x20,0x61,0x72,0x72,0x69, - 0x76,0x65,0x0A,0x00,0x23,0x23,0x23,0x20,0x46,0x72,0x61,0x6D, - 0x65,0x20,0x25,0x64,0x2C,0x20,0x6C,0x65,0x6E,0x20,0x25,0x64, - 0x2C,0x20,0x62,0x79,0x74,0x65,0x20,0x25,0x64,0x2C,0x20,0x77, - 0x61,0x6E,0x74,0x20,0x25,0x78,0x20,0x67,0x6F,0x74,0x20,0x25, - 0x78,0x0A,0x00,0x00,0x23,0x23,0x23,0x46,0x72,0x61,0x6D,0x65, - 0x20,0x25,0x64,0x20,0x77,0x72,0x6F,0x6E,0x67,0x20,0x6C,0x65, - 0x6E,0x67,0x74,0x68,0x20,0x28,0x77,0x61,0x6E,0x74,0x20,0x25, - 0x64,0x20,0x67,0x6F,0x74,0x20,0x25,0x64,0x29,0x0A,0x00,0x00, - 0x23,0x23,0x23,0x46,0x72,0x61,0x6D,0x65,0x20,0x25,0x64,0x3A, - 0x20,0x67,0x6F,0x74,0x20,0x73,0x65,0x71,0x20,0x25,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x20,0x25,0x64,0x20,0x43, - 0x52,0x43,0x20,0x65,0x72,0x72,0x6F,0x72,0x73,0x20,0x6F,0x63, - 0x63,0x75,0x72,0x65,0x64,0x0A,0x00,0x00,0x23,0x23,0x23,0x20, - 0x25,0x64,0x20,0x41,0x6C,0x69,0x67,0x6E,0x20,0x65,0x72,0x72, - 0x6F,0x72,0x73,0x20,0x6F,0x63,0x63,0x75,0x72,0x65,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x20,0x25,0x64,0x20,0x53, - 0x68,0x6F,0x72,0x74,0x20,0x65,0x72,0x72,0x6F,0x72,0x73,0x20, - 0x6F,0x63,0x63,0x75,0x72,0x65,0x64,0x0A,0x00,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x25,0x64,0x20,0x4F,0x76,0x65,0x72,0x72, - 0x75,0x6E,0x20,0x65,0x72,0x72,0x6F,0x72,0x73,0x20,0x6F,0x63, - 0x63,0x75,0x72,0x65,0x64,0x0A,0x00,0x00,0x23,0x23,0x23,0x20, - 0x43,0x55,0x20,0x73,0x74,0x69,0x6C,0x6C,0x20,0x72,0x75,0x6E, - 0x6E,0x69,0x6E,0x67,0x3A,0x20,0x25,0x78,0x0A,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x63,0x6D,0x64,0x20,0x73,0x74,0x69,0x6C, - 0x6C,0x20,0x62,0x75,0x73,0x79,0x3A,0x20,0x25,0x78,0x0A,0x00, - 0x23,0x23,0x23,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x73, - 0x74,0x69,0x6C,0x6C,0x20,0x62,0x75,0x73,0x79,0x3A,0x20,0x25, - 0x78,0x0A,0x00,0x00,0x43,0x42,0x3D,0x25,0x78,0x2C,0x20,0x54, - 0x42,0x44,0x3D,0x25,0x78,0x2C,0x20,0x42,0x55,0x46,0x3D,0x25, - 0x78,0x0A,0x00,0x00,0x74,0x65,0x73,0x74,0x5F,0x65,0x74,0x68, - 0x65,0x72,0x2E,0x63,0x00,0x00,0x00,0x00,0x25,0x64,0x20,0x66, - 0x72,0x61,0x6D,0x65,0x73,0x20,0x6F,0x66,0x20,0x6C,0x65,0x6E, - 0x67,0x74,0x68,0x20,0x25,0x64,0x20,0x73,0x65,0x6E,0x74,0x20, - 0x69,0x6E,0x20,0x25,0x64,0x20,0x6D,0x73,0x65,0x63,0x73,0x0A, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x38,0x32,0x35,0x34, - 0x20,0x54,0x69,0x6D,0x65,0x72,0x20,0x30,0x20,0x4F,0x4B,0x2C, - 0x20,0x63,0x6F,0x75,0x6E,0x74,0x20,0x77,0x61,0x73,0x20,0x25, - 0x64,0x0A,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x38,0x32,0x35,0x34, - 0x20,0x54,0x69,0x6D,0x65,0x72,0x20,0x30,0x20,0x6E,0x6F,0x74, - 0x20,0x69,0x6E,0x74,0x65,0x72,0x72,0x75,0x70,0x74,0x69,0x6E, - 0x67,0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x38,0x32,0x35,0x34,0x20,0x54,0x69,0x6D,0x65,0x72,0x20,0x30, - 0x20,0x73,0x70,0x65,0x65,0x64,0x20,0x77,0x72,0x6F,0x6E,0x67, - 0x2C,0x20,0x67,0x6F,0x74,0x20,0x25,0x64,0x20,0x73,0x68,0x6F, - 0x75,0x6C,0x64,0x20,0x62,0x65,0x20,0x31,0x30,0x30,0x30,0x0A, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x09,0x25,0x78,0x3A,0x20,0x77,0x61,0x6E, - 0x74,0x20,0x25,0x78,0x20,0x67,0x6F,0x74,0x20,0x25,0x78,0x0A, - 0x00,0x00,0x00,0x00,0x2D,0x2D,0x2D,0x20,0x52,0x41,0x4D,0x20, - 0x54,0x65,0x73,0x74,0x20,0x6F,0x66,0x20,0x25,0x78,0x20,0x74, - 0x6F,0x20,0x25,0x78,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x2A,0x2A,0x2A,0x20,0x52,0x41,0x4D,0x20, - 0x54,0x65,0x73,0x74,0x20,0x6F,0x66,0x20,0x25,0x78,0x20,0x74, - 0x6F,0x20,0x25,0x78,0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x20,0x44,0x4D,0x41,0x20, - 0x44,0x4F,0x4E,0x45,0x20,0x6E,0x65,0x76,0x65,0x72,0x20,0x6F, - 0x63,0x63,0x75,0x72,0x72,0x65,0x64,0x2E,0x20,0x20,0x63,0x73, - 0x72,0x20,0x3D,0x20,0x25,0x78,0x0A,0x00,0x23,0x23,0x23,0x20, - 0x48,0x6F,0x73,0x74,0x20,0x6E,0x65,0x76,0x65,0x72,0x20,0x67, - 0x6F,0x74,0x20,0x44,0x4D,0x41,0x20,0x69,0x6E,0x74,0x65,0x72, - 0x72,0x75,0x70,0x74,0x2E,0x20,0x62,0x63,0x5F,0x63,0x6E,0x74, - 0x20,0x3D,0x20,0x25,0x64,0x0A,0x00,0x00,0x23,0x23,0x23,0x20, - 0x44,0x4D,0x41,0x20,0x65,0x72,0x72,0x6F,0x72,0x20,0x61,0x74, - 0x20,0x69,0x6E,0x64,0x65,0x78,0x20,0x25,0x64,0x3A,0x20,0x77, - 0x61,0x6E,0x74,0x65,0x64,0x20,0x25,0x30,0x32,0x78,0x20,0x67, - 0x6F,0x74,0x20,0x25,0x30,0x32,0x78,0x0A,0x00,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x49,0x6C,0x6C,0x65,0x67,0x61,0x6C,0x20, - 0x48,0x6F,0x73,0x74,0x20,0x61,0x64,0x64,0x72,0x20,0x28,0x3D, - 0x25,0x78,0x29,0x20,0x6F,0x72,0x20,0x6C,0x65,0x6E,0x67,0x74, - 0x68,0x20,0x28,0x3D,0x25,0x64,0x29,0x0A,0x00,0x00,0x00,0x00, - 0x23,0x23,0x23,0x20,0x43,0x6F,0x75,0x6E,0x74,0x20,0x63,0x61, - 0x6E,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x3E,0x20,0x31,0x30, - 0x32,0x34,0x2A,0x31,0x30,0x32,0x34,0x0A,0x00,0x00,0x00,0x00, - 0x2A,0x2A,0x2A,0x20,0x6C,0x63,0x6C,0x2E,0x42,0x75,0x66,0x31, - 0x20,0x3D,0x20,0x25,0x78,0x20,0x2D,0x2D,0x3E,0x20,0x68,0x6F, - 0x73,0x74,0x2E,0x42,0x75,0x66,0x20,0x3D,0x20,0x25,0x78,0x20, - 0x2D,0x2D,0x3E,0x20,0x6C,0x63,0x6C,0x2E,0x42,0x75,0x66,0x32, - 0x20,0x3D,0x20,0x25,0x78,0x0A,0x00,0x00,0x2A,0x2A,0x2A,0x20, - 0x3E,0x20,0x44,0x62,0x20,0x25,0x64,0x20,0x28,0x62,0x75,0x72, - 0x73,0x74,0x29,0x3B,0x20,0x3E,0x20,0x44,0x77,0x20,0x25,0x64, - 0x20,0x28,0x77,0x61,0x69,0x74,0x73,0x74,0x61,0x74,0x65,0x73, - 0x29,0x0A,0x00,0x00,0x23,0x23,0x23,0x20,0x53,0x65,0x63,0x6F, - 0x6E,0x64,0x20,0x61,0x72,0x67,0x20,0x6D,0x75,0x73,0x74,0x20, - 0x62,0x65,0x20,0x27,0x72,0x27,0x20,0x6F,0x72,0x20,0x27,0x77, - 0x27,0x20,0x6F,0x72,0x20,0x27,0x6C,0x27,0x0A,0x00,0x00,0x00, - 0x2A,0x2A,0x2A,0x20,0x44,0x4D,0x41,0x20,0x25,0x73,0x20,0x69, - 0x6E,0x20,0x25,0x34,0x64,0x20,0x62,0x79,0x74,0x65,0x20,0x63, - 0x68,0x75,0x6E,0x6B,0x73,0x3A,0x20,0x00,0x20,0x20,0x74,0x6F, - 0x20,0x68,0x6F,0x73,0x74,0x00,0x00,0x00,0x66,0x72,0x6F,0x6D, - 0x20,0x68,0x6F,0x73,0x74,0x00,0x00,0x00,0x25,0x38,0x64,0x20, - 0x62,0x79,0x74,0x65,0x73,0x2F,0x73,0x65,0x63,0x2E,0x0A,0x00, - 0x74,0x69,0x6D,0x65,0x20,0x74,0x6F,0x6F,0x20,0x73,0x68,0x6F, - 0x72,0x74,0x20,0x74,0x6F,0x20,0x6D,0x65,0x61,0x73,0x75,0x72, - 0x65,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x50,0x25,0x64,0x2D,0x3E,0x25,0x73,0x20, - 0x0A,0x00,0x00,0x00,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,0x74, - 0x20,0x70,0x65,0x6E,0x64,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x20, - 0x25,0x64,0x0A,0x00,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,0x74, - 0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,0x6F,0x6E,0x20,0x25, - 0x64,0x0A,0x00,0x00,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,0x74, - 0x20,0x74,0x63,0x6E,0x0A,0x00,0x00,0x00,0x74,0x63,0x6E,0x20, - 0x65,0x78,0x70,0x0A,0x00,0x00,0x00,0x00,0x66,0x6F,0x72,0x77, - 0x61,0x72,0x64,0x5F,0x64,0x65,0x6C,0x61,0x79,0x20,0x65,0x78, - 0x70,0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x6D,0x65,0x73,0x73, - 0x61,0x67,0x65,0x5F,0x61,0x67,0x65,0x20,0x65,0x78,0x70,0x20, - 0x25,0x64,0x0A,0x00,0x68,0x6F,0x6C,0x64,0x20,0x65,0x78,0x70, - 0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x54,0x78,0x43,0x4F, - 0x4E,0x46,0x49,0x47,0x25,0x64,0x0A,0x00,0x54,0x78,0x54,0x43, - 0x4E,0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x72,0x63,0x76,0x20, - 0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,0x6F,0x6E,0x20,0x25,0x64, - 0x0A,0x00,0x00,0x00,0x5A,0x45,0x52,0x4F,0x20,0x72,0x6F,0x6F, - 0x74,0x21,0x20,0x61,0x74,0x20,0x25,0x78,0x20,0x00,0x00,0x00, - 0x73,0x75,0x70,0x65,0x72,0x63,0x65,0x64,0x65,0x73,0x20,0x25, - 0x64,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x53,0x65,0x6E,0x64,0x20,0x55,0x44,0x50, - 0x20,0x25,0x64,0x0A,0x00,0x00,0x00,0x00,0x4E,0x6F,0x20,0x52, - 0x42,0x44,0x27,0x73,0x20,0x69,0x6E,0x20,0x55,0x44,0x50,0x20, - 0x28,0x25,0x64,0x20,0x25,0x64,0x29,0x0A,0x00,0x00,0x00,0x00, - 0x53,0x65,0x6E,0x74,0x20,0x55,0x44,0x50,0x20,0x25,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x53,0x4E,0x4D,0x50,0x20,0x27,0x25,0x63, - 0x27,0x20,0x6C,0x65,0x6E,0x20,0x25,0x64,0x0A,0x00,0x00,0x00, - 0x45,0x6E,0x76,0x6F,0x79,0x20,0x72,0x63,0x3D,0x25,0x64,0x0A, - 0x00,0x00,0x00,0x00,0x42,0x61,0x64,0x20,0x55,0x44,0x50,0x20, - 0x63,0x68,0x65,0x63,0x6B,0x73,0x75,0x6D,0x20,0x25,0x78,0x20, - 0x6C,0x65,0x6E,0x20,0x25,0x64,0x0A,0x00,0x42,0x61,0x64,0x20, - 0x55,0x44,0x50,0x20,0x6C,0x65,0x6E,0x67,0x74,0x68,0x20,0x77, - 0x61,0x6E,0x74,0x20,0x25,0x64,0x20,0x67,0x6F,0x74,0x20,0x25, - 0x64,0x0A,0x00,0x00,0x42,0x61,0x64,0x20,0x49,0x43,0x4D,0x50, - 0x20,0x63,0x68,0x65,0x63,0x6B,0x73,0x75,0x6D,0x0A,0x00,0x00, - 0x4E,0x6F,0x20,0x52,0x42,0x44,0x27,0x73,0x20,0x69,0x6E,0x20, - 0x49,0x43,0x4D,0x50,0x0A,0x00,0x00,0x00,0x42,0x61,0x64,0x20, - 0x49,0x50,0x20,0x63,0x68,0x65,0x63,0x6B,0x73,0x75,0x6D,0x0A, - 0x00,0x00,0x00,0x00,0x54,0x72,0x75,0x6E,0x63,0x61,0x74,0x65, - 0x64,0x20,0x49,0x50,0x0A,0x00,0x00,0x00,0x53,0x45,0x4E,0x54, - 0x20,0x49,0x50,0x58,0x21,0x0A,0x00,0x00,0x4E,0x6F,0x20,0x52, - 0x42,0x44,0x27,0x73,0x20,0x69,0x6E,0x20,0x49,0x50,0x58,0x0A, - 0x00,0x00,0x00,0x00,0x54,0x72,0x75,0x6E,0x63,0x61,0x74,0x65, - 0x64,0x20,0x49,0x50,0x58,0x0A,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x4D,0x61,0x6C,0x6C,0x6F,0x63,0x20,0x72, - 0x65,0x74,0x75,0x72,0x6E,0x73,0x20,0x4E,0x55,0x4C,0x4C,0x21, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x44,0x69,0x67,0x69,0x20,0x49,0x6E,0x74,0x6C,0x2E,0x20,0x52, - 0x69,0x67,0x68,0x74,0x53,0x77,0x69,0x74,0x63,0x68,0x20,0x53, - 0x45,0x2D,0x58,0x00,0x49,0x6E,0x74,0x65,0x6C,0x20,0x38,0x32, - 0x35,0x39,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x67,0x65,0x74,0x5F,0x73,0x6E,0x6D,0x70,0x45,0x6E,0x61,0x62, - 0x6C,0x65,0x0A,0x00,0x73,0x65,0x74,0x5F,0x73,0x6E,0x6D,0x70, - 0x45,0x6E,0x61,0x62,0x6C,0x65,0x0A,0x00,0xA8,0xC2,0x00,0x83, - 0xC4,0xC2,0x00,0x83,0xFC,0xC2,0x00,0x83,0x10,0xC3,0x00,0x83, - 0x24,0xC3,0x00,0x83,0x7C,0xC3,0x00,0x83,0xA4,0xC3,0x00,0x83, - 0xA4,0xC3,0x00,0x83,0xC4,0xC3,0x00,0x83,0xD4,0xC3,0x00,0x83, - 0xF0,0xC3,0x00,0x83,0x08,0xC4,0x00,0x83,0x24,0xC4,0x00,0x83, - 0x40,0xC4,0x00,0x83,0x5C,0xC4,0x00,0x83,0x5C,0xC4,0x00,0x83, - 0x78,0xC4,0x00,0x83,0x90,0xC4,0x00,0x83,0xAC,0xC4,0x00,0x83, - 0xC8,0xC4,0x00,0x83,0xE8,0xC4,0x00,0x83,0x10,0xC5,0x00,0x83, - 0x54,0xC7,0x00,0x83,0x88,0xC7,0x00,0x83,0xA4,0xC7,0x00,0x83, - 0xC4,0xC7,0x00,0x83,0xDC,0xC7,0x00,0x83,0x00,0x00,0x00,0x00, - 0xD0,0xC9,0x00,0x83,0xF0,0xC9,0x00,0x83,0x14,0xCA,0x00,0x83, - 0x38,0xCA,0x00,0x83,0x38,0xCA,0x00,0x83,0x00,0x00,0x00,0x00, - 0xA4,0xCB,0x00,0x83,0xB8,0xCB,0x00,0x83,0xD4,0xCB,0x00,0x83, - 0xF8,0xCB,0x00,0x83,0x28,0xCC,0x00,0x83,0x44,0xCC,0x00,0x83, - 0x74,0xCC,0x00,0x83,0x90,0xCC,0x00,0x83,0x04,0xCD,0x00,0x83, - 0x20,0xCD,0x00,0x83,0xEC,0xD1,0x00,0x83,0x08,0xD2,0x00,0x83, - 0x28,0xD2,0x00,0x83,0x44,0xD2,0x00,0x83,0x64,0xD2,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x6E,0x6F,0x20,0x73,0x79,0x73,0x43,0x6F,0x6E,0x74,0x61,0x63, - 0x74,0x00,0x00,0x00,0x6E,0x6F,0x20,0x73,0x79,0x73,0x4E,0x61, - 0x6D,0x65,0x00,0x00,0x6E,0x6F,0x20,0x73,0x79,0x73,0x4C,0x6F, - 0x63,0x61,0x74,0x69,0x6F,0x6E,0x00,0x00,0x25,0x73,0x3A,0x25, - 0x64,0x3A,0x20,0x66,0x61,0x69,0x6C,0x65,0x64,0x20,0x61,0x73, - 0x73,0x65,0x72,0x74,0x69,0x6F,0x6E,0x20,0x60,0x25,0x73,0x27, - 0x0A,0x00,0x00,0x00,0x6E,0x75,0x6D,0x72,0x65,0x67,0x73,0x20, - 0x3C,0x3D,0x20,0x4E,0x56,0x52,0x41,0x4D,0x5F,0x4E,0x52,0x45, - 0x47,0x53,0x20,0x26,0x26,0x20,0x6E,0x75,0x6D,0x72,0x65,0x67, - 0x73,0x20,0x3E,0x20,0x30,0x00,0x00,0x00,0x66,0x69,0x72,0x73, - 0x74,0x72,0x65,0x67,0x20,0x3C,0x20,0x4E,0x56,0x52,0x41,0x4D, - 0x5F,0x4E,0x52,0x45,0x47,0x53,0x20,0x26,0x26,0x20,0x66,0x69, - 0x72,0x73,0x74,0x72,0x65,0x67,0x20,0x3E,0x3D,0x20,0x30,0x00, - 0x00,0x00,0x00,0x00,0x0A,0x0D,0x45,0x52,0x52,0x4F,0x52,0x20, - 0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xDE,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0xE0,0xE5,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0xE8,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83, - 0xF4,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83, - 0xF4,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83, - 0xF4,0xE5,0x00,0x83,0xF4,0xE5,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0xE8,0xDE,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0xF4,0xE3,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x34,0xDF,0x00,0x83,0x28,0xDF,0x00,0x83,0x74,0xE1,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x14,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x50,0xE0,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0x28,0xE6,0x00,0x83,0x10,0xE5,0x00,0x83, - 0x28,0xE6,0x00,0x83,0xA4,0xE2,0x00,0x83,0x28,0xE6,0x00,0x83, - 0x28,0xE6,0x00,0x83,0xC0,0xE3,0x00,0x83,0x18,0x18,0x01,0x83, - 0xB4,0x19,0x01,0x83,0x68,0x18,0x01,0x83,0x54,0x19,0x01,0x83, - 0xD0,0x18,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83,0xB4,0x19,0x01,0x83, - 0xB4,0x19,0x01,0x83,0x60,0x19,0x01,0x83,0x3C,0x18,0x01,0x83, - 0x3C,0x18,0x01,0x83,0x3C,0x18,0x01,0x83,0x68,0x18,0x01,0x83, - 0x68,0x18,0x01,0x83,0xB4,0x19,0x01,0x83,0x3C,0x18,0x01,0x83, - 0xE4,0x1B,0x01,0x83,0xA8,0x1C,0x01,0x83,0x08,0x1C,0x01,0x83, - 0xB0,0x1C,0x01,0x83,0x38,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xA8,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83,0x60,0x1C,0x01,0x83, - 0xE4,0x1B,0x01,0x83,0xE4,0x1B,0x01,0x83,0xE4,0x1B,0x01,0x83, - 0x08,0x1C,0x01,0x83,0x08,0x1C,0x01,0x83,0xA8,0x1C,0x01,0x83, - 0xE4,0x1B,0x01,0x83,0x4C,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83, - 0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83, - 0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83, - 0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83, - 0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83,0x30,0x1F,0x01,0x83, - 0x28,0x1F,0x01,0x83,0x10,0x1F,0x01,0x83,0x20,0x1F,0x01,0x83, - 0x18,0x1F,0x01,0x83,0x10,0x1F,0x01,0x83,0x00,0x00,0x00,0x00, - 0x5C,0x20,0x01,0x83,0x64,0x20,0x01,0x83,0x64,0x20,0x01,0x83, - 0x64,0x20,0x01,0x83,0x64,0x20,0x01,0x83,0x5C,0x20,0x01,0x83, - 0x6C,0x20,0x01,0x83,0x6C,0x20,0x01,0x83,0x6C,0x20,0x01,0x83, - 0x6C,0x20,0x01,0x83,0x6C,0x20,0x01,0x83,0x5C,0x20,0x01,0x83, - 0x6C,0x20,0x01,0x83,0x00,0x00,0x00,0x00,0x04,0x26,0x01,0x83, - 0x28,0x26,0x01,0x83,0x10,0x26,0x01,0x83,0x1C,0x26,0x01,0x83, - 0x34,0x26,0x01,0x83,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00, - 0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x48,0x1E,0x00,0x83,0x48,0x1E,0x00,0x83, - 0xD8,0x28,0x00,0x83,0x00,0x1E,0x00,0x83,0x6C,0x1E,0x00,0x83, - 0x6C,0x1E,0x00,0x83,0x6C,0x1E,0x00,0x83,0x6C,0x1E,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xF4,0x70,0x01,0x83,0xAC,0x70,0x01,0x83, - 0x64,0x70,0x01,0x83,0x18,0x70,0x01,0x83,0xCC,0x6F,0x01,0x83, - 0x8C,0x6F,0x01,0x83,0x58,0x6F,0x01,0x83,0x14,0x6F,0x01,0x83, - 0xC8,0x6E,0x01,0x83,0x80,0x6E,0x01,0x83,0x30,0x6E,0x01,0x83, - 0xE8,0x6D,0x01,0x83,0x9C,0x6D,0x01,0x83,0x58,0x6D,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48, - 0x48,0x00,0x00,0x00,0x00,0xFF,0x55,0xAA,0x00,0x00,0x00,0x00, - 0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x01, - 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x04,0x03,0x02,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00, - 0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x14,0x00,0x0F,0x00, - 0x01,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x64,0x00,0x00,0x00, - 0x30,0xB3,0x01,0x83,0x2C,0xB3,0x01,0x83,0x28,0xB3,0x01,0x83, - 0x24,0xB3,0x01,0x83,0x20,0xB3,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0xE0,0xC0,0x00,0x83, - 0x44,0xBF,0x00,0x83,0xE0,0x7B,0x01,0x83,0x01,0x00,0x04,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x18,0x83,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x1C,0xC1,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x98,0xB5,0x01,0x83,0x01,0x00,0x06,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x54,0x83,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x24,0xC1,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x04,0x01,0x00,0xA3,0x01,0x00,0x43,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x90,0x83,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x48,0xC1,0x00,0x83, - 0x98,0xC1,0x00,0x83,0x00,0xF5,0x02,0x83,0x01,0x00,0x04,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0xCC,0x83,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x48,0xC1,0x00,0x83, - 0xC0,0xC1,0x00,0x83,0x10,0xF5,0x02,0x83,0x01,0x00,0x04,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x08,0x84,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x48,0xC1,0x00,0x83, - 0xE8,0xC1,0x00,0x83,0x20,0xF5,0x02,0x83,0x01,0x00,0x04,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x44,0x84,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x10,0xC2,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x02,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x80,0x84,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x2C,0x83,0x01,0x83,0x02,0x00,0x00,0x00, - 0x68,0x83,0x01,0x83,0x03,0x00,0x00,0x00,0xA4,0x83,0x01,0x83, - 0x04,0x00,0x00,0x00,0xE0,0x83,0x01,0x83,0x05,0x00,0x00,0x00, - 0x1C,0x84,0x01,0x83,0x06,0x00,0x00,0x00,0x58,0x84,0x01,0x83, - 0x07,0x00,0x00,0x00,0x94,0x84,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0x10,0xB6,0x01,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xFC,0x84,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0xFC,0x7B,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x06,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0xDC,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x42,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x04,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x84,0xC6,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x43,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01, - 0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x42,0x01,0x54,0xC5,0x00,0x83,0x24,0xC2,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x01,0x54,0xC5,0x00,0x83, - 0x24,0xC2,0x00,0x83,0x4C,0xBF,0x00,0x83,0xEC,0xC5,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x38,0x85,0x01,0x83,0x02,0x00,0x00,0x00,0x60,0x85,0x01,0x83, - 0x03,0x00,0x00,0x00,0x88,0x85,0x01,0x83,0x04,0x00,0x00,0x00, - 0xB0,0x85,0x01,0x83,0x05,0x00,0x00,0x00,0xD8,0x85,0x01,0x83, - 0x06,0x00,0x00,0x00,0x00,0x86,0x01,0x83,0x07,0x00,0x00,0x00, - 0x28,0x86,0x01,0x83,0x08,0x00,0x00,0x00,0x50,0x86,0x01,0x83, - 0x09,0x00,0x00,0x00,0x78,0x86,0x01,0x83,0x0A,0x00,0x00,0x00, - 0xA0,0x86,0x01,0x83,0x0B,0x00,0x00,0x00,0xC8,0x86,0x01,0x83, - 0x0C,0x00,0x00,0x00,0xF0,0x86,0x01,0x83,0x0D,0x00,0x00,0x00, - 0x18,0x87,0x01,0x83,0x0E,0x00,0x00,0x00,0x40,0x87,0x01,0x83, - 0x0F,0x00,0x00,0x00,0x68,0x87,0x01,0x83,0x10,0x00,0x00,0x00, - 0x90,0x87,0x01,0x83,0x11,0x00,0x00,0x00,0xB8,0x87,0x01,0x83, - 0x12,0x00,0x00,0x00,0xE0,0x87,0x01,0x83,0x13,0x00,0x00,0x00, - 0x08,0x88,0x01,0x83,0x14,0x00,0x00,0x00,0x30,0x88,0x01,0x83, - 0x15,0x00,0x00,0x00,0x58,0x88,0x01,0x83,0x16,0x00,0x00,0x00, - 0x80,0x88,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xE0,0xB3,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x85,0x01,0x83, - 0x02,0x00,0x00,0x00,0xE8,0xB3,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x10,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x02,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x88,0x89,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0xB0,0xF3,0x02,0x83, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xC4,0x89,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xB4,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x00,0x8A,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xB8,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x3C,0x8A,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xBC,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x78,0x8A,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xC0,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xB4,0x8A,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xC4,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xF0,0x8A,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xC8,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x2C,0x8B,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xCC,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x68,0x8B,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xD0,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xA4,0x8B,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xD4,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xE0,0x8B,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xD8,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x1C,0x8C,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0xDC,0xF3,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x58,0x8C,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xE0,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x94,0x8C,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xE4,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xD0,0x8C,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xE8,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x0C,0x8D,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xEC,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x48,0x8D,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xF0,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x84,0x8D,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83,0xF4,0xF3,0x02,0x83, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xC0,0x8D,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x01,0xD4,0xBE,0x00,0x83, - 0xF8,0xC6,0x00,0x83,0x4C,0xBF,0x00,0x83,0x18,0xC8,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0xD4,0xBE,0x00,0x83,0xF8,0xC6,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0x18,0xC8,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x40,0x01,0xD4,0xBE,0x00,0x83,0xF8,0xC6,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x18,0xC8,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83, - 0xF8,0xC6,0x00,0x83,0x4C,0xBF,0x00,0x83,0x18,0xC8,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0xD4,0xBE,0x00,0x83,0xF8,0xC6,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0x18,0xC8,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xFC,0x8D,0x01,0x83,0x02,0x00,0x00,0x00, - 0x24,0x8E,0x01,0x83,0x03,0x00,0x00,0x00,0x4C,0x8E,0x01,0x83, - 0x04,0x00,0x00,0x00,0x74,0x8E,0x01,0x83,0x05,0x00,0x00,0x00, - 0x9C,0x8E,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xF8,0xB3,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xB0,0xC8,0x00,0x83,0xB8,0xC8,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x40,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x04,0x8F,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x40,0x8F,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x7C,0x8F,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xB8,0x8F,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xF4,0x8F,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x30,0x90,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xB0,0xC8,0x00,0x83,0xB8,0xC8,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x40,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x6C,0x90,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xA8,0x90,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xE4,0x90,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x20,0x91,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0xB0,0xC8,0x00,0x83,0xB8,0xC8,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x40,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x5C,0x91,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x98,0x91,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x1C,0xC1,0x00,0x83,0x44,0xBF,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x06,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xD4,0x91,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x18,0x8F,0x01,0x83, - 0x02,0x00,0x00,0x00,0x54,0x8F,0x01,0x83,0x03,0x00,0x00,0x00, - 0x90,0x8F,0x01,0x83,0x04,0x00,0x00,0x00,0xCC,0x8F,0x01,0x83, - 0x05,0x00,0x00,0x00,0x08,0x90,0x01,0x83,0x06,0x00,0x00,0x00, - 0x44,0x90,0x01,0x83,0x07,0x00,0x00,0x00,0x80,0x90,0x01,0x83, - 0x08,0x00,0x00,0x00,0xBC,0x90,0x01,0x83,0x09,0x00,0x00,0x00, - 0xF8,0x90,0x01,0x83,0x0A,0x00,0x00,0x00,0x34,0x91,0x01,0x83, - 0x0B,0x00,0x00,0x00,0x70,0x91,0x01,0x83,0x0C,0x00,0x00,0x00, - 0xAC,0x91,0x01,0x83,0x0D,0x00,0x00,0x00,0xE8,0x91,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x08,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x18,0xC2,0x00,0x83, - 0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x90,0x92,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0xE0,0xC0,0x00,0x83, - 0xDC,0xC8,0x00,0x83,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0xCC,0x92,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0xB0,0xC8,0x00,0x83, - 0xB8,0xC8,0x00,0x83,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x08,0x93,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x18,0xC2,0x00,0x83, - 0xDC,0xC6,0x00,0x83,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x44,0x93,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xA4,0x92,0x01,0x83,0x02,0x00,0x00,0x00, - 0xE0,0x92,0x01,0x83,0x03,0x00,0x00,0x00,0x1C,0x93,0x01,0x83, - 0x04,0x00,0x00,0x00,0x58,0x93,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x18,0xB4,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xF8,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xB8,0x93,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x9C,0x89,0x01,0x83,0x02,0x00,0x00,0x00,0xD8,0x89,0x01,0x83, - 0x03,0x00,0x00,0x00,0x14,0x8A,0x01,0x83,0x04,0x00,0x00,0x00, - 0x50,0x8A,0x01,0x83,0x05,0x00,0x00,0x00,0x8C,0x8A,0x01,0x83, - 0x06,0x00,0x00,0x00,0xC8,0x8A,0x01,0x83,0x07,0x00,0x00,0x00, - 0x04,0x8B,0x01,0x83,0x08,0x00,0x00,0x00,0x40,0x8B,0x01,0x83, - 0x09,0x00,0x00,0x00,0x7C,0x8B,0x01,0x83,0x0A,0x00,0x00,0x00, - 0xB8,0x8B,0x01,0x83,0x0B,0x00,0x00,0x00,0xF4,0x8B,0x01,0x83, - 0x0C,0x00,0x00,0x00,0x30,0x8C,0x01,0x83,0x0D,0x00,0x00,0x00, - 0x6C,0x8C,0x01,0x83,0x0E,0x00,0x00,0x00,0xA8,0x8C,0x01,0x83, - 0x0F,0x00,0x00,0x00,0xE4,0x8C,0x01,0x83,0x10,0x00,0x00,0x00, - 0x20,0x8D,0x01,0x83,0x11,0x00,0x00,0x00,0x5C,0x8D,0x01,0x83, - 0x12,0x00,0x00,0x00,0x98,0x8D,0x01,0x83,0x13,0x00,0x00,0x00, - 0xD4,0x8D,0x01,0x83,0x14,0x00,0x00,0x00,0x00,0xB4,0x01,0x83, - 0x15,0x00,0x00,0x00,0x10,0xB4,0x01,0x83,0x16,0x00,0x00,0x00, - 0x20,0xB4,0x01,0x83,0x17,0x00,0x00,0x00,0xCC,0x93,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x40,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xB4,0x94,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x44,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xF0,0x94,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x48,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x2C,0x95,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x4C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x68,0x95,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x50,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xA4,0x95,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x54,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xE0,0x95,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x58,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x1C,0x96,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x5C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x58,0x96,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x60,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x94,0x96,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x64,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xD0,0x96,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x68,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x0C,0x97,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x6C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x48,0x97,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x70,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x84,0x97,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x74,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xC0,0x97,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x78,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xFC,0x97,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x7C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x38,0x98,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x80,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x74,0x98,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x84,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xB0,0x98,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x88,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xEC,0x98,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x8C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x28,0x99,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x90,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x64,0x99,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x94,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xA0,0x99,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x98,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xDC,0x99,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x9C,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x18,0x9A,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xA0,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x54,0x9A,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xA4,0xF3,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x90,0x9A,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0xC8,0x94,0x01,0x83,0x02,0x00,0x00,0x00,0x04,0x95,0x01,0x83, - 0x03,0x00,0x00,0x00,0x40,0x95,0x01,0x83,0x04,0x00,0x00,0x00, - 0x7C,0x95,0x01,0x83,0x05,0x00,0x00,0x00,0xB8,0x95,0x01,0x83, - 0x06,0x00,0x00,0x00,0xF4,0x95,0x01,0x83,0x07,0x00,0x00,0x00, - 0x30,0x96,0x01,0x83,0x08,0x00,0x00,0x00,0x6C,0x96,0x01,0x83, - 0x09,0x00,0x00,0x00,0xA8,0x96,0x01,0x83,0x0A,0x00,0x00,0x00, - 0xE4,0x96,0x01,0x83,0x0B,0x00,0x00,0x00,0x20,0x97,0x01,0x83, - 0x0C,0x00,0x00,0x00,0x5C,0x97,0x01,0x83,0x0D,0x00,0x00,0x00, - 0x98,0x97,0x01,0x83,0x0E,0x00,0x00,0x00,0xD4,0x97,0x01,0x83, - 0x0F,0x00,0x00,0x00,0x10,0x98,0x01,0x83,0x10,0x00,0x00,0x00, - 0x4C,0x98,0x01,0x83,0x11,0x00,0x00,0x00,0x88,0x98,0x01,0x83, - 0x12,0x00,0x00,0x00,0xC4,0x98,0x01,0x83,0x13,0x00,0x00,0x00, - 0x00,0x99,0x01,0x83,0x14,0x00,0x00,0x00,0x3C,0x99,0x01,0x83, - 0x15,0x00,0x00,0x00,0x78,0x99,0x01,0x83,0x16,0x00,0x00,0x00, - 0xB4,0x99,0x01,0x83,0x17,0x00,0x00,0x00,0xF0,0x99,0x01,0x83, - 0x18,0x00,0x00,0x00,0x2C,0x9A,0x01,0x83,0x19,0x00,0x00,0x00, - 0x68,0x9A,0x01,0x83,0x1A,0x00,0x00,0x00,0xA4,0x9A,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x20,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xA4,0x9B,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x24,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xE0,0x9B,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x28,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x1C,0x9C,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x2C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x58,0x9C,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xB0,0xC8,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xDC,0x05,0x00,0xA3,0x01,0x00,0x40,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x94,0x9C,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x10,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xA1,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xD0,0x9C,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0xA8,0x9C,0x01,0x83,0x02,0x00,0x00,0x00,0xE4,0x9C,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x38,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xB8,0x9B,0x01,0x83,0x02,0x00,0x00,0x00, - 0xF4,0x9B,0x01,0x83,0x03,0x00,0x00,0x00,0x30,0x9C,0x01,0x83, - 0x04,0x00,0x00,0x00,0x6C,0x9C,0x01,0x83,0x05,0x00,0x00,0x00, - 0x40,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x30,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x6C,0x9D,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x40,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xA8,0x9D,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x44,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xE4,0x9D,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x34,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x20,0x9E,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x38,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x5C,0x9E,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x3C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x98,0x9E,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x4C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xD4,0x9E,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x50,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x10,0x9F,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x54,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x4C,0x9F,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x58,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x88,0x9F,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x5C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xC4,0x9F,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x60,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x00,0xA0,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x64,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x3C,0xA0,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x68,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x78,0xA0,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x6C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xB4,0xA0,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x70,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xF0,0xA0,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x74,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x2C,0xA1,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x78,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x68,0xA1,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x7C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xA4,0xA1,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x80,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xE0,0xA1,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x84,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x1C,0xA2,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x8C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x58,0xA2,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x90,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x94,0xA2,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x94,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xD0,0xA2,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x98,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x0C,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x9C,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x48,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x0C,0xC9,0x00,0x83,0x44,0xBF,0x00,0x83, - 0xA0,0xF4,0x02,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x84,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x18,0xC9,0x00,0x83,0x3C,0xC9,0x00,0x83, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xC0,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x80,0x9D,0x01,0x83,0x02,0x00,0x00,0x00,0xBC,0x9D,0x01,0x83, - 0x03,0x00,0x00,0x00,0xF8,0x9D,0x01,0x83,0x04,0x00,0x00,0x00, - 0x34,0x9E,0x01,0x83,0x05,0x00,0x00,0x00,0x70,0x9E,0x01,0x83, - 0x06,0x00,0x00,0x00,0xAC,0x9E,0x01,0x83,0x08,0x00,0x00,0x00, - 0xE8,0x9E,0x01,0x83,0x09,0x00,0x00,0x00,0x24,0x9F,0x01,0x83, - 0x0A,0x00,0x00,0x00,0x60,0x9F,0x01,0x83,0x0B,0x00,0x00,0x00, - 0x9C,0x9F,0x01,0x83,0x0C,0x00,0x00,0x00,0xD8,0x9F,0x01,0x83, - 0x0D,0x00,0x00,0x00,0x14,0xA0,0x01,0x83,0x0E,0x00,0x00,0x00, - 0x50,0xA0,0x01,0x83,0x0F,0x00,0x00,0x00,0x8C,0xA0,0x01,0x83, - 0x10,0x00,0x00,0x00,0xC8,0xA0,0x01,0x83,0x11,0x00,0x00,0x00, - 0x04,0xA1,0x01,0x83,0x12,0x00,0x00,0x00,0x40,0xA1,0x01,0x83, - 0x13,0x00,0x00,0x00,0x7C,0xA1,0x01,0x83,0x14,0x00,0x00,0x00, - 0xB8,0xA1,0x01,0x83,0x15,0x00,0x00,0x00,0xF4,0xA1,0x01,0x83, - 0x16,0x00,0x00,0x00,0x30,0xA2,0x01,0x83,0x18,0x00,0x00,0x00, - 0x6C,0xA2,0x01,0x83,0x19,0x00,0x00,0x00,0xA8,0xA2,0x01,0x83, - 0x1A,0x00,0x00,0x00,0xE4,0xA2,0x01,0x83,0x1B,0x00,0x00,0x00, - 0x20,0xA3,0x01,0x83,0x1C,0x00,0x00,0x00,0x5C,0xA3,0x01,0x83, - 0x1D,0x00,0x00,0x00,0x98,0xA3,0x01,0x83,0x1E,0x00,0x00,0x00, - 0xD4,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x60,0xC9,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x8A,0xEF,0x02,0x83,0x01,0x00,0x04,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0xE4,0xA4,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x18,0xC2,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x08,0xB6,0x01,0x83,0x01,0x00,0x02,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x20,0xA5,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83,0x10,0xC2,0x00,0x83, - 0x44,0xBF,0x00,0x83,0x02,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83, - 0xE4,0x19,0x01,0x83,0x5C,0xA5,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83,0x74,0xC9,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x70,0xCA,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83, - 0x74,0xC9,0x00,0x83,0x4C,0xBF,0x00,0x83,0x70,0xCA,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x01, - 0xD4,0xBE,0x00,0x83,0x74,0xC9,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0x70,0xCA,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0xD4,0xBE,0x00,0x83,0x74,0xC9,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x70,0xCA,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0xD4,0xBE,0x00,0x83, - 0x74,0xC9,0x00,0x83,0x4C,0xBF,0x00,0x83,0x70,0xCA,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x98,0xA5,0x01,0x83,0x02,0x00,0x00,0x00,0xC0,0xA5,0x01,0x83, - 0x03,0x00,0x00,0x00,0xE8,0xA5,0x01,0x83,0x04,0x00,0x00,0x00, - 0x10,0xA6,0x01,0x83,0x05,0x00,0x00,0x00,0x38,0xA6,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x60,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xF8,0xA4,0x01,0x83,0x02,0x00,0x00,0x00, - 0x34,0xA5,0x01,0x83,0x03,0x00,0x00,0x00,0x70,0xA5,0x01,0x83, - 0x04,0x00,0x00,0x00,0x68,0xB4,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x10,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0x03,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xC8,0xA6,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0xDC,0xC6,0x00,0x83,0x88,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x04,0xA7,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x14,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x43,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x40,0xA7,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x14,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x7C,0xA7,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x1C,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x88,0xEF,0x02,0x83, - 0x01,0x00,0x04,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xB8,0xA7,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0x90,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xF4,0xA7,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x18,0xC2,0x00,0x83,0x44,0xBF,0x00,0x83,0x94,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x30,0xA8,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x98,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x6C,0xA8,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x9A,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xA8,0xA8,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0xA6,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xE4,0xA8,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0x44,0xBF,0x00,0x83,0x9C,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x01,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x20,0xA9,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0xDC,0xC6,0x00,0x83,0x9E,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x5C,0xA9,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0xDC,0xC6,0x00,0x83,0xA0,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0x98,0xA9,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83,0x64,0x10,0x01,0x83, - 0x08,0xCB,0x00,0x83,0xDC,0xC6,0x00,0x83,0xA2,0xEF,0x02,0x83, - 0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83,0xA0,0x1A,0x01,0x83, - 0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83,0xD4,0xA9,0x01,0x83, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0x60,0xCD,0x00,0x83, - 0x30,0xCB,0x00,0x83,0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03, - 0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83,0xAC,0xCE,0x00,0x83, - 0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03,0x60,0xCD,0x00,0x83, - 0x30,0xCB,0x00,0x83,0xAC,0xCE,0x00,0x83,0x14,0xCE,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x03, - 0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83,0xAC,0xCE,0x00,0x83, - 0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x04,0x01,0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0x60,0xCD,0x00,0x83, - 0x30,0xCB,0x00,0x83,0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x01, - 0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x04,0x01,0x60,0xCD,0x00,0x83,0x30,0xCB,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0x60,0xCD,0x00,0x83, - 0x30,0xCB,0x00,0x83,0x4C,0xBF,0x00,0x83,0x14,0xCE,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x10,0xAA,0x01,0x83,0x02,0x00,0x00,0x00,0x38,0xAA,0x01,0x83, - 0x03,0x00,0x00,0x00,0x60,0xAA,0x01,0x83,0x04,0x00,0x00,0x00, - 0x88,0xAA,0x01,0x83,0x05,0x00,0x00,0x00,0xB0,0xAA,0x01,0x83, - 0x06,0x00,0x00,0x00,0xD8,0xAA,0x01,0x83,0x07,0x00,0x00,0x00, - 0x00,0xAB,0x01,0x83,0x08,0x00,0x00,0x00,0x28,0xAB,0x01,0x83, - 0x09,0x00,0x00,0x00,0x50,0xAB,0x01,0x83,0x0A,0x00,0x00,0x00, - 0x78,0xAB,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x78,0xB4,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xDC,0xA6,0x01,0x83, - 0x02,0x00,0x00,0x00,0x18,0xA7,0x01,0x83,0x03,0x00,0x00,0x00, - 0x54,0xA7,0x01,0x83,0x04,0x00,0x00,0x00,0x90,0xA7,0x01,0x83, - 0x05,0x00,0x00,0x00,0xCC,0xA7,0x01,0x83,0x06,0x00,0x00,0x00, - 0x08,0xA8,0x01,0x83,0x07,0x00,0x00,0x00,0x44,0xA8,0x01,0x83, - 0x08,0x00,0x00,0x00,0x80,0xA8,0x01,0x83,0x09,0x00,0x00,0x00, - 0xBC,0xA8,0x01,0x83,0x0A,0x00,0x00,0x00,0xF8,0xA8,0x01,0x83, - 0x0B,0x00,0x00,0x00,0x34,0xA9,0x01,0x83,0x0C,0x00,0x00,0x00, - 0x70,0xA9,0x01,0x83,0x0D,0x00,0x00,0x00,0xAC,0xA9,0x01,0x83, - 0x0E,0x00,0x00,0x00,0xE8,0xA9,0x01,0x83,0x0F,0x00,0x00,0x00, - 0x80,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0xEC,0xC6,0x00,0x83,0x44,0xBF,0x00,0x83, - 0x70,0xB6,0x01,0x83,0x01,0x00,0x41,0x01,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0x90,0xAC,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xBE,0x00,0x83, - 0x64,0x10,0x01,0x83,0x18,0xC2,0x00,0x83,0xDC,0xC6,0x00,0x83, - 0x8C,0x01,0x00,0xA3,0x01,0x00,0x02,0x03,0xF0,0x16,0x01,0x83, - 0xA0,0x1A,0x01,0x83,0x70,0x1B,0x01,0x83,0xE4,0x19,0x01,0x83, - 0xCC,0xAC,0x01,0x83,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x01, - 0xD4,0xBE,0x00,0x83,0xD0,0xCF,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xDC,0xD0,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83,0xD0,0xCF,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xDC,0xD0,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83, - 0xD0,0xCF,0x00,0x83,0x4C,0xBF,0x00,0x83,0xDC,0xD0,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x08,0xAD,0x01,0x83,0x02,0x00,0x00,0x00,0x30,0xAD,0x01,0x83, - 0x03,0x00,0x00,0x00,0x58,0xAD,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x98,0xB4,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x01, - 0xD4,0xBE,0x00,0x83,0x80,0xD1,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xA8,0xD2,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x02,0x01,0xD4,0xBE,0x00,0x83,0x80,0xD1,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xA8,0xD2,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01,0xD4,0xBE,0x00,0x83, - 0x80,0xD1,0x00,0x83,0x4C,0xBF,0x00,0x83,0xA8,0xD2,0x00,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x41,0x01, - 0xD4,0xBE,0x00,0x83,0x80,0xD1,0x00,0x83,0x4C,0xBF,0x00,0x83, - 0xA8,0xD2,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x41,0x01,0xD4,0xBE,0x00,0x83,0x80,0xD1,0x00,0x83, - 0x4C,0xBF,0x00,0x83,0xA8,0xD2,0x00,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xB0,0xAD,0x01,0x83, - 0x02,0x00,0x00,0x00,0xD8,0xAD,0x01,0x83,0x03,0x00,0x00,0x00, - 0x00,0xAE,0x01,0x83,0x04,0x00,0x00,0x00,0x28,0xAE,0x01,0x83, - 0x05,0x00,0x00,0x00,0x50,0xAE,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xA8,0xB4,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0xA4,0xAC,0x01,0x83,0x02,0x00,0x00,0x00,0xE0,0xAC,0x01,0x83, - 0x03,0x00,0x00,0x00,0xA0,0xB4,0x01,0x83,0x04,0x00,0x00,0x00, - 0xB0,0xB4,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x70,0xB4,0x01,0x83,0x02,0x00,0x00,0x00, - 0x88,0xB4,0x01,0x83,0x03,0x00,0x00,0x00,0x90,0xB4,0x01,0x83, - 0x04,0x00,0x00,0x00,0xB8,0xB4,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD8,0xB3,0x01,0x83, - 0x02,0x00,0x00,0x00,0xF0,0xB3,0x01,0x83,0x04,0x00,0x00,0x00, - 0x28,0xB4,0x01,0x83,0x05,0x00,0x00,0x00,0x30,0xB4,0x01,0x83, - 0x07,0x00,0x00,0x00,0x48,0xB4,0x01,0x83,0x0A,0x00,0x00,0x00, - 0x50,0xB4,0x01,0x83,0x0B,0x00,0x00,0x00,0x58,0xB4,0x01,0x83, - 0x11,0x00,0x00,0x00,0xC0,0xB4,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xC8,0xB4,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xE0,0xB4,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xF8,0xB4,0x01,0x83, - 0x02,0x00,0x00,0x00,0x00,0xB5,0x01,0x83,0x03,0x00,0x00,0x00, - 0x08,0xB5,0x01,0x83,0x04,0x00,0x00,0x00,0x10,0xB5,0x01,0x83, - 0x05,0x00,0x00,0x00,0x18,0xB5,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x28,0xB5,0x01,0x83,0x02,0x00,0x00,0x00,0x30,0xB5,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x38,0xB5,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x20,0xB5,0x01,0x83,0x02,0x00,0x00,0x00,0x40,0xB5,0x01,0x83, - 0x03,0x00,0x00,0x00,0x48,0xB5,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD0,0xB3,0x01,0x83, - 0x02,0x00,0x00,0x00,0xD0,0xB4,0x01,0x83,0x03,0x00,0x00,0x00, - 0xD8,0xB4,0x01,0x83,0x04,0x00,0x00,0x00,0xE8,0xB4,0x01,0x83, - 0x05,0x00,0x00,0x00,0xF0,0xB4,0x01,0x83,0x06,0x00,0x00,0x00, - 0x50,0xB5,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x58,0xB5,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x60,0xB5,0x01,0x83, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, - 0x68,0xB5,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x70,0xB5,0x01,0x83,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x70,0x75,0x62,0x6C,0x69,0x63,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x4E,0x4D,0x50, - 0x5F,0x74,0x72,0x61,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, - 0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x4C,0x01,0x00,0x00,0x05,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, - 0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xFF,0x55,0xAA,0x00,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55, - 0xAA,0xAA,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x23,0x29, - 0x20,0x43,0x6F,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28, - 0x63,0x29,0x20,0x31,0x39,0x38,0x36,0x20,0x2D,0x20,0x31,0x39, - 0x39,0x35,0x20,0x20,0x45,0x70,0x69,0x6C,0x6F,0x67,0x75,0x65, - 0x20,0x54,0x65,0x63,0x68,0x6E,0x6F,0x6C,0x6F,0x67,0x79,0x20, - 0x43,0x6F,0x72,0x70,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x0A, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x0A,0x00,0x00, - 0x4E,0x0A,0x00,0x00,0x53,0x0A,0x00,0x00,0x45,0x0A,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF,0x6D,0x61,0x69,0x6E,0x2E,0x63,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x74,0x69,0x6D,0x65,0x72,0x2E,0x63,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00, - 0x64,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x73,0x72,0x63,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00, - 0x64,0x73,0x74,0x20,0x00,0x00,0x00,0x00,0x20,0x25,0x30,0x32, - 0x58,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, - 0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30,0x30,0x30,0x30, - 0x30,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x20,0x00,0x00, - 0x25,0x78,0x0A,0x00,0x25,0x78,0x3A,0x09,0x25,0x78,0x0A,0x00, - 0x25,0x73,0x0A,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x55,0x4D,0x50, - 0x0A,0x00,0x00,0x00,0x25,0x30,0x32,0x78,0x20,0x00,0x00,0x00, - 0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x64,0x20,0x70, - 0x70,0x73,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,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x77,0x77,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x80,0xC2,0x00,0x00,0x00,0x00,0x00, - 0x01,0x80,0xC2,0x00,0x00,0x10,0x00,0x00,0x42,0x4C,0x4B,0x00, - 0x46,0x57,0x44,0x00,0x4C,0x52,0x4E,0x00,0x4C,0x49,0x53,0x00, - 0x44,0x49,0x53,0x00,0x48,0x45,0x4C,0x4C,0x4F,0x0A,0x00,0x00, - 0x74,0x63,0x20,0x65,0x78,0x70,0x0A,0x00,0x66,0x72,0x6F,0x6D, - 0x20,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x57,0x65,0x69,0x72, - 0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x50,0x41,0x44,0x25,0x64,0x0A,0x00,0x00,0xAA,0xAA,0x03,0x00, - 0x00,0x00,0x00,0x00,0x53,0x45,0x4E,0x54,0x21,0x0A,0x00,0x00, - 0x55,0x44,0x50,0x0A,0x00,0x00,0x00,0x00,0x49,0x43,0x4D,0x50, - 0x0A,0x00,0x00,0x00,0x45,0x43,0x48,0x4F,0x0A,0x00,0x00,0x00, - 0x49,0x50,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0x03,0x00, - 0x00,0x00,0x00,0x00,0x49,0x50,0x58,0x21,0x0A,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x83,0x01,0x83, - 0x00,0x00,0x00,0x00,0xBC,0x84,0x01,0x83,0x00,0x00,0x00,0x00, - 0xA8,0x88,0x01,0x83,0x00,0x00,0x00,0x00,0x60,0x89,0x01,0x83, - 0x00,0x00,0x00,0x00,0x70,0x89,0x01,0x83,0x00,0x00,0x00,0x00, - 0xC4,0x8E,0x01,0x83,0x00,0x00,0x00,0x00,0xF4,0x8E,0x01,0x83, - 0x00,0x00,0x00,0x00,0x10,0x92,0x01,0x83,0x00,0x00,0x00,0x00, - 0x80,0x92,0x01,0x83,0x00,0x00,0x00,0x00,0x80,0x93,0x01,0x83, - 0x00,0x00,0x00,0x00,0xA8,0x93,0x01,0x83,0x00,0x00,0x00,0x00, - 0xF4,0x93,0x01,0x83,0x00,0x00,0x00,0x00,0xCC,0x9A,0x01,0x83, - 0x00,0x00,0x00,0x00,0x0C,0x9D,0x01,0x83,0x00,0x00,0x00,0x00, - 0x24,0x9D,0x01,0x83,0x00,0x00,0x00,0x00,0x34,0x9D,0x01,0x83, - 0x00,0x00,0x00,0x00,0x64,0x9D,0x01,0x83,0x00,0x00,0x00,0x00, - 0xFC,0xA3,0x01,0x83,0x00,0x00,0x00,0x00,0x60,0xA6,0x01,0x83, - 0x00,0x00,0x00,0x00,0x90,0xA6,0x01,0x83,0x00,0x00,0x00,0x00, - 0xA0,0xA6,0x01,0x83,0x00,0x00,0x00,0x00,0xA0,0xAB,0x01,0x83, - 0x00,0x00,0x00,0x00,0xF8,0xAB,0x01,0x83,0x00,0x00,0x00,0x00, - 0x08,0xAC,0x01,0x83,0x00,0x00,0x00,0x00,0x88,0xAC,0x01,0x83, - 0x00,0x00,0x00,0x00,0x80,0xAD,0x01,0x83,0x00,0x00,0x00,0x00, - 0xA0,0xAD,0x01,0x83,0x00,0x00,0x00,0x00,0x78,0xAE,0x01,0x83, - 0x00,0x00,0x00,0x00,0xA8,0xAE,0x01,0x83,0x00,0x00,0x00,0x00, - 0xB8,0xAE,0x01,0x83,0x00,0x00,0x00,0x00,0xE0,0xAE,0x01,0x83, - 0x00,0x00,0x00,0x00,0x08,0xAF,0x01,0x83,0x00,0x00,0x00,0x00, - 0x50,0xAF,0x01,0x83,0x00,0x00,0x00,0x00,0x60,0xAF,0x01,0x83, - 0x00,0x00,0x00,0x00,0x68,0xAF,0x01,0x83,0x00,0x00,0x00,0x00, - 0x70,0xAF,0x01,0x83,0x00,0x00,0x00,0x00,0x80,0xAF,0x01,0x83, - 0x00,0x00,0x00,0x00,0x88,0xAF,0x01,0x83,0x00,0x00,0x00,0x00, - 0x90,0xAF,0x01,0x83,0x00,0x00,0x00,0x00,0x98,0xAF,0x01,0x83, - 0x00,0x00,0x00,0x00,0xA0,0xAF,0x01,0x83,0x00,0x00,0x00,0x00, - 0xA8,0xAF,0x01,0x83,0x00,0x00,0x00,0x00,0xB0,0xAF,0x01,0x83, - 0x00,0x00,0x00,0x00,0xE0,0xAF,0x01,0x83,0x00,0x00,0x00,0x00, - 0xE8,0xAF,0x01,0x83,0x00,0x00,0x00,0x00,0xF0,0xAF,0x01,0x83, - 0x00,0x00,0x00,0x00,0x08,0xB0,0x01,0x83,0x00,0x00,0x00,0x00, - 0x18,0xB0,0x01,0x83,0x00,0x00,0x00,0x00,0x20,0xB0,0x01,0x83, - 0x00,0x00,0x00,0x00,0x40,0xB0,0x01,0x83,0x00,0x00,0x00,0x00, - 0x78,0xB0,0x01,0x83,0x00,0x00,0x00,0x00,0x88,0xB0,0x01,0x83, - 0x00,0x00,0x00,0x00,0x98,0xB0,0x01,0x83,0x00,0x00,0x00,0x00, - 0xA8,0xB0,0x01,0x83,0xFF,0xFF,0xFF,0x00,0x73,0x65,0x74,0x5F, - 0x69,0x70,0x0A,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x0A,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x30,0xB1,0x01,0x83, - 0xFF,0xFF,0xFF,0xFF,0x6E,0x76,0x72,0x61,0x6D,0x2E,0x63,0x00, - 0x72,0x63,0x00,0x00,0x30,0x78,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + 213,5,192,8,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,64,40,35,41, + 101,115,52,104,46,98,105,110,32,32,32,32, + 32,32,49,46,48,32,48,48,47,48,48,47, + 57,52,0,64,40,35,41,67,111,112,121,114, + 105,103,104,116,32,49,57,57,53,44,32,68, + 105,103,105,32,73,110,116,101,114,110,97,116, + 105,111,110,97,108,46,32,32,65,108,108,32, + 82,105,103,104,116,115,32,82,101,115,101,114, + 118,101,100,46,0,0,0,0,97,5,192,8, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,0,16,0,0,0,0, + 0,0,0,0,8,0,224,3,0,0,0,0, + 148,255,189,39,16,0,161,175,20,0,162,175, + 24,0,163,175,28,0,164,175,32,0,165,175, + 36,0,166,175,40,0,167,175,44,0,168,175, + 48,0,169,175,52,0,170,175,56,0,171,175, + 60,0,172,175,64,0,173,175,68,0,174,175, + 72,0,175,175,76,0,184,175,80,0,185,175, + 88,0,190,175,92,0,191,175,0,112,8,64, + 18,72,0,0,16,80,0,0,0,96,11,64, + 84,0,168,175,96,0,169,175,100,0,170,175, + 104,0,171,175,33,56,0,1,0,131,24,60, + 0,1,24,39,0,0,8,143,0,0,0,0, + 1,0,8,33,0,0,8,175,0,104,5,64, + 0,96,6,64,124,0,168,48,212,255,0,21, + 0,0,0,0,36,64,166,0,0,255,8,49, + 27,0,0,17,0,0,0,0,130,65,8,0, + 2,131,9,60,33,72,40,1,0,220,41,141, + 66,64,8,0,2,131,10,60,33,80,72,1, + 0,224,74,141,0,0,0,0,38,80,70,1, + 1,255,74,49,33,40,192,0,38,48,202,0, + 0,96,134,64,66,64,8,0,2,131,4,60, + 33,32,136,0,0,226,132,144,9,248,32,1, + 0,0,0,0,104,0,166,143,0,0,0,0, + 0,96,134,64,0,104,5,64,227,255,0,16, + 0,0,0,0,104,0,168,143,96,0,169,143, + 100,0,170,143,0,0,0,0,0,96,136,64, + 19,0,32,1,17,0,64,1,20,0,162,143, + 24,0,163,143,28,0,164,143,32,0,165,143, + 36,0,166,143,40,0,167,143,44,0,168,143, + 48,0,169,143,52,0,170,143,56,0,171,143, + 60,0,172,143,64,0,173,143,68,0,174,143, + 72,0,175,143,76,0,184,143,80,0,185,143, + 88,0,190,143,92,0,191,143,0,0,0,0, + 84,0,186,143,16,0,161,143,108,0,189,39, + 8,0,64,3,16,0,0,66,0,96,26,64, + 0,0,0,0,255,255,27,60,254,0,123,55, + 0,0,0,0,36,208,91,3,0,0,0,0, + 0,96,154,64,0,0,0,0,0,112,26,64, + 0,0,0,0,16,0,0,66,0,0,0,0, + 8,0,64,3,0,0,0,0,255,255,8,36, + 133,255,0,17,0,0,0,0,1,0,8,37, + 130,255,0,21,0,0,0,0,255,255,8,36, + 33,8,0,1,126,255,40,20,0,0,0,0, + 1,0,33,36,123,255,32,20,0,0,0,0, + 255,255,2,36,120,255,72,20,0,0,0,0, + 1,0,66,36,117,255,64,20,0,0,0,0, + 255,255,3,36,114,255,104,20,0,0,0,0, + 1,0,99,36,111,255,96,20,0,0,0,0, + 255,255,4,36,108,255,136,20,0,0,0,0, + 1,0,132,36,105,255,128,20,0,0,0,0, + 255,255,5,36,102,255,168,20,0,0,0,0, + 1,0,165,36,99,255,160,20,0,0,0,0, + 255,255,6,36,96,255,200,20,0,0,0,0, + 1,0,198,36,93,255,192,20,0,0,0,0, + 255,255,7,36,90,255,232,20,0,0,0,0, + 1,0,231,36,87,255,224,20,0,0,0,0, + 255,255,9,36,84,255,40,21,0,0,0,0, + 1,0,41,37,81,255,32,21,0,0,0,0, + 255,255,10,36,78,255,72,21,0,0,0,0, + 1,0,74,37,75,255,64,21,0,0,0,0, + 255,255,11,36,72,255,104,21,0,0,0,0, + 1,0,107,37,69,255,96,21,0,0,0,0, + 255,255,12,36,66,255,136,21,0,0,0,0, + 1,0,140,37,63,255,128,21,0,0,0,0, + 255,255,13,36,60,255,168,21,0,0,0,0, + 1,0,173,37,57,255,160,21,0,0,0,0, + 255,255,14,36,54,255,200,21,0,0,0,0, + 1,0,206,37,51,255,192,21,0,0,0,0, + 255,255,15,36,48,255,232,21,0,0,0,0, + 1,0,239,37,45,255,224,21,0,0,0,0, + 255,255,24,36,42,255,8,23,0,0,0,0, + 1,0,24,39,39,255,0,23,0,0,0,0, + 255,255,16,36,36,255,8,22,0,0,0,0, + 1,0,16,38,33,255,0,22,0,0,0,0, + 255,255,17,36,30,255,40,22,0,0,0,0, + 1,0,49,38,27,255,32,22,0,0,0,0, + 255,255,18,36,24,255,72,22,0,0,0,0, + 1,0,82,38,21,255,64,22,0,0,0,0, + 255,255,19,36,18,255,104,22,0,0,0,0, + 1,0,115,38,15,255,96,22,0,0,0,0, + 255,255,20,36,12,255,136,22,0,0,0,0, + 1,0,148,38,9,255,128,22,0,0,0,0, + 255,255,21,36,6,255,168,22,0,0,0,0, + 1,0,181,38,3,255,160,22,0,0,0,0, + 255,255,22,36,0,255,200,22,0,0,0,0, + 1,0,214,38,253,254,192,22,0,0,0,0, + 255,255,23,36,250,254,232,22,0,0,0,0, + 1,0,247,38,247,254,224,22,0,0,0,0, + 255,255,26,36,244,254,72,23,0,0,0,0, + 1,0,90,39,241,254,64,23,0,0,0,0, + 255,255,27,36,238,254,104,23,0,0,0,0, + 1,0,123,39,235,254,96,23,0,0,0,0, + 255,255,28,36,232,254,136,23,0,0,0,0, + 1,0,156,39,229,254,128,23,0,0,0,0, + 255,255,29,36,226,254,168,23,0,0,0,0, + 1,0,189,39,223,254,160,23,0,0,0,0, + 255,255,30,36,220,254,200,23,0,0,0,0, + 1,0,222,39,217,254,192,23,0,0,0,0, + 255,255,31,36,214,254,232,23,0,0,0,0, + 1,0,255,39,211,254,224,23,0,0,0,0, + 0,131,24,60,0,1,24,39,0,32,1,60, + 37,192,1,3,0,96,8,64,0,0,0,0, + 1,0,1,60,37,64,1,1,0,96,136,64, + 33,16,0,0,165,165,3,60,165,165,99,52, + 0,128,1,60,0,0,35,172,0,128,9,60, + 0,0,41,141,0,0,0,0,0,96,10,64, + 0,0,0,0,8,0,1,60,36,80,65,1, + 29,0,64,21,0,0,0,0,27,0,105,20, + 0,0,0,0,0,1,2,36,0,128,1,60, + 33,8,34,0,0,0,32,172,64,16,2,0, + 1,0,1,60,1,0,33,52,43,8,65,0, + 248,255,32,20,0,0,0,0,255,255,3,36, + 0,128,1,60,0,0,35,172,0,1,2,36, + 0,128,3,60,33,24,98,0,0,0,99,140, + 0,0,0,0,7,0,96,20,0,0,0,0, + 64,16,2,0,1,0,1,60,1,0,33,52, + 43,8,65,0,245,255,32,20,0,0,0,0, + 0,96,128,64,0,0,0,0,84,0,2,175, + 0,96,8,64,0,0,0,0,3,0,1,60, + 37,64,1,1,0,96,136,64,33,16,0,0, + 165,165,3,60,165,165,99,52,0,128,1,60, + 0,0,35,172,0,128,9,60,0,0,41,141, + 0,0,0,0,0,96,10,64,0,0,0,0, + 8,0,1,60,36,80,65,1,29,0,64,21, + 0,0,0,0,27,0,105,20,0,0,0,0, + 0,1,2,36,0,128,1,60,33,8,34,0, + 0,0,32,172,64,16,2,0,1,0,1,60, + 1,0,33,52,43,8,65,0,248,255,32,20, + 0,0,0,0,255,255,3,36,0,128,1,60, + 0,0,35,172,0,1,2,36,0,128,3,60, + 33,24,98,0,0,0,99,140,0,0,0,0, + 7,0,96,20,0,0,0,0,64,16,2,0, + 1,0,1,60,1,0,33,52,43,8,65,0, + 245,255,32,20,0,0,0,0,0,96,128,64, + 0,0,0,0,88,0,2,175,88,0,9,143, + 0,0,0,0,17,0,32,17,0,0,0,0, + 0,0,0,0,3,0,2,60,0,0,0,0, + 0,96,130,64,0,128,8,60,37,72,40,1, + 0,0,0,161,4,0,0,161,8,0,0,161, + 12,0,0,161,16,0,0,161,20,0,0,161, + 24,0,0,161,32,0,8,37,247,255,9,21, + 252,255,0,161,84,0,9,143,0,0,0,0, + 17,0,32,17,0,0,0,0,0,0,0,0, + 1,0,2,60,0,0,0,0,0,96,130,64, + 0,128,8,60,37,72,40,1,0,0,0,161, + 4,0,0,161,8,0,0,161,12,0,0,161, + 16,0,0,161,20,0,0,161,24,0,0,161, + 32,0,8,37,247,255,9,21,252,255,0,161, + 32,0,8,60,0,96,136,64,0,104,128,64, + 0,131,2,60,152,28,66,36,255,31,9,60, + 255,255,41,53,36,16,73,0,0,128,9,60, + 37,16,73,0,8,0,64,0,0,0,0,0, + 2,131,8,60,224,210,8,37,252,255,1,36, + 36,64,1,1,3,131,9,60,124,18,41,37, + 252,255,1,36,36,72,33,1,0,0,10,36, + 0,0,10,173,254,255,9,21,4,0,8,37, + 3,131,8,60,128,18,8,37,252,255,1,36, + 36,64,1,1,31,131,9,60,252,255,41,53, + 252,255,1,36,36,72,33,1,237,254,10,60, + 175,222,74,53,0,0,10,173,254,255,9,21, + 4,0,8,37,2,131,8,60,0,212,8,37, + 252,255,1,36,36,64,1,1,2,131,9,60, + 252,219,41,37,252,255,1,36,36,72,33,1, + 173,222,10,60,239,190,74,53,0,0,10,173, + 254,255,9,21,4,0,8,37,0,4,8,60, + 0,0,0,0,0,24,136,64,0,0,0,0, + 2,131,29,60,0,220,189,39,0,0,30,36, + 2,131,28,60,51,8,192,12,16,78,156,39, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 232,255,189,39,16,0,191,175,8,128,132,39, + 15,63,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,16,0,191,175,12,128,132,39, + 15,63,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,16,0,191,175,16,128,132,39, + 15,63,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,16,0,191,175,20,128,132,39, + 15,63,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,24,133,131,143,6,0,2,36, + 20,0,191,175,6,0,98,20,16,0,176,175, + 7,162,3,60,228,0,99,52,1,0,2,36, + 184,7,192,8,0,0,98,172,0,128,130,151, + 5,162,16,60,0,1,66,52,120,63,192,12, + 0,0,2,166,0,128,130,151,0,0,0,0, + 255,254,66,48,0,0,2,166,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 232,255,189,39,33,16,128,0,3,0,64,4, + 16,0,191,175,254,255,2,60,192,29,66,52, + 0,163,4,60,96,1,132,52,0,163,1,60, + 92,1,34,172,0,163,1,60,104,1,38,172, + 204,63,192,12,8,0,6,36,228,63,192,12, + 255,255,4,36,204,7,192,8,0,0,0,0, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,216,255,189,39,1,0,6,36, + 3,131,2,60,143,18,66,36,240,255,3,36, + 36,16,67,0,0,163,1,60,120,1,34,172, + 0,163,2,60,120,1,66,140,33,56,0,0, + 32,0,191,175,28,0,177,175,24,0,176,175, + 16,0,160,175,0,163,1,60,116,1,34,172, + 0,163,3,60,112,1,99,140,0,163,2,60, + 116,1,66,140,0,163,4,60,116,1,132,140, + 35,136,98,0,84,64,192,12,33,40,32,2, + 13,0,64,16,0,0,0,0,1,131,4,60, + 96,127,132,36,24,128,144,39,33,40,0,2, + 1,131,7,60,128,127,231,36,15,63,192,12, + 148,0,6,36,1,0,4,36,33,40,0,2, + 188,7,192,12,148,0,6,36,2,0,33,6, + 33,16,32,2,3,0,34,38,131,136,2,0, + 0,163,2,60,116,1,66,140,0,0,0,0, + 6,0,32,18,237,254,3,60,175,222,99,52, + 0,0,67,172,255,255,49,38,253,255,32,22, + 4,0,66,36,32,0,191,143,28,0,177,143, + 24,0,176,143,8,0,224,3,40,0,189,39, + 224,255,189,39,15,0,132,36,240,255,3,36, + 20,0,177,175,0,163,17,60,120,1,49,142, + 0,163,2,60,120,1,66,140,36,32,131,0, + 33,16,68,0,0,163,1,60,120,1,34,172, + 0,163,3,60,120,1,99,140,0,163,2,60, + 112,1,66,140,24,0,191,175,43,16,67,0, + 13,0,64,16,16,0,176,175,1,131,4,60, + 96,127,132,36,24,128,144,39,33,40,0,2, + 1,131,7,60,176,127,231,36,15,63,192,12, + 171,0,6,36,1,0,4,36,33,40,0,2, + 188,7,192,12,171,0,6,36,33,16,32,2, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,216,255,189,39, + 3,0,2,60,7,162,3,60,36,0,191,175, + 32,0,176,175,0,163,1,60,92,1,32,172, + 0,0,99,140,79,17,66,52,32,0,98,20, + 87,0,4,60,76,0,8,60,64,75,8,53, + 250,2,7,60,128,240,231,52,7,162,6,60, + 152,0,198,52,67,73,3,60,67,3,99,52, + 7,162,4,60,48,1,132,52,7,162,5,60, + 0,1,165,52,6,0,2,36,24,133,130,175, + 0,163,1,60,204,5,34,172,4,0,2,36, + 50,133,130,167,2,0,2,36,48,133,130,167, + 1,0,2,36,20,133,130,167,119,119,2,36, + 28,133,136,175,16,133,135,175,0,0,195,172, + 0,0,130,172,67,1,2,36,0,0,162,172, + 109,8,192,8,31,131,4,60,240,188,132,52, + 189,2,3,60,128,231,99,52,4,0,2,36, + 24,133,130,175,0,163,1,60,204,5,34,172, + 0,8,2,36,50,133,130,167,0,4,2,36, + 48,133,130,167,0,2,2,36,20,133,130,167, + 28,133,132,175,16,133,131,175,31,131,4,60, + 0,240,132,52,24,133,131,143,0,131,2,60, + 0,163,1,60,108,1,34,172,0,163,1,60, + 112,1,36,172,1,0,99,36,32,133,131,175, + 210,7,192,12,0,0,0,0,0,163,2,60, + 132,1,66,140,0,128,128,167,2,0,64,20, + 85,0,2,36,0,128,130,167,0,163,2,60, + 136,1,66,140,0,0,0,0,5,0,64,20, + 0,0,0,0,0,128,130,151,0,0,0,0, + 170,0,66,52,0,128,130,167,0,128,131,151, + 5,162,2,60,0,0,67,164,188,64,192,12, + 1,0,16,36,2,131,4,60,0,220,132,36, + 2,131,5,60,0,224,165,36,2,131,6,60, + 0,226,198,36,8,0,7,36,2,131,2,60, + 112,154,66,36,16,0,162,175,2,131,2,60, + 144,154,66,36,20,0,162,175,2,131,2,60, + 176,154,66,36,24,0,162,175,0,131,2,60, + 36,30,66,36,0,163,1,60,92,1,48,172, + 240,64,192,12,28,0,162,175,0,163,3,60, + 124,1,99,140,40,133,128,175,2,0,98,40, + 7,0,64,16,2,0,2,36,18,0,97,4, + 255,255,2,36,7,0,98,16,0,0,0,0, + 196,8,192,8,0,0,0,0,16,0,98,16, + 0,0,0,0,196,8,192,8,0,0,0,0, + 24,133,133,143,1,131,4,60,15,63,192,12, + 208,127,132,36,0,163,1,60,112,25,192,12, + 124,1,32,172,207,8,192,8,0,0,0,0, + 211,8,192,12,0,0,0,0,207,8,192,8, + 0,0,0,0,40,133,144,175,31,10,192,12, + 0,0,0,0,207,8,192,8,0,0,0,0, + 1,131,4,60,96,127,132,36,24,128,144,39, + 33,40,0,2,32,128,135,39,15,63,192,12, + 58,1,6,36,1,0,4,36,33,40,0,2, + 188,7,192,12,58,1,6,36,36,0,191,143, + 32,0,176,143,8,0,224,3,40,0,189,39, + 192,255,189,39,56,0,191,175,52,0,181,175, + 48,0,180,175,44,0,179,175,40,0,178,175, + 36,0,177,175,180,10,192,12,32,0,176,175, + 33,32,0,0,2,0,2,36,0,163,1,60, + 244,57,192,12,92,1,34,172,3,0,2,36, + 0,163,1,60,0,12,192,12,92,1,34,172, + 1,0,4,36,4,0,2,36,0,163,1,60, + 34,11,192,12,92,1,34,172,5,0,2,36, + 0,163,1,60,92,1,34,172,0,163,19,60, + 124,1,115,142,0,163,3,60,160,1,99,140, + 1,0,98,46,80,133,130,175,0,128,2,60, + 5,0,98,20,0,0,0,0,32,133,130,143, + 0,0,0,0,252,8,192,8,255,255,66,36, + 32,133,130,143,0,0,0,0,84,133,130,175, + 130,11,192,12,0,0,0,0,33,32,64,0, + 2,0,5,36,232,3,6,36,0,131,7,60, + 196,37,231,36,156,11,192,12,16,0,160,175, + 35,35,192,12,0,0,0,0,6,0,2,36, + 0,163,1,60,84,35,192,12,92,1,34,172, + 7,0,2,36,0,163,1,60,141,47,192,12, + 92,1,34,172,8,0,2,36,0,163,1,60, + 120,50,192,12,92,1,34,172,9,0,2,36, + 0,163,1,60,92,1,34,172,0,163,2,60, + 240,5,66,140,0,0,0,0,8,0,64,16, + 10,0,2,36,0,163,4,60,240,5,132,140, + 13,8,192,12,0,0,0,0,0,163,1,60, + 244,5,34,172,10,0,2,36,0,163,1,60, + 92,1,34,172,157,15,192,12,1,0,21,36, + 2,131,2,60,192,246,66,36,33,160,64,0, + 80,133,131,143,11,0,2,36,0,163,1,60, + 92,1,34,172,100,0,2,36,0,163,1,60, + 92,1,34,172,84,133,130,143,64,26,3,0, + 33,136,116,0,64,18,2,0,33,144,84,0, + 0,163,2,60,8,1,66,140,0,0,0,0, + 1,0,66,36,0,163,1,60,8,1,34,172, + 0,163,2,60,8,1,66,140,0,163,2,60, + 124,1,66,140,0,0,0,0,14,0,83,16, + 0,0,0,0,4,0,64,16,33,152,64,0, + 80,133,128,175,76,9,192,8,0,0,0,0, + 80,133,149,175,2,131,4,60,163,23,192,12, + 192,246,132,36,80,133,130,143,0,0,0,0, + 64,18,2,0,33,136,84,0,0,163,2,60, + 0,6,66,140,0,0,0,0,3,0,64,24, + 33,128,32,2,239,15,192,12,0,0,0,0, + 43,16,18,2,11,0,64,16,33,32,0,2, + 151,18,192,12,10,0,5,36,27,22,192,12, + 33,32,0,2,142,22,192,12,33,32,0,2, + 0,2,16,38,43,16,18,2,247,255,64,20, + 33,32,0,2,184,11,192,12,0,0,0,0, + 54,9,192,8,0,0,0,0,56,0,191,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,64,0,189,39,4,128,130,143, + 232,255,189,39,20,0,191,175,16,0,176,175, + 1,0,67,36,4,128,131,175,255,255,3,36, + 4,0,67,20,255,31,4,60,0,163,1,60, + 8,1,32,172,255,31,4,60,255,255,132,52, + 0,163,16,60,0,163,2,60,8,1,66,140, + 208,132,131,143,220,5,16,54,35,16,67,0, + 0,163,1,60,16,1,34,172,2,131,2,60, + 192,246,66,36,36,16,68,0,0,160,3,60, + 37,16,67,0,0,163,3,60,8,1,99,140, + 28,0,68,140,0,0,5,142,3,131,2,60, + 20,18,66,140,208,132,131,175,36,133,132,175, + 18,0,162,16,0,163,4,60,99,59,192,12, + 220,5,132,52,255,0,5,60,255,0,165,52, + 0,255,6,60,0,0,4,142,0,255,198,52, + 0,20,4,0,2,28,4,0,37,16,67,0, + 2,26,2,0,36,24,101,0,0,18,2,0, + 36,16,70,0,37,24,98,0,176,133,132,175, + 184,133,131,175,0,163,16,60,16,6,16,54, + 0,0,3,142,3,131,2,60,68,18,66,140, + 0,0,0,0,18,0,98,16,0,163,4,60, + 119,59,192,12,16,6,132,52,255,0,5,60, + 255,0,165,52,0,255,6,60,0,0,4,142, + 0,255,198,52,0,20,4,0,2,28,4,0, + 37,16,67,0,2,26,2,0,36,24,101,0, + 0,18,2,0,36,16,70,0,37,24,98,0, + 196,133,132,175,192,133,131,175,0,163,16,60, + 224,5,16,54,0,0,3,142,3,131,2,60, + 24,18,66,140,0,0,0,0,18,0,98,16, + 0,163,4,60,139,59,192,12,224,5,132,52, + 255,0,5,60,255,0,165,52,0,255,6,60, + 0,0,4,142,0,255,198,52,0,20,4,0, + 2,28,4,0,37,16,67,0,2,26,2,0, + 36,24,101,0,0,18,2,0,36,16,70,0, + 37,24,98,0,188,133,132,175,180,133,131,175, + 44,133,131,143,0,163,2,60,144,1,66,140, + 0,0,0,0,5,0,98,16,0,0,0,0, + 0,163,4,60,144,1,132,140,159,59,192,12, + 0,0,0,0,0,163,3,60,140,1,99,140, + 3,131,2,60,64,18,66,140,0,0,0,0, + 5,0,98,16,0,0,0,0,0,163,4,60, + 140,1,132,140,51,60,192,12,0,0,0,0, + 44,133,130,143,0,0,0,0,3,0,64,16, + 0,0,0,0,116,38,192,12,0,0,0,0, + 164,7,192,12,0,0,0,0,36,128,130,143, + 0,0,0,0,1,0,66,36,36,128,130,175, + 60,0,66,40,8,0,64,20,0,0,0,0, + 3,131,2,60,24,18,66,140,36,128,128,175, + 3,0,64,16,0,0,0,0,222,48,192,12, + 0,0,0,0,0,163,2,60,48,1,66,140, + 0,0,0,0,20,0,64,16,0,0,0,0, + 0,163,1,60,48,1,32,172,0,163,1,60, + 16,1,32,172,0,163,1,60,20,1,32,172, + 0,163,1,60,24,1,32,172,0,163,1,60, + 28,1,32,172,0,163,1,60,32,1,32,172, + 0,163,1,60,36,1,32,172,0,163,1,60, + 40,1,32,172,0,163,1,60,201,13,192,12, + 44,1,32,172,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,216,255,189,39, + 36,0,191,175,32,0,178,175,28,0,177,175, + 180,10,192,12,24,0,176,175,33,32,0,0, + 2,0,2,36,0,163,1,60,244,57,192,12, + 92,1,34,172,3,0,2,36,0,163,1,60, + 0,12,192,12,92,1,34,172,1,0,4,36, + 4,0,2,36,0,163,1,60,34,11,192,12, + 92,1,34,172,32,133,131,143,5,0,2,36, + 0,163,1,60,92,1,34,172,80,133,128,175, + 84,133,131,175,130,11,192,12,0,0,0,0, + 33,32,64,0,2,0,5,36,232,3,6,36, + 0,131,7,60,196,37,231,36,156,11,192,12, + 16,0,160,175,0,163,2,60,240,5,66,140, + 0,0,0,0,8,0,64,16,10,0,2,36, + 0,163,4,60,240,5,132,140,13,8,192,12, + 0,0,0,0,0,163,1,60,244,5,34,172, + 10,0,2,36,0,163,1,60,92,1,34,172, + 100,0,2,36,80,133,131,143,2,131,4,60, + 192,246,132,36,0,163,1,60,92,1,34,172, + 84,133,130,143,64,26,3,0,33,144,100,0, + 64,18,2,0,33,136,68,0,0,163,2,60, + 8,1,66,140,33,128,64,2,1,0,66,36, + 0,163,1,60,8,1,34,172,0,163,2,60, + 8,1,66,140,43,16,17,2,11,0,64,16, + 33,32,0,2,151,18,192,12,10,0,5,36, + 27,22,192,12,33,32,0,2,142,22,192,12, + 33,32,0,2,0,2,16,38,43,16,17,2, + 247,255,64,20,33,32,0,2,184,11,192,12, + 0,0,0,0,91,10,192,8,0,0,0,0, + 36,0,191,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,40,0,189,39, + 4,128,130,143,232,255,189,39,16,0,191,175, + 1,0,67,36,4,128,131,175,255,255,3,36, + 4,0,67,20,255,31,4,60,0,163,1,60, + 8,1,32,172,255,31,4,60,0,163,2,60, + 8,1,66,140,212,132,131,143,255,255,132,52, + 35,16,67,0,0,163,1,60,16,1,34,172, + 2,131,2,60,192,246,66,36,36,16,68,0, + 0,160,3,60,37,16,67,0,0,163,3,60, + 8,1,99,140,28,0,66,140,212,132,131,175, + 36,133,130,175,164,7,192,12,0,0,0,0, + 0,163,2,60,48,1,66,140,0,0,0,0, + 20,0,64,16,0,0,0,0,0,163,1,60, + 48,1,32,172,0,163,1,60,16,1,32,172, + 0,163,1,60,20,1,32,172,0,163,1,60, + 24,1,32,172,0,163,1,60,28,1,32,172, + 0,163,1,60,32,1,32,172,0,163,1,60, + 36,1,32,172,0,163,1,60,40,1,32,172, + 0,163,1,60,201,13,192,12,44,1,32,172, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,224,255,189,39,24,0,191,175, + 20,0,177,175,120,63,192,12,16,0,176,175, + 52,0,2,36,4,162,1,60,12,0,34,160, + 120,63,192,12,232,3,16,36,28,133,130,143, + 0,0,0,0,27,0,80,0,2,0,0,22, + 0,0,0,0,13,0,7,0,18,16,0,0, + 4,162,17,60,120,63,192,12,0,0,34,162, + 28,133,130,143,0,0,0,0,27,0,80,0, + 2,0,0,22,0,0,0,0,13,0,7,0, + 18,16,0,0,33,40,0,0,33,32,0,0, + 6,162,3,60,2,18,2,0,0,0,34,162, + 1,0,2,36,0,163,1,60,4,1,32,172, + 0,0,98,172,2,131,1,60,33,8,36,0, + 8,245,32,172,1,0,165,36,22,0,162,44, + 250,255,64,20,20,0,132,36,31,131,4,60, + 0,240,132,52,52,128,131,143,1,0,2,36, + 68,133,128,175,48,128,130,175,64,133,128,175, + 32,131,1,60,252,239,36,172,8,0,96,16, + 31,131,5,60,252,239,165,52,31,131,6,60, + 1,131,4,60,224,127,132,36,15,63,192,12, + 0,240,198,52,52,128,128,175,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,16,0,176,175, + 116,0,2,36,20,0,191,175,4,162,1,60, + 12,0,34,160,130,63,192,12,33,128,128,0, + 4,162,1,60,4,0,48,160,130,63,192,12, + 3,130,16,0,4,162,1,60,130,63,192,12, + 4,0,48,160,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,224,255,189,39, + 64,0,2,36,24,0,191,175,20,0,177,175, + 16,0,176,175,4,162,1,60,130,63,192,12, + 12,0,34,160,4,162,17,60,4,0,49,146, + 0,0,0,0,130,63,192,12,255,0,49,50, + 4,162,16,60,4,0,16,146,0,0,0,0, + 130,63,192,12,255,0,16,50,0,130,16,0, + 37,16,17,2,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 48,128,130,143,232,255,189,39,16,0,176,175, + 33,128,128,0,3,0,64,20,20,0,191,175, + 180,10,192,12,0,0,0,0,5,0,0,18, + 0,0,0,0,236,63,192,12,1,4,4,36, + 50,11,192,8,0,0,0,0,228,63,192,12, + 0,4,4,36,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,216,255,189,39, + 6,162,3,60,1,0,2,36,32,0,191,175, + 28,0,177,175,24,0,176,175,0,0,98,172, + 0,163,2,60,4,1,66,140,33,136,224,0, + 1,0,66,36,0,163,1,60,4,1,34,172, + 56,128,130,143,0,163,3,60,4,1,99,140, + 1,0,66,36,56,128,130,175,232,3,66,40, + 21,0,64,20,255,127,3,60,68,133,130,143, + 254,255,99,52,56,128,128,175,1,0,66,36, + 43,24,98,0,68,133,130,175,13,0,96,16, + 0,0,0,0,2,131,4,60,28,128,132,36, + 60,128,144,39,33,40,0,2,2,131,7,60, + 60,128,231,36,15,63,192,12,144,0,6,36, + 1,0,4,36,33,40,0,2,188,7,192,12, + 144,0,6,36,64,133,134,143,0,0,0,0, + 14,0,192,24,33,24,0,0,2,131,5,60, + 0,245,165,36,33,32,0,0,2,131,2,60, + 33,16,68,0,0,245,66,140,20,0,132,36, + 1,0,99,36,255,255,66,36,0,0,162,172, + 42,16,102,0,247,255,64,20,20,0,165,36, + 31,131,4,60,252,239,132,52,31,131,2,60, + 0,0,131,140,255,255,66,52,0,0,113,172, + 4,0,99,36,43,16,67,0,3,0,64,16, + 0,0,0,0,31,131,3,60,0,240,99,52, + 0,0,131,172,32,0,191,143,28,0,177,143, + 24,0,176,143,8,0,224,3,40,0,189,39, + 64,133,130,143,232,255,189,39,20,0,191,175, + 22,0,66,40,13,0,64,20,16,0,176,175, + 2,131,4,60,28,128,132,36,60,128,144,39, + 33,40,0,2,2,131,7,60,84,128,231,36, + 15,63,192,12,173,0,6,36,1,0,4,36, + 33,40,0,2,188,7,192,12,173,0,6,36, + 64,133,130,143,0,0,0,0,1,0,67,36, + 64,133,131,175,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,128,16,4,0, + 33,16,68,0,16,0,163,143,128,16,2,0, + 2,131,1,60,33,8,34,0,4,245,38,172, + 2,131,1,60,33,8,34,0,12,245,39,172, + 2,131,1,60,33,8,34,0,0,245,38,172, + 2,131,1,60,33,8,34,0,8,245,37,172, + 2,131,1,60,33,8,34,0,16,245,35,172, + 8,0,224,3,33,16,0,1,128,16,4,0, + 33,16,68,0,128,16,2,0,2,131,1,60, + 33,8,34,0,8,0,224,3,8,245,32,172, + 64,133,130,143,192,255,189,39,40,0,180,175, + 33,160,0,0,56,0,191,175,52,0,183,175, + 48,0,182,175,44,0,181,175,36,0,179,175, + 32,0,178,175,28,0,177,175,48,0,64,24, + 24,0,176,175,1,0,23,36,2,0,22,36, + 2,131,16,60,12,245,16,38,4,0,19,38, + 244,255,17,38,252,255,18,38,33,168,0,0, + 0,0,67,142,0,0,0,0,7,0,119,16, + 2,0,98,40,25,0,64,20,0,0,0,0, + 9,0,118,16,0,0,0,0,236,11,192,8, + 20,0,16,38,0,0,34,142,0,0,0,0, + 17,0,64,28,0,0,0,0,230,11,192,8, + 0,0,64,174,0,0,34,142,0,0,0,0, + 11,0,64,28,0,0,0,0,2,131,2,60, + 33,16,85,0,4,245,66,140,0,0,0,0, + 0,0,34,174,0,0,100,142,0,0,2,142, + 0,0,0,0,9,248,64,0,0,0,0,0, + 20,0,16,38,20,0,115,38,20,0,49,38, + 20,0,82,38,64,133,130,143,1,0,148,38, + 42,16,130,2,218,255,64,20,20,0,181,38, + 56,0,191,143,52,0,183,143,48,0,182,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,64,0,189,39,0,0,0,0, + 2,131,3,60,192,246,99,36,0,2,2,36, + 0,163,1,60,200,5,35,172,0,163,1,60, + 208,5,34,172,0,163,2,60,124,1,66,140, + 216,255,189,39,16,0,176,175,33,128,0,0, + 28,0,179,175,255,255,19,36,24,0,178,175, + 21,0,114,36,20,0,177,175,32,0,191,175, + 1,0,66,44,80,133,130,175,139,14,192,12, + 20,0,113,36,184,24,192,12,0,0,0,0, + 27,67,192,12,33,32,0,2,6,0,83,20, + 1,0,16,38,2,131,4,60,15,63,192,12, + 112,128,132,36,126,12,192,8,1,0,2,36, + 0,0,34,162,3,18,2,0,0,0,66,162, + 2,0,82,38,3,0,2,42,241,255,64,20, + 2,0,49,38,2,131,17,60,212,246,49,38, + 33,32,32,2,33,40,0,0,255,127,6,60, + 247,24,192,12,255,255,198,52,255,31,3,60, + 255,255,99,52,236,255,48,38,36,0,34,38, + 36,16,67,0,0,160,3,60,37,16,67,0, + 0,32,3,36,236,255,32,174,2,131,1,60, + 220,246,32,172,2,131,1,60,204,246,32,172, + 2,131,1,60,236,246,34,172,0,0,67,164, + 222,21,192,12,33,32,0,2,122,15,192,12, + 33,32,0,2,242,21,192,12,33,32,0,2, + 32,133,130,143,1,0,16,36,42,16,2,2, + 12,0,64,16,255,31,3,60,236,1,49,38, + 133,12,192,12,33,32,0,2,242,21,192,12, + 33,32,32,2,32,133,130,143,1,0,16,38, + 42,16,2,2,248,255,64,20,0,2,49,38, + 255,31,3,60,255,255,99,52,2,131,16,60, + 192,4,16,38,7,0,2,36,0,0,2,174, + 56,0,2,38,36,16,67,0,0,160,3,60, + 37,16,67,0,0,32,3,36,2,131,1,60, + 220,4,32,172,2,131,1,60,204,4,32,172, + 2,131,1,60,236,4,34,172,0,0,67,164, + 2,131,2,60,212,246,66,140,2,131,3,60, + 216,246,99,132,20,0,2,174,24,0,3,166, + 2,131,2,60,217,4,66,144,0,0,0,0, + 7,0,66,36,2,131,1,60,217,4,34,160, + 112,15,192,12,33,32,0,2,33,32,0,2, + 19,15,192,12,32,0,5,36,20,0,16,38, + 33,32,0,2,7,0,5,36,255,127,6,60, + 247,24,192,12,255,255,198,52,33,16,0,0, + 32,0,191,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,200,255,189,39,48,0,180,175, + 33,160,128,0,255,31,6,60,255,255,198,52, + 64,26,20,0,2,131,2,60,192,246,66,36, + 40,0,178,175,33,144,98,0,255,255,132,38, + 64,18,4,0,0,162,3,60,33,16,67,0, + 52,0,191,175,44,0,179,175,36,0,177,175, + 32,0,176,175,4,0,66,174,0,1,66,36, + 8,0,66,174,0,16,2,36,4,16,130,0, + 12,0,66,174,4,0,2,36,4,16,130,0, + 0,160,5,60,16,0,66,174,48,0,66,38, + 36,16,70,0,37,16,69,0,36,0,66,174, + 64,16,4,0,33,16,68,0,128,16,2,0, + 2,131,3,60,240,231,99,36,33,16,67,0, + 36,16,70,0,37,16,69,0,40,0,66,174, + 56,0,66,38,36,16,70,0,37,16,69,0, + 0,0,84,174,44,0,66,174,32,0,64,174, + 2,131,2,60,212,246,66,140,2,131,3,60, + 216,246,99,132,20,0,66,174,24,0,67,166, + 25,0,66,146,0,0,0,0,33,32,84,0, + 2,131,2,60,0,227,66,36,36,16,70,0, + 37,128,69,0,2,131,2,60,32,227,66,36, + 36,16,70,0,25,0,68,162,40,133,131,143, + 0,0,0,0,3,0,96,16,37,136,69,0, + 255,255,130,36,25,0,66,162,12,0,68,142, + 28,0,64,174,228,63,192,12,1,0,132,52, + 4,0,68,142,0,0,0,0,76,67,192,12, + 33,40,0,0,76,63,192,12,0,0,0,0, + 76,63,192,12,0,0,0,0,255,255,2,36, + 4,0,2,174,4,0,2,142,0,0,0,0, + 0,0,2,174,4,0,68,142,0,0,0,0, + 76,67,192,12,1,0,5,54,4,0,4,38, + 33,40,0,0,255,255,6,36,211,67,192,12, + 208,7,7,36,8,0,64,20,255,255,2,52, + 2,131,4,60,184,128,132,36,4,0,6,142, + 0,0,0,0,15,63,192,12,33,40,128,2, + 255,255,2,52,48,1,34,174,4,0,68,142, + 0,0,0,0,76,67,192,12,3,0,37,54, + 48,1,36,38,33,40,0,0,255,255,6,52, + 211,67,192,12,208,7,7,36,7,0,64,20, + 0,0,0,0,2,131,4,60,8,129,132,36, + 48,1,38,142,0,0,0,0,15,63,192,12, + 33,40,128,2,143,63,192,12,0,0,0,0, + 40,0,69,142,4,0,68,142,0,0,0,0, + 76,67,192,12,2,0,165,52,44,0,81,142, + 84,128,131,143,80,128,132,143,100,0,2,36, + 0,0,32,166,2,0,32,166,4,0,32,174, + 8,0,32,174,12,0,32,174,16,0,32,174, + 24,0,32,174,20,0,32,174,28,0,32,174, + 32,0,32,174,36,0,34,166,38,0,34,166, + 36,0,35,166,38,0,36,166,36,0,83,142, + 1,0,2,36,0,0,98,174,44,0,66,142, + 0,0,0,0,4,0,98,174,40,0,67,142, + 116,0,2,60,0,0,98,172,40,0,67,142, + 36,0,66,142,0,0,0,0,8,0,98,172, + 8,0,66,142,0,0,0,0,0,0,64,172, + 0,0,98,142,0,0,0,0,10,0,64,16, + 33,128,0,0,208,7,2,42,7,0,64,16, + 0,0,0,0,143,63,192,12,0,0,0,0, + 0,0,98,142,0,0,0,0,248,255,64,20, + 1,0,16,38,0,0,98,142,0,0,0,0, + 6,0,64,16,33,32,32,2,2,131,4,60, + 76,129,132,36,15,63,192,12,33,40,128,2, + 33,32,32,2,8,0,5,36,0,0,34,150, + 8,0,6,36,0,240,66,48,0,6,66,52, + 2,0,34,166,8,0,66,142,208,7,7,36, + 129,67,192,12,0,0,64,172,6,0,64,20, + 2,0,36,38,2,131,4,60,160,129,132,36, + 15,63,192,12,33,40,128,2,2,0,36,38, + 33,40,0,0,0,0,34,150,33,48,0,0, + 0,240,66,48,2,0,34,166,8,0,66,142, + 208,7,7,36,129,67,192,12,0,0,64,172, + 4,0,64,20,0,0,0,0,2,131,4,60, + 15,63,192,12,248,129,132,36,143,63,192,12, + 0,0,0,0,108,0,80,142,0,128,2,52, + 0,0,0,166,2,0,2,166,44,0,66,142, + 0,32,5,36,4,0,80,172,44,0,67,142, + 0,241,2,52,2,0,98,164,8,0,66,142, + 0,32,6,36,0,0,64,172,44,0,68,142, + 0,0,0,0,129,67,192,12,208,7,7,36, + 12,0,64,20,0,0,0,0,44,0,66,142, + 0,0,0,0,0,0,69,148,2,131,4,60, + 15,63,192,12,16,130,132,36,254,255,4,36, + 2,131,5,60,44,130,165,36,188,7,192,12, + 1,1,6,36,108,0,80,142,2,128,2,52, + 0,0,0,166,2,0,2,166,14,0,2,36, + 8,0,2,162,200,0,2,36,9,0,2,162, + 65,0,2,36,10,0,2,162,46,0,2,36, + 11,0,2,162,87,0,2,36,12,0,0,162, + 13,0,2,162,242,0,2,36,14,0,0,162, + 15,0,2,162,1,0,2,36,16,0,2,162, + 8,0,2,36,17,0,2,162,88,128,130,143, + 0,0,0,0,6,0,64,16,64,0,2,36, + 2,131,4,60,15,63,192,12,56,130,132,36, + 88,128,128,175,64,0,2,36,18,0,2,162, + 255,0,2,36,19,0,2,162,63,0,2,36, + 20,0,0,162,21,0,2,162,44,0,66,142, + 0,32,5,36,4,0,80,172,44,0,67,142, + 0,33,2,36,2,0,98,164,8,0,66,142, + 0,32,6,36,0,0,64,172,44,0,68,142, + 0,0,0,0,129,67,192,12,208,7,7,36, + 12,0,64,20,0,0,0,0,44,0,66,142, + 0,0,0,0,0,0,69,148,2,131,4,60, + 15,63,192,12,16,130,132,36,253,255,4,36, + 2,131,5,60,44,130,165,36,188,7,192,12, + 85,1,6,36,222,21,192,12,33,32,64,2, + 122,15,192,12,33,32,64,2,52,0,191,143, + 48,0,180,143,44,0,179,143,40,0,178,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 56,0,189,39,248,255,189,39,32,133,133,143, + 0,0,0,0,50,0,160,24,33,32,0,0, + 2,131,3,60,192,246,99,36,44,0,98,140, + 152,0,96,172,156,0,96,172,160,0,96,172, + 164,0,96,172,168,0,96,172,172,0,96,172, + 176,0,96,172,180,0,96,172,184,0,96,172, + 188,0,96,172,192,0,96,172,196,0,96,172, + 200,0,96,172,204,0,96,172,208,0,96,172, + 212,0,96,172,216,0,96,172,224,0,96,172, + 232,0,96,172,236,0,96,172,240,0,96,172, + 244,0,96,172,248,0,96,172,252,0,96,172, + 0,1,96,172,4,1,96,172,8,1,96,172, + 12,0,64,172,44,0,98,140,0,0,0,0, + 16,0,64,172,44,0,98,140,0,0,0,0, + 24,0,64,172,44,0,98,140,0,0,0,0, + 20,0,64,172,44,0,98,140,1,0,132,36, + 28,0,64,172,44,0,98,140,0,2,99,36, + 32,0,64,172,42,16,133,0,210,255,64,20, + 0,0,0,0,33,32,0,0,0,163,3,60, + 0,1,99,52,32,0,5,36,33,16,131,0, + 188,0,69,160,1,0,132,36,0,2,130,44, + 251,255,64,20,0,0,0,0,8,0,224,3, + 8,0,189,39,0,0,0,0,124,133,130,143, + 232,255,189,39,20,0,191,175,17,0,64,20, + 16,0,176,175,208,7,16,36,7,0,0,26, + 0,0,0,0,143,63,192,12,255,255,16,38, + 124,133,130,143,0,0,0,0,249,255,64,16, + 0,0,0,0,6,0,0,22,0,0,0,0, + 2,131,4,60,15,63,192,12,80,130,132,36, + 45,14,192,8,33,16,0,0,220,63,192,12, + 33,32,0,0,33,32,64,0,124,133,144,143, + 128,133,130,143,4,0,3,142,255,255,66,36, + 128,133,130,175,124,133,131,175,220,63,192,12, + 0,0,0,0,33,16,0,2,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 232,255,189,39,96,133,130,143,33,40,128,0, + 43,16,162,0,6,0,64,20,16,0,191,175, + 100,133,130,143,0,0,0,0,43,16,162,0, + 6,0,64,20,0,0,0,0,2,131,4,60, + 15,63,192,12,116,130,132,36,71,14,192,8, + 0,0,0,0,124,133,131,143,128,133,130,143, + 124,133,133,175,1,0,66,36,4,0,163,172, + 128,133,130,175,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,108,133,130,143, + 232,255,189,39,20,0,191,175,17,0,64,20, + 16,0,176,175,208,7,16,36,7,0,0,26, + 0,0,0,0,143,63,192,12,255,255,16,38, + 108,133,130,143,0,0,0,0,249,255,64,16, + 0,0,0,0,6,0,0,22,0,0,0,0, + 2,131,4,60,15,63,192,12,148,130,132,36, + 108,14,192,8,33,16,0,0,220,63,192,12, + 33,32,0,0,33,32,64,0,108,133,144,143, + 120,133,130,143,0,0,3,142,255,255,66,36, + 120,133,130,175,108,133,131,175,220,63,192,12, + 0,0,0,0,33,16,0,2,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 232,255,189,39,104,133,130,143,33,40,128,0, + 43,16,162,0,6,0,64,20,16,0,191,175, + 112,133,130,143,0,0,0,0,43,16,162,0, + 6,0,64,20,0,0,0,0,2,131,4,60, + 15,63,192,12,184,130,132,36,135,14,192,8, + 0,0,0,0,108,133,130,143,0,0,0,0, + 0,0,162,172,120,133,130,143,108,133,133,175, + 1,0,66,36,120,133,130,175,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,20,0,191,175,16,0,176,175, + 124,133,128,175,13,8,192,12,0,32,4,36, + 255,31,3,60,255,255,99,52,255,1,16,36, + 36,16,67,0,0,160,3,60,37,16,67,0, + 96,133,130,175,0,32,66,36,100,133,130,175, + 0,17,16,0,96,133,132,143,255,255,16,38, + 49,14,192,12,33,32,130,0,251,255,1,6, + 0,17,16,0,0,2,2,36,132,133,130,175, + 108,133,128,175,13,8,192,12,18,0,4,60, + 255,31,3,60,255,255,99,52,255,17,16,36, + 36,16,67,0,0,160,3,60,37,16,67,0, + 18,0,3,60,104,133,130,175,33,16,67,0, + 112,133,130,175,0,18,16,0,104,133,132,143, + 255,255,16,38,112,14,192,12,33,32,130,0, + 251,255,1,6,0,18,16,0,0,18,2,36, + 116,133,130,175,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,0,0,0,0, + 0,0,0,0,0,0,0,0,0,163,2,60, + 168,1,66,140,216,255,189,39,28,0,177,175, + 33,136,128,0,32,0,178,175,33,144,160,0, + 36,0,191,175,17,0,64,16,24,0,176,175, + 0,163,2,60,168,1,66,140,0,0,0,0, + 42,16,82,0,12,0,64,16,128,128,18,0, + 0,0,34,142,0,163,18,60,168,1,82,142, + 0,0,0,0,6,0,64,20,128,128,18,0, + 2,131,4,60,224,130,132,36,15,63,192,12, + 33,40,64,2,128,128,18,0,33,128,18,2, + 128,128,16,0,13,8,192,12,33,32,0,2, + 255,31,3,60,255,255,99,52,33,32,0,0, + 36,16,67,0,0,160,3,60,37,16,67,0, + 112,0,34,174,112,0,35,142,33,16,80,0, + 15,0,64,26,116,0,34,174,8,0,5,36, + 1,0,132,36,20,0,98,36,4,0,98,172, + 2,0,101,164,0,0,96,164,8,0,96,172, + 14,0,96,164,12,0,96,164,33,24,64,0, + 42,16,146,0,246,255,64,20,1,0,132,36, + 255,255,132,36,116,0,35,142,112,0,34,142, + 0,0,0,0,240,255,98,172,116,0,35,142, + 0,0,0,0,218,255,98,148,0,0,0,0, + 0,128,66,52,218,255,98,164,116,0,35,142, + 0,0,0,0,238,255,98,148,0,0,0,0, + 0,128,66,52,238,255,98,164,116,0,34,142, + 112,0,35,142,216,255,66,36,120,0,35,174, + 124,0,34,174,36,0,191,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 40,0,189,39,200,255,189,39,32,0,178,175, + 33,144,128,0,0,1,2,36,48,0,191,175, + 44,0,181,175,40,0,180,175,36,0,179,175, + 28,0,177,175,24,0,176,175,144,0,66,174, + 0,163,2,60,172,1,66,140,0,0,0,0, + 17,0,64,16,33,160,160,0,0,163,2,60, + 172,1,66,140,0,0,0,0,42,16,84,0, + 12,0,64,16,128,128,20,0,0,0,66,142, + 0,163,20,60,172,1,148,142,0,0,0,0, + 6,0,64,20,128,128,20,0,2,131,4,60, + 236,130,132,36,15,63,192,12,33,40,128,2, + 128,128,20,0,33,128,20,2,128,128,16,0, + 33,32,0,2,13,8,192,12,148,0,84,174, + 255,31,3,60,255,255,99,52,33,152,0,0, + 36,16,67,0,0,160,3,60,37,16,67,0, + 128,0,66,174,128,0,81,142,33,16,80,0, + 15,0,128,26,132,0,66,174,0,1,21,36, + 20,0,48,38,4,0,48,174,75,14,192,12, + 0,0,32,174,8,0,34,174,12,0,53,174, + 0,0,66,142,1,0,115,38,16,0,34,162, + 17,0,32,162,42,16,116,2,244,255,64,20, + 33,136,0,2,132,0,67,142,128,0,66,142, + 0,0,0,0,240,255,98,172,132,0,67,142, + 0,0,0,0,228,255,98,140,0,0,0,0, + 0,128,66,52,228,255,98,172,132,0,67,142, + 0,0,0,0,248,255,98,140,0,0,0,0, + 0,128,66,52,248,255,98,172,132,0,66,142, + 128,0,67,142,216,255,66,36,136,0,67,174, + 140,0,66,174,48,0,191,143,44,0,181,143, + 40,0,180,143,36,0,179,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 56,0,189,39,152,0,128,172,156,0,128,172, + 160,0,128,172,164,0,128,172,168,0,128,172, + 252,0,128,172,0,1,128,172,152,0,128,172, + 8,0,224,3,216,0,128,172,232,255,189,39, + 16,0,176,175,20,0,191,175,112,15,192,12, + 33,128,128,0,33,32,0,2,192,14,192,12, + 0,4,5,36,33,32,0,2,19,15,192,12, + 128,2,5,36,120,0,3,142,136,0,2,142, + 0,0,0,0,8,0,98,172,44,0,3,142, + 120,0,2,142,0,0,0,0,8,0,98,172, + 0,0,2,142,0,0,0,0,255,255,66,36, + 6,0,66,44,7,0,64,16,16,0,3,36, + 44,0,2,142,0,0,0,0,2,0,67,164, + 8,0,2,142,0,0,0,0,0,0,64,172, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,184,255,189,39,0,32,6,36, + 68,0,191,175,64,0,190,175,60,0,183,175, + 56,0,182,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,0,163,1,60,252,5,38,172, + 13,8,192,12,0,32,4,36,255,31,4,60, + 255,255,132,52,33,168,0,0,255,31,6,60, + 255,255,198,52,2,131,3,60,212,247,99,36, + 16,0,101,36,8,0,126,36,248,255,119,36, + 33,176,96,0,36,16,68,0,0,160,3,60, + 37,16,67,0,16,0,166,175,0,163,1,60, + 248,5,34,172,0,163,1,60,0,6,32,172, + 33,160,0,0,33,128,224,2,33,152,160,0, + 33,144,192,3,33,136,192,2,32,133,130,143, + 0,0,32,174,0,0,0,174,0,0,64,174, + 42,16,162,2,10,0,64,16,0,0,96,174, + 0,32,4,36,13,8,192,12,24,0,165,175, + 16,0,166,143,0,128,3,60,36,16,70,0, + 37,16,67,0,0,0,2,174,24,0,165,143, + 4,0,16,38,4,0,115,38,4,0,82,38, + 1,0,148,38,2,0,130,42,234,255,64,20, + 4,0,49,38,0,2,165,36,0,2,222,39, + 0,2,247,38,1,0,181,38,7,0,162,42, + 222,255,64,20,0,2,214,38,68,0,191,143, + 64,0,190,143,60,0,183,143,56,0,182,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,72,0,189,39,0,163,4,60, + 0,6,132,140,0,163,3,60,8,6,99,140, + 32,133,130,143,224,255,189,39,16,0,176,175, + 0,163,16,60,12,6,16,142,20,0,177,175, + 0,163,17,60,4,6,49,142,43,16,98,0, + 42,0,64,16,24,0,191,175,2,0,2,46, + 40,0,64,16,255,255,2,36,0,163,2,60, + 252,5,66,140,0,0,0,0,43,16,81,0, + 34,0,64,20,255,255,2,36,64,18,3,0, + 2,131,3,60,192,246,99,36,33,24,67,0, + 1,0,2,36,5,0,130,16,2,0,2,36, + 18,0,130,16,128,16,16,0,36,16,192,8, + 0,0,0,0,128,128,16,0,33,128,3,2, + 12,1,4,142,0,163,5,60,248,5,165,140, + 33,48,32,2,80,68,192,12,36,1,17,174, + 12,1,4,142,12,1,2,142,33,40,32,2, + 114,68,192,12,20,1,2,174,36,16,192,8, + 0,0,0,0,33,16,67,0,20,1,64,172, + 36,1,64,172,0,163,1,60,42,16,192,8, + 0,6,32,172,255,255,2,36,0,163,1,60, + 0,6,34,172,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 176,133,136,143,188,133,137,143,232,255,189,39, + 3,0,0,21,16,0,191,175,124,0,32,17, + 0,0,0,0,12,0,194,148,0,0,0,0, + 0,26,2,0,2,18,2,0,37,56,98,0, + 255,255,227,48,221,5,98,44,36,0,64,20, + 170,170,2,52,0,8,2,36,23,0,98,20, + 6,8,2,36,21,0,0,17,0,0,0,0, + 32,0,194,148,30,0,195,148,0,20,2,0, + 37,56,67,0,36,0,195,148,0,161,2,52, + 5,0,98,16,8,0,2,36,34,0,195,148, + 0,0,0,0,98,0,98,20,0,0,0,0, + 3,0,232,16,255,255,2,36,94,0,226,20, + 0,0,0,0,226,46,192,12,14,0,6,36, + 177,16,192,8,0,0,0,0,7,0,98,20, + 255,255,227,48,71,0,0,17,55,129,2,52, + 108,43,192,12,14,0,6,36,177,16,192,8, + 0,0,0,0,162,16,192,8,55,129,2,52, + 14,0,195,148,0,0,0,0,61,0,98,20, + 255,255,2,52,16,0,195,144,3,0,2,36, + 55,0,98,20,255,255,2,52,20,0,194,148, + 0,0,0,0,0,26,2,0,2,18,2,0, + 37,56,98,0,255,255,227,48,0,8,2,36, + 23,0,98,20,6,8,2,36,21,0,0,17, + 0,0,0,0,40,0,194,148,38,0,195,148, + 0,20,2,0,37,56,67,0,44,0,195,148, + 0,161,2,52,5,0,98,16,8,0,2,36, + 42,0,195,148,0,0,0,0,49,0,98,20, + 0,0,0,0,3,0,232,16,255,255,2,36, + 45,0,226,20,0,0,0,0,226,46,192,12, + 22,0,6,36,177,16,192,8,0,0,0,0, + 7,0,98,20,255,255,227,48,6,0,0,17, + 55,129,2,52,108,43,192,12,22,0,6,36, + 177,16,192,8,0,0,0,0,55,129,2,52, + 30,0,98,20,0,0,0,0,28,0,32,17, + 144,15,3,36,38,0,194,148,28,0,198,140, + 24,0,67,20,0,0,0,0,3,0,201,16, + 0,0,0,0,20,0,192,20,0,0,0,0, + 175,16,192,8,22,0,6,36,14,0,195,148, + 0,0,0,0,14,0,98,20,0,0,0,0, + 12,0,32,17,144,15,3,36,30,0,194,148, + 20,0,198,140,8,0,67,20,0,0,0,0, + 3,0,201,16,0,0,0,0,4,0,192,20, + 0,0,0,0,14,0,6,36,126,49,192,12, + 0,0,0,0,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,128,255,189,39, + 116,0,183,175,33,184,128,0,3,0,3,36, + 124,0,191,175,120,0,190,175,112,0,182,175, + 108,0,181,175,104,0,180,175,100,0,179,175, + 96,0,178,175,92,0,177,175,88,0,176,175, + 0,0,245,142,8,0,178,140,192,17,21,0, + 3,131,4,60,33,32,130,0,20,13,132,140, + 8,0,84,142,0,0,0,0,59,0,131,16, + 5,0,130,44,57,0,64,16,128,16,4,0, + 2,131,1,60,33,8,34,0,104,131,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 44,133,130,143,0,0,0,0,48,0,64,16, + 6,0,132,38,4,0,131,150,2,131,2,60, + 68,207,66,148,0,0,0,0,6,0,98,20, + 33,32,0,0,0,0,130,142,48,129,131,143, + 0,0,0,0,38,16,67,0,1,0,68,44, + 72,1,128,16,33,32,160,2,114,42,192,12, + 33,40,128,2,45,18,192,8,33,32,64,2, + 44,133,130,143,0,0,0,0,27,0,64,16, + 6,0,132,38,4,0,131,150,2,131,2,60, + 68,207,66,148,0,0,0,0,6,0,98,20, + 33,32,0,0,0,0,130,142,48,129,131,143, + 0,0,0,0,38,16,67,0,1,0,68,44, + 5,0,128,16,33,32,160,2,114,42,192,12, + 33,40,128,2,45,18,192,8,33,32,64,2, + 6,0,132,38,0,163,6,60,140,1,198,140, + 0,0,0,0,247,24,192,12,33,40,160,2, + 45,18,192,8,33,32,64,2,6,0,132,38, + 0,163,6,60,140,1,198,140,0,0,0,0, + 247,24,192,12,33,40,160,2,203,24,192,12, + 33,32,128,2,20,1,227,142,0,0,0,0, + 14,0,96,16,33,240,64,0,33,32,128,2, + 16,0,166,39,18,0,69,150,0,0,0,0, + 9,248,96,0,33,56,192,3,6,0,64,16, + 33,32,64,2,28,1,226,142,0,0,0,0, + 1,0,66,36,45,18,192,8,28,1,226,174, + 132,0,193,7,7,0,2,36,4,0,131,150, + 2,131,2,60,68,207,66,148,0,0,0,0, + 6,0,98,20,33,32,0,0,0,0,130,142, + 48,129,131,143,0,0,0,0,38,16,67,0, + 1,0,68,44,9,0,128,16,255,255,2,36, + 44,133,130,143,0,0,0,0,251,0,64,16, + 33,32,160,2,114,42,192,12,33,40,128,2, + 45,18,192,8,33,32,64,2,10,0,194,23, + 0,0,0,0,8,0,160,18,0,0,0,0, + 36,133,130,143,0,0,0,0,8,0,64,16, + 1,0,19,36,80,133,147,143,69,17,192,8, + 0,0,0,0,0,1,226,142,80,133,147,143, + 1,0,66,36,0,1,226,174,84,133,130,143, + 0,0,0,0,35,16,83,0,255,255,66,36, + 17,0,66,162,84,133,130,143,33,128,96,2, + 42,16,2,2,15,0,64,16,64,18,16,0, + 2,131,3,60,192,246,99,36,33,136,67,0, + 5,0,21,18,0,0,0,0,247,22,192,12, + 33,32,32,2,217,0,64,16,33,16,0,0, + 84,133,130,143,1,0,16,38,42,16,2,2, + 246,255,64,20,0,2,49,38,84,133,130,143, + 33,128,96,2,42,16,2,2,55,0,64,16, + 64,18,16,0,2,131,3,60,192,246,99,36, + 33,152,67,0,33,136,64,0,192,177,16,0, + 41,0,21,18,0,0,0,0,2,131,2,60, + 33,16,81,0,216,247,66,140,0,0,0,0, + 15,0,64,16,33,32,128,2,16,0,166,39, + 18,0,69,150,0,0,0,0,9,248,64,0, + 33,56,160,2,8,0,64,16,0,0,0,0, + 2,131,2,60,33,16,81,0,224,247,66,140, + 0,0,0,0,1,0,66,36,140,17,192,8, + 32,1,98,174,44,133,130,143,0,0,0,0, + 7,0,64,16,3,0,8,36,3,131,2,60, + 33,16,86,0,20,13,66,140,0,0,0,0, + 6,0,72,20,0,0,0,0,33,32,96,2, + 6,23,192,12,33,40,64,2,146,17,192,8, + 0,2,115,38,17,0,66,146,0,0,0,0, + 255,255,66,36,17,0,66,162,17,0,66,146, + 0,2,115,38,0,2,49,38,84,133,130,143, + 1,0,16,38,42,16,2,2,208,255,64,20, + 128,0,214,38,254,255,2,36,4,0,194,23, + 33,32,224,2,33,40,64,2,47,16,192,12, + 33,48,128,2,17,0,66,146,0,0,0,0, + 140,0,64,16,33,32,64,2,36,18,192,8, + 0,0,0,0,26,0,194,23,0,0,0,0, + 36,133,130,143,0,0,0,0,11,0,64,16, + 33,32,224,2,9,0,160,18,1,0,2,36, + 17,0,66,162,2,131,4,60,192,246,132,36, + 6,23,192,12,33,40,64,2,126,0,64,16, + 33,16,0,0,33,32,224,2,33,40,64,2, + 47,16,192,12,33,48,128,2,36,133,130,143, + 0,0,0,0,115,0,64,16,33,32,64,2, + 116,0,160,22,1,0,2,36,45,18,192,8, + 0,0,0,0,87,0,213,19,64,130,30,0, + 2,131,2,60,33,16,80,0,216,247,66,140, + 0,0,0,0,18,0,64,16,33,32,128,2, + 16,0,166,39,18,0,69,150,0,0,0,0, + 9,248,64,0,33,56,160,2,11,0,64,16, + 33,32,64,2,2,131,2,60,33,16,80,0, + 224,247,66,140,0,0,0,0,1,0,66,36, + 2,131,1,60,33,8,48,0,224,247,34,172, + 45,18,192,8,17,0,128,160,36,133,130,143, + 0,0,0,0,43,0,64,16,0,0,0,0, + 41,0,192,19,0,0,0,0,39,0,160,18, + 64,18,30,0,2,131,16,60,192,246,16,38, + 33,136,80,0,247,22,192,12,33,32,32,2, + 74,0,64,16,33,16,0,0,247,22,192,12, + 33,32,0,2,63,0,64,16,2,0,2,36, + 17,0,66,162,44,133,130,143,0,0,0,0, + 7,0,64,16,192,17,30,0,3,131,3,60, + 33,24,98,0,20,13,99,140,3,0,2,36, + 6,0,98,20,0,0,0,0,33,32,32,2, + 6,23,192,12,33,40,64,2,0,18,192,8, + 0,0,0,0,17,0,66,146,0,0,0,0, + 255,255,66,36,17,0,66,162,17,0,66,146, + 2,131,4,60,192,246,132,36,6,23,192,12, + 33,40,64,2,36,18,192,8,0,0,0,0, + 44,133,130,143,0,0,0,0,7,0,64,16, + 192,17,30,0,3,131,3,60,33,24,98,0, + 20,13,99,140,3,0,2,36,28,0,98,20, + 0,0,0,0,1,0,2,36,17,0,66,162, + 64,18,30,0,2,131,4,60,192,246,132,36, + 32,18,192,8,33,32,68,0,36,133,130,143, + 0,0,0,0,17,0,64,16,0,0,0,0, + 15,0,192,19,1,0,2,36,17,0,66,162, + 2,131,4,60,192,246,132,36,6,23,192,12, + 33,40,64,2,13,0,64,16,33,16,0,0, + 252,0,226,142,0,0,0,0,1,0,66,36, + 47,18,192,8,252,0,226,174,48,18,192,8, + 33,16,0,0,17,0,64,162,33,32,64,2, + 152,21,192,12,0,0,0,0,1,0,2,36, + 124,0,191,143,120,0,190,143,116,0,183,143, + 112,0,182,143,108,0,181,143,104,0,180,143, + 100,0,179,143,96,0,178,143,92,0,177,143, + 88,0,176,143,8,0,224,3,128,0,189,39, + 216,255,189,39,24,0,178,175,33,144,128,0, + 32,0,191,175,28,0,179,175,20,0,177,175, + 16,0,176,175,8,0,177,140,0,0,66,142, + 8,0,38,142,36,0,64,16,0,0,0,0, + 28,0,66,142,0,0,0,0,18,0,64,20, + 1,0,2,36,0,0,194,144,0,0,0,0, + 1,0,66,48,13,0,64,20,1,0,2,36, + 4,0,195,148,24,0,66,150,0,0,0,0, + 6,0,98,20,33,32,0,0,0,0,194,140, + 20,0,67,142,0,0,0,0,38,16,67,0, + 1,0,68,44,10,0,128,16,1,0,2,36, + 17,0,34,162,2,131,4,60,192,246,132,36, + 6,23,192,12,33,40,32,2,45,0,64,16, + 33,16,0,0,139,18,192,8,0,0,0,0, + 17,0,32,162,152,21,192,12,33,32,32,2, + 144,18,192,8,1,0,2,36,16,0,179,140, + 0,0,0,0,6,0,96,26,0,0,0,0, + 32,133,130,143,0,0,0,0,42,16,98,2, + 15,0,64,20,1,0,2,36,2,131,4,60, + 248,130,132,36,2,131,16,60,24,131,16,38, + 33,40,0,2,2,131,7,60,36,131,231,36, + 15,63,192,12,188,2,6,36,1,0,4,36, + 33,40,0,2,188,7,192,12,188,2,6,36, + 1,0,2,36,17,0,34,162,64,18,19,0, + 2,131,4,60,192,246,132,36,33,32,68,0, + 6,23,192,12,33,40,32,2,6,0,64,16, + 33,16,0,0,252,0,66,142,0,0,0,0, + 1,0,66,36,252,0,66,174,1,0,2,36, + 32,0,191,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,72,255,189,39,164,0,181,175, + 33,168,128,0,180,0,191,175,176,0,190,175, + 172,0,183,175,168,0,182,175,160,0,180,175, + 156,0,179,175,152,0,178,175,148,0,177,175, + 144,0,176,175,88,0,165,175,120,0,160,175, + 120,0,168,142,0,0,0,0,96,0,168,175, + 124,0,169,142,0,0,0,0,15,2,160,24, + 104,0,169,175,96,0,168,143,0,0,0,0, + 0,0,4,149,0,0,0,0,0,128,130,48, + 9,2,64,16,0,0,0,0,128,0,160,175, + 8,0,2,141,136,0,169,142,255,255,8,36, + 18,0,72,16,112,0,169,175,112,0,169,143, + 0,0,0,0,0,0,35,141,4,0,40,141, + 128,0,169,143,255,63,98,48,33,72,34,1, + 0,128,99,48,112,0,168,175,246,255,96,16, + 128,0,169,175,96,0,168,143,0,0,0,0, + 8,0,2,141,128,0,169,151,0,0,0,0, + 18,0,73,164,0,32,130,48,200,1,64,16, + 0,0,0,0,40,133,130,143,0,0,0,0, + 75,0,64,16,3,0,8,36,96,0,168,143, + 0,0,0,0,8,0,16,141,0,0,162,142, + 8,0,5,142,30,0,64,16,0,0,0,0, + 28,0,162,142,0,0,0,0,18,0,64,20, + 1,0,9,36,0,0,162,144,0,0,0,0, + 1,0,66,48,13,0,64,20,0,0,0,0, + 4,0,163,148,24,0,162,150,0,0,0,0, + 6,0,98,20,33,32,0,0,0,0,162,140, + 20,0,163,142,0,0,0,0,38,16,67,0, + 1,0,68,44,6,0,128,16,1,0,9,36, + 17,0,9,162,2,131,4,60,192,246,132,36, + 18,19,192,8,33,40,0,2,17,0,0,162, + 130,20,192,8,33,32,0,2,16,0,17,141, + 0,0,0,0,6,0,32,26,0,0,0,0, + 32,133,130,143,0,0,0,0,42,16,34,2, + 15,0,64,20,1,0,9,36,2,131,4,60, + 248,130,132,36,2,131,5,60,24,131,165,36, + 2,131,7,60,36,131,231,36,15,63,192,12, + 188,2,6,36,1,0,4,36,2,131,5,60, + 24,131,165,36,188,7,192,12,188,2,6,36, + 1,0,9,36,17,0,9,162,64,34,17,0, + 2,131,8,60,192,246,8,37,33,32,136,0, + 33,40,0,2,6,23,192,12,0,0,0,0, + 112,1,64,16,33,16,0,0,252,0,162,142, + 0,0,0,0,1,0,66,36,132,20,192,8, + 252,0,162,174,0,0,182,142,96,0,169,143, + 192,17,22,0,8,0,50,141,3,131,3,60, + 33,24,98,0,20,13,99,140,8,0,84,142, + 0,0,0,0,59,0,104,16,5,0,98,44, + 57,0,64,16,128,16,3,0,2,131,1,60, + 33,8,34,0,128,131,34,140,0,0,0,0, + 8,0,64,0,0,0,0,0,44,133,130,143, + 0,0,0,0,48,0,64,16,6,0,132,38, + 4,0,131,150,2,131,2,60,68,207,66,148, + 0,0,0,0,6,0,98,20,33,32,0,0, + 0,0,130,142,48,129,131,143,0,0,0,0, + 38,16,67,0,1,0,68,44,67,1,128,16, + 33,32,192,2,114,42,192,12,33,40,128,2, + 130,20,192,8,33,32,64,2,44,133,130,143, + 0,0,0,0,27,0,64,16,6,0,132,38, + 4,0,131,150,2,131,2,60,68,207,66,148, + 0,0,0,0,6,0,98,20,33,32,0,0, + 0,0,130,142,48,129,131,143,0,0,0,0, + 38,16,67,0,1,0,68,44,5,0,128,16, + 33,32,192,2,114,42,192,12,33,40,128,2, + 130,20,192,8,33,32,64,2,6,0,132,38, + 0,163,6,60,140,1,198,140,0,0,0,0, + 247,24,192,12,33,40,192,2,130,20,192,8, + 33,32,64,2,6,0,132,38,0,163,6,60, + 140,1,198,140,0,0,0,0,247,24,192,12, + 33,40,192,2,203,24,192,12,33,32,128,2, + 20,1,163,142,0,0,0,0,14,0,96,16, + 33,240,64,0,33,32,128,2,16,0,166,39, + 18,0,69,150,0,0,0,0,9,248,96,0, + 33,56,192,3,6,0,64,16,33,32,64,2, + 28,1,162,142,0,0,0,0,1,0,66,36, + 130,20,192,8,28,1,162,174,132,0,193,7, + 7,0,2,36,4,0,131,150,2,131,2,60, + 68,207,66,148,0,0,0,0,6,0,98,20, + 33,32,0,0,0,0,130,142,48,129,131,143, + 0,0,0,0,38,16,67,0,1,0,68,44, + 9,0,128,16,255,255,9,36,44,133,130,143, + 0,0,0,0,246,0,64,16,33,32,192,2, + 114,42,192,12,33,40,128,2,130,20,192,8, + 33,32,64,2,10,0,201,23,0,0,0,0, + 8,0,192,18,0,0,0,0,36,133,130,143, + 0,0,0,0,8,0,64,16,1,0,19,36, + 80,133,147,143,159,19,192,8,0,0,0,0, + 0,1,162,142,80,133,147,143,1,0,66,36, + 0,1,162,174,84,133,130,143,0,0,0,0, + 35,16,83,0,255,255,66,36,17,0,66,162, + 84,133,130,143,33,136,96,2,42,16,34,2, + 15,0,64,16,64,18,17,0,2,131,8,60, + 192,246,8,37,33,128,72,0,5,0,54,18, + 0,0,0,0,247,22,192,12,33,32,0,2, + 212,0,64,16,33,16,0,0,84,133,130,143, + 1,0,49,38,42,16,34,2,246,255,64,20, + 0,2,16,38,84,133,130,143,33,136,96,2, + 42,16,34,2,55,0,64,16,64,18,17,0, + 2,131,9,60,192,246,41,37,33,152,73,0, + 33,128,64,0,192,185,17,0,41,0,54,18, + 0,0,0,0,2,131,2,60,33,16,80,0, + 216,247,66,140,0,0,0,0,15,0,64,16, + 33,32,128,2,16,0,166,39,18,0,69,150, + 0,0,0,0,9,248,64,0,33,56,192,2, + 8,0,64,16,0,0,0,0,2,131,2,60, + 33,16,80,0,224,247,66,140,0,0,0,0, + 1,0,66,36,230,19,192,8,32,1,98,174, + 44,133,130,143,0,0,0,0,7,0,64,16, + 3,0,8,36,3,131,2,60,33,16,87,0, + 20,13,66,140,0,0,0,0,6,0,72,20, + 0,0,0,0,33,32,96,2,6,23,192,12, + 33,40,64,2,236,19,192,8,0,2,115,38, + 17,0,66,146,0,0,0,0,255,255,66,36, + 17,0,66,162,17,0,66,146,0,2,115,38, + 0,2,16,38,84,133,130,143,1,0,49,38, + 42,16,34,2,208,255,64,20,128,0,247,38, + 254,255,2,36,4,0,194,23,33,32,160,2, + 33,40,64,2,47,16,192,12,33,48,128,2, + 17,0,66,146,0,0,0,0,135,0,64,16, + 33,32,64,2,22,19,192,8,0,0,0,0, + 26,0,194,23,0,0,0,0,36,133,130,143, + 0,0,0,0,11,0,64,16,33,32,160,2, + 9,0,192,18,1,0,9,36,17,0,73,162, + 2,131,4,60,192,246,132,36,6,23,192,12, + 33,40,64,2,121,0,64,16,33,16,0,0, + 33,32,160,2,33,40,64,2,47,16,192,12, + 33,48,128,2,36,133,130,143,0,0,0,0, + 110,0,64,16,33,32,64,2,111,0,192,22, + 1,0,2,36,130,20,192,8,0,0,0,0, + 89,0,214,19,64,130,30,0,2,131,2,60, + 33,16,80,0,216,247,66,140,0,0,0,0, + 18,0,64,16,33,32,128,2,16,0,166,39, + 18,0,69,150,0,0,0,0,9,248,64,0, + 33,56,192,2,11,0,64,16,33,32,64,2, + 2,131,8,60,192,246,8,37,2,131,2,60, + 33,16,80,0,224,247,66,140,33,24,8,2, + 1,0,66,36,32,1,98,172,130,20,192,8, + 17,0,128,160,36,133,130,143,0,0,0,0, + 44,0,64,16,0,0,0,0,42,0,192,19, + 0,0,0,0,40,0,192,18,64,18,30,0, + 2,131,9,60,192,246,41,37,33,128,73,0, + 247,22,192,12,33,32,0,2,69,0,64,16, + 33,16,0,0,2,131,4,60,247,22,192,12, + 192,246,132,36,57,0,64,16,2,0,2,36, + 17,0,66,162,44,133,130,143,0,0,0,0, + 7,0,64,16,192,17,30,0,3,131,1,60, + 33,8,34,0,20,13,34,140,3,0,8,36, + 6,0,72,20,0,0,0,0,33,32,0,2, + 6,23,192,12,33,40,64,2,91,20,192,8, + 0,0,0,0,17,0,66,146,0,0,0,0, + 255,255,66,36,17,0,66,162,17,0,66,146, + 2,131,4,60,192,246,132,36,6,23,192,12, + 33,40,64,2,22,19,192,8,0,0,0,0, + 44,133,130,143,0,0,0,0,7,0,64,16, + 192,17,30,0,3,131,1,60,33,8,34,0, + 20,13,34,140,3,0,9,36,22,0,73,20, + 0,0,0,0,1,0,8,36,17,0,72,162, + 64,34,30,0,2,131,9,60,192,246,41,37, + 33,32,137,0,18,19,192,8,33,40,64,2, + 36,133,130,143,0,0,0,0,10,0,64,16, + 0,0,0,0,8,0,192,19,1,0,8,36, + 17,0,72,162,2,131,4,60,192,246,132,36, + 18,19,192,8,33,40,64,2,133,20,192,8, + 33,16,0,0,17,0,64,162,33,32,64,2, + 152,21,192,12,0,0,0,0,1,0,2,36, + 52,0,64,16,0,0,0,0,152,0,162,142, + 0,0,0,0,1,0,66,36,152,0,162,174, + 156,0,162,142,168,0,163,142,1,0,66,36, + 156,0,162,174,128,0,169,143,0,0,0,0, + 33,24,105,0,163,20,192,8,168,0,163,174, + 152,0,162,142,160,0,163,142,1,0,66,36, + 1,0,99,36,152,0,162,174,160,0,163,174, + 96,0,168,143,0,0,0,0,8,0,2,141, + 255,255,9,36,4,0,73,16,0,0,0,0, + 8,0,4,141,152,21,192,12,0,0,0,0, + 120,0,168,143,112,0,169,143,1,0,8,37, + 120,0,168,175,136,0,169,174,96,0,168,143, + 8,128,2,52,0,0,0,165,2,0,2,165, + 104,0,169,143,8,0,2,36,2,0,34,165, + 4,0,40,141,96,0,169,143,104,0,168,175, + 4,0,41,141,120,0,168,143,96,0,169,175, + 88,0,169,143,0,0,0,0,42,16,9,1, + 243,253,64,20,0,0,0,0,96,0,168,143, + 44,0,163,142,120,0,168,174,104,0,169,143, + 0,0,0,0,124,0,169,174,0,0,98,148, + 0,0,0,0,0,16,66,48,43,0,64,16, + 0,0,0,0,2,0,98,148,0,0,0,0, + 39,0,64,20,0,0,0,0,0,0,2,149, + 0,0,0,0,35,0,64,20,0,0,0,0, + 2,0,2,149,8,0,3,36,255,255,66,48, + 30,0,67,20,0,0,0,0,136,0,162,142, + 0,0,0,0,12,0,66,140,0,0,0,0, + 0,128,66,48,23,0,64,20,0,0,0,0, + 164,0,162,142,44,0,163,142,1,0,66,36, + 164,0,162,174,8,0,104,172,136,0,162,142, + 0,0,0,0,8,0,2,173,44,0,163,142, + 16,16,2,36,2,0,98,164,0,0,162,142, + 0,0,0,0,5,0,64,20,0,0,0,0, + 164,7,192,12,0,0,0,0,239,20,192,8, + 0,0,0,0,8,0,162,142,0,0,0,0, + 0,0,64,172,180,0,191,143,176,0,190,143, + 172,0,183,143,168,0,182,143,164,0,181,143, + 160,0,180,143,156,0,179,143,152,0,178,143, + 148,0,177,143,144,0,176,143,8,0,224,3, + 184,0,189,39,216,255,189,39,28,0,177,175, + 33,136,128,0,32,0,178,175,33,144,160,0, + 96,128,132,39,6,0,37,38,24,0,176,175, + 104,128,144,39,36,0,191,175,31,21,192,12, + 33,48,0,2,108,128,132,39,33,40,32,2, + 31,21,192,12,33,48,0,2,10,0,64,26, + 33,128,0,0,116,128,132,39,33,16,17,2, + 12,0,69,144,0,0,0,0,15,63,192,12, + 1,0,16,38,42,16,18,2,248,255,64,20, + 0,0,0,0,124,128,132,39,15,63,192,12, + 0,0,0,0,36,0,191,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 40,0,189,39,208,255,189,39,40,0,191,175, + 2,0,162,144,0,0,163,144,1,0,167,144, + 16,0,162,175,3,0,162,144,33,64,128,0, + 20,0,162,175,4,0,162,144,2,131,4,60, + 68,131,132,36,24,0,162,175,5,0,162,144, + 33,40,0,1,32,0,166,175,33,48,96,0, + 15,63,192,12,28,0,162,175,40,0,191,143, + 48,0,189,39,8,0,224,3,0,0,0,0, + 248,255,189,39,136,0,135,140,255,255,163,36, + 12,0,160,16,33,48,224,0,255,255,5,36, + 12,0,194,140,0,0,0,0,0,128,66,48, + 8,0,64,20,33,16,0,0,255,255,99,36, + 0,0,192,172,4,0,198,140,247,255,101,20, + 0,0,0,0,136,0,134,172,33,16,224,0, + 8,0,224,3,8,0,189,39,224,255,189,39, + 16,0,176,175,33,128,160,0,28,0,191,175, + 24,0,178,175,33,0,128,20,20,0,177,175, + 84,133,130,143,80,133,131,143,0,0,0,0, + 35,16,67,0,17,0,2,162,80,133,145,143, + 84,133,130,143,0,0,0,0,42,16,34,2, + 19,0,64,16,64,18,17,0,2,131,3,60, + 192,246,99,36,33,144,67,0,33,32,64,2, + 6,23,192,12,33,40,0,2,6,0,64,20, + 0,0,0,0,17,0,2,146,0,0,0,0, + 255,255,66,36,17,0,2,162,17,0,2,146, + 84,133,130,143,1,0,49,38,42,16,34,2, + 242,255,64,20,0,2,82,38,17,0,2,146, + 144,21,192,8,0,0,0,0,36,133,130,143, + 0,0,0,0,25,0,64,16,1,0,2,36, + 0,0,130,140,0,0,0,0,20,0,64,16, + 2,0,2,36,17,0,2,162,6,23,192,12, + 33,40,0,2,19,0,64,16,33,16,0,0, + 2,131,4,60,192,246,132,36,6,23,192,12, + 33,40,0,2,7,0,64,20,0,0,0,0, + 17,0,2,146,0,0,0,0,255,255,66,36, + 17,0,2,162,17,0,2,146,0,0,0,0, + 144,21,192,8,1,0,2,36,1,0,2,36, + 17,0,2,162,6,23,192,12,33,40,0,2, + 28,0,191,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 0,0,0,0,0,0,0,0,0,129,9,52, + 16,0,130,144,2,131,3,60,192,246,99,36, + 64,18,2,0,33,56,67,0,140,0,230,140, + 0,1,8,36,4,0,197,140,0,0,131,140, + 0,0,128,172,12,0,137,172,4,0,164,172, + 12,0,200,172,33,48,160,0,216,0,226,140, + 33,40,128,0,1,0,66,36,0,128,99,48, + 4,0,96,20,216,0,226,172,4,0,132,140, + 161,21,192,8,0,0,0,0,8,0,224,3, + 140,0,230,172,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,8,0,224,3,0,0,0,0, + 172,0,128,172,176,0,128,172,180,0,128,172, + 184,0,128,172,188,0,128,172,192,0,128,172, + 196,0,128,172,200,0,128,172,204,0,128,172, + 208,0,128,172,212,0,128,172,224,0,128,172, + 8,1,128,172,4,1,128,172,236,0,128,172, + 240,0,128,172,232,0,128,172,244,0,128,172, + 8,0,224,3,248,0,128,172,224,255,189,39, + 16,0,176,175,33,128,128,0,20,0,177,175, + 0,2,17,36,24,0,191,175,13,8,192,12, + 0,48,4,36,255,31,3,60,255,255,99,52, + 33,32,0,0,36,16,67,0,0,128,3,60, + 37,40,67,0,33,24,160,0,0,128,6,52, + 1,0,132,36,24,0,98,36,0,0,96,164, + 2,0,102,164,4,0,98,172,33,24,64,0, + 42,16,145,0,249,255,64,20,1,0,132,36, + 255,255,132,36,64,16,17,0,33,16,81,0, + 192,16,2,0,33,16,69,0,48,0,163,36, + 236,255,69,172,108,0,3,174,104,0,3,174, + 96,0,5,174,100,0,2,174,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,248,255,189,39,0,32,14,60, + 4,0,177,175,7,0,17,60,0,0,176,175, + 4,0,16,60,2,131,25,60,192,246,57,39, + 0,1,15,36,108,0,152,140,104,0,137,140, + 176,0,140,140,180,0,141,140,94,0,56,17, + 0,0,0,0,4,0,43,141,0,0,0,0, + 37,16,110,1,0,0,66,148,0,0,0,0, + 0,128,66,48,86,0,64,16,37,16,46,1, + 0,0,67,140,0,0,0,0,36,16,113,0, + 76,0,80,20,0,32,98,48,41,0,64,20, + 15,0,98,48,188,0,130,140,0,0,0,0, + 1,0,66,36,188,0,130,172,0,8,98,48, + 6,0,64,16,0,4,98,48,192,0,130,140, + 0,0,0,0,1,0,66,36,192,0,130,172, + 0,4,98,48,6,0,64,16,0,2,98,48, + 196,0,130,140,0,0,0,0,1,0,66,36, + 196,0,130,172,0,2,98,48,6,0,64,16, + 0,1,98,48,200,0,130,140,0,0,0,0, + 1,0,66,36,200,0,130,172,0,1,98,48, + 6,0,64,16,32,0,98,48,204,0,130,140, + 0,0,0,0,1,0,66,36,204,0,130,172, + 32,0,98,48,6,0,64,16,15,0,98,48, + 208,0,130,140,0,0,0,0,1,0,66,36, + 208,0,130,172,15,0,98,48,212,0,131,140, + 8,0,37,141,33,24,98,0,212,0,131,172, + 17,0,162,144,1,0,140,37,255,255,66,36, + 17,0,162,160,25,0,64,20,37,24,46,1, + 16,0,162,144,1,0,173,37,64,18,2,0, + 33,64,89,0,140,0,7,141,0,129,10,52, + 4,0,230,140,0,0,163,140,0,0,160,172, + 12,0,170,172,4,0,197,172,12,0,239,172, + 33,56,192,0,216,0,2,141,33,48,160,0, + 1,0,66,36,0,128,99,48,4,0,96,20, + 216,0,2,173,4,0,165,140,114,22,192,8, + 0,0,0,0,140,0,7,173,37,24,46,1, + 0,128,2,60,0,0,98,172,40,22,192,8, + 33,72,96,1,104,0,137,172,176,0,140,172, + 180,0,141,172,4,0,177,143,0,0,176,143, + 8,0,224,3,8,0,189,39,224,255,189,39, + 16,0,176,175,33,128,128,0,24,0,191,175, + 20,0,177,175,44,0,17,142,0,0,0,0, + 0,0,34,150,0,0,0,0,0,32,66,48, + 89,0,64,16,0,0,0,0,2,0,34,150, + 0,0,0,0,0,1,66,48,84,0,64,20, + 0,0,0,0,27,22,192,12,0,0,0,0, + 104,0,4,142,0,0,0,0,2,0,130,148, + 0,128,3,52,255,255,66,48,75,0,67,16, + 0,0,0,0,224,0,2,142,0,0,0,0, + 1,0,66,36,224,0,2,174,4,0,36,174, + 0,0,128,164,4,0,130,140,0,0,0,0, + 0,0,64,164,0,0,2,142,0,0,0,0, + 51,0,64,16,0,33,2,36,2,0,34,150, + 0,0,0,0,47,0,64,16,0,33,2,36, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,34,150,0,0,0,0,211,255,64,20, + 0,33,2,36,2,0,34,166,0,0,2,142, + 0,0,0,0,5,0,64,16,0,0,0,0, + 8,0,2,142,0,0,0,0,242,22,192,8, + 0,0,64,172,164,7,192,12,0,0,0,0, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,108,0,133,140, + 0,0,0,0,4,0,162,140,0,0,0,0, + 4,0,67,140,104,0,130,140,0,0,0,0, + 5,0,98,20,33,16,160,0,184,0,131,140, + 33,16,0,0,1,0,99,36,184,0,131,172, + 8,0,224,3,0,0,0,0,224,255,189,39, + 16,0,176,175,33,128,128,0,28,0,191,175, + 24,0,178,175,20,0,177,175,108,0,18,142, + 8,1,6,142,44,0,17,142,4,0,66,142, + 104,0,7,142,4,0,66,140,18,0,163,148, + 172,0,4,142,0,0,0,0,6,0,71,20, + 255,255,99,48,184,0,3,142,33,16,0,0, + 1,0,99,36,157,23,192,8,184,0,3,174, + 33,48,195,0,1,0,130,36,172,0,2,174, + 8,1,6,174,8,0,162,140,4,1,3,142, + 0,0,70,144,33,32,64,2,8,0,69,174, + 12,0,64,174,1,0,194,48,2,0,64,16, + 1,0,98,36,4,1,2,174,0,0,2,142, + 0,0,0,0,35,0,64,20,0,0,0,0, + 18,0,162,148,0,0,0,0,255,255,66,48, + 12,0,66,174,0,0,34,150,0,0,0,0, + 0,32,66,48,24,0,64,16,12,0,2,36, + 2,0,34,150,0,0,0,0,0,1,66,48, + 19,0,64,20,12,0,2,36,4,0,242,16, + 0,0,0,0,27,22,192,12,33,32,0,2, + 12,0,2,36,2,0,66,166,104,0,4,142, + 0,0,0,0,0,0,128,164,4,0,130,140, + 0,0,0,0,0,0,64,164,0,33,2,36, + 4,0,36,174,164,7,192,12,2,0,34,166, + 154,23,192,8,0,0,0,0,154,23,192,8, + 2,0,130,164,0,0,34,150,0,0,0,0, + 0,32,66,48,69,0,64,16,12,0,2,36, + 4,0,242,16,0,0,0,0,27,22,192,12, + 33,32,0,2,12,0,2,36,2,0,66,166, + 104,0,4,142,0,0,0,0,0,0,128,164, + 4,0,130,140,0,0,0,0,0,0,64,164, + 4,0,36,174,2,0,34,150,0,0,0,0, + 47,0,64,16,0,33,2,36,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,34,150, + 0,0,0,0,211,255,64,20,0,33,2,36, + 2,0,34,166,8,0,2,142,0,0,0,0, + 154,23,192,8,0,0,64,172,2,0,66,166, + 4,0,67,142,1,0,2,36,108,0,3,174, + 28,0,191,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 216,255,189,39,20,0,177,175,33,136,128,0, + 24,0,178,175,2,131,18,60,192,131,82,38, + 28,0,179,175,0,1,19,36,32,0,191,175, + 16,0,176,175,104,0,48,142,108,0,34,142, + 0,0,0,0,4,0,2,22,0,0,0,0, + 2,0,2,150,245,23,192,8,0,0,0,0, + 2,0,2,150,0,0,0,0,7,0,66,48, + 11,0,64,20,33,40,64,2,2,131,4,60, + 160,131,132,36,2,131,7,60,252,131,231,36, + 15,63,192,12,0,2,6,36,1,0,4,36, + 33,40,64,2,188,7,192,12,0,2,6,36, + 2,0,2,150,4,0,3,36,7,0,66,48, + 40,0,67,20,0,128,2,52,8,0,3,142, + 0,0,0,0,17,0,98,144,0,0,0,0, + 255,255,66,36,17,0,98,160,17,0,98,144, + 0,0,0,0,30,0,64,20,0,128,2,52, + 180,0,34,142,33,32,96,0,1,0,66,36, + 180,0,34,174,16,0,130,144,2,131,3,60, + 192,246,99,36,64,18,2,0,33,56,67,0, + 140,0,230,140,0,129,8,52,4,0,197,140, + 0,0,131,140,0,0,128,172,12,0,136,172, + 4,0,164,172,12,0,211,172,33,48,160,0, + 216,0,226,140,33,40,128,0,1,0,66,36, + 0,128,99,48,4,0,96,20,216,0,226,172, + 4,0,132,140,223,23,192,8,0,0,0,0, + 140,0,230,172,0,128,2,52,2,0,2,166, + 0,0,0,166,4,0,16,142,174,23,192,8, + 0,0,0,0,44,0,35,142,104,0,48,174, + 0,0,98,148,0,0,0,0,0,32,66,52, + 0,0,98,164,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,0,163,2,60, + 0,1,66,52,0,0,66,140,2,131,3,60, + 192,6,99,36,255,3,66,48,60,0,66,36, + 0,128,66,52,8,0,224,3,0,0,98,172, + 208,255,189,39,28,0,177,175,33,136,128,0, + 32,0,178,175,33,144,160,0,24,0,176,175, + 0,163,16,60,0,163,2,60,164,1,66,140, + 0,1,16,54,44,0,191,175,40,0,180,175, + 4,0,64,20,36,0,179,175,60,0,2,36, + 0,163,1,60,164,1,34,172,0,163,2,60, + 164,1,66,140,0,0,0,0,221,5,66,40, + 3,0,64,20,220,5,2,36,0,163,1,60, + 164,1,34,172,0,163,3,60,164,1,99,140, + 255,255,2,36,21,0,98,20,0,0,0,0, + 128,128,130,143,0,0,0,0,5,0,67,20, + 2,0,5,36,130,11,192,12,0,0,0,0, + 128,128,130,175,2,0,5,36,10,0,6,36, + 128,128,132,143,0,131,7,60,8,96,231,36, + 156,11,192,12,16,0,160,175,0,0,2,142, + 2,131,3,60,192,6,99,36,255,3,66,48, + 66,24,192,8,64,0,66,36,0,163,2,60, + 164,1,66,140,2,131,3,60,192,6,99,36, + 0,128,66,52,0,0,98,172,255,31,4,60, + 255,255,132,52,2,131,2,60,208,6,66,36, + 36,16,68,0,0,160,5,60,37,16,69,0, + 2,131,3,60,176,12,99,36,2,131,1,60, + 196,6,32,172,2,131,1,60,200,6,34,172, + 12,0,2,36,0,0,96,164,2,131,1,60, + 178,12,34,164,6,0,65,6,36,16,100,0, + 37,16,69,0,2,131,1,60,180,12,34,172, + 99,24,192,8,255,31,18,60,2,131,2,60, + 178,12,66,148,0,0,0,0,0,128,66,52, + 2,131,1,60,178,12,34,164,255,31,18,60, + 255,255,82,54,2,131,2,60,192,6,66,36, + 36,16,82,0,0,160,20,60,37,16,84,0, + 2,131,1,60,184,12,34,172,2,131,1,60, + 188,12,32,172,44,0,34,142,0,0,0,0, + 0,0,66,148,2,131,19,60,176,12,115,38, + 0,32,66,48,15,0,64,20,33,40,0,0, + 2,131,4,60,160,131,132,36,2,131,16,60, + 192,131,16,38,33,40,0,2,2,131,7,60, + 24,132,231,36,15,63,192,12,71,2,6,36, + 1,0,4,36,33,40,0,2,188,7,192,12, + 71,2,6,36,33,40,0,0,33,48,0,0, + 36,16,114,2,44,0,35,142,37,16,84,0, + 4,0,98,172,44,0,36,142,208,7,7,36, + 129,67,192,12,2,0,132,36,12,0,64,20, + 0,0,0,0,44,0,34,142,0,0,0,0, + 2,0,69,148,2,131,4,60,15,63,192,12, + 56,132,132,36,255,255,4,36,2,131,5,60, + 192,131,165,36,188,7,192,12,79,2,6,36, + 44,0,34,142,0,33,3,36,2,0,67,164, + 8,0,34,142,0,0,0,0,0,0,64,172, + 44,0,191,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,48,0,189,39,232,255,189,39, + 128,128,132,143,0,128,2,52,16,0,191,175, + 2,131,1,60,3,0,128,4,178,12,34,164, + 177,11,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 8,0,224,3,0,0,0,0,0,0,0,0, + 0,0,0,0,240,255,2,52,2,131,1,60, + 33,8,34,0,208,12,32,172,240,255,66,36, + 251,255,65,4,0,0,0,0,2,131,2,60, + 208,12,66,36,0,163,1,60,12,1,32,172, + 0,163,1,60,212,5,34,172,1,0,2,60, + 148,133,128,175,144,133,128,175,0,163,1,60, + 8,0,224,3,216,5,34,172,0,0,136,148, + 4,0,138,148,1,0,2,49,34,0,64,20, + 2,0,137,148,0,25,10,0,38,24,106,0, + 38,24,105,0,240,255,99,48,2,131,15,60, + 208,12,239,37,33,40,111,0,68,133,142,143, + 128,0,3,36,0,0,162,140,4,0,171,148, + 23,0,64,16,43,16,194,1,9,0,64,16, + 6,0,172,148,7,0,11,21,8,0,173,148, + 5,0,44,21,0,0,0,0,3,0,77,21, + 10,0,162,148,8,0,224,3,0,0,0,0, + 255,255,99,36,10,0,96,16,240,255,165,36, + 43,16,175,0,238,255,64,16,0,0,162,140, + 248,127,229,37,248,127,165,36,218,24,192,8, + 0,0,162,140,8,0,224,3,254,255,2,36, + 8,0,224,3,255,255,2,36,8,0,224,3, + 0,0,0,0,0,0,136,148,68,133,142,143, + 1,0,2,49,53,0,64,20,2,0,137,148, + 0,131,2,60,4,0,138,148,12,1,89,140, + 0,25,10,0,38,24,106,0,38,24,105,0, + 240,255,99,48,2,131,15,60,208,12,239,37, + 33,56,111,0,128,0,3,36,0,0,248,140, + 4,0,235,148,43,16,216,1,14,0,64,16, + 6,0,236,148,24,0,11,21,8,0,237,148, + 22,0,44,21,255,127,2,60,20,0,77,21, + 255,255,66,52,43,16,2,3,2,0,64,16, + 33,16,198,1,0,0,226,172,10,0,229,164, + 8,0,224,3,0,0,2,36,3,0,0,23, + 1,0,57,35,0,131,2,60,12,1,89,172, + 33,16,198,1,0,0,226,172,10,0,229,164, + 4,0,232,164,6,0,233,164,8,0,234,164, + 8,0,224,3,1,0,2,36,255,255,99,36, + 11,0,96,16,0,0,0,0,240,255,231,36, + 43,16,239,0,221,255,64,16,0,0,248,140, + 248,127,231,37,248,127,231,36,8,25,192,8, + 0,0,248,140,8,0,224,3,0,0,2,36, + 144,133,130,143,0,0,0,0,1,0,66,32, + 144,133,130,175,8,0,224,3,255,255,2,36, + 8,0,224,3,0,0,0,0,164,128,130,143, + 0,0,0,0,7,0,130,20,232,255,189,39, + 160,128,130,143,2,131,3,60,208,12,99,36, + 0,17,2,0,108,25,192,8,33,16,67,0, + 42,16,130,0,3,0,64,16,255,255,2,36, + 164,128,128,175,160,128,130,175,164,128,130,143, + 160,128,131,143,35,48,130,0,1,0,101,36, + 0,16,162,40,25,0,64,16,0,25,5,0, + 68,133,135,143,2,131,2,60,33,16,67,0, + 208,12,66,140,0,0,0,0,43,16,226,0, + 4,0,64,16,0,0,0,0,255,255,198,36, + 6,0,192,16,0,16,162,40,1,0,165,36, + 0,16,162,40,243,255,64,20,16,0,99,36, + 0,16,162,40,7,0,64,16,0,25,5,0, + 2,131,2,60,208,12,66,36,160,128,133,175, + 164,128,132,175,108,25,192,8,33,16,98,0, + 33,16,0,0,255,255,3,36,164,128,128,175, + 160,128,131,175,8,0,224,3,24,0,189,39, + 0,0,0,0,0,0,0,0,24,255,189,39, + 228,0,191,175,224,0,190,175,220,0,183,175, + 216,0,182,175,212,0,181,175,208,0,180,175, + 204,0,179,175,200,0,178,175,196,0,177,175, + 192,0,176,175,44,28,192,12,0,0,0,0, + 176,128,132,39,15,63,192,12,1,0,17,36, + 24,0,176,39,164,68,192,12,33,32,0,2, + 24,0,162,131,0,0,0,0,137,25,192,8, + 32,0,8,36,0,0,2,130,32,0,8,36, + 253,255,72,16,1,0,16,38,255,255,16,38, + 9,0,8,36,249,255,72,16,1,0,16,38, + 255,255,16,38,0,0,2,146,0,0,0,0, + 208,255,66,36,10,0,66,44,27,0,64,16, + 33,32,0,2,33,40,0,0,212,68,192,12, + 33,48,0,0,0,0,3,146,0,0,0,0, + 208,255,99,36,10,0,99,44,9,0,96,16, + 33,136,64,0,1,0,16,38,0,0,2,146, + 0,0,0,0,208,255,66,36,10,0,66,44, + 251,255,64,20,1,0,16,38,255,255,16,38, + 0,0,2,130,32,0,8,36,253,255,72,16, + 1,0,16,38,255,255,16,38,9,0,8,36, + 249,255,72,16,1,0,16,38,255,255,16,38, + 0,0,2,130,0,0,3,146,0,0,0,0, + 22,0,64,16,104,0,180,39,32,0,8,36, + 19,0,72,16,9,0,8,36,17,0,72,16, + 32,0,5,36,9,0,4,36,208,255,98,36, + 10,0,66,44,12,0,64,20,0,0,0,0, + 1,0,16,38,0,0,131,162,0,0,2,130, + 0,0,3,146,0,0,0,0,5,0,64,16, + 1,0,148,38,3,0,69,16,0,0,0,0, + 243,255,68,20,208,255,98,36,0,0,128,162, + 104,0,180,39,0,0,2,130,32,0,8,36, + 253,255,72,16,1,0,16,38,255,255,16,38, + 9,0,8,36,249,255,72,16,1,0,16,38, + 255,255,16,38,33,240,0,2,0,0,196,131, + 0,0,0,0,32,69,192,12,144,0,190,175, + 11,0,64,16,33,32,192,3,33,40,0,0, + 212,68,192,12,33,48,0,0,33,152,64,0, + 33,32,192,3,33,40,0,0,44,69,192,12, + 16,0,6,36,232,25,192,8,33,144,64,0, + 255,255,18,36,255,255,19,36,0,0,3,130, + 0,0,2,146,0,0,0,0,17,0,96,16, + 32,0,8,36,15,0,104,16,1,0,16,38, + 255,255,16,38,32,0,4,36,0,22,2,0, + 3,22,2,0,9,0,8,36,8,0,72,16, + 0,0,0,0,1,0,16,38,0,0,3,130, + 0,0,2,146,3,0,96,16,0,0,0,0, + 246,255,100,20,0,22,2,0,0,0,2,130, + 32,0,8,36,253,255,72,16,1,0,16,38, + 255,255,16,38,9,0,8,36,249,255,72,16, + 1,0,16,38,255,255,16,38,33,184,0,2, + 33,32,224,2,33,40,0,0,212,68,192,12, + 33,48,0,0,33,32,224,2,33,40,0,0, + 16,0,6,36,44,69,192,12,33,176,64,0, + 0,0,227,130,0,0,0,0,15,0,96,16, + 33,168,64,0,32,0,8,36,12,0,104,16, + 32,0,3,36,0,0,2,130,9,0,8,36, + 8,0,72,16,0,0,0,0,1,0,16,38, + 0,0,2,130,0,0,0,0,3,0,64,16, + 0,0,0,0,248,255,67,20,0,0,0,0, + 0,0,131,130,0,0,0,0,121,0,98,44, + 244,1,64,16,128,16,3,0,2,131,1,60, + 33,8,34,0,160,138,34,140,0,0,0,0, + 8,0,64,0,0,0,0,0,1,0,131,130, + 104,0,2,36,26,0,98,16,105,0,98,40, + 7,0,64,16,116,0,2,36,34,0,96,16, + 98,0,2,36,11,0,98,16,0,0,0,0, + 26,28,192,8,0,0,0,0,5,0,98,16, + 119,0,8,36,27,0,104,16,33,16,32,2, + 26,28,192,8,0,0,0,0,4,162,2,60, + 33,144,66,2,2,0,130,130,0,0,0,0, + 214,1,64,20,0,0,0,0,2,131,4,60, + 108,132,132,36,0,0,70,146,82,26,192,8, + 0,0,0,0,2,0,130,130,0,0,0,0, + 205,1,64,20,0,0,0,0,2,131,4,60, + 120,132,132,36,0,0,70,150,0,0,0,0, + 15,63,192,12,33,40,64,2,125,25,192,8, + 0,0,0,0,33,16,32,2,37,255,64,16, + 255,255,49,38,0,0,80,142,2,131,4,60, + 132,132,132,36,33,40,64,2,4,0,82,38, + 15,63,192,12,33,48,0,2,33,16,32,2, + 247,255,64,20,255,255,49,38,125,25,192,8, + 0,0,0,0,1,0,131,130,104,0,2,36, + 23,0,98,16,105,0,98,40,7,0,64,16, + 116,0,2,36,25,0,96,16,98,0,2,36, + 11,0,98,16,0,0,0,0,26,28,192,8, + 0,0,0,0,5,0,98,16,119,0,8,36, + 17,0,104,16,0,0,0,0,26,28,192,8, + 0,0,0,0,4,162,2,60,33,144,66,2, + 2,0,130,130,0,0,0,0,158,1,64,20, + 0,0,0,0,125,25,192,8,0,0,85,162, + 2,0,130,130,0,0,0,0,152,1,64,20, + 0,0,0,0,125,25,192,8,0,0,85,166, + 125,25,192,8,0,0,85,174,0,163,16,60, + 31,163,17,60,255,255,49,54,0,0,2,142, + 0,0,0,0,4,0,82,20,0,0,0,0, + 180,128,132,39,15,63,192,12,33,40,0,2, + 4,0,16,38,43,16,48,2,246,255,64,16, + 0,0,0,0,125,25,192,8,0,0,0,0, + 33,16,32,2,228,254,64,16,255,255,49,38, + 33,32,96,2,164,32,192,12,33,40,192,2, + 33,16,32,2,251,255,64,20,255,255,49,38, + 125,25,192,8,0,0,0,0,1,0,130,130, + 0,0,0,0,117,1,64,20,33,32,32,2, + 133,29,192,12,33,40,96,2,125,25,192,8, + 0,0,0,0,33,32,96,2,33,40,32,2, + 234,31,192,12,33,48,192,2,125,25,192,8, + 0,0,0,0,1,0,130,130,0,0,0,0, + 103,1,64,20,33,16,32,2,200,254,64,16, + 255,255,49,38,33,32,96,2,33,40,192,2, + 182,29,192,12,33,48,0,2,33,16,32,2, + 250,255,64,20,255,255,49,38,125,25,192,8, + 0,0,0,0,33,32,32,2,33,40,96,2, + 33,48,192,2,38,30,192,12,33,56,0,2, + 125,25,192,8,0,0,0,0,5,162,2,60, + 0,0,69,144,2,131,4,60,15,63,192,12, + 144,132,132,36,125,25,192,8,0,0,0,0, + 0,163,1,60,20,1,32,172,14,0,32,18, + 33,128,0,0,164,7,192,12,1,0,16,38, + 143,63,192,12,0,0,0,0,143,63,192,12, + 0,0,0,0,143,63,192,12,0,0,0,0, + 143,63,192,12,0,0,0,0,43,16,17,2, + 244,255,64,20,0,0,0,0,184,63,192,12, + 0,0,0,0,0,163,16,60,20,1,16,142, + 0,0,0,0,7,0,17,22,33,40,32,2, + 2,131,4,60,164,132,132,36,15,63,192,12, + 33,40,32,2,125,25,192,8,0,0,0,0, + 2,131,4,60,188,132,132,36,15,63,192,12, + 33,48,0,2,125,25,192,8,0,0,0,0, + 0,0,226,130,7,162,8,60,16,0,64,16, + 33,144,72,2,33,16,32,2,134,254,64,16, + 255,255,49,38,0,0,85,174,2,131,4,60, + 132,132,132,36,33,40,64,2,15,63,192,12, + 33,48,160,2,4,0,82,38,33,16,32,2, + 247,255,64,20,255,255,49,38,125,25,192,8, + 0,0,0,0,33,16,32,2,119,254,64,16, + 255,255,49,38,0,0,80,142,2,131,4,60, + 132,132,132,36,33,40,64,2,4,0,82,38, + 15,63,192,12,33,48,0,2,33,16,32,2, + 247,255,64,20,255,255,49,38,125,25,192,8, + 0,0,0,0,7,162,16,60,64,0,17,38, + 2,131,4,60,228,132,132,36,33,40,0,2, + 0,0,6,142,0,0,0,0,15,63,192,12, + 4,0,16,38,42,16,17,2,247,255,64,20, + 7,162,8,60,128,0,16,37,176,0,17,37, + 2,131,4,60,228,132,132,36,33,40,0,2, + 0,0,6,142,0,0,0,0,15,63,192,12, + 4,0,16,38,42,16,17,2,247,255,64,20, + 7,162,8,60,192,0,16,37,240,0,17,37, + 2,131,4,60,228,132,132,36,33,40,0,2, + 0,0,6,142,0,0,0,0,15,63,192,12, + 4,0,16,38,42,16,17,2,247,255,64,20, + 0,0,0,0,125,25,192,8,0,0,0,0, + 1,0,130,130,0,0,0,0,222,0,64,20, + 33,16,32,2,63,254,64,16,255,255,49,38, + 33,32,96,2,213,29,192,12,33,40,160,2, + 33,16,32,2,251,255,64,20,255,255,49,38, + 125,25,192,8,0,0,0,0,1,0,130,130, + 0,0,0,0,208,0,64,20,33,16,32,2, + 49,254,64,16,255,255,49,38,33,32,96,2, + 161,31,192,12,33,40,192,2,33,16,32,2, + 251,255,64,20,255,255,49,38,125,25,192,8, + 0,0,0,0,33,16,32,2,38,254,64,16, + 255,255,49,38,208,32,192,12,33,32,0,0, + 33,32,0,0,164,32,192,12,33,40,0,0, + 40,29,192,12,0,0,0,0,133,29,192,12, + 255,255,4,36,33,16,32,2,245,255,64,20, + 255,255,49,38,125,25,192,8,0,0,0,0, + 1,0,131,130,87,0,2,36,27,0,98,16, + 88,0,98,40,7,0,64,16,114,0,2,36, + 37,0,96,16,82,0,2,36,9,0,98,16, + 0,0,0,0,125,25,192,8,0,0,0,0, + 5,0,98,16,119,0,8,36,15,0,104,16, + 0,0,0,0,125,25,192,8,0,0,0,0, + 2,0,130,130,0,0,0,0,159,0,64,20, + 0,0,0,0,60,65,192,12,33,32,96,2, + 184,128,132,39,33,40,96,2,15,63,192,12, + 33,48,64,0,125,25,192,8,0,0,0,0, + 2,0,130,130,0,0,0,0,147,0,64,20, + 33,32,96,2,162,65,192,12,33,40,160,2, + 242,253,64,20,33,40,160,2,2,131,4,60, + 8,133,132,36,15,63,192,12,33,48,96,2, + 125,25,192,8,0,0,0,0,33,16,32,2, + 233,253,64,16,255,255,49,38,40,29,192,12, + 0,0,0,0,33,16,32,2,252,255,64,20, + 255,255,49,38,125,25,192,8,0,0,0,0, + 1,0,133,130,87,0,2,36,29,0,162,16, + 88,0,162,40,5,0,64,16,82,0,2,36, + 11,0,162,16,33,16,32,2,125,25,192,8, + 0,0,0,0,114,0,2,36,5,0,162,16, + 119,0,8,36,19,0,168,16,33,32,64,2, + 125,25,192,8,0,0,0,0,33,16,32,2, + 206,253,64,16,255,255,49,38,168,69,192,12, + 33,32,64,2,184,128,132,39,33,40,64,2, + 15,63,192,12,33,48,64,0,1,0,82,38, + 33,16,32,2,247,255,64,20,255,255,49,38, + 125,25,192,8,0,0,0,0,33,32,64,2, + 29,70,192,12,33,40,160,2,189,253,64,20, + 33,40,160,2,2,131,4,60,40,133,132,36, + 15,63,192,12,33,48,64,2,125,25,192,8, + 0,0,0,0,144,0,164,143,122,28,192,12, + 0,0,0,0,125,25,192,8,0,0,0,0, + 33,16,96,2,175,253,64,16,255,255,115,38, + 143,63,192,12,0,0,0,0,33,16,96,2, + 252,255,64,20,255,255,115,38,125,25,192,8, + 0,0,0,0,33,16,32,2,165,253,64,16, + 255,255,49,38,33,32,96,2,208,32,192,12, + 33,40,192,2,33,16,32,2,251,255,64,20, + 255,255,49,38,125,25,192,8,0,0,0,0, + 1,0,130,146,0,0,0,0,159,255,66,36, + 0,22,2,0,3,30,2,0,24,0,98,44, + 27,0,64,16,128,16,3,0,2,131,1,60, + 33,8,34,0,136,140,34,140,0,0,0,0, + 8,0,64,0,0,0,0,0,12,33,192,12, + 33,32,64,2,125,25,192,8,0,0,0,0, + 15,33,192,12,33,32,96,2,125,25,192,8, + 0,0,0,0,18,33,192,12,33,32,96,2, + 125,25,192,8,0,0,0,0,22,33,192,12, + 33,32,96,2,125,25,192,8,0,0,0,0, + 25,33,192,12,33,32,64,2,125,25,192,8, + 0,0,0,0,33,32,64,2,7,33,192,12, + 33,40,192,2,125,25,192,8,0,0,0,0, + 16,0,182,175,33,32,32,2,33,40,192,3, + 33,48,224,2,161,33,192,12,33,56,160,2, + 125,25,192,8,0,0,0,0,33,136,0,0, + 2,131,4,60,72,133,132,36,15,63,192,12, + 1,0,49,38,32,0,34,46,250,255,64,20, + 0,0,0,0,125,25,192,8,0,0,0,0, + 2,131,4,60,92,133,132,36,15,63,192,12, + 33,40,128,2,123,25,192,8,0,0,0,0, + 228,0,191,143,224,0,190,143,220,0,183,143, + 216,0,182,143,212,0,181,143,208,0,180,143, + 204,0,179,143,200,0,178,143,196,0,177,143, + 192,0,176,143,8,0,224,3,232,0,189,39, + 232,255,189,39,2,131,5,60,192,154,165,36, + 20,0,191,175,16,0,176,175,0,0,162,140, + 0,0,0,0,9,0,64,16,33,128,160,0, + 0,0,5,142,192,128,132,39,15,63,192,12, + 4,0,16,38,0,0,2,142,0,0,0,0, + 249,255,64,20,0,0,0,0,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 0,0,132,144,0,0,0,0,208,255,130,36, + 10,0,66,44,4,0,64,16,0,22,4,0, + 3,22,2,0,89,28,192,8,208,255,66,36, + 159,255,130,36,6,0,66,44,4,0,64,16, + 0,22,4,0,3,22,2,0,89,28,192,8, + 169,255,66,36,191,255,130,36,6,0,66,44, + 3,0,64,20,0,22,4,0,89,28,192,8, + 255,255,2,36,3,22,2,0,201,255,66,36, + 8,0,224,3,0,0,0,0,216,255,189,39, + 24,0,178,175,33,144,128,0,32,0,191,175, + 28,0,179,175,20,0,177,175,16,0,176,175, + 0,0,81,142,0,0,0,0,65,28,192,12, + 33,32,32,2,33,24,64,0,255,255,19,36, + 9,0,115,16,0,129,3,0,65,28,192,12, + 1,0,36,38,33,24,64,0,4,0,115,16, + 2,0,34,38,0,0,66,174,115,28,192,8, + 37,16,3,2,255,255,2,36,32,0,191,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,40,0,189,39, + 176,255,189,39,64,0,180,175,33,160,128,0, + 72,0,191,175,68,0,181,175,60,0,179,175, + 56,0,178,175,52,0,177,175,48,0,176,175, + 0,0,130,130,0,0,0,0,53,0,64,20, + 33,128,0,0,27,67,192,12,33,32,0,0, + 1,0,4,36,27,67,192,12,33,128,64,0, + 2,0,4,36,27,67,192,12,33,136,64,0, + 33,24,64,0,255,255,2,36,5,0,2,18, + 0,0,0,0,3,0,34,18,0,0,0,0, + 6,0,98,20,255,255,2,52,2,131,4,60, + 15,63,192,12,60,137,132,36,29,29,192,8, + 0,0,0,0,5,0,2,18,0,0,0,0, + 3,0,34,18,0,0,0,0,6,0,98,20, + 1,0,2,50,2,131,4,60,15,63,192,12, + 104,137,132,36,29,29,192,8,0,0,0,0, + 6,0,64,16,255,0,5,50,2,131,4,60, + 15,63,192,12,132,137,132,36,29,29,192,8, + 0,0,0,0,2,131,4,60,176,137,132,36, + 3,50,16,0,3,18,17,0,16,0,162,175, + 255,0,98,48,20,0,162,175,3,18,3,0, + 255,0,39,50,15,63,192,12,24,0,162,175, + 29,29,192,8,0,0,0,0,40,0,180,175, + 58,0,21,36,32,0,19,36,255,255,18,36, + 32,0,177,39,40,0,162,143,0,0,0,0, + 0,0,67,128,0,0,0,0,3,0,117,16, + 0,0,0,0,3,0,115,20,0,0,0,0, + 1,0,66,36,40,0,162,175,91,28,192,12, + 40,0,164,39,33,24,64,0,75,0,114,16, + 0,0,0,0,40,0,162,143,0,0,35,166, + 0,0,67,128,0,0,0,0,3,0,117,16, + 0,0,0,0,3,0,115,20,0,0,0,0, + 1,0,66,36,40,0,162,175,91,28,192,12, + 40,0,164,39,33,24,64,0,60,0,114,16, + 1,0,16,38,0,0,34,150,0,26,3,0, + 37,16,67,0,0,0,34,166,3,0,2,42, + 220,255,64,20,2,0,49,38,32,0,165,151, + 0,0,0,0,1,0,162,48,7,0,64,16, + 0,0,0,0,2,131,4,60,208,137,132,36, + 15,63,192,12,255,0,165,48,25,29,192,8, + 0,0,0,0,36,0,162,151,0,0,0,0, + 0,7,66,48,6,0,64,16,0,0,0,0, + 2,131,4,60,15,63,192,12,0,138,132,36, + 25,29,192,8,0,0,0,0,255,66,192,12, + 33,32,0,0,1,0,4,36,34,0,165,151, + 0,0,0,0,255,66,192,12,33,128,0,0, + 36,0,165,151,0,0,0,0,255,66,192,12, + 2,0,4,36,2,131,4,60,15,63,192,12, + 32,138,132,36,2,131,4,60,80,138,132,36, + 15,63,192,12,33,40,0,2,196,128,132,39, + 200,128,134,39,31,21,192,12,32,0,165,39, + 36,0,162,151,1,0,16,38,0,1,66,36, + 36,0,162,167,8,0,2,42,7,0,64,16, + 0,0,0,0,8,29,192,8,0,0,0,0, + 2,131,4,60,116,138,132,36,15,63,192,12, + 33,40,128,2,72,0,191,143,68,0,181,143, + 64,0,180,143,60,0,179,143,56,0,178,143, + 52,0,177,143,48,0,176,143,8,0,224,3, + 80,0,189,39,0,0,0,0,0,0,0,0, + 224,255,189,39,16,0,176,175,33,128,0,0, + 20,0,177,175,33,136,0,0,24,0,191,175, + 33,32,0,2,162,65,192,12,33,40,0,0, + 43,0,64,16,0,0,0,0,1,0,16,38, + 64,0,2,42,249,255,64,20,33,32,0,2, + 33,128,0,0,85,85,17,36,33,32,0,2, + 162,65,192,12,85,85,5,36,32,0,64,16, + 0,0,0,0,1,0,16,38,64,0,2,42, + 249,255,64,20,33,32,0,2,33,128,0,0, + 170,170,17,52,33,32,0,2,162,65,192,12, + 170,170,5,52,21,0,64,16,0,0,0,0, + 1,0,16,38,64,0,2,42,249,255,64,20, + 33,32,0,2,33,128,0,0,255,255,17,52, + 33,32,0,2,162,65,192,12,255,255,5,52, + 10,0,64,16,0,0,0,0,1,0,16,38, + 64,0,2,42,249,255,64,20,33,32,0,2, + 2,131,4,60,15,63,192,12,240,140,132,36, + 101,29,192,8,0,0,0,0,60,65,192,12, + 33,32,0,2,2,131,4,60,4,141,132,36, + 33,40,32,2,33,48,0,2,15,63,192,12, + 33,56,64,0,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 0,0,0,0,0,0,0,0,232,255,189,39, + 16,0,191,175,210,7,192,12,0,0,0,0, + 139,14,192,12,0,0,0,0,180,10,192,12, + 0,0,0,0,32,133,132,143,1,0,2,36, + 42,16,68,0,9,0,64,16,0,2,3,36, + 64,34,4,0,2,131,1,60,33,8,35,0, + 196,246,32,172,0,2,99,36,42,16,100,0, + 250,255,64,20,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 208,255,189,39,24,0,178,175,33,144,128,0, + 32,0,180,175,33,160,160,0,44,0,191,175, + 40,0,182,175,36,0,181,175,28,0,179,175, + 20,0,177,175,3,0,128,26,16,0,176,175, + 149,29,192,8,1,0,147,38,1,0,20,36, + 32,133,147,143,255,255,82,38,255,255,2,36, + 20,0,66,18,255,255,21,36,2,131,22,60, + 192,246,214,38,108,29,192,12,33,128,128,2, + 42,16,19,2,10,0,64,16,64,18,16,0, + 33,136,86,0,242,21,192,12,33,32,32,2, + 133,12,192,12,33,32,0,2,1,0,16,38, + 42,16,19,2,249,255,64,20,0,2,49,38, + 255,255,82,38,240,255,85,22,0,0,0,0, + 44,0,191,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 48,0,189,39,216,255,189,39,24,0,178,175, + 33,144,160,0,28,0,179,175,33,152,192,0, + 32,0,191,175,20,0,177,175,3,0,128,24, + 16,0,176,175,195,29,192,8,1,0,145,36, + 1,0,4,36,32,133,145,143,33,128,128,0, + 42,16,17,2,8,0,64,16,33,32,0,2, + 33,40,64,2,250,29,192,12,33,48,96,2, + 1,0,16,38,42,16,17,2,250,255,64,20, + 33,32,0,2,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,224,255,189,39, + 24,0,191,175,20,0,177,175,3,0,128,24, + 16,0,176,175,222,29,192,8,1,0,145,36, + 1,0,4,36,32,133,145,143,33,128,128,0, + 42,16,17,2,7,0,64,16,0,0,0,0, + 237,29,192,12,33,32,0,2,1,0,16,38, + 42,16,17,2,251,255,64,20,0,0,0,0, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,64,34,4,0, + 2,131,2,60,192,246,66,36,33,32,130,0, + 44,0,131,140,1,0,2,36,32,0,130,172, + 16,0,2,36,2,0,98,164,8,0,130,140, + 0,0,0,0,8,0,224,3,0,0,64,172, + 208,255,189,39,33,48,128,0,64,18,6,0, + 2,131,3,60,192,246,99,36,36,0,177,175, + 33,136,67,0,40,0,191,175,32,0,176,175, + 4,0,34,142,0,0,0,0,4,0,64,20, + 33,128,160,0,1,0,4,36,133,29,192,12, + 33,40,192,0,3,0,0,30,221,5,2,42, + 17,30,192,8,1,0,16,36,3,0,64,20, + 33,32,32,2,220,5,16,36,33,32,32,2, + 208,7,5,36,108,0,131,140,12,0,2,36, + 2,0,98,164,16,0,162,39,8,0,98,172, + 0,128,2,54,12,0,96,172,16,0,162,175, + 255,255,2,36,20,0,162,175,2,131,2,60, + 0,155,66,36,98,31,192,12,24,0,162,175, + 40,0,191,143,36,0,177,143,32,0,176,143, + 8,0,224,3,48,0,189,39,56,254,189,39, + 160,1,176,175,33,128,192,0,48,1,164,175, + 33,32,224,0,64,18,5,0,2,131,3,60, + 192,246,99,36,33,16,67,0,56,1,162,175, + 64,18,16,0,33,16,67,0,40,0,168,39, + 196,1,191,175,192,1,190,175,188,1,183,175, + 184,1,182,175,180,1,181,175,176,1,180,175, + 172,1,179,175,168,1,178,175,164,1,177,175, + 64,1,162,175,12,0,160,24,96,1,168,175, + 32,133,131,143,0,0,0,0,42,16,163,0, + 19,1,64,16,1,0,2,36,5,0,0,26, + 42,16,3,2,15,1,64,16,1,0,2,36, + 3,0,176,20,33,40,0,0,86,31,192,8, + 1,0,2,36,212,68,192,12,33,48,0,0, + 6,0,65,4,104,1,162,175,33,72,64,0, + 35,72,9,0,104,1,169,175,87,30,192,8, + 112,1,160,175,1,0,8,36,112,1,168,175, + 1,0,4,36,133,29,192,12,33,40,0,0, + 237,29,192,12,33,32,0,2,24,0,169,39, + 56,1,168,143,255,0,2,36,80,1,169,175, + 108,0,8,141,43,1,163,39,72,1,168,175, + 0,0,98,160,255,255,66,36,253,255,65,4, + 255,255,99,36,64,1,169,143,0,0,0,0, + 120,0,41,141,64,1,168,143,128,1,169,175, + 124,0,8,141,64,1,169,143,136,1,168,175, + 44,0,34,141,0,0,0,0,12,0,64,172, + 44,0,34,141,0,0,0,0,16,0,64,172, + 44,0,34,141,120,1,160,175,32,0,64,172, + 44,0,34,141,88,1,160,175,24,0,64,172, + 48,1,168,143,0,0,0,0,168,0,0,25, + 40,0,169,39,144,1,169,175,88,1,168,143, + 0,0,0,0,255,0,2,49,4,0,86,36, + 60,0,194,42,2,0,64,16,0,0,0,0, + 60,0,22,36,104,1,169,143,0,0,0,0, + 2,0,32,17,0,0,0,0,104,1,182,143, + 56,1,164,143,72,1,168,143,12,0,2,36, + 2,0,2,165,80,1,169,143,0,128,194,54, + 8,0,9,173,12,0,0,173,0,0,34,173, + 255,255,8,36,4,0,40,173,144,1,168,143, + 0,0,0,0,8,0,40,173,88,1,168,143, + 96,1,169,143,208,7,5,36,98,31,192,12, + 0,0,40,173,0,128,5,52,0,128,6,52, + 128,1,164,143,0,0,0,0,129,67,192,12, + 2,0,7,36,13,0,64,20,0,0,0,0, + 88,1,165,143,2,131,4,60,15,63,192,12, + 64,141,132,36,120,1,169,143,0,0,0,0, + 1,0,41,37,20,0,34,41,117,0,64,16, + 120,1,169,175,32,31,192,8,0,0,0,0, + 128,1,168,143,64,1,169,143,8,0,2,141, + 255,255,8,36,136,0,53,141,0,0,0,0, + 50,0,72,16,33,184,0,0,1,0,4,36, + 4,0,18,36,4,0,3,36,0,0,190,142, + 8,0,166,142,112,1,169,143,255,63,212,51, + 30,0,32,17,33,184,244,2,42,16,116,0, + 27,0,64,16,33,152,96,0,144,1,168,143, + 0,0,0,0,33,136,72,2,33,128,102,0, + 15,0,128,16,0,0,0,0,0,0,2,146, + 0,0,35,146,0,0,0,0,10,0,67,16, + 33,48,192,2,2,131,4,60,92,141,132,36, + 88,1,165,143,16,0,163,175,0,0,2,146, + 33,56,64,2,15,63,192,12,20,0,162,175, + 33,32,0,0,1,0,115,38,1,0,16,38, + 1,0,49,38,42,16,116,2,235,255,64,20, + 1,0,82,38,33,24,0,0,4,0,181,142, + 0,128,194,51,217,255,64,16,0,0,0,0, + 128,1,169,143,0,0,0,0,8,0,34,141, + 0,0,0,0,25,0,128,16,18,0,87,164, + 9,0,246,18,33,48,192,2,2,131,4,60, + 140,141,132,36,88,1,165,143,0,0,0,0, + 15,63,192,12,33,56,224,2,5,31,192,8, + 0,0,0,0,64,1,168,143,0,0,0,0, + 136,0,2,141,96,1,169,143,8,0,70,140, + 0,0,34,141,0,0,198,140,0,0,0,0, + 7,0,194,16,0,0,0,0,88,1,165,143, + 2,131,4,60,15,63,192,12,184,141,132,36, + 64,1,168,143,0,0,0,0,136,0,4,141, + 152,21,192,12,0,0,0,0,64,1,169,143, + 0,0,0,0,136,0,53,173,128,1,168,143, + 8,128,2,52,0,0,0,165,2,0,2,165, + 8,0,0,173,12,0,0,165,136,1,169,143, + 8,0,2,36,2,0,34,165,4,0,40,141, + 128,1,169,143,136,1,168,175,4,0,41,141, + 64,1,168,143,128,1,169,175,120,0,9,173, + 136,1,169,143,0,0,0,0,124,0,9,173, + 88,1,168,143,48,1,169,143,1,0,8,37, + 42,16,9,1,91,255,64,20,88,1,168,175, + 64,1,168,143,0,0,0,0,44,0,3,141, + 0,0,0,0,12,0,98,140,0,0,0,0, + 5,0,64,16,0,0,0,0,12,0,101,140, + 2,131,4,60,15,63,192,12,212,141,132,36, + 64,1,169,143,0,0,0,0,44,0,35,141, + 0,0,0,0,16,0,98,140,0,0,0,0, + 5,0,64,16,0,0,0,0,16,0,101,140, + 2,131,4,60,15,63,192,12,240,141,132,36, + 64,1,168,143,0,0,0,0,44,0,3,141, + 0,0,0,0,32,0,98,140,0,0,0,0, + 5,0,64,16,0,0,0,0,32,0,101,140, + 2,131,4,60,15,63,192,12,16,142,132,36, + 64,1,169,143,0,0,0,0,44,0,35,141, + 0,0,0,0,24,0,98,140,0,0,0,0, + 5,0,64,16,0,0,0,0,24,0,101,140, + 2,131,4,60,15,63,192,12,48,142,132,36, + 196,1,191,143,192,1,190,143,188,1,183,143, + 184,1,182,143,180,1,181,143,176,1,180,143, + 172,1,179,143,168,1,178,143,164,1,177,143, + 160,1,176,143,8,0,224,3,200,1,189,39, + 224,255,189,39,16,0,176,175,33,128,128,0, + 24,0,191,175,20,0,177,175,44,0,4,142, + 0,0,0,0,0,0,130,148,0,0,0,0, + 0,32,66,48,7,0,64,20,33,136,160,0, + 0,0,133,148,2,131,4,60,15,63,192,12, + 80,142,132,36,156,31,192,8,3,0,2,36, + 2,0,132,36,33,40,0,0,33,48,0,0, + 129,67,192,12,33,56,32,2,13,0,64,16, + 33,40,0,0,44,0,3,142,0,33,2,36, + 2,0,98,164,8,0,2,142,33,48,0,0, + 0,0,64,172,44,0,4,142,33,56,32,2, + 129,67,192,12,2,0,132,36,9,0,64,20, + 0,32,5,36,44,0,2,142,0,0,0,0, + 2,0,69,148,2,131,4,60,15,63,192,12, + 108,142,132,36,156,31,192,8,1,0,2,36, + 44,0,4,142,0,32,6,36,129,67,192,12, + 33,56,32,2,8,0,64,20,33,16,0,0, + 44,0,2,142,0,0,0,0,0,0,69,148, + 2,131,4,60,15,63,192,12,132,142,132,36, + 2,0,2,36,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 224,255,189,39,24,0,178,175,33,144,160,0, + 28,0,191,175,20,0,177,175,7,0,128,4, + 16,0,176,175,24,133,130,143,0,0,0,0, + 255,255,66,36,42,16,68,0,4,0,64,16, + 33,136,128,0,24,133,130,143,33,32,0,0, + 255,255,81,36,33,128,128,0,42,16,48,2, + 7,0,64,20,33,32,0,2,193,31,192,12, + 33,40,64,2,1,0,16,38,42,16,48,2, + 251,255,64,16,33,32,0,2,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,8,0,224,3, + 0,0,0,0,232,255,189,39,16,0,191,175, + 236,63,192,12,1,16,4,36,85,0,2,36, + 131,131,1,60,128,18,34,160,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 216,255,189,39,28,0,177,175,33,136,128,0, + 32,0,178,175,33,144,160,0,212,128,132,39, + 36,0,191,175,15,63,192,12,24,0,176,175, + 9,0,64,26,33,128,0,0,0,0,37,146, + 1,0,49,38,220,128,132,39,15,63,192,12, + 1,0,16,38,42,16,18,2,249,255,64,20, + 0,0,0,0,228,128,132,39,15,63,192,12, + 0,0,0,0,36,0,191,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 40,0,189,39,48,255,189,39,33,56,128,0, + 192,0,178,175,33,144,160,0,200,0,180,175, + 33,160,192,0,255,255,226,36,6,0,66,44, + 204,0,191,175,196,0,179,175,188,0,177,175, + 2,0,64,20,184,0,176,175,1,0,7,36, + 2,0,64,30,0,0,0,0,1,0,18,36, + 2,0,128,30,64,18,7,0,60,0,20,36, + 2,131,3,60,192,246,99,36,33,136,67,0, + 4,0,34,142,0,0,0,0,4,0,64,20, + 33,152,64,2,1,0,4,36,133,29,192,12, + 33,40,224,0,255,31,4,60,255,255,132,52, + 0,128,133,54,120,0,162,39,36,16,68,0, + 0,160,3,60,37,16,67,0,104,0,165,175, + 108,0,160,175,112,0,162,175,12,0,2,36, + 80,0,160,167,82,0,162,167,80,0,162,39, + 36,16,68,0,37,128,67,0,104,0,162,39, + 36,16,68,0,232,128,132,143,37,16,67,0, + 84,0,176,175,88,0,162,175,92,0,160,175, + 5,0,128,16,4,0,2,36,82,0,162,167, + 255,255,2,36,92,0,165,175,88,0,162,175, + 44,0,34,142,0,0,0,0,0,0,66,148, + 0,0,0,0,0,32,66,48,7,0,64,20, + 33,40,0,0,255,255,4,36,2,131,5,60, + 184,142,165,36,188,7,192,12,208,1,6,36, + 33,40,0,0,44,0,34,142,33,48,0,0, + 4,0,80,172,44,0,36,142,208,7,7,36, + 129,67,192,12,2,0,132,36,12,0,64,20, + 0,0,0,0,44,0,34,142,0,0,0,0, + 2,0,69,148,2,131,4,60,15,63,192,12, + 108,142,132,36,255,255,4,36,2,131,5,60, + 184,142,165,36,188,7,192,12,216,1,6,36, + 34,11,192,12,1,0,4,36,0,163,16,60, + 4,1,16,142,0,163,2,60,4,1,66,140, + 0,0,0,0,252,255,2,18,0,33,3,36, + 44,0,34,142,0,0,0,0,2,0,67,164, + 8,0,34,142,0,0,0,0,0,0,64,172, + 0,163,16,60,4,1,16,142,44,0,36,142, + 0,0,0,0,4,0,130,140,0,0,0,0, + 0,0,66,148,0,0,0,0,0,128,66,48, + 10,0,64,20,0,0,0,0,44,0,35,142, + 0,0,0,0,4,0,98,140,0,0,0,0, + 0,0,66,148,0,0,0,0,0,128,66,48, + 250,255,64,16,0,0,0,0,255,255,115,38, + 19,0,96,18,33,40,64,2,44,0,35,142, + 0,0,0,0,4,0,98,140,0,0,0,0, + 0,0,66,148,0,0,0,0,0,128,66,48, + 229,255,64,16,0,0,0,0,4,0,98,140, + 0,0,0,0,0,0,66,148,0,0,0,0, + 0,128,66,48,250,255,64,20,0,0,0,0, + 89,32,192,8,0,0,0,0,2,131,4,60, + 200,142,132,36,33,48,128,2,0,163,3,60, + 4,1,99,140,0,128,2,52,82,0,162,167, + 35,128,112,0,15,63,192,12,33,56,0,2, + 19,0,0,18,64,41,18,0,35,40,178,0, + 128,40,5,0,33,40,178,0,192,40,5,0, + 26,0,176,0,2,0,0,22,0,0,0,0, + 13,0,7,0,255,255,1,36,4,0,1,22, + 0,128,1,60,2,0,161,20,0,0,0,0, + 13,0,6,0,18,40,0,0,236,128,132,39, + 15,63,192,12,0,0,0,0,204,0,191,143, + 200,0,180,143,196,0,179,143,192,0,178,143, + 188,0,177,143,184,0,176,143,8,0,224,3, + 208,0,189,39,224,255,189,39,20,0,177,175, + 33,136,128,0,24,0,191,175,180,10,192,12, + 16,0,176,175,34,11,192,12,1,0,4,36, + 16,133,132,143,0,163,16,60,4,1,16,142, + 193,63,192,12,0,0,0,0,0,163,2,60, + 4,1,66,140,0,0,0,0,35,40,80,0, + 73,252,162,36,99,0,66,44,4,0,64,16, + 0,0,0,0,2,131,4,60,196,32,192,8, + 0,143,132,36,5,0,160,20,0,0,0,0, + 2,131,4,60,36,143,132,36,196,32,192,8, + 33,40,0,0,2,131,4,60,76,143,132,36, + 15,63,192,12,1,0,16,36,3,0,48,18, + 0,0,0,0,34,11,192,12,33,32,0,0, + 0,129,144,175,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 200,255,189,39,32,0,178,175,33,144,128,0, + 33,48,64,2,44,0,181,175,1,131,21,60, + 60,252,181,38,33,56,160,2,40,0,180,175, + 2,131,20,60,144,143,148,38,36,0,179,175, + 0,163,19,60,120,1,115,142,0,163,3,60, + 120,1,99,140,32,131,2,60,48,0,191,175, + 28,0,177,175,24,0,176,175,16,0,180,175, + 33,32,96,2,35,136,67,0,84,64,192,12, + 33,40,32,2,3,0,64,18,33,128,64,0, + 10,0,0,22,0,0,0,0,16,0,180,175, + 33,32,96,2,33,40,32,2,33,48,64,2, + 244,63,192,12,33,56,160,2,33,128,2,2, + 5,0,0,18,33,40,96,2,2,131,4,60, + 168,143,132,36,252,32,192,8,33,40,96,2, + 2,131,4,60,204,143,132,36,15,63,192,12, + 33,48,177,0,48,0,191,143,44,0,181,143, + 40,0,180,143,36,0,179,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 56,0,189,39,0,163,1,60,232,5,36,172, + 0,163,1,60,8,0,224,3,236,5,37,172, + 28,129,132,175,8,0,224,3,0,0,0,0, + 16,129,132,175,8,0,224,3,0,0,0,0, + 15,0,132,48,20,129,132,175,8,0,224,3, + 0,0,0,0,24,129,132,175,8,0,224,3, + 0,0,0,0,32,129,132,175,8,0,224,3, + 0,0,0,0,33,72,128,0,33,80,160,0, + 33,88,192,0,7,162,4,60,48,1,132,52, + 7,162,8,60,0,1,8,53,20,129,130,143, + 24,129,131,143,128,48,2,0,28,129,130,143, + 3,0,197,52,2,0,96,16,0,0,130,172, + 67,0,197,52,16,129,130,143,0,0,0,0, + 2,0,64,16,33,24,160,0,0,1,99,52, + 36,129,130,143,0,0,0,0,2,0,64,16, + 0,0,0,0,0,4,99,52,32,129,130,143, + 0,0,3,173,3,0,64,16,7,162,5,60, + 0,0,2,173,7,162,5,60,4,1,165,52, + 7,162,6,60,8,1,198,52,255,0,2,60, + 255,255,66,52,7,162,3,60,12,1,99,52, + 7,162,4,60,16,1,132,52,36,16,66,1, + 0,0,169,172,0,0,194,172,43,16,7,0, + 192,16,2,0,0,0,107,172,8,0,224,3, + 0,0,130,172,7,162,3,60,40,1,99,52, + 3,0,2,36,0,163,1,60,20,1,32,172, + 8,0,224,3,0,0,98,172,232,255,189,39, + 16,0,191,175,33,24,0,0,7,162,6,60, + 40,1,198,52,15,0,4,60,63,66,132,52, + 0,0,197,140,0,0,0,0,16,0,162,48, + 7,0,64,20,1,0,99,36,42,16,131,0, + 249,255,64,16,0,0,0,0,2,131,4,60, + 122,33,192,8,240,143,132,36,36,129,130,143, + 0,0,0,0,3,0,64,20,33,24,0,0, + 125,33,192,8,33,16,0,0,1,0,5,36, + 15,0,4,60,63,66,132,52,0,163,2,60, + 20,1,66,140,0,0,0,0,247,255,69,16, + 1,0,99,36,42,16,131,0,249,255,64,16, + 0,0,0,0,0,163,5,60,20,1,165,140, + 2,131,4,60,24,144,132,36,15,63,192,12, + 0,0,0,0,1,0,2,36,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 224,255,189,39,24,0,191,175,33,72,192,0, + 255,31,3,60,255,255,99,52,33,64,0,0, + 36,32,131,0,0,160,2,60,37,32,130,0, + 36,40,163,0,16,0,32,25,37,40,162,0, + 0,0,134,144,0,0,167,144,0,0,0,0, + 7,0,199,16,1,0,165,36,2,131,4,60, + 72,144,132,36,15,63,192,12,33,40,0,1, + 157,33,192,8,1,0,2,36,1,0,8,37, + 42,16,9,1,242,255,64,20,1,0,132,36, + 33,16,0,0,24,0,191,143,32,0,189,39, + 8,0,224,3,0,0,0,0,0,163,2,60, + 232,5,66,140,152,255,189,39,80,0,180,175, + 120,0,180,143,64,0,176,175,33,128,160,0, + 68,0,177,175,33,136,192,0,72,0,178,175, + 33,144,224,0,100,0,191,175,96,0,190,175, + 92,0,183,175,88,0,182,175,84,0,181,175, + 76,0,179,175,12,0,64,16,16,0,164,175, + 0,163,2,60,236,5,66,140,0,0,0,0, + 7,0,64,16,0,0,0,0,0,163,2,60, + 236,5,66,140,0,0,0,0,1,8,66,44, + 10,0,64,20,16,0,2,60,0,163,5,60, + 232,5,165,140,0,163,6,60,236,5,198,140, + 2,131,4,60,15,63,192,12,124,144,132,36, + 7,35,192,8,0,0,0,0,16,0,168,143, + 0,0,0,0,43,16,72,0,6,0,64,16, + 0,0,0,0,2,131,4,60,15,63,192,12, + 172,144,132,36,7,35,192,8,0,0,0,0, + 224,132,130,143,0,0,0,0,11,0,64,20, + 0,0,0,0,0,163,4,60,236,5,132,140, + 13,8,192,12,0,0,0,0,255,31,3,60, + 255,255,99,52,36,16,67,0,0,160,3,60, + 37,16,67,0,224,132,130,175,228,132,130,143, + 0,0,0,0,11,0,64,20,0,0,0,0, + 0,163,4,60,236,5,132,140,13,8,192,12, + 0,0,0,0,255,31,3,60,255,255,99,52, + 36,16,67,0,0,160,3,60,37,16,67,0, + 228,132,130,175,224,132,133,143,0,163,6,60, + 232,5,198,140,228,132,135,143,2,131,4,60, + 15,63,192,12,208,144,132,36,16,129,133,143, + 20,129,134,143,2,131,4,60,15,63,192,12, + 8,145,132,36,7,162,2,60,232,0,66,52, + 0,0,83,140,1,0,3,130,105,0,2,36, + 7,0,98,20,251,255,2,60,1,0,2,36, + 36,129,130,175,4,0,2,60,0,8,66,52, + 10,34,192,8,37,152,98,2,36,129,128,175, + 255,247,66,52,36,152,98,2,7,162,2,60, + 232,0,66,52,0,0,83,172,0,0,5,130, + 114,0,2,36,3,0,162,16,82,0,2,36, + 3,0,162,20,119,0,2,36,42,34,192,8, + 33,176,0,0,3,0,162,16,87,0,2,36, + 3,0,162,20,108,0,2,36,42,34,192,8, + 1,0,22,36,3,0,162,16,76,0,2,36, + 3,0,162,20,116,0,2,36,42,34,192,8, + 2,0,22,36,118,0,162,16,84,0,2,36, + 116,0,162,16,0,0,0,0,2,131,4,60, + 15,63,192,12,52,145,132,36,7,35,192,8, + 0,0,0,0,0,0,38,130,0,0,0,0, + 12,0,192,16,99,0,2,36,3,0,194,16, + 67,0,2,36,4,0,194,20,33,152,0,0, + 5,0,19,36,61,34,192,8,5,0,21,36, + 2,131,1,60,80,155,50,160,61,34,192,8, + 33,168,0,0,33,168,0,0,5,0,19,36, + 2,131,1,60,80,155,32,160,16,0,168,143, + 0,163,18,60,236,5,82,142,0,0,0,0, + 197,0,0,17,255,255,20,37,255,255,194,38, + 2,0,87,44,2,0,30,36,33,128,160,2, + 42,16,112,2,73,0,64,20,0,0,0,0, + 42,0,224,18,5,0,2,36,13,0,2,22, + 0,0,0,0,25,0,64,26,33,136,0,0, + 224,132,130,143,0,0,0,0,33,16,81,0, + 0,0,81,160,1,0,49,38,42,16,50,2, + 249,255,64,20,33,48,64,2,105,34,192,8, + 0,0,0,0,2,131,3,60,33,24,112,0, + 80,155,99,144,0,0,0,0,9,0,64,26, + 33,136,0,0,224,132,130,143,0,0,0,0, + 33,16,81,0,1,0,49,38,0,0,67,160, + 42,16,50,2,249,255,64,20,0,0,0,0, + 33,48,64,2,0,163,4,60,232,5,132,140, + 224,132,133,143,0,0,0,0,28,33,192,12, + 1,0,7,36,76,33,192,12,0,0,0,0, + 83,33,192,12,0,0,0,0,147,0,64,20, + 0,0,0,0,3,0,192,18,33,48,64,2, + 22,0,222,22,0,0,0,0,0,163,4,60, + 232,5,132,140,228,132,133,143,0,0,0,0, + 28,33,192,12,33,56,0,0,76,33,192,12, + 0,0,0,0,83,33,192,12,0,0,0,0, + 131,0,64,20,0,0,0,0,8,0,222,22, + 0,0,0,0,224,132,132,143,228,132,133,143, + 0,0,0,0,129,33,192,12,33,48,64,2, + 122,0,64,20,0,0,0,0,1,0,16,38, + 42,16,112,2,185,255,64,16,0,0,0,0, + 255,255,148,38,255,255,2,36,178,255,130,22, + 33,128,160,2,7,35,192,8,0,0,0,0, + 180,10,192,12,0,0,0,0,34,11,192,12, + 1,0,4,36,0,0,34,130,0,0,0,0, + 6,0,64,16,33,184,0,0,24,0,160,175, + 2,131,1,60,88,155,52,164,171,34,192,8, + 33,176,0,0,6,0,23,36,4,0,2,36, + 24,0,160,175,2,131,1,60,88,155,34,164, + 33,176,0,0,0,8,30,36,24,0,177,143, + 0,0,0,0,42,16,241,2,83,0,64,20, + 64,16,17,0,2,131,8,60,88,155,8,37, + 33,168,72,0,0,0,178,150,0,0,0,0, + 26,0,210,3,2,0,64,22,0,0,0,0, + 13,0,7,0,255,255,1,36,4,0,65,22, + 0,128,1,60,2,0,193,23,0,0,0,0, + 13,0,6,0,18,16,0,0,16,0,168,143, + 0,0,0,0,24,0,72,0,33,56,192,2, + 33,128,0,0,0,163,19,60,4,1,115,142, + 0,163,4,60,232,5,132,140,224,132,133,143, + 18,160,0,0,0,0,0,0,0,0,0,0, + 28,33,192,12,33,48,64,2,10,0,128,26, + 0,0,0,0,76,33,192,12,0,0,0,0, + 83,33,192,12,0,0,0,0,48,0,64,20, + 1,0,16,38,42,16,20,2,248,255,64,20, + 0,0,0,0,2,131,5,60,140,145,165,36, + 0,163,16,60,4,1,16,142,3,0,192,18, + 0,0,0,0,2,131,5,60,128,145,165,36, + 2,131,4,60,96,145,132,36,15,63,192,12, + 33,48,64,2,19,0,19,18,24,0,146,2, + 18,24,0,0,35,16,19,2,0,0,0,0, + 27,0,98,0,2,0,64,20,0,0,0,0, + 13,0,7,0,18,16,0,0,2,131,4,60, + 152,145,132,36,64,41,2,0,35,40,162,0, + 128,40,5,0,33,40,162,0,15,63,192,12, + 192,40,5,0,255,34,192,8,2,0,181,38, + 2,131,4,60,168,145,132,36,15,63,192,12, + 2,0,181,38,1,0,49,38,42,16,241,2, + 178,255,64,16,0,0,0,0,1,0,214,38, + 2,0,194,42,166,255,64,20,0,0,0,0, + 100,0,191,143,96,0,190,143,92,0,183,143, + 88,0,182,143,84,0,181,143,80,0,180,143, + 76,0,179,143,72,0,178,143,68,0,177,143, + 64,0,176,143,8,0,224,3,104,0,189,39, + 0,0,0,0,43,16,134,0,0,0,164,175, + 4,0,165,175,8,0,166,175,7,0,64,20, + 12,0,167,175,43,16,196,0,5,0,64,20, + 1,0,2,36,43,16,167,0,2,0,64,16, + 43,16,229,0,255,255,2,36,8,0,224,3, + 0,0,0,0,232,255,189,39,3,131,4,60, + 208,12,132,36,170,0,5,36,16,0,191,175, + 144,71,192,12,60,0,6,36,2,131,6,60, + 112,155,198,36,2,131,2,60,212,246,66,140, + 2,131,3,60,216,246,99,132,0,0,194,172, + 4,0,195,164,2,131,2,60,138,155,66,148, + 2,131,3,60,132,155,99,148,2,131,4,60, + 134,155,132,148,2,131,5,60,136,155,165,148, + 3,131,1,60,216,12,34,164,2,131,2,60, + 130,155,66,148,3,131,10,60,218,12,74,37, + 3,0,199,136,0,0,199,152,4,0,200,128, + 5,0,201,128,3,0,71,169,0,0,71,185, + 4,0,72,161,5,0,73,161,3,131,1,60, + 238,12,35,164,3,131,1,60,242,12,36,164, + 3,131,1,60,246,12,37,164,3,131,1,60, + 240,12,34,164,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,3,131,2,60, + 216,12,66,140,3,131,3,60,220,12,99,140, + 3,131,1,60,208,12,34,172,3,131,1,60, + 212,12,35,172,3,131,2,60,238,12,66,148, + 3,131,3,60,240,12,99,148,3,131,4,60, + 242,12,132,148,232,255,189,39,16,0,176,175, + 3,131,1,60,234,12,35,164,24,133,131,143, + 20,0,191,175,3,131,1,60,224,12,32,172, + 3,131,1,60,228,12,32,172,3,131,1,60, + 248,12,32,172,3,131,1,60,252,12,32,172, + 3,131,1,60,8,13,32,164,3,131,1,60, + 4,13,32,164,3,131,1,60,232,12,34,164, + 33,16,68,0,3,131,1,60,236,12,36,164, + 3,131,1,60,244,12,34,164,8,0,96,24, + 1,0,16,36,150,35,192,12,33,32,0,2, + 24,133,130,143,1,0,16,38,42,16,80,0, + 250,255,64,16,0,0,0,0,206,35,192,12, + 0,0,0,0,52,36,192,12,0,0,0,0, + 1,0,2,36,3,131,1,60,0,13,34,164, + 3,0,2,36,3,131,1,60,2,13,32,164, + 3,131,1,60,20,13,34,172,2,131,1,60, + 164,247,34,172,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,224,255,189,39, + 20,0,177,175,33,136,128,0,16,0,176,175, + 192,129,17,0,3,131,4,60,16,13,132,36, + 33,32,4,2,187,0,5,36,24,0,191,175, + 144,71,192,12,128,0,6,36,2,131,2,60, + 140,155,66,148,100,0,3,36,3,131,1,60, + 33,8,48,0,24,13,35,172,0,18,2,0, + 37,16,34,2,3,131,1,60,33,8,48,0, + 16,13,34,164,22,36,192,12,33,32,32,2, + 4,0,2,36,64,138,17,0,3,131,1,60, + 33,8,48,0,20,13,34,172,2,131,1,60, + 33,8,49,0,164,247,34,172,3,131,1,60, + 33,8,48,0,52,13,32,172,3,131,1,60, + 33,8,48,0,56,13,32,172,3,131,1,60, + 33,8,48,0,106,13,32,164,3,131,1,60, + 33,8,48,0,110,13,32,164,3,131,1,60, + 33,8,48,0,114,13,32,164,3,131,1,60, + 33,8,48,0,120,13,32,172,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,24,133,130,143,216,255,189,39, + 20,0,177,175,1,0,17,36,36,0,191,175, + 32,0,180,175,28,0,179,175,24,0,178,175, + 55,0,64,24,16,0,176,175,3,131,20,60, + 228,12,148,38,3,131,2,60,56,13,66,36, + 128,0,83,36,124,0,82,36,128,0,16,36, + 0,0,130,142,0,0,0,0,6,0,34,22, + 33,32,32,2,0,0,64,174,101,36,192,12, + 0,0,96,174,8,36,192,8,128,0,115,38, + 3,131,4,60,33,32,144,0,40,13,132,140, + 3,131,5,60,33,40,176,0,44,13,165,140, + 244,255,134,142,248,255,135,142,20,35,192,12, + 0,0,0,0,17,0,64,20,33,32,32,2, + 3,131,3,60,33,24,112,0,48,13,99,148, + 3,131,2,60,33,16,80,0,16,13,66,148, + 0,0,0,0,8,0,98,20,0,0,0,0, + 3,131,1,60,33,8,48,0,106,13,32,164, + 101,36,192,12,33,32,32,2,8,36,192,8, + 128,0,115,38,0,0,64,174,125,36,192,12, + 0,0,96,174,128,0,115,38,128,0,82,38, + 24,133,130,143,1,0,49,38,42,16,81,0, + 210,255,64,16,128,0,16,38,36,0,191,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,192,33,4,0,3,131,2,60, + 28,13,66,36,33,24,130,0,3,131,5,60, + 208,12,165,140,3,131,6,60,212,12,198,140, + 0,0,101,172,4,0,102,172,12,0,66,36, + 3,131,3,60,224,12,99,140,33,16,130,0, + 3,131,1,60,33,8,36,0,36,13,35,172, + 3,131,3,60,216,12,99,140,3,131,5,60, + 220,12,165,140,0,0,67,172,4,0,69,172, + 3,131,2,60,33,16,68,0,16,13,66,148, + 3,131,1,60,33,8,36,0,8,0,224,3, + 48,13,34,164,24,133,130,143,224,255,189,39, + 20,0,177,175,1,0,17,36,24,0,191,175, + 38,0,64,24,16,0,176,175,128,0,16,36, + 3,131,4,60,33,32,144,0,40,13,132,140, + 3,131,5,60,33,40,176,0,44,13,165,140, + 3,131,6,60,216,12,198,140,3,131,7,60, + 220,12,231,140,20,35,192,12,0,0,0,0, + 18,0,64,20,0,0,0,0,3,131,3,60, + 33,24,112,0,48,13,99,148,3,131,2,60, + 33,16,80,0,16,13,66,148,0,0,0,0, + 9,0,98,20,0,0,0,0,3,131,2,60, + 33,16,80,0,20,13,66,140,0,0,0,0, + 3,0,64,16,0,0,0,0,203,36,192,12, + 33,32,32,2,24,133,130,143,1,0,49,38, + 42,16,81,0,221,255,64,16,128,0,16,38, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,192,41,4,0, + 3,131,3,60,33,24,101,0,20,13,99,140, + 4,0,2,36,16,0,98,20,240,255,189,39, + 1,0,2,36,64,26,4,0,3,131,1,60, + 33,8,37,0,20,13,34,172,2,131,1,60, + 33,8,35,0,164,247,34,172,1,0,2,36, + 3,131,1,60,33,8,37,0,110,13,34,164, + 3,131,1,60,33,8,37,0,112,13,32,164, + 8,0,224,3,16,0,189,39,224,255,189,39, + 24,0,178,175,33,144,128,0,16,0,176,175, + 192,129,18,0,28,0,191,175,20,0,177,175, + 3,131,2,60,33,16,80,0,20,13,66,140, + 0,0,0,0,18,0,64,16,4,0,17,36, + 16,0,81,16,254,255,66,36,2,0,66,44, + 4,0,64,16,64,18,18,0,161,36,192,12, + 0,0,0,0,64,18,18,0,3,131,1,60, + 33,8,48,0,20,13,49,172,2,131,1,60, + 33,8,34,0,164,247,49,172,3,131,1,60, + 33,8,48,0,110,13,32,164,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,3,131,4,60, + 208,12,132,140,3,131,5,60,212,12,165,140, + 3,131,6,60,216,12,198,140,3,131,7,60, + 220,12,231,140,232,255,189,39,16,0,191,175, + 20,35,192,12,0,0,0,0,10,0,64,20, + 1,0,2,36,3,131,1,60,252,12,34,172, + 1,0,2,36,3,131,1,60,4,13,34,164, + 3,131,1,60,6,13,32,164,197,36,192,8, + 1,0,2,36,3,131,2,60,248,12,66,140, + 0,0,0,0,9,0,64,20,1,0,2,36, + 72,37,192,12,0,0,0,0,1,0,2,36, + 3,131,1,60,8,13,34,164,3,131,1,60, + 10,13,32,164,1,0,2,36,3,131,1,60, + 248,12,34,172,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,224,255,189,39, + 20,0,177,175,33,136,128,0,16,0,176,175, + 192,129,17,0,24,0,191,175,3,131,2,60, + 33,16,80,0,114,13,66,132,0,0,0,0, + 5,0,64,16,1,0,2,36,3,131,1,60, + 33,8,48,0,67,37,192,8,56,13,34,172, + 3,131,4,60,208,12,132,36,3,131,2,60, + 64,13,66,36,33,24,2,2,3,131,1,60, + 33,8,48,0,60,13,32,164,0,0,133,140, + 4,0,134,140,0,0,101,172,4,0,102,172, + 12,0,66,36,3,131,3,60,224,12,99,140, + 33,16,2,2,3,131,1,60,33,8,48,0, + 72,13,35,172,3,131,3,60,216,12,99,140, + 3,131,5,60,220,12,165,140,0,0,67,172, + 4,0,69,172,3,131,2,60,33,16,80,0, + 16,13,66,148,3,131,1,60,33,8,48,0, + 84,13,34,164,0,0,132,140,3,131,5,60, + 212,12,165,140,3,131,6,60,216,12,198,140, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,5,0,64,20,0,0,0,0, + 3,131,1,60,33,8,48,0,22,37,192,8, + 86,13,32,164,3,131,2,60,228,12,66,140, + 2,131,3,60,128,155,99,148,192,17,2,0, + 3,131,1,60,33,8,34,0,108,13,34,148, + 0,0,0,0,33,16,67,0,3,131,1,60, + 33,8,48,0,86,13,34,164,3,131,2,60, + 232,12,66,148,192,129,17,0,3,131,1,60, + 33,8,48,0,88,13,34,164,3,131,2,60, + 234,12,66,148,33,32,32,2,3,131,1,60, + 33,8,48,0,90,13,34,164,3,131,3,60, + 236,12,99,148,3,131,2,60,33,16,80,0, + 52,13,66,140,3,131,5,60,60,13,165,36, + 3,131,1,60,33,8,48,0,52,13,32,172, + 3,131,1,60,33,8,48,0,96,13,34,172, + 3,131,1,60,33,8,48,0,92,13,35,164, + 3,131,2,60,252,12,66,140,3,131,1,60, + 33,8,48,0,100,13,34,172,80,40,192,12, + 33,40,5,2,1,0,2,36,3,131,1,60, + 33,8,48,0,56,13,32,172,3,131,1,60, + 33,8,48,0,114,13,34,164,3,131,1,60, + 33,8,48,0,116,13,32,164,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,128,0,2,36, + 3,131,4,60,228,12,132,140,3,131,5,60, + 104,13,165,36,16,0,191,175,192,25,4,0, + 3,131,1,60,33,8,35,0,104,13,34,164, + 151,40,192,12,33,40,101,0,2,131,4,60, + 15,63,192,12,12,146,132,36,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,16,0,191,175,102,37,192,12, + 0,0,0,0,13,38,192,12,0,0,0,0, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,24,133,130,143,208,255,189,39, + 24,0,178,175,33,144,0,0,28,0,179,175, + 1,0,19,36,44,0,191,175,40,0,182,175, + 36,0,181,175,32,0,180,175,20,0,177,175, + 110,0,64,24,16,0,176,175,3,131,21,60, + 216,12,181,38,3,131,22,60,16,13,214,38, + 128,0,208,38,128,0,20,36,192,17,18,0, + 3,131,4,60,33,32,148,0,40,13,132,140, + 3,131,5,60,33,40,180,0,44,13,165,140, + 0,0,166,142,3,131,7,60,220,12,231,140, + 0,0,0,0,20,35,192,12,33,136,86,0, + 10,0,64,20,0,0,0,0,3,131,3,60, + 33,24,116,0,48,13,99,148,3,131,2,60, + 33,16,84,0,16,13,66,148,0,0,0,0, + 74,0,98,16,0,0,0,0,4,0,2,142, + 0,0,0,0,70,0,64,16,0,0,0,0, + 12,0,4,142,16,0,5,142,0,0,166,142, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,61,0,65,4,0,0,0,0, + 58,0,64,18,0,0,0,0,12,0,4,142, + 16,0,5,142,12,0,38,142,16,0,39,142, + 20,35,192,12,0,0,0,0,50,0,64,4, + 0,0,0,0,12,0,4,142,16,0,5,142, + 12,0,38,142,16,0,39,142,20,35,192,12, + 0,0,0,0,43,0,64,20,0,0,0,0, + 20,0,5,142,8,0,3,142,20,0,36,142, + 8,0,34,142,33,40,163,0,33,32,130,0, + 43,16,164,0,33,0,64,20,0,0,0,0, + 32,0,164,20,0,0,0,0,24,0,4,142, + 28,0,5,142,24,0,38,142,28,0,39,142, + 20,35,192,12,0,0,0,0,23,0,64,4, + 0,0,0,0,24,0,4,142,28,0,5,142, + 24,0,38,142,28,0,39,142,20,35,192,12, + 0,0,0,0,16,0,64,20,0,0,0,0, + 32,0,4,150,32,0,35,150,0,0,0,0, + 43,16,131,0,9,0,64,20,0,0,0,0, + 8,0,131,20,0,0,0,0,0,0,2,150, + 0,0,35,150,0,0,0,0,43,16,67,0, + 2,0,64,16,0,0,0,0,33,144,96,2, + 128,0,16,38,24,133,130,143,1,0,115,38, + 42,16,83,0,154,255,64,16,128,0,148,38, + 3,131,1,60,228,12,50,172,12,0,64,22, + 192,17,18,0,3,131,2,60,216,12,66,140, + 3,131,3,60,220,12,99,140,3,131,1,60, + 208,12,34,172,3,131,1,60,212,12,35,172, + 3,131,1,60,3,38,192,8,224,12,32,172, + 3,131,3,60,33,24,98,0,28,13,99,140, + 3,131,4,60,33,32,130,0,32,13,132,140, + 3,131,1,60,208,12,35,172,3,131,1,60, + 212,12,36,172,3,131,3,60,33,24,98,0, + 36,13,99,140,3,131,1,60,33,8,34,0, + 24,13,34,140,0,0,0,0,33,24,98,0, + 3,131,1,60,224,12,35,172,44,0,191,143, + 40,0,182,143,36,0,181,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,48,0,189,39, + 24,133,130,143,208,255,189,39,36,0,181,175, + 1,0,21,36,44,0,191,175,40,0,182,175, + 32,0,180,175,28,0,179,175,24,0,178,175, + 20,0,177,175,82,0,64,24,16,0,176,175, + 3,131,22,60,216,12,214,38,3,131,2,60, + 48,13,66,36,128,0,84,36,96,0,83,36, + 124,0,82,36,120,0,81,36,128,0,16,36, + 0,0,36,142,0,0,69,142,0,0,198,142, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,55,0,64,20,0,0,0,0, + 0,0,131,150,0,0,98,150,0,0,0,0, + 50,0,98,20,0,0,0,0,3,131,4,60, + 33,32,144,0,28,13,132,140,3,131,5,60, + 33,40,176,0,32,13,165,140,248,255,198,142, + 3,131,7,60,212,12,231,140,20,35,192,12, + 0,0,0,0,37,0,64,16,0,0,0,0, + 8,0,196,142,3,131,3,60,33,24,112,0, + 36,13,99,140,0,0,0,0,43,16,131,0, + 29,0,64,20,0,0,0,0,27,0,131,20, + 0,0,0,0,0,0,196,142,3,131,5,60, + 220,12,165,140,0,0,38,142,0,0,71,142, + 20,35,192,12,0,0,0,0,16,0,64,4, + 0,0,0,0,0,0,196,142,3,131,5,60, + 220,12,165,140,0,0,38,142,0,0,71,142, + 20,35,192,12,0,0,0,0,9,0,64,20, + 0,0,0,0,0,0,99,150,0,0,130,150, + 0,0,0,0,43,16,67,0,3,0,64,20, + 0,0,0,0,22,36,192,12,33,32,160,2, + 128,0,148,38,128,0,115,38,128,0,82,38, + 128,0,49,38,24,133,130,143,1,0,181,38, + 42,16,85,0,185,255,64,16,128,0,16,38, + 44,0,191,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 48,0,189,39,216,255,189,39,3,131,4,60, + 0,13,132,36,32,0,191,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 0,0,130,132,0,0,0,0,14,0,64,16, + 0,0,0,0,3,131,2,60,2,13,66,148, + 3,131,3,60,234,12,99,148,1,0,66,36, + 3,131,1,60,2,13,34,164,255,255,66,48, + 43,16,67,0,3,0,64,20,0,0,0,0, + 11,39,192,12,0,0,128,164,3,131,4,60, + 8,13,132,36,0,0,130,132,0,0,0,0, + 14,0,64,16,0,0,0,0,3,131,2,60, + 10,13,66,148,3,131,3,60,234,12,99,148, + 1,0,66,36,3,131,1,60,10,13,34,164, + 255,255,66,48,43,16,67,0,3,0,64,20, + 0,0,0,0,24,39,192,12,0,0,128,164, + 3,131,4,60,4,13,132,36,0,0,130,132, + 0,0,0,0,14,0,64,16,0,0,0,0, + 3,131,2,60,6,13,66,148,3,131,3,60, + 244,12,99,148,1,0,66,36,3,131,1,60, + 6,13,34,164,255,255,66,48,43,16,67,0, + 3,0,64,20,0,0,0,0,37,39,192,12, + 0,0,128,164,24,133,130,143,0,0,0,0, + 78,0,64,24,1,0,17,36,3,131,2,60, + 16,13,66,36,226,0,83,36,128,0,82,36, + 128,0,16,36,3,131,2,60,33,16,80,0, + 110,13,66,132,0,0,0,0,18,0,64,16, + 0,0,0,0,3,131,2,60,33,16,80,0, + 112,13,66,148,0,0,0,0,1,0,66,36, + 96,0,66,166,3,131,3,60,236,12,99,148, + 255,255,66,48,43,16,67,0,6,0,64,20, + 0,0,0,0,3,131,1,60,33,8,48,0, + 110,13,32,164,79,39,192,12,33,32,32,2, + 3,131,2,60,33,16,80,0,106,13,66,132, + 0,0,0,0,18,0,64,16,0,0,0,0, + 3,131,2,60,33,16,80,0,108,13,66,148, + 0,0,0,0,1,0,66,36,92,0,66,166, + 3,131,3,60,232,12,99,148,255,255,66,48, + 43,16,67,0,6,0,64,20,0,0,0,0, + 3,131,1,60,33,8,48,0,106,13,32,164, + 129,39,192,12,33,32,32,2,0,0,98,134, + 0,0,0,0,16,0,64,16,0,0,0,0, + 3,131,2,60,33,16,80,0,116,13,66,148, + 0,0,0,0,1,0,66,36,100,0,66,166, + 3,131,3,60,246,12,99,148,255,255,66,48, + 43,16,67,0,4,0,64,20,0,0,0,0, + 0,0,96,166,191,39,192,12,33,32,32,2, + 128,0,115,38,128,0,82,38,24,133,130,143, + 1,0,49,38,42,16,81,0,185,255,64,16, + 128,0,16,38,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,232,255,189,39, + 16,0,191,175,52,36,192,12,0,0,0,0, + 1,0,2,36,3,131,1,60,0,13,34,164, + 3,131,1,60,2,13,32,164,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,16,0,191,175,72,37,192,12, + 0,0,0,0,1,0,2,36,3,131,1,60, + 8,13,34,164,3,131,1,60,10,13,32,164, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,240,255,189,39,3,131,1,60, + 248,12,32,172,3,131,1,60,252,12,32,172, + 8,0,224,3,16,0,189,39,24,133,130,143, + 224,255,189,39,20,0,177,175,1,0,17,36, + 24,0,191,175,23,0,64,24,16,0,176,175, + 128,0,16,36,3,131,4,60,33,32,144,0, + 40,13,132,140,3,131,5,60,33,40,176,0, + 44,13,165,140,3,131,6,60,216,12,198,140, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,3,0,64,20,1,0,49,38, + 74,39,192,8,1,0,2,36,24,133,130,143, + 0,0,0,0,42,16,81,0,236,255,64,16, + 128,0,16,38,33,16,0,0,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,192,41,4,0, + 16,0,191,175,3,131,3,60,33,24,101,0, + 20,13,99,140,1,0,2,36,16,0,98,20, + 2,0,2,36,64,26,4,0,3,131,1,60, + 33,8,37,0,20,13,34,172,2,131,1,60, + 33,8,35,0,164,247,34,172,1,0,2,36, + 3,131,1,60,33,8,37,0,110,13,34,164, + 3,131,1,60,33,8,37,0,125,39,192,8, + 112,13,32,164,21,0,98,20,3,0,3,36, + 64,18,4,0,3,131,1,60,33,8,37,0, + 20,13,35,172,2,131,1,60,33,8,34,0, + 164,247,35,172,3,131,2,60,33,16,69,0, + 120,13,66,140,0,0,0,0,1,0,66,36, + 3,131,1,60,33,8,37,0,44,39,192,12, + 120,13,34,172,3,0,64,16,0,0,0,0, + 161,36,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 224,255,189,39,16,0,176,175,33,128,128,0, + 20,0,177,175,3,131,17,60,208,12,49,38, + 24,0,191,175,0,0,36,142,3,131,5,60, + 212,12,165,140,3,131,6,60,216,12,198,140, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,33,32,0,2,22,36,192,12, + 1,0,80,44,92,37,192,12,0,0,0,0, + 206,35,192,12,0,0,0,0,33,0,0,22, + 0,0,0,0,0,0,36,142,3,131,5,60, + 212,12,165,140,3,131,6,60,216,12,198,140, + 3,131,7,60,220,12,231,140,20,35,192,12, + 0,0,0,0,22,0,64,20,0,0,0,0, + 3,131,2,60,238,12,66,148,3,131,3,60, + 240,12,99,148,3,131,4,60,242,12,132,148, + 3,131,1,60,232,12,34,164,3,131,1,60, + 234,12,35,164,3,131,1,60,161,36,192,12, + 236,12,36,164,3,131,1,60,52,36,192,12, + 8,13,32,164,1,0,2,36,3,131,1,60, + 0,13,34,164,3,131,1,60,2,13,32,164, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,232,255,189,39, + 192,17,4,0,16,0,191,175,3,131,1,60, + 33,8,34,0,56,13,34,140,0,0,0,0, + 3,0,64,16,0,0,0,0,203,36,192,12, + 0,0,0,0,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,3,131,1,60, + 248,12,32,172,3,131,1,60,8,0,224,3, + 8,13,32,164,232,255,189,39,192,25,4,0, + 1,0,2,36,16,0,191,175,3,131,1,60, + 33,8,35,0,203,36,192,12,52,13,34,172, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,192,33,4,0,3,131,2,60, + 28,13,66,36,33,24,130,0,4,0,166,140, + 8,0,167,140,0,0,102,172,4,0,103,172, + 12,0,66,36,12,0,163,140,33,16,130,0, + 3,131,1,60,33,8,36,0,36,13,35,172, + 16,0,163,140,20,0,166,140,0,0,67,172, + 4,0,70,172,24,0,163,148,1,0,2,36, + 3,131,1,60,33,8,36,0,106,13,34,164, + 3,131,1,60,33,8,36,0,48,13,35,164, + 26,0,162,148,3,131,1,60,33,8,36,0, + 8,0,224,3,108,13,34,164,28,0,130,148, + 3,131,1,60,232,12,34,164,30,0,130,148, + 3,131,1,60,234,12,34,164,32,0,130,148, + 3,131,1,60,236,12,34,164,40,0,130,140, + 3,131,1,60,8,0,224,3,252,12,34,172, + 224,255,189,39,16,0,176,175,33,128,160,0, + 192,25,4,0,3,131,2,60,16,13,66,36, + 20,0,177,175,33,136,98,0,24,0,191,175, + 4,0,4,142,8,0,5,142,12,0,38,142, + 16,0,39,142,20,35,192,12,0,0,0,0, + 48,0,64,4,1,0,2,36,4,0,4,142, + 8,0,5,142,12,0,38,142,16,0,39,142, + 20,35,192,12,0,0,0,0,40,0,64,20, + 33,16,0,0,12,0,4,142,20,0,35,142, + 0,0,0,0,43,16,131,0,34,0,64,20, + 1,0,2,36,32,0,131,20,33,16,0,0, + 16,0,4,142,20,0,5,142,24,0,38,142, + 28,0,39,142,20,35,192,12,0,0,0,0, + 24,0,64,4,1,0,2,36,16,0,4,142, + 20,0,5,142,24,0,38,142,28,0,39,142, + 20,35,192,12,0,0,0,0,16,0,64,20, + 33,16,0,0,16,0,4,142,20,0,5,142, + 3,131,6,60,216,12,198,140,3,131,7,60, + 220,12,231,140,20,35,192,12,0,0,0,0, + 6,0,64,20,1,0,2,36,24,0,3,150, + 32,0,34,150,0,0,0,0,43,16,67,0, + 1,0,66,56,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 44,133,130,143,216,255,189,39,20,0,177,175, + 33,136,128,0,32,0,180,175,33,160,160,0, + 36,0,191,175,28,0,179,175,24,0,178,175, + 53,0,64,16,16,0,176,175,2,131,19,60, + 192,4,115,38,33,32,96,2,54,21,192,12, + 1,0,5,36,33,128,64,0,8,0,0,22, + 64,26,17,0,2,131,2,60,33,16,67,0, + 176,247,66,140,33,24,99,2,1,0,66,36, + 143,40,192,8,240,242,98,172,8,0,4,142, + 64,146,17,0,20,242,101,38,33,40,69,2, + 172,41,192,12,33,48,128,2,33,24,64,0, + 60,0,98,40,2,0,64,16,0,242,98,38, + 60,0,3,36,33,136,66,2,33,32,32,2, + 33,40,0,2,1,0,2,36,17,0,2,162, + 0,128,98,52,0,0,2,174,6,23,192,12, + 18,0,3,166,10,0,64,20,33,32,0,2, + 2,131,2,60,33,16,82,0,172,247,66,140, + 0,0,0,0,1,0,66,36,152,21,192,12, + 236,0,34,174,143,40,192,8,0,0,0,0, + 2,131,2,60,33,16,82,0,168,247,66,140, + 0,0,0,0,1,0,66,36,232,0,34,174, + 36,0,191,143,32,0,180,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,44,133,130,143, + 216,255,189,39,20,0,177,175,33,136,128,0, + 32,0,180,175,33,160,160,0,36,0,191,175, + 28,0,179,175,24,0,178,175,53,0,64,16, + 16,0,176,175,2,131,19,60,192,4,115,38, + 33,32,96,2,54,21,192,12,1,0,5,36, + 33,128,64,0,8,0,0,22,64,26,17,0, + 2,131,2,60,33,16,67,0,176,247,66,140, + 33,24,99,2,1,0,66,36,214,40,192,8, + 240,242,98,172,8,0,4,142,64,146,17,0, + 20,242,101,38,33,40,69,2,74,42,192,12, + 33,48,128,2,33,24,64,0,60,0,98,40, + 2,0,64,16,0,242,98,38,60,0,3,36, + 33,136,66,2,33,32,32,2,33,40,0,2, + 1,0,2,36,17,0,2,162,0,128,98,52, + 0,0,2,174,6,23,192,12,18,0,3,166, + 10,0,64,20,33,32,0,2,2,131,2,60, + 33,16,82,0,172,247,66,140,0,0,0,0, + 1,0,66,36,152,21,192,12,236,0,34,174, + 214,40,192,8,0,0,0,0,2,131,2,60, + 33,16,82,0,168,247,66,140,0,0,0,0, + 1,0,66,36,232,0,34,174,36,0,191,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,216,255,189,39,24,0,178,175, + 33,144,128,0,20,0,177,175,33,136,160,0, + 16,0,176,175,33,128,192,0,36,0,191,175, + 32,0,180,175,28,0,179,175,4,0,36,142, + 8,0,37,142,160,133,134,143,2,131,7,60, + 180,211,231,140,20,35,192,12,0,0,0,0, + 11,0,64,20,0,0,0,0,2,131,4,60, + 144,146,132,36,15,63,192,12,33,40,0,2, + 100,129,132,39,108,129,134,39,31,21,192,12, + 6,0,5,38,92,41,192,8,0,0,0,0, + 3,131,20,60,208,12,148,38,0,0,132,142, + 3,131,5,60,212,12,165,140,3,131,6,60, + 216,12,198,140,3,131,7,60,220,12,231,140, + 0,0,0,0,20,35,192,12,192,129,18,0, + 3,131,3,60,33,24,112,0,20,13,99,140, + 0,0,0,0,80,0,96,16,1,0,83,44, + 33,32,64,2,11,40,192,12,33,40,32,2, + 50,0,64,16,33,32,64,2,223,39,192,12, + 33,40,32,2,92,37,192,12,0,0,0,0, + 206,35,192,12,0,0,0,0,0,0,132,142, + 3,131,5,60,212,12,165,140,3,131,6,60, + 216,12,198,140,3,131,7,60,220,12,231,140, + 20,35,192,12,0,0,0,0,16,0,64,16, + 0,0,0,0,14,0,96,18,0,0,0,0, + 3,131,2,60,248,12,66,140,3,131,1,60, + 9,0,64,16,0,13,32,164,3,131,1,60, + 72,37,192,12,4,13,32,164,1,0,2,36, + 3,131,1,60,8,13,34,164,3,131,1,60, + 10,13,32,164,3,131,2,60,228,12,66,140, + 0,0,0,0,38,0,66,22,0,0,0,0, + 254,39,192,12,33,32,32,2,52,36,192,12, + 0,0,0,0,36,0,34,142,0,0,0,0, + 30,0,64,16,0,0,0,0,206,39,192,12, + 0,0,0,0,92,41,192,8,0,0,0,0, + 3,131,4,60,33,32,144,0,40,13,132,140, + 3,131,5,60,33,40,176,0,44,13,165,140, + 3,131,6,60,216,12,198,140,3,131,7,60, + 220,12,231,140,20,35,192,12,0,0,0,0, + 12,0,64,20,0,0,0,0,3,131,3,60, + 33,24,112,0,48,13,99,148,3,131,2,60, + 33,16,80,0,16,13,66,148,0,0,0,0, + 3,0,98,20,0,0,0,0,203,36,192,12, + 33,32,64,2,36,0,191,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,40,0,189,39, + 224,255,189,39,20,0,177,175,33,136,128,0, + 16,0,176,175,192,129,17,0,24,0,191,175, + 3,131,2,60,33,16,80,0,20,13,66,140, + 0,0,0,0,28,0,64,16,0,0,0,0, + 3,131,4,60,33,32,144,0,40,13,132,140, + 3,131,5,60,33,40,176,0,44,13,165,140, + 3,131,6,60,216,12,198,140,3,131,7,60, + 220,12,231,140,20,35,192,12,0,0,0,0, + 14,0,64,20,0,0,0,0,3,131,3,60, + 33,24,112,0,48,13,99,148,3,131,2,60, + 33,16,80,0,16,13,66,148,0,0,0,0, + 5,0,98,20,0,0,0,0,161,36,192,12, + 0,0,0,0,211,39,192,12,33,32,32,2, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,2,18,5,0, + 0,0,130,160,8,0,224,3,1,0,133,160, + 2,22,5,0,0,0,130,160,2,20,5,0, + 1,0,130,160,2,18,5,0,2,0,130,160, + 8,0,224,3,3,0,133,160,0,0,130,144, + 1,0,131,144,0,18,2,0,8,0,224,3, + 37,16,98,0,0,0,130,144,1,0,131,144, + 2,0,133,144,0,22,2,0,0,28,3,0, + 33,16,67,0,0,42,5,0,3,0,131,144, + 33,16,69,0,8,0,224,3,37,16,67,0, + 224,255,189,39,16,0,176,175,33,128,128,0, + 24,0,191,175,20,0,177,175,48,129,135,39, + 3,0,226,136,0,0,226,152,4,0,227,128, + 5,0,228,128,3,0,2,170,0,0,2,186, + 4,0,3,162,5,0,4,162,3,0,162,136, + 0,0,162,152,4,0,163,128,5,0,164,128, + 9,0,2,170,6,0,2,186,10,0,3,162, + 11,0,4,162,12,0,4,38,38,0,5,36, + 144,41,192,12,33,136,192,0,14,0,4,38, + 144,41,192,12,66,66,5,36,17,0,4,38, + 33,40,0,0,3,0,2,36,144,41,192,12, + 16,0,2,162,19,0,0,162,20,0,0,162, + 40,0,34,142,0,0,0,0,43,32,2,0, + 36,0,34,142,0,0,0,0,3,0,64,16, + 33,24,128,0,218,41,192,8,128,0,130,52, + 33,16,96,0,21,0,2,162,4,0,37,150, + 0,0,0,0,144,41,192,12,22,0,4,38, + 9,0,34,138,6,0,34,154,10,0,35,130, + 11,0,36,130,27,0,2,170,24,0,2,186, + 28,0,3,162,29,0,4,162,12,0,37,142, + 0,0,0,0,148,41,192,12,30,0,4,38, + 16,0,37,150,0,0,0,0,144,41,192,12, + 34,0,4,38,21,0,34,138,18,0,34,154, + 22,0,35,130,23,0,36,130,39,0,2,170, + 36,0,2,186,40,0,3,162,41,0,4,162, + 24,0,37,150,0,0,0,0,144,41,192,12, + 42,0,4,38,26,0,37,150,0,0,0,0, + 144,41,192,12,44,0,4,38,28,0,37,150, + 0,0,0,0,144,41,192,12,46,0,4,38, + 30,0,37,150,0,0,0,0,144,41,192,12, + 48,0,4,38,32,0,37,150,0,0,0,0, + 144,41,192,12,50,0,4,38,52,0,2,36, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,224,255,189,39, + 16,0,176,175,33,128,160,0,24,0,191,175, + 20,0,177,175,21,0,2,146,33,136,128,0, + 1,0,66,48,40,0,34,174,22,0,2,146, + 22,0,4,38,128,0,66,48,156,41,192,12, + 36,0,34,174,4,0,34,166,27,0,2,138, + 24,0,2,154,28,0,3,130,29,0,4,130, + 9,0,34,170,6,0,34,186,10,0,35,162, + 11,0,36,162,161,41,192,12,30,0,4,38, + 34,0,4,38,156,41,192,12,12,0,34,174, + 16,0,34,166,39,0,2,138,36,0,2,154, + 40,0,3,130,41,0,4,130,21,0,34,170, + 18,0,34,186,22,0,35,162,23,0,36,162, + 156,41,192,12,42,0,4,38,44,0,4,38, + 156,41,192,12,24,0,34,166,46,0,4,38, + 156,41,192,12,26,0,34,166,48,0,4,38, + 156,41,192,12,28,0,34,166,50,0,4,38, + 156,41,192,12,30,0,34,166,32,0,34,166, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,232,255,189,39, + 16,0,176,175,33,128,128,0,20,0,191,175, + 48,129,134,39,3,0,194,136,0,0,194,152, + 4,0,195,128,5,0,196,128,3,0,2,170, + 0,0,2,186,4,0,3,162,5,0,4,162, + 3,0,162,136,0,0,162,152,4,0,163,128, + 5,0,164,128,9,0,2,170,6,0,2,186, + 10,0,3,162,11,0,4,162,12,0,4,38, + 144,41,192,12,7,0,5,36,14,0,4,38, + 144,41,192,12,66,66,5,36,17,0,4,38, + 33,40,0,0,3,0,2,36,144,41,192,12, + 16,0,2,162,21,0,2,36,128,0,3,36, + 19,0,0,162,20,0,3,162,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 176,255,189,39,68,0,177,175,64,0,176,175, + 33,128,160,0,72,0,191,175,14,0,3,146, + 66,0,2,36,9,0,98,20,33,136,128,0, + 15,0,2,146,0,0,0,0,6,0,67,20, + 64,26,17,0,16,0,3,146,3,0,2,36, + 11,0,98,16,0,0,0,0,64,26,17,0, + 2,131,2,60,33,16,67,0,184,247,66,140, + 0,0,0,0,1,0,66,36,2,131,1,60, + 33,8,35,0,182,42,192,8,184,247,34,172, + 20,0,3,146,0,0,0,0,5,0,96,16, + 128,0,2,36,21,0,98,16,64,26,17,0, + 179,42,192,8,0,0,0,0,16,0,164,39, + 64,26,17,0,2,131,2,60,33,16,67,0, + 180,247,66,140,0,0,0,0,1,0,66,36, + 2,131,1,60,33,8,35,0,180,247,34,172, + 17,42,192,12,33,40,0,2,33,32,32,2, + 16,0,165,39,222,40,192,12,33,48,0,2, + 182,42,192,8,0,0,0,0,2,131,2,60, + 33,16,67,0,180,247,66,140,0,0,0,0, + 1,0,66,36,2,131,1,60,33,8,35,0, + 180,247,34,172,100,41,192,12,33,32,32,2, + 182,42,192,8,0,0,0,0,112,129,132,39, + 15,63,192,12,0,0,0,0,72,0,191,143, + 68,0,177,143,64,0,176,143,8,0,224,3, + 80,0,189,39,8,0,224,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,162,48,8,0,64,16,255,255,198,48, + 67,40,5,0,64,16,5,0,33,16,68,0, + 0,0,66,144,0,0,0,0,203,42,192,8, + 33,48,194,0,67,40,5,0,255,255,165,36, + 255,255,2,36,6,0,162,16,255,255,3,36, + 0,0,130,148,2,0,132,36,255,255,165,36, + 252,255,163,20,33,48,194,0,255,255,195,48, + 2,20,6,0,33,48,98,0,255,255,195,48, + 2,20,6,0,33,48,98,0,8,0,224,3, + 255,255,194,48,208,255,189,39,16,0,176,175, + 33,128,128,0,28,0,179,175,33,152,160,0, + 24,0,178,175,33,144,192,0,36,0,181,175, + 33,168,0,2,32,0,180,175,33,160,0,0, + 40,0,191,175,20,0,177,175,12,0,3,142, + 0,0,2,142,0,0,0,0,35,24,98,0, + 42,16,114,0,2,0,64,16,33,136,64,2, + 33,136,96,0,13,0,32,18,33,40,96,2, + 35,144,81,2,8,0,2,142,0,0,4,142, + 33,48,32,2,80,68,192,12,33,32,68,0, + 8,0,2,142,0,0,2,142,0,0,2,142, + 33,152,113,2,33,16,81,0,0,0,2,174, + 0,0,2,142,0,0,0,0,4,0,64,18, + 33,160,130,2,4,0,16,142,233,42,192,8, + 0,0,0,0,18,0,180,166,33,16,0,2, + 40,0,191,143,36,0,181,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,48,0,189,39, + 224,255,189,39,24,0,178,175,33,144,128,0, + 2,131,4,60,192,4,132,36,36,0,165,175, + 1,0,5,36,28,0,191,175,20,0,177,175, + 54,21,192,12,16,0,176,175,33,136,64,0, + 8,0,32,22,33,40,0,0,2,131,2,60, + 176,5,66,140,0,0,0,0,1,0,66,36, + 2,131,1,60,102,43,192,8,176,5,34,172, + 0,1,3,36,8,0,48,142,8,0,2,36, + 16,0,2,166,6,0,2,36,18,0,2,162, + 4,0,2,36,14,0,3,166,19,0,2,162, + 20,0,3,166,2,131,6,60,212,4,198,36, + 3,0,194,136,0,0,194,152,4,0,195,132, + 25,0,2,170,22,0,2,186,26,0,3,166, + 2,131,1,60,195,211,34,136,176,133,130,155, + 0,0,0,0,31,0,2,170,28,0,2,186, + 32,0,4,38,144,71,192,12,6,0,6,36, + 39,0,162,139,36,0,162,155,0,0,0,0, + 41,0,2,170,38,0,2,186,132,129,133,39, + 3,0,162,136,0,0,162,152,4,0,163,128, + 5,0,164,128,3,0,2,170,0,0,2,186, + 4,0,3,162,5,0,4,162,2,131,5,60, + 212,4,165,36,3,0,162,136,0,0,162,152, + 4,0,163,128,5,0,164,128,9,0,2,170, + 6,0,2,186,10,0,3,162,11,0,4,162, + 33,32,64,2,8,6,2,36,12,0,2,166, + 60,128,2,52,0,0,34,174,60,0,2,36, + 18,0,34,166,74,21,192,12,33,40,32,2, + 3,0,64,20,0,0,0,0,152,21,192,12, + 33,32,32,2,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,216,255,189,39,32,0,180,175, + 33,160,128,0,16,0,176,175,33,128,160,0, + 36,0,191,175,28,0,179,175,24,0,178,175, + 20,0,177,175,8,0,2,142,33,152,192,0, + 33,136,83,0,6,0,35,150,0,1,4,36, + 5,0,100,16,0,2,2,36,113,0,98,16, + 0,0,0,0,15,44,192,8,0,0,0,0, + 24,0,35,150,176,133,130,151,0,0,0,0, + 139,0,98,20,0,0,0,0,26,0,35,150, + 2,131,2,60,194,211,66,148,0,0,0,0, + 133,0,98,20,0,0,0,0,0,0,34,150, + 0,0,0,0,129,0,68,20,8,0,2,36, + 2,0,35,150,0,0,0,0,125,0,98,20, + 6,4,2,36,4,0,35,150,0,0,0,0, + 121,0,98,20,0,0,0,0,2,131,4,60, + 192,4,132,36,54,21,192,12,1,0,5,36, + 33,144,64,0,8,0,64,22,0,0,0,0, + 2,131,2,60,176,5,66,140,0,0,0,0, + 1,0,66,36,2,131,1,60,15,44,192,8, + 176,5,34,172,8,0,5,142,8,0,80,142, + 9,0,162,136,6,0,162,152,10,0,163,128, + 11,0,164,128,3,0,2,170,0,0,2,186, + 4,0,3,162,5,0,4,162,2,131,6,60, + 212,4,198,36,3,0,194,136,0,0,194,152, + 4,0,195,128,5,0,196,128,9,0,2,170, + 6,0,2,186,10,0,3,162,11,0,4,162, + 12,0,4,38,12,0,165,36,33,128,19,2, + 80,68,192,12,244,255,102,38,0,1,2,36, + 0,0,2,166,8,0,2,36,2,0,2,166, + 6,0,2,36,4,0,2,162,4,0,2,36, + 5,0,2,162,0,2,2,36,6,0,2,166, + 2,131,5,60,212,4,165,36,3,0,162,136, + 0,0,162,152,4,0,163,132,11,0,2,170, + 8,0,2,186,12,0,3,166,2,131,1,60, + 195,211,34,136,176,133,130,155,0,0,0,0, + 17,0,2,170,14,0,2,186,11,0,34,138, + 8,0,34,154,12,0,35,134,21,0,2,170, + 18,0,2,186,22,0,3,166,17,0,34,138, + 14,0,34,154,0,0,0,0,27,0,2,170, + 24,0,2,186,33,32,128,2,33,40,64,2, + 60,128,2,52,0,0,66,174,60,0,2,36, + 74,21,192,12,18,0,66,166,38,0,64,20, + 0,0,0,0,152,21,192,12,33,32,64,2, + 15,44,192,8,0,0,0,0,14,0,35,150, + 196,133,130,151,0,0,0,0,29,0,98,20, + 0,0,0,0,16,0,35,150,2,131,2,60, + 214,211,66,148,0,0,0,0,23,0,98,20, + 0,0,0,0,0,0,34,150,0,0,0,0, + 19,0,68,20,8,0,2,36,2,0,35,150, + 0,0,0,0,15,0,98,20,6,4,2,36, + 4,0,35,150,0,0,0,0,11,0,98,20, + 0,0,0,0,68,133,130,143,140,129,134,39, + 11,0,35,138,8,0,35,154,12,0,36,134, + 3,0,195,168,0,0,195,184,4,0,196,164, + 20,0,66,36,152,129,130,175,36,0,191,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,192,255,189,39,80,0,169,143, + 84,0,168,143,56,0,180,175,33,160,128,0, + 44,0,177,175,88,0,177,143,16,0,164,39, + 52,0,179,175,92,0,179,143,3,131,3,60, + 32,17,99,36,40,0,176,175,33,128,192,0, + 60,0,191,175,48,0,178,175,0,0,98,140, + 8,0,50,142,1,0,66,36,0,0,98,172, + 3,0,162,136,0,0,162,152,4,0,163,128, + 5,0,170,128,3,0,66,170,0,0,66,186, + 4,0,67,162,5,0,74,162,2,131,10,60, + 212,4,74,37,3,0,66,137,0,0,66,153, + 4,0,67,129,5,0,69,129,9,0,66,170, + 6,0,66,186,10,0,67,162,11,0,69,162, + 69,0,2,36,16,0,162,163,17,0,168,163, + 18,0,34,150,240,132,131,143,33,48,0,0, + 25,0,169,163,20,0,66,36,0,66,2,0, + 255,255,66,48,2,18,2,0,37,64,2,1, + 0,74,3,0,255,255,98,48,2,18,2,0, + 37,72,34,1,3,131,2,60,0,17,66,140, + 22,0,160,167,26,0,160,167,18,0,168,167, + 176,133,136,143,1,0,99,36,240,132,131,175, + 20,0,169,167,24,0,162,163,28,0,168,175, + 3,0,226,136,0,0,226,152,0,0,0,0, + 35,0,162,171,32,0,162,187,192,42,192,12, + 20,0,5,36,39,16,2,0,26,0,162,167, + 14,0,2,36,44,0,2,22,8,0,2,36, + 12,0,66,166,19,0,162,139,16,0,162,155, + 23,0,163,139,20,0,163,155,27,0,164,139, + 24,0,164,155,31,0,165,139,28,0,165,155, + 17,0,66,170,14,0,66,186,21,0,67,170, + 18,0,67,186,25,0,68,170,22,0,68,186, + 29,0,69,170,26,0,69,186,35,0,162,139, + 32,0,162,155,0,0,0,0,33,0,66,170, + 30,0,66,186,34,0,2,36,0,0,34,174, + 0,0,35,142,18,0,34,150,0,0,0,0, + 33,16,67,0,18,0,34,166,18,0,34,150, + 0,0,0,0,60,0,66,44,68,0,64,16, + 33,32,128,2,0,0,98,142,18,0,35,150, + 60,0,66,36,35,16,67,0,0,0,98,174, + 60,0,2,36,18,0,34,166,201,44,192,8, + 33,32,128,2,164,129,133,39,3,0,162,136, + 0,0,162,152,4,0,163,128,5,0,164,128, + 17,0,66,170,14,0,66,186,18,0,67,162, + 19,0,68,162,8,0,2,36,20,0,66,166, + 19,0,162,139,16,0,162,155,23,0,163,139, + 20,0,163,155,27,0,164,139,24,0,164,155, + 31,0,165,139,28,0,165,155,25,0,66,170, + 22,0,66,186,29,0,67,170,26,0,67,186, + 33,0,68,170,30,0,68,186,37,0,69,170, + 34,0,69,186,35,0,162,139,32,0,162,155, + 0,0,0,0,41,0,66,170,38,0,66,186, + 42,0,2,36,0,0,34,174,0,0,35,142, + 18,0,34,150,0,0,0,0,33,16,67,0, + 18,0,34,166,18,0,34,150,0,0,0,0, + 60,0,66,44,8,0,64,16,0,0,0,0, + 0,0,98,142,18,0,35,150,60,0,66,36, + 35,16,67,0,0,0,98,174,60,0,2,36, + 18,0,34,166,18,0,34,150,0,0,0,0, + 0,26,2,0,2,18,2,0,37,24,98,0, + 12,0,67,166,33,32,128,2,74,21,192,12, + 33,40,32,2,8,0,64,20,33,32,32,2, + 3,131,3,60,36,17,99,36,0,0,98,140, + 0,0,0,0,1,0,66,36,152,21,192,12, + 0,0,98,172,60,0,191,143,56,0,180,143, + 52,0,179,143,48,0,178,143,44,0,177,143, + 40,0,176,143,8,0,224,3,64,0,189,39, + 176,255,189,39,56,0,180,175,112,0,180,143, + 48,0,178,175,100,0,178,143,52,0,179,175, + 104,0,179,143,64,0,182,175,33,176,128,0, + 72,0,190,175,33,240,160,0,60,0,181,175, + 33,168,224,0,68,0,183,175,108,0,183,143, + 2,131,4,60,192,4,132,36,76,0,191,175, + 44,0,177,175,40,0,176,175,32,0,166,175, + 7,2,130,38,2,130,2,0,54,21,192,12, + 33,40,0,2,33,136,64,0,8,0,32,22, + 0,74,18,0,2,131,4,60,232,146,132,36, + 33,40,128,2,15,63,192,12,33,48,0,2, + 74,45,192,8,0,0,0,0,255,255,66,50, + 2,18,2,0,37,72,34,1,0,66,19,0, + 255,255,98,50,2,18,2,0,37,64,2,1, + 8,0,130,38,0,58,2,0,255,255,66,48, + 2,18,2,0,37,56,226,0,0,163,4,60, + 220,5,132,52,4,0,5,36,4,0,34,142, + 0,17,6,36,8,0,80,140,4,0,35,142, + 8,0,2,36,0,0,98,172,0,0,9,166, + 2,0,8,166,6,0,0,166,192,42,192,12, + 4,0,7,166,33,32,160,2,4,0,5,36, + 192,42,192,12,255,255,70,48,4,0,4,38, + 2,0,5,36,192,42,192,12,255,255,70,48, + 33,32,0,2,8,0,5,36,192,42,192,12, + 255,255,70,48,33,32,224,2,33,40,128,2, + 192,42,192,12,255,255,70,48,39,24,2,0, + 255,255,98,48,2,0,64,20,33,40,224,2, + 255,255,3,52,6,0,3,166,4,0,36,142, + 0,0,0,0,220,42,192,12,33,48,128,2, + 33,32,192,2,0,0,67,140,33,40,192,3, + 0,128,99,52,0,0,67,172,4,0,35,142, + 32,0,166,143,18,0,99,148,33,56,160,2, + 18,0,35,166,96,0,170,143,17,0,3,36, + 16,0,163,175,24,0,177,175,28,0,162,175, + 23,44,192,12,20,0,170,175,3,131,3,60, + 124,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,76,0,191,143, + 72,0,190,143,68,0,183,143,64,0,182,143, + 60,0,181,143,56,0,180,143,52,0,179,143, + 48,0,178,143,44,0,177,143,40,0,176,143, + 8,0,224,3,80,0,189,39,128,255,189,39, + 116,0,183,175,33,184,128,0,112,0,182,175, + 33,176,160,0,104,0,180,175,33,160,192,0, + 108,0,181,175,33,168,224,0,40,0,164,39, + 96,0,178,175,144,0,178,143,33,40,0,0, + 100,0,179,175,148,0,179,143,16,0,6,36, + 120,0,191,175,92,0,177,175,144,71,192,12, + 88,0,176,175,56,0,177,39,33,32,32,2, + 33,40,0,0,2,0,16,36,40,0,176,167, + 2,0,162,150,0,0,0,0,42,0,162,167, + 19,0,130,138,16,0,130,154,0,0,0,0, + 47,0,162,171,44,0,162,187,144,71,192,12, + 16,0,6,36,33,32,64,2,33,40,96,2, + 40,0,166,39,33,56,32,2,56,0,176,167, + 0,0,162,150,2,131,16,60,8,239,16,38, + 58,0,162,167,15,0,130,138,12,0,130,154, + 0,0,0,0,63,0,162,171,60,0,162,187, + 242,5,2,36,84,0,162,167,72,0,162,39, + 72,0,160,167,76,0,176,175,80,0,176,175, + 247,71,192,12,16,0,162,175,255,255,3,36, + 22,0,67,16,12,0,145,38,33,32,224,2, + 6,0,197,38,35,48,150,2,0,0,163,150, + 4,0,2,36,16,0,162,175,161,0,2,36, + 20,0,162,175,28,0,176,175,0,18,3,0, + 2,26,3,0,37,16,67,0,255,255,66,48, + 24,0,162,175,80,0,162,143,76,0,163,143, + 33,56,32,2,35,16,67,0,255,255,66,48, + 220,44,192,12,32,0,162,175,120,0,191,143, + 116,0,183,143,112,0,182,143,108,0,181,143, + 104,0,180,143,100,0,179,143,96,0,178,143, + 92,0,177,143,88,0,176,143,8,0,224,3, + 128,0,189,39,196,133,130,143,184,255,189,39, + 64,0,191,175,60,0,177,175,109,0,64,16, + 56,0,176,175,255,255,3,36,106,0,67,16, + 0,0,0,0,176,133,130,143,176,133,145,39, + 102,0,64,16,0,0,0,0,100,0,67,16, + 0,0,0,0,2,131,2,60,8,239,66,36, + 44,0,162,175,48,0,162,175,242,5,2,36, + 40,0,160,167,6,0,128,16,52,0,162,167, + 1,0,2,36,23,0,130,16,0,0,0,0, + 36,46,192,8,0,0,0,0,2,131,16,60, + 160,204,16,38,156,71,192,12,33,32,0,2, + 0,163,4,60,4,1,132,140,204,204,3,60, + 205,204,99,52,25,0,131,0,33,40,32,2, + 33,48,0,2,33,56,64,0,40,0,164,39, + 16,64,0,0,194,16,8,0,0,0,0,0, + 104,56,192,12,16,0,162,175,251,45,192,8, + 33,24,64,0,3,131,2,60,28,18,66,148, + 0,0,0,0,2,0,66,48,61,0,64,16, + 0,0,0,0,2,131,16,60,160,204,16,38, + 156,71,192,12,33,32,0,2,0,163,4,60, + 4,1,132,140,204,204,3,60,205,204,99,52, + 25,0,131,0,33,40,32,2,33,48,0,2, + 33,56,64,0,40,0,164,39,16,64,0,0, + 194,16,8,0,0,0,0,0,105,57,192,12, + 16,0,162,175,33,24,64,0,255,255,2,36, + 39,0,98,16,0,0,0,0,140,129,130,147, + 0,0,0,0,1,0,66,48,7,0,64,20, + 0,0,0,0,68,133,131,143,152,129,130,143, + 0,0,0,0,43,16,67,0,11,0,64,16, + 33,32,0,0,68,133,131,143,148,129,130,143, + 0,0,0,0,6,0,98,16,33,32,0,0, + 196,133,133,143,148,129,131,175,17,43,192,12, + 33,32,0,0,33,32,0,0,140,129,133,39, + 14,0,6,36,4,0,2,36,16,0,162,175, + 162,0,2,36,20,0,162,175,24,0,162,175, + 2,131,2,60,8,239,66,36,28,0,162,175, + 48,0,162,143,44,0,163,143,196,133,135,39, + 35,16,67,0,255,255,66,48,220,44,192,12, + 32,0,162,175,64,0,191,143,60,0,177,143, + 56,0,176,143,8,0,224,3,72,0,189,39, + 208,255,189,39,36,0,179,175,33,152,128,0, + 40,0,180,175,33,160,160,0,32,0,178,175, + 24,0,176,175,33,128,224,0,44,0,191,175, + 28,0,177,175,6,0,2,150,64,0,177,143, + 0,0,0,0,20,0,64,16,33,144,192,0, + 12,0,68,38,8,0,5,36,192,42,192,12, + 0,17,6,36,4,0,4,38,2,0,5,36, + 192,42,192,12,255,255,70,48,33,32,0,2, + 33,40,32,2,192,42,192,12,255,255,70,48, + 255,255,66,48,255,255,3,52,4,0,67,16, + 0,0,0,0,3,131,3,60,111,46,192,8, + 120,17,99,36,4,0,2,150,0,0,0,0, + 0,26,2,0,2,18,2,0,37,24,98,0, + 255,255,99,48,4,0,113,16,8,0,7,38, + 3,131,3,60,111,46,192,8,120,17,99,36, + 2,0,2,150,0,0,0,0,0,26,2,0, + 2,18,2,0,37,24,98,0,255,255,99,48, + 161,0,2,36,15,0,98,20,248,255,40,38, + 33,32,96,2,33,40,128,2,3,131,3,60, + 112,17,99,36,0,0,98,140,33,48,64,2, + 16,0,167,175,33,56,0,2,20,0,168,175, + 1,0,66,36,86,45,192,12,0,0,98,172, + 115,46,192,8,0,0,0,0,3,131,3,60, + 116,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,44,0,191,143, + 40,0,180,143,36,0,179,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 48,0,189,39,192,255,189,39,52,0,181,175, + 33,168,128,0,44,0,179,175,33,152,160,0, + 48,0,180,175,33,160,192,0,32,0,176,175, + 33,128,224,0,33,32,0,2,33,48,0,0, + 40,0,178,175,80,0,178,143,3,131,3,60, + 144,16,99,36,56,0,191,175,36,0,177,175, + 0,0,98,140,33,40,64,2,1,0,66,36, + 192,42,192,12,0,0,98,172,255,255,66,48, + 255,255,3,52,8,0,67,16,8,0,2,36, + 3,131,2,60,148,16,66,140,0,0,0,0, + 1,0,66,36,3,131,1,60,217,46,192,8, + 148,16,34,172,0,0,3,150,0,0,0,0, + 58,0,98,20,255,1,69,38,2,131,4,60, + 192,4,132,36,3,131,2,60,172,16,66,140, + 3,131,3,60,196,16,99,140,1,0,66,36, + 1,0,99,36,3,131,1,60,172,16,34,172, + 3,131,1,60,196,16,35,172,54,21,192,12, + 2,42,5,0,33,136,64,0,8,0,32,22, + 33,32,0,2,3,131,2,60,200,16,66,140, + 0,0,0,0,1,0,66,36,3,131,1,60, + 217,46,192,8,200,16,34,172,33,40,64,2, + 33,48,0,0,0,0,0,162,192,42,192,12, + 2,0,0,166,33,40,0,2,39,16,2,0, + 2,0,162,164,4,0,36,142,0,0,0,0, + 220,42,192,12,33,48,64,2,33,32,160,2, + 6,0,101,38,35,48,147,2,0,0,67,140, + 12,0,135,38,0,128,99,52,0,0,67,172, + 1,0,3,36,18,0,50,166,16,0,163,175, + 4,0,3,36,20,0,163,175,24,0,177,175, + 23,44,192,12,28,0,162,175,3,131,2,60, + 228,16,66,140,0,0,0,0,1,0,66,36, + 3,131,1,60,228,16,34,172,56,0,191,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,64,0,189,39,200,255,189,39, + 44,0,181,175,33,168,128,0,3,131,3,60, + 4,17,99,36,48,0,191,175,40,0,180,175, + 36,0,179,175,32,0,178,175,28,0,177,175, + 24,0,176,175,0,0,98,140,33,136,160,0, + 1,0,66,36,0,0,98,172,18,0,34,150, + 0,0,0,0,255,255,84,48,243,5,130,46, + 8,0,64,20,33,152,192,0,3,131,2,60, + 8,17,66,140,0,0,0,0,1,0,66,36, + 3,131,1,60,132,47,192,8,8,17,34,172, + 2,131,18,60,18,233,82,38,33,32,64,2, + 0,0,48,142,8,0,37,142,255,63,16,50, + 80,68,192,12,33,48,0,2,0,0,34,142, + 0,0,0,0,0,128,66,48,5,0,64,20, + 33,144,80,2,4,0,49,142,0,0,0,0, + 1,47,192,8,33,32,64,2,2,131,18,60, + 18,233,82,38,33,128,114,2,16,0,17,38, + 33,32,32,2,176,133,133,39,168,71,192,12, + 4,0,6,36,9,0,64,16,33,32,32,2, + 128,129,133,39,168,71,192,12,4,0,6,36, + 4,0,64,16,0,0,0,0,3,131,3,60, + 128,47,192,8,12,17,99,36,0,0,4,146, + 64,0,2,36,240,0,131,48,4,0,98,16, + 15,0,130,48,3,131,3,60,128,47,192,8, + 8,17,99,36,128,136,2,0,20,0,34,42, + 4,0,64,16,33,32,0,2,3,131,3,60, + 128,47,192,8,8,17,99,36,33,40,32,2, + 192,42,192,12,33,48,0,0,255,255,66,48, + 255,255,3,52,4,0,67,16,0,0,0,0, + 3,131,3,60,128,47,192,8,8,17,99,36, + 6,0,2,150,0,0,0,0,63,255,66,48, + 18,0,64,16,33,56,17,2,3,131,3,60, + 48,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,3,131,2,60, + 56,17,66,140,3,131,3,60,24,17,99,140, + 1,0,66,36,1,0,99,36,3,131,1,60, + 56,17,34,172,3,131,1,60,132,47,192,8, + 24,17,35,172,2,0,2,150,0,0,0,0, + 0,26,2,0,2,18,2,0,37,24,98,0, + 255,255,99,48,35,64,113,0,35,16,242,0, + 35,16,130,2,42,16,72,0,4,0,64,16, + 1,0,2,36,3,131,3,60,128,47,192,8, + 24,17,99,36,9,0,3,146,0,0,0,0, + 5,0,98,16,17,0,2,36,15,0,98,16, + 33,32,160,2,126,47,192,8,0,0,0,0, + 33,32,160,2,33,40,64,2,3,131,3,60, + 28,17,99,36,0,0,98,140,33,48,0,2, + 16,0,168,175,1,0,66,36,123,46,192,12, + 0,0,98,172,132,47,192,8,0,0,0,0, + 33,40,64,2,3,131,3,60,28,17,99,36, + 0,0,98,140,33,48,0,2,16,0,168,175, + 1,0,66,36,41,46,192,12,0,0,98,172, + 132,47,192,8,0,0,0,0,3,131,3,60, + 20,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,48,0,191,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,56,0,189,39,232,255,189,39, + 255,0,12,60,255,0,140,53,0,255,13,60, + 0,255,173,53,16,0,176,175,3,131,16,60, + 0,17,16,38,33,32,0,2,33,40,0,0, + 0,163,9,60,220,5,41,141,0,163,10,60, + 16,6,74,141,0,163,11,60,224,5,107,141, + 20,0,191,175,0,28,9,0,2,20,9,0, + 37,24,98,0,0,60,10,0,2,20,10,0, + 37,56,226,0,0,68,11,0,2,20,11,0, + 37,64,2,1,2,18,3,0,36,16,76,0, + 0,26,3,0,36,24,109,0,37,16,67,0, + 184,133,130,175,2,18,7,0,36,16,76,0, + 0,58,7,0,36,56,237,0,37,16,71,0, + 192,133,130,175,2,18,8,0,36,16,76,0, + 0,66,8,0,36,64,13,1,37,16,72,0, + 176,133,137,175,196,133,138,175,188,133,139,175, + 180,133,130,175,144,71,192,12,76,0,6,36, + 3,131,4,60,144,16,132,36,33,40,0,0, + 32,0,2,36,0,0,2,174,10,0,2,36, + 3,131,1,60,44,17,34,172,144,71,192,12, + 104,0,6,36,3,131,4,60,112,17,132,36, + 33,40,0,0,144,71,192,12,16,0,6,36, + 3,131,4,60,80,17,132,36,33,40,0,0, + 144,71,192,12,32,0,6,36,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 176,255,189,39,100,0,162,143,96,0,169,143, + 72,0,182,175,33,176,128,0,48,0,176,175, + 104,0,176,143,34,0,164,39,60,0,179,175, + 108,0,179,143,3,131,3,60,104,17,99,36, + 56,0,178,175,2,131,18,60,212,4,82,38, + 52,0,177,175,33,136,192,0,68,0,181,175, + 112,0,181,143,4,0,6,36,76,0,191,175, + 64,0,180,175,0,66,2,0,255,255,66,48, + 2,18,2,0,37,64,2,1,0,0,98,140, + 8,0,116,142,1,0,66,36,0,0,98,172, + 3,0,162,136,0,0,162,152,4,0,163,128, + 5,0,170,128,3,0,130,170,0,0,130,186, + 4,0,131,162,5,0,138,162,3,0,66,138, + 0,0,66,154,4,0,67,130,5,0,69,130, + 9,0,130,170,6,0,130,186,10,0,131,162, + 11,0,133,162,255,255,2,52,16,0,162,167, + 18,0,98,150,33,40,0,0,20,0,160,163, + 21,0,160,163,30,0,66,36,0,26,2,0, + 255,255,66,48,2,18,2,0,37,24,98,0, + 18,0,163,167,3,0,226,136,0,0,226,152, + 0,0,0,0,25,0,162,171,22,0,162,187, + 3,0,34,137,0,0,34,153,4,0,35,129, + 5,0,39,129,29,0,162,171,26,0,162,187, + 30,0,163,163,31,0,167,163,144,71,192,12, + 32,0,168,167,3,0,66,138,0,0,66,154, + 4,0,67,134,41,0,162,171,38,0,162,187, + 42,0,163,167,33,16,0,2,0,130,16,0, + 255,255,66,48,2,18,2,0,37,128,2,2, + 14,0,2,36,58,0,34,22,44,0,176,167, + 18,0,162,151,0,0,0,0,12,0,130,166, + 19,0,162,139,16,0,162,155,23,0,163,139, + 20,0,163,155,27,0,164,139,24,0,164,155, + 31,0,165,139,28,0,165,155,17,0,130,170, + 14,0,130,186,21,0,131,170,18,0,131,186, + 25,0,132,170,22,0,132,186,29,0,133,170, + 26,0,133,186,35,0,162,139,32,0,162,155, + 39,0,163,139,36,0,163,155,43,0,164,139, + 40,0,164,155,44,0,165,131,33,0,130,170, + 30,0,130,186,37,0,131,170,34,0,131,186, + 41,0,132,170,38,0,132,186,42,0,133,162, + 45,0,162,131,0,0,0,0,43,0,130,162, + 44,0,2,36,0,0,98,174,0,0,99,142, + 18,0,98,150,0,0,0,0,33,16,67,0, + 18,0,98,166,18,0,98,150,0,0,0,0, + 60,0,66,44,80,0,64,16,33,32,192,2, + 0,0,162,142,18,0,99,150,60,0,66,36, + 35,16,67,0,0,0,162,174,60,0,2,36, + 18,0,98,166,172,48,192,8,33,32,192,2, + 208,129,133,39,3,0,162,136,0,0,162,152, + 4,0,163,128,5,0,164,128,17,0,130,170, + 14,0,130,186,18,0,131,162,19,0,132,162, + 129,55,2,36,20,0,130,166,19,0,162,139, + 16,0,162,155,23,0,163,139,20,0,163,155, + 27,0,164,139,24,0,164,155,31,0,165,139, + 28,0,165,155,25,0,130,170,22,0,130,186, + 29,0,131,170,26,0,131,186,33,0,132,170, + 30,0,132,186,37,0,133,170,34,0,133,186, + 35,0,162,139,32,0,162,155,39,0,163,139, + 36,0,163,155,43,0,164,139,40,0,164,155, + 44,0,165,131,41,0,130,170,38,0,130,186, + 45,0,131,170,42,0,131,186,49,0,132,170, + 46,0,132,186,50,0,133,162,45,0,162,131, + 0,0,0,0,51,0,130,162,52,0,2,36, + 0,0,98,174,0,0,99,142,18,0,98,150, + 0,0,0,0,33,16,67,0,18,0,98,166, + 18,0,98,150,0,0,0,0,60,0,66,44, + 8,0,64,16,0,0,0,0,0,0,162,142, + 18,0,99,150,60,0,66,36,35,16,67,0, + 0,0,162,174,60,0,2,36,18,0,98,166, + 18,0,98,150,0,0,0,0,0,26,2,0, + 2,18,2,0,37,24,98,0,12,0,131,166, + 33,32,192,2,74,21,192,12,33,40,96,2, + 8,0,64,20,33,32,96,2,3,131,3,60, + 108,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,152,21,192,12,0,0,98,172, + 76,0,191,143,72,0,182,143,68,0,181,143, + 64,0,180,143,60,0,179,143,56,0,178,143, + 52,0,177,143,48,0,176,143,8,0,224,3, + 80,0,189,39,33,24,0,0,5,0,7,36, + 58,0,6,36,0,0,162,144,0,0,0,0, + 2,17,2,0,2,131,1,60,33,8,34,0, + 176,155,34,144,0,0,0,0,0,0,130,160, + 0,0,162,144,1,0,132,36,15,0,66,48, + 2,131,1,60,33,8,34,0,176,155,34,144, + 1,0,165,36,0,0,130,160,3,0,103,16, + 1,0,132,36,0,0,134,160,1,0,132,36, + 1,0,99,36,6,0,98,40,233,255,64,20, + 0,0,0,0,8,0,224,3,0,0,0,0, + 128,255,189,39,2,101,2,36,0,2,3,36, + 112,0,176,175,44,0,176,39,33,32,0,2, + 33,40,0,0,48,0,6,36,120,0,191,175, + 116,0,177,175,40,0,162,167,144,71,192,12, + 42,0,163,167,3,131,17,60,96,18,49,38, + 2,131,5,60,224,147,165,36,188,71,192,12, + 33,32,32,2,18,0,64,20,33,32,0,2, + 2,131,5,60,236,147,165,36,0,0,162,140, + 4,0,163,140,8,0,164,140,44,0,162,175, + 48,0,163,175,52,0,164,175,12,0,162,128, + 0,0,0,0,56,0,162,163,2,131,5,60, + 212,4,165,36,193,48,192,12,56,0,164,39, + 8,49,192,8,92,0,177,39,33,40,32,2, + 204,63,192,12,48,0,6,36,92,0,177,39, + 33,32,32,2,33,40,0,0,144,71,192,12, + 4,0,6,36,2,131,4,60,212,4,132,36, + 0,0,130,140,4,0,131,132,96,0,162,175, + 100,0,163,167,4,82,2,36,0,1,3,36, + 236,255,132,36,2,0,5,36,102,0,162,167, + 54,21,192,12,104,0,163,167,33,128,64,0, + 22,0,0,18,40,0,165,39,4,0,4,142, + 0,0,0,0,220,42,192,12,66,0,6,36, + 33,32,0,0,0,0,67,140,132,129,133,39, + 0,128,99,52,0,0,67,172,4,0,3,142, + 14,0,6,36,18,0,99,148,33,56,32,2, + 18,0,3,166,82,4,3,36,16,0,165,175, + 20,0,163,175,24,0,163,175,28,0,176,175, + 214,47,192,12,32,0,162,175,120,0,191,143, + 116,0,177,143,112,0,176,143,8,0,224,3, + 128,0,189,39,144,255,189,39,104,0,180,175, + 33,160,128,0,100,0,179,175,33,152,160,0, + 92,0,177,175,33,136,192,0,33,32,224,0, + 40,0,166,39,56,0,167,39,96,0,178,175, + 2,131,18,60,8,239,82,38,88,0,176,175, + 128,0,176,143,242,5,2,36,84,0,162,167, + 72,0,162,39,108,0,191,175,72,0,160,167, + 76,0,178,175,80,0,178,175,16,0,162,175, + 247,71,192,12,33,40,0,2,255,255,3,36, + 37,0,67,16,255,1,5,38,2,131,4,60, + 192,4,132,36,54,21,192,12,2,42,5,0, + 33,128,64,0,30,0,0,18,33,40,64,2, + 80,0,166,143,76,0,162,143,4,0,4,142, + 35,48,194,0,220,42,192,12,255,255,198,48, + 33,32,128,2,0,0,67,140,6,0,101,38, + 0,128,99,52,0,0,67,172,4,0,3,142, + 35,48,51,2,18,0,99,148,18,0,39,38, + 18,0,3,166,28,0,40,150,22,0,35,38, + 16,0,163,175,15,144,3,52,24,0,163,175, + 28,0,176,175,32,0,162,175,0,18,8,0, + 2,66,8,0,37,16,72,0,255,255,66,48, + 214,47,192,12,20,0,162,175,108,0,191,143, + 104,0,180,143,100,0,179,143,96,0,178,143, + 92,0,177,143,88,0,176,143,8,0,224,3, + 112,0,189,39,200,255,189,39,44,0,181,175, + 33,168,128,0,28,0,177,175,33,136,160,0, + 48,0,191,175,40,0,180,175,36,0,179,175, + 32,0,178,175,24,0,176,175,18,0,34,150, + 0,0,0,0,255,255,84,48,243,5,130,46, + 4,0,64,20,33,152,192,0,3,131,3,60, + 241,49,192,8,84,17,99,36,2,131,18,60, + 16,233,82,38,33,32,64,2,0,0,48,142, + 8,0,37,142,255,63,16,50,80,68,192,12, + 33,48,0,2,0,0,34,142,0,0,0,0, + 0,128,66,48,5,0,64,20,33,144,80,2, + 4,0,49,142,0,0,0,0,148,49,192,8, + 33,32,64,2,2,131,2,60,16,233,66,36, + 33,128,98,2,6,0,17,38,33,32,32,2, + 0,163,5,60,224,5,165,52,168,71,192,12, + 4,0,6,36,9,0,64,16,33,32,32,2, + 224,129,133,39,168,71,192,12,4,0,6,36, + 5,0,64,16,10,0,17,38,3,131,3,60, + 241,49,192,8,88,17,99,36,10,0,17,38, + 33,32,32,2,2,131,5,60,212,4,165,36, + 168,71,192,12,6,0,6,36,9,0,64,16, + 33,32,32,2,228,129,133,39,168,71,192,12, + 6,0,6,36,4,0,64,16,0,0,0,0, + 3,131,3,60,241,49,192,8,88,17,99,36, + 0,0,3,150,255,255,2,52,4,0,98,16, + 30,0,7,38,3,131,3,60,241,49,192,8, + 88,17,99,36,2,0,2,150,2,131,5,60, + 16,233,165,36,0,26,2,0,2,18,2,0, + 37,24,98,0,255,255,99,48,226,255,104,36, + 35,16,229,0,35,16,130,2,42,16,72,0, + 4,0,64,16,0,0,0,0,3,131,3,60, + 241,49,192,8,96,17,99,36,16,0,2,150, + 0,0,0,0,0,26,2,0,2,18,2,0, + 37,24,98,0,255,255,99,48,15,144,2,52, + 11,0,98,20,33,32,160,2,3,131,3,60, + 100,17,99,36,0,0,98,140,33,48,0,2, + 16,0,168,175,1,0,66,36,54,49,192,12, + 0,0,98,172,245,49,192,8,0,0,0,0, + 3,131,3,60,92,17,99,36,0,0,98,140, + 0,0,0,0,1,0,66,36,0,0,98,172, + 48,0,191,143,44,0,181,143,40,0,180,143, + 36,0,179,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,56,0,189,39, + 0,0,0,0,0,0,0,0,232,255,189,39, + 16,0,191,175,13,8,192,12,0,8,4,36, + 8,133,130,175,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,232,255,189,39, + 45,0,128,16,16,0,191,175,240,129,133,143, + 7,0,130,36,194,16,2,0,10,0,160,20, + 1,0,70,36,8,133,133,143,0,133,130,39, + 0,133,133,175,0,0,162,172,0,8,2,36, + 240,129,133,175,2,131,1,60,20,211,32,172, + 4,0,162,172,0,0,164,140,0,0,0,0, + 4,0,131,140,0,0,0,0,43,16,102,0, + 14,0,64,20,0,0,0,0,5,0,102,20, + 35,16,102,0,0,0,130,140,0,0,0,0, + 43,50,192,8,0,0,162,172,4,0,130,172, + 192,16,2,0,33,32,130,0,4,0,134,172, + 240,129,133,175,57,50,192,8,8,0,130,36, + 240,129,130,143,0,0,0,0,4,0,130,16, + 33,40,128,0,0,0,132,140,28,50,192,8, + 0,0,0,0,2,131,4,60,15,63,192,12, + 64,148,132,36,33,16,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 56,0,128,16,248,255,132,36,240,129,133,143, + 0,0,0,0,78,50,192,8,43,16,164,0, + 0,0,163,140,0,0,0,0,43,16,163,0, + 5,0,64,20,43,16,164,0,12,0,64,20, + 43,16,131,0,10,0,64,20,0,0,0,0, + 33,40,96,0,43,16,164,0,244,255,64,16, + 0,0,0,0,0,0,162,140,0,0,0,0, + 43,16,130,0,239,255,64,16,0,0,0,0, + 4,0,134,140,0,0,163,140,192,16,6,0, + 33,16,130,0,11,0,67,20,0,0,0,0, + 4,0,98,140,0,0,0,0,33,16,194,0, + 4,0,130,172,0,0,162,140,0,0,0,0, + 0,0,66,140,0,0,0,0,102,50,192,8, + 0,0,130,172,0,0,131,172,4,0,163,140, + 0,0,0,0,192,16,3,0,33,16,162,0, + 9,0,68,20,0,0,0,0,4,0,130,140, + 0,0,0,0,33,16,98,0,4,0,162,172, + 0,0,130,140,0,0,0,0,117,50,192,8, + 0,0,162,172,0,0,164,172,240,129,133,175, + 8,0,224,3,0,0,0,0,232,255,189,39, + 16,0,191,175,0,50,192,12,0,0,0,0, + 178,45,192,12,33,32,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 1,0,3,36,5,0,195,20,255,255,2,36, + 0,0,226,140,0,0,0,0,43,16,2,0, + 35,16,2,0,8,0,224,3,0,0,0,0, + 224,255,189,39,16,0,176,175,33,128,224,0, + 20,0,177,175,48,0,177,143,1,0,2,36, + 5,0,162,20,24,0,191,175,0,0,194,140, + 0,0,0,0,8,0,64,16,0,0,0,0, + 11,0,2,36,33,32,0,2,33,40,32,2, + 48,72,192,12,96,0,2,174,1,0,66,36, + 100,0,2,174,17,0,34,146,0,0,0,0, + 1,0,66,52,17,0,34,162,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,8,0,224,3,0,0,0,0, + 16,0,163,143,0,0,0,0,17,0,98,144, + 0,0,0,0,2,0,66,52,8,0,224,3, + 17,0,98,160,8,0,224,3,0,0,0,0, + 224,255,189,39,16,0,176,175,33,128,128,0, + 244,129,131,151,255,0,2,36,28,0,191,175, + 24,0,178,175,20,0,177,175,4,0,2,174, + 60,0,0,174,1,0,98,36,244,129,130,167, + 10,0,3,166,3,0,162,136,0,0,162,152, + 7,0,163,136,4,0,163,152,11,0,164,136, + 8,0,164,152,15,0,167,136,12,0,167,152, + 15,0,2,170,12,0,2,186,19,0,3,170, + 16,0,3,186,23,0,4,170,20,0,4,186, + 27,0,7,170,24,0,7,186,3,0,194,136, + 0,0,194,152,7,0,195,136,4,0,195,152, + 11,0,196,136,8,0,196,152,15,0,197,136, + 12,0,197,152,31,0,2,170,28,0,2,186, + 35,0,3,170,32,0,3,186,39,0,4,170, + 36,0,4,186,43,0,5,170,40,0,5,186, + 80,0,2,142,76,0,3,142,0,0,0,0, + 35,16,67,0,255,255,81,48,88,0,3,150, + 3,0,2,36,13,0,98,16,0,0,0,0, + 2,131,18,60,160,204,82,38,156,71,192,12, + 33,32,64,2,7,0,81,20,33,32,64,2, + 76,0,5,142,0,0,0,0,168,71,192,12, + 33,48,32,2,21,0,64,16,33,16,0,0, + 2,131,18,60,192,204,82,38,156,71,192,12, + 33,32,64,2,7,0,81,20,33,32,64,2, + 76,0,5,142,0,0,0,0,168,71,192,12, + 33,48,32,2,9,0,64,16,33,16,0,0, + 3,131,3,60,132,17,99,36,0,0,98,140, + 1,0,4,36,1,0,66,36,178,45,192,12, + 0,0,98,172,1,0,2,36,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,0,0,0,0, + 0,0,0,0,224,255,189,39,20,0,177,175, + 33,136,224,0,16,0,176,175,48,0,176,143, + 24,0,191,175,156,71,192,12,33,32,32,2, + 0,0,2,174,33,16,32,2,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,8,0,224,3,33,16,224,0, + 0,0,227,140,204,204,2,60,205,204,66,52, + 25,0,98,0,16,32,0,0,0,0,0,0, + 0,0,0,0,8,0,224,3,194,16,4,0, + 224,255,189,39,16,0,176,175,33,128,224,0, + 33,32,0,2,33,40,0,0,20,0,177,175, + 48,0,177,143,24,0,191,175,208,71,192,12, + 16,0,6,36,2,0,64,20,35,16,80,0, + 16,0,2,36,0,0,34,174,33,16,0,2, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,232,255,189,39, + 40,0,164,143,44,0,165,143,16,0,191,175, + 205,59,192,12,0,0,0,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,40,0,164,143,44,0,165,143, + 16,0,191,175,239,59,192,12,0,0,0,0, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,232,255,189,39,40,0,164,143, + 44,0,165,143,16,0,191,175,17,60,192,12, + 0,0,0,0,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,8,0,224,3, + 33,16,224,0,0,0,226,140,8,0,224,3, + 0,0,0,0,216,255,189,39,24,0,176,175, + 56,0,176,143,32,0,191,175,28,0,177,175, + 36,0,2,142,1,0,3,36,20,0,81,140, + 187,0,163,20,0,0,0,0,0,0,195,140, + 0,0,0,0,183,0,96,16,0,0,0,0, + 32,133,130,143,0,0,0,0,43,16,67,0, + 178,0,64,20,255,255,104,36,64,18,8,0, + 2,131,3,60,192,246,99,36,33,40,67,0, + 255,255,132,36,22,0,130,44,170,0,64,16, + 128,16,4,0,2,131,1,60,33,8,34,0, + 144,148,34,140,0,0,0,0,8,0,64,0, + 0,0,0,0,2,0,2,36,16,0,2,162, + 17,0,2,146,0,0,195,140,0,0,0,0, + 15,52,192,8,2,0,66,52,33,32,32,2, + 17,0,3,146,4,0,2,36,16,0,2,162, + 40,0,0,166,44,0,17,174,2,0,99,52, + 156,71,192,12,17,0,3,162,255,255,66,48, + 33,16,34,2,48,0,2,174,40,52,192,8, + 52,0,0,166,17,0,3,146,2,0,2,36, + 16,0,2,162,243,51,192,8,40,0,17,174, + 17,0,3,146,2,0,2,36,16,0,2,162, + 243,51,192,8,40,0,17,174,66,0,2,36, + 13,0,0,21,16,0,2,162,24,133,132,143, + 0,0,0,0,64,25,4,0,35,24,100,0, + 128,17,3,0,35,16,67,0,192,16,2,0, + 33,16,68,0,128,24,2,0,33,16,67,0, + 178,51,192,8,192,17,2,0,152,0,2,60, + 128,150,66,52,40,0,2,174,17,0,2,146, + 0,0,0,0,199,51,192,8,2,0,66,52, + 17,0,3,146,4,0,2,36,16,0,2,162, + 20,0,162,36,44,0,2,174,26,0,162,36, + 40,0,0,166,48,0,2,174,243,51,192,8, + 52,0,0,166,2,0,2,36,16,0,2,162, + 17,0,2,146,1,0,3,36,40,0,3,174, + 2,0,66,52,40,52,192,8,17,0,2,162, + 17,0,3,146,0,0,0,0,241,51,192,8, + 67,0,2,36,65,0,2,36,16,0,2,162, + 17,0,2,146,168,0,163,140,0,0,0,0, + 15,52,192,8,2,0,66,52,65,0,2,36, + 16,0,2,162,156,0,162,140,0,1,164,140, + 22,52,192,8,0,0,0,0,65,0,2,36, + 16,0,2,162,17,0,2,146,0,1,163,140, + 0,0,0,0,15,52,192,8,2,0,66,52, + 65,0,2,36,16,0,2,162,17,0,2,146, + 164,0,163,140,0,0,0,0,15,52,192,8, + 2,0,66,52,65,0,2,36,16,0,2,162, + 17,0,2,146,160,0,163,140,0,0,0,0, + 15,52,192,8,2,0,66,52,17,0,3,146, + 65,0,2,36,16,0,2,162,40,0,0,174, + 2,0,99,52,40,52,192,8,17,0,3,162, + 65,0,2,36,16,0,2,162,172,0,162,140, + 4,1,164,140,22,52,192,8,0,0,0,0, + 65,0,2,36,16,0,2,162,17,0,2,146, + 4,1,163,140,0,0,0,0,15,52,192,8, + 2,0,66,52,65,0,2,36,16,0,2,162, + 17,0,2,146,184,0,163,140,0,0,0,0, + 15,52,192,8,2,0,66,52,65,0,2,36, + 16,0,2,162,17,0,2,146,188,0,163,140, + 2,0,66,52,40,0,3,174,40,52,192,8, + 17,0,2,162,66,0,2,36,16,0,2,162, + 172,0,162,140,176,0,164,140,17,0,3,146, + 35,16,68,0,2,0,99,52,40,0,2,174, + 40,52,192,8,17,0,3,162,16,0,160,175, + 33,32,224,0,33,40,0,2,2,131,7,60, + 96,204,231,36,226,76,192,12,2,0,6,36, + 40,52,192,8,0,0,0,0,33,32,224,0, + 200,76,192,12,33,40,0,2,32,0,191,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 40,0,189,39,224,255,189,39,16,0,176,175, + 33,128,224,0,20,0,177,175,48,0,177,143, + 1,0,2,36,10,0,162,20,24,0,191,175, + 0,0,198,140,0,0,0,0,6,0,192,16, + 0,0,0,0,32,133,130,143,0,0,0,0, + 43,16,70,0,5,0,64,16,7,0,2,36, + 33,32,0,2,33,40,32,2,70,52,192,8, + 11,0,2,36,7,0,130,16,33,32,0,2, + 33,40,32,2,17,0,2,36,48,72,192,12, + 96,0,2,174,1,0,66,36,100,0,2,174, + 17,0,34,146,0,0,0,0,1,0,66,52, + 17,0,34,162,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 208,255,189,39,32,0,176,175,64,0,176,143, + 36,0,177,175,33,136,224,0,4,0,160,20, + 40,0,191,175,1,0,2,36,106,52,192,8, + 24,0,162,175,0,0,198,140,32,133,130,143, + 0,0,0,0,43,16,194,0,3,0,64,16, + 1,0,194,36,106,52,192,8,24,0,162,175, + 17,0,2,146,0,0,0,0,18,0,66,52, + 116,52,192,8,17,0,2,162,16,0,176,175, + 1,0,5,36,24,0,166,39,97,51,192,12, + 33,56,32,2,33,32,32,2,33,40,0,2, + 1,0,6,36,253,76,192,12,24,0,167,39, + 40,0,191,143,36,0,177,143,32,0,176,143, + 8,0,224,3,48,0,189,39,16,0,163,143, + 1,0,2,36,13,0,162,20,14,0,2,36, + 0,0,198,140,0,0,0,0,9,0,192,16, + 0,0,0,0,32,133,130,143,0,0,0,0, + 43,16,70,0,4,0,64,20,14,0,2,36, + 7,0,2,36,2,0,130,16,14,0,2,36, + 96,0,226,172,17,0,98,144,0,0,0,0, + 2,0,66,52,8,0,224,3,17,0,98,160, + 16,0,162,143,0,0,0,0,8,0,224,3, + 0,0,226,172,0,0,226,140,8,0,224,3, + 0,0,0,0,232,255,189,39,40,0,168,143, + 1,0,2,36,61,0,162,20,16,0,191,175, + 0,0,197,140,0,0,0,0,57,0,160,16, + 0,0,0,0,32,133,130,143,0,0,0,0, + 43,16,69,0,52,0,64,20,255,255,132,36, + 5,0,130,44,49,0,64,16,128,16,4,0, + 2,131,1,60,33,8,34,0,232,148,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 64,0,2,36,16,0,2,161,0,163,5,60, + 220,5,165,52,3,0,162,136,0,0,162,152, + 0,0,0,0,43,0,2,169,40,0,2,185, + 17,0,2,145,0,0,0,0,213,52,192,8, + 2,0,66,52,2,0,2,36,16,0,2,161, + 17,0,2,145,0,0,195,140,0,0,0,0, + 198,52,192,8,2,0,66,52,64,0,2,36, + 16,0,2,161,17,0,2,145,128,132,131,143, + 2,0,66,52,40,0,3,173,218,52,192,8, + 17,0,2,161,2,0,2,36,16,0,2,161, + 17,0,2,145,0,0,0,0,211,52,192,8, + 1,0,3,36,2,0,2,36,16,0,2,161, + 17,0,2,145,220,5,3,36,40,0,3,173, + 2,0,66,52,218,52,192,8,17,0,2,161, + 33,32,224,0,200,76,192,12,33,40,0,1, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,208,255,189,39,32,0,176,175, + 64,0,176,143,36,0,177,175,33,136,224,0, + 4,0,160,20,40,0,191,175,1,0,2,36, + 245,52,192,8,24,0,162,175,0,0,198,140, + 32,133,130,143,0,0,0,0,43,16,194,0, + 3,0,64,16,1,0,194,36,245,52,192,8, + 24,0,162,175,17,0,2,146,0,0,0,0, + 18,0,66,52,255,52,192,8,17,0,2,162, + 16,0,176,175,1,0,5,36,24,0,166,39, + 150,52,192,12,33,56,32,2,33,32,32,2, + 33,40,0,2,1,0,6,36,253,76,192,12, + 24,0,167,39,40,0,191,143,36,0,177,143, + 32,0,176,143,8,0,224,3,48,0,189,39, + 232,255,189,39,40,0,165,143,16,0,191,175, + 200,76,192,12,33,32,224,0,16,0,191,143, + 24,0,189,39,8,0,224,3,0,0,0,0, + 16,0,163,143,14,0,2,36,96,0,226,172, + 17,0,98,144,0,0,0,0,2,0,66,52, + 8,0,224,3,17,0,98,160,224,255,189,39, + 16,0,176,175,33,128,224,0,17,0,2,36, + 24,0,191,175,20,0,177,175,96,0,2,174, + 48,0,177,143,33,32,0,2,48,72,192,12, + 33,40,32,2,1,0,66,36,100,0,2,174, + 17,0,34,146,0,0,0,0,1,0,66,52, + 17,0,34,162,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 16,0,163,143,0,0,0,0,17,0,98,144, + 0,0,0,0,18,0,66,52,8,0,224,3, + 17,0,98,160,8,0,224,3,33,16,224,0, + 224,255,189,39,48,0,168,143,1,0,2,36, + 114,0,162,20,24,0,191,175,0,0,195,140, + 0,0,0,0,110,0,96,16,0,0,0,0, + 32,133,130,143,0,0,0,0,43,16,67,0, + 105,0,64,20,255,255,98,36,64,18,2,0, + 2,131,3,60,192,246,99,36,33,24,67,0, + 255,255,132,36,17,0,130,44,97,0,64,16, + 128,16,4,0,2,131,1,60,33,8,34,0, + 0,149,34,140,0,0,0,0,8,0,64,0, + 0,0,0,0,2,0,2,36,16,0,2,161, + 17,0,2,145,0,0,195,140,0,0,0,0, + 140,53,192,8,2,0,66,52,2,0,2,36, + 16,0,2,161,44,0,99,140,17,0,2,145, + 16,0,99,140,0,0,0,0,101,53,192,8, + 2,0,66,52,2,0,2,36,16,0,2,161, + 44,0,99,140,17,0,2,145,12,0,99,140, + 2,0,66,52,17,0,2,161,173,53,192,8, + 40,0,3,173,2,0,2,36,16,0,2,161, + 17,0,2,145,212,0,99,140,0,0,0,0, + 140,53,192,8,2,0,66,52,2,0,2,36, + 16,0,2,161,17,0,2,145,192,0,99,140, + 0,0,0,0,140,53,192,8,2,0,66,52, + 2,0,2,36,16,0,2,161,17,0,2,145, + 208,0,99,140,0,0,0,0,140,53,192,8, + 2,0,66,52,2,0,2,36,16,0,2,161, + 204,0,98,140,184,0,100,140,17,0,3,145, + 33,16,68,0,2,0,99,52,40,0,2,173, + 173,53,192,8,17,0,3,161,2,0,2,36, + 16,0,2,161,17,0,2,145,196,0,99,140, + 2,0,66,52,40,0,3,173,173,53,192,8, + 17,0,2,161,17,0,3,145,2,0,2,36, + 16,0,2,161,40,0,0,173,2,0,99,52, + 173,53,192,8,17,0,3,161,2,0,2,36, + 16,0,2,161,44,0,100,140,17,0,2,145, + 20,0,131,140,24,0,132,140,2,0,66,52, + 17,0,2,161,33,24,100,0,173,53,192,8, + 40,0,3,173,16,0,160,175,33,32,224,0, + 33,40,0,1,2,131,7,60,104,204,231,36, + 226,76,192,12,11,0,6,36,173,53,192,8, + 0,0,0,0,33,32,224,0,200,76,192,12, + 33,40,0,1,24,0,191,143,32,0,189,39, + 8,0,224,3,0,0,0,0,208,255,189,39, + 32,0,176,175,64,0,176,143,36,0,177,175, + 33,136,224,0,4,0,160,20,40,0,191,175, + 1,0,2,36,200,53,192,8,24,0,162,175, + 0,0,198,140,32,133,130,143,0,0,0,0, + 43,16,194,0,3,0,64,16,1,0,194,36, + 200,53,192,8,24,0,162,175,17,0,2,146, + 0,0,0,0,18,0,66,52,210,53,192,8, + 17,0,2,162,16,0,176,175,1,0,5,36, + 24,0,166,39,52,53,192,12,33,56,32,2, + 33,32,32,2,33,40,0,2,1,0,6,36, + 253,76,192,12,24,0,167,39,40,0,191,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 48,0,189,39,0,0,226,140,8,0,224,3, + 0,0,0,0,3,131,2,60,28,18,66,148, + 0,0,0,0,2,0,66,48,2,0,64,16, + 2,0,3,36,1,0,3,36,8,0,224,3, + 33,16,96,0,232,255,189,39,40,0,164,143, + 16,0,191,175,1,0,132,56,186,59,192,12, + 1,0,132,44,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,16,0,163,143, + 6,0,2,36,0,0,98,172,8,0,224,3, + 33,16,224,0,224,255,189,39,48,0,168,143, + 1,0,2,36,52,0,162,20,24,0,191,175, + 0,0,197,140,0,0,0,0,48,0,160,16, + 0,0,0,0,24,133,130,143,0,0,0,0, + 43,16,69,0,43,0,64,20,255,255,132,36, + 5,0,130,44,40,0,64,16,128,16,4,0, + 2,131,1,60,33,8,34,0,72,149,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 2,0,2,36,16,0,2,161,17,0,2,145, + 0,0,195,140,2,0,66,52,40,0,3,173, + 45,54,192,8,17,0,2,161,2,0,2,36, + 16,0,2,161,0,0,194,140,17,0,3,145, + 1,0,66,36,2,0,99,52,40,0,2,173, + 45,54,192,8,17,0,3,161,16,0,160,175, + 33,32,224,0,33,40,0,1,2,131,7,60, + 148,204,231,36,226,76,192,12,2,0,6,36, + 45,54,192,8,0,0,0,0,17,0,3,145, + 2,0,2,36,16,0,2,161,40,0,0,173, + 2,0,99,52,45,54,192,8,17,0,3,161, + 33,32,224,0,200,76,192,12,33,40,0,1, + 24,0,191,143,32,0,189,39,8,0,224,3, + 0,0,0,0,208,255,189,39,32,0,176,175, + 64,0,176,143,36,0,177,175,33,136,224,0, + 4,0,160,20,40,0,191,175,1,0,2,36, + 72,54,192,8,24,0,162,175,0,0,198,140, + 24,133,130,143,0,0,0,0,43,16,194,0, + 3,0,64,16,1,0,194,36,72,54,192,8, + 24,0,162,175,17,0,2,146,0,0,0,0, + 18,0,66,52,82,54,192,8,17,0,2,162, + 16,0,176,175,1,0,5,36,24,0,166,39, + 242,53,192,12,33,56,32,2,33,32,32,2, + 33,40,0,2,1,0,6,36,253,76,192,12, + 24,0,167,39,40,0,191,143,36,0,177,143, + 32,0,176,143,8,0,224,3,48,0,189,39, + 0,0,226,148,8,0,224,3,0,0,0,0, + 8,0,224,3,33,16,224,0,16,0,163,143, + 8,0,2,36,0,0,98,172,8,0,224,3, + 33,16,224,0,224,255,189,39,16,0,176,175, + 48,0,176,143,1,0,2,36,24,0,191,175, + 126,0,162,20,20,0,177,175,0,0,198,140, + 0,0,0,0,122,0,192,16,0,0,0,0, + 24,133,130,143,0,0,0,0,43,16,70,0, + 117,0,64,20,192,17,6,0,3,131,3,60, + 16,13,99,36,33,136,67,0,255,255,132,36, + 10,0,130,44,110,0,64,16,128,16,4,0, + 2,131,1,60,33,8,34,0,96,149,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 17,0,3,146,2,0,2,36,16,0,2,162, + 211,54,192,8,40,0,6,174,2,0,2,36, + 16,0,2,162,0,0,34,150,17,0,3,146, + 0,0,0,0,143,54,192,8,2,18,2,0, + 2,0,2,36,16,0,2,162,4,0,34,142, + 17,0,3,146,1,0,66,36,2,0,99,52, + 40,0,2,174,232,54,192,8,17,0,3,162, + 2,0,2,36,16,0,2,162,4,0,34,142, + 0,0,0,0,2,0,64,16,2,0,3,36, + 1,0,3,36,17,0,2,146,40,0,3,174, + 2,0,66,52,232,54,192,8,17,0,2,162, + 2,0,2,36,16,0,2,162,17,0,2,146, + 8,0,35,142,0,0,0,0,226,54,192,8, + 2,0,66,52,9,50,192,12,8,0,4,36, + 33,48,64,0,15,0,34,138,12,0,34,154, + 19,0,35,138,16,0,35,154,3,0,194,168, + 0,0,194,184,7,0,195,168,196,54,192,8, + 4,0,195,184,2,0,2,36,16,0,2,162, + 17,0,2,146,20,0,35,142,0,0,0,0, + 226,54,192,8,2,0,66,52,9,50,192,12, + 8,0,4,36,33,48,64,0,27,0,34,138, + 24,0,34,154,31,0,35,138,28,0,35,154, + 3,0,194,168,0,0,194,184,7,0,195,168, + 4,0,195,184,0,0,194,148,0,0,0,0, + 0,26,2,0,2,18,2,0,37,24,98,0, + 0,0,195,164,17,0,3,146,4,0,2,36, + 16,0,2,162,1,0,2,36,40,0,2,166, + 8,0,194,36,44,0,6,174,48,0,2,174, + 52,0,0,166,2,0,99,52,232,54,192,8, + 17,0,3,162,2,0,2,36,16,0,2,162, + 17,0,2,146,32,0,35,150,0,0,0,0, + 226,54,192,8,2,0,66,52,2,0,2,36, + 16,0,2,162,17,0,2,146,104,0,35,142, + 2,0,66,52,40,0,3,174,232,54,192,8, + 17,0,2,162,33,32,224,0,200,76,192,12, + 33,40,0,2,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 224,255,189,39,16,0,176,175,33,128,224,0, + 20,0,177,175,48,0,177,143,1,0,2,36, + 10,0,162,20,24,0,191,175,0,0,198,140, + 0,0,0,0,6,0,192,16,0,0,0,0, + 24,133,130,143,0,0,0,0,43,16,70,0, + 5,0,64,16,2,0,2,36,33,32,0,2, + 33,40,32,2,13,55,192,8,11,0,2,36, + 14,0,130,16,2,0,130,44,5,0,64,20, + 6,0,130,44,3,0,64,16,4,0,130,44, + 8,0,64,16,0,0,0,0,33,32,0,2, + 33,40,32,2,17,0,2,36,48,72,192,12, + 96,0,2,174,1,0,66,36,100,0,2,174, + 17,0,34,146,0,0,0,0,1,0,66,52, + 17,0,34,162,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 208,255,189,39,32,0,176,175,64,0,176,143, + 36,0,177,175,33,136,224,0,4,0,160,20, + 40,0,191,175,1,0,2,36,49,55,192,8, + 24,0,162,175,0,0,198,140,24,133,130,143, + 0,0,0,0,43,16,194,0,3,0,64,16, + 1,0,194,36,49,55,192,8,24,0,162,175, + 17,0,2,146,0,0,0,0,18,0,66,52, + 59,55,192,8,17,0,2,162,16,0,176,175, + 1,0,5,36,24,0,166,39,97,54,192,12, + 33,56,32,2,33,32,32,2,33,40,0,2, + 1,0,6,36,253,76,192,12,24,0,167,39, + 40,0,191,143,36,0,177,143,32,0,176,143, + 8,0,224,3,48,0,189,39,232,255,189,39, + 33,64,128,0,16,0,176,175,40,0,176,143, + 1,0,2,36,57,0,162,20,20,0,191,175, + 0,0,196,140,0,0,0,0,54,0,128,16, + 14,0,2,36,24,133,130,143,0,0,0,0, + 43,16,68,0,49,0,64,20,14,0,2,36, + 192,17,4,0,3,131,3,60,16,13,99,36, + 33,48,67,0,4,0,2,36,21,0,2,17, + 5,0,2,45,5,0,64,16,2,0,2,36, + 8,0,2,17,14,0,2,36,129,55,192,8, + 96,0,226,172,5,0,2,36,28,0,2,17, + 14,0,2,36,129,55,192,8,96,0,226,172, + 0,0,195,144,0,0,0,0,0,0,195,164, + 40,0,2,142,0,0,0,0,0,18,2,0, + 37,24,98,0,129,55,192,8,0,0,195,164, + 40,0,3,142,0,0,0,0,5,0,101,16, + 2,0,2,36,7,0,98,16,14,0,2,36, + 129,55,192,8,96,0,226,172,187,42,192,12, + 1,0,5,36,129,55,192,8,0,0,0,0, + 187,42,192,12,33,40,0,0,129,55,192,8, + 0,0,0,0,40,0,2,142,0,0,0,0, + 129,55,192,8,8,0,194,172,14,0,2,36, + 96,0,226,172,17,0,2,146,0,0,0,0, + 2,0,66,52,17,0,2,162,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 216,255,189,39,20,0,177,175,33,136,128,0, + 28,0,179,175,33,152,160,0,24,0,178,175, + 33,144,224,0,16,0,176,175,56,0,176,143, + 1,0,2,36,46,0,98,22,32,0,191,175, + 0,0,196,140,0,0,0,0,42,0,128,16, + 0,0,0,0,58,25,192,12,0,0,0,0, + 33,32,64,0,37,0,128,16,2,0,2,36, + 11,0,34,18,3,0,34,46,5,0,64,16, + 3,0,2,36,15,0,51,18,4,0,2,36, + 195,55,192,8,33,32,64,2,20,0,34,18, + 33,32,64,2,195,55,192,8,0,0,0,0, + 2,0,2,36,16,0,2,162,17,0,2,146, + 10,0,131,132,2,0,66,52,40,0,3,174, + 197,55,192,8,17,0,2,162,17,0,3,146, + 16,0,2,162,4,0,130,36,44,0,2,174, + 10,0,130,36,40,0,0,166,48,0,2,174, + 191,55,192,8,52,0,0,166,17,0,3,146, + 2,0,2,36,16,0,2,162,40,0,17,174, + 2,0,99,52,197,55,192,8,17,0,3,162, + 33,32,64,2,200,76,192,12,33,40,0,2, + 32,0,191,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,208,255,189,39,32,0,176,175, + 64,0,176,143,40,0,178,175,33,144,128,0, + 36,0,177,175,33,136,224,0,3,0,160,20, + 44,0,191,175,218,55,192,8,1,0,2,36, + 0,0,194,140,0,0,0,0,1,0,66,36, + 24,0,162,175,24,0,164,143,58,25,192,12, + 0,0,0,0,6,0,64,20,33,32,64,2, + 17,0,2,146,0,0,0,0,18,0,66,52, + 239,55,192,8,17,0,2,162,16,0,176,175, + 1,0,5,36,24,0,166,39,137,55,192,12, + 33,56,32,2,33,32,32,2,33,40,0,2, + 1,0,6,36,253,76,192,12,24,0,167,39, + 44,0,191,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,48,0,189,39, + 232,255,189,39,40,0,168,143,1,0,2,36, + 63,0,162,20,16,0,191,175,0,0,195,140, + 0,0,0,0,59,0,96,16,0,0,0,0, + 24,133,130,143,0,0,0,0,43,16,67,0, + 54,0,64,20,64,18,3,0,2,131,3,60, + 192,246,99,36,33,24,67,0,255,255,132,36, + 5,0,130,44,47,0,64,16,128,16,4,0, + 2,131,1,60,33,8,34,0,136,149,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 2,0,2,36,16,0,2,161,17,0,2,145, + 0,0,195,140,0,0,0,0,43,56,192,8, + 2,0,66,52,2,0,2,36,16,0,2,161, + 17,0,2,145,220,5,3,36,40,0,3,173, + 2,0,66,52,59,56,192,8,17,0,2,161, + 65,0,2,36,16,0,2,161,17,0,2,145, + 156,0,99,140,0,0,0,0,43,56,192,8, + 2,0,66,52,65,0,2,36,16,0,2,161, + 17,0,2,145,172,0,99,140,2,0,66,52, + 40,0,3,173,59,56,192,8,17,0,2,161, + 65,0,2,36,16,0,2,161,156,0,98,140, + 252,0,100,140,17,0,3,145,35,16,68,0, + 2,0,99,52,40,0,2,173,59,56,192,8, + 17,0,3,161,33,32,224,0,200,76,192,12, + 33,40,0,1,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,208,255,189,39, + 32,0,176,175,64,0,176,143,36,0,177,175, + 33,136,224,0,4,0,160,20,40,0,191,175, + 1,0,2,36,86,56,192,8,24,0,162,175, + 0,0,198,140,24,133,130,143,0,0,0,0, + 43,16,194,0,3,0,64,16,1,0,194,36, + 86,56,192,8,24,0,162,175,17,0,2,146, + 0,0,0,0,18,0,66,52,96,56,192,8, + 17,0,2,162,16,0,176,175,1,0,5,36, + 24,0,166,39,245,55,192,12,33,56,32,2, + 33,32,32,2,33,40,0,2,1,0,6,36, + 253,76,192,12,24,0,167,39,40,0,191,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 48,0,189,39,0,0,0,0,0,0,0,0, + 0,0,0,0,200,255,189,39,72,0,163,143, + 44,0,177,175,33,136,128,0,20,0,165,175, + 33,40,224,0,2,131,2,60,172,210,66,140, + 152,132,135,143,33,32,0,0,48,0,191,175, + 40,0,176,175,24,0,160,175,28,0,160,175, + 36,0,160,175,16,0,162,175,104,77,192,12, + 32,0,163,175,33,128,64,0,3,0,0,22, + 33,32,0,2,143,56,192,8,33,16,0,0, + 197,80,192,12,33,40,32,2,255,255,3,36, + 5,0,67,20,0,0,0,0,167,83,192,12, + 33,32,0,2,143,56,192,8,33,16,0,0, + 167,83,192,12,33,32,0,2,8,0,34,142, + 4,0,35,142,0,0,0,0,35,16,67,0, + 255,255,66,48,48,0,191,143,44,0,177,143, + 40,0,176,143,8,0,224,3,56,0,189,39, + 200,255,189,39,44,0,177,175,33,136,128,0, + 72,0,168,143,33,32,0,0,20,0,165,175, + 33,40,224,0,2,131,3,60,172,210,99,140, + 152,132,135,143,1,0,2,36,48,0,191,175, + 40,0,176,175,24,0,162,175,28,0,160,175, + 36,0,160,175,16,0,163,175,104,77,192,12, + 32,0,168,175,33,128,64,0,3,0,0,22, + 33,32,0,2,188,56,192,8,33,16,0,0, + 197,80,192,12,33,40,32,2,255,255,3,36, + 5,0,67,20,0,0,0,0,167,83,192,12, + 33,32,0,2,188,56,192,8,33,16,0,0, + 167,83,192,12,33,32,0,2,8,0,34,142, + 4,0,35,142,0,0,0,0,35,16,67,0, + 255,255,66,48,48,0,191,143,44,0,177,143, + 40,0,176,143,8,0,224,3,56,0,189,39, + 176,255,189,39,44,0,177,175,108,0,177,143, + 68,0,183,175,96,0,183,143,72,0,190,175, + 100,0,190,143,48,0,178,175,33,144,128,0, + 56,0,180,175,33,160,160,0,52,0,179,175, + 33,152,192,0,40,0,176,175,33,128,224,0, + 60,0,181,175,1,0,21,36,76,0,191,175, + 3,0,53,18,64,0,182,175,9,57,192,8, + 255,255,2,36,4,0,6,36,2,131,22,60, + 48,205,214,38,160,132,132,143,104,0,165,143, + 128,32,4,0,80,68,192,12,33,32,150,0, + 33,32,0,0,33,40,0,2,152,132,135,143, + 2,0,2,36,24,0,162,175,160,132,130,143, + 2,131,3,60,172,210,99,140,33,48,96,2, + 20,0,180,175,28,0,160,175,32,0,183,175, + 36,0,181,175,1,0,81,36,104,77,192,12, + 16,0,163,175,33,128,64,0,23,0,0,18, + 33,40,0,0,16,0,190,175,33,32,0,2, + 33,48,32,2,108,84,192,12,33,56,192,2, + 255,255,17,36,13,0,81,16,33,32,0,2, + 197,80,192,12,33,40,64,2,9,0,81,16, + 0,0,0,0,167,83,192,12,33,32,0,2, + 8,0,66,142,4,0,67,142,0,0,0,0, + 35,16,67,0,9,57,192,8,255,255,66,48, + 167,83,192,12,33,32,0,2,33,16,0,0, + 76,0,191,143,72,0,190,143,68,0,183,143, + 64,0,182,143,60,0,181,143,56,0,180,143, + 52,0,179,143,48,0,178,143,44,0,177,143, + 40,0,176,143,8,0,224,3,80,0,189,39, + 176,255,189,39,44,0,177,175,108,0,177,143, + 68,0,183,175,96,0,183,143,72,0,190,175, + 100,0,190,143,48,0,178,175,33,144,128,0, + 56,0,180,175,33,160,160,0,52,0,179,175, + 33,152,192,0,40,0,176,175,33,128,224,0, + 60,0,181,175,1,0,21,36,76,0,191,175, + 3,0,53,18,64,0,182,175,93,57,192,8, + 255,255,2,36,4,0,6,36,2,131,22,60, + 48,205,214,38,160,132,132,143,104,0,165,143, + 128,32,4,0,80,68,192,12,33,32,150,0, + 33,32,0,0,33,40,0,2,152,132,135,143, + 3,0,2,36,24,0,162,175,160,132,130,143, + 2,131,3,60,172,210,99,140,33,48,96,2, + 20,0,180,175,28,0,160,175,32,0,183,175, + 36,0,181,175,1,0,81,36,104,77,192,12, + 16,0,163,175,33,128,64,0,23,0,0,18, + 33,40,0,0,16,0,190,175,33,32,0,2, + 33,48,32,2,108,84,192,12,33,56,192,2, + 255,255,17,36,13,0,81,16,33,32,0,2, + 197,80,192,12,33,40,64,2,9,0,81,16, + 0,0,0,0,167,83,192,12,33,32,0,2, + 8,0,66,142,4,0,67,142,0,0,0,0, + 35,16,67,0,93,57,192,8,255,255,66,48, + 167,83,192,12,33,32,0,2,33,16,0,0, + 76,0,191,143,72,0,190,143,68,0,183,143, + 64,0,182,143,60,0,181,143,56,0,180,143, + 52,0,179,143,48,0,178,143,44,0,177,143, + 40,0,176,143,8,0,224,3,80,0,189,39, + 200,255,189,39,44,0,177,175,33,136,128,0, + 72,0,168,143,33,32,0,0,20,0,165,175, + 33,40,224,0,2,131,3,60,172,210,99,140, + 152,132,135,143,4,0,2,36,48,0,191,175, + 40,0,176,175,24,0,162,175,28,0,160,175, + 36,0,160,175,16,0,163,175,104,77,192,12, + 32,0,168,175,33,128,64,0,3,0,0,22, + 33,32,0,2,145,57,192,8,33,16,0,0, + 197,80,192,12,33,40,32,2,255,255,3,36, + 5,0,67,20,0,0,0,0,167,83,192,12, + 33,32,0,2,145,57,192,8,33,16,0,0, + 167,83,192,12,33,32,0,2,8,0,34,142, + 4,0,35,142,0,0,0,0,35,16,67,0, + 255,255,66,48,48,0,191,143,44,0,177,143, + 40,0,176,143,8,0,224,3,56,0,189,39, + 200,255,189,39,44,0,177,175,33,136,128,0, + 72,0,163,143,33,32,0,0,20,0,165,175, + 33,40,224,0,164,132,135,143,2,131,2,60, + 92,205,66,36,16,0,162,175,6,0,2,36, + 24,0,162,175,1,0,2,36,48,0,191,175, + 40,0,176,175,28,0,162,175,36,0,160,175, + 104,77,192,12,32,0,163,175,33,128,64,0, + 3,0,0,22,33,32,0,2,191,57,192,8, + 33,16,0,0,197,80,192,12,33,40,32,2, + 255,255,3,36,5,0,67,20,0,0,0,0, + 167,83,192,12,33,32,0,2,191,57,192,8, + 33,16,0,0,167,83,192,12,33,32,0,2, + 8,0,34,142,4,0,35,142,0,0,0,0, + 35,16,67,0,255,255,66,48,48,0,191,143, + 44,0,177,143,40,0,176,143,8,0,224,3, + 56,0,189,39,200,255,189,39,44,0,177,175, + 33,136,128,0,72,0,163,143,33,32,0,0, + 20,0,165,175,33,40,224,0,164,132,135,143, + 2,131,2,60,92,205,66,36,16,0,162,175, + 6,0,2,36,24,0,162,175,2,0,2,36, + 48,0,191,175,40,0,176,175,28,0,162,175, + 36,0,160,175,104,77,192,12,32,0,163,175, + 33,128,64,0,3,0,0,22,33,32,0,2, + 237,57,192,8,33,16,0,0,197,80,192,12, + 33,40,32,2,255,255,3,36,5,0,67,20, + 0,0,0,0,167,83,192,12,33,32,0,2, + 237,57,192,8,33,16,0,0,167,83,192,12, + 33,32,0,2,8,0,34,142,4,0,35,142, + 0,0,0,0,35,16,67,0,255,255,66,48, + 48,0,191,143,44,0,177,143,40,0,176,143, + 8,0,224,3,56,0,189,39,0,0,0,0, + 0,0,0,0,224,255,189,39,24,0,178,175, + 33,144,128,0,20,0,177,175,3,131,17,60, + 0,18,49,38,16,0,176,175,33,128,0,0, + 28,0,191,175,208,133,128,175,60,65,192,12, + 33,32,0,2,0,0,34,166,1,0,16,38, + 64,0,2,42,250,255,64,20,2,0,49,38, + 3,131,3,60,18,18,99,144,255,0,2,36, + 3,0,98,16,0,0,0,0,6,0,64,18, + 0,163,4,60,75,59,192,12,32,0,4,36, + 87,59,192,12,255,0,4,36,0,163,4,60, + 220,5,132,52,176,132,133,39,168,71,192,12, + 4,0,6,36,25,0,64,20,0,163,4,60, + 3,131,16,60,20,18,16,38,33,32,0,2, + 176,132,133,39,168,71,192,12,4,0,6,36, + 3,0,64,16,0,163,4,60,7,0,64,18, + 0,0,0,0,220,5,132,52,33,40,0,0, + 144,71,192,12,4,0,6,36,47,58,192,8, + 0,163,4,60,0,163,5,60,220,5,165,52, + 3,0,2,138,0,0,2,154,0,0,0,0, + 3,0,162,168,0,0,162,184,0,163,4,60, + 99,59,192,12,220,5,132,52,0,163,4,60, + 16,6,132,52,176,132,133,39,168,71,192,12, + 4,0,6,36,25,0,64,20,0,163,4,60, + 3,131,16,60,68,18,16,38,33,32,0,2, + 176,132,133,39,168,71,192,12,4,0,6,36, + 3,0,64,16,0,163,4,60,7,0,64,18, + 0,0,0,0,16,6,132,52,33,40,0,0, + 144,71,192,12,4,0,6,36,80,58,192,8, + 0,163,4,60,0,163,5,60,16,6,165,52, + 3,0,2,138,0,0,2,154,0,0,0,0, + 3,0,162,168,0,0,162,184,0,163,4,60, + 119,59,192,12,16,6,132,52,0,163,4,60, + 224,5,132,52,176,132,133,39,168,71,192,12, + 4,0,6,36,25,0,64,20,0,163,4,60, + 3,131,16,60,24,18,16,38,33,32,0,2, + 176,132,133,39,168,71,192,12,4,0,6,36, + 3,0,64,16,0,163,4,60,7,0,64,18, + 0,0,0,0,224,5,132,52,33,40,0,0, + 144,71,192,12,4,0,6,36,113,58,192,8, + 0,163,4,60,0,163,5,60,224,5,165,52, + 3,0,2,138,0,0,2,154,0,0,0,0, + 3,0,162,168,0,0,162,184,0,163,4,60, + 139,59,192,12,224,5,132,52,3,131,3,60, + 28,18,99,36,0,0,98,148,0,0,0,0, + 0,128,66,48,3,0,64,20,1,0,2,36, + 2,0,64,18,0,0,0,0,0,0,98,164, + 0,163,2,60,144,1,66,140,0,0,0,0, + 7,0,64,20,0,0,0,0,3,131,3,60, + 28,18,99,36,0,0,98,148,0,0,0,0, + 146,58,192,8,254,255,66,48,0,163,2,60, + 144,1,66,140,0,0,0,0,7,0,64,24, + 0,0,0,0,3,131,3,60,28,18,99,36, + 0,0,98,148,0,0,0,0,1,0,66,52, + 0,0,98,164,3,131,4,60,28,18,132,148, + 0,0,0,0,159,59,192,12,1,0,132,48, + 3,131,3,60,80,18,99,144,255,0,2,36, + 3,0,98,16,0,0,0,0,5,0,64,18, + 0,0,0,0,2,131,4,60,160,149,132,36, + 205,59,192,12,14,0,5,36,3,131,3,60, + 96,18,99,144,255,0,2,36,3,0,98,16, + 0,0,0,0,5,0,64,18,0,0,0,0, + 2,131,4,60,176,149,132,36,239,59,192,12, + 11,0,5,36,3,131,3,60,112,18,99,144, + 255,0,2,36,3,0,98,16,0,0,0,0, + 5,0,64,18,0,0,0,0,2,131,4,60, + 188,149,132,36,17,60,192,12,15,0,5,36, + 0,163,2,60,140,1,66,140,0,0,0,0, + 7,0,64,16,15,0,2,60,0,163,3,60, + 140,1,99,140,64,66,66,52,43,16,67,0, + 26,0,64,16,0,0,0,0,3,131,3,60, + 64,18,99,140,255,255,2,36,3,0,98,16, + 44,1,2,36,4,0,64,18,0,0,0,0, + 0,163,1,60,221,58,192,8,140,1,34,172, + 5,0,96,20,15,0,4,60,1,0,2,36, + 0,163,1,60,221,58,192,8,140,1,34,172, + 64,66,132,52,43,16,131,0,4,0,64,16, + 0,0,0,0,0,163,1,60,221,58,192,8, + 140,1,36,172,0,163,1,60,140,1,35,172, + 0,163,4,60,140,1,132,140,51,60,192,12, + 0,0,0,0,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,208,255,189,39,20,0,177,175, + 33,136,128,0,36,0,181,175,33,168,160,0, + 28,0,179,175,33,152,192,0,44,0,191,175, + 40,0,182,175,32,0,180,175,24,0,178,175, + 168,71,192,12,16,0,176,175,76,0,64,16, + 0,0,0,0,3,131,22,60,0,18,214,38, + 35,16,54,2,194,31,2,0,33,16,67,0, + 67,144,2,0,1,0,98,38,194,31,2,0, + 33,16,67,0,67,128,2,0,255,255,20,38, + 64,0,130,46,14,0,64,20,64,0,66,46, + 2,131,4,60,204,149,132,36,180,132,144,39, + 33,40,0,2,2,131,7,60,236,149,231,36, + 15,63,192,12,143,0,6,36,1,0,4,36, + 33,40,0,2,188,7,192,12,143,0,6,36, + 64,0,66,46,14,0,64,20,33,32,32,2, + 2,131,4,60,204,149,132,36,180,132,144,39, + 33,40,0,2,2,131,7,60,20,150,231,36, + 15,63,192,12,144,0,6,36,1,0,4,36, + 33,40,0,2,188,7,192,12,144,0,6,36, + 33,32,32,2,33,40,160,2,80,68,192,12, + 33,48,96,2,64,16,18,0,33,136,86,0, + 33,128,128,2,255,255,2,36,25,0,2,18, + 255,255,20,36,180,132,147,39,33,32,64,2, + 208,133,130,143,1,0,82,38,1,0,66,36, + 208,133,130,175,0,0,37,150,0,0,0,0, + 162,65,192,12,2,0,49,38,10,0,64,20, + 33,40,96,2,2,131,4,60,204,149,132,36, + 188,132,135,39,15,63,192,12,159,0,6,36, + 1,0,4,36,33,40,96,2,188,7,192,12, + 159,0,6,36,255,255,16,38,235,255,20,22, + 33,32,64,2,44,0,191,143,40,0,182,143, + 36,0,181,143,32,0,180,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,48,0,189,39,224,255,189,39, + 16,0,164,163,3,131,4,60,18,18,132,36, + 16,0,165,39,24,0,191,175,231,58,192,12, + 1,0,6,36,24,0,191,143,32,0,189,39, + 8,0,224,3,0,0,0,0,224,255,189,39, + 16,0,164,163,3,131,4,60,19,18,132,36, + 16,0,165,39,24,0,191,175,231,58,192,12, + 1,0,6,36,24,0,191,143,32,0,189,39, + 8,0,224,3,0,0,0,0,232,255,189,39, + 33,40,128,0,16,0,176,175,3,131,16,60, + 20,18,16,38,33,32,0,2,20,0,191,175, + 231,58,192,12,4,0,6,36,0,163,5,60, + 220,5,165,52,3,0,2,138,0,0,2,154, + 0,0,0,0,3,0,162,168,0,0,162,184, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,232,255,189,39,33,40,128,0, + 16,0,176,175,3,131,16,60,68,18,16,38, + 33,32,0,2,20,0,191,175,231,58,192,12, + 4,0,6,36,0,163,5,60,16,6,165,52, + 3,0,2,138,0,0,2,154,0,0,0,0, + 3,0,162,168,0,0,162,184,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 232,255,189,39,33,40,128,0,16,0,176,175, + 3,131,16,60,24,18,16,38,33,32,0,2, + 20,0,191,175,231,58,192,12,4,0,6,36, + 0,163,5,60,224,5,165,52,3,0,2,138, + 0,0,2,154,0,0,0,0,3,0,162,168, + 0,0,162,184,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,3,131,2,60, + 28,18,66,148,224,255,189,39,24,0,191,175, + 8,0,128,16,16,0,162,167,1,0,66,52, + 16,0,162,167,1,0,2,36,44,133,130,175, + 0,163,1,60,177,59,192,8,144,1,34,172, + 254,255,66,48,16,0,162,167,44,133,128,175, + 0,163,1,60,144,1,32,172,3,131,4,60, + 28,18,132,36,16,0,165,39,231,58,192,12, + 2,0,6,36,24,0,191,143,32,0,189,39, + 8,0,224,3,0,0,0,0,3,131,2,60, + 28,18,66,148,224,255,189,39,24,0,191,175, + 3,0,128,16,16,0,162,167,195,59,192,8, + 2,0,66,52,253,255,66,48,16,0,162,167, + 3,131,4,60,28,18,132,36,16,0,165,39, + 231,58,192,12,2,0,6,36,24,0,191,143, + 32,0,189,39,8,0,224,3,0,0,0,0, + 216,255,189,39,32,0,191,175,33,56,128,0, + 33,48,160,0,3,0,226,136,0,0,226,152, + 7,0,227,136,4,0,227,152,11,0,228,136, + 8,0,228,152,15,0,229,136,12,0,229,152, + 19,0,162,171,16,0,162,187,23,0,163,171, + 20,0,163,187,27,0,164,171,24,0,164,187, + 31,0,165,171,28,0,165,187,16,0,194,44, + 3,0,64,16,16,0,163,39,33,16,102,0, + 0,0,64,160,3,131,4,60,80,18,132,36, + 33,40,224,0,231,58,192,12,16,0,6,36, + 32,0,191,143,40,0,189,39,8,0,224,3, + 0,0,0,0,216,255,189,39,32,0,191,175, + 33,56,128,0,33,48,160,0,3,0,226,136, + 0,0,226,152,7,0,227,136,4,0,227,152, + 11,0,228,136,8,0,228,152,15,0,229,136, + 12,0,229,152,19,0,162,171,16,0,162,187, + 23,0,163,171,20,0,163,187,27,0,164,171, + 24,0,164,187,31,0,165,171,28,0,165,187, + 16,0,194,44,3,0,64,16,16,0,163,39, + 33,16,102,0,0,0,64,160,3,131,4,60, + 96,18,132,36,33,40,224,0,231,58,192,12, + 16,0,6,36,32,0,191,143,40,0,189,39, + 8,0,224,3,0,0,0,0,216,255,189,39, + 32,0,191,175,33,56,128,0,33,48,160,0, + 3,0,226,136,0,0,226,152,7,0,227,136, + 4,0,227,152,11,0,228,136,8,0,228,152, + 15,0,229,136,12,0,229,152,19,0,162,171, + 16,0,162,187,23,0,163,171,20,0,163,187, + 27,0,164,171,24,0,164,187,31,0,165,171, + 28,0,165,187,16,0,194,44,3,0,64,16, + 16,0,163,39,33,16,102,0,0,0,64,160, + 3,131,4,60,112,18,132,36,33,40,224,0, + 231,58,192,12,16,0,6,36,32,0,191,143, + 40,0,189,39,8,0,224,3,0,0,0,0, + 232,255,189,39,15,0,2,60,54,66,66,52, + 24,0,164,175,246,255,132,36,43,16,68,0, + 3,0,64,16,16,0,191,175,44,1,2,36, + 24,0,162,175,3,131,4,60,64,18,132,36, + 24,0,165,39,231,58,192,12,4,0,6,36, + 24,0,162,143,0,163,1,60,140,1,34,172, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,232,255,189,39,16,0,191,175, + 0,38,4,0,196,64,192,12,3,38,4,0, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,232,255,189,39,16,0,191,175, + 0,38,4,0,196,64,192,12,3,38,4,0, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,160,255,189,39,112,0,162,143, + 72,0,176,175,33,128,224,0,88,0,180,175, + 33,160,0,0,84,0,179,175,33,152,192,0, + 92,0,191,175,80,0,178,175,7,0,160,16, + 76,0,177,175,6,0,65,4,51,0,177,39, + 45,0,20,36,3,0,0,18,35,16,2,0, + 255,255,16,38,51,0,177,39,51,0,160,163, + 27,0,68,0,2,0,128,20,0,0,0,0, + 13,0,7,0,18,24,0,0,16,16,0,0, + 2,131,1,60,33,8,34,0,128,205,34,144, + 255,255,49,38,2,0,0,18,0,0,34,162, + 255,255,16,38,33,16,96,0,241,255,64,20, + 1,0,3,36,0,22,19,0,3,22,2,0, + 11,0,67,20,33,32,128,2,255,255,16,38, + 255,255,2,36,7,0,2,18,0,0,0,0, + 255,255,18,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,18,22,33,32,128,2, + 4,0,128,16,0,22,19,0,196,64,192,12, + 0,0,0,0,0,22,19,0,3,22,2,0, + 2,0,3,36,14,0,67,20,255,255,2,36, + 255,255,16,38,11,0,2,18,255,255,18,36, + 196,64,192,12,48,0,4,36,255,255,16,38, + 6,0,18,18,0,0,0,0,156,60,192,8, + 0,0,0,0,0,38,4,0,196,64,192,12, + 3,38,4,0,0,0,34,130,0,0,36,146, + 0,0,0,0,249,255,64,20,1,0,49,38, + 255,255,49,38,0,22,19,0,3,22,2,0, + 3,0,3,36,9,0,67,20,255,255,16,38, + 255,255,2,36,6,0,2,18,255,255,17,36, + 196,64,192,12,32,0,4,36,255,255,16,38, + 252,255,17,22,0,0,0,0,92,0,191,143, + 88,0,180,143,84,0,179,143,80,0,178,143, + 76,0,177,143,72,0,176,143,8,0,224,3, + 96,0,189,39,200,255,189,39,40,0,178,175, + 33,144,128,0,32,0,176,175,33,128,160,0, + 36,0,177,175,33,136,192,0,33,32,32,2, + 48,0,191,175,156,71,192,12,44,0,179,175, + 33,32,0,0,33,24,64,0,42,16,112,0, + 2,0,64,16,33,152,64,2,35,32,3,2, + 0,22,18,0,3,22,2,0,1,0,3,36, + 11,0,67,20,33,128,128,0,255,255,16,38, + 255,255,2,36,8,0,2,18,0,22,19,0, + 255,255,18,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,18,22,0,0,0,0, + 0,22,19,0,3,22,2,0,2,0,3,36, + 14,0,67,20,255,255,2,36,255,255,16,38, + 11,0,2,18,255,255,18,36,196,64,192,12, + 48,0,4,36,255,255,16,38,6,0,18,18, + 0,0,0,0,233,60,192,8,0,0,0,0, + 0,38,4,0,196,64,192,12,3,38,4,0, + 0,0,34,130,0,0,36,146,0,0,0,0, + 249,255,64,20,1,0,49,38,255,255,49,38, + 0,22,19,0,3,22,2,0,3,0,3,36, + 9,0,67,20,255,255,16,38,255,255,2,36, + 6,0,2,18,255,255,17,36,196,64,192,12, + 32,0,4,36,255,255,16,38,252,255,17,22, + 0,0,0,0,48,0,191,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,56,0,189,39,32,255,189,39, + 192,0,178,175,33,144,160,0,196,0,179,175, + 33,152,0,0,220,0,191,175,216,0,190,175, + 212,0,183,175,208,0,182,175,204,0,181,175, + 200,0,180,175,188,0,177,175,184,0,176,175, + 1,0,130,128,0,0,0,0,229,1,64,16, + 33,136,0,0,255,255,22,36,1,0,23,36, + 2,0,30,36,1,0,149,36,0,0,162,146, + 0,0,0,0,219,255,66,36,0,22,2,0, + 3,30,2,0,84,0,98,44,217,1,64,16, + 128,16,3,0,2,131,1,60,33,8,34,0, + 80,150,34,140,0,0,0,0,8,0,64,0, + 0,0,0,0,209,61,192,8,37,0,4,36, + 2,131,16,60,64,150,16,38,156,71,192,12, + 33,32,0,2,59,61,192,8,0,0,0,0, + 0,38,4,0,196,64,192,12,3,38,4,0, + 0,0,2,130,0,0,4,146,0,0,0,0, + 249,255,64,20,1,0,16,38,3,63,192,8, + 1,0,162,38,0,38,18,0,209,61,192,8, + 3,38,4,0,2,0,3,36,33,128,32,2, + 33,40,64,2,33,160,0,0,51,0,177,39, + 51,0,160,163,27,0,163,0,2,0,96,20, + 0,0,0,0,13,0,7,0,18,40,0,0, + 16,16,0,0,2,131,1,60,33,8,34,0, + 128,205,34,144,255,255,49,38,2,0,0,18, + 0,0,34,162,255,255,16,38,242,255,160,20, + 0,0,0,0,10,0,119,22,0,22,20,0, + 255,255,16,38,8,0,22,18,3,38,2,0, + 255,255,18,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,18,22,0,22,20,0, + 3,38,2,0,3,0,128,16,0,0,0,0, + 196,64,192,12,0,0,0,0,14,0,126,22, + 0,0,0,0,255,255,16,38,11,0,22,18, + 255,255,18,36,196,64,192,12,48,0,4,36, + 255,255,16,38,6,0,18,18,0,0,0,0, + 111,61,192,8,0,0,0,0,0,38,4,0, + 196,64,192,12,3,38,4,0,0,0,34,130, + 0,0,36,146,0,0,0,0,249,255,64,20, + 1,0,49,38,255,255,49,38,3,0,6,36, + 80,0,102,22,66,0,4,36,255,255,16,38, + 77,0,22,18,255,255,17,36,196,64,192,12, + 32,0,4,36,255,255,16,38,252,255,17,22, + 66,0,4,36,209,61,192,8,0,0,0,0, + 8,0,3,36,33,128,32,2,33,40,64,2, + 33,160,0,0,51,0,177,39,51,0,160,163, + 27,0,163,0,2,0,96,20,0,0,0,0, + 13,0,7,0,18,40,0,0,16,16,0,0, + 2,131,1,60,33,8,34,0,128,205,34,144, + 255,255,49,38,2,0,0,18,0,0,34,162, + 255,255,16,38,242,255,160,20,0,0,0,0, + 10,0,119,22,0,22,20,0,255,255,16,38, + 8,0,22,18,3,38,2,0,255,255,18,36, + 196,64,192,12,32,0,4,36,255,255,16,38, + 252,255,18,22,0,22,20,0,3,38,2,0, + 3,0,128,16,0,0,0,0,196,64,192,12, + 0,0,0,0,14,0,126,22,0,0,0,0, + 255,255,16,38,11,0,22,18,255,255,18,36, + 196,64,192,12,48,0,4,36,255,255,16,38, + 6,0,18,18,0,0,0,0,182,61,192,8, + 0,0,0,0,0,38,4,0,196,64,192,12, + 3,38,4,0,0,0,34,130,0,0,36,146, + 0,0,0,0,249,255,64,20,1,0,49,38, + 255,255,49,38,3,0,6,36,9,0,102,22, + 81,0,4,36,255,255,16,38,6,0,22,18, + 255,255,17,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,17,22,81,0,4,36, + 196,64,192,12,0,0,0,0,3,63,192,8, + 1,0,162,38,33,128,32,2,33,16,64,2, + 33,160,0,0,5,0,65,6,10,0,4,36, + 45,0,20,36,2,0,32,18,35,16,18,0, + 255,255,48,38,51,0,177,39,51,0,160,163, + 27,0,68,0,2,0,128,20,0,0,0,0, + 13,0,7,0,18,24,0,0,16,16,0,0, + 2,131,1,60,33,8,34,0,128,205,34,144, + 255,255,49,38,2,0,0,18,0,0,34,162, + 255,255,16,38,33,16,96,0,241,255,64,20, + 0,0,0,0,10,0,119,22,33,32,128,2, + 255,255,16,38,7,0,22,18,0,0,0,0, + 255,255,18,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,18,22,33,32,128,2, + 3,0,128,16,0,0,0,0,196,64,192,12, + 0,0,0,0,14,0,126,22,0,0,0,0, + 255,255,16,38,11,0,22,18,255,255,18,36, + 196,64,192,12,48,0,4,36,255,255,16,38, + 6,0,18,18,0,0,0,0,4,62,192,8, + 0,0,0,0,0,38,4,0,196,64,192,12, + 3,38,4,0,0,0,34,130,0,0,36,146, + 0,0,0,0,249,255,64,20,1,0,49,38, + 255,255,49,38,3,0,6,36,237,0,102,22, + 1,0,162,38,255,255,16,38,234,0,22,18, + 255,255,17,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,17,22,1,0,162,38, + 3,63,192,8,0,0,0,0,10,0,3,36, + 33,128,32,2,33,40,64,2,33,160,0,0, + 51,0,177,39,51,0,160,163,27,0,163,0, + 2,0,96,20,0,0,0,0,13,0,7,0, + 18,40,0,0,16,16,0,0,2,131,1,60, + 33,8,34,0,128,205,34,144,255,255,49,38, + 2,0,0,18,0,0,34,162,255,255,16,38, + 242,255,160,20,0,0,0,0,10,0,119,22, + 0,22,20,0,255,255,16,38,8,0,22,18, + 3,38,2,0,255,255,18,36,196,64,192,12, + 32,0,4,36,255,255,16,38,252,255,18,22, + 0,22,20,0,3,38,2,0,3,0,128,16, + 0,0,0,0,196,64,192,12,0,0,0,0, + 14,0,126,22,0,0,0,0,255,255,16,38, + 11,0,22,18,255,255,18,36,196,64,192,12, + 48,0,4,36,255,255,16,38,6,0,18,18, + 0,0,0,0,75,62,192,8,0,0,0,0, + 0,38,4,0,196,64,192,12,3,38,4,0, + 0,0,34,130,0,0,36,146,0,0,0,0, + 249,255,64,20,1,0,49,38,255,255,49,38, + 3,0,6,36,166,0,102,22,1,0,162,38, + 255,255,16,38,163,0,22,18,255,255,17,36, + 196,64,192,12,32,0,4,36,255,255,16,38, + 252,255,17,22,1,0,162,38,3,63,192,8, + 0,0,0,0,192,132,144,39,156,71,192,12, + 33,32,0,2,112,62,192,8,0,0,0,0, + 0,38,4,0,196,64,192,12,3,38,4,0, + 0,0,2,130,0,0,4,146,0,0,0,0, + 249,255,64,20,1,0,16,38,16,0,3,36, + 33,128,32,2,33,40,64,2,33,160,0,0, + 51,0,177,39,51,0,160,163,27,0,163,0, + 2,0,96,20,0,0,0,0,13,0,7,0, + 18,40,0,0,16,16,0,0,2,131,1,60, + 33,8,34,0,128,205,34,144,255,255,49,38, + 2,0,0,18,0,0,34,162,255,255,16,38, + 242,255,160,20,0,0,0,0,10,0,119,22, + 0,22,20,0,255,255,16,38,8,0,22,18, + 3,38,2,0,255,255,18,36,196,64,192,12, + 32,0,4,36,255,255,16,38,252,255,18,22, + 0,22,20,0,3,38,2,0,3,0,128,16, + 0,0,0,0,196,64,192,12,0,0,0,0, + 14,0,126,22,0,0,0,0,255,255,16,38, + 11,0,22,18,255,255,18,36,196,64,192,12, + 48,0,4,36,255,255,16,38,6,0,18,18, + 0,0,0,0,159,62,192,8,0,0,0,0, + 0,38,4,0,196,64,192,12,3,38,4,0, + 0,0,34,130,0,0,36,146,0,0,0,0, + 249,255,64,20,1,0,49,38,255,255,49,38, + 3,0,6,36,82,0,102,22,1,0,162,38, + 255,255,16,38,79,0,22,18,255,255,17,36, + 196,64,192,12,32,0,4,36,255,255,16,38, + 252,255,17,22,1,0,162,38,3,63,192,8, + 0,0,0,0,156,71,192,12,33,32,64,2, + 33,24,64,0,42,16,113,0,2,0,64,16, + 33,32,0,0,35,32,35,2,10,0,119,22, + 33,128,128,0,255,255,16,38,7,0,22,18, + 0,0,0,0,255,255,17,36,196,64,192,12, + 32,0,4,36,255,255,16,38,252,255,17,22, + 0,0,0,0,14,0,126,22,0,0,0,0, + 255,255,16,38,11,0,22,18,255,255,17,36, + 196,64,192,12,48,0,4,36,255,255,16,38, + 6,0,17,18,0,0,0,0,211,62,192,8, + 0,0,0,0,0,38,4,0,196,64,192,12, + 3,38,4,0,0,0,66,130,0,0,68,146, + 0,0,0,0,249,255,64,20,1,0,82,38, + 255,255,82,38,3,0,6,36,30,0,102,22, + 1,0,162,38,255,255,16,38,27,0,22,18, + 255,255,17,36,196,64,192,12,32,0,4,36, + 255,255,16,38,252,255,17,22,1,0,162,38, + 3,63,192,8,0,0,0,0,253,62,192,8, + 3,0,19,36,3,0,96,22,128,16,17,0, + 2,0,19,36,128,16,17,0,33,16,81,0, + 64,16,2,0,0,0,163,130,208,255,66,36, + 2,0,96,22,33,136,67,0,1,0,19,36, + 1,0,181,38,0,0,162,130,0,0,0,0, + 33,254,64,20,0,0,0,0,1,0,130,36, + 220,0,191,143,216,0,190,143,212,0,183,143, + 208,0,182,143,204,0,181,143,200,0,180,143, + 196,0,179,143,192,0,178,143,188,0,177,143, + 184,0,176,143,8,0,224,3,224,0,189,39, + 0,0,164,175,4,0,165,175,8,0,166,175, + 12,0,167,175,200,255,189,39,59,0,162,39, + 252,255,3,36,36,16,67,0,52,0,191,175, + 48,0,180,175,44,0,179,175,40,0,178,175, + 36,0,177,175,32,0,176,175,56,0,164,175, + 0,0,80,140,4,0,81,36,0,0,2,130, + 0,0,3,146,0,0,0,0,31,0,64,16, + 37,0,20,36,69,0,19,36,252,255,18,36, + 0,22,3,0,3,38,2,0,18,0,148,20, + 0,0,0,0,1,0,3,130,0,0,0,0, + 4,0,100,16,33,32,0,2,4,0,115,20, + 3,0,34,38,33,32,0,2,56,63,192,8, + 33,40,0,0,36,16,82,0,4,0,81,36, + 0,0,69,140,33,32,0,2,13,61,192,12, + 0,0,0,0,62,63,192,8,33,128,64,0, + 196,64,192,12,1,0,16,38,0,0,2,130, + 0,0,3,146,0,0,0,0,230,255,64,20, + 0,22,3,0,52,0,191,143,48,0,180,143, + 44,0,179,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,56,0,189,39, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,8,0,224,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,224,3,0,0,0,0,33,72,224,3, + 170,3,8,36,76,63,192,12,0,0,0,0, + 255,255,8,33,252,255,0,21,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,8,0,32,1, + 0,0,0,0,33,88,224,3,232,3,10,36, + 143,63,192,12,0,0,0,0,255,255,74,33, + 252,255,64,21,0,0,0,0,8,0,96,1, + 0,0,0,0,250,255,132,32,130,32,4,0, + 255,255,132,32,0,0,0,0,253,255,128,20, + 0,0,0,0,8,0,224,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 248,255,189,39,255,255,195,36,10,0,192,16, + 33,56,160,0,255,255,6,36,0,0,162,144, + 1,0,165,36,0,0,130,160,4,0,64,16, + 1,0,132,36,255,255,99,36,249,255,102,20, + 0,0,0,0,33,16,224,0,8,0,224,3, + 8,0,189,39,0,96,2,64,0,0,0,0, + 38,64,68,0,1,255,8,49,38,64,2,1, + 0,96,136,64,8,0,224,3,1,255,66,48, + 0,96,2,64,0,0,0,0,1,255,132,48, + 39,32,128,0,36,64,68,0,0,96,136,64, + 8,0,224,3,1,255,66,48,0,96,2,64, + 0,0,0,0,0,255,132,48,37,64,68,0, + 1,0,8,53,0,96,136,64,8,0,224,3, + 1,255,66,48,176,255,189,39,64,0,182,175, + 33,176,128,0,52,0,179,175,33,152,160,0, + 72,0,190,175,33,240,192,0,68,0,183,175, + 33,184,224,0,60,0,181,175,33,168,0,0, + 56,0,180,175,33,160,0,0,76,0,191,175, + 48,0,178,175,44,0,177,175,40,0,176,175, + 2,131,6,60,33,48,212,0,160,205,198,144, + 0,0,0,0,28,0,96,26,33,128,0,0, + 33,24,192,2,33,32,118,2,0,0,102,160, + 1,0,99,36,42,16,100,0,252,255,64,20, + 0,0,0,0,19,0,96,26,33,128,0,0, + 255,0,210,48,33,136,192,2,0,0,39,146, + 0,0,0,0,9,0,242,16,0,0,0,0, + 5,0,224,18,33,40,0,2,96,0,164,143, + 0,0,0,0,9,248,224,2,33,48,64,2, + 32,0,192,23,1,0,181,38,1,0,16,38, + 42,16,19,2,241,255,64,20,1,0,49,38, + 1,0,148,38,4,0,130,46,220,255,64,20, + 0,0,0,0,7,0,96,26,33,128,0,0, + 33,24,192,2,0,0,112,160,1,0,16,38, + 42,16,19,2,252,255,64,20,1,0,99,36, + 20,0,96,26,33,128,0,0,33,136,192,2, + 0,0,39,146,255,0,6,50,11,0,230,16, + 0,0,0,0,5,0,224,18,0,0,0,0, + 96,0,164,143,0,0,0,0,9,248,224,2, + 33,40,0,2,3,0,192,19,1,0,181,38, + 72,64,192,8,1,0,2,36,1,0,16,38, + 42,16,19,2,239,255,64,20,1,0,49,38, + 33,16,160,2,76,0,191,143,72,0,190,143, + 68,0,183,143,64,0,182,143,60,0,181,143, + 56,0,180,143,52,0,179,143,48,0,178,143, + 44,0,177,143,40,0,176,143,8,0,224,3, + 80,0,189,39,160,255,189,39,88,0,190,175, + 33,240,128,0,68,0,179,175,33,152,160,0, + 76,0,181,175,33,168,224,0,72,0,180,175, + 33,160,0,0,33,16,96,2,92,0,191,175, + 84,0,183,175,80,0,182,175,64,0,178,175, + 60,0,177,175,56,0,176,175,2,0,97,6, + 16,0,166,175,3,0,98,38,131,152,2,0, + 33,184,0,0,2,131,22,60,164,205,214,38, + 0,0,210,142,0,0,0,0,7,0,96,18, + 33,128,0,0,33,24,192,3,0,0,114,172, + 1,0,16,38,43,16,19,2,252,255,64,20, + 4,0,99,36,20,0,96,18,33,128,0,0, + 33,136,192,3,0,0,39,142,0,0,0,0, + 11,0,242,16,128,40,16,0,5,0,160,18, + 0,0,0,0,112,0,164,143,0,0,0,0, + 9,248,160,2,33,48,64,2,16,0,168,143, + 0,0,0,0,34,0,0,21,1,0,148,38, + 1,0,16,38,43,16,19,2,239,255,64,20, + 4,0,49,38,1,0,247,38,4,0,226,46, + 222,255,64,20,4,0,214,38,7,0,96,18, + 33,128,0,0,33,24,192,3,0,0,112,172, + 1,0,16,38,43,16,19,2,252,255,64,20, + 4,0,99,36,22,0,96,18,33,128,0,0, + 33,136,192,3,0,0,39,142,0,0,0,0, + 13,0,240,16,128,40,16,0,5,0,160,18, + 0,0,0,0,112,0,164,143,0,0,0,0, + 9,248,160,2,33,48,0,2,16,0,168,143, + 0,0,0,0,3,0,0,17,1,0,148,38, + 174,64,192,8,1,0,2,36,1,0,16,38, + 43,16,19,2,237,255,64,20,4,0,49,38, + 33,16,128,2,92,0,191,143,88,0,190,143, + 84,0,183,143,80,0,182,143,76,0,181,143, + 72,0,180,143,68,0,179,143,64,0,178,143, + 60,0,177,143,56,0,176,143,8,0,224,3, + 96,0,189,39,0,0,0,0,0,0,0,0, + 255,1,2,36,0,163,1,60,176,1,32,172, + 0,163,1,60,180,1,32,172,0,163,1,60, + 8,0,224,3,184,1,34,172,232,255,189,39, + 16,0,176,175,33,128,128,0,20,0,191,175, + 220,63,192,12,33,32,0,0,33,40,64,0, + 0,163,3,60,180,1,99,140,0,163,2,60, + 184,1,66,140,0,163,4,60,128,1,132,140, + 1,0,99,36,11,0,128,20,36,24,98,0, + 0,163,2,60,176,1,66,140,0,0,0,0, + 6,0,98,20,0,0,0,0,0,163,2,60, + 128,1,66,140,0,0,0,0,247,255,64,16, + 0,0,0,0,0,163,2,60,180,1,66,140, + 33,32,160,0,0,163,1,60,33,8,34,0, + 188,1,48,160,0,163,1,60,220,63,192,12, + 180,1,35,172,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,255,189,39,33,80,0,0, + 80,0,185,143,84,0,184,143,88,0,175,143, + 1,0,2,36,60,0,177,175,92,0,177,143, + 4,112,226,0,12,0,224,24,56,0,176,175, + 1,0,9,36,33,64,160,3,33,24,32,3, + 0,0,98,140,4,0,99,36,1,0,74,37, + 4,16,73,0,0,0,2,173,42,16,71,1, + 249,255,64,20,4,0,8,37,46,0,192,25, + 33,80,0,0,255,0,16,36,33,72,0,0, + 0,0,145,172,0,0,160,164,34,0,224,24, + 0,0,208,160,33,88,128,0,33,96,160,0, + 33,104,192,0,33,64,32,3,33,24,160,3, + 0,0,98,140,0,0,0,0,36,16,66,1, + 19,0,64,16,0,0,0,0,0,0,2,141, + 0,0,0,0,128,16,2,0,33,16,88,0, + 0,0,66,140,0,0,0,0,0,0,98,173, + 0,0,2,141,0,0,0,0,64,16,2,0, + 33,16,79,0,0,0,66,148,0,0,0,0, + 0,0,130,165,0,0,2,141,0,0,0,0, + 47,65,192,8,0,0,162,161,4,0,8,37, + 1,0,41,37,42,16,39,1,229,255,64,20, + 4,0,99,36,1,0,198,36,2,0,165,36, + 1,0,74,37,42,16,78,1,213,255,64,20, + 4,0,132,36,60,0,177,143,56,0,176,143, + 8,0,224,3,64,0,189,39,0,0,0,0, + 0,0,0,0,0,0,0,0,216,255,189,39, + 63,0,132,48,28,0,179,175,128,1,147,52, + 50,133,130,151,48,133,132,151,0,128,131,151, + 20,0,177,175,16,0,176,175,5,162,16,60, + 32,0,191,175,24,0,178,175,39,16,68,0, + 36,24,98,0,0,128,131,167,0,0,3,166, + 76,63,192,12,0,1,17,36,0,128,130,151, + 48,133,131,151,5,162,18,60,37,16,67,0, + 0,128,130,167,0,0,2,166,36,16,51,2, + 6,0,64,16,0,0,0,0,0,128,131,151, + 20,133,130,151,0,0,0,0,96,65,192,8, + 37,24,98,0,20,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,0,128,131,167, + 0,0,67,166,76,63,192,12,66,136,17,0, + 0,128,130,151,50,133,131,151,0,0,0,0, + 37,16,67,0,0,128,130,167,76,63,192,12, + 0,0,66,166,50,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,255,255,34,50, + 0,128,131,167,0,0,67,166,226,255,64,20, + 36,16,51,2,33,136,0,0,16,0,16,36, + 5,162,18,60,255,255,19,36,76,63,192,12, + 0,0,0,0,0,128,131,151,50,133,130,151, + 0,0,0,0,37,24,98,0,0,128,131,167, + 76,63,192,12,0,0,67,166,8,0,0,18, + 0,0,0,0,0,0,67,150,20,133,130,151, + 0,0,0,0,36,16,67,0,2,0,64,16, + 64,136,17,0,1,0,49,54,76,63,192,12, + 255,255,16,38,50,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,0,128,131,167, + 230,255,19,22,0,0,67,166,48,133,130,151, + 0,128,131,151,39,16,2,0,36,24,98,0, + 5,162,2,60,0,128,131,167,0,0,67,164, + 255,255,34,50,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,208,255,189,39, + 36,0,181,175,33,168,160,0,32,0,180,175, + 63,0,148,48,33,32,128,2,44,0,191,175, + 40,0,182,175,28,0,179,175,24,0,178,175, + 20,0,177,175,60,65,192,12,16,0,176,175, + 33,152,64,0,255,255,163,50,255,255,98,50, + 3,0,98,20,48,1,22,36,245,66,192,8, + 1,0,2,36,5,162,16,60,50,133,130,151, + 48,133,132,151,0,128,131,151,39,16,68,0, + 36,24,98,0,0,128,131,167,0,0,3,166, + 76,63,192,12,0,1,17,36,0,128,130,151, + 48,133,131,151,5,162,18,60,37,16,67,0, + 0,128,130,167,0,0,2,166,36,16,54,2, + 6,0,64,16,0,0,0,0,0,128,131,151, + 20,133,130,151,0,0,0,0,210,65,192,8, + 37,24,98,0,20,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,0,128,131,167, + 0,0,67,166,76,63,192,12,66,136,17,0, + 0,128,130,151,50,133,131,151,0,0,0,0, + 37,16,67,0,0,128,130,167,76,63,192,12, + 0,0,66,166,50,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,255,255,34,50, + 0,128,131,167,0,0,67,166,226,255,64,20, + 36,16,54,2,255,255,163,50,255,255,98,50, + 39,16,2,0,36,24,98,0,84,0,96,16, + 192,1,147,54,5,162,16,60,50,133,130,151, + 48,133,132,151,0,128,131,151,39,16,68,0, + 36,24,98,0,0,128,131,167,0,0,3,166, + 76,63,192,12,0,1,17,36,0,128,130,151, + 48,133,131,151,5,162,18,60,37,16,67,0, + 0,128,130,167,0,0,2,166,36,16,51,2, + 6,0,64,16,0,0,0,0,0,128,131,151, + 20,133,130,151,0,0,0,0,8,66,192,8, + 37,24,98,0,20,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,0,128,131,167, + 0,0,67,166,76,63,192,12,66,136,17,0, + 0,128,130,151,50,133,131,151,0,0,0,0, + 37,16,67,0,0,128,130,167,76,63,192,12, + 0,0,66,166,50,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,255,255,34,50, + 0,128,131,167,0,0,67,166,226,255,64,20, + 36,16,51,2,5,162,16,60,50,133,130,151, + 48,133,132,151,0,128,131,151,39,16,68,0, + 36,24,98,0,0,128,131,167,76,63,192,12, + 0,0,3,166,0,128,131,151,48,133,130,151, + 0,0,0,0,37,24,98,0,0,0,3,166, + 0,0,4,150,20,133,130,151,0,128,131,167, + 36,16,68,0,9,0,64,20,0,0,0,0, + 76,63,192,12,0,0,0,0,0,0,3,150, + 20,133,130,151,0,0,0,0,36,16,67,0, + 249,255,64,16,0,0,0,0,48,133,130,151, + 0,128,131,151,39,16,2,0,36,24,98,0, + 5,162,2,60,0,128,131,167,0,0,67,164, + 255,255,163,50,255,255,2,52,125,0,98,16, + 64,1,147,54,5,162,16,60,50,133,130,151, + 48,133,132,151,0,128,131,151,39,16,68,0, + 36,24,98,0,0,128,131,167,0,0,3,166, + 76,63,192,12,0,1,17,36,0,128,130,151, + 48,133,131,151,5,162,18,60,37,16,67,0, + 0,128,130,167,0,0,2,166,36,16,51,2, + 6,0,64,16,0,0,0,0,0,128,131,151, + 20,133,130,151,0,0,0,0,95,66,192,8, + 37,24,98,0,20,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,0,128,131,167, + 0,0,67,166,76,63,192,12,66,136,17,0, + 0,128,130,151,50,133,131,151,0,0,0,0, + 37,16,67,0,0,128,130,167,76,63,192,12, + 0,0,66,166,50,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,255,255,34,50, + 0,128,131,167,0,0,67,166,226,255,64,20, + 36,16,51,2,33,144,160,2,0,128,16,52, + 0,128,130,151,48,133,131,151,5,162,17,60, + 37,16,67,0,5,162,3,60,0,128,130,167, + 0,0,98,164,36,16,18,2,6,0,64,16, + 0,0,0,0,0,128,131,151,20,133,130,151, + 0,0,0,0,136,66,192,8,37,24,98,0, + 20,133,130,151,0,128,131,151,39,16,2,0, + 36,24,98,0,0,128,131,167,0,0,35,166, + 76,63,192,12,66,128,16,0,0,128,130,151, + 50,133,131,151,0,0,0,0,37,16,67,0, + 0,128,130,167,76,63,192,12,0,0,34,166, + 50,133,130,151,0,128,131,151,39,16,2,0, + 36,24,98,0,255,255,2,50,0,128,131,167, + 0,0,35,166,226,255,64,20,36,16,18,2, + 5,162,16,60,50,133,130,151,48,133,132,151, + 0,128,131,151,39,16,68,0,36,24,98,0, + 0,128,131,167,76,63,192,12,0,0,3,166, + 0,128,131,151,48,133,130,151,0,0,0,0, + 37,24,98,0,0,0,3,166,0,0,4,150, + 20,133,130,151,0,128,131,167,36,16,68,0, + 9,0,64,20,0,0,0,0,76,63,192,12, + 0,0,0,0,0,0,3,150,20,133,130,151, + 0,0,0,0,36,16,67,0,249,255,64,16, + 0,0,0,0,48,133,130,151,0,128,131,151, + 39,16,2,0,36,24,98,0,5,162,2,60, + 0,128,131,167,0,0,67,164,0,1,19,36, + 5,162,16,60,50,133,130,151,48,133,132,151, + 0,128,131,151,39,16,68,0,36,24,98,0, + 0,128,131,167,0,0,3,166,76,63,192,12, + 0,1,17,36,0,128,130,151,48,133,131,151, + 5,162,18,60,37,16,67,0,0,128,130,167, + 0,0,2,166,36,16,113,2,6,0,64,16, + 0,0,0,0,0,128,131,151,20,133,130,151, + 0,0,0,0,220,66,192,8,37,24,98,0, + 20,133,130,151,0,128,131,151,39,16,2,0, + 36,24,98,0,0,128,131,167,0,0,67,166, + 76,63,192,12,66,136,17,0,0,128,130,151, + 50,133,131,151,0,0,0,0,37,16,67,0, + 0,128,130,167,76,63,192,12,0,0,66,166, + 50,133,130,151,0,128,131,151,39,16,2,0, + 36,24,98,0,255,255,34,50,0,128,131,167, + 0,0,67,166,226,255,64,20,36,16,113,2, + 60,65,192,12,33,32,128,2,38,16,162,2, + 255,255,66,48,1,0,66,44,44,0,191,143, + 40,0,182,143,36,0,181,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,48,0,189,39, + 224,255,189,39,24,0,178,175,33,144,0,0, + 64,16,4,0,16,0,176,175,33,128,68,0, + 33,32,0,2,20,0,177,175,255,255,177,48, + 28,0,191,175,162,65,192,12,33,40,32,2, + 8,0,64,16,1,0,4,38,162,65,192,12, + 33,40,32,2,4,0,64,16,2,0,4,38, + 162,65,192,12,33,40,32,2,43,144,2,0, + 33,16,64,2,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,216,255,189,39,64,16,4,0, + 24,0,178,175,33,144,68,0,33,32,64,2, + 36,0,191,175,32,0,180,175,28,0,179,175, + 20,0,177,175,60,65,192,12,16,0,176,175, + 1,0,84,38,33,32,128,2,60,65,192,12, + 33,136,64,0,2,0,83,38,33,32,96,2, + 60,65,192,12,33,128,64,0,255,255,35,50, + 255,255,17,50,8,0,113,20,0,0,0,0, + 255,255,66,48,3,0,34,18,33,32,96,2, + 162,65,192,12,33,40,32,2,66,67,192,8, + 33,16,32,2,255,255,80,48,4,0,112,16, + 33,32,128,2,5,0,48,22,255,255,2,36, + 33,32,64,2,162,65,192,12,33,40,0,2, + 33,16,0,2,36,0,191,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,40,0,189,39, + 0,0,0,0,0,0,0,0,0,96,8,64, + 0,0,0,0,254,255,1,36,36,72,1,1, + 0,96,137,64,0,0,133,164,2,0,132,32, + 2,44,5,0,0,0,133,164,0,96,136,64, + 8,0,224,3,0,0,0,0,208,255,189,39, + 32,0,178,175,33,144,128,0,28,0,177,175, + 33,136,160,0,36,0,179,175,33,152,192,0, + 40,0,180,175,33,160,224,0,44,0,191,175, + 2,0,32,22,24,0,176,175,255,255,17,36, + 0,0,66,142,0,0,0,0,36,16,81,0, + 3,0,83,20,0,0,0,0,121,67,192,8, + 1,0,2,36,11,0,128,26,33,128,0,0, + 143,63,192,12,0,0,0,0,0,0,66,142, + 0,0,0,0,36,16,81,0,246,255,83,16, + 1,0,16,38,42,16,20,2,247,255,64,20, + 0,0,0,0,33,16,0,0,44,0,191,143, + 40,0,180,143,36,0,179,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 48,0,189,39,208,255,189,39,32,0,178,175, + 33,144,128,0,28,0,177,175,33,136,160,0, + 36,0,179,175,33,152,192,0,40,0,180,175, + 33,160,224,0,44,0,191,175,2,0,32,22, + 24,0,176,175,255,255,17,52,0,0,66,150, + 0,0,0,0,36,16,81,0,3,0,83,20, + 0,0,0,0,162,67,192,8,1,0,2,36, + 11,0,128,26,33,128,0,0,143,63,192,12, + 0,0,0,0,0,0,66,150,0,0,0,0, + 36,16,81,0,246,255,83,16,1,0,16,38, + 42,16,20,2,247,255,64,20,0,0,0,0, + 33,16,0,0,44,0,191,143,40,0,180,143, + 36,0,179,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,48,0,189,39, + 208,255,189,39,32,0,178,175,33,144,128,0, + 28,0,177,175,33,136,160,0,36,0,179,175, + 33,152,192,0,40,0,180,175,33,160,224,0, + 44,0,191,175,2,0,32,22,24,0,176,175, + 255,0,17,36,0,0,66,146,0,0,0,0, + 36,16,81,0,3,0,83,20,0,0,0,0, + 203,67,192,8,1,0,2,36,11,0,128,26, + 33,128,0,0,143,63,192,12,0,0,0,0, + 0,0,66,146,0,0,0,0,36,16,81,0, + 246,255,83,16,1,0,16,38,42,16,20,2, + 247,255,64,20,0,0,0,0,33,16,0,0, + 44,0,191,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,48,0,189,39,208,255,189,39, + 32,0,178,175,33,144,128,0,28,0,177,175, + 33,136,160,0,36,0,179,175,33,152,192,0, + 40,0,180,175,33,160,224,0,44,0,191,175, + 2,0,32,22,24,0,176,175,255,255,17,36, + 0,0,66,142,0,0,0,0,36,16,81,0, + 3,0,83,20,0,0,0,0,244,67,192,8, + 1,0,2,36,11,0,128,26,33,128,0,0, + 143,63,192,12,0,0,0,0,0,0,66,142, + 0,0,0,0,36,16,81,0,246,255,83,20, + 1,0,16,38,42,16,20,2,247,255,64,20, + 0,0,0,0,33,16,0,0,44,0,191,143, + 40,0,180,143,36,0,179,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 48,0,189,39,208,255,189,39,32,0,178,175, + 33,144,128,0,28,0,177,175,33,136,160,0, + 36,0,179,175,33,152,192,0,40,0,180,175, + 33,160,224,0,44,0,191,175,2,0,32,22, + 24,0,176,175,255,255,17,52,0,0,66,150, + 0,0,0,0,36,16,81,0,3,0,83,20, + 0,0,0,0,29,68,192,8,1,0,2,36, + 11,0,128,26,33,128,0,0,143,63,192,12, + 0,0,0,0,0,0,66,150,0,0,0,0, + 36,16,81,0,246,255,83,20,1,0,16,38, + 42,16,20,2,247,255,64,20,0,0,0,0, + 33,16,0,0,44,0,191,143,40,0,180,143, + 36,0,179,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,48,0,189,39, + 208,255,189,39,32,0,178,175,33,144,128,0, + 28,0,177,175,33,136,160,0,36,0,179,175, + 33,152,192,0,40,0,180,175,33,160,224,0, + 44,0,191,175,2,0,32,22,24,0,176,175, + 255,0,17,36,0,0,66,146,0,0,0,0, + 36,16,81,0,3,0,83,20,0,0,0,0, + 70,68,192,8,1,0,2,36,11,0,128,26, + 33,128,0,0,143,63,192,12,0,0,0,0, + 0,0,66,146,0,0,0,0,36,16,81,0, + 246,255,83,20,1,0,16,38,42,16,20,2, + 247,255,64,20,0,0,0,0,33,16,0,0, + 44,0,191,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,48,0,189,39,0,0,0,0, + 0,0,0,0,248,255,189,39,255,255,195,36, + 8,0,192,16,33,56,128,0,255,255,6,36, + 0,0,162,144,1,0,165,36,255,255,99,36, + 0,0,130,160,251,255,102,20,1,0,132,36, + 33,16,224,0,8,0,224,3,8,0,189,39, + 0,0,0,0,0,0,0,0,0,96,8,64, + 1,0,9,60,0,96,137,64,15,0,138,48, + 33,40,170,0,192,255,165,36,0,0,128,160, + 16,0,128,160,32,0,128,160,251,255,160,28, + 48,0,128,160,64,0,132,36,0,96,136,64, + 0,0,0,0,0,0,0,0,8,0,224,3, + 0,0,0,0,0,0,0,0,1,131,2,60, + 224,17,66,36,0,32,9,60,37,16,73,0, + 8,0,64,0,0,0,0,0,0,96,8,64, + 3,0,9,60,0,96,137,64,15,0,138,48, + 33,40,170,0,192,255,165,36,0,0,128,160, + 16,0,128,160,32,0,128,160,251,255,160,28, + 48,0,128,160,64,0,132,36,0,96,136,64, + 0,0,0,0,0,0,0,0,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,163,3,60,192,3,99,140, + 0,163,2,60,188,3,66,140,0,0,0,0, + 16,0,98,16,255,255,2,36,0,163,2,60, + 188,3,66,140,0,163,1,60,33,8,34,0, + 200,3,34,144,0,163,3,60,188,3,99,140, + 0,163,4,60,196,3,132,140,0,22,2,0, + 3,22,2,0,1,0,99,36,36,24,100,0, + 0,163,1,60,188,3,35,172,8,0,224,3, + 0,0,0,0,0,163,6,60,0,1,198,52, + 10,0,9,36,255,255,8,36,13,0,7,36, + 0,163,3,60,192,3,99,140,0,163,2,60, + 188,3,66,140,0,0,0,0,17,0,98,16, + 255,255,5,36,0,163,2,60,188,3,66,140, + 0,0,0,0,33,16,70,0,200,2,66,144, + 0,0,0,0,0,22,2,0,3,46,2,0, + 0,163,2,60,188,3,66,140,0,163,3,60, + 196,3,99,140,1,0,66,36,36,16,67,0, + 0,163,1,60,188,3,34,172,11,0,169,16, + 11,0,162,40,5,0,64,16,0,0,0,0, + 228,255,168,16,0,0,0,0,206,68,192,8, + 0,0,133,160,224,255,167,16,0,0,0,0, + 206,68,192,8,0,0,133,160,208,68,192,8, + 0,0,128,160,169,68,192,8,1,0,132,36, + 8,0,224,3,0,0,0,0,0,0,0,0, + 0,0,0,0,208,255,189,39,24,0,176,175, + 33,128,128,0,36,0,179,175,33,152,160,0, + 28,0,177,175,33,136,0,0,32,0,178,175, + 33,144,0,2,5,0,64,22,40,0,191,175, + 54,0,96,22,33,16,0,0,22,69,192,8, + 0,0,32,174,0,0,67,130,0,0,0,0, + 233,68,192,8,32,0,2,36,0,0,3,130, + 32,0,2,36,253,255,98,16,1,0,16,38, + 255,255,16,38,9,0,2,36,249,255,98,16, + 1,0,16,38,255,255,16,38,0,0,3,130, + 45,0,2,36,4,0,98,20,43,0,2,36, + 1,0,16,38,250,68,192,8,1,0,17,36, + 3,0,98,20,33,32,0,2,1,0,16,38, + 33,32,0,2,44,69,192,12,16,0,165,39, + 7,0,96,18,33,24,64,0,16,0,162,143, + 0,0,0,0,2,0,80,20,0,0,0,0, + 33,16,64,2,0,0,98,174,6,0,32,18, + 0,128,2,60,43,16,67,0,5,0,64,20, + 255,127,2,60,19,69,192,8,33,16,96,0, + 5,0,97,4,255,127,2,60,7,0,32,18, + 255,255,66,52,22,69,192,8,0,128,2,60, + 33,16,96,0,2,0,32,18,0,0,0,0, + 35,16,2,0,40,0,191,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,48,0,189,39,0,0,0,0, + 0,0,0,0,0,0,0,0,208,255,130,36, + 10,0,66,44,7,0,64,20,1,0,2,36, + 191,255,130,36,6,0,66,44,3,0,64,20, + 1,0,2,36,159,255,130,36,6,0,66,44, + 8,0,224,3,0,0,0,0,248,255,189,39, + 0,0,176,175,33,56,0,0,33,72,0,0, + 33,80,0,0,33,112,0,0,5,0,128,20, + 33,200,128,0,110,0,160,20,33,16,0,0, + 163,69,192,8,0,0,192,173,0,0,131,128, + 32,0,2,36,253,255,98,16,1,0,132,36, + 255,255,132,36,9,0,2,36,249,255,98,16, + 1,0,132,36,255,255,132,36,0,0,131,128, + 43,0,2,36,3,0,98,20,45,0,2,36, + 75,69,192,8,1,0,132,36,3,0,98,20, + 0,0,0,0,1,0,132,36,1,0,14,36, + 3,0,192,16,16,0,2,36,16,0,194,20, + 0,0,0,0,0,0,131,128,48,0,2,36, + 9,0,98,20,10,0,2,36,1,0,131,128, + 88,0,2,36,3,0,98,16,120,0,2,36, + 3,0,98,20,8,0,2,36,16,0,2,36, + 2,0,132,36,2,0,192,20,0,0,0,0, + 33,48,64,0,0,0,131,128,255,255,2,36, + 27,0,70,0,2,0,192,20,0,0,0,0, + 13,0,7,0,18,64,0,0,16,192,0,0, + 0,0,0,0,0,0,0,0,42,0,96,16, + 48,0,98,44,48,0,207,36,11,0,205,40, + 87,0,204,36,55,0,203,36,5,0,64,20, + 43,16,111,0,3,0,64,16,0,0,0,0, + 130,69,192,8,208,255,99,36,30,0,160,21, + 97,0,98,44,6,0,64,20,65,0,98,44, + 43,16,108,0,3,0,64,16,65,0,98,44, + 130,69,192,8,169,255,99,36,21,0,64,20, + 43,16,107,0,19,0,64,16,0,0,0,0, + 201,255,99,36,43,16,7,1,6,0,64,20, + 1,0,9,36,6,0,232,20,24,0,230,0, + 43,16,3,3,3,0,64,16,0,0,0,0, + 1,0,10,36,24,0,230,0,1,0,132,36, + 18,128,0,0,33,56,3,2,0,0,131,128, + 0,0,0,0,220,255,96,20,48,0,98,44, + 5,0,64,17,0,0,0,0,13,0,160,16, + 255,255,2,36,163,69,192,8,0,0,164,172, + 6,0,160,16,0,0,0,0,3,0,32,21, + 0,0,0,0,160,69,192,8,0,0,185,172, + 0,0,164,172,2,0,192,17,33,16,224,0, + 35,16,2,0,0,0,176,143,8,0,224,3, + 8,0,189,39,0,0,0,0,0,0,0,0, + 200,255,189,39,16,0,176,175,7,162,16,60, + 236,0,16,54,255,240,3,60,255,255,99,52, + 63,0,132,48,36,0,181,175,128,1,149,52, + 24,0,178,175,0,1,18,36,20,0,177,175, + 7,162,17,60,236,0,49,54,44,0,183,175, + 0,4,23,60,32,0,180,175,255,251,20,60, + 255,255,148,54,40,0,182,175,0,1,22,60, + 28,0,179,175,255,254,19,60,48,0,191,175, + 0,0,2,142,0,0,0,0,36,16,67,0, + 224,133,130,175,0,0,2,174,76,63,192,12, + 255,255,115,54,224,133,130,143,0,2,3,60, + 37,16,67,0,224,133,130,175,0,0,2,174, + 36,16,85,2,5,0,64,16,0,0,0,0, + 224,133,130,143,0,0,0,0,214,69,192,8, + 37,16,87,0,224,133,130,143,0,0,0,0, + 36,16,84,0,224,133,130,175,76,63,192,12, + 0,0,34,174,224,133,130,143,0,0,0,0, + 37,16,86,0,224,133,130,175,0,0,34,174, + 76,63,192,12,66,144,18,0,224,133,130,143, + 0,0,0,0,36,16,83,0,224,133,130,175, + 0,0,34,174,255,255,66,50,230,255,64,20, + 36,16,85,2,33,136,0,0,16,0,16,36, + 7,162,18,60,236,0,82,54,0,1,22,60, + 0,8,21,60,255,254,19,60,255,255,115,54, + 255,255,20,36,76,63,192,12,0,0,0,0, + 224,133,130,143,0,0,0,0,37,16,86,0, + 224,133,130,175,76,63,192,12,0,0,66,174, + 7,0,0,18,0,0,0,0,0,0,66,142, + 0,0,0,0,36,16,85,0,2,0,64,16, + 64,136,17,0,1,0,49,54,76,63,192,12, + 255,255,16,38,224,133,130,143,0,0,0,0, + 36,16,83,0,224,133,130,175,0,0,66,174, + 232,255,20,22,7,162,4,60,236,0,132,52, + 255,253,3,60,224,133,130,143,255,255,99,52, + 36,16,67,0,224,133,130,175,0,0,130,172, + 255,255,34,50,48,0,191,143,44,0,183,143, + 40,0,182,143,36,0,181,143,32,0,180,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,56,0,189,39, + 200,255,189,39,48,0,190,175,33,240,160,0, + 40,0,182,175,63,0,150,48,33,32,192,2, + 52,0,191,175,44,0,183,175,36,0,181,175, + 32,0,180,175,28,0,179,175,24,0,178,175, + 20,0,177,175,168,69,192,12,16,0,176,175, + 33,152,64,0,255,255,195,51,255,255,98,50, + 3,0,98,20,7,162,16,60,131,71,192,8, + 1,0,2,36,236,0,16,54,255,252,3,60, + 255,255,99,52,0,1,18,36,7,162,17,60, + 236,0,49,54,255,251,21,60,255,255,181,54, + 0,1,23,60,255,254,20,60,224,133,130,143, + 0,0,0,0,36,16,67,0,224,133,130,175, + 0,0,2,174,76,63,192,12,255,255,148,54, + 224,133,130,143,0,2,3,60,37,16,67,0, + 224,133,130,175,0,0,2,174,48,1,66,50, + 5,0,64,16,0,4,6,60,224,133,130,143, + 0,0,0,0,83,70,192,8,37,16,70,0, + 224,133,130,143,0,0,0,0,36,16,85,0, + 224,133,130,175,76,63,192,12,0,0,34,174, + 224,133,130,143,0,0,0,0,37,16,87,0, + 224,133,130,175,0,0,34,174,76,63,192,12, + 66,144,18,0,224,133,130,143,0,0,0,0, + 36,16,84,0,224,133,130,175,0,0,34,174, + 255,255,66,50,230,255,64,20,48,1,66,50, + 255,255,195,51,255,255,98,50,39,16,2,0, + 36,24,98,0,88,0,96,16,192,1,213,54, + 7,162,16,60,236,0,16,54,255,252,3,60, + 255,255,99,52,0,1,18,36,7,162,17,60, + 236,0,49,54,255,251,20,60,255,255,148,54, + 0,1,23,60,255,254,19,60,224,133,130,143, + 0,0,0,0,36,16,67,0,224,133,130,175, + 0,0,2,174,76,63,192,12,255,255,115,54, + 224,133,130,143,0,2,3,60,37,16,67,0, + 224,133,130,175,0,0,2,174,36,16,85,2, + 5,0,64,16,0,4,6,60,224,133,130,143, + 0,0,0,0,140,70,192,8,37,16,70,0, + 224,133,130,143,0,0,0,0,36,16,84,0, + 224,133,130,175,76,63,192,12,0,0,34,174, + 224,133,130,143,0,0,0,0,37,16,87,0, + 224,133,130,175,0,0,34,174,76,63,192,12, + 66,144,18,0,224,133,130,143,0,0,0,0, + 36,16,83,0,224,133,130,175,0,0,34,174, + 255,255,66,50,230,255,64,20,36,16,85,2, + 7,162,16,60,236,0,16,54,255,252,3,60, + 224,133,130,143,255,255,99,52,36,16,67,0, + 224,133,130,175,76,63,192,12,0,0,2,174, + 224,133,130,143,0,2,3,60,37,16,67,0, + 224,133,130,175,0,0,2,174,0,0,2,142, + 0,8,3,60,36,16,67,0,11,0,64,20, + 7,162,4,60,7,162,16,60,236,0,16,54, + 0,8,17,60,76,63,192,12,0,0,0,0, + 0,0,2,142,0,0,0,0,36,16,81,0, + 250,255,64,16,7,162,4,60,236,0,132,52, + 255,253,3,60,224,133,130,143,255,255,99,52, + 36,16,67,0,224,133,130,175,0,0,130,172, + 255,255,195,51,255,255,2,52,133,0,98,16, + 64,1,213,54,7,162,16,60,236,0,16,54, + 255,252,3,60,255,255,99,52,0,1,18,36, + 7,162,17,60,236,0,49,54,255,251,20,60, + 255,255,148,54,0,1,23,60,255,254,19,60, + 224,133,130,143,0,0,0,0,36,16,67,0, + 224,133,130,175,0,0,2,174,76,63,192,12, + 255,255,115,54,224,133,130,143,0,2,3,60, + 37,16,67,0,224,133,130,175,0,0,2,174, + 36,16,85,2,5,0,64,16,0,4,6,60, + 224,133,130,143,0,0,0,0,231,70,192,8, + 37,16,70,0,224,133,130,143,0,0,0,0, + 36,16,84,0,224,133,130,175,76,63,192,12, + 0,0,34,174,224,133,130,143,0,0,0,0, + 37,16,87,0,224,133,130,175,0,0,34,174, + 76,63,192,12,66,144,18,0,224,133,130,143, + 0,0,0,0,36,16,83,0,224,133,130,175, + 0,0,34,174,255,255,66,50,230,255,64,20, + 36,16,85,2,33,160,192,3,7,162,2,60, + 236,0,66,52,0,128,17,52,7,162,16,60, + 236,0,16,54,0,4,23,60,255,251,19,60, + 255,255,115,54,0,1,21,60,255,254,18,60, + 255,255,82,54,224,133,131,143,0,2,4,60, + 37,24,100,0,224,133,131,175,0,0,67,172, + 36,16,52,2,5,0,64,16,0,0,0,0, + 224,133,130,143,0,0,0,0,20,71,192,8, + 37,16,87,0,224,133,130,143,0,0,0,0, + 36,16,83,0,224,133,130,175,76,63,192,12, + 0,0,2,174,224,133,130,143,0,0,0,0, + 37,16,85,0,224,133,130,175,0,0,2,174, + 76,63,192,12,66,136,17,0,224,133,130,143, + 0,0,0,0,36,16,82,0,224,133,130,175, + 0,0,2,174,255,255,34,50,230,255,64,20, + 36,16,52,2,7,162,16,60,236,0,16,54, + 255,252,3,60,224,133,130,143,255,255,99,52, + 36,16,67,0,224,133,130,175,76,63,192,12, + 0,0,2,174,224,133,130,143,0,2,3,60, + 37,16,67,0,224,133,130,175,0,0,2,174, + 0,0,2,142,0,8,3,60,36,16,67,0, + 11,0,64,20,7,162,4,60,7,162,16,60, + 236,0,16,54,0,8,17,60,76,63,192,12, + 0,0,0,0,0,0,2,142,0,0,0,0, + 36,16,81,0,250,255,64,16,7,162,4,60, + 236,0,132,52,255,253,3,60,224,133,130,143, + 255,255,99,52,36,16,67,0,224,133,130,175, + 0,0,130,172,7,162,16,60,236,0,16,54, + 255,252,3,60,255,255,99,52,0,1,18,36, + 7,162,17,60,236,0,49,54,0,4,23,60, + 255,251,20,60,255,255,148,54,0,1,21,60, + 255,254,19,60,224,133,130,143,0,0,0,0, + 36,16,67,0,224,133,130,175,0,0,2,174, + 76,63,192,12,255,255,115,54,224,133,130,143, + 0,2,3,60,37,16,67,0,224,133,130,175, + 0,0,2,174,0,1,66,50,5,0,64,16, + 0,0,0,0,224,133,130,143,0,0,0,0, + 108,71,192,8,37,16,87,0,224,133,130,143, + 0,0,0,0,36,16,84,0,224,133,130,175, + 76,63,192,12,0,0,34,174,224,133,130,143, + 0,0,0,0,37,16,85,0,224,133,130,175, + 0,0,34,174,76,63,192,12,66,144,18,0, + 224,133,130,143,0,0,0,0,36,16,83,0, + 224,133,130,175,0,0,34,174,255,255,66,50, + 230,255,64,20,0,1,66,50,168,69,192,12, + 33,32,192,2,38,16,194,3,255,255,66,48, + 1,0,66,44,52,0,191,143,48,0,190,143, + 44,0,183,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 56,0,189,39,0,0,0,0,248,255,189,39, + 255,255,195,36,6,0,192,16,33,16,128,0, + 255,255,6,36,0,0,133,160,255,255,99,36, + 253,255,102,20,1,0,132,36,8,0,189,39, + 8,0,224,3,0,0,0,0,159,71,192,8, + 33,24,0,0,1,0,99,36,0,0,130,128, + 0,0,0,0,252,255,64,20,1,0,132,36, + 8,0,224,3,33,16,96,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,198,36, + 10,0,192,16,0,0,0,0,0,0,131,128, + 0,0,162,128,0,0,0,0,5,0,98,20, + 0,0,0,0,1,0,132,36,255,255,198,36, + 248,255,192,20,1,0,165,36,0,0,131,144, + 0,0,162,144,0,0,0,0,8,0,224,3, + 35,16,98,0,0,0,0,0,0,0,0,0, + 0,0,0,0,196,71,192,8,240,255,189,39, + 0,0,163,128,3,22,2,0,8,0,67,20, + 0,0,0,0,1,0,132,36,1,0,165,36, + 0,0,130,128,0,0,131,144,0,0,0,0, + 246,255,64,20,0,22,3,0,0,0,131,144, + 0,0,162,144,0,0,0,0,35,16,98,0, + 8,0,224,3,16,0,189,39,0,0,0,0, + 255,255,198,36,9,0,192,4,33,16,0,0, + 0,0,130,144,0,0,0,0,5,0,69,16, + 33,16,128,0,255,255,198,36,250,255,193,4, + 1,0,132,36,33,16,0,0,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,192,20,255,255,2,36, + 1,0,2,36,8,0,224,3,0,0,226,172, + 232,255,189,39,20,0,191,175,16,0,176,175, + 40,0,176,143,33,32,192,0,4,0,5,142, + 0,0,0,0,15,86,192,12,255,255,230,48, + 3,0,64,16,255,255,2,36,243,71,192,8, + 0,0,2,174,0,0,0,174,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 208,255,189,39,40,0,191,175,33,24,128,0, + 64,0,162,143,32,0,160,175,36,0,162,175, + 12,0,66,148,0,0,0,0,2,0,64,20, + 33,32,160,0,120,5,2,36,255,255,66,48, + 16,0,162,175,1,131,2,60,148,31,66,36, + 20,0,162,175,1,131,2,60,128,31,66,36, + 24,0,162,175,32,0,162,39,28,0,162,175, + 166,85,192,12,33,40,96,0,32,0,162,143, + 40,0,191,143,48,0,189,39,8,0,224,3, + 0,0,0,0,0,0,0,0,88,0,131,148, + 4,0,2,36,9,0,98,20,0,0,0,0, + 33,72,192,8,116,0,132,36,33,16,69,0, + 128,16,2,0,8,0,131,140,0,0,0,0, + 46,72,192,8,33,16,67,0,104,0,132,36, + 12,0,128,16,33,16,0,0,4,0,130,140, + 0,0,0,0,42,16,162,0,243,255,64,20, + 0,17,5,0,4,0,130,140,12,0,132,140, + 0,0,0,0,247,255,128,20,35,40,162,0, + 33,16,0,0,8,0,224,3,0,0,0,0, + 88,0,131,148,4,0,2,36,3,0,98,20, + 33,48,0,0,55,72,192,8,116,0,132,36, + 104,0,132,36,8,0,130,140,0,0,0,0, + 43,16,162,0,14,0,64,16,255,255,2,36, + 92,72,192,8,0,0,0,0,35,24,163,0, + 0,17,3,0,35,16,67,0,0,26,2,0, + 33,16,67,0,0,28,2,0,33,16,67,0, + 35,16,2,0,131,16,2,0,92,72,192,8, + 33,16,194,0,18,0,128,16,0,0,0,0, + 4,0,131,140,0,0,0,0,0,17,3,0, + 33,16,67,0,128,16,2,0,8,0,131,140, + 0,0,0,0,33,16,67,0,43,16,162,0, + 233,255,64,20,0,0,0,0,4,0,130,140, + 12,0,132,140,0,0,0,0,241,255,128,20, + 33,48,194,0,255,255,2,36,8,0,224,3, + 0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,130,36,144,0,163,140,120,132,135,39, + 2,0,96,16,20,0,137,36,33,56,96,0, + 0,0,72,140,4,0,68,140,132,72,192,8, + 0,0,0,0,30,0,0,25,0,0,0,0, + 4,0,227,140,0,0,0,0,4,0,98,140, + 0,0,0,0,55,0,64,16,255,255,2,36, + 0,0,135,140,0,0,98,140,0,0,0,0, + 8,0,71,16,0,0,0,0,8,0,99,36, + 4,0,98,140,0,0,0,0,248,255,64,20, + 255,255,2,36,168,72,192,8,0,0,0,0, + 0,0,130,140,0,0,0,0,4,0,34,173, + 4,0,103,140,255,255,8,37,4,0,132,36, + 0,0,226,148,0,0,0,0,1,0,66,48, + 226,255,64,16,0,0,0,0,0,0,226,148, + 0,0,0,0,64,0,66,48,27,0,64,20, + 255,255,2,36,0,0,226,148,0,0,0,0, + 1,0,66,48,17,0,64,16,0,0,0,0, + 13,0,192,16,1,0,2,36,64,0,162,140, + 0,0,0,0,9,0,64,20,1,0,2,36, + 28,0,226,140,4,0,163,140,0,0,0,0, + 36,16,67,0,3,0,64,20,1,0,2,36, + 168,72,192,8,255,255,2,36,164,72,192,8, + 0,0,34,165,0,0,32,165,8,0,40,173, + 12,0,36,173,16,0,39,173,33,16,0,0, + 8,0,224,3,0,0,0,0,200,255,189,39, + 48,0,191,175,44,0,179,175,40,0,178,175, + 36,0,177,175,32,0,176,175,33,152,128,0, + 33,128,160,0,33,144,192,0,0,0,4,142, + 0,0,0,0,48,0,130,40,2,0,64,16, + 8,0,113,38,48,0,4,36,0,0,36,174, + 9,50,192,12,128,32,4,0,3,0,64,20, + 4,0,34,174,214,72,192,8,255,255,2,36, + 144,0,66,142,120,132,132,39,2,0,64,16, + 0,0,0,0,33,32,64,0,16,0,160,175, + 20,0,179,175,24,0,178,175,0,0,5,142, + 4,0,6,142,0,0,0,0,221,72,192,12, + 33,56,32,2,33,128,64,0,4,0,0,26, + 0,0,0,0,0,0,34,142,214,72,192,8, + 0,0,0,0,110,86,192,12,33,32,32,2, + 33,16,0,2,48,0,191,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,56,0,189,39,184,255,189,39, + 68,0,191,175,64,0,190,175,60,0,183,175, + 56,0,182,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,33,144,128,0,33,176,160,0, + 33,136,224,0,88,0,183,143,92,0,179,143, + 96,0,190,143,32,0,226,38,0,0,36,142, + 0,0,0,0,42,16,130,0,22,0,64,16, + 33,160,192,0,4,0,132,36,9,50,192,12, + 128,32,4,0,33,128,64,0,3,0,0,22, + 33,32,0,2,153,73,192,8,255,255,2,36, + 0,0,38,142,4,0,37,142,0,0,0,0, + 80,68,192,12,128,48,6,0,4,0,36,142, + 61,50,192,12,0,0,0,0,4,0,48,174, + 0,0,34,142,0,0,0,0,4,0,66,36, + 0,0,34,174,0,0,66,150,0,0,0,0, + 1,0,66,48,96,0,64,20,0,0,0,0, + 33,0,192,30,0,0,0,0,4,0,80,142, + 0,0,0,0,4,0,2,142,0,0,0,0, + 108,0,64,16,128,160,23,0,1,0,242,38, + 4,0,34,142,0,0,0,0,33,16,130,2, + 0,0,3,142,0,0,0,0,0,0,67,172, + 0,0,2,142,0,0,0,0,24,0,98,174, + 16,0,178,175,20,0,179,175,24,0,190,175, + 4,0,4,142,33,40,0,0,33,48,0,0, + 221,72,192,12,33,56,32,2,112,0,64,20, + 8,0,16,38,4,0,2,142,0,0,0,0, + 234,255,64,20,33,16,0,0,153,73,192,8, + 0,0,0,0,4,0,80,142,0,0,0,0, + 4,0,2,142,0,0,0,0,76,0,64,16, + 128,168,23,0,1,0,242,38,0,0,3,142, + 0,0,132,142,0,0,0,0,43,16,100,0, + 42,0,64,20,0,0,0,0,19,0,100,20, + 255,255,197,38,4,0,34,142,0,0,0,0, + 33,16,162,2,0,0,67,172,0,0,2,142, + 0,0,0,0,24,0,98,174,16,0,178,175, + 20,0,179,175,24,0,190,175,4,0,4,142, + 4,0,134,38,221,72,192,12,33,56,32,2, + 25,0,64,16,8,0,16,38,153,73,192,8, + 0,0,0,0,0,0,130,142,0,0,0,0, + 43,16,67,0,17,0,64,16,33,40,0,0, + 4,0,34,142,0,0,0,0,33,16,162,2, + 0,0,67,172,0,0,2,142,0,0,0,0, + 24,0,98,174,16,0,178,175,20,0,179,175, + 24,0,190,175,4,0,4,142,33,48,0,0, + 221,72,192,12,33,56,32,2,52,0,64,20, + 0,0,0,0,8,0,16,38,4,0,2,142, + 0,0,0,0,205,255,64,20,33,16,0,0, + 153,73,192,8,0,0,0,0,0,0,66,150, + 0,0,0,0,64,0,66,48,40,0,64,20, + 33,16,0,0,3,0,66,146,0,0,0,0, + 1,0,66,48,11,0,64,16,33,24,64,2, + 64,0,194,143,0,0,0,0,9,0,64,20, + 0,0,0,0,28,0,98,140,4,0,195,143, + 0,0,0,0,36,16,67,0,3,0,64,20, + 0,0,0,0,153,73,192,8,33,16,0,0, + 14,0,192,26,33,16,246,2,0,0,34,174, + 4,0,36,142,128,128,23,0,33,32,4,2, + 33,40,128,2,80,68,192,12,128,48,22,0, + 28,0,118,174,4,0,34,142,0,0,0,0, + 33,128,2,2,149,73,192,8,32,0,112,174, + 0,0,55,174,28,0,96,174,32,0,96,174, + 36,0,114,174,1,0,2,36,20,0,98,166, + 1,0,2,36,68,0,191,143,64,0,190,143, + 60,0,183,143,56,0,182,143,52,0,181,143, + 48,0,180,143,44,0,179,143,40,0,178,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 72,0,189,39,3,0,160,28,33,16,0,0, + 0,0,224,172,1,0,2,36,8,0,224,3, + 0,0,0,0,208,255,189,39,44,0,191,175, + 40,0,178,175,36,0,177,175,32,0,176,175, + 33,144,128,0,33,136,224,0,64,0,176,143, + 0,0,0,0,6,0,160,24,24,0,160,175, + 17,0,2,146,0,0,0,0,18,0,66,52, + 200,73,192,8,17,0,2,162,33,32,32,2, + 33,40,0,2,1,0,6,36,253,76,192,12, + 24,0,167,39,36,0,2,142,16,0,176,175, + 8,0,66,140,33,32,64,2,1,0,5,36, + 24,0,166,39,9,248,64,0,33,56,32,2, + 44,0,191,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,48,0,189,39, + 224,255,189,39,28,0,191,175,24,0,178,175, + 20,0,177,175,33,144,128,0,33,136,160,0, + 31,0,81,18,16,0,176,175,4,0,80,142, + 0,0,0,0,4,0,2,142,0,0,0,0, + 10,0,64,16,0,0,0,0,4,0,4,142, + 0,0,0,0,206,73,192,12,33,40,32,2, + 8,0,16,38,4,0,2,142,0,0,0,0, + 248,255,64,20,0,0,0,0,0,0,66,150, + 0,0,0,0,32,0,66,48,4,0,64,16, + 0,0,0,0,4,0,68,142,61,50,192,12, + 0,0,0,0,0,0,66,150,0,0,0,0, + 16,0,66,48,3,0,64,16,0,0,0,0, + 61,50,192,12,33,32,64,2,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,120,132,131,39, + 2,0,128,16,0,0,0,0,33,24,128,0, + 0,0,167,140,4,0,165,140,26,74,192,8, + 0,0,0,0,28,0,224,24,0,0,0,0, + 4,0,99,140,0,0,0,0,4,0,98,140, + 0,0,0,0,11,0,64,16,0,0,0,0, + 0,0,164,140,0,0,98,140,0,0,0,0, + 9,0,68,16,0,0,0,0,8,0,99,36, + 4,0,98,140,0,0,0,0,248,255,64,20, + 0,0,0,0,0,0,192,172,33,74,192,8, + 2,0,2,36,4,0,99,140,255,255,231,36, + 4,0,165,36,0,0,98,148,0,0,0,0, + 1,0,66,48,228,255,64,16,0,0,0,0, + 0,0,195,172,42,16,7,0,8,0,224,3, + 0,0,0,0,208,255,189,39,44,0,191,175, + 40,0,182,175,36,0,181,175,32,0,180,175, + 28,0,179,175,24,0,178,175,20,0,177,175, + 16,0,176,175,33,168,192,0,0,0,162,140, + 0,0,0,0,3,0,64,28,33,48,0,0, + 220,74,192,8,5,0,2,36,120,132,147,39, + 2,0,128,16,0,0,224,172,33,152,128,0, + 0,0,177,140,4,0,180,140,84,74,192,8, + 0,0,0,0,29,0,32,26,0,0,0,0, + 4,0,102,142,0,0,0,0,4,0,194,140, + 0,0,0,0,23,0,64,16,0,0,0,0, + 0,0,131,142,0,0,194,140,0,0,0,0, + 6,0,67,16,0,0,0,0,8,0,198,36, + 4,0,194,140,0,0,0,0,248,255,64,20, + 0,0,0,0,4,0,194,140,0,0,0,0, + 9,0,64,16,0,0,0,0,255,255,49,38, + 4,0,148,38,33,152,64,0,0,0,98,150, + 0,0,0,0,1,0,66,48,227,255,64,16, + 0,0,0,0,29,0,32,22,0,0,0,0, + 0,0,99,150,0,0,0,0,1,0,98,48, + 11,0,64,16,4,0,98,48,123,0,64,16, + 3,0,2,36,0,0,162,150,0,0,0,0, + 1,0,66,48,118,0,64,16,4,0,2,36, + 0,0,243,172,219,74,192,8,4,0,213,172, + 0,0,98,150,0,0,0,0,4,0,66,48, + 110,0,64,16,3,0,2,36,0,0,162,150, + 0,0,0,0,1,0,66,48,105,0,64,20, + 4,0,2,36,0,0,243,172,219,74,192,8, + 4,0,213,172,0,0,98,150,0,0,0,0, + 1,0,66,48,97,0,64,20,2,0,2,36, + 2,0,34,42,23,0,64,20,33,144,160,2, + 56,0,22,36,9,50,192,12,16,0,4,36, + 33,128,64,0,40,0,0,18,128,16,17,0, + 33,16,84,0,252,255,66,140,0,0,0,0, + 0,0,2,174,4,0,18,174,8,0,0,174, + 12,0,0,174,9,50,192,12,8,0,4,36, + 33,144,64,0,24,0,64,18,255,255,49,38, + 0,0,86,166,2,0,34,42,236,255,64,16, + 4,0,80,174,4,0,102,142,0,0,0,0, + 4,0,194,140,0,0,0,0,6,0,64,16, + 1,0,17,36,8,0,198,36,4,0,194,140, + 0,0,0,0,252,255,64,20,1,0,49,38, + 1,0,36,38,9,50,192,12,192,32,4,0, + 33,128,64,0,12,0,0,22,33,32,64,2, + 173,74,192,8,0,0,0,0,0,0,18,142, + 0,0,0,0,61,50,192,12,33,32,0,2, + 33,32,64,2,206,73,192,12,33,40,160,2, + 220,74,192,8,1,0,2,36,4,0,102,142, + 0,0,0,0,192,74,192,8,33,168,0,2, + 4,0,194,140,0,0,0,0,14,0,64,16, + 0,0,0,0,0,0,194,140,4,0,195,140, + 0,0,2,174,4,0,3,174,8,0,198,36, + 8,0,16,38,255,255,49,38,0,0,194,140, + 0,0,131,142,0,0,0,0,43,16,67,0, + 240,255,64,20,0,0,0,0,0,0,130,142, + 0,0,0,0,0,0,2,174,4,0,18,174, + 8,0,4,38,33,40,192,0,80,68,192,12, + 192,48,17,0,4,0,102,142,4,0,117,174, + 0,0,98,150,0,0,0,0,32,0,66,48, + 3,0,64,16,0,0,0,0,61,50,192,12, + 33,32,192,0,0,0,98,150,0,0,0,0, + 32,0,66,52,0,0,98,166,33,16,0,0, + 44,0,191,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 48,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,0,0,162,140,0,0,0,0, + 85,0,64,24,33,16,0,0,120,132,144,39, + 2,0,128,16,0,0,0,0,33,128,128,0, + 0,0,164,140,4,0,165,140,0,0,0,0, + 0,0,168,140,0,0,2,150,0,0,0,0, + 33,24,64,0,1,0,66,48,34,0,64,20, + 33,56,0,2,32,0,128,24,8,0,98,48, + 4,0,6,142,5,0,64,16,0,0,0,0, + 12,0,194,140,0,0,0,0,3,0,64,16, + 0,0,0,0,33,56,0,2,0,0,168,140, + 0,0,195,140,0,0,162,140,0,0,0,0, + 10,0,98,16,0,0,0,0,0,0,163,140, + 4,0,194,140,0,0,0,0,20,0,64,16, + 8,0,198,36,0,0,194,140,0,0,0,0, + 249,255,67,20,0,0,0,0,255,255,132,36, + 4,0,208,140,0,0,0,0,0,0,3,150, + 0,0,0,0,1,0,98,48,224,255,64,16, + 4,0,165,36,36,0,128,20,33,16,0,0, + 0,0,2,150,0,0,0,0,2,0,66,48, + 3,0,64,20,0,0,0,0,65,75,192,8, + 33,16,0,0,4,0,230,140,0,0,0,0, + 0,0,194,140,0,0,0,0,7,0,72,16, + 0,0,0,0,8,0,198,36,0,0,194,140, + 0,0,0,0,253,255,72,20,8,0,198,36, + 248,255,198,36,4,0,199,140,0,0,0,0, + 10,0,224,16,33,32,224,0,8,0,194,140, + 12,0,195,140,0,0,194,172,4,0,195,172, + 8,0,198,36,4,0,194,140,0,0,0,0, + 248,255,64,20,33,32,224,0,206,73,192,12, + 33,40,0,2,33,16,0,2,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 0,0,0,0,0,0,0,0,0,0,0,0, + 192,255,189,39,56,0,191,175,52,0,181,175, + 48,0,180,175,44,0,179,175,40,0,178,175, + 36,0,177,175,32,0,176,175,33,136,128,0, + 33,144,160,0,33,152,192,0,33,160,224,0, + 80,0,181,143,0,0,0,0,36,0,162,142, + 0,0,0,0,20,0,80,140,33,32,128,2, + 48,72,192,12,33,40,160,2,16,0,3,142, + 0,0,0,0,16,0,163,175,20,0,180,175, + 24,0,162,175,0,0,2,142,1,0,4,36, + 33,40,32,2,33,48,64,2,9,248,64,0, + 33,56,96,2,6,0,64,20,33,32,128,2, + 17,0,162,146,0,0,0,0,1,0,66,52, + 113,75,192,8,17,0,162,162,33,40,160,2, + 59,77,192,12,33,48,64,0,56,0,191,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,64,0,189,39,192,255,189,39, + 60,0,191,175,56,0,178,175,52,0,177,175, + 48,0,176,175,33,136,224,0,80,0,178,143, + 36,0,160,175,36,0,66,142,0,0,0,0, + 20,0,67,140,2,0,80,144,0,0,0,0, + 255,0,2,50,254,255,71,36,70,0,226,44, + 110,0,64,16,128,16,7,0,2,131,1,60, + 33,8,34,0,160,151,34,140,0,0,0,0, + 8,0,64,0,0,0,0,0,16,0,177,175, + 8,0,98,140,16,0,103,140,9,248,64,0, + 0,0,0,0,2,0,3,36,16,0,67,162, + 251,75,192,8,40,0,66,174,16,0,177,175, + 8,0,98,140,16,0,103,140,9,248,64,0, + 0,0,0,0,40,0,162,175,16,0,80,162, + 40,0,162,143,0,0,0,0,251,75,192,8, + 40,0,66,174,32,0,162,39,16,0,162,175, + 20,0,177,175,36,0,162,39,24,0,162,175, + 8,0,98,140,16,0,103,140,9,248,64,0, + 0,0,0,0,33,48,64,0,16,0,80,162, + 17,0,66,146,0,0,0,0,2,0,66,52, + 17,0,66,162,36,0,162,143,0,0,0,0, + 43,16,2,0,40,0,66,166,44,0,70,174, + 32,0,162,151,0,0,0,0,33,16,194,0, + 48,0,66,174,255,75,192,8,52,0,64,166, + 16,0,177,175,36,0,162,39,20,0,162,175, + 8,0,98,140,16,0,103,140,9,248,64,0, + 0,0,0,0,33,128,64,0,8,0,0,22, + 33,32,32,2,16,0,160,175,33,40,64,2, + 33,48,0,0,226,76,192,12,33,56,0,0, + 255,75,192,8,0,0,0,0,36,0,162,143, + 0,0,0,0,16,0,162,175,0,0,6,142, + 4,0,7,142,0,0,0,0,226,76,192,12, + 33,40,64,2,36,0,162,143,0,0,0,0, + 35,0,64,16,0,0,0,0,61,50,192,12, + 33,32,0,2,255,75,192,8,0,0,0,0, + 5,0,2,36,251,75,192,8,16,0,66,162, + 16,0,177,175,40,0,162,39,20,0,162,175, + 8,0,98,140,16,0,103,140,9,248,64,0, + 0,0,0,0,33,48,64,0,7,0,192,16, + 64,0,2,36,3,0,194,136,0,0,194,152, + 0,0,0,0,43,0,162,171,40,0,162,187, + 64,0,2,36,16,0,66,162,40,0,162,143, + 0,0,0,0,251,75,192,8,40,0,66,174, + 5,0,2,36,96,0,34,174,17,0,66,146, + 0,0,0,0,2,0,66,52,17,0,66,162, + 60,0,191,143,56,0,178,143,52,0,177,143, + 48,0,176,143,8,0,224,3,64,0,189,39, + 80,255,189,39,168,0,191,175,164,0,179,175, + 160,0,178,175,156,0,177,175,152,0,176,175, + 33,152,128,0,33,136,224,0,192,0,178,143, + 0,0,0,0,36,0,66,142,0,0,0,0, + 20,0,67,140,0,0,0,0,16,0,98,140, + 0,0,0,0,16,0,162,175,20,0,177,175, + 4,0,98,140,0,0,0,0,9,248,64,0, + 24,0,167,39,33,128,64,0,6,0,0,22, + 33,32,32,2,17,0,66,146,0,0,0,0, + 18,0,66,52,45,76,192,8,17,0,66,162, + 33,40,64,2,33,48,0,2,253,76,192,12, + 24,0,167,39,16,0,178,175,33,32,96,2, + 33,40,0,2,24,0,166,39,122,75,192,12, + 33,56,32,2,168,0,191,143,164,0,179,143, + 160,0,178,143,156,0,177,143,152,0,176,143, + 8,0,224,3,176,0,189,39,192,255,189,39, + 56,0,191,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,33,152,128,0,33,160,160,0, + 33,168,192,0,33,136,224,0,80,0,178,143, + 0,0,0,0,36,0,66,142,0,0,0,0, + 20,0,80,140,33,32,32,2,48,72,192,12, + 33,40,64,2,16,0,3,142,0,0,0,0, + 16,0,163,175,20,0,177,175,24,0,162,175, + 0,0,2,142,33,32,0,0,33,40,96,2, + 33,48,128,2,9,248,64,0,33,56,160,2, + 5,0,64,16,33,32,32,2,200,76,192,12, + 33,40,64,2,95,76,192,8,0,0,0,0, + 16,0,178,175,33,32,96,2,33,40,128,2, + 33,48,160,2,122,75,192,12,33,56,32,2, + 56,0,191,143,52,0,181,143,48,0,180,143, + 44,0,179,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,64,0,189,39, + 192,255,189,39,56,0,191,175,52,0,181,175, + 48,0,180,175,44,0,179,175,40,0,178,175, + 36,0,177,175,32,0,176,175,33,152,128,0, + 33,160,160,0,33,168,192,0,80,0,177,143, + 0,0,0,0,36,0,34,142,0,0,0,0, + 20,0,82,140,2,0,66,144,0,0,0,0, + 254,255,67,36,70,0,98,44,57,0,64,16, + 33,128,224,0,128,16,3,0,2,131,1,60, + 33,8,34,0,184,152,34,140,0,0,0,0, + 8,0,64,0,0,0,0,0,33,32,0,2, + 48,72,192,12,33,40,32,2,40,0,35,142, + 0,0,0,0,16,0,163,175,20,0,176,175, + 173,76,192,8,24,0,162,175,33,32,0,2, + 48,72,192,12,33,40,32,2,44,0,35,142, + 0,0,0,0,16,0,163,175,48,0,35,142, + 44,0,36,142,0,0,0,0,35,24,100,0, + 170,76,192,8,255,255,99,48,33,32,0,2, + 48,72,192,12,33,40,32,2,40,0,35,142, + 0,0,0,0,16,0,163,175,44,0,35,142, + 0,0,0,0,171,76,192,8,20,0,163,175, + 33,32,0,2,48,72,192,12,33,40,32,2, + 40,0,35,38,16,0,163,175,4,0,3,36, + 20,0,163,175,24,0,176,175,28,0,162,175, + 12,0,66,142,33,32,96,2,33,40,128,2, + 16,0,71,142,0,0,0,0,9,248,64,0, + 33,48,160,2,184,76,192,8,0,0,0,0, + 5,0,2,36,96,0,2,174,17,0,34,146, + 0,0,0,0,2,0,66,52,17,0,34,162, + 56,0,191,143,52,0,181,143,48,0,180,143, + 44,0,179,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,64,0,189,39, + 0,0,0,0,0,0,0,0,0,0,0,0, + 224,255,189,39,24,0,191,175,20,0,177,175, + 16,0,176,175,33,128,128,0,64,0,2,142, + 0,0,0,0,7,0,64,20,33,136,160,0, + 2,0,2,36,48,72,192,12,96,0,2,174, + 1,0,66,36,217,76,192,8,100,0,2,174, + 129,0,2,36,16,0,34,162,17,0,34,146, + 0,0,0,0,2,0,66,52,17,0,34,162, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,232,255,189,39, + 20,0,191,175,16,0,176,175,33,128,128,0, + 33,64,160,0,33,32,192,0,33,40,224,0, + 40,0,162,143,17,0,3,145,0,0,0,0, + 2,0,99,52,17,0,3,161,6,0,3,36, + 4,0,64,16,16,0,3,161,40,0,4,173, + 249,76,192,8,44,0,5,173,80,86,192,12, + 40,0,6,37,2,0,64,16,5,0,2,36, + 96,0,2,174,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,200,255,189,39, + 48,0,191,175,44,0,183,175,40,0,182,175, + 36,0,181,175,32,0,180,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,176,128,0,33,144,160,0,33,152,192,0, + 37,0,96,18,33,184,224,0,28,0,84,38, + 8,0,67,142,28,0,66,142,0,0,0,0, + 35,128,98,0,42,16,83,0,23,0,64,16, + 33,168,19,2,9,50,192,12,128,32,21,0, + 33,136,64,0,8,0,32,22,128,128,16,0, + 5,0,2,36,96,0,194,174,17,0,66,146, + 0,0,0,0,2,0,66,52,48,77,192,8, + 17,0,66,162,33,32,32,2,12,0,69,142, + 0,0,0,0,80,68,192,12,33,48,0,2, + 110,86,192,12,8,0,68,38,12,0,81,174, + 33,128,48,2,4,0,144,174,4,0,132,142, + 33,40,224,2,80,68,192,12,128,48,19,0, + 0,0,147,174,8,0,85,174,48,0,191,143, + 44,0,183,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 56,0,189,39,224,255,189,39,24,0,191,175, + 20,0,177,175,16,0,176,175,33,136,128,0, + 5,0,192,24,33,128,160,0,3,0,2,36, + 96,0,34,174,95,77,192,8,100,0,38,174, + 19,0,195,36,19,0,98,44,9,0,64,16, + 128,16,3,0,2,131,1,60,33,8,34,0, + 208,153,34,140,0,0,0,0,8,0,64,0, + 0,0,0,0,89,77,192,8,2,0,6,36, + 89,77,192,8,5,0,6,36,89,77,192,8, + 3,0,6,36,89,77,192,8,1,0,6,36, + 35,48,6,0,96,0,38,174,33,32,32,2, + 48,72,192,12,33,40,0,2,1,0,66,36, + 100,0,34,174,17,0,2,146,0,0,0,0, + 1,0,66,52,17,0,2,162,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,200,255,189,39,52,0,191,175, + 48,0,190,175,44,0,183,175,40,0,182,175, + 36,0,181,175,32,0,180,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,152,128,0,33,168,160,0,33,160,192,0, + 76,0,182,143,80,0,183,143,84,0,190,143, + 92,0,177,143,0,0,0,0,209,83,192,12, + 33,144,224,0,33,128,64,0,3,0,0,22, + 4,0,2,36,168,77,192,8,33,16,0,0, + 88,0,2,166,64,0,19,174,33,32,64,2, + 72,0,165,143,0,0,0,0,80,86,192,12, + 92,0,6,38,255,255,3,36,23,0,67,16, + 0,0,0,0,3,0,194,138,0,0,194,154, + 0,0,0,0,103,0,2,170,100,0,2,186, + 104,0,23,174,108,0,30,174,88,0,168,143, + 0,0,0,0,112,0,8,174,72,0,0,166, + 76,0,20,174,255,255,162,50,33,16,130,2, + 80,0,2,174,84,0,0,166,9,0,32,18, + 120,0,17,174,224,83,192,12,33,32,32,2, + 6,0,64,20,124,0,2,174,167,83,192,12, + 33,32,0,2,168,77,192,8,33,16,0,0, + 124,0,0,174,33,16,0,2,52,0,191,143, + 48,0,190,143,44,0,183,143,40,0,182,143, + 36,0,181,143,32,0,180,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,56,0,189,39,224,255,189,39, + 28,0,191,175,24,0,178,175,20,0,177,175, + 16,0,176,175,33,144,128,0,92,0,68,142, + 128,86,192,12,0,0,0,0,96,0,68,142, + 0,0,0,0,128,86,192,12,33,128,64,0, + 100,0,68,142,0,0,0,0,128,86,192,12, + 33,136,64,0,33,128,17,2,6,0,16,38, + 33,16,80,0,90,0,66,166,191,79,192,12, + 104,0,68,38,255,255,67,48,90,0,68,150, + 128,0,98,44,5,0,64,20,2,0,130,36, + 0,1,98,44,2,0,64,20,3,0,130,36, + 4,0,130,36,33,16,67,0,90,0,66,166, + 80,0,66,142,76,0,67,142,90,0,80,150, + 64,0,68,142,0,0,0,0,128,86,192,12, + 35,136,67,0,255,255,67,48,90,0,68,150, + 0,0,0,0,128,0,130,44,9,0,64,20, + 0,1,130,44,4,0,64,16,0,0,0,0, + 33,24,112,0,237,77,192,8,6,0,99,36, + 33,24,112,0,237,77,192,8,7,0,99,36, + 33,24,112,0,5,0,99,36,255,255,36,50, + 128,0,130,44,5,0,64,20,1,0,130,36, + 0,1,130,44,2,0,64,20,2,0,130,36, + 3,0,130,36,33,16,98,0,2,0,66,166, + 2,0,67,150,2,0,68,150,0,0,0,0, + 128,0,130,44,6,0,64,20,1,0,99,36, + 0,1,130,44,4,0,64,20,2,0,98,36, + 3,78,192,8,3,0,98,36,1,0,98,36, + 0,0,66,166,0,0,66,150,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,216,255,189,39, + 32,0,191,175,28,0,179,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,152,128,0, + 171,86,192,12,92,0,100,38,104,0,100,142, + 0,0,0,0,128,86,192,12,33,144,64,0, + 108,0,100,142,0,0,0,0,128,86,192,12, + 33,136,64,0,112,0,100,142,0,0,0,0, + 153,86,192,12,33,128,64,0,10,0,82,38, + 33,136,50,2,33,128,17,2,4,0,16,38, + 33,16,80,0,90,0,98,166,191,79,192,12, + 116,0,100,38,255,255,67,48,90,0,100,150, + 128,0,98,44,5,0,64,20,2,0,130,36, + 0,1,98,44,2,0,64,20,3,0,130,36, + 4,0,130,36,33,16,67,0,90,0,98,166, + 80,0,98,142,76,0,99,142,90,0,113,150, + 64,0,100,142,0,0,0,0,128,86,192,12, + 35,128,67,0,255,255,67,48,90,0,100,150, + 0,0,0,0,128,0,130,44,9,0,64,20, + 0,1,130,44,4,0,64,16,0,0,0,0, + 33,24,113,0,74,78,192,8,6,0,99,36, + 33,24,113,0,74,78,192,8,7,0,99,36, + 33,24,113,0,5,0,99,36,255,255,4,50, + 128,0,130,44,5,0,64,20,1,0,130,36, + 0,1,130,44,2,0,64,20,2,0,130,36, + 3,0,130,36,33,16,98,0,2,0,98,166, + 2,0,99,150,2,0,100,150,0,0,0,0, + 128,0,130,44,6,0,64,20,1,0,99,36, + 0,1,130,44,4,0,64,20,2,0,112,36, + 96,78,192,8,3,0,112,36,1,0,112,36, + 255,255,2,50,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,208,255,189,39, + 40,0,191,175,36,0,179,175,32,0,178,175, + 28,0,177,175,24,0,176,175,33,128,128,0, + 33,152,192,0,33,144,224,0,33,136,160,0, + 16,0,4,36,32,0,5,36,1,131,6,60, + 56,97,198,36,242,86,192,12,33,56,0,2, + 255,255,36,50,1,131,5,60,56,97,165,36, + 44,87,192,12,33,48,0,2,16,0,176,175, + 2,0,4,36,33,40,0,0,1,131,7,60, + 56,97,231,36,94,87,192,12,33,48,96,2, + 8,0,71,142,4,0,66,142,0,0,0,0, + 35,56,226,0,1,131,2,60,56,97,66,36, + 16,0,162,175,20,0,176,175,4,0,4,36, + 33,40,0,0,4,0,70,142,0,0,0,0, + 194,87,192,12,255,255,231,48,40,0,191,143, + 36,0,179,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,48,0,189,39, + 216,255,189,39,36,0,191,175,32,0,178,175, + 28,0,177,175,24,0,176,175,33,128,128,0, + 33,136,160,0,88,0,4,150,160,0,5,36, + 1,131,6,60,56,97,198,36,242,86,192,12, + 33,56,32,2,90,0,4,150,1,131,5,60, + 56,97,165,36,44,87,192,12,33,48,32,2, + 16,0,177,175,6,0,4,36,33,40,0,0, + 1,131,7,60,56,97,231,36,15,88,192,12, + 92,0,6,38,1,131,18,60,56,97,82,38, + 16,0,178,175,20,0,177,175,33,32,0,0, + 64,0,5,36,100,0,6,38,194,87,192,12, + 4,0,7,36,16,0,177,175,2,0,4,36, + 33,40,0,0,104,0,6,142,0,0,0,0, + 94,87,192,12,33,56,64,2,16,0,177,175, + 2,0,4,36,33,40,0,0,108,0,6,142, + 0,0,0,0,94,87,192,12,33,56,64,2, + 16,0,177,175,3,0,4,36,64,0,5,36, + 112,0,6,142,0,0,0,0,143,87,192,12, + 33,56,64,2,116,0,4,38,7,79,192,12, + 33,40,32,2,36,0,191,143,32,0,178,143, + 28,0,177,143,24,0,176,143,8,0,224,3, + 40,0,189,39,216,255,189,39,32,0,191,175, + 28,0,177,175,24,0,176,175,33,128,128,0, + 33,136,160,0,88,0,4,150,160,0,5,36, + 1,131,6,60,56,97,198,36,242,86,192,12, + 33,56,32,2,90,0,4,150,1,131,5,60, + 56,97,165,36,44,87,192,12,33,48,32,2, + 16,0,177,175,2,0,4,36,92,0,6,142, + 1,131,7,60,56,97,231,36,94,87,192,12, + 33,40,0,0,16,0,177,175,2,0,4,36, + 96,0,6,142,1,131,7,60,56,97,231,36, + 94,87,192,12,33,40,0,0,16,0,177,175, + 2,0,4,36,100,0,6,142,1,131,7,60, + 56,97,231,36,94,87,192,12,33,40,0,0, + 104,0,4,38,7,79,192,12,33,40,32,2, + 32,0,191,143,28,0,177,143,24,0,176,143, + 8,0,224,3,40,0,189,39,200,255,189,39, + 52,0,191,175,48,0,180,175,44,0,179,175, + 40,0,178,175,36,0,177,175,32,0,176,175, + 33,144,128,0,33,136,160,0,16,0,4,36, + 32,0,5,36,1,131,6,60,56,97,198,36, + 242,86,192,12,33,56,32,2,0,0,68,150, + 1,131,5,60,56,97,165,36,44,87,192,12, + 33,48,32,2,155,0,64,18,0,0,0,0, + 1,131,20,60,56,97,148,38,8,0,80,142, + 0,0,0,0,145,0,0,18,0,0,0,0, + 4,0,66,142,0,0,0,0,141,0,64,24, + 33,152,0,0,16,0,4,36,32,0,5,36, + 33,48,128,2,242,86,192,12,33,56,32,2, + 4,0,4,150,33,40,128,2,44,87,192,12, + 33,48,32,2,16,0,177,175,6,0,4,36, + 33,40,0,0,8,0,6,38,15,88,192,12, + 33,56,128,2,16,0,3,146,65,0,2,36, + 47,0,98,16,66,0,98,40,18,0,64,16, + 5,0,2,36,88,0,98,16,6,0,98,40, + 7,0,64,16,2,0,2,36,30,0,98,16, + 4,0,2,36,51,0,98,16,4,0,4,36, + 174,79,192,8,1,0,115,38,6,0,2,36, + 68,0,98,16,64,0,2,36,78,0,98,16, + 33,32,0,0,174,79,192,8,1,0,115,38, + 68,0,2,36,47,0,98,16,69,0,98,40, + 7,0,64,16,66,0,2,36,24,0,98,16, + 67,0,2,36,25,0,98,16,3,0,4,36, + 174,79,192,8,1,0,115,38,131,0,98,40, + 83,0,64,16,128,0,98,40,68,0,64,16, + 0,0,0,0,174,79,192,8,1,0,115,38, + 16,0,177,175,2,0,4,36,40,0,6,142, + 1,131,7,60,56,97,231,36,94,87,192,12, + 33,40,0,0,174,79,192,8,1,0,115,38, + 16,0,177,175,111,79,192,8,1,0,4,36, + 16,0,177,175,111,79,192,8,2,0,4,36, + 16,0,177,175,40,0,6,142,1,131,7,60, + 56,97,231,36,143,87,192,12,64,0,5,36, + 174,79,192,8,1,0,115,38,48,0,7,142, + 44,0,2,142,0,0,0,0,35,56,226,0, + 16,0,180,175,20,0,177,175,134,79,192,8, + 33,40,0,0,48,0,7,142,44,0,2,142, + 0,0,0,0,35,56,226,0,16,0,180,175, + 20,0,177,175,4,0,4,36,64,0,5,36, + 44,0,6,142,0,0,0,0,194,87,192,12, + 255,255,231,48,174,79,192,8,1,0,115,38, + 16,0,177,175,6,0,4,36,33,40,0,0, + 1,131,7,60,56,97,231,36,15,88,192,12, + 40,0,6,38,174,79,192,8,1,0,115,38, + 5,0,4,36,164,79,192,8,33,40,0,0, + 16,0,180,175,20,0,177,175,64,0,5,36, + 40,0,6,38,194,87,192,12,4,0,7,36, + 174,79,192,8,1,0,115,38,16,0,4,146, + 16,0,5,146,31,0,132,48,224,0,165,48, + 1,131,6,60,56,97,198,36,242,86,192,12, + 33,56,32,2,33,32,0,0,1,131,5,60, + 56,97,165,36,44,87,192,12,33,48,32,2, + 1,0,115,38,4,0,66,142,0,0,0,0, + 42,16,98,2,117,255,64,20,68,0,16,38, + 12,0,82,142,0,0,0,0,105,255,64,22, + 0,0,0,0,52,0,191,143,48,0,180,143, + 44,0,179,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,56,0,189,39, + 200,255,189,39,52,0,191,175,48,0,182,175, + 44,0,181,175,40,0,180,175,36,0,179,175, + 32,0,178,175,28,0,177,175,24,0,176,175, + 33,168,128,0,33,152,160,2,113,0,160,18, + 33,144,0,0,4,0,22,36,8,0,112,142, + 0,0,0,0,104,0,0,18,0,0,0,0, + 4,0,98,142,0,0,0,0,100,0,64,24, + 33,160,0,0,171,86,192,12,8,0,4,38, + 255,255,67,48,128,0,98,44,5,0,64,20, + 2,0,113,36,0,1,98,44,2,0,64,20, + 3,0,113,36,4,0,113,36,16,0,3,146, + 64,0,2,36,50,0,98,16,65,0,98,40, + 16,0,64,16,68,0,2,36,34,0,118,16, + 5,0,98,40,5,0,64,16,2,0,2,36, + 20,0,98,16,255,255,36,50,22,80,192,8, + 0,0,0,0,5,0,2,36,35,0,98,16, + 6,0,2,36,29,0,98,16,255,255,36,50, + 22,80,192,8,0,0,0,0,19,0,98,16, + 68,0,98,40,12,0,64,20,131,0,98,40, + 28,0,64,16,128,0,98,40,27,0,64,20, + 255,255,36,50,22,80,192,8,18,0,0,166, + 40,0,4,142,128,86,192,12,0,0,0,0, + 21,80,192,8,18,0,2,166,40,0,4,142, + 153,86,192,12,0,0,0,0,21,80,192,8, + 18,0,2,166,48,0,2,142,44,0,3,142, + 0,0,0,0,35,16,67,0,21,80,192,8, + 18,0,2,166,171,86,192,12,40,0,4,38, + 21,80,192,8,18,0,2,166,21,80,192,8, + 18,0,0,166,18,0,22,166,255,255,36,50, + 18,0,3,150,0,0,0,0,128,0,98,44, + 6,0,64,20,1,0,132,36,0,1,98,44, + 4,0,64,20,2,0,98,36,33,80,192,8, + 3,0,98,36,1,0,98,36,33,16,130,0, + 4,0,2,166,4,0,4,150,0,0,0,0, + 1,0,132,36,4,0,3,150,0,0,0,0, + 128,0,98,44,6,0,64,20,255,255,69,50, + 0,1,98,44,4,0,64,20,2,0,162,36, + 49,80,192,8,3,0,162,36,1,0,162,36, + 33,144,68,0,1,0,148,38,4,0,98,142, + 0,0,0,0,42,16,130,2,158,255,64,20, + 68,0,16,38,12,0,115,142,0,0,0,0, + 146,255,96,22,0,0,0,0,0,0,178,166, + 255,255,66,50,52,0,191,143,48,0,182,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,56,0,189,39,224,255,189,39, + 24,0,191,175,20,0,177,175,16,0,176,175, + 33,128,128,0,171,86,192,12,8,0,4,38, + 255,255,67,48,128,0,98,44,5,0,64,20, + 2,0,113,36,0,1,98,44,2,0,64,20, + 3,0,113,36,4,0,113,36,16,0,3,146, + 64,0,2,36,52,0,98,16,65,0,98,40, + 17,0,64,16,4,0,2,36,37,0,98,16, + 0,0,0,0,5,0,98,40,5,0,64,16, + 2,0,2,36,22,0,98,16,255,255,36,50, + 145,80,192,8,0,0,0,0,5,0,2,36, + 36,0,98,16,6,0,2,36,30,0,98,16, + 255,255,36,50,145,80,192,8,0,0,0,0, + 68,0,2,36,20,0,98,16,0,0,0,0, + 68,0,98,40,12,0,64,20,131,0,98,40, + 28,0,64,16,128,0,98,40,27,0,64,20, + 255,255,36,50,145,80,192,8,18,0,0,166, + 40,0,4,142,128,86,192,12,0,0,0,0, + 144,80,192,8,18,0,2,166,40,0,4,142, + 153,86,192,12,0,0,0,0,144,80,192,8, + 18,0,2,166,48,0,2,142,44,0,3,142, + 0,0,0,0,143,80,192,8,35,16,67,0, + 171,86,192,12,40,0,4,38,144,80,192,8, + 18,0,2,166,144,80,192,8,18,0,0,166, + 4,0,2,36,18,0,2,166,255,255,36,50, + 18,0,3,150,0,0,0,0,128,0,98,44, + 6,0,64,20,1,0,132,36,0,1,98,44, + 4,0,64,20,2,0,98,36,156,80,192,8, + 3,0,98,36,1,0,98,36,33,16,130,0, + 4,0,2,166,4,0,3,150,4,0,4,150, + 0,0,0,0,128,0,130,44,6,0,64,20, + 1,0,99,36,0,1,130,44,4,0,64,20, + 2,0,98,36,170,80,192,8,3,0,98,36, + 1,0,98,36,255,255,66,48,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,16,0,191,175, + 64,0,130,140,0,0,0,0,12,0,64,20, + 33,16,0,0,88,0,131,148,4,0,2,36, + 5,0,98,16,0,0,0,0,180,77,192,12, + 0,0,0,0,193,80,192,8,255,255,66,48, + 11,78,192,12,0,0,0,0,255,255,66,48, + 16,0,191,143,24,0,189,39,8,0,224,3, + 0,0,0,0,224,255,189,39,24,0,191,175, + 20,0,177,175,16,0,176,175,33,128,128,0, + 176,80,192,12,33,136,160,0,33,32,0,2, + 33,40,32,2,213,80,192,12,255,255,70,48, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,224,255,189,39, + 28,0,191,175,24,0,178,175,20,0,177,175, + 16,0,176,175,33,144,128,0,33,136,192,0, + 255,255,34,50,41,0,64,16,33,128,160,0, + 4,0,2,142,0,0,0,0,11,0,64,20, + 255,255,35,50,9,50,192,12,255,255,36,50, + 33,24,64,0,32,0,96,16,1,0,2,36, + 0,0,2,166,4,0,3,174,8,0,3,174, + 242,80,192,8,12,0,17,166,12,0,2,150, + 0,0,0,0,43,16,67,0,23,0,64,20, + 255,255,2,36,64,0,66,142,0,0,0,0, + 19,0,64,20,255,255,2,36,33,32,0,2, + 2,0,69,150,33,48,0,0,104,78,192,12, + 72,0,71,38,88,0,67,150,4,0,2,36, + 5,0,98,16,33,32,64,2,217,78,192,12, + 33,40,0,2,8,81,192,8,33,16,0,0, + 153,78,192,12,33,40,0,2,8,81,192,8, + 33,16,0,0,255,255,2,36,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,0,0,0,0, + 0,0,0,0,168,255,189,39,80,0,191,175, + 76,0,183,175,72,0,182,175,68,0,181,175, + 64,0,180,175,60,0,179,175,56,0,178,175, + 52,0,177,175,48,0,176,175,33,24,128,0, + 33,152,160,0,33,176,192,0,33,184,224,0, + 104,0,162,143,0,0,0,0,2,0,64,20, + 44,0,160,175,40,0,162,39,0,0,64,172, + 24,0,164,39,33,40,96,0,156,88,192,12, + 33,48,96,2,33,136,64,0,82,0,32,18, + 33,16,0,0,209,83,192,12,0,0,0,0, + 33,144,64,0,5,0,64,22,1,0,2,36, + 183,88,192,12,33,32,32,2,124,81,192,8, + 33,16,0,0,148,0,66,162,196,88,192,12, + 33,32,32,2,224,0,85,48,44,0,176,39, + 33,32,32,2,124,89,192,12,33,40,0,2, + 33,160,64,0,33,32,32,2,198,89,192,12, + 33,40,0,2,2,0,66,166,44,0,162,143, + 0,0,0,0,14,0,64,20,0,0,0,0, + 8,0,35,142,4,0,34,142,0,0,0,0, + 35,128,98,0,2,0,66,150,0,0,0,0, + 33,128,2,2,42,16,19,2,16,0,64,20, + 33,32,32,2,42,16,112,2,16,0,64,16, + 0,0,0,0,167,83,192,12,33,32,64,2, + 183,88,192,12,33,32,32,2,3,131,3,60, + 140,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,124,81,192,8, + 33,16,0,0,33,40,0,2,42,89,192,12, + 33,48,0,0,255,0,162,50,255,255,131,50, + 37,16,67,0,48,0,3,36,8,0,67,20, + 33,32,64,2,16,0,176,175,33,40,32,2, + 33,48,192,2,135,81,192,12,33,56,224,2, + 117,81,192,8,33,128,64,0,3,131,3,60, + 140,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,33,128,0,0, + 3,0,0,22,0,0,0,0,167,83,192,12, + 33,32,64,2,183,88,192,12,33,32,32,2, + 33,16,0,2,80,0,191,143,76,0,183,143, + 72,0,182,143,68,0,181,143,64,0,180,143, + 60,0,179,143,56,0,178,143,52,0,177,143, + 48,0,176,143,8,0,224,3,88,0,189,39, + 176,255,189,39,76,0,191,175,72,0,182,175, + 68,0,181,175,64,0,180,175,60,0,179,175, + 56,0,178,175,52,0,177,175,48,0,176,175, + 33,128,128,0,33,136,160,0,33,160,192,0, + 33,168,224,0,96,0,182,143,24,0,160,175, + 33,32,32,2,24,0,165,39,2,0,6,36, + 239,90,192,12,33,56,0,0,64,0,2,174, + 24,0,162,143,0,0,0,0,155,0,64,20, + 0,0,0,0,64,0,2,142,0,0,0,0, + 4,0,64,16,33,32,32,2,3,131,3,60, + 60,82,192,8,148,17,99,36,16,0,160,175, + 72,0,5,38,24,0,166,39,110,90,192,12, + 4,0,7,36,24,0,162,143,0,0,0,0, + 139,0,64,20,0,0,0,0,196,88,192,12, + 33,32,32,2,224,0,66,48,160,0,3,36, + 133,0,67,20,33,32,32,2,124,89,192,12, + 24,0,165,39,33,144,64,0,33,32,32,2, + 198,89,192,12,24,0,165,39,33,152,64,0, + 24,0,162,143,0,0,0,0,122,0,64,20, + 0,0,0,0,255,255,66,50,5,0,66,44, + 118,0,64,16,0,0,0,0,8,0,34,142, + 4,0,35,142,0,0,0,0,35,16,67,0, + 255,255,99,50,33,16,67,0,110,0,194,22, + 33,32,0,2,88,0,18,166,90,0,19,166, + 33,40,128,2,178,50,192,12,33,48,160,2, + 118,0,64,20,33,16,0,0,255,255,67,50, + 4,0,2,36,24,0,98,16,33,32,32,2, + 24,0,165,39,2,0,6,36,239,90,192,12, + 33,56,0,0,92,0,2,174,33,32,32,2, + 24,0,165,39,2,0,6,36,239,90,192,12, + 33,56,0,0,96,0,2,174,33,32,32,2, + 24,0,165,39,2,0,6,36,239,90,192,12, + 33,56,0,0,100,0,2,174,24,0,162,143, + 0,0,0,0,78,0,64,20,33,32,32,2, + 67,82,192,8,104,0,5,38,4,0,2,36, + 88,0,2,166,90,0,19,166,124,0,0,174, + 16,0,160,175,92,0,5,38,24,0,166,39, + 186,91,192,12,6,0,7,36,24,0,162,143, + 0,0,0,0,63,0,64,20,100,0,4,38, + 33,40,0,0,144,71,192,12,4,0,6,36, + 32,0,160,167,40,0,160,175,36,0,160,175, + 44,0,160,167,32,0,178,39,64,0,2,36, + 16,0,162,175,33,32,32,2,33,40,64,2, + 24,0,166,39,110,90,192,12,33,56,0,0, + 24,0,162,143,0,0,0,0,5,0,64,16, + 0,0,0,0,24,92,192,12,33,32,64,2, + 58,82,192,8,0,0,0,0,40,0,162,143, + 36,0,163,143,0,0,0,0,35,16,67,0, + 255,255,70,48,5,0,194,44,2,0,64,20, + 0,0,0,0,4,0,6,36,8,0,192,16, + 33,32,32,2,36,0,165,143,0,0,0,0, + 80,68,192,12,100,0,4,38,24,92,192,12, + 32,0,164,39,33,32,32,2,24,0,165,39, + 2,0,6,36,239,90,192,12,33,56,0,0, + 104,0,2,174,33,32,32,2,24,0,165,39, + 2,0,6,36,239,90,192,12,33,56,0,0, + 108,0,2,174,33,32,32,2,24,0,165,39, + 3,0,6,36,239,90,192,12,64,0,7,36, + 112,0,2,174,24,0,162,143,0,0,0,0, + 9,0,64,16,33,32,32,2,3,131,3,60, + 140,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,73,82,192,8, + 33,16,0,0,116,0,5,38,33,48,192,2, + 163,82,192,12,33,56,0,2,255,255,3,36, + 248,255,67,16,33,16,0,2,76,0,191,143, + 72,0,182,143,68,0,181,143,64,0,180,143, + 60,0,179,143,56,0,178,143,52,0,177,143, + 48,0,176,143,8,0,224,3,80,0,189,39, + 184,255,189,39,64,0,191,175,60,0,183,175, + 56,0,182,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,33,128,128,0,16,0,160,175, + 8,0,2,142,4,0,3,142,0,0,0,0, + 35,184,67,0,33,144,0,0,255,255,162,48, + 45,0,64,16,33,136,0,0,3,131,19,60, + 140,17,115,38,255,255,22,36,255,255,181,48, + 8,0,3,142,4,0,2,142,0,0,0,0, + 35,160,98,0,0,0,2,146,0,0,0,0, + 128,0,66,48,32,0,64,20,33,32,0,2, + 124,89,192,12,16,0,165,39,33,32,0,2, + 198,89,192,12,16,0,165,39,33,40,64,0, + 16,0,162,143,0,0,0,0,6,0,64,20, + 33,32,0,2,255,255,165,48,251,88,192,12, + 1,0,6,36,7,0,86,20,0,0,0,0, + 0,0,98,142,0,0,0,0,1,0,66,36, + 0,0,98,174,147,82,192,8,255,255,17,36, + 8,0,2,142,4,0,3,142,0,0,0,0, + 35,16,67,0,33,16,66,2,35,144,84,0, + 255,255,66,50,43,16,85,0,217,255,64,20, + 1,0,49,38,33,32,0,2,33,40,224,2, + 251,88,192,12,33,48,0,0,33,16,32,2, + 64,0,191,143,60,0,183,143,56,0,182,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,72,0,189,39,192,255,189,39, + 56,0,191,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,33,144,128,0,33,152,160,0, + 33,168,224,0,16,0,160,175,124,89,192,12, + 16,0,165,39,33,32,64,2,198,89,192,12, + 16,0,165,39,0,0,98,166,16,0,162,143, + 0,0,0,0,28,0,64,20,0,0,0,0, + 12,0,66,142,8,0,67,142,0,0,0,0, + 35,16,67,0,0,0,99,150,255,255,66,48, + 20,0,98,20,0,0,0,0,4,0,96,174, + 0,0,101,150,0,0,0,0,83,82,192,12, + 33,32,64,2,33,32,64,0,255,255,2,36, + 46,0,130,16,0,0,0,0,3,0,128,20, + 0,0,0,0,246,82,192,8,8,0,96,174, + 224,83,192,12,4,0,100,174,10,0,64,20, + 8,0,98,174,247,82,192,8,255,255,2,36, + 3,131,3,60,140,17,99,36,0,0,98,140, + 0,0,0,0,1,0,66,36,210,82,192,8, + 0,0,98,172,8,0,112,142,4,0,98,142, + 0,0,0,0,23,0,64,24,33,136,0,0, + 255,255,20,36,33,32,64,2,124,89,192,12, + 16,0,165,39,33,32,64,2,198,89,192,12, + 16,0,165,39,4,0,2,166,16,0,162,143, + 0,0,0,0,233,255,64,20,33,32,64,2, + 33,40,0,2,0,83,192,12,33,48,160,2, + 226,255,84,16,1,0,49,38,4,0,98,142, + 0,0,0,0,42,16,34,2,236,255,64,20, + 68,0,16,38,33,16,0,0,56,0,191,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,64,0,189,39,184,255,189,39, + 68,0,191,175,64,0,180,175,60,0,179,175, + 56,0,178,175,52,0,177,175,48,0,176,175, + 33,128,128,0,33,144,160,0,24,0,160,175, + 16,0,160,175,8,0,69,38,24,0,166,39, + 186,91,192,12,6,0,7,36,24,0,162,143, + 0,0,0,0,103,0,64,20,0,0,0,0, + 196,88,192,12,33,32,0,2,224,0,84,48, + 33,32,0,2,124,89,192,12,24,0,165,39, + 33,152,64,0,33,32,0,2,198,89,192,12, + 24,0,165,39,33,136,64,0,24,0,162,143, + 0,0,0,0,88,0,64,20,37,16,116,2, + 18,0,81,166,16,0,66,162,16,0,67,146, + 64,0,2,36,48,0,98,16,65,0,98,40, + 16,0,64,16,4,0,2,36,31,0,98,16, + 5,0,98,40,5,0,64,16,2,0,2,36, + 22,0,98,16,33,32,0,2,121,83,192,8, + 0,0,0,0,5,0,2,36,65,0,98,16, + 6,0,2,36,27,0,98,16,33,32,0,2, + 121,83,192,8,0,0,0,0,68,0,2,36, + 15,0,98,16,68,0,98,40,8,0,64,20, + 33,32,0,2,131,0,98,40,57,0,64,16, + 128,0,98,40,51,0,64,16,0,0,0,0, + 121,83,192,8,0,0,0,0,255,255,37,50, + 164,90,192,12,24,0,166,39,117,83,192,8, + 40,0,66,174,33,32,0,2,255,255,37,50, + 40,0,70,38,19,90,192,12,24,0,167,39, + 117,83,192,8,0,0,0,0,255,255,37,50, + 40,0,70,38,24,91,192,12,24,0,167,39, + 117,83,192,8,0,0,0,0,40,0,68,38, + 33,40,0,0,144,71,192,12,4,0,6,36, + 32,0,160,167,40,0,160,175,36,0,160,175, + 44,0,160,167,33,32,0,2,255,255,37,50, + 32,0,166,39,19,90,192,12,24,0,167,39, + 40,0,162,143,36,0,163,143,0,0,0,0, + 35,16,67,0,255,255,70,48,5,0,194,44, + 2,0,64,20,0,0,0,0,4,0,6,36, + 7,0,192,16,0,0,0,0,36,0,165,143, + 0,0,0,0,80,68,192,12,40,0,68,38, + 24,92,192,12,32,0,164,39,24,0,162,143, + 0,0,0,0,8,0,64,16,33,16,0,0, + 3,131,3,60,140,17,99,36,0,0,98,140, + 0,0,0,0,1,0,66,36,0,0,98,172, + 255,255,2,36,68,0,191,143,64,0,180,143, + 60,0,179,143,56,0,178,143,52,0,177,143, + 48,0,176,143,8,0,224,3,72,0,189,39, + 232,255,189,39,20,0,191,175,16,0,176,175, + 33,128,128,0,76,0,2,142,0,0,0,0, + 3,0,64,16,0,0,0,0,24,92,192,12, + 72,0,4,38,88,0,3,150,4,0,2,36, + 5,0,98,20,0,0,0,0,110,86,192,12, + 92,0,4,38,157,83,192,8,116,0,4,38, + 13,84,192,12,104,0,4,38,120,0,4,38, + 13,84,192,12,0,0,0,0,148,0,3,146, + 0,0,0,0,248,83,192,12,33,32,0,2, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,33,128,128,0,5,0,0,18, + 0,0,0,0,136,83,192,12,0,0,0,0, + 61,50,192,12,33,32,0,2,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 224,255,189,39,24,0,191,175,20,0,177,175, + 16,0,176,175,33,136,128,0,9,50,192,12, + 16,0,4,36,33,128,64,0,11,0,0,18, + 33,32,0,2,33,40,0,0,144,71,192,12, + 16,0,6,36,224,83,192,12,33,32,32,2, + 4,0,64,16,8,0,2,174,4,0,17,174, + 204,83,192,8,33,16,0,2,61,50,192,12, + 33,32,0,2,33,16,0,0,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,9,50,192,12,152,0,4,36, + 33,128,64,0,4,0,0,18,33,16,0,0, + 248,83,192,12,33,32,0,2,33,16,0,2, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,224,255,189,39,24,0,191,175, + 20,0,177,175,0,17,4,0,33,16,68,0, + 128,136,2,0,11,0,32,18,16,0,176,175, + 9,50,192,12,33,32,32,2,33,128,64,0, + 4,0,0,18,33,32,0,2,33,40,0,0, + 144,71,192,12,33,48,32,2,243,83,192,8, + 33,16,0,2,33,16,0,0,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,33,128,128,0,33,40,0,0, + 144,71,192,12,152,0,6,36,255,0,2,36, + 88,0,2,166,120,5,2,36,58,0,2,166, + 72,0,0,166,80,0,0,174,76,0,0,174, + 84,0,0,166,148,0,0,162,149,0,0,162, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,208,255,189,39,40,0,191,175, + 36,0,179,175,32,0,178,175,28,0,177,175, + 24,0,176,175,33,128,128,0,31,0,0,18, + 1,0,19,36,8,0,18,142,0,0,0,0, + 16,0,64,18,0,0,0,0,4,0,2,142, + 0,0,0,0,9,0,64,24,33,136,0,0, + 59,84,192,12,33,32,64,2,1,0,49,38, + 4,0,2,142,0,0,0,0,42,16,34,2, + 249,255,64,20,68,0,82,38,8,0,4,142, + 61,50,192,12,0,0,0,0,12,0,17,142, + 4,0,96,18,0,0,0,0,33,152,0,0, + 49,84,192,8,4,0,0,174,61,50,192,12, + 33,32,0,2,33,128,32,2,227,255,0,22, + 0,0,0,0,40,0,191,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,48,0,189,39,232,255,189,39, + 20,0,191,175,16,0,176,175,33,128,128,0, + 60,0,2,142,0,0,0,0,4,0,64,16, + 0,0,0,0,9,248,64,0,0,0,0,0, + 60,0,0,174,110,86,192,12,8,0,4,38, + 78,84,192,12,33,32,0,2,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 232,255,189,39,16,0,191,175,16,0,131,144, + 6,0,2,36,18,0,98,16,7,0,98,40, + 5,0,64,16,4,0,2,36,6,0,98,16, + 0,0,0,0,103,84,192,8,0,0,0,0, + 68,0,2,36,11,0,98,20,0,0,0,0, + 44,0,130,140,0,0,0,0,7,0,64,16, + 0,0,0,0,24,92,192,12,40,0,132,36, + 103,84,192,8,0,0,0,0,110,86,192,12, + 40,0,132,36,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,0,0,0,0, + 216,255,189,39,32,0,191,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,136,192,0,56,0,179,143,0,0,0,0, + 20,72,192,12,33,144,224,0,33,128,64,0, + 11,0,0,18,33,32,32,2,33,40,64,2, + 80,86,192,12,8,0,6,38,255,255,3,36, + 5,0,67,16,2,0,2,36,16,0,2,162, + 40,0,19,174,133,84,192,8,33,16,0,0, + 255,255,2,36,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,216,255,189,39, + 32,0,191,175,28,0,177,175,24,0,176,175, + 33,128,128,0,96,0,5,174,100,0,6,174, + 128,0,2,142,0,0,0,0,11,0,64,16, + 0,0,0,0,13,84,192,12,104,0,4,38, + 124,0,2,142,0,0,0,0,108,0,2,174, + 128,0,2,142,0,0,0,0,112,0,2,174, + 128,0,0,174,124,0,0,174,88,0,17,150, + 2,0,2,36,88,0,2,166,176,80,192,12, + 33,32,0,2,33,56,64,0,64,0,2,142, + 0,0,0,0,35,0,64,20,255,255,35,50, + 3,0,2,36,14,0,98,16,255,255,227,48, + 58,0,2,150,0,0,0,0,43,16,67,0, + 9,0,64,16,12,0,4,38,48,0,2,142, + 28,0,5,38,52,0,7,142,0,0,0,0, + 9,248,64,0,1,0,6,36,214,84,192,8, + 0,0,0,0,96,0,2,142,0,0,0,0, + 250,255,67,36,13,0,98,44,13,0,64,16, + 128,16,3,0,2,131,1,60,33,8,34,0, + 32,154,34,140,0,0,0,0,8,0,64,0, + 0,0,0,0,204,84,192,8,2,0,2,36, + 204,84,192,8,3,0,2,36,5,0,2,36, + 96,0,2,174,52,0,2,142,0,0,0,0, + 16,0,162,175,44,0,2,142,12,0,4,38, + 28,0,5,38,33,48,0,2,9,248,64,0, + 255,255,231,48,32,0,191,143,28,0,177,143, + 24,0,176,143,8,0,224,3,40,0,189,39, + 224,255,189,39,28,0,191,175,24,0,176,175, + 33,128,128,0,96,0,5,142,0,0,0,0, + 6,0,160,16,0,0,0,0,100,0,6,142, + 140,84,192,12,0,0,0,0,56,85,192,8, + 0,0,0,0,176,80,192,12,33,32,0,2, + 33,56,64,0,88,0,2,150,0,0,0,0, + 2,0,66,44,11,0,64,16,255,255,227,48, + 58,0,2,150,0,0,0,0,43,16,67,0, + 6,0,64,16,33,32,0,2,1,0,5,36, + 140,84,192,12,33,48,0,0,56,85,192,8, + 0,0,0,0,96,0,2,142,0,0,0,0, + 49,0,64,20,2,0,2,36,88,0,3,150, + 3,0,2,36,33,0,98,16,4,0,98,40, + 7,0,64,16,2,0,98,40,41,0,64,16, + 2,0,2,36,39,0,96,4,0,0,0,0, + 13,85,192,8,0,0,0,0,5,0,2,36, + 34,0,98,20,2,0,2,36,3,131,3,60, + 236,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,104,0,4,38,25,0,128,16, + 0,0,98,172,3,131,5,60,176,17,165,36, + 0,0,162,140,108,0,3,142,0,0,0,0, + 33,16,67,0,0,0,162,172,12,0,132,140, + 0,0,0,0,248,255,128,20,2,0,2,36, + 47,85,192,8,88,0,2,166,3,131,4,60, + 236,17,132,36,0,0,130,140,0,0,0,0, + 1,0,66,36,0,0,130,172,200,255,130,140, + 108,0,3,142,0,0,0,0,33,16,67,0, + 200,255,130,172,2,0,2,36,88,0,2,166, + 52,0,2,142,0,0,0,0,16,0,162,175, + 44,0,2,142,12,0,4,38,28,0,5,38, + 33,48,0,2,9,248,64,0,255,255,231,48, + 28,0,191,143,24,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,33,128,128,0,88,0,3,150, + 1,0,2,36,25,0,98,16,2,0,98,40, + 5,0,64,16,3,0,2,36,7,0,96,16, + 0,0,0,0,116,85,192,8,0,0,0,0, + 37,0,98,16,0,0,0,0,116,85,192,8, + 0,0,0,0,112,0,4,142,108,0,3,142, + 0,0,0,0,34,0,96,16,0,0,0,0, + 17,0,130,144,0,0,0,0,2,0,66,48, + 33,0,64,16,255,255,99,36,250,255,96,20, + 68,0,132,36,116,85,192,8,0,0,0,0, + 112,0,4,142,108,0,3,142,0,0,0,0, + 8,0,96,16,0,0,0,0,17,0,130,144, + 0,0,0,0,2,0,66,48,19,0,64,16, + 255,255,99,36,250,255,96,20,68,0,132,36, + 118,93,192,12,33,32,0,2,241,255,64,28, + 255,255,66,40,7,0,64,16,0,0,0,0, + 92,85,192,8,0,0,0,0,120,94,192,12, + 33,32,0,2,5,0,64,20,0,0,0,0, + 219,84,192,12,33,32,0,2,167,83,192,12, + 33,32,0,2,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,232,255,189,39, + 20,0,191,175,16,0,176,175,33,128,128,0, + 88,0,3,150,1,0,2,36,17,0,98,16, + 2,0,98,40,5,0,64,16,3,0,2,36, + 9,0,96,16,0,0,0,0,156,85,192,8, + 0,0,0,0,13,0,98,16,5,0,2,36, + 7,0,98,16,0,0,0,0,156,85,192,8, + 0,0,0,0,60,95,192,12,33,32,0,2, + 154,85,192,8,0,0,0,0,0,93,192,12, + 33,32,0,2,154,85,192,8,0,0,0,0, + 252,93,192,12,33,32,0,2,5,0,64,20, + 0,0,0,0,60,85,192,12,33,32,0,2, + 162,85,192,8,0,0,0,0,167,83,192,12, + 33,32,0,2,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,192,255,189,39, + 60,0,191,175,56,0,182,175,52,0,181,175, + 48,0,180,175,44,0,179,175,40,0,178,175, + 36,0,177,175,32,0,176,175,33,64,128,0, + 33,136,192,0,33,152,224,0,84,0,182,143, + 88,0,181,143,92,0,180,143,80,0,178,151, + 3,131,3,60,128,17,99,36,0,0,98,140, + 0,0,0,0,1,0,66,36,0,0,98,172, + 24,0,162,39,16,0,162,175,33,32,160,0, + 16,81,192,12,33,40,0,1,33,128,64,0, + 57,0,0,18,255,255,66,50,58,0,3,150, + 0,0,0,0,43,16,67,0,2,0,64,16, + 0,0,0,0,58,0,18,166,44,0,22,174, + 48,0,21,174,52,0,20,174,24,0,162,143, + 0,0,0,0,7,0,64,16,1,0,2,36, + 219,84,192,12,33,32,0,2,167,83,192,12, + 33,32,0,2,5,86,192,8,0,0,0,0, + 88,0,3,150,0,0,0,0,16,0,98,16, + 2,0,98,40,5,0,64,16,3,0,2,36, + 9,0,96,16,0,0,0,0,244,85,192,8, + 0,0,0,0,11,0,98,16,5,0,2,36, + 31,0,98,16,0,0,0,0,244,85,192,8, + 0,0,0,0,3,131,3,60,239,85,192,8, + 184,17,99,36,3,131,3,60,239,85,192,8, + 188,17,99,36,3,131,3,60,192,17,99,36, + 0,0,98,140,0,0,0,0,1,0,66,36, + 3,86,192,8,0,0,98,172,3,131,3,60, + 140,17,99,36,0,0,98,140,0,0,0,0, + 1,0,66,36,0,0,98,172,167,83,192,12, + 33,32,0,2,33,32,32,2,33,40,96,2, + 1,0,6,36,9,248,160,2,33,56,128,2, + 5,86,192,8,0,0,0,0,124,85,192,12, + 33,32,0,2,60,0,191,143,56,0,182,143, + 52,0,181,143,48,0,180,143,44,0,179,143, + 40,0,178,143,36,0,177,143,32,0,176,143, + 8,0,224,3,64,0,189,39,232,255,189,39, + 20,0,191,175,16,0,176,175,33,128,128,0, + 213,80,192,12,255,255,198,48,53,0,64,20, + 255,255,2,36,3,131,3,60,144,17,99,36, + 0,0,98,140,0,0,0,0,1,0,66,36, + 0,0,98,172,96,0,2,142,0,0,0,0, + 32,0,64,16,4,0,2,36,92,0,98,140, + 0,0,0,0,1,0,66,36,92,0,98,172, + 96,0,2,142,0,0,0,0,255,255,67,36, + 5,0,98,44,32,0,64,16,128,16,3,0, + 2,131,1,60,33,8,34,0,88,154,34,140, + 0,0,0,0,8,0,64,0,0,0,0,0, + 3,131,3,60,70,86,192,8,204,17,99,36, + 3,131,3,60,70,86,192,8,212,17,99,36, + 3,131,3,60,70,86,192,8,216,17,99,36, + 3,131,3,60,70,86,192,8,208,17,99,36, + 3,131,3,60,70,86,192,8,220,17,99,36, + 88,0,3,150,0,0,0,0,8,0,98,20, + 33,16,0,0,3,131,3,60,240,17,99,36, + 0,0,98,140,0,0,0,0,1,0,66,36, + 0,0,98,172,33,16,0,0,20,0,191,143, + 16,0,176,143,8,0,224,3,24,0,189,39, + 0,0,0,0,224,255,189,39,28,0,191,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,144,160,0,33,128,192,0,4,0,0,174, + 14,0,128,16,0,0,4,174,128,136,4,0, + 9,50,192,12,33,32,32,2,3,0,64,20, + 4,0,2,174,104,86,192,8,255,255,2,36, + 5,0,32,18,33,40,64,2,4,0,4,142, + 0,0,0,0,80,68,192,12,33,48,32,2, + 33,16,0,0,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,20,0,191,175, + 16,0,176,175,33,128,128,0,4,0,4,142, + 0,0,0,0,4,0,128,16,0,0,0,0, + 61,50,192,12,0,0,0,0,4,0,0,174, + 0,0,0,174,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,0,0,0,0, + 0,0,0,0,11,0,128,4,128,0,130,40, + 20,0,64,20,1,0,3,36,255,127,2,36, + 42,16,68,0,16,0,64,16,2,0,3,36, + 127,0,2,60,255,255,66,52,148,86,192,8, + 42,16,68,0,128,255,130,40,9,0,64,16, + 1,0,3,36,0,128,130,40,6,0,64,16, + 2,0,3,36,128,255,2,60,42,16,130,0, + 2,0,64,20,4,0,3,36,3,0,3,36, + 8,0,224,3,33,16,96,0,128,0,130,44, + 14,0,64,20,1,0,2,36,255,127,2,36, + 43,16,68,0,9,0,64,16,127,0,2,60, + 255,255,66,52,43,16,68,0,6,0,64,16, + 3,0,2,36,4,0,128,4,5,0,2,36, + 169,86,192,8,4,0,2,36,2,0,2,36, + 8,0,224,3,0,0,0,0,4,0,135,140, + 0,0,130,140,0,0,0,0,65,0,64,16, + 33,16,0,0,0,0,227,140,4,0,231,36, + 128,16,3,0,33,16,67,0,192,16,2,0, + 0,0,227,140,0,0,0,0,33,24,67,0, + 128,0,98,44,17,0,64,20,4,0,231,36, + 0,64,98,44,15,0,64,20,2,0,5,36, + 31,0,2,60,255,255,66,52,43,16,67,0, + 7,0,64,16,255,15,2,60,255,255,66,52, + 43,16,67,0,6,0,64,20,5,0,5,36, + 204,86,192,8,4,0,5,36,204,86,192,8, + 3,0,5,36,1,0,5,36,2,0,6,36, + 0,0,130,140,0,0,0,0,42,16,194,0, + 31,0,64,16,255,255,162,48,31,0,9,60, + 255,255,41,53,255,15,8,60,255,255,8,53, + 0,0,132,140,0,0,227,140,4,0,231,36, + 128,0,98,44,16,0,64,20,255,255,165,48, + 0,64,98,44,11,0,64,20,43,16,35,1, + 7,0,64,16,43,16,3,1,3,0,64,20, + 0,0,0,0,236,86,192,8,4,0,165,36, + 236,86,192,8,5,0,165,36,236,86,192,8, + 3,0,165,36,236,86,192,8,2,0,165,36, + 1,0,165,36,1,0,198,36,42,16,196,0, + 232,255,64,20,255,255,162,48,8,0,224,3, + 0,0,0,0,208,255,189,39,40,0,191,175, + 33,72,192,0,224,0,165,48,255,255,130,48, + 31,0,66,44,7,0,64,16,33,48,160,0, + 37,16,133,0,16,0,162,163,33,32,224,0, + 16,0,165,39,38,87,192,8,1,0,6,36, + 32,0,163,39,33,40,0,0,31,0,194,52, + 24,0,162,163,255,255,130,48,8,0,64,16, + 25,0,168,39,127,0,130,48,0,0,98,160, + 1,0,99,36,255,255,130,48,194,33,2,0, + 250,255,128,20,1,0,165,36,1,0,166,36, + 33,16,160,0,255,255,66,48,2,0,66,44, + 13,0,64,20,255,255,165,36,255,255,4,52, + 255,255,99,36,0,0,98,144,0,0,0,0, + 128,0,66,52,0,0,2,161,1,0,8,37, + 33,16,160,0,255,255,66,48,2,0,66,44, + 246,255,64,16,33,40,164,0,255,255,98,144, + 0,0,0,0,0,0,2,161,33,32,224,0, + 24,0,165,39,255,255,198,48,9,248,32,1, + 0,0,0,0,40,0,191,143,48,0,189,39, + 8,0,224,3,0,0,0,0,208,255,189,39, + 40,0,191,175,33,72,160,0,255,255,130,48, + 128,0,66,44,6,0,64,16,33,64,192,0, + 16,0,164,163,33,32,0,1,16,0,165,39, + 88,87,192,8,1,0,6,36,24,0,167,39, + 32,0,165,39,255,255,130,48,7,0,64,16, + 33,24,0,0,0,0,164,160,1,0,165,36, + 255,255,130,48,2,34,2,0,251,255,128,20, + 1,0,99,36,128,0,98,52,0,0,226,160, + 1,0,231,36,1,0,102,36,33,16,96,0, + 255,255,66,48,11,0,64,16,255,255,99,36, + 255,255,4,52,255,255,165,36,0,0,162,144, + 0,0,0,0,0,0,226,160,1,0,231,36, + 33,16,96,0,255,255,66,48,248,255,64,20, + 33,24,100,0,33,32,0,1,24,0,165,39, + 255,255,198,48,9,248,32,1,0,0,0,0, + 40,0,191,143,48,0,189,39,8,0,224,3, + 0,0,0,0,200,255,189,39,48,0,191,175, + 44,0,181,175,40,0,180,175,36,0,179,175, + 32,0,178,175,28,0,177,175,24,0,176,175, + 33,136,160,0,33,144,192,0,33,152,224,0, + 72,0,180,143,33,128,128,0,128,86,192,12, + 33,32,64,2,33,168,64,0,255,255,4,50, + 192,0,37,50,33,48,96,2,242,86,192,12, + 33,56,128,2,255,255,176,50,33,32,0,2, + 33,40,96,2,44,87,192,12,33,48,128,2, + 16,0,162,39,33,24,80,0,255,255,99,36, + 6,0,98,16,0,0,114,160,16,0,162,39, + 3,146,18,0,255,255,99,36,253,255,98,20, + 0,0,114,160,33,32,128,2,16,0,165,39, + 9,248,96,2,255,255,166,50,48,0,191,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,56,0,189,39,200,255,189,39, + 48,0,191,175,44,0,181,175,40,0,180,175, + 36,0,179,175,32,0,178,175,28,0,177,175, + 24,0,176,175,33,136,160,0,33,144,192,0, + 33,160,224,0,72,0,181,143,33,128,128,0, + 153,86,192,12,33,32,64,2,33,152,64,0, + 255,255,4,50,192,0,37,50,33,48,128,2, + 242,86,192,12,33,56,160,2,255,255,112,50, + 33,32,0,2,33,40,128,2,44,87,192,12, + 33,48,160,2,16,0,162,39,33,32,80,0, + 9,0,0,18,255,255,99,38,255,255,5,52, + 255,255,132,36,0,0,146,160,2,146,18,0, + 33,16,96,0,255,255,66,48,250,255,64,20, + 33,24,101,0,33,32,160,2,16,0,165,39, + 9,248,128,2,255,255,102,50,48,0,191,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,56,0,189,39,216,255,189,39, + 32,0,191,175,28,0,179,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,152,192,0, + 56,0,178,143,60,0,177,143,33,128,224,0, + 255,255,132,48,192,0,165,48,33,48,64,2, + 242,86,192,12,33,56,32,2,255,255,16,50, + 33,32,0,2,33,40,64,2,44,87,192,12, + 33,48,32,2,4,0,0,18,33,32,32,2, + 33,40,96,2,9,248,64,2,33,48,0,2, + 32,0,191,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,224,255,189,39,24,0,191,175, + 33,72,160,0,128,0,130,44,18,0,64,20, + 33,64,192,0,0,64,130,44,13,0,64,20, + 31,0,2,60,255,255,66,52,43,16,68,0, + 7,0,64,16,255,15,2,60,255,255,66,52, + 43,16,68,0,8,0,64,20,5,0,6,36, + 250,87,192,8,4,0,6,36,250,87,192,8, + 3,0,6,36,250,87,192,8,2,0,6,36, + 1,0,6,36,255,255,194,48,16,0,163,39, + 33,40,98,0,9,0,163,16,33,56,0,0, + 16,0,163,39,255,255,165,36,127,0,130,48, + 37,16,226,0,0,0,162,160,194,33,4,0, + 250,255,163,20,128,0,7,36,33,32,0,1, + 16,0,165,39,9,248,32,1,255,255,198,48, + 24,0,191,143,32,0,189,39,8,0,224,3, + 0,0,0,0,208,255,189,39,44,0,191,175, + 40,0,182,175,36,0,181,175,32,0,180,175, + 28,0,179,175,24,0,178,175,20,0,177,175, + 16,0,176,175,33,144,160,0,33,168,192,0, + 33,160,224,0,64,0,182,143,33,136,128,0, + 4,0,179,142,0,0,0,0,171,86,192,12, + 33,32,160,2,33,128,64,0,255,255,36,50, + 192,0,69,50,33,48,128,2,242,86,192,12, + 33,56,192,2,255,255,16,50,33,32,0,2, + 33,40,128,2,44,87,192,12,33,48,192,2, + 23,0,0,18,33,40,128,2,0,0,98,142, + 4,0,115,38,128,32,2,0,33,32,130,0, + 192,32,4,0,0,0,98,142,4,0,115,38, + 33,32,130,0,226,87,192,12,33,48,192,2, + 63,88,192,8,2,0,16,36,0,0,100,142, + 4,0,115,38,226,87,192,12,33,48,192,2, + 1,0,16,38,0,0,162,142,0,0,0,0, + 42,16,2,2,247,255,64,20,33,40,128,2, + 44,0,191,143,40,0,182,143,36,0,181,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 48,0,189,39,224,255,189,39,28,0,191,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,136,128,0,33,144,192,0,255,255,67,50, + 12,0,34,150,0,0,0,0,43,16,67,0, + 4,0,64,16,1,0,2,36,12,0,50,150, + 0,0,0,0,255,255,67,50,11,0,98,16, + 2,0,98,40,5,0,64,16,2,0,2,36, + 50,0,96,16,255,255,80,50,137,88,192,8, + 0,0,0,0,15,0,98,16,255,255,80,50, + 137,88,192,8,0,0,0,0,8,0,35,142, + 0,0,0,0,1,0,98,36,8,0,34,174, + 0,0,162,144,0,0,0,0,0,0,98,160, + 12,0,34,150,0,0,0,0,255,255,66,36, + 149,88,192,8,12,0,34,166,8,0,35,142, + 0,0,0,0,1,0,98,36,8,0,34,174, + 0,0,162,144,0,0,0,0,0,0,98,160, + 8,0,35,142,0,0,0,0,1,0,98,36, + 8,0,34,174,1,0,162,144,0,0,0,0, + 0,0,98,160,12,0,34,150,0,0,0,0, + 254,255,66,36,149,88,192,8,12,0,34,166, + 8,0,36,142,0,0,0,0,80,68,192,12, + 33,48,0,2,12,0,34,150,0,0,0,0, + 35,16,82,0,12,0,34,166,8,0,34,142, + 0,0,0,0,33,128,2,2,8,0,48,174, + 255,255,66,50,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,224,255,189,39,24,0,191,175, + 20,0,177,175,16,0,176,175,33,128,160,0, + 10,0,128,20,33,136,192,0,9,50,192,12, + 16,0,4,36,33,32,64,0,3,0,128,20, + 1,0,2,36,178,88,192,8,33,16,0,0, + 173,88,192,8,0,0,130,160,0,0,128,160, + 4,0,144,172,8,0,144,172,33,16,17,2, + 12,0,130,172,33,16,128,0,24,0,191,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,232,255,189,39,16,0,191,175, + 0,0,130,144,0,0,0,0,1,0,66,48, + 3,0,64,16,0,0,0,0,61,50,192,12, + 0,0,0,0,16,0,191,143,24,0,189,39, + 8,0,224,3,0,0,0,0,0,0,130,144, + 0,0,0,0,128,0,66,48,16,0,64,20, + 255,255,2,36,8,0,130,140,12,0,131,140, + 0,0,0,0,43,16,67,0,7,0,64,20, + 0,0,0,0,0,0,130,144,0,0,0,0, + 128,0,66,52,0,0,130,160,216,88,192,8, + 255,255,2,36,8,0,130,140,0,0,0,0, + 0,0,66,144,8,0,224,3,0,0,0,0, + 30,0,192,24,33,56,192,0,0,0,130,144, + 0,0,0,0,128,0,66,48,16,0,64,20, + 255,0,3,36,8,0,131,140,12,0,130,140, + 0,0,0,0,43,16,98,0,5,0,64,16, + 1,0,98,36,8,0,130,172,0,0,99,144, + 240,88,192,8,0,0,0,0,0,0,130,144, + 0,0,0,0,128,0,66,52,0,0,130,160, + 255,0,3,36,0,0,130,144,0,0,0,0, + 128,0,66,48,5,0,64,20,0,0,0,0, + 0,0,163,160,255,255,198,36,228,255,192,28, + 1,0,165,36,8,0,224,3,35,16,230,0, + 1,0,2,36,15,0,194,16,2,0,194,40, + 5,0,64,16,2,0,2,36,7,0,192,16, + 255,255,2,36,40,89,192,8,0,0,0,0, + 11,0,194,16,255,255,2,36,40,89,192,8, + 0,0,0,0,4,0,130,140,0,0,0,0, + 21,89,192,8,33,40,162,0,8,0,130,140, + 0,0,0,0,19,89,192,8,33,40,162,0, + 12,0,130,140,0,0,0,0,35,40,69,0, + 4,0,130,140,0,0,0,0,43,16,162,0, + 17,0,64,20,255,255,2,36,12,0,130,140, + 0,0,0,0,43,16,69,0,12,0,64,20, + 255,255,2,36,12,0,130,140,0,0,0,0, + 43,16,162,0,5,0,64,16,0,0,0,0, + 0,0,130,144,0,0,0,0,127,0,66,48, + 0,0,130,160,8,0,133,172,33,16,0,0, + 8,0,224,3,0,0,0,0,12,0,130,140, + 4,0,131,140,0,0,0,0,35,56,67,0, + 1,0,2,36,15,0,194,16,2,0,194,40, + 5,0,64,16,2,0,2,36,7,0,192,16, + 255,255,2,36,87,89,192,8,0,0,0,0, + 12,0,194,16,255,255,2,36,87,89,192,8, + 0,0,0,0,4,0,130,140,0,0,0,0, + 66,89,192,8,33,16,162,0,8,0,130,140, + 0,0,0,0,33,16,162,0,72,89,192,8, + 12,0,130,172,12,0,130,140,0,0,0,0, + 35,16,69,0,12,0,130,172,8,0,130,140, + 12,0,131,140,0,0,0,0,43,16,67,0, + 5,0,64,16,0,0,0,0,0,0,130,144, + 0,0,0,0,85,89,192,8,127,0,66,48, + 0,0,130,144,0,0,0,0,128,0,66,52, + 0,0,130,160,33,16,224,0,8,0,224,3, + 0,0,0,0,232,255,189,39,20,0,191,175, + 16,0,176,175,12,0,128,20,33,128,160,0, + 9,50,192,12,16,0,4,36,33,32,64,0, + 3,0,128,20,0,0,0,0,119,89,192,8, + 33,16,0,0,0,0,2,146,0,0,0,0, + 108,89,192,8,1,0,66,52,0,0,2,146, + 0,0,0,0,254,0,66,48,0,0,130,160, + 4,0,2,142,0,0,0,0,4,0,130,172, + 8,0,2,142,0,0,0,0,8,0,130,172, + 12,0,2,142,0,0,0,0,12,0,130,172, + 33,16,128,0,20,0,191,143,16,0,176,143, + 8,0,224,3,24,0,189,39,0,0,0,0, + 0,0,130,144,0,0,0,0,128,0,66,48, + 17,0,64,20,31,0,3,36,8,0,131,140, + 12,0,130,140,0,0,0,0,43,16,98,0, + 6,0,64,16,1,0,98,36,8,0,130,172, + 0,0,98,144,0,0,0,0,145,89,192,8, + 31,0,67,48,0,0,130,144,0,0,0,0, + 128,0,66,52,0,0,130,160,31,0,3,36, + 0,0,130,144,0,0,0,0,128,0,66,48, + 4,0,64,16,1,0,2,36,0,0,162,172, + 196,89,192,8,33,16,0,0,255,0,99,48, + 31,0,2,36,6,0,98,16,33,16,96,0, + 196,89,192,8,0,0,0,0,1,0,2,36, + 195,89,192,8,0,0,162,172,33,48,0,0, + 0,0,130,144,0,0,0,0,128,0,66,48, + 16,0,64,20,255,0,3,36,8,0,131,140, + 12,0,130,140,0,0,0,0,43,16,98,0, + 5,0,64,16,1,0,98,36,8,0,130,172, + 0,0,99,144,183,89,192,8,0,0,0,0, + 0,0,130,144,0,0,0,0,128,0,66,52, + 0,0,130,160,255,0,3,36,0,0,130,144, + 0,0,0,0,128,0,66,48,228,255,64,20, + 128,0,98,48,4,0,64,16,127,0,98,48, + 37,16,194,0,163,89,192,8,192,49,2,0, + 255,0,98,48,37,48,70,0,255,255,194,48, + 8,0,224,3,0,0,0,0,0,0,130,144, + 0,0,0,0,128,0,66,48,16,0,64,20, + 255,0,6,36,8,0,131,140,12,0,130,140, + 0,0,0,0,43,16,98,0,5,0,64,16, + 1,0,98,36,8,0,130,172,0,0,102,144, + 218,89,192,8,0,0,0,0,0,0,130,144, + 0,0,0,0,128,0,66,52,0,0,130,160, + 255,0,6,36,0,0,130,144,0,0,0,0, + 128,0,66,48,13,0,64,20,1,0,2,36, + 255,0,195,48,128,0,2,36,4,0,98,20, + 2,0,2,36,0,0,162,172,17,90,192,8, + 255,255,2,52,128,0,194,48,6,0,64,20, + 33,24,0,0,17,90,192,8,255,0,194,48, + 0,0,162,172,17,90,192,8,33,16,0,0, + 127,0,194,48,32,0,64,16,255,255,71,36, + 0,26,3,0,0,0,130,144,0,0,0,0, + 128,0,66,48,16,0,64,20,255,255,102,48, + 8,0,131,140,12,0,130,140,0,0,0,0, + 43,16,98,0,6,0,64,16,1,0,98,36, + 8,0,130,172,0,0,98,144,0,0,0,0, + 7,90,192,8,37,24,194,0,0,0,130,144, + 0,0,0,0,128,0,66,52,0,0,130,160, + 255,0,195,52,0,0,130,144,0,0,0,0, + 128,0,66,48,224,255,64,20,1,0,2,36, + 33,16,224,0,255,0,66,48,226,255,64,20, + 255,255,231,36,255,255,98,48,8,0,224,3, + 0,0,0,0,216,255,189,39,36,0,191,175, + 32,0,180,175,28,0,179,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,152,128,0, + 33,128,192,0,33,144,160,0,255,255,81,50, + 33,0,32,18,33,160,224,0,255,255,2,52, + 30,0,34,18,0,0,0,0,9,50,192,12, + 33,32,32,2,33,24,64,0,29,0,96,16, + 1,0,2,36,0,0,2,166,4,0,3,174, + 8,0,3,174,12,0,18,166,33,32,96,2, + 8,0,5,142,0,0,0,0,218,88,192,12, + 33,48,32,2,33,24,64,0,255,255,100,48, + 10,0,145,20,1,0,2,36,12,0,2,150, + 0,0,0,0,35,16,67,0,12,0,2,166, + 8,0,2,142,0,0,0,0,33,16,130,0, + 68,90,192,8,8,0,2,174,68,90,192,8, + 0,0,130,174,0,0,0,166,4,0,0,174, + 8,0,0,174,12,0,0,166,36,0,191,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,224,255,189,39,28,0,191,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,144,128,0,33,136,160,0,33,128,192,0, + 124,89,192,12,33,40,0,2,33,32,64,2, + 198,89,192,12,33,40,0,2,33,40,64,0, + 0,0,2,142,0,0,0,0,7,0,64,20, + 33,32,64,2,255,255,165,48,33,48,32,2, + 19,90,192,12,33,56,0,2,104,90,192,8, + 0,0,0,0,0,0,32,166,4,0,32,174, + 8,0,32,174,12,0,32,166,28,0,191,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,216,255,189,39, + 36,0,191,175,32,0,180,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,152,128,0,33,136,160,0,33,144,192,0, + 56,0,176,147,0,0,0,0,196,88,192,12, + 33,160,224,0,224,0,66,48,7,0,80,20, + 33,32,96,2,124,89,192,12,33,40,64,2, + 255,255,66,48,255,255,131,50,7,0,67,16, + 33,32,96,2,0,0,66,142,0,0,0,0, + 16,0,64,20,4,0,2,36,152,90,192,8, + 0,0,66,174,198,89,192,12,33,40,64,2, + 33,40,64,0,0,0,66,142,0,0,0,0, + 7,0,64,20,33,32,96,2,255,255,165,48, + 33,48,32,2,19,90,192,12,33,56,64,2, + 156,90,192,8,0,0,0,0,0,0,32,166, + 4,0,32,174,8,0,32,174,12,0,32,166, + 36,0,191,143,32,0,180,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,33,56,0,0, + 255,255,168,36,255,255,165,48,50,0,160,16, + 1,0,9,36,1,0,12,36,4,0,10,36, + 3,0,11,36,255,255,5,52,0,0,130,144, + 0,0,0,0,128,0,66,48,16,0,64,20, + 255,0,3,36,8,0,131,140,12,0,130,140, + 0,0,0,0,43,16,98,0,5,0,64,16, + 1,0,98,36,8,0,130,172,0,0,99,144, + 193,90,192,8,0,0,0,0,0,0,130,144, + 0,0,0,0,128,0,66,52,0,0,130,160, + 255,0,3,36,0,0,130,144,0,0,0,0, + 128,0,66,48,3,0,64,16,0,0,0,0, + 218,90,192,8,0,0,204,172,11,0,32,17, + 255,255,2,49,5,0,74,20,33,72,0,0, + 3,0,96,16,0,0,0,0,218,90,192,8, + 0,0,203,172,128,0,98,48,3,0,64,16, + 0,18,7,0,255,255,7,36,0,18,7,0, + 37,56,67,0,33,16,0,1,255,255,66,48, + 212,255,64,20,33,64,5,1,8,0,224,3, + 33,16,224,0,224,255,189,39,24,0,191,175, + 20,0,177,175,16,0,176,175,33,128,128,0, + 124,89,192,12,33,136,160,0,33,32,0,2, + 198,89,192,12,33,40,32,2,33,32,0,2, + 255,255,69,48,164,90,192,12,33,48,32,2, + 24,0,191,143,20,0,177,143,16,0,176,143, + 8,0,224,3,32,0,189,39,216,255,189,39, + 32,0,191,175,28,0,179,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,144,128,0, + 33,136,160,0,33,152,192,0,196,88,192,12, + 33,128,224,0,224,0,66,48,255,0,16,50, + 7,0,80,20,33,32,64,2,124,89,192,12, + 33,40,32,2,255,255,66,48,255,255,99,50, + 8,0,67,16,33,32,64,2,0,0,34,142, + 0,0,0,0,2,0,64,20,4,0,2,36, + 0,0,34,174,17,91,192,8,33,16,0,0, + 198,89,192,12,33,40,32,2,33,32,64,2, + 255,255,69,48,164,90,192,12,33,48,32,2, + 32,0,191,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,208,255,189,39,44,0,191,175, + 40,0,180,175,36,0,179,175,32,0,178,175, + 28,0,177,175,24,0,176,175,33,128,128,0, + 33,152,192,0,33,160,224,0,0,0,96,174, + 4,0,96,174,8,0,3,142,4,0,2,142, + 0,0,0,0,35,24,98,0,255,255,165,48, + 35,0,160,24,33,144,0,0,1,0,6,36, + 0,0,2,146,0,0,0,0,128,0,66,48, + 16,0,64,20,255,0,4,36,8,0,4,142, + 12,0,2,142,0,0,0,0,43,16,130,0, + 5,0,64,16,1,0,130,36,8,0,2,174, + 0,0,132,144,64,91,192,8,0,0,0,0, + 0,0,2,146,0,0,0,0,128,0,66,52, + 0,0,2,162,255,0,4,36,0,0,2,146, + 0,0,0,0,128,0,66,48,3,0,64,16, + 128,0,130,48,150,91,192,8,0,0,134,174, + 2,0,64,20,0,0,0,0,1,0,82,38, + 255,255,165,36,224,255,160,28,0,0,0,0, + 33,32,0,2,33,40,96,0,251,88,192,12, + 33,48,0,0,68,0,64,18,1,0,81,38, + 9,50,192,12,128,32,17,0,33,40,64,0, + 63,0,160,16,0,0,0,0,0,0,113,174, + 4,0,101,174,59,0,64,26,33,56,0,0, + 1,0,8,36,33,48,0,0,0,0,2,146, + 0,0,0,0,128,0,66,48,16,0,64,20, + 255,0,4,36,8,0,3,142,12,0,2,142, + 0,0,0,0,43,16,98,0,5,0,64,16, + 1,0,98,36,8,0,2,174,0,0,100,144, + 114,91,192,8,0,0,0,0,0,0,2,146, + 0,0,0,0,128,0,66,52,0,0,2,162, + 255,0,4,36,0,0,2,146,0,0,0,0, + 128,0,66,48,3,0,64,16,192,49,6,0, + 150,91,192,8,0,0,136,174,127,0,130,48, + 37,48,194,0,128,0,130,48,225,255,64,20, + 0,0,0,0,18,0,224,20,40,0,194,44, + 4,0,64,16,80,0,194,44,0,0,160,172, + 145,91,192,8,4,0,165,36,5,0,64,16, + 216,255,194,36,0,0,168,172,4,0,165,36, + 146,91,192,8,0,0,162,172,2,0,2,36, + 0,0,162,172,4,0,165,36,176,255,194,36, + 146,91,192,8,0,0,162,172,0,0,166,172, + 1,0,231,36,42,16,242,0,200,255,64,20, + 4,0,165,36,44,0,191,143,40,0,180,143, + 36,0,179,143,32,0,178,143,28,0,177,143, + 24,0,176,143,8,0,224,3,48,0,189,39, + 224,255,189,39,28,0,191,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,136,128,0, + 33,144,160,0,33,128,192,0,124,89,192,12, + 33,40,0,2,33,32,32,2,198,89,192,12, + 33,40,0,2,33,40,64,0,0,0,2,142, + 0,0,0,0,5,0,64,20,33,32,32,2, + 255,255,165,48,33,48,64,2,24,91,192,12, + 33,56,0,2,28,0,191,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 32,0,189,39,216,255,189,39,36,0,191,175, + 32,0,180,175,28,0,179,175,24,0,178,175, + 20,0,177,175,16,0,176,175,33,144,128,0, + 33,160,160,0,33,136,192,0,56,0,176,147, + 0,0,0,0,196,88,192,12,33,152,224,0, + 224,0,66,48,7,0,80,20,33,32,64,2, + 124,89,192,12,33,40,32,2,255,255,66,48, + 255,255,99,50,7,0,67,16,33,32,64,2, + 0,0,34,142,0,0,0,0,14,0,64,20, + 4,0,2,36,226,91,192,8,0,0,34,174, + 198,89,192,12,33,40,32,2,33,40,64,0, + 0,0,34,142,0,0,0,0,5,0,64,20, + 33,32,64,2,255,255,165,48,33,48,128,2, + 24,91,192,12,33,56,32,2,36,0,191,143, + 32,0,180,143,28,0,179,143,24,0,178,143, + 20,0,177,143,16,0,176,143,8,0,224,3, + 40,0,189,39,0,0,0,0,0,0,0,0, + 216,255,189,39,32,0,191,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,152,128,0,8,0,99,142,4,0,98,142, + 0,0,0,0,35,128,98,0,255,255,4,50, + 19,0,128,16,33,136,160,0,9,50,192,12, + 0,0,0,0,33,144,64,0,3,0,64,22, + 255,255,16,50,17,92,192,8,255,255,2,36, + 33,32,64,2,4,0,101,142,0,0,0,0, + 80,68,192,12,33,48,0,2,1,0,2,36, + 0,0,34,166,4,0,50,174,33,128,80,2, + 15,92,192,8,8,0,48,174,0,0,32,166, + 4,0,32,174,8,0,32,174,12,0,32,166, + 33,16,0,0,32,0,191,143,28,0,179,143, + 24,0,178,143,20,0,177,143,16,0,176,143, + 8,0,224,3,40,0,189,39,232,255,189,39, + 20,0,191,175,16,0,176,175,33,128,128,0, + 0,0,2,150,0,0,0,0,1,0,66,48, + 7,0,64,16,0,0,0,0,4,0,4,142, + 0,0,0,0,3,0,128,16,0,0,0,0, + 61,50,192,12,0,0,0,0,0,0,0,166, + 8,0,0,174,4,0,0,174,12,0,0,166, + 20,0,191,143,16,0,176,143,8,0,224,3, + 24,0,189,39,224,255,189,39,24,0,191,175, + 20,0,177,175,16,0,176,175,33,128,128,0, + 8,0,163,140,4,0,162,140,0,0,0,0, + 35,136,98,0,255,255,35,50,12,0,2,150, + 0,0,0,0,43,16,67,0,4,0,64,16, + 255,255,38,50,12,0,17,150,0,0,0,0, + 255,255,38,50,6,0,192,16,255,255,34,50, + 8,0,4,142,4,0,165,140,80,68,192,12, + 0,0,0,0,255,255,34,50,8,0,3,142, + 0,0,0,0,33,16,67,0,8,0,2,174, + 12,0,2,150,0,0,0,0,35,16,81,0, + 12,0,2,166,24,0,191,143,20,0,177,143, + 16,0,176,143,8,0,224,3,32,0,189,39, + 1,0,2,36,23,0,194,16,2,0,194,40, + 5,0,64,16,2,0,2,36,7,0,192,16, + 255,255,2,36,132,92,192,8,0,0,0,0, + 23,0,194,16,255,255,2,36,132,92,192,8, + 0,0,0,0,255,255,162,48,4,0,131,140, + 0,0,0,0,33,48,67,0,8,0,130,140, + 0,0,0,0,35,16,67,0,12,0,131,148, + 0,0,0,0,33,16,67,0,124,92,192,8, + 35,40,69,0,255,255,162,48,8,0,131,140, + 0,0,0,0,33,48,67,0,12,0,130,148, + 0,0,0,0,124,92,192,8,35,40,69,0, + 12,0,130,148,8,0,131,140,0,0,0,0, + 33,48,67,0,255,255,162,48,35,48,194,0, + 4,0,130,140,0,0,0,0,43,16,194,0, + 4,0,64,20,255,255,2,36,8,0,134,172, + 12,0,133,164,33,16,0,0,8,0,224,3, + 0,0,0,0,216,255,189,39,32,0,191,175, + 28,0,179,175,24,0,178,175,20,0,177,175, + 16,0,176,175,33,128,128,0,33,152,160,0, + 8,0,3,142,4,0,2,142,0,0,0,0, + 35,144,98,0,255,255,66,50,12,0,3,150, + 0,0,0,0,33,16,67,0,255,255,99,50, + 42,16,67,0,35,0,64,16,1,0,2,36, + 0,0,3,150,0,0,0,0,32,0,98,20, + 255,255,2,36,9,50,192,12,255,255,100,50, + 33,136,64,0,3,0,32,22,255,255,70,50, + 189,92,192,8,255,255,2,36,5,0,192,16, + 0,0,0,0,4,0,5,142,0,0,0,0, + 80,68,192,12,33,32,32,2,0,0,2,150, + 0,0,0,0,1,0,66,48,7,0,64,16, + 0,0,0,0,4,0,4,142,0,0,0,0, + 3,0,128,16,0,0,0,0,61,50,192,12, + 0,0,0,0,4,0,17,174,255,255,66,50, + 33,16,34,2,8,0,2,174,35,16,114,2, + 12,0,2,166,33,16,0,0,32,0,191,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,40,0,189,39, + 216,255,189,39,32,0,191,175,28,0,179,175, + 24,0,178,175,20,0,177,175,16,0,176,175, + 33,128,128,0,33,136,192,0,255,255,36,50, + 35,0,128,16,33,152,160,0,8,0,2,142, + 4,0,3,142,0,0,0,0,35,16,67,0, + 255,255,66,48,12,0,3,150,0,0,0,0, + 33,16,67,0,42,16,68,0,20,0,64,16, + 0,0,0,0,9,50,192,12,0,0,0,0, + 33,144,64,0,24,0,64,18,255,255,2,36, + 0,0,2,150,0,0,0,0,1,0,66,48, + 8,0,64,16,1,0,2,36,4,0,4,142, + 0,0,0,0,4,0,128,16,0,0,0,0, + 61,50,192,12,0,0,0,0,1,0,2,36, + 0,0,2,166,4,0,18,174,4,0,4,142, + 33,40,96,2,80,68,192,12,255,255,38,50, + 33,32,0,2,255,255,37,50,85,92,192,12, + 33,48,0,0,33,16,0,0,32,0,191,143, + 28,0,179,143,24,0,178,143,20,0,177,143, + 16,0,176,143,8,0,224,3,40,0,189,39, + 0,0,0,0,0,0,0,0,0,0,0,0, + 184,255,189,39,64,0,191,175,60,0,183,175, + 56,0,182,175,52,0,181,175,48,0,180,175, + 44,0,179,175,40,0,178,175,36,0,177,175, + 32,0,176,175,33,144,128,0,112,0,84,142, + 0,0,0,0,92,0,128,18,1,0,2,36, + 108,0,81,142,0,0,0,0,88,0,32,18, + 0,0,0,0,96,0,87,38,136,0,66,174, + 140,0,64,174,96,0,64,174,100,0,64,174, + 224,83,192,12,33,32,32,2,33,168,64,0, + 25,0,160,18,33,128,160,2,108,0,66,142, + 0,0,0,0,124,0,66,174,128,0,84,174, + 108,0,81,174,112,0,85,174,29,0,32,26, + 33,152,0,0,255,255,22,36,33,32,0,2, + 8,0,133,38,33,48,64,2,170,72,192,12, + 1,0,7,36,10,0,86,16,33,32,64,2, + 14,0,64,20,0,0,0,0,64,0,66,142, + 0,0,0,0,10,0,64,20,2,0,5,36, + 56,93,192,8,1,0,102,38,33,32,64,2, + 5,0,5,36,33,48,0,0,140,84,192,12, + 0,0,0,0,107,93,192,8,1,0,2,36, + 1,0,115,38,68,0,16,38,42,16,113,2, + 230,255,64,20,68,0,148,38,40,0,32,18, + 33,128,160,2,17,0,2,146,0,0,0,0, + 34,0,66,48,32,0,64,20,0,0,0,0, + 36,0,2,142,16,0,176,175,16,0,66,140, + 24,0,4,142,28,0,5,142,32,0,6,142, + 0,0,0,0,9,248,64,0,33,56,64,2, + 17,0,2,146,0,0,0,0,32,0,66,52, + 17,0,2,162,0,0,226,142,0,0,0,0, + 15,0,64,16,0,0,0,0,255,255,49,38, + 15,0,32,18,68,0,16,38,17,0,3,146, + 0,0,0,0,32,0,98,48,2,0,64,20, + 34,0,98,52,17,0,2,162,255,255,49,38, + 248,255,32,22,68,0,16,38,107,93,192,8, + 33,16,0,0,255,255,49,38,218,255,32,22, + 68,0,16,38,33,16,0,0,64,0,191,143, + 60,0,183,143,56,0,182,143,52,0,181,143, + 48,0,180,143,44,0,179,143,40,0,178,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 72,0,189,39,168,255,189,39,80,0,191,175, + 76,0,183,175,72,0,182,175,68,0,181,175, + 64,0,180,175,60,0,179,175,56,0,178,175, + 52,0,177,175,48,0,176,175,33,144,128,0, + 96,0,66,142,0,0,0,0,3,0,64,16, + 33,32,0,0,240,93,192,8,255,255,2,36, + 116,0,66,142,0,0,0,0,7,0,64,16, + 104,0,67,38,12,0,99,140,0,0,0,0, + 12,0,98,140,0,0,0,0,251,255,64,20, + 0,0,0,0,8,0,116,140,0,0,0,0, + 92,0,128,18,33,16,0,0,4,0,115,140, + 0,0,0,0,88,0,96,18,0,0,0,0, + 64,0,66,142,0,0,0,0,55,0,64,20, + 0,0,0,0,33,128,128,2,52,0,96,26, + 33,136,0,0,255,255,23,36,2,0,22,36, + 5,0,21,36,17,0,2,146,0,0,0,0, + 16,0,66,48,40,0,64,16,24,0,165,39, + 8,0,3,142,28,0,2,142,0,0,0,0, + 35,24,98,0,24,0,163,175,12,0,2,142, + 0,0,0,0,28,0,162,175,128,24,3,0, + 33,24,98,0,252,255,98,140,0,0,0,0, + 1,0,66,36,252,255,98,172,12,0,0,174, + 8,0,0,174,33,32,0,2,33,48,64,2, + 170,72,192,12,1,0,7,36,6,0,87,16, + 0,0,0,0,9,0,64,20,1,0,34,38, + 96,0,86,174,196,93,192,8,100,0,66,174, + 96,0,85,174,110,86,192,12,24,0,164,39, + 240,93,192,8,255,255,2,36,110,86,192,12, + 24,0,164,39,17,0,2,146,0,0,0,0, + 12,0,66,48,17,0,2,162,1,0,4,36, + 1,0,49,38,42,16,51,2,209,255,64,20, + 68,0,16,38,27,0,128,16,33,128,128,2, + 23,0,96,26,33,136,0,0,17,0,2,146, + 0,0,0,0,34,0,66,48,14,0,64,20, + 0,0,0,0,36,0,2,142,16,0,176,175, + 16,0,66,140,24,0,4,142,28,0,5,142, + 32,0,6,142,0,0,0,0,9,248,64,0, + 33,56,64,2,17,0,2,146,0,0,0,0, + 32,0,66,52,17,0,2,162,1,0,49,38, + 42,16,51,2,235,255,64,20,68,0,16,38, + 240,93,192,8,1,0,2,36,33,16,0,0, + 80,0,191,143,76,0,183,143,72,0,182,143, + 68,0,181,143,64,0,180,143,60,0,179,143, + 56,0,178,143,52,0,177,143,48,0,176,143, + 8,0,224,3,88,0,189,39,0,0,0,0, + 200,255,189,39,48,0,191,175,44,0,179,175, + 40,0,178,175,36,0,177,175,32,0,176,175, + 33,144,128,0,96,0,64,174,100,0,64,174, + 112,0,80,142,0,0,0,0,105,0,0,18, + 33,16,0,0,108,0,81,142,0,0,0,0, + 101,0,32,18,0,0,0,0,64,0,66,142, + 0,0,0,0,43,0,64,20,33,32,64,2, + 50,0,32,26,33,152,0,0,33,32,0,2, + 33,40,64,2,96,72,192,12,1,0,6,36, + 13,0,64,20,33,32,64,2,20,0,2,150, + 0,0,0,0,1,0,66,48,34,0,64,16, + 2,0,5,36,36,0,2,142,0,0,0,0, + 3,0,66,144,0,0,0,0,2,0,66,48, + 3,0,64,20,0,0,0,0,63,94,192,8, + 2,0,5,36,36,0,2,142,0,0,0,0, + 32,0,66,140,4,0,67,142,0,0,0,0, + 36,16,67,0,16,0,64,16,33,32,64,2, + 36,0,2,142,16,0,3,146,2,0,66,144, + 0,0,0,0,11,0,98,20,3,0,5,36, + 1,0,115,38,42,16,113,2,219,255,64,20, + 68,0,16,38,69,94,192,8,96,0,83,38, + 5,0,5,36,64,94,192,8,33,48,0,0, + 2,0,5,36,1,0,102,38,140,84,192,12, + 0,0,0,0,113,94,192,8,1,0,2,36, + 96,0,83,38,112,0,80,142,0,0,0,0, + 41,0,32,18,33,16,0,0,17,0,2,146, + 0,0,0,0,17,0,66,48,32,0,64,20, + 0,0,0,0,36,0,2,142,16,0,176,175, + 4,0,66,140,24,0,4,142,28,0,5,142, + 32,0,6,142,0,0,0,0,9,248,64,0, + 33,56,64,2,17,0,2,146,0,0,0,0, + 16,0,66,52,17,0,2,162,0,0,98,142, + 0,0,0,0,15,0,64,16,0,0,0,0, + 255,255,49,38,15,0,32,18,68,0,16,38, + 17,0,3,146,0,0,0,0,16,0,98,48, + 2,0,64,20,17,0,98,52,17,0,2,162, + 255,255,49,38,248,255,32,22,68,0,16,38, + 113,94,192,8,33,16,0,0,255,255,49,38, + 218,255,32,22,68,0,16,38,33,16,0,0, + 48,0,191,143,44,0,179,143,40,0,178,143, + 36,0,177,143,32,0,176,143,8,0,224,3, + 56,0,189,39,192,255,189,39,56,0,191,175, + 52,0,183,175,48,0,182,175,44,0,181,175, + 40,0,180,175,36,0,179,175,32,0,178,175, + 28,0,177,175,24,0,176,175,33,144,128,0, + 112,0,84,142,0,0,0,0,171,0,128,18, + 33,16,0,0,108,0,85,142,0,0,0,0, + 166,0,160,18,32,0,2,36,56,0,67,146, + 0,0,0,0,75,0,98,16,96,0,83,38, + 33,0,98,40,5,0,64,16,64,0,2,36, + 9,0,96,16,33,16,0,0,49,95,192,8, + 0,0,0,0,85,0,98,16,128,0,2,36, + 137,0,98,16,33,16,0,0,49,95,192,8, + 0,0,0,0,33,136,160,2,8,0,32,18, + 33,128,128,2,17,0,2,146,0,0,0,0, + 1,0,66,48,139,0,64,16,255,255,49,38, + 250,255,32,22,68,0,16,38,0,0,98,142, + 0,0,0,0,136,0,64,20,33,16,0,0, + 33,136,160,2,43,0,32,18,33,128,128,2, + 14,0,22,36,64,0,23,36,17,0,2,146, + 0,0,0,0,34,0,66,48,33,0,64,20, + 0,0,0,0,36,0,2,142,16,0,176,175, + 12,0,66,140,24,0,4,142,28,0,5,142, + 32,0,6,142,0,0,0,0,9,248,64,0, + 33,56,64,2,17,0,2,146,0,0,0,0, + 32,0,66,52,17,0,2,162,0,0,98,142, + 0,0,0,0,16,0,64,16,0,0,0,0, + 255,255,49,38,10,0,32,18,68,0,16,38, + 17,0,3,146,0,0,0,0,32,0,98,48, + 2,0,64,20,192,0,98,52,17,0,2,162, + 255,255,49,38,248,255,32,22,68,0,16,38, + 0,0,118,174,236,94,192,8,56,0,87,162, + 255,255,49,38,217,255,32,22,68,0,16,38, + 32,0,2,36,56,0,66,162,0,0,98,142, + 0,0,0,0,13,0,64,20,64,0,2,36, + 33,136,160,2,81,0,32,18,33,128,128,2, + 17,0,2,146,0,0,0,0,2,0,66,48, + 74,0,64,16,255,255,49,38,250,255,32,22, + 68,0,16,38,49,95,192,8,33,16,0,0, + 56,0,66,162,14,0,2,36,0,0,98,174, + 33,136,160,2,53,0,32,18,33,128,128,2, + 2,0,23,36,15,0,22,36,17,0,2,146, + 0,0,0,0,194,0,66,48,5,0,64,16, + 0,0,0,0,19,0,87,16,0,0,0,0, + 32,95,192,8,255,255,49,38,64,0,2,142, + 0,0,0,0,34,0,64,16,0,0,0,0, + 16,0,176,175,64,0,2,142,24,0,4,142, + 28,0,5,142,32,0,6,142,0,0,0,0, + 9,248,64,0,33,56,64,2,17,0,2,146, + 0,0,0,0,30,95,192,8,64,0,66,52, + 64,0,2,142,0,0,0,0,13,0,64,16, + 0,0,0,0,16,0,176,175,64,0,2,142, + 24,0,4,142,28,0,5,142,32,0,6,142, + 0,0,0,0,9,248,64,0,33,56,64,2, + 17,0,2,146,0,0,0,0,30,95,192,8, + 64,0,66,52,0,0,118,174,17,0,2,146, + 0,0,0,0,128,0,66,52,17,0,2,162, + 255,255,49,38,208,255,32,22,68,0,16,38, + 33,136,160,2,12,0,32,18,33,128,128,2, + 17,0,2,146,0,0,0,0,128,0,66,48, + 5,0,64,16,255,255,49,38,250,255,32,22, + 68,0,16,38,49,95,192,8,33,16,0,0, + 49,95,192,8,1,0,2,36,33,16,0,0, + 56,0,191,143,52,0,183,143,48,0,182,143, + 44,0,181,143,40,0,180,143,36,0,179,143, + 32,0,178,143,28,0,177,143,24,0,176,143, + 8,0,224,3,64,0,189,39,184,255,189,39, + 64,0,191,175,60,0,183,175,56,0,182,175, + 52,0,181,175,48,0,180,175,44,0,179,175, + 40,0,178,175,36,0,177,175,32,0,176,175, + 33,160,128,0,112,0,147,142,0,0,0,0, + 129,0,96,18,33,16,0,0,108,0,146,142, + 0,0,0,0,125,0,64,18,96,0,151,38, + 96,0,128,174,100,0,128,174,224,83,192,12, + 33,32,64,2,33,168,64,0,5,0,160,22, + 33,136,64,2,33,32,128,2,5,0,5,36, + 123,95,192,8,33,48,0,0,36,0,64,18, + 33,128,160,2,5,0,22,36,16,0,22,162, + 8,0,100,142,12,0,101,142,0,0,0,0, + 80,86,192,12,8,0,6,38,5,0,64,20, + 0,0,0,0,255,255,49,38,68,0,115,38, + 245,255,32,22,68,0,16,38,21,0,32,18, + 42,16,50,2,7,0,64,16,33,128,160,2, + 59,84,192,12,33,32,0,2,1,0,49,38, + 42,16,50,2,251,255,64,20,68,0,16,38, + 61,50,192,12,33,32,160,2,33,32,128,2, + 5,0,5,36,123,95,192,8,33,48,0,0, + 2,0,5,36,1,0,38,38,140,84,192,12, + 0,0,0,0,203,95,192,8,1,0,2,36, + 124,0,146,174,112,0,130,142,0,0,0,0, + 128,0,130,174,112,0,149,174,33,128,160,2, + 27,0,64,26,33,136,0,0,33,32,0,2, + 33,40,128,2,96,72,192,12,1,0,6,36, + 13,0,64,20,0,0,0,0,20,0,2,150, + 0,0,0,0,1,0,66,48,8,0,64,16, + 0,0,0,0,36,0,2,142,0,0,0,0, + 3,0,66,144,0,0,0,0,1,0,66,48, + 5,0,64,20,0,0,0,0,64,0,130,142, + 0,0,0,0,221,255,64,16,33,32,128,2, + 1,0,49,38,42,16,50,2,231,255,64,20, + 68,0,16,38,40,0,64,18,33,128,160,2, + 17,0,2,146,0,0,0,0,34,0,66,48, + 32,0,64,20,0,0,0,0,36,0,2,142, + 16,0,176,175,8,0,66,140,24,0,4,142, + 28,0,5,142,32,0,6,142,0,0,0,0, + 9,248,64,0,33,56,128,2,17,0,2,146, + 0,0,0,0,32,0,66,52,17,0,2,162, + 0,0,226,142,0,0,0,0,15,0,64,16, + 0,0,0,0,255,255,82,38,15,0,64,18, + 68,0,16,38,17,0,3,146,0,0,0,0, + 32,0,98,48,2,0,64,20,34,0,98,52, + 17,0,2,162,255,255,82,38,248,255,64,22, + 68,0,16,38,203,95,192,8,33,16,0,0, + 255,255,82,38,218,255,64,22,68,0,16,38, + 33,16,0,0,64,0,191,143,60,0,183,143, + 56,0,182,143,52,0,181,143,48,0,180,143, + 44,0,179,143,40,0,178,143,36,0,177,143, + 32,0,176,143,8,0,224,3,72,0,189,39, + 0,0,0,0,0,0,0,0,37,115,58,37, + 100,58,32,102,97,105,108,101,100,32,97,115, + 115,101,114,116,105,111,110,32,96,37,115,39, + 10,0,0,0,114,97,109,116,101,115,116,100, + 119,40,98,99,46,98,99,95,104,101,97,112, + 115,116,97,114,116,44,32,108,101,110,44,32, + 49,44,32,48,44,32,48,41,32,61,61,32, + 48,0,0,0,98,99,46,98,99,95,104,101, + 97,112,101,110,100,32,60,61,32,98,99,46, + 98,99,95,114,97,109,101,110,100,0,0,0, + 35,32,112,111,114,116,115,58,32,37,100,10, + 0,0,0,0,42,42,42,80,114,111,102,105, + 108,105,110,103,32,64,32,37,120,44,32,37, + 120,10,0,0,103,111,116,32,104,101,114,101, + 32,99,97,117,115,101,61,37,120,32,115,116, + 97,116,117,115,61,37,120,32,118,101,99,61, + 37,120,10,0,37,115,58,37,100,58,32,102, + 97,105,108,101,100,32,97,115,115,101,114,116, + 105,111,110,32,96,37,115,39,10,0,0,0, + 83,101,99,111,110,100,115,32,60,32,48,120, + 55,70,70,70,102,102,102,102,0,0,0,0, + 84,105,109,101,114,115,85,115,101,100,32,60, + 32,78,84,73,77,69,82,83,0,0,0,0, + 0,0,0,0,69,69,80,82,79,77,32,105, + 115,32,98,97,100,10,0,0,80,111,114,116, + 32,37,100,32,101,116,104,101,114,32,97,100, + 100,114,101,115,115,58,32,37,48,50,88,58, + 37,48,50,88,58,37,48,50,88,58,37,48, + 50,88,58,37,48,50,88,58,37,48,50,88, + 10,0,0,0,35,35,35,32,56,50,53,57, + 54,32,67,104,97,110,32,37,100,58,32,115, + 101,108,102,116,101,115,116,32,102,97,105,108, + 101,100,32,40,37,120,41,10,0,0,0,0, + 42,42,42,32,56,50,53,57,54,32,80,111, + 114,116,32,37,100,58,32,115,101,108,102,116, + 101,115,116,32,112,97,115,115,101,100,10,0, + 56,50,53,57,54,32,80,111,114,116,32,37, + 100,58,32,100,117,109,112,32,102,97,105,108, + 101,100,32,40,37,120,41,10,0,0,0,0, + 42,42,42,32,56,50,53,57,54,32,80,111, + 114,116,32,37,100,58,32,100,117,109,112,32, + 112,97,115,115,101,100,10,0,35,35,35,32, + 56,50,53,57,54,32,80,111,114,116,32,37, + 100,58,32,83,67,80,32,102,101,116,99,104, + 32,102,97,105,108,101,100,10,0,0,0,0, + 42,42,42,32,56,50,53,57,54,32,80,111, + 114,116,32,37,100,58,32,83,67,80,32,102, + 101,116,99,104,32,112,97,115,115,101,100,32, + 37,120,32,10,0,0,0,0,35,35,35,32, + 56,50,53,57,54,32,80,111,114,116,32,37, + 100,58,32,66,85,83,84,73,77,69,82,83, + 32,108,111,97,100,32,102,97,105,108,101,100, + 10,0,0,0,42,42,42,32,56,50,53,57, + 54,32,80,111,114,116,32,37,100,58,32,66, + 85,83,84,73,77,69,82,83,32,108,111,97, + 100,32,112,97,115,115,101,100,10,0,0,0, + 35,35,35,32,65,67,75,32,100,105,100,32, + 110,111,116,32,111,99,99,117,114,10,0,0, + 35,35,35,32,115,116,97,116,117,115,32,115, + 116,105,108,108,32,98,117,115,121,58,32,37, + 120,10,0,0,101,116,104,95,105,110,105,116, + 46,99,0,0,42,42,42,76,49,87,65,10, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,35,35,35,32,84,66,68,32, + 98,108,111,99,107,115,32,97,114,101,110,39, + 116,32,98,101,105,110,103,32,102,114,101,101, + 100,10,0,0,65,116,116,101,109,112,116,32, + 116,111,32,102,114,101,101,32,98,111,103,117, + 115,32,84,66,68,32,37,120,10,0,0,0, + 35,35,35,32,66,85,70,32,98,108,111,99, + 107,115,32,97,114,101,110,39,116,32,98,101, + 105,110,103,32,102,114,101,101,100,10,0,0, + 65,116,116,101,109,112,116,32,116,111,32,102, + 114,101,101,32,98,111,103,117,115,32,66,85, + 70,32,37,120,10,0,0,0,0,0,0,0, + 0,0,0,0,82,70,68,115,32,37,100,32, + 10,0,0,0,82,66,68,115,32,37,100,32, + 10,0,0,0,37,115,58,37,100,58,32,102, + 97,105,108,101,100,32,97,115,115,101,114,116, + 105,111,110,32,96,37,115,39,10,0,0,0, + 101,116,104,95,114,99,118,46,99,0,0,0, + 100,115,116,99,104,97,110,32,62,61,32,49, + 32,38,38,32,100,115,116,99,104,97,110,32, + 60,32,78,99,104,97,110,0,37,115,37,48, + 50,88,58,37,48,50,88,58,37,48,50,88, + 58,37,48,50,88,58,37,48,50,88,58,37, + 48,50,88,37,115,0,0,0,176,72,0,131, + 80,67,0,131,164,67,0,131,24,68,0,131, + 80,67,0,131,0,0,0,0,4,82,0,131, + 184,76,0,131,12,77,0,131,128,77,0,131, + 184,76,0,131,0,0,0,0,0,0,0,0, + 0,0,0,0,37,115,58,37,100,58,32,102, + 97,105,108,101,100,32,97,115,115,101,114,116, + 105,111,110,32,96,37,115,39,10,0,0,0, + 101,116,104,95,120,109,105,116,46,99,0,0, + 99,98,112,45,62,110,111,112,46,99,109,100, + 32,61,61,32,73,53,57,54,95,67,66,95, + 67,77,68,95,78,79,80,124,73,53,57,54, + 95,67,66,95,67,77,68,95,69,76,0,0, + 99,98,112,45,62,110,111,112,46,99,109,100, + 32,38,32,73,53,57,54,95,67,66,95,67, + 77,68,0,0,112,45,62,115,99,98,112,45, + 62,115,116,97,116,117,115,32,38,32,73,53, + 57,54,95,83,67,66,95,67,78,65,0,0, + 35,35,35,32,99,109,100,32,115,116,105,108, + 108,32,98,117,115,121,58,32,37,120,10,0, + 37,100,61,37,100,44,37,120,44,37,100,10, + 0,0,0,0,39,37,115,39,32,37,120,32, + 37,120,10,0,37,48,56,120,58,32,37,48, + 50,120,10,0,37,48,56,120,58,32,37,48, + 52,120,10,0,37,48,56,120,58,32,37,48, + 56,120,10,0,108,105,110,107,32,115,116,97, + 116,101,32,37,48,50,120,10,0,0,0,0, + 42,42,42,32,103,111,116,32,37,100,32,105, + 110,116,101,114,114,117,112,116,115,10,0,0, + 35,35,35,32,69,120,112,101,99,116,101,100, + 32,37,100,32,98,117,116,32,103,111,116,32, + 37,100,32,105,110,116,101,114,114,117,112,116, + 115,10,0,0,80,76,88,57,48,54,48,32, + 65,100,100,114,101,115,115,32,61,32,37,88, + 32,68,65,84,65,32,61,32,37,88,32,10, + 0,0,0,0,42,42,42,32,87,114,105,116, + 101,32,111,102,32,37,120,32,116,111,32,37, + 100,32,102,97,105,108,101,100,10,0,0,0, + 42,42,42,32,87,114,105,116,101,32,111,102, + 32,37,120,32,116,111,32,37,120,32,102,97, + 105,108,101,100,10,0,0,0,42,42,42,42, + 42,42,42,42,42,42,42,42,42,42,42,42, + 0,0,0,0,42,42,42,32,73,108,108,101, + 103,97,108,32,99,111,109,109,97,110,100,32, + 39,37,115,39,10,0,0,0,45,45,45,32, + 99,111,109,109,97,110,100,115,32,109,44,116, + 44,101,44,69,44,97,44,120,44,108,44,115, + 44,112,32,99,97,110,32,98,101,32,112,114, + 101,102,105,120,101,100,32,119,105,116,104,32, + 97,32,114,101,112,101,97,116,32,99,111,117, + 110,116,0,0,108,32,120,112,111,114,116,32, + 114,112,111,114,116,32,91,108,101,110,93,32, + 32,32,32,32,32,32,32,32,32,76,111,111, + 112,98,97,99,107,32,116,101,115,116,32,102, + 114,111,109,32,120,112,111,114,116,32,40,49, + 45,54,41,32,116,111,32,114,112,111,114,116, + 32,40,49,45,54,41,0,0,105,32,32,32, + 32,32,32,32,32,32,73,110,116,101,114,114, + 117,112,116,32,72,111,115,116,32,32,124,32, + 32,115,32,91,112,111,114,116,93,32,91,108, + 101,110,93,32,66,97,99,107,50,98,97,99, + 107,32,120,109,105,116,32,99,110,116,32,112, + 97,99,107,101,116,115,0,0,80,32,32,32, + 32,32,32,32,32,32,84,101,115,116,32,80, + 76,88,32,57,48,54,48,32,32,32,124,32, + 32,100,32,91,114,124,119,124,108,124,116,93, + 32,91,118,97,108,124,39,99,39,93,32,32, + 82,101,97,100,47,87,114,105,116,101,47,76, + 111,111,112,47,84,105,109,101,32,68,77,65, + 0,0,0,0,76,32,32,32,32,32,32,32, + 32,32,82,101,97,100,32,76,105,110,107,32, + 76,69,68,115,32,32,124,32,32,112,32,114, + 101,103,110,111,32,91,118,97,108,93,32,32, + 82,101,97,100,47,91,119,114,105,116,101,93, + 32,80,76,88,32,114,101,103,105,115,116,101, + 114,0,0,0,65,32,97,100,100,114,32,32, + 32,32,83,101,116,32,101,116,104,101,114,32, + 97,100,100,114,32,32,124,32,32,36,32,115, + 99,114,105,112,116,32,32,32,32,32,32,32, + 82,101,97,100,32,99,109,100,115,32,102,114, + 111,109,32,102,105,108,101,32,39,115,99,114, + 105,112,116,39,0,0,0,0,120,32,91,112, + 111,114,116,93,32,32,84,120,32,101,116,104, + 101,114,32,32,32,32,32,32,32,32,124,32, + 32,82,32,91,112,111,114,116,93,32,32,32, + 32,32,32,32,82,120,32,101,116,104,101,114, + 32,91,111,110,32,112,111,114,116,32,49,45, + 54,93,0,0,72,32,32,32,32,32,32,32, + 32,32,84,111,103,103,108,101,32,70,67,67, + 32,116,101,115,116,32,124,32,32,113,44,94, + 68,44,94,90,32,32,32,32,32,32,32,32, + 81,117,105,116,0,0,0,0,97,32,32,32, + 32,32,32,32,32,32,84,101,115,116,32,97, + 108,108,32,32,32,32,32,32,32,32,124,32, + 32,90,32,109,115,101,99,115,32,32,32,32, + 32,32,32,32,80,97,117,115,101,32,102,111, + 114,32,97,32,119,104,105,108,101,0,0,0, + 69,32,32,32,32,32,32,32,32,32,84,101, + 115,116,32,69,69,80,82,79,77,32,32,32, + 32,32,124,32,32,83,114,32,97,100,100,114, + 59,32,83,119,32,97,100,100,114,32,118,97, + 108,59,32,32,82,101,97,100,47,87,114,105, + 116,101,32,80,76,88,32,69,50,32,114,101, + 103,0,0,0,101,32,91,112,111,114,116,93, + 32,32,84,101,115,116,32,101,116,104,101,114, + 110,101,116,32,32,32,124,32,32,69,114,32, + 97,100,100,114,59,32,69,119,32,97,100,100, + 114,32,118,97,108,59,32,32,82,101,97,100, + 47,87,114,105,116,101,32,69,69,80,82,79, + 77,32,114,101,103,0,0,0,116,32,32,32, + 32,32,32,32,32,32,84,101,115,116,32,116, + 105,109,101,114,115,32,32,32,32,32,124,32, + 32,119,91,42,93,32,97,100,100,114,32,118, + 97,108,32,32,87,114,105,116,101,32,109,101, + 109,111,114,121,58,32,119,98,32,119,104,44, + 32,119,119,44,32,119,116,0,109,32,32,32, + 32,32,32,32,32,32,84,101,115,116,32,109, + 101,109,111,114,121,32,32,32,32,32,124,32, + 32,114,91,42,93,32,97,100,100,114,32,32, + 32,32,32,32,82,101,97,100,32,109,101,109, + 111,114,121,58,32,114,98,32,114,104,44,32, + 114,119,44,32,114,116,0,0,42,42,42,32, + 82,105,103,104,116,83,119,105,116,99,104,32, + 68,105,97,103,110,111,115,116,105,99,115,32, + 109,101,110,117,32,42,42,42,0,0,0,0, + 45,45,45,32,84,104,114,101,101,32,99,111, + 112,105,101,115,32,111,102,32,97,100,100,114, + 101,115,115,32,100,111,32,110,111,116,32,97, + 103,114,101,101,33,10,0,0,45,45,45,32, + 69,116,104,101,114,32,65,100,100,114,101,115, + 115,32,78,111,116,32,83,101,116,33,10,0, + 45,45,45,32,69,116,104,101,114,32,65,100, + 100,114,101,115,115,32,105,115,32,97,32,109, + 117,108,116,105,99,97,115,116,32,97,100,100, + 114,101,115,115,33,10,0,0,42,42,42,32, + 37,48,50,88,37,48,50,88,37,48,50,88, + 58,37,48,50,88,58,37,48,50,88,37,48, + 50,88,10,0,45,45,45,32,70,105,114,115, + 116,32,98,121,116,101,32,40,37,48,50,88, + 41,32,105,115,32,97,32,98,114,111,97,100, + 99,97,115,116,32,97,100,100,114,101,115,115, + 10,0,0,0,45,45,45,32,76,97,115,116, + 32,100,105,103,105,116,32,109,117,115,116,32, + 98,101,32,48,32,111,114,32,56,10,0,0, + 42,42,42,32,69,105,103,104,116,32,101,116, + 104,101,114,110,101,116,32,97,100,100,114,101, + 115,115,101,115,32,104,97,118,101,32,98,101, + 101,110,32,117,115,101,100,58,10,0,0,0, + 42,42,42,32,80,111,114,116,32,37,100,32, + 101,116,104,101,114,110,101,116,32,97,100,100, + 114,101,115,115,32,105,115,32,0,0,0,0, + 45,45,45,32,66,97,100,32,101,116,104,101, + 114,32,97,100,100,114,101,115,115,32,39,37, + 115,39,32,115,112,101,99,105,102,105,101,100, + 10,0,0,0,0,0,0,0,244,101,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,244,101,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,64,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,28,111,0,131,104,112,0,131, + 104,112,0,131,132,111,0,131,152,109,0,131, + 104,112,0,131,104,112,0,131,244,101,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 24,107,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,76,108,0,131,104,112,0,131, + 228,108,0,131,112,110,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 28,109,0,131,104,112,0,131,48,111,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 104,112,0,131,104,112,0,131,104,112,0,131, + 84,109,0,131,104,112,0,131,104,112,0,131, + 32,112,0,131,136,106,0,131,28,106,0,131, + 104,112,0,131,104,112,0,131,52,107,0,131, + 104,112,0,131,104,112,0,131,252,106,0,131, + 88,111,0,131,104,112,0,131,104,112,0,131, + 196,107,0,131,104,112,0,131,180,104,0,131, + 168,106,0,131,92,106,0,131,104,112,0,131, + 104,112,0,131,148,105,0,131,192,106,0,131, + 0,0,0,0,188,111,0,131,204,111,0,131, + 12,112,0,131,12,112,0,131,12,112,0,131, + 12,112,0,131,12,112,0,131,12,112,0,131, + 12,112,0,131,12,112,0,131,12,112,0,131, + 12,112,0,131,252,111,0,131,12,112,0,131, + 12,112,0,131,12,112,0,131,12,112,0,131, + 236,111,0,131,12,112,0,131,12,112,0,131, + 12,112,0,131,12,112,0,131,220,111,0,131, + 252,111,0,131,0,0,0,0,0,0,0,0, + 42,42,42,32,69,69,80,82,79,77,32,80, + 97,115,115,101,100,10,0,0,33,33,33,32, + 69,69,80,82,79,77,32,70,97,105,108,117, + 114,101,58,32,87,114,111,116,101,32,37,48, + 52,120,32,97,116,32,37,100,44,32,103,111, + 116,32,37,48,52,120,10,0,0,0,0,0, + 0,0,0,0,0,0,0,0,35,35,35,70, + 114,97,109,101,32,37,100,32,100,105,100,32, + 110,111,116,32,97,114,114,105,118,101,10,0, + 35,35,35,32,70,114,97,109,101,32,37,100, + 44,32,108,101,110,32,37,100,44,32,98,121, + 116,101,32,37,100,44,32,119,97,110,116,32, + 37,120,32,103,111,116,32,37,120,10,0,0, + 35,35,35,70,114,97,109,101,32,37,100,32, + 119,114,111,110,103,32,108,101,110,103,116,104, + 32,40,119,97,110,116,32,37,100,32,103,111, + 116,32,37,100,41,10,0,0,35,35,35,70, + 114,97,109,101,32,37,100,58,32,103,111,116, + 32,115,101,113,32,37,100,10,0,0,0,0, + 35,35,35,32,37,100,32,67,82,67,32,101, + 114,114,111,114,115,32,111,99,99,117,114,101, + 100,10,0,0,35,35,35,32,37,100,32,65, + 108,105,103,110,32,101,114,114,111,114,115,32, + 111,99,99,117,114,101,100,10,0,0,0,0, + 35,35,35,32,37,100,32,83,104,111,114,116, + 32,101,114,114,111,114,115,32,111,99,99,117, + 114,101,100,10,0,0,0,0,35,35,35,32, + 37,100,32,79,118,101,114,114,117,110,32,101, + 114,114,111,114,115,32,111,99,99,117,114,101, + 100,10,0,0,35,35,35,32,67,85,32,115, + 116,105,108,108,32,114,117,110,110,105,110,103, + 58,32,37,120,10,0,0,0,35,35,35,32, + 99,109,100,32,115,116,105,108,108,32,98,117, + 115,121,58,32,37,120,10,0,35,35,35,32, + 115,116,97,116,117,115,32,115,116,105,108,108, + 32,98,117,115,121,58,32,37,120,10,0,0, + 67,66,61,37,120,44,32,84,66,68,61,37, + 120,44,32,66,85,70,61,37,120,10,0,0, + 116,101,115,116,95,101,116,104,101,114,46,99, + 0,0,0,0,37,100,32,102,114,97,109,101, + 115,32,111,102,32,108,101,110,103,116,104,32, + 37,100,32,115,101,110,116,32,105,110,32,37, + 100,32,109,115,101,99,115,10,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 42,42,42,32,56,50,53,52,32,84,105,109, + 101,114,32,48,32,79,75,44,32,99,111,117, + 110,116,32,119,97,115,32,37,100,10,0,0, + 42,42,42,32,56,50,53,52,32,84,105,109, + 101,114,32,48,32,110,111,116,32,105,110,116, + 101,114,114,117,112,116,105,110,103,32,37,100, + 10,0,0,0,42,42,42,32,56,50,53,52, + 32,84,105,109,101,114,32,48,32,115,112,101, + 101,100,32,119,114,111,110,103,44,32,103,111, + 116,32,37,100,32,115,104,111,117,108,100,32, + 98,101,32,49,48,48,48,10,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 9,37,120,58,32,119,97,110,116,32,37,120, + 32,103,111,116,32,37,120,10,0,0,0,0, + 45,45,45,32,82,65,77,32,84,101,115,116, + 32,111,102,32,37,120,32,116,111,32,37,120, + 32,102,97,105,108,101,100,10,0,0,0,0, + 42,42,42,32,82,65,77,32,84,101,115,116, + 32,111,102,32,37,120,32,116,111,32,37,120, + 32,112,97,115,115,101,100,10,0,0,0,0, + 35,35,35,32,68,77,65,32,68,79,78,69, + 32,110,101,118,101,114,32,111,99,99,117,114, + 114,101,100,46,32,32,99,115,114,32,61,32, + 37,120,10,0,35,35,35,32,72,111,115,116, + 32,110,101,118,101,114,32,103,111,116,32,68, + 77,65,32,105,110,116,101,114,114,117,112,116, + 46,32,98,99,95,99,110,116,32,61,32,37, + 100,10,0,0,35,35,35,32,68,77,65,32, + 101,114,114,111,114,32,97,116,32,105,110,100, + 101,120,32,37,100,58,32,119,97,110,116,101, + 100,32,37,48,50,120,32,103,111,116,32,37, + 48,50,120,10,0,0,0,0,35,35,35,32, + 73,108,108,101,103,97,108,32,72,111,115,116, + 32,97,100,100,114,32,40,61,37,120,41,32, + 111,114,32,108,101,110,103,116,104,32,40,61, + 37,100,41,10,0,0,0,0,35,35,35,32, + 67,111,117,110,116,32,99,97,110,110,111,116, + 32,98,101,32,62,32,49,48,50,52,42,49, + 48,50,52,10,0,0,0,0,42,42,42,32, + 108,99,108,46,66,117,102,49,32,61,32,37, + 120,32,45,45,62,32,104,111,115,116,46,66, + 117,102,32,61,32,37,120,32,45,45,62,32, + 108,99,108,46,66,117,102,50,32,61,32,37, + 120,10,0,0,42,42,42,32,62,32,68,98, + 32,37,100,32,40,98,117,114,115,116,41,59, + 32,62,32,68,119,32,37,100,32,40,119,97, + 105,116,115,116,97,116,101,115,41,10,0,0, + 35,35,35,32,83,101,99,111,110,100,32,97, + 114,103,32,109,117,115,116,32,98,101,32,39, + 114,39,32,111,114,32,39,119,39,32,111,114, + 32,39,108,39,10,0,0,0,42,42,42,32, + 68,77,65,32,37,115,32,105,110,32,37,52, + 100,32,98,121,116,101,32,99,104,117,110,107, + 115,58,32,0,32,32,116,111,32,104,111,115, + 116,0,0,0,102,114,111,109,32,104,111,115, + 116,0,0,0,37,56,100,32,98,121,116,101, + 115,47,115,101,99,46,10,0,116,105,109,101, + 32,116,111,111,32,115,104,111,114,116,32,116, + 111,32,109,101,97,115,117,114,101,10,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 80,37,100,45,62,37,115,32,10,0,0,0, + 116,114,97,110,115,109,105,116,32,112,101,110, + 100,105,110,103,32,111,110,32,37,100,10,0, + 116,114,97,110,115,109,105,116,32,99,111,110, + 102,105,103,32,111,110,32,37,100,10,0,0, + 116,114,97,110,115,109,105,116,32,116,99,110, + 10,0,0,0,116,99,110,32,101,120,112,10, + 0,0,0,0,102,111,114,119,97,114,100,95, + 100,101,108,97,121,32,101,120,112,32,37,100, + 10,0,0,0,109,101,115,115,97,103,101,95, + 97,103,101,32,101,120,112,32,37,100,10,0, + 104,111,108,100,32,101,120,112,32,37,100,10, + 0,0,0,0,84,120,67,79,78,70,73,71, + 37,100,10,0,84,120,84,67,78,37,100,10, + 0,0,0,0,114,99,118,32,99,111,110,102, + 105,103,32,111,110,32,37,100,10,0,0,0, + 90,69,82,79,32,114,111,111,116,33,32,97, + 116,32,37,120,32,0,0,0,115,117,112,101, + 114,99,101,100,101,115,32,37,100,10,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 65,82,80,82,69,81,32,37,120,33,10,0, + 65,82,80,82,69,80,32,37,120,33,10,0, + 83,101,110,100,32,85,68,80,32,37,100,10, + 0,0,0,0,78,111,32,82,66,68,39,115, + 32,105,110,32,85,68,80,32,40,37,100,32, + 37,100,41,10,0,0,0,0,83,101,110,116, + 32,85,68,80,32,37,100,10,0,0,0,0, + 83,78,77,80,32,39,37,99,39,32,108,101, + 110,32,37,100,10,0,0,0,69,110,118,111, + 121,32,114,99,61,37,100,10,0,0,0,0, + 71,101,110,32,116,114,97,112,32,37,100,32, + 114,99,61,37,100,10,0,0,66,97,100,32, + 85,68,80,32,99,104,101,99,107,115,117,109, + 32,37,120,32,108,101,110,32,37,100,10,0, + 66,97,100,32,85,68,80,32,108,101,110,103, + 116,104,32,119,97,110,116,32,37,100,32,103, + 111,116,32,37,100,10,0,0,66,97,100,32, + 73,67,77,80,32,99,104,101,99,107,115,117, + 109,10,0,0,78,111,32,82,66,68,39,115, + 32,105,110,32,73,67,77,80,10,0,0,0, + 66,97,100,32,73,80,32,99,104,101,99,107, + 115,117,109,10,0,0,0,0,84,114,117,110, + 99,97,116,101,100,32,73,80,10,0,0,0, + 83,69,78,84,32,73,80,88,33,10,0,0, + 110,111,32,115,121,115,78,97,109,101,0,0, + 114,105,103,104,116,115,119,105,116,99,104,45, + 0,0,0,0,78,111,32,82,66,68,39,115, + 32,105,110,32,115,101,110,100,95,115,97,112, + 10,0,0,0,78,111,32,82,66,68,39,115, + 32,105,110,32,73,80,88,10,0,0,0,0, + 84,114,117,110,99,97,116,101,100,32,73,80, + 88,10,0,0,0,0,0,0,0,0,0,0, + 77,97,108,108,111,99,32,114,101,116,117,114, + 110,115,32,78,85,76,76,33,0,0,0,0, + 0,0,0,0,0,0,0,0,68,105,103,105, + 32,73,110,116,108,46,32,82,105,103,104,116, + 83,119,105,116,99,104,32,83,69,45,88,0, + 73,110,116,101,108,32,56,50,53,57,54,0, + 0,0,0,0,0,0,0,0,8,206,0,131, + 36,206,0,131,92,206,0,131,112,206,0,131, + 132,206,0,131,220,206,0,131,4,207,0,131, + 4,207,0,131,36,207,0,131,52,207,0,131, + 80,207,0,131,104,207,0,131,132,207,0,131, + 160,207,0,131,188,207,0,131,188,207,0,131, + 216,207,0,131,240,207,0,131,12,208,0,131, + 40,208,0,131,72,208,0,131,112,208,0,131, + 180,210,0,131,232,210,0,131,4,211,0,131, + 36,211,0,131,60,211,0,131,0,0,0,0, + 64,213,0,131,92,213,0,131,124,213,0,131, + 160,213,0,131,60,214,0,131,60,214,0,131, + 60,214,0,131,188,213,0,131,216,213,0,131, + 244,213,0,131,28,214,0,131,168,214,0,131, + 60,214,0,131,168,214,0,131,168,214,0,131, + 88,214,0,131,132,214,0,131,0,0,0,0, + 36,216,0,131,68,216,0,131,104,216,0,131, + 140,216,0,131,140,216,0,131,0,0,0,0, + 248,217,0,131,12,218,0,131,40,218,0,131, + 76,218,0,131,124,218,0,131,152,218,0,131, + 200,218,0,131,228,218,0,131,88,219,0,131, + 116,219,0,131,64,224,0,131,92,224,0,131, + 124,224,0,131,152,224,0,131,184,224,0,131, + 0,0,0,0,110,111,32,115,121,115,67,111, + 110,116,97,99,116,0,0,0,110,111,32,115, + 121,115,78,97,109,101,0,0,110,111,32,115, + 121,115,76,111,99,97,116,105,111,110,0,0, + 37,115,58,37,100,58,32,102,97,105,108,101, + 100,32,97,115,115,101,114,116,105,111,110,32, + 96,37,115,39,10,0,0,0,110,117,109,114, + 101,103,115,32,60,61,32,78,86,82,65,77, + 95,78,82,69,71,83,32,38,38,32,110,117, + 109,114,101,103,115,32,62,32,48,0,0,0, + 102,105,114,115,116,114,101,103,32,60,32,78, + 86,82,65,77,95,78,82,69,71,83,32,38, + 38,32,102,105,114,115,116,114,101,103,32,62, + 61,32,48,0,0,0,0,0,10,13,69,82, + 82,79,82,32,45,0,0,0,0,0,0,0, + 192,244,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,192,251,0,131, + 8,252,0,131,8,252,0,131,200,251,0,131, + 212,251,0,131,212,251,0,131,212,251,0,131, + 212,251,0,131,212,251,0,131,212,251,0,131, + 212,251,0,131,212,251,0,131,212,251,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,200,244,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 212,249,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,20,245,0,131,8,245,0,131, + 84,247,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 8,252,0,131,8,252,0,131,244,251,0,131, + 8,252,0,131,8,252,0,131,48,246,0,131, + 8,252,0,131,8,252,0,131,8,252,0,131, + 240,250,0,131,8,252,0,131,132,248,0,131, + 8,252,0,131,8,252,0,131,160,249,0,131, + 72,46,1,131,228,47,1,131,152,46,1,131, + 132,47,1,131,0,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,228,47,1,131, + 228,47,1,131,228,47,1,131,144,47,1,131, + 108,46,1,131,108,46,1,131,108,46,1,131, + 152,46,1,131,152,46,1,131,228,47,1,131, + 108,46,1,131,20,50,1,131,216,50,1,131, + 56,50,1,131,224,50,1,131,104,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 216,50,1,131,216,50,1,131,216,50,1,131, + 144,50,1,131,20,50,1,131,20,50,1,131, + 20,50,1,131,56,50,1,131,56,50,1,131, + 216,50,1,131,20,50,1,131,124,53,1,131, + 96,53,1,131,96,53,1,131,96,53,1,131, + 96,53,1,131,96,53,1,131,96,53,1,131, + 96,53,1,131,96,53,1,131,96,53,1,131, + 96,53,1,131,96,53,1,131,96,53,1,131, + 96,53,1,131,88,53,1,131,64,53,1,131, + 80,53,1,131,72,53,1,131,64,53,1,131, + 0,0,0,0,28,83,1,131,36,83,1,131, + 36,83,1,131,36,83,1,131,36,83,1,131, + 28,83,1,131,44,83,1,131,44,83,1,131, + 44,83,1,131,44,83,1,131,44,83,1,131, + 28,83,1,131,44,83,1,131,0,0,0,0, + 196,88,1,131,232,88,1,131,208,88,1,131, + 220,88,1,131,244,88,1,131,0,0,0,0, + 4,0,0,0,5,0,0,0,6,0,0,0, + 7,0,0,0,2,0,0,0,3,0,0,0, + 0,0,0,0,1,0,0,0,72,30,0,131, + 72,30,0,131,216,44,0,131,0,30,0,131, + 108,30,0,131,108,30,0,131,108,30,0,131, + 108,30,0,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,20,137,1,131, + 204,136,1,131,132,136,1,131,56,136,1,131, + 236,135,1,131,172,135,1,131,120,135,1,131, + 52,135,1,131,232,134,1,131,160,134,1,131, + 80,134,1,131,8,134,1,131,188,133,1,131, + 120,133,1,131,0,0,0,0,0,0,0,0, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,72,72,72,72,72,72,72, + 72,72,72,72,72,0,0,0,0,255,85,170, + 0,0,0,0,4,0,8,0,16,0,32,0, + 64,0,0,1,0,8,0,0,0,0,0,0, + 0,0,0,0,0,4,3,2,1,0,0,0, + 7,0,0,0,1,0,1,0,1,0,2,0, + 20,0,15,0,1,0,0,128,128,0,0,0, + 100,0,0,0,96,207,1,131,92,207,1,131, + 88,207,1,131,84,207,1,131,80,207,1,131, + 0,0,0,0,0,0,0,0,48,49,50,51, + 52,53,54,55,56,57,65,66,67,68,69,70, + 0,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,64,204,0,131,156,202,0,131, + 96,148,1,131,1,0,4,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 200,155,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,124,204,0,131,156,202,0,131, + 168,210,1,131,1,0,6,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 4,156,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,132,204,0,131,156,202,0,131, + 4,1,0,163,1,0,67,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 64,156,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,168,204,0,131,248,204,0,131, + 80,18,3,131,1,0,4,3,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 124,156,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,168,204,0,131,32,205,0,131, + 96,18,3,131,1,0,4,3,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 184,156,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,168,204,0,131,72,205,0,131, + 112,18,3,131,1,0,4,3,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 244,156,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,112,205,0,131,156,202,0,131, + 2,0,0,0,1,0,2,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 48,157,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 220,155,1,131,2,0,0,0,24,156,1,131, + 3,0,0,0,84,156,1,131,4,0,0,0, + 144,156,1,131,5,0,0,0,204,156,1,131, + 6,0,0,0,8,157,1,131,7,0,0,0, + 68,157,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,120,205,0,131, + 156,202,0,131,48,211,1,131,1,0,2,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,172,157,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,4,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 124,148,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,6,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,220,5,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,66,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,4,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,3,180,208,0,131,132,205,0,131, + 228,209,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,67,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,180,208,0,131, + 132,205,0,131,164,202,0,131,76,209,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,66,1, + 180,208,0,131,132,205,0,131,164,202,0,131, + 76,209,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,6,1,180,208,0,131,132,205,0,131, + 164,202,0,131,76,209,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,0,0,232,157,1,131, + 2,0,0,0,16,158,1,131,3,0,0,0, + 56,158,1,131,4,0,0,0,96,158,1,131, + 5,0,0,0,136,158,1,131,6,0,0,0, + 176,158,1,131,7,0,0,0,216,158,1,131, + 8,0,0,0,0,159,1,131,9,0,0,0, + 40,159,1,131,10,0,0,0,80,159,1,131, + 11,0,0,0,120,159,1,131,12,0,0,0, + 160,159,1,131,13,0,0,0,200,159,1,131, + 14,0,0,0,240,159,1,131,15,0,0,0, + 24,160,1,131,16,0,0,0,64,160,1,131, + 17,0,0,0,104,160,1,131,18,0,0,0, + 144,160,1,131,19,0,0,0,184,160,1,131, + 20,0,0,0,224,160,1,131,21,0,0,0, + 8,161,1,131,22,0,0,0,48,161,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 32,208,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,192,157,1,131,2,0,0,0, + 40,208,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,112,205,0,131, + 60,210,0,131,2,0,0,0,1,0,2,3, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,56,162,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,120,205,0,131, + 60,210,0,131,0,17,3,131,1,0,2,3, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,116,162,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,4,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,176,162,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,8,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,236,162,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,12,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,40,163,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,16,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,100,163,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,20,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,160,163,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,24,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,220,163,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,28,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,24,164,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,32,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,84,164,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,36,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,144,164,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,40,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,204,164,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,120,205,0,131, + 156,202,0,131,44,17,3,131,1,0,2,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,8,165,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,48,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,68,165,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,52,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,128,165,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,56,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,188,165,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,60,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,248,165,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,64,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,52,166,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,68,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,112,166,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,64,1,44,202,0,131,88,210,0,131, + 164,202,0,131,120,211,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,44,202,0,131, + 88,210,0,131,164,202,0,131,120,211,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,64,1, + 44,202,0,131,88,210,0,131,164,202,0,131, + 120,211,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,44,202,0,131,88,210,0,131, + 164,202,0,131,120,211,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,44,202,0,131, + 88,210,0,131,164,202,0,131,120,211,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 172,166,1,131,2,0,0,0,212,166,1,131, + 3,0,0,0,252,166,1,131,4,0,0,0, + 36,167,1,131,5,0,0,0,76,167,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 56,208,1,131,0,0,0,0,0,0,0,0, + 1,0,64,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,3,84,212,0,131, + 16,212,0,131,52,212,0,131,172,212,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,3, + 84,212,0,131,16,212,0,131,52,212,0,131, + 172,212,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,3,84,212,0,131, + 16,212,0,131,52,212,0,131,172,212,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,3, + 84,212,0,131,16,212,0,131,52,212,0,131, + 172,212,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,64,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,3,84,212,0,131, + 16,212,0,131,52,212,0,131,172,212,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,1, + 84,212,0,131,16,212,0,131,164,202,0,131, + 172,212,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,64,3,84,212,0,131, + 16,212,0,131,52,212,0,131,172,212,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,3, + 84,212,0,131,16,212,0,131,52,212,0,131, + 172,212,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,6,1,84,212,0,131,16,212,0,131, + 164,202,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,0,0,180,167,1,131, + 2,0,0,0,220,167,1,131,3,0,0,0, + 4,168,1,131,4,0,0,0,44,168,1,131, + 5,0,0,0,84,168,1,131,6,0,0,0, + 124,168,1,131,7,0,0,0,164,168,1,131, + 8,0,0,0,204,168,1,131,9,0,0,0, + 244,168,1,131,10,0,0,0,28,169,1,131, + 11,0,0,0,68,169,1,131,12,0,0,0, + 108,169,1,131,13,0,0,0,148,169,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 72,208,1,131,0,0,0,0,0,0,0,0, + 1,0,2,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,4,3,84,212,0,131, + 16,212,0,131,52,212,0,131,172,212,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,64,3, + 84,212,0,131,16,212,0,131,52,212,0,131, + 172,212,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,3,84,212,0,131,16,212,0,131, + 52,212,0,131,172,212,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,0,0,60,170,1,131, + 2,0,0,0,100,170,1,131,3,0,0,0, + 140,170,1,131,4,0,0,0,180,170,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 88,208,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,72,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,20,171,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,0,0,76,162,1,131,2,0,0,0, + 136,162,1,131,3,0,0,0,196,162,1,131, + 4,0,0,0,0,163,1,131,5,0,0,0, + 60,163,1,131,6,0,0,0,120,163,1,131, + 7,0,0,0,180,163,1,131,8,0,0,0, + 240,163,1,131,9,0,0,0,44,164,1,131, + 10,0,0,0,104,164,1,131,11,0,0,0, + 164,164,1,131,12,0,0,0,224,164,1,131, + 13,0,0,0,28,165,1,131,14,0,0,0, + 88,165,1,131,15,0,0,0,148,165,1,131, + 16,0,0,0,208,165,1,131,17,0,0,0, + 12,166,1,131,18,0,0,0,72,166,1,131, + 19,0,0,0,132,166,1,131,20,0,0,0, + 64,208,1,131,21,0,0,0,80,208,1,131, + 22,0,0,0,96,208,1,131,23,0,0,0, + 40,171,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,144,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,16,172,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,148,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,76,172,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,152,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,136,172,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,156,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,196,172,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,160,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,0,173,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,164,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,60,173,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,168,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,120,173,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,172,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,180,173,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,176,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,240,173,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,180,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,44,174,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,184,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,104,174,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,188,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,164,174,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,192,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,224,174,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,196,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,28,175,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,200,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,88,175,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,204,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,148,175,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,208,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,208,175,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,212,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,12,176,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,216,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,72,176,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,220,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,132,176,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,224,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,192,176,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,228,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,252,176,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,232,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,56,177,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,236,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,116,177,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,240,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,176,177,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,244,16,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,236,177,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,0,0,36,172,1,131,2,0,0,0, + 96,172,1,131,3,0,0,0,156,172,1,131, + 4,0,0,0,216,172,1,131,5,0,0,0, + 20,173,1,131,6,0,0,0,80,173,1,131, + 7,0,0,0,140,173,1,131,8,0,0,0, + 200,173,1,131,9,0,0,0,4,174,1,131, + 10,0,0,0,64,174,1,131,11,0,0,0, + 124,174,1,131,12,0,0,0,184,174,1,131, + 13,0,0,0,244,174,1,131,14,0,0,0, + 48,175,1,131,15,0,0,0,108,175,1,131, + 16,0,0,0,168,175,1,131,17,0,0,0, + 228,175,1,131,18,0,0,0,32,176,1,131, + 19,0,0,0,92,176,1,131,20,0,0,0, + 152,176,1,131,21,0,0,0,212,176,1,131, + 22,0,0,0,16,177,1,131,23,0,0,0, + 76,177,1,131,24,0,0,0,136,177,1,131, + 25,0,0,0,196,177,1,131,26,0,0,0, + 0,178,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,112,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,0,179,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,116,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,60,179,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,120,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,120,179,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,76,210,0,131, + 156,202,0,131,124,17,3,131,1,0,65,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,180,179,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,200,212,0,131, + 156,202,0,131,220,5,0,163,1,0,64,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,240,179,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,112,205,0,131, + 156,202,0,131,161,0,0,0,1,0,2,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,44,180,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,0,0,4,180,1,131,2,0,0,0, + 64,180,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,120,208,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,20,179,1,131, + 2,0,0,0,80,179,1,131,3,0,0,0, + 140,179,1,131,4,0,0,0,200,179,1,131, + 5,0,0,0,128,208,1,131,0,0,0,0, + 0,0,0,0,1,0,2,1,44,202,0,131, + 208,212,0,131,164,202,0,131,196,214,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 44,202,0,131,208,212,0,131,164,202,0,131, + 196,214,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,208,212,0,131, + 164,202,0,131,196,214,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 208,212,0,131,164,202,0,131,196,214,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 44,202,0,131,208,212,0,131,164,202,0,131, + 196,214,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,208,212,0,131, + 164,202,0,131,196,214,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 208,212,0,131,164,202,0,131,196,214,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 44,202,0,131,208,212,0,131,164,202,0,131, + 196,214,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,208,212,0,131, + 164,202,0,131,196,214,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 208,212,0,131,164,202,0,131,196,214,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 44,202,0,131,208,212,0,131,164,202,0,131, + 196,214,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,208,212,0,131, + 164,202,0,131,196,214,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 208,212,0,131,164,202,0,131,196,214,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,6,1, + 44,202,0,131,208,212,0,131,164,202,0,131, + 196,214,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,0,0,192,180,1,131,2,0,0,0, + 232,180,1,131,3,0,0,0,16,181,1,131, + 4,0,0,0,56,181,1,131,5,0,0,0, + 96,181,1,131,6,0,0,0,136,181,1,131, + 7,0,0,0,176,181,1,131,8,0,0,0, + 216,181,1,131,9,0,0,0,0,182,1,131, + 10,0,0,0,40,182,1,131,11,0,0,0, + 80,182,1,131,13,0,0,0,120,182,1,131, + 16,0,0,0,160,182,1,131,17,0,0,0, + 200,182,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,144,208,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 160,208,1,131,2,0,0,0,168,208,1,131, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,184,208,1,131,2,0,0,0, + 192,208,1,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,208,208,1,131,2,0,0,0, + 216,208,1,131,3,0,0,0,224,208,1,131, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,240,208,1,131,2,0,0,0, + 248,208,1,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 8,209,1,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,24,209,1,131, + 2,0,0,0,32,209,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,48,209,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,64,209,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,232,208,1,131, + 2,0,0,0,0,209,1,131,3,0,0,0, + 16,209,1,131,4,0,0,0,40,209,1,131, + 5,0,0,0,56,209,1,131,6,0,0,0, + 72,209,1,131,0,0,0,0,0,0,0,0, + 2,0,0,0,152,208,1,131,6,0,0,0, + 176,208,1,131,7,0,0,0,200,208,1,131, + 8,0,0,0,80,209,1,131,0,0,0,0, + 0,0,0,0,7,0,0,0,88,209,1,131, + 0,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 128,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 8,185,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 144,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 68,185,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 148,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 128,185,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 132,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 188,185,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 136,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 248,185,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 140,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 52,186,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 156,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 112,186,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 160,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 172,186,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 164,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 232,186,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 168,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 36,187,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 172,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 96,187,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 176,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 156,187,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 180,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 216,187,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 184,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 20,188,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 188,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 80,188,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 192,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 140,188,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 196,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 200,188,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 200,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 4,189,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 204,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 64,189,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 208,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 124,189,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 212,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 184,189,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 220,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 244,189,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 224,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 48,190,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 228,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 108,190,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 232,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 168,190,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 236,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 228,190,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,92,215,0,131,156,202,0,131, + 240,17,3,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 32,191,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,104,215,0,131,140,215,0,131, + 0,0,0,0,1,0,2,3,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 92,191,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 28,185,1,131,2,0,0,0,88,185,1,131, + 3,0,0,0,148,185,1,131,4,0,0,0, + 208,185,1,131,5,0,0,0,12,186,1,131, + 6,0,0,0,72,186,1,131,8,0,0,0, + 132,186,1,131,9,0,0,0,192,186,1,131, + 10,0,0,0,252,186,1,131,11,0,0,0, + 56,187,1,131,12,0,0,0,116,187,1,131, + 13,0,0,0,176,187,1,131,14,0,0,0, + 236,187,1,131,15,0,0,0,40,188,1,131, + 16,0,0,0,100,188,1,131,17,0,0,0, + 160,188,1,131,18,0,0,0,220,188,1,131, + 19,0,0,0,24,189,1,131,20,0,0,0, + 84,189,1,131,21,0,0,0,144,189,1,131, + 22,0,0,0,204,189,1,131,24,0,0,0, + 8,190,1,131,25,0,0,0,68,190,1,131, + 26,0,0,0,128,190,1,131,27,0,0,0, + 188,190,1,131,28,0,0,0,248,190,1,131, + 29,0,0,0,52,191,1,131,30,0,0,0, + 112,191,1,131,0,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,180,215,0,131, + 156,202,0,131,218,12,3,131,1,0,4,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,128,192,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,120,205,0,131, + 156,202,0,131,40,211,1,131,1,0,2,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,188,192,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 8,202,0,131,148,38,1,131,112,205,0,131, + 156,202,0,131,2,0,0,0,1,0,2,1, + 32,45,1,131,208,48,1,131,160,49,1,131, + 20,48,1,131,248,192,1,131,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,44,202,0,131,200,215,0,131, + 164,202,0,131,196,216,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,44,202,0,131, + 200,215,0,131,164,202,0,131,196,216,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,6,1, + 44,202,0,131,200,215,0,131,164,202,0,131, + 196,216,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,200,215,0,131, + 164,202,0,131,196,216,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 200,215,0,131,164,202,0,131,196,216,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 52,193,1,131,2,0,0,0,92,193,1,131, + 3,0,0,0,132,193,1,131,4,0,0,0, + 172,193,1,131,5,0,0,0,212,193,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 112,209,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,148,192,1,131,2,0,0,0, + 208,192,1,131,3,0,0,0,12,193,1,131, + 4,0,0,0,120,209,1,131,0,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 112,205,0,131,156,202,0,131,3,0,0,0, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,100,194,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,60,210,0,131,216,12,3,131, + 1,0,2,3,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,160,194,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 104,217,0,131,156,202,0,131,0,0,0,0, + 1,0,67,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,220,194,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 104,217,0,131,156,202,0,131,0,0,0,0, + 1,0,65,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,24,195,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 112,217,0,131,156,202,0,131,216,12,3,131, + 1,0,4,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,84,195,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 120,205,0,131,156,202,0,131,224,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,144,195,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 120,205,0,131,156,202,0,131,228,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,204,195,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,156,202,0,131,232,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,8,196,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,156,202,0,131,234,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,68,196,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,156,202,0,131,246,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,128,196,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,156,202,0,131,236,12,3,131, + 1,0,2,1,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,188,196,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,60,210,0,131,238,12,3,131, + 1,0,2,3,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,248,196,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,60,210,0,131,240,12,3,131, + 1,0,2,3,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,52,197,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,8,202,0,131,148,38,1,131, + 92,217,0,131,60,210,0,131,242,12,3,131, + 1,0,2,3,32,45,1,131,208,48,1,131, + 160,49,1,131,20,48,1,131,112,197,1,131, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,180,219,0,131, + 132,217,0,131,164,202,0,131,104,220,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,3, + 180,219,0,131,132,217,0,131,0,221,0,131, + 104,220,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,180,219,0,131,132,217,0,131, + 164,202,0,131,104,220,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,3,180,219,0,131, + 132,217,0,131,0,221,0,131,104,220,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,2,3, + 180,219,0,131,132,217,0,131,0,221,0,131, + 104,220,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,4,1,180,219,0,131,132,217,0,131, + 164,202,0,131,104,220,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,180,219,0,131, + 132,217,0,131,164,202,0,131,104,220,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,4,1, + 180,219,0,131,132,217,0,131,164,202,0,131, + 104,220,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,4,1,180,219,0,131,132,217,0,131, + 164,202,0,131,104,220,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,180,219,0,131, + 132,217,0,131,164,202,0,131,104,220,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 172,197,1,131,2,0,0,0,212,197,1,131, + 3,0,0,0,252,197,1,131,4,0,0,0, + 36,198,1,131,5,0,0,0,76,198,1,131, + 6,0,0,0,116,198,1,131,7,0,0,0, + 156,198,1,131,8,0,0,0,196,198,1,131, + 9,0,0,0,236,198,1,131,10,0,0,0, + 20,199,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,136,209,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,120,194,1,131, + 2,0,0,0,180,194,1,131,3,0,0,0, + 240,194,1,131,4,0,0,0,44,195,1,131, + 5,0,0,0,104,195,1,131,6,0,0,0, + 164,195,1,131,7,0,0,0,224,195,1,131, + 8,0,0,0,28,196,1,131,9,0,0,0, + 88,196,1,131,10,0,0,0,148,196,1,131, + 11,0,0,0,208,196,1,131,12,0,0,0, + 12,197,1,131,13,0,0,0,72,197,1,131, + 14,0,0,0,132,197,1,131,15,0,0,0, + 144,209,1,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,76,210,0,131,156,202,0,131, + 160,211,1,131,1,0,65,1,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 44,200,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,8,202,0,131, + 148,38,1,131,120,205,0,131,60,210,0,131, + 140,1,0,163,1,0,2,3,32,45,1,131, + 208,48,1,131,160,49,1,131,20,48,1,131, + 104,200,1,131,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,4,1, + 44,202,0,131,36,222,0,131,164,202,0,131, + 48,223,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,44,202,0,131,36,222,0,131, + 164,202,0,131,48,223,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,2,1,44,202,0,131, + 36,222,0,131,164,202,0,131,48,223,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,0,0, + 164,200,1,131,2,0,0,0,204,200,1,131, + 3,0,0,0,244,200,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,168,209,1,131, + 0,0,0,0,0,0,0,0,1,0,2,1, + 44,202,0,131,212,223,0,131,164,202,0,131, + 252,224,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,2,1,44,202,0,131,212,223,0,131, + 164,202,0,131,252,224,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,65,1,44,202,0,131, + 212,223,0,131,164,202,0,131,252,224,0,131, + 0,0,0,0,0,0,0,0,255,0,0,0, + 255,0,0,0,0,0,0,0,1,0,65,1, + 44,202,0,131,212,223,0,131,164,202,0,131, + 252,224,0,131,0,0,0,0,0,0,0,0, + 255,0,0,0,255,0,0,0,0,0,0,0, + 1,0,65,1,44,202,0,131,212,223,0,131, + 164,202,0,131,252,224,0,131,0,0,0,0, + 0,0,0,0,255,0,0,0,255,0,0,0, + 0,0,0,0,1,0,0,0,76,201,1,131, + 2,0,0,0,116,201,1,131,3,0,0,0, + 156,201,1,131,4,0,0,0,196,201,1,131, + 5,0,0,0,236,201,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,184,209,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 64,200,1,131,2,0,0,0,124,200,1,131, + 3,0,0,0,176,209,1,131,4,0,0,0, + 192,209,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,128,209,1,131,2,0,0,0, + 152,209,1,131,3,0,0,0,160,209,1,131, + 4,0,0,0,200,209,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,24,208,1,131, + 2,0,0,0,48,208,1,131,4,0,0,0, + 104,208,1,131,5,0,0,0,112,208,1,131, + 7,0,0,0,136,208,1,131,10,0,0,0, + 96,209,1,131,11,0,0,0,104,209,1,131, + 17,0,0,0,208,209,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,216,209,1,131, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,240,209,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,8,210,1,131, + 2,0,0,0,16,210,1,131,3,0,0,0, + 24,210,1,131,4,0,0,0,32,210,1,131, + 5,0,0,0,40,210,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 56,210,1,131,2,0,0,0,64,210,1,131, + 0,0,0,0,0,0,0,0,1,0,0,0, + 72,210,1,131,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 48,210,1,131,2,0,0,0,80,210,1,131, + 3,0,0,0,88,210,1,131,0,0,0,0, + 0,0,0,0,1,0,0,0,16,208,1,131, + 2,0,0,0,224,209,1,131,3,0,0,0, + 232,209,1,131,4,0,0,0,248,209,1,131, + 5,0,0,0,0,210,1,131,6,0,0,0, + 96,210,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,104,210,1,131,0,0,0,0, + 0,0,0,0,6,0,0,0,112,210,1,131, + 0,0,0,0,0,0,0,0,3,0,0,0, + 120,210,1,131,0,0,0,0,0,0,0,0, + 1,0,0,0,128,210,1,131,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,6,0,0,0, + 1,0,0,0,2,0,0,0,1,0,0,0, + 10,0,0,0,7,0,0,0,8,0,0,0, + 2,0,0,0,2,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,112,117,98,108, + 105,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,112,114,105,118,97,116,101,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 83,78,77,80,95,116,114,97,112,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,6,0,0,0,1,0,0,0, + 4,0,0,0,1,0,0,0,76,1,0,0, + 5,0,0,0,1,0,0,0,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,6,0,0,0,1,0,0,0, + 2,0,0,0,1,0,0,0,2,0,0,0, + 2,0,0,0,1,0,0,0,1,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0, + 6,0,0,0,1,0,0,0,2,0,0,0, + 1,0,0,0,17,0,0,0,0,0,0,0, + 0,0,0,0,48,49,50,51,52,53,54,55, + 56,57,65,66,67,68,69,70,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 255,85,170,0,255,255,255,255,85,85,85,85, + 170,170,170,170,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,64,40,35,41, + 32,67,111,112,121,114,105,103,104,116,32,40, + 99,41,32,49,57,56,54,32,45,32,49,57, + 57,53,32,32,69,112,105,108,111,103,117,101, + 32,84,101,99,104,110,111,108,111,103,121,32, + 67,111,114,112,111,114,97,116,105,111,110,10, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255, + 72,10,0,0,78,10,0,0,83,10,0,0, + 69,10,0,0,109,97,105,110,46,99,0,0, + 48,0,0,0,55,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 0,0,0,0,116,105,109,101,114,46,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 100,0,0,0,100,0,0,0,1,0,0,0, + 0,0,0,0,115,114,99,32,0,0,0,0, + 32,0,0,0,100,115,116,32,0,0,0,0, + 32,37,48,50,88,0,0,0,10,0,0,0, + 255,255,255,255,48,48,48,48,48,48,0,0, + 48,48,48,48,48,49,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0, + 62,32,0,0,37,120,10,0,37,120,58,9, + 37,120,10,0,37,115,10,0,0,0,0,0, + 10,0,0,0,0,0,0,0,0,0,0,0, + 68,85,77,80,10,0,0,0,37,48,50,120, + 32,0,0,0,10,0,0,0,0,0,0,0, + 37,100,32,112,112,115,10,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,1,0,0,0, + 119,119,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,128,194,0, + 0,0,0,0,1,128,194,0,0,16,0,0, + 66,76,75,0,70,87,68,0,76,82,78,0, + 76,73,83,0,68,73,83,0,72,69,76,76, + 79,10,0,0,116,99,32,101,120,112,10,0, + 102,114,111,109,32,0,0,0,10,0,0,0, + 87,101,105,114,100,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,0,0,255,255,255,255,255,255,0,0, + 0,0,0,0,0,0,0,0,80,65,68,37, + 100,10,0,0,170,170,3,0,0,0,0,0, + 83,69,78,84,33,10,0,0,85,68,80,10, + 0,0,0,0,73,67,77,80,10,0,0,0, + 69,67,72,79,10,0,0,0,73,80,10,0, + 170,170,3,0,0,0,0,0,73,80,88,33, + 10,0,0,0,0,0,0,0,255,255,255,255, + 255,255,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,155,1,131,0,0,0,0, + 108,157,1,131,0,0,0,0,88,161,1,131, + 0,0,0,0,16,162,1,131,0,0,0,0, + 32,162,1,131,0,0,0,0,116,167,1,131, + 0,0,0,0,164,167,1,131,0,0,0,0, + 188,169,1,131,0,0,0,0,44,170,1,131, + 0,0,0,0,220,170,1,131,0,0,0,0, + 4,171,1,131,0,0,0,0,80,171,1,131, + 0,0,0,0,40,178,1,131,0,0,0,0, + 104,180,1,131,0,0,0,0,128,180,1,131, + 0,0,0,0,144,180,1,131,0,0,0,0, + 240,182,1,131,0,0,0,0,104,183,1,131, + 0,0,0,0,120,183,1,131,0,0,0,0, + 128,183,1,131,0,0,0,0,136,183,1,131, + 0,0,0,0,160,183,1,131,0,0,0,0, + 168,183,1,131,0,0,0,0,176,183,1,131, + 0,0,0,0,200,183,1,131,0,0,0,0, + 208,183,1,131,0,0,0,0,216,183,1,131, + 0,0,0,0,224,183,1,131,0,0,0,0, + 0,184,1,131,0,0,0,0,8,184,1,131, + 0,0,0,0,16,184,1,131,0,0,0,0, + 40,184,1,131,0,0,0,0,48,184,1,131, + 0,0,0,0,64,184,1,131,0,0,0,0, + 72,184,1,131,0,0,0,0,80,184,1,131, + 0,0,0,0,104,184,1,131,0,0,0,0, + 112,184,1,131,0,0,0,0,128,184,1,131, + 0,0,0,0,136,184,1,131,0,0,0,0, + 152,184,1,131,0,0,0,0,208,184,1,131, + 0,0,0,0,248,184,1,131,0,0,0,0, + 152,191,1,131,0,0,0,0,252,193,1,131, + 0,0,0,0,44,194,1,131,0,0,0,0, + 60,194,1,131,0,0,0,0,60,199,1,131, + 0,0,0,0,148,199,1,131,0,0,0,0, + 164,199,1,131,0,0,0,0,36,200,1,131, + 0,0,0,0,28,201,1,131,0,0,0,0, + 60,201,1,131,0,0,0,0,20,202,1,131, + 0,0,0,0,68,202,1,131,0,0,0,0, + 84,202,1,131,0,0,0,0,124,202,1,131, + 0,0,0,0,164,202,1,131,0,0,0,0, + 236,202,1,131,0,0,0,0,252,202,1,131, + 0,0,0,0,4,203,1,131,0,0,0,0, + 12,203,1,131,0,0,0,0,28,203,1,131, + 0,0,0,0,36,203,1,131,0,0,0,0, + 44,203,1,131,0,0,0,0,52,203,1,131, + 0,0,0,0,60,203,1,131,0,0,0,0, + 68,203,1,131,0,0,0,0,76,203,1,131, + 0,0,0,0,124,203,1,131,0,0,0,0, + 132,203,1,131,0,0,0,0,140,203,1,131, + 0,0,0,0,164,203,1,131,0,0,0,0, + 180,203,1,131,0,0,0,0,188,203,1,131, + 0,0,0,0,220,203,1,131,0,0,0,0, + 20,204,1,131,0,0,0,0,36,204,1,131, + 0,0,0,0,52,204,1,131,0,0,0,0, + 68,204,1,131,255,255,255,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0, + 10,0,0,0,10,0,0,0,0,205,1,131, + 10,0,0,0,7,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,110,118,114,97, + 109,46,99,0,114,99,0,0,48,120,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0 } ; -int dgrs_ncode = 112064 ; +int dgrs_ncode = 119520 ; diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_i82596.h linux/drivers/net/dgrs_i82596.h --- v2.1.16/linux/drivers/net/dgrs_i82596.h Sun Apr 21 11:40:09 1996 +++ linux/drivers/net/dgrs_i82596.h Sat Dec 21 17:23:21 1996 @@ -1,7 +1,7 @@ /* * i82596 ethernet controller bits and structures (little endian) * - * $Id: i82596.h,v 1.7 1996/03/18 15:31:47 rick Exp $ + * $Id: i82596.h,v 1.8 1996/09/03 11:19:03 rick Exp $ */ /************************************************************************/ @@ -73,10 +73,15 @@ union _I596_CB *next; I596_TBD *tbdp; ulong count; /* for speed */ - uchar addr[6]; -#if 1 /* We don't use these */ - ushort len; - uchar data[1]; + + /* Application defined data follows structure... */ + +#if 0 /* We don't use these intel defined ones */ + uchar addr[6]; + ushort len; + uchar data[1]; +#else + ulong dstchan;/* Used by multi-NIC mode */ #endif } I596_TFD; @@ -90,7 +95,7 @@ /************************************************************************/ typedef volatile struct _I596_RBD { -#if INTEL_RENTENTIVE +#if INTEL_RETENTIVE ushort count; /* Length of data in buf */ ushort offset; #else @@ -98,13 +103,15 @@ #endif vol struct _I596_RBD *next; /* Next buffer descriptor in list */ uchar *buf; /* Data buffer */ -#if INTEL_RENTENTIVE +#if INTEL_RETENTIVE ushort size; /* Size of buf (constant) */ ushort zero; #else ulong size; /* Size of buf (constant) */ #endif - /* application defined data */ + + /* Application defined data follows structure... */ + uchar chan; uchar refcnt; ushort len; @@ -129,10 +136,15 @@ vol struct _I596_RBD *rbdp; ushort count; /* Len of data in RFD: always 0 */ ushort size; /* Size of RFD buffer: always 0 */ -# if 1 /* We don't use these */ + + /* Application defined data follows structure... */ + +# if 0 /* We don't use these intel defined ones */ uchar addr[6]; ushort len; uchar data[1]; +# else + ulong dstchan;/* Used by multi-nic mode */ # endif } I596_RFD; @@ -381,7 +393,7 @@ /* cmd halfword values */ #define I596_SCB_ACK 0xF000 /* ACKNOWLEDGMENTS */ #define I596_SCB_ACK_CX 0x8000 /* Ack command completion */ -#define I596_SCB_ACK_FR 0x4000 /* Ack received frame */ +#define I596_SCB_ACK_FR 0x4000 /* Ack recieved frame */ #define I596_SCB_ACK_CNA 0x2000 /* Ack command unit not active */ #define I596_SCB_ACK_RNR 0x1000 /* Ack rcv unit not ready */ #define I596_SCB_ACK_ALL 0xF000 /* Ack everything */ @@ -407,7 +419,7 @@ /* status halfword values */ #define I596_SCB_STAT 0xF000 /* STATUS */ #define I596_SCB_CX 0x8000 /* command completion */ -#define I596_SCB_FR 0x4000 /* received frame */ +#define I596_SCB_FR 0x4000 /* recieved frame */ #define I596_SCB_CNA 0x2000 /* command unit not active */ #define I596_SCB_RNR 0x1000 /* rcv unit not ready */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/dgrs_plx9060.h linux/drivers/net/dgrs_plx9060.h --- v2.1.16/linux/drivers/net/dgrs_plx9060.h Sun Apr 21 11:40:09 1996 +++ linux/drivers/net/dgrs_plx9060.h Sat Dec 21 17:23:21 1996 @@ -18,7 +18,7 @@ #define PCI_INT_LINE 0x3C /* - * Registers accessible directly from PCI and local side. + * Registers accessable directly from PCI and local side. * Offset is from PCI side. Add PLX_LCL_OFFSET for local address. */ #define PLX_LCL_OFFSET 0x80 /* Offset of regs from local side */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/hdlcdrv.c linux/drivers/net/hdlcdrv.c --- v2.1.16/linux/drivers/net/hdlcdrv.c Wed Dec 18 15:58:47 1996 +++ linux/drivers/net/hdlcdrv.c Fri Dec 20 13:16:51 1996 @@ -28,8 +28,9 @@ * * History: * 0.1 21.09.96 Started - * 18.10.96 Changed to new user space access routines (copy_{to,from}_user) - * 13.12.96 Fixed for Linux networking changes. (JSN) + * 18.10.96 Changed to new user space access routines + * (copy_{to,from}_user) + * 0.2 21.11.96 various small changes */ /*****************************************************************************/ @@ -169,7 +170,7 @@ /* ---------------------------------------------------------------------- */ -#define tenms_to_2flags(s,tenms) ((tenms * s->ops->bitrate) / 100 / 16) +#define tenms_to_2flags(s,tenms) ((tenms * s->par.bitrate) / 100 / 16) /* ---------------------------------------------------------------------- */ /* @@ -624,8 +625,8 @@ s = (struct hdlcdrv_state *)dev->priv; if (cmd != SIOCDEVPRIVATE) { - if (s->ops->ioctl) - return s->ops->ioctl(dev, ifr, cmd); + if (s->ops && s->ops->ioctl) + return s->ops->ioctl(dev, ifr, &bi, cmd); return -ENOIOCTLCMD; } if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) @@ -633,8 +634,8 @@ switch (bi.cmd) { default: - if (s->ops->ioctl) - return s->ops->ioctl(dev, ifr, cmd); + if (s->ops && s->ops->ioctl) + return s->ops->ioctl(dev, ifr, &bi, cmd); return -ENOIOCTLCMD; case HDLCDRVCTL_GETCHANNELPAR: @@ -660,6 +661,7 @@ bi.data.mp.iobase = dev->base_addr; bi.data.mp.irq = dev->irq; bi.data.mp.dma = dev->dma; + bi.data.mp.dma2 = s->ptt_out.dma2; bi.data.mp.seriobase = s->ptt_out.seriobase; bi.data.mp.pariobase = s->ptt_out.pariobase; bi.data.mp.midiiobase = s->ptt_out.midiiobase; @@ -671,6 +673,7 @@ dev->base_addr = bi.data.mp.iobase; dev->irq = bi.data.mp.irq; dev->dma = bi.data.mp.dma; + s->ptt_out.dma2 = bi.data.mp.dma2; s->ptt_out.seriobase = bi.data.mp.seriobase; s->ptt_out.pariobase = bi.data.mp.pariobase; s->ptt_out.midiiobase = bi.data.mp.midiiobase; @@ -684,7 +687,7 @@ break; case HDLCDRVCTL_CALIBRATE: - s->hdlctx.calibrate = bi.data.calibrate * s->ops->bitrate / 16; + s->hdlctx.calibrate = bi.data.calibrate * s->par.bitrate / 16; return 0; case HDLCDRVCTL_GETSAMPLES: @@ -713,6 +716,15 @@ break; #endif /* HDLCDRV_DEBUG */ + case HDLCDRVCTL_DRIVERNAME: + if (s->ops && s->ops->drvname) { + strncpy(bi.data.drivername, s->ops->drvname, + sizeof(bi.data.drivername)); + break; + } + bi.data.drivername[0] = '\0'; + break; + } if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) return -EFAULT; @@ -721,30 +733,6 @@ } /* --------------------------------------------------------------------- */ -/* - * Fill in the MAC-level header - */ - -#ifdef CONFIG_AX25 -static int hdlcdrv_header(struct sk_buff *skb, struct device *dev, - unsigned short type, void *daddr, void *saddr, - unsigned len) -{ - return ax25_encapsulate(skb, dev, type, daddr, saddr, len); -} - -/* --------------------------------------------------------------------- */ -/* - * Rebuild the MAC-level header - */ - -static int hdlcdrv_rebuild_header(struct sk_buff *skb) -{ - return ax25_rebuild_header(skb); -} -#endif /* CONFIG_AX25 */ - -/* --------------------------------------------------------------------- */ /* * Check for a network adaptor of this type, and return '0' if one exists. @@ -808,8 +796,8 @@ skb_queue_head_init(&s->send_queue); #ifdef CONFIG_AX25 - dev->hard_header = hdlcdrv_header; - dev->rebuild_header = hdlcdrv_rebuild_header; + dev->hard_header = ax25_encapsulate; + dev->rebuild_header = ax25_rebuild_header; #else /* CONFIG_AX25 */ dev->hard_header = NULL; dev->rebuild_header = NULL; @@ -916,9 +904,9 @@ int init_module(void) { - printk(KERN_INFO "hdlcdrv: v0.1 (C) 1996 Thomas Sailer HB9JNX/AE4WA\n"); - printk(KERN_INFO "hdlcdrv: compiled %s %s\n", __TIME__, __DATE__); - + printk(KERN_INFO "hdlcdrv: (C) 1996 Thomas Sailer HB9JNX/AE4WA\n"); + printk(KERN_INFO "hdlcdrv: version 0.2 compiled %s %s\n", + __TIME__, __DATE__); register_symtab(&hdlcdrv_syms); return 0; } diff -u --recursive --new-file v2.1.16/linux/drivers/net/hydra.c linux/drivers/net/hydra.c --- v2.1.16/linux/drivers/net/hydra.c Mon May 20 07:54:28 1996 +++ linux/drivers/net/hydra.c Fri Dec 20 11:20:00 1996 @@ -32,7 +32,6 @@ #include #include -#include #include #include #include @@ -92,7 +91,7 @@ static int hydra_open(struct device *dev); static int hydra_start_xmit(struct sk_buff *skb, struct device *dev); -static void hydra_interrupt(int irq, struct pt_regs *fp, void *data); +static void hydra_interrupt(int irq, void *data, struct pt_regs *fp); static void __inline__ hydra_rx(struct device *dev, struct hydra_private *priv, volatile u_char *nicbase); static int hydra_close(struct device *dev); static struct enet_statistics *hydra_get_stats(struct device *dev); @@ -272,7 +271,7 @@ dev->interrupt = 0; dev->start = 1; - if(!add_isr(IRQ_AMIGA_PORTS, hydra_interrupt, 0, dev, "Hydra Ethernet")) + if(request_irq(IRQ_AMIGA_PORTS, hydra_interrupt, 0, "Hydra Ethernet", dev)) return(-EAGAIN); MOD_INC_USE_COUNT; @@ -300,7 +299,7 @@ /* wait for NIC to stop (what a nice timeout..) */ while(((READ_REG(NIC_ISR) & ISR_RST) == 0) && --n); - remove_isr(IRQ_AMIGA_PORTS, hydra_interrupt, dev); + free_irq(IRQ_AMIGA_PORTS, dev); MOD_DEC_USE_COUNT; @@ -308,7 +307,7 @@ } -static void hydra_interrupt(int irq, struct pt_regs *fp, void *data) +static void hydra_interrupt(int irq, void *data, struct pt_regs *fp) { volatile u_char *nicbase; diff -u --recursive --new-file v2.1.16/linux/drivers/net/ibmtr.c linux/drivers/net/ibmtr.c --- v2.1.16/linux/drivers/net/ibmtr.c Sat Nov 30 12:03:08 1996 +++ linux/drivers/net/ibmtr.c Sat Dec 21 13:16:57 1996 @@ -54,11 +54,7 @@ - restructured the READ.LOG logic to prevent the transmit SRB from being rudely overwritten before the transmit cycle is complete. (August 15 1996) - - Warnings !!!!!!!!!!!!!! - This driver is only partially sanitized for support of multiple - adapters. It will almost definitely fail if more than one - active adapter is identified. + - completed multiple adapter support. (November 20 1996) */ #ifdef PCMCIA @@ -85,11 +81,13 @@ /* some 95 OS send many non UI frame; this allow removing the warning */ #define TR_FILTERNONUI 1 +/* use memcpy to read/write frame data instead of for-loop */ +#define USE_MEMCPY 1 + /* version and credits */ -static const char *version = -"ibmtr.c: v1.3.57 8/7/94 Peter De Schrijver and Mark Swanson\n" -" modified 10/3/94 DW Morris, modified at VIA, ECP, France\n" -" (3/9/95 F Farid and P Andre, 9/7/95 PA and 2/20/95 ML/PA/YD)\n"; +static char *version = +"ibmtr.c: v1.3.57 8/ 7/94 Peter De Schrijver and Mark Swanson\n" +" v2.1.10 11/20/96 Paul Norton \n"; static char pcchannelid[]={0x05, 0x00, 0x04, 0x09, 0x04, 0x03, 0x04, 0x0f, @@ -137,9 +135,11 @@ char *adapter_def(char type) { switch (type) { - case 0xF : return "Adapter/A"; - case 0xE : return "16/4 Adapter/II"; - default : return "adapter"; + case 0xF : return "PC Adapter | PC Adapter II | Adapter/A"; + case 0xE : return "16/4 Adapter | 16/4 Adapter/A (long)"; + case 0xD : return "16/4 Adapter/A (short) | 16/4 ISA-16 Adapter"; + case 0xC : return "Auto 16/4 Adapter"; + default : return "adapter (unknown type)"; }; }; #endif @@ -153,11 +153,8 @@ #define TRC_INIT 0x01 /* Trace initialization & PROBEs */ #define TRC_INITV 0x02 /* verbose init trace points */ -/* addresses to scan */ -static short TokBaseAddrs[] = { MMIOStartLocP, MMIOStartLocA }; - - -int tok_probe(struct device *dev); +int ibmtr_probe(struct device *dev); +static int ibmtr_probe1(struct device *dev, int ioaddr); unsigned char get_sram_size(struct tok_info *adapt_info); static int tok_init_card(struct device *dev); @@ -178,6 +175,8 @@ void tr_readlog(struct device *dev); static struct timer_list tr_timer={NULL,NULL,0,0L,tok_open_adapter}; +static unsigned int ibmtr_portlist[] = {0xa20, 0xa24, 0}; +static __u32 ibmtr_mem_base = 0xd0000; #if 0 int DummyCallCount=0; @@ -204,138 +203,122 @@ printk("\n"); } -/* tok_probe(): Routine specified in the network device structure +/* ibmtr_probe(): Routine specified in the network device structure to probe for an IBM Token Ring Adapter. Routine outline: I. Interrogate hardware to determine if an adapter exists and what the speeds and feeds are II. Setup data structures to control execution based upon adapter characteristics. III. Initialize adapter operation - We expect tok_probe to be called once for each device entry + We expect ibmtr_probe to be called once for each device entry which references it. */ +int ibmtr_probe(struct device *dev) +{ + int i; + int base_addr = dev ? dev->base_addr : 0; + + if (base_addr > 0x1ff) { /* check a single specified location. */ + if (ibmtr_probe1(dev, base_addr)) { +#ifndef MODULE + tr_freedev(dev); +#endif + return -ENODEV; + } else { + return 0; + } + } + else if (base_addr != 0) /* Don't probe at all. */ + return -ENXIO; -int tok_probe(struct device *dev) + for (i = 0; ibmtr_portlist[i]; i++) { + int ioaddr = ibmtr_portlist[i]; + if (check_region(ioaddr, IBMTR_IO_EXTENT)) + continue; + if (ibmtr_probe1(dev, ioaddr)) { +#ifndef MODULE + tr_freedev(dev); +#endif + } else { + return 0; + } + } + + return -ENODEV; +} + +static int ibmtr_probe1(struct device *dev, int PIOaddr) { unsigned char segment=0, intr=0, irq=0, i=0, j=0, cardpresent=NOTOK,temp=0; __u32 t_mmio=0; - short PIOaddr=0, iAddr; struct tok_info *ti=0; - static struct tok_info *badti=0; /* if fail after kmalloc, reuse */ - - static unsigned char Shared_Ram_Base = IBMTR_SHARED_RAM_BASE; - - /* this is the major adapter probe loop. For each call to tok_probe, - we try each remaining entry in TokBaseAddrs[] as a possible - adapter. Once an entry is rejected or assigned, we zero it to - avoid duplicate use or worthless trial for the tok probe call*/ - - for (iAddr=0; - iAddr < (sizeof(TokBaseAddrs)/sizeof(short))&&PIOaddr==0; iAddr++) { - - __u32 cd_chanid; - unsigned char *tchanid, ctemp; - - PIOaddr=TokBaseAddrs[iAddr]; /* address to try */ - TokBaseAddrs[iAddr] = 0; /* (and marked already used */ - if (PIOaddr == 0) continue; /* already tried this addr */ - - /* Make sure PIO address not already assigned - elsewhere before we muck with IO address */ - if (check_region(PIOaddr,TR_IO_EXTENT)) { - if (ibmtr_debug_trace & TRC_INIT) - DPRINTK("check_region(%4hx,%d) failed.\n", PIOaddr, TR_IO_EXTENT); - PIOaddr = 0; - continue; /* clear to flag fail and try next */ - } - /* Query the adapter PIO base port which will return - indication of where MMIO was placed (per tech ref - this assignment is done by BIOS - what is rational for - where it is?). We also have a coded interrupt address. */ - - segment = inb(PIOaddr); - /* out of range values so we'll assume non-existent IO device */ - if (segment < 0x40 || segment > 0xe0) { - PIOaddr = 0; - continue; /* clear to flag fail and try next */ - } - - /* Compute the linear base address of the MMIO area - as LINUX doesn't care about segments */ - t_mmio=(((__u32)(segment & 0xfc) << 11) + 0x80000); - intr = segment & 0x03; /* low bits is coded interrupt # */ - if (ibmtr_debug_trace & TRC_INIT) - DPRINTK("PIOaddr: %4hx seg/intr: %2x mmio base: %08X intr: %d\n", PIOaddr, (int)segment, t_mmio, (int)intr); - - /* Now we will compare expected 'channelid' strings with - what we is there to learn of ISA/MCA or not TR card */ - /* !!!WARNING:!!!! It seems pretty silly to blunder ahead - w/o verification that the mmio address we have found - is valid storage -- perhaps this is tolerable for current - hardware state??? */ - - cd_chanid = (CHANNEL_ID + t_mmio); /* for efficiency */ - tchanid=pcchannelid; - cardpresent=TR_ISA; /* try ISA */ - - /* suboptimize knowing first byte different */ - ctemp = readb(cd_chanid) & 0x0f; - if (ctemp != *tchanid) { /* NOT ISA card, try MCA */ - tchanid=mcchannelid; - cardpresent=TR_MCA; - if (ctemp != *tchanid) /* Neither ISA nor MCA */ - cardpresent=NOTOK; - } + __u32 cd_chanid; + unsigned char *tchanid, ctemp; + +#ifndef MODULE + dev = init_trdev(dev,0); +#endif + + /* Query the adapter PIO base port which will return + indication of where MMIO was placed. We also have a + coded interrupt number. */ + + segment = inb(PIOaddr); + /* out of range values so we'll assume non-existent IO device */ + if (segment < 0x40 || segment > 0xe0) + return -ENODEV; + + /* Compute the linear base address of the MMIO area + as LINUX doesn't care about segments */ + t_mmio=(((__u32)(segment & 0xfc) << 11) + 0x80000); + intr = segment & 0x03; /* low bits is coded interrupt # */ + if (ibmtr_debug_trace & TRC_INIT) + DPRINTK("PIOaddr: %4hx seg/intr: %2x mmio base: %08X intr: %d\n", + PIOaddr, (int)segment, t_mmio, (int)intr); + + /* Now we will compare expected 'channelid' strings with + what we is there to learn of ISA/MCA or not TR card */ + cd_chanid = (CHANNEL_ID + t_mmio); /* for efficiency */ + tchanid=pcchannelid; + cardpresent=TR_ISA; /* try ISA */ + + /* suboptimize knowing first byte different */ + ctemp = readb(cd_chanid) & 0x0f; + if (ctemp != *tchanid) { /* NOT ISA card, try MCA */ + tchanid=mcchannelid; + cardpresent=TR_MCA; + if (ctemp != *tchanid) /* Neither ISA nor MCA */ + cardpresent=NOTOK; + } - if (cardpresent != NOTOK) { /* know presumed type, try rest of ID */ - for (i=2,j=1; i<=46; i=i+2,j++) { - if ((readb(cd_chanid+i) & 0x0f) != tchanid[j]) { - cardpresent=NOTOK; /* match failed, not TR card */ - break; - } + if (cardpresent != NOTOK) { /* know presumed type, try rest of ID */ + for (i=2,j=1; i<=46; i=i+2,j++) { + if ((readb(cd_chanid+i) & 0x0f) != tchanid[j]) { + cardpresent=NOTOK; /* match failed, not TR card */ + break; } } + } - /* If we have an ISA board check for the ISA P&P version, - as it has different IRQ settings */ - if (cardpresent == TR_ISA && (readb(AIPFID + t_mmio)==0x0e)) - cardpresent=TR_ISAPNP; - - if (cardpresent == NOTOK) { /* "channel_id" did not match, report */ - if (ibmtr_debug_trace & TRC_INIT) { - DPRINTK("Channel ID string not found for PIOaddr: %4hx\n", PIOaddr); - DPRINTK("Expected for ISA: "); PrtChanID(pcchannelid,1); - DPRINTK(" found: "); HWPrtChanID(cd_chanid,2); - DPRINTK("Expected for MCA: "); PrtChanID(mcchannelid,1); - } - PIOaddr = 0; /* all to know not found yet */ - continue; + /* If we have an ISA board check for the ISA P&P version, + as it has different IRQ settings */ + if (cardpresent == TR_ISA && (readb(AIPFID + t_mmio)==0x0e)) + cardpresent=TR_ISAPNP; + + if (cardpresent == NOTOK) { /* "channel_id" did not match, report */ + if (ibmtr_debug_trace & TRC_INIT) { + DPRINTK("Channel ID string not found for PIOaddr: %4hx\n", PIOaddr); + DPRINTK("Expected for ISA: "); PrtChanID(pcchannelid,1); + DPRINTK(" found: "); HWPrtChanID(cd_chanid,2); + DPRINTK("Expected for MCA: "); PrtChanID(mcchannelid,1); } + return -ENODEV; + } - /* !!!! we could tighten validation by checking the HW Address - against the 1-s complement.. Move the get HW logic to here */ + /* Now, allocate some of the pl0 buffers for this driver.. */ + ti = (struct tok_info *)kmalloc(sizeof(struct tok_info), GFP_KERNEL); + if (ti == NULL) return -ENOMEM; - } - - /* The search loop has either completed with a presumed TR adapter - or none found. Check situation ... march on if possible */ - - if (PIOaddr == 0) { /* failed to find a valid TR adapter */ - if (ibmtr_debug_trace & TRC_INIT) - DPRINTK("Unable to assign adapter to device.\n"); - return ENODEV; - } - - /*?? Now, allocate some of the pl0 buffers for this driver.. */ - - if (!badti) { - ti = (struct tok_info *)kmalloc(sizeof(struct tok_info), GFP_KERNEL); - if (ti == NULL) return -ENOMEM; - } else { - ti = badti; - badti = NULL; - } /*?? dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL); */ - memset(ti, 0, sizeof(struct tok_info)); ti->mmio= t_mmio; @@ -354,6 +337,7 @@ if (intr==2) irq=6; if (intr==3) irq=7; ti->global_int_enable=GLOBAL_INT_ENABLE+((irq==9) ? 2 : irq); + ti->adapter_int_enable=PIOaddr+ADAPTINTREL; ti->sram=0; #if !TR_NEWFORMAT DPRINTK("ti->global_int_enable: %04X\n",ti->global_int_enable); @@ -365,6 +349,7 @@ if (intr==2) irq=10; if (intr==3) irq=11; ti->global_int_enable=0; + ti->adapter_int_enable=0; ti->sram=((__u32)(inb(PIOaddr+ADAPTRESETREL) & 0xfe) << 12); break; case TR_ISAPNP: @@ -375,6 +360,7 @@ while(!readb(ti->mmio + ACA_OFFSET + ACA_RW + RRR_EVEN)); ti->sram=((__u32)readb(ti->mmio + ACA_OFFSET + ACA_RW + RRR_EVEN)<<12); ti->global_int_enable=PIOaddr+ADAPTINTREL; + ti->adapter_int_enable=PIOaddr+ADAPTINTREL; break; } @@ -425,7 +411,7 @@ /* Support paging? What sizes?: F=no, E=16k, D=32k, C=16 & 32k */ ti->shared_ram_paging = readb(ti->mmio + AIPSHRAMPAGE); - /* Available DHB 4Mb size: F=2048, E=4096, D=4464 */ + /* Available DHB 4Mb size: F=2048, E=4096, D=4464 */ ti->dhb_size4mb = readb(ti->mmio + AIP4MBDHB); /* Available DHB 16Mb size: F=2048, E=4096, D=8192, C=16384, B=17960 */ @@ -446,7 +432,7 @@ paging), then only one adapter can be supported. */ /* determine how much of total RAM is mapped into PC space */ - ti->mapped_ram_size=1<<(((readb(ti->mmio+ ACA_OFFSET + ACA_RW + RRR_ODD)) >>2) +4); + ti->mapped_ram_size=1<<((((readb(ti->mmio+ ACA_OFFSET + ACA_RW + RRR_ODD)) >>2) & 0x03) + 4); ti->page_mask=0; if (ti->shared_ram_paging == 0xf) { /* No paging in adapter */ ti->mapped_ram_size = ti->avail_shared_ram; @@ -478,11 +464,13 @@ R/O and I can't find how to select which page size Also, the above conditional statement sequence is invalid as page_mask will always be set by the second stmt */ - badti=ti; + kfree_s(ti, sizeof(struct tok_info)); + return -ENODEV; break; default: DPRINTK("Unknown shared ram paging info %01X\n",ti->shared_ram_paging); - badti=ti; /* bail out if bad code */ + kfree_s(ti, sizeof(struct tok_info)); + return -ENODEV; break; } if (ti->page_mask) { @@ -500,58 +488,59 @@ /* finish figuring the shared RAM address */ if (cardpresent==TR_ISA) { - static unsigned char ram_bndry_mask[]={0xfe, 0xfc, 0xf8, 0xf0}; - unsigned char new_base, rrr_32, chk_base, rbm; - rrr_32 = (readb(ti->mmio+ ACA_OFFSET + ACA_RW + RRR_ODD))>>2; + static __u32 ram_bndry_mask[]={0xffffe000, 0xffffc000, 0xffff8000, 0xffff0000}; + __u32 new_base, rrr_32, chk_base, rbm; + + rrr_32 = ((readb(ti->mmio+ ACA_OFFSET + ACA_RW + RRR_ODD))>>2) & 0x00000003; rbm = ram_bndry_mask[rrr_32]; - new_base = (Shared_Ram_Base + (~rbm)) & rbm; /* up to boundary */ - chk_base = new_base + (ti->mapped_ram_size>>3); - if (chk_base > (IBMTR_SHARED_RAM_BASE+IBMTR_SHARED_RAM_SIZE)) { + new_base = (ibmtr_mem_base + (~rbm)) & rbm; /* up to boundary */ + chk_base = new_base + (ti->mapped_ram_size<<9); + if (chk_base > (ibmtr_mem_base + IBMTR_SHARED_RAM_SIZE)) { DPRINTK("Shared RAM for this adapter (%05x) exceeds driver" " limit (%05x), adapter not started.\n", - chk_base<<12, (IBMTR_SHARED_RAM_BASE+ - IBMTR_SHARED_RAM_SIZE)<<12); - badti=ti; + chk_base, ibmtr_mem_base + IBMTR_SHARED_RAM_SIZE); + kfree_s(ti, sizeof(struct tok_info)); + return -ENODEV; } else { /* seems cool, record what we have figured out */ - ti->sram_base = new_base; - Shared_Ram_Base = new_base; + ti->sram_base = new_base >> 12; + ibmtr_mem_base = chk_base; } } - /* dwm: irq and other final setup moved here so if we find other - unrecognized values OR shared ram conflicts, we can still - bail out in a rather benign fashion. */ - - if (badti) return ENODEV; #if !TR_NEWFORMAT DPRINTK("Using %dK shared RAM\n",ti->mapped_ram_size/2); #endif - if (request_irq (dev->irq = irq, &tok_interrupt,0,"IBM TR", NULL) != 0) { + if (request_irq (dev->irq = irq, &tok_interrupt,0,"ibmtr", NULL) != 0) { DPRINTK("Could not grab irq %d. Halting Token Ring driver.\n",irq); - badti = ti; /* keep track of unused tok_info */ - return ENODEV; + kfree_s(ti, sizeof(struct tok_info)); + return -ENODEV; } irq2dev_map[irq]=dev; /*?? Now, allocate some of the PIO PORTs for this driver.. */ - request_region(PIOaddr,TR_IO_EXTENT,"ibmtr"); /* record PIOaddr range + request_region(PIOaddr,IBMTR_IO_EXTENT,"ibmtr"); /* record PIOaddr range as busy */ #if !TR_NEWFORMAT DPRINTK("%s",version); /* As we have passed card identification, let the world know we're here! */ #else - printk("%s",version); - DPRINTK("%s %s found using irq %d, PIOaddr %4hx, %dK shared RAM.\n", - channel_def[cardpresent-1], adapter_def(ti->adapter_type), irq, - PIOaddr, ti->mapped_ram_size/2); + + if (version) { + printk("%s",version); + version = NULL; + } + DPRINTK("%s %s found\n", + channel_def[cardpresent-1], adapter_def(ti->adapter_type)); + DPRINTK("using irq %d, PIOaddr %hx, %dK shared RAM.\n", + irq, PIOaddr, ti->mapped_ram_size/2); DPRINTK("Hardware address : %02X:%02X:%02X:%02X:%02X:%02X\n", dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); #endif dev->base_addr=PIOaddr; /* set the value for device */ - + trdev_init(dev); tok_init_card(dev); @@ -593,7 +582,11 @@ dev->get_stats = NULL; dev->get_stats = tok_get_stats; dev->set_multicast_list = NULL; + +#ifndef MODULE tr_setup(dev); +#endif + return 0; } @@ -638,6 +631,8 @@ DPRINTK("close adapter failed: %02X\n", (int)readb(ti->srb + offsetof(struct srb_close_adapter, ret_code))); + dev->start = 0; + DPRINTK("Adapter closed.\n"); MOD_DEC_USE_COUNT; return 0; @@ -647,14 +642,25 @@ { unsigned char status; struct tok_info *ti; - struct device *dev = (struct device *)(irq2dev_map[irq]); + struct device *dev; #if TR_VERBOSE DPRINTK("Int from tok_driver, dev : %p\n",dev); #endif + dev = (struct device *)(irq2dev_map[irq]); + ti = (struct tok_info *) dev->priv; - ti=(struct tok_info *) dev->priv; - + /* Disable interrupts till processing is finished */ + dev->interrupt=1; + writeb((~INT_ENABLE), ti->mmio + ACA_OFFSET + ACA_RESET + ISRP_EVEN); + + /* Reset interrupt for ISA boards */ + if (ti->adapter_int_enable) + outb(0,ti->adapter_int_enable); + else + outb(0,ti->global_int_enable); + + switch (ti->do_tok_int) { case NOT_FIRST: @@ -663,15 +669,6 @@ the extra levels of logic and call depth for the original solution. */ - dev->interrupt=1; - - /* Disable interrupts till processing is finished */ - writeb((~INT_ENABLE), ti->mmio + ACA_OFFSET + ACA_RESET + ISRP_EVEN); - - /* Reset interrupt for ISA boards */ - if (ti->global_int_enable) - outb(0, ti->global_int_enable); - status=readb(ti->mmio + ACA_OFFSET + ACA_RW + ISRP_ODD); #ifdef PCMCIA /* Check if the PCMCIA card was pulled. */ @@ -1022,19 +1019,13 @@ ti=(struct tok_info *) dev->priv; - writeb(~INT_ENABLE, ti->mmio + ACA_OFFSET + ACA_RESET + ISRP_EVEN); - - /* Reset interrupt for ISA boards */ - if (ti->global_int_enable) outb(0,ti->global_int_enable); - ti->do_tok_int=NOT_FIRST; #ifndef TR_NEWFORMAT DPRINTK("Initial tok int received\n"); #endif - /* we assign the address for ISA devices; set RRR even to D000 for - shared RAM address */ + /* we assign the shared-ram address for ISA devices */ if(!ti->sram) { writeb(ti->sram_base, ti->mmio + ACA_OFFSET + ACA_RW + RRR_EVEN); ti->sram=((__u32)ti->sram_base << 12); @@ -1042,6 +1033,9 @@ ti->init_srb=ti->sram +ntohs((unsigned short)readw(ti->mmio+ ACA_OFFSET + WRBR_EVEN)); SET_PAGE(ntohs((unsigned short)readw(ti->mmio+ACA_OFFSET + WRBR_EVEN))); + + dev->mem_start = ti->sram; + dev->mem_end = ti->sram + (ti->mapped_ram_size<<9) - 1; #if TR_VERBOSE { @@ -1067,7 +1061,7 @@ DPRINTK("encoded addr (%04X,%04X,%08X): ", hw_encoded_addr, ntohs(hw_encoded_addr), encoded_addr); #else - DPRINTK("Initial interrupt : shared RAM located at %08X.\n", encoded_addr); + DPRINTK("Initial interrupt : shared RAM located at %08x.\n", ti->sram); #endif ti->auto_ringspeedsave=readb(ti->init_srb @@ -1258,17 +1252,27 @@ /* header length including rif is computed above, now move the data and set fields appropriately. */ +#if USE_MEMCPY + memcpy_toio(dhb, ti->current_skb->data, hdr_len); +#else for (i=0; icurrent_skb->data +i), dhb++); +#endif writeb(hdr_len, ti->asb + offsetof(struct asb_xmit_resp, hdr_length)); writew(htons(ti->current_skb->len-sizeof(struct trh_hdr)+hdr_len), ti->asb + offsetof(struct asb_xmit_resp, frame_length)); /* now copy the actual packet data next to hdr */ +#if USE_MEMCPY + memcpy_toio(dhb + hdr_len, + ti->current_skb->data + sizeof(struct trh_hdr), + ti->current_skb->len - sizeof(struct trh_hdr)); +#else for (i=0; icurrent_skb->len-sizeof(struct trh_hdr); i++) writeb(*(unsigned char *)(ti->current_skb->data +sizeof(struct trh_hdr)+i), dhb+i); +#endif writeb(RESP_IN_ASB, ti->mmio + ACA_OFFSET + ACA_SET + ISRA_ODD); dev->tbusy=0; @@ -1386,9 +1390,12 @@ skb->dev=dev; data=skb->data; +#if USE_MEMCPY + memcpy_fromio(data, rbuffer + offsetof(struct rec_buf, data), lan_hdr_len); +#else for (i=0; itrans_start; if (ticks_waitedtrans_start+=5; /* we fake the transmission start time... */ return 1; } @@ -1502,42 +1507,55 @@ #ifdef MODULE - -static char devicename[9] = { 0, }; -static struct device dev_ibmtr = { - devicename, /* device name is inserted by linux/drivers/net/net_init.c */ - 0, 0, 0, 0, - 0, 0, - 0, 0, 0, NULL, tok_probe }; - -static int io = 0xa20; -static char *device = NULL; +/* 3COM 3C619C supports 8 interrupts, 32 I/O ports */ +static struct device* dev_ibmtr[IBMTR_MAX_ADAPTERS]; +static int io[IBMTR_MAX_ADAPTERS] = {0xa20,0xa24}; +static int irq[IBMTR_MAX_ADAPTERS] = {0,0}; +static int mem[IBMTR_MAX_ADAPTERS] = {0,0}; int init_module(void) { - if (device) - strcpy(dev_ibmtr.name,device); - else if (!dev_ibmtr.name[0]) strcpy(dev_ibmtr.name,"tr0"); - - if (io == 0) - printk("ibmtr: You should not use auto-probing with insmod!\n"); - dev_ibmtr.base_addr = io; - dev_ibmtr.irq = 0; - - if (register_netdev(&dev_ibmtr) != 0) { - printk("ibmtr: No adapters were found.\n"); - return -EIO; + int i; + for (i = 0; io[i] && (ibase_addr = io[i]; + dev_ibmtr[i]->irq = irq[i]; + dev_ibmtr[i]->mem_start = mem[i]; + dev_ibmtr[i]->init = &ibmtr_probe; + + if (register_trdev(dev_ibmtr[i]) != 0) { + kfree_s(dev_ibmtr[i], sizeof(struct dev)); + dev_ibmtr[i] = NULL; + if (i == 0) { + printk("ibmtr: register_trdev() returned non-zero.\n"); + return -EIO; + } else { + return 0; + } + } } return 0; } void cleanup_module(void) { - unregister_netdev(&dev_ibmtr); - - /* If we don't do this, we can't re-insmod it later. */ - free_irq(dev_ibmtr.irq, NULL); - irq2dev_map[dev_ibmtr.irq] = NULL; - release_region(dev_ibmtr.base_addr, TR_IO_EXTENT); + int i; + + for (i = 0; i < IBMTR_MAX_ADAPTERS; i++) + if (dev_ibmtr[i]) { + unregister_trdev(dev_ibmtr[i]); + free_irq(dev_ibmtr[i]->irq, NULL); + irq2dev_map[dev_ibmtr[i]->irq] = NULL; + release_region(dev_ibmtr[i]->base_addr, IBMTR_IO_EXTENT); + kfree_s(dev_ibmtr[i]->priv, sizeof(struct tok_info)); + kfree_s(dev_ibmtr[i], sizeof(struct dev)); + dev_ibmtr[i] = NULL; + } } #endif /* MODULE */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/ibmtr.h linux/drivers/net/ibmtr.h --- v2.1.16/linux/drivers/net/ibmtr.h Wed Aug 21 09:12:49 1996 +++ linux/drivers/net/ibmtr.h Sat Dec 21 13:16:57 1996 @@ -13,10 +13,9 @@ #define NOTOK 0 #define TOKDEBUG 1 -#ifndef IBMTR_SHARED_RAM_BASE -#define IBMTR_SHARED_RAM_BASE 0xD0 -#define IBMTR_SHARED_RAM_SIZE 0x10 -#endif +#define IBMTR_SHARED_RAM_SIZE 0x10000 +#define IBMTR_IO_EXTENT 4 +#define IBMTR_MAX_ADAPTERS 2 #define CHANNEL_ID 0X1F30 #define AIP 0X1F00 @@ -41,8 +40,6 @@ #define MMIOStartLocP 0x0a20 /* Primary adapter's starting MMIO area */ #define MMIOStartLocA 0x0a24 /* Alternate adapter's starting MMIO area */ -#define TR_IO_EXTENT 4 /* size of used IO range */ - #define GLOBAL_INT_ENABLE 0x02f0 /* MMIO bits 0-4 select register */ @@ -207,6 +204,7 @@ unsigned char auto_ringspeedsave; open_state open_status; unsigned char readlog_pending; + unsigned short adapter_int_enable; /* Adapter-specific int enable */ }; /* token ring adapter commands */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/myri_code.h linux/drivers/net/myri_code.h --- v2.1.16/linux/drivers/net/myri_code.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/myri_code.h Thu Dec 19 11:03:34 1996 @@ -0,0 +1,6287 @@ +/* This is the Myrinet MCP code for LANai4.x */ +/* Generated by cat $MYRI_HOME/lib/lanai/mcp4.dat > myri_code4.h */ + +static unsigned int lanai4_code_off = 0x0000; /* half-word offset */ +static unsigned char lanai4_code[76256] = { +0xF2,0x0E, +0xFE,0x00, 0xC2,0x90, 0x00,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x01,0x4C, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x2A,0x6C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x2C,0x10, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF7,0x02, 0x05,0x3C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x03, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x29,0xE0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x2B,0x84, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x2C,0x1C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF7,0x02, 0x0A,0xBC, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x02, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x2A,0xF8, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x04, 0x4A,0x9C, 0x85,0x16, 0x00,0x00, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, +0x01,0x01, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x01,0x00, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x01,0x2D, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0xF4,0x82, 0x00,0x12, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x01,0xE0, 0xB4,0xBA, +0x68,0x02, 0xE0,0x00, 0x01,0xE0, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x3B,0x64, 0xF5,0x84, +0x4F,0x54, 0xF7,0x05, 0x7A,0x10, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x01,0x99, 0x97,0x2A, +0x00,0x20, 0x95,0xAA, 0x00,0x1C, 0xF6,0x06, 0x4A,0x98, 0x26,0xAC, 0x00,0x01, 0x77,0x35, +0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0x07,0x38, 0x00,0x0C, 0xA4,0xBA, +0x60,0x02, 0x00,0x00, 0x00,0x01, 0x94,0xAA, 0x00,0x10, 0xC7,0x38, 0x60,0x00, 0x87,0x3A, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x97,0x2A, 0x00,0x14, 0xF7,0x04, 0x4A,0x9C, 0x00,0x00, +0x00,0x01, 0x27,0x38, 0x00,0x01, 0xC0,0x2E, 0x72,0x00, 0xD7,0x00, 0x0A,0x01, 0xE0,0x00, +0x01,0xD0, 0xF7,0x05, 0x7A,0x18, 0x95,0xAA, 0x00,0x1C, 0xF6,0x06, 0x4A,0x98, 0x06,0xAC, +0x00,0x01, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0x07,0x38, +0x00,0x0C, 0xA4,0xBA, 0x60,0x02, 0x00,0x00, 0x00,0x01, 0x94,0xAA, 0x00,0x10, 0xC7,0x38, +0x60,0x00, 0x87,0x3A, 0x00,0x04, 0xF0,0x05, 0x7A,0x18, 0x97,0x2A, 0x00,0x14, 0xF5,0x05, +0x79,0xD8, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x01,0xF4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x38, 0xF7,0x04, +0x7A,0x10, 0xF6,0x84, 0x3B,0x64, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x02,0x4C, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x02,0x4C, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x02,0x85, 0xF4,0x82, 0x00,0x00, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, +0x00,0x12, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x02,0x74, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF3,0x06, 0x2A,0x6C, 0xF3,0x05, 0x2C,0x10, 0xE0,0x00, 0x05,0x28, 0xF0,0x05, +0x7A,0x18, 0xF3,0x84, 0x79,0xD8, 0xF6,0x84, 0x4A,0xA0, 0x23,0x14, 0x00,0x20, 0x93,0x16, +0xFF,0xC4, 0x84,0x1E, 0x00,0x10, 0x96,0x96, 0xFF,0xD4, 0xF7,0x04, 0x4A,0x9C, 0x94,0x16, +0xFF,0xE0, 0x85,0x1E, 0x00,0x14, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, 0x03,0x6C, 0x95,0x16, +0xFF,0xE4, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF3,0x06, +0x4A,0x98, 0xC6,0xB8, 0x30,0x00, 0x06,0xB4, 0x00,0x0C, 0xC5,0x84, 0x00,0x00, 0x87,0x36, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x42,0x00, 0xE6,0x00, 0x02,0xFC, 0xC6,0x24, +0x00,0x00, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0xE6,0x00, +0x03,0x00, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x03,0x0D, 0x00,0x00, 0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0x36, 0x00,0x00, 0x87,0x16, +0xFF,0xE0, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x72,0x00, 0xE2,0x00, 0x03,0x48, 0xF5,0x02, +0x00,0x00, 0xC0,0x32, 0x72,0x00, 0xE6,0x00, 0x03,0x50, 0x20,0x2A, 0x00,0x00, 0x86,0xB6, +0x00,0x04, 0x87,0x16, 0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0x03,0x51, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, +0x03,0x61, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0x03,0x70, 0x20,0x26, 0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, +0x03,0xA5, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xD8, 0xE0,0x00, 0x04,0x18, 0x96,0x96, +0xFF,0xDC, 0x27,0x14, 0x00,0x2C, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0xC4, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0xCC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0xCC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x04,0x15, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xD8, 0x96,0x96, 0xFF,0xDC, 0xF7,0x05, 0x4A,0xA0, 0xE0,0x00, 0x04,0x1C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x04,0x2C, 0xF4,0x82, +0x00,0x01, 0xE0,0x00, 0x04,0x84, 0xF4,0x82, 0x00,0x00, 0x86,0x96, 0xFF,0xD8, 0x00,0x00, +0x00,0x01, 0x77,0x35, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF6,0x86, +0x42,0xC8, 0xA6,0x3A, 0x68,0x02, 0xC7,0x38, 0x68,0x00, 0x75,0x39, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x05,0xB8, 0x00,0x02, 0x86,0xAE, 0x00,0x00, 0x07,0x38, 0x00,0x04, 0x97,0x16, +0xFF,0xEC, 0xC6,0x30, 0x57,0xC0, 0x76,0x30, 0xFF,0xF0, 0x96,0x16, 0xFF,0xF4, 0x75,0xAD, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC6,0xB4, 0x5F,0xC0, 0x76,0xB4, 0xFF,0xF0, 0x96,0x96, +0xFF,0xF0, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0x05,0x25, 0xF3,0x06, 0x29,0xE0, 0x86,0x96, +0xFF,0xF0, 0xF5,0x82, 0x00,0x00, 0xC7,0x34, 0x68,0x00, 0xC4,0x9C, 0x72,0x00, 0xC0,0x2E, +0x6A,0x00, 0xEC,0x00, 0x04,0xF0, 0xC5,0x24, 0x00,0x00, 0xC6,0x2C, 0x00,0x00, 0x87,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xA6,0xB2, 0x70,0x02, 0x05,0xAC, 0x00,0x01, 0xC7,0x30, +0x70,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, +0xFF,0xF0, 0xF6,0xAB, 0x28,0x00, 0x05,0x28, 0x00,0x02, 0x87,0x16, 0xFF,0xF0, 0x00,0x00, +0x00,0x01, 0xC0,0x2E, 0x72,0x00, 0xEC,0x00, 0x04,0xB1, 0x06,0x30, 0x00,0x02, 0xF3,0x02, +0x00,0x03, 0xF3,0x05, 0x76,0xF4, 0x87,0x16, 0xFF,0xF0, 0x86,0x9E, 0x00,0x04, 0xC7,0x38, +0x70,0x00, 0xC7,0x38, 0x48,0x00, 0xC6,0xB4, 0x70,0x00, 0x87,0x16, 0xFF,0xF4, 0x06,0xB4, +0x00,0x20, 0x97,0x02, 0xFF,0x6C, 0x94,0x82, 0xFF,0x50, 0x96,0x82, 0xFF,0x58, 0xF3,0x06, +0x29,0xE0, 0xF3,0x05, 0x2C,0x10, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x04, 0x7A,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x05,0xCD, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x7A,0x10, 0xF6,0x84, 0x3B,0x64, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x05,0xCD, 0xF5,0x86, 0x4A,0x98, 0xF6,0x04, 0x79,0xD8, 0xF6,0x84, 0x4F,0x54, 0x00,0x00, +0x00,0x01, 0x96,0xB2, 0x00,0x1C, 0x06,0xB4, 0x00,0x01, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0x07,0x38, 0x00,0x0C, 0xA5,0x3A, 0x58,0x02, 0x00,0x00, +0x00,0x01, 0x95,0x32, 0x00,0x10, 0xC7,0x38, 0x58,0x00, 0x87,0x3A, 0x00,0x04, 0xF0,0x05, +0x7A,0x18, 0x97,0x32, 0x00,0x14, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x01,0xF4, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0x05,0xFC, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, +0x00,0x12, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x05,0xF4, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF5,0x06, 0x2A,0x6C, 0xF5,0x05, 0x2C,0x10, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, 0x00,0x00, 0xF7,0x04, 0x75,0xEC, 0x85,0x2E, +0x00,0x20, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x06,0xCC, 0xF5,0x05, 0x7A,0x08, 0xF7,0x04, +0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x06,0xCC, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x7A,0x08, 0xF6,0x84, 0x3B,0x64, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x06,0xCC, 0x00,0x00, 0x00,0x01, 0x87,0x2E, 0x00,0x1C, 0xF6,0x84, 0x4F,0x54, 0xF7,0x05, +0x7A,0x00, 0xC7,0x34, 0x72,0x00, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, 0x06,0x8D, 0xF5,0x02, +0x00,0x01, 0xE0,0x00, 0x06,0x90, 0xF5,0x05, 0x79,0xF8, 0xF0,0x85, 0x79,0xF8, 0xF6,0x84, +0x7A,0x00, 0xC7,0x38, 0x70,0x00, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x79,0xF8, 0xF6,0x85, +0x79,0xE8, 0xC7,0x38, 0x70,0x00, 0xC6,0x34, 0x70,0x00, 0xF7,0x04, 0x4A,0x9C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, 0x06,0xCC, 0xF6,0x05, 0x79,0xF0, 0x20,0x36, +0x00,0x00, 0xEC,0x00, 0x06,0xF8, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, +0x00,0x13, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x07,0x38, 0xB5,0x3A, 0x68,0x02, 0xE0,0x00, +0x07,0x38, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x4A,0x9C, 0x00,0x00, 0x00,0x01, 0xC0,0x32, +0x72,0x00, 0xEE,0x00, 0x07,0x19, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x4A,0x9C, 0xE0,0x00, +0x07,0x28, 0xF7,0x05, 0x79,0xF0, 0x20,0x32, 0x00,0x00, 0xEC,0x00, 0x07,0x28, 0x00,0x00, +0x00,0x01, 0xF0,0x85, 0x79,0xF0, 0xF5,0x85, 0x79,0xE0, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x07,0x4C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x38, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x07,0xA4, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x07,0xA4, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x7A,0x08, 0xF6,0x84, 0x3B,0x64, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x07,0xD5, 0xF4,0x02, +0x00,0x00, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x13, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x07,0xCC, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xE0,0x00, 0x0A,0xA4, 0xF3,0x06, +0x2B,0x84, 0xF6,0x84, 0x79,0xE8, 0xF6,0x06, 0x4A,0x98, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF6,0x84, 0x79,0xE0, 0x07,0x38, 0x00,0x0C, 0xA3,0x3A, +0x60,0x02, 0xC3,0xB4, 0x00,0x00, 0x93,0x36, 0x00,0x10, 0xC7,0x38, 0x60,0x00, 0x87,0x3A, +0x00,0x04, 0x23,0x14, 0x00,0x20, 0x93,0x16, 0xFF,0xC4, 0x97,0x36, 0x00,0x14, 0x84,0x9E, +0x00,0x10, 0xF6,0x84, 0x4A,0xA0, 0x94,0x96, 0xFF,0xE0, 0x96,0x96, 0xFF,0xD4, 0x85,0x1E, +0x00,0x14, 0xF7,0x04, 0x4A,0x9C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, +0x08,0xEC, 0x95,0x16, 0xFF,0xE4, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, +0x00,0x02, 0xC6,0xB8, 0x60,0x00, 0x06,0xB4, 0x00,0x0C, 0xC5,0x84, 0x00,0x00, 0x87,0x36, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x08,0x7C, 0xC6,0x20, +0x00,0x00, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0xE6,0x00, +0x08,0x80, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x08,0x8D, 0x00,0x00, 0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0x36, 0x00,0x00, 0x87,0x16, +0xFF,0xE0, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x72,0x00, 0xE2,0x00, 0x08,0xC8, 0xF5,0x02, +0x00,0x00, 0xC0,0x32, 0x72,0x00, 0xE6,0x00, 0x08,0xD0, 0x20,0x2A, 0x00,0x00, 0x86,0xB6, +0x00,0x04, 0x87,0x16, 0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0x08,0xD1, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, +0x08,0xE1, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0x08,0xF0, 0x20,0x22, 0x00,0x00, 0xF4,0x02, 0x00,0x01, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x09,0x25, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xD8, 0xE0,0x00, 0x09,0x98, 0x96,0x96, +0xFF,0xDC, 0x27,0x14, 0x00,0x2C, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0xC4, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0xCC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0xCC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x09,0x95, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xD8, 0x96,0x96, 0xFF,0xDC, 0xF7,0x05, 0x4A,0xA0, 0xE0,0x00, 0x09,0x9C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x09,0xAC, 0xF4,0x82, +0x00,0x01, 0xE0,0x00, 0x0A,0x04, 0xF4,0x82, 0x00,0x00, 0x86,0x96, 0xFF,0xD8, 0x00,0x00, +0x00,0x01, 0x77,0x35, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF6,0x86, +0x42,0xC8, 0xA6,0x3A, 0x68,0x02, 0xC7,0x38, 0x68,0x00, 0x75,0x39, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x05,0xB8, 0x00,0x02, 0x86,0xAE, 0x00,0x00, 0x07,0x38, 0x00,0x04, 0x97,0x16, +0xFF,0xEC, 0xC6,0x30, 0x57,0xC0, 0x76,0x30, 0xFF,0xF0, 0x96,0x16, 0xFF,0xF4, 0x75,0xAD, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC6,0xB4, 0x5F,0xC0, 0x76,0xB4, 0xFF,0xF0, 0x96,0x96, +0xFF,0xF0, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0x0A,0xA5, 0xF3,0x06, 0x2A,0xF8, 0x86,0x96, +0xFF,0xF0, 0xF5,0x82, 0x00,0x00, 0xC7,0x34, 0x68,0x00, 0xC4,0x9C, 0x72,0x00, 0xC0,0x2E, +0x6A,0x00, 0xEC,0x00, 0x0A,0x70, 0xC5,0x24, 0x00,0x00, 0xC6,0x2C, 0x00,0x00, 0x87,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xA6,0xB2, 0x70,0x02, 0x05,0xAC, 0x00,0x01, 0xC7,0x30, +0x70,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, +0xFF,0xF0, 0xF6,0xAB, 0x28,0x00, 0x05,0x28, 0x00,0x02, 0x87,0x16, 0xFF,0xF0, 0x00,0x00, +0x00,0x01, 0xC0,0x2E, 0x72,0x00, 0xEC,0x00, 0x0A,0x31, 0x06,0x30, 0x00,0x02, 0xF3,0x02, +0x00,0x02, 0xF3,0x05, 0x76,0xF4, 0x87,0x16, 0xFF,0xF0, 0x86,0x9E, 0x00,0x04, 0xC7,0x38, +0x70,0x00, 0xC7,0x38, 0x48,0x00, 0xC6,0xB4, 0x70,0x00, 0x87,0x16, 0xFF,0xF4, 0x06,0xB4, +0x00,0x20, 0x97,0x02, 0xFF,0x6C, 0x94,0x82, 0xFF,0x50, 0x96,0x82, 0xFF,0x58, 0xF3,0x06, +0x2A,0xF8, 0xF3,0x05, 0x2C,0x1C, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF6,0x84, 0x79,0xE8, 0xF7,0x04, 0x79,0xF8, 0x00,0x00, 0x00,0x01, 0xC6,0xB4, +0x70,0x00, 0xF7,0x04, 0x7A,0x20, 0xF6,0x85, 0x79,0xE8, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x7A,0x20, 0xF7,0x04, 0x79,0xF0, 0xF6,0x04, 0x7A,0x20, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x0B,0x2C, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x82, 0x00,0x13, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x0B,0x20, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x86, +0x2B,0x84, 0xE0,0x00, 0x0B,0x38, 0xF5,0x85, 0x2C,0x1C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x07,0x4C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x06, 0x2C,0x10, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x29,0xE0, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x2C,0x10, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x2A,0x6C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x2C,0x1C, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x2A,0xF8, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x2C,0x1C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x2B,0x84, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF0,0x05, +0x2D,0x38, 0xF0,0x05, 0x2D,0x3C, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x18, 0xFF,0x85, 0x2E,0xDC, 0xF7,0x06, 0x0C,0x3E, 0xC7,0x7C, +0x74,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x14,0x29, 0x97,0x16, 0xFF,0xF4, 0x47,0x38, +0xFF,0xFB, 0xF6,0x84, 0x6F,0x50, 0xCF,0xB8, 0x00,0x00, 0x83,0x96, 0xFF,0xF4, 0xF7,0x02, +0x00,0x3F, 0xC3,0x9C, 0x6D,0x80, 0xC7,0x1C, 0x74,0x00, 0x20,0x3A, 0x00,0x3F, 0xE2,0x00, +0x12,0x60, 0x93,0x96, 0xFF,0xF4, 0x77,0x39, 0x00,0x02, 0xF6,0x82, 0x0C,0x5C, 0xA6,0xB6, +0x70,0x02, 0x00,0x00, 0x00,0x01, 0xC1,0x34, 0x00,0x00, 0x00,0x00, 0x12,0x60, 0x00,0x00, +0x12,0x60, 0x00,0x00, 0x0D,0x68, 0x00,0x00, 0x0D,0x68, 0x00,0x00, 0x0D,0x5C, 0x00,0x00, +0x0D,0x5C, 0x00,0x00, 0x0D,0x68, 0x00,0x00, 0x0D,0x68, 0x00,0x00, 0x12,0x50, 0x00,0x00, +0x12,0x50, 0x00,0x00, 0x12,0x3C, 0x00,0x00, 0x12,0x3C, 0x00,0x00, 0x0D,0xE0, 0x00,0x00, +0x0D,0xE0, 0x00,0x00, 0x12,0x3C, 0x00,0x00, 0x12,0x3C, 0x00,0x00, 0x0D,0xE8, 0x00,0x00, +0x0D,0xF4, 0x00,0x00, 0x0E,0x00, 0x00,0x00, 0x0E,0x20, 0x00,0x00, 0x0E,0x40, 0x00,0x00, +0x0E,0x60, 0x00,0x00, 0x0E,0x80, 0x00,0x00, 0x0E,0xA0, 0x00,0x00, 0x0E,0xC0, 0x00,0x00, +0x0E,0xC8, 0x00,0x00, 0x0E,0xD0, 0x00,0x00, 0x12,0x28, 0x00,0x00, 0x0E,0xD8, 0x00,0x00, +0x0E,0xF4, 0x00,0x00, 0x0F,0x10, 0x00,0x00, 0x12,0x28, 0x00,0x00, 0x0F,0x18, 0x00,0x00, +0x0F,0x18, 0x00,0x00, 0x0F,0x24, 0x00,0x00, 0x0F,0x24, 0x00,0x00, 0x0F,0x44, 0x00,0x00, +0x0F,0x44, 0x00,0x00, 0x0F,0x64, 0x00,0x00, 0x0F,0x64, 0x00,0x00, 0x0F,0x84, 0x00,0x00, +0x0F,0x84, 0x00,0x00, 0x0F,0x8C, 0x00,0x00, 0x0F,0x8C, 0x00,0x00, 0x0F,0x94, 0x00,0x00, +0x0F,0x94, 0x00,0x00, 0x0F,0xB0, 0x00,0x00, 0x0F,0xB0, 0x00,0x00, 0x0F,0xB8, 0x00,0x00, +0x0F,0xD8, 0x00,0x00, 0x0F,0xF8, 0x00,0x00, 0x10,0x2C, 0x00,0x00, 0x10,0x60, 0x00,0x00, +0x10,0x94, 0x00,0x00, 0x10,0xC8, 0x00,0x00, 0x10,0xFC, 0x00,0x00, 0x11,0x30, 0x00,0x00, +0x11,0x4C, 0x00,0x00, 0x11,0x68, 0x00,0x00, 0x12,0x14, 0x00,0x00, 0x11,0x84, 0x00,0x00, +0x11,0xB4, 0x00,0x00, 0x11,0xE4, 0x00,0x00, 0x12,0x14, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, +0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF6,0x02, 0x00,0x05, 0x20,0x32, 0x00,0x14, 0xE6,0x00, +0x0D,0xB5, 0x27,0x00, 0x00,0x10, 0x20,0x3A, 0x00,0x01, 0xE2,0x00, 0x0D,0xB5, 0xF7,0x06, +0x2D,0xCC, 0xF6,0x84, 0x2E,0xCC, 0x00,0x00, 0x00,0x01, 0x75,0xB5, 0x00,0x02, 0xB6,0x2E, +0x70,0x02, 0x06,0xB4, 0x00,0x01, 0xF6,0x85, 0x2E,0xCC, 0x86,0x02, 0xFF,0x34, 0xF7,0x06, +0x2E,0x4C, 0x20,0x36, 0x00,0x1F, 0xE2,0x00, 0x0D,0xB5, 0xB6,0x2E, 0x70,0x02, 0xF0,0x05, +0x2E,0xCC, 0xF7,0x04, 0x2D,0x58, 0x00,0x00, 0x00,0x01, 0x87,0x3A, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x87,0x3A, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xC1,0x38, +0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x60, 0x00,0x00, 0x00,0x01, 0xE0,0x00, +0x12,0x40, 0xF3,0x82, 0x00,0x06, 0xF3,0x82, 0x00,0x0B, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x07, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xE0,0x00, +0x12,0x40, 0xF3,0x82, 0x00,0x0B, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, 0x00,0x07, 0xE0,0x00, +0x12,0x2C, 0xF3,0x82, 0x00,0x0B, 0xF3,0x82, 0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, +0x00,0x06, 0xF3,0x82, 0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, +0x12,0x2C, 0xF3,0x82, 0x00,0x0B, 0xF3,0x82, 0x00,0x14, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, 0x00,0x14, 0xE0,0x00, 0x12,0x2C, 0xF3,0x82, +0x00,0x14, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, +0x12,0x2C, 0xF3,0x82, 0x00,0x14, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x0B, 0xE0,0x00, +0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x07, 0xE0,0x00, +0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x0B, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, 0x12,0x54, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x06, 0xE0,0x00, +0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x0B, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x14, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0xE0,0x00, 0x12,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, 0x00,0x0B, 0xF3,0x82, 0x00,0x14, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0x12,0x40, 0xF3,0x82, 0x00,0x07, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x2C, 0xF3,0x82, +0x00,0x0B, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x0B, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, +0x00,0x06, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x40, 0xF3,0x82, +0x00,0x06, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x12,0x2C, 0xF3,0x82, 0x00,0x0B, 0xF7,0x04, +0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, 0x00,0x08, 0xE0,0x00, 0x13,0xCC, 0xF7,0x05, +0x35,0x44, 0xF3,0x82, 0x00,0x14, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x07, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x05, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0x90,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x77,0x9C, 0x00,0x14, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0x12,0x9D, 0xF7,0x06, 0x04,0x00, 0xF7,0x04, 0x6F,0x5C, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x6F,0x5C, 0xF7,0x04, 0x6F,0x5C, 0xE0,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x83,0x96, 0xFF,0xF4, 0xF7,0x06, 0x04,0x00, 0xC0,0x1E, 0x74,0x00, 0xE6,0x00, +0x14,0x29, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x2E,0xD0, 0xF6,0x84, 0x35,0x24, 0x07,0x38, +0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x14,0x05, 0xF7,0x05, 0x2E,0xD0, 0xF7,0x04, +0xE0,0x14, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x14,0x05, 0xF6,0x82, +0x00,0x00, 0xF6,0x85, 0xE0,0x14, 0xF7,0x04, 0x2E,0xD8, 0xC5,0x34, 0x00,0x00, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x2E,0xD8, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, 0x13,0xCC, 0xF6,0x82, +0x00,0x00, 0xF6,0x84, 0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, 0x13,0xA0, 0x05,0xB4, 0x00,0x08, 0x95,0x93, +0xFF,0xFC, 0x95,0x16, 0xFF,0xE8, 0x95,0x96, 0xFF,0xE4, 0x96,0x96, 0xFF,0xE0, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x64, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xE8, 0x85,0x96, +0xFF,0xE4, 0x86,0x96, 0xFF,0xE0, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x13,0x90, 0xF7,0x02, +0x00,0x00, 0x86,0x36, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, +0x13,0x75, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x36, 0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, 0x13,0x90, 0xF7,0x02, +0x00,0x00, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, +0x6A,0x00, 0xC7,0x38, 0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x12,0x00, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, +0x6F,0x4C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x13,0xC0, 0x07,0x34, +0x14,0x94, 0xF3,0x84, 0x6F,0x44, 0xE0,0x00, 0x13,0xC4, 0xF3,0x85, 0x35,0x28, 0xF7,0x05, +0x35,0x28, 0xE0,0x00, 0x12,0xE8, 0x05,0x28, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0x14,0x29, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0xF0,0x05, 0x35,0x24, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x82, 0x00,0x0D, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x14,0x28, 0xB3,0xBA, 0x68,0x02, 0xE0,0x00, 0x14,0x28, 0xF0,0x05, +0x2D,0x38, 0xF7,0x04, 0xE0,0x10, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x14,0x29, 0xF7,0x02, 0x00,0x00, 0xF7,0x05, 0xE0,0x10, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x02,0x98, 0x97,0x93, 0xFF,0xFC, 0xF4,0x84, 0x2D,0x38, 0xF7,0x04, 0x2D,0x3C, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x0C,0x09, 0xF6,0x86, 0x2C,0x28, 0x77,0x39, +0x00,0x02, 0xA5,0x3A, 0x68,0x02, 0x00,0x00, 0x00,0x01, 0x20,0x2A, 0x00,0x14, 0xE6,0x00, +0x14,0x91, 0x27,0x28, 0x00,0x15, 0x20,0x3A, 0x00,0x01, 0xE2,0x00, 0x14,0x91, 0xF7,0x06, +0x2D,0xCC, 0xF6,0x84, 0x2E,0xCC, 0x86,0x02, 0xFF,0x34, 0x75,0xB5, 0x00,0x02, 0xB5,0x2E, +0x70,0x02, 0x06,0xB4, 0x00,0x01, 0xF6,0x85, 0x2E,0xCC, 0xF7,0x06, 0x2E,0x4C, 0x20,0x36, +0x00,0x1F, 0xE2,0x00, 0x14,0x91, 0xB6,0x2E, 0x70,0x02, 0xF0,0x05, 0x2E,0xCC, 0xF7,0x06, +0x2D,0x44, 0x76,0xA9, 0x00,0x02, 0xA7,0x36, 0x70,0x02, 0x00,0x00, 0x00,0x01, 0x87,0x3A, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x87,0x36, 0x00,0x04, 0x94,0x96, +0xFF,0xEC, 0x07,0x88, 0x00,0x08, 0xC1,0x38, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, +0x2D,0x3C, 0x84,0x96, 0xFF,0xEC, 0x07,0x38, 0x00,0x01, 0x20,0x3A, 0x00,0x44, 0xE6,0x00, +0x14,0x2C, 0xF7,0x05, 0x2D,0x3C, 0xE0,0x00, 0x14,0x2C, 0xF0,0x05, 0x2D,0x3C, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x84,0x16, 0x00,0x00, 0xF7,0x02, +0x00,0x00, 0x85,0x96, 0x00,0x04, 0x20,0x3A, 0x00,0x21, 0xEE,0x00, 0x15,0x34, 0x95,0xA2, +0x00,0x00, 0xF6,0x06, 0x23,0x38, 0x07,0x20, 0x00,0x84, 0xC6,0xA0, 0x00,0x00, 0x96,0x3A, +0x00,0x04, 0x27,0x38, 0x00,0x04, 0xC0,0x3A, 0x6A,0x00, 0xEC,0x00, 0x15,0x20, 0x00,0x00, +0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x96, +0x00,0x00, 0x87,0x16, 0x00,0x04, 0xF6,0x04, 0x2D,0x40, 0x97,0x36, 0x00,0x00, 0x97,0x36, +0x00,0x04, 0x07,0x30, 0x00,0x01, 0xF7,0x05, 0x2D,0x40, 0x96,0x36, 0x00,0x08, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x20,0x2A, 0x00,0x14, 0xE6,0x00, 0x15,0xD9, 0x27,0x28, 0x00,0x15, 0x20,0x3A, +0x00,0x01, 0xE2,0x00, 0x15,0xD9, 0xF7,0x06, 0x2D,0xCC, 0xF6,0x84, 0x2E,0xCC, 0x86,0x02, +0xFF,0x34, 0x75,0xB5, 0x00,0x02, 0xB5,0x2E, 0x70,0x02, 0x06,0xB4, 0x00,0x01, 0xF6,0x85, +0x2E,0xCC, 0xF7,0x06, 0x2E,0x4C, 0x20,0x36, 0x00,0x1F, 0xE2,0x00, 0x15,0xD9, 0xB6,0x2E, +0x70,0x02, 0xF0,0x05, 0x2E,0xCC, 0xF6,0x86, 0x2D,0x44, 0x77,0x29, 0x00,0x02, 0xA6,0xBA, +0x68,0x02, 0x00,0x00, 0x00,0x01, 0x86,0xB6, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x87,0x3A, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xC1,0x38, +0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x87,0x16, 0x00,0x00, 0x86,0x96, 0x00,0x04, 0xF6,0x06, 0x2D,0x44, 0x76,0xB5, +0x00,0x02, 0x85,0xBA, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xB5,0xB6, 0x60,0x02, 0xC6,0xB4, +0x70,0x00, 0x85,0x96, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x95,0xB6, 0x00,0x04, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x87,0x32, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x0F, 0x86,0xB2, +0x00,0x00, 0xC5,0x38, 0x00,0x00, 0xEE,0x00, 0x16,0xB4, 0xC5,0xB4, 0x00,0x00, 0x20,0x36, +0x00,0x0F, 0xEE,0x00, 0x16,0xB4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEC,0x00, +0x16,0xB5, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xEC,0x00, 0x16,0xD0, 0x00,0x00, +0x00,0x01, 0x87,0x32, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x32, +0x00,0x0C, 0x87,0x32, 0x00,0x0C, 0xE0,0x00, 0x16,0xD8, 0xF4,0x02, 0x00,0x00, 0xC0,0x2A, +0x5A,0x00, 0x44,0x0C, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x2E,0xE0, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF7,0x02, 0x18,0x2C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x09, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x2E,0xE0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x34,0x58, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, +0x00,0x0C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x2F,0x6C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x3F,0x94, 0x97,0x13, +0xFF,0xFC, 0xF7,0x82, 0x00,0x0B, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x2F,0xF8, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, +0x3B,0x84, 0x97,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x0B, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x32,0x28, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF7,0x02, 0x26,0xE4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x13, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x30,0x84, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x26,0xA0, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, +0x00,0x11, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x31,0x10, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x18,0x2C, 0x97,0x13, +0xFF,0xFC, 0xF7,0x82, 0x00,0x09, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x31,0x9C, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF0,0x05, +0x7A,0x78, 0xF0,0x05, 0x32,0xE8, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x50, 0xF7,0x04, 0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x18,0x55, 0xF6,0x86, 0x71,0xC4, 0xE0,0x00, 0x18,0x6C, 0xF6,0x02, +0x00,0x00, 0xF7,0x04, 0x71,0xD4, 0x00,0x00, 0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, +0x68,0x00, 0x86,0x3A, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0xF6,0x05, 0x32,0xC4, 0x86,0xB2, +0x00,0x08, 0x07,0x01, 0x80,0x00, 0xC5,0xB4, 0x74,0x00, 0xF5,0x85, 0x32,0xD0, 0x87,0x32, +0x00,0x18, 0xF6,0x86, 0x6F,0x44, 0x77,0x39, 0x00,0x02, 0xA7,0x3A, 0x68,0x02, 0x20,0x2E, +0x00,0x00, 0xF7,0x05, 0x32,0xC0, 0x07,0x38, 0x09,0xD8, 0x86,0xB2, 0x00,0x04, 0xF7,0x05, +0x32,0xCC, 0xE6,0x00, 0x19,0x41, 0xF6,0x85, 0x32,0xC8, 0xF7,0x04, 0x71,0x98, 0xF6,0x84, +0x7A,0x78, 0x27,0x38, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x19,0x10, 0xF7,0x05, +0x71,0x98, 0xF7,0x04, 0x76,0xFC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x18,0xE8, 0xF3,0x02, 0x00,0x11, 0xF3,0x06, 0x32,0xD4, 0xF3,0x05, 0x76,0xFC, 0xE0,0x00, +0x18,0xF8, 0xF7,0x02, 0x00,0x01, 0xF3,0x05, 0x76,0xF8, 0xF3,0x06, 0x32,0xD4, 0xF3,0x05, +0x77,0x00, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x19,0x14, 0xF3,0x02, +0x00,0x01, 0xF3,0x06, 0x31,0x10, 0xE0,0x00, 0x26,0x8C, 0xF3,0x05, 0x32,0xD4, 0xF3,0x02, +0x00,0x01, 0xF3,0x05, 0x7A,0x78, 0xF3,0x06, 0x30,0x84, 0xF3,0x05, 0x32,0xD4, 0xF3,0x04, +0x32,0xC4, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x06,0x10, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x26,0x8C, 0x00,0x00, 0x00,0x01, 0xF3,0x02, +0x00,0x00, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x1C,0xB9, 0x93,0x16, 0xFF,0xE4, 0x87,0x32, +0x00,0x08, 0x86,0x96, 0xFF,0xE4, 0xC3,0x04, 0x00,0x00, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0x19,0x84, 0x20,0x36, 0x00,0x00, 0x87,0x32, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x32,0x00, 0xE6,0x00, 0x19,0x84, 0x20,0x36, 0x00,0x00, 0xF6,0x82, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0x1C,0xB8, 0xF3,0x02, 0x00,0x00, 0xF7,0x04, 0x32,0xC0, 0x93,0x16, +0xFF,0xAC, 0xF5,0x84, 0x32,0xC4, 0x86,0x3A, 0x14,0x28, 0x03,0xB8, 0x14,0x20, 0x04,0x2C, +0x00,0x08, 0x86,0xBA, 0x14,0x24, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x6A,0x00, 0xEC,0x00, +0x1A,0x70, 0x96,0x16, 0xFF,0xEC, 0x77,0x31, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x77,0x39, +0x00,0x02, 0xC6,0x38, 0x38,0x00, 0x06,0x30, 0x00,0x0C, 0x86,0xB2, 0x00,0x00, 0x87,0x2E, +0x00,0x08, 0x85,0x16, 0xFF,0xAC, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x1A,0x00, 0xC4,0x84, +0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x2E, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x1A,0x04, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, +0x00,0x00, 0xE6,0x00, 0x1A,0x11, 0x00,0x00, 0x00,0x01, 0xF4,0x82, 0x00,0x00, 0x86,0xB2, +0x00,0x00, 0x87,0x22, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0x1A,0x4C, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x1A,0x54, 0x20,0x2E, +0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x22, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x1A,0x55, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0x1A,0x65, 0x20,0x26, 0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, +0x00,0x00, 0xE6,0x00, 0x1A,0x70, 0xF3,0x02, 0x00,0x01, 0x93,0x16, 0xFF,0xAC, 0x83,0x16, +0xFF,0xAC, 0x00,0x00, 0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x1A,0xB1, 0xF6,0x02, +0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, +0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xE0,0x00, 0x1B,0x18, 0x96,0x96, 0xFF,0xF4, 0x27,0x14, +0x00,0x14, 0x97,0x13, 0xFF,0xFC, 0x94,0x13, 0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x93,0x96, +0xFF,0xBC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0xBC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x1B,0x15, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xF0, 0x96,0x96, 0xFF,0xF4, 0x97,0x1E, 0x00,0x08, 0xE0,0x00, 0x1B,0x1C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x1C,0xB8, 0xF3,0x02, +0x00,0x00, 0xF6,0x04, 0x32,0xC0, 0x93,0x16, 0xFF,0xAC, 0x86,0xB2, 0x14,0x28, 0x03,0xB0, +0x14,0x20, 0x04,0x30, 0x14,0x8C, 0x87,0x32, 0x14,0x24, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xEC,0x00, 0x1C,0x04, 0x96,0x96, 0xFF,0xEC, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0xC5,0xB8, 0x38,0x00, 0x05,0xAC, 0x00,0x0C, 0x86,0xAE, +0x00,0x00, 0x87,0x32, 0x14,0x8C, 0x85,0x16, 0xFF,0xAC, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x1B,0x94, 0xC4,0x84, 0x00,0x00, 0x86,0xAE, 0x00,0x04, 0x87,0x32, 0x14,0x90, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x1B,0x98, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, +0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0x1B,0xA5, 0x00,0x00, 0x00,0x01, 0xF4,0x82, +0x00,0x00, 0x86,0xAE, 0x00,0x00, 0x87,0x22, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x1B,0xE0, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x1B,0xE8, 0x20,0x32, 0x00,0x00, 0x86,0xAE, 0x00,0x04, 0x87,0x22, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x1B,0xE9, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x1B,0xF9, 0x20,0x26, 0x00,0x00, 0xF4,0x82, +0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0x1C,0x04, 0xF3,0x02, 0x00,0x01, 0x93,0x16, +0xFF,0xAC, 0x83,0x16, 0xFF,0xAC, 0x00,0x00, 0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, +0x1C,0x45, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xE0,0x00, 0x1C,0xAC, 0x96,0x96, +0xFF,0xF4, 0x27,0x14, 0x00,0x14, 0x97,0x13, 0xFF,0xFC, 0x94,0x13, 0xFF,0xFC, 0x93,0x93, +0xFF,0xFC, 0x93,0x96, 0xFF,0xBC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0xBC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x1C,0xA9, 0xF6,0x02, +0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, +0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0x96,0x96, 0xFF,0xF4, 0x97,0x1E, 0x00,0x08, 0xE0,0x00, +0x1C,0xB0, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x1E,0x15, 0xF3,0x02, 0x00,0x01, 0xF6,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x85,0xB6, +0x0E,0xF4, 0x86,0x36, 0x0E,0xF8, 0x20,0x2E, 0x00,0x10, 0xE2,0x00, 0x1C,0xDC, 0x20,0x32, +0x00,0x10, 0xE2,0x00, 0x1C,0xF9, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x0F,0x00, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x0F,0x00, 0x87,0x36, 0x0F,0x00, 0xE0,0x00, +0x1D,0x24, 0xF7,0x02, 0x00,0x00, 0x07,0x30, 0x00,0x01, 0xC0,0x3A, 0x5A,0x00, 0xE6,0x00, +0x1D,0x1D, 0xF6,0x82, 0x00,0x00, 0x20,0x32, 0x00,0x10, 0xE6,0x00, 0x1D,0x20, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0x1D,0x24, 0xC7,0x34, 0x00,0x00, 0xF6,0x82, 0x00,0x01, 0xC7,0x34, +0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x1E,0x14, 0xF3,0x02, 0x00,0x01, 0xF3,0x04, +0x32,0xCC, 0x00,0x00, 0x00,0x01, 0x93,0x16, 0xFF,0xDC, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x43,0x68, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x1D,0xFC, 0xF3,0x02, 0x00,0x00, 0x83,0x16, 0xFF,0xDC, 0x00,0x00, 0x00,0x01, 0x86,0x1A, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x1D,0x91, 0x76,0xB1, +0x00,0x02, 0x87,0x1A, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x1A, +0x00,0x0C, 0x87,0x1A, 0x00,0x0C, 0xE0,0x00, 0x1D,0xFC, 0xF3,0x02, 0x00,0x00, 0xF3,0x02, +0x00,0x4C, 0x93,0x13, 0xFF,0xFC, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, +0x6A,0x00, 0x83,0x16, 0xFF,0xDC, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, 0x30,0x00, 0x07,0x38, +0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0xF3,0x06, 0x7A,0x28, 0x93,0x13, 0xFF,0xFC, 0x96,0x16, +0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xB4, 0x00,0x00, 0x00,0x01, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, +0x1D,0xEC, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x83,0x16, 0xFF,0xDC, 0x00,0x00, +0x00,0x01, 0x96,0x1A, 0x00,0x00, 0xF3,0x02, 0x00,0x01, 0x93,0x16, 0xFF,0xD4, 0x83,0x16, +0xFF,0xD4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x1E,0x18, 0xF3,0x02, +0x00,0x01, 0x93,0x16, 0xFF,0xE4, 0x83,0x16, 0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0x1F,0x35, 0xF6,0x82, 0x0C,0xAB, 0xF7,0x04, 0x32,0xB4, 0x83,0x16, +0xFF,0xD4, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x32,0xB4, 0xF7,0x04, 0x32,0xB4, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0x1E,0x70, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xC0, 0xF3,0x06, +0xE0,0x30, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0x1E,0x70, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x32,0xE8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x32,0xE8, 0xF7,0x04, +0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x1E,0xAD, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x1E,0xAC, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, +0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0x1E,0xC8, 0xF7,0x05, +0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, +0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, +0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x25,0xD9, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, +0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x25,0x79, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x25,0x78, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x25,0x78, 0x00,0x00, 0x00,0x01, 0xE0,0x00, 0x25,0xDC, 0xF3,0x06, +0x31,0x9C, 0xF0,0x05, 0x32,0xE8, 0xF7,0x04, 0x32,0xC0, 0xF6,0x04, 0x6F,0x54, 0x96,0xBA, +0x00,0x04, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x1F,0x60, 0xF3,0x02, 0x00,0x0C, 0xF3,0x02, +0x00,0x01, 0xF3,0x05, 0x6F,0x54, 0xE0,0x00, 0x1F,0x68, 0xF7,0x02, 0x00,0x01, 0xF3,0x05, +0x6F,0x58, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x1F,0x7C, 0xF3,0x06, +0x2F,0x6C, 0xE0,0x00, 0x26,0x8C, 0xF3,0x05, 0x32,0xD4, 0xF5,0x84, 0x7A,0x70, 0x24,0x94, +0x00,0x10, 0x20,0x2E, 0x00,0x01, 0xE6,0x00, 0x22,0x84, 0xF5,0x85, 0x7A,0xA0, 0xF7,0x02, +0x00,0x01, 0xF6,0x04, 0x32,0xC8, 0xF7,0x05, 0x7A,0x70, 0xF7,0x04, 0x32,0xC4, 0xF6,0x84, +0x32,0xC0, 0xF6,0x05, 0x7A,0x2C, 0x90,0x02, 0xFF,0x80, 0x90,0x02, 0xFF,0x38, 0xF5,0x84, +0x7A,0x28, 0x07,0x38, 0x00,0x24, 0x95,0x82, 0xFF,0x3C, 0x97,0x02, 0xFF,0x40, 0x96,0x02, +0xFF,0x44, 0x87,0x36, 0x14,0x10, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, +0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF0,0x05, 0x6F,0x50, 0xF7,0x04, 0x32,0xB8, 0x95,0x96, +0xFF,0xEC, 0xC7,0x38, 0x60,0x00, 0xF7,0x05, 0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0xF3,0x06, +0x2F,0xF8, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0xF3,0x05, +0x32,0xD4, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x20,0x34, 0x00,0x00, +0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x20,0x25, 0x00,0x00, 0x00,0x01, 0xF7,0x06, +0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x26,0x8C, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x32,0xE4, 0xFF,0x82, 0x00,0x10, 0xF5,0x84, 0x6F,0x58, 0x07,0x38, +0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x20,0x90, 0xF7,0x05, 0x32,0xE4, 0xF7,0x04, +0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x20,0x84, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xE0,0x00, 0x20,0x94, 0xF3,0x05, 0x6F,0x58, 0xF0,0x05, +0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, 0x00,0x04, 0x87,0x2E, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, 0x21,0xC0, 0x00,0x00, +0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x03,0x2C, 0x0E,0xF4, 0x93,0x16, 0xFF,0xCC, 0xF7,0x05, +0x7A,0x68, 0x93,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xB8, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x21,0x7C, 0x00,0x00, 0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x32, +0x00,0x10, 0xE2,0x00, 0x21,0x19, 0xF3,0x02, 0x00,0x4C, 0x87,0x2E, 0x0F,0x00, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, 0x0F,0x00, 0xE0,0x00, +0x21,0x7C, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, 0x7A,0x28, 0x93,0x13, +0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, +0x6A,0x00, 0x83,0x16, 0xFF,0xCC, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, 0x30,0x00, 0x07,0x38, +0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x96,0x16, 0xFF,0xB4, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, 0xFF,0xB4, 0x85,0x96, +0xFF,0xB8, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, 0x21,0x78, 0x00,0x00, +0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, 0x32,0xC0, 0xF3,0x06, +0xE0,0x30, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0x21,0xC0, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0x21,0xC1, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0xF7,0x04, +0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x21,0xFD, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x21,0xFC, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, +0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0x22,0x18, 0xF7,0x05, +0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, +0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, +0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x25,0xD9, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, +0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x25,0x79, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x25,0x78, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x25,0x78, 0x00,0x00, 0x00,0x01, 0xE0,0x00, 0x25,0xDC, 0xF3,0x06, +0x31,0x9C, 0xF0,0x05, 0x7A,0x88, 0x90,0x02, 0xFF,0x38, 0xF0,0x05, 0x6F,0x50, 0x90,0x02, +0xFF,0x80, 0xF7,0x04, 0x32,0xC4, 0xF3,0x06, 0x32,0x28, 0xF3,0x05, 0x32,0xD4, 0xF6,0x04, +0x32,0xC8, 0xF6,0x84, 0x7A,0x2C, 0xF5,0x02, 0x00,0x00, 0x07,0x38, 0x00,0x24, 0xF7,0x05, +0x7A,0x98, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x22,0xD5, 0xF6,0x05, 0x7A,0x90, 0xC0,0x2A, +0x5A,0x00, 0xE6,0x00, 0x26,0x20, 0xC0,0x32, 0x6A,0x00, 0xEE,0x00, 0x26,0x21, 0x00,0x00, +0x00,0x01, 0xF6,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x14,0x10, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, 0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF7,0x04, +0x32,0xB8, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0xF7,0x05, 0x32,0xB8, 0xF7,0x04, +0x32,0xBC, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x32,0xBC, 0xF7,0x04, +0x32,0xBC, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x23,0x45, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0x07,0x38, 0x00,0x01, 0xE0,0x00, 0x23,0x48, 0xF7,0x05, +0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0xF5,0x84, 0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, +0x00,0x21, 0xE2,0x00, 0x23,0x8C, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x23,0x80, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, +0x00,0x22, 0xE0,0x00, 0x23,0x90, 0xF3,0x05, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, +0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, 0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, 0x24,0xBC, 0x00,0x00, 0x00,0x01, 0x87,0x02, +0xFF,0x38, 0x03,0x2C, 0x0E,0xF4, 0x93,0x16, 0xFF,0xC4, 0xF7,0x05, 0x7A,0x68, 0x93,0x13, +0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, +0xFF,0xFC, 0x85,0x96, 0xFF,0xB8, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x24,0x78, 0x00,0x00, +0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, +0x24,0x15, 0xF3,0x02, 0x00,0x4C, 0x87,0x2E, 0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, 0x0F,0x00, 0xE0,0x00, 0x24,0x78, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, 0x7A,0x28, 0x93,0x13, 0xFF,0xFC, 0x76,0xB1, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x83,0x16, +0xFF,0xC4, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, 0x30,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, +0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x96,0x16, 0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, 0xFF,0xB4, 0x85,0x96, 0xFF,0xB8, 0x06,0x30, +0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, 0x24,0x74, 0x00,0x00, 0x00,0x01, 0xF6,0x02, +0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, 0x32,0xC0, 0xF3,0x06, 0xE0,0x30, 0xC0,0x3A, +0x32,0x00, 0xE6,0x00, 0x24,0xBC, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, +0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x24,0xBD, 0x00,0x00, +0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x24,0xF9, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, +0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0xF3,0x02, 0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x24,0xF8, 0xB3,0x3A, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, +0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0x25,0x14, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, +0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, +0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0x25,0xD9, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x25,0x79, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x25,0x78, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x25,0xD1, 0x00,0x00, 0x00,0x01, 0xF5,0x84, 0x76,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x2E, +0x00,0x21, 0xE2,0x00, 0x25,0xC4, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x25,0xB0, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, +0x00,0x22, 0xF3,0x05, 0x76,0xF8, 0xF3,0x04, 0x77,0x00, 0xE0,0x00, 0x25,0xC8, 0xF3,0x05, +0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xE0,0x00, 0x25,0xD8, 0xF0,0x05, 0x7A,0x78, 0xE0,0x00, +0x25,0xDC, 0xF3,0x06, 0x31,0x9C, 0xF3,0x06, 0x2E,0xE0, 0xF3,0x05, 0x32,0xD4, 0xF7,0x04, +0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x26,0x8C, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x09, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x26,0x8C, 0xB3,0x3A, 0x68,0x02, 0xE0,0x00, 0x26,0x8C, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x7A,0x90, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xEE,0x00, 0x26,0x41, 0xC5,0xB4, +0x00,0x00, 0xC7,0x38, 0x5A,0x00, 0xE0,0x00, 0x26,0x48, 0xF7,0x05, 0x7A,0x90, 0xC5,0xB8, +0x00,0x00, 0xF0,0x05, 0x7A,0x90, 0xF6,0x84, 0x7A,0x88, 0xF7,0x06, 0x7A,0x28, 0x76,0x35, +0x00,0x03, 0xA7,0x32, 0x70,0x02, 0x06,0xB4, 0x00,0x01, 0x97,0x16, 0xFF,0xEC, 0x84,0xA6, +0xFF,0xFC, 0xF7,0x06, 0x7A,0x2C, 0xF3,0x04, 0x7A,0x98, 0x94,0x82, 0xFF,0x3C, 0x93,0x02, +0xFF,0x40, 0x95,0x82, 0xFF,0x44, 0xB5,0xB2, 0x70,0x02, 0xF7,0x04, 0x7A,0x98, 0xF6,0x85, +0x7A,0x88, 0xC7,0x38, 0x58,0x00, 0xF7,0x05, 0x7A,0x98, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x02, 0x00,0x01, 0xF7,0x05, 0x7A,0x78, 0xF7,0x06, +0x30,0x84, 0xF7,0x05, 0x32,0xD4, 0xF7,0x04, 0x32,0xC4, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x06,0x10, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x50, 0xF7,0x04, +0x32,0xD0, 0xF3,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x2A,0x71, 0x93,0x16, +0xFF,0xE4, 0xF6,0x84, 0x32,0xC4, 0x86,0x16, 0xFF,0xE4, 0x87,0x36, 0x00,0x08, 0xC3,0x04, +0x00,0x00, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0x27,0x3C, 0x20,0x32, 0x00,0x00, 0x87,0x36, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0x27,0x3C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x2A,0x70, 0xF3,0x02, +0x00,0x00, 0xF7,0x04, 0x32,0xC0, 0x93,0x16, 0xFF,0xAC, 0xF5,0x84, 0x32,0xC4, 0x86,0x3A, +0x14,0x28, 0x03,0xB8, 0x14,0x20, 0x04,0x2C, 0x00,0x08, 0x86,0xBA, 0x14,0x24, 0x00,0x00, +0x00,0x01, 0xC0,0x32, 0x6A,0x00, 0xEC,0x00, 0x28,0x28, 0x96,0x16, 0xFF,0xEC, 0x77,0x31, +0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x02, 0xC6,0x38, 0x38,0x00, 0x06,0x30, +0x00,0x0C, 0x86,0xB2, 0x00,0x00, 0x87,0x2E, 0x00,0x08, 0x85,0x16, 0xFF,0xAC, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x27,0xB8, 0xC4,0x84, 0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x2E, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x27,0xBC, 0x20,0x2A, +0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0x27,0xC9, 0x00,0x00, +0x00,0x01, 0xF4,0x82, 0x00,0x00, 0x86,0xB2, 0x00,0x00, 0x87,0x22, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x28,0x04, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x28,0x0C, 0x20,0x2E, 0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x22, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x28,0x0D, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x28,0x1D, 0x20,0x26, +0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0x28,0x28, 0xF3,0x02, +0x00,0x01, 0x93,0x16, 0xFF,0xAC, 0x83,0x16, 0xFF,0xAC, 0x00,0x00, 0x00,0x01, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0x28,0x69, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, +0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xE0,0x00, +0x28,0xD0, 0x96,0x96, 0xFF,0xF4, 0x27,0x14, 0x00,0x14, 0x97,0x13, 0xFF,0xFC, 0x94,0x13, +0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x93,0x96, 0xFF,0xBC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xBC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x28,0xCD, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0x96,0x96, 0xFF,0xF4, 0x97,0x1E, +0x00,0x08, 0xE0,0x00, 0x28,0xD4, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0x2A,0x70, 0xF3,0x02, 0x00,0x00, 0xF6,0x04, 0x32,0xC0, 0x93,0x16, +0xFF,0xAC, 0x86,0xB2, 0x14,0x28, 0x03,0xB0, 0x14,0x20, 0x04,0x30, 0x14,0x8C, 0x87,0x32, +0x14,0x24, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, 0x29,0xBC, 0x96,0x96, +0xFF,0xEC, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xC5,0xB8, +0x38,0x00, 0x05,0xAC, 0x00,0x0C, 0x86,0xAE, 0x00,0x00, 0x87,0x32, 0x14,0x8C, 0x85,0x16, +0xFF,0xAC, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x29,0x4C, 0xC4,0x84, 0x00,0x00, 0x86,0xAE, +0x00,0x04, 0x87,0x32, 0x14,0x90, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x29,0x50, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, +0x29,0x5D, 0x00,0x00, 0x00,0x01, 0xF4,0x82, 0x00,0x00, 0x86,0xAE, 0x00,0x00, 0x87,0x22, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x29,0x98, 0xF6,0x02, +0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x29,0xA0, 0x20,0x32, 0x00,0x00, 0x86,0xAE, +0x00,0x04, 0x87,0x22, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0x29,0xA1, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x29,0xB1, 0x20,0x26, 0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, +0x29,0xBC, 0xF3,0x02, 0x00,0x01, 0x93,0x16, 0xFF,0xAC, 0x83,0x16, 0xFF,0xAC, 0x00,0x00, +0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x29,0xFD, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xF0, 0xE0,0x00, 0x2A,0x64, 0x96,0x96, 0xFF,0xF4, 0x27,0x14, 0x00,0x14, 0x97,0x13, +0xFF,0xFC, 0x94,0x13, 0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x93,0x96, 0xFF,0xBC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xBC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x2A,0x61, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, +0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x38,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0x96,0x96, +0xFF,0xF4, 0x97,0x1E, 0x00,0x08, 0xE0,0x00, 0x2A,0x68, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x2B,0xCD, 0xF3,0x02, 0x00,0x01, 0xF6,0x84, +0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x85,0xB6, 0x0E,0xF4, 0x86,0x36, 0x0E,0xF8, 0x20,0x2E, +0x00,0x10, 0xE2,0x00, 0x2A,0x94, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x2A,0xB1, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x0F,0x00, 0x87,0x36, 0x0F,0x00, 0xE0,0x00, 0x2A,0xDC, 0xF7,0x02, 0x00,0x00, 0x07,0x30, +0x00,0x01, 0xC0,0x3A, 0x5A,0x00, 0xE6,0x00, 0x2A,0xD5, 0xF6,0x82, 0x00,0x00, 0x20,0x32, +0x00,0x10, 0xE6,0x00, 0x2A,0xD8, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x2A,0xDC, 0xC7,0x34, +0x00,0x00, 0xF6,0x82, 0x00,0x01, 0xC7,0x34, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x2B,0xCC, 0xF3,0x02, 0x00,0x01, 0xF3,0x04, 0x32,0xCC, 0x00,0x00, 0x00,0x01, 0x93,0x16, +0xFF,0xDC, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x43,0x68, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x2B,0xB4, 0xF3,0x02, 0x00,0x00, 0x83,0x16, +0xFF,0xDC, 0x00,0x00, 0x00,0x01, 0x86,0x1A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x32, +0x00,0x10, 0xE2,0x00, 0x2B,0x49, 0x76,0xB1, 0x00,0x02, 0x87,0x1A, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x1A, 0x00,0x0C, 0x87,0x1A, 0x00,0x0C, 0xE0,0x00, +0x2B,0xB4, 0xF3,0x02, 0x00,0x00, 0xF3,0x02, 0x00,0x4C, 0x93,0x13, 0xFF,0xFC, 0xC6,0xB4, +0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x83,0x16, 0xFF,0xDC, 0xC7,0x38, +0x60,0x00, 0xC7,0x38, 0x30,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0xF3,0x06, +0x7A,0x28, 0x93,0x13, 0xFF,0xFC, 0x96,0x16, 0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, 0xFF,0xB4, 0x00,0x00, 0x00,0x01, 0x06,0x30, +0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, 0x2B,0xA4, 0x00,0x00, 0x00,0x01, 0xF6,0x02, +0x00,0x00, 0x83,0x16, 0xFF,0xDC, 0x00,0x00, 0x00,0x01, 0x96,0x1A, 0x00,0x00, 0xF3,0x02, +0x00,0x01, 0x93,0x16, 0xFF,0xD4, 0x83,0x16, 0xFF,0xD4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0x2B,0xD0, 0xF3,0x02, 0x00,0x01, 0x93,0x16, 0xFF,0xE4, 0x83,0x16, +0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x2C,0xED, 0xF6,0x82, +0x0C,0xAB, 0xF7,0x04, 0x32,0xB4, 0x83,0x16, 0xFF,0xD4, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x32,0xB4, 0xF7,0x04, 0x32,0xB4, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x2C,0x28, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x32,0xC0, 0xF3,0x06, 0xE0,0x30, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0x2C,0x28, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xE8, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x32,0xE8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x2C,0x65, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, +0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x2C,0x64, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xE6,0x00, 0x2C,0x80, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, +0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, +0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0x33,0x91, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x33,0x31, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x33,0x30, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x33,0x30, 0x00,0x00, +0x00,0x01, 0xE0,0x00, 0x33,0x94, 0xF3,0x06, 0x31,0x9C, 0xF0,0x05, 0x32,0xE8, 0xF7,0x04, +0x32,0xC0, 0xF6,0x04, 0x6F,0x54, 0x96,0xBA, 0x00,0x04, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x2D,0x18, 0xF3,0x02, 0x00,0x0C, 0xF3,0x02, 0x00,0x01, 0xF3,0x05, 0x6F,0x54, 0xE0,0x00, +0x2D,0x20, 0xF7,0x02, 0x00,0x01, 0xF3,0x05, 0x6F,0x58, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x2D,0x34, 0xF3,0x06, 0x2F,0x6C, 0xE0,0x00, 0x34,0x44, 0xF3,0x05, +0x32,0xD4, 0xF5,0x84, 0x7A,0x70, 0x24,0x94, 0x00,0x10, 0x20,0x2E, 0x00,0x01, 0xE6,0x00, +0x30,0x3C, 0xF5,0x85, 0x7A,0xA0, 0xF7,0x02, 0x00,0x01, 0xF6,0x04, 0x32,0xC8, 0xF7,0x05, +0x7A,0x70, 0xF7,0x04, 0x32,0xC4, 0xF6,0x84, 0x32,0xC0, 0xF6,0x05, 0x7A,0x2C, 0x90,0x02, +0xFF,0x80, 0x90,0x02, 0xFF,0x38, 0xF5,0x84, 0x7A,0x28, 0x07,0x38, 0x00,0x24, 0x95,0x82, +0xFF,0x3C, 0x97,0x02, 0xFF,0x40, 0x96,0x02, 0xFF,0x44, 0x87,0x36, 0x14,0x10, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, 0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF0,0x05, +0x6F,0x50, 0xF7,0x04, 0x32,0xB8, 0x95,0x96, 0xFF,0xEC, 0xC7,0x38, 0x60,0x00, 0xF7,0x05, +0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0xF3,0x06, 0x2F,0xF8, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0xF3,0x05, 0x32,0xD4, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, +0x74,0x00, 0xE6,0x00, 0x2D,0xEC, 0x00,0x00, 0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, +0x2D,0xDD, 0x00,0x00, 0x00,0x01, 0xF7,0x06, 0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, +0x00,0x10, 0xE6,0x00, 0x34,0x44, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xE4, 0xFF,0x82, +0x00,0x10, 0xF5,0x84, 0x6F,0x58, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x2E,0x48, 0xF7,0x05, 0x32,0xE4, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x2E,0x3C, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xE0,0x00, +0x2E,0x4C, 0xF3,0x05, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, +0x00,0x01, 0x90,0x2E, 0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x2F,0x78, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x03,0x2C, +0x0E,0xF4, 0x93,0x16, 0xFF,0xCC, 0xF7,0x05, 0x7A,0x68, 0x93,0x13, 0xFF,0xFC, 0x95,0x96, +0xFF,0xB8, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, +0xFF,0xB8, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x2F,0x34, 0x00,0x00, 0x00,0x01, 0x86,0x2E, +0x0E,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x2E,0xD1, 0xF3,0x02, +0x00,0x4C, 0x87,0x2E, 0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, +0x0F,0x00, 0x87,0x2E, 0x0F,0x00, 0xE0,0x00, 0x2F,0x34, 0x00,0x00, 0x00,0x01, 0x93,0x13, +0xFF,0xFC, 0xF3,0x06, 0x7A,0x28, 0x93,0x13, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, +0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x83,0x16, 0xFF,0xCC, 0xC7,0x38, +0x60,0x00, 0xC7,0x38, 0x30,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, +0xFF,0xB8, 0x96,0x16, 0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, +0xFF,0xFC, 0x86,0x16, 0xFF,0xB4, 0x85,0x96, 0xFF,0xB8, 0x06,0x30, 0x00,0x01, 0x20,0x32, +0x00,0x11, 0xE6,0x00, 0x2F,0x30, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, +0x0E,0xF8, 0xF7,0x04, 0x32,0xC0, 0xF3,0x06, 0xE0,0x30, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0x2F,0x78, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, +0x00,0x1E, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x2F,0x79, 0x00,0x00, 0x00,0x01, 0x0F,0x81, +0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x2F,0xB5, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, +0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x2F,0xB4, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xE6,0x00, 0x2F,0xD0, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, +0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, +0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0x33,0x91, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x33,0x31, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x33,0x30, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x33,0x30, 0x00,0x00, +0x00,0x01, 0xE0,0x00, 0x33,0x94, 0xF3,0x06, 0x31,0x9C, 0xF0,0x05, 0x7A,0x88, 0x90,0x02, +0xFF,0x38, 0xF0,0x05, 0x6F,0x50, 0x90,0x02, 0xFF,0x80, 0xF7,0x04, 0x32,0xC4, 0xF3,0x06, +0x32,0x28, 0xF3,0x05, 0x32,0xD4, 0xF6,0x04, 0x32,0xC8, 0xF6,0x84, 0x7A,0x2C, 0xF5,0x02, +0x00,0x00, 0x07,0x38, 0x00,0x24, 0xF7,0x05, 0x7A,0x98, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x30,0x8D, 0xF6,0x05, 0x7A,0x90, 0xC0,0x2A, 0x5A,0x00, 0xE6,0x00, 0x33,0xD8, 0xC0,0x32, +0x6A,0x00, 0xEE,0x00, 0x33,0xD9, 0x00,0x00, 0x00,0x01, 0xF6,0x84, 0x32,0xC0, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x14,0x10, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, +0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF7,0x04, 0x32,0xB8, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0xF7,0x05, 0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x30,0xFD, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0x31,0x00, 0xF7,0x05, 0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0xF5,0x84, +0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x31,0x44, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x31,0x38, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xE0,0x00, 0x31,0x48, 0xF3,0x05, +0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, +0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0x32,0x74, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x03,0x2C, 0x0E,0xF4, 0x93,0x16, +0xFF,0xC4, 0xF7,0x05, 0x7A,0x68, 0x93,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xB8, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x32,0x30, 0x00,0x00, 0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x31,0xCD, 0xF3,0x02, 0x00,0x4C, 0x87,0x2E, +0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, +0x0F,0x00, 0xE0,0x00, 0x32,0x30, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, +0x7A,0x28, 0x93,0x13, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, +0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x83,0x16, 0xFF,0xC4, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, +0x30,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xB8, 0x96,0x16, +0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xB4, 0x85,0x96, 0xFF,0xB8, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, +0x32,0x2C, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, +0x32,0xC0, 0xF3,0x06, 0xE0,0x30, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0x32,0x74, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x00, 0x32,0x75, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, +0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, +0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x32,0xB1, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0A, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x32,0xB0, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x32,0xCC, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, +0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, +0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x33,0x91, 0xF7,0x05, +0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x33,0x31, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x33,0x30, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x33,0x89, 0x00,0x00, 0x00,0x01, 0xF5,0x84, +0x76,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x33,0x7C, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x33,0x68, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xF3,0x05, 0x76,0xF8, 0xF3,0x04, +0x77,0x00, 0xE0,0x00, 0x33,0x80, 0xF3,0x05, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xE0,0x00, +0x33,0x90, 0xF0,0x05, 0x7A,0x78, 0xE0,0x00, 0x33,0x94, 0xF3,0x06, 0x31,0x9C, 0xF3,0x06, +0x2E,0xE0, 0xF3,0x05, 0x32,0xD4, 0xF7,0x04, 0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x34,0x44, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, +0x00,0x09, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x34,0x44, 0xB3,0x3A, 0x68,0x02, 0xE0,0x00, +0x34,0x44, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x7A,0x90, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xEE,0x00, 0x33,0xF9, 0xC5,0xB4, 0x00,0x00, 0xC7,0x38, 0x5A,0x00, 0xE0,0x00, +0x34,0x00, 0xF7,0x05, 0x7A,0x90, 0xC5,0xB8, 0x00,0x00, 0xF0,0x05, 0x7A,0x90, 0xF6,0x84, +0x7A,0x88, 0xF7,0x06, 0x7A,0x28, 0x76,0x35, 0x00,0x03, 0xA7,0x32, 0x70,0x02, 0x06,0xB4, +0x00,0x01, 0x97,0x16, 0xFF,0xEC, 0x84,0xA6, 0xFF,0xFC, 0xF7,0x06, 0x7A,0x2C, 0xF3,0x04, +0x7A,0x98, 0x94,0x82, 0xFF,0x3C, 0x93,0x02, 0xFF,0x40, 0x95,0x82, 0xFF,0x44, 0xB5,0xB2, +0x70,0x02, 0xF7,0x04, 0x7A,0x98, 0xF6,0x85, 0x7A,0x88, 0xC7,0x38, 0x58,0x00, 0xF7,0x05, +0x7A,0x98, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x20, 0xF5,0x84, 0x7A,0x70, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x01, 0xE6,0x00, +0x37,0x6C, 0xF5,0x85, 0x7A,0xA0, 0xF7,0x02, 0x00,0x01, 0xF6,0x04, 0x32,0xC8, 0xF7,0x05, +0x7A,0x70, 0xF7,0x04, 0x32,0xC4, 0xF6,0x84, 0x32,0xC0, 0xF6,0x05, 0x7A,0x2C, 0x90,0x02, +0xFF,0x80, 0x90,0x02, 0xFF,0x38, 0xF5,0x84, 0x7A,0x28, 0x07,0x38, 0x00,0x24, 0x95,0x82, +0xFF,0x3C, 0x97,0x02, 0xFF,0x40, 0x96,0x02, 0xFF,0x44, 0x87,0x36, 0x14,0x10, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, 0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF0,0x05, +0x6F,0x50, 0xF7,0x04, 0x32,0xB8, 0x95,0x96, 0xFF,0xF4, 0xC7,0x38, 0x60,0x00, 0xF7,0x05, +0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0xF4,0x86, 0x2F,0xF8, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0xF4,0x85, 0x32,0xD4, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, +0x74,0x00, 0xE6,0x00, 0x35,0x1C, 0x00,0x00, 0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, +0x35,0x0D, 0x00,0x00, 0x00,0x01, 0xF7,0x06, 0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, +0x00,0x10, 0xE6,0x00, 0x3B,0x70, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xE4, 0xFF,0x82, +0x00,0x10, 0xF5,0x84, 0x6F,0x58, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x35,0x78, 0xF7,0x05, 0x32,0xE4, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x35,0x6C, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, +0x35,0x7C, 0xF4,0x85, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, +0x00,0x01, 0x90,0x2E, 0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x36,0xA8, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x04,0xAC, +0x0E,0xF4, 0x94,0x96, 0xFF,0xEC, 0xF7,0x05, 0x7A,0x68, 0x94,0x93, 0xFF,0xFC, 0x95,0x96, +0xFF,0xDC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, +0xFF,0xDC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x36,0x64, 0x00,0x00, 0x00,0x01, 0x86,0x2E, +0x0E,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x36,0x01, 0xF4,0x82, +0x00,0x4C, 0x87,0x2E, 0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, +0x0F,0x00, 0x87,0x2E, 0x0F,0x00, 0xE0,0x00, 0x36,0x64, 0x00,0x00, 0x00,0x01, 0x94,0x93, +0xFF,0xFC, 0xF4,0x86, 0x7A,0x28, 0x94,0x93, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, +0x60,0x00, 0x77,0x35, 0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x84,0x96, 0xFF,0xEC, 0xC7,0x38, +0x60,0x00, 0xC7,0x38, 0x48,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, +0xFF,0xDC, 0x96,0x16, 0xFF,0xD8, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, +0xFF,0xFC, 0x86,0x16, 0xFF,0xD8, 0x85,0x96, 0xFF,0xDC, 0x06,0x30, 0x00,0x01, 0x20,0x32, +0x00,0x11, 0xE6,0x00, 0x36,0x60, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, +0x0E,0xF8, 0xF7,0x04, 0x32,0xC0, 0xF4,0x86, 0xE0,0x30, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, +0x36,0xA8, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, +0x00,0x1E, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x36,0xA9, 0x00,0x00, 0x00,0x01, 0x0F,0x81, +0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x36,0xE5, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x0A, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x36,0xE4, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF7,0x04, 0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xE6,0x00, 0x37,0x00, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, +0x71,0xD4, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, +0x00,0x01, 0xF6,0x84, 0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0x3A,0xC1, 0xF7,0x05, 0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x3A,0x61, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x3A,0x60, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x3A,0x60, 0x00,0x00, +0x00,0x01, 0xE0,0x00, 0x3A,0xC4, 0xF4,0x86, 0x31,0x9C, 0xF0,0x05, 0x7A,0x88, 0x90,0x02, +0xFF,0x38, 0xF0,0x05, 0x6F,0x50, 0x90,0x02, 0xFF,0x80, 0xF7,0x04, 0x32,0xC4, 0xF4,0x86, +0x32,0x28, 0xF4,0x85, 0x32,0xD4, 0xF6,0x04, 0x32,0xC8, 0xF6,0x84, 0x7A,0x2C, 0xF5,0x02, +0x00,0x00, 0x07,0x38, 0x00,0x24, 0xF7,0x05, 0x7A,0x98, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x37,0xBD, 0xF6,0x05, 0x7A,0x90, 0xC0,0x2A, 0x5A,0x00, 0xE6,0x00, 0x3B,0x08, 0xC0,0x32, +0x6A,0x00, 0xEE,0x00, 0x3B,0x09, 0x00,0x00, 0x00,0x01, 0xF6,0x84, 0x32,0xC0, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x14,0x10, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, +0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF7,0x04, 0x32,0xB8, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0xF7,0x05, 0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x38,0x2D, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0x38,0x30, 0xF7,0x05, 0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0xF5,0x84, +0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x38,0x74, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x38,0x68, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, 0x38,0x78, 0xF4,0x85, +0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, +0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0x39,0xA4, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x04,0xAC, 0x0E,0xF4, 0x94,0x96, +0xFF,0xE4, 0xF7,0x05, 0x7A,0x68, 0x94,0x93, 0xFF,0xFC, 0x95,0x96, 0xFF,0xDC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xDC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x39,0x60, 0x00,0x00, 0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x38,0xFD, 0xF4,0x82, 0x00,0x4C, 0x87,0x2E, +0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, +0x0F,0x00, 0xE0,0x00, 0x39,0x60, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0xF4,0x86, +0x7A,0x28, 0x94,0x93, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, +0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x84,0x96, 0xFF,0xE4, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, +0x48,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xDC, 0x96,0x16, +0xFF,0xD8, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xD8, 0x85,0x96, 0xFF,0xDC, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, +0x39,0x5C, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, +0x32,0xC0, 0xF4,0x86, 0xE0,0x30, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x39,0xA4, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x00, 0x39,0xA5, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, +0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, +0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x39,0xE1, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x0A, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x39,0xE0, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x39,0xFC, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, +0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, +0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x3A,0xC1, 0xF7,0x05, +0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x3A,0x61, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x3A,0x60, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x3A,0xB9, 0x00,0x00, 0x00,0x01, 0xF5,0x84, +0x76,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x3A,0xAC, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3A,0x98, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xF4,0x85, 0x76,0xF8, 0xF4,0x84, +0x77,0x00, 0xE0,0x00, 0x3A,0xB0, 0xF4,0x85, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xE0,0x00, +0x3A,0xC0, 0xF0,0x05, 0x7A,0x78, 0xE0,0x00, 0x3A,0xC4, 0xF4,0x86, 0x31,0x9C, 0xF4,0x86, +0x2E,0xE0, 0xF4,0x85, 0x32,0xD4, 0xF7,0x04, 0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x3B,0x70, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x09, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3B,0x70, 0xB4,0xBA, 0x68,0x02, 0xE0,0x00, +0x3B,0x70, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x7A,0x90, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xEE,0x00, 0x3B,0x29, 0xC5,0xB4, 0x00,0x00, 0xC7,0x38, 0x5A,0x00, 0xE0,0x00, +0x3B,0x30, 0xF7,0x05, 0x7A,0x90, 0xC5,0xB8, 0x00,0x00, 0xF0,0x05, 0x7A,0x90, 0xF7,0x04, +0x7A,0x88, 0xF6,0x86, 0x7A,0x28, 0x76,0x39, 0x00,0x03, 0xA6,0xB2, 0x68,0x02, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x7A,0x88, 0xF7,0x04, 0x7A,0x98, 0x96,0x96, 0xFF,0xF4, 0x96,0x82, +0xFF,0x3C, 0xF4,0x84, 0x7A,0x98, 0xF6,0x86, 0x7A,0x2C, 0xC7,0x38, 0x58,0x00, 0x94,0x82, +0xFF,0x40, 0x95,0x82, 0xFF,0x44, 0xB5,0xB2, 0x68,0x02, 0xF7,0x05, 0x7A,0x98, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x18, 0xF5,0x04, +0x7A,0x88, 0xF7,0x06, 0x7A,0x2C, 0xF5,0x84, 0x7A,0x90, 0x76,0xA9, 0x00,0x03, 0xA6,0xB6, +0x70,0x02, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x3B,0xCD, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x7A,0xA0, 0x00,0x00, 0x00,0x01, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, 0x3F,0x18, 0xC0,0x2E, +0x6A,0x00, 0xEE,0x00, 0x3F,0x19, 0x00,0x00, 0x00,0x01, 0xF6,0x84, 0x32,0xC0, 0xF6,0x04, +0x32,0xC8, 0x87,0x36, 0x14,0x10, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x97,0x36, +0x14,0x10, 0x87,0x36, 0x14,0x18, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x18, 0x87,0x36, 0x14,0x18, 0xF7,0x04, 0x32,0xB8, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0xF7,0x05, 0x32,0xB8, 0xF7,0x04, 0x32,0xBC, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x32,0xBC, 0xF7,0x04, 0x32,0xBC, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0x3C,0x3D, 0xF6,0x82, 0x00,0x00, 0xF7,0x04, 0x32,0xE0, 0xF6,0x85, 0x7A,0x70, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0x3C,0x40, 0xF7,0x05, 0x32,0xE0, 0xF5,0x05, 0x7A,0x70, 0xF5,0x84, +0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x3C,0x84, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3C,0x78, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, 0x3C,0x88, 0xF4,0x85, +0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, +0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0x3D,0xB4, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x04,0xAC, 0x0E,0xF4, 0x94,0x96, +0xFF,0xEC, 0xF7,0x05, 0x7A,0x68, 0x94,0x93, 0xFF,0xFC, 0x95,0x96, 0xFF,0xE4, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xE4, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x3D,0x70, 0x00,0x00, 0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x3D,0x0D, 0xF4,0x82, 0x00,0x4C, 0x87,0x2E, +0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, +0x0F,0x00, 0xE0,0x00, 0x3D,0x70, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0xF4,0x86, +0x7A,0x28, 0x94,0x93, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, +0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x84,0x96, 0xFF,0xEC, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, +0x48,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xE4, 0x96,0x16, +0xFF,0xE0, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xE0, 0x85,0x96, 0xFF,0xE4, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, +0x3D,0x6C, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, +0x32,0xC0, 0xF4,0x86, 0xE0,0x30, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x3D,0xB4, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x00, 0x3D,0xB5, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, +0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, +0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x3D,0xF1, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x0A, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x3D,0xF0, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x3E,0x0C, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, +0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, +0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x3E,0xD1, 0xF7,0x05, +0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x3E,0x71, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x3E,0x70, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x3E,0xC9, 0x00,0x00, 0x00,0x01, 0xF5,0x84, +0x76,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x3E,0xBC, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3E,0xA8, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xF4,0x85, 0x76,0xF8, 0xF4,0x84, +0x77,0x00, 0xE0,0x00, 0x3E,0xC0, 0xF4,0x85, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xE0,0x00, +0x3E,0xD0, 0xF0,0x05, 0x7A,0x78, 0xE0,0x00, 0x3E,0xD4, 0xF4,0x86, 0x31,0x9C, 0xF4,0x86, +0x2E,0xE0, 0xF4,0x85, 0x32,0xD4, 0xF7,0x04, 0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x3F,0x80, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x09, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3F,0x80, 0xB4,0xBA, 0x68,0x02, 0xE0,0x00, +0x3F,0x80, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x7A,0x90, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xEE,0x00, 0x3F,0x39, 0xC5,0xB4, 0x00,0x00, 0xC7,0x38, 0x5A,0x00, 0xE0,0x00, +0x3F,0x40, 0xF7,0x05, 0x7A,0x90, 0xC5,0xB8, 0x00,0x00, 0xF0,0x05, 0x7A,0x90, 0xF7,0x04, +0x7A,0x88, 0xF6,0x86, 0x7A,0x28, 0x76,0x39, 0x00,0x03, 0xA6,0xB2, 0x68,0x02, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x7A,0x88, 0xF7,0x04, 0x7A,0x98, 0x96,0x96, 0xFF,0xF4, 0x96,0x82, +0xFF,0x3C, 0xF4,0x84, 0x7A,0x98, 0xF6,0x86, 0x7A,0x2C, 0xC7,0x38, 0x58,0x00, 0x94,0x82, +0xFF,0x40, 0x95,0x82, 0xFF,0x44, 0xB5,0xB2, 0x68,0x02, 0xF7,0x05, 0x7A,0x98, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x10, 0xF5,0x84, +0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x3F,0xE4, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x3F,0xD8, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, 0x00,0x22, 0xE0,0x00, 0x3F,0xE8, 0xF5,0x05, +0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF5,0x84, 0x32,0xC0, 0x00,0x00, 0x00,0x01, 0x90,0x2E, +0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0x41,0x14, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x38, 0x05,0x2C, 0x0E,0xF4, 0x95,0x16, +0xFF,0xF4, 0xF7,0x05, 0x7A,0x68, 0x95,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xEC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x43,0xA0, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xEC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x40,0xD0, 0x00,0x00, 0x00,0x01, 0x86,0x2E, 0x0E,0xF8, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x40,0x6D, 0xF5,0x02, 0x00,0x4C, 0x87,0x2E, +0x0F,0x00, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x0F,0x00, 0x87,0x2E, +0x0F,0x00, 0xE0,0x00, 0x40,0xD0, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0xF5,0x06, +0x7A,0x28, 0x95,0x13, 0xFF,0xFC, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, +0x00,0x04, 0xC7,0x38, 0x6A,0x00, 0x85,0x16, 0xFF,0xF4, 0xC7,0x38, 0x60,0x00, 0xC7,0x38, +0x50,0x00, 0x07,0x38, 0x00,0x10, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xEC, 0x96,0x16, +0xFF,0xE8, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xE8, 0x85,0x96, 0xFF,0xEC, 0x06,0x30, 0x00,0x01, 0x20,0x32, 0x00,0x11, 0xE6,0x00, +0x40,0xCC, 0x00,0x00, 0x00,0x01, 0xF6,0x02, 0x00,0x00, 0x96,0x2E, 0x0E,0xF8, 0xF7,0x04, +0x32,0xC0, 0xF5,0x06, 0xE0,0x30, 0xC0,0x3A, 0x52,0x00, 0xE6,0x00, 0x41,0x14, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1E, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x00, 0x41,0x15, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, +0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, +0x79,0xC8, 0xF7,0x04, 0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x41,0x51, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, 0x00,0x0A, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x41,0x50, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x71,0xD4, 0xF6,0x84, 0x71,0xCC, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x41,0x6C, 0xF7,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD4, 0xF6,0x84, 0x71,0xD4, 0xF7,0x04, +0x71,0xD0, 0xF0,0x05, 0x71,0xC4, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xF6,0x84, +0x32,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x42,0x31, 0xF7,0x05, +0x71,0xC8, 0xF7,0x04, 0x71,0x98, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x41,0xD1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x41,0xD0, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x42,0x29, 0x00,0x00, 0x00,0x01, 0xF5,0x84, +0x76,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x42,0x1C, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x42,0x08, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, 0x00,0x22, 0xF5,0x05, 0x76,0xF8, 0xF5,0x04, +0x77,0x00, 0xE0,0x00, 0x42,0x20, 0xF5,0x05, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xE0,0x00, +0x42,0x30, 0xF0,0x05, 0x7A,0x78, 0xE0,0x00, 0x42,0x34, 0xF5,0x06, 0x31,0x9C, 0xF5,0x06, +0x2E,0xE0, 0xF5,0x05, 0x32,0xD4, 0xF7,0x04, 0x71,0xC8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x42,0x74, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, +0x00,0x09, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x42,0x74, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, +0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x2E,0xE0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x32,0xD4, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x2F,0x6C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x2F,0xF8, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x30,0x84, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x31,0x10, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x32,0xD4, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x31,0x9C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x32,0xD4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x32,0x28, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x87,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x86,0xBA, 0x00,0x00, 0x87,0x3A, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0x44,0x0C, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x86,0x2E, +0x00,0x00, 0x86,0xAE, 0x00,0x04, 0x20,0x32, 0x00,0x10, 0xE2,0x00, 0x43,0xD0, 0x00,0x00, +0x00,0x01, 0x20,0x36, 0x00,0x10, 0xE2,0x00, 0x43,0xED, 0x07,0x34, 0x00,0x01, 0x87,0x2E, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x00,0x0C, 0x87,0x2E, +0x00,0x0C, 0xE0,0x00, 0x44,0x14, 0xF4,0x02, 0x00,0x00, 0xC0,0x3A, 0x62,0x00, 0xE6,0x00, +0x44,0x11, 0xF4,0x02, 0x00,0x00, 0x20,0x36, 0x00,0x10, 0xE6,0x00, 0x44,0x14, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x44,0x14, 0x00,0x00, 0x00,0x01, 0xF4,0x02, +0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x02, +0x00,0x01, 0xF7,0x05, 0x35,0x24, 0xF7,0x04, 0x6F,0x44, 0x00,0x00, 0x00,0x01, 0xF7,0x05, +0x35,0x28, 0xF7,0x06, 0x32,0xF4, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x35,0x30, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, +0x45,0x04, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x0D, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x32,0xF4, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF7,0x02, 0x4A,0x04, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x0F, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x33,0x80, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x4E,0xEC, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, +0x00,0x08, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x34,0x0C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x57,0x64, 0x97,0x13, +0xFF,0xFC, 0xF7,0x02, 0x00,0x07, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x34,0x98, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x14, 0xF7,0x04, +0x75,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x45,0x2D, 0xF6,0x86, +0x75,0xF8, 0xE0,0x00, 0x45,0x44, 0xF7,0x02, 0x00,0x00, 0xF7,0x04, 0x76,0x04, 0x00,0x00, +0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x87,0x3A, 0x00,0x18, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x45,0x5C, 0xF7,0x05, 0x35,0x48, 0xF4,0x86, +0x33,0x80, 0xE0,0x00, 0x49,0xF0, 0xF4,0x85, 0x35,0x30, 0xF7,0x04, 0x6F,0x54, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x45,0x80, 0xF4,0x82, 0x00,0x08, 0xF4,0x82, +0x00,0x01, 0xF4,0x85, 0x6F,0x54, 0xE0,0x00, 0x45,0x88, 0xF7,0x02, 0x00,0x01, 0xF4,0x85, +0x6F,0x58, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x45,0xA0, 0xF4,0x82, +0x00,0x04, 0xF4,0x86, 0x34,0x0C, 0xE0,0x00, 0x49,0xF0, 0xF4,0x85, 0x35,0x30, 0xF6,0x84, +0x35,0x48, 0xF6,0x04, 0x35,0x2C, 0xF4,0xB7, 0x28,0x00, 0x07,0x34, 0x00,0x02, 0xF4,0x82, +0x00,0x01, 0xF4,0xBB, 0x28,0x00, 0x87,0x32, 0x00,0x8C, 0xF4,0x82, 0x00,0x01, 0x97,0x36, +0x00,0x18, 0x87,0x32, 0x00,0x90, 0xF4,0x85, 0x6F,0x50, 0x97,0x36, 0x00,0x04, 0x84,0xB2, +0x00,0x84, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x10, 0x84,0xB2, 0x00,0x88, 0x00,0x00, +0x00,0x01, 0x94,0xB6, 0x00,0x14, 0x84,0xB6, 0x00,0x10, 0x00,0x00, 0x00,0x01, 0x94,0xB6, +0x00,0x08, 0x84,0xB6, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x0C, 0x84,0xB2, +0x00,0x98, 0x00,0x00, 0x00,0x01, 0xF4,0x85, 0x35,0x54, 0xF4,0x82, 0x00,0x01, 0x94,0x82, +0xFF,0x80, 0xF5,0x04, 0x35,0x54, 0xF4,0x86, 0x34,0x98, 0xF4,0x85, 0x35,0x30, 0x95,0x02, +0xFF,0x38, 0x85,0xB2, 0x00,0x00, 0x06,0xB4, 0x00,0x24, 0x95,0x82, 0xFF,0x3C, 0x96,0x82, +0xFF,0x40, 0x87,0x32, 0x00,0x04, 0xF6,0x85, 0x35,0x50, 0x97,0x02, 0xFF,0x44, 0x86,0xB2, +0x00,0x04, 0xF0,0x05, 0x35,0x4C, 0xF7,0x04, 0x35,0x40, 0x95,0x16, 0xFF,0xF4, 0x95,0x96, +0xFF,0xF4, 0xC7,0x38, 0x68,0x00, 0xF7,0x05, 0x35,0x40, 0xF5,0x84, 0x35,0x28, 0x86,0xB2, +0x00,0x04, 0x87,0x2E, 0x14,0x14, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x97,0x2E, +0x14,0x14, 0x87,0x32, 0x00,0x80, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, +0x49,0xF0, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x46,0xA4, 0x00,0x00, +0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x46,0x95, 0x00,0x00, 0x00,0x01, 0xF7,0x06, +0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x49,0xF0, 0x00,0x00, +0x00,0x01, 0xFF,0x82, 0x00,0x10, 0x86,0x82, 0xFF,0x38, 0xF7,0x04, 0x35,0x58, 0xF5,0x84, +0x6F,0x58, 0xF6,0x85, 0x35,0x54, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x47,0x08, 0xF7,0x05, 0x35,0x58, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x46,0xFC, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, +0x47,0x0C, 0xF4,0x85, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x94, 0xC4,0x84, 0x00,0x00, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, +0x47,0x71, 0x00,0x00, 0x00,0x01, 0x86,0x36, 0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, +0x00,0x01, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, 0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, +0x00,0x0F, 0x70,0x3E, 0xFF,0xE1, 0x07,0x38, 0x00,0x24, 0xE6,0x00, 0x47,0x69, 0xC6,0x38, +0x60,0x00, 0x06,0xB4, 0x00,0x01, 0xC7,0x04, 0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, +0x35,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x0F, 0xE2,0x00, 0x47,0xBD, 0x07,0x38, 0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, +0x47,0xD0, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, +0x00,0x08, 0xE0,0x00, 0x49,0x68, 0xF7,0x05, 0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, +0x47,0xCC, 0x00,0x00, 0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, +0x35,0x3C, 0xF6,0x84, 0x35,0x28, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, +0x35,0x3C, 0x87,0x36, 0x14,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x1C, 0xF7,0x04, 0x76,0x04, 0x86,0xB6, 0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, +0x00,0x01, 0xF6,0x84, 0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x48,0x1C, 0xF7,0x05, 0x76,0x04, 0xF0,0x05, 0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, +0x76,0x08, 0xF0,0x05, 0x75,0xFC, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0x48,0x81, 0xF7,0x05, 0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF4,0x86, +0x72,0x18, 0xC0,0x3A, 0x4A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x48,0x81, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x0E, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x48,0x80, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, +0x00,0x00, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, 0x49,0x68, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, +0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x49,0x3C, 0x05,0xB4, 0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, +0xFF,0xEC, 0x95,0x96, 0xFF,0xE8, 0x96,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x5E,0xDC, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, +0xFF,0xE4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x49,0x2C, 0xF7,0x02, 0x00,0x00, 0x86,0x36, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, 0x49,0x11, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, 0x49,0x2C, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, +0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x47,0xA8, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x49,0x5C, 0x07,0x34, 0x14,0x94, 0xF4,0x84, +0x6F,0x44, 0xE0,0x00, 0x49,0x60, 0xF4,0x85, 0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, +0x48,0x84, 0x05,0x28, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x49,0xA1, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x0D, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x49,0xA8, 0xB4,0xBA, 0x68,0x02, 0xE0,0x00, 0x49,0xA8, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, +0x00,0x01, 0xF4,0x85, 0x35,0x24, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x44, 0xF4,0x86, +0x32,0xF4, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x49,0xF0, 0xF4,0x85, 0x35,0x30, 0xF7,0x04, +0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0x49,0xF1, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x14, 0xF7,0x04, +0x75,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x4A,0x2D, 0xF6,0x86, +0x75,0xF8, 0xE0,0x00, 0x4A,0x40, 0xF6,0x82, 0x00,0x00, 0xF7,0x04, 0x76,0x04, 0x00,0x00, +0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x86,0xBA, 0x00,0x18, 0xF7,0x04, +0x6F,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x4A,0x64, 0xF6,0x85, +0x35,0x48, 0xF4,0x82, 0x00,0x01, 0xF4,0x85, 0x6F,0x54, 0xE0,0x00, 0x4A,0x70, 0xF7,0x02, +0x00,0x01, 0xF4,0x82, 0x00,0x08, 0xF4,0x85, 0x6F,0x58, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x4A,0x88, 0xF4,0x82, 0x00,0x04, 0xF4,0x86, 0x34,0x0C, 0xE0,0x00, +0x4E,0xD8, 0xF4,0x85, 0x35,0x30, 0xF6,0x84, 0x35,0x48, 0xF6,0x04, 0x35,0x2C, 0xF4,0xB7, +0x28,0x00, 0x07,0x34, 0x00,0x02, 0xF4,0x82, 0x00,0x01, 0xF4,0xBB, 0x28,0x00, 0x87,0x32, +0x00,0x8C, 0xF4,0x82, 0x00,0x01, 0x97,0x36, 0x00,0x18, 0x87,0x32, 0x00,0x90, 0xF4,0x85, +0x6F,0x50, 0x97,0x36, 0x00,0x04, 0x84,0xB2, 0x00,0x84, 0x00,0x00, 0x00,0x01, 0x94,0xB6, +0x00,0x10, 0x84,0xB2, 0x00,0x88, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x14, 0x84,0xB6, +0x00,0x10, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x08, 0x84,0xB6, 0x00,0x14, 0x00,0x00, +0x00,0x01, 0x94,0xB6, 0x00,0x0C, 0x84,0xB2, 0x00,0x98, 0x00,0x00, 0x00,0x01, 0xF4,0x85, +0x35,0x54, 0xF4,0x82, 0x00,0x01, 0x94,0x82, 0xFF,0x80, 0xF5,0x04, 0x35,0x54, 0xF4,0x86, +0x34,0x98, 0xF4,0x85, 0x35,0x30, 0x95,0x02, 0xFF,0x38, 0x85,0xB2, 0x00,0x00, 0x06,0xB4, +0x00,0x24, 0x95,0x82, 0xFF,0x3C, 0x96,0x82, 0xFF,0x40, 0x87,0x32, 0x00,0x04, 0xF6,0x85, +0x35,0x50, 0x97,0x02, 0xFF,0x44, 0x86,0xB2, 0x00,0x04, 0xF0,0x05, 0x35,0x4C, 0xF7,0x04, +0x35,0x40, 0x95,0x16, 0xFF,0xF4, 0x95,0x96, 0xFF,0xF4, 0xC7,0x38, 0x68,0x00, 0xF7,0x05, +0x35,0x40, 0xF5,0x84, 0x35,0x28, 0x86,0xB2, 0x00,0x04, 0x87,0x2E, 0x14,0x14, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x97,0x2E, 0x14,0x14, 0x87,0x32, 0x00,0x80, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, 0x4E,0xD8, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, +0x74,0x00, 0xE6,0x00, 0x4B,0x8C, 0x00,0x00, 0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, +0x4B,0x7D, 0x00,0x00, 0x00,0x01, 0xF7,0x06, 0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, +0x00,0x10, 0xE6,0x00, 0x4E,0xD8, 0x00,0x00, 0x00,0x01, 0xFF,0x82, 0x00,0x10, 0x86,0x82, +0xFF,0x38, 0xF7,0x04, 0x35,0x58, 0xF5,0x84, 0x6F,0x58, 0xF6,0x85, 0x35,0x54, 0x07,0x38, +0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x4B,0xF0, 0xF7,0x05, 0x35,0x58, 0xF7,0x04, +0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x4B,0xE4, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, 0x4B,0xF4, 0xF4,0x85, 0x6F,0x58, 0xF0,0x05, +0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x94, 0xC4,0x84, +0x00,0x00, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x4C,0x59, 0x00,0x00, 0x00,0x01, 0x86,0x36, +0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, 0x00,0x01, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, +0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xC6,0xB4, +0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, 0x00,0x0F, 0x70,0x3E, 0xFF,0xE1, 0x07,0x38, +0x00,0x24, 0xE6,0x00, 0x4C,0x51, 0xC6,0x38, 0x60,0x00, 0x06,0xB4, 0x00,0x01, 0xC7,0x04, +0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, 0x35,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x0F, 0xE2,0x00, 0x4C,0xA5, 0x07,0x38, +0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, 0x4C,0xB8, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, 0x00,0x08, 0xE0,0x00, 0x4E,0x50, 0xF7,0x05, +0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x4C,0xB4, 0x00,0x00, 0x00,0x01, 0xF7,0x02, +0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, 0x35,0x3C, 0xF6,0x84, 0x35,0x28, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, 0x35,0x3C, 0x87,0x36, 0x14,0x1C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x14,0x1C, 0xF7,0x04, 0x76,0x04, 0x86,0xB6, +0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, 0x00,0x01, 0xF6,0x84, 0x76,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0x4D,0x04, 0xF7,0x05, 0x76,0x04, 0xF0,0x05, +0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, 0x76,0x08, 0xF0,0x05, 0x75,0xFC, 0xC0,0x36, +0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x4D,0x69, 0xF7,0x05, +0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF4,0x86, 0x72,0x18, 0xC0,0x3A, 0x4A,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x4D,0x69, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, +0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0xF4,0x82, 0x00,0x0E, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x4D,0x68, 0xB4,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, 0x00,0x00, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, +0x4E,0x50, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, 0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, 0x4E,0x24, 0x05,0xB4, +0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, 0xFF,0xEC, 0x95,0x96, 0xFF,0xE8, 0x96,0x96, +0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x5E,0xDC, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, +0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, 0xFF,0xE4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x4E,0x14, 0xF7,0x02, 0x00,0x00, 0x86,0x36, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, +0x00,0x0F, 0xE2,0x00, 0x4D,0xF9, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, +0x4E,0x14, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, +0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, 0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, +0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x4C,0x90, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, +0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x4E,0x44, 0x07,0x34, 0x14,0x94, 0xF4,0x84, 0x6F,0x44, 0xE0,0x00, 0x4E,0x48, 0xF4,0x85, +0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, 0x4D,0x6C, 0x05,0x28, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0x4E,0x89, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, +0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x0D, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x4E,0x90, 0xB4,0xBA, 0x68,0x02, 0xE0,0x00, +0x4E,0x90, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x01, 0xF4,0x85, 0x35,0x24, 0xF6,0x84, +0x35,0x28, 0xF7,0x04, 0x6F,0x44, 0xF4,0x86, 0x32,0xF4, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x4E,0xD8, 0xF4,0x85, 0x35,0x30, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, +0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x4E,0xD9, 0x00,0x00, 0x00,0x01, 0x0F,0x81, +0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x14, 0xF6,0x84, 0x35,0x48, 0xF6,0x04, 0x35,0x2C, 0xF4,0x82, +0x00,0x04, 0xF4,0xB7, 0x28,0x00, 0x07,0x34, 0x00,0x02, 0xF4,0x82, 0x00,0x01, 0xF4,0xBB, +0x28,0x00, 0x87,0x32, 0x00,0x8C, 0xF4,0x82, 0x00,0x01, 0x97,0x36, 0x00,0x18, 0x87,0x32, +0x00,0x90, 0xF4,0x85, 0x6F,0x50, 0x97,0x36, 0x00,0x04, 0x84,0xB2, 0x00,0x84, 0x00,0x00, +0x00,0x01, 0x94,0xB6, 0x00,0x10, 0x84,0xB2, 0x00,0x88, 0x00,0x00, 0x00,0x01, 0x94,0xB6, +0x00,0x14, 0x84,0xB6, 0x00,0x10, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x08, 0x84,0xB6, +0x00,0x14, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x00,0x0C, 0x84,0xB2, 0x00,0x98, 0x00,0x00, +0x00,0x01, 0xF4,0x85, 0x35,0x54, 0xF4,0x82, 0x00,0x01, 0x94,0x82, 0xFF,0x80, 0xF5,0x04, +0x35,0x54, 0xF4,0x86, 0x34,0x98, 0xF4,0x85, 0x35,0x30, 0x95,0x02, 0xFF,0x38, 0x85,0xB2, +0x00,0x00, 0x06,0xB4, 0x00,0x24, 0x95,0x82, 0xFF,0x3C, 0x96,0x82, 0xFF,0x40, 0x87,0x32, +0x00,0x04, 0xF6,0x85, 0x35,0x50, 0x97,0x02, 0xFF,0x44, 0x86,0xB2, 0x00,0x04, 0xF0,0x05, +0x35,0x4C, 0xF7,0x04, 0x35,0x40, 0x95,0x16, 0xFF,0xF4, 0x95,0x96, 0xFF,0xF4, 0xC7,0x38, +0x68,0x00, 0xF7,0x05, 0x35,0x40, 0xF5,0x84, 0x35,0x28, 0x86,0xB2, 0x00,0x04, 0x87,0x2E, +0x14,0x14, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x97,0x2E, 0x14,0x14, 0x87,0x32, +0x00,0x80, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, 0x53,0x4C, 0xF7,0x06, +0x0C,0x3E, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x50,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x7E, +0x74,0x00, 0xE6,0x00, 0x4F,0xF1, 0x00,0x00, 0x00,0x01, 0xF7,0x06, 0x0C,0x3E, 0xC7,0x7C, +0x74,0x00, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x53,0x4C, 0x00,0x00, 0x00,0x01, 0xFF,0x82, +0x00,0x10, 0x86,0x82, 0xFF,0x38, 0xF7,0x04, 0x35,0x58, 0xF5,0x84, 0x6F,0x58, 0xF6,0x85, +0x35,0x54, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, 0x50,0x64, 0xF7,0x05, +0x35,0x58, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x50,0x58, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x22, 0xE0,0x00, 0x50,0x68, 0xF4,0x85, +0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x94, 0xC4,0x84, 0x00,0x00, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x00, 0x50,0xCD, 0x00,0x00, +0x00,0x01, 0x86,0x36, 0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, 0x00,0x01, 0x76,0xB4, +0xFF,0xF0, 0xF7,0x04, 0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, 0x00,0x00, 0x97,0x16, +0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, 0x00,0x0F, 0x70,0x3E, +0xFF,0xE1, 0x07,0x38, 0x00,0x24, 0xE6,0x00, 0x50,0xC5, 0xC6,0x38, 0x60,0x00, 0x06,0xB4, +0x00,0x01, 0xC7,0x04, 0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, 0x35,0x44, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x0F, 0xE2,0x00, +0x51,0x19, 0x07,0x38, 0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x36, 0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, 0x51,0x2C, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, 0x00,0x08, 0xE0,0x00, +0x52,0xC4, 0xF7,0x05, 0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x51,0x28, 0x00,0x00, +0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, 0x35,0x3C, 0xF6,0x84, +0x35,0x28, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, 0x35,0x3C, 0x87,0x36, +0x14,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x14,0x1C, 0xF7,0x04, +0x76,0x04, 0x86,0xB6, 0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, 0x00,0x01, 0xF6,0x84, +0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0x51,0x78, 0xF7,0x05, +0x76,0x04, 0xF0,0x05, 0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, 0x76,0x08, 0xF0,0x05, +0x75,0xFC, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0x51,0xDD, 0xF7,0x05, 0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF4,0x86, 0x72,0x18, 0xC0,0x3A, +0x4A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x51,0xDD, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x0E, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x51,0xDC, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, 0x00,0x00, 0x20,0x2A, +0x00,0x02, 0xEE,0x00, 0x52,0xC4, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, 0x35,0x28, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0x52,0x98, 0x05,0xB4, 0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, 0xFF,0xEC, 0x95,0x96, +0xFF,0xE8, 0x96,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x5E,0xDC, 0x97,0x93, +0xFF,0xFC, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, 0xFF,0xE4, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x52,0x88, 0xF7,0x02, 0x00,0x00, 0x86,0x36, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, 0x52,0x6D, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x14, 0x87,0x36, +0x00,0x14, 0xE0,0x00, 0x52,0x88, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, 0x00,0x02, 0xC6,0xB4, +0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, 0x60,0x00, 0x07,0x38, +0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x51,0x04, 0xF7,0x05, +0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x52,0xB8, 0x07,0x34, 0x14,0x94, 0xF4,0x84, 0x6F,0x44, 0xE0,0x00, +0x52,0xBC, 0xF4,0x85, 0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, 0x51,0xE0, 0x05,0x28, +0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x52,0xFD, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, +0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0xF4,0x82, 0x00,0x0D, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x53,0x04, 0xB4,0xBA, +0x68,0x02, 0xE0,0x00, 0x53,0x04, 0xF0,0x05, 0x2D,0x38, 0xF4,0x82, 0x00,0x01, 0xF4,0x85, +0x35,0x24, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x44, 0xF4,0x86, 0x32,0xF4, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x53,0x4C, 0xF4,0x85, 0x35,0x30, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, +0x00,0x01, 0x77,0xB8, 0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x53,0x4D, 0x00,0x00, +0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x14, 0xF4,0x84, 0x35,0x54, 0xF6,0x84, +0x35,0x4C, 0xF5,0x84, 0x35,0x2C, 0x94,0x82, 0xFF,0x38, 0x76,0xB5, 0x00,0x03, 0xA5,0x2E, +0x68,0x02, 0x00,0x00, 0x00,0x01, 0x95,0x02, 0xFF,0x3C, 0xF3,0x84, 0x35,0x50, 0xC6,0xAC, +0x68,0x00, 0x93,0x82, 0xFF,0x40, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x97,0x02, +0xFF,0x44, 0x86,0x36, 0x00,0x04, 0xF7,0x04, 0x35,0x40, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0xF7,0x05, 0x35,0x40, 0xF6,0x04, 0x35,0x28, 0x86,0xB6, 0x00,0x04, 0x87,0x32, +0x14,0x14, 0x94,0x96, 0xFF,0xF4, 0xC7,0x38, 0x68,0x00, 0x97,0x32, 0x14,0x14, 0x87,0x2E, +0x00,0x80, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, 0x57,0x50, 0x95,0x16, +0xFF,0xF4, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x54,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x53,0xF5, 0x00,0x00, 0x00,0x01, 0xF7,0x06, +0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x57,0x50, 0x00,0x00, +0x00,0x01, 0xFF,0x82, 0x00,0x10, 0x86,0x82, 0xFF,0x38, 0xF7,0x04, 0x35,0x58, 0xF5,0x84, +0x6F,0x58, 0xF6,0x85, 0x35,0x54, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x54,0x68, 0xF7,0x05, 0x35,0x58, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x54,0x5C, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x82, 0x00,0x22, 0xE0,0x00, +0x54,0x6C, 0xF3,0x85, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x94, 0xC3,0x84, 0x00,0x00, 0xC0,0x3A, 0x3A,0x00, 0xE6,0x00, +0x54,0xD1, 0x00,0x00, 0x00,0x01, 0x86,0x36, 0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, +0x00,0x01, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, 0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, +0x00,0x0F, 0x70,0x3E, 0xFF,0xE1, 0x07,0x38, 0x00,0x24, 0xE6,0x00, 0x54,0xC9, 0xC6,0x38, +0x60,0x00, 0x06,0xB4, 0x00,0x01, 0xC7,0x04, 0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, +0x35,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x0F, 0xE2,0x00, 0x55,0x1D, 0x07,0x38, 0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, +0x55,0x30, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, +0x00,0x08, 0xE0,0x00, 0x56,0xC8, 0xF7,0x05, 0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, +0x55,0x2C, 0x00,0x00, 0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, +0x35,0x3C, 0xF6,0x84, 0x35,0x28, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, +0x35,0x3C, 0x87,0x36, 0x14,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x1C, 0xF7,0x04, 0x76,0x04, 0x86,0xB6, 0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, +0x00,0x01, 0xF6,0x84, 0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x55,0x7C, 0xF7,0x05, 0x76,0x04, 0xF0,0x05, 0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, +0x76,0x08, 0xF0,0x05, 0x75,0xFC, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0x55,0xE1, 0xF7,0x05, 0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF3,0x86, +0x72,0x18, 0xC0,0x3A, 0x3A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x55,0xE1, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x82, 0x00,0x0E, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x55,0xE0, 0xB3,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, +0x00,0x00, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, 0x56,0xC8, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, +0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x56,0x9C, 0x05,0xB4, 0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, +0xFF,0xEC, 0x95,0x96, 0xFF,0xE8, 0x96,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x5E,0xDC, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, +0xFF,0xE4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x56,0x8C, 0xF7,0x02, 0x00,0x00, 0x86,0x36, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, 0x56,0x71, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, 0x56,0x8C, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, +0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x55,0x08, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x56,0xBC, 0x07,0x34, 0x14,0x94, 0xF3,0x84, +0x6F,0x44, 0xE0,0x00, 0x56,0xC0, 0xF3,0x85, 0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, +0x55,0xE4, 0x05,0x28, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x57,0x01, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x82, 0x00,0x0D, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x57,0x08, 0xB3,0xBA, 0x68,0x02, 0xE0,0x00, 0x57,0x08, 0xF0,0x05, 0x2D,0x38, 0xF3,0x82, +0x00,0x01, 0xF3,0x85, 0x35,0x24, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x44, 0xF3,0x86, +0x32,0xF4, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x57,0x50, 0xF3,0x85, 0x35,0x30, 0xF7,0x04, +0xE0,0x18, 0x00,0x00, 0x00,0x01, 0x77,0xB8, 0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0x57,0x51, 0x00,0x00, 0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x14, 0x87,0x02, +0xFF,0x38, 0xF3,0x84, 0x35,0x2C, 0xF7,0x05, 0x35,0x54, 0x87,0x1E, 0x00,0x80, 0xF5,0x04, +0x35,0x4C, 0x27,0x38, 0x00,0x01, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, 0x5A,0x4C, 0x00,0x00, +0x00,0x01, 0xF5,0x84, 0x6F,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x57,0xD8, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x57,0xCC, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xE0,0x00, +0x57,0xDC, 0xF3,0x05, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x94, 0xC3,0x04, 0x00,0x00, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0x58,0x41, 0x00,0x00, 0x00,0x01, 0x86,0x36, 0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, +0x00,0x01, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, 0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, +0x00,0x0F, 0x70,0x3E, 0xFF,0xE1, 0x07,0x38, 0x00,0x24, 0xE6,0x00, 0x58,0x39, 0xC6,0x38, +0x60,0x00, 0x06,0xB4, 0x00,0x01, 0xC7,0x04, 0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, +0x35,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x0F, 0xE2,0x00, 0x58,0x8D, 0x07,0x38, 0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, +0x58,0xA0, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, +0x00,0x08, 0xE0,0x00, 0x5A,0x38, 0xF7,0x05, 0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, +0x58,0x9C, 0x00,0x00, 0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, +0x35,0x3C, 0xF6,0x84, 0x35,0x28, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, +0x35,0x3C, 0x87,0x36, 0x14,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x1C, 0xF7,0x04, 0x76,0x04, 0x86,0xB6, 0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, +0x00,0x01, 0xF6,0x84, 0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x58,0xEC, 0xF7,0x05, 0x76,0x04, 0xF0,0x05, 0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, +0x76,0x08, 0xF0,0x05, 0x75,0xFC, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0x59,0x51, 0xF7,0x05, 0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF3,0x06, +0x72,0x18, 0xC0,0x3A, 0x32,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x59,0x51, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0E, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x59,0x50, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, +0x00,0x00, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, 0x5A,0x38, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, +0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x5A,0x0C, 0x05,0xB4, 0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, +0xFF,0xEC, 0x95,0x96, 0xFF,0xE8, 0x96,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x5E,0xDC, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, +0xFF,0xE4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x59,0xFC, 0xF7,0x02, 0x00,0x00, 0x86,0x36, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, 0x59,0xE1, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, 0x59,0xFC, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, +0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x58,0x78, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x5A,0x2C, 0x07,0x34, 0x14,0x94, 0xF3,0x04, +0x6F,0x44, 0xE0,0x00, 0x5A,0x30, 0xF3,0x05, 0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, +0x59,0x54, 0x05,0x28, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x5D,0xC4, 0xF3,0x02, +0x00,0x01, 0xE0,0x00, 0x5D,0xF0, 0x00,0x00, 0x00,0x01, 0x77,0x29, 0x00,0x03, 0xC7,0x1C, +0x70,0x00, 0x87,0x3A, 0x00,0x04, 0x05,0x28, 0x00,0x01, 0x76,0xA9, 0x00,0x03, 0xF4,0x84, +0x35,0x54, 0xF6,0x04, 0x35,0x50, 0x94,0x82, 0xFF,0x38, 0xA4,0x1E, 0x68,0x02, 0xC6,0x30, +0x70,0x00, 0x94,0x02, 0xFF,0x3C, 0x96,0x02, 0xFF,0x40, 0xC6,0x9C, 0x68,0x00, 0x87,0x36, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x97,0x02, 0xFF,0x44, 0x85,0xB6, 0x00,0x04, 0xF7,0x04, +0x35,0x40, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x58,0x00, 0xF7,0x05, 0x35,0x40, 0x85,0xB6, +0x00,0x04, 0xF5,0x05, 0x35,0x4C, 0xF6,0x84, 0x35,0x28, 0xF6,0x05, 0x35,0x50, 0x87,0x36, +0x14,0x14, 0x94,0x96, 0xFF,0xF4, 0xC7,0x38, 0x58,0x00, 0x97,0x36, 0x14,0x14, 0x87,0x1E, +0x00,0x80, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xEE,0x00, 0x5E,0x3C, 0x94,0x16, +0xFF,0xF4, 0xF7,0x06, 0x0C,0x3E, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x5A,0xF4, 0x00,0x00, +0x00,0x01, 0xC0,0x7E, 0x74,0x00, 0xE6,0x00, 0x5A,0xE5, 0x00,0x00, 0x00,0x01, 0xF7,0x06, +0x0C,0x3E, 0xC7,0x7C, 0x74,0x00, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, 0x5E,0x3C, 0x00,0x00, +0x00,0x01, 0xFF,0x82, 0x00,0x10, 0x86,0x82, 0xFF,0x38, 0xF7,0x04, 0x35,0x58, 0xF5,0x84, +0x6F,0x58, 0xF6,0x85, 0x35,0x54, 0x07,0x38, 0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x00, +0x5B,0x58, 0xF7,0x05, 0x35,0x58, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x5B,0x4C, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xE0,0x00, +0x5B,0x5C, 0xF3,0x05, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF6,0x84, 0x35,0x2C, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x94, 0xC3,0x04, 0x00,0x00, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0x5B,0xC1, 0x00,0x00, 0x00,0x01, 0x86,0x36, 0x00,0x94, 0xF6,0x84, 0x35,0x54, 0x00,0x00, +0x00,0x01, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, 0x35,0x54, 0x96,0x96, 0xFF,0xF4, 0x47,0x39, +0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF7,0x04, 0x35,0x48, 0x77,0xB4, +0x00,0x0F, 0x70,0x3E, 0xFF,0xE1, 0x07,0x38, 0x00,0x24, 0xE6,0x00, 0x5B,0xB9, 0xC6,0x38, +0x60,0x00, 0x06,0xB4, 0x00,0x01, 0xC7,0x04, 0x6E,0x00, 0xF7,0x33, 0x28,0x00, 0xF6,0x84, +0x35,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x0F, 0xE2,0x00, 0x5C,0x0D, 0x07,0x38, 0x00,0x01, 0x87,0x36, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x00,0x0C, 0x87,0x36, 0x00,0x0C, 0xE0,0x00, +0x5C,0x20, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x35,0x28, 0xF6,0x82, 0x00,0x01, 0x07,0x38, +0x00,0x08, 0xE0,0x00, 0x5D,0xB8, 0xF7,0x05, 0x35,0x44, 0x20,0x3A, 0x00,0x10, 0xE6,0x00, +0x5C,0x1C, 0x00,0x00, 0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x97,0x36, 0x00,0x04, 0xF7,0x04, +0x35,0x3C, 0xF6,0x84, 0x35,0x28, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x35,0x3C, 0xF7,0x04, +0x35,0x3C, 0x87,0x36, 0x14,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x14,0x1C, 0xF7,0x04, 0x76,0x04, 0x86,0xB6, 0x14,0x1C, 0xF6,0x04, 0x75,0xFC, 0x07,0x38, +0x00,0x01, 0xF6,0x84, 0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, +0x5C,0x6C, 0xF7,0x05, 0x76,0x04, 0xF0,0x05, 0x76,0x04, 0xF6,0x84, 0x76,0x04, 0xF7,0x04, +0x76,0x08, 0xF0,0x05, 0x75,0xFC, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0x5C,0xD1, 0xF7,0x05, 0x75,0xF8, 0xF7,0x04, 0x76,0x48, 0xF3,0x06, +0x72,0x18, 0xC0,0x3A, 0x32,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x5C,0xD1, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0E, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x5C,0xD0, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, +0x00,0x00, 0x20,0x2A, 0x00,0x02, 0xEE,0x00, 0x5D,0xB8, 0xF6,0x82, 0x00,0x00, 0xF6,0x84, +0x35,0x28, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x02, 0xE6,0x00, 0x5D,0x8C, 0x05,0xB4, 0x00,0x08, 0x95,0x93, 0xFF,0xFC, 0x95,0x16, +0xFF,0xEC, 0x95,0x96, 0xFF,0xE8, 0x96,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x5E,0xDC, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xE8, 0x86,0x96, +0xFF,0xE4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x5D,0x7C, 0xF7,0x02, 0x00,0x00, 0x86,0x36, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x0F, 0xE2,0x00, 0x5D,0x61, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, +0x00,0x14, 0x87,0x36, 0x00,0x14, 0xE0,0x00, 0x5D,0x7C, 0xF7,0x02, 0x00,0x00, 0x76,0xB1, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0x77,0x35, 0x00,0x05, 0xC7,0x38, 0x6A,0x00, 0xC7,0x38, +0x60,0x00, 0x07,0x38, 0x00,0x10, 0xC7,0x2C, 0x70,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x5B,0xF8, 0xF7,0x05, 0x35,0x2C, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x4C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x5D,0xAC, 0x07,0x34, 0x14,0x94, 0xF3,0x04, +0x6F,0x44, 0xE0,0x00, 0x5D,0xB0, 0xF3,0x05, 0x35,0x28, 0xF7,0x05, 0x35,0x28, 0xE0,0x00, +0x5C,0xD4, 0x05,0x28, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x5D,0xF1, 0xF3,0x02, +0x00,0x01, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0D, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x5D,0xF4, 0xB3,0x3A, 0x68,0x02, 0xE0,0x00, 0x5D,0xF4, 0xF0,0x05, 0x2D,0x38, 0xF3,0x05, +0x35,0x24, 0xF6,0x84, 0x35,0x28, 0xF7,0x04, 0x6F,0x44, 0xF3,0x06, 0x32,0xF4, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x5E,0x3C, 0xF3,0x05, 0x35,0x30, 0xF7,0x04, 0xE0,0x18, 0x00,0x00, +0x00,0x01, 0x77,0xB8, 0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, 0x5E,0x3D, 0x00,0x00, +0x00,0x01, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x35,0x30, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x32,0xF4, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x35,0x30, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x33,0x80, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x35,0x30, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x34,0x0C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x35,0x30, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x34,0x98, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x86,0x16, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x32, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x0F, 0x86,0xB2, 0x00,0x00, 0xC5,0x38, 0x00,0x00, 0xEE,0x00, +0x5F,0x2C, 0xC5,0xB4, 0x00,0x00, 0x20,0x36, 0x00,0x0F, 0xEE,0x00, 0x5F,0x2C, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEC,0x00, 0x5F,0x2D, 0x00,0x00, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xEC,0x00, 0x5F,0x48, 0x00,0x00, 0x00,0x01, 0x87,0x32, 0x00,0x0C, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x32, 0x00,0x0C, 0x87,0x32, 0x00,0x0C, 0xE0,0x00, +0x5F,0x50, 0xF4,0x02, 0x00,0x00, 0xC0,0x2A, 0x5A,0x00, 0x44,0x0C, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x86, +0x35,0x60, 0x96,0x93, 0xFF,0xFC, 0xF6,0x86, 0x42,0x30, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, 0x66,0xF8, 0x96,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x17, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x35,0x60, 0x96,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, +0x69,0x80, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x18, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, +0x35,0x60, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF6,0x82, 0x6B,0x50, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x16, 0x97,0x93, +0xFF,0xFC, 0xF6,0x86, 0x35,0x60, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, 0x61,0x78, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1F, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x35,0x60, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, 0x62,0x7C, 0x96,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x20, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x35,0x60, 0x96,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, +0x66,0xF8, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x17, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, +0x35,0xEC, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF6,0x82, 0x69,0x80, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x18, 0x97,0x93, +0xFF,0xFC, 0xF6,0x86, 0x35,0xEC, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, 0x6B,0x50, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x16, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x35,0xEC, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, 0x61,0x78, 0x96,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x1F, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x35,0xEC, 0x96,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF6,0x82, +0x62,0x7C, 0x96,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x20, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, +0x35,0xEC, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF7,0x04, 0xE0,0x28, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x61,0x15, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x28, 0xE0,0x00, 0x61,0x18, 0x77,0x39, +0x00,0x02, 0xF7,0x02, 0x00,0xF0, 0xF7,0x05, 0x42,0x28, 0xF7,0x06, 0x40,0x8A, 0xF0,0x3B, +0x28,0x00, 0xF7,0x06, 0x40,0x8C, 0xF0,0x3B, 0x28,0x00, 0xF7,0x02, 0x00,0x00, 0xF7,0x05, +0x7A,0xC0, 0xF7,0x05, 0x7A,0xB8, 0xF7,0x05, 0x7A,0xB0, 0xF7,0x05, 0x7A,0xC8, 0xF6,0x82, +0xC3,0x50, 0x96,0x93, 0xFF,0xFC, 0xF6,0x82, 0x00,0x16, 0x96,0x93, 0xFF,0xFC, 0xF6,0x86, +0x42,0x30, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x04, +0x6F,0x34, 0x00,0x00, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x61,0xED, 0x76,0xB1, +0x00,0x1E, 0x87,0x32, 0x00,0x00, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x20,0x3A, 0x00,0x07, 0xE6,0x00, 0x61,0xEC, 0x06,0xB0, 0x00,0x02, 0x87,0x36, +0x00,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x20,0x3A, 0x00,0x01, 0xE6,0x00, 0x61,0xEC, 0xF5,0x06, 0x35,0xEC, 0xF7,0x04, +0x42,0x30, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x62,0x11, 0xF5,0x82, 0x00,0x00, 0xF7,0x04, 0x42,0xA0, 0xF6,0x06, +0x42,0xA2, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, 0x62,0x68, 0xF7,0x33, 0x28,0x00, 0x87,0x32, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xF7,0x05, 0xE0,0x00, 0x86,0xB2, 0x00,0x08, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x62,0x3C, 0xF6,0x85, 0xE0,0x04, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0x62,0x40, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0x62,0x65, 0xF6,0x06, 0x42,0xA2, 0xF7,0x04, 0x42,0xA0, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0xF0,0x05, 0x42,0x28, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x04, 0x42,0x3C, 0xF6,0x84, 0x6F,0x34, 0x07,0x38, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0x62,0xB1, 0xF7,0x05, 0x42,0x3C, 0x87,0x36, 0x00,0x00, 0xF5,0x9E, +0x00,0x02, 0xC0,0x3A, 0x5A,0x00, 0xE6,0x00, 0x62,0xBD, 0xF5,0x86, 0x35,0xEC, 0xF7,0x04, +0x42,0xA0, 0xE0,0x00, 0x62,0xDC, 0xF6,0x06, 0x42,0xA2, 0xF7,0x04, 0x42,0x30, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x5A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x62,0xF9, 0xF6,0x06, 0x42,0xA4, 0xF7,0x04, 0x42,0xA4, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, +0x63,0x0C, 0xF7,0x33, 0x28,0x00, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x63,0x20, 0x97,0x93, 0xFF,0xFC, 0xF0,0x05, 0x42,0x28, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x20, 0x83,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x87,0x1A, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x63,0x6C, 0xF7,0x02, 0x00,0x00, 0x83,0x9A, 0x00,0x1C, 0x00,0x00, 0x00,0x01, 0xF3,0x85, +0x7A,0xC0, 0x84,0x9A, 0x00,0x14, 0xF7,0x05, 0x7A,0xC8, 0xF4,0x85, 0x7A,0xB0, 0xF7,0x05, +0x7A,0xB8, 0x83,0x16, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x86,0x9A, 0x00,0x14, 0xF7,0x04, +0x7A,0xB0, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x63,0xD0, 0xF6,0x02, +0x00,0x00, 0x86,0x9A, 0x00,0x1C, 0xF7,0x04, 0x7A,0xC0, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x63,0xD0, 0x00,0x00, 0x00,0x01, 0x86,0x9A, 0x00,0x18, 0xF7,0x04, +0x7A,0xB8, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x63,0xD0, 0x00,0x00, +0x00,0x01, 0x86,0x9A, 0x00,0x20, 0xF7,0x04, 0x7A,0xC8, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x20,0x3A, 0x00,0x64, 0xEE,0x00, 0x63,0xD9, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x64,0x58, 0x00,0x00, 0x00,0x01, 0x83,0x96, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x1E, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x64,0x3C, 0xF7,0x02, 0x00,0x00, 0xF7,0x05, 0x40,0x80, 0xF7,0x05, +0x40,0x84, 0xF6,0x84, 0x6E,0x50, 0xF4,0x82, 0xFF,0xFF, 0x83,0x1E, 0x00,0x0C, 0xF4,0x85, +0x4F,0x54, 0x93,0x36, 0x00,0x10, 0x83,0x9E, 0x00,0x10, 0x84,0x96, 0x00,0x00, 0x93,0xB6, +0x00,0x14, 0x84,0xA6, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x94,0xB6, 0x1D,0xDC, 0xF6,0x82, +0x00,0x64, 0xF6,0x85, 0x4A,0x98, 0xF7,0x05, 0x4A,0x9C, 0x83,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x87,0x1A, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, +0x64,0x7C, 0xF3,0x82, 0x00,0x00, 0xF7,0x04, 0x42,0xA4, 0xF6,0x06, 0x42,0xA6, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0x66,0xE4, 0xF7,0x33, 0x28,0x00, 0x93,0x96, 0xFF,0xF4, 0x84,0x16, +0x00,0x00, 0xF4,0x86, 0x42,0xC8, 0x94,0x96, 0xFF,0xEC, 0xF3,0x02, 0x00,0x0C, 0x93,0x16, +0xFF,0xE4, 0x83,0x96, 0x00,0x00, 0x84,0x96, 0xFF,0xF4, 0x87,0x1E, 0x00,0x20, 0x00,0x00, +0x00,0x01, 0xC0,0x26, 0x72,0x00, 0xEC,0x00, 0x66,0x48, 0xF3,0x86, 0x4A,0x98, 0x84,0xA2, +0x00,0x24, 0x83,0x16, 0xFF,0xE4, 0xC5,0x04, 0x00,0x00, 0xB4,0x9A, 0x38,0x02, 0xC7,0x18, +0x38,0x00, 0x83,0x22, 0x00,0x28, 0x83,0x96, 0xFF,0xF4, 0x84,0x96, 0xFF,0xE4, 0x93,0x3A, +0x00,0x04, 0x93,0xBA, 0x00,0x08, 0xF6,0x04, 0xE0,0x00, 0xF3,0x06, 0x4A,0x98, 0xA6,0xA6, +0x30,0x02, 0xF5,0x82, 0x00,0x00, 0xC0,0x32, 0x6A,0x00, 0xE6,0x00, 0x65,0x10, 0xC6,0x38, +0x00,0x00, 0xF6,0x84, 0xE0,0x04, 0x87,0x32, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x65,0x14, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0x65,0x21, 0x00,0x00, 0x00,0x01, 0xF5,0x02, 0x00,0x00, 0xF6,0x84, +0xE0,0x00, 0x87,0x32, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0x65,0x5C, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x65,0x64, 0x20,0x2E, +0x00,0x00, 0xF6,0x84, 0xE0,0x04, 0x87,0x32, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x65,0x65, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0x65,0x75, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, +0x00,0x00, 0xE6,0x00, 0x65,0x88, 0x00,0x00, 0x00,0x01, 0x83,0x96, 0xFF,0xF4, 0x00,0x00, +0x00,0x01, 0xF3,0x85, 0x4F,0x54, 0x87,0x22, 0x00,0x2C, 0x76,0xA1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x05,0xA0, 0x00,0x2E, 0x76,0x2D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xF4,0x82, +0x00,0x00, 0x94,0x96, 0xFF,0xDC, 0x83,0x16, 0xFF,0xEC, 0x20,0x26, 0x00,0x07, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x06,0x98, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xE2,0x00, 0x66,0x1C, 0xF7,0x37, +0x28,0x00, 0x85,0x16, 0xFF,0xEC, 0x85,0x96, 0xFF,0xDC, 0x00,0x00, 0x00,0x01, 0xC7,0x2C, +0x40,0x00, 0x86,0xBA, 0x00,0x30, 0x06,0x28, 0x00,0x04, 0x05,0x28, 0x00,0x02, 0x05,0xAC, +0x00,0x02, 0x83,0x96, 0xFF,0xDC, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x03,0x9C, +0x00,0x01, 0x93,0x96, 0xFF,0xDC, 0x20,0x1E, 0x00,0x07, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, +0xFF,0xF0, 0xE2,0x00, 0x65,0xE1, 0xF6,0xB3, 0x28,0x00, 0x04,0x20, 0x00,0x1C, 0x84,0x96, +0xFF,0xEC, 0x83,0x16, 0xFF,0xE4, 0x83,0x96, 0xFF,0xF4, 0x04,0xA4, 0x00,0x14, 0x94,0x96, +0xFF,0xEC, 0x03,0x18, 0x00,0x0C, 0x93,0x16, 0xFF,0xE4, 0x03,0x9C, 0x00,0x01, 0xE0,0x00, +0x64,0x94, 0x93,0x96, 0xFF,0xF4, 0x84,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x26, +0x00,0x20, 0x00,0x00, 0x00,0x01, 0xF7,0x05, 0x4A,0x9C, 0x85,0xA6, 0x00,0x20, 0xF7,0x04, +0x7A,0xB8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x7A,0xB8, 0xF7,0x04, +0x7A,0xB8, 0xF6,0x84, 0x7A,0xC8, 0x86,0x26, 0x00,0x18, 0xC6,0xB4, 0x58,0x00, 0x87,0x26, +0x00,0x1C, 0x00,0x00, 0x00,0x01, 0x27,0x38, 0x00,0x01, 0xC0,0x32, 0x72,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x66,0xE5, 0xF6,0x85, 0x7A,0xC8, 0x83,0x26, +0x00,0x08, 0xF7,0x04, 0x6E,0x50, 0xF3,0x05, 0x3B,0x64, 0x83,0xA6, 0x00,0x08, 0xF6,0x82, +0x00,0x00, 0x93,0xBA, 0x1D,0xDC, 0x84,0xA6, 0x00,0x0C, 0x83,0x16, 0x00,0x00, 0x94,0xBA, +0x00,0x10, 0x83,0x1A, 0x00,0x10, 0xF6,0x85, 0x7A,0xC8, 0x93,0x3A, 0x00,0x14, 0xF7,0x02, +0x00,0x01, 0xF7,0x05, 0x40,0x84, 0xF6,0x85, 0x7A,0xC0, 0xF6,0x85, 0x7A,0xB8, 0xF6,0x85, +0x7A,0xB0, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x08, 0xF3,0x84, 0x6F,0x34, 0x00,0x00, 0x00,0x01, 0x87,0x1E, 0x00,0x18, 0xF6,0x84, +0xE0,0x1C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, 0x67,0x29, 0xF7,0x02, +0x00,0x01, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x67,0xE8, 0xF5,0x82, +0x00,0x01, 0xF7,0x04, 0xE0,0x1C, 0x86,0x9E, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x67,0xE9, 0xC5,0x84, +0x00,0x00, 0x86,0x9E, 0x00,0x10, 0xF7,0x04, 0xE0,0x00, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x67,0x88, 0x05,0x1C, 0x00,0x10, 0x86,0x9E, 0x00,0x14, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x67,0x8C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x67,0x99, 0x00,0x00, +0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0xAA, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x67,0xD4, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x67,0xDC, 0x20,0x32, 0x00,0x00, 0x86,0xAA, 0x00,0x04, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x67,0xDD, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x67,0xED, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x68,0x10, 0xF6,0x06, +0x42,0x9C, 0xF7,0x04, 0x42,0x9C, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0xF7,0x04, +0x75,0xF4, 0x75,0xAC, 0xFF,0xE1, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x68,0x45, 0x95,0x96, +0xFF,0xF4, 0xF7,0x04, 0x42,0x98, 0xF6,0x06, 0x42,0x98, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x87,0x1E, 0x00,0x20, 0x04,0x1C, 0x00,0x20, 0x76,0xA1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, 0x00,0x08, 0xEE,0x00, +0x68,0xC4, 0xF3,0x06, 0x15,0x54, 0xF5,0x02, 0x00,0x00, 0x05,0x9C, 0x00,0x22, 0xC4,0xAC, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x87,0x22, 0x00,0x00, 0x76,0xA1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC0,0x2A, 0x72,0x00, 0xEC,0x00, +0x68,0xC0, 0xC6,0xA4, 0x60,0x00, 0xA7,0x26, 0x60,0x02, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x05,0x28, 0x00,0x01, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xE8, 0xF7,0x2F, +0x68,0x00, 0x05,0xAC, 0x00,0x01, 0xE0,0x00, 0x68,0x78, 0x06,0x30, 0x00,0x02, 0xF3,0x06, +0x15,0x54, 0x93,0x13, 0xFF,0xFC, 0xF7,0x04, 0xE0,0x24, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0xF7,0x04, 0xE0,0x1C, 0x00,0x00, 0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0xF3,0x06, +0xE0,0x00, 0x93,0x13, 0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0xF3,0x02, 0x00,0x01, 0x93,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xEE,0x64, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x69,0x28, 0xF6,0x06, 0x42,0x9E, 0xF7,0x04, 0x42,0x9C, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x83,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0x69,0x6C, 0xF3,0x06, 0x35,0xEC, 0xF7,0x04, 0x42,0x30, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x32,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x69,0x6D, 0xF0,0x05, 0x42,0x28, 0xF3,0x06, 0x35,0x60, 0xF3,0x05, 0x42,0x30, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x04, 0xF5,0x04, 0x6F,0x34, 0xF7,0x04, +0x42,0x40, 0x86,0x2A, 0x00,0x18, 0x07,0x38, 0x00,0x01, 0xF6,0x84, 0xE0,0x1C, 0xF7,0x05, +0x42,0x40, 0xC0,0x36, 0x62,0x00, 0xEC,0x00, 0x69,0xB5, 0xF7,0x02, 0x00,0x01, 0xF7,0x02, +0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x6A,0x80, 0xF7,0x02, 0x00,0x01, 0xF7,0x04, +0xE0,0x1C, 0x86,0xAA, 0x00,0x18, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x6A,0x7D, 0xC5,0x84, 0x00,0x00, 0x86,0xAA, +0x00,0x10, 0xF7,0x04, 0xE0,0x00, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x6A,0x14, 0x04,0xA8, 0x00,0x10, 0x86,0xAA, 0x00,0x14, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x6A,0x18, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x6A,0x25, 0x00,0x00, 0x00,0x01, 0xF5,0x82, +0x00,0x00, 0x86,0xA6, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x6A,0x60, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x6A,0x68, 0x20,0x32, 0x00,0x00, 0x86,0xA6, 0x00,0x04, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x6A,0x69, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x6A,0x81, 0xC7,0x2C, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0xE0,0x00, 0x6A,0x80, 0xC7,0x2C, 0x00,0x00, 0xC7,0x04, 0x00,0x00, 0x20,0x3A, +0x00,0x00, 0xEE,0x00, 0x6B,0x3D, 0xF6,0x86, 0x40,0x8A, 0xF7,0x04, 0x40,0x88, 0x76,0xB5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6B,0x3C, 0xF6,0x82, 0x00,0x00, 0xF6,0x85, 0x40,0x80, 0xF6,0x85, +0x40,0x84, 0x96,0x93, 0xFF,0xFC, 0x96,0x93, 0xFF,0xFC, 0xF7,0x04, 0xE0,0x1C, 0x00,0x00, +0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0xF3,0x86, 0xE0,0x00, 0x93,0x93, 0xFF,0xFC, 0x95,0x13, +0xFF,0xFC, 0xF3,0x82, 0x00,0x02, 0x93,0x93, 0xFF,0xFC, 0x96,0x96, 0xFF,0xF4, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xEE,0x64, 0x97,0x93, 0xFF,0xFC, 0xF4,0x05, 0x40,0x84, 0x86,0x96, +0xFF,0xF4, 0xF7,0x04, 0x6E,0x50, 0xF3,0x86, 0x35,0xEC, 0xF6,0x85, 0x40,0x90, 0xF6,0x85, +0x40,0x94, 0x87,0x3A, 0x1D,0xDC, 0xF6,0x85, 0x42,0x28, 0xF7,0x05, 0x3B,0x64, 0xF7,0x04, +0x42,0x30, 0xF4,0x05, 0x40,0x80, 0xC0,0x3A, 0x3A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6B,0x3D, 0xF3,0x86, 0x35,0x60, 0xF3,0x85, 0x42,0x30, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF4,0x86, 0x42,0x30, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x6D,0xD9, 0xF5,0x82, 0x00,0x00, 0xF7,0x04, 0x40,0x8C, 0xF6,0x06, 0x40,0x8C, 0x76,0x31, +0x00,0x1E, 0xF6,0x84, 0x42,0x28, 0x76,0x30, 0xFF,0xE5, 0x06,0xB4, 0x00,0x01, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x6B,0xC8, 0xF6,0x85, +0x42,0x28, 0xF7,0x04, 0x40,0x88, 0xF6,0x86, 0x40,0x8A, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6D,0x0D, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x40,0x8C, 0xF6,0x86, 0x40,0x8C, 0x76,0xB5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6C,0x35, 0xF6,0x06, 0x40,0x8A, 0xF7,0x04, 0x40,0x88, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6C,0x34, 0xF4,0x86, 0x36,0x78, 0xF7,0x04, 0x42,0x44, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x4A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6C,0x35, 0xF4,0x82, 0x00,0x01, 0xF4,0xB3, 0x28,0x00, 0xE0,0x00, 0x6D,0x10, 0xF0,0x05, +0x42,0x2C, 0xF7,0x04, 0x40,0x8C, 0xF5,0x06, 0x40,0x8C, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6C,0xC1, 0xF6,0x06, 0x40,0x8A, 0xF7,0x04, 0x40,0x88, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6C,0xC1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x2C, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x20,0x3A, 0x00,0x09, 0xEE,0x00, 0x6D,0x11, 0xF7,0x05, 0x42,0x2C, 0xF0,0x2B, +0x28,0x00, 0xF0,0x33, 0x28,0x00, 0xF5,0x82, 0x00,0x01, 0xF7,0x04, 0x42,0x94, 0xF6,0x06, +0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, 0x6D,0x10, 0xF7,0x33, 0x28,0x00, 0xF7,0x04, +0x40,0x8C, 0xF6,0x86, 0x40,0x8C, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x6D,0x14, 0x20,0x2E, +0x00,0x00, 0xF7,0x04, 0x40,0x88, 0xF6,0x06, 0x40,0x8A, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6D,0x15, 0x20,0x2E, 0x00,0x00, 0xF0,0x33, 0x28,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0x6D,0xB5, 0xF4,0x86, 0x35,0xEC, 0xF7,0x04, 0x42,0x30, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x4A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x6D,0x59, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x28, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6D,0x79, 0xF6,0x82, 0x00,0x3C, 0xF6,0x84, 0xE0,0x28, 0xE0,0x00, +0x6D,0x78, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0xE0,0x28, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x6D,0x79, 0xF6,0x82, 0x00,0xF0, 0xF7,0x04, 0xE0,0x28, 0x00,0x00, +0x00,0x01, 0x76,0xB9, 0x00,0x02, 0xF7,0x04, 0x42,0x28, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x6A,0x00, 0xEC,0x00, 0x6D,0xB5, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0xF0,0x05, +0x42,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x19, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x6D,0xB4, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF4,0x82, 0xC3,0x50, 0x94,0x93, 0xFF,0xFC, 0xF4,0x82, 0x00,0x16, 0x94,0x93, +0xFF,0xFC, 0xF4,0x86, 0x42,0x30, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x04, 0xF5,0x86, 0x36,0x78, 0x95,0x93, 0xFF,0xFC, 0xF5,0x86, +0x42,0x44, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF5,0x82, 0x74,0x18, 0x95,0x93, 0xFF,0xFC, 0xF5,0x82, 0x00,0x19, 0x95,0x93, +0xFF,0xFC, 0xF5,0x86, 0x36,0x78, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x74,0xAC, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1D, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x37,0x04, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x78,0x00, 0x95,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x37,0x04, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, +0x78,0xFC, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1A, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, +0x37,0x90, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x82, 0x80,0xD8, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, +0xFF,0xFC, 0xF5,0x86, 0x37,0x90, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x81,0x74, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1D, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x38,0x1C, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x87,0x74, 0x95,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x38,0x1C, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, +0x94,0xF8, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, +0x39,0x34, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x82, 0x8A,0x00, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x86, 0x39,0x34, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x8E,0x08, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1A, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x39,0x34, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x96,0x9C, 0x95,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x1E, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x38,0xA8, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, +0x9B,0x2C, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, +0x38,0xA8, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x82, 0xA2,0xDC, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1E, 0x97,0x93, +0xFF,0xFC, 0xF5,0x86, 0x3A,0xD8, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0x9E,0x54, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1B, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x3A,0xD8, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0xA3,0xC0, 0x95,0x93, +0xFF,0xFC, 0xF7,0x82, 0x00,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x39,0xC0, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, +0xA7,0x64, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1E, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, +0x39,0xC0, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x82, 0xAA,0x04, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, 0x00,0x1B, 0x97,0x93, +0xFF,0xFC, 0xF5,0x86, 0x39,0xC0, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x82, 0xAE,0xF8, 0x95,0x93, 0xFF,0xFC, 0xF7,0x82, +0x00,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x3A,0x4C, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x50, 0xF0,0x3B, +0x28,0x00, 0xF7,0x06, 0x40,0x88, 0xF0,0x3B, 0x28,0x00, 0xF6,0x02, 0x00,0x00, 0xF6,0x05, +0x40,0x80, 0xF6,0x05, 0x40,0x84, 0xF7,0x06, 0x3B,0x70, 0xF6,0x3B, 0x28,0x00, 0xF7,0x06, +0x3B,0x72, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, 0xCA,0x20, 0xF5,0x85, 0x3B,0x74, 0xF7,0x06, +0x3B,0x78, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, 0x3B,0x7A, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, +0xB1,0x94, 0xF5,0x85, 0x3B,0x7C, 0xF7,0x06, 0x3B,0x80, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, +0x3B,0x82, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, 0xC7,0x54, 0xF5,0x85, 0x3B,0x84, 0xF7,0x06, +0x3B,0x88, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, 0x3B,0x8A, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, +0xBE,0xF8, 0xF5,0x85, 0x3B,0x8C, 0xF7,0x06, 0x3B,0x90, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, +0x3B,0x92, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, 0xC8,0xF8, 0xF5,0x85, 0x3B,0x94, 0xF7,0x06, +0x3B,0x98, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, 0x3B,0x9A, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, +0xC5,0xD8, 0xF5,0x85, 0x3B,0x9C, 0xF7,0x06, 0x3B,0xA0, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, +0x3B,0xA2, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, 0xC7,0x70, 0xF5,0x85, 0x3B,0xA4, 0xF7,0x06, +0x3B,0xA8, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, 0x3B,0xAA, 0xF0,0xBB, 0x28,0x00, 0xF5,0x82, +0xC1,0xB4, 0xF5,0x85, 0x3B,0xAC, 0x96,0x16, 0xFF,0xF4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD5,0x40, 0x97,0x93, 0xFF,0xFC, 0xF6,0x84, 0x6E,0x50, 0x86,0x16, 0xFF,0xF4, 0x00,0x00, +0x00,0x01, 0x96,0x36, 0x1D,0xDC, 0xF6,0x05, 0x3B,0x64, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x30, 0x25,0x94, 0x00,0x20, 0xF0,0x2F, +0x28,0x00, 0x26,0x14, 0x00,0x38, 0xF0,0x33, 0x28,0x00, 0x90,0x13, 0xFF,0xFC, 0xF7,0x04, +0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x96,0x13, 0xFF,0xFC, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF5,0xF4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x72,0x1D, 0xF5,0x02, 0x17,0x70, 0xF7,0x04, 0x42,0x54, 0x00,0x00, +0x00,0x01, 0x27,0x38, 0x00,0x01, 0xF7,0x05, 0x42,0x54, 0x95,0x13, 0xFF,0xFC, 0xF5,0x02, +0x00,0x1B, 0x95,0x13, 0xFF,0xFC, 0xF5,0x06, 0x42,0x44, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, 0xE0,0x04, 0x86,0x16, 0x00,0x00, 0xF6,0x82, +0x00,0xFF, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, 0x6C,0x00, 0xF7,0x33, 0x28,0x00, 0xF7,0x06, +0xE0,0x06, 0x87,0x3A, 0x00,0x00, 0x06,0xB0, 0x00,0x02, 0xF7,0x37, 0x28,0x00, 0xF6,0x84, +0x3B,0x64, 0x07,0x30, 0x00,0x04, 0xF6,0xBB, 0x28,0x00, 0x87,0x02, 0xFF,0x34, 0x06,0x30, +0x00,0x06, 0xF7,0x33, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x30, 0x26,0x14, 0x00,0x20, 0xF0,0x33, 0x28,0x00, 0x27,0x14, +0x00,0x38, 0xF0,0x3B, 0x28,0x00, 0x97,0x13, 0xFF,0xFC, 0x90,0x93, 0xFF,0xFC, 0xF7,0x04, +0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xF3,0x38, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x73,0x19, 0xF5,0x82, 0x17,0x70, 0xF7,0x04, 0x42,0x54, 0x00,0x00, 0x00,0x01, 0x27,0x38, +0x00,0x01, 0xF7,0x05, 0x42,0x54, 0x95,0x93, 0xFF,0xFC, 0xF5,0x82, 0x00,0x1B, 0x95,0x93, +0xFF,0xFC, 0xF5,0x86, 0x42,0x44, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x40, 0x26,0x14, 0x00,0x20, 0x96,0x16, 0xFF,0xC4, 0xF0,0x33, +0x28,0x00, 0x90,0x13, 0xFF,0xFC, 0x96,0x13, 0xFF,0xFC, 0x26,0x14, 0x00,0x38, 0x96,0x16, +0xFF,0xBC, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, +0xFF,0xFC, 0x90,0x13, 0xFF,0xFC, 0xF7,0x04, 0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, +0xFF,0xFC, 0x86,0x16, 0xFF,0xBC, 0x00,0x00, 0x00,0x01, 0x96,0x13, 0xFF,0xFC, 0x86,0x16, +0xFF,0xC4, 0x00,0x00, 0x00,0x01, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xF5,0xF4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x73,0xE5, 0xF6,0x02, +0x17,0x70, 0xF7,0x04, 0x42,0x54, 0x00,0x00, 0x00,0x01, 0x27,0x38, 0x00,0x01, 0xF7,0x05, +0x42,0x54, 0x96,0x13, 0xFF,0xFC, 0xF6,0x02, 0x00,0x1B, 0x96,0x13, 0xFF,0xFC, 0xF6,0x06, +0x42,0x44, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x04, 0xF5,0x82, 0x00,0x00, 0xF5,0x85, 0x40,0x80, 0x95,0x96, 0xFF,0xF4, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCB,0x50, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xF4, 0xF5,0x02, +0x00,0x64, 0xF5,0x05, 0x3B,0xB4, 0xF7,0x04, 0x42,0x50, 0xF4,0x86, 0x42,0x50, 0x76,0xA5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF6,0x04, 0x4F,0x5C, 0xF4,0x02, 0x00,0x06, 0xF4,0x05, +0x42,0x54, 0xF5,0x85, 0x3B,0x6C, 0xF5,0x85, 0x3B,0xB8, 0x95,0x32, 0x00,0x00, 0x95,0xB2, +0x00,0x04, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x27, +0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x71,0xB0, 0x97,0x93, 0xFF,0xFC, 0xF4,0x06, +0x37,0x04, 0xF4,0x05, 0x42,0x44, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x50, 0xF7,0x04, 0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF6,0x04, 0x6F,0x34, 0xC7,0x38, 0x6F,0xC0, 0x86,0xB2, +0x00,0x0C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x77,0xEC, 0xC5,0x04, +0x00,0x00, 0x86,0xB2, 0x00,0x10, 0xF7,0x04, 0xE0,0x00, 0xF3,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x75,0x18, 0x04,0xB0, 0x00,0x10, 0x86,0xB2, 0x00,0x14, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x75,0x1C, 0x20,0x1A, +0x00,0x00, 0xF3,0x02, 0x00,0x01, 0x20,0x1A, 0x00,0x00, 0xE6,0x00, 0x75,0x29, 0x00,0x00, +0x00,0x01, 0xF5,0x02, 0x00,0x00, 0x86,0xA6, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x75,0x64, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x75,0x6C, 0x20,0x32, 0x00,0x00, 0x86,0xA6, 0x00,0x04, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x75,0x6D, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x75,0x7D, 0x20,0x2A, +0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0x77,0xEC, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x26,0x14, +0x00,0x20, 0xF0,0x33, 0x28,0x00, 0x04,0xA0, 0x00,0x02, 0xF0,0x27, 0x28,0x00, 0xF5,0x82, +0x00,0x00, 0x23,0x94, 0x00,0x22, 0xF5,0x9F, 0x28,0x00, 0x03,0xA0, 0x00,0x1A, 0x93,0x96, +0xFF,0xD4, 0x25,0x94, 0x00,0x22, 0x85,0xAE, 0x00,0x00, 0x77,0xAD, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC5,0xAC, 0x7F,0xC0, 0x75,0xAD, 0xFF,0xF0, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x06,0xA4, 0x00,0x02, 0x23,0x14, 0x00,0x1E, 0x75,0x15, 0x00,0x1E, 0xF5,0x9F, +0x28,0x00, 0xF3,0x84, 0xE0,0x00, 0x75,0x28, 0xFF,0xE5, 0x93,0xA2, 0x00,0x1C, 0xF5,0x84, +0xE0,0x04, 0x73,0x99, 0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0xAC, 0x73,0x95, +0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0xCC, 0x23,0x94, 0x00,0x42, 0x95,0xA2, +0x00,0x20, 0x87,0x16, 0xFF,0xE0, 0x75,0x95, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x95,0x96, +0xFF,0xB4, 0x75,0x95, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x95,0x96, 0xFF,0xC4, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0xF4,0x84, 0x4F,0x58, 0x87,0x1A, +0x00,0x00, 0xC4,0xA0, 0x4A,0x00, 0x74,0xA4, 0xFF,0xFA, 0xC5,0xA4, 0x00,0x00, 0xF5,0x9F, +0x28,0x00, 0x83,0x96, 0xFF,0xAC, 0x23,0x14, 0x00,0x1A, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x85,0x96, 0xFF,0xB4, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x83,0x96, 0xFF,0xCC, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xE8, 0x23,0x14, 0x00,0x16, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x76,0x19, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x85,0x96, 0xFF,0xC4, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xF0, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF3,0x82, +0x00,0x02, 0xF3,0xA3, 0x28,0x00, 0x04,0x20, 0x00,0x18, 0x25,0x94, 0x00,0x22, 0x85,0xAE, +0x00,0x00, 0x77,0xAD, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC5,0xAC, 0x7F,0xC0, 0x75,0xAD, +0xFF,0xF0, 0x83,0x96, 0xFF,0xD4, 0xF5,0xA3, 0x28,0x00, 0xF4,0x9F, 0x28,0x00, 0x25,0x94, +0x00,0x42, 0x85,0xAE, 0x00,0x00, 0x77,0xAD, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC5,0xAC, +0x7F,0xC0, 0x75,0xAD, 0xFF,0xF0, 0x44,0xAD, 0x00,0x00, 0x94,0x93, 0xFF,0xFC, 0xF7,0x86, +0xE0,0x00, 0x97,0x93, 0xFF,0xFC, 0xF3,0x84, 0x4F,0x5C, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0xD8, 0x97,0x93, 0xFF,0xFC, 0xF0,0x05, 0x40,0x84, 0xF7,0x86, +0xE0,0x00, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD5,0xA0, 0x97,0x93, +0xFF,0xFC, 0xF7,0x04, 0x6E,0x50, 0xF4,0x05, 0x40,0x84, 0x87,0x3A, 0x1D,0xDC, 0x00,0x00, +0x00,0x01, 0xF7,0x05, 0x3B,0x64, 0xF5,0x86, 0x36,0x78, 0xF5,0x85, 0x42,0x44, 0xF3,0x86, +0x35,0x60, 0xF3,0x85, 0x42,0x30, 0xF5,0x86, 0x42,0x44, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x1F,0x48, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x86, 0x42,0x44, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x78,0x89, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xEE,0x00, 0x78,0x51, 0xF6,0x06, 0x42,0x50, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x71,0xB0, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x78,0x88, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x50, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF5,0x82, 0x00,0x06, 0xF5,0x85, +0x42,0x54, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x72,0xAC, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, +0x37,0x90, 0xF5,0x85, 0x42,0x44, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF6,0x06, 0x36,0x78, 0xF6,0x05, 0x42,0x44, 0xF7,0x02, 0x00,0x00, 0xF7,0x05, +0x40,0x80, 0xF7,0x05, 0x40,0x94, 0xF6,0x84, 0x6E,0x50, 0xF7,0x05, 0x40,0x90, 0x97,0x36, +0x1D,0xDC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x02, +0x00,0x01, 0xF7,0x05, 0x40,0x80, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0xA8, 0xF7,0x04, 0x42,0x50, 0xF5,0x86, 0x42,0x50, 0x76,0xAD, +0x00,0x1E, 0xF4,0x84, 0x6F,0x34, 0x76,0xB4, 0xFF,0xE5, 0x94,0x96, 0xFF,0xC4, 0xC7,0x38, +0x6F,0xC0, 0x86,0xA6, 0x00,0x0C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x79,0x55, 0xF6,0x06, 0x42,0x9A, 0xF7,0x04, 0x42,0x98, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0xF7,0x04, 0x42,0x50, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x85,0x16, +0xFF,0xC4, 0xC7,0x38, 0x6F,0xC0, 0x86,0xAA, 0x00,0x0C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x80,0xA8, 0xF6,0x06, 0x42,0x9A, 0x87,0x2A, 0x00,0x10, 0x86,0x2A, +0x00,0x1C, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x79,0xA8, 0xF6,0x82, 0x00,0x00, 0x87,0x2A, +0x00,0x14, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x79,0xAC, 0x20,0x36, +0x00,0x00, 0xF6,0x82, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0x7A,0x05, 0x24,0x94, +0x00,0x20, 0x94,0x96, 0xFF,0xBC, 0x85,0x16, 0xFF,0xC4, 0xF0,0x27, 0x28,0x00, 0x05,0x28, +0x00,0x10, 0x95,0x16, 0xFF,0xB4, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x72,0x50, 0x97,0x93, 0xFF,0xFC, 0x84,0x96, 0xFF,0xB4, 0x00,0x00, 0x00,0x01, 0x94,0x93, +0xFF,0xFC, 0x85,0x16, 0xFF,0xBC, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xF9,0x34, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x80,0xC4, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x80,0x6C, 0x00,0x00, 0x00,0x01, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x25,0x94, 0x00,0x20, 0xF0,0x2F, +0x28,0x00, 0x04,0xA0, 0x00,0x02, 0x94,0x96, 0xFF,0x5C, 0xF0,0x27, 0x28,0x00, 0xF4,0x82, +0x00,0x00, 0x25,0x14, 0x00,0x5A, 0xF4,0xAB, 0x28,0x00, 0x07,0x20, 0x00,0x1A, 0x25,0x14, +0x00,0x5A, 0x85,0x2A, 0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC5,0x28, +0x7F,0xC0, 0x75,0x29, 0xFF,0xF0, 0x75,0xAD, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x23,0x14, +0x00,0x1E, 0x76,0x19, 0x00,0x1E, 0xF5,0x3B, 0x28,0x00, 0xF4,0x84, 0xE0,0x00, 0x76,0x30, +0xFF,0xE5, 0x94,0xA2, 0x00,0x1C, 0xF5,0x04, 0xE0,0x04, 0x84,0x96, 0xFF,0x5C, 0x95,0x22, +0x00,0x20, 0x87,0x16, 0xFF,0xE0, 0x06,0xA4, 0x00,0x02, 0x75,0x15, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x95,0x16, 0xFF,0x54, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, +0xFF,0x9C, 0x75,0x15, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x95,0x16, 0xFF,0x94, 0x74,0x95, +0x00,0x1E, 0x85,0x16, 0xFF,0x5C, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x8C, 0x84,0x96, +0xFF,0x54, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x85,0x16, 0xFF,0x9C, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x14, 0x00,0x1A, 0x76,0x19, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x84,0x96, 0xFF,0x94, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0xE8, 0x23,0x14, 0x00,0x16, 0x76,0x19, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x85,0x16, 0xFF,0x8C, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xF0, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF4,0x82, 0x00,0x02, 0xF4,0xA3, +0x28,0x00, 0x25,0x14, 0x00,0x5A, 0x85,0x2A, 0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC5,0x28, 0x7F,0xC0, 0x75,0x29, 0xFF,0xF0, 0x07,0x20, 0x00,0x18, 0xF5,0x3B, +0x28,0x00, 0x94,0x16, 0xFF,0xAC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, +0xFF,0xFC, 0x26,0x14, 0x00,0x38, 0x24,0x94, 0x00,0x5A, 0x84,0xA6, 0x00,0x00, 0x77,0xA5, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC4,0xA4, 0x7F,0xC0, 0x74,0xA5, 0xFF,0xF0, 0x05,0xA0, +0x00,0x02, 0x06,0xAC, 0x00,0x02, 0x23,0x94, 0x00,0x36, 0x75,0x1D, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x07,0x20, 0x00,0x1A, 0xF4,0xB3, 0x28,0x00, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x95,0x16, 0xFF,0x54, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, +0xFF,0x5C, 0x75,0x15, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x95,0x16, 0xFF,0x7C, 0x74,0x95, +0x00,0x1E, 0x85,0x16, 0xFF,0xC4, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x74, 0x85,0x2A, +0x00,0x34, 0x24,0x94, 0x00,0x5A, 0x95,0x16, 0xFF,0x84, 0x84,0xA6, 0x00,0x00, 0x77,0xA5, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC4,0xA4, 0x7F,0xC0, 0x74,0xA5, 0xFF,0xF0, 0x25,0x14, +0x00,0x5A, 0xF4,0xAF, 0x28,0x00, 0x85,0x2A, 0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC5,0x28, 0x7F,0xC0, 0x75,0x29, 0xFF,0xF0, 0x84,0x96, 0xFF,0xC4, 0xF5,0x3B, +0x28,0x00, 0x84,0xA6, 0x00,0x10, 0x85,0x16, 0xFF,0xC4, 0x94,0xA2, 0x00,0x1C, 0x85,0x2A, +0x00,0x14, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x6C, 0x95,0x22, +0x00,0x20, 0x87,0x16, 0xFF,0xC8, 0x85,0x16, 0xFF,0x54, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x84,0x96, 0xFF,0x5C, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0xCC, 0x23,0x94, 0x00,0x32, 0x76,0x1D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x85,0x16, +0xFF,0x7C, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1E, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xD0, 0x23,0x94, 0x00,0x2E, 0x76,0x1D, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x84,0x96, 0xFF,0x74, 0x85,0x16, +0xFF,0x6C, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xD4, 0x23,0x94, 0x00,0x2A, 0x76,0x1D, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1E, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x16, 0xFF,0xD8, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF4,0x82, 0x00,0x02, 0xF4,0xA3, 0x28,0x00, 0x07,0x20, +0x00,0x18, 0x25,0x14, 0x00,0x7A, 0x85,0x2A, 0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC5,0x28, 0x7F,0xC0, 0x75,0x29, 0xFF,0xF0, 0x84,0x96, 0xFF,0xC4, 0xF5,0x3B, +0x28,0x00, 0x87,0x26, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x24, 0xF7,0x04, +0x4F,0x58, 0xE6,0x00, 0x7E,0xF9, 0x94,0x16, 0xFF,0x54, 0xC7,0x20, 0x72,0x00, 0xF6,0x84, +0x6E,0x50, 0x86,0x26, 0x00,0x2C, 0x77,0x38, 0xFF,0xFA, 0x25,0x14, 0x00,0x5A, 0x84,0x2A, +0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC4,0x20, 0x7F,0xC0, 0x74,0x21, +0xFF,0xF0, 0x47,0x39, 0x00,0x00, 0x86,0xB6, 0x1D,0xDC, 0x77,0x39, 0x00,0x02, 0xC0,0x32, +0x6A,0x00, 0x46,0x8C, 0x00,0x01, 0xD6,0x80, 0x0A,0x68, 0x20,0x36, 0x00,0x00, 0xF6,0x86, +0x40,0x98, 0xE6,0x00, 0x7E,0xC0, 0xC3,0xB8, 0x68,0x00, 0xC5,0x84, 0x00,0x00, 0x86,0xA6, +0x00,0x24, 0xF7,0x04, 0xE0,0x00, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x7E,0x54, 0x03,0x24, 0x00,0x24, 0x86,0xA6, 0x00,0x28, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x7E,0x58, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x7E,0x65, 0x00,0x00, 0x00,0x01, 0xF5,0x82, +0x00,0x00, 0x86,0x9A, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x7E,0xA0, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x7E,0xA8, 0x20,0x32, 0x00,0x00, 0x86,0x9A, 0x00,0x04, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x7E,0xA9, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x7E,0xB9, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x7E,0xC5, 0x00,0x00, 0x00,0x01, 0xF4,0x02, +0x00,0x01, 0xF7,0x04, 0x4F,0x58, 0xF4,0x1F, 0x28,0x00, 0x84,0x96, 0xFF,0x54, 0x85,0x16, +0xFF,0xC4, 0xF6,0x86, 0x40,0x9A, 0xC7,0x24, 0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0x86,0x2A, +0x00,0x30, 0x47,0x39, 0x00,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0xE0,0x00, +0x7F,0x4C, 0xF6,0x3B, 0x28,0x00, 0x84,0x96, 0xFF,0x54, 0xF6,0x06, 0x40,0x98, 0xC7,0x24, +0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0xC6,0xB8, 0x00,0x00, 0x46,0xB5, 0x00,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x60,0x00, 0xF5,0x02, 0x00,0x01, 0xF5,0x37, 0x28,0x00, 0x47,0x39, +0x00,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x60,0x00, 0x24,0x94, 0x00,0x5A, 0x84,0xA6, +0x00,0x00, 0x77,0xA5, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC4,0xA4, 0x7F,0xC0, 0x74,0xA5, +0xFF,0xF0, 0x07,0x38, 0x00,0x02, 0xF4,0xBB, 0x28,0x00, 0xF7,0x04, 0x4F,0x58, 0x85,0x16, +0xFF,0x54, 0x84,0x96, 0xFF,0xAC, 0xC6,0xA8, 0x72,0x00, 0x76,0xB4, 0xFF,0xFA, 0x06,0x24, +0x00,0x1A, 0xF6,0xB3, 0x28,0x00, 0xC7,0x24, 0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0x06,0xA8, +0x00,0x1A, 0xF7,0x37, 0x28,0x00, 0x47,0x39, 0x00,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x24, +0x00,0x1C, 0x97,0x13, 0xFF,0xFC, 0xF5,0x04, 0x4F,0x5C, 0x00,0x00, 0x00,0x01, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, +0x4F,0x58, 0x84,0x96, 0xFF,0x54, 0x00,0x00, 0x00,0x01, 0xC7,0x24, 0x72,0x00, 0x77,0x38, +0xFF,0xFA, 0x47,0x39, 0x00,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x24, 0x00,0x1C, 0x97,0x13, +0xFF,0xFC, 0xF5,0x04, 0x4F,0x5C, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x78,0xD8, 0x97,0x93, 0xFF,0xFC, 0xF6,0x84, 0x6E,0x50, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x1D,0xDC, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x36, 0x1D,0xDC, 0x87,0x36, +0x1D,0xDC, 0xF0,0x05, 0x40,0x84, 0xF4,0x86, 0xE0,0x00, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD5,0xA0, 0x97,0x93, 0xFF,0xFC, 0xF4,0x05, 0x40,0x84, 0xF7,0x04, +0x6E,0x50, 0xF0,0x05, 0x42,0x5C, 0x87,0x3A, 0x1D,0xDC, 0xF6,0x86, 0x2C,0x28, 0xF7,0x05, +0x3B,0x64, 0xF7,0x04, 0x2D,0x38, 0xF5,0x06, 0x3A,0x4C, 0xF5,0x05, 0x42,0x44, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, 0x00,0x1C, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x80,0x60, 0xB4,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x06, +0x35,0xEC, 0xE0,0x00, 0x80,0x8C, 0xF5,0x05, 0x42,0x30, 0x20,0x32, 0x00,0x01, 0xE6,0x00, +0x80,0xC4, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, +0xFF,0xFC, 0xF4,0x86, 0x35,0x60, 0xF4,0x85, 0x42,0x30, 0xF5,0x06, 0x42,0x44, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1F,0x48, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0x80,0xC4, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x98, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x86, +0x42,0x44, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x81,0x61, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, 0x81,0x29, 0xF6,0x06, +0x42,0x50, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x72,0xAC, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0x81,0x60, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x50, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF5,0x82, 0x00,0x06, 0xF5,0x85, 0x42,0x54, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x73,0x4C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x86, 0x38,0x1C, 0xF5,0x85, 0x42,0x44, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x58, 0xF7,0x04, +0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF6,0x04, +0x6F,0x34, 0xC7,0x38, 0x6F,0xC0, 0x86,0xB2, 0x00,0x0C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x82,0x50, 0xF4,0x82, 0x00,0x00, 0xC5,0x04, 0x00,0x00, 0x86,0xB2, +0x00,0x10, 0xF7,0x04, 0xE0,0x00, 0xC5,0xA4, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x81,0xE4, 0x04,0x30, 0x00,0x10, 0x86,0xB2, 0x00,0x14, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x81,0xE8, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x81,0xF5, 0x00,0x00, 0x00,0x01, 0xF5,0x02, +0x00,0x00, 0x86,0xA2, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0x82,0x30, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0x82,0x38, 0x20,0x32, 0x00,0x00, 0x86,0xA2, 0x00,0x04, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x82,0x39, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x82,0x49, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, +0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0x82,0x59, 0x20,0x26, 0x00,0x00, 0xF4,0x82, +0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0x87,0x60, 0x00,0x00, 0x00,0x01, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x07,0x20, 0x00,0x02, 0xF0,0x3B, +0x28,0x00, 0xF7,0x04, 0x4F,0x58, 0xF4,0x05, 0x3B,0xB0, 0x06,0xA0, 0x00,0x14, 0xC7,0x20, +0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0xF7,0x37, 0x28,0x00, 0x06,0xA0, 0x00,0x16, 0xF7,0x37, +0x28,0x00, 0xF3,0x02, 0x00,0x01, 0xF3,0x23, 0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x26,0x14, 0x00,0x20, 0xF0,0x33, 0x28,0x00, 0x04,0xA0, +0x00,0x02, 0xF0,0x27, 0x28,0x00, 0xF3,0x02, 0x00,0x00, 0x23,0x94, 0x00,0x2A, 0xF3,0x1F, +0x28,0x00, 0x07,0x20, 0x00,0x1A, 0x23,0x94, 0x00,0x2A, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x9C, 0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x06,0xA4, 0x00,0x02, 0x75,0x15, 0x00,0x1E, 0xF3,0xBB, +0x28,0x00, 0xF3,0x04, 0xE0,0x00, 0x75,0x28, 0xFF,0xE5, 0x93,0x22, 0x00,0x1C, 0xF3,0x84, +0xE0,0x04, 0x23,0x14, 0x00,0x1E, 0x93,0x16, 0xFF,0xA4, 0x75,0x99, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0x73,0x15, 0x00,0x1E, 0x73,0x18, 0xFF,0xE5, 0x93,0x16, 0xFF,0xCC, 0x83,0x16, +0xFF,0xA4, 0x93,0xA2, 0x00,0x20, 0x87,0x16, 0xFF,0xE0, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, +0xFF,0xE5, 0x93,0x96, 0xFF,0xAC, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x93,0x96, +0xFF,0xC4, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x94, 0x00,0x1A, 0x93,0x96, 0xFF,0xA4, 0x76,0x1D, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE8, 0x23,0x14, +0x00,0x16, 0x93,0x16, 0xFF,0xA4, 0x76,0x19, 0x00,0x1E, 0x83,0x96, 0xFF,0xAC, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x93,0x16, +0xFF,0xA4, 0x76,0x19, 0x00,0x1E, 0x83,0x96, 0xFF,0xCC, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, +0xFF,0xF0, 0x83,0x16, 0xFF,0xC4, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF3,0x82, 0x00,0x02, 0xF3,0xA3, 0x28,0x00, 0x23,0x14, +0x00,0x2A, 0x83,0x1A, 0x00,0x00, 0x77,0x99, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x18, +0x7F,0xC0, 0x73,0x19, 0xFF,0xF0, 0x07,0x20, 0x00,0x18, 0xF3,0x3B, 0x28,0x00, 0x94,0x16, +0xFF,0xDC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x07,0x20, +0x00,0x02, 0x23,0x94, 0x00,0x2A, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC3,0x9C, 0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x24,0x80, 0x00,0x07, 0x05,0x20, +0x00,0x0A, 0xF3,0xBB, 0x28,0x00, 0x20,0x26, 0x00,0x07, 0xEE,0x00, 0x84,0xE0, 0x06,0x28, +0x00,0x0E, 0x86,0xB2, 0x00,0x00, 0x77,0x31, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x75,0xB1, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x05,0x28, 0x00,0x02, 0x04,0xA4, 0x00,0x01, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0xFF,0x00, 0xC6,0xB4, 0x74,0x00, 0xF6,0xB3, +0x28,0x00, 0x87,0x32, 0x00,0x00, 0xF3,0x02, 0x00,0xFF, 0xC7,0x38, 0x5F,0xC0, 0x77,0x39, +0xFF,0xF0, 0xC7,0x38, 0x34,0x00, 0xE0,0x00, 0x84,0x88, 0xF7,0x33, 0x28,0x00, 0x05,0x20, +0x00,0x26, 0x86,0x2A, 0x00,0x00, 0x76,0xA9, 0x00,0x1E, 0xF5,0x84, 0x4F,0x58, 0x76,0xB4, +0xFF,0xE5, 0x83,0x96, 0xFF,0xDC, 0xF3,0x02, 0x00,0xFF, 0x94,0x16, 0xFF,0xBC, 0xC7,0x1C, +0x5A,0x00, 0x77,0x38, 0xFF,0xFA, 0xC6,0x30, 0x6F,0xC0, 0x76,0x31, 0xFF,0xF0, 0x47,0x39, +0x00,0x00, 0xC7,0x38, 0x34,0x00, 0xF6,0x82, 0xFF,0x00, 0xC6,0x30, 0x6C,0x00, 0xC7,0x38, +0x60,0x00, 0xF6,0x84, 0x3B,0x6C, 0xF7,0x2B, 0x28,0x00, 0xC5,0xA0, 0x5A,0x00, 0x75,0xAC, +0xFF,0xFA, 0x83,0x16, 0xFF,0xDC, 0x07,0x34, 0x00,0x01, 0xF7,0x05, 0x3B,0x6C, 0x07,0x20, +0x00,0x3A, 0xF6,0xBB, 0x28,0x00, 0x07,0x20, 0x00,0x36, 0xF0,0x3B, 0x28,0x00, 0xF3,0x82, +0x00,0x03, 0xF3,0xA3, 0x28,0x00, 0x07,0x18, 0x00,0x1A, 0xF5,0xBB, 0x28,0x00, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x07,0x20, 0x00,0x02, 0xF0,0x3B, +0x28,0x00, 0x24,0x80, 0x00,0x07, 0x05,0x20, 0x00,0x0A, 0x20,0x26, 0x00,0x07, 0xEE,0x00, +0x85,0xD4, 0x06,0x28, 0x00,0x0E, 0x86,0xB2, 0x00,0x00, 0x77,0x31, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0x75,0xB1, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x05,0x28, 0x00,0x02, 0x04,0xA4, +0x00,0x01, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0xFF,0x00, 0xC6,0xB4, +0x74,0x00, 0xF6,0xB3, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0xF3,0x82, 0x00,0xFF, 0xC7,0x38, +0x5F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, 0x3C,0x00, 0xE0,0x00, 0x85,0x7C, 0xF7,0x33, +0x28,0x00, 0x05,0xA0, 0x00,0x26, 0x86,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC5,0x20, 0x00,0x00, 0x24,0x00, 0x00,0x07, 0xF3,0x02, 0x00,0x01, 0x93,0x16, +0xFF,0xA4, 0xF7,0x04, 0x4F,0x58, 0x83,0x96, 0xFF,0xBC, 0x24,0x80, 0x00,0x0E, 0xC7,0x1C, +0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0xC6,0x30, 0x6F,0xC0, 0x76,0x31, 0xFF,0xF0, 0x47,0x39, +0x00,0x00, 0xF6,0x82, 0x00,0xFF, 0xC7,0x38, 0x6C,0x00, 0xF6,0x82, 0xFF,0x00, 0xC6,0x30, +0x6C,0x00, 0xC7,0x38, 0x60,0x00, 0xF6,0x84, 0x3B,0x6C, 0xF7,0x2F, 0x28,0x00, 0x07,0x34, +0x00,0x01, 0xF7,0x05, 0x3B,0x6C, 0x07,0x28, 0x00,0x3A, 0xF6,0xBB, 0x28,0x00, 0x07,0x28, +0x00,0x36, 0xF0,0x3B, 0x28,0x00, 0xF3,0x02, 0x00,0x03, 0xF3,0x2B, 0x28,0x00, 0x20,0x22, +0x00,0x07, 0xEE,0x00, 0x86,0x94, 0xC6,0x28, 0x48,0x00, 0x06,0x30, 0x00,0x26, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x04,0xA4, 0x00,0x02, 0x04,0x20, +0x00,0x01, 0x83,0x96, 0xFF,0xA4, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xF6,0x82, +0xFF,0x00, 0xC7,0x38, 0x6C,0x00, 0xC7,0x1C, 0x70,0x00, 0xE0,0x00, 0x86,0x50, 0xF7,0x33, +0x28,0x00, 0x06,0x28, 0x00,0x26, 0x86,0xB2, 0x00,0x00, 0x77,0x31, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0xFF,0x00, 0xC6,0xB4, +0x74,0x00, 0xF6,0xB3, 0x28,0x00, 0x95,0x13, 0xFF,0xFC, 0xF3,0x04, 0x3B,0xB0, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x95,0x16, 0xFF,0xB4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD4,0x2C, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xB4, 0xF0,0x05, 0x40,0x7C, 0x83,0x96, +0xFF,0xBC, 0x23,0x00, 0x00,0x07, 0xF3,0x05, 0x42,0x58, 0xF7,0x04, 0x42,0x50, 0xF6,0x06, +0x42,0x50, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF3,0x06, 0x39,0x34, 0xF3,0x05, +0x42,0x44, 0xF5,0x05, 0x40,0x74, 0xF3,0x85, 0x42,0x60, 0xF3,0x82, 0x00,0x06, 0xF3,0x85, +0x42,0x54, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xF6,0x84, 0x2D,0x38, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x06,0x34, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0xF7,0x06, +0x2C,0x28, 0x76,0xB5, 0x00,0x02, 0xF3,0x82, 0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0x87,0x4C, 0xB3,0xB6, 0x70,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x06, 0x42,0x44, 0x93,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1F,0x48, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x48, 0xF3,0x86, +0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x89,0xED, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, 0x87,0xC9, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x73,0x4C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0x89,0xEC, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, +0xFF,0xFC, 0x26,0x14, 0x00,0x20, 0xF0,0x33, 0x28,0x00, 0x05,0xA0, 0x00,0x02, 0xF0,0x2F, +0x28,0x00, 0xF3,0x82, 0x00,0x00, 0x24,0x94, 0x00,0x22, 0xF3,0xA7, 0x28,0x00, 0x04,0xA0, +0x00,0x1A, 0x94,0x96, 0xFF,0xD4, 0x23,0x94, 0x00,0x22, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x9C, 0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x06,0xAC, 0x00,0x02, 0x23,0x14, 0x00,0x1E, 0x75,0x19, +0x00,0x1E, 0xF3,0xA7, 0x28,0x00, 0xF4,0x84, 0xE0,0x00, 0x75,0x28, 0xFF,0xE5, 0x94,0xA2, +0x00,0x1C, 0xF3,0x84, 0xE0,0x04, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, +0xFF,0xB4, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0xCC, 0x84,0x96, +0xFF,0xB4, 0x93,0xA2, 0x00,0x20, 0x87,0x16, 0xFF,0xE0, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, +0xFF,0xE5, 0x93,0x96, 0xFF,0xBC, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, +0xFF,0xC4, 0x83,0x96, 0xFF,0xBC, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, +0x28,0x00, 0xF5,0x84, 0x4F,0x58, 0x87,0x1A, 0x00,0x00, 0xC5,0xA0, 0x5A,0x00, 0x75,0xAC, +0xFF,0xFA, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x14, 0x00,0x1A, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x45,0xAD, 0x00,0x00, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x84,0x96, 0xFF,0xCC, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0xE8, 0x23,0x14, 0x00,0x16, 0x76,0x19, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x83,0x96, 0xFF,0xC4, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xF0, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, +0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF4,0x82, 0x00,0x02, 0xF4,0xA3, +0x28,0x00, 0x04,0x20, 0x00,0x18, 0x23,0x94, 0x00,0x22, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x9C, 0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x84,0x96, +0xFF,0xD4, 0xF3,0xA3, 0x28,0x00, 0xF3,0x82, 0x00,0x01, 0xF3,0xA7, 0x28,0x00, 0x95,0x93, +0xFF,0xFC, 0xF4,0x86, 0xE0,0x00, 0x94,0x93, 0xFF,0xFC, 0xF3,0x84, 0x4F,0x5C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0xD8, 0x97,0x93, 0xFF,0xFC, 0xF4,0x86, +0x36,0x78, 0xF4,0x85, 0x42,0x44, 0xF0,0x05, 0x40,0x84, 0xF6,0x84, 0x4F,0x5C, 0xF7,0x02, +0x00,0x64, 0x97,0x36, 0x00,0x00, 0x90,0x36, 0x00,0x04, 0xF7,0x02, 0x00,0x01, 0xF7,0x05, +0x40,0x84, 0xF3,0x86, 0x35,0xEC, 0xF3,0x85, 0x42,0x30, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x90, 0xF7,0x04, 0x42,0x60, 0xF5,0x02, +0x00,0x00, 0x05,0xB8, 0x00,0x18, 0xF6,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x32, +0x00,0x07, 0xEE,0x00, 0x8A,0x70, 0xC7,0x30, 0x60,0x00, 0xC7,0x38, 0x58,0x00, 0x07,0x38, +0x00,0x0E, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB4, 0x74,0x00, 0xC0,0x36, +0x52,0x00, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x8A,0x71, 0x07,0x30, 0x00,0x01, 0xE0,0x00, 0x8A,0x18, 0xF7,0x05, 0x42,0x58, 0xF4,0x04, +0x42,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x22, 0x00,0x07, 0xEE,0x00, 0x8D,0x94, 0x24,0x94, +0x00,0x36, 0xF6,0x04, 0x42,0x60, 0x25,0x14, 0x00,0x38, 0x23,0x94, 0x00,0x20, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x30, +0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, +0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x34, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x32, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x30, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2E, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2C, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2A, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, +0x00,0x28, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x94,0x13, 0xFF,0xFC, 0x95,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0x7C, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, +0xFF,0xFC, 0xF6,0x04, 0x42,0x60, 0x24,0x94, 0x00,0x7E, 0x25,0x14, 0x00,0x80, 0x23,0x94, +0x00,0x68, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x7C, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x7A, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x78, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x76, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x74, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x72, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x24,0x94, 0x00,0x70, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x95,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0x74, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD2,0x58, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0x74, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0xF7,0x04, +0x42,0x58, 0x23,0x94, 0x00,0x50, 0xC7,0x00, 0x72,0x00, 0x97,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0x6C, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCF,0x24, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0x6C, 0xF6,0x86, 0x42,0x50, 0x93,0x93, 0xFF,0xFC, 0xF3,0x84, +0x42,0x58, 0x76,0xB5, 0x00,0x1E, 0x93,0x93, 0xFF,0xFC, 0xF7,0x04, 0x42,0x50, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, +0xFF,0x7C, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xF3,0x38, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x8D,0x95, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x42,0x58, 0xF7,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x07, 0xEE,0x00, +0x8D,0xD4, 0xF3,0x82, 0x17,0x70, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x82, 0x00,0x1C, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0x8D,0xF4, 0xB3,0xBA, 0x68,0x02, 0xE0,0x00, 0x8D,0xF4, 0xF0,0x05, +0x2D,0x38, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x1B, 0x93,0x93, 0xFF,0xFC, 0xF3,0x86, +0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x88, 0xF7,0x04, 0x42,0x50, 0xF6,0x86, 0x42,0x50, 0x76,0xB5, 0x00,0x1E, 0xF3,0x84, +0x6F,0x34, 0x76,0xB4, 0xFF,0xE5, 0x93,0x96, 0xFF,0xC4, 0xC7,0x38, 0x6F,0xC0, 0x86,0x9E, +0x00,0x0C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x8E,0x65, 0xF6,0x06, +0x42,0xA0, 0xF7,0x04, 0x42,0xA0, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, 0x94,0xE4, 0xF7,0x33, +0x28,0x00, 0xF6,0x04, 0x42,0x60, 0x24,0x94, 0x00,0x36, 0x85,0x16, 0xFF,0xC4, 0x23,0x94, +0x00,0x38, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x85,0x2A, 0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x95,0x16, 0xFF,0xBC, 0xF7,0x1F, 0x28,0x00, 0x87,0x32, +0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0x85,0x16, 0xFF,0xC4, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x34, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x32, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x30, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2E, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2C, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2A, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, +0x00,0x28, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x2A, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x27,0x14, 0x00,0x20, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xC4, 0x00,0x00, +0x00,0x01, 0x87,0x1E, 0x00,0x10, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0x8F,0xF0, 0xF6,0x82, 0x00,0x00, 0x87,0x1E, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0x8F,0xF4, 0x20,0x36, 0x00,0x00, 0xF6,0x82, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0x90,0x41, 0x00,0x00, 0x00,0x01, 0x85,0x16, 0xFF,0xC4, 0x00,0x00, +0x00,0x01, 0x05,0x28, 0x00,0x10, 0x95,0x16, 0xFF,0xB4, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x72,0x50, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xB4, 0x27,0x14, +0x00,0x20, 0x93,0x93, 0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xF9,0x34, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x94,0xE4, 0x00,0x00, 0x00,0x01, 0x85,0x16, +0xFF,0xBC, 0x00,0x00, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0x94,0xBC, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0xF5,0x02, +0x00,0x00, 0x23,0x94, 0x00,0x62, 0xF5,0x1F, 0x28,0x00, 0x75,0x95, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0x06,0x20, 0x00,0x02, 0x06,0xB0, 0x00,0x02, 0x23,0x14, 0x00,0x1E, 0x73,0x99, +0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0x74, 0x75,0x15, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x95,0x16, 0xFF,0x7C, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, +0xFF,0x8C, 0x85,0x16, 0xFF,0xC4, 0x73,0x95, 0x00,0x1E, 0x93,0x96, 0xFF,0x84, 0x85,0x2A, +0x00,0x34, 0x23,0x94, 0x00,0x62, 0x95,0x16, 0xFF,0xAC, 0xF0,0x33, 0x28,0x00, 0x05,0x20, +0x00,0x1A, 0x95,0x16, 0xFF,0x94, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC3,0x9C, 0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x74,0x95, 0x00,0x1E, 0xF3,0xAB, +0x28,0x00, 0x85,0x16, 0xFF,0xC4, 0x74,0xA4, 0xFF,0xE5, 0x85,0x2A, 0x00,0x10, 0x83,0x96, +0xFF,0xC4, 0x95,0x22, 0x00,0x1C, 0x83,0x9E, 0x00,0x14, 0x85,0x16, 0xFF,0x84, 0x93,0xA2, +0x00,0x20, 0x87,0x16, 0xFF,0xE0, 0x75,0x28, 0xFF,0xE5, 0x95,0x16, 0xFF,0x84, 0xF3,0x84, +0x4F,0x58, 0x85,0x16, 0xFF,0x74, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x93,0x96, 0xFF,0xA4, 0xC0,0x22, 0x3A,0x00, 0x83,0x96, +0xFF,0x7C, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x14, 0x00,0x1A, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE8, 0x23,0x14, 0x00,0x16, 0x76,0x19, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x85,0x16, 0xFF,0x8C, 0x83,0x96, +0xFF,0x84, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x76,0x19, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x16, 0xFF,0xF0, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF5,0x02, 0x00,0x02, 0xF5,0x23, 0x28,0x00, 0x23,0x94, +0x00,0x52, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x9C, +0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x03,0x20, 0x00,0x18, 0xE6,0x00, 0x92,0x30, 0xF3,0x9B, +0x28,0x00, 0xF7,0x04, 0x42,0x70, 0xE0,0x00, 0x92,0x9C, 0xF6,0x06, 0x42,0x72, 0x85,0x16, +0xFF,0xC4, 0x00,0x00, 0x00,0x01, 0x86,0xAA, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0x07,0x34, +0x00,0x07, 0x20,0x3A, 0x00,0x0E, 0xE2,0x00, 0x92,0x94, 0xC7,0x34, 0x68,0x00, 0xF5,0x84, +0x42,0x60, 0xF3,0x82, 0x00,0xFF, 0xC7,0x2C, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, +0x00,0x00, 0x97,0x16, 0xFF,0x74, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xC6,0xB4, 0x3C,0x00, 0x20,0x36, 0x00,0x00, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0x92,0xC9, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x42,0x74, 0xF6,0x06, 0x42,0x74, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0x94,0xE4, 0x00,0x00, 0x00,0x01, 0x85,0x16, 0xFF,0xA4, 0x83,0x96, 0xFF,0x74, 0xC7,0x20, +0x52,0x00, 0x74,0xB8, 0xFF,0xFA, 0xC6,0x24, 0x00,0x00, 0x87,0x1E, 0x00,0x00, 0x76,0x9D, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC5,0xAC, 0x52,0x00, 0x75,0xAC, 0xFF,0xFA, 0x46,0x31, +0x00,0x00, 0xF5,0x02, 0x00,0xFF, 0xC6,0x30, 0x54,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0xF6,0x82, 0xFF,0x00, 0xC7,0x38, 0x6C,0x00, 0xC6,0x30, 0x70,0x00, 0xF6,0x1F, +0x28,0x00, 0x83,0x96, 0xFF,0x94, 0x85,0x16, 0xFF,0xC4, 0xF5,0x9F, 0x28,0x00, 0x87,0x2A, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x24, 0xE6,0x00, 0x94,0x69, 0xF6,0x86, +0x40,0x98, 0xF7,0x04, 0x6E,0x50, 0x86,0x2A, 0x00,0x2C, 0xC6,0xA4, 0x00,0x00, 0x23,0x94, +0x00,0x62, 0x84,0x9E, 0x00,0x00, 0x77,0x9D, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC4,0xA4, +0x7F,0xC0, 0x74,0xA5, 0xFF,0xF0, 0x46,0xB5, 0x00,0x00, 0x87,0x3A, 0x1D,0xDC, 0x76,0xB5, +0x00,0x02, 0xC0,0x32, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, +0x00,0x00, 0xF7,0x06, 0x40,0x98, 0xE6,0x00, 0x94,0x34, 0xC3,0x34, 0x70,0x00, 0xC5,0x84, +0x00,0x00, 0x86,0xAA, 0x00,0x24, 0xF7,0x04, 0xE0,0x00, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0x05,0x28, 0x00,0x24, 0xE6,0x00, 0x93,0xC4, 0x95,0x16, 0xFF,0x74, 0x83,0x96, +0xFF,0xC4, 0x00,0x00, 0x00,0x01, 0x86,0x9E, 0x00,0x28, 0xF7,0x04, 0xE0,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x93,0xC8, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x93,0xD5, 0x00,0x00, 0x00,0x01, 0xF5,0x82, +0x00,0x00, 0x85,0x16, 0xFF,0x74, 0xF7,0x04, 0xE0,0x00, 0x86,0xAA, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x94,0x14, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0x94,0x1C, 0x20,0x32, 0x00,0x00, 0x86,0xAA, 0x00,0x04, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0x94,0x1D, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0x94,0x2D, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0x94,0x39, 0x00,0x00, +0x00,0x01, 0xF4,0x82, 0x00,0x01, 0xF7,0x04, 0x4F,0x58, 0xF4,0x9B, 0x28,0x00, 0x83,0x96, +0xFF,0xC4, 0xF6,0x86, 0x40,0x9A, 0xC7,0x20, 0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0x86,0x1E, +0x00,0x30, 0x47,0x39, 0x00,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0xE0,0x00, +0x94,0xE4, 0xF6,0x3B, 0x28,0x00, 0x47,0x25, 0x00,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, +0x68,0x00, 0xF5,0x02, 0x00,0x01, 0xF5,0x3B, 0x28,0x00, 0x07,0x38, 0x00,0x02, 0x23,0x94, +0x00,0x62, 0x83,0x9E, 0x00,0x00, 0x77,0x9D, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x9C, +0x7F,0xC0, 0x73,0x9D, 0xFF,0xF0, 0x25,0x14, 0x00,0x62, 0xF3,0xBB, 0x28,0x00, 0x85,0x2A, +0x00,0x00, 0x77,0xA9, 0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC5,0x28, 0x7F,0xC0, 0x75,0x29, +0xFF,0xF0, 0xE0,0x00, 0x94,0xE4, 0xF5,0x1B, 0x28,0x00, 0x83,0x96, 0xFF,0xBC, 0x00,0x00, +0x00,0x01, 0x20,0x1E, 0x00,0x01, 0xE6,0x00, 0x94,0xE4, 0x00,0x00, 0x00,0x01, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x35,0x60, 0xF5,0x05, +0x42,0x30, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x06, +0x42,0x44, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0x96,0x89, 0x00,0x00, 0x00,0x01, 0xF6,0x84, +0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xEE,0x00, 0x95,0x8D, 0xF5,0x86, +0x42,0x50, 0xF7,0x04, 0x42,0x50, 0x76,0x2D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x26,0xB4, +0x00,0x01, 0xF6,0x85, 0x42,0x54, 0x25,0x00, 0x00,0x07, 0xF5,0x05, 0x42,0x58, 0xF6,0x84, +0x2D,0x38, 0xC7,0x38, 0x67,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x2F, +0x28,0x00, 0x06,0x34, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0xF7,0x06, 0x2C,0x28, 0x76,0xB5, +0x00,0x02, 0xF5,0x02, 0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x96,0x88, 0xB5,0x36, +0x70,0x02, 0xE0,0x00, 0x96,0x88, 0xF0,0x05, 0x2D,0x38, 0xF5,0x04, 0x42,0x60, 0x00,0x00, +0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xB2,0x84, 0x97,0x93, +0xFF,0xFC, 0xF6,0x84, 0x4F,0x58, 0x00,0x00, 0x00,0x01, 0x07,0x34, 0x00,0x40, 0xC0,0x22, +0x72,0x00, 0xE6,0x00, 0x95,0xEC, 0xF6,0x06, 0x42,0x76, 0xF7,0x04, 0x42,0x74, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0x96,0x88, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x60, 0x00,0x00, +0x00,0x01, 0xC0,0x22, 0x72,0x00, 0xE6,0x00, 0x96,0x24, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0xF5,0x04, 0x3B,0xB0, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD4,0x2C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x96,0x40, 0x00,0x00, +0x00,0x01, 0xC0,0x22, 0x6A,0x00, 0xE6,0x00, 0x96,0x71, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCC,0x60, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, +0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0xF5,0x04, +0x40,0x74, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xBE,0xF8, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x96,0x88, 0x00,0x00, 0x00,0x01, 0xF5,0x04, +0x40,0x74, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xC1,0xB4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x70, 0xF6,0x04, 0x6F,0x34, 0xF7,0x04, 0x42,0x64, 0x86,0xB2, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0x9B,0x18, 0x06,0xB0, +0x00,0x02, 0x87,0x36, 0x00,0x00, 0xF4,0x04, 0x40,0x7C, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC0,0x3A, 0x42,0x00, 0xE6,0x00, +0x9B,0x18, 0x24,0x94, 0x00,0x36, 0xF6,0x04, 0x40,0x74, 0x23,0x94, 0x00,0x38, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x30, +0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x34, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x32, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x30, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2E, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2C, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2A, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, +0x00,0x28, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x94,0x13, 0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x27,0x14, +0x00,0x20, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0xF5,0x04, +0x40,0x74, 0x94,0x16, 0xFF,0xC4, 0x07,0x20, 0x00,0x02, 0xF0,0x3B, 0x28,0x00, 0x24,0x80, +0x00,0x07, 0xF4,0x02, 0x00,0xFF, 0x83,0x96, 0xFF,0xC4, 0x95,0x16, 0xFF,0xBC, 0x03,0x1C, +0x00,0x0A, 0x20,0x26, 0x00,0x07, 0xEE,0x00, 0x98,0xA8, 0x06,0x18, 0x00,0x0E, 0x86,0xB2, +0x00,0x00, 0x77,0x31, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x75,0xB1, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0x03,0x18, 0x00,0x02, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, +0xFF,0x00, 0xC6,0xB4, 0x74,0x00, 0xF6,0xB3, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x04,0xA4, +0x00,0x01, 0xC7,0x38, 0x5F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, 0x44,0x00, 0xE0,0x00, +0x98,0x54, 0xF7,0x33, 0x28,0x00, 0x85,0x16, 0xFF,0xC4, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, +0xFF,0xE5, 0x83,0x96, 0xFF,0xC4, 0x23,0x14, 0x00,0x1E, 0x74,0x19, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0x05,0x28, 0x00,0x26, 0x95,0x16, 0xFF,0x8C, 0x85,0xAA, 0x00,0x00, 0x76,0xA9, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x03,0x9C, 0x00,0x02, 0x93,0x96, 0xFF,0xB4, 0x06,0x1C, +0x00,0x02, 0x73,0x95, 0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0xAC, 0x73,0x95, +0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0x9C, 0x83,0x96, 0xFF,0xBC, 0x75,0x15, +0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x95,0x16, 0xFF,0x94, 0x75,0x15, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x95,0x16, 0xFF,0xA4, 0x85,0x16, 0xFF,0xC4, 0xC5,0xAC, 0x6F,0xC0, 0x75,0xAD, +0xFF,0xF0, 0xF5,0x05, 0x42,0x60, 0xF5,0x04, 0x4F,0x58, 0xF6,0x82, 0x00,0xFF, 0xC7,0x1C, +0x52,0x00, 0x77,0x38, 0xFF,0xFA, 0x47,0x39, 0x00,0x00, 0xC7,0x38, 0x6C,0x00, 0xF6,0x82, +0xFF,0x00, 0xC5,0xAC, 0x6C,0x00, 0xC7,0x38, 0x58,0x00, 0x83,0x96, 0xFF,0x8C, 0xF5,0x84, +0x3B,0x6C, 0x85,0x16, 0xFF,0xB4, 0xF7,0x1F, 0x28,0x00, 0x87,0x16, 0xFF,0xE0, 0x06,0xAC, +0x00,0x01, 0xF6,0x85, 0x3B,0x6C, 0x83,0x96, 0xFF,0xC4, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0xF5,0x04, 0x4F,0x58, 0x87,0x1A, 0x00,0x00, 0xC0,0x1E, +0x52,0x00, 0xC7,0x38, 0x47,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x14, 0x00,0x1A, 0x76,0x99, 0x00,0x1E, 0x83,0x96, +0xFF,0x94, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0x30, 0x00,0x02, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x16, 0xFF,0xE8, 0x23,0x14, +0x00,0x16, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x85,0x16, 0xFF,0xAC, 0x83,0x96, +0xFF,0xA4, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x06,0x30, 0x00,0x02, 0x85,0x16, 0xFF,0x9C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x16, 0xFF,0xEC, 0x23,0x14, +0x00,0x12, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0x30, 0x00,0x02, 0x83,0x96, +0xFF,0xC4, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x16, +0xFF,0xF0, 0x06,0x30, 0x00,0x02, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, +0x28,0x00, 0x07,0x1C, 0x00,0x3A, 0xF5,0xBB, 0x28,0x00, 0x07,0x1C, 0x00,0x36, 0xF0,0x3B, +0x28,0x00, 0xF5,0x02, 0x00,0x03, 0xE6,0x00, 0x9A,0xA4, 0xF5,0x1F, 0x28,0x00, 0xF7,0x04, +0x42,0x78, 0xF6,0x06, 0x42,0x78, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x9B,0x18, 0x00,0x00, +0x00,0x01, 0xF3,0x86, 0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x1F,0x48, 0x97,0x93, 0xFF,0xFC, 0x25,0x00, 0x00,0x07, 0xF5,0x05, 0x42,0x58, 0xF7,0x04, +0x42,0x50, 0xF6,0x06, 0x42,0x50, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF3,0x82, +0x00,0x06, 0xF3,0x85, 0x42,0x54, 0xF5,0x06, 0x39,0x34, 0xF5,0x05, 0x42,0x44, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xF6,0x84, 0x2D,0x38, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x06,0x34, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0xF7,0x06, 0x2C,0x28, 0x76,0xB5, +0x00,0x02, 0xF3,0x82, 0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0x9B,0x18, 0xB3,0xB6, +0x70,0x02, 0xF0,0x05, 0x2D,0x38, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x78, 0xF3,0x86, 0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0x9E,0x41, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xEE,0x00, 0x9D,0x85, 0x24,0x94, 0x00,0x36, 0xF6,0x04, 0x40,0x74, 0x25,0x14, +0x00,0x38, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x34, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x32, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x30, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2E, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2C, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, 0x00,0x2A, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x24,0x94, 0x00,0x28, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0xF3,0x84, 0x40,0x7C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x95,0x13, 0xFF,0xFC, 0x23,0x94, 0x00,0x20, 0x93,0x96, +0xFF,0x94, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x23,0x94, +0x00,0x68, 0x93,0x96, 0xFF,0x8C, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x8C, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x90,0x13, 0xFF,0xFC, 0x23,0x94, 0x00,0x50, 0x93,0x96, 0xFF,0x84, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCF,0x24, 0x97,0x93, 0xFF,0xFC, 0x87,0x02, +0xFF,0x34, 0x00,0x00, 0x00,0x01, 0xF7,0x05, 0x42,0x64, 0xF3,0x84, 0x40,0x7C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0x84, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF7,0xC8, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0x9D,0x5D, 0xF3,0x82, 0x17,0x70, 0xF7,0x04, 0x42,0x54, 0x00,0x00, +0x00,0x01, 0x27,0x38, 0x00,0x01, 0xF7,0x05, 0x42,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x1B, 0x93,0x93, 0xFF,0xFC, 0xF3,0x86, 0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0x9E,0x40, 0x00,0x00, +0x00,0x01, 0xF5,0x04, 0x40,0x7C, 0xF4,0x84, 0x40,0x74, 0xC7,0x28, 0x50,0x00, 0xC7,0x24, +0x70,0x00, 0x05,0xB8, 0x00,0x26, 0x86,0xAE, 0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x77,0xB4, 0x00,0x08, 0x70,0x3E, 0xFF,0xE8, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xF7,0x04, 0x4F,0x58, 0xE6,0x00, +0x9D,0xFD, 0xF6,0x02, 0x00,0xFF, 0xF7,0x04, 0x42,0x78, 0xF6,0x06, 0x42,0x7A, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0x9E,0x40, 0x00,0x00, 0x00,0x01, 0x86,0xAE, 0x00,0x00, 0x77,0x2D, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, +0x00,0x01, 0xC7,0x38, 0x64,0x00, 0xF6,0x02, 0xFF,0x00, 0xC6,0xB4, 0x64,0x00, 0xC7,0x38, +0x68,0x00, 0xF7,0x2F, 0x28,0x00, 0x07,0x28, 0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0x94,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xBE,0xF8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0xD8, 0xF3,0x86, +0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xA2,0xC9, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, 0xA0,0x35, 0x24,0x94, +0x00,0x36, 0xF6,0x04, 0x40,0x74, 0x25,0x14, 0x00,0x38, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0xB1, +0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, +0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x34, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x32, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x30, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x2E, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x2C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x2A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, 0x00,0x28, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0xF3,0x84, 0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x95,0x13, +0xFF,0xFC, 0x23,0x94, 0x00,0x20, 0x93,0x96, 0xFF,0x4C, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x23,0x94, 0x00,0x50, 0x93,0x96, 0xFF,0x44, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x87,0x02, +0xFF,0x34, 0x00,0x00, 0x00,0x01, 0xF7,0x05, 0x42,0x64, 0xF3,0x84, 0x40,0x7C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0x44, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0xE0,0x00, 0xA2,0x80, 0x93,0x93, +0xFF,0xFC, 0xF4,0x04, 0x40,0x7C, 0xF6,0x04, 0x40,0x74, 0xF3,0x82, 0x00,0x00, 0xC7,0x20, +0x40,0x00, 0xC7,0x30, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, 0x00,0x00, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x77,0xB4, 0x00,0x08, 0x70,0x3E, +0xFF,0xE8, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xA0,0xAD, 0x93,0x96, 0xFF,0x3C, 0xF7,0x04, 0x42,0xA0, 0xF6,0x06, 0x42,0xA0, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0xA2,0xC8, 0x00,0x00, 0x00,0x01, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x24,0x94, 0x00,0x7E, 0x25,0x14, +0x00,0x80, 0x23,0x94, 0x00,0x68, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x7C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x7A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x78, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x76, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x74, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x24,0x94, +0x00,0x72, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, 0x00,0x70, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x94,0x13, +0xFF,0xFC, 0x95,0x13, 0xFF,0xFC, 0x93,0x96, 0xFF,0x34, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x34, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x23,0x94, 0x00,0xB0, 0x93,0x96, 0xFF,0x2C, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0x2C, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x3C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x23,0x94, 0x00,0x98, 0x93,0x96, 0xFF,0x24, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCF,0x24, 0x97,0x93, 0xFF,0xFC, 0xF3,0x82, +0x00,0x06, 0xF3,0x85, 0x42,0x54, 0x87,0x02, 0xFF,0x34, 0xF3,0x86, 0x38,0xA8, 0xF3,0x85, +0x42,0x44, 0xF7,0x05, 0x42,0x64, 0xF3,0x84, 0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0x24, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0x34, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xF7,0xC8, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0xA2,0xA9, 0xF3,0x82, 0x17,0x70, 0xF7,0x04, 0x42,0x54, 0x00,0x00, 0x00,0x01, 0x27,0x38, +0x00,0x01, 0xF7,0x05, 0x42,0x54, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0x1B, 0x93,0x93, +0xFF,0xFC, 0xF3,0x86, 0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF6,0x04, 0x6F,0x34, 0xF7,0x04, 0x42,0x64, 0x86,0xB2, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xA3,0xAC, 0x06,0xB0, 0x00,0x02, 0x87,0x36, +0x00,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0xF6,0x84, +0x40,0x7C, 0x77,0x39, 0xFF,0xF0, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x00, 0xA3,0xAC, 0xC7,0x34, +0x68,0x00, 0xF5,0x84, 0x40,0x74, 0xF6,0x04, 0x4F,0x58, 0x00,0x00, 0x00,0x01, 0xC6,0x2C, +0x62,0x00, 0x76,0x30, 0xFF,0xFA, 0xC5,0xAC, 0x70,0x00, 0x05,0xAC, 0x00,0x26, 0x86,0xAE, +0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x46,0x31, 0x00,0x00, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0x30, 0x74,0x00, 0xF7,0x02, +0xFF,0x00, 0xC6,0xB4, 0x74,0x00, 0xC6,0x30, 0x68,0x00, 0xF6,0x2F, 0x28,0x00, 0xF5,0x06, +0x42,0x44, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1F,0x48, 0x97,0x93, +0xFF,0xFC, 0xF7,0x04, 0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0xF5,0x04, 0x40,0x74, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xBE,0xF8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x80, 0xF7,0x04, 0x42,0x58, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xA3,0xF4, 0x20,0x3A, 0x00,0x07, 0xF5,0x02, +0x00,0x01, 0xF5,0x05, 0x42,0x58, 0xF7,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x07, 0xEE,0x00, 0xA6,0xF0, 0x23,0x94, 0x00,0x1E, 0xF6,0x04, 0x42,0x60, 0x23,0x14, +0x00,0x66, 0xF4,0x84, 0x40,0x78, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x04,0xA4, 0x00,0x02, 0x74,0x25, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0x31, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x95,0x16, +0xFF,0x7C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x25,0x14, 0x00,0x20, 0x95,0x16, +0xFF,0x94, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x85,0x16, 0xFF,0x7C, 0x05,0xA4, +0x00,0x02, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x23,0x94, +0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x25,0x14, 0x00,0x50, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x1A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x18, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x16, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x14, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x12, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x10, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0x26,0x14, 0x00,0x68, 0xC7,0x38, +0x47,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x62, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x60, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x5E, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x5C, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x23,0x14, +0x00,0x5A, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x05,0xAC, +0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x23,0x14, 0x00,0x58, 0x75,0xAD, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x96,0x13, +0xFF,0xFC, 0x95,0x16, 0xFF,0x8C, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0x8C, 0x00,0x00, 0x00,0x01, 0x95,0x13, +0xFF,0xFC, 0xF5,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x25,0x14, +0x00,0x38, 0x95,0x16, 0xFF,0x84, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCF,0x24, 0x97,0x93, 0xFF,0xFC, 0xF5,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x95,0x13, +0xFF,0xFC, 0xF5,0x04, 0x42,0x64, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x85,0x16, +0xFF,0x84, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x85,0x16, 0xFF,0x94, 0x00,0x00, +0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF7,0xC8, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xA6,0xF1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x58, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x42,0x58, 0xF7,0x04, +0x42,0x58, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x07, 0xEE,0x00, 0xA7,0x30, 0xF5,0x02, +0x17,0x70, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, 0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, +0xA7,0x50, 0xB5,0x3A, 0x68,0x02, 0xE0,0x00, 0xA7,0x50, 0xF0,0x05, 0x2D,0x38, 0x95,0x13, +0xFF,0xFC, 0xF5,0x02, 0x00,0x1B, 0x95,0x13, 0xFF,0xFC, 0xF5,0x06, 0x42,0x44, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x30, 0xF6,0x04, +0x6F,0x34, 0xF7,0x04, 0x42,0x64, 0x86,0xB2, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0xA9,0xF0, 0x07,0x30, 0x00,0x02, 0x86,0x3A, 0x00,0x00, 0xF5,0x82, +0x00,0x00, 0xF6,0x84, 0x40,0x7C, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0x30, +0x77,0xC0, 0xF7,0x04, 0x40,0x74, 0xC6,0xB4, 0x68,0x00, 0x76,0x31, 0xFF,0xF0, 0xC6,0x00, +0x62,0x00, 0x96,0x16, 0xFF,0xF4, 0xC7,0x38, 0x68,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x77,0xB4, +0x00,0x08, 0x70,0x3E, 0xFF,0xE8, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xA8,0x34, 0xF6,0x02, 0x00,0xFF, 0x83,0x16, 0xFF,0xF4, 0x83,0x96, +0xFF,0xF4, 0xF7,0x04, 0x40,0x78, 0xC6,0x98, 0x38,0x00, 0xC7,0x38, 0x68,0x00, 0x07,0x38, +0x00,0x26, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xC6,0xB4, 0x64,0x00, 0xC0,0x36, 0x5A,0x00, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xA8,0x3D, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xA8,0x75, 0xF6,0x06, +0x42,0x7C, 0xF7,0x04, 0x42,0x7C, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x78,0x9C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0xA9,0xF0, 0x00,0x00, +0x00,0x01, 0xF3,0x04, 0x42,0x60, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCC,0x60, 0x97,0x93, 0xFF,0xFC, 0xF4,0x04, 0x40,0x78, 0xF7,0x04, +0x4F,0x58, 0xF5,0x04, 0x40,0x74, 0xF3,0x84, 0x40,0x7C, 0xF3,0x04, 0x40,0x7C, 0xC6,0x20, +0x72,0x00, 0x76,0x30, 0xFF,0xFA, 0xC5,0x9C, 0x30,0x00, 0xC5,0xA8, 0x58,0x00, 0x05,0xAC, +0x00,0x26, 0x86,0xAE, 0x00,0x00, 0x74,0xAD, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x73,0xAD, +0x00,0x1E, 0x73,0x9C, 0xFF,0xE5, 0x93,0x96, 0xFF,0xD4, 0xC5,0x28, 0x72,0x00, 0x75,0x28, +0xFF,0xFA, 0x83,0x16, 0xFF,0xF4, 0x83,0x96, 0xFF,0xF4, 0x46,0x31, 0x00,0x00, 0x45,0x29, +0x00,0x00, 0xC7,0x18, 0x38,0x00, 0xC4,0x20, 0x70,0x00, 0x04,0x20, 0x00,0x26, 0x73,0x21, +0x00,0x1E, 0xC6,0xB4, 0x4F,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF4,0x82, 0x00,0xFF, 0xC6,0x30, +0x4C,0x00, 0xF3,0x82, 0xFF,0x00, 0xC6,0xB4, 0x3C,0x00, 0xC6,0x30, 0x68,0x00, 0xF6,0x2F, +0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x73,0x18, 0xFF,0xE5, 0x93,0x16, 0xFF,0xCC, 0x83,0x16, +0xFF,0xD4, 0x83,0x96, 0xFF,0xF4, 0xC5,0x28, 0x4C,0x00, 0xC7,0x38, 0x37,0xC0, 0x77,0x39, +0xFF,0xF0, 0x76,0x9D, 0x00,0x10, 0x76,0xB5, 0xFF,0xF8, 0xC7,0x38, 0x4C,0x00, 0xC6,0xB4, +0x70,0x00, 0xF6,0xAF, 0x28,0x00, 0x87,0x22, 0x00,0x00, 0x76,0xA1, 0x00,0x1E, 0x83,0x16, +0xFF,0xCC, 0xF3,0x82, 0xFF,0x00, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x37,0xC0, 0x77,0x39, +0xFF,0xF0, 0xC7,0x38, 0x3C,0x00, 0xC5,0x28, 0x70,0x00, 0xF5,0x23, 0x28,0x00, 0x87,0x22, +0x00,0x00, 0xF3,0x04, 0x40,0x7C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x73,0x19, +0x00,0x10, 0x93,0x16, 0xFF,0xEC, 0x73,0x99, 0xFF,0xF8, 0xC7,0x38, 0x4C,0x00, 0xC7,0x1C, +0x70,0x00, 0x97,0x16, 0xFF,0xDC, 0x23,0x14, 0x00,0x22, 0x83,0x1A, 0x00,0x00, 0x77,0x99, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC3,0x18, 0x7F,0xC0, 0x73,0x19, 0xFF,0xF0, 0xF3,0x23, +0x28,0x00, 0xF3,0x86, 0x42,0x44, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x1F,0x48, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, 0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0xF3,0x04, 0x40,0x74, 0x00,0x00, 0x00,0x01, 0x93,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xBE,0xF8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x98, 0xF3,0x06, +0x42,0x44, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x20,0xE4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xAE,0xE5, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x42,0x54, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEE,0x00, 0xAD,0x89, 0x27,0x38, +0x00,0x01, 0xF7,0x05, 0x42,0x54, 0x23,0x94, 0x00,0x1E, 0xF6,0x04, 0x42,0x60, 0x24,0x94, +0x00,0x66, 0x94,0x96, 0xFF,0x64, 0xF3,0x04, 0x40,0x78, 0x24,0x94, 0x00,0x20, 0x94,0x96, +0xFF,0x94, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x03,0x18, 0x00,0x02, 0x93,0x16, 0xFF,0x74, 0x74,0x19, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0x05,0x98, 0x00,0x02, 0x06,0x30, 0x00,0x02, 0x75,0x31, 0x00,0x1E, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0x28, +0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x23,0x94, +0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x85,0x16, 0xFF,0x64, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x1A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x18, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x16, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x14, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x12, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, +0x28,0x00, 0x23,0x94, 0x00,0x10, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x26,0x14, 0x00,0x68, 0xC7,0x38, +0x47,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x23,0x14, +0x00,0x64, 0x93,0x16, 0xFF,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x24,0x94, 0x00,0x62, 0x94,0x96, 0xFF,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, +0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x25,0x14, 0x00,0x60, 0x95,0x16, 0xFF,0x64, 0x05,0xAC, +0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x23,0x14, 0x00,0x5E, 0x93,0x16, +0xFF,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x24,0x94, +0x00,0x5C, 0x94,0x96, 0xFF,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x25,0x14, 0x00,0x5A, 0x95,0x16, 0xFF,0x64, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, +0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x24,0x94, 0x00,0x50, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x23,0x14, 0x00,0x58, 0x05,0xAC, +0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x93,0x16, 0xFF,0x64, 0x75,0xAD, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x96,0x13, +0xFF,0xFC, 0x94,0x96, 0xFF,0x8C, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0x8C, 0x23,0x14, 0x00,0x38, 0x95,0x13, +0xFF,0xFC, 0x27,0x80, 0x00,0x07, 0x97,0x93, 0xFF,0xFC, 0x93,0x16, 0xFF,0x84, 0x93,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCF,0x24, 0x97,0x93, 0xFF,0xFC, 0x27,0x80, +0x00,0x07, 0xF7,0x85, 0x42,0x58, 0x27,0x80, 0x00,0x07, 0x97,0x93, 0xFF,0xFC, 0xF4,0x84, +0x42,0x64, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0x84, 0x00,0x00, +0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0x93,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF7,0xC8, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xAD,0x5D, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x58, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x42,0x58, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF4,0x82, +0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0xAE,0xE4, 0xB4,0xBA, 0x68,0x02, 0xE0,0x00, +0xAE,0xE4, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x40,0x78, 0xF5,0x84, 0x4F,0x58, 0x07,0x38, +0x00,0x16, 0x86,0xBA, 0x00,0x00, 0xF4,0x06, 0x3B,0x90, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, 0xFF,0xF0, 0x76,0x35, 0x00,0x06, 0xA7,0x2E, +0x60,0x02, 0xC5,0x2C, 0x60,0x00, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x40,0x00, 0x07,0x38, +0x00,0x02, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x73,0xB7, 0xFF,0xF0, 0xEE,0x00, 0xAE,0x55, 0x95,0x16, 0xFF,0x64, 0xA7,0x2E, +0x60,0x02, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x40,0x00, 0x86,0xBA, 0x00,0x04, 0x23,0x14, +0x00,0x88, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xA6,0xAA, 0x68,0x02, 0x77,0x1D, 0x00,0x03, 0xC7,0x38, 0x68,0x00, 0x27,0x38, +0x00,0x08, 0x85,0x3A, 0x00,0x04, 0x84,0xBA, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x95,0x1A, +0x00,0x04, 0x94,0x9A, 0x00,0x00, 0x85,0x96, 0xFF,0x7C, 0xE0,0x00, 0xAE,0x78, 0x00,0x00, +0x00,0x01, 0x84,0x96, 0xFF,0x64, 0xA7,0x2E, 0x60,0x02, 0x76,0xA5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, +0x40,0x00, 0x85,0xBA, 0x00,0x04, 0x85,0x16, 0xFF,0x64, 0xF6,0x06, 0x3B,0x90, 0x87,0x2A, +0x00,0x00, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xA6,0xBA, 0x60,0x02, 0x20,0x1E, 0x00,0x00, 0xC7,0x38, +0x60,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0xEE,0x00, +0xAE,0xC9, 0x76,0xB5, 0xFF,0xF0, 0x83,0x16, 0xFF,0x78, 0x00,0x00, 0x00,0x01, 0x77,0x19, +0xFF,0xF0, 0xC6,0xB8, 0x68,0x00, 0x84,0x96, 0xFF,0x64, 0x00,0x00, 0x00,0x01, 0xC7,0x24, +0x68,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xC1,0x2C, 0x00,0x00, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x10, 0xF7,0x04, 0x40,0x84, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xAF,0x3C, 0xF6,0x06, 0x42,0xB8, 0xF7,0x04, 0x42,0xB8, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF3,0x06, 0x36,0x78, 0xF3,0x05, 0x42,0x44, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0xF7,0x04, 0x4F,0x5C, 0xF3,0x84, +0x42,0x5C, 0x83,0x3A, 0x00,0x04, 0xC4,0x38, 0x00,0x00, 0x93,0x16, 0xFF,0xEC, 0x77,0x1D, +0x00,0x01, 0xC7,0x38, 0x38,0x00, 0x77,0x39, 0x00,0x02, 0x04,0xB8, 0x00,0x0C, 0x83,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, 0x32,0x00, 0xEC,0x00, 0xB0,0x70, 0xC5,0x04, +0x00,0x00, 0xA6,0xA2, 0x48,0x02, 0xF7,0x04, 0xE0,0x00, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0xAF,0xA8, 0xC6,0x20, 0x48,0x00, 0x86,0xB2, 0x00,0x04, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xAF,0xAC, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xAF,0xB9, 0x00,0x00, +0x00,0x01, 0xF5,0x02, 0x00,0x00, 0x86,0xB2, 0x00,0x00, 0xF7,0x04, 0xE0,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xAF,0xF4, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0xAF,0xFC, 0x20,0x2E, 0x00,0x00, 0x86,0xB2, 0x00,0x04, 0xF7,0x04, +0xE0,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xAF,0xFD, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xB0,0x0D, 0x20,0x2A, +0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0xB0,0x59, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x7A,0xD0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xB0,0x64, 0xC7,0x20, 0x48,0x00, 0x87,0x3A, 0x00,0x08, 0xF6,0x06, 0x40,0x98, 0x77,0x39, +0x00,0x02, 0xA6,0xBA, 0x60,0x02, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, 0x00,0x00, 0xE6,0x00, +0xB0,0x64, 0x00,0x00, 0x00,0x01, 0x04,0xA4, 0x00,0x0C, 0xE0,0x00, 0xAF,0x60, 0x03,0x9C, +0x00,0x01, 0x83,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, 0x32,0x00, 0xEC,0x00, +0xB1,0x04, 0xF3,0x06, 0x36,0x78, 0xF6,0x84, 0x4F,0x5C, 0x77,0x1D, 0x00,0x01, 0xC7,0x38, +0x38,0x00, 0x77,0x39, 0x00,0x02, 0x07,0x38, 0x00,0x0C, 0xC6,0xB4, 0x70,0x00, 0x87,0x36, +0x00,0x08, 0xF6,0x84, 0x4F,0x58, 0x77,0x39, 0x00,0x06, 0xC6,0xB4, 0x70,0x00, 0x96,0x93, +0xFF,0xFC, 0x93,0x96, 0xFF,0xF4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xFA,0x98, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xF6,0x84, 0x42,0x6C, 0x83,0x96, 0xFF,0xF4, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0xC7,0x1C, 0x70,0x00, 0xF7,0x05, 0x42,0x5C, 0x06,0xB4, +0x00,0x01, 0xF7,0x04, 0x2D,0x38, 0xF6,0x85, 0x42,0x6C, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x1C, 0x20,0x32, +0x00,0x44, 0xE6,0x00, 0xB1,0x08, 0xB3,0x3A, 0x68,0x02, 0xE0,0x00, 0xB1,0x08, 0xF0,0x05, +0x2D,0x38, 0xF3,0x05, 0x42,0x44, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF4,0x02, 0x00,0x00, 0xC5,0xA0, 0x00,0x00, 0xF6,0x82, 0x07,0x70, 0xF7,0x04, +0x6E,0x50, 0x20,0x36, 0x00,0x00, 0xE6,0x00, 0xB1,0x6D, 0x06,0x38, 0x00,0x1C, 0x87,0x32, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC4,0x20, 0x70,0x00, 0xC0,0x22, 0x72,0x00, 0xE4,0x00, +0xB1,0x5D, 0x00,0x00, 0x00,0x01, 0x05,0xAC, 0x00,0x01, 0x26,0xB4, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0xB1,0x40, 0x06,0x30, 0x00,0x04, 0xC4,0x20, 0x58,0x00, 0xC0,0x22, +0x5A,0x00, 0xE4,0x00, 0xB1,0x81, 0x00,0x00, 0x00,0x01, 0x04,0x20, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x78,0xD8, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xB1,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF7,0x04, 0x40,0x94, 0x00,0x00, 0x00,0x01, 0xC0,0x22, 0x72,0x00, 0xE6,0x00, +0xB1,0xED, 0xF4,0x05, 0x40,0x90, 0xF7,0x04, 0x6E,0x50, 0x00,0x00, 0x00,0x01, 0x86,0xBA, +0x1D,0xDC, 0xF5,0x82, 0x00,0x01, 0x06,0xB4, 0x00,0x01, 0x96,0xBA, 0x1D,0xDC, 0x87,0x3A, +0x1D,0xDC, 0xE0,0x00, 0xB1,0xF0, 0xF5,0x85, 0x7A,0xD0, 0xF0,0x05, 0x7A,0xD0, 0xF5,0x84, +0x40,0x90, 0xF0,0x05, 0x40,0x84, 0xF5,0x85, 0x40,0x94, 0xF5,0x86, 0xE0,0x00, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD5,0xA0, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, +0x6E,0x50, 0xF4,0x05, 0x40,0x84, 0x85,0xBA, 0x1D,0xDC, 0x00,0x00, 0x00,0x01, 0xF5,0x85, +0x3B,0x64, 0xF5,0x84, 0xE0,0x00, 0xF0,0x05, 0x42,0x5C, 0x95,0xBA, 0x00,0x10, 0xF5,0x84, +0xE0,0x04, 0xF6,0x86, 0x2C,0x28, 0x95,0xBA, 0x00,0x14, 0xF7,0x04, 0x2D,0x38, 0xF5,0x86, +0x3A,0x4C, 0xF5,0x85, 0x42,0x44, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0xF5,0x82, 0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0xB2,0x68, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x86, 0x35,0xEC, 0xF5,0x85, 0x42,0x30, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0xC8, 0xF3,0x02, +0x00,0x00, 0x93,0x16, 0xFF,0x94, 0x24,0x80, 0x00,0x08, 0x94,0x96, 0xFF,0x84, 0x23,0x80, +0x00,0x07, 0x83,0x16, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0x93,0x16, 0xFF,0x54, 0x20,0x1E, +0x00,0x07, 0xEE,0x00, 0xB5,0x64, 0xC7,0x1C, 0x38,0x00, 0x84,0x96, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC7,0x24, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, 0x00,0x00, 0xF5,0x84, +0x4F,0x58, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB6, 0x74,0x00, 0xE6,0x00, 0xB3,0x2D, 0x20,0x36, +0x00,0x01, 0xE6,0x00, 0xB3,0x2D, 0x77,0x35, 0x00,0x06, 0xA6,0xBA, 0x58,0x02, 0xC7,0x38, +0x58,0x00, 0x76,0x39, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC6,0xB4, 0x67,0xC0, 0x76,0xB5, +0xFF,0xF0, 0x20,0x36, 0x00,0x02, 0xE6,0x00, 0xB3,0x31, 0xC6,0xB8, 0x00,0x00, 0xC7,0x2C, +0x00,0x00, 0xE0,0x00, 0xB3,0x30, 0xC6,0xB8, 0x00,0x00, 0xF6,0x84, 0x4F,0x58, 0xF7,0x04, +0x4F,0x58, 0xC5,0x34, 0x00,0x00, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, 0xB5,0x5D, 0x00,0x00, +0x00,0x01, 0xF6,0x84, 0x3B,0xBC, 0xF3,0x02, 0x00,0x00, 0x93,0x16, 0xFF,0x3C, 0x04,0x28, +0x00,0x1C, 0xF7,0x04, 0x3B,0xB8, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x00, +0xB4,0x40, 0x96,0x96, 0xFF,0xAC, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, +0x00,0x02, 0xF4,0x86, 0x3B,0xB4, 0xC6,0x38, 0x48,0x00, 0x06,0x30, 0x00,0x0C, 0xC3,0x04, +0x00,0x00, 0x93,0x16, 0xFF,0x34, 0x86,0xB2, 0x00,0x00, 0x87,0x2A, 0x00,0x1C, 0x85,0x96, +0xFF,0x3C, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xB3,0xC0, 0x20,0x2E, 0x00,0x00, 0x86,0xB2, +0x00,0x04, 0x87,0x2A, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xB3,0xC0, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0xB3,0xD1, 0x00,0x00, 0x00,0x01, 0xF4,0x82, 0x00,0x00, 0x94,0x96, 0xFF,0x34, 0x86,0xB2, +0x00,0x00, 0x87,0x22, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0xB4,0x0C, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xB4,0x14, 0x20,0x2E, +0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x22, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0xB4,0x15, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0xB4,0x25, 0x00,0x00, 0x00,0x01, 0xF3,0x02, 0x00,0x01, 0x93,0x16, +0xFF,0x34, 0x84,0x96, 0xFF,0x34, 0x00,0x00, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, +0xB4,0x40, 0x00,0x00, 0x00,0x01, 0xF3,0x02, 0x00,0x01, 0x93,0x16, 0xFF,0x3C, 0x84,0x96, +0xFF,0x3C, 0x00,0x00, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0xB4,0x81, 0xF6,0x02, +0x00,0x01, 0x87,0x16, 0xFF,0xAC, 0xF3,0x06, 0x3B,0xB4, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, +0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, +0x00,0x00, 0x97,0x16, 0xFF,0xB0, 0xE0,0x00, 0xB4,0xF4, 0x96,0x96, 0xFF,0xB4, 0x27,0x14, +0x00,0x54, 0x97,0x13, 0xFF,0xFC, 0x94,0x13, 0xFF,0xFC, 0xF4,0x86, 0x3B,0xB4, 0x94,0x93, +0xFF,0xFC, 0x93,0x96, 0xFF,0x4C, 0x95,0x16, 0xFF,0x44, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0x85,0x16, 0xFF,0x44, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xB4,0xF1, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xAC, 0xF3,0x06, +0x3B,0xB4, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xB0, 0x96,0x96, +0xFF,0xB4, 0xF7,0x05, 0x3B,0xBC, 0xE0,0x00, 0xB4,0xF8, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0xB5,0x2D, 0x27,0x14, 0x00,0x08, 0x84,0x96, +0xFF,0x54, 0x00,0x00, 0x00,0x01, 0xC7,0x24, 0x70,0x00, 0x83,0x16, 0xFF,0xB4, 0x04,0xA4, +0x00,0x04, 0x94,0x96, 0xFF,0x54, 0x84,0x96, 0xFF,0x94, 0x93,0x3A, 0xFF,0xC0, 0x04,0xA4, +0x00,0x01, 0xE0,0x00, 0xB5,0x54, 0x94,0x96, 0xFF,0x94, 0x83,0x16, 0xFF,0x54, 0x00,0x00, +0x00,0x01, 0xC7,0x18, 0x70,0x00, 0xF4,0x84, 0x4F,0x58, 0x03,0x18, 0x00,0x04, 0x93,0x16, +0xFF,0x54, 0x83,0x16, 0xFF,0x94, 0x94,0xBA, 0xFF,0xC0, 0x03,0x18, 0x00,0x01, 0x93,0x16, +0xFF,0x94, 0x95,0x16, 0xFF,0x3C, 0x93,0x96, 0xFF,0x8C, 0xE0,0x00, 0xB2,0xB0, 0x03,0x9C, +0x00,0x01, 0x84,0x96, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, +0xB5,0x84, 0xF3,0x82, 0x00,0x01, 0xF4,0x04, 0x4F,0x58, 0xE0,0x00, 0xBE,0xE4, 0x00,0x00, +0x00,0x01, 0x83,0x16, 0xFF,0xB8, 0x84,0x96, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, +0x4A,0x00, 0xEC,0x00, 0xB5,0xCC, 0x93,0x16, 0xFF,0x7C, 0x26,0x94, 0x00,0x04, 0x87,0x36, +0xFF,0xC0, 0x83,0x16, 0xFF,0x7C, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, +0xBB,0x98, 0x03,0x9C, 0x00,0x01, 0x84,0x96, 0xFF,0x94, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, +0x4A,0x00, 0xEC,0x00, 0xB5,0xA1, 0x06,0xB4, 0x00,0x04, 0xF4,0x04, 0x4F,0x58, 0x83,0x16, +0xFF,0x7C, 0x00,0x00, 0x00,0x01, 0xC0,0x1A, 0x42,0x00, 0xE6,0x00, 0xBA,0x2D, 0xF4,0x82, +0x00,0x00, 0x94,0x96, 0xFF,0x74, 0x23,0x80, 0x00,0x07, 0x20,0x1E, 0x00,0x07, 0xEE,0x00, +0xB7,0x48, 0xC7,0x1C, 0x38,0x00, 0x83,0x16, 0xFF,0x7C, 0x00,0x00, 0x00,0x01, 0xC7,0x18, +0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, 0x00,0x00, 0xF5,0x84, 0x4F,0x58, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, +0x00,0xFF, 0xC6,0xB6, 0x74,0x00, 0xE6,0x00, 0xB6,0x69, 0x20,0x36, 0x00,0x01, 0xE6,0x00, +0xB6,0x69, 0x77,0x35, 0x00,0x06, 0xA6,0xBA, 0x58,0x02, 0xC7,0x38, 0x58,0x00, 0x76,0x39, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC6,0xB4, 0x67,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, +0x00,0x02, 0xE6,0x00, 0xB6,0x6D, 0xC6,0xB8, 0x00,0x00, 0xC7,0x2C, 0x00,0x00, 0xE0,0x00, +0xB6,0x6C, 0xC6,0xB8, 0x00,0x00, 0xF6,0x84, 0x4F,0x58, 0xF7,0x04, 0x4F,0x58, 0xC5,0x34, +0x00,0x00, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, 0xB7,0x41, 0xC5,0x84, 0x00,0x00, 0x84,0x96, +0xFF,0x74, 0x86,0xAA, 0x00,0x1C, 0x83,0x16, 0xFF,0x3C, 0xF6,0x02, 0x00,0x00, 0x04,0xA4, +0x00,0x01, 0x94,0x96, 0xFF,0x74, 0x87,0x1A, 0x00,0x1C, 0x04,0xA8, 0x00,0x1C, 0x94,0x96, +0xFF,0x34, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xB6,0xCC, 0x04,0x18, 0x00,0x1C, 0x86,0xAA, +0x00,0x20, 0x87,0x1A, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xB6,0xD0, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0xB6,0xDD, 0x00,0x00, 0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x83,0x16, 0xFF,0x34, 0x87,0x22, +0x00,0x00, 0x86,0x9A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0xB7,0x1C, 0xF6,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xB7,0x24, 0x20,0x32, +0x00,0x00, 0x86,0x9A, 0x00,0x04, 0x87,0x22, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0xB7,0x25, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0xB7,0x35, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0xB7,0x40, 0x00,0x00, 0x00,0x01, 0x93,0x96, 0xFF,0x84, 0xE0,0x00, +0xB5,0xEC, 0x03,0x9C, 0x00,0x01, 0x84,0x96, 0xFF,0x74, 0x83,0x16, 0xFF,0x94, 0x00,0x00, +0x00,0x01, 0xC0,0x26, 0x32,0x00, 0xE6,0x00, 0xBB,0x98, 0x23,0x00, 0x00,0x08, 0x84,0x96, +0xFF,0x84, 0x00,0x00, 0x00,0x01, 0xC0,0x26, 0x32,0x00, 0xE6,0x00, 0xBB,0x99, 0xF6,0x02, +0x00,0x00, 0xF6,0x84, 0x40,0x7C, 0xF7,0x04, 0x40,0x74, 0xC6,0xB4, 0x68,0x00, 0xC7,0x38, +0x68,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x77,0xB4, 0x00,0x08, 0x70,0x3E, 0xFF,0xE8, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xB8,0x04, 0xF5,0x82, +0x00,0xFF, 0x84,0x96, 0xFF,0x84, 0x83,0x16, 0xFF,0x8C, 0x00,0x00, 0x00,0x01, 0xC7,0x24, +0x32,0x00, 0x84,0x96, 0xFF,0x7C, 0xC7,0x38, 0x70,0x00, 0xC7,0x24, 0x70,0x00, 0x07,0x38, +0x00,0x26, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xC6,0xB4, 0x5C,0x00, 0xC0,0x36, 0x62,0x00, 0x47,0x0C, +0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xB8,0x0D, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0xBB,0x98, 0x23,0x80, +0x00,0x07, 0x20,0x1E, 0x00,0x07, 0xEE,0x00, 0xB8,0xC8, 0xC7,0x1C, 0x38,0x00, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC7,0x18, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, +0x00,0x00, 0xF5,0x84, 0x4F,0x58, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB6, 0x74,0x00, 0xE6,0x00, +0xB8,0x91, 0x20,0x36, 0x00,0x01, 0xE6,0x00, 0xB8,0x91, 0x77,0x35, 0x00,0x06, 0xA6,0xBA, +0x58,0x02, 0xC7,0x38, 0x58,0x00, 0x76,0x39, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC6,0xB4, +0x67,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, 0x00,0x02, 0xE6,0x00, 0xB8,0x95, 0xC6,0xB8, +0x00,0x00, 0xC7,0x2C, 0x00,0x00, 0xE0,0x00, 0xB8,0x94, 0xC6,0xB8, 0x00,0x00, 0xF6,0x84, +0x4F,0x58, 0xF7,0x04, 0x4F,0x58, 0xC5,0x34, 0x00,0x00, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, +0xB8,0xC1, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x93,0x96, 0xFF,0x4C, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCC,0x60, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0xE0,0x00, +0xB8,0x14, 0x03,0x9C, 0x00,0x01, 0x84,0x96, 0xFF,0x84, 0x83,0x16, 0xFF,0x8C, 0xF3,0x84, +0x40,0x7C, 0xF5,0x04, 0x40,0x74, 0xC4,0xA4, 0x32,0x00, 0x94,0x96, 0xFF,0x34, 0x83,0x16, +0xFF,0x34, 0xC5,0x9C, 0x38,0x00, 0xC5,0xA8, 0x58,0x00, 0x05,0xAC, 0x00,0x26, 0x86,0xAE, +0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x74,0x2D, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0x73,0x9D, 0x00,0x10, 0x73,0x9D, 0xFF,0xF8, 0xC4,0xA4, 0x30,0x00, 0x94,0x96, +0xFF,0x3C, 0x83,0x16, 0xFF,0x7C, 0xC6,0xB4, 0x77,0xC0, 0xC4,0x98, 0x48,0x00, 0x94,0x96, +0xFF,0x3C, 0x04,0xA4, 0x00,0x26, 0x94,0x96, 0xFF,0x3C, 0x73,0x25, 0x00,0x1E, 0x73,0x18, +0xFF,0xE5, 0x93,0x16, 0xFF,0x6C, 0x74,0xA5, 0x00,0x1E, 0x94,0x96, 0xFF,0x64, 0x74,0xA4, +0xFF,0xE5, 0x94,0x96, 0xFF,0x64, 0x83,0x16, 0xFF,0x7C, 0xF4,0x84, 0x4F,0x58, 0x76,0xB5, +0xFF,0xF0, 0xC6,0x18, 0x4A,0x00, 0x76,0x30, 0xFF,0xFA, 0x46,0x31, 0x00,0x00, 0xF3,0x02, +0x00,0xFF, 0xC6,0x30, 0x34,0x00, 0xF4,0x82, 0xFF,0x00, 0xC6,0xB4, 0x4C,0x00, 0xC6,0x30, +0x68,0x00, 0xF6,0x2F, 0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x83,0x16, 0xFF,0x34, 0xC7,0x38, +0x47,0xC0, 0x77,0x39, 0xFF,0xF0, 0x73,0x19, 0x00,0x10, 0x93,0x16, 0xFF,0x34, 0x74,0x99, +0xFF,0xF8, 0xF3,0x02, 0x00,0xFF, 0xC7,0x38, 0x34,0x00, 0xC7,0x24, 0x70,0x00, 0x97,0x16, +0xFF,0x34, 0x24,0x94, 0x00,0xCA, 0x84,0xA6, 0x00,0x00, 0x77,0xA5, 0x00,0x1E, 0x77,0xBC, +0xFF,0xE5, 0xC4,0xA4, 0x7F,0xC0, 0x74,0xA5, 0xFF,0xF0, 0x83,0x16, 0xFF,0x3C, 0xF4,0xAF, +0x28,0x00, 0xF4,0x84, 0x4F,0x58, 0x87,0x1A, 0x00,0x00, 0xC5,0x28, 0x4A,0x00, 0x75,0x28, +0xFF,0xFA, 0x83,0x16, 0xFF,0x6C, 0x45,0x29, 0x00,0x00, 0xF4,0x82, 0x00,0xFF, 0xC5,0x28, +0x4C,0x00, 0x84,0x96, 0xFF,0x3C, 0xC7,0x38, 0x37,0xC0, 0x77,0x39, 0xFF,0xF0, 0xF3,0x02, +0xFF,0x00, 0xC7,0x38, 0x34,0x00, 0xC5,0x28, 0x70,0x00, 0xF5,0x27, 0x28,0x00, 0x87,0x26, +0x00,0x00, 0x83,0x16, 0xFF,0x64, 0x84,0x16, 0xFF,0x7C, 0xC7,0x38, 0x37,0xC0, 0x77,0x39, +0xFF,0xF0, 0xF4,0x82, 0x00,0xFF, 0xC7,0x38, 0x4C,0x00, 0x83,0x16, 0xFF,0x3C, 0xC3,0x9C, +0x70,0x00, 0xE0,0x00, 0xBE,0xE4, 0xF3,0x9B, 0x28,0x00, 0xF7,0x04, 0x40,0x7C, 0xF6,0x04, +0x40,0x74, 0xC7,0x38, 0x70,0x00, 0xC7,0x30, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x77,0xB4, +0x00,0x08, 0x70,0x3E, 0xFF,0xE8, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xBA,0x7D, 0x25,0x80, 0x00,0x07, 0xE0,0x00, 0xBE,0xE4, 0x04,0x20, +0x00,0x40, 0xE0,0x00, 0xBA,0xD8, 0xC4,0x2C, 0x00,0x00, 0xC7,0x30, 0x42,0x00, 0x84,0x96, +0x00,0x00, 0x75,0x38, 0xFF,0xFA, 0x06,0x24, 0x00,0x0A, 0x20,0x2E, 0x00,0x07, 0xEE,0x00, +0xBA,0xD4, 0x07,0x30, 0x00,0x0E, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB4, +0x74,0x00, 0x47,0x29, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xBA,0x74, 0x06,0x30, 0x00,0x02, 0xE0,0x00, 0xBA,0x8C, 0x05,0xAC, +0x00,0x01, 0xF4,0x02, 0x00,0x08, 0x07,0x20, 0x00,0x07, 0x20,0x3A, 0x00,0x0E, 0xE2,0x00, +0xBB,0xA4, 0xC5,0xA0, 0x40,0x00, 0x83,0x16, 0x00,0x00, 0xF5,0x04, 0x40,0x7C, 0xF4,0x82, +0x00,0xFF, 0xF6,0x04, 0x4F,0x58, 0xC5,0x98, 0x58,0x00, 0x05,0xAC, 0x00,0x26, 0x86,0xAE, +0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0x18, 0x62,0x00, 0x76,0x30, +0xFF,0xFA, 0x46,0x31, 0x00,0x00, 0xC6,0x30, 0x4C,0x00, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0x77,0x29, 0x00,0x10, 0x77,0x39, 0xFF,0xF8, 0xC6,0xB4, 0x4C,0x00, 0xC7,0x38, +0x68,0x00, 0xF7,0x2F, 0x28,0x00, 0xF5,0x84, 0x40,0x74, 0xC5,0x28, 0x50,0x00, 0xC5,0xAC, +0x50,0x00, 0x05,0xAC, 0x00,0x26, 0x86,0xAE, 0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0x75,0x2D, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xF7,0x02, 0xFF,0x00, 0xC6,0xB4, 0x74,0x00, 0xC6,0x30, 0x68,0x00, 0xF6,0x2F, +0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x76,0xA1, 0x00,0x10, 0x76,0xB5, 0xFF,0xF8, 0xC7,0x38, +0x57,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, 0x4C,0x00, 0xC6,0xB4, 0x70,0x00, 0xE0,0x00, +0xBB,0xF8, 0xF6,0xAF, 0x28,0x00, 0xF4,0x04, 0x4F,0x58, 0xE0,0x00, 0xBE,0xE4, 0x04,0x20, +0x00,0x40, 0xF6,0x04, 0x4F,0x58, 0x83,0x16, 0x00,0x00, 0xF7,0x04, 0x40,0x7C, 0xF5,0x84, +0x40,0x74, 0xC6,0x18, 0x62,0x00, 0x76,0x30, 0xFF,0xFA, 0xC7,0x38, 0x70,0x00, 0xC5,0xAC, +0x70,0x00, 0x05,0xAC, 0x00,0x26, 0x86,0xAE, 0x00,0x00, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0x46,0x31, 0x00,0x00, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, +0x00,0xFF, 0xC6,0x30, 0x74,0x00, 0xF7,0x02, 0xFF,0x00, 0xC6,0xB4, 0x74,0x00, 0xC6,0x30, +0x68,0x00, 0xF6,0x2F, 0x28,0x00, 0x23,0x80, 0x00,0x07, 0x20,0x1E, 0x00,0x07, 0xEE,0x00, +0xBE,0xE0, 0xC7,0x1C, 0x38,0x00, 0x84,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC7,0x24, +0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, 0x00,0x00, 0xF5,0x84, 0x4F,0x58, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, +0x00,0xFF, 0xC6,0xB6, 0x74,0x00, 0xE6,0x00, 0xBC,0x79, 0x20,0x36, 0x00,0x01, 0xE6,0x00, +0xBC,0x79, 0x77,0x35, 0x00,0x06, 0xA6,0xBA, 0x58,0x02, 0xC7,0x38, 0x58,0x00, 0x76,0x39, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC6,0xB4, 0x67,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, +0x00,0x02, 0xE6,0x00, 0xBC,0x7D, 0xC6,0xB8, 0x00,0x00, 0xC7,0x2C, 0x00,0x00, 0xE0,0x00, +0xBC,0x7C, 0xC6,0xB8, 0x00,0x00, 0xF6,0x84, 0x4F,0x58, 0xF7,0x04, 0x4F,0x58, 0xC5,0x34, +0x00,0x00, 0xC0,0x2A, 0x72,0x00, 0xE6,0x00, 0xBE,0xD9, 0x06,0xA8, 0x00,0x1C, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x96,0x93, 0xFF,0xFC, 0xF4,0x86, +0x3B,0xB4, 0x94,0x93, 0xFF,0xFC, 0x93,0x96, 0xFF,0x4C, 0x95,0x16, 0xFF,0x44, 0x96,0x96, +0xFF,0x40, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, 0xFF,0xFC, 0xF3,0x04, +0x4F,0x5C, 0xF4,0x82, 0x00,0x00, 0x94,0x96, 0xFF,0x5C, 0x86,0x96, 0xFF,0x40, 0x83,0x96, +0xFF,0x4C, 0x85,0x16, 0xFF,0x44, 0x93,0x16, 0xFF,0x34, 0x86,0x1A, 0x00,0x08, 0x96,0x96, +0xFF,0x3C, 0x87,0x1A, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x72,0x00, 0xEC,0x00, +0xBD,0xB8, 0x96,0x16, 0xFF,0x9C, 0x77,0x31, 0x00,0x01, 0xC7,0x38, 0x60,0x00, 0x77,0x39, +0x00,0x02, 0xC6,0x38, 0x30,0x00, 0x06,0x30, 0x00,0x0C, 0x86,0xB2, 0x00,0x00, 0x87,0x2A, +0x00,0x1C, 0x85,0x96, 0xFF,0x5C, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xBD,0x40, 0xC4,0x04, +0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x2A, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0xBD,0x44, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, +0x00,0x00, 0xE6,0x00, 0xBD,0x51, 0x00,0x00, 0x00,0x01, 0xF4,0x02, 0x00,0x00, 0x83,0x16, +0xFF,0x3C, 0x86,0xB2, 0x00,0x00, 0x87,0x1A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0xBD,0x90, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xBD,0x98, 0x20,0x2E, 0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x1A, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xBD,0x99, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xBD,0xA9, 0x20,0x22, 0x00,0x00, 0xF4,0x02, +0x00,0x01, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xBD,0xB8, 0x00,0x00, 0x00,0x01, 0xF4,0x82, +0x00,0x01, 0x94,0x96, 0xFF,0x5C, 0x83,0x16, 0xFF,0x5C, 0x00,0x00, 0x00,0x01, 0x20,0x1A, +0x00,0x00, 0xE6,0x00, 0xBD,0xF9, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0x9C, 0x84,0x96, +0xFF,0x34, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x48,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xA0, 0xE0,0x00, +0xBE,0x70, 0x96,0x96, 0xFF,0xA4, 0x27,0x14, 0x00,0x64, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, +0xFF,0x3C, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x84,0x96, 0xFF,0x34, 0x00,0x00, +0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x93,0x96, 0xFF,0x4C, 0x95,0x16, 0xFF,0x44, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0x85,0x16, +0xFF,0x44, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xBE,0x71, 0xF6,0x02, 0x00,0x00, 0x87,0x16, +0xFF,0x9C, 0x83,0x16, 0xFF,0x34, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xA0, 0x96,0x96, 0xFF,0xA4, 0x97,0x1A, 0x00,0x08, 0xF6,0x02, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0xBE,0x99, 0xF6,0x06, 0x42,0x9C, 0xF7,0x04, 0x42,0x9C, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0xF7,0x04, 0x4F,0x58, 0x00,0x00, 0x00,0x01, 0xC7,0x28, +0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0x47,0x39, 0x00,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x28, +0x00,0x1C, 0x97,0x13, 0xFF,0xFC, 0xF4,0x84, 0x4F,0x5C, 0x00,0x00, 0x00,0x01, 0x94,0x93, +0xFF,0xFC, 0x93,0x96, 0xFF,0x4C, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x23,0x40, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFF,0x4C, 0xE0,0x00, 0xBB,0xFC, 0x03,0x9C, 0x00,0x01, 0x84,0x16, +0x00,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x60, 0x85,0x16, 0x00,0x00, 0x86,0x16, 0x00,0x04, 0x06,0xA8, 0x00,0x18, 0xC7,0x30, +0x60,0x00, 0xC5,0xB8, 0x68,0x00, 0x20,0x32, 0x00,0x07, 0xEE,0x00, 0xBF,0x64, 0x07,0x2C, +0x00,0x0E, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB4, 0x74,0x00, 0x20,0x36, +0x00,0x00, 0x47,0x0C, 0x00,0x01, 0xD7,0x00, 0x0A,0x70, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xBF,0x61, 0x05,0xAC, 0x00,0x02, 0xE0,0x00, 0xBF,0x18, 0x06,0x30, 0x00,0x01, 0x20,0x32, +0x00,0x07, 0xEE,0x00, 0xC0,0x4C, 0x06,0xA8, 0x00,0x16, 0xF5,0x05, 0x40,0x74, 0xF6,0x05, +0x40,0x7C, 0xF3,0x02, 0x00,0x06, 0xF3,0x05, 0x42,0x54, 0x96,0x13, 0xFF,0xFC, 0x05,0x28, +0x00,0x02, 0x95,0x16, 0xFF,0xC4, 0x95,0x13, 0xFF,0xFC, 0x23,0x94, 0x00,0x20, 0x93,0x96, +0xFF,0xBC, 0x93,0x93, 0xFF,0xFC, 0x96,0x16, 0xFF,0xAC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x84,0x96, 0xFF,0xC4, 0x23,0x14, 0x00,0x38, 0x94,0x93, +0xFF,0xFC, 0x93,0x16, 0xFF,0xB4, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x87,0x02, 0xFF,0x34, 0x86,0x16, 0xFF,0xAC, 0xF7,0x05, +0x42,0x64, 0x96,0x13, 0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0xB4, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x84,0x96, 0xFF,0xBC, 0x00,0x00, 0x00,0x01, 0x94,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF7,0xC8, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xC0,0x1D, 0xF3,0x06, 0x3A,0xD8, 0xF7,0x04, 0x42,0x54, 0x00,0x00, +0x00,0x01, 0x27,0x38, 0x00,0x01, 0xF7,0x05, 0x42,0x54, 0xF3,0x05, 0x42,0x44, 0xF3,0x82, +0x17,0x70, 0x93,0x93, 0xFF,0xFC, 0xF4,0x82, 0x00,0x1B, 0x94,0x93, 0xFF,0xFC, 0xF3,0x06, +0x42,0x44, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0xC1,0xA0, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0xF5,0x84, +0x4F,0x58, 0xF4,0x06, 0x3B,0x70, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x76,0x39, 0x00,0x06, 0xA7,0x2E, 0x60,0x02, 0xC5,0x2C, +0x60,0x00, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x40,0x00, 0x07,0x38, 0x00,0x02, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB7, +0xFF,0xF0, 0xEE,0x00, 0xC1,0x15, 0x96,0x96, 0xFF,0x9C, 0xA7,0x2E, 0x60,0x02, 0x76,0xA9, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x83,0x96, 0xFF,0x9C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x40,0x00, 0x86,0xBA, 0x00,0x04, 0x24,0x94, +0x00,0x60, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xA6,0xAA, 0x68,0x02, 0x77,0x1D, 0x00,0x03, 0xC7,0x38, 0x68,0x00, 0x27,0x38, +0x00,0x08, 0x83,0xBA, 0x00,0x04, 0x83,0x3A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x93,0xA6, +0x00,0x04, 0x93,0x26, 0x00,0x00, 0x85,0x96, 0xFF,0xA4, 0xE0,0x00, 0xC1,0x38, 0x23,0x00, +0x00,0x07, 0xA7,0x2E, 0x60,0x02, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x40,0x00, 0x85,0xBA, +0x00,0x04, 0x23,0x00, 0x00,0x07, 0x93,0x13, 0xFF,0xFC, 0x87,0x2A, 0x00,0x00, 0x76,0xA9, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x83,0x96, 0xFF,0x9C, 0xF6,0x06, 0x3B,0x70, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xA6,0xBA, 0x60,0x02, 0x20,0x1E, +0x00,0x00, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0xEE,0x00, 0xC1,0x8D, 0x76,0xB5, 0xFF,0xF0, 0x84,0x96, 0xFF,0xA0, 0x00,0x00, +0x00,0x01, 0x77,0x25, 0xFF,0xF0, 0xC6,0xB8, 0x68,0x00, 0xC7,0x28, 0x68,0x00, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xC1,0x2C, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x70, 0x25,0x00, +0x00,0x07, 0x20,0x2A, 0x00,0x07, 0xEE,0x00, 0xC3,0xB8, 0xC7,0x28, 0x50,0x00, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC7,0x18, 0x70,0x00, 0x07,0x38, 0x00,0x26, 0x86,0xBA, +0x00,0x00, 0xF5,0x84, 0x4F,0x58, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB6, 0x74,0x00, 0xE6,0x00, +0xC2,0x3D, 0x20,0x36, 0x00,0x01, 0xE6,0x00, 0xC2,0x3D, 0x77,0x35, 0x00,0x06, 0xA6,0xBA, +0x58,0x02, 0xC7,0x38, 0x58,0x00, 0x76,0x39, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC6,0xB4, +0x67,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, 0x00,0x02, 0xE6,0x00, 0xC2,0x4D, 0xC0,0x3A, +0x5A,0x00, 0xE0,0x00, 0xC2,0x48, 0xC7,0x2C, 0x00,0x00, 0xF7,0x04, 0x4F,0x58, 0xF5,0x84, +0x4F,0x58, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x5A,0x00, 0xE6,0x00, 0xC3,0xB1, 0xF4,0x86, +0x3B,0x90, 0x83,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x06,0x9C, 0x00,0x16, 0x87,0x36, +0x00,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0x76,0x39, 0x00,0x06, 0xA7,0x2E, 0x60,0x02, 0xC5,0x2C, 0x60,0x00, 0x76,0xA9, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xC7,0x38, 0x48,0x00, 0x07,0x38, 0x00,0x02, 0x86,0xBA, 0x00,0x00, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB7, 0xFF,0xF0, 0xEE,0x00, +0xC3,0x21, 0x96,0x96, 0xFF,0x8C, 0xA7,0x2E, 0x60,0x02, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x83,0x16, 0xFF,0x8C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xC7,0x38, 0x48,0x00, 0x86,0xBA, 0x00,0x04, 0x24,0x94, 0x00,0x70, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xA6,0xAA, +0x68,0x02, 0x77,0x19, 0x00,0x03, 0xC7,0x38, 0x68,0x00, 0x27,0x38, 0x00,0x08, 0x83,0xBA, +0x00,0x04, 0x83,0x3A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x93,0xA6, 0x00,0x04, 0x93,0x26, +0x00,0x00, 0x86,0x16, 0xFF,0x94, 0xE0,0x00, 0xC3,0x44, 0x00,0x00, 0x00,0x01, 0xA7,0x2E, +0x60,0x02, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF3,0x06, 0x3B,0x90, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x30,0x00, 0x86,0x3A, +0x00,0x04, 0x87,0x2A, 0x00,0x00, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x83,0x96, +0xFF,0x8C, 0xF4,0x86, 0x3B,0x90, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xA6,0xBA, 0x48,0x02, 0x20,0x1E, 0x00,0x00, 0xC7,0x38, 0x48,0x00, 0x77,0x39, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0xEE,0x00, 0xC3,0x95, 0x76,0xB5, +0xFF,0xF0, 0x83,0x16, 0xFF,0x90, 0x00,0x00, 0x00,0x01, 0x77,0x19, 0xFF,0xF0, 0xC6,0xB8, +0x68,0x00, 0xC7,0x28, 0x68,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xC1,0x30, +0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0xC5,0xC4, 0x00,0x00, 0x00,0x01, 0xE0,0x00, +0xC1,0xC4, 0x05,0x28, 0x00,0x01, 0x83,0x96, 0x00,0x00, 0xF4,0x82, 0x00,0x06, 0xF4,0x85, +0x42,0x54, 0xF6,0x04, 0x42,0x60, 0x25,0x14, 0x00,0x1E, 0x23,0x14, 0x00,0x20, 0x93,0x16, +0xFF,0xAC, 0xF3,0x85, 0x40,0x78, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x1A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x18, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x16, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x14, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, +0x00,0x12, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x25,0x14, 0x00,0x10, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x07,0x1C, +0x00,0x02, 0x97,0x13, 0xFF,0xFC, 0x23,0x94, 0x00,0x50, 0x93,0x96, 0xFF,0xA4, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD2,0x58, 0x97,0x93, 0xFF,0xFC, 0x84,0x96, +0xFF,0xA4, 0x23,0x14, 0x00,0x38, 0x94,0x93, 0xFF,0xFC, 0x27,0x80, 0x00,0x07, 0x97,0x93, +0xFF,0xFC, 0x93,0x16, 0xFF,0x9C, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCF,0x24, 0x97,0x93, 0xFF,0xFC, 0x87,0x02, 0xFF,0x34, 0x27,0x80, 0x00,0x07, 0xF7,0x85, +0x42,0x58, 0xF7,0x05, 0x42,0x64, 0x27,0x80, 0x00,0x07, 0x97,0x93, 0xFF,0xFC, 0x97,0x13, +0xFF,0xFC, 0x83,0x96, 0xFF,0x9C, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x84,0x96, +0xFF,0xAC, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xF5,0xF4, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xC5,0x95, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x42,0x58, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x42,0x58, 0xF7,0x04, 0x2D,0x38, 0xF3,0x06, 0x39,0xC0, 0xF3,0x05, 0x42,0x44, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x82, +0x00,0x1C, 0x20,0x32, 0x00,0x44, 0xE6,0x00, 0xC5,0xC4, 0xB3,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x25,0x00, +0x00,0x07, 0xF7,0x04, 0x40,0x74, 0xF6,0x84, 0x4F,0x58, 0xF6,0x04, 0x42,0x60, 0xC7,0x38, +0x6A,0x00, 0x75,0xB8, 0xFF,0xFA, 0x06,0x30, 0x00,0x0A, 0x20,0x2A, 0x00,0x07, 0xEE,0x00, +0xC6,0x48, 0x07,0x30, 0x00,0x0E, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB4, +0x74,0x00, 0x47,0x2D, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xC6,0x4C, 0xC3,0x28, 0x00,0x00, 0x06,0x30, 0x00,0x02, 0xE0,0x00, +0xC5,0xFC, 0x05,0x28, 0x00,0x01, 0xF3,0x02, 0x00,0x08, 0xC5,0x18, 0x30,0x00, 0xF3,0x84, +0x42,0x60, 0xF6,0x04, 0x4F,0x58, 0xF7,0x04, 0x40,0x7C, 0xF4,0x84, 0x40,0x74, 0xC5,0x1C, +0x50,0x00, 0x05,0x28, 0x00,0x26, 0x85,0xAA, 0x00,0x00, 0x74,0x29, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0xC6,0x1C, 0x62,0x00, 0x76,0x30, 0xFF,0xFA, 0xC6,0xB8, 0x70,0x00, 0xC4,0xA4, +0x68,0x00, 0x04,0xA4, 0x00,0x26, 0x76,0xA5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x77,0x39, +0x00,0x10, 0x77,0x39, 0xFF,0xF8, 0x46,0x31, 0x00,0x00, 0xC5,0xAC, 0x47,0xC0, 0x75,0xAD, +0xFF,0xF0, 0xF4,0x02, 0x00,0xFF, 0xC5,0xAC, 0x44,0x00, 0xC7,0x38, 0x58,0x00, 0xF7,0x2B, +0x28,0x00, 0x87,0x26, 0x00,0x00, 0x75,0xA5, 0x00,0x1E, 0xC6,0x30, 0x44,0x00, 0x75,0xAC, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xF6,0x82, 0xFF,0x00, 0xC7,0x38, +0x6C,0x00, 0xC6,0x30, 0x70,0x00, 0xF6,0x27, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0x76,0x99, +0x00,0x10, 0x76,0xB5, 0xFF,0xF8, 0xC7,0x38, 0x5F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, +0x44,0x00, 0xC6,0xB4, 0x70,0x00, 0xF6,0xA7, 0x28,0x00, 0x93,0x93, 0xFF,0xFC, 0xF3,0x84, +0x3B,0xB0, 0x00,0x00, 0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD4,0x2C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, 0x40,0x7C, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0xF3,0x84, 0x40,0x74, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xBE,0xF8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, +0x42,0x30, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x35,0x60, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x30, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x35,0xEC, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x36,0x78, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x37,0x04, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x37,0x90, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x38,0x1C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x38,0xA8, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x39,0x34, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x39,0xC0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x3A,0x4C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x42,0x44, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x3A,0xD8, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, +0x00,0x00, 0xF5,0x06, 0x3B,0x90, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, +0x50,0x00, 0x07,0x38, 0x00,0x02, 0x86,0xBA, 0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0x37, 0xFF,0xF0, 0xEE,0x00, 0xC9,0x95, 0x00,0x00, +0x00,0x01, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x50,0x00, 0x86,0xBA, +0x00,0x04, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xA6,0xAE, 0x68,0x02, 0x77,0x31, 0x00,0x03, 0xC7,0x38, 0x68,0x00, 0x27,0x38, +0x00,0x08, 0x84,0xBA, 0x00,0x04, 0x84,0x3A, 0x00,0x00, 0xE0,0x00, 0xC9,0xB4, 0xC5,0x24, +0x00,0x00, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x50,0x00, 0x85,0x3A, +0x00,0x04, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x20,0x32, +0x00,0x00, 0xF6,0x06, 0x3B,0x90, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xA6,0xBA, 0x60,0x02, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0xEE,0x00, 0xC9,0xF9, 0x76,0xB5, 0xFF,0xF0, 0x77,0x21, +0xFF,0xF0, 0xC6,0xB8, 0x68,0x00, 0xC7,0x2C, 0x68,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xC1,0x28, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, 0x00,0x00, 0xF5,0x06, 0x3B,0x70, 0x87,0x2E, +0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x77,0x39, 0x00,0x03, 0xC7,0x38, 0x50,0x00, 0x07,0x38, 0x00,0x02, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0x37, +0xFF,0xF0, 0xEE,0x00, 0xCA,0xBD, 0x00,0x00, 0x00,0x01, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xC7,0x38, 0x50,0x00, 0x86,0xBA, 0x00,0x04, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xA6,0xAE, 0x68,0x02, 0x77,0x31, +0x00,0x03, 0xC7,0x38, 0x68,0x00, 0x27,0x38, 0x00,0x08, 0x84,0xBA, 0x00,0x04, 0x84,0x3A, +0x00,0x00, 0xE0,0x00, 0xCA,0xDC, 0xC5,0x24, 0x00,0x00, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xC7,0x38, 0x50,0x00, 0x85,0x3A, 0x00,0x04, 0x83,0x96, 0x00,0x04, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x20,0x32, 0x00,0x00, 0x93,0x93, 0xFF,0xFC, 0x87,0x2E, +0x00,0x00, 0xF6,0x06, 0x3B,0x70, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0x39, +0x00,0x03, 0xA6,0xBA, 0x60,0x02, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0xEE,0x00, 0xCB,0x29, 0x76,0xB5, 0xFF,0xF0, 0x77,0x21, +0xFF,0xF0, 0xC6,0xB8, 0x68,0x00, 0xC7,0x2C, 0x68,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xC1,0x28, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x04, 0x4F,0x58, 0xF5,0x82, 0x00,0x02, 0x06,0x28, +0x00,0x80, 0x20,0x2E, 0x00,0x62, 0xEE,0x00, 0xCB,0x90, 0x07,0x30, 0x00,0x40, 0xF0,0x33, +0x28,0x00, 0xC6,0xB8, 0x52,0x00, 0x76,0xB4, 0xFF,0xFA, 0x06,0x30, 0x00,0x14, 0xF6,0xB3, +0x28,0x00, 0xC6,0x38, 0x00,0x00, 0xE0,0x00, 0xCB,0x64, 0x05,0xAC, 0x00,0x01, 0xF7,0x04, +0x4F,0x58, 0x00,0x00, 0x00,0x01, 0x06,0xB8, 0x18,0xD4, 0xF4,0x82, 0x00,0x01, 0xF4,0xB7, +0x28,0x00, 0x07,0x38, 0x18,0xC0, 0xF0,0x3B, 0x28,0x00, 0xF7,0x06, 0x42,0xC0, 0xF4,0x82, +0x00,0x02, 0xF4,0xBB, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF6,0x84, 0x42,0xC0, 0xF6,0x06, 0x42,0xC0, 0x77,0x31, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0x75,0xB1, 0x00,0x1E, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, +0x4F,0x58, 0x76,0xB5, 0x00,0x06, 0xC4,0x38, 0x68,0x00, 0x87,0x22, 0x00,0x14, 0x76,0xA1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, +0x28,0x00, 0xF7,0x04, 0x42,0xC0, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0x20,0x3A, 0x00,0x01, 0xE6,0x00, 0xCC,0x4C, 0xF6,0x06, 0x42,0x90, 0xF7,0x04, +0x42,0x90, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x04, 0x85,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x95,0x16, 0xFF,0xF4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCD,0x00, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xF4, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0xCC,0xBC, 0xF5,0x86, 0x42,0xC0, 0xF7,0x04, 0x42,0x90, 0xF6,0x06, 0x42,0x92, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xCC,0xEC, 0xF7,0x33, 0x28,0x00, 0xF0,0x2B, 0x28,0x00, 0xF6,0x84, +0x42,0xC0, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x06,0x28, 0x00,0x14, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB4, 0xFF,0xF0, 0xF7,0x04, 0x4F,0x58, 0xF6,0xB3, 0x28,0x00, 0xC7,0x28, +0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0xF7,0x2F, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x96, 0x00,0x00, 0xF7,0x04, 0x4F,0x58, 0xF4,0x02, +0x00,0x00, 0xC6,0xB4, 0x72,0x00, 0x77,0x34, 0xFF,0xFA, 0x27,0x38, 0x00,0x02, 0x20,0x3A, +0x00,0x61, 0xF7,0x02, 0x00,0x3F, 0xE2,0x00, 0xCD,0x40, 0xC6,0xB4, 0x74,0x00, 0x20,0x36, +0x00,0x00, 0xE6,0x00, 0xCD,0x40, 0x00,0x00, 0x00,0x01, 0xF4,0x02, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, 0x00,0x00, 0x87,0x16, +0x00,0x08, 0x85,0x96, 0x00,0x04, 0xC5,0x30, 0x70,0x00, 0xC0,0x32, 0x52,0x00, 0xE6,0x00, +0xCD,0xA1, 0x00,0x00, 0x00,0x01, 0x86,0xB2, 0x00,0x00, 0x77,0x31, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xE8, 0xF6,0xAF, 0x68,0x00, 0x06,0x30, +0x00,0x01, 0xC0,0x32, 0x52,0x00, 0xE6,0x00, 0xCD,0x78, 0x05,0xAC, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x84,0x96, +0x00,0x00, 0x84,0x16, 0x00,0x04, 0x85,0x96, 0x00,0x08, 0x86,0xA6, 0x00,0x00, 0x77,0x25, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x75,0x35, 0xFF,0xF0, 0x20,0x2A, +0x00,0x10, 0xE2,0x00, 0xCE,0x0D, 0xF6,0x06, 0x42,0x8E, 0xF5,0x02, 0x00,0x10, 0xF7,0x04, +0x42,0x8C, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x20,0x2E, 0x00,0x01, 0xE6,0x00, +0xCE,0x70, 0x20,0x2A, 0x00,0x00, 0xEE,0x00, 0xCE,0x71, 0x07,0x24, 0x00,0x02, 0x25,0x28, +0x00,0x01, 0xA5,0xBA, 0x50,0x02, 0x86,0x22, 0x00,0x00, 0x76,0xA1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x50,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC5,0xAC, +0x77,0xC0, 0xC6,0x30, 0x6F,0xC0, 0x76,0x31, 0xFF,0xF0, 0x75,0xAD, 0xFF,0xE8, 0xF6,0x82, +0x00,0xFF, 0xF7,0x02, 0xF1,0x54, 0x75,0xAD, 0x00,0x02, 0xA7,0x2E, 0x70,0x02, 0xC6,0x30, +0x6C,0x00, 0xC6,0x30, 0x75,0x80, 0xF6,0x23, 0x28,0x00, 0x24,0x20, 0x00,0x02, 0x25,0xA8, +0x00,0x01, 0xF3,0x02, 0xF2,0x46, 0x03,0xA4, 0x00,0x02, 0xC4,0xAC, 0x38,0x00, 0x25,0x2C, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xEC,0x00, 0xCF,0x11, 0x00,0x00, 0x00,0x01, 0xE6,0x00, +0xCE,0xA0, 0xC7,0x1C, 0x50,0x00, 0xE0,0x00, 0xCE,0xB4, 0xF6,0x02, 0x00,0x00, 0xA6,0x9E, +0x50,0x02, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0x35, +0xFF,0xE8, 0x86,0xA6, 0x00,0x00, 0x77,0x25, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0x25,0x28, +0x00,0x02, 0x25,0xAC, 0x00,0x02, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xE8, 0x77,0x31, +0x00,0x04, 0xC7,0x38, 0x62,0x00, 0x77,0x39, 0x00,0x01, 0xC7,0x38, 0x30,0x00, 0xC6,0xB4, +0x68,0x00, 0xC6,0xB4, 0x70,0x00, 0x06,0xB4, 0x00,0x0E, 0x87,0x36, 0x00,0x00, 0x24,0xA4, +0x00,0x02, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0xE0,0x00, 0xCE,0x84, 0x24,0x20, 0x00,0x02, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, 0x00,0x08, 0x83,0x16, +0x00,0x04, 0x83,0x96, 0x00,0x00, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x05,0x9C, 0x00,0x02, 0x74,0x9D, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x74,0x1D, +0x00,0x1E, 0x06,0x30, 0x00,0x02, 0x75,0x31, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0x28, 0xFF,0xE5, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x05,0xAC, 0x00,0x02, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x74,0x20, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x1F, +0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x04,0x9C, 0x00,0x02, 0xC7,0x38, 0x47,0xC0, 0x77,0x39, +0xFF,0xF0, 0x25,0x38, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xEE,0x00, 0xD0,0xBD, 0x26,0x28, +0x00,0x01, 0xA7,0x26, 0x60,0x02, 0xC6,0xA4, 0x60,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC5,0xA4, 0x50,0x00, 0xC5,0x30, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xE8, 0xE0,0x00, 0xD0,0x88, 0xF7,0x2F, 0x68,0x00, 0x07,0x1C, 0x00,0x02, 0xF3,0x3B, +0x68,0x00, 0xC4,0x1C, 0x00,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x86,0x16, 0x00,0x04, 0x84,0x16, 0x00,0x00, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x05,0xA0, 0x00,0x02, 0x74,0xA1, 0x00,0x1E, 0x74,0xA4, +0xFF,0xE5, 0x06,0x30, 0x00,0x02, 0x75,0x31, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0x28, 0xFF,0xE5, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x06,0xA0, 0x00,0x02, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2F, 0x28,0x00, 0x87,0x22, +0x00,0x00, 0x76,0x21, 0x00,0x1E, 0x85,0x96, 0x00,0x08, 0xC7,0x38, 0x4F,0xC0, 0x77,0x39, +0xFF,0xF0, 0xC6,0xB4, 0x70,0x00, 0xF5,0xB7, 0x68,0x00, 0x87,0x22, 0x00,0x00, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x23, +0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x20, 0x27,0x14, 0x00,0x20, 0xF0,0x3B, 0x28,0x00, 0x84,0x96, 0x00,0x04, 0xF5,0x02, +0x00,0x00, 0x86,0xA6, 0x00,0x00, 0x76,0x25, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x04,0x24, +0x00,0x02, 0xC6,0xB4, 0x67,0xC0, 0x76,0xB4, 0xFF,0xF0, 0xF6,0xBB, 0x28,0x00, 0x87,0x26, +0x00,0x00, 0x76,0xA5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0xC0,0x2A, 0x72,0x00, 0xEC,0x00, 0xD2,0xF8, 0x76,0xA5, 0x00,0x1E, 0x87,0x26, +0x00,0x00, 0x76,0xB4, 0xFF,0xE5, 0x06,0x28, 0x00,0x01, 0x25,0x94, 0x00,0x1E, 0xC5,0xAC, +0x50,0x00, 0xC5,0x30, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, +0x52,0x00, 0xA6,0xA2, 0x70,0x02, 0xC7,0x20, 0x70,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xE8, 0xC6,0x80, 0x6A,0x00, 0xE0,0x00, +0xD2,0x90, 0xF6,0xAF, 0x68,0x00, 0x87,0x16, 0xFF,0xE0, 0x76,0x15, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x83,0x96, 0x00,0x00, 0x23,0x14, 0x00,0x1E, 0x75,0x99, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0x75,0x15, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, +0xFF,0xE5, 0x74,0x15, 0x00,0x1E, 0x74,0x20, 0xFF,0xE5, 0x06,0x9C, 0x00,0x02, 0x73,0x95, +0x00,0x1E, 0x93,0x96, 0xFF,0xDC, 0xC7,0x38, 0x67,0xC0, 0x83,0x96, 0x00,0x00, 0x77,0x38, +0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x83,0x96, 0xFF,0xDC, 0x87,0x1A, 0x00,0x00, 0x73,0x9C, +0xFF,0xE5, 0x93,0x96, 0xFF,0xDC, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE4, 0x23,0x14, 0x00,0x1A, 0x76,0x19, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xE8, 0x23,0x14, +0x00,0x16, 0x76,0x19, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0xEC, 0x23,0x14, 0x00,0x12, 0x76,0x19, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x47,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0x84,0x16, 0x00,0x00, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x16, 0xFF,0xF0, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x3F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x86,0x16, 0x00,0x00, 0x84,0x16, 0x00,0x04, 0xF6,0x84, 0x4F,0x58, 0x87,0x32, +0x00,0x14, 0x03,0x30, 0x00,0x14, 0x75,0x19, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0xC3,0xA0, +0x6A,0x00, 0x73,0x9C, 0xFF,0xFA, 0x04,0xA0, 0x00,0x14, 0x75,0xA5, 0x00,0x1E, 0xC6,0x30, +0x6A,0x00, 0x76,0x30, 0xFF,0xFA, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0xF3,0x9B, 0x28,0x00, 0x07,0x20, 0x00,0x16, 0xF6,0x3B, 0x28,0x00, 0x87,0x22, +0x00,0x14, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x77,0x39, +0x00,0x06, 0xC6,0xB4, 0x70,0x00, 0x06,0xB4, 0x00,0x16, 0xF3,0xB7, 0x28,0x00, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, 0x00,0x00, 0xF5,0x84, +0x4F,0x58, 0x05,0x30, 0x00,0x16, 0x87,0x2A, 0x00,0x00, 0x76,0xA9, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x77,0x39, 0x00,0x06, 0xC4,0x2C, +0x70,0x00, 0xC0,0x22, 0x62,0x00, 0xE6,0x00, 0xD5,0x29, 0x06,0xA0, 0x00,0x16, 0x87,0x36, +0x00,0x00, 0xC6,0x30, 0x5A,0x00, 0x76,0x30, 0xFF,0xFA, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x77,0x39, 0x00,0x06, 0x76,0xB8, +0xFF,0xFA, 0xF6,0xAB, 0x28,0x00, 0xC7,0x2C, 0x70,0x00, 0x07,0x38, 0x00,0x14, 0xE0,0x00, +0xD5,0x2C, 0xF6,0x3B, 0x28,0x00, 0xC4,0x2C, 0x00,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x4F,0x84, 0x47,0x38, 0xFF,0xFC, 0xF7,0x05, +0x6F,0x30, 0xF6,0x86, 0x50,0x5C, 0x46,0xB4, 0xFF,0xFC, 0xF6,0x85, 0x6E,0x50, 0xF7,0x06, +0x6E,0x7C, 0x47,0x38, 0xFF,0xFC, 0xF7,0x05, 0x6E,0x54, 0x07,0x34, 0x19,0x1C, 0xF7,0x05, +0x4F,0x5C, 0xF7,0x02, 0x00,0x64, 0x97,0x36, 0x19,0x1C, 0xF7,0x02, 0x00,0x00, 0x97,0x36, +0x19,0x20, 0x06,0xB4, 0x00,0x1C, 0xF6,0x85, 0x4F,0x58, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x90, 0xF3,0x02, 0xFF,0xFF, 0xF3,0x05, +0x4F,0x54, 0xF3,0x82, 0x00,0x00, 0x93,0x96, 0xFF,0xAC, 0x23,0x14, 0x00,0x20, 0x93,0x16, +0xFF,0x9C, 0x23,0x94, 0x00,0x38, 0x93,0x96, 0xFF,0x94, 0x83,0x16, 0xFF,0xAC, 0xF7,0x04, +0x4F,0x5C, 0xF3,0x82, 0x00,0x0C, 0x93,0x96, 0xFF,0x74, 0x93,0x16, 0xFF,0x8C, 0x87,0x3A, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x97,0x16, 0xFF,0xA4, 0x83,0x16, 0xFF,0xAC, 0x83,0x96, +0xFF,0xA4, 0x00,0x00, 0x00,0x01, 0xC0,0x1A, 0x3A,0x00, 0xEC,0x00, 0xDB,0x78, 0xF3,0x02, +0x04,0xBC, 0xF7,0x04, 0x4F,0x5C, 0x83,0x16, 0xFF,0x74, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x30,0x00, 0x87,0x3A, 0x00,0x08, 0xF6,0x84, 0x4F,0x58, 0x77,0x39, 0x00,0x06, 0xC4,0xB4, +0x70,0x00, 0x94,0x93, 0xFF,0xFC, 0x94,0x96, 0xFF,0x7C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCD,0x00, 0x97,0x93, 0xFF,0xFC, 0x84,0x96, 0xFF,0x7C, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0xD6,0x54, 0xC5,0x04, 0x00,0x00, 0xF7,0x04, 0x42,0x88, 0xE0,0x00, 0xD8,0x7C, 0xF6,0x06, +0x42,0x88, 0xF6,0x04, 0x4F,0x5C, 0x83,0x96, 0x00,0x00, 0x83,0x16, 0xFF,0x74, 0x86,0x9E, +0x00,0x00, 0xA7,0x32, 0x30,0x02, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xD6,0x94, 0xC6,0x30, 0x30,0x00, 0x86,0x9E, 0x00,0x04, 0x87,0x32, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xD6,0x98, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xD6,0xA5, 0x00,0x00, 0x00,0x01, 0xF5,0x02, +0x00,0x00, 0x83,0x96, 0x00,0x00, 0x87,0x32, 0x00,0x00, 0x86,0x9E, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xD6,0xE4, 0xF5,0x82, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0xE6,0x00, 0xD6,0xEC, 0x20,0x2E, 0x00,0x00, 0x86,0x9E, 0x00,0x04, 0x87,0x32, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xD6,0xED, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xD6,0xFD, 0x20,0x2A, +0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0xD7,0x28, 0x04,0xA4, +0x00,0x02, 0x83,0x16, 0xFF,0xAC, 0xF7,0x06, 0x42,0xC8, 0x83,0x96, 0xFF,0x8C, 0xF3,0x05, +0x4F,0x54, 0xC7,0x1C, 0x70,0x00, 0xF0,0x3B, 0x28,0x00, 0x07,0x38, 0x00,0x02, 0xE0,0x00, +0xDB,0x50, 0xF0,0x3B, 0x28,0x00, 0x94,0x96, 0xFF,0x6C, 0x87,0x26, 0x00,0x00, 0x76,0xA5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x83,0x16, 0xFF,0x6C, 0x83,0x96, 0xFF,0x9C, 0x24,0x94, +0x00,0x1E, 0x06,0x18, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0x1D, +0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x1A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x18, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x16, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x14, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x24,0x94, 0x00,0x12, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x94, 0x00,0x10, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x87,0x16, 0xFF,0xE0, 0xF6,0x82, 0xFF,0xFC, 0xC7,0x38, 0x57,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x03, 0xC4,0xB8, 0x6C,0x00, 0x20,0x26, 0x00,0x10, 0xE2,0x00, +0xD8,0x9D, 0xF6,0x06, 0x42,0x8A, 0xF7,0x04, 0x42,0x88, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF4,0x02, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xDB,0xA0, 0xF7,0x33, 0x28,0x00, 0x83,0x16, 0xFF,0x6C, 0x25,0x14, +0x00,0x36, 0x83,0x96, 0xFF,0x94, 0x87,0x1A, 0x00,0x00, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x06,0x18, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x1F, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x34, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x32, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x30, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x2E, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x2C, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x2A, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x28, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x26,0xA4, 0x00,0x02, 0x74,0xA4, 0xFF,0xFF, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, +0x28,0x00, 0x90,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0x8C, 0xF7,0x06, 0x42,0xCC, 0xC7,0x18, +0x70,0x00, 0xC7,0x38, 0x68,0x00, 0x97,0x13, 0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0x94,0x96, +0xFF,0x7C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0x6C, 0x24,0x14, 0x00,0x4E, 0x25,0x14, 0x00,0x50, 0x83,0x16, 0xFF,0x8C, 0x84,0x96, +0xFF,0x7C, 0x87,0x1E, 0x00,0x00, 0x76,0x9D, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x1C, +0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0x29, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x4C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x4A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x48, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x46, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x44, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x42, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x14, 0x00,0x40, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x86,0x96, +0xFF,0xB0, 0xF6,0x06, 0x42,0xC8, 0xC6,0x18, 0x60,0x00, 0xF7,0x02, 0x00,0x03, 0xC6,0xB4, +0x57,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xC6,0xB4, 0x74,0x00, 0xF7,0x02, 0x00,0x04, 0xC7,0x38, +0x6A,0x00, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0xF4,0xB3, 0x28,0x00, 0x83,0x96, +0xFF,0x8C, 0x83,0x16, 0xFF,0x74, 0x03,0x9C, 0x00,0x14, 0x93,0x96, 0xFF,0x8C, 0x03,0x18, +0x00,0x0C, 0x83,0x96, 0xFF,0xAC, 0x93,0x16, 0xFF,0x74, 0x03,0x9C, 0x00,0x01, 0xE0,0x00, +0xD5,0xEC, 0x93,0x96, 0xFF,0xAC, 0x93,0x13, 0xFF,0xFC, 0xF3,0x84, 0x4F,0x5C, 0x00,0x00, +0x00,0x01, 0x93,0x93, 0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, 0xFF,0xFC, 0xF4,0x02, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x01,0xA0, 0xF5,0x02, +0x00,0x00, 0xF3,0x84, 0x6E,0x50, 0xF6,0x02, 0x00,0x1C, 0x20,0x2A, 0x00,0x63, 0xEE,0x00, +0xDC,0x08, 0xC5,0x9C, 0x60,0x00, 0xA6,0x9E, 0x60,0x02, 0x77,0x2D, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x20,0x36, 0x00,0x03, 0xE6,0x00, +0xDB,0xFC, 0x07,0x2C, 0x00,0x36, 0xF0,0x3B, 0x28,0x00, 0x06,0x30, 0x00,0x40, 0xE0,0x00, +0xDB,0xCC, 0x05,0x28, 0x00,0x01, 0xF5,0x84, 0x4F,0x5C, 0x00,0x00, 0x00,0x01, 0x86,0xAE, +0x00,0x08, 0xF4,0x02, 0x00,0x00, 0x87,0x2E, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xEC,0x00, 0xDC,0xF0, 0x96,0x96, 0xFF,0xEC, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0xC6,0x38, 0x58,0x00, 0x06,0x30, 0x00,0x0C, 0xC3,0x84, +0x00,0x00, 0x83,0x16, 0x00,0x00, 0x86,0xB2, 0x00,0x00, 0x87,0x1A, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xDC,0x7C, 0xC5,0x20, 0x00,0x00, 0x86,0xB2, +0x00,0x04, 0x87,0x1A, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xDC,0x80, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, +0xDC,0x8D, 0x00,0x00, 0x00,0x01, 0xF3,0x82, 0x00,0x00, 0x84,0x96, 0x00,0x00, 0x86,0xB2, +0x00,0x00, 0x87,0x26, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0xDC,0xCC, 0xF5,0x02, 0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xDC,0xD4, 0x20,0x2A, +0x00,0x00, 0x86,0xB2, 0x00,0x04, 0x87,0x26, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x00, 0xDC,0xD5, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, +0x00,0x00, 0xE6,0x00, 0xDC,0xE5, 0x20,0x1E, 0x00,0x00, 0xF3,0x82, 0x00,0x01, 0x20,0x1E, +0x00,0x00, 0xE6,0x00, 0xDC,0xF4, 0x20,0x22, 0x00,0x00, 0xF4,0x02, 0x00,0x01, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xDD,0x29, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, +0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x58,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xF0, 0xE0,0x00, +0xDD,0x98, 0x96,0x96, 0xFF,0xF4, 0x27,0x14, 0x00,0x14, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x95,0x93, 0xFF,0xFC, 0x95,0x96, +0xFE,0x70, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, +0xFE,0x70, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xDD,0x95, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x58,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xF0, 0x96,0x96, 0xFF,0xF4, 0x97,0x2E, 0x00,0x08, 0xE0,0x00, 0xDD,0x9C, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0xDD,0xB0, 0xF4,0x82, +0x00,0x00, 0xF7,0x04, 0x42,0x7C, 0xE0,0x00, 0xE0,0x9C, 0xF6,0x06, 0x42,0x7E, 0x94,0x96, +0xFF,0x44, 0x87,0x16, 0xFF,0xF4, 0xF6,0x04, 0x4F,0x58, 0x77,0x39, 0x00,0x06, 0xC7,0x30, +0x70,0x00, 0x97,0x16, 0xFF,0x54, 0x06,0xB8, 0x00,0x1A, 0x87,0x36, 0x00,0x00, 0x83,0x16, +0xFF,0x54, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x93,0x13, +0xFF,0xFC, 0x77,0x38, 0xFF,0xF0, 0x77,0x39, 0x00,0x06, 0xC6,0x30, 0x70,0x00, 0x96,0x16, +0xFF,0x4C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0x00, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xDE,0x35, 0xF3,0x02, 0x00,0x01, 0x84,0x96, 0xFF,0x4C, 0x00,0x00, +0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0x00, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xDE,0x38, 0x00,0x00, 0x00,0x01, 0xF3,0x02, +0x00,0x01, 0x93,0x16, 0xFF,0x44, 0x84,0x96, 0xFF,0x44, 0x00,0x00, 0x00,0x01, 0x20,0x26, +0x00,0x00, 0xE6,0x00, 0xDE,0x59, 0xF6,0x06, 0x42,0xA4, 0xF7,0x04, 0x42,0xA4, 0xE0,0x00, +0xE0,0xA0, 0x76,0xB1, 0x00,0x1E, 0x83,0x16, 0xFF,0x4C, 0x86,0x16, 0xFF,0x4C, 0x87,0x1A, +0x00,0x00, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, 0xDE,0x85, 0x00,0x00, 0x00,0x01, 0xF6,0x04, +0x4F,0x58, 0xF5,0x84, 0x4F,0x58, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x5A,0x00, 0xE6,0x00, +0xE0,0x25, 0x00,0x00, 0x00,0x01, 0x84,0x96, 0xFF,0x4C, 0x00,0x00, 0x00,0x01, 0x06,0xA4, +0x00,0x1A, 0x87,0x36, 0x00,0x00, 0x83,0x16, 0xFF,0x54, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x77,0x39, 0x00,0x06, 0xC7,0x2C, +0x70,0x00, 0xC0,0x3A, 0x32,0x00, 0xE6,0x00, 0xDE,0xDD, 0xF6,0x06, 0x42,0x80, 0xF7,0x04, +0x42,0x80, 0xE0,0x00, 0xE0,0xA0, 0x76,0xB1, 0x00,0x1E, 0x26,0x14, 0x00,0x30, 0xF0,0x33, +0x28,0x00, 0x87,0x16, 0xFF,0xD0, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x84,0x96, +0xFF,0x4C, 0x23,0x14, 0x00,0x2E, 0x93,0x16, 0xFE,0x64, 0x75,0x99, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0x75,0x15, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x73,0x15, 0x00,0x1E, 0x73,0x18, +0xFF,0xE5, 0x93,0x16, 0xFF,0x34, 0x83,0x16, 0xFE,0x64, 0x04,0x24, 0x00,0x02, 0x06,0xA0, +0x00,0x02, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x3C, 0x74,0x95, +0x00,0x1E, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x2C, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xD4, 0x24,0x94, +0x00,0x2A, 0x94,0x96, 0xFE,0x64, 0x76,0x25, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xD8, 0x23,0x14, 0x00,0x26, 0x93,0x16, 0xFE,0x64, 0x76,0x19, +0x00,0x1E, 0x84,0x96, 0xFF,0x3C, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x84,0x96, +0xFF,0x34, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0xDC, 0x23,0x14, 0x00,0x22, 0x93,0x16, 0xFE,0x64, 0x76,0x19, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xE0, 0x83,0x16, 0xFF,0x2C, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xE0,0x00, 0xEA,0xA0, 0xF7,0x37, +0x28,0x00, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCB,0xCC, 0x97,0x93, 0xFF,0xFC, 0x06,0xA0, +0x00,0x02, 0xF7,0x04, 0x4F,0x58, 0xF0,0x37, 0x28,0x00, 0x06,0xA0, 0x00,0x14, 0x94,0x16, +0xFF,0x24, 0xC7,0x20, 0x72,0x00, 0x77,0x38, 0xFF,0xFA, 0xF7,0x37, 0x28,0x00, 0x06,0xA0, +0x00,0x16, 0xF7,0x37, 0x28,0x00, 0xF4,0x82, 0x00,0x01, 0xF4,0xA3, 0x28,0x00, 0x94,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0x00, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xE0,0xBC, 0x26,0x94, 0x00,0x48, 0xF7,0x04, 0x42,0x80, 0xE0,0x00, +0xE0,0x9C, 0xF6,0x06, 0x42,0x82, 0x86,0x96, 0xFE,0xF4, 0xE0,0x00, 0xE2,0x94, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x42,0x84, 0xF6,0x06, 0x42,0x84, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF4,0x02, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xEA,0xA4, 0xF7,0x33, 0x28,0x00, 0x83,0x16, 0xFF,0x4C, 0x75,0x15, +0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x93,0x16, 0xFF,0x1C, 0x07,0x18, 0x00,0x36, 0xF4,0x82, +0x00,0x01, 0xF4,0xBB, 0x28,0x00, 0xF0,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xB8, 0x76,0xB5, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x04,0x18, 0x00,0x02, 0x06,0x20, 0x00,0x02, 0x23,0x14, +0x00,0x46, 0x93,0x16, 0xFF,0x14, 0x75,0x99, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x74,0x95, +0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFF,0x0C, 0x73,0x15, 0x00,0x1E, 0x73,0x18, +0xFF,0xE5, 0x93,0x16, 0xFF,0x04, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, +0xFE,0xFC, 0x23,0x00, 0x00,0x07, 0x93,0x16, 0xFE,0xF4, 0x84,0x96, 0xFF,0x1C, 0x83,0x16, +0xFF,0x14, 0x04,0xA4, 0x00,0x0A, 0x94,0x96, 0xFE,0x7C, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0xF6,0x84, 0x4F,0x58, 0x84,0x96, 0xFF,0x54, 0x87,0x1A, +0x00,0x00, 0xC6,0xA4, 0x6A,0x00, 0x74,0x34, 0xFF,0xFA, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x16, 0xFF,0xBC, 0x23,0x14, +0x00,0x42, 0x93,0x16, 0xFF,0x14, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0x30, +0x00,0x02, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x16, 0xFF,0xC0, 0x24,0x94, 0x00,0x3E, 0x94,0x96, 0xFF,0x14, 0x76,0xA5, +0x00,0x1E, 0x83,0x16, 0xFF,0x0C, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0x06,0x30, 0x00,0x02, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x16, +0xFF,0xC4, 0x24,0x94, 0x00,0x3A, 0x94,0x96, 0xFF,0x14, 0x76,0xA5, 0x00,0x1E, 0x83,0x16, +0xFF,0x04, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, +0x28,0x00, 0x87,0x26, 0x00,0x00, 0x06,0x30, 0x00,0x02, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x87,0x16, 0xFF,0xC8, 0x84,0x96, 0xFE,0xFC, 0x06,0x30, +0x00,0x02, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x83,0x16, +0xFE,0xF4, 0x00,0x00, 0x00,0x01, 0x20,0x1A, 0x00,0x07, 0xEE,0x00, 0xE2,0x94, 0xF6,0x82, +0x00,0x08, 0x84,0x96, 0xFE,0x7C, 0x00,0x00, 0x00,0x01, 0x07,0x24, 0x00,0x0E, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xF7,0x02, 0x00,0xFF, 0xC6,0xB4, 0x74,0x00, 0x47,0x21, 0x00,0x00, 0xC0,0x36, +0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xE0,0x88, 0x04,0xA4, +0x00,0x02, 0x94,0x96, 0xFE,0x7C, 0x03,0x18, 0x00,0x01, 0xE0,0x00, 0xE2,0x30, 0x93,0x16, +0xFE,0xF4, 0x83,0x16, 0xFF,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x18, 0x00,0x38, 0xF6,0xBB, +0x28,0x00, 0x93,0x13, 0xFF,0xFC, 0x84,0x96, 0xFF,0x24, 0x00,0x00, 0x00,0x01, 0x94,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD4,0x2C, 0x97,0x93, 0xFF,0xFC, 0x23,0x14, +0x00,0x78, 0x93,0x16, 0xFE,0xBC, 0x84,0x96, 0x00,0x00, 0x23,0x14, 0x00,0xA8, 0x86,0xA6, +0x00,0x04, 0x87,0x26, 0x00,0x00, 0x93,0x16, 0xFE,0x9C, 0xC6,0xB4, 0x70,0x00, 0x96,0x96, +0xFE,0xEC, 0xF7,0x02, 0x00,0x01, 0xC7,0x34, 0x74,0x00, 0x97,0x16, 0xFE,0xE4, 0x84,0x96, +0xFF,0x24, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD4,0xB4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, 0x4F,0x58, 0x00,0x00, 0x00,0x01, 0xC0,0x22, +0x72,0x00, 0xE6,0x00, 0xEA,0xA1, 0x94,0x16, 0xFF,0x1C, 0x86,0xA2, 0x00,0x38, 0x77,0x21, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xF3,0x02, 0x00,0x00, 0x93,0x16, 0xFE,0xD4, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0x96,0x96, 0xFE,0xDC, 0x84,0x96, 0xFE,0xD4, 0x00,0x00, +0x00,0x01, 0x20,0x26, 0x00,0x0E, 0xEE,0x00, 0xE2,0xF0, 0xF3,0x02, 0x00,0x0F, 0x93,0x13, +0xFF,0xFC, 0x83,0x16, 0xFE,0xEC, 0x00,0x00, 0x00,0x01, 0xC7,0x18, 0x48,0x00, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x27,0xE8, 0x97,0x93, 0xFF,0xFC, 0xC3,0xA0, +0x00,0x00, 0x84,0x96, 0xFE,0xE4, 0x00,0x00, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, +0xE3,0x8D, 0x23,0x9C, 0x00,0x07, 0xC3,0x80, 0x3A,0x00, 0xC7,0x1C, 0x38,0x00, 0x83,0x16, +0xFF,0x1C, 0xF4,0x82, 0x00,0xFF, 0xF6,0x04, 0x4F,0x58, 0xC7,0x18, 0x70,0x00, 0x07,0x38, +0x00,0x26, 0x86,0xBA, 0x00,0x00, 0x97,0x16, 0xFE,0xC4, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xC6,0xB4, 0x4C,0x00, 0x76,0xB5, +0x00,0x06, 0xC3,0x30, 0x68,0x00, 0x07,0x30, 0x00,0x40, 0xC0,0x1A, 0x72,0x00, 0xE6,0x00, +0xE4,0x0D, 0x93,0x16, 0xFE,0xCC, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, 0xFE,0x74, 0x96,0x16, +0xFE,0x6C, 0x96,0x96, 0xFE,0x68, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0x00, 0x97,0x93, +0xFF,0xFC, 0x83,0x96, 0xFE,0x74, 0x86,0x16, 0xFE,0x6C, 0x86,0x96, 0xFE,0x68, 0x20,0x22, +0x00,0x00, 0xE6,0x00, 0xE0,0x95, 0x00,0x00, 0x00,0x01, 0xF5,0x84, 0x4F,0x58, 0x84,0x96, +0xFE,0xCC, 0x07,0x2C, 0x00,0x40, 0xC0,0x26, 0x72,0x00, 0xE6,0x00, 0xEA,0x8D, 0x00,0x00, +0x00,0x01, 0xA7,0x32, 0x68,0x02, 0x76,0xA5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x86,0x16, +0xFE,0xCC, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, 0x00,0x02, 0xE6,0x00, +0xE4,0x51, 0xC0,0x32, 0x5A,0x00, 0xC6,0x2C, 0x00,0x00, 0xC0,0x32, 0x5A,0x00, 0xE6,0x00, +0xE6,0xE5, 0x25,0x14, 0x00,0x76, 0x83,0x16, 0xFF,0x1C, 0x84,0x96, 0xFE,0xBC, 0x06,0x18, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x83,0x16, +0xFE,0xDC, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x74, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x72, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x70, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x6E, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x6C, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x6A, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x25,0x14, 0x00,0x68, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0xC7,0x1C, 0x32,0x00, 0x97,0x13, +0xFF,0xFC, 0x94,0x93, 0xFF,0xFC, 0x26,0x14, 0x00,0x60, 0x96,0x13, 0xFF,0xFC, 0x96,0x16, +0xFE,0x6C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x87,0x16, +0xFF,0xA0, 0x86,0x16, 0xFE,0x6C, 0x84,0x96, 0xFE,0xCC, 0x23,0x14, 0x00,0x5E, 0x93,0x16, +0xFE,0x5C, 0x75,0x99, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x74,0x15, 0x00,0x1E, 0x74,0x20, +0xFF,0xE5, 0x73,0x15, 0x00,0x1E, 0x73,0x18, 0xFF,0xE5, 0x93,0x16, 0xFE,0xAC, 0x83,0x16, +0xFE,0x5C, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x05,0x24, 0x00,0x02, 0x06,0xA8, +0x00,0x02, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFE,0xB4, 0x74,0x95, +0x00,0x1E, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x87,0x1A, +0x00,0x00, 0x74,0xA4, 0xFF,0xE5, 0x94,0x96, 0xFE,0xA4, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xA4, 0x24,0x94, +0x00,0x5A, 0x94,0x96, 0xFE,0x5C, 0x76,0x25, 0x00,0x1E, 0x83,0x16, 0xFE,0xB4, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x26, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, 0xFF,0xA8, 0x24,0x94, 0x00,0x56, 0x94,0x96, +0xFE,0x5C, 0x76,0x25, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x47,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0xAC, 0x23,0x14, 0x00,0x52, 0x93,0x16, 0xFE,0x5C, 0x76,0x19, 0x00,0x1E, 0x84,0x96, +0xFE,0xAC, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1A, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0xB0, 0x83,0x16, 0xFE,0xA4, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xE0,0x00, 0xEA,0x8C, 0xF7,0x37, +0x28,0x00, 0x84,0x96, 0xFE,0xCC, 0x00,0x00, 0x00,0x01, 0x04,0xA4, 0x00,0x36, 0x94,0x96, +0xFE,0x5C, 0x87,0x26, 0x00,0x00, 0x76,0xA5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, 0x00,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xEA,0x8D, 0x00,0x00, 0x00,0x01, 0x83,0x16, 0xFE,0xCC, 0x84,0x96, +0xFF,0x1C, 0x06,0x18, 0x00,0x3A, 0x85,0xB2, 0x00,0x00, 0x07,0x24, 0x00,0x3A, 0x86,0xBA, +0x00,0x00, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC5,0xAC, 0x67,0xC0, 0xC6,0xB4, 0x77,0xC0, 0x75,0xAD, 0xFF,0xF0, 0x76,0xB5, +0xFF,0xF0, 0xC0,0x2E, 0x6A,0x00, 0xEC,0x00, 0xE7,0x64, 0xF5,0x02, 0x00,0x02, 0xF5,0x02, +0x00,0x01, 0x83,0x16, 0xFF,0x1C, 0x00,0x00, 0x00,0x01, 0x07,0x18, 0x00,0x36, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0x20,0x36, 0x00,0x02, 0xE6,0x00, 0xE7,0x9C, 0x00,0x00, 0x00,0x01, 0x20,0x2A, +0x00,0x01, 0xE6,0x00, 0xEA,0x8D, 0x00,0x00, 0x00,0x01, 0x84,0x96, 0xFE,0x5C, 0x83,0x16, +0xFF,0x1C, 0xF5,0x27, 0x28,0x00, 0x06,0x18, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x25,0x14, 0x00,0xA6, 0x84,0x96, 0xFE,0x9C, 0x83,0x16, +0xFE,0xDC, 0x06,0x30, 0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0xA4, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0xA2, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0xA0, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x9E, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x9C, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x25,0x14, 0x00,0x9A, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, +0x00,0x00, 0x25,0x14, 0x00,0x98, 0x76,0x31, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, 0x28,0x00, 0xC7,0x1C, 0x32,0x00, 0x97,0x13, +0xFF,0xFC, 0x94,0x93, 0xFF,0xFC, 0x26,0x14, 0x00,0x90, 0x96,0x13, 0xFF,0xFC, 0x96,0x16, +0xFE,0x6C, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xD0,0xDC, 0x97,0x93, 0xFF,0xFC, 0x87,0x16, +0xFF,0x70, 0x86,0x16, 0xFE,0x6C, 0x84,0x96, 0xFE,0xCC, 0x23,0x94, 0x00,0x8E, 0x75,0x9D, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0x73,0x15, 0x00,0x1E, 0x73,0x18, 0xFF,0xE5, 0x93,0x16, +0xFE,0x94, 0x74,0x15, 0x00,0x1E, 0x74,0x20, 0xFF,0xE5, 0x73,0x15, 0x00,0x1E, 0x73,0x18, +0xFF,0xE5, 0x93,0x16, 0xFE,0x84, 0x83,0x16, 0xFE,0x94, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x05,0x24, 0x00,0x02, 0x06,0xA8, 0x00,0x02, 0x74,0x95, 0x00,0x1E, 0x74,0xA4, +0xFF,0xE5, 0x94,0x96, 0xFE,0x8C, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x2B, +0x28,0x00, 0x84,0x96, 0xFE,0xC4, 0x87,0x1E, 0x00,0x00, 0x75,0x25, 0x00,0x1E, 0xC7,0x38, +0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0x74, 0x23,0x94, 0x00,0x8A, 0x76,0x1D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x84,0x96, +0xFE,0x8C, 0x75,0x28, 0xFF,0xE5, 0xC7,0x38, 0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, +0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x83,0x16, 0xFE,0x84, 0xC7,0x38, +0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, 0x00,0x02, 0x87,0x16, +0xFF,0x78, 0x23,0x94, 0x00,0x86, 0x76,0x1D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x47,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1E, 0x00,0x00, 0x06,0xB4, +0x00,0x02, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x06,0xB4, +0x00,0x02, 0x87,0x16, 0xFF,0x7C, 0x23,0x94, 0x00,0x82, 0x76,0x1D, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1E, +0x00,0x00, 0x06,0xB4, 0x00,0x02, 0x84,0x96, 0xFE,0xC4, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x16, 0xFF,0x80, 0x06,0xB4, 0x00,0x02, 0xC7,0x38, +0x37,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x26, 0x00,0x00, 0xF3,0x02, +0x00,0xFF, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xE8, 0xC6,0xB8, 0x34,0x00, 0xF7,0x02, +0x00,0x80, 0xC7,0x34, 0x74,0x00, 0x77,0x39, 0x00,0x10, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, +0x00,0x00, 0xE6,0x00, 0xEA,0x61, 0x27,0x00, 0x01,0x00, 0xC6,0xB4, 0x75,0x80, 0x84,0x96, +0xFE,0xCC, 0x00,0x00, 0x00,0x01, 0x07,0x24, 0x00,0x38, 0xF6,0xBB, 0x28,0x00, 0x94,0x93, +0xFF,0xFC, 0x83,0x16, 0xFF,0x24, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xD4,0x2C, 0x97,0x93, 0xFF,0xFC, 0x84,0x96, 0xFE,0xD4, 0x00,0x00, +0x00,0x01, 0x04,0xA4, 0x00,0x01, 0xE0,0x00, 0xE3,0x3C, 0x94,0x96, 0xFE,0xD4, 0xF4,0x02, +0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, +0x00,0x08, 0x86,0x96, 0x00,0x0C, 0xF5,0x02, 0xFF,0xFC, 0x85,0x96, 0x00,0x04, 0x84,0x16, +0x00,0x10, 0xF4,0x84, 0xE0,0x00, 0x07,0x30, 0x00,0x02, 0x94,0xB2, 0x00,0x10, 0xF4,0x84, +0xE0,0x04, 0x06,0xB4, 0x00,0x03, 0x94,0xB2, 0x00,0x14, 0xF4,0x84, 0xE0,0x1C, 0xC6,0xB4, +0x54,0x00, 0x94,0xB2, 0x00,0x18, 0xF4,0x82, 0x00,0x05, 0xF4,0xB3, 0x28,0x00, 0xF4,0x82, +0x00,0x01, 0xF4,0xBB, 0x28,0x00, 0x27,0x34, 0x00,0x08, 0x97,0x32, 0x00,0x04, 0x86,0x16, +0x00,0x00, 0x07,0x2C, 0x00,0x03, 0xC7,0x38, 0x54,0x00, 0xC6,0xB8, 0x68,0x00, 0x96,0x93, +0xFF,0xFC, 0xC6,0x30, 0x72,0x00, 0x96,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x03, 0xC5,0xAC, +0x74,0x00, 0xF7,0x02, 0x00,0x04, 0xC7,0x38, 0x5A,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xC1,0x20, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x14, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x18, 0x87,0x16, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0x83,0xBA, 0x00,0x00, 0x84,0x96, 0x00,0x00, 0x93,0x96, 0xFF,0xF0, 0xF3,0x84, +0x6E,0x54, 0x87,0x3A, 0x00,0x04, 0x93,0x96, 0xFF,0xEC, 0x97,0x16, 0xFF,0xF4, 0x90,0x13, +0xFF,0xFC, 0x27,0x1C, 0x00,0x02, 0x97,0x13, 0xFF,0xFC, 0x07,0x24, 0x00,0x20, 0x97,0x13, +0xFF,0xFC, 0x94,0x96, 0xFF,0xE4, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, +0xFF,0xFC, 0x84,0x96, 0xFF,0xE4, 0x83,0x96, 0x00,0x08, 0x87,0x26, 0x00,0x18, 0x85,0x16, +0xFF,0xEC, 0xC0,0x3A, 0x3A,0x00, 0xEE,0x00, 0xEC,0x7C, 0xF5,0x82, 0x00,0x01, 0x87,0x26, +0x00,0x18, 0x83,0x96, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, 0x72,0x00, 0xE6,0x00, +0xEC,0x7C, 0xC5,0x84, 0x00,0x00, 0x86,0xA6, 0x00,0x10, 0x87,0x16, 0xFF,0xF0, 0xF6,0x02, +0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xEC,0x1C, 0x04,0x24, 0x00,0x10, 0x86,0xA6, +0x00,0x14, 0x87,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, +0xEC,0x20, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0xEC,0x2D, 0x00,0x00, 0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0xA2, 0x00,0x00, 0x87,0x16, +0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xEC,0x68, 0xF6,0x02, +0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x00, 0xEC,0x70, 0x20,0x32, 0x00,0x00, 0x86,0xA2, +0x00,0x04, 0x87,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, +0xEC,0x71, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0xEC,0x81, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, +0xEC,0xAC, 0xF7,0x02, 0x00,0x01, 0xF7,0x04, 0x42,0x9C, 0xF6,0x06, 0x42,0x9C, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0xF7,0x02, 0x00,0x01, 0x97,0x2A, 0x00,0x08, 0x83,0xA6, +0x00,0x0C, 0x77,0x2C, 0xFF,0xE1, 0x93,0xAA, 0x00,0x0C, 0x97,0x2A, 0x00,0x1C, 0x83,0xA6, +0x00,0x1C, 0xF7,0x04, 0x6E,0x50, 0x93,0xAA, 0x00,0x20, 0x83,0xBA, 0x1D,0xDC, 0xF6,0x82, +0x00,0x00, 0x93,0xAA, 0x00,0x2C, 0x83,0x96, 0x00,0x0C, 0xC5,0xB4, 0x00,0x00, 0x93,0xAA, +0x00,0x30, 0x83,0xBA, 0x00,0x10, 0xC6,0x34, 0x00,0x00, 0x93,0xAA, 0x00,0x24, 0x87,0x3A, +0x00,0x14, 0x00,0x00, 0x00,0x01, 0x97,0x2A, 0x00,0x28, 0x20,0x36, 0x00,0x1F, 0xEE,0x00, +0xED,0x1C, 0xC7,0x30, 0x50,0x00, 0x07,0x38, 0x00,0x34, 0x95,0xBA, 0x00,0x00, 0x06,0x30, +0x00,0x04, 0xE0,0x00, 0xEC,0xFC, 0x06,0xB4, 0x00,0x01, 0x83,0x96, 0x00,0x10, 0x76,0xA5, +0x00,0x1E, 0x93,0x93, 0xFF,0xFC, 0xF3,0x82, 0x00,0xB4, 0x93,0x93, 0xFF,0xFC, 0x95,0x13, +0xFF,0xFC, 0x87,0x26, 0x00,0x20, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xEA,0xB8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x14, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x18, 0x87,0x16, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x86,0x3A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x96,0x16, +0xFF,0xF0, 0x87,0x3A, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x97,0x16, 0xFF,0xF4, 0xF6,0x02, +0x1D,0xE0, 0x96,0x13, 0xFF,0xFC, 0x86,0x16, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x96,0x13, +0xFF,0xFC, 0xF6,0x04, 0x6E,0x50, 0x00,0x00, 0x00,0x01, 0x96,0x13, 0xFF,0xFC, 0x26,0x14, +0x00,0x10, 0x96,0x16, 0xFF,0xEC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x26,0xF8, 0x97,0x93, +0xFF,0xFC, 0xF6,0x84, 0x6E,0x50, 0xF6,0x02, 0x00,0x00, 0x87,0x36, 0x1D,0xD8, 0x96,0x16, +0xFF,0xE4, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF6,0x86, 0x42,0xC0, 0xF7,0x37, 0x28,0x00, 0x86,0x16, 0xFF,0xEC, 0x00,0x00, +0x00,0x01, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xDB,0xB4, 0x97,0x93, +0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xEE,0x4D, 0x00,0x00, 0x00,0x01, 0x86,0x16, +0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xD5,0xA0, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, 0xEE,0x4D, 0x00,0x00, +0x00,0x01, 0xF6,0x02, 0x00,0x01, 0x96,0x16, 0xFF,0xE4, 0x84,0x16, 0xFF,0xE4, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x96, 0x00,0x04, 0x86,0x16, +0x00,0x00, 0x87,0x36, 0x00,0x08, 0x85,0x96, 0x00,0x08, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xEE,0x99, 0x20,0x3A, 0x00,0x03, 0xE6,0x00, 0xEE,0xE9, 0xF4,0x02, 0x00,0x00, 0xE0,0x00, +0xEF,0x0C, 0x00,0x00, 0x00,0x01, 0x77,0xB0, 0x00,0x1F, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0xEF,0x0D, 0xF4,0x02, 0x00,0x00, 0x85,0x16, 0x00,0x14, 0x00,0x00, 0x00,0x01, 0x95,0x13, +0xFF,0xFC, 0x85,0x16, 0x00,0x10, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x85,0x16, +0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x95,0x93, 0xFF,0xFC, 0x96,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xEB,0x60, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0xEF,0x0C, 0x00,0x00, 0x00,0x01, 0x77,0xB0, 0x00,0x1E, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0xEF,0x0D, 0x00,0x00, 0x00,0x01, 0x95,0x93, 0xFF,0xFC, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xED,0x74, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x18, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x18, 0xF4,0x82, 0x00,0x00, 0x86,0x96, +0x00,0x00, 0xF6,0x04, 0x4A,0xA0, 0x23,0x94, 0x00,0x10, 0x84,0x36, 0x00,0x00, 0x96,0x16, +0xFF,0xE4, 0xF7,0x04, 0x4A,0x9C, 0x94,0x16, 0xFF,0xF0, 0x85,0x36, 0x00,0x04, 0xC0,0x32, +0x72,0x00, 0xEC,0x00, 0xF0,0x14, 0x95,0x16, 0xFF,0xF4, 0x77,0x31, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0x77,0x39, 0x00,0x02, 0xF3,0x06, 0x4A,0x98, 0xC6,0xB8, 0x30,0x00, 0x06,0xB4, +0x00,0x0C, 0xC5,0x84, 0x00,0x00, 0x87,0x36, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x42,0x00, 0xE6,0x00, 0xEF,0xA4, 0xC6,0x24, 0x00,0x00, 0x87,0x36, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0xE6,0x00, 0xEF,0xA8, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, 0xEF,0xB5, 0x00,0x00, 0x00,0x01, 0xF5,0x82, +0x00,0x00, 0x86,0x36, 0x00,0x00, 0x87,0x16, 0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC0,0x32, +0x72,0x00, 0xE2,0x00, 0xEF,0xF0, 0xF5,0x02, 0x00,0x00, 0xC0,0x32, 0x72,0x00, 0xE6,0x00, +0xEF,0xF8, 0x20,0x2A, 0x00,0x00, 0x86,0xB6, 0x00,0x04, 0x87,0x16, 0xFF,0xF4, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x00, 0xEF,0xF9, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, +0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x00, 0xF0,0x09, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x00, 0xF0,0x18, 0x20,0x26, 0x00,0x00, 0xF4,0x82, +0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x00, 0xF0,0x4D, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xE4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xE8, 0xE0,0x00, 0xF0,0xB0, 0x96,0x96, 0xFF,0xEC, 0x27,0x14, 0x00,0x1C, 0x97,0x13, +0xFF,0xFC, 0x93,0x93, 0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x20,0x22, 0x00,0x00, 0xE6,0x00, +0xF0,0xAD, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xE4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xE8, 0x96,0x96, 0xFF,0xEC, 0xF7,0x05, +0x4A,0xA0, 0xE0,0x00, 0xF0,0xB4, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, +0x00,0x00, 0xE6,0x00, 0xF1,0x21, 0xF4,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xE8, 0xF6,0x06, +0x42,0xC8, 0x76,0xB9, 0x00,0x02, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xA7,0x36, +0x60,0x02, 0x83,0x16, 0x00,0x04, 0xC6,0xB4, 0x60,0x00, 0x76,0x35, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x05,0x34, 0x00,0x02, 0x75,0xA9, 0x00,0x1E, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, +0xFF,0xF0, 0x97,0x1A, 0x00,0x00, 0x87,0x2A, 0x00,0x00, 0x75,0xAC, 0xFF,0xE5, 0x83,0x16, +0x00,0x08, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x97,0x1A, 0x00,0x00, 0x83,0x16, +0x00,0x0C, 0x06,0xB4, 0x00,0x04, 0xE0,0x00, 0xF1,0x24, 0x96,0x9A, 0x00,0x00, 0xF4,0x02, +0x00,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x10, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0xB9,0x00, 0x00,0x00, 0xBA,0x00, 0x00,0x00, +0xBB,0x00, 0x00,0x00, 0xBC,0x00, 0x00,0x00, 0xBD,0x00, 0x00,0x00, 0xBE,0x00, 0x00,0x00, +0xBF,0x00, 0x00,0x00, 0x80,0x00, 0x00,0x00, 0x81,0x00, 0x00,0x00, 0x82,0x00, 0x00,0x00, +0x83,0x00, 0x00,0x00, 0x84,0x00, 0x00,0x00, 0x85,0x00, 0x00,0x00, 0x86,0x00, 0x00,0x00, +0x87,0x00, 0xB9,0xB9, 0xB9,0xBA, 0xB9,0xBB, 0xB9,0xBC, 0xB9,0xBD, 0xB9,0xBE, 0xB9,0xBF, +0xB9,0x80, 0xB9,0x81, 0xB9,0x82, 0xB9,0x83, 0xB9,0x84, 0xB9,0x85, 0xB9,0x86, 0xB9,0x87, +0xBA,0xB9, 0xBA,0xBA, 0xBA,0xBB, 0xBA,0xBC, 0xBA,0xBD, 0xBA,0xBE, 0xBA,0xBF, 0xBA,0x80, +0xBA,0x81, 0xBA,0x82, 0xBA,0x83, 0xBA,0x84, 0xBA,0x85, 0xBA,0x86, 0xBA,0x87, 0xBB,0xB9, +0xBB,0xBA, 0xBB,0xBB, 0xBB,0xBC, 0xBB,0xBD, 0xBB,0xBE, 0xBB,0xBF, 0xBB,0x80, 0xBB,0x81, +0xBB,0x82, 0xBB,0x83, 0xBB,0x84, 0xBB,0x85, 0xBB,0x86, 0xBB,0x87, 0xBC,0xB9, 0xBC,0xBA, +0xBC,0xBB, 0xBC,0xBC, 0xBC,0xBD, 0xBC,0xBE, 0xBC,0xBF, 0xBC,0x80, 0xBC,0x81, 0xBC,0x82, +0xBC,0x83, 0xBC,0x84, 0xBC,0x85, 0xBC,0x86, 0xBC,0x87, 0xBD,0xB9, 0xBD,0xBA, 0xBD,0xBB, +0xBD,0xBC, 0xBD,0xBD, 0xBD,0xBE, 0xBD,0xBF, 0xBD,0x80, 0xBD,0x81, 0xBD,0x82, 0xBD,0x83, +0xBD,0x84, 0xBD,0x85, 0xBD,0x86, 0xBD,0x87, 0xBE,0xB9, 0xBE,0xBA, 0xBE,0xBB, 0xBE,0xBC, +0xBE,0xBD, 0xBE,0xBE, 0xBE,0xBF, 0xBE,0x80, 0xBE,0x81, 0xBE,0x82, 0xBE,0x83, 0xBE,0x84, +0xBE,0x85, 0xBE,0x86, 0xBE,0x87, 0xBF,0xB9, 0xBF,0xBA, 0xBF,0xBB, 0xBF,0xBC, 0xBF,0xBD, +0xBF,0xBE, 0xBF,0xBF, 0xBF,0x80, 0xBF,0x81, 0xBF,0x82, 0xBF,0x83, 0xBF,0x84, 0xBF,0x85, +0xBF,0x86, 0xBF,0x87, 0x80,0xB9, 0x80,0xBA, 0x80,0xBB, 0x80,0xBC, 0x80,0xBD, 0x80,0xBE, +0x80,0xBF, 0x80,0x80, 0x80,0x81, 0x80,0x82, 0x80,0x83, 0x80,0x84, 0x80,0x85, 0x80,0x86, +0x80,0x87, 0x81,0xB9, 0x81,0xBA, 0x81,0xBB, 0x81,0xBC, 0x81,0xBD, 0x81,0xBE, 0x81,0xBF, +0x81,0x80, 0x81,0x81, 0x81,0x82, 0x81,0x83, 0x81,0x84, 0x81,0x85, 0x81,0x86, 0x81,0x87, +0x82,0xB9, 0x82,0xBA, 0x82,0xBB, 0x82,0xBC, 0x82,0xBD, 0x82,0xBE, 0x82,0xBF, 0x82,0x80, +0x82,0x81, 0x82,0x82, 0x82,0x83, 0x82,0x84, 0x82,0x85, 0x82,0x86, 0x82,0x87, 0x83,0xB9, +0x83,0xBA, 0x83,0xBB, 0x83,0xBC, 0x83,0xBD, 0x83,0xBE, 0x83,0xBF, 0x83,0x80, 0x83,0x81, +0x83,0x82, 0x83,0x83, 0x83,0x84, 0x83,0x85, 0x83,0x86, 0x83,0x87, 0x84,0xB9, 0x84,0xBA, +0x84,0xBB, 0x84,0xBC, 0x84,0xBD, 0x84,0xBE, 0x84,0xBF, 0x84,0x80, 0x84,0x81, 0x84,0x82, +0x84,0x83, 0x84,0x84, 0x84,0x85, 0x84,0x86, 0x84,0x87, 0x85,0xB9, 0x85,0xBA, 0x85,0xBB, +0x85,0xBC, 0x85,0xBD, 0x85,0xBE, 0x85,0xBF, 0x85,0x80, 0x85,0x81, 0x85,0x82, 0x85,0x83, +0x85,0x84, 0x85,0x85, 0x85,0x86, 0x85,0x87, 0x86,0xB9, 0x86,0xBA, 0x86,0xBB, 0x86,0xBC, +0x86,0xBD, 0x86,0xBE, 0x86,0xBF, 0x86,0x80, 0x86,0x81, 0x86,0x82, 0x86,0x83, 0x86,0x84, +0x86,0x85, 0x86,0x86, 0x86,0x87, 0x87,0xB9, 0x87,0xBA, 0x87,0xBB, 0x87,0xBC, 0x87,0xBD, +0x87,0xBE, 0x87,0xBF, 0x87,0x80, 0x87,0x81, 0x87,0x82, 0x87,0x83, 0x87,0x84, 0x87,0x85, +0x87,0x86, 0x87,0x87, 0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x18, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xF3,0x7D, 0xF6,0x06, 0x42,0x96, 0xF7,0x04, 0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF4,0x02, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xF5,0xE0, 0xF7,0x33, 0x28,0x00, 0xF3,0x84, 0x6F,0x30, 0x90,0x13, +0xFF,0xFC, 0x27,0x1C, 0x00,0x02, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, 0xFF,0xEC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xEC, 0xF7,0x02, 0x00,0x00, 0x97,0x1E, +0x00,0x08, 0x83,0x16, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x93,0x1E, 0x00,0x0C, 0x83,0x16, +0x00,0x08, 0x04,0x9C, 0x00,0x22, 0x93,0x1E, 0x00,0x1C, 0x83,0x16, 0x00,0x0C, 0x93,0x96, +0xFF,0xF4, 0x87,0x1A, 0x00,0x00, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x06,0x18, +0x00,0x02, 0x75,0xB1, 0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0x06,0x9C, 0x00,0x20, 0xF7,0x37, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x96,0x96, +0xFF,0xE4, 0x75,0x35, 0x00,0x1E, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x24, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x26, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x28, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x2A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x2C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x04,0x9C, 0x00,0x2E, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x04,0x9C, 0x00,0x30, 0x76,0x31, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, +0x28,0x00, 0x87,0x1E, 0x00,0x20, 0x75,0x28, 0xFF,0xE5, 0xC7,0x38, 0x57,0xC0, 0x77,0x39, +0xFF,0xF0, 0x20,0x3A, 0x00,0x08, 0xEE,0x00, 0xF5,0x98, 0xF3,0x06, 0x14,0xD8, 0x83,0x16, +0xFF,0xE4, 0x87,0x1E, 0x00,0x20, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x25,0xB8, 0x00,0x01, 0xC4,0xAC, 0x58,0x00, 0x04,0x24, +0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xEC,0x00, 0xF5,0x95, 0xF5,0x02, 0x00,0x00, 0x83,0x16, +0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0x06,0x18, 0x00,0x02, 0xA7,0x32, 0x58,0x02, 0xC6,0xB0, +0x58,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xE8, 0xC6,0xB0, 0x40,0x00, 0x77,0xB8, 0x00,0x18, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x00, +0xF5,0x7D, 0xF7,0x37, 0x68,0x00, 0xF5,0x02, 0xFF,0xFF, 0xC7,0x30, 0x48,0x00, 0xF5,0x3B, +0x68,0x00, 0x24,0xA4, 0x00,0x02, 0x24,0x20, 0x00,0x02, 0xE0,0x00, 0xF5,0x34, 0x25,0xAC, +0x00,0x01, 0xF3,0x06, 0x14,0xD8, 0x93,0x13, 0xFF,0xFC, 0xF3,0x02, 0x00,0x34, 0x93,0x13, +0xFF,0xFC, 0x83,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x1A, 0x00,0x00, 0x76,0x99, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xEA,0xB8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x10, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x10, 0xF7,0x04, +0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xF6,0x39, 0xF6,0x06, +0x42,0x96, 0xF7,0x04, 0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF4,0x02, +0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, +0xF7,0x48, 0xF7,0x33, 0x28,0x00, 0xF5,0x04, 0x6F,0x30, 0x00,0x00, 0x00,0x01, 0x95,0x16, +0xFF,0xF4, 0x90,0x13, 0xFF,0xFC, 0x27,0x28, 0x00,0x02, 0x97,0x13, 0xFF,0xFC, 0x85,0x96, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0x00,0x04, 0xF6,0x02, 0x00,0x00, 0x86,0xAA, +0x00,0x00, 0x77,0x29, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0xF7,0x02, 0x00,0x01, 0xC0,0x36, 0x74,0x00, 0xE6,0x00, 0xF6,0x99, 0x96,0x96, +0xFF,0xEC, 0xC6,0x38, 0x00,0x00, 0x96,0x13, 0xFF,0xFC, 0x85,0x96, 0xFF,0xEC, 0x85,0x16, +0xFF,0xF4, 0x47,0x2C, 0xFF,0xFE, 0x07,0x38, 0x00,0x02, 0xC7,0x28, 0x72,0x00, 0x97,0x13, +0xFF,0xFC, 0x85,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0xFF,0xF4, 0xF7,0x02, +0x00,0x02, 0x97,0x2A, 0x00,0x08, 0x85,0x96, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x95,0xAA, +0x00,0x0C, 0x85,0x96, 0x00,0x0C, 0x00,0x00, 0x00,0x01, 0x95,0xAA, 0x00,0x1C, 0xF5,0x06, +0x14,0xD8, 0x95,0x13, 0xFF,0xFC, 0xF5,0x82, 0x00,0x20, 0x95,0x93, 0xFF,0xFC, 0x85,0x16, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x85,0x96, 0x00,0x00, 0x85,0x16, +0xFF,0xEC, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, +0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, 0x50,0x00, 0x97,0x13, 0xFF,0xFC, 0x85,0x96, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xEA,0xB8, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x10, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x85,0x96, 0x00,0x00, 0x85,0x16, 0x00,0x04, 0x87,0x16, 0x00,0x08, 0xF6,0x02, +0xFF,0xFC, 0x06,0xA8, 0x00,0x03, 0xC6,0xB4, 0x64,0x00, 0x07,0x38, 0x00,0x03, 0xC7,0x38, +0x64,0x00, 0xC7,0x34, 0x70,0x00, 0x97,0x13, 0xFF,0xFC, 0xC5,0xAC, 0x6A,0x00, 0x95,0x93, +0xFF,0xFC, 0xF7,0x02, 0x00,0x03, 0xC5,0x28, 0x74,0x00, 0xF7,0x02, 0x00,0x04, 0xC7,0x38, +0x52,0x00, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x14,0xD8, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x10, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x10, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xF8,0x0D, 0xF6,0x06, 0x42,0x96, 0xF7,0x04, 0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF4,0x02, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xF9,0x20, 0xF7,0x33, 0x28,0x00, 0xF5,0x04, 0x6F,0x30, 0x00,0x00, +0x00,0x01, 0x95,0x16, 0xFF,0xF4, 0x90,0x13, 0xFF,0xFC, 0x27,0x28, 0x00,0x02, 0x97,0x13, +0xFF,0xFC, 0x85,0x96, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, 0x00,0x04, 0xF6,0x02, +0x00,0x00, 0x86,0xAA, 0x00,0x00, 0x77,0x29, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB5, 0xFF,0xF0, 0xF7,0x02, 0x00,0x01, 0xC0,0x36, 0x74,0x00, 0xE6,0x00, +0xF8,0x6D, 0x96,0x96, 0xFF,0xEC, 0xC6,0x38, 0x00,0x00, 0x96,0x13, 0xFF,0xFC, 0x85,0x96, +0xFF,0xEC, 0x85,0x16, 0xFF,0xF4, 0x47,0x2C, 0xFF,0xFE, 0x07,0x38, 0x00,0x02, 0xC7,0x28, +0x72,0x00, 0x97,0x13, 0xFF,0xFC, 0x85,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x85,0x16, +0xFF,0xF4, 0xF5,0x82, 0x00,0x06, 0xF5,0xAB, 0x28,0x00, 0x85,0x96, 0x00,0x08, 0x07,0x28, +0x00,0x02, 0x95,0xAA, 0x00,0x04, 0x05,0x14, 0x00,0x0E, 0x85,0x2A, 0x00,0x00, 0x77,0xA9, +0x00,0x1E, 0x77,0xBC, 0xFF,0xE5, 0xC5,0x28, 0x7F,0xC0, 0x75,0x29, 0xFF,0xF0, 0xF5,0x3B, +0x28,0x00, 0xF5,0x86, 0x14,0xD8, 0x95,0x93, 0xFF,0xFC, 0xF5,0x02, 0x00,0x08, 0x95,0x13, +0xFF,0xFC, 0x85,0x96, 0x00,0x00, 0x85,0x16, 0xFF,0xEC, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0xC7,0x38, +0x50,0x00, 0x97,0x13, 0xFF,0xFC, 0x85,0x96, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xF7,0x5C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x10, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x08, 0xF7,0x04, +0x75,0xEC, 0x83,0x96, 0x00,0x04, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, 0xFA,0x64, 0xF6,0x06, +0x42,0x96, 0xF5,0x04, 0x6F,0x30, 0x90,0x13, 0xFF,0xFC, 0x27,0x28, 0x00,0x02, 0x97,0x13, +0xFF,0xFC, 0x83,0x16, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0xF4, 0x95,0x16, 0xFF,0xF0, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, +0xFF,0xFC, 0x85,0x16, 0xFF,0xF0, 0xF3,0x02, 0x00,0x07, 0x83,0x96, 0xFF,0xF4, 0xF3,0x2B, +0x28,0x00, 0x07,0x28, 0x00,0x02, 0xF3,0x02, 0x00,0x01, 0xF3,0x3B, 0x28,0x00, 0x87,0x1E, +0x00,0x00, 0x76,0x9D, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x05,0x9C, 0x00,0x02, 0x76,0x2D, +0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0x74,0x9D, 0x00,0x1E, 0x74,0xA4, 0xFF,0xE5, 0x04,0x1C, +0x00,0x06, 0x83,0x16, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0x06,0xA8, +0x00,0x04, 0xF7,0x37, 0x28,0x00, 0x87,0x2E, 0x00,0x00, 0x06,0xA8, 0x00,0x06, 0x75,0xA1, +0x00,0x1E, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x1E, +0x00,0x04, 0x75,0xAC, 0xFF,0xE5, 0x06,0xA8, 0x00,0x08, 0x76,0x19, 0x00,0x1E, 0xC7,0x38, +0x4F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0x87,0x22, 0x00,0x00, 0x06,0xA8, +0x00,0x0A, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x37, 0x28,0x00, 0xF3,0x06, +0x14,0xD8, 0x93,0x13, 0xFF,0xFC, 0xF3,0x02, 0x00,0x0C, 0x93,0x13, 0xFF,0xFC, 0x83,0x16, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x1A, 0x00,0x00, 0x76,0x30, 0xFF,0xE5, 0xC7,0x38, +0x67,0xC0, 0x77,0x39, 0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xF7,0x5C, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, 0xFA,0x84, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xF4,0x02, +0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xF7,0x33, +0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x48, 0xF7,0x04, 0x75,0xEC, 0x85,0x96, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x00, +0xFD,0x98, 0xF6,0x06, 0x42,0x96, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0x24,0x14, 0x00,0x1E, 0x06,0x2C, 0x00,0x02, 0x75,0x31, +0x00,0x1E, 0x24,0x94, 0x00,0x20, 0x75,0x28, 0xFF,0xE5, 0xF3,0x84, 0x6E,0x50, 0xC7,0x38, +0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x32, 0x00,0x00, 0x93,0x96, +0xFF,0xC4, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x1C, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x1A, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x18, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x16, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x14, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x24,0x14, +0x00,0x12, 0x06,0x30, 0x00,0x02, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x06,0x30, +0x00,0x02, 0x87,0x32, 0x00,0x00, 0x24,0x14, 0x00,0x10, 0x76,0x31, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x23, 0x28,0x00, 0x90,0x13, +0xFF,0xFC, 0x27,0x1C, 0x00,0x02, 0x97,0x13, 0xFF,0xFC, 0x94,0x93, 0xFF,0xFC, 0x95,0x96, +0xFF,0xBC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xCD,0xB8, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, +0xFF,0xBC, 0x23,0x14, 0x00,0x36, 0x24,0x94, 0x00,0x38, 0x73,0xA5, 0x00,0x1E, 0x73,0x9C, +0xFF,0xE5, 0xF4,0x04, 0x42,0xC0, 0xF6,0x86, 0x42,0xC0, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0x87,0x2E, 0x00,0x00, 0x76,0x2D, 0x00,0x1E, 0x76,0x30, 0xFF,0xE5, 0xC4,0x20, +0x6F,0xC0, 0x74,0x20, 0xFF,0xF0, 0x05,0xAC, 0x00,0x02, 0x75,0x2D, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0xC7,0x38, 0x67,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x27, 0x28,0x00, 0x87,0x2E, +0x00,0x00, 0xF6,0x04, 0x6E,0x50, 0xC7,0x38, 0x57,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x34, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x32, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x30, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x2E, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x2C, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x23,0x14, 0x00,0x2A, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x76,0xAD, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x05,0xAC, 0x00,0x02, 0x87,0x2E, 0x00,0x00, 0x23,0x14, 0x00,0x28, 0x75,0xAD, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC7,0x38, 0x5F,0xC0, 0x77,0x38, 0xFF,0xF0, 0xF7,0x1B, +0x28,0x00, 0x87,0x16, 0xFF,0xC8, 0xF6,0x82, 0x00,0x03, 0xC7,0x38, 0x3F,0xC0, 0x96,0xB2, +0x00,0x08, 0x06,0xB0, 0x1D,0xD8, 0xF4,0x37, 0x28,0x00, 0xF3,0x86, 0x14,0xD8, 0x93,0x93, +0xFF,0xFC, 0xF3,0x82, 0x1D,0xE0, 0x93,0x93, 0xFF,0xFC, 0x96,0x13, 0xFF,0xFC, 0x77,0x39, +0xFF,0xF0, 0x97,0x13, 0xFF,0xFC, 0x83,0x96, 0xFF,0xC4, 0x00,0x00, 0x00,0x01, 0x93,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xEA,0xB8, 0x97,0x93, 0xFF,0xFC, 0xE0,0x00, +0xFD,0xB8, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0x94, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xF4,0x02, 0x00,0x00, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x86,0x16, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x32, 0x00,0x00, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, +0x00,0x06, 0xE6,0x00, 0xFE,0x21, 0xF5,0x82, 0x00,0x1E, 0xF7,0x04, 0x42,0xA8, 0xF6,0x06, +0x42,0xA8, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, +0xFF,0xF0, 0x07,0x38, 0x00,0x01, 0xE0,0x00, 0xFE,0x34, 0xF7,0x33, 0x28,0x00, 0xF6,0x05, +0x6F,0x34, 0x95,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x04, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x16, +0x00,0x00, 0x85,0x96, 0x00,0x04, 0x87,0x32, 0x00,0x00, 0x76,0xB1, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x20,0x3A, 0x00,0x07, 0xE6,0x00, +0xFE,0x9D, 0xF4,0x02, 0x00,0x00, 0xF7,0x04, 0x42,0xA8, 0xF6,0x06, 0x42,0xAA, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xE0,0x00, 0xFF,0x1C, 0xF7,0x33, 0x28,0x00, 0x07,0x30, 0x00,0x02, 0x86,0xBA, +0x00,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, +0xFF,0xF0, 0x20,0x36, 0x00,0x01, 0xE6,0x00, 0xFE,0xD5, 0xF6,0x05, 0x6F,0x34, 0x20,0x36, +0x00,0x02, 0xE6,0x00, 0xFE,0xE5, 0xF5,0x02, 0x00,0x20, 0xE0,0x00, 0xFE,0xFC, 0xF6,0x06, +0x42,0xAC, 0x20,0x2E, 0x00,0x0C, 0xE6,0x00, 0xFF,0x1C, 0xF4,0x02, 0x00,0x00, 0xF5,0x02, +0x00,0x1F, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0xFF,0x1C, 0xF4,0x02, 0x00,0x01, 0xF7,0x04, 0x42,0xAC, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0xF4,0x02, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x86,0x96, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x04, 0xF6,0x02, 0x00,0x00, 0x07,0x38, 0x00,0x08, 0x97,0x36, 0x00,0x04, 0x87,0x36, +0x00,0x08, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xEC,0x00, 0xFF,0x7D, 0xF6,0x85, +0x6F,0x34, 0x87,0x36, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x03, 0xEE,0x00, +0xFF,0x80, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x00, +0xFF,0xBD, 0xF6,0x06, 0x42,0xAE, 0xF7,0x04, 0x6F,0x34, 0x00,0x00, 0x00,0x01, 0x87,0x3A, +0x00,0x08, 0xF6,0x82, 0xFF,0xEC, 0x77,0x39, 0x00,0x02, 0xA7,0x3A, 0x68,0x02, 0x00,0x00, +0x00,0x01, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, +0xFF,0xFC, 0xE0,0x00, 0xFF,0xD8, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x42,0xAC, 0x76,0xB1, +0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x07,0x38, +0x00,0x01, 0xF7,0x33, 0x28,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x17, 0x00,0x00, +0x00,0x1A, 0x00,0x00, 0x00,0x1D, 0x00,0x00, 0x00,0x18, 0x00,0x00, 0x00,0x00, 0x56,0x65, +0x72,0x73, 0x69,0x6F, 0x6E,0x53, 0x74,0x72, 0x69,0x6E, 0x67,0x3A, 0x20,0x6D, 0x63,0x70, +0x2D,0x6C, 0x34,0x76, 0x33,0x20, 0x33,0x2E, 0x30,0x38, 0x63,0x20, 0x44,0x65, 0x63,0x20, +0x31,0x31, 0x20,0x31, 0x39,0x39, 0x36,0x20, 0x31,0x33, 0x3A,0x30, 0x36,0x3A, 0x31,0x36, +0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, 0xE0,0x0C, 0xFF,0x02, +0x00,0x00, 0x97,0x02, 0xFF,0x84, 0xF7,0x06, 0x0C,0x3E, 0xCF,0xFC, 0x75,0x80, 0xF6,0x02, +0x00,0x02, 0x96,0x02, 0xFF,0x8C, 0x90,0x02, 0xFF,0x88, 0xF7,0x04, 0xE0,0x20, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x00,0x74, 0xF6,0x82, 0x00,0x00, 0xF6,0x82, +0x00,0x03, 0x96,0x82, 0xFF,0x98, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x0C, 0xF5,0x02, 0x14,0x94, 0xF5,0x05, 0x7B,0x00, 0xF5,0x0E, +0xF0,0x14, 0xF5,0x05, 0x7B,0x08, 0xF7,0x06, 0xE0,0x00, 0xF6,0x86, 0x7B,0x68, 0xC7,0x38, +0x6A,0x00, 0xF7,0x05, 0x7A,0xF0, 0xF5,0x02, 0x00,0x4C, 0xF6,0x82, 0x00,0x00, 0x20,0x36, +0x00,0x02, 0xEE,0x01, 0x01,0x24, 0xF5,0x05, 0x7A,0xF8, 0xC5,0xB4, 0x00,0x00, 0xC6,0x34, +0x00,0x00, 0xF7,0x06, 0xE0,0x30, 0xC7,0x2C, 0x70,0x00, 0xF5,0x06, 0x6F,0x44, 0xB7,0x32, +0x50,0x02, 0x90,0x13, 0xFF,0xFC, 0x97,0x13, 0xFF,0xFC, 0x95,0x96, 0xFF,0xF4, 0x96,0x16, +0xFF,0xF0, 0x96,0x96, 0xFF,0xEC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x03,0x1C, 0x97,0x93, +0xFF,0xFC, 0x85,0x96, 0xFF,0xF4, 0x86,0x16, 0xFF,0xF0, 0x86,0x96, 0xFF,0xEC, 0x05,0xAC, +0x14,0x94, 0x06,0xB4, 0x00,0x01, 0x20,0x36, 0x00,0x02, 0xEE,0x01, 0x00,0xD5, 0x06,0x30, +0x00,0x04, 0xF5,0x02, 0x00,0x22, 0xF5,0x05, 0x6F,0x58, 0xF0,0x05, 0x6F,0x54, 0xF0,0x05, +0x6F,0x50, 0xF0,0x05, 0x2D,0x40, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x29,0x58, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, +0x00,0x03, 0xF7,0x05, 0xE0,0x08, 0xF7,0x04, 0x7A,0xD8, 0xF6,0x02, 0x00,0x01, 0x96,0x02, +0xFF,0x94, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x01,0x91, 0xF7,0x06, 0x7A,0xE8, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x03,0xDC, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x7A,0xE8, 0xF6,0x02, +0x00,0x05, 0xF6,0x3B, 0x28,0x00, 0xF7,0x06, 0x7A,0xE0, 0x86,0x82, 0xFF,0x44, 0xF6,0x02, +0x00,0x03, 0x20,0x36, 0x00,0x00, 0xE6,0x01, 0x01,0xC9, 0xF6,0x3B, 0x28,0x00, 0xF7,0x04, +0x6F,0x64, 0x86,0x82, 0xFF,0x44, 0x07,0x38, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x01, +0x01,0xB0, 0xF7,0x05, 0x6F,0x64, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x00,0x34, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x00,0x8C, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x44,0x28, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0xF0, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x0C,0x60, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x04,0x08, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x00,0x20, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x0B,0xD8, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1D,0x68, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0x50, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x5F,0x68, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x6D,0xEC, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x21,0xD0, 0x97,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x22,0x2C, 0x97,0x93, 0xFF,0xFC, 0x90,0x02, +0xFF,0x94, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x0B,0xFC, 0x97,0x93, 0xFF,0xFC, 0xF4,0x02, +0x00,0x00, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x08, 0xF6,0x02, 0x00,0x00, 0xC5,0xB0, 0x00,0x00, 0x20,0x32, 0x00,0x02, 0xEE,0x01, +0x03,0x08, 0xF5,0x06, 0x6F,0x44, 0xA6,0xAE, 0x50,0x02, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x01, 0xE6,0x01, 0x02,0xFC, 0xF5,0x02, +0x00,0x02, 0x95,0x13, 0xFF,0xFC, 0x96,0x93, 0xFF,0xFC, 0x95,0x96, 0xFF,0xF4, 0x96,0x16, +0xFF,0xF0, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x03,0x1C, 0x97,0x93, 0xFF,0xFC, 0x86,0x16, +0xFF,0xF0, 0x85,0x96, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x05,0xAC, 0x00,0x04, 0xE0,0x01, +0x02,0xAC, 0x06,0x30, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x87,0x16, 0x00,0x00, 0xF6,0x02, 0x00,0x00, 0xF6,0x82, 0x00,0x08, 0x96,0x3A, +0x00,0x08, 0x96,0x3A, 0x00,0x0C, 0x96,0x3A, 0x09,0xD8, 0x96,0x3A, 0x09,0xDC, 0x96,0x3A, +0x0E,0xF4, 0x96,0x3A, 0x0E,0xF8, 0x96,0xBA, 0x14,0x20, 0x96,0x3A, 0x14,0x24, 0x90,0xBA, +0x14,0x8C, 0x86,0x96, 0x00,0x04, 0x90,0xBA, 0x14,0x90, 0x96,0xBA, 0x00,0x00, 0x96,0x3A, +0x00,0x04, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, +0x00,0x00, 0x87,0x16, 0x00,0x08, 0x86,0x16, 0x00,0x04, 0x77,0x38, 0xFF,0xFF, 0xC5,0x30, +0x70,0x00, 0xC0,0x32, 0x52,0x00, 0xE4,0x01, 0x03,0xC9, 0x00,0x00, 0x00,0x01, 0x87,0x2E, +0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0xC0,0x32, 0x52,0x00, 0xE4,0x01, +0x03,0xA0, 0x05,0xAC, 0x00,0x02, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x02, 0x00,0x01, 0xE0,0x01, 0x03,0xE8, 0xF7,0x05, 0x7A,0xD8, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x02, +0x00,0x0A, 0xF5,0x05, 0x71,0xCC, 0xF0,0x05, 0x71,0xD4, 0xF0,0x05, 0x71,0xD0, 0xF0,0x05, +0x71,0xC4, 0xF5,0x02, 0x00,0x01, 0xF6,0x82, 0x00,0x00, 0x20,0x36, 0x00,0x0A, 0xEC,0x01, +0x04,0x64, 0xF5,0x05, 0x71,0xC8, 0xF5,0x8A, 0x1E,0x00, 0xF6,0x06, 0x71,0xC4, 0x47,0x2C, +0xFF,0xFC, 0x97,0x32, 0x00,0x18, 0x06,0x30, 0x00,0x04, 0x06,0xB4, 0x00,0x01, 0xF7,0x04, +0x71,0xCC, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x01, 0x04,0x41, 0x05,0xAC, +0x21,0x4C, 0xF0,0x05, 0x71,0x98, 0xF5,0x06, 0x6F,0x68, 0x95,0x13, 0xFF,0xFC, 0xF5,0x06, +0x7B,0x18, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF5,0x06, 0x05,0xD4, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x05, 0x97,0x93, +0xFF,0xFC, 0xF5,0x06, 0x6F,0x68, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x0B,0x70, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, +0x00,0x06, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x6F,0x68, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x0B,0xA0, 0x95,0x13, +0xFF,0xFC, 0xF7,0x82, 0x00,0x05, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x70,0x80, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, +0x0B,0x70, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x06, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, +0x70,0x80, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x06, 0x05,0x58, 0x95,0x13, 0xFF,0xFC, 0xF5,0x02, 0x00,0x0A, 0x95,0x13, +0xFF,0xFC, 0xF5,0x06, 0x71,0x0C, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x05,0x58, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, +0x71,0xC4, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x05,0x7D, 0xF6,0x86, +0x71,0xC4, 0xE0,0x01, 0x05,0x94, 0xF7,0x02, 0x00,0x00, 0xF7,0x04, 0x71,0xD0, 0x00,0x00, +0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x87,0x3A, 0x00,0x18, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x05,0xAC, 0xF7,0x05, 0x7B,0x10, 0xF6,0x06, +0x71,0x0C, 0xE0,0x01, 0x05,0xC0, 0xF6,0x05, 0x7B,0x18, 0xF6,0x06, 0x6F,0x68, 0xF6,0x05, +0x7B,0x18, 0x97,0x02, 0xFF,0x48, 0x07,0x38, 0x21,0x28, 0x97,0x02, 0xFF,0x4C, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x10, 0x86,0x82, +0xFF,0x48, 0xF4,0x86, 0x6F,0x68, 0xF4,0x85, 0x7B,0x18, 0xF5,0x04, 0x7B,0x10, 0x26,0xB4, +0x00,0x02, 0x85,0xB6, 0x00,0x00, 0x87,0x2A, 0x00,0x00, 0x76,0x29, 0x00,0x1E, 0x76,0x30, +0xFF,0xE5, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC5,0xAC, 0x6F,0xC0, 0xC7,0x38, +0x67,0xC0, 0x77,0x39, 0xFF,0xF0, 0x77,0xB8, 0x00,0x10, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x06,0x45, 0x75,0xAC, 0xFF,0xF0, 0xF7,0x04, 0x71,0xAC, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x71,0xAC, 0xF7,0x04, 0x71,0xAC, 0xE0,0x01, 0x08,0xC4, 0xF7,0x02, +0x00,0x01, 0x77,0x2C, 0xFF,0xF8, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x06,0x71, 0x76,0xA9, +0x00,0x1E, 0xF7,0x04, 0x71,0xA8, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x71,0xA8, 0xF7,0x04, 0x71,0xA8, 0xE0,0x01, 0x08,0xC4, 0xF7,0x02, 0x00,0x01, 0x87,0x2A, +0x00,0x00, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x27,0x38, +0x00,0x04, 0x20,0x3A, 0x00,0x03, 0xE2,0x01, 0x08,0xA4, 0x00,0x00, 0x00,0x01, 0x77,0x39, +0x00,0x02, 0xF6,0x86, 0x06,0xA4, 0xA6,0xB6, 0x70,0x02, 0x00,0x00, 0x00,0x01, 0xC1,0x34, +0x00,0x00, 0x00,0x01, 0x06,0xB4, 0x00,0x01, 0x07,0x7C, 0x00,0x01, 0x07,0xEC, 0x00,0x01, +0x08,0x44, 0x87,0x2A, 0x00,0x04, 0xC4,0x84, 0x00,0x00, 0xC0,0x3A, 0x4A,0x00, 0xE6,0x01, +0x06,0xD8, 0x00,0x00, 0x00,0x01, 0x87,0x02, 0xFF,0x48, 0x00,0x00, 0x00,0x01, 0xC7,0x38, +0x52,0x00, 0x97,0x2A, 0x00,0x04, 0x87,0x2A, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x21,0x00, 0xEE,0x01, 0x07,0x3C, 0xF6,0x02, 0x00,0x00, 0x86,0xAA, 0x00,0x04, 0x87,0x02, +0xFF,0x48, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x52,0x00, 0x27,0x38, 0x00,0x28, 0xC0,0x36, +0x72,0x00, 0xE6,0x01, 0x07,0x3C, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x1D, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x01, 0x07,0x3C, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x17, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x01, 0x07,0x3D, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x16, 0x70,0x3E, +0xFF,0xE1, 0xE6,0x01, 0x07,0x44, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x01, 0x08,0x88, 0x00,0x00, 0x00,0x01, 0x87,0x2A, 0x00,0x18, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xEE,0x01, 0x08,0xC1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x71,0xA4, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x71,0xA4, 0xF7,0x04, +0x71,0xA4, 0xE0,0x01, 0x08,0xC4, 0xF7,0x02, 0x00,0x01, 0x87,0x2A, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x21,0x00, 0xEE,0x01, 0x07,0xE0, 0xF6,0x02, 0x00,0x00, 0x86,0xAA, +0x00,0x04, 0x87,0x02, 0xFF,0x48, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x52,0x00, 0x27,0x38, +0x00,0x0C, 0xC0,0x36, 0x72,0x00, 0xE6,0x01, 0x07,0xE0, 0x00,0x00, 0x00,0x01, 0x77,0xFC, +0x00,0x1D, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, 0x07,0xE0, 0x00,0x00, 0x00,0x01, 0x77,0xFC, +0x00,0x17, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, 0x07,0xE1, 0x00,0x00, 0x00,0x01, 0x77,0xFC, +0x00,0x16, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, 0x08,0x80, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0xE0,0x01, 0x08,0x80, 0x20,0x32, 0x00,0x00, 0x87,0x02, 0xFF,0x48, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x52,0x00, 0x27,0x38, 0x00,0x04, 0x20,0x3A, 0x00,0x08, 0xE6,0x01, +0x08,0x38, 0xF6,0x82, 0x00,0x00, 0x77,0xFC, 0x00,0x1D, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x38, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x17, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x39, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x16, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x80, 0x20,0x36, 0x00,0x00, 0xF6,0x82, 0x00,0x01, 0xE0,0x01, 0x08,0x80, 0x20,0x36, +0x00,0x00, 0xF7,0x02, 0x00,0x00, 0x77,0xFC, 0x00,0x1D, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x78, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x17, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x79, 0x00,0x00, 0x00,0x01, 0x77,0xFC, 0x00,0x16, 0x70,0x3E, 0xFF,0xE1, 0xE6,0x01, +0x08,0x80, 0x20,0x3A, 0x00,0x00, 0xF7,0x02, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x08,0xC1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x71,0xA0, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x71,0xA0, 0xF7,0x04, 0x71,0xA0, 0xE0,0x01, 0x08,0xC4, 0xF7,0x02, +0x00,0x01, 0xF7,0x04, 0x71,0x9C, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x71,0x9C, 0xF7,0x04, 0x71,0x9C, 0xE0,0x01, 0x08,0xC4, 0xF7,0x02, 0x00,0x01, 0xF7,0x02, +0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x09,0x68, 0x00,0x00, 0x00,0x01, 0xF6,0x84, +0x7B,0x10, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x76,0xB5, 0x00,0x1E, 0x76,0xB4, +0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x39, 0xFF,0xF0, 0x27,0x38, 0x00,0x04, 0x20,0x3A, +0x00,0x03, 0xE2,0x01, 0x0B,0x50, 0x77,0x39, 0x00,0x02, 0xF6,0x86, 0x09,0x0C, 0xA6,0xB6, +0x70,0x02, 0x00,0x00, 0x00,0x01, 0xC1,0x34, 0x00,0x00, 0x00,0x01, 0x09,0x1C, 0x00,0x01, +0x0A,0xE0, 0x00,0x01, 0x0A,0xAC, 0x00,0x01, 0x0B,0x14, 0xF7,0x04, 0x71,0xD0, 0xF6,0x04, +0x71,0xCC, 0x06,0xB8, 0x00,0x01, 0xC0,0x36, 0x62,0x00, 0xE6,0x01, 0x09,0x38, 0xC7,0x34, +0x00,0x00, 0xF7,0x02, 0x00,0x00, 0xF5,0x84, 0x71,0xD4, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x5A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x09,0x85, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x71,0xB0, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x71,0xB0, 0xF7,0x04, 0x71,0xB0, 0xF7,0x04, 0x71,0xB4, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x71,0xB4, 0xF7,0x04, 0x71,0xB4, 0xE0,0x01, 0x0B,0x50, 0x00,0x00, +0x00,0x01, 0xF4,0x84, 0x71,0xC8, 0xF6,0x85, 0x71,0xD0, 0x94,0x96, 0xFF,0xF4, 0xF4,0x84, +0x7B,0x10, 0xC0,0x36, 0x62,0x00, 0xE6,0x01, 0x09,0xA4, 0x94,0x96, 0xFF,0xEC, 0xF0,0x05, +0x71,0xD0, 0xF7,0x04, 0x71,0xD0, 0xF0,0x05, 0x71,0xC8, 0x84,0x96, 0xFF,0xEC, 0xC0,0x3A, +0x5A,0x00, 0x47,0x0C, 0x00,0x01, 0xF7,0x05, 0x71,0xC4, 0x87,0x26, 0x00,0x08, 0x00,0x00, +0x00,0x01, 0x70,0x3A, 0xFF,0xE1, 0xE6,0x01, 0x09,0xE1, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x71,0x98, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x71,0x98, 0x84,0x96, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x01, 0x0A,0x71, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x05,0x58, 0x97,0x93, 0xFF,0xFC, 0xF6,0x02, +0x00,0x09, 0x20,0x32, 0x00,0x14, 0xE6,0x01, 0x0A,0x4D, 0x27,0x00, 0x00,0x0C, 0x20,0x3A, +0x00,0x01, 0xE2,0x01, 0x0A,0x4D, 0xF7,0x06, 0x2D,0xCC, 0xF6,0x84, 0x2E,0xCC, 0x00,0x00, +0x00,0x01, 0x75,0xB5, 0x00,0x02, 0xB6,0x2E, 0x70,0x02, 0x06,0xB4, 0x00,0x01, 0xF6,0x85, +0x2E,0xCC, 0x86,0x02, 0xFF,0x34, 0xF7,0x06, 0x2E,0x4C, 0x20,0x36, 0x00,0x1F, 0xE2,0x01, +0x0A,0x4D, 0xB6,0x2E, 0x70,0x02, 0xF0,0x05, 0x2E,0xCC, 0xF7,0x04, 0x2D,0x68, 0x00,0x00, +0x00,0x01, 0x87,0x3A, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x3A, 0x00,0x28, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xC1,0x38, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0xF7,0x04, +0x71,0xBC, 0x84,0x96, 0xFF,0xEC, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x71,0xBC, 0xF7,0x04, +0x71,0xBC, 0x86,0xA6, 0x00,0x04, 0x84,0x96, 0xFF,0xF4, 0xF7,0x04, 0x71,0xB8, 0x20,0x26, +0x00,0x00, 0xC7,0x38, 0x68,0x00, 0xF7,0x05, 0x71,0xB8, 0xE6,0x01, 0x0B,0x51, 0x00,0x00, +0x00,0x01, 0xE0,0x01, 0x0B,0x5C, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x71,0xC0, 0x00,0x00, +0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x71,0xC0, 0xF7,0x04, 0x71,0xC0, 0xF4,0x84, +0x7B,0x10, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0xFD,0xCC, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, 0x0B,0x50, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x71,0xC0, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x71,0xC0, 0xF7,0x04, +0x71,0xC0, 0xF4,0x84, 0x7B,0x10, 0x00,0x00, 0x00,0x01, 0x94,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0xFF,0x30, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, 0x0B,0x50, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x71,0xC0, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x71,0xC0, 0xF7,0x04, 0x71,0xC0, 0xF6,0x84, 0x7B,0x10, 0x87,0x02, 0xFF,0x48, 0x00,0x00, +0x00,0x01, 0xC7,0x38, 0x6A,0x00, 0x27,0x38, 0x00,0x04, 0x97,0x13, 0xFF,0xFC, 0x96,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0xFE,0x48, 0x97,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x05,0x58, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x70,0x80, 0xF7,0x05, 0x7B,0x18, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x05,0x58, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x6F,0x68, 0xF7,0x05, 0x7B,0x18, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x05,0x58, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x7B,0x18, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x6F,0x68, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x7B,0x18, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x6F,0xF4, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x7B,0x18, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x70,0x80, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x7B,0x18, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x71,0x0C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF5,0x02, 0x00,0x04, 0xF5,0x05, 0x76,0x00, 0xF0,0x05, +0x76,0x08, 0xF0,0x05, 0x76,0x04, 0xF0,0x05, 0x75,0xF8, 0xF5,0x02, 0x00,0x01, 0xF6,0x82, +0x00,0x00, 0x20,0x36, 0x00,0x04, 0xEC,0x01, 0x0C,0xBC, 0xF5,0x05, 0x75,0xFC, 0xF5,0x8E, +0x6A,0xF8, 0xF6,0x06, 0x75,0xF8, 0x47,0x2C, 0xFF,0xFC, 0x97,0x32, 0x00,0x18, 0x06,0x30, +0x00,0x04, 0x06,0xB4, 0x00,0x01, 0xF7,0x04, 0x76,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xEC,0x01, 0x0C,0x99, 0x05,0xAC, 0x21,0x4C, 0xF5,0x06, 0x72,0x18, 0x95,0x13, +0xFF,0xFC, 0xF5,0x06, 0x76,0x48, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x15,0x48, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x0D,0xF4, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, +0x00,0x0E, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x72,0x18, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x0D,0xF4, 0x95,0x13, +0xFF,0xFC, 0xF7,0x82, 0x00,0x0E, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x72,0xA4, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, +0x13,0x2C, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x01, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, +0x73,0x30, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF5,0x06, 0x16,0xC8, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, 0x00,0x01, 0x97,0x93, +0xFF,0xFC, 0xF5,0x06, 0x73,0xBC, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x18,0x00, 0x95,0x13, 0xFF,0xFC, 0xF7,0x82, +0x00,0x10, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x74,0x48, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x16,0x40, 0x95,0x13, +0xFF,0xFC, 0xF7,0x82, 0x00,0x10, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, 0x74,0xD4, 0x95,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF5,0x06, +0x13,0x2C, 0x95,0x13, 0xFF,0xFC, 0xF5,0x02, 0x00,0x12, 0x95,0x13, 0xFF,0xFC, 0xF5,0x06, +0x75,0x60, 0x95,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, +0xFF,0xFC, 0xF0,0x05, 0x75,0xF0, 0xF0,0x05, 0x75,0xEC, 0xF0,0x05, 0x75,0xF4, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x38, 0xF7,0x04, +0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x0E,0x28, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x0E,0x3D, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x15,0xD0, 0x97,0x93, +0xFF,0xFC, 0xE0,0x01, 0x13,0x18, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x75,0xFC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x0E,0x59, 0xF6,0x86, 0x75,0xF8, 0xE0,0x01, +0x0E,0x6C, 0xF6,0x82, 0x00,0x00, 0xF7,0x04, 0x76,0x08, 0x00,0x00, 0x00,0x01, 0x77,0x39, +0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x86,0xBA, 0x00,0x18, 0xF7,0x04, 0x76,0xFC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x0E,0x90, 0xF6,0x85, 0x76,0x60, 0xF3,0x06, +0x76,0x48, 0xF3,0x05, 0x76,0xFC, 0xE0,0x01, 0x0E,0xA4, 0xF7,0x02, 0x00,0x01, 0xF3,0x02, +0x00,0x10, 0xF3,0x05, 0x76,0xF8, 0xF3,0x06, 0x76,0x48, 0xF3,0x05, 0x77,0x00, 0xF7,0x02, +0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x13,0x15, 0xF3,0x06, 0x74,0x48, 0xF7,0x04, +0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x0E,0xD8, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x0E,0xED, 0x00,0x00, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x16,0x40, 0x97,0x93, +0xFF,0xFC, 0xE0,0x01, 0x13,0x18, 0x00,0x00, 0x00,0x01, 0xF6,0x84, 0x76,0x60, 0x00,0x00, +0x00,0x01, 0x87,0x36, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x70,0x3A, 0xFF,0xE1, 0xE6,0x01, +0x0F,0x21, 0xF4,0x82, 0x00,0x00, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x00,0xBC, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, 0x13,0x14, 0xF3,0x06, 0x75,0x60, 0xC3,0xB4, +0x00,0x00, 0x84,0x1E, 0x00,0x10, 0xF6,0x84, 0x4A,0xA0, 0x23,0x14, 0x00,0x20, 0x93,0x16, +0xFF,0xC4, 0x94,0x16, 0xFF,0xE0, 0x96,0x96, 0xFF,0xD4, 0x85,0x1E, 0x00,0x14, 0xF7,0x04, +0x4A,0x9C, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x01, 0x10,0x0C, 0x95,0x16, +0xFF,0xE4, 0x77,0x35, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF3,0x06, +0x4A,0x98, 0xC6,0xB8, 0x30,0x00, 0x06,0xB4, 0x00,0x0C, 0xC5,0x84, 0x00,0x00, 0x87,0x36, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x42,0x00, 0xE6,0x01, 0x0F,0x9C, 0xC6,0x24, +0x00,0x00, 0x87,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0xE6,0x01, +0x0F,0xA0, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x01, +0x0F,0xAD, 0x00,0x00, 0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0x36, 0x00,0x00, 0x87,0x16, +0xFF,0xE0, 0x00,0x00, 0x00,0x01, 0xC0,0x32, 0x72,0x00, 0xE2,0x01, 0x0F,0xE8, 0xF5,0x02, +0x00,0x00, 0xC0,0x32, 0x72,0x00, 0xE6,0x01, 0x0F,0xF0, 0x20,0x2A, 0x00,0x00, 0x86,0xB6, +0x00,0x04, 0x87,0x16, 0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x01, +0x0F,0xF1, 0x20,0x2A, 0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x01, +0x10,0x01, 0x20,0x2E, 0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x01, +0x10,0x10, 0x20,0x26, 0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x01, +0x10,0x45, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, +0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, +0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xD8, 0xE0,0x01, 0x10,0xB8, 0x96,0x96, +0xFF,0xDC, 0x27,0x14, 0x00,0x2C, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0xC4, 0x00,0x00, +0x00,0x01, 0x93,0x13, 0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, +0xFF,0xCC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, +0xFF,0xCC, 0x20,0x22, 0x00,0x00, 0xE6,0x01, 0x10,0xB5, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, +0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, +0xFF,0xD8, 0x96,0x96, 0xFF,0xDC, 0xF7,0x05, 0x4A,0xA0, 0xE0,0x01, 0x10,0xBC, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x01, 0x10,0xCC, 0xF4,0x82, +0x00,0x01, 0xE0,0x01, 0x11,0x24, 0xF4,0x82, 0x00,0x00, 0x86,0x96, 0xFF,0xD8, 0x00,0x00, +0x00,0x01, 0x77,0x35, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF6,0x86, +0x42,0xC8, 0xA6,0x3A, 0x68,0x02, 0xC7,0x38, 0x68,0x00, 0x75,0x39, 0x00,0x1E, 0x75,0x28, +0xFF,0xE5, 0x05,0xB8, 0x00,0x02, 0x86,0xAE, 0x00,0x00, 0x07,0x38, 0x00,0x04, 0x97,0x16, +0xFF,0xEC, 0xC6,0x30, 0x57,0xC0, 0x76,0x30, 0xFF,0xF0, 0x96,0x16, 0xFF,0xF4, 0x75,0xAD, +0x00,0x1E, 0x75,0xAC, 0xFF,0xE5, 0xC6,0xB4, 0x5F,0xC0, 0x76,0xB4, 0xFF,0xF0, 0x96,0x96, +0xFF,0xF0, 0x20,0x26, 0x00,0x00, 0xE6,0x01, 0x11,0x38, 0xF5,0x82, 0x00,0x00, 0xE0,0x01, +0x11,0xCC, 0xF6,0x02, 0x00,0x00, 0x86,0x96, 0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC7,0x34, +0x68,0x00, 0xC4,0x9C, 0x72,0x00, 0xC0,0x2E, 0x6A,0x00, 0xEC,0x01, 0x11,0x98, 0xC5,0x24, +0x00,0x00, 0xC6,0x2C, 0x00,0x00, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xA6,0xB2, +0x70,0x02, 0x05,0xAC, 0x00,0x01, 0xC7,0x30, 0x70,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, +0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB4, 0xFF,0xF0, 0xF6,0xAB, 0x28,0x00, 0x05,0x28, +0x00,0x02, 0x87,0x16, 0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC0,0x2E, 0x72,0x00, 0xEC,0x01, +0x11,0x59, 0x06,0x30, 0x00,0x02, 0xF3,0x02, 0x00,0x01, 0xF3,0x05, 0x76,0xF4, 0xF6,0x02, +0x00,0x01, 0x87,0x16, 0xFF,0xF0, 0x86,0x9E, 0x00,0x04, 0xC7,0x38, 0x70,0x00, 0xC7,0x38, +0x48,0x00, 0xC6,0xB4, 0x70,0x00, 0x87,0x16, 0xFF,0xF4, 0x06,0xB4, 0x00,0x20, 0x97,0x02, +0xFF,0x6C, 0x94,0x82, 0xFF,0x50, 0x96,0x82, 0xFF,0x58, 0x20,0x32, 0x00,0x00, 0xE6,0x01, +0x13,0x10, 0x00,0x00, 0x00,0x01, 0xF7,0x04, 0x76,0x5C, 0xF5,0x84, 0x76,0xF8, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x76,0x5C, 0xF7,0x04, 0x76,0x5C, 0x20,0x2E, 0x00,0x21, 0xE2,0x01, +0x12,0x30, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x01, +0x12,0x1C, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xF3,0x05, +0x76,0xF8, 0xF3,0x04, 0x77,0x00, 0xE0,0x01, 0x12,0x34, 0xF3,0x05, 0x76,0xFC, 0xF0,0x05, +0x76,0xFC, 0xF7,0x04, 0x75,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x12,0x71, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0F, 0x20,0x32, +0x00,0x44, 0xE6,0x01, 0x12,0x70, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, +0x76,0x08, 0xF6,0x84, 0x76,0x00, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x01, +0x12,0x8C, 0xF7,0x05, 0x76,0x08, 0xF0,0x05, 0x76,0x08, 0xF6,0x84, 0x76,0x08, 0xF7,0x04, +0x76,0x04, 0xF0,0x05, 0x75,0xF8, 0xF6,0x06, 0x75,0xF8, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x12,0xB9, 0xF7,0x05, 0x75,0xFC, 0xE0,0x01, +0x12,0xC8, 0xF7,0x02, 0x00,0x00, 0x77,0x35, 0x00,0x02, 0xC7,0x38, 0x60,0x00, 0x87,0x3A, +0x00,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x13,0x09, 0xF7,0x05, +0x76,0x60, 0xF7,0x04, 0x2D,0x38, 0xF3,0x06, 0x72,0xA4, 0xF3,0x05, 0x76,0x48, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, +0x00,0x0E, 0x20,0x32, 0x00,0x44, 0xE6,0x01, 0x13,0x18, 0xB3,0x3A, 0x68,0x02, 0xE0,0x01, +0x13,0x18, 0xF0,0x05, 0x2D,0x38, 0xE0,0x01, 0x13,0x14, 0xF3,0x06, 0x72,0x18, 0xF3,0x06, +0x73,0x30, 0xF3,0x05, 0x76,0x48, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x04, 0x76,0x60, 0x00,0x00, 0x00,0x01, 0x86,0xBA, 0x00,0x04, 0xF7,0x04, +0x76,0x54, 0x00,0x00, 0x00,0x01, 0xC7,0x38, 0x68,0x00, 0xF7,0x05, 0x76,0x54, 0xF7,0x04, +0x76,0x58, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x76,0x58, 0xF7,0x04, +0x75,0xF8, 0xF6,0x84, 0x76,0x58, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x13,0x9D, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, 0x00,0x0F, 0x20,0x32, 0x00,0x44, 0xE6,0x01, +0x13,0x9C, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x76,0x08, 0xF6,0x84, +0x76,0x00, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x01, 0x13,0xB8, 0xF7,0x05, +0x76,0x08, 0xF0,0x05, 0x76,0x08, 0xF7,0x04, 0x76,0x08, 0xF6,0x84, 0x76,0x04, 0xF0,0x05, +0x75,0xF8, 0xF5,0x84, 0x76,0xF8, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x2E, +0x00,0x21, 0xE2,0x01, 0x14,0x14, 0xF7,0x05, 0x75,0xFC, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, +0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, +0x00,0x44, 0xE6,0x01, 0x14,0x00, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x02, +0x00,0x22, 0xF5,0x05, 0x76,0xF8, 0xF5,0x04, 0x77,0x00, 0xE0,0x01, 0x14,0x18, 0xF5,0x05, +0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xF7,0x04, 0x75,0xEC, 0xF5,0x06, 0x72,0x18, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x14,0x40, 0xF5,0x05, 0x76,0x48, 0xF7,0x04, 0x75,0xF0, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x14,0x55, 0x00,0x00, 0x00,0x01, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x15,0xD0, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, 0x14,0xC4, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xFC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x14,0x71, 0xF6,0x86, 0x75,0xF8, 0xE0,0x01, 0x14,0x88, 0xF7,0x02, 0x00,0x00, 0xF7,0x04, +0x76,0x08, 0x00,0x00, 0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x87,0x3A, +0x00,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x14,0xC5, 0xF7,0x05, +0x76,0x60, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, 0x00,0x0E, 0x20,0x32, 0x00,0x44, 0xE6,0x01, +0x14,0xBC, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF5,0x06, 0x72,0xA4, 0xF5,0x05, +0x76,0x48, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, +0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x15,0x40, 0xF4,0x02, +0x00,0x00, 0x86,0x96, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xF6,0x85, 0x75,0xEC, 0x86,0x96, +0x00,0x08, 0x00,0x00, 0x00,0x01, 0xF6,0x85, 0x7B,0x38, 0x86,0x96, 0x00,0x00, 0xF7,0x04, +0x76,0x48, 0xF6,0x85, 0x7B,0x30, 0xF6,0x86, 0x72,0x18, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x15,0x41, 0xF4,0x02, 0x00,0x01, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x15,0xD0, 0x97,0x93, 0xFF,0xFC, 0xF4,0x02, 0x00,0x01, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, 0x75,0xF4, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x15,0xBC, 0xF4,0x02, 0x00,0x00, 0x86,0x96, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xF6,0x85, 0x75,0xF0, 0x86,0x96, 0x00,0x08, 0x00,0x00, +0x00,0x01, 0xF6,0x85, 0x7B,0x48, 0x86,0x96, 0x00,0x00, 0xF7,0x04, 0x76,0x48, 0xF6,0x85, +0x7B,0x40, 0xF6,0x86, 0x72,0x18, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x15,0xBD, 0xF4,0x02, 0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x15,0xD0, 0x97,0x93, 0xFF,0xFC, 0xF4,0x02, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, 0x76,0xFC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x15,0xFC, 0xF6,0x82, 0x00,0x10, 0xF6,0x86, 0x76,0x48, 0xF6,0x85, +0x76,0xFC, 0xE0,0x01, 0x16,0x0C, 0xF7,0x02, 0x00,0x01, 0xF6,0x85, 0x76,0xF8, 0xF6,0x86, +0x76,0x48, 0xF6,0x85, 0x77,0x00, 0xF7,0x02, 0x00,0x00, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x16,0x20, 0xF6,0x86, 0x74,0xD4, 0xE0,0x01, 0x16,0x2C, 0xF6,0x85, 0x76,0x48, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x16,0x40, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x04, 0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0xE6,0x01, 0x16,0x85, 0xF7,0x02, 0x00,0x01, 0xF7,0x05, 0x75,0xF4, 0xF6,0x84, +0x7B,0x48, 0xF7,0x05, 0x76,0xF4, 0xF7,0x04, 0x7B,0x40, 0xC6,0xB0, 0x68,0x00, 0x26,0xB4, +0x00,0x04, 0x97,0x02, 0xFF,0x6C, 0x96,0x02, 0xFF,0x50, 0xE0,0x01, 0x16,0xA8, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x75,0xEC, 0xF6,0x84, 0x7B,0x38, 0xF5,0x82, 0x00,0x01, 0xF5,0x85, +0x76,0xF4, 0xF6,0x04, 0x7B,0x30, 0xC6,0xB8, 0x68,0x00, 0x26,0xB4, 0x00,0x04, 0x96,0x02, +0xFF,0x6C, 0x97,0x02, 0xFF,0x50, 0x96,0x82, 0xFF,0x58, 0xF5,0x86, 0x73,0xBC, 0xF5,0x85, +0x76,0x48, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, +0x7B,0x28, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0xF7,0x05, 0x7B,0x28, 0xF7,0x04, +0x75,0xF4, 0xF6,0x84, 0x7B,0x28, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x17,0x21, 0x00,0x00, +0x00,0x01, 0xF0,0x05, 0x75,0xF4, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x17,0x25, 0xF0,0x05, 0x75,0xF0, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x16,0x40, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, 0x17,0xEC, 0x00,0x00, 0x00,0x01, 0xF0,0x05, +0x75,0xEC, 0xF7,0x04, 0x75,0xFC, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, +0x17,0x41, 0xF6,0x86, 0x75,0xF8, 0xE0,0x01, 0x17,0x58, 0xF7,0x02, 0x00,0x00, 0xF7,0x04, +0x76,0x08, 0x00,0x00, 0x00,0x01, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x87,0x3A, +0x00,0x18, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x17,0x95, 0xF7,0x05, +0x76,0x60, 0xF7,0x04, 0x2D,0x38, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF5,0x02, 0x00,0x0E, 0x20,0x32, 0x00,0x44, 0xE6,0x01, +0x17,0x8C, 0xB5,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xE0,0x01, 0x17,0x98, 0xF5,0x06, +0x72,0xA4, 0xF5,0x06, 0x72,0x18, 0xF5,0x05, 0x76,0x48, 0xF5,0x84, 0x76,0xF8, 0x00,0x00, +0x00,0x01, 0x20,0x2E, 0x00,0x21, 0xE2,0x01, 0x17,0xE8, 0xF6,0x86, 0x2C,0x28, 0xF7,0x04, +0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, +0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x01, 0x17,0xD4, 0xB5,0xBA, 0x68,0x02, 0xF0,0x05, +0x2D,0x38, 0xF5,0x02, 0x00,0x22, 0xF5,0x05, 0x76,0xF8, 0xF5,0x04, 0x77,0x00, 0xE0,0x01, +0x17,0xEC, 0xF5,0x05, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x38, 0xF7,0x04, 0x75,0xEC, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x18,0x34, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x75,0xF0, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x18,0x49, 0x00,0x00, +0x00,0x01, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x16,0x40, 0x97,0x93, 0xFF,0xFC, 0xE0,0x01, +0x1C,0x74, 0x00,0x00, 0x00,0x01, 0xF6,0x84, 0x76,0x60, 0x00,0x00, 0x00,0x01, 0x87,0x36, +0x00,0x08, 0x00,0x00, 0x00,0x01, 0x70,0x3A, 0xFF,0xE1, 0xE6,0x01, 0x18,0x7D, 0xF4,0x82, +0x00,0x00, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x00,0xBC, 0x97,0x93, +0xFF,0xFC, 0xE0,0x01, 0x1C,0x70, 0xF3,0x06, 0x75,0x60, 0xC3,0xB4, 0x00,0x00, 0x84,0x1E, +0x00,0x10, 0xF6,0x84, 0x4A,0xA0, 0x23,0x14, 0x00,0x20, 0x93,0x16, 0xFF,0xC4, 0x94,0x16, +0xFF,0xE0, 0x96,0x96, 0xFF,0xD4, 0x85,0x1E, 0x00,0x14, 0xF7,0x04, 0x4A,0x9C, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xEC,0x01, 0x19,0x68, 0x95,0x16, 0xFF,0xE4, 0x77,0x35, +0x00,0x01, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF3,0x06, 0x4A,0x98, 0xC6,0xB8, +0x30,0x00, 0x06,0xB4, 0x00,0x0C, 0xC5,0x84, 0x00,0x00, 0x87,0x36, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0xC0,0x3A, 0x42,0x00, 0xE6,0x01, 0x18,0xF8, 0xC6,0x24, 0x00,0x00, 0x87,0x36, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x52,0x00, 0xE6,0x01, 0x18,0xFC, 0x20,0x32, +0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x01, 0x19,0x09, 0x00,0x00, +0x00,0x01, 0xF5,0x82, 0x00,0x00, 0x86,0x36, 0x00,0x00, 0x87,0x16, 0xFF,0xE0, 0x00,0x00, +0x00,0x01, 0xC0,0x32, 0x72,0x00, 0xE2,0x01, 0x19,0x44, 0xF5,0x02, 0x00,0x00, 0xC0,0x32, +0x72,0x00, 0xE6,0x01, 0x19,0x4C, 0x20,0x2A, 0x00,0x00, 0x86,0xB6, 0x00,0x04, 0x87,0x16, +0xFF,0xE4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE2,0x01, 0x19,0x4D, 0x20,0x2A, +0x00,0x00, 0xF5,0x02, 0x00,0x01, 0x20,0x2A, 0x00,0x00, 0xE6,0x01, 0x19,0x5D, 0x20,0x2E, +0x00,0x00, 0xF5,0x82, 0x00,0x01, 0x20,0x2E, 0x00,0x00, 0xE6,0x01, 0x19,0x6C, 0x20,0x26, +0x00,0x00, 0xF4,0x82, 0x00,0x01, 0x20,0x26, 0x00,0x00, 0xE6,0x01, 0x19,0xA1, 0xF6,0x02, +0x00,0x01, 0x87,0x16, 0xFF,0xD4, 0xF3,0x06, 0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, +0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, 0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, +0x00,0x00, 0x97,0x16, 0xFF,0xD8, 0xE0,0x01, 0x1A,0x14, 0x96,0x96, 0xFF,0xDC, 0x27,0x14, +0x00,0x2C, 0x97,0x13, 0xFF,0xFC, 0x83,0x16, 0xFF,0xC4, 0x00,0x00, 0x00,0x01, 0x93,0x13, +0xFF,0xFC, 0xF3,0x06, 0x4A,0x98, 0x93,0x13, 0xFF,0xFC, 0x93,0x96, 0xFF,0xCC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x83,0x96, 0xFF,0xCC, 0x20,0x22, +0x00,0x00, 0xE6,0x01, 0x1A,0x11, 0xF6,0x02, 0x00,0x01, 0x87,0x16, 0xFF,0xD4, 0xF3,0x06, +0x4A,0x98, 0x76,0xB9, 0x00,0x01, 0xC6,0xB4, 0x70,0x00, 0x76,0xB5, 0x00,0x02, 0xC6,0xB4, +0x30,0x00, 0x06,0xB4, 0x00,0x14, 0x86,0xB6, 0x00,0x00, 0x97,0x16, 0xFF,0xD8, 0x96,0x96, +0xFF,0xDC, 0xF7,0x05, 0x4A,0xA0, 0xE0,0x01, 0x1A,0x18, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x00, 0x20,0x32, 0x00,0x00, 0xE6,0x01, 0x1A,0x28, 0xF4,0x82, 0x00,0x01, 0xE0,0x01, +0x1A,0x80, 0xF4,0x82, 0x00,0x00, 0x86,0x96, 0xFF,0xD8, 0x00,0x00, 0x00,0x01, 0x77,0x35, +0x00,0x02, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0x00,0x02, 0xF6,0x86, 0x42,0xC8, 0xA6,0x3A, +0x68,0x02, 0xC7,0x38, 0x68,0x00, 0x75,0x39, 0x00,0x1E, 0x75,0x28, 0xFF,0xE5, 0x05,0xB8, +0x00,0x02, 0x86,0xAE, 0x00,0x00, 0x07,0x38, 0x00,0x04, 0x97,0x16, 0xFF,0xEC, 0xC6,0x30, +0x57,0xC0, 0x76,0x30, 0xFF,0xF0, 0x96,0x16, 0xFF,0xF4, 0x75,0xAD, 0x00,0x1E, 0x75,0xAC, +0xFF,0xE5, 0xC6,0xB4, 0x5F,0xC0, 0x76,0xB4, 0xFF,0xF0, 0x96,0x96, 0xFF,0xF0, 0x20,0x26, +0x00,0x00, 0xE6,0x01, 0x1A,0x94, 0xF5,0x82, 0x00,0x00, 0xE0,0x01, 0x1B,0x28, 0xF6,0x02, +0x00,0x00, 0x86,0x96, 0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC7,0x34, 0x68,0x00, 0xC4,0x9C, +0x72,0x00, 0xC0,0x2E, 0x6A,0x00, 0xEC,0x01, 0x1A,0xF4, 0xC5,0x24, 0x00,0x00, 0xC6,0x2C, +0x00,0x00, 0x87,0x16, 0xFF,0xEC, 0x00,0x00, 0x00,0x01, 0xA6,0xB2, 0x70,0x02, 0x05,0xAC, +0x00,0x01, 0xC7,0x30, 0x70,0x00, 0x77,0x39, 0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, +0x77,0xC0, 0x76,0xB4, 0xFF,0xF0, 0xF6,0xAB, 0x28,0x00, 0x05,0x28, 0x00,0x02, 0x87,0x16, +0xFF,0xF0, 0x00,0x00, 0x00,0x01, 0xC0,0x2E, 0x72,0x00, 0xEC,0x01, 0x1A,0xB5, 0x06,0x30, +0x00,0x02, 0xF3,0x02, 0x00,0x01, 0xF3,0x05, 0x76,0xF4, 0xF6,0x02, 0x00,0x01, 0x87,0x16, +0xFF,0xF0, 0x86,0x9E, 0x00,0x04, 0xC7,0x38, 0x70,0x00, 0xC7,0x38, 0x48,0x00, 0xC6,0xB4, +0x70,0x00, 0x87,0x16, 0xFF,0xF4, 0x06,0xB4, 0x00,0x20, 0x97,0x02, 0xFF,0x6C, 0x94,0x82, +0xFF,0x50, 0x96,0x82, 0xFF,0x58, 0x20,0x32, 0x00,0x00, 0xE6,0x01, 0x1C,0x6C, 0x00,0x00, +0x00,0x01, 0xF7,0x04, 0x76,0x5C, 0xF5,0x84, 0x76,0xF8, 0x07,0x38, 0x00,0x01, 0xF7,0x05, +0x76,0x5C, 0xF7,0x04, 0x76,0x5C, 0x20,0x2E, 0x00,0x21, 0xE2,0x01, 0x1B,0x8C, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x32, 0x00,0x44, 0xE6,0x01, 0x1B,0x78, 0xB5,0xBA, +0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF3,0x02, 0x00,0x22, 0xF3,0x05, 0x76,0xF8, 0xF3,0x04, +0x77,0x00, 0xE0,0x01, 0x1B,0x90, 0xF3,0x05, 0x76,0xFC, 0xF0,0x05, 0x76,0xFC, 0xF7,0x04, +0x75,0xF8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x1B,0xCD, 0xF6,0x86, +0x2C,0x28, 0xF7,0x04, 0x2D,0x38, 0x00,0x00, 0x00,0x01, 0x06,0x38, 0x00,0x01, 0xF6,0x05, +0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0F, 0x20,0x32, 0x00,0x44, 0xE6,0x01, +0x1B,0xCC, 0xB3,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0xF7,0x04, 0x76,0x08, 0xF6,0x84, +0x76,0x00, 0x07,0x38, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0xE6,0x01, 0x1B,0xE8, 0xF7,0x05, +0x76,0x08, 0xF0,0x05, 0x76,0x08, 0xF6,0x84, 0x76,0x08, 0xF7,0x04, 0x76,0x04, 0xF0,0x05, +0x75,0xF8, 0xF6,0x06, 0x75,0xF8, 0xC0,0x36, 0x72,0x00, 0x47,0x0C, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x1C,0x15, 0xF7,0x05, 0x75,0xFC, 0xE0,0x01, 0x1C,0x24, 0xF7,0x02, +0x00,0x00, 0x77,0x35, 0x00,0x02, 0xC7,0x38, 0x60,0x00, 0x87,0x3A, 0x00,0x18, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x1C,0x65, 0xF7,0x05, 0x76,0x60, 0xF7,0x04, +0x2D,0x38, 0xF3,0x06, 0x72,0xA4, 0xF3,0x05, 0x76,0x48, 0xF6,0x86, 0x2C,0x28, 0x06,0x38, +0x00,0x01, 0xF6,0x05, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0xF3,0x02, 0x00,0x0E, 0x20,0x32, +0x00,0x44, 0xE6,0x01, 0x1C,0x74, 0xB3,0x3A, 0x68,0x02, 0xE0,0x01, 0x1C,0x74, 0xF0,0x05, +0x2D,0x38, 0xE0,0x01, 0x1C,0x70, 0xF3,0x06, 0x72,0x18, 0xF3,0x06, 0x73,0x30, 0xF3,0x05, +0x76,0x48, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, +0x76,0x48, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x72,0x18, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x76,0x48, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x72,0xA4, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x76,0x48, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x73,0x30, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x76,0x48, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x73,0xBC, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, +0x76,0x48, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, 0x74,0x48, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x76,0x48, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x74,0xD4, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x76,0x48, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x75,0x60, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x86, +0x76,0x68, 0x96,0x93, 0xFF,0xFC, 0xF6,0x86, 0x77,0x04, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, 0xFF,0xFC, 0xF6,0x86, 0x1D,0xD4, 0x96,0x93, +0xFF,0xFC, 0x90,0x13, 0xFF,0xFC, 0xF6,0x86, 0x76,0x68, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, +0x00,0x08, 0xE0,0x00, 0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF7,0x02, 0x00,0x22, 0xF7,0x05, +0x76,0xF4, 0xF7,0x05, 0x76,0xF8, 0xF0,0x05, 0x76,0xFC, 0xF0,0x05, 0x77,0x00, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, 0x76,0xF4, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x22, 0xE6,0x01, 0x1E,0x01, 0x00,0x00, 0x00,0x01, 0x97,0x13, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x84, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x77,0x04, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x76,0x68, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x86, 0x78,0x10, 0x96,0x93, 0xFF,0xFC, 0xF6,0x86, +0x78,0xA4, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF6,0x86, 0x1F,0xBC, 0x96,0x93, 0xFF,0xFC, 0xF6,0x82, 0x00,0x14, 0x96,0x93, +0xFF,0xFC, 0xF6,0x86, 0x78,0x10, 0x96,0x93, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0xF0,0x05, 0x78,0x9C, 0x90,0x02, 0xFF,0x34, 0xF7,0x02, +0x7F,0xFF, 0xF7,0x05, 0x78,0xA0, 0x97,0x02, 0xFF,0x30, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF6,0x04, 0x78,0x9C, 0x87,0x16, 0x00,0x00, 0x84,0x96, +0x00,0x08, 0xF5,0x86, 0x77,0x10, 0x87,0x3A, 0x00,0x08, 0xF6,0x86, 0x21,0x8C, 0x75,0x39, +0x00,0x04, 0x77,0x39, 0x00,0x02, 0xA7,0x3A, 0x68,0x02, 0x20,0x32, 0x00,0x00, 0xC6,0xA8, +0x58,0x00, 0x84,0x16, 0x00,0x04, 0xC6,0x30, 0x75,0x80, 0x94,0x36, 0x00,0x04, 0xB4,0xAA, +0x58,0x02, 0x87,0x36, 0x00,0x08, 0xF6,0x05, 0x78,0x9C, 0x07,0x38, 0x00,0x01, 0xE6,0x01, +0x1F,0x2D, 0x97,0x36, 0x00,0x08, 0x87,0x02, 0xFF,0x30, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, +0x4A,0x00, 0xEE,0x01, 0x1F,0x35, 0x00,0x00, 0x00,0x01, 0xF4,0x85, 0x78,0xA0, 0x94,0x82, +0xFF,0x30, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x87,0x2E, 0x00,0x08, 0xF6,0x86, 0x21,0x8C, 0x77,0x39, +0x00,0x02, 0xA7,0x3A, 0x68,0x02, 0xF6,0x04, 0x78,0x9C, 0xC7,0x04, 0x76,0x00, 0x86,0xAE, +0x00,0x08, 0xC6,0x30, 0x74,0x00, 0xF7,0x06, 0x77,0x10, 0xF6,0x05, 0x78,0x9C, 0x76,0xB5, +0x00,0x04, 0xC6,0xB4, 0x70,0x00, 0x87,0x36, 0x00,0x08, 0x20,0x32, 0x00,0x00, 0x07,0x38, +0x00,0x01, 0xE6,0x01, 0x1F,0xA8, 0x97,0x36, 0x00,0x08, 0xF7,0x02, 0x7F,0xFF, 0xF7,0x05, +0x78,0xA0, 0x97,0x02, 0xFF,0x30, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0x22,0x10, 0x00,0x08, 0xF7,0x04, 0x78,0x9C, 0x00,0x00, 0x00,0x01, 0x20,0x3A, +0x00,0x00, 0xE6,0x01, 0x20,0xD1, 0xF6,0x02, 0x7F,0xFF, 0x96,0x16, 0xFF,0xF4, 0xF6,0x84, +0x2D,0x40, 0xF6,0x06, 0x77,0x10, 0x26,0xB4, 0x00,0x01, 0x77,0x35, 0x00,0x04, 0xC4,0xB8, +0x60,0x00, 0xC3,0x38, 0x00,0x00, 0x74,0x35, 0x00,0x02, 0xF6,0x06, 0x77,0x10, 0xC0,0x26, +0x62,0x00, 0xEC,0x01, 0x20,0xC1, 0xF6,0x06, 0x21,0x8C, 0xF3,0x84, 0x78,0x9C, 0xA7,0x22, +0x60,0x02, 0x00,0x00, 0x00,0x01, 0xC0,0x1E, 0x74,0x00, 0xE6,0x01, 0x20,0xB1, 0x00,0x00, +0x00,0x01, 0x86,0xA6, 0x00,0x00, 0xF7,0x04, 0x78,0xA0, 0x00,0x00, 0x00,0x01, 0xC6,0xB4, +0x72,0x00, 0x20,0x36, 0x00,0x00, 0xEE,0x01, 0x20,0x98, 0x96,0xA6, 0x00,0x00, 0xF7,0x04, +0x2D,0x38, 0xF6,0x06, 0x77,0x10, 0xC5,0x18, 0x60,0x00, 0xF6,0x86, 0x2C,0x28, 0x86,0x2A, +0x00,0x04, 0x05,0xB8, 0x00,0x01, 0xF5,0x85, 0x2D,0x38, 0x77,0x39, 0x00,0x02, 0x20,0x2E, +0x00,0x44, 0xE6,0x01, 0x20,0x70, 0xB6,0x3A, 0x68,0x02, 0xF0,0x05, 0x2D,0x38, 0x86,0x2A, +0x00,0x08, 0x00,0x00, 0x00,0x01, 0x96,0x2A, 0x00,0x0C, 0xF6,0x06, 0x21,0x8C, 0xA7,0x22, +0x60,0x02, 0x00,0x00, 0x00,0x01, 0xC7,0x04, 0x76,0x00, 0xC7,0x1C, 0x74,0x00, 0xE0,0x01, +0x20,0xB0, 0xF7,0x05, 0x78,0x9C, 0x86,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x62,0x00, 0xEC,0x01, 0x20,0xB0, 0x00,0x00, 0x00,0x01, 0x96,0x96, 0xFF,0xF4, 0x24,0xA4, +0x00,0x10, 0x23,0x18, 0x00,0x10, 0xE0,0x01, 0x1F,0xFC, 0x24,0x20, 0x00,0x04, 0x86,0x16, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0xF6,0x05, 0x78,0xA0, 0x96,0x02, 0xFF,0x30, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x87,0x16, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x87,0x3A, 0x00,0x08, 0xF6,0x86, 0x77,0x10, 0x77,0x39, 0x00,0x04, 0xC7,0x38, +0x68,0x00, 0x86,0xBA, 0x00,0x0C, 0x87,0x3A, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0x44,0x0C, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x04, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF7,0x02, 0x00,0x0F, 0x20,0x3A, 0x00,0x00, 0xEC,0x01, 0x21,0x5D, 0xF6,0x86, +0x77,0x18, 0x90,0x36, 0x00,0x00, 0x27,0x38, 0x00,0x01, 0xC6,0x04, 0x00,0x00, 0xC0,0x3A, +0x62,0x00, 0xE6,0x01, 0x21,0x44, 0x06,0xB4, 0x00,0x10, 0xF6,0x06, 0x78,0xA4, 0x96,0x13, +0xFF,0xFC, 0xF6,0x06, 0x78,0x10, 0x96,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x00,0x01, 0x00,0x00, +0x00,0x02, 0x00,0x00, 0x00,0x04, 0x00,0x00, 0x00,0x08, 0x00,0x00, 0x00,0x10, 0x00,0x00, +0x00,0x20, 0x00,0x00, 0x00,0x40, 0x00,0x00, 0x00,0x80, 0x00,0x00, 0x01,0x00, 0x00,0x00, +0x02,0x00, 0x00,0x00, 0x04,0x00, 0x00,0x00, 0x08,0x00, 0x00,0x00, 0x10,0x00, 0x00,0x00, +0x20,0x00, 0x00,0x00, 0x40,0x00, 0x00,0x00, 0x80,0x00, 0x00,0x00, 0x00,0x00, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x78,0xB0, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x79,0xCC, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x15,0x48, 0x97,0x93, +0xFF,0xFC, 0xF7,0x06, 0x22,0x2C, 0x97,0x13, 0xFF,0xFC, 0xF7,0x02, 0x00,0x15, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x78,0xB0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x16,0x1C, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, +0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, +0x00,0x08, 0xF6,0x84, 0x6F,0x44, 0x00,0x00, 0x00,0x01, 0x87,0x36, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x20,0x3A, 0x00,0x02, 0xE6,0x01, 0x22,0x70, 0xF6,0x02, 0x00,0x00, 0x87,0x36, +0x0E,0xF4, 0x86,0xB6, 0x0E,0xF8, 0x00,0x00, 0x00,0x01, 0xC0,0x3A, 0x6A,0x00, 0x47,0x0C, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x22,0x78, 0x20,0x32, 0x00,0x00, 0xF6,0x02, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x01, 0x22,0x94, 0x00,0x00, 0x00,0x01, 0xF7,0x04, +0x32,0xE8, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x22,0xB1, 0xF5,0x82, +0x03,0xE8, 0x0F,0x81, 0x40,0x00, 0xF7,0x04, 0x79,0xC8, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0xF7,0x05, 0x79,0xC8, 0xF7,0x04, 0x79,0xC8, 0xF5,0x82, 0x03,0xE8, 0x95,0x93, +0xFF,0xFC, 0xF5,0x82, 0x00,0x15, 0x95,0x93, 0xFF,0xFC, 0xF5,0x86, 0x79,0xCC, 0x95,0x93, +0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x1E,0xC0, 0x97,0x93, 0xFF,0xFC, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x06, 0x79,0xCC, 0x97,0x13, +0xFF,0xFC, 0xF7,0x06, 0x78,0xB0, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, +0x14,0xF4, 0x97,0x93, 0xFF,0xFC, 0xF7,0x06, 0x79,0xCC, 0x97,0x13, 0xFF,0xFC, 0xF7,0x06, +0x79,0x3C, 0x97,0x13, 0xFF,0xFC, 0x07,0x88, 0x00,0x08, 0xE0,0x00, 0x14,0xF4, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC1,0x3C, 0x00,0x00, 0x02,0x10, 0x00,0x04, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x0C, 0x85,0x96, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x86,0xAE, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x01, +0x23,0x84, 0x27,0x14, 0x00,0x0C, 0x87,0x2E, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x01, 0x97,0x2E, 0x00,0x04, 0x87,0x2E, 0x00,0x04, 0xE0,0x01, 0x24,0x34, 0x96,0x96, +0xFF,0xF4, 0x97,0x13, 0xFF,0xFC, 0x85,0x16, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x95,0x13, +0xFF,0xFC, 0x95,0x93, 0xFF,0xFC, 0x95,0x96, 0xFF,0xEC, 0x07,0x88, 0x00,0x08, 0xE0,0x01, +0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xEC, 0x20,0x22, 0x00,0x00, 0xE6,0x01, +0x24,0x34, 0x00,0x00, 0x00,0x01, 0x86,0xAE, 0x00,0x04, 0x86,0x16, 0xFF,0xF4, 0x00,0x00, +0x00,0x01, 0xC0,0x36, 0x62,0x00, 0xEE,0x01, 0x24,0x21, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0xC6,0xB8, 0x58,0x00, 0x77,0x31, 0x00,0x01, 0xC7,0x38, +0x60,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x58,0x00, 0x85,0x36, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x95,0x36, 0x00,0x0C, 0x85,0x36, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x95,0x36, +0x00,0x10, 0x85,0x36, 0x00,0x08, 0x00,0x00, 0x00,0x01, 0x95,0x36, 0x00,0x14, 0x26,0xB4, +0x00,0x0C, 0xC0,0x36, 0x72,0x00, 0xEE,0x01, 0x23,0xEC, 0x00,0x00, 0x00,0x01, 0x87,0x2E, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x07,0x38, 0x00,0x01, 0x97,0x2E, 0x00,0x04, 0x87,0x2E, +0x00,0x04, 0x86,0x96, 0xFF,0xF4, 0x85,0x16, 0x00,0x04, 0x77,0x35, 0x00,0x01, 0xC7,0x38, +0x68,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x2C, 0x70,0x00, 0x85,0x2A, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x95,0x3A, 0x00,0x0C, 0x85,0x16, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x85,0x2A, +0x00,0x04, 0x00,0x00, 0x00,0x01, 0x95,0x3A, 0x00,0x10, 0x85,0x16, 0x00,0x08, 0xF4,0x02, +0x00,0x01, 0x95,0x3A, 0x00,0x14, 0x96,0xAE, 0x00,0x08, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x0C, 0x85,0x96, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x84,0x2E, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x20,0x22, 0x00,0x00, 0xE6,0x01, +0x25,0x55, 0x27,0x14, 0x00,0x0C, 0x97,0x13, 0xFF,0xFC, 0x85,0x16, 0x00,0x04, 0x00,0x00, +0x00,0x01, 0x95,0x13, 0xFF,0xFC, 0x95,0x93, 0xFF,0xFC, 0x95,0x96, 0xFF,0xEC, 0x07,0x88, +0x00,0x08, 0xE0,0x01, 0x25,0x68, 0x97,0x93, 0xFF,0xFC, 0x85,0x96, 0xFF,0xEC, 0x20,0x22, +0x00,0x00, 0xE6,0x01, 0x25,0x55, 0x00,0x00, 0x00,0x01, 0x86,0x16, 0xFF,0xF4, 0x00,0x00, +0x00,0x01, 0x20,0x32, 0x00,0x00, 0xEE,0x01, 0x25,0x45, 0x77,0x31, 0x00,0x01, 0xC6,0xAC, +0x00,0x00, 0xC7,0x38, 0x60,0x00, 0x77,0x39, 0x00,0x02, 0xC7,0x38, 0x58,0x00, 0x85,0x36, +0x00,0x18, 0x00,0x00, 0x00,0x01, 0x95,0x36, 0x00,0x0C, 0x85,0x36, 0x00,0x1C, 0x00,0x00, +0x00,0x01, 0x95,0x36, 0x00,0x10, 0x85,0x36, 0x00,0x20, 0x00,0x00, 0x00,0x01, 0x95,0x36, +0x00,0x14, 0x06,0xB4, 0x00,0x0C, 0xC0,0x36, 0x72,0x00, 0xEC,0x01, 0x25,0x11, 0x00,0x00, +0x00,0x01, 0x87,0x2E, 0x00,0x04, 0xF4,0x02, 0x00,0x01, 0x27,0x38, 0x00,0x01, 0x97,0x2E, +0x00,0x04, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x08, 0x83,0x96, 0x00,0x04, 0x83,0x16, 0x00,0x00, 0xC5,0x00, 0x00,0x00, 0x84,0x1A, +0x00,0x04, 0xC4,0xA8, 0x00,0x00, 0x94,0x16, 0xFF,0xF4, 0xC0,0x26, 0x42,0x00, 0xE6,0x01, +0x26,0xD1, 0x00,0x00, 0x00,0x01, 0x83,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0xC0,0x2A, +0x32,0x00, 0xE6,0x01, 0x26,0xD1, 0xC7,0x20, 0x4A,0x00, 0x95,0x16, 0xFF,0xF4, 0x76,0xB8, +0xFF,0xE1, 0xC7,0x38, 0x68,0x00, 0x77,0x39, 0xFF,0xFF, 0xC5,0x24, 0x70,0x00, 0x77,0x29, +0x00,0x01, 0xC7,0x38, 0x50,0x00, 0x77,0x39, 0x00,0x02, 0x83,0x16, 0x00,0x00, 0x86,0x9E, +0x00,0x00, 0xC5,0xB8, 0x30,0x00, 0x05,0xAC, 0x00,0x0C, 0x87,0x2E, 0x00,0x00, 0xC6,0x00, +0x00,0x00, 0xC0,0x36, 0x72,0x00, 0xE6,0x01, 0x26,0x10, 0x20,0x32, 0x00,0x00, 0x86,0x9E, +0x00,0x04, 0x87,0x2E, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, 0x72,0x00, 0xE6,0x01, +0x26,0x10, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, 0x00,0x00, 0xE6,0x01, +0x26,0x25, 0x00,0x00, 0x00,0x01, 0xC7,0x00, 0x00,0x00, 0xE0,0x01, 0x26,0x78, 0x20,0x3A, +0x00,0x00, 0x86,0x9E, 0x00,0x00, 0x87,0x2E, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x01, 0x26,0x5C, 0x00,0x00, 0x00,0x01, 0xE6,0x01, 0x26,0x64, 0x20,0x32, +0x00,0x00, 0x86,0x9E, 0x00,0x04, 0x87,0x2E, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC0,0x36, +0x72,0x00, 0xE2,0x01, 0x26,0x65, 0x20,0x32, 0x00,0x00, 0xF6,0x02, 0x00,0x01, 0x20,0x32, +0x00,0x00, 0x47,0x04, 0xFF,0xFF, 0xE6,0x01, 0x26,0x79, 0x20,0x3A, 0x00,0x00, 0xF7,0x02, +0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x26,0xB1, 0x20,0x3A, 0x00,0x00, 0xEE,0x01, +0x26,0xA0, 0x20,0x3A, 0x00,0x01, 0x43,0x04, 0xFF,0xFF, 0xC0,0x3A, 0x32,0x00, 0xE6,0x01, +0x26,0xC9, 0xC0,0x26, 0x42,0x00, 0xE0,0x01, 0x25,0x90, 0x00,0x00, 0x00,0x01, 0xE6,0x01, +0x26,0xC1, 0xC0,0x26, 0x42,0x00, 0xE0,0x01, 0x25,0x90, 0x00,0x00, 0x00,0x01, 0x83,0x16, +0x00,0x08, 0xF4,0x02, 0x00,0x01, 0xE0,0x01, 0x26,0xE0, 0x95,0x1A, 0x00,0x00, 0xE0,0x01, +0x25,0x8C, 0xC4,0xA8, 0x00,0x00, 0xE0,0x01, 0x25,0x8C, 0xC4,0x28, 0x00,0x00, 0x83,0x16, +0x00,0x08, 0x00,0x00, 0x00,0x01, 0x94,0x1A, 0x00,0x00, 0xC4,0x00, 0x00,0x00, 0x87,0x96, +0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x00,0x00, 0x00,0x00, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x85,0x96, +0x00,0x04, 0x84,0x16, 0x00,0x00, 0x84,0x96, 0x00,0x08, 0xF7,0x02, 0x00,0x03, 0xC6,0xA0, +0x4D,0x80, 0xC6,0xB6, 0x74,0x00, 0xE6,0x01, 0x27,0x71, 0xC6,0x20, 0x00,0x00, 0x20,0x36, +0x00,0x02, 0xE6,0x01, 0x27,0xA0, 0xC5,0x20, 0x48,0x00, 0xC7,0x20, 0x48,0x00, 0x27,0x38, +0x00,0x02, 0xC0,0x22, 0x72,0x00, 0xE2,0x01, 0x27,0x9C, 0xC5,0x38, 0x00,0x00, 0x87,0x2E, +0x00,0x00, 0x76,0xAD, 0x00,0x1E, 0x76,0xB4, 0xFF,0xE5, 0xC7,0x38, 0x6F,0xC0, 0x77,0x38, +0xFF,0xF0, 0xF7,0x33, 0x28,0x00, 0x06,0x30, 0x00,0x02, 0xC0,0x32, 0x52,0x00, 0xE2,0x01, +0x27,0x41, 0x05,0xAC, 0x00,0x02, 0xE0,0x01, 0x27,0xA0, 0xC5,0x20, 0x48,0x00, 0xC7,0x20, +0x48,0x00, 0x27,0x38, 0x00,0x04, 0xC0,0x22, 0x72,0x00, 0xE2,0x01, 0x27,0xA0, 0xC5,0x20, +0x48,0x00, 0x83,0xAD, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0x93,0xB1, 0x00,0x04, 0xC0,0x32, +0x72,0x00, 0xE2,0x01, 0x27,0x85, 0x00,0x00, 0x00,0x01, 0xC5,0x20, 0x48,0x00, 0xC0,0x32, +0x52,0x00, 0xE4,0x01, 0x27,0xD5, 0x00,0x00, 0x00,0x01, 0x86,0xAE, 0x00,0x00, 0x77,0x2D, +0x00,0x1E, 0x77,0x38, 0xFF,0xE5, 0xC6,0xB4, 0x77,0xC0, 0x76,0xB5, 0xFF,0xE8, 0xF6,0xB3, +0x68,0x00, 0x06,0x30, 0x00,0x01, 0xC0,0x32, 0x52,0x00, 0xE4,0x01, 0x27,0xAC, 0x05,0xAC, +0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x0C, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x84,0x16, +0x00,0x00, 0x86,0x96, 0x00,0x04, 0x00,0x00, 0x00,0x01, 0xC7,0x22, 0x6D,0x80, 0xE6,0x01, +0x28,0x10, 0x20,0x36, 0x00,0x00, 0xE0,0x01, 0x28,0x74, 0xC4,0x38, 0x00,0x00, 0xF7,0x02, +0x00,0x01, 0xEE,0x01, 0x28,0x41, 0xF6,0x02, 0x00,0x00, 0x76,0xB5, 0x00,0x01, 0x20,0x36, +0x00,0x00, 0xEE,0x01, 0x28,0x1C, 0x77,0x39, 0x00,0x01, 0xE0,0x01, 0x28,0x44, 0x20,0x22, +0x00,0x00, 0x74,0x21, 0x00,0x01, 0x77,0x38, 0xFF,0xFF, 0x06,0x30, 0x00,0x01, 0x20,0x22, +0x00,0x00, 0xEE,0x01, 0x28,0x34, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x28,0x71, 0x00,0x00, +0x00,0x01, 0xC0,0x22, 0x6A,0x00, 0xE4,0x01, 0x28,0x64, 0x00,0x00, 0x00,0x01, 0xC4,0x20, +0x6A,0x00, 0x77,0x3A, 0xFF,0xFF, 0xE6,0x01, 0x28,0x54, 0x76,0xB4, 0xFF,0xFF, 0xD4,0x20, +0x07,0x62, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x08, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, +0x00,0x04, 0xE0,0x01, 0x28,0xCC, 0xF7,0x06, 0x29,0xDC, 0x86,0xBA, 0x00,0x00, 0x00,0x00, +0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x01, 0x28,0xC9, 0x00,0x00, 0x00,0x01, 0x97,0x16, +0xFF,0xF4, 0x07,0x88, 0x00,0x08, 0xC1,0x34, 0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x16, +0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x27,0x38, 0x00,0x04, 0xF6,0x06, 0x29,0xE0, 0xC0,0x3A, +0x62,0x00, 0xE4,0x01, 0x28,0x9D, 0x00,0x00, 0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, +0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, +0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0x22,0x10, 0x00,0x04, 0xE0,0x01, 0x29,0x34, 0xF7,0x06, +0x29,0x98, 0x86,0xBA, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x20,0x36, 0x00,0x00, 0xE6,0x01, +0x29,0x31, 0x00,0x00, 0x00,0x01, 0x97,0x16, 0xFF,0xF4, 0x07,0x88, 0x00,0x08, 0xC1,0x34, +0x00,0x00, 0x97,0x93, 0xFF,0xFC, 0x87,0x16, 0xFF,0xF4, 0x00,0x00, 0x00,0x01, 0x07,0x38, +0x00,0x04, 0xF6,0x06, 0x29,0xE0, 0xC0,0x3A, 0x62,0x00, 0xE4,0x01, 0x29,0x04, 0x00,0x00, +0x00,0x01, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x92,0x93, 0xFF,0xFC, 0x02,0x90, 0x00,0x08, 0xF7,0x04, +0x7B,0x50, 0x00,0x00, 0x00,0x01, 0x20,0x3A, 0x00,0x00, 0xE6,0x01, 0x29,0x84, 0xF6,0x82, +0x00,0x01, 0xF6,0x85, 0x7B,0x50, 0x07,0x88, 0x00,0x08, 0xE0,0x01, 0x28,0xF0, 0x97,0x93, +0xFF,0xFC, 0x87,0x96, 0xFF,0xFC, 0x82,0x96, 0xFF,0xF8, 0x02,0x14, 0x00,0x00, 0x01,0x3C, +0x00,0x00, 0x00,0x00, 0x00,0x01, 0x00,0x00, 0x0B,0x4C, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x42,0x88, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x5E,0x50, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0xC7,0xA8, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x0B,0xD0, 0x00,0x00, 0x00,0x00, 0x00,0x01, +0x1C,0x88, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x1E,0x14, 0x00,0x00, 0x00,0x00, 0x00,0x01, +0x21,0x2C, 0x00,0x00, 0x00,0x00, 0x00,0x01, 0x22,0xE4, 0x00,0x00, 0x00,0x00, } ; + + +/* This is the LANai data */ + +static unsigned int lanai4_data_off = 0x94F0; /* half-word offset */ +static unsigned char lanai4_data[20472] = { +0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x01, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, +0x00,0x00, 0x00,0x00, 0x00,0x00, } ; + + +#ifdef SYMBOL_DEFINES_COMPILED +/* These are half-word addresses - NOT byte offsets */ +#define MYRI_GenerateMapVersion 0xBD08 +#define MYRI_MoreToGenerate 0xBD0C +#define MYRI_GenerateMessage 0xBCEC +#define MYRI_RelayMapVersion 0xBD04 +#define MYRI_RelayStart 0xBD00 +#define MYRI_RelayDirection 0xBCFC +#define MYRI_RelayIndex 0xBCF4 +#define MYRI_RelayStop 0xBCF8 +#define MYRI_RelayMessage 0xBCF0 +#define MYRI_BroadcastRelayMessagesSent 0xBD10 +#define MYRI_SendMultiplexGrabbed 0xBD3C +#define MYRI_HostReceiveItem 0xBD14 +#define MYRI_HostReceiveNumScatters 0xBD50 +#define MYRI_HostReceiveScatterIndex 0xBD44 +#define MYRI_HostReceiveScatterPointer 0xBD4C +#define MYRI_HostReceiveScatterLength 0xBD48 +#define MYRI_HostReceiveChecksum 0xBD40 +#define MYRI_RouteNumFragments 0xBD60 +#define MYRI_RouteFragment 0xBD5C +#define MYRI_RouteStamp 0xBD58 +#define MYRI_RoutesSoFar 0xBD64 +#define MYRI_MapVersionChanged 0xBD68 +#define MYRI_map_c 0xBD54 +#define MYRI_pack_list 0x789C +#define MYRI_pack_table 0x78BA +#define MYRI_msg2event 0x7FF6 +#define MYRI_VersionString 0xB7A0 +#define MYRI_SizeofChannel 0xBD80 +#define MYRI_EndOfQueueSpace 0xBD84 +#define MYRI_FreeCode 0xBD78 +#define MYRI_FreeData 0xBD7C +#define MYRI_Asserting 0xBD6C +#define MYRI_Version 0xBD74 +#define MYRI_Processor 0xBD70 +#define MYRI_NetReceive 0xBD8C +#define MYRI_NetReceiveBuffer 0xBD88 +#define MYRI_MapLength 0xBD9C +#define MYRI_MapSendAlignment 0xBD98 +#define MYRI_HostReplyLength 0xBDA4 +#define MYRI_HostReplySendAlignment 0xBDA0 +#define MYRI_MapSendMessages 0xBD94 +#define MYRI_bitmask 0x90C6 +#define MYRI_HostSendFull 0x99C0 +#define MYRI_HostReplies 0xA04C +#define MYRI_Interrupts 0xBCE4 +#define MYRI_NetReceiveDrops 0xB8DA +#define MYRI_SendMultiplexDoneEvent 0xBB7A +#define MYRI_bEvents 0x96E6 +#define MYRI_bHostReceiveShortcuts 0x9972 +#define MYRI_the_map 0xB728 +#define MYRI_Channels 0xB7A2 +#define MYRI_bEventIndex 0x9766 +#define MYRI_NoBuffersChannel0 0x9974 +#define MYRI_bShakes 0x976A +#define MYRI_MAPPER 0xA122 +#define MYRI_CORE_timeout_counter 0xA114 +#define MYRI_the_map_is_valid 0xA040 +#define MYRI_bBadScatters 0x9970 +#define MYRI_HostReceiveChannel 0x9960 +#define MYRI_send_space 0xA7B0 +#define MYRI_MapReceiveMessages 0xB8E0 +#define MYRI_wakeup_mask 0xBC4E +#define MYRI_NetSendBuffer 0xBB30 +#define MYRI_HostReceiveMulticast 0x9968 +#define MYRI_HostSendChannel 0x9A94 +#define MYRI_NetReceiveDmaDone 0xB7FA +#define MYRI_HostSendChecksum 0x9AAA +#define MYRI_HostReceiveScatter 0x9914 +#define MYRI_compares 0x9DC8 +#define MYRI_NetSendQueue 0xBAFC +#define MYRI_HostTable 0xA54C +#define MYRI_map_h 0x9DB4 +#define MYRI_HostSendBytes 0x9AA0 +#define MYRI_L3_end_loaded_memory 0xBDB4 +#define MYRI_NetSendBytes 0xBB2A +#define MYRI_map_space 0xA81C +#define MYRI_MAP_ACK 0xA045 +#define MYRI_NetReceiveMisroutes 0xB8D6 +#define MYRI_HostReceiveBytes 0x995C +#define MYRI_BroadcastRelayIdle 0x95C2 +#define MYRI_HostReceiveIdle 0x9770 +#define MYRI_timing 0xBC08 +#define MYRI_HostReceive 0x996A +#define MYRI_routeHandleMessage 0x7732 +#define MYRI_Freses 0xB7AE +#define MYRI_NextToPut 0x969C +#define MYRI_HostSendIdle 0x997A +#define MYRIedata 0xBCEC +#define MYRI_SendingHostReply 0xBAFA +#define MYRI_timing_period 0xBC50 +#define MYRI_debug 0xA138 +#define MYRI_NetSendBusy 0xB998 +#define MYRI_routeInitialize 0x6AA0 +#define MYRI_HostReceiveQueue 0x9966 +#define MYRI_bWakes 0x9768 +#define MYRI_NetReceiveBadLengths 0xB8D0 +#define MYRI_NetReceiveQueue 0xB8E2 +#define MYRI_MapBuffer 0xBAF6 +#define MYRI_MapChecksum 0xA048 +#define MYRI_the_routes_are_valid 0xA042 +#define MYRI_MAPPER_probe_stamp 0xA132 +#define MYRI_memory 0xA7AC +#define MYRI_Events 0x9614 +#define MYRI_switches 0x9DB6 +#define MYRI_Hosts 0xA7AE +#define MYRI_HostReceiveGoingToBroadcast 0x98CE +#define MYRI_NetSendIdle 0xB90C +#define MYRI_host_reply_space 0xB72C +#define MYRI_HostReceiveWaitingToBroadcast 0x9888 +#define MYRI_bSetRoutes 0xA11E +#define MYRI_bSends 0x976C +#define MYRI_BroadcastGenerateIdle 0x9536 +#define MYRI_WatchdogOff 0xBC9E +#define MYRI_TIMER 0xBC52 +#define MYRI_SendMultiplex 0xBB82 +#define MYRI_HostReplyBuffer 0xBAF8 +#define MYRI_the_new_switch 0xA130 +#define MYRI_current_switch 0xA03A +#define MYRI_memcpy 0x937C +#define MYRI_server 0x9AF6 +#define MYRI_WatchdogOn 0xBC58 +#define MYRI_NetSendContinuing 0xB952 +#define MYRI_NetReceiveBadChannels 0xB8D2 +#define MYRI_SendMultiplexFreeMachine 0xBB80 +#define MYRI_NetReceiveFlush 0xB840 +#define MYRI_NetSendBroadcasting 0xBAB0 +#define MYRI_looking_for_a_loopback 0x9D6C +#define MYRI_HostSendGatherPointer 0x9AA8 +#define MYRI_HostSendItem 0x9A96 +#define MYRI_MAP_REQ 0xA046 +#define MYRI_memory_free_list 0xA160 +#define MYRIend 0xBDB4 +#define MYRI_MapVersion 0x9DB2 +#define MYRI_client 0x9AB0 +#define MYRI_HostReceiveBroadcasting 0x9842 +#define MYRIetext 0x94F0 +#define MYRI_NetSendMapBusy 0xB9DE +#define MYRI_bRouteMessages 0xA134 +#define MYRI_DmaDirection 0xB7A8 +#define MYRI_SendMultiplexFreeEvent 0xBB7C +#define MYRI_idle_mapper 0x9B3C +#define MYRI_NetSend 0xBB24 +#define MYRI_current_port 0xA03E +#define MYRI_HostConnectedSwitches 0x9DDA +#define MYRI_try_loopback 0x9B82 +#define MYRI_the_host_reply_message 0xB72A +#define MYRI_MAPPER_queue 0x9DD8 +#define MYRI_bHostSendShortcuts 0x9AAC +#define MYRI_BroadcastGenerate 0x9608 +#define MYRI_DmaFreeEvent 0xB7AC +#define MYRI_host_timeout_counter 0xA116 +#define MYRI_NetReceiveDma 0xB7B4 +#define MYRI_MAPPER_try_port 0xA12C +#define MYRI_bcopy 0x66AA +#define MYRI_queue_h 0xBB32 +#define MYRI_bUpdates 0xA120 +#define MYRI_SendMultiplexMachine 0xBB7E +#define MYRI_MAPPER_repeat 0xA12A +#define MYRI_the_return_port 0xA038 +#define MYRI_NetReceiveFull 0xB886 +#define MYRI_MyHostTableIndex 0xA7AA +#define MYRI_CORE 0xA118 +#define MYRI_I_have_a_map 0xA044 +#define MYRI_bWaiting 0xB7B0 +#define MYRI_NetReceiveOverflows 0xB8D8 +#define MYRI_NumMachines 0x96A0 +#define MYRI_MapMessagesSentCounter 0xB79C +#define MYRI_HostReceiveBuffer 0x9962 +#define MYRI_HostSendDma 0x9A4C +#define MYRI_NextToGet 0x969E +#define MYRI_HostReceiveDmaBusy 0x97B6 +#define MYRI_bUpdateMessages 0xA136 +#define MYRI_try_the_switch 0x9C0E +#define MYRI_BroadcastRelay 0x960E +#define MYRI_the_msg 0xB798 +#define MYRI_bEventsRTC 0x9726 +#define MYRI_HostReceiveMessages 0x995E +#define MYRI_CURRENT_MSG 0xB79A +#define MYRI_MAPPER_phase 0xA128 +#define MYRI_HostReceiveDma 0x97FC +#define MYRI_Watchdog 0xBCE6 +#define MYRI_HostSendEmpty 0x9A92 +#define MYRI_abort 0x63C6 +#define MYRI_SendMultiplexIdle 0xBB34 +#define MYRI_looking_for_a_switch 0x9C54 +#define MYRI_NetSendMessages 0xBB2C +#define MYRI_updating 0x9D26 +#define MYRI_BroadcastGenerateSending 0x94F0 +#define MYRI_HostSendBuffer 0x9AA4 +#define MYRI_HostSendMessages 0x9A9E +#define MYRI_BroadcastRelaySending 0x957C +#define MYRI_HostSendDmaBusy 0x9A06 +#define MYRI_BroadcastsPending 0xB8CC +#define MYRI_NetSendMapWaiting 0xBA6A +#define MYRI_NetReceiveBadTypes 0xB8CE +#define MYRI_looking_for_hosts 0x9C9A +#define MYRI_bBadHeader 0x9978 +#define MYRI_HostSendGatherIndex 0x9AA6 +#define MYRI_routeLookup 0x7790 +#define MYRI_NetReceiveMessages 0xB8DE +#define MYRI_DmaInUse 0xB7AA +#define MYRI_explores 0x9DB8 +#define MYRI_HostSend 0x9A98 +#define MYRI_DmaResetSpin 0xB7B2 +#define MYRIstart 0x0000 +#define MYRI_RouteTable 0xA164 +#define MYRI_Machines 0x96A2 +#define MYRI_try_the_host 0x9BC8 +#define MYRI_isr_record 0x976E +#define MYRI_HostReceiveDrops 0x995A +#define MYRI_HostReceiveLength 0x9964 +#define MYRI_timers 0xBB88 +#define MYRI_NetSendWaiting 0xBA24 +#define MYRI_NetSendDrops 0xBB2E +#define MYRI_comparing_a_switch 0x9CE0 +#define MYRI_OldMapChecksum 0xA04A +#define MYRI_HostSendQueue 0x9AA2 +#define MYRI_MAPPER_host 0xA12E +#define MYRI_compare_switch 0xA03C +#define MYRI_main 0x80A6 +#define MYRI_NetReceiveBadCrcs 0xB8D4 +#define MYRI_NetReceiveBytes 0xB8DC + +#endif SYMBOL_DEFINES_COMPILED diff -u --recursive --new-file v2.1.16/linux/drivers/net/myri_sbus.c linux/drivers/net/myri_sbus.c --- v2.1.16/linux/drivers/net/myri_sbus.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/myri_sbus.c Thu Dec 19 11:14:19 1996 @@ -0,0 +1,1171 @@ +/* myri_sbus.h: MyriCOM Gigabit Ethernet SBUS card driver. + * + * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) + */ + +static char *version = + "myri_sbus.c:v1.0 10/Dec/96 David S. Miller (davem@caipfs.rutgers.edu)\n"; + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) +#include +#include +#endif + +#include + +#include "myri_sbus.h" + +#include "myri_code.h" + +/* #define DEBUG_DETECT */ +/* #define DEBUG_IRQ */ +/* #define DEBUG_TRANSMIT */ +/* #define DEBUG_RECEIVE */ +/* #define DEBUG_HEADER */ + +#ifdef DEBUG_DETECT +#define DET(x) printk x +#else +#define DET(x) +#endif + +#ifdef DEBUG_IRQ +#define DIRQ(x) printk x +#else +#define DIRQ(x) +#endif + +#ifdef DEBUG_TRANSMIT +#define DTX(x) printk x +#else +#define DTX(x) +#endif + +#ifdef DEBUG_RECEIVE +#define DRX(x) printk x +#else +#define DRX(x) +#endif + +#ifdef DEBUG_HEADER +#define DHDR(x) printk x +#else +#define DHDR(x) +#endif + +#ifdef MODULE +static struct myri_eth *root_myri_dev = NULL; +#endif + +static inline void myri_reset_off(struct lanai_regs *lp, struct myri_control *cregs) +{ + lp->eimask = 0; /* Clear IRQ mask. */ + cregs->ctrl = CONTROL_ROFF; /* Turn RESET function off. */ +} + +static inline void myri_reset_on(struct myri_control *cregs) +{ + cregs->ctrl = CONTROL_RON; /* Enable RESET function. */ + cregs->ctrl = CONTROL_DIRQ; /* Disable IRQ's. */ +} + +static inline void myri_disable_irq(struct lanai_regs *lp, struct myri_control *cregs) +{ + cregs->ctrl = CONTROL_DIRQ; + lp->eimask = 0; + lp->istat = ISTAT_HOST; +} + +static inline void myri_enable_irq(struct lanai_regs *lp, struct myri_control *cregs) +{ + cregs->ctrl = CONTROL_EIRQ; + lp->eimask = ISTAT_HOST; +} + +static inline void bang_the_chip(struct myri_eth *mp) +{ + struct myri_shmem *shmem = mp->shmem; + struct myri_control *cregs = mp->cregs; + + shmem->send = 1; + cregs->ctrl = CONTROL_WON; +} + +static inline int myri_do_handshake(struct myri_eth *mp) +{ + struct myri_shmem *shmem = mp->shmem; + struct myri_control *cregs = mp->cregs; + struct myri_channel *chan = &shmem->channel; + int tick = 0; + + DET(("myri_do_handshake: ")); + if(chan->state == STATE_READY) { + DET(("Already STATE_READY, failed.\n")); + return -1; /* We're hosed... */ + } + + myri_disable_irq(mp->lregs, cregs); + + while(tick++ <= 25) { + unsigned int softstate; + + /* Wake it up. */ + DET(("shakedown, CONTROL_WON, ")); + shmem->shakedown = 1; + cregs->ctrl = CONTROL_WON; + + softstate = chan->state; + DET(("chanstate[%08x] ", softstate)); + if(softstate == STATE_READY) { + DET(("wakeup successful, ")); + break; + } + + if(softstate != STATE_WFN) { + DET(("not WFN setting that, ")); + chan->state = STATE_WFN; + } + + udelay(20); + } + + myri_enable_irq(mp->lregs, cregs); + + if(tick > 25) { + DET(("25 ticks we lose, failure.\n")); + return -1; + } + DET(("success\n")); + return 0; +} + +static int myri_load_lanai(struct myri_eth *mp) +{ + struct device *dev = mp->dev; + struct myri_shmem *shmem = mp->shmem; + unsigned char *rptr; + int i; + + myri_disable_irq(mp->lregs, mp->cregs); + myri_reset_on(mp->cregs); + + rptr = (unsigned char *) mp->lanai; + for(i = 0; i < mp->eeprom.ramsz; i++) + rptr[i] = 0; + + if(mp->eeprom.cpuvers >= CPUVERS_3_0) + mp->lregs->cval = mp->eeprom.cval; + + /* Load executable code. */ + for(i = 0; i < sizeof(lanai4_code); i++) + rptr[(lanai4_code_off * 2) + i] = lanai4_code[i]; + + /* Load data segment. */ + for(i = 0; i < sizeof(lanai4_data); i++) + rptr[(lanai4_data_off * 2) + i] = lanai4_data[i]; + + /* Set device address. */ + shmem->addr[0] = shmem->addr[1] = 0; + for(i = 0; i < 6; i++) + shmem->addr[i + 2] = dev->dev_addr[i]; + + /* Set SBUS bursts and interrupt mask. */ + shmem->burst = ((mp->myri_bursts & 0xf8) >> 3); + shmem->imask = SHMEM_IMASK_RX; + + /* Release the LANAI. */ + myri_disable_irq(mp->lregs, mp->cregs); + myri_reset_off(mp->lregs, mp->cregs); + myri_disable_irq(mp->lregs, mp->cregs); + + /* Wait for the reset to complete. */ + for(i = 0; i < 5000; i++) { + if(shmem->channel.state != STATE_READY) + break; + else + udelay(10); + } + + if(i == 5000) + printk("myricom: Chip would not reset after firmware load.\n"); + + i = myri_do_handshake(mp); + if(i) + printk("myricom: Handshake with LANAI failed.\n"); + + if(mp->eeprom.cpuvers == CPUVERS_4_0) + mp->lregs->vers = 0; + + return i; +} + +static void myri_clean_rings(struct myri_eth *mp) +{ + struct sendq *sq = mp->sq; + struct recvq *rq = mp->rq; + int i; + + rq->tail = rq->head = 0; + for(i = 0; i < (RX_RING_SIZE+1); i++) { + if(mp->rx_skbs[i] != NULL) { + dev_kfree_skb(mp->rx_skbs[i], FREE_READ); + mp->rx_skbs[i] = NULL; + } + } + + mp->tx_old = sq->tail = sq->head = 0; + for(i = 0; i < TX_RING_SIZE; i++) { + if(mp->tx_skbs[i] != NULL) { + dev_kfree_skb(mp->tx_skbs[i], FREE_WRITE); + mp->tx_skbs[i] = NULL; + } + } +} + +static void myri_init_rings(struct myri_eth *mp, int from_irq) +{ + struct recvq *rq = mp->rq; + struct myri_rxd *rxd = &rq->myri_rxd[0]; + struct device *dev = mp->dev; + int gfp_flags = GFP_KERNEL; + int i; + + if(from_irq || intr_count) + gfp_flags = GFP_ATOMIC; + + myri_clean_rings(mp); + for(i = 0; i < RX_RING_SIZE; i++) { + struct sk_buff *skb = myri_alloc_skb(RX_ALLOC_SIZE, gfp_flags); + + if(!skb) + continue; + mp->rx_skbs[i] = skb; + skb->dev = dev; + skb_put(skb, RX_ALLOC_SIZE); + rxd[i].myri_scatters[0].addr = (unsigned int) skb->data; + rxd[i].myri_scatters[0].len = RX_ALLOC_SIZE; + rxd[i].ctx = i; + rxd[i].num_sg = 1; + } + rq->head = 0; + rq->tail = RX_RING_SIZE; +} + +static int myri_init(struct myri_eth *mp, int from_irq) +{ + myri_init_rings(mp, from_irq); + return 0; +} + +static void myri_is_not_so_happy(struct myri_eth *mp) +{ +} + +#ifdef DEBUG_HEADER +static void dump_ehdr(struct ethhdr *ehdr) +{ + printk("ehdr[h_dst(%02x:%02x:%02x:%02x:%02x:%02x)" + "h_source(%02x:%02x:%02x:%02x:%02x:%02x)h_proto(%04x)]\n", + ehdr->h_dest[0], ehdr->h_dest[1], ehdr->h_dest[2], + ehdr->h_dest[3], ehdr->h_dest[4], ehdr->h_dest[4], + ehdr->h_source[0], ehdr->h_source[1], ehdr->h_source[2], + ehdr->h_source[3], ehdr->h_source[4], ehdr->h_source[4], + ehdr->h_proto); +} + +static void dump_ehdr_and_myripad(unsigned char *stuff) +{ + struct ethhdr *ehdr = (struct ethhdr *) (stuff + 2); + + printk("pad[%02x:%02x]", stuff[0], stuff[1]); + printk("ehdr[h_dst(%02x:%02x:%02x:%02x:%02x:%02x)" + "h_source(%02x:%02x:%02x:%02x:%02x:%02x)h_proto(%04x)]\n", + ehdr->h_dest[0], ehdr->h_dest[1], ehdr->h_dest[2], + ehdr->h_dest[3], ehdr->h_dest[4], ehdr->h_dest[4], + ehdr->h_source[0], ehdr->h_source[1], ehdr->h_source[2], + ehdr->h_source[3], ehdr->h_source[4], ehdr->h_source[4], + ehdr->h_proto); +} +#endif + +static inline void myri_tx(struct myri_eth *mp, struct device *dev) +{ + struct sendq *sq = mp->sq; + int entry = mp->tx_old; + int limit = sq->head; + + DTX(("entry[%d] limit[%d] ", entry, limit)); + if(entry == limit) + return; + while(entry != limit) { + struct sk_buff *skb = mp->tx_skbs[entry]; + + DTX(("SKB[%d] ", entry)); + dev_kfree_skb(skb, FREE_WRITE); + mp->tx_skbs[entry] = NULL; + mp->enet_stats.tx_packets++; + + entry = NEXT_TX(entry); + } + mp->tx_old = entry; +} + +/* Determine the packet's protocol ID. The rule here is that we + * assume 802.3 if the type field is short enough to be a length. + * This is normal practice and works for any 'now in use' protocol. + */ +static unsigned short myri_type_trans(struct sk_buff *skb, struct device *dev) +{ + struct ethhdr *eth; + unsigned char *rawp; + + skb->mac.raw = (((unsigned char *)skb->data) + MYRI_PAD_LEN); + skb_pull(skb, dev->hard_header_len); + eth = skb->mac.ethernet; + +#ifdef DEBUG_HEADER + DHDR(("myri_type_trans: ")); + dump_ehdr(eth); +#endif + if(*eth->h_dest & 1) { + if(memcmp(eth->h_dest, dev->broadcast, ETH_ALEN)==0) + skb->pkt_type = PACKET_BROADCAST; + else + skb->pkt_type = PACKET_MULTICAST; + } else if(dev->flags & (IFF_PROMISC|IFF_ALLMULTI)) { + if(memcmp(eth->h_dest, dev->dev_addr, ETH_ALEN)) + skb->pkt_type = PACKET_OTHERHOST; + } + + if(ntohs(eth->h_proto) >= 1536) + return eth->h_proto; + + rawp = skb->data; + + /* This is a magic hack to spot IPX packets. Older Novell breaks + * the protocol design and runs IPX over 802.3 without an 802.2 LLC + * layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This + * won't work for fault tolerant netware but does for the rest. + */ + if (*(unsigned short *)rawp == 0xFFFF) + return htons(ETH_P_802_3); + + /* Real 802.2 LLC */ + return htons(ETH_P_802_2); +} + +static inline void myri_rx(struct myri_eth *mp, struct device *dev) +{ + struct recvq *rq = mp->rq; + struct recvq *rqa = mp->rqack; + int entry = rqa->head; + int limit = rqa->tail; + int drops; + + DRX(("entry[%d] limit[%d] ", entry, limit)); + if(entry == limit) + return; + drops = 0; + DRX(("\n")); + while(entry != limit) { + struct myri_rxd *rxdack = &rqa->myri_rxd[entry]; + unsigned int csum = rxdack->csum; + int len = rxdack->myri_scatters[0].len; + int index = rxdack->ctx; + struct myri_rxd *rxd = &rq->myri_rxd[rq->tail]; + struct sk_buff *skb = mp->rx_skbs[index]; + + /* Ack it. */ + rqa->head = NEXT_RX(entry); + + /* Check for errors. */ + DRX(("rxd[%d]: %p len[%d] csum[%08x] ", entry, rxd, len, csum)); + if((len < (ETH_HLEN + MYRI_PAD_LEN)) || (skb->data[0] != MYRI_PAD_LEN)) { + DRX(("ERROR[")); + mp->enet_stats.rx_errors++; + if(len < (ETH_HLEN + MYRI_PAD_LEN)) { + DRX(("BAD_LENGTH] ")); + mp->enet_stats.rx_length_errors++; + } else { + DRX(("NO_PADDING] ")); + mp->enet_stats.rx_frame_errors++; + } + + /* Return it to the LANAI. */ + drop_it: + drops++; + DRX(("DROP ")); + mp->enet_stats.rx_dropped++; + rxd->myri_scatters[0].addr = (unsigned int) skb->data; + rxd->myri_scatters[0].len = RX_ALLOC_SIZE; + rxd->ctx = index; + rxd->num_sg = 1; + rq->tail = NEXT_RX(rq->tail); + goto next; + } + + DRX(("len[%d] ", len)); + if(len > RX_COPY_THRESHOLD) { + struct sk_buff *new_skb; + + DRX(("BIGBUFF ")); + new_skb = myri_alloc_skb(RX_ALLOC_SIZE, GFP_ATOMIC); + if(!new_skb) { + DRX(("skb_alloc(FAILED) ")); + goto drop_it; + } + mp->rx_skbs[index] = new_skb; + new_skb->dev = dev; + skb_put(new_skb, RX_ALLOC_SIZE); + rxd->myri_scatters[0].addr = (unsigned int) new_skb->data; + rxd->myri_scatters[0].len = RX_ALLOC_SIZE; + rxd->ctx = index; + rxd->num_sg = 1; + rq->tail = NEXT_RX(rq->tail); + + /* Trim the original skb for the netif. */ + DRX(("trim(%d) ", len)); + skb_trim(skb, len); + } else { + struct sk_buff *copy_skb = dev_alloc_skb(len); + + DRX(("SMALLBUFF ")); + if(!copy_skb) { + DRX(("dev_alloc_skb(FAILED) ")); + goto drop_it; + } + copy_skb->dev = dev; + DRX(("resv_and_put ")); + skb_put(copy_skb, len); + memcpy(copy_skb->data, skb->data, len); + + /* Reuse original ring buffer. */ + DRX(("reuse ")); + rxd->myri_scatters[0].addr = (unsigned int) skb->data; + rxd->myri_scatters[0].len = RX_ALLOC_SIZE; + rxd->ctx = index; + rxd->num_sg = 1; + rq->tail = NEXT_RX(rq->tail); + + skb = copy_skb; + } + + /* Just like the happy meal we get checksums from this card. */ + skb->csum = csum; + skb->ip_summed = CHECKSUM_UNNECESSARY; /* XXX */ + + skb->protocol = myri_type_trans(skb, dev); + DRX(("prot[%04x] netif_rx ", skb->protocol)); + netif_rx(skb); + + mp->enet_stats.rx_packets++; + next: + DRX(("NEXT\n")); + entry = NEXT_RX(entry); + } +} + +static void myri_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + struct device *dev = (struct device *) dev_id; + struct myri_eth *mp = (struct myri_eth *) dev->priv; + struct lanai_regs *lregs = mp->lregs; + struct myri_channel *chan = &mp->shmem->channel; + unsigned int status; + + status = lregs->istat; + DIRQ(("myri_interrupt: status[%08x] ", status)); + if(status & ISTAT_HOST) { + unsigned int softstate; + + DIRQ(("IRQ_DISAB ")); + myri_disable_irq(lregs, mp->cregs); + dev->interrupt = 1; + softstate = chan->state; + DIRQ(("state[%08x] ", softstate)); + if(softstate != STATE_READY) { + DIRQ(("myri_not_so_happy ")); + myri_is_not_so_happy(mp); + } + DIRQ(("\nmyri_rx: ")); + myri_rx(mp, dev); + DIRQ(("\nistat=ISTAT_HOST ")); + lregs->istat = ISTAT_HOST; + dev->interrupt = 0; + DIRQ(("IRQ_ENAB ")); + myri_enable_irq(lregs, mp->cregs); + } + DIRQ(("\n")); +} + +static int myri_open(struct device *dev) +{ + struct myri_eth *mp = (struct myri_eth *) dev->priv; + + return myri_init(mp, intr_count); +} + +static int myri_close(struct device *dev) +{ + struct myri_eth *mp = (struct myri_eth *) dev->priv; + + myri_clean_rings(mp); + return 0; +} + +static int myri_start_xmit(struct sk_buff *skb, struct device *dev) +{ + struct myri_eth *mp = (struct myri_eth *) dev->priv; + struct sendq *sq = mp->sq; + struct myri_txd *txd; + unsigned char *srcptr; + unsigned long flags; + unsigned int head, tail; + int len, entry; + + DTX(("myri_start_xmit: ")); + + myri_tx(mp, dev); + + if(dev->tbusy) { + int tickssofar = jiffies - dev->trans_start; + + DTX(("tbusy tickssofar[%d] ", tickssofar)); + if(tickssofar < 40) { + DTX(("returning 1\n")); + return 1; + } else { + DTX(("resetting, return 0\n")); + printk("%s: transmit timed out, resetting\n", dev->name); + mp->enet_stats.tx_errors++; + myri_init(mp, intr_count); + dev->tbusy = 0; + dev->trans_start = jiffies; + return 0; + } + } + + if(skb == NULL || skb->len <= 0) { + DTX(("skb is null, aieee... returning 0\n")); + dev_tint(dev); + return 0; + } + + if(set_bit(0, (void *) &dev->tbusy) != 0) { + DTX(("tbusy, maybe a race? returning 1\n")); + printk("%s: Transmitter access conflict.\n", dev->name); + return 1; + } + + /* This is just to prevent multiple PIO reads for TX_BUFFS_AVAIL. */ + head = sq->head; + tail = sq->tail; + + if(!TX_BUFFS_AVAIL(head, tail)) { + DTX(("no buffs available, returning 1\n")); + return 1; + } + + save_and_cli(flags); + + DHDR(("xmit[skbdata(%p)]\n", skb->data)); +#ifdef DEBUG_HEADER + dump_ehdr_and_myripad(((unsigned char *) skb->data)); +#endif + + /* XXX Maybe this can go as well. */ + len = skb->len; + if(len & 3) { + DTX(("len&3 ")); + len = (len + 4) & (~3); + } + + entry = sq->tail; + + txd = &sq->myri_txd[entry]; + mp->tx_skbs[entry] = skb; + + txd->myri_gathers[0].addr = (unsigned int) skb->data; + txd->myri_gathers[0].len = len; + txd->num_sg = 1; + txd->chan = KERNEL_CHANNEL; + txd->len = len; + txd->csum_off = ((unsigned int)-1); + txd->csum_field = 0; + + srcptr = (((unsigned char *) skb->data) + MYRI_PAD_LEN); + if(srcptr[0] & 0x1) { + txd->addr[0] = txd->addr[1] = txd->addr[2] = txd->addr[3] = 0xffff; + } else { + txd->addr[0] = 0; + txd->addr[1] = (srcptr[0] << 8) | srcptr[1]; + txd->addr[2] = (srcptr[2] << 8) | srcptr[3]; + txd->addr[3] = (srcptr[4] << 8) | srcptr[5]; + } + sq->tail = NEXT_TX(entry); + DTX(("BangTheChip ")); + bang_the_chip(mp); + + DTX(("tbusy=0, returning 0\n")); + dev->tbusy = 0; + restore_flags(flags); + return 0; +} + +/* Create the MyriNet MAC header for an arbitrary protocol layer + * + * saddr=NULL means use device source address + * daddr=NULL means leave destination address (eg unresolved arp) + */ +static int myri_header(struct sk_buff *skb, struct device *dev, unsigned short type, + void *daddr, void *saddr, unsigned len) +{ + struct ethhdr *eth = (struct ethhdr *)skb_push(skb,ETH_HLEN); + unsigned char *pad = (unsigned char *)skb_push(skb,MYRI_PAD_LEN); + +#ifdef DEBUG_HEADER + DHDR(("myri_header: pad[%02x,%02x] ", pad[0], pad[1])); + dump_ehdr(eth); +#endif + + /* Set the MyriNET padding identifier. */ + pad[0] = MYRI_PAD_LEN; + pad[1] = 0xab; + + /* Set the protocol type. For a packet of type ETH_P_802_3 we put the length + * in here instead. It is up to the 802.2 layer to carry protocol information. + */ + if(type != ETH_P_802_3) + eth->h_proto = htons(type); + else + eth->h_proto = htons(len); + + /* Set the source hardware address. */ + if(saddr) + memcpy(eth->h_source, saddr, dev->addr_len); + else + memcpy(eth->h_source, dev->dev_addr, dev->addr_len); + + /* Anyway, the loopback-device should never use this function... */ + if (dev->flags & IFF_LOOPBACK) { + int i; + for(i = 0; i < dev->addr_len; i++) + eth->h_dest[i] = 0; + return(dev->hard_header_len); + } + + if(daddr) { + memcpy(eth->h_dest, daddr, dev->addr_len); + return dev->hard_header_len; + } + return -dev->hard_header_len; +} + +/* Rebuild the MyriNet MAC header. This is called after an ARP + * (or in future other address resolution) has completed on this + * sk_buff. We now let ARP fill in the other fields. + */ +static int myri_rebuild_header(struct sk_buff *skb) +{ + unsigned char *pad = (unsigned char *)skb->data; + struct ethhdr *eth = (struct ethhdr *)(pad + MYRI_PAD_LEN); + struct device *dev = skb->dev; + +#ifdef DEBUG_HEADER + DHDR(("myri_rebuild_header: pad[%02x,%02x] ", pad[0], pad[1])); + dump_ehdr(eth); +#endif + + /* Refill MyriNet padding identifiers, this is just being anal. */ + pad[0] = MYRI_PAD_LEN; + pad[1] = 0xab; + + /* + * Only ARP/IP and NDISC/IPv6 are currently supported + */ + + switch (eth->h_proto) + { +#ifdef CONFIG_INET + case __constant_htons(ETH_P_IP): + + /* + * Try to get ARP to resolve the header. + */ + + return arp_find(eth->h_dest, skb) ? 1 : 0; + break; +#endif + +#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) + case __constant_htons(ETH_P_IPV6): +#ifdef CONFIG_IPV6 + return (ndisc_eth_resolv(eth->h_dest, dev, skb)); +#else + if (ndisc_eth_hook) + return (ndisc_eth_hook(eth->h_dest, dev, skb)); +#endif +#endif + default: + printk(KERN_DEBUG + "%s: unable to resolve type %X addresses.\n", + dev->name, (int)eth->h_proto); + + memcpy(eth->h_source, dev->dev_addr, dev->addr_len); + return 0; + break; + } + + return 0; +} + +int myri_header_cache(struct dst_entry *dst, struct dst_entry *neigh, + struct hh_cache *hh) +{ + unsigned short type = hh->hh_type; + unsigned char *pad = (unsigned char *)hh->hh_data; + struct ethhdr *eth = (struct ethhdr *)(pad + MYRI_PAD_LEN); + struct device *dev = dst->dev; + + if (type == ETH_P_802_3) + return -1; + + /* Refill MyriNet padding identifiers, this is just being anal. */ + pad[0] = MYRI_PAD_LEN; + pad[1] = 0xab; + + eth->h_proto = htons(type); + + memcpy(eth->h_source, dev->dev_addr, dev->addr_len); + + if (dev->flags & IFF_LOOPBACK) { + memset(eth->h_dest, 0, dev->addr_len); + hh->hh_uptodate = 1; + return 0; + } + + if (type != ETH_P_IP) { + printk(KERN_DEBUG "%s: unable to resolve type %X addresses.\n", + dev->name, (int)eth->h_proto); + hh->hh_uptodate = 0; + return 0; + } + +#ifdef CONFIG_INET + hh->hh_uptodate = arp_find_1(eth->h_dest, dst, neigh); +#else + hh->hh_uptodate = 0; +#endif + return 0; +} + +/* Called by Address Resolution module to notify changes in address. */ +void myri_header_cache_update(struct hh_cache *hh, struct device *dev, + unsigned char * haddr) +{ + if (hh->hh_type != ETH_P_IP) { + printk(KERN_DEBUG "eth_header_cache_update: %04x cache is not " + "implemented\n", hh->hh_type); + return; + } + hh->hh_data[0] = MYRI_PAD_LEN; + hh->hh_data[1] = 0xab; + memcpy(hh->hh_data+2, haddr, ETH_ALEN); + hh->hh_uptodate = 1; +} + +static int myri_change_mtu(struct device *dev, int new_mtu) +{ + if ((new_mtu < (ETH_HLEN + MYRI_PAD_LEN)) || (new_mtu > MYRINET_MTU)) + return -EINVAL; + dev->mtu = new_mtu; + return 0; +} + +static struct enet_statistics *myri_get_stats(struct device *dev) +{ return &(((struct myri_eth *)dev->priv)->enet_stats); } + +#define CRC_POLYNOMIAL_BE 0x04c11db7UL /* Ethernet CRC, big endian */ +#define CRC_POLYNOMIAL_LE 0xedb88320UL /* Ethernet CRC, little endian */ + +static void myri_set_multicast(struct device *dev) +{ + /* Do nothing, all MyriCOM nodes transmit multicast frames + * as broadcast packets... + */ +} + +static inline void set_boardid_from_idprom(struct myri_eth *mp, int num) +{ + mp->eeprom.id[0] = 0; + mp->eeprom.id[1] = idprom->id_machtype; + mp->eeprom.id[2] = (idprom->id_sernum >> 16) & 0xff; + mp->eeprom.id[3] = (idprom->id_sernum >> 8) & 0xff; + mp->eeprom.id[4] = (idprom->id_sernum >> 0) & 0xff; + mp->eeprom.id[5] = num; +} + +static inline void determine_reg_space_size(struct myri_eth *mp) +{ + switch(mp->eeprom.cpuvers) { + case CPUVERS_2_3: + case CPUVERS_3_0: + case CPUVERS_3_1: + case CPUVERS_3_2: + mp->reg_size = (3 * 128 * 1024) + PAGE_SIZE; + break; + + case CPUVERS_4_0: + case CPUVERS_4_1: + mp->reg_size = ((PAGE_SIZE<<1) + mp->eeprom.ramsz); + break; + + case CPUVERS_4_2: + case CPUVERS_5_0: + default: + printk("myricom: AIEEE weird cpu version %04x assuming pre4.0\n", + mp->eeprom.cpuvers); + mp->reg_size = (3 * 128 * 1024) + PAGE_SIZE; + }; +} + +#ifdef DEBUG_DETECT +static void dump_eeprom(struct myri_eth *mp) +{ + printk("EEPROM: clockval[%08x] cpuvers[%04x] " + "id[%02x,%02x,%02x,%02x,%02x,%02x]\n", + mp->eeprom.cval, mp->eeprom.cpuvers, + mp->eeprom.id[0], mp->eeprom.id[1], mp->eeprom.id[2], + mp->eeprom.id[3], mp->eeprom.id[4], mp->eeprom.id[5]); + printk("EEPROM: ramsz[%08x]\n", mp->eeprom.ramsz); + printk("EEPROM: fvers[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x\n", + mp->eeprom.fvers[0], mp->eeprom.fvers[1], mp->eeprom.fvers[2], + mp->eeprom.fvers[3], mp->eeprom.fvers[4], mp->eeprom.fvers[5], + mp->eeprom.fvers[6], mp->eeprom.fvers[7]); + printk("EEPROM: %02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x\n", + mp->eeprom.fvers[8], mp->eeprom.fvers[9], mp->eeprom.fvers[10], + mp->eeprom.fvers[11], mp->eeprom.fvers[12], mp->eeprom.fvers[13], + mp->eeprom.fvers[14], mp->eeprom.fvers[15]); + printk("EEPROM: %02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x\n", + mp->eeprom.fvers[16], mp->eeprom.fvers[17], mp->eeprom.fvers[18], + mp->eeprom.fvers[19], mp->eeprom.fvers[20], mp->eeprom.fvers[21], + mp->eeprom.fvers[22], mp->eeprom.fvers[23]); + printk("EEPROM: %02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x]\n", + mp->eeprom.fvers[24], mp->eeprom.fvers[25], mp->eeprom.fvers[26], + mp->eeprom.fvers[27], mp->eeprom.fvers[28], mp->eeprom.fvers[29], + mp->eeprom.fvers[30], mp->eeprom.fvers[31]); + printk("EEPROM: mvers[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x\n", + mp->eeprom.mvers[0], mp->eeprom.mvers[1], mp->eeprom.mvers[2], + mp->eeprom.mvers[3], mp->eeprom.mvers[4], mp->eeprom.mvers[5], + mp->eeprom.mvers[6], mp->eeprom.mvers[7]); + printk("EEPROM: %02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x]\n", + mp->eeprom.mvers[8], mp->eeprom.mvers[9], mp->eeprom.mvers[10], + mp->eeprom.mvers[11], mp->eeprom.mvers[12], mp->eeprom.mvers[13], + mp->eeprom.mvers[14], mp->eeprom.mvers[15]); + printk("EEPROM: dlval[%04x] brd_type[%04x] bus_type[%04x] prod_code[%04x]\n", + mp->eeprom.dlval, mp->eeprom.brd_type, mp->eeprom.bus_type, + mp->eeprom.prod_code); + printk("EEPROM: serial_num[%08x]\n", mp->eeprom.serial_num); +} +#endif + +static int myri_ether_init(struct device *dev, struct linux_sbus_device *sdev, int num) +{ + static unsigned version_printed = 0; + struct myri_eth *mp; + unsigned char prop_buf[32]; + int i; + + DET(("myri_ether_init(%p,%p,%d):\n", dev, sdev, num)); + dev = init_etherdev(0, sizeof(struct myri_eth)); + + if(version_printed++ == 0) + printk(version); + + printk("%s: MyriCOM Gigabit Ethernet ", dev->name); + dev->base_addr = (long) sdev; + + mp = (struct myri_eth *) dev->priv; + mp->myri_sbus_dev = sdev; + + /* Clean out skb arrays. */ + for(i = 0; i < (RX_RING_SIZE + 1); i++) + mp->rx_skbs[i] = NULL; + + for(i = 0; i < TX_RING_SIZE; i++) + mp->tx_skbs[i] = NULL; + + /* First check for EEPROM information. */ + i = prom_getproperty(sdev->prom_node, "myrinet-eeprom-info", + (char *)&mp->eeprom, sizeof(struct myri_eeprom)); + DET(("prom_getprop(myrinet-eeprom-info) returns %d\n", i)); + if(i == 0 || i == -1) { + /* No eeprom property, must cook up the values ourselves. */ + DET(("No EEPROM: ")); + mp->eeprom.bus_type = BUS_TYPE_SBUS; + mp->eeprom.cpuvers = prom_getintdefault(sdev->prom_node,"cpu_version",0); + mp->eeprom.cval = prom_getintdefault(sdev->prom_node,"clock_value",0); + mp->eeprom.ramsz = prom_getintdefault(sdev->prom_node,"sram_size",0); + DET(("cpuvers[%d] cval[%d] ramsz[%d]\n", mp->eeprom.cpuvers, + mp->eeprom.cval, mp->eeprom.ramsz)); + if(mp->eeprom.cpuvers == 0) { + DET(("EEPROM: cpuvers was zero, setting to %04x\n",CPUVERS_2_3)); + mp->eeprom.cpuvers = CPUVERS_2_3; + } + if(mp->eeprom.cpuvers < CPUVERS_3_0) { + DET(("EEPROM: cpuvers < CPUVERS_3_0, clockval set to zero.\n")); + mp->eeprom.cval = 0; + } + if(mp->eeprom.ramsz == 0) { + DET(("EEPROM: ramsz == 0, setting to 128k\n")); + mp->eeprom.ramsz = (128 * 1024); + } + i = prom_getproperty(sdev->prom_node, "myrinet-board-id", + &prop_buf[0], 10); + DET(("EEPROM: prom_getprop(myrinet-board-id) returns %d\n", i)); + if((i != 0) && (i != -1)) + memcpy(&mp->eeprom.id[0], &prop_buf[0], 6); + else + set_boardid_from_idprom(mp, num); + i = prom_getproperty(sdev->prom_node, "fpga_version", + &mp->eeprom.fvers[0], 32); + DET(("EEPROM: prom_getprop(fpga_version) returns %d\n", i)); + if(i == 0 || i == -1) + memset(&mp->eeprom.fvers[0], 0, 32); + + if(mp->eeprom.cpuvers == CPUVERS_4_1) { + DET(("EEPROM: cpuvers CPUVERS_4_1, ")); + if(mp->eeprom.ramsz == (128 * 1024)) { + DET(("ramsize 128k, setting to 256k, ")); + mp->eeprom.ramsz = (256 * 1024); + } + if((mp->eeprom.cval==0x40414041)||(mp->eeprom.cval==0x90449044)){ + DET(("changing cval from %08x to %08x ", + mp->eeprom.cval, 0x50e450e4)); + mp->eeprom.cval = 0x50e450e4; + } + DET(("\n")); + } + } +#ifdef DEBUG_DETECT + dump_eeprom(mp); +#endif + + for(i = 0; i < 6; i++) + printk("%2.2x%c", + dev->dev_addr[i] = mp->eeprom.id[i], + i == 5 ? ' ' : ':'); + printk("\n"); + + determine_reg_space_size(mp); + + /* Map in the MyriCOM register/localram set. */ + prom_apply_sbus_ranges(sdev->my_bus, &sdev->reg_addrs[0], sdev->num_registers); + if(mp->eeprom.cpuvers < CPUVERS_4_0) { + /* XXX Makes no sense, if control reg is non-existant this + * XXX driver cannot function at all... maybe pre-4.0 is + * XXX only a valid version for PCI cards? Ask feldy... + */ + DET(("Mapping regs for cpuvers < CPUVERS_4_0\n")); + mp->regs = (struct myri_regs *) + sparc_alloc_io(sdev->reg_addrs[0].phys_addr, 0, + mp->reg_size, "MyriCOM Regs", + sdev->reg_addrs[0].which_io, 0); + if(!mp->regs) { + printk("MyriCOM: Cannot map MyriCOM registers.\n"); + return ENODEV; + } + mp->lanai = (unsigned short *) (((unsigned long)mp->regs) + (256*1024)); + mp->lanai3 = (unsigned int *) mp->lanai; + mp->lregs = (struct lanai_regs *) &mp->lanai[0x10000]; + } else { + DET(("Mapping regs for cpuvers >= CPUVERS_4_0\n")); + mp->cregs = (struct myri_control *) + sparc_alloc_io(sdev->reg_addrs[0].phys_addr, 0, + PAGE_SIZE, "MyriCOM Control Regs", + sdev->reg_addrs[0].which_io, 0); + mp->lregs = (struct lanai_regs *) + sparc_alloc_io(sdev->reg_addrs[0].phys_addr + (256 * 1024), + 0, PAGE_SIZE, "MyriCOM LANAI Regs", + sdev->reg_addrs[0].which_io, 0); + mp->lanai = (unsigned short *) + sparc_alloc_io(sdev->reg_addrs[0].phys_addr + (512 * 1024), + 0, mp->eeprom.ramsz, "MyriCOM SRAM", + sdev->reg_addrs[0].which_io, 0); + mp->lanai3 = (unsigned int *) mp->lanai; + } + DET(("Registers mapped: cregs[%p] lregs[%p] lanai[%p] lanai3[%p]\n", + mp->cregs, mp->lregs, mp->lanai, mp->lanai3)); + + if(mp->eeprom.cpuvers >= CPUVERS_4_0) + mp->shmem_base = 0xf000; + else + mp->shmem_base = 0x8000; + + DET(("Shared memory base is %04x, ", mp->shmem_base)); + + mp->shmem = (struct myri_shmem *) &mp->lanai[mp->shmem_base]; + DET(("shmem mapped at %p\n", mp->shmem)); + + mp->rqack = &mp->shmem->channel.recvqa; + mp->rq = &mp->shmem->channel.recvq; + mp->sq = &mp->shmem->channel.sendq; + + /* Reset the board. */ + DET(("Resetting LANAI\n")); + myri_reset_off(mp->lregs, mp->cregs); + myri_reset_on(mp->cregs); + + /* Turn IRQ's off. */ + myri_disable_irq(mp->lregs, mp->cregs); + + /* Reset once more. */ + myri_reset_on(mp->cregs); + + /* Get the supported DVMA burst sizes from our SBUS. */ + mp->myri_bursts = prom_getintdefault(mp->myri_sbus_dev->my_bus->prom_node, + "burst-sizes", 0x00); + +#if 1 /* XXX Until sun4m SBUS burst workaround is written. */ + if(sparc_cpu_model == sun4m) + mp->myri_bursts &= ~(DMA_BURST64); +#endif + DET(("MYRI bursts %02x\n", mp->myri_bursts)); + + /* Encode SBUS interrupt level in second control register. */ + i = prom_getint(sdev->prom_node, "interrupts"); + if(i == 0) + i = 4; + DET(("prom_getint(interrupts)==%d, irqlvl set to %04x\n", + i, (1 << i))); + mp->cregs->irqlvl = (1 << i); + + mp->dev = dev; + dev->open = &myri_open; + dev->stop = &myri_close; + dev->hard_start_xmit = &myri_start_xmit; + dev->get_stats = &myri_get_stats; + dev->set_multicast_list = &myri_set_multicast; + dev->irq = (unsigned char) sdev->irqs[0].pri; + dev->dma = 0; + + /* Register interrupt handler now. */ + DET(("Requesting MYRIcom IRQ line.\n")); + if(request_irq(dev->irq, &myri_interrupt, + SA_SHIRQ, "MyriCOM Ethernet", (void *) dev)) { + printk("MyriCOM: Cannot register interrupt handler.\n"); + return ENODEV; + } + + DET(("ether_setup()\n")); + ether_setup(dev); + + dev->mtu = MYRINET_MTU; + dev->change_mtu = myri_change_mtu; + dev->hard_header = myri_header; + dev->rebuild_header = myri_rebuild_header; + dev->hard_header_len = (ETH_HLEN + MYRI_PAD_LEN); + dev->hard_header_cache = myri_header_cache; + dev->header_cache_update= myri_header_cache_update; + + /* Load code onto the LANai. */ + DET(("Loading LANAI firmware\n")); + myri_load_lanai(mp); + +#ifdef MODULE + mp->next_module = root_myri_dev; + root_myri_dev = mp; +#endif + return 0; +} + +int myri_sbus_probe(struct device *dev) +{ + struct linux_sbus *bus; + struct linux_sbus_device *sdev = 0; + static int called = 0; + int cards = 0, v; + + if(called) + return ENODEV; + called++; + + for_each_sbus(bus) { + for_each_sbusdev(sdev, bus) { + if(cards) dev = NULL; + if(!strcmp(sdev->prom_name, "MYRICOM,mlanai") || + !strcmp(sdev->prom_name, "myri")) { + cards++; + DET(("Found myricom gigabit as %s\n", sdev->prom_name)); + if((v = myri_ether_init(dev, sdev, (cards - 1)))) + return v; + } + } + } + if(!cards) + return ENODEV; + return 0; +} + +#ifdef MODULE + +int +init_module(void) +{ + root_myri_dev = NULL; + return myri_sbus_probe(NULL); +} + +void +cleanup_module(void) +{ + struct myri_eth *mp; + + /* No need to check MOD_IN_USE, as sys_delete_module() checks. */ + while (root_myri_dev) { + mp = root_myri_dev->next_module; + + unregister_netdev(root_myri_dev->dev); + kfree(root_myri_dev->dev); + root_myri_dev = mp; + } +} + +#endif /* MODULE */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/myri_sbus.h linux/drivers/net/myri_sbus.h --- v2.1.16/linux/drivers/net/myri_sbus.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/myri_sbus.h Thu Dec 19 11:03:34 1996 @@ -0,0 +1,312 @@ +/* myri_sbus.h: Defines for MyriCOM Gigabit Ethernet SBUS card driver. + * + * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) + */ + +#ifndef _MYRI_SBUS_H +#define _MYRI_SBUS_H + +struct lanai_regs { + volatile unsigned int ipf0; /* Context zero state registers.*/ + volatile unsigned int cur0; + volatile unsigned int prev0; + volatile unsigned int data0; + volatile unsigned int dpf0; + volatile unsigned int ipf1; /* Context one state registers. */ + volatile unsigned int cur1; + volatile unsigned int prev1; + volatile unsigned int data1; + volatile unsigned int dpf1; + volatile unsigned int istat; /* Interrupt status. */ + volatile unsigned int eimask; /* External IRQ mask. */ + volatile unsigned int itimer; /* IRQ timer. */ + volatile unsigned int rtc; /* Real Time Clock */ + volatile unsigned int csum; /* Checksum. */ + volatile unsigned int dma_xaddr; /* SBUS DMA external address. */ + volatile unsigned int dma_laddr; /* SBUS DMA local address. */ + volatile unsigned int dma_ctr; /* SBUS DMA counter. */ + volatile unsigned int rx_dmaptr; /* Receive DMA pointer. */ + volatile unsigned int rx_dmalim; /* Receive DMA limit. */ + volatile unsigned int tx_dmaptr; /* Transmit DMA pointer. */ + volatile unsigned int tx_dmalim; /* Transmit DMA limit. */ + volatile unsigned int tx_dmalimt; /* Transmit DMA limit w/tail. */ + unsigned int _unused0; + volatile unsigned char rbyte; /* Receive byte. */ + unsigned char _unused1[3]; + volatile unsigned short rhalf; /* Receive half-word. */ + unsigned char _unused2[2]; + volatile unsigned int rword; /* Receive word. */ + volatile unsigned int salign; /* Send align. */ + volatile unsigned int ss_sendbyte; /* SingleSend send-byte. */ + volatile unsigned int ss_sendhalf; /* SingleSend send-halfword. */ + volatile unsigned int ss_sendword; /* SingleSend send-word. */ + volatile unsigned int ss_sendt; /* SingleSend special. */ + volatile unsigned int dma_dir; /* DMA direction. */ + volatile unsigned int dma_stat; /* DMA status. */ + volatile unsigned int timeo; /* Timeout register. */ + volatile unsigned int myrinet; /* XXX MAGIC myricom thing */ + volatile unsigned int hwdebug; /* Hardware debugging reg. */ + volatile unsigned int leds; /* LED control. */ + volatile unsigned int vers; /* Version register. */ + volatile unsigned int link_on; /* Link activation reg. */ + unsigned int _unused3[0x17]; + volatile unsigned int cval; /* Clock value register. */ +}; + +/* Interrupt status bits. */ +#define ISTAT_DEBUG 0x80000000 +#define ISTAT_HOST 0x40000000 +#define ISTAT_LAN7 0x00800000 +#define ISTAT_LAN6 0x00400000 +#define ISTAT_LAN5 0x00200000 +#define ISTAT_LAN4 0x00100000 +#define ISTAT_LAN3 0x00080000 +#define ISTAT_LAN2 0x00040000 +#define ISTAT_LAN1 0x00020000 +#define ISTAT_LAN0 0x00010000 +#define ISTAT_WRDY 0x00008000 +#define ISTAT_HRDY 0x00004000 +#define ISTAT_SRDY 0x00002000 +#define ISTAT_LINK 0x00001000 +#define ISTAT_FRES 0x00000800 +#define ISTAT_NRES 0x00000800 +#define ISTAT_WAKE 0x00000400 +#define ISTAT_OB2 0x00000200 +#define ISTAT_OB1 0x00000100 +#define ISTAT_TAIL 0x00000080 +#define ISTAT_WDOG 0x00000040 +#define ISTAT_TIME 0x00000020 +#define ISTAT_DMA 0x00000010 +#define ISTAT_SEND 0x00000008 +#define ISTAT_BUF 0x00000004 +#define ISTAT_RECV 0x00000002 +#define ISTAT_BRDY 0x00000001 + +struct myri_regs { + volatile unsigned int reset_off; + volatile unsigned int reset_on; + volatile unsigned int irq_off; + volatile unsigned int irq_on; + volatile unsigned int wakeup_off; + volatile unsigned int wakeup_on; + volatile unsigned int irq_read; + unsigned int _unused[0xfff9]; + volatile unsigned short local_mem[0x10800]; +}; + +/* Shared memory interrupt mask. */ +#define SHMEM_IMASK_RX 0x00000002 +#define SHMEM_IMASK_TX 0x00000001 + +/* Just to make things readable. */ +#define KERNEL_CHANNEL 0 + +/* The size of this must be >= 129 bytes. */ +struct myri_eeprom { + unsigned int cval; + unsigned short cpuvers; + unsigned char id[6]; + unsigned int ramsz; + unsigned char fvers[32]; + unsigned char mvers[16]; + unsigned short dlval; + unsigned short brd_type; + unsigned short bus_type; + unsigned short prod_code; + unsigned int serial_num; + unsigned short _reserved[24]; + unsigned int _unused[2]; +}; + +/* EEPROM bus types, only SBUS is valid in this driver. */ +#define BUS_TYPE_SBUS 1 + +/* EEPROM CPU revisions. */ +#define CPUVERS_2_3 0x0203 +#define CPUVERS_3_0 0x0300 +#define CPUVERS_3_1 0x0301 +#define CPUVERS_3_2 0x0302 +#define CPUVERS_4_0 0x0400 +#define CPUVERS_4_1 0x0401 +#define CPUVERS_4_2 0x0402 +#define CPUVERS_5_0 0x0500 + +struct myri_control { + volatile unsigned short ctrl; + volatile unsigned short irqlvl; +}; + +/* Global control register defines. */ +#define CONTROL_ROFF 0x8000 /* Reset OFF. */ +#define CONTROL_RON 0x4000 /* Reset ON. */ +#define CONTROL_EIRQ 0x2000 /* Enable IRQ's. */ +#define CONTROL_DIRQ 0x1000 /* Disable IRQ's. */ +#define CONTROL_WON 0x0800 /* Wake-up ON. */ + +#define MYRI_SCATTER_ENTRIES 8 +#define MYRI_GATHER_ENTRIES 16 + +struct myri_sglist { + unsigned int addr; + unsigned int len; +}; + +struct myri_rxd { + struct myri_sglist myri_scatters[MYRI_SCATTER_ENTRIES]; /* DMA scatter list.*/ + unsigned int csum; /* HW computed checksum. */ + unsigned int ctx; + unsigned int num_sg; /* Total scatter entries. */ +}; + +struct myri_txd { + struct myri_sglist myri_gathers[MYRI_GATHER_ENTRIES]; /* DMA scatter list. */ + unsigned int num_sg; /* Total scatter entries. */ + unsigned short addr[4]; /* XXX address */ + unsigned int chan; + unsigned int len; /* Total length of packet. */ + unsigned int csum_off; /* Where data to csum is. */ + unsigned int csum_field; /* Where csum goes in pkt. */ +}; + +#define MYRINET_MTU 8432 +#define RX_ALLOC_SIZE 8448 +#define MYRI_PAD_LEN 2 +#define RX_COPY_THRESHOLD 128 + +/* These numbers are cast in stone, new firmware is needed if + * you want to change them. + */ +#define TX_RING_MAXSIZE 16 +#define RX_RING_MAXSIZE 16 + +#define TX_RING_SIZE 16 +#define RX_RING_SIZE 16 + +/* GRRR... */ +static __inline__ int NEXT_RX(int num) +{ + if(++num > RX_RING_SIZE) + num = 0; + return num; +} + +static __inline__ int PREV_RX(int num) +{ + if(--num < 0) + num = RX_RING_SIZE; + return num; +} + +#define NEXT_TX(num) (((num) + 1) & (TX_RING_SIZE - 1)) +#define PREV_TX(num) (((num) - 1) & (TX_RING_SIZE - 1)) + +#define TX_BUFFS_AVAIL(head, tail) \ + ((head) <= (tail) ? \ + (head) + (TX_RING_SIZE - 1) - (tail) : \ + (head) - (tail) - 1) + +struct sendq { + unsigned int tail; + unsigned int head; + unsigned int hdebug; + unsigned int mdebug; + struct myri_txd myri_txd[TX_RING_MAXSIZE]; +}; + +struct recvq { + unsigned int head; + unsigned int tail; + unsigned int hdebug; + unsigned int mdebug; + struct myri_rxd myri_rxd[RX_RING_MAXSIZE + 1]; +}; + +#define MYRI_MLIST_SIZE 8 + +struct mclist { + unsigned int maxlen; + unsigned int len; + unsigned int cache; + struct pair { + unsigned char addr[8]; + unsigned int val; + } mc_pairs[MYRI_MLIST_SIZE]; + unsigned char bcast_addr[8]; +}; + +struct myri_channel { + unsigned int state; /* State of the channel. */ + unsigned int busy; /* Channel is busy. */ + struct sendq sendq; /* Device tx queue. */ + struct recvq recvq; /* Device rx queue. */ + struct recvq recvqa; /* Device rx queue acked. */ + unsigned int rbytes; /* Receive bytes. */ + unsigned int sbytes; /* Send bytes. */ + unsigned int rmsgs; /* Receive messages. */ + unsigned int smsgs; /* Send messages. */ + struct mclist mclist; /* Device multicast list. */ +}; + +/* Values for per-channel state. */ +#define STATE_WFH 0 /* Waiting for HOST. */ +#define STATE_WFN 1 /* Waiting for NET. */ +#define STATE_READY 2 /* Ready. */ + +struct myri_shmem { + unsigned char addr[8]; /* Board's address. */ + unsigned int nchan; /* Number of channels. */ + unsigned int burst; /* SBUS dma burst enable. */ + unsigned int shakedown; /* DarkkkkStarrr Crashesss... */ + unsigned int send; /* Send wanted. */ + unsigned int imask; /* Interrupt enable mask. */ + unsigned int mlevel; /* Map level. */ + unsigned int debug[4]; /* Misc. debug areas. */ + struct myri_channel channel; /* Only one channel on a host. */ +}; + +struct myri_eth { + /* These are frequently accessed, keep together + * to obtain good cache hit rates. + */ + struct myri_shmem *shmem; /* Shared data structures. */ + struct myri_control *cregs; /* Control register space. */ + struct recvq *rqack; /* Where we ack rx's. */ + struct recvq *rq; /* Where we put buffers. */ + struct sendq *sq; /* Where we stuff tx's. */ + struct device *dev; /* Linux/NET dev struct. */ + int tx_old; /* To speed up tx cleaning. */ + struct lanai_regs *lregs; /* Quick ptr to LANAI regs. */ + struct sk_buff *rx_skbs[RX_RING_SIZE+1];/* RX skb's */ + struct sk_buff *tx_skbs[TX_RING_SIZE]; /* TX skb's */ + struct enet_statistics enet_stats; /* Interface stats. */ + + /* These are less frequently accessed. */ + struct myri_regs *regs; /* MyriCOM register space. */ + unsigned short *lanai; /* View 2 of register space. */ + unsigned int *lanai3; /* View 3 of register space. */ + unsigned int myri_bursts; /* SBUS bursts. */ + struct myri_eeprom eeprom; /* Local copy of EEPROM. */ + unsigned int reg_size; /* Size of register space. */ + unsigned int shmem_base; /* Offset to shared ram. */ + struct linux_sbus_device *myri_sbus_dev; /* Our SBUS device struct. */ + struct myri_eth *next_module; /* Next in adapter chain. */ +}; + +/* We use this to acquire receive skb's that we can DMA directly into. */ +#define ALIGNED_RX_SKB_ADDR(addr) \ + ((((unsigned long)(addr) + (64 - 1)) & ~(64 - 1)) - (unsigned long)(addr)) +static inline struct sk_buff *myri_alloc_skb(unsigned int length, int gfp_flags) +{ + struct sk_buff *skb; + + skb = alloc_skb(length + 64, gfp_flags); + if(skb) { + int offset = ALIGNED_RX_SKB_ADDR(skb->data); + + if(offset) + skb_reserve(skb, offset); + } + return skb; +} + +#endif /* !(_MYRI_SBUS_H) */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/net_init.c linux/drivers/net/net_init.c --- v2.1.16/linux/drivers/net/net_init.c Thu Dec 12 19:37:06 1996 +++ linux/drivers/net/net_init.c Sat Dec 21 13:16:57 1996 @@ -22,6 +22,7 @@ Changed 29/10/95, Alan Cox to pass sockaddr's around for mac addresses. 14/06/96 - Paul Gortmaker: Add generic eth_change_mtu() function. + 24/09/96 - Paul Norton: Add token-ring variants of the netdev functions. */ #include @@ -213,38 +214,6 @@ dev->pa_alen = 4; } -#ifdef CONFIG_TR - -void tr_setup(struct device *dev) -{ - int i; - /* Fill in the fields of the device structure with ethernet-generic values. - This should be in a common file instead of per-driver. */ - for (i = 0; i < DEV_NUMBUFFS; i++) - skb_queue_head_init(&dev->buffs[i]); - - dev->hard_header = tr_header; - dev->rebuild_header = tr_rebuild_header; - - dev->type = ARPHRD_IEEE802; - dev->hard_header_len = TR_HLEN; - dev->mtu = 2000; /* bug in fragmenter...*/ - dev->addr_len = TR_ALEN; - dev->tx_queue_len = 100; /* Long queues on tr */ - - memset(dev->broadcast,0xFF, TR_ALEN); - - /* New-style flags. */ - dev->flags = IFF_BROADCAST; - dev->family = AF_INET; - dev->pa_addr = 0; - dev->pa_brdaddr = 0; - dev->pa_mask = 0; - dev->pa_alen = 4; -} - -#endif - #ifdef CONFIG_FDDI void fddi_setup(struct device *dev) @@ -423,6 +392,221 @@ dev_close(dev); } + +#ifdef CONFIG_TR +/* The list of used and available "tr" slots */ +#define MAX_TR_CARDS 16 /* same as the number of irq's in irq2dev[] */ +static struct device *trdev_index[MAX_TR_CARDS]; + +struct device * +init_trdev(struct device *dev, int sizeof_priv) +{ + int new_device = 0; + int i; + + /* Use an existing correctly named device in Space.c:dev_base. */ + if (dev == NULL) { + int alloc_size = sizeof(struct device) + sizeof("tr%d ") + + sizeof_priv + 3; + struct device *cur_dev; + char pname[8]; /* Putative name for the device. */ + + for (i = 0; i < MAX_TR_CARDS; ++i) + if (trdev_index[i] == NULL) { + sprintf(pname, "tr%d", i); + for (cur_dev = dev_base; cur_dev; cur_dev = cur_dev->next) + if (strcmp(pname, cur_dev->name) == 0) { + dev = cur_dev; + dev->init = NULL; + sizeof_priv = (sizeof_priv + 3) & ~3; + dev->priv = sizeof_priv + ? kmalloc(sizeof_priv, GFP_KERNEL) + : NULL; + if (dev->priv) memset(dev->priv, 0, sizeof_priv); + goto trfound; + } + } + + alloc_size &= ~3; /* Round to dword boundary. */ + dev = (struct device *)kmalloc(alloc_size, GFP_KERNEL); + memset(dev, 0, alloc_size); + if (sizeof_priv) + dev->priv = (void *) (dev + 1); + dev->name = sizeof_priv + (char *)(dev + 1); + new_device = 1; + } + + trfound: /* From the double loop above. */ + + for (i = 0; i < MAX_TR_CARDS; ++i) + if (trdev_index[i] == NULL) { + sprintf(dev->name, "tr%d", i); + trdev_index[i] = dev; + break; + } + + if (new_device) { + /* Append the device to the device queue. */ + struct device **old_devp = &dev_base; + + while ((*old_devp)->next) + old_devp = & (*old_devp)->next; + (*old_devp)->next = dev; + dev->next = 0; + } + + dev->hard_header = tr_header; + dev->rebuild_header = tr_rebuild_header; + + dev->type = ARPHRD_IEEE802; + dev->hard_header_len = TR_HLEN; + dev->mtu = 2000; /* bug in fragmenter...*/ + dev->addr_len = TR_ALEN; + dev->tx_queue_len = 100; /* Long queues on tr */ + + memset(dev->broadcast,0xFF, TR_ALEN); + + /* New-style flags. */ + dev->flags = IFF_BROADCAST; + dev->family = AF_INET; + dev->pa_addr = 0; + dev->pa_brdaddr = 0; + dev->pa_mask = 0; + dev->pa_alen = 4; + + return dev; +} + +void tr_setup(struct device *dev) +{ + int i; + + /* register boot-defined "tr" devices */ + if (dev->name && (strncmp(dev->name, "tr", 2) == 0)) { + i = simple_strtoul(dev->name + 2, NULL, 0); + if (trdev_index[i] == NULL) { + trdev_index[i] = dev; + } + else if (dev != trdev_index[i]) { + /* Really shouldn't happen! */ + printk("tr_setup: Ouch! Someone else took %s\n", + dev->name); + } + } +} + +void tr_freedev(struct device *dev) +{ + int i; + for (i = 0; i < MAX_TR_CARDS; ++i) + { + if (trdev_index[i] == dev) + { + trdev_index[i] = NULL; + break; + } + } +} + +int register_trdev(struct device *dev) +{ + unsigned long flags; + int i; + + for (i = 0; i < DEV_NUMBUFFS; i++) + skb_queue_head_init(&dev->buffs[i]); + + save_flags(flags); + + if (dev && dev->init) { + sti(); /* device probes assume interrupts enabled */ + if (dev->init(dev) != 0) { + unregister_trdev(dev); + restore_flags(flags); + return -EIO; + } + cli(); + + } + restore_flags(flags); + return 0; +} + +void unregister_trdev(struct device *dev) +{ + struct device *d = dev_base; + unsigned long flags; + + save_flags(flags); + cli(); + + if (dev == NULL) + { + printk("was NULL\n"); + restore_flags(flags); + return; + } + /* else */ + if (dev->start) + printk("ERROR '%s' busy and not MOD_IN_USE.\n", dev->name); + + /* + * must jump over main_device+aliases + * avoid alias devices unregistration so that only + * net_alias module manages them + */ +#ifdef CONFIG_NET_ALIAS + if (dev_base == dev) + dev_base = net_alias_nextdev(dev); + else + { + while(d && (net_alias_nextdev(d) != dev)) /* skip aliases */ + d = net_alias_nextdev(d); + + if (d && (net_alias_nextdev(d) == dev)) + { + /* + * Critical: Bypass by consider devices as blocks (maindev+aliases) + */ + net_alias_nextdev_set(d, net_alias_nextdev(dev)); + } +#else + if (dev_base == dev) + dev_base = dev->next; + else + { + while (d && (d->next != dev)) + d = d->next; + + if (d && (d->next == dev)) + { + d->next = dev->next; + } +#endif + else + { + printk("unregister_trdev: '%s' not found\n", dev->name); + restore_flags(flags); + return; + } + } + + tr_freedev(dev); + + restore_flags(flags); + + /* + * You can i.e use a interfaces in a route though it is not up. + * We call close_dev (which is changed: it will down a device even if + * dev->flags==0 (but it will not call dev->stop if IFF_UP + * is not set). + * This will call notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev), + * dev_mc_discard(dev), .... + */ + + dev_close(dev); +} +#endif /* diff -u --recursive --new-file v2.1.16/linux/drivers/net/sm_afsk1200.h linux/drivers/net/sm_afsk1200.h --- v2.1.16/linux/drivers/net/sm_afsk1200.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/sm_afsk1200.h Sat Dec 21 19:08:38 1996 @@ -0,0 +1,304 @@ +/*****************************************************************************/ + +/* + * sm_afsk1200.h -- soundcard radio modem driver, 1200 baud AFSK modem + * + * Copyright (C) 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Please note that the GPL allows you to use the driver, NOT the radio. + * In order to use the radio, you need a license from the communications + * authority of your country. + * + */ + +#include + +/* --------------------------------------------------------------------- */ + +struct demod_state_afsk12 { + unsigned int shreg; + unsigned int bit_pll; + unsigned char last_sample; + unsigned int dcd_shreg; + int dcd_sum0, dcd_sum1, dcd_sum2; + unsigned int dcd_time; + unsigned char last_rxbit; + union { + signed char c[8]; + float f[8]; + } filt; +}; + +struct mod_state_afsk12 { + unsigned int shreg; + unsigned char tx_bit; + unsigned int bit_pll; +}; + +#define DEMOD_STATE ((struct demod_state_afsk12 *)(&sm->d)) +#define MOD_STATE ((struct mod_state_afsk12 *)(&sm->m)) + +/* --------------------------------------------------------------------- */ + +static const char sinetab[] = { + 128, 140, 152, 164, 176, 187, 198, 208, + 217, 226, 233, 240, 245, 249, 252, 254, + 255, 254, 252, 249, 245, 240, 233, 226, + 217, 208, 198, 187, 176, 164, 152, 140, + 128, 116, 104, 92, 80, 69, 58, 48, + 39, 30, 23, 16, 11, 7, 4, 2, + 1, 2, 4, 7, 11, 16, 23, 30, + 39, 48, 58, 69, 80, 92, 104, 116 +}; + +/* --------------------------------------------------------------------- */ + +static void modulator_1200(struct sm_state *sm, unsigned char *buf, int buflen) +{ + static const int dds_inc[2] = { 8192, 15019 }; + int j, k; + + for (; buflen >= 8; buflen -= 8) { + if (MOD_STATE->shreg <= 1) + MOD_STATE->shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; + MOD_STATE->tx_bit = (MOD_STATE->tx_bit ^ + (!(MOD_STATE->shreg & 1))) & 1; + MOD_STATE->shreg >>= 1; + k = dds_inc[MOD_STATE->tx_bit & 1]; + for (j = 0; j < 8; j++) { + *buf++ = sinetab[(MOD_STATE->bit_pll >> 10) & 0x3f]; + MOD_STATE->bit_pll += k; + } + } +} + +/* --------------------------------------------------------------------- */ + +/* + * should eventually move to an asm header file + */ +#if defined (CONFIG_SOUNDMODEM__AFSK1200_FP) && (defined(CONFIG_M586) || defined(CONFIG_M686)) + +#define ENV_STORAGE unsigned char fpu_save[108]; + +#define ENV_SAVE asm("fsave %0;\n\tfninit;\n\t" : "=m" (*fpu_save) : : "memory"); +#define ENV_RESTORE asm("frstor %0;\n\t" : : "m" (*fpu_save)); + +static const float tx_lo_i_f[] = { + 1.000000, 0.707107, 0.000000, -0.707107, -1.000000, -0.707107, -0.000000, 0.707107 +}; + +static const float tx_lo_q_f[] = { + 0.000000, 0.707107, 1.000000, 0.707107, 0.000000, -0.707107, -1.000000, -0.707107 +}; + +static const float tx_hi_i_f[] = { + 1.000000, 0.130526, -0.965926, -0.382683, 0.866025, 0.608761, -0.707107, -0.793353 +}; + +static const float tx_hi_q_f[] = { + 0.000000, 0.991445, 0.258819, -0.923880, -0.500000, 0.793353, 0.707107, -0.608761 +}; + +static inline float convolution8(const float *st, const float *coeff) +{ + float f; + + /* + * from Phil Karn, KA9Q's home page + */ + asm volatile ("flds (%1);\n\t" + "fmuls (%2);\n\t" + "flds 4(%1);\n\t" + "fmuls 4(%2);\n\t" + "flds 8(%1);\n\t" + "fmuls 8(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "flds 12(%1);\n\t" + "fmuls 12(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "flds 16(%1);\n\t" + "fmuls 16(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "flds 20(%1);\n\t" + "fmuls 20(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "flds 24(%1);\n\t" + "fmuls 24(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "flds 28(%1);\n\t" + "fmuls 28(%2);\n\t" + "fxch %%st(2);\n\t" + "faddp;\n\t" + "faddp;\n\t" + "fmul %%st(0),%%st;\n\t" : + "=t" (f) : + "r" (st), + "r" (coeff) : "memory"); + + return f; +} + +static inline int do_filter_1200(struct sm_state *sm, unsigned char newval) +{ + float sum; + + memmove(DEMOD_STATE->filt.f+1, DEMOD_STATE->filt.f, + sizeof(DEMOD_STATE->filt.f) - sizeof(DEMOD_STATE->filt.f[0])); + DEMOD_STATE->filt.f[0] = (((int)newval)-0x80); + + sum = convolution8(DEMOD_STATE->filt.f, tx_lo_i); + sum += convolution8(DEMOD_STATE->filt.f, tx_lo_q); + sum -= convolution8(DEMOD_STATE->filt.f, tx_hi_i); + sum -= convolution8(DEMOD_STATE->filt.f, tx_hi_q); + return sum; +} + +#else /* defined (CONFIG_SOUNDMODEM__AFSK1200_FP) && (defined(CONFIG_M586) || defined(CONFIG_M686)) */ + +#define ENV_STORAGE +#define ENV_SAVE +#define ENV_RESTORE + +static const char tx_lo_i[] = { 127, 89, 0, -89, -127, -89, 0, 89 }; +static const char tx_lo_q[] = { 0, 89, 127, 89, 0, -89, -127, -89 }; +static const char tx_hi_i[] = { 127, 16, -122, -48, 109, 77, -89, -100 }; +static const char tx_hi_q[] = { 0, 125, 32, -117, -63, 100, 89, -77 }; + +static inline void datamove8(signed char *st, unsigned char newval) +{ + memmove(st+1, st, 7); + *st = newval - 0x80; +} + +static inline int convolution8(const signed char *st, const signed char *coeff) +{ + int sum = (st[0] * coeff[0]); + + sum += (st[1] * coeff[1]); + sum += (st[2] * coeff[2]); + sum += (st[3] * coeff[3]); + sum += (st[4] * coeff[4]); + sum += (st[5] * coeff[5]); + sum += (st[6] * coeff[6]); + sum += (st[7] * coeff[7]); + + sum >>= 7; + return sum * sum; +} + +static inline int do_filter_1200(struct sm_state *sm, unsigned char newval) +{ + int sum; + + datamove8(DEMOD_STATE->filt.c, newval); + + sum = convolution8(DEMOD_STATE->filt.c, tx_lo_i); + sum += convolution8(DEMOD_STATE->filt.c, tx_lo_q); + sum -= convolution8(DEMOD_STATE->filt.c, tx_hi_i); + sum -= convolution8(DEMOD_STATE->filt.c, tx_hi_q); + return sum; +} + +#endif /* defined (CONFIG_SOUNDMODEM__AFSK1200_FP) && (defined(CONFIG_M586) || defined(CONFIG_M686)) */ + + +/* --------------------------------------------------------------------- */ + +static void demodulator_1200(struct sm_state *sm, unsigned char *buf, int buflen) +{ + static const int pll_corr[2] = { -0x1000, 0x1000 }; + int j; + int sum; + unsigned char newsample; + ENV_STORAGE; + + ENV_SAVE; + for (; buflen > 0; buflen--, buf++) { + sum = do_filter_1200(sm, *buf); + DEMOD_STATE->dcd_shreg <<= 1; + DEMOD_STATE->bit_pll += 0x2000; + newsample = (sum > 0); + if (DEMOD_STATE->last_sample ^ newsample) { + DEMOD_STATE->last_sample = newsample; + DEMOD_STATE->dcd_shreg |= 1; + DEMOD_STATE->bit_pll += pll_corr + [DEMOD_STATE->bit_pll < 0x9000]; + j = 4 * hweight8(DEMOD_STATE->dcd_shreg & 0x38) + - hweight16(DEMOD_STATE->dcd_shreg & 0x7c0); + DEMOD_STATE->dcd_sum0 += j; + } + hdlcdrv_channelbit(&sm->hdrv, DEMOD_STATE->last_sample); + if ((--DEMOD_STATE->dcd_time) <= 0) { + hdlcdrv_setdcd(&sm->hdrv, (DEMOD_STATE->dcd_sum0 + + DEMOD_STATE->dcd_sum1 + + DEMOD_STATE->dcd_sum2) < 0); + DEMOD_STATE->dcd_sum2 = DEMOD_STATE->dcd_sum1; + DEMOD_STATE->dcd_sum1 = DEMOD_STATE->dcd_sum0; + DEMOD_STATE->dcd_sum0 = 2; /* slight bias */ + DEMOD_STATE->dcd_time = 120; + } + if (DEMOD_STATE->bit_pll >= 0x10000) { + DEMOD_STATE->bit_pll &= 0xffff; + DEMOD_STATE->shreg >>= 1; + DEMOD_STATE->shreg |= (!(DEMOD_STATE->last_rxbit ^ + DEMOD_STATE->last_sample)) << 16; + DEMOD_STATE->last_rxbit = DEMOD_STATE->last_sample; + diag_trigger(sm); + if (DEMOD_STATE->shreg & 1) { + hdlcdrv_putbits(&sm->hdrv, DEMOD_STATE->shreg >> 1); + DEMOD_STATE->shreg = 0x10000; + } + } + diag_add(sm, (((int)*buf)-0x80) << 8, sum); + } + ENV_RESTORE; +} + +/* --------------------------------------------------------------------- */ + +static void demod_init_1200(struct sm_state *sm) +{ + DEMOD_STATE->dcd_time = 120; + DEMOD_STATE->dcd_sum0 = 2; +} + +/* --------------------------------------------------------------------- */ + +static const struct modem_tx_info afsk1200_tx = { + NEXT_TX_INFO, "afsk1200", sizeof(struct mod_state_afsk12), 9600, 1200, 8, + modulator_1200, NULL +}; +#undef NEXT_TX_INFO +#define NEXT_TX_INFO (&afsk1200_tx) + +static const struct modem_rx_info afsk1200_rx = { + NEXT_RX_INFO, "afsk1200", sizeof(struct demod_state_afsk12), 9600, 1200, 8, 8, + demodulator_1200, demod_init_1200 +}; +#undef NEXT_RX_INFO +#define NEXT_RX_INFO (&afsk1200_rx) + +/* --------------------------------------------------------------------- */ + +#undef DEMOD_STATE +#undef MOD_STATE diff -u --recursive --new-file v2.1.16/linux/drivers/net/sm_fsk9600.h linux/drivers/net/sm_fsk9600.h --- v2.1.16/linux/drivers/net/sm_fsk9600.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/sm_fsk9600.h Fri Dec 20 13:16:51 1996 @@ -0,0 +1,552 @@ +/*****************************************************************************/ + +/* + * sm_fsk9600.h -- soundcard radio modem driver, + * 9600 baud G3RUH compatible FSK modem + * + * Copyright (C) 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Please note that the GPL allows you to use the driver, NOT the radio. + * In order to use the radio, you need a license from the communications + * authority of your country. + * + */ + +/* --------------------------------------------------------------------- */ + +struct demod_state_fsk96 { + unsigned int shreg; + unsigned long descram; + unsigned int bit_pll; + unsigned char last_sample; + unsigned int dcd_shreg; + int dcd_sum0, dcd_sum1, dcd_sum2; + unsigned int dcd_time; +}; + +struct mod_state_fsk96 { + unsigned int shreg; + unsigned long scram; + unsigned char tx_bit; +}; + +#define DEMOD_STATE ((struct demod_state_fsk96 *)(&sm->d)) +#define MOD_STATE ((struct mod_state_fsk96 *)(&sm->m)) + +/* --------------------------------------------------------------------- */ + +#define DESCRAM_TAP1 0x20000 +#define DESCRAM_TAP2 0x01000 +#define DESCRAM_TAP3 0x00001 + +#define DESCRAM_TAPSH1 17 +#define DESCRAM_TAPSH2 12 +#define DESCRAM_TAPSH3 0 + +#define SCRAM_TAP1 0x20000 /* X^17 */ +#define SCRAM_TAPN 0x00021 /* X^0+X^5 */ + +/* --------------------------------------------------------------------- */ + +static unsigned char tx_filter_9k6_4[] = { + 65, 66, 63, 63, 76, 76, 73, 73, + 54, 54, 51, 51, 64, 65, 61, 62, + 214, 214, 211, 211, 224, 225, 221, 222, + 202, 202, 199, 200, 213, 213, 210, 210, + 38, 38, 35, 35, 48, 49, 45, 46, + 26, 27, 23, 24, 37, 37, 34, 34, + 186, 187, 183, 184, 197, 197, 194, 194, + 175, 175, 172, 172, 185, 185, 182, 182, + 73, 74, 70, 71, 84, 84, 81, 81, + 62, 62, 59, 59, 72, 72, 69, 69, + 221, 222, 218, 219, 232, 232, 229, 229, + 210, 210, 207, 207, 220, 221, 217, 218, + 46, 46, 43, 43, 56, 56, 53, 53, + 34, 34, 31, 31, 44, 45, 41, 42, + 194, 194, 191, 191, 204, 205, 201, 202, + 182, 183, 179, 180, 193, 193, 190, 190, + 65, 65, 62, 62, 75, 76, 72, 73, + 53, 54, 50, 51, 64, 64, 61, 61, + 213, 214, 210, 211, 224, 224, 221, 221, + 202, 202, 199, 199, 212, 212, 209, 209, + 37, 38, 34, 35, 48, 48, 45, 45, + 26, 26, 23, 23, 36, 37, 33, 34, + 186, 186, 183, 183, 196, 196, 193, 193, + 174, 174, 171, 171, 184, 185, 181, 182, + 73, 73, 70, 70, 83, 83, 80, 80, + 61, 61, 58, 58, 71, 72, 68, 69, + 221, 221, 218, 218, 231, 232, 228, 229, + 209, 210, 206, 207, 220, 220, 217, 217, + 45, 45, 42, 42, 55, 56, 53, 53, + 33, 34, 30, 31, 44, 44, 41, 41, + 193, 194, 190, 191, 204, 204, 201, 201, + 182, 182, 179, 179, 192, 192, 189, 190, + 65, 66, 62, 63, 67, 68, 64, 64, + 103, 104, 100, 101, 105, 106, 101, 102, + 168, 169, 164, 165, 169, 170, 166, 167, + 205, 206, 202, 203, 207, 208, 204, 205, + 49, 50, 46, 46, 51, 51, 47, 48, + 87, 88, 83, 84, 88, 89, 85, 86, + 151, 152, 148, 149, 153, 154, 149, 150, + 189, 190, 186, 187, 191, 192, 187, 188, + 66, 67, 63, 64, 68, 69, 64, 65, + 104, 105, 100, 101, 105, 106, 102, 103, + 168, 169, 165, 166, 170, 171, 167, 167, + 206, 207, 203, 204, 208, 209, 204, 205, + 50, 51, 46, 47, 51, 52, 48, 49, + 87, 88, 84, 85, 89, 90, 85, 86, + 152, 153, 149, 149, 154, 154, 150, 151, + 190, 191, 186, 187, 191, 192, 188, 189, + 66, 67, 63, 64, 68, 69, 64, 65, + 104, 105, 101, 101, 106, 106, 102, 103, + 169, 170, 165, 166, 170, 171, 167, 168, + 206, 207, 203, 204, 208, 209, 204, 205, + 50, 51, 46, 47, 51, 52, 48, 49, + 88, 88, 84, 85, 89, 90, 86, 87, + 152, 153, 149, 150, 154, 155, 150, 151, + 190, 191, 186, 187, 191, 192, 188, 189, + 67, 68, 63, 64, 68, 69, 65, 66, + 105, 106, 101, 102, 106, 107, 103, 104, + 169, 170, 166, 167, 171, 172, 167, 168, + 207, 208, 204, 204, 209, 209, 205, 206, + 50, 51, 47, 48, 52, 53, 49, 50, + 88, 89, 85, 86, 90, 91, 86, 87, + 153, 154, 149, 150, 154, 155, 151, 152, + 191, 191, 187, 188, 192, 193, 189, 190, + 65, 66, 66, 67, 49, 50, 50, 50, + 168, 169, 168, 169, 151, 152, 152, 153, + 103, 104, 104, 105, 87, 88, 87, 88, + 205, 206, 206, 207, 189, 190, 190, 191, + 67, 68, 68, 68, 51, 51, 51, 52, + 169, 170, 170, 171, 153, 154, 154, 154, + 105, 106, 105, 106, 88, 89, 89, 90, + 207, 208, 208, 209, 191, 191, 191, 192, + 62, 63, 63, 63, 46, 46, 46, 47, + 164, 165, 165, 166, 148, 149, 149, 149, + 100, 101, 100, 101, 83, 84, 84, 85, + 202, 203, 203, 204, 186, 186, 186, 187, + 64, 64, 64, 65, 47, 48, 48, 49, + 166, 167, 167, 167, 149, 150, 150, 151, + 101, 102, 102, 103, 85, 86, 85, 86, + 204, 204, 204, 205, 187, 188, 188, 189, + 66, 67, 67, 68, 50, 51, 51, 51, + 169, 170, 169, 170, 152, 153, 153, 154, + 104, 105, 105, 106, 88, 88, 88, 89, + 206, 207, 207, 208, 190, 191, 191, 191, + 68, 69, 69, 69, 51, 52, 52, 53, + 170, 171, 171, 172, 154, 155, 154, 155, + 106, 106, 106, 107, 89, 90, 90, 91, + 208, 209, 209, 209, 192, 192, 192, 193, + 63, 64, 64, 64, 46, 47, 47, 48, + 165, 166, 166, 167, 149, 150, 149, 150, + 101, 101, 101, 102, 84, 85, 85, 86, + 203, 204, 204, 204, 187, 187, 187, 188, + 64, 65, 65, 66, 48, 49, 49, 50, + 167, 168, 167, 168, 150, 151, 151, 152, + 102, 103, 103, 104, 86, 87, 86, 87, + 205, 205, 205, 206, 188, 189, 189, 190, + 65, 65, 73, 73, 38, 37, 46, 45, + 214, 213, 221, 221, 186, 186, 194, 193, + 54, 53, 62, 61, 26, 26, 34, 33, + 202, 202, 210, 209, 175, 174, 182, 182, + 76, 75, 84, 83, 48, 48, 56, 55, + 224, 224, 232, 231, 197, 196, 204, 204, + 64, 64, 72, 71, 37, 36, 44, 44, + 213, 212, 220, 220, 185, 184, 193, 192, + 63, 62, 70, 70, 35, 34, 43, 42, + 211, 210, 218, 218, 183, 183, 191, 190, + 51, 50, 59, 58, 23, 23, 31, 30, + 199, 199, 207, 206, 172, 171, 179, 179, + 73, 72, 81, 80, 45, 45, 53, 53, + 221, 221, 229, 228, 194, 193, 201, 201, + 61, 61, 69, 68, 34, 33, 41, 41, + 210, 209, 217, 217, 182, 181, 190, 189, + 66, 65, 74, 73, 38, 38, 46, 45, + 214, 214, 222, 221, 187, 186, 194, 194, + 54, 54, 62, 61, 27, 26, 34, 34, + 202, 202, 210, 210, 175, 174, 183, 182, + 76, 76, 84, 83, 49, 48, 56, 56, + 225, 224, 232, 232, 197, 196, 205, 204, + 65, 64, 72, 72, 37, 37, 45, 44, + 213, 212, 221, 220, 185, 185, 193, 192, + 63, 62, 71, 70, 35, 35, 43, 42, + 211, 211, 219, 218, 184, 183, 191, 191, + 51, 51, 59, 58, 24, 23, 31, 31, + 200, 199, 207, 207, 172, 171, 180, 179, + 73, 73, 81, 80, 46, 45, 53, 53, + 222, 221, 229, 229, 194, 193, 202, 201, + 62, 61, 69, 69, 34, 34, 42, 41, + 210, 209, 218, 217, 182, 182, 190, 190 +}; + +static unsigned char tx_filter_9k6_5[] = { + 78, 78, 75, 76, 85, 85, 82, 83, + 71, 72, 69, 69, 78, 78, 76, 76, + 193, 193, 190, 191, 199, 200, 197, 198, + 186, 187, 184, 184, 193, 193, 190, 191, + 58, 59, 56, 57, 65, 66, 63, 63, + 52, 52, 49, 50, 58, 59, 56, 57, + 173, 174, 171, 171, 180, 180, 177, 178, + 166, 167, 164, 165, 173, 174, 171, 171, + 85, 86, 83, 83, 92, 92, 89, 90, + 79, 79, 76, 77, 85, 86, 83, 83, + 200, 200, 198, 198, 207, 207, 204, 205, + 193, 194, 191, 191, 200, 201, 198, 198, + 66, 66, 63, 64, 72, 73, 70, 70, + 59, 60, 57, 57, 66, 66, 63, 64, + 180, 181, 178, 179, 187, 188, 185, 185, + 174, 174, 171, 172, 180, 181, 178, 179, + 76, 77, 74, 75, 83, 84, 81, 81, + 70, 70, 67, 68, 76, 77, 74, 75, + 191, 192, 189, 189, 198, 198, 195, 196, + 185, 185, 182, 183, 191, 192, 189, 189, + 57, 57, 54, 55, 64, 64, 61, 62, + 50, 51, 48, 48, 57, 57, 55, 55, + 172, 172, 169, 170, 178, 179, 176, 177, + 165, 166, 163, 163, 172, 172, 169, 170, + 84, 84, 81, 82, 90, 91, 88, 89, + 77, 78, 75, 75, 84, 84, 81, 82, + 198, 199, 196, 197, 205, 206, 203, 203, + 192, 192, 189, 190, 198, 199, 196, 197, + 64, 65, 62, 62, 71, 71, 68, 69, + 57, 58, 55, 56, 64, 65, 62, 62, + 179, 179, 177, 177, 186, 186, 183, 184, + 172, 173, 170, 170, 179, 180, 177, 177, + 78, 79, 76, 77, 79, 79, 77, 77, + 99, 100, 97, 98, 100, 100, 98, 98, + 171, 172, 169, 170, 172, 173, 170, 171, + 192, 193, 190, 191, 193, 194, 191, 192, + 59, 60, 57, 58, 60, 61, 58, 59, + 81, 81, 79, 79, 81, 82, 79, 80, + 153, 153, 151, 151, 153, 154, 151, 152, + 174, 175, 172, 173, 175, 175, 173, 173, + 82, 83, 80, 81, 83, 83, 81, 81, + 103, 104, 101, 102, 104, 105, 102, 103, + 175, 176, 173, 174, 176, 177, 174, 175, + 197, 197, 195, 195, 197, 198, 195, 196, + 64, 64, 62, 62, 64, 65, 62, 63, + 85, 85, 83, 83, 85, 86, 83, 84, + 157, 158, 155, 156, 158, 158, 156, 156, + 178, 179, 176, 177, 179, 179, 177, 177, + 78, 78, 76, 76, 78, 79, 76, 77, + 99, 99, 97, 97, 99, 100, 97, 98, + 171, 172, 169, 170, 172, 172, 170, 170, + 192, 193, 190, 191, 193, 193, 191, 191, + 59, 60, 57, 58, 60, 60, 58, 58, + 80, 81, 78, 79, 81, 82, 79, 80, + 152, 153, 150, 151, 153, 154, 151, 152, + 174, 174, 172, 172, 174, 175, 172, 173, + 82, 82, 80, 80, 82, 83, 80, 81, + 103, 104, 101, 102, 104, 104, 102, 102, + 175, 176, 173, 174, 176, 176, 174, 174, + 196, 197, 194, 195, 197, 198, 195, 196, + 63, 64, 61, 62, 64, 65, 62, 63, + 84, 85, 82, 83, 85, 86, 83, 84, + 157, 157, 155, 155, 157, 158, 155, 156, + 178, 178, 176, 176, 178, 179, 176, 177, + 78, 78, 78, 79, 69, 69, 69, 69, + 136, 136, 136, 137, 127, 127, 127, 128, + 136, 136, 136, 137, 127, 127, 127, 128, + 194, 195, 195, 195, 185, 185, 185, 186, + 69, 69, 69, 69, 59, 60, 60, 60, + 127, 127, 127, 128, 117, 118, 118, 118, + 127, 127, 127, 128, 117, 118, 118, 118, + 185, 185, 185, 186, 175, 176, 176, 176, + 78, 79, 79, 79, 69, 69, 69, 70, + 136, 137, 137, 137, 127, 128, 127, 128, + 136, 137, 137, 137, 127, 128, 127, 128, + 195, 195, 195, 195, 185, 186, 186, 186, + 69, 69, 69, 70, 60, 60, 60, 60, + 127, 128, 127, 128, 118, 118, 118, 119, + 127, 128, 127, 128, 118, 118, 118, 119, + 185, 186, 186, 186, 176, 176, 176, 177, + 78, 79, 79, 79, 69, 69, 69, 70, + 136, 137, 137, 137, 127, 128, 128, 128, + 136, 137, 137, 137, 127, 128, 128, 128, + 195, 195, 195, 195, 185, 186, 186, 186, + 69, 69, 69, 70, 60, 60, 60, 60, + 127, 128, 128, 128, 118, 118, 118, 119, + 127, 128, 128, 128, 118, 118, 118, 119, + 185, 186, 186, 186, 176, 176, 176, 177, + 79, 79, 79, 80, 69, 70, 70, 70, + 137, 137, 137, 138, 128, 128, 128, 128, + 137, 137, 137, 138, 128, 128, 128, 128, + 195, 195, 195, 196, 186, 186, 186, 186, + 69, 70, 70, 70, 60, 60, 60, 61, + 128, 128, 128, 128, 118, 119, 119, 119, + 128, 128, 128, 128, 118, 119, 119, 119, + 186, 186, 186, 186, 176, 177, 177, 177, + 78, 78, 82, 82, 59, 59, 64, 63, + 171, 171, 175, 175, 153, 152, 157, 157, + 99, 99, 103, 103, 81, 80, 85, 84, + 192, 192, 197, 196, 174, 174, 178, 178, + 79, 78, 83, 82, 60, 60, 64, 64, + 172, 172, 176, 176, 153, 153, 158, 157, + 100, 99, 104, 104, 81, 81, 85, 85, + 193, 193, 197, 197, 175, 174, 179, 178, + 76, 76, 80, 80, 57, 57, 62, 61, + 169, 169, 173, 173, 151, 150, 155, 155, + 97, 97, 101, 101, 79, 78, 83, 82, + 190, 190, 195, 194, 172, 172, 176, 176, + 77, 76, 81, 80, 58, 58, 62, 62, + 170, 170, 174, 174, 151, 151, 156, 155, + 98, 97, 102, 102, 79, 79, 83, 83, + 191, 191, 195, 195, 173, 172, 177, 176, + 79, 78, 83, 82, 60, 60, 64, 64, + 172, 172, 176, 176, 153, 153, 158, 157, + 100, 99, 104, 104, 81, 81, 85, 85, + 193, 193, 197, 197, 175, 174, 179, 178, + 79, 79, 83, 83, 61, 60, 65, 65, + 173, 172, 177, 176, 154, 154, 158, 158, + 100, 100, 105, 104, 82, 82, 86, 86, + 194, 193, 198, 198, 175, 175, 179, 179, + 77, 76, 81, 80, 58, 58, 62, 62, + 170, 170, 174, 174, 151, 151, 156, 155, + 98, 97, 102, 102, 79, 79, 83, 83, + 191, 191, 195, 195, 173, 172, 177, 176, + 77, 77, 81, 81, 59, 58, 63, 63, + 171, 170, 175, 174, 152, 152, 156, 156, + 98, 98, 103, 102, 80, 80, 84, 84, + 192, 191, 196, 196, 173, 173, 177, 177, + 78, 76, 85, 84, 58, 57, 66, 64, + 193, 191, 200, 198, 173, 172, 180, 179, + 71, 70, 79, 77, 52, 50, 59, 57, + 186, 185, 193, 192, 166, 165, 174, 172, + 85, 83, 92, 90, 65, 64, 72, 71, + 199, 198, 207, 205, 180, 178, 187, 186, + 78, 76, 85, 84, 58, 57, 66, 64, + 193, 191, 200, 198, 173, 172, 180, 179, + 75, 74, 83, 81, 56, 54, 63, 62, + 190, 189, 198, 196, 171, 169, 178, 177, + 69, 67, 76, 75, 49, 48, 57, 55, + 184, 182, 191, 189, 164, 163, 171, 170, + 82, 81, 89, 88, 63, 61, 70, 68, + 197, 195, 204, 203, 177, 176, 185, 183, + 76, 74, 83, 81, 56, 55, 63, 62, + 190, 189, 198, 196, 171, 169, 178, 177, + 78, 77, 86, 84, 59, 57, 66, 65, + 193, 192, 200, 199, 174, 172, 181, 179, + 72, 70, 79, 78, 52, 51, 60, 58, + 187, 185, 194, 192, 167, 166, 174, 173, + 85, 84, 92, 91, 66, 64, 73, 71, + 200, 198, 207, 206, 180, 179, 188, 186, + 78, 77, 86, 84, 59, 57, 66, 65, + 193, 192, 201, 199, 174, 172, 181, 180, + 76, 75, 83, 82, 57, 55, 64, 62, + 191, 189, 198, 197, 171, 170, 179, 177, + 69, 68, 77, 75, 50, 48, 57, 56, + 184, 183, 191, 190, 165, 163, 172, 170, + 83, 81, 90, 89, 63, 62, 70, 69, + 198, 196, 205, 203, 178, 177, 185, 184, + 76, 75, 83, 82, 57, 55, 64, 62, + 191, 189, 198, 197, 171, 170, 179, 177 +}; + +/* --------------------------------------------------------------------- */ + +static void modulator_9600_4(struct sm_state *sm, unsigned char *buf, int buflen) +{ + int j; + const unsigned char *cp; + + for (; buflen >= 4; buflen -= 4) { + if (MOD_STATE->shreg <= 1) + MOD_STATE->shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; + MOD_STATE->scram = ((MOD_STATE->scram << 1) | + (MOD_STATE->scram & 1)); + MOD_STATE->scram ^= (!(MOD_STATE->shreg & 1)); + MOD_STATE->shreg >>= 1; + if (MOD_STATE->scram & (SCRAM_TAP1 << 1)) + MOD_STATE->scram ^= (SCRAM_TAPN << 1); + MOD_STATE->tx_bit = (MOD_STATE->tx_bit << 1) | + (!!(MOD_STATE->scram & (SCRAM_TAP1 << 2))); + cp = tx_filter_9k6_4 + (MOD_STATE->tx_bit & 0xff); + for (j = 0; j < 4; j++) { + *buf++ = *cp; + cp += 0x100; + } + } +} + +/* --------------------------------------------------------------------- */ + +static void demodulator_9600_4(struct sm_state *sm, unsigned char *buf, int buflen) +{ + static const int pll_corr[2] = { -0x1000, 0x1000 }; + unsigned char curbit; + unsigned int descx; + + for (; buflen > 0; buflen--, buf++) { + DEMOD_STATE->dcd_shreg <<= 1; + DEMOD_STATE->bit_pll += 0x4000; + curbit = (*buf >= 0x80); + if (DEMOD_STATE->last_sample ^ curbit) { + DEMOD_STATE->dcd_shreg |= 1; + DEMOD_STATE->bit_pll += pll_corr + [DEMOD_STATE->bit_pll < 0xa000]; + DEMOD_STATE->dcd_sum0 += 8 * + hweight8(DEMOD_STATE->dcd_shreg & 0x0c) - + !!(DEMOD_STATE->dcd_shreg & 0x10); + } + DEMOD_STATE->last_sample = curbit; + hdlcdrv_channelbit(&sm->hdrv, DEMOD_STATE->last_sample); + if ((--DEMOD_STATE->dcd_time) <= 0) { + hdlcdrv_setdcd(&sm->hdrv, (DEMOD_STATE->dcd_sum0 + + DEMOD_STATE->dcd_sum1 + + DEMOD_STATE->dcd_sum2) < 0); + DEMOD_STATE->dcd_sum2 = DEMOD_STATE->dcd_sum1; + DEMOD_STATE->dcd_sum1 = DEMOD_STATE->dcd_sum0; + DEMOD_STATE->dcd_sum0 = 2; /* slight bias */ + DEMOD_STATE->dcd_time = 240; + } + if (DEMOD_STATE->bit_pll >= 0x10000) { + DEMOD_STATE->bit_pll &= 0xffff; + DEMOD_STATE->descram = (DEMOD_STATE->descram << 1) | curbit; + descx = DEMOD_STATE->descram ^ (DEMOD_STATE->descram >> 1); + descx ^= ((descx >> DESCRAM_TAPSH1) ^ + (descx >> DESCRAM_TAPSH2)); + DEMOD_STATE->shreg >>= 1; + DEMOD_STATE->shreg |= (!(descx & 1)) << 16; + if (DEMOD_STATE->shreg & 1) { + hdlcdrv_putbits(&sm->hdrv, DEMOD_STATE->shreg >> 1); + DEMOD_STATE->shreg = 0x10000; + } + diag_trigger(sm); + } + diag_add_one(sm, ((short)(*buf - 0x80)) << 8); + } +} + +/* --------------------------------------------------------------------- */ + +static void modulator_9600_5(struct sm_state *sm, unsigned char *buf, int buflen) +{ + int j; + const unsigned char *cp; + + for (; buflen >= 5; buflen -= 5) { + if (MOD_STATE->shreg <= 1) + MOD_STATE->shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; + MOD_STATE->scram = ((MOD_STATE->scram << 1) | + (MOD_STATE->scram & 1)); + MOD_STATE->scram ^= (!(MOD_STATE->shreg & 1)); + MOD_STATE->shreg >>= 1; + if (MOD_STATE->scram & (SCRAM_TAP1 << 1)) + MOD_STATE->scram ^= (SCRAM_TAPN << 1); + MOD_STATE->tx_bit = (MOD_STATE->tx_bit << 1) | + (!!(MOD_STATE->scram & (SCRAM_TAP1 << 2))); + cp = tx_filter_9k6_5 + (MOD_STATE->tx_bit & 0xff); + for (j = 0; j < 5; j++) { + *buf++ = *cp; + cp += 0x100; + } + } +} + +/* --------------------------------------------------------------------- */ + +static void demodulator_9600_5(struct sm_state *sm, unsigned char *buf, int buflen) +{ + static const int pll_corr[2] = { -0x1000, 0x1000 }; + unsigned char curbit; + unsigned int descx; + + for (; buflen > 0; buflen--, buf++) { + DEMOD_STATE->dcd_shreg <<= 1; + DEMOD_STATE->bit_pll += 0x3333; + curbit = (*buf >= 0x80); + if (DEMOD_STATE->last_sample ^ curbit) { + DEMOD_STATE->dcd_shreg |= 1; + DEMOD_STATE->bit_pll += pll_corr + [DEMOD_STATE->bit_pll < 0x9999]; + DEMOD_STATE->dcd_sum0 += 16 * + hweight8(DEMOD_STATE->dcd_shreg & 0x0c) - + hweight8(DEMOD_STATE->dcd_shreg & 0x70); + } + DEMOD_STATE->last_sample = curbit; + hdlcdrv_channelbit(&sm->hdrv, DEMOD_STATE->last_sample); + if ((--DEMOD_STATE->dcd_time) <= 0) { + hdlcdrv_setdcd(&sm->hdrv, (DEMOD_STATE->dcd_sum0 + + DEMOD_STATE->dcd_sum1 + + DEMOD_STATE->dcd_sum2) < 0); + DEMOD_STATE->dcd_sum2 = DEMOD_STATE->dcd_sum1; + DEMOD_STATE->dcd_sum1 = DEMOD_STATE->dcd_sum0; + DEMOD_STATE->dcd_sum0 = 2; /* slight bias */ + DEMOD_STATE->dcd_time = 240; + } + if (DEMOD_STATE->bit_pll >= 0x10000) { + DEMOD_STATE->bit_pll &= 0xffff; + DEMOD_STATE->descram = (DEMOD_STATE->descram << 1) | curbit; + descx = DEMOD_STATE->descram ^ (DEMOD_STATE->descram >> 1); + descx ^= ((descx >> DESCRAM_TAPSH1) ^ + (descx >> DESCRAM_TAPSH2)); + DEMOD_STATE->shreg >>= 1; + DEMOD_STATE->shreg |= (!(descx & 1)) << 16; + if (DEMOD_STATE->shreg & 1) { + hdlcdrv_putbits(&sm->hdrv, DEMOD_STATE->shreg >> 1); + DEMOD_STATE->shreg = 0x10000; + } + diag_trigger(sm); + } + diag_add_one(sm, ((short)(*buf - 0x80)) << 8); + } +} + +/* --------------------------------------------------------------------- */ + +static void demod_init_9600(struct sm_state *sm) +{ + DEMOD_STATE->dcd_time = 240; + DEMOD_STATE->dcd_sum0 = 2; +} + +/* --------------------------------------------------------------------- */ + +static const struct modem_tx_info fsk9600_4_tx = { + NEXT_TX_INFO, "fsk9600", sizeof(struct mod_state_fsk96), 38400, 9600, 4, + modulator_9600_4, NULL +}; +#undef NEXT_TX_INFO +#define NEXT_TX_INFO (&fsk9600_4_tx) + +static const struct modem_rx_info fsk9600_4_rx = { + NEXT_RX_INFO, "fsk9600", sizeof(struct demod_state_fsk96), 38400, 9600, 4, 4, + demodulator_9600_4, demod_init_9600 +}; +#undef NEXT_RX_INFO +#define NEXT_RX_INFO (&fsk9600_4_rx) + +/* --------------------------------------------------------------------- */ + +static const struct modem_tx_info fsk9600_5_tx = { + NEXT_TX_INFO, "fsk9600", sizeof(struct mod_state_fsk96), 48000, 9600, 5, + modulator_9600_5, NULL +}; +#undef NEXT_TX_INFO +#define NEXT_TX_INFO (&fsk9600_5_tx) + +static const struct modem_rx_info fsk9600_5_rx = { + NEXT_RX_INFO, "fsk9600", sizeof(struct demod_state_fsk96), 48000, 9600, 5, 5, + demodulator_9600_5, demod_init_9600 +}; +#undef NEXT_RX_INFO +#define NEXT_RX_INFO (&fsk9600_5_rx) + +/* --------------------------------------------------------------------- */ + +#undef DEMOD_STATE +#undef MOD_STATE diff -u --recursive --new-file v2.1.16/linux/drivers/net/sm_sbc.h linux/drivers/net/sm_sbc.h --- v2.1.16/linux/drivers/net/sm_sbc.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/sm_sbc.h Fri Dec 20 13:16:51 1996 @@ -0,0 +1,482 @@ +/*****************************************************************************/ + +/* + * sm_sbc.h -- soundcard radio modem driver soundblaster hardware driver + * + * Copyright (C) 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Please note that the GPL allows you to use the driver, NOT the radio. + * In order to use the radio, you need a license from the communications + * authority of your country. + * + */ + +/* --------------------------------------------------------------------- */ + +struct sc_state_sbc { + unsigned char revhi, revlo; + unsigned char fmt[2]; + unsigned int dmabuflen; + unsigned char *dmabuf; + unsigned char dmabufidx; + unsigned char ptt; +}; + +#define SCSTATE ((struct sc_state_sbc *)(&sm->hw)) + +/* --------------------------------------------------------------------- */ +/* + * the sbc converter's registers + */ +#define DSP_RESET(iobase) (iobase+0x6) +#define DSP_READ_DATA(iobase) (iobase+0xa) +#define DSP_WRITE_DATA(iobase) (iobase+0xc) +#define DSP_WRITE_STATUS(iobase) (iobase+0xc) +#define DSP_DATA_AVAIL(iobase) (iobase+0xe) +#define DSP_MIXER_ADDR(iobase) (iobase+0x4) +#define DSP_MIXER_DATA(iobase) (iobase+0x5) +#define SBC_EXTENT 16 + +/* --------------------------------------------------------------------- */ +/* + * SBC commands + */ +#define SBC_OUTPUT 0x14 +#define SBC_INPUT 0x24 +#define SBC_BLOCKSIZE 0x48 +#define SBC_HI_OUTPUT 0x91 +#define SBC_HI_INPUT 0x99 +#define SBC_LO_OUTPUT_AUTOINIT 0x1c +#define SBC_LO_INPUT_AUTOINIT 0x2c +#define SBC_HI_OUTPUT_AUTOINIT 0x90 +#define SBC_HI_INPUT_AUTOINIT 0x98 +#define SBC_IMMED_INT 0xf2 +#define SBC_GET_REVISION 0xe1 +#define ESS_GET_REVISION 0xe7 +#define SBC_SPEAKER_ON 0xd1 +#define SBC_SPEAKER_OFF 0xd3 +#define SBC_DMA_ON 0xd0 +#define SBC_DMA_OFF 0xd4 +#define SBC_SAMPLE_RATE 0x40 +#define SBC_MONO_8BIT 0xa0 +#define SBC_MONO_16BIT 0xa4 +#define SBC_STEREO_8BIT 0xa8 +#define SBC_STEREO_16BIT 0xac + +#define SBC4_OUT8_AI 0xc6 +#define SBC4_IN8_AI 0xce +#define SBC4_MODE_UNS_MONO 0x00 + +/* --------------------------------------------------------------------- */ + +static int inline reset_dsp(struct device *dev) +{ + int i; + + outb(1, DSP_RESET(dev->base_addr)); + for (i = 0; i < 0x100; i++) + SLOW_DOWN_IO; + outb(0, DSP_RESET(dev->base_addr)); + for (i = 0; i < 0xffff; i++) + if (inb(DSP_DATA_AVAIL(dev->base_addr)) & 0x80) + if (inb(DSP_READ_DATA(dev->base_addr)) == 0xaa) + return 1; + return 0; +} + +/* --------------------------------------------------------------------- */ + +static void inline write_dsp(struct device *dev, unsigned char data) +{ + int i; + + for (i = 0; i < 0xffff; i++) + if (!(inb(DSP_WRITE_STATUS(dev->base_addr)) & 0x80)) { + outb(data, DSP_WRITE_DATA(dev->base_addr)); + return; + } +} + +/* --------------------------------------------------------------------- */ + +static int inline read_dsp(struct device *dev, unsigned char *data) +{ + int i; + + if (!data) + return 0; + for (i = 0; i < 0xffff; i++) + if (inb(DSP_DATA_AVAIL(dev->base_addr)) & 0x80) { + *data = inb(DSP_READ_DATA(dev->base_addr)); + return 1; + } + return 0; +} + +/* --------------------------------------------------------------------- */ + +static void inline sbc_int_ack(struct device *dev) +{ + inb(DSP_DATA_AVAIL(dev->base_addr)); +} + +/* --------------------------------------------------------------------- */ + +static void setup_dma_dsp(struct device *dev, struct sm_state *sm, int send) +{ + unsigned long flags; + static const unsigned char sbcmode[2][2] = { + { SBC_LO_INPUT_AUTOINIT, SBC_LO_OUTPUT_AUTOINIT }, + { SBC_HI_INPUT_AUTOINIT, SBC_HI_OUTPUT_AUTOINIT } + }; + static const unsigned char sbc4mode[2] = { SBC4_IN8_AI, SBC4_OUT8_AI }; + static const unsigned char dmamode[2] = { + DMA_MODE_READ | DMA_MODE_AUTOINIT, DMA_MODE_WRITE | DMA_MODE_AUTOINIT + }; + static const unsigned char sbcskr[2] = { SBC_SPEAKER_OFF, SBC_SPEAKER_ON }; + unsigned long dmabufaddr = virt_to_bus(SCSTATE->dmabuf); + + send = !!send; + if (!reset_dsp(dev)) { + printk(KERN_ERR "%s: sbc: cannot reset sb dsp\n", sm_drvname); + return; + } + if ((dmabufaddr & 0xffff) + SCSTATE->dmabuflen > 0x10000) + panic("sm: DMA buffer violates DMA boundary!"); + save_flags(flags); + cli(); + sbc_int_ack(dev); + write_dsp(dev, SBC_SAMPLE_RATE); /* set sampling rate */ + write_dsp(dev, SCSTATE->fmt[send]); + write_dsp(dev, sbcskr[send]); + disable_dma(dev->dma); + clear_dma_ff(dev->dma); + set_dma_mode(dev->dma, dmamode[send]); + set_dma_addr(dev->dma, dmabufaddr); + set_dma_count(dev->dma, SCSTATE->dmabuflen); + enable_dma(dev->dma); + sbc_int_ack(dev); + if (SCSTATE->revhi >= 4) { + write_dsp(dev, sbc4mode[send]); + write_dsp(dev, SBC4_MODE_UNS_MONO); + write_dsp(dev, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_dsp(dev, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + } else { + write_dsp(dev, SBC_BLOCKSIZE); + write_dsp(dev, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_dsp(dev, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + write_dsp(dev, sbcmode[SCSTATE->fmt[send] >= 180][send]); + /* hispeed mode if sample rate > 13kHz */ + } + restore_flags(flags); +} + +/* --------------------------------------------------------------------- */ + +static void sbc_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + struct device *dev = (struct device *)dev_id; + struct sm_state *sm = (struct sm_state *)dev->priv; + unsigned char new_ptt; + unsigned char *buf; + + if (!dev || !sm || sm->hdrv.magic != HDLCDRV_MAGIC) + return; + new_ptt = hdlcdrv_ptt(&sm->hdrv); + sbc_int_ack(dev); + buf = SCSTATE->dmabuf; + if (SCSTATE->dmabufidx) + buf += SCSTATE->dmabuflen/2; + SCSTATE->dmabufidx = !SCSTATE->dmabufidx; + sm_int_freq(sm); + sti(); + if (new_ptt && !SCSTATE->ptt) { + /* starting to transmit */ + disable_dma(dev->dma); + SCSTATE->dmabufidx = 0; + time_exec(sm->debug_vals.demod_cyc, + sm->mode_rx->demodulator(sm, buf, SCSTATE->dmabuflen/2)); + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, SCSTATE->dmabuf, + SCSTATE->dmabuflen/2)); + setup_dma_dsp(dev, sm, 1); + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, SCSTATE->dmabuf + + SCSTATE->dmabuflen/2, + SCSTATE->dmabuflen/2)); + } else if (SCSTATE->ptt == 1 && !new_ptt) { + /* stopping transmission */ + disable_dma(dev->dma); + SCSTATE->dmabufidx = 0; + setup_dma_dsp(dev, sm, 0); + SCSTATE->ptt = 0; + } else if (SCSTATE->ptt) { + SCSTATE->ptt--; + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, buf, SCSTATE->dmabuflen/2)); + } else { + time_exec(sm->debug_vals.demod_cyc, + sm->mode_rx->demodulator(sm, buf, SCSTATE->dmabuflen/2)); + hdlcdrv_arbitrate(dev, &sm->hdrv); + } + if (new_ptt) + SCSTATE->ptt = 2; + output_status(sm); + hdlcdrv_transmitter(dev, &sm->hdrv); + hdlcdrv_receiver(dev, &sm->hdrv); +} + +/* --------------------------------------------------------------------- */ + +static int sbc_open(struct device *dev, struct sm_state *sm) +{ + if (sizeof(sm->m) < sizeof(struct sc_state_sbc)) { + printk(KERN_ERR "sm sbc: sbc state too big: %d > %d\n", + sizeof(struct sc_state_sbc), sizeof(sm->m)); + return -ENODEV; + } + if (!dev || !sm) + return -ENXIO; + if (dev->base_addr <= 0 || dev->base_addr > 0x1000-SBC_EXTENT || + dev->irq < 2 || dev->irq > 15 || dev->dma > 3) + return -ENXIO; + if (check_region(dev->base_addr, SBC_EXTENT)) + return -EACCES; + /* + * check if a card is available + */ + if (!reset_dsp(dev)) + return -ENODEV; + write_dsp(dev, SBC_GET_REVISION); + if (!read_dsp(dev, &SCSTATE->revhi) || + !read_dsp(dev, &SCSTATE->revlo)) + return -ENODEV; + if (SCSTATE->revhi < 2) { + printk(KERN_ERR "%s: your card is an antiquity, at least DSP " + "rev 2.00 required\n", sm_drvname); + return -ENODEV; + } + if (SCSTATE->revhi < 3 && + (SCSTATE->fmt[0] >= 180 || SCSTATE->fmt[1] >= 180)) { + printk(KERN_ERR "%s: sbc io 0x%lx: DSP rev %d.%02d too " + "old, at least 3.00 required\n", sm_drvname, + dev->base_addr, SCSTATE->revhi, SCSTATE->revlo); + return -ENODEV; + } + /* + * initialize some variables + */ + if (!(SCSTATE->dmabuf = kmalloc(SCSTATE->dmabuflen, GFP_KERNEL | GFP_DMA))) + return -ENOMEM; + SCSTATE->dmabufidx = SCSTATE->ptt = 0; + + memset(&sm->m, 0, sizeof(sm->m)); + memset(&sm->d, 0, sizeof(sm->d)); + if (sm->mode_tx->init) + sm->mode_tx->init(sm); + if (sm->mode_rx->init) + sm->mode_rx->init(sm); + + if (request_dma(dev->dma, sm->hwdrv->hw_name)) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return -EBUSY; + } + if (request_irq(dev->irq, sbc_interrupt, SA_INTERRUPT, + sm->hwdrv->hw_name, dev)) { + free_dma(dev->dma); + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return -EBUSY; + } + request_region(dev->base_addr, SBC_EXTENT, sm->hwdrv->hw_name); + setup_dma_dsp(dev, sm, 0); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int sbc_close(struct device *dev, struct sm_state *sm) +{ + if (!dev || !sm) + return -EINVAL; + /* + * disable interrupts + */ + disable_dma(dev->dma); + reset_dsp(dev); + free_irq(dev->irq, dev); + free_dma(dev->dma); + release_region(dev->base_addr, SBC_EXTENT); + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int sbc_sethw(struct device *dev, struct sm_state *sm, char *mode) +{ + char *cp = strchr(mode, '.'); + const struct modem_tx_info *mtp = modem_tx_base; + const struct modem_rx_info *mrp; + int dv; + + if (!strcmp(mode, "off")) { + sm->mode_tx = NULL; + sm->mode_rx = NULL; + return 0; + } + if (cp) + *cp++ = '\0'; + else + cp = mode; + for (; mtp; mtp = mtp->next) { + if (mtp->loc_storage > sizeof(sm->m)) { + printk(KERN_ERR "%s: insufficient storage for modulator %s (%d)\n", + sm_drvname, mtp->name, mtp->loc_storage); + continue; + } + if (!mtp->name || strcmp(mtp->name, mode)) + continue; + if (mtp->srate < 5000 || mtp->srate > 44100) + continue; + for (mrp = modem_rx_base; mrp; mrp = mrp->next) { + if (mrp->loc_storage > sizeof(sm->d)) { + printk(KERN_ERR "%s: insufficient storage for demodulator %s (%d)\n", + sm_drvname, mrp->name, mrp->loc_storage); + continue; + } + if (mrp->name && !strcmp(mrp->name, cp) && + mrp->srate >= 5000 && mrp->srate <= 44100) { + sm->mode_tx = mtp; + sm->mode_rx = mrp; + SCSTATE->fmt[0] = 256-((1000000L+mtp->srate/2)/ + mrp->srate); + SCSTATE->fmt[1] = 256-((1000000L+mtp->srate/2)/ + mtp->srate); + dv = lcm(sm->mode_tx->dmabuflenmodulo, + sm->mode_rx->dmabuflenmodulo); + SCSTATE->dmabuflen = sm->mode_rx->srate/100+dv-1; + SCSTATE->dmabuflen /= dv; + SCSTATE->dmabuflen *= 2*dv; /* make sure DMA buf is even */ + printk(KERN_DEBUG "sm sbc: modtx %u modrx %u srt %u buflen %u srate %u div %u srate %u div %u\n", + sm->mode_tx->dmabuflenmodulo, sm->mode_rx->dmabuflenmodulo, + sm->mode_rx->srate, SCSTATE->dmabuflen, mrp->srate, SCSTATE->fmt[0], mtp->srate, SCSTATE->fmt[1]); + return 0; + } + } + } + return -EINVAL; +} + +/* --------------------------------------------------------------------- */ + +static int sbc_ioctl(struct device *dev, struct sm_state *sm, struct ifreq *ifr, + struct hdlcdrv_ioctl *hi, int cmd) +{ + struct sm_ioctl bi; + unsigned long flags; + int i; + + if (cmd != SIOCDEVPRIVATE) + return -ENOIOCTLCMD; + + if (hi->cmd == HDLCDRVCTL_MODEMPARMASK) + return HDLCDRV_PARMASK_IOBASE | HDLCDRV_PARMASK_IRQ | + HDLCDRV_PARMASK_DMA | HDLCDRV_PARMASK_SERIOBASE | + HDLCDRV_PARMASK_PARIOBASE | HDLCDRV_PARMASK_MIDIIOBASE; + + if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) + return -EFAULT; + + switch (bi.cmd) { + default: + return -ENOIOCTLCMD; + + case SMCTL_GETMIXER: + i = 0; + bi.data.mix.sample_rate = sm->mode_rx->srate; + bi.data.mix.bit_rate = sm->hdrv.par.bitrate; + switch (SCSTATE->revhi) { + case 2: + bi.data.mix.mixer_type = SM_MIXER_CT1335; + break; + case 3: + bi.data.mix.mixer_type = SM_MIXER_CT1345; + break; + case 4: + bi.data.mix.mixer_type = SM_MIXER_CT1745; + break; + } + if (bi.data.mix.mixer_type != SM_MIXER_INVALID && + bi.data.mix.reg < 0x80) { + save_flags(flags); + cli(); + outb(bi.data.mix.reg, DSP_MIXER_ADDR(dev->base_addr)); + bi.data.mix.data = inb(DSP_MIXER_DATA(dev->base_addr)); + restore_flags(flags); + i = 1; + } + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return i; + + case SMCTL_SETMIXER: + if (!suser()) + return -EACCES; + switch (SCSTATE->revhi) { + case 2: + if (bi.data.mix.mixer_type != SM_MIXER_CT1335) + return -EINVAL; + break; + case 3: + if (bi.data.mix.mixer_type != SM_MIXER_CT1345) + return -EINVAL; + break; + case 4: + if (bi.data.mix.mixer_type != SM_MIXER_CT1745) + return -EINVAL; + break; + default: + return -ENODEV; + } + if (bi.data.mix.reg >= 0x80) + return -EACCES; + save_flags(flags); + cli(); + outb(bi.data.mix.reg, DSP_MIXER_ADDR(dev->base_addr)); + outb(bi.data.mix.data, DSP_MIXER_DATA(dev->base_addr)); + restore_flags(flags); + return 0; + + } + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; + +} + +/* --------------------------------------------------------------------- */ + +struct hardware_info hw_sbc = { + NEXT_HW_INFO, "sbc", sizeof(struct sc_state_sbc), + sbc_open, sbc_close, sbc_ioctl, sbc_sethw +}; +#undef NEXT_HW_INFO +#define NEXT_HW_INFO (&hw_sbc) + +/* --------------------------------------------------------------------- */ + +#undef SCSTATE diff -u --recursive --new-file v2.1.16/linux/drivers/net/sm_tables.h linux/drivers/net/sm_tables.h --- v2.1.16/linux/drivers/net/sm_tables.h Fri Nov 1 17:13:18 1996 +++ linux/drivers/net/sm_tables.h Thu Jan 1 02:00:00 1970 @@ -1,320 +0,0 @@ -#ifdef ENABLE_AFSK1200 -static const char tx_lo_i[] = { 127, 89, 0, -89, -127, -89, 0, 89 }; - -static const char tx_lo_q[] = { 0, 89, 127, 89, 0, -89, -127, -89 }; - -static const char tx_hi_i[] = { 127, 16, -122, -48, 109, 77, -89, -100 }; - -static const char tx_hi_q[] = { 0, 125, 32, -117, -63, 100, 89, -77 }; - -static const char sinetab[] = { - 128, 140, 152, 164, 176, 187, 198, 208, - 217, 226, 233, 240, 245, 249, 252, 254, - 255, 254, 252, 249, 245, 240, 233, 226, - 217, 208, 198, 187, 176, 164, 152, 140, - 128, 116, 104, 92, 80, 69, 58, 48, - 39, 30, 23, 16, 11, 7, 4, 2, - 1, 2, 4, 7, 11, 16, 23, 30, - 39, 48, 58, 69, 80, 92, 104, 116 -}; -#endif ENABLE_AFSK1200 -#ifdef ENABLE_FSK9600 -#ifdef ENABLE_SBC -static unsigned char tx_filter_9k6_4[] = { - 65, 66, 63, 63, 76, 76, 73, 73, - 54, 54, 51, 51, 64, 65, 61, 62, - 214, 214, 211, 211, 224, 225, 221, 222, - 202, 202, 199, 200, 213, 213, 210, 210, - 38, 38, 35, 35, 48, 49, 45, 46, - 26, 27, 23, 24, 37, 37, 34, 34, - 186, 187, 183, 184, 197, 197, 194, 194, - 175, 175, 172, 172, 185, 185, 182, 182, - 73, 74, 70, 71, 84, 84, 81, 81, - 62, 62, 59, 59, 72, 72, 69, 69, - 221, 222, 218, 219, 232, 232, 229, 229, - 210, 210, 207, 207, 220, 221, 217, 218, - 46, 46, 43, 43, 56, 56, 53, 53, - 34, 34, 31, 31, 44, 45, 41, 42, - 194, 194, 191, 191, 204, 205, 201, 202, - 182, 183, 179, 180, 193, 193, 190, 190, - 65, 65, 62, 62, 75, 76, 72, 73, - 53, 54, 50, 51, 64, 64, 61, 61, - 213, 214, 210, 211, 224, 224, 221, 221, - 202, 202, 199, 199, 212, 212, 209, 209, - 37, 38, 34, 35, 48, 48, 45, 45, - 26, 26, 23, 23, 36, 37, 33, 34, - 186, 186, 183, 183, 196, 196, 193, 193, - 174, 174, 171, 171, 184, 185, 181, 182, - 73, 73, 70, 70, 83, 83, 80, 80, - 61, 61, 58, 58, 71, 72, 68, 69, - 221, 221, 218, 218, 231, 232, 228, 229, - 209, 210, 206, 207, 220, 220, 217, 217, - 45, 45, 42, 42, 55, 56, 53, 53, - 33, 34, 30, 31, 44, 44, 41, 41, - 193, 194, 190, 191, 204, 204, 201, 201, - 182, 182, 179, 179, 192, 192, 189, 190, - 65, 66, 62, 63, 67, 68, 64, 64, - 103, 104, 100, 101, 105, 106, 101, 102, - 168, 169, 164, 165, 169, 170, 166, 167, - 205, 206, 202, 203, 207, 208, 204, 205, - 49, 50, 46, 46, 51, 51, 47, 48, - 87, 88, 83, 84, 88, 89, 85, 86, - 151, 152, 148, 149, 153, 154, 149, 150, - 189, 190, 186, 187, 191, 192, 187, 188, - 66, 67, 63, 64, 68, 69, 64, 65, - 104, 105, 100, 101, 105, 106, 102, 103, - 168, 169, 165, 166, 170, 171, 167, 167, - 206, 207, 203, 204, 208, 209, 204, 205, - 50, 51, 46, 47, 51, 52, 48, 49, - 87, 88, 84, 85, 89, 90, 85, 86, - 152, 153, 149, 149, 154, 154, 150, 151, - 190, 191, 186, 187, 191, 192, 188, 189, - 66, 67, 63, 64, 68, 69, 64, 65, - 104, 105, 101, 101, 106, 106, 102, 103, - 169, 170, 165, 166, 170, 171, 167, 168, - 206, 207, 203, 204, 208, 209, 204, 205, - 50, 51, 46, 47, 51, 52, 48, 49, - 88, 88, 84, 85, 89, 90, 86, 87, - 152, 153, 149, 150, 154, 155, 150, 151, - 190, 191, 186, 187, 191, 192, 188, 189, - 67, 68, 63, 64, 68, 69, 65, 66, - 105, 106, 101, 102, 106, 107, 103, 104, - 169, 170, 166, 167, 171, 172, 167, 168, - 207, 208, 204, 204, 209, 209, 205, 206, - 50, 51, 47, 48, 52, 53, 49, 50, - 88, 89, 85, 86, 90, 91, 86, 87, - 153, 154, 149, 150, 154, 155, 151, 152, - 191, 191, 187, 188, 192, 193, 189, 190, - 65, 66, 66, 67, 49, 50, 50, 50, - 168, 169, 168, 169, 151, 152, 152, 153, - 103, 104, 104, 105, 87, 88, 87, 88, - 205, 206, 206, 207, 189, 190, 190, 191, - 67, 68, 68, 68, 51, 51, 51, 52, - 169, 170, 170, 171, 153, 154, 154, 154, - 105, 106, 105, 106, 88, 89, 89, 90, - 207, 208, 208, 209, 191, 191, 191, 192, - 62, 63, 63, 63, 46, 46, 46, 47, - 164, 165, 165, 166, 148, 149, 149, 149, - 100, 101, 100, 101, 83, 84, 84, 85, - 202, 203, 203, 204, 186, 186, 186, 187, - 64, 64, 64, 65, 47, 48, 48, 49, - 166, 167, 167, 167, 149, 150, 150, 151, - 101, 102, 102, 103, 85, 86, 85, 86, - 204, 204, 204, 205, 187, 188, 188, 189, - 66, 67, 67, 68, 50, 51, 51, 51, - 169, 170, 169, 170, 152, 153, 153, 154, - 104, 105, 105, 106, 88, 88, 88, 89, - 206, 207, 207, 208, 190, 191, 191, 191, - 68, 69, 69, 69, 51, 52, 52, 53, - 170, 171, 171, 172, 154, 155, 154, 155, - 106, 106, 106, 107, 89, 90, 90, 91, - 208, 209, 209, 209, 192, 192, 192, 193, - 63, 64, 64, 64, 46, 47, 47, 48, - 165, 166, 166, 167, 149, 150, 149, 150, - 101, 101, 101, 102, 84, 85, 85, 86, - 203, 204, 204, 204, 187, 187, 187, 188, - 64, 65, 65, 66, 48, 49, 49, 50, - 167, 168, 167, 168, 150, 151, 151, 152, - 102, 103, 103, 104, 86, 87, 86, 87, - 205, 205, 205, 206, 188, 189, 189, 190, - 65, 65, 73, 73, 38, 37, 46, 45, - 214, 213, 221, 221, 186, 186, 194, 193, - 54, 53, 62, 61, 26, 26, 34, 33, - 202, 202, 210, 209, 175, 174, 182, 182, - 76, 75, 84, 83, 48, 48, 56, 55, - 224, 224, 232, 231, 197, 196, 204, 204, - 64, 64, 72, 71, 37, 36, 44, 44, - 213, 212, 220, 220, 185, 184, 193, 192, - 63, 62, 70, 70, 35, 34, 43, 42, - 211, 210, 218, 218, 183, 183, 191, 190, - 51, 50, 59, 58, 23, 23, 31, 30, - 199, 199, 207, 206, 172, 171, 179, 179, - 73, 72, 81, 80, 45, 45, 53, 53, - 221, 221, 229, 228, 194, 193, 201, 201, - 61, 61, 69, 68, 34, 33, 41, 41, - 210, 209, 217, 217, 182, 181, 190, 189, - 66, 65, 74, 73, 38, 38, 46, 45, - 214, 214, 222, 221, 187, 186, 194, 194, - 54, 54, 62, 61, 27, 26, 34, 34, - 202, 202, 210, 210, 175, 174, 183, 182, - 76, 76, 84, 83, 49, 48, 56, 56, - 225, 224, 232, 232, 197, 196, 205, 204, - 65, 64, 72, 72, 37, 37, 45, 44, - 213, 212, 221, 220, 185, 185, 193, 192, - 63, 62, 71, 70, 35, 35, 43, 42, - 211, 211, 219, 218, 184, 183, 191, 191, - 51, 51, 59, 58, 24, 23, 31, 31, - 200, 199, 207, 207, 172, 171, 180, 179, - 73, 73, 81, 80, 46, 45, 53, 53, - 222, 221, 229, 229, 194, 193, 202, 201, - 62, 61, 69, 69, 34, 34, 42, 41, - 210, 209, 218, 217, 182, 182, 190, 190 -}; - -#endif /* ENABLE_SBC */ -#if defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) -static unsigned char tx_filter_9k6_5[] = { - 78, 78, 75, 76, 85, 85, 82, 83, - 71, 72, 69, 69, 78, 78, 76, 76, - 193, 193, 190, 191, 199, 200, 197, 198, - 186, 187, 184, 184, 193, 193, 190, 191, - 58, 59, 56, 57, 65, 66, 63, 63, - 52, 52, 49, 50, 58, 59, 56, 57, - 173, 174, 171, 171, 180, 180, 177, 178, - 166, 167, 164, 165, 173, 174, 171, 171, - 85, 86, 83, 83, 92, 92, 89, 90, - 79, 79, 76, 77, 85, 86, 83, 83, - 200, 200, 198, 198, 207, 207, 204, 205, - 193, 194, 191, 191, 200, 201, 198, 198, - 66, 66, 63, 64, 72, 73, 70, 70, - 59, 60, 57, 57, 66, 66, 63, 64, - 180, 181, 178, 179, 187, 188, 185, 185, - 174, 174, 171, 172, 180, 181, 178, 179, - 76, 77, 74, 75, 83, 84, 81, 81, - 70, 70, 67, 68, 76, 77, 74, 75, - 191, 192, 189, 189, 198, 198, 195, 196, - 185, 185, 182, 183, 191, 192, 189, 189, - 57, 57, 54, 55, 64, 64, 61, 62, - 50, 51, 48, 48, 57, 57, 55, 55, - 172, 172, 169, 170, 178, 179, 176, 177, - 165, 166, 163, 163, 172, 172, 169, 170, - 84, 84, 81, 82, 90, 91, 88, 89, - 77, 78, 75, 75, 84, 84, 81, 82, - 198, 199, 196, 197, 205, 206, 203, 203, - 192, 192, 189, 190, 198, 199, 196, 197, - 64, 65, 62, 62, 71, 71, 68, 69, - 57, 58, 55, 56, 64, 65, 62, 62, - 179, 179, 177, 177, 186, 186, 183, 184, - 172, 173, 170, 170, 179, 180, 177, 177, - 78, 79, 76, 77, 79, 79, 77, 77, - 99, 100, 97, 98, 100, 100, 98, 98, - 171, 172, 169, 170, 172, 173, 170, 171, - 192, 193, 190, 191, 193, 194, 191, 192, - 59, 60, 57, 58, 60, 61, 58, 59, - 81, 81, 79, 79, 81, 82, 79, 80, - 153, 153, 151, 151, 153, 154, 151, 152, - 174, 175, 172, 173, 175, 175, 173, 173, - 82, 83, 80, 81, 83, 83, 81, 81, - 103, 104, 101, 102, 104, 105, 102, 103, - 175, 176, 173, 174, 176, 177, 174, 175, - 197, 197, 195, 195, 197, 198, 195, 196, - 64, 64, 62, 62, 64, 65, 62, 63, - 85, 85, 83, 83, 85, 86, 83, 84, - 157, 158, 155, 156, 158, 158, 156, 156, - 178, 179, 176, 177, 179, 179, 177, 177, - 78, 78, 76, 76, 78, 79, 76, 77, - 99, 99, 97, 97, 99, 100, 97, 98, - 171, 172, 169, 170, 172, 172, 170, 170, - 192, 193, 190, 191, 193, 193, 191, 191, - 59, 60, 57, 58, 60, 60, 58, 58, - 80, 81, 78, 79, 81, 82, 79, 80, - 152, 153, 150, 151, 153, 154, 151, 152, - 174, 174, 172, 172, 174, 175, 172, 173, - 82, 82, 80, 80, 82, 83, 80, 81, - 103, 104, 101, 102, 104, 104, 102, 102, - 175, 176, 173, 174, 176, 176, 174, 174, - 196, 197, 194, 195, 197, 198, 195, 196, - 63, 64, 61, 62, 64, 65, 62, 63, - 84, 85, 82, 83, 85, 86, 83, 84, - 157, 157, 155, 155, 157, 158, 155, 156, - 178, 178, 176, 176, 178, 179, 176, 177, - 78, 78, 78, 79, 69, 69, 69, 69, - 136, 136, 136, 137, 127, 127, 127, 128, - 136, 136, 136, 137, 127, 127, 127, 128, - 194, 195, 195, 195, 185, 185, 185, 186, - 69, 69, 69, 69, 59, 60, 60, 60, - 127, 127, 127, 128, 117, 118, 118, 118, - 127, 127, 127, 128, 117, 118, 118, 118, - 185, 185, 185, 186, 175, 176, 176, 176, - 78, 79, 79, 79, 69, 69, 69, 70, - 136, 137, 137, 137, 127, 128, 127, 128, - 136, 137, 137, 137, 127, 128, 127, 128, - 195, 195, 195, 195, 185, 186, 186, 186, - 69, 69, 69, 70, 60, 60, 60, 60, - 127, 128, 127, 128, 118, 118, 118, 119, - 127, 128, 127, 128, 118, 118, 118, 119, - 185, 186, 186, 186, 176, 176, 176, 177, - 78, 79, 79, 79, 69, 69, 69, 70, - 136, 137, 137, 137, 127, 128, 128, 128, - 136, 137, 137, 137, 127, 128, 128, 128, - 195, 195, 195, 195, 185, 186, 186, 186, - 69, 69, 69, 70, 60, 60, 60, 60, - 127, 128, 128, 128, 118, 118, 118, 119, - 127, 128, 128, 128, 118, 118, 118, 119, - 185, 186, 186, 186, 176, 176, 176, 177, - 79, 79, 79, 80, 69, 70, 70, 70, - 137, 137, 137, 138, 128, 128, 128, 128, - 137, 137, 137, 138, 128, 128, 128, 128, - 195, 195, 195, 196, 186, 186, 186, 186, - 69, 70, 70, 70, 60, 60, 60, 61, - 128, 128, 128, 128, 118, 119, 119, 119, - 128, 128, 128, 128, 118, 119, 119, 119, - 186, 186, 186, 186, 176, 177, 177, 177, - 78, 78, 82, 82, 59, 59, 64, 63, - 171, 171, 175, 175, 153, 152, 157, 157, - 99, 99, 103, 103, 81, 80, 85, 84, - 192, 192, 197, 196, 174, 174, 178, 178, - 79, 78, 83, 82, 60, 60, 64, 64, - 172, 172, 176, 176, 153, 153, 158, 157, - 100, 99, 104, 104, 81, 81, 85, 85, - 193, 193, 197, 197, 175, 174, 179, 178, - 76, 76, 80, 80, 57, 57, 62, 61, - 169, 169, 173, 173, 151, 150, 155, 155, - 97, 97, 101, 101, 79, 78, 83, 82, - 190, 190, 195, 194, 172, 172, 176, 176, - 77, 76, 81, 80, 58, 58, 62, 62, - 170, 170, 174, 174, 151, 151, 156, 155, - 98, 97, 102, 102, 79, 79, 83, 83, - 191, 191, 195, 195, 173, 172, 177, 176, - 79, 78, 83, 82, 60, 60, 64, 64, - 172, 172, 176, 176, 153, 153, 158, 157, - 100, 99, 104, 104, 81, 81, 85, 85, - 193, 193, 197, 197, 175, 174, 179, 178, - 79, 79, 83, 83, 61, 60, 65, 65, - 173, 172, 177, 176, 154, 154, 158, 158, - 100, 100, 105, 104, 82, 82, 86, 86, - 194, 193, 198, 198, 175, 175, 179, 179, - 77, 76, 81, 80, 58, 58, 62, 62, - 170, 170, 174, 174, 151, 151, 156, 155, - 98, 97, 102, 102, 79, 79, 83, 83, - 191, 191, 195, 195, 173, 172, 177, 176, - 77, 77, 81, 81, 59, 58, 63, 63, - 171, 170, 175, 174, 152, 152, 156, 156, - 98, 98, 103, 102, 80, 80, 84, 84, - 192, 191, 196, 196, 173, 173, 177, 177, - 78, 76, 85, 84, 58, 57, 66, 64, - 193, 191, 200, 198, 173, 172, 180, 179, - 71, 70, 79, 77, 52, 50, 59, 57, - 186, 185, 193, 192, 166, 165, 174, 172, - 85, 83, 92, 90, 65, 64, 72, 71, - 199, 198, 207, 205, 180, 178, 187, 186, - 78, 76, 85, 84, 58, 57, 66, 64, - 193, 191, 200, 198, 173, 172, 180, 179, - 75, 74, 83, 81, 56, 54, 63, 62, - 190, 189, 198, 196, 171, 169, 178, 177, - 69, 67, 76, 75, 49, 48, 57, 55, - 184, 182, 191, 189, 164, 163, 171, 170, - 82, 81, 89, 88, 63, 61, 70, 68, - 197, 195, 204, 203, 177, 176, 185, 183, - 76, 74, 83, 81, 56, 55, 63, 62, - 190, 189, 198, 196, 171, 169, 178, 177, - 78, 77, 86, 84, 59, 57, 66, 65, - 193, 192, 200, 199, 174, 172, 181, 179, - 72, 70, 79, 78, 52, 51, 60, 58, - 187, 185, 194, 192, 167, 166, 174, 173, - 85, 84, 92, 91, 66, 64, 73, 71, - 200, 198, 207, 206, 180, 179, 188, 186, - 78, 77, 86, 84, 59, 57, 66, 65, - 193, 192, 201, 199, 174, 172, 181, 180, - 76, 75, 83, 82, 57, 55, 64, 62, - 191, 189, 198, 197, 171, 170, 179, 177, - 69, 68, 77, 75, 50, 48, 57, 56, - 184, 183, 191, 190, 165, 163, 172, 170, - 83, 81, 90, 89, 63, 62, 70, 69, - 198, 196, 205, 203, 178, 177, 185, 184, - 76, 75, 83, 82, 57, 55, 64, 62, - 191, 189, 198, 197, 171, 170, 179, 177 -}; - -#endif /* defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) */ -#endif /* ENABLE_FSK9600 */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/sm_wss.h linux/drivers/net/sm_wss.h --- v2.1.16/linux/drivers/net/sm_wss.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/net/sm_wss.h Fri Dec 20 13:16:51 1996 @@ -0,0 +1,910 @@ +/*****************************************************************************/ + +/* + * sm_wss.h -- soundcard radio modem driver, WSS (half duplex) driver + * + * Copyright (C) 1996 Thomas Sailer (sailer@ife.ee.ethz.ch) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Please note that the GPL allows you to use the driver, NOT the radio. + * In order to use the radio, you need a license from the communications + * authority of your country. + * + */ + +/* --------------------------------------------------------------------- */ + +struct sc_state_wss { + unsigned char revwss, revid, revv, revcid; + unsigned char fmt[2]; + unsigned char crystal; + unsigned int dmabuflen; + unsigned char *dmabuf; + unsigned char dmabufidx; + unsigned char ptt; + /* Full Duplex extensions */ + unsigned char *dmabuf2; +}; + +#define SCSTATE ((struct sc_state_wss *)(&sm->hw)) + +/* --------------------------------------------------------------------- */ + +#define WSS_CONFIG(iobase) (iobase+0) +#define WSS_STATUS(iobase) (iobase+3) +#define WSS_CODEC_IA(iobase) (iobase+4) +#define WSS_CODEC_ID(iobase) (iobase+5) +#define WSS_CODEC_STATUS(iobase) (iobase+6) +#define WSS_CODEC_DATA(iobase) (iobase+7) + +#define WSS_EXTENT 8 + +/* --------------------------------------------------------------------- */ + +static void write_codec(struct device *dev, unsigned char idx, + unsigned char data) +{ + int timeout = 900000; + + /* wait until codec ready */ + while (timeout > 0 && inb(WSS_CODEC_IA(dev->base_addr)) & 0x80) + timeout--; + outb(idx, WSS_CODEC_IA(dev->base_addr)); + outb(data, WSS_CODEC_ID(dev->base_addr)); +} + + +/* --------------------------------------------------------------------- */ + +static unsigned char read_codec(struct device *dev, unsigned char idx) +{ + int timeout = 900000; + + /* wait until codec ready */ + while (timeout > 0 && inb(WSS_CODEC_IA(dev->base_addr)) & 0x80) + timeout--; + outb(idx & 0x1f, WSS_CODEC_IA(dev->base_addr)); + return inb(WSS_CODEC_ID(dev->base_addr)); +} + +/* --------------------------------------------------------------------- */ + +extern void inline wss_ack_int(struct device *dev) +{ + outb(0, WSS_CODEC_STATUS(dev->base_addr)); +} + +/* --------------------------------------------------------------------- */ + +static int wss_srate_tab[16] = { + 8000, 5510, 16000, 11025, 27420, 18900, 32000, 22050, + -1, 37800, -1, 44100, 48000, 33075, 9600, 6620 +}; + +static int wss_srate_index(int srate) +{ + int i; + + for (i = 0; i < (sizeof(wss_srate_tab)/sizeof(wss_srate_tab[0])); i++) + if (srate == wss_srate_tab[i] && wss_srate_tab[i] > 0) + return i; + return -1; +} + +/* --------------------------------------------------------------------- */ + +static int wss_set_codec_fmt(struct device *dev, struct sm_state *sm, + unsigned char fmt, char fdx, char fullcalib) +{ + unsigned long time; + unsigned long flags; + + save_flags(flags); + cli(); + /* Clock and data format register */ + write_codec(dev, 0x48, fmt); + if (SCSTATE->crystal) { + write_codec(dev, 0x5c, fmt & 0xf0); + /* MCE and interface config reg */ + write_codec(dev, 0x49, (fdx ? 0 : 0x4) | (fullcalib ? 0x18 : 0)); + } else + /* MCE and interface config reg */ + write_codec(dev, 0x49, fdx ? 0x8 : 0xc); + outb(0xb, WSS_CODEC_IA(dev->base_addr)); /* leave MCE */ + /* + * wait for ACI start + */ + time = 1000; + while (!(read_codec(dev, 0x0b) & 0x20)) + if (!(--time)) { + printk(KERN_WARNING "%s: ad1848 auto calibration timed out (1)\n", + sm_drvname); + restore_flags(flags); + return -1; + } + /* + * wait for ACI end + */ + sti(); + time = jiffies + HZ/4; + while ((read_codec(dev, 0x0b) & 0x20) && ((signed)(jiffies - time) < 0)); + restore_flags(flags); + if ((signed)(jiffies - time) >= 0) { + printk(KERN_WARNING "%s: ad1848 auto calibration timed out (2)\n", + sm_drvname); + return -1; + } + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int wss_init_codec(struct device *dev, struct sm_state *sm, char fdx, + unsigned char src_l, unsigned char src_r, + int igain_l, int igain_r, + int ogain_l, int ogain_r) +{ + unsigned char tmp, reg0, reg1, reg6, reg7; + static const signed char irqtab[16] = + { -1, -1, 0x10, -1, -1, -1, -1, 0x08, -1, 0x10, 0x18, 0x20, -1, -1, + -1, -1 }; + static const signed char dmatab[4] = { 1, 2, -1, 3 }; + + tmp = inb(WSS_STATUS(dev->base_addr)); + if ((tmp & 0x3f) != 0x04 && (tmp & 0x3f) != 0x00 && + (tmp & 0x3f) != 0x0f) { + printk(KERN_WARNING "sm: WSS card id register not found, " + "address 0x%lx, ID register 0x%02x\n", + dev->base_addr, (int)tmp); + /* return -1; */ + SCSTATE->revwss = 0; + } else { + if ((tmp & 0x80) && ((dev->dma == 0) || + ((dev->irq >= 8) && (dev->irq != 9)))) { + printk(KERN_ERR "%s: WSS: DMA0 and/or IRQ8..IRQ15 " + "(except IRQ9) cannot be used on an 8bit " + "card\n", sm_drvname); + return -1; + } + if (dev->irq > 15 || irqtab[dev->irq] == -1) { + printk(KERN_ERR "%s: WSS: invalid interrupt %d\n", + sm_drvname, (int)dev->irq); + return -1; + } + if (dev->dma > 3 || dmatab[dev->dma] == -1) { + printk(KERN_ERR "%s: WSS: invalid dma channel %d\n", + sm_drvname, (int)dev->dma); + return -1; + } + tmp = irqtab[dev->irq] | dmatab[dev->dma]; + /* irq probe */ + outb((tmp & 0x38) | 0x40, WSS_CONFIG(dev->base_addr)); + if (!(inb(WSS_STATUS(dev->base_addr)) & 0x40)) { + outb(0, WSS_CONFIG(dev->base_addr)); + printk(KERN_ERR "%s: WSS: IRQ%d is not free!\n", + sm_drvname, dev->irq); + } + outb(tmp, WSS_CONFIG(dev->base_addr)); + SCSTATE->revwss = inb(WSS_STATUS(dev->base_addr)) & 0x3f; + } + /* + * initialize the codec + */ + if (igain_l < 0) + igain_l = 0; + if (igain_r < 0) + igain_r = 0; + if (ogain_l > 0) + ogain_l = 0; + if (ogain_r > 0) + ogain_r = 0; + reg0 = (src_l << 6) & 0xc0; + reg1 = (src_r << 6) & 0xc0; + if (reg0 == 0x80 && igain_l >= 20) { + reg0 |= 0x20; + igain_l -= 20; + } + if (reg1 == 0x80 && igain_r >= 20) { + reg1 |= 0x20; + igain_r -= 20; + } + if (igain_l > 23) + igain_l = 23; + if (igain_r > 23) + igain_r = 23; + reg0 |= igain_l * 2 / 3; + reg1 |= igain_r * 2 / 3; + reg6 = (ogain_l < -95) ? 0x80 : (ogain_l * (-2) / 3); + reg7 = (ogain_r < -95) ? 0x80 : (ogain_r * (-2) / 3); + write_codec(dev, 9, 0); + write_codec(dev, 0, 0x45); + if (read_codec(dev, 0) != 0x45) + goto codec_err; + write_codec(dev, 0, 0xaa); + if (read_codec(dev, 0) != 0xaa) + goto codec_err; + write_codec(dev, 12, 0x40); /* enable MODE2 */ + write_codec(dev, 16, 0); + write_codec(dev, 0, 0x45); + SCSTATE->crystal = (read_codec(dev, 16) != 0x45); + write_codec(dev, 0, 0xaa); + SCSTATE->crystal &= (read_codec(dev, 16) != 0xaa); + if (SCSTATE->crystal) { + SCSTATE->revcid = read_codec(dev, 0x19); + SCSTATE->revv = (SCSTATE->revcid >> 5) & 7; + SCSTATE->revcid &= 7; + write_codec(dev, 0x10, 0x80); /* maximum output level */ + write_codec(dev, 0x11, 0x02); /* xtal enable and no HPF */ + write_codec(dev, 0x12, 0x80); /* left line input control */ + write_codec(dev, 0x13, 0x80); /* right line input control */ + write_codec(dev, 0x16, 0); /* disable alternative freq sel */ + write_codec(dev, 0x1a, 0xe0); /* mono IO disable */ + write_codec(dev, 0x1b, 0x00); /* left out no att */ + write_codec(dev, 0x1d, 0x00); /* right out no att */ + } + + if (wss_set_codec_fmt(dev, sm, SCSTATE->fmt[0], fdx, 1)) + goto codec_err; + + write_codec(dev, 0, reg0); /* left input control */ + write_codec(dev, 1, reg1); /* right input control */ + write_codec(dev, 2, 0x80); /* left aux#1 input control */ + write_codec(dev, 3, 0x80); /* right aux#1 input control */ + write_codec(dev, 4, 0x80); /* left aux#2 input control */ + write_codec(dev, 5, 0x80); /* right aux#2 input control */ + write_codec(dev, 6, reg6); /* left dac control */ + write_codec(dev, 7, reg7); /* right dac control */ + write_codec(dev, 0xa, 0x2); /* pin control register */ + write_codec(dev, 0xd, 0x0); /* digital mix control */ + SCSTATE->revid = read_codec(dev, 0xc) & 0xf; + /* + * print revisions + */ + if (SCSTATE->crystal) + printk(KERN_INFO "%s: Crystal CODEC ID %d, Chip revision %d, " + " Chip ID %d\n", sm_drvname, (int)SCSTATE->revid, + (int)SCSTATE->revv, (int)SCSTATE->revcid); + else + printk(KERN_INFO "%s: WSS revision %d, CODEC revision %d\n", + sm_drvname, (int)SCSTATE->revwss, + (int)SCSTATE->revid); + return 0; + codec_err: + outb(0, WSS_CONFIG(dev->base_addr)); + printk(KERN_ERR "%s: no WSS soundcard found at address 0x%lx\n", + sm_drvname, dev->base_addr); + return -1; +} + +/* --------------------------------------------------------------------- */ + +static void setup_dma_wss(struct device *dev, struct sm_state *sm, int send) +{ + unsigned long flags; + static const unsigned char codecmode[2] = { 0x0e, 0x0d }; + static const unsigned char dmamode[2] = { + DMA_MODE_READ | DMA_MODE_AUTOINIT, + DMA_MODE_WRITE | DMA_MODE_AUTOINIT + }; + unsigned char oldcodecmode; + long abrt; + unsigned long dmabufaddr = virt_to_bus(SCSTATE->dmabuf); + + if ((dmabufaddr & 0xffffu) + SCSTATE->dmabuflen > 0x10000) + panic("%s: DMA buffer violates DMA boundary!", sm_drvname); + send = !!send; + save_flags(flags); + cli(); + /* + * perform the final DMA sequence to disable the codec request + */ + oldcodecmode = read_codec(dev, 9); + write_codec(dev, 9, 0xc); /* disable codec */ + wss_ack_int(dev); + if (read_codec(dev, 11) & 0x10) { + disable_dma(dev->dma); + clear_dma_ff(dev->dma); + set_dma_mode(dev->dma, dmamode[oldcodecmode & 1]); + set_dma_addr(dev->dma, dmabufaddr); + set_dma_count(dev->dma, SCSTATE->dmabuflen); + enable_dma(dev->dma); + abrt = 0; + while ((read_codec(dev, 11) & 0x10) || ((++abrt) >= 0x10000)); + } + disable_dma(dev->dma); + if (read_codec(dev, 0x8) != SCSTATE->fmt[send]) + wss_set_codec_fmt(dev, sm, SCSTATE->fmt[send], 0, 0); + clear_dma_ff(dev->dma); + set_dma_mode(dev->dma, dmamode[send]); + set_dma_addr(dev->dma, dmabufaddr); + set_dma_count(dev->dma, SCSTATE->dmabuflen); + enable_dma(dev->dma); + write_codec(dev, 15, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_codec(dev, 14, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + if (SCSTATE->crystal) { + write_codec(dev, 31, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_codec(dev, 30, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + } + write_codec(dev, 9, codecmode[send]); + restore_flags(flags); + printk("sm: wss: %cx fmt: 0x%02x ifc: 0x%02x\n", "rt"[send], + read_codec(dev, 0x8), read_codec(dev, 0x9)); +} + +/* --------------------------------------------------------------------- */ + +static void wss_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + struct device *dev = (struct device *)dev_id; + struct sm_state *sm = (struct sm_state *)dev->priv; + unsigned char new_ptt; + unsigned char *buf; + int dmares; + + if (!dev || !sm || !sm->mode_rx || !sm->mode_tx || + sm->hdrv.magic != HDLCDRV_MAGIC) + return; + new_ptt = hdlcdrv_ptt(&sm->hdrv); + cli(); + wss_ack_int(dev); + disable_dma(dev->dma); + clear_dma_ff(dev->dma); + dmares = get_dma_residue(dev->dma); + if (dmares <= 0) + dmares = SCSTATE->dmabuflen; + buf = SCSTATE->dmabuf; + if (dmares > SCSTATE->dmabuflen/2) { + buf += SCSTATE->dmabuflen/2; + dmares -= SCSTATE->dmabuflen/2; + } +#ifdef SM_DEBUG + if (!sm->debug_vals.dma_residue || + dmares < sm->debug_vals.dma_residue) + sm->debug_vals.dma_residue = dmares; +#endif /* SM_DEBUG */ + dmares--; + write_codec(dev, 15, dmares & 0xff); + write_codec(dev, 14, dmares >> 8); + if (SCSTATE->crystal) { + write_codec(dev, 31, dmares & 0xff); + write_codec(dev, 30, dmares >> 8); + } + enable_dma(dev->dma); + sm_int_freq(sm); + sti(); + if (new_ptt && !SCSTATE->ptt) { + /* starting to transmit */ + disable_dma(dev->dma); + sti(); + SCSTATE->dmabufidx = 0; + time_exec(sm->debug_vals.demod_cyc, + sm->mode_rx->demodulator(sm, buf, SCSTATE->dmabuflen/2)); + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, SCSTATE->dmabuf, + SCSTATE->dmabuflen/2)); + setup_dma_wss(dev, sm, 1); + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, SCSTATE->dmabuf + + SCSTATE->dmabuflen/2, + SCSTATE->dmabuflen/2)); + } else if (SCSTATE->ptt == 1 && !new_ptt) { + /* stopping transmission */ + disable_dma(dev->dma); + sti(); + SCSTATE->dmabufidx = 0; + setup_dma_wss(dev, sm, 0); + SCSTATE->ptt = 0; + } else if (SCSTATE->ptt) { + SCSTATE->ptt--; + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, buf, SCSTATE->dmabuflen/2)); + } else { + time_exec(sm->debug_vals.demod_cyc, + sm->mode_rx->demodulator(sm, buf, SCSTATE->dmabuflen/2)); + hdlcdrv_arbitrate(dev, &sm->hdrv); + } + if (new_ptt) + SCSTATE->ptt = 2; + output_status(sm); + hdlcdrv_transmitter(dev, &sm->hdrv); + hdlcdrv_receiver(dev, &sm->hdrv); +} + +/* --------------------------------------------------------------------- */ + +static int wss_open(struct device *dev, struct sm_state *sm) +{ + if (sizeof(sm->m) < sizeof(struct sc_state_wss)) { + printk(KERN_ERR "sm wss: wss state too big: %d > %d\n", + sizeof(struct sc_state_wss), sizeof(sm->m)); + return -ENODEV; + } + if (!dev || !sm || !sm->mode_rx || !sm->mode_tx) + return -ENXIO; + if (dev->base_addr <= 0 || dev->base_addr > 0x1000-WSS_EXTENT || + dev->irq < 2 || dev->irq > 15 || dev->dma > 3) + return -ENXIO; + if (check_region(dev->base_addr, WSS_EXTENT)) + return -EACCES; + /* + * check if a card is available + */ + if (wss_init_codec(dev, sm, 0, 1, 1, 0, 0, -45, -45)) + return -ENODEV; + /* + * initialize some variables + */ + if (!(SCSTATE->dmabuf = kmalloc(SCSTATE->dmabuflen, GFP_KERNEL | GFP_DMA))) + return -ENOMEM; + SCSTATE->dmabufidx = SCSTATE->ptt = 0; + + memset(&sm->m, 0, sizeof(sm->m)); + memset(&sm->d, 0, sizeof(sm->d)); + if (sm->mode_tx->init) + sm->mode_tx->init(sm); + if (sm->mode_rx->init) + sm->mode_rx->init(sm); + + if (request_dma(dev->dma, sm->hwdrv->hw_name)) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return -EBUSY; + } + if (request_irq(dev->irq, wss_interrupt, SA_INTERRUPT, + sm->hwdrv->hw_name, dev)) { + free_dma(dev->dma); + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return -EBUSY; + } + request_region(dev->base_addr, WSS_EXTENT, sm->hwdrv->hw_name); + setup_dma_wss(dev, sm, 0); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int wss_close(struct device *dev, struct sm_state *sm) +{ + if (!dev || !sm) + return -EINVAL; + /* + * disable interrupts + */ + disable_dma(dev->dma); + write_codec(dev, 9, 0xc); /* disable codec */ + free_irq(dev->irq, dev); + free_dma(dev->dma); + release_region(dev->base_addr, WSS_EXTENT); + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int wss_sethw(struct device *dev, struct sm_state *sm, char *mode) +{ + char *cp = strchr(mode, '.'); + const struct modem_tx_info *mtp = modem_tx_base; + const struct modem_rx_info *mrp; + int i, j, dv; + + if (!strcmp(mode, "off")) { + sm->mode_tx = NULL; + sm->mode_rx = NULL; + return 0; + } + if (cp) + *cp++ = '\0'; + else + cp = mode; + for (; mtp; mtp = mtp->next) { + if (mtp->loc_storage > sizeof(sm->m)) { + printk(KERN_ERR "%s: insufficient storage for modulator %s (%d)\n", + sm_drvname, mtp->name, mtp->loc_storage); + continue; + } + if (!mtp->name || strcmp(mtp->name, mode)) + continue; + if ((i = wss_srate_index(mtp->srate)) < 0) + continue; + for (mrp = modem_rx_base; mrp; mrp = mrp->next) { + if (mrp->loc_storage > sizeof(sm->d)) { + printk(KERN_ERR "%s: insufficient storage for demodulator %s (%d)\n", + sm_drvname, mrp->name, mrp->loc_storage); + continue; + } + if (mrp->name && !strcmp(mrp->name, cp) && + ((j = wss_srate_index(mrp->srate)) >= 0)) { + sm->mode_tx = mtp; + sm->mode_rx = mrp; + SCSTATE->fmt[0] = j; + SCSTATE->fmt[1] = i; + dv = lcm(sm->mode_tx->dmabuflenmodulo, + sm->mode_rx->dmabuflenmodulo); + SCSTATE->dmabuflen = sm->mode_rx->srate/100+dv-1; + SCSTATE->dmabuflen /= dv; + SCSTATE->dmabuflen *= 2*dv; /* make sure DMA buf is even */ + printk(KERN_DEBUG "sm wss: modtx %u modrx %u srt %u buflen %u\n", + sm->mode_tx->dmabuflenmodulo, sm->mode_rx->dmabuflenmodulo, + sm->mode_rx->srate, SCSTATE->dmabuflen); + return 0; + } + } + } + return -EINVAL; +} + +/* --------------------------------------------------------------------- */ + +static int wss_ioctl(struct device *dev, struct sm_state *sm, struct ifreq *ifr, + struct hdlcdrv_ioctl *hi, int cmd) +{ + struct sm_ioctl bi; + int i; + + if (cmd != SIOCDEVPRIVATE) + return -ENOIOCTLCMD; + + if (hi->cmd == HDLCDRVCTL_MODEMPARMASK) + return HDLCDRV_PARMASK_IOBASE | HDLCDRV_PARMASK_IRQ | + HDLCDRV_PARMASK_DMA | HDLCDRV_PARMASK_SERIOBASE | + HDLCDRV_PARMASK_PARIOBASE | HDLCDRV_PARMASK_MIDIIOBASE; + + if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) + return -EFAULT; + + switch (bi.cmd) { + default: + return -ENOIOCTLCMD; + + case SMCTL_GETMIXER: + i = 0; + bi.data.mix.sample_rate = sm->mode_rx->srate; + bi.data.mix.bit_rate = sm->hdrv.par.bitrate; + bi.data.mix.mixer_type = SCSTATE->crystal ? + SM_MIXER_CRYSTAL : SM_MIXER_AD1848; + if (((SCSTATE->crystal ? 0x2c0c20fflu: 0x20fflu) + >> bi.data.mix.reg) & 1) { + bi.data.mix.data = read_codec(dev, bi.data.mix.reg); + i = 1; + } + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return i; + + case SMCTL_SETMIXER: + if (!suser()) + return -EACCES; + if ((bi.data.mix.mixer_type != SM_MIXER_CRYSTAL || + !SCSTATE->crystal) && + (bi.data.mix.mixer_type != SM_MIXER_AD1848 || + bi.data.mix.reg >= 0x10)) + return -EINVAL; + if (!((0x2c0c20fflu >> bi.data.mix.reg) & 1)) + return -EACCES; + write_codec(dev, bi.data.mix.reg, bi.data.mix.data); + return 0; + + } + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; + +} + +/* --------------------------------------------------------------------- */ + +struct hardware_info hw_wss = { + NEXT_HW_INFO, "wss", sizeof(struct sc_state_wss), + wss_open, wss_close, wss_ioctl, wss_sethw +}; +#undef NEXT_HW_INFO +#define NEXT_HW_INFO (&hw_wss) + +/* --------------------------------------------------------------------- */ + +static void setup_fdx_dma_wss(struct device *dev, struct sm_state *sm) +{ + unsigned long flags; + unsigned char oldcodecmode, codecdma; + long abrt; + unsigned long dmabufaddr1 = virt_to_bus(SCSTATE->dmabuf); + unsigned long dmabufaddr2 = virt_to_bus(SCSTATE->dmabuf2); + + if (((dmabufaddr1 & 0xffffu) + SCSTATE->dmabuflen > 0x10000) || + ((dmabufaddr2 & 0xffffu) + SCSTATE->dmabuflen > 0x10000)) + panic("%s: DMA buffer violates DMA boundary!", sm_drvname); + save_flags(flags); + cli(); + /* + * perform the final DMA sequence to disable the codec request + */ + oldcodecmode = read_codec(dev, 9); + write_codec(dev, 9, 0); /* disable codec DMA */ + wss_ack_int(dev); + if ((codecdma = read_codec(dev, 11)) & 0x10) { + disable_dma(dev->dma); + disable_dma(sm->hdrv.ptt_out.dma2); + clear_dma_ff(dev->dma); + set_dma_mode(dev->dma, DMA_MODE_WRITE | DMA_MODE_AUTOINIT); + set_dma_addr(dev->dma, dmabufaddr1); + set_dma_count(dev->dma, SCSTATE->dmabuflen); + clear_dma_ff(sm->hdrv.ptt_out.dma2); + set_dma_mode(sm->hdrv.ptt_out.dma2, DMA_MODE_READ | DMA_MODE_AUTOINIT); + set_dma_addr(sm->hdrv.ptt_out.dma2, dmabufaddr2); + set_dma_count(sm->hdrv.ptt_out.dma2, SCSTATE->dmabuflen); + enable_dma(dev->dma); + enable_dma(sm->hdrv.ptt_out.dma2); + abrt = 0; + while (((codecdma = read_codec(dev, 11)) & 0x10) || + ((++abrt) >= 0x10000)); + } + disable_dma(dev->dma); + disable_dma(sm->hdrv.ptt_out.dma2); + clear_dma_ff(dev->dma); + set_dma_mode(dev->dma, DMA_MODE_WRITE | DMA_MODE_AUTOINIT); + set_dma_addr(dev->dma, dmabufaddr1); + set_dma_count(dev->dma, SCSTATE->dmabuflen); + clear_dma_ff(sm->hdrv.ptt_out.dma2); + set_dma_mode(sm->hdrv.ptt_out.dma2, DMA_MODE_READ | DMA_MODE_AUTOINIT); + set_dma_addr(sm->hdrv.ptt_out.dma2, dmabufaddr2); + set_dma_count(sm->hdrv.ptt_out.dma2, SCSTATE->dmabuflen); + enable_dma(dev->dma); + enable_dma(sm->hdrv.ptt_out.dma2); + write_codec(dev, 15, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_codec(dev, 14, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + if (SCSTATE->crystal) { + write_codec(dev, 31, ((SCSTATE->dmabuflen >> 1) - 1) & 0xff); + write_codec(dev, 30, ((SCSTATE->dmabuflen >> 1) - 1) >> 8); + } + write_codec(dev, 9, 3); + restore_flags(flags); +} + +/* --------------------------------------------------------------------- */ + +static void wssfdx_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + struct device *dev = (struct device *)dev_id; + struct sm_state *sm = (struct sm_state *)dev->priv; + unsigned char *buf1; + unsigned char *buf2; + unsigned long flags; + int dmares1, dmares2; + + if (!dev || !sm || !sm->mode_rx || !sm->mode_tx || + sm->hdrv.magic != HDLCDRV_MAGIC) + return; + save_flags(flags); + cli(); + if (SCSTATE->crystal && (!(read_codec(dev, 0x18) & 0x20))) { + /* only regard Crystal Playback interrupts! */ + wss_ack_int(dev); + return; + } + wss_ack_int(dev); + disable_dma(dev->dma); + disable_dma(sm->hdrv.ptt_out.dma2); + clear_dma_ff(dev->dma); + dmares1 = get_dma_residue(dev->dma); + clear_dma_ff(sm->hdrv.ptt_out.dma2); + dmares2 = get_dma_residue(sm->hdrv.ptt_out.dma2); + if (dmares1 <= 0) + dmares1 = SCSTATE->dmabuflen; + buf1 = SCSTATE->dmabuf; + if (dmares1 > SCSTATE->dmabuflen/2) { + buf1 += SCSTATE->dmabuflen/2; + dmares1 -= SCSTATE->dmabuflen/2; + } + if (dmares2 <= 0) + dmares2 = SCSTATE->dmabuflen; + buf2 = SCSTATE->dmabuf2; + if (dmares2 > SCSTATE->dmabuflen/2) { + buf2 += SCSTATE->dmabuflen/2; + dmares2 -= SCSTATE->dmabuflen/2; + } +#ifdef SM_DEBUG + if (!sm->debug_vals.dma_residue || + dmares1 < sm->debug_vals.dma_residue) + sm->debug_vals.dma_residue = dmares1; +#endif /* SM_DEBUG */ + dmares1--; + dmares2--; + write_codec(dev, 15, dmares1 & 0xff); + write_codec(dev, 14, dmares1 >> 8); + if (SCSTATE->crystal) { + write_codec(dev, 31, dmares2 & 0xff); + write_codec(dev, 30, dmares2 >> 8); + } + enable_dma(dev->dma); + enable_dma(sm->hdrv.ptt_out.dma2); + restore_flags(flags); + sm_int_freq(sm); + sti(); + if ((SCSTATE->ptt = hdlcdrv_ptt(&sm->hdrv))) + time_exec(sm->debug_vals.mod_cyc, + sm->mode_tx->modulator(sm, buf1, SCSTATE->dmabuflen/2)); + else + time_exec(sm->debug_vals.mod_cyc, + memset(buf1, 0x80, SCSTATE->dmabuflen/2)); + time_exec(sm->debug_vals.demod_cyc, + sm->mode_rx->demodulator(sm, buf2, SCSTATE->dmabuflen/2)); + hdlcdrv_arbitrate(dev, &sm->hdrv); + output_status(sm); + hdlcdrv_transmitter(dev, &sm->hdrv); + hdlcdrv_receiver(dev, &sm->hdrv); +} + +/* --------------------------------------------------------------------- */ + +static int wssfdx_open(struct device *dev, struct sm_state *sm) +{ + if (!dev || !sm || !sm->mode_rx || !sm->mode_tx) + return -ENXIO; + if (dev->base_addr <= 0 || dev->base_addr > 0x1000-WSS_EXTENT || + dev->irq < 2 || dev->irq > 15 || dev->dma > 3) + return -ENXIO; + if (check_region(dev->base_addr, WSS_EXTENT)) + return -EACCES; + /* + * check if a card is available + */ + if (wss_init_codec(dev, sm, 1, 1, 1, 0, 0, -45, -45)) + return -ENODEV; + /* + * initialize some variables + */ + if (!(SCSTATE->dmabuf = kmalloc(SCSTATE->dmabuflen, GFP_KERNEL | GFP_DMA))) + return -ENOMEM; + if (!(SCSTATE->dmabuf2 = kmalloc(SCSTATE->dmabuflen, GFP_KERNEL | GFP_DMA))) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + return -ENOMEM; + } + SCSTATE->dmabufidx = SCSTATE->ptt = 0; + + memset(&sm->m, 0, sizeof(sm->m)); + memset(&sm->d, 0, sizeof(sm->d)); + if (sm->mode_tx->init) + sm->mode_tx->init(sm); + if (sm->mode_rx->init) + sm->mode_rx->init(sm); + + if (request_dma(dev->dma, sm->hwdrv->hw_name)) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + kfree_s(SCSTATE->dmabuf2, SCSTATE->dmabuflen); + return -EBUSY; + } + if (request_dma(sm->hdrv.ptt_out.dma2, sm->hwdrv->hw_name)) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + kfree_s(SCSTATE->dmabuf2, SCSTATE->dmabuflen); + free_dma(dev->dma); + return -EBUSY; + } + if (request_irq(dev->irq, wssfdx_interrupt, SA_INTERRUPT, + sm->hwdrv->hw_name, dev)) { + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + kfree_s(SCSTATE->dmabuf2, SCSTATE->dmabuflen); + free_dma(dev->dma); + free_dma(sm->hdrv.ptt_out.dma2); + return -EBUSY; + } + request_region(dev->base_addr, WSS_EXTENT, sm->hwdrv->hw_name); + setup_fdx_dma_wss(dev, sm); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int wssfdx_close(struct device *dev, struct sm_state *sm) +{ + if (!dev || !sm) + return -EINVAL; + /* + * disable interrupts + */ + disable_dma(dev->dma); + write_codec(dev, 9, 0xc); /* disable codec */ + free_irq(dev->irq, dev); + free_dma(dev->dma); + free_dma(sm->hdrv.ptt_out.dma2); + release_region(dev->base_addr, WSS_EXTENT); + kfree_s(SCSTATE->dmabuf, SCSTATE->dmabuflen); + kfree_s(SCSTATE->dmabuf2, SCSTATE->dmabuflen); + return 0; +} + +/* --------------------------------------------------------------------- */ + +static int wssfdx_sethw(struct device *dev, struct sm_state *sm, char *mode) +{ + char *cp = strchr(mode, '.'); + const struct modem_tx_info *mtp = modem_tx_base; + const struct modem_rx_info *mrp; + int i, dv; + + if (!strcmp(mode, "off")) { + sm->mode_tx = NULL; + sm->mode_rx = NULL; + return 0; + } + if (cp) + *cp++ = '\0'; + else + cp = mode; + for (; mtp; mtp = mtp->next) { + if (mtp->loc_storage > sizeof(sm->m)) { + printk(KERN_ERR "%s: insufficient storage for modulator %s (%d)\n", + sm_drvname, mtp->name, mtp->loc_storage); + continue; + } + if (!mtp->name || strcmp(mtp->name, mode)) + continue; + if ((i = wss_srate_index(mtp->srate)) < 0) + continue; + for (mrp = modem_rx_base; mrp; mrp = mrp->next) { + if (mrp->loc_storage > sizeof(sm->d)) { + printk(KERN_ERR "%s: insufficient storage for demodulator %s (%d)\n", + sm_drvname, mrp->name, mrp->loc_storage); + continue; + } + if (mrp->name && !strcmp(mrp->name, cp) && + mtp->srate == mrp->srate) { + sm->mode_tx = mtp; + sm->mode_rx = mrp; + SCSTATE->fmt[0] = SCSTATE->fmt[1] = i; + dv = lcm(sm->mode_tx->dmabuflenmodulo, + sm->mode_rx->dmabuflenmodulo); + SCSTATE->dmabuflen = sm->mode_rx->srate/100+dv-1; + SCSTATE->dmabuflen /= dv; + SCSTATE->dmabuflen *= 2*dv; /* make sure DMA buf is even */ + printk(KERN_DEBUG "sm wssfdx: modtx %u modrx %u srt %u buflen %u\n", + sm->mode_tx->dmabuflenmodulo, sm->mode_rx->dmabuflenmodulo, + sm->mode_rx->srate, SCSTATE->dmabuflen); + return 0; + } + } + } + return -EINVAL; +} + +/* --------------------------------------------------------------------- */ + +static int wssfdx_ioctl(struct device *dev, struct sm_state *sm, struct ifreq *ifr, + struct hdlcdrv_ioctl *hi, int cmd) +{ + if (cmd != SIOCDEVPRIVATE) + return -ENOIOCTLCMD; + + if (hi->cmd == HDLCDRVCTL_MODEMPARMASK) + return HDLCDRV_PARMASK_IOBASE | HDLCDRV_PARMASK_IRQ | + HDLCDRV_PARMASK_DMA | HDLCDRV_PARMASK_DMA2 | + HDLCDRV_PARMASK_SERIOBASE | HDLCDRV_PARMASK_PARIOBASE | + HDLCDRV_PARMASK_MIDIIOBASE; + + return wss_ioctl(dev, sm, ifr, hi, cmd); +} + +/* --------------------------------------------------------------------- */ + +struct hardware_info hw_wssfdx = { + NEXT_HW_INFO, "wssfdx", sizeof(struct sc_state_wss), + wssfdx_open, wssfdx_close, wssfdx_ioctl, wssfdx_sethw +}; +#undef NEXT_HW_INFO +#define NEXT_HW_INFO (&hw_wssfdx) + +/* --------------------------------------------------------------------- */ + +#undef SCSTATE diff -u --recursive --new-file v2.1.16/linux/drivers/net/soundmodem.c linux/drivers/net/soundmodem.c --- v2.1.16/linux/drivers/net/soundmodem.c Tue Nov 19 15:53:56 1996 +++ linux/drivers/net/soundmodem.c Sat Dec 21 19:09:09 1996 @@ -44,6 +44,7 @@ #include +#include #include #include #include @@ -65,85 +66,33 @@ /* --------------------------------------------------------------------- */ -#define NR_PORTS 4 - -#define SM_DEBUG - -#define ENABLE_SBC -#define ENABLE_WSS -#undef ENABLE_WSSFDX - -#define ENABLE_AFSK1200 -#define ENABLE_FSK9600 +static const char sm_drvname[] = "soundmodem"; +static const char sm_drvinfo[] = KERN_INFO "soundmodem: (C) 1996 Thomas Sailer, HB9JNX/AE4WA\n" +KERN_INFO "soundmodem: version 0.3 compiled " __TIME__ " " __DATE__ "\n"; ; /* --------------------------------------------------------------------- */ -#include "sm_tables.h" +#define NR_PORTS 4 + +#define SM_DEBUG /* --------------------------------------------------------------------- */ static struct device sm_device[NR_PORTS]; static struct { - int hardware, mode, iobase, irq, dma, seriobase, pariobase, midiiobase; + char *mode; + int iobase, irq, dma, dma2, seriobase, pariobase, midiiobase; } sm_ports[NR_PORTS] = { -{ SM_HARDWARE_INVALID, SM_MODE_INVALID, -1, 0, 0, -1, -1, -1 }, + { NULL, -1, 0, 0, 0, -1, -1, -1 }, }; /* --------------------------------------------------------------------- */ -/* - * the sbc converter's registers - */ -#define DSP_RESET(iobase) (iobase+0x6) -#define DSP_READ_DATA(iobase) (iobase+0xa) -#define DSP_WRITE_DATA(iobase) (iobase+0xc) -#define DSP_WRITE_STATUS(iobase) (iobase+0xc) -#define DSP_DATA_AVAIL(iobase) (iobase+0xe) -#define DSP_MIXER_ADDR(iobase) (iobase+0x4) -#define DSP_MIXER_DATA(iobase) (iobase+0x5) -#define SBC_EXTENT 16 - -/* --------------------------------------------------------------------- */ -/* - * SBC commands - */ -#define SBC_OUTPUT 0x14 -#define SBC_INPUT 0x24 -#define SBC_HISPEED 0x48 -#define SBC_HI_OUTPUT 0x91 -#define SBC_HI_INPUT 0x99 -#define SBC_LO_OUTPUT_AUTOINIT 0x1c -#define SBC_LO_INPUT_AUTOINIT 0x2c -#define SBC_HI_OUTPUT_AUTOINIT 0x90 -#define SBC_HI_INPUT_AUTOINIT 0x98 -#define SBC_IMMED_INT 0xf2 -#define SBC_GET_REVISION 0xe1 -#define ESS_GET_REVISION 0xe7 -#define SBC_SPEAKER_ON 0xd1 -#define SBC_SPEAKER_OFF 0xd3 -#define SBC_DMA_ON 0xd0 -#define SBC_DMA_OFF 0xd4 -#define SBC_SAMPLE_RATE 0x40 -#define SBC_MONO_8BIT 0xa0 -#define SBC_MONO_16BIT 0xa4 -#define SBC_STEREO_8BIT 0xa8 -#define SBC_STEREO_16BIT 0xac #define DMA_MODE_AUTOINIT 0x10 /* --------------------------------------------------------------------- */ -#define WSS_CONFIG(iobase) (iobase+0) -#define WSS_STATUS(iobase) (iobase+3) -#define WSS_CODEC_IA(iobase) (iobase+4) -#define WSS_CODEC_ID(iobase) (iobase+5) -#define WSS_CODEC_STATUS(iobase) (iobase+6) -#define WSS_CODEC_DATA(iobase) (iobase+7) - -#define WSS_EXTENT 8 - -/* --------------------------------------------------------------------- */ - #define UART_RBR(iobase) (iobase+0) #define UART_THR(iobase) (iobase+0) #define UART_IER(iobase) (iobase+1) @@ -195,34 +144,27 @@ struct sm_state { struct hdlcdrv_state hdrv; - struct config { - int hardware; - int mode; - } config; + const struct modem_tx_info *mode_tx; + const struct modem_rx_info *mode_rx; - struct modem_state { - unsigned char revhi, revlo; - - unsigned int shreg; - - unsigned char last_sample; - unsigned int bit_pll; - unsigned int dcd_shreg; - int dcd_sum0, dcd_sum1, dcd_sum2; - unsigned int dcd_time; - unsigned char last_rxbit; - unsigned char tx_bit; - - signed char filt[9]; - - unsigned long descram; - unsigned long scram; - - unsigned char *dmabufr; - unsigned char *dmabufw; - unsigned char dmabufidx; - unsigned char oldptt; - } modem; + const struct hardware_info *hwdrv; + + /* + * Hardware (soundcard) access routines state + */ + union { + long hw[32/sizeof(long)]; + } hw; + + /* + * state of the modem code + */ + union { + long m[32/sizeof(long)]; + } m; + union { + long d[256/sizeof(long)]; + } d; #define DIAGDATALEN 64 struct diag_data { @@ -231,34 +173,75 @@ volatile int ptr; short data[DIAGDATALEN]; } diag; + #ifdef SM_DEBUG struct debug_vals { unsigned long last_jiffies; unsigned cur_intcnt; unsigned last_intcnt; - int cur_pllcorr; - int last_pllcorr; + unsigned mod_cyc; + unsigned demod_cyc; + unsigned dma_residue; } debug_vals; #endif /* SM_DEBUG */ }; -/* --------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ +/* + * Mode definition structure + */ -struct modem_info { - struct hdlcdrv_ops hops; - unsigned int samplerate; - unsigned char sbcmix; - unsigned char sperbit; - char *mode_name; /* used for request_{region,irq,dma} */ - /* - * low level chip informations - */ - unsigned char data_fmt; - unsigned int dmabuflen; +struct modem_tx_info { + const struct modem_tx_info *next; + const char *name; + unsigned int loc_storage; + int srate; + int bitrate; + unsigned int dmabuflenmodulo; void (*modulator)(struct sm_state *, unsigned char *, int); + void (*init)(struct sm_state *); +}; +#define NEXT_TX_INFO NULL + +extern const struct modem_tx_info *modem_tx_base; + +struct modem_rx_info { + const struct modem_rx_info *next; + const char *name; + unsigned int loc_storage; + int srate; + int bitrate; + unsigned int dmabuflenmodulo; + unsigned int sperbit; void (*demodulator)(struct sm_state *, unsigned char *, int); + void (*init)(struct sm_state *); +}; +#define NEXT_RX_INFO NULL + +extern const struct modem_rx_info *modem_rx_base; + +/* ---------------------------------------------------------------------- */ +/* + * Soundcard driver definition structure + */ + +struct hardware_info { + const struct hardware_info *next; + char *hw_name; /* used for request_{region,irq,dma} */ + unsigned int loc_storage; + /* + * mode specific open/close + */ + int (*open)(struct device *, struct sm_state *); + int (*close)(struct device *, struct sm_state *); + int (*ioctl)(struct device *, struct sm_state *, struct ifreq *, + struct hdlcdrv_ioctl *, int); + int (*sethw)(struct device *, struct sm_state *, char *); }; +#define NEXT_HW_INFO NULL + +extern const struct hardware_info *hardware_base; /* --------------------------------------------------------------------- */ @@ -288,7 +271,7 @@ * ===================== port checking routines ======================== */ -static int inline check_lpt(unsigned int iobase) +static int check_lpt(unsigned int iobase) { unsigned char b1,b2; int i; @@ -319,7 +302,7 @@ static const char *uart_str[] = { "unknown", "8250", "16450", "16550", "16550A" }; -static enum uart inline check_uart(unsigned int iobase) +static enum uart check_uart(unsigned int iobase) { unsigned char b1,b2,b3; enum uart u; @@ -356,7 +339,7 @@ /* --------------------------------------------------------------------- */ -static int inline check_midi(unsigned int iobase) +static int check_midi(unsigned int iobase) { unsigned long timeout; unsigned long flags; @@ -385,7 +368,7 @@ /* --------------------------------------------------------------------- */ -static void inline output_status(struct sm_state *sm) +extern void inline output_status(struct sm_state *sm) { int invert_dcd = 0; int invert_ptt = 0; @@ -439,7 +422,7 @@ } output_status(sm); - printk(KERN_INFO "sm: ptt output:"); + printk(KERN_INFO "%s: ptt output:", sm_drvname); if (sm->hdrv.ptt_out.flags & SP_SER) printk(" serial interface at 0x%x, uart %s", sm->hdrv.ptt_out.seriobase, uart_str[u]); @@ -473,7 +456,7 @@ * ===================== diagnostics stuff =============================== */ -static inline void diag_trigger(struct sm_state *sm) +extern inline void diag_trigger(struct sm_state *sm) { if (sm->diag.ptr < 0) if (!(sm->diag.flags & SM_DIAGFLAG_DCDGATE) || sm->hdrv.hdlcrx.dcd) @@ -482,7 +465,7 @@ /* --------------------------------------------------------------------- */ -static inline void diag_add(struct sm_state *sm, int valinp, int valdemod) +extern inline void diag_add(struct sm_state *sm, int valinp, int valdemod) { int val; @@ -501,7 +484,7 @@ /* --------------------------------------------------------------------- */ -static inline void diag_add_one(struct sm_state *sm, int val) +extern inline void diag_add_one(struct sm_state *sm, int val) { if ((sm->diag.mode != SM_DIAGMODE_INPUT && sm->diag.mode != SM_DIAGMODE_DEMOD) || @@ -516,18 +499,38 @@ } /* --------------------------------------------------------------------- */ + +static inline void diag_add_constellation(struct sm_state *sm, int vali, int valq) +{ + if ((sm->diag.mode != SM_DIAGMODE_CONSTELLATION) || + sm->diag.ptr >= DIAGDATALEN-1 || sm->diag.ptr < 0) + return; + /* clip */ + if (vali > SHRT_MAX) + vali = SHRT_MAX; + if (vali < SHRT_MIN) + vali = SHRT_MIN; + if (valq > SHRT_MAX) + valq = SHRT_MAX; + if (valq < SHRT_MIN) + valq = SHRT_MIN; + sm->diag.data[sm->diag.ptr++] = vali; + sm->diag.data[sm->diag.ptr++] = valq; +} + +/* --------------------------------------------------------------------- */ /* - * ===================== modem routines 1200 baud ========================= + * ===================== utility functions =============================== */ -static inline unsigned int hweight32(unsigned int w) +extern inline unsigned int hweight32(unsigned int w) __attribute__ ((unused)); -static inline unsigned int hweight16(unsigned short w) +extern inline unsigned int hweight16(unsigned short w) __attribute__ ((unused)); -static inline unsigned int hweight8(unsigned char w) +extern inline unsigned int hweight8(unsigned char w) __attribute__ ((unused)); -static inline unsigned int hweight32(unsigned int w) +extern inline unsigned int hweight32(unsigned int w) { unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555); res = (res & 0x33333333) + ((res >> 2) & 0x33333333); @@ -536,7 +539,7 @@ return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF); } -static inline unsigned int hweight16(unsigned short w) +extern inline unsigned int hweight16(unsigned short w) { unsigned short res = (w & 0x5555) + ((w >> 1) & 0x5555); res = (res & 0x3333) + ((res >> 2) & 0x3333); @@ -544,1265 +547,199 @@ return (res & 0x00FF) + ((res >> 8) & 0x00FF); } -static inline unsigned int hweight8(unsigned char w) +extern inline unsigned int hweight8(unsigned char w) { unsigned short res = (w & 0x55) + ((w >> 1) & 0x55); res = (res & 0x33) + ((res >> 2) & 0x33); return (res & 0x0F) + ((res >> 4) & 0x0F); } -/* --------------------------------------------------------------------- */ - -#ifdef ENABLE_AFSK1200 +extern inline unsigned int gcd(unsigned int x, unsigned int y) + __attribute__ ((unused)); +extern inline unsigned int lcm(unsigned int x, unsigned int y) + __attribute__ ((unused)); -static void modulator_1200(struct sm_state *sm, unsigned char *buf, int buflen) +extern inline unsigned int gcd(unsigned int x, unsigned int y) { - static const int dds_inc[2] = { 8192, 15019 }; - int j, k; - - for (; buflen >= 8; buflen -= 8) { - if (sm->modem.shreg <= 1) - sm->modem.shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; - sm->modem.tx_bit = (sm->modem.tx_bit ^ - (!(sm->modem.shreg & 1))) & 1; - sm->modem.shreg >>= 1; - k = dds_inc[sm->modem.tx_bit & 1]; - for (j = 0; j < 8; j++) { - *buf++ = sinetab[(sm->modem.bit_pll >> 10) & 0x3f]; - sm->modem.bit_pll += k; - } + for (;;) { + if (!x) + return y; + if (!y) + return x; + if (x > y) + x %= y; + else + y %= x; } } -/* --------------------------------------------------------------------- */ - -static void demodulator_1200(struct sm_state *sm, unsigned char *buf, int buflen) +extern inline unsigned int lcm(unsigned int x, unsigned int y) { - static const int pll_corr[2] = { -0x1000, 0x1000 }; - int j; - signed char *fp; - const signed char *coeffp; - int sum1, sum2; - unsigned char newsample; - - for (; buflen > 0; buflen--, buf++) { - sm->modem.filt[8] = (*buf - 128); - for (sum1 = j = 0, fp = sm->modem.filt+1, coeffp = tx_lo_i; - j < 8; j++, fp++, coeffp++) { - sum1 += (*coeffp) * (*fp); - fp[-1] = fp[0]; - } - sum1 >>= 7; - sum2 = sum1 * sum1; - for (sum1 = j = 0, fp = sm->modem.filt, coeffp = tx_lo_q; - j < 8; j++, fp++, coeffp++) - sum1 += (*coeffp) * (*fp); - sum1 >>= 7; - sum2 += sum1 * sum1; - for (sum1 = j = 0, fp = sm->modem.filt, coeffp = tx_hi_i; - j < 8; j++, fp++, coeffp++) - sum1 += (*coeffp) * (*fp); - sum1 >>= 7; - sum2 -= sum1 * sum1; - for (sum1 = j = 0, fp = sm->modem.filt, coeffp = tx_hi_q; - j < 8; j++, fp++, coeffp++) - sum1 += (*coeffp) * (*fp); - sum1 >>= 7; - sum2 -= sum1 * sum1; - sm->modem.dcd_shreg <<= 1; - sm->modem.bit_pll += 0x2000; - newsample = (sum2 > 0); - if (sm->modem.last_sample ^ newsample) { - sm->modem.last_sample = newsample; - sm->modem.dcd_shreg |= 1; - sm->modem.bit_pll += pll_corr - [sm->modem.bit_pll < 0x9000]; - j = 4 * hweight8(sm->modem.dcd_shreg & 0x38) - - hweight16(sm->modem.dcd_shreg & 0x7c0); - sm->modem.dcd_sum0 += j; - } - hdlcdrv_channelbit(&sm->hdrv, sm->modem.last_sample); - if ((--sm->modem.dcd_time) <= 0) { - hdlcdrv_setdcd(&sm->hdrv, (sm->modem.dcd_sum0 + - sm->modem.dcd_sum1 + - sm->modem.dcd_sum2) < 0); - sm->modem.dcd_sum2 = sm->modem.dcd_sum1; - sm->modem.dcd_sum1 = sm->modem.dcd_sum0; - sm->modem.dcd_sum0 = 2; /* slight bias */ - sm->modem.dcd_time = 120; - } - if (sm->modem.bit_pll >= 0x10000) { - sm->modem.bit_pll &= 0xffff; - sm->modem.shreg >>= 1; - sm->modem.shreg |= (!(sm->modem.last_rxbit ^ - sm->modem.last_sample)) << 16; - sm->modem.last_rxbit = sm->modem.last_sample; - diag_trigger(sm); - if (sm->modem.shreg & 1) { - hdlcdrv_putbits(&sm->hdrv, sm->modem.shreg >> 1); - sm->modem.shreg = 0x10000; - } - } - diag_add(sm, sm->modem.filt[7] << 8, sum2); - } + return x * y / gcd(x, y); } -#endif /* ENABLE_AFSK1200 */ - /* --------------------------------------------------------------------- */ /* - * ===================== modem routines 9600 baud ========================= + * ===================== profiling ======================================= */ -#ifdef ENABLE_FSK9600 -#define DESCRAM_TAP1 0x20000 -#define DESCRAM_TAP2 0x01000 -#define DESCRAM_TAP3 0x00001 - -#define DESCRAM_TAPSH1 17 -#define DESCRAM_TAPSH2 12 -#define DESCRAM_TAPSH3 0 - -#define SCRAM_TAP1 0x20000 /* X^17 */ -#define SCRAM_TAPN 0x00021 /* X^0+X^5 */ - -/* --------------------------------------------------------------------- */ +#if defined(SM_DEBUG) && (defined(CONFIG_M586) || defined(CONFIG_M686)) -#ifdef ENABLE_SBC - -static void modulator_9600_4(struct sm_state *sm, unsigned char *buf, int buflen) -{ - int j; - const unsigned char *cp; - - for (; buflen >= 4; buflen -= 4) { - if (sm->modem.shreg <= 1) - sm->modem.shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; - sm->modem.scram = ((sm->modem.scram << 1) | - (sm->modem.scram & 1)); - sm->modem.scram ^= (!(sm->modem.shreg & 1)); - sm->modem.shreg >>= 1; - if (sm->modem.scram & (SCRAM_TAP1 << 1)) - sm->modem.scram ^= (SCRAM_TAPN << 1); - sm->modem.tx_bit = (sm->modem.tx_bit << 1) | - (!!(sm->modem.scram & (SCRAM_TAP1 << 2))); - cp = tx_filter_9k6_4 + (sm->modem.tx_bit & 0xff); - for (j = 0; j < 4; j++) { - *buf++ = *cp; - cp += 0x100; - } - } -} - -/* --------------------------------------------------------------------- */ - -static void demodulator_9600_4(struct sm_state *sm, unsigned char *buf, int buflen) -{ - static const int pll_corr[2] = { -0x1000, 0x1000 }; - unsigned char curbit; - unsigned int descx; - - for (; buflen > 0; buflen--, buf++) { - sm->modem.dcd_shreg <<= 1; - sm->modem.bit_pll += 0x4000; - curbit = (*buf >= 0x80); - if (sm->modem.last_sample ^ curbit) { - sm->modem.dcd_shreg |= 1; - sm->modem.bit_pll += pll_corr - [sm->modem.bit_pll < 0xa000]; - sm->modem.dcd_sum0 += 8 * - hweight8(sm->modem.dcd_shreg & 0x0c) - - !!(sm->modem.dcd_shreg & 0x10); - } - sm->modem.last_sample = curbit; - hdlcdrv_channelbit(&sm->hdrv, sm->modem.last_sample); - if ((--sm->modem.dcd_time) <= 0) { - hdlcdrv_setdcd(&sm->hdrv, (sm->modem.dcd_sum0 + - sm->modem.dcd_sum1 + - sm->modem.dcd_sum2) < 0); - sm->modem.dcd_sum2 = sm->modem.dcd_sum1; - sm->modem.dcd_sum1 = sm->modem.dcd_sum0; - sm->modem.dcd_sum0 = 2; /* slight bias */ - sm->modem.dcd_time = 240; - } - if (sm->modem.bit_pll >= 0x10000) { - sm->modem.bit_pll &= 0xffff; - sm->modem.descram = (sm->modem.descram << 1) | curbit; - descx = sm->modem.descram ^ (sm->modem.descram >> 1); - descx ^= ((descx >> DESCRAM_TAPSH1) ^ - (descx >> DESCRAM_TAPSH2)); - sm->modem.shreg >>= 1; - sm->modem.shreg |= (!(descx & 1)) << 16; - if (sm->modem.shreg & 1) { - hdlcdrv_putbits(&sm->hdrv, sm->modem.shreg >> 1); - sm->modem.shreg = 0x10000; - } - diag_trigger(sm); - } - diag_add_one(sm, ((short)(*buf - 0x80)) << 8); - } -} - -#endif /* ENABLE_SBC */ - -/* --------------------------------------------------------------------- */ - -#if defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) - -static void modulator_9600_5(struct sm_state *sm, unsigned char *buf, int buflen) -{ - int j; - const unsigned char *cp; - - for (; buflen >= 5; buflen -= 5) { - if (sm->modem.shreg <= 1) - sm->modem.shreg = hdlcdrv_getbits(&sm->hdrv) | 0x10000; - sm->modem.scram = ((sm->modem.scram << 1) | - (sm->modem.scram & 1)); - sm->modem.scram ^= (!(sm->modem.shreg & 1)); - sm->modem.shreg >>= 1; - if (sm->modem.scram & (SCRAM_TAP1 << 1)) - sm->modem.scram ^= (SCRAM_TAPN << 1); - sm->modem.tx_bit = (sm->modem.tx_bit << 1) | - (!!(sm->modem.scram & (SCRAM_TAP1 << 2))); - cp = tx_filter_9k6_5 + (sm->modem.tx_bit & 0xff); - for (j = 0; j < 5; j++) { - *buf++ = *cp; - cp += 0x100; - } - } -} - -/* --------------------------------------------------------------------- */ - -static void demodulator_9600_5(struct sm_state *sm, unsigned char *buf, int buflen) -{ - static const int pll_corr[2] = { -0x1000, 0x1000 }; - unsigned char curbit; - unsigned int descx; - - for (; buflen > 0; buflen--, buf++) { - sm->modem.dcd_shreg <<= 1; - sm->modem.bit_pll += 0x3333; - curbit = (*buf >= 0x80); - if (sm->modem.last_sample ^ curbit) { - sm->modem.dcd_shreg |= 1; - sm->modem.bit_pll += pll_corr - [sm->modem.bit_pll < 0x9999]; - sm->modem.dcd_sum0 += 16 * - hweight8(sm->modem.dcd_shreg & 0x0c) - - hweight8(sm->modem.dcd_shreg & 0x70); - } - sm->modem.last_sample = curbit; - hdlcdrv_channelbit(&sm->hdrv, sm->modem.last_sample); - if ((--sm->modem.dcd_time) <= 0) { - hdlcdrv_setdcd(&sm->hdrv, (sm->modem.dcd_sum0 + - sm->modem.dcd_sum1 + - sm->modem.dcd_sum2) < 0); - sm->modem.dcd_sum2 = sm->modem.dcd_sum1; - sm->modem.dcd_sum1 = sm->modem.dcd_sum0; - sm->modem.dcd_sum0 = 2; /* slight bias */ - sm->modem.dcd_time = 240; - } - if (sm->modem.bit_pll >= 0x10000) { - sm->modem.bit_pll &= 0xffff; - sm->modem.descram = (sm->modem.descram << 1) | curbit; - descx = sm->modem.descram ^ (sm->modem.descram >> 1); - descx ^= ((descx >> DESCRAM_TAPSH1) ^ - (descx >> DESCRAM_TAPSH2)); - sm->modem.shreg >>= 1; - sm->modem.shreg |= (!(descx & 1)) << 16; - if (sm->modem.shreg & 1) { - hdlcdrv_putbits(&sm->hdrv, sm->modem.shreg >> 1); - sm->modem.shreg = 0x10000; - } - diag_trigger(sm); - } - diag_add_one(sm, ((short)(*buf - 0x80)) << 8); - } -} - -#endif /* defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) */ -#endif /* ENABLE_FSK9600 */ - -/* --------------------------------------------------------------------- */ /* - * ===================== soundblaster specific routines =================== + * only do 32bit cycle counter arithmetic; we hope we won't overflow :-) + * in fact, overflowing modems would require over 2THz clock speeds :-) */ -#ifdef ENABLE_SBC +#define time_exec(var,cmd) \ +({ \ + unsigned int cnt1, cnt2, cnt3; \ + __asm__(".byte 0x0f,0x31" : "=a" (cnt1), "=d" (cnt3)); \ + cmd; \ + __asm__(".byte 0x0f,0x31" : "=a" (cnt2), "=d" (cnt3)); \ + var = cnt2-cnt1; \ +}) +#else /* defined(SM_DEBUG) && (defined(CONFIG_M586) || defined(CONFIG_M686)) */ -static int inline reset_dsp(struct device *dev) -{ - int i; +#define time_exec(var,cmd) cmd - outb(1, DSP_RESET(dev->base_addr)); - for (i = 0; i < 0x100; i++) - SLOW_DOWN_IO; - outb(0, DSP_RESET(dev->base_addr)); - for (i = 0; i < 0xffff; i++) - if (inb(DSP_DATA_AVAIL(dev->base_addr)) & 0x80) - if (inb(DSP_READ_DATA(dev->base_addr)) == 0xaa) - return 1; - return 0; -} +#endif /* defined(SM_DEBUG) && (defined(CONFIG_M586) || defined(CONFIG_M686)) */ /* --------------------------------------------------------------------- */ -static void inline write_dsp(struct device *dev, unsigned char data) -{ - int i; - - for (i = 0; i < 0xffff; i++) - if (!(inb(DSP_WRITE_STATUS(dev->base_addr)) & 0x80)) { - outb(data, DSP_WRITE_DATA(dev->base_addr)); - return; - } -} - -/* --------------------------------------------------------------------- */ +#ifdef CONFIG_SOUNDMODEM_WSS +#include "sm_wss.h" +#endif /* CONFIG_SOUNDMODEM_WSS */ +#ifdef CONFIG_SOUNDMODEM_SBC +#include "sm_sbc.h" +#endif /* CONFIG_SOUNDMODEM_SBC */ -static int inline read_dsp(struct device *dev, unsigned char *data) -{ - int i; - - if (!data) - return 0; - for (i = 0; i < 0xffff; i++) - if (inb(DSP_DATA_AVAIL(dev->base_addr)) & 0x80) { - *data = inb(DSP_READ_DATA(dev->base_addr)); - return 1; - } - return 0; -} +#ifdef CONFIG_SOUNDMODEM_AFSK1200 +#include "sm_afsk1200.h" +#endif /* CONFIG_SOUNDMODEM_AFSK1200 */ +#ifdef CONFIG_SOUNDMODEM_FSK9600 +#include "sm_fsk9600.h" +#endif /* CONFIG_SOUNDMODEM_FSK9600 */ +#ifdef CONFIG_SOUNDMODEM_AFSK2666 +#include "sm_afsk2666.h" +#endif /* CONFIG_SOUNDMODEM_AFSK2666 */ +#ifdef CONFIG_SOUNDMODEM_PSK4800 +#include "sm_psk4800.h" +#endif /* CONFIG_SOUNDMODEM_PSK4800 */ /* --------------------------------------------------------------------- */ -static void inline sbc_int_ack(struct device *dev) -{ - inb(DSP_DATA_AVAIL(dev->base_addr)); -} +static int sm_open(struct device *dev); +static int sm_close(struct device *dev); +static int sm_ioctl(struct device *dev, struct ifreq *ifr, + struct hdlcdrv_ioctl *hi, int cmd); /* --------------------------------------------------------------------- */ -static void setup_dma_dsp(struct device *dev, int send) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned long flags; - static const unsigned char sbcmode[2][2] = { - { SBC_LO_INPUT_AUTOINIT, SBC_LO_OUTPUT_AUTOINIT }, - { SBC_HI_INPUT_AUTOINIT, SBC_HI_OUTPUT_AUTOINIT }}; - static const unsigned char dmamode[2] = - { DMA_MODE_READ | DMA_MODE_AUTOINIT, - DMA_MODE_WRITE | DMA_MODE_AUTOINIT}; - static const unsigned char sbcskr[2] = - { SBC_SPEAKER_OFF, SBC_SPEAKER_ON }; - unsigned long dmabufaddr = virt_to_bus(sm->modem.dmabufr); - - send = !!send; - if (!reset_dsp(dev)) { - printk(KERN_ERR "sm: cannot reset sb dsp\n"); - return; - } - if ((dmabufaddr & 0xffff) + mi->dmabuflen > 0x10000) - panic("sm: DMA buffer violates DMA boundary!"); - save_flags(flags); - cli(); - sbc_int_ack(dev); - write_dsp(dev, SBC_SAMPLE_RATE); /* set sampling rate */ - write_dsp(dev, mi->data_fmt); - write_dsp(dev, sbcskr[send]); - disable_dma(dev->dma); - clear_dma_ff(dev->dma); - set_dma_mode(dev->dma, dmamode[send]); - set_dma_addr(dev->dma, dmabufaddr); - set_dma_count(dev->dma, mi->dmabuflen); - enable_dma(dev->dma); - sbc_int_ack(dev); - write_dsp(dev, SBC_HISPEED); - write_dsp(dev, ((mi->dmabuflen >> 1) - 1) & 0xff); - write_dsp(dev, ((mi->dmabuflen >> 1) - 1) >> 8); - write_dsp(dev, sbcmode[mi->samplerate >= 13000][send]); - restore_flags(flags); -} - -/* --------------------------------------------------------------------- */ - -#if 0 -static int probe_int(struct device *dev, struct sm_state *sm) -{ - unsigned long irqs; - int irq; - - irqs = probe_irq_on(); - setup_dma_dsp(dev, virt_to_bus(sm->modem.dmabufr), 4, 256-77, 0); - udelay(2000); - irq = probe_irq_off(irqs); - disable_dma(dev->dma); - return irq; -} -#endif - -/* --------------------------------------------------------------------- */ - -static void sbc_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - struct device *dev = (struct device *)dev_id; - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned char new_ptt; - unsigned char *buf; +const struct modem_tx_info *modem_tx_base = NEXT_TX_INFO; +const struct modem_rx_info *modem_rx_base = NEXT_RX_INFO; +const struct hardware_info *hardware_base = NEXT_HW_INFO; - if (!dev || !sm || sm->hdrv.magic != HDLCDRV_MAGIC) - return; - new_ptt = hdlcdrv_ptt(&sm->hdrv); - sbc_int_ack(dev); - buf = sm->modem.dmabufr; - if (sm->modem.dmabufidx) - buf += mi->dmabuflen/2; - sm->modem.dmabufidx = !sm->modem.dmabufidx; - if (sm->modem.oldptt != new_ptt) { - disable_dma(dev->dma); - sti(); - sm->modem.dmabufidx = 0; - if (!new_ptt) { - setup_dma_dsp(dev, 0); - goto endint; - } - mi->demodulator(sm, buf, mi->dmabuflen/2); - mi->modulator(sm, sm->modem.dmabufr, mi->dmabuflen/2); - setup_dma_dsp(dev, 1); - mi->modulator(sm, sm->modem.dmabufr + mi->dmabuflen/2, - mi->dmabuflen/2); - goto endint; - } - sm_int_freq(sm); - sti(); - /* - * check if transmitter active - */ - if (new_ptt) - mi->modulator(sm, buf, mi->dmabuflen/2); - else { - mi->demodulator(sm, buf, mi->dmabuflen/2); - hdlcdrv_arbitrate(dev, &sm->hdrv); - } - endint: - sm->modem.oldptt = new_ptt; - output_status(sm); - hdlcdrv_transmitter(dev, &sm->hdrv); - hdlcdrv_receiver(dev, &sm->hdrv); -} - -/* --------------------------------------------------------------------- */ - -static int sbc_open(struct device *dev) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned char revreq = (mi->samplerate >= 13000) ? 3 : 2; - - if (!dev || !sm) - return -ENXIO; - if (dev->base_addr <= 0 || dev->base_addr > 0x1000-SBC_EXTENT || - dev->irq < 2 || dev->irq > 15 || dev->dma > 3) - return -ENXIO; - if (check_region(dev->base_addr, SBC_EXTENT)) - return -EACCES; - /* - * check if a card is available - */ - if (!reset_dsp(dev)) - return -ENODEV; - write_dsp(dev, SBC_GET_REVISION); - if (!read_dsp(dev, &sm->modem.revhi) || - !read_dsp(dev, &sm->modem.revlo)) - return -ENODEV; - if (sm->modem.revhi < revreq) { - printk(KERN_ERR "sm: sbc io 0x%lx: DSP rev %d.%02d too " - "old, at least %d.00 required\n", dev->base_addr, - sm->modem.revhi, sm->modem.revlo, revreq); - return -ENODEV; - } - /* - * initialize some variables - */ - if (!(sm->modem.dmabufr = kmalloc(mi->dmabuflen, GFP_KERNEL | GFP_DMA))) - return -ENOMEM; - sm->modem.shreg = sm->modem.last_sample = 0; - sm->modem.bit_pll = sm->modem.dcd_shreg = sm->modem.dcd_sum1 = 0; - sm->modem.dcd_sum2 = sm->modem.last_rxbit = sm->modem.tx_bit = 0; - sm->modem.dmabufidx = sm->modem.oldptt = 0; - sm->modem.dmabufw = NULL; - sm->modem.dcd_time = 120; - sm->modem.dcd_sum0 = 2; -#if 0 - if (!dev->irq) { - int irq = probe_int(dev, sm); - if (irq < 0) { - printk(KERN_ERR "sm: irq autoprobe failed\n"); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -EBUSY; - } - dev->irq = irq; - } -#endif - if (request_dma(dev->dma, mi->mode_name)) { - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -EBUSY; - } - if (request_irq(dev->irq, sbc_interrupt, SA_INTERRUPT, - mi->mode_name, dev)) { - free_dma(dev->dma); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -EBUSY; - } - request_region(dev->base_addr, SBC_EXTENT, mi->mode_name); - setup_dma_dsp(dev, 0); - output_open(sm); - printk(KERN_INFO "sm: sbc at iobase 0x%lx irq %u dma " - "%u DSP revision %u.%02u\n", dev->base_addr, dev->irq, - dev->dma, (unsigned int)sm->modem.revhi, - (unsigned int)sm->modem.revlo); - MOD_INC_USE_COUNT; - return 0; -} +static const struct hdlcdrv_ops sm_ops = { + sm_drvname, sm_drvinfo, sm_open, sm_close, sm_ioctl +}; /* --------------------------------------------------------------------- */ -static int sbc_close(struct device *dev) +static int sm_open(struct device *dev) { - struct sm_state *sm = (struct sm_state *)dev->priv; + struct sm_state *sm; + int err; - if (!dev || !sm) + if (!dev || !dev->priv || + ((struct sm_state *)dev->priv)->hdrv.magic != HDLCDRV_MAGIC) { + printk(KERN_ERR "sm_open: invalid device struct\n"); return -EINVAL; - /* - * disable interrupts - */ - disable_dma(dev->dma); - reset_dsp(dev); - free_irq(dev->irq, dev); - free_dma(dev->dma); - release_region(dev->base_addr, SBC_EXTENT); - kfree(sm->modem.dmabufr); - output_close(sm); - printk(KERN_INFO "sm: close sbc at iobase 0x%lx irq %u dma %u\n", - dev->base_addr, dev->irq, dev->dma); - MOD_DEC_USE_COUNT; - return 0; -} - -#endif /* ENABLE_SBC */ - -/* --------------------------------------------------------------------- */ -/* - * ===================== Windows Sound System specific routines ========== - */ - -#if defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) - -static void write_codec(struct device *dev, unsigned char idx, - unsigned char data) -{ - int timeout = 900000; - - /* wait until codec ready */ - while (timeout > 0 && inb(WSS_CODEC_IA(dev->base_addr)) & 0x80) - timeout--; - outb(idx, WSS_CODEC_IA(dev->base_addr)); - outb(data, WSS_CODEC_ID(dev->base_addr)); -} - - -/* --------------------------------------------------------------------- */ - -static unsigned char read_codec(struct device *dev, unsigned char idx) -{ - int timeout = 900000; - - /* wait until codec ready */ - while (timeout > 0 && inb(WSS_CODEC_IA(dev->base_addr)) & 0x80) - timeout--; - outb(idx & 0xf, WSS_CODEC_IA(dev->base_addr)); - return inb(WSS_CODEC_ID(dev->base_addr)); -} - -/* --------------------------------------------------------------------- */ - -static void inline wss_ack_int(struct device *dev) -{ - outb(0, WSS_CODEC_STATUS(dev->base_addr)); -} - -/* --------------------------------------------------------------------- */ - -static int wss_init_codec(struct device *dev, unsigned char sdc, - unsigned char src_l, unsigned char src_r, - int igain_l, int igain_r, - int ogain_l, int ogain_r) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - - unsigned char tmp, reg0, reg1, reg6, reg7; - static const signed char irqtab[16] = - { -1, -1, 0x10, -1, -1, -1, -1, 0x08, -1, 0x10, 0x18, 0x20, -1, -1, - -1, -1 }; - static const signed char dmatab[4] = { 1, 2, -1, 3 }; - unsigned long time; - - tmp = inb(WSS_STATUS(dev->base_addr)); - if ((tmp & 0x3f) != 0x04 && (tmp & 0x3f) != 0x00 && - (tmp & 0x3f) != 0x0f) { - printk(KERN_ERR "sm: WSS card not found, address 0x%lx, ID " - "register 0x%02x\n", dev->base_addr, (int)tmp); - return -1; - } - if ((tmp & 0x80) && ((dev->dma == 0) || ((dev->irq >= 8) && - (dev->irq != 9)))) { - printk(KERN_ERR "sm: WSS: DMA0 and/or IRQ8..IRQ15 (except " - "IRQ9) cannot be used on an 8bit card\n"); - return -1; - } - if (dev->irq > 15 || irqtab[dev->irq] == -1) { - printk(KERN_ERR "sm: WSS: invalid interrupt %d\n", - (int)dev->irq); - return -1; - } - if (dev->dma > 3 || dmatab[dev->dma] == -1) { - printk(KERN_ERR "sm: WSS: invalid dma channel %d\n", - (int)dev->dma); - return -1; - } - tmp = irqtab[dev->irq] | dmatab[dev->dma]; - outb((tmp & 0x38) | 0x40, WSS_CONFIG(dev->base_addr)); /* irq probe */ - if (!(inb(WSS_STATUS(dev->base_addr)) & 0x40)) { - outb(0, WSS_CONFIG(dev->base_addr)); - printk(KERN_ERR "sm: WSS: IRQ%d is not free!\n", dev->irq); - } - outb(tmp, WSS_CONFIG(dev->base_addr)); - /* - * initialize the codec - */ - if (igain_l < 0) - igain_l = 0; - if (igain_r < 0) - igain_r = 0; - if (ogain_l > 0) - ogain_l = 0; - if (ogain_r > 0) - ogain_r = 0; - reg0 = (src_l << 6) & 0xc0; - reg1 = (src_r << 6) & 0xc0; - if (reg0 == 0x80 && igain_l >= 20) { - reg0 |= 0x20; - igain_l -= 20; - } - if (reg1 == 0x80 && igain_r >= 20) { - reg1 |= 0x20; - igain_r -= 20; } - if (igain_l > 23) - igain_l = 23; - if (igain_r > 23) - igain_r = 23; - reg0 |= igain_l * 2 / 3; - reg1 |= igain_r * 2 / 3; - reg6 = (ogain_l < -95) ? 0x80 : (ogain_l * (-2) / 3); - reg7 = (ogain_r < -95) ? 0x80 : (ogain_r * (-2) / 3); -#if 1 - write_codec(dev, 9, 0); - write_codec(dev, 15, 0xaa); - write_codec(dev, 14, 0x55); - if ((read_codec(dev, 15) != 0xaa) || (read_codec(dev, 14) != 0x55)) - goto codec_err; -#endif - write_codec(dev, 0x48, mi->data_fmt); /* Clock and data format register */ - write_codec(dev, 0x49, sdc ? 0xc : 0x8); /* MCE and interface config reg */ - /* single DMA channel, disable both DMA */ - /* clear MCE and wait until ACI set */ - time = jiffies + HZ/4; - while (!(read_codec(dev, 0x0b) & 0x20) && - ((signed)(jiffies - time) < 0)); - /* wait until ACI cleared */ - while ((read_codec(dev, 0x0b) & 0x20) && - ((signed)(jiffies - time) < 0)); - if ((signed)(jiffies - time) >= 0) { - printk(KERN_WARNING "sm: ad1848 auto calibration timed out\n"); - goto codec_err; - } - write_codec(dev, 0, reg0); /* left input control */ - write_codec(dev, 1, reg1); /* right input control */ - write_codec(dev, 2, 0x80); /* left aux#1 input control */ - write_codec(dev, 3, 0x80); /* right aux#1 input control */ - write_codec(dev, 4, 0x80); /* left aux#2 input control */ - write_codec(dev, 5, 0x80); /* right aux#2 input control */ - write_codec(dev, 6, reg6); /* left dac control */ - write_codec(dev, 7, reg7); /* right dac control */ - write_codec(dev, 0xa, 0x2); /* pin control register */ - write_codec(dev, 0xd, 0x0); /* digital mix control */ - sm->modem.revhi = inb(WSS_STATUS(dev->base_addr)) & 0x3f; - sm->modem.revlo = read_codec(dev, 0xc) & 0xf; - /* - * print revisions - */ - printk(KERN_INFO "sm: WSS revision %d, CODEC revision %d\n", - (int)sm->modem.revhi, (int)sm->modem.revlo); - return 0; - codec_err: - outb(0, WSS_CONFIG(dev->base_addr)); - printk(KERN_ERR "sm: no WSS soundcard found at address 0x%lx\n", - dev->base_addr); - return -1; -} - -#endif /* defined(ENABLE_WSS) || defined(ENABLE_WSSFDX) */ - -/* --------------------------------------------------------------------- */ - -#ifdef ENABLE_WSS - -static void setup_dma_wss(struct device *dev, int flg) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned long flags; - static const unsigned char codecmode[2] = { 0x0e, 0x0d }; - static const unsigned char dmamode[2] = - { DMA_MODE_READ | DMA_MODE_AUTOINIT, - DMA_MODE_WRITE | DMA_MODE_AUTOINIT}; - unsigned char oldcodecmode, codecdma; - long abrt; - unsigned long dmabufaddr = virt_to_bus(sm->modem.dmabufr); - - if ((dmabufaddr & 0xffff) + mi->dmabuflen > 0x10000) - panic("sm: DMA buffer violates DMA boundary!"); - flg = !!flg; - save_flags(flags); - cli(); - /* - * perform the final DMA sequence to disable the codec request - */ - oldcodecmode = read_codec(dev, 9); - write_codec(dev, 9, 0xc); /* disable codec */ - wss_ack_int(dev); - if ((codecdma = read_codec(dev, 11)) & 0x10) { - disable_dma(dev->dma); - clear_dma_ff(dev->dma); - set_dma_mode(dev->dma, dmamode[oldcodecmode & 1]); - set_dma_addr(dev->dma, dmabufaddr); - set_dma_count(dev->dma, mi->dmabuflen); - enable_dma(dev->dma); - abrt = 0; - while (((codecdma = read_codec(dev, 11)) & 0x10) || - ((++abrt) >= 0x10000)); - } - disable_dma(dev->dma); - clear_dma_ff(dev->dma); - set_dma_mode(dev->dma, dmamode[flg]); - set_dma_addr(dev->dma, dmabufaddr); - set_dma_count(dev->dma, mi->dmabuflen); - enable_dma(dev->dma); - write_codec(dev, 15, ((mi->dmabuflen >> 1) - 1) & 0xff); - write_codec(dev, 14, ((mi->dmabuflen >> 1) - 1) >> 8); - write_codec(dev, 9, codecmode[flg]); - restore_flags(flags); -} - -/* --------------------------------------------------------------------- */ - -static void wss_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - struct device *dev = (struct device *)dev_id; - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned char new_ptt; - unsigned char *buf; - unsigned long flags; - int dmares; - - if (!dev || !sm || sm->hdrv.magic != HDLCDRV_MAGIC) - return; - new_ptt = hdlcdrv_ptt(&sm->hdrv); - save_flags(flags); - cli(); - wss_ack_int(dev); - disable_dma(dev->dma); - clear_dma_ff(dev->dma); - dmares = get_dma_residue(dev->dma); - enable_dma(dev->dma); - if (dmares <= 0) - dmares = mi->dmabuflen; - buf = sm->modem.dmabufr; - if (dmares > mi->dmabuflen/2) - buf += mi->dmabuflen/2; - if (dmares > mi->dmabuflen/2) - dmares -= mi->dmabuflen/2; -#ifdef SM_DEBUG - if (!sm->debug_vals.last_pllcorr || - dmares < sm->debug_vals.last_pllcorr) - sm->debug_vals.last_pllcorr = dmares; -#endif /* SM_DEBUG */ - dmares--; - write_codec(dev, 15, dmares & 0xff); - write_codec(dev, 14, dmares >> 8); - restore_flags(flags); - if (sm->modem.oldptt != new_ptt) { - disable_dma(dev->dma); - sti(); - sm->modem.dmabufidx = 0; - if (!new_ptt) { - setup_dma_wss(dev, 0); - goto endint; - } - mi->demodulator(sm, buf, mi->dmabuflen/2); - mi->modulator(sm, sm->modem.dmabufr, mi->dmabuflen/2); - setup_dma_wss(dev, 1); - mi->modulator(sm, sm->modem.dmabufr + mi->dmabuflen/2, - mi->dmabuflen/2); - goto endint; - } - sm_int_freq(sm); - sti(); - /* - * check if transmitter active - */ - if (new_ptt) - mi->modulator(sm, buf, mi->dmabuflen/2); - else { - mi->demodulator(sm, buf, mi->dmabuflen/2); - hdlcdrv_arbitrate(dev, &sm->hdrv); - } - endint: - sm->modem.oldptt = new_ptt; - output_status(sm); - hdlcdrv_transmitter(dev, &sm->hdrv); - hdlcdrv_receiver(dev, &sm->hdrv); -} - -/* --------------------------------------------------------------------- */ - -static int wss_open(struct device *dev) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; + sm = (struct sm_state *)dev->priv; - if (!dev || !sm) - return -ENXIO; - if (dev->base_addr <= 0 || dev->base_addr > 0x1000-WSS_EXTENT || - dev->irq < 2 || dev->irq > 15 || dev->dma > 3) - return -ENXIO; - if (check_region(dev->base_addr, WSS_EXTENT)) - return -EACCES; - /* - * check if a card is available - */ - if (wss_init_codec(dev, 1, 1, 1, 0, 0, -45, -45)) + if (!sm->mode_tx || !sm->mode_rx || !sm->hwdrv || !sm->hwdrv->open) return -ENODEV; - /* - * initialize some variables - */ - if (!(sm->modem.dmabufr = kmalloc(mi->dmabuflen, GFP_KERNEL | GFP_DMA))) - return -ENOMEM; - sm->modem.shreg = sm->modem.last_sample = 0; - sm->modem.bit_pll = sm->modem.dcd_shreg = sm->modem.dcd_sum1 = 0; - sm->modem.dcd_sum2 = sm->modem.last_rxbit = sm->modem.tx_bit = 0; - sm->modem.dmabufidx = sm->modem.oldptt = 0; - sm->modem.dmabufw = NULL; - sm->modem.dcd_time = 120; - sm->modem.dcd_sum0 = 2; - if (request_dma(dev->dma, mi->mode_name)) { - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -EBUSY; - } - if (request_irq(dev->irq, wss_interrupt, SA_INTERRUPT, - mi->mode_name, dev)) { - free_dma(dev->dma); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -EBUSY; - } - request_region(dev->base_addr, WSS_EXTENT, mi->mode_name); - setup_dma_wss(dev, 0); + sm->hdrv.par.bitrate = sm->mode_rx->bitrate; + err = sm->hwdrv->open(dev, sm); + if (err) + return err; output_open(sm); - printk(KERN_INFO "sm: wss at iobase 0x%lx irq %u dma " - "%u\n", dev->base_addr, dev->irq, dev->dma); MOD_INC_USE_COUNT; + printk(KERN_INFO "%s: %s mode %s.%s at iobase 0x%lx irq %u dma %u\n", + sm_drvname, sm->hwdrv->hw_name, sm->mode_tx->name, + sm->mode_rx->name, dev->base_addr, dev->irq, dev->dma); return 0; } /* --------------------------------------------------------------------- */ -static int wss_close(struct device *dev) +static int sm_close(struct device *dev) { - struct sm_state *sm = (struct sm_state *)dev->priv; + struct sm_state *sm; + int err = -ENODEV; - if (!dev || !sm) + if (!dev || !dev->priv || + ((struct sm_state *)dev->priv)->hdrv.magic != HDLCDRV_MAGIC) { + printk(KERN_ERR "sm_close: invalid device struct\n"); return -EINVAL; - /* - * disable interrupts - */ - disable_dma(dev->dma); - write_codec(dev, 9, 0xc); /* disable codec */ - free_irq(dev->irq, dev); - free_dma(dev->dma); - release_region(dev->base_addr, WSS_EXTENT); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - output_close(sm); - printk(KERN_INFO "sm: close wss at iobase 0x%lx irq %u" - " dma %u\n", dev->base_addr, dev->irq, dev->dma); - MOD_DEC_USE_COUNT; - return 0; -} - -#endif /* ENABLE_WSS */ - -/* --------------------------------------------------------------------- */ -/* - * =========== Windows Sound System Fullduplex specific routines ========== - */ - -/* - * This does _not_ work on my hardware - */ - -#ifdef ENABLE_WSSFDX - -static void setup_dma_wssfdx(struct device *dev) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned long flags; - unsigned char codecdma; - long abrt; - unsigned long dmabufraddr = virt_to_bus(sm->modem.dmabufr); - unsigned long dmabufwaddr = virt_to_bus(sm->modem.dmabufw); - - if (((dmabufraddr & 0xffff) + mi->dmabuflen > 0x10000) || - ((dmabufwaddr & 0xffff) + mi->dmabuflen > 0x10000)) - panic("sm: DMA buffer violates DMA boundary!"); - save_flags(flags); - cli(); - /* - * perform the final DMA sequence to disable the codec request - */ - write_codec(dev, 9, 0x8); /* disable codec */ - wss_ack_int(dev); - if ((codecdma = read_codec(dev, 11)) & 0x10) { - disable_dma(dev->dma); - disable_dma(!dev->dma); - clear_dma_ff(dev->dma); - set_dma_mode(dev->dma, DMA_MODE_WRITE | DMA_MODE_AUTOINIT); - set_dma_addr(dev->dma, dmabufwaddr); - set_dma_count(dev->dma, mi->dmabuflen); - set_dma_mode(!dev->dma, DMA_MODE_READ | DMA_MODE_AUTOINIT); - set_dma_addr(!dev->dma, dmabufraddr); - set_dma_count(!dev->dma, mi->dmabuflen); - enable_dma(dev->dma); - enable_dma(!dev->dma); - abrt = 0; - while (((codecdma = read_codec(dev, 11)) & 0x10) || - ((++abrt) >= 0x10000)); - } - disable_dma(dev->dma); - disable_dma(!dev->dma); - clear_dma_ff(dev->dma); - set_dma_mode(dev->dma, DMA_MODE_WRITE | DMA_MODE_AUTOINIT); - set_dma_addr(dev->dma, dmabufwaddr); - set_dma_count(dev->dma, mi->dmabuflen); - set_dma_mode(!dev->dma, DMA_MODE_READ | DMA_MODE_AUTOINIT); - set_dma_addr(!dev->dma, dmabufraddr); - set_dma_count(!dev->dma, mi->dmabuflen); - enable_dma(dev->dma); - enable_dma(!dev->dma); - write_codec(dev, 15, ((mi->dmabuflen >> 1) - 1) & 0xff); - write_codec(dev, 14, ((mi->dmabuflen >> 1) - 1) >> 8); - write_codec(dev, 9, 0x0b); - restore_flags(flags); -} - -/* --------------------------------------------------------------------- */ - -static int msgcnt = 10; - -static void wssfdx_interrupt(int irq, void *dev_id, struct pt_regs *regs) -{ - struct device *dev = (struct device *)dev_id; - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - unsigned char new_ptt; - unsigned char *bufr; - unsigned char *bufw; - unsigned long flags; - int dmares, dmares2, i; - - if (!dev || !sm || sm->hdrv.magic != HDLCDRV_MAGIC) - return; - new_ptt = hdlcdrv_ptt(&sm->hdrv); - save_flags(flags); - cli(); - wss_ack_int(dev); - disable_dma(dev->dma); - disable_dma(!dev->dma); - clear_dma_ff(dev->dma); - dmares = get_dma_residue(dev->dma); - dmares2 = get_dma_residue(!dev->dma); - enable_dma(dev->dma); - enable_dma(!dev->dma); - if (dmares <= 0) - dmares = mi->dmabuflen; - if (dmares2 <= 0) - dmares2 = mi->dmabuflen; - bufw = sm->modem.dmabufw; - if (dmares > mi->dmabuflen/2) - bufw += mi->dmabuflen/2; - bufr = sm->modem.dmabufr; - if (dmares2 > mi->dmabuflen/2) - bufr += mi->dmabuflen/2; - if ((i = dmares) > mi->dmabuflen/2) - i -= mi->dmabuflen/2; -#ifdef SM_DEBUG - if (!sm->debug_vals.last_pllcorr || - i < sm->debug_vals.last_pllcorr) - sm->debug_vals.last_pllcorr = i; -#endif /* SM_DEBUG */ - i--; - write_codec(dev, 15, i & 0xff); - write_codec(dev, 14, i >> 8); - restore_flags(flags); - sm_int_freq(sm); - sti(); - - if (msgcnt > 0) { - msgcnt--; - printk(KERN_DEBUG "sm: DMA residue: playback: %d " - "capture: %d\n", dmares, dmares2); } + sm = (struct sm_state *)dev->priv; - /* - * check if transmitter active - */ - if (new_ptt) - mi->modulator(sm, bufw, mi->dmabuflen/2); - else - memset(bufw, 0x80, mi->dmabuflen/2); - mi->demodulator(sm, bufr, mi->dmabuflen/2); - hdlcdrv_arbitrate(dev, &sm->hdrv); - sm->modem.oldptt = new_ptt; - output_status(sm); - hdlcdrv_transmitter(dev, &sm->hdrv); - hdlcdrv_receiver(dev, &sm->hdrv); + + if (sm->hwdrv && sm->hwdrv->close) + err = sm->hwdrv && sm->hwdrv->close(dev, sm); + output_close(sm); + MOD_DEC_USE_COUNT; + printk(KERN_INFO "%s: close %s at iobase 0x%lx irq %u dma %u\n", + sm_drvname, sm->hwdrv->hw_name, dev->base_addr, dev->irq, dev->dma); + return err; } /* --------------------------------------------------------------------- */ -static int wssfdx_open(struct device *dev) +static int sethw(struct device *dev, struct sm_state *sm, char *mode) { - struct sm_state *sm = (struct sm_state *)dev->priv; - struct modem_info *mi = (struct modem_info *)sm->hdrv.ops; - - if (!dev || !sm) - return -ENXIO; - if (dev->base_addr <= 0 || dev->base_addr > 0x1000-WSS_EXTENT || - dev->irq < 2 || dev->irq > 15 || dev->dma > 3) - return -ENXIO; - if (check_region(dev->base_addr, WSS_EXTENT)) - return -EACCES; - /* - * check if a card is available - */ - if (wss_init_codec(dev, 0, 1, 1, 0, 0, -45, -45)) - return -ENODEV; - /* - * initialize some variables - */ - if (!(sm->modem.dmabufr = kmalloc(mi->dmabuflen, GFP_KERNEL | GFP_DMA))) - return -ENOMEM; - if (!(sm->modem.dmabufw = kmalloc(mi->dmabuflen, GFP_KERNEL | GFP_DMA))) { - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - return -ENOMEM; - } - sm->modem.shreg = sm->modem.last_sample = 0; - sm->modem.bit_pll = sm->modem.dcd_shreg = sm->modem.dcd_sum1 = 0; - sm->modem.dcd_sum2 = sm->modem.last_rxbit = sm->modem.tx_bit = 0; - sm->modem.dmabufidx = sm->modem.oldptt = 0; - sm->modem.dcd_time = 120; - sm->modem.dcd_sum0 = 2; - if (request_dma(dev->dma, mi->mode_name)) { - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - kfree_s(sm->modem.dmabufw, mi->dmabuflen); - return -EBUSY; - } - if (request_dma(!dev->dma, mi->mode_name)) { - free_dma(dev->dma); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - kfree_s(sm->modem.dmabufw, mi->dmabuflen); - return -EBUSY; - } - if (request_irq(dev->irq, wssfdx_interrupt, SA_INTERRUPT, - mi->mode_name, dev)) { - free_dma(dev->dma); - free_dma(!dev->dma); - kfree_s(sm->modem.dmabufr, mi->dmabuflen); - kfree_s(sm->modem.dmabufw, mi->dmabuflen); - return -EBUSY; + char *cp = strchr(mode, ':'); + const struct hardware_info *hwp = hardware_base; + + if (!cp) + cp = mode; + else { + *cp++ = '\0'; + while (hwp && hwp->hw_name && strcmp(hwp->hw_name, mode)) + hwp = hwp->next; + if (!hwp || !hwp->hw_name) + return -EINVAL; + if (hwp->loc_storage > sizeof(sm->hw)) { + printk(KERN_ERR "%s: insufficient storage for hw driver %s (%d)\n", + sm_drvname, hwp->hw_name, hwp->loc_storage); + return -EINVAL; + } + sm->hwdrv = hwp; } - request_region(dev->base_addr, WSS_EXTENT, mi->mode_name); - setup_dma_wssfdx(dev); - output_open(sm); - printk(KERN_INFO "sm: wss fdx at iobase 0x%lx irq %u dma1 " - "%u dma2 %u\n", dev->base_addr, dev->irq, dev->dma, !dev->dma); - MOD_INC_USE_COUNT; - return 0; -} - -/* --------------------------------------------------------------------- */ - -static int wssfdx_close(struct device *dev) -{ - struct sm_state *sm = (struct sm_state *)dev->priv; - - if (!dev || !sm) - return -EINVAL; - /* - * disable interrupts - */ - disable_dma(dev->dma); - disable_dma(!dev->dma); - write_codec(dev, 9, 0x8); /* disable codec */ - free_irq(dev->irq, dev); - free_dma(dev->dma); - free_dma(!dev->dma); - release_region(dev->base_addr, WSS_EXTENT); - kfree(sm->modem.dmabufr); - kfree(sm->modem.dmabufw); - output_close(sm); - printk(KERN_INFO "sm: close wss fdx at iobase 0x%lx irq %u" - " dma %u\n", dev->base_addr, dev->irq, dev->dma); - MOD_DEC_USE_COUNT; - return 0; + if (!*cp) + return 0; + if (sm->hwdrv && sm->hwdrv->sethw) + return sm->hwdrv->sethw(dev, sm, cp); + return -EINVAL; } -#endif /* ENABLE_WSSFDX */ - -/* --------------------------------------------------------------------- */ -/* - * ===================== hdlcdrv driver interface ========================= - */ - -static int sm_ioctl(struct device *dev, struct ifreq *ifr, int cmd); - -#define SBC1200_SRATE (256-104) /* the SBC sampling rate, 256-(1E6/srate) */ -#define SBC1200_DMABUFLEN 192 /* DMA buffer duration exactly 20ms */ - -#define SBC9600_SRATE (256-26) /* the SBC sampling rate, 256-(1E6/srate) */ -#define SBC9600_DMABUFLEN 768 /* DMA buffer duration exactly 20ms */ - -#define WSS1200_DATAFMT 0x0e /* 8bit unsigned PCM, Mono, XTAL1, 9.6kHz */ -#define WSS1200_DMABUFLEN 192 /* DMA buffer duration exactly 20ms */ - -#define WSS9600_DATAFMT 0x0c /* 8bit unsigned PCM, Mono, XTAL1, 48kHz */ -#define WSS9600_DMABUFLEN 960 /* DMA buffer duration exactly 20ms */ - -/* --------------------------------------------------------------------- */ - -#ifdef ENABLE_SBC - -static const struct modem_info sbc1200_ops = { -{ 1200, sbc_open, sbc_close, sm_ioctl }, 9600, 1, 8, "sbc_1200", -SBC1200_SRATE, SBC1200_DMABUFLEN, -modulator_1200, demodulator_1200 -}; -/* --------------------------------------------------------------------- */ - -static const struct modem_info sbc9600_ops = { -{ 9600, sbc_open, sbc_close, sm_ioctl }, 38400, 1, 4, "sbc_9600", -SBC9600_SRATE, SBC9600_DMABUFLEN, -modulator_9600_4, demodulator_9600_4 -}; - -#endif /* ENABLE_SBC */ - -/* --------------------------------------------------------------------- */ - -#ifdef ENABLE_WSS - -static const struct modem_info wss1200_ops = { -{ 1200, wss_open, wss_close, sm_ioctl }, 9600, 0, 8, "wss_1200", -WSS1200_DATAFMT, WSS1200_DMABUFLEN, -modulator_1200, demodulator_1200 -}; - -/* --------------------------------------------------------------------- */ - -static const struct modem_info wss9600_ops = { -{ 9600, wss_open, wss_close, sm_ioctl }, 48000, 0, 5, "wss_9600", -WSS9600_DATAFMT, WSS9600_DMABUFLEN, -modulator_9600_5, demodulator_9600_5 -}; - -#endif /* ENABLE_WSS */ - -/* --------------------------------------------------------------------- */ - -#ifdef ENABLE_WSSFDX - -static const struct modem_info wss1200fdx_ops = { -{ 1200, wssfdx_open, wssfdx_close, sm_ioctl }, 9600, 0, 8, "wss_fdx_1200", -WSS1200_DATAFMT, WSS1200_DMABUFLEN, -modulator_1200, demodulator_1200 -}; - -/* --------------------------------------------------------------------- */ - -static const struct modem_info wss9600fdx_ops = { -{ 9600, wssfdx_open, wssfdx_close, sm_ioctl }, 48000, 0, 5, "wss_fdx_9600", -WSS9600_DATAFMT, WSS9600_DMABUFLEN, -modulator_9600_5, demodulator_9600_5 -}; - -#endif /* ENABLE_WSSFDX */ - -/* --------------------------------------------------------------------- */ - -static const struct modem_info dummy_ops = { -{ 0, NULL, NULL, sm_ioctl }, 0, 0, 0, "none", -0, 0, -NULL, NULL -}; - -/* --------------------------------------------------------------------- */ - -static const struct modem_info *ops_tab[3][2] = { -#ifdef ENABLE_SBC -{ &sbc1200_ops, &sbc9600_ops }, -#else /* ENABLE_SBC */ -{ &dummy_ops, &dummy_ops }, -#endif /* ENABLE_SBC */ -#ifdef ENABLE_WSS -{ &wss1200_ops, &wss9600_ops }, -#else /* ENABLE_WSS */ -{ &dummy_ops, &dummy_ops }, -#endif /* ENABLE_WSS */ -#ifdef ENABLE_WSSFDX -{ &wss1200fdx_ops, &wss9600fdx_ops } -#else /* ENABLE_WSSFDX */ -{ &dummy_ops, &dummy_ops } -#endif /* ENABLE_WSSFDX */ -}; - /* --------------------------------------------------------------------- */ -static int sm_ioctl(struct device *dev, struct ifreq *ifr, int cmd) +static int sm_ioctl(struct device *dev, struct ifreq *ifr, + struct hdlcdrv_ioctl *hi, int cmd) { - int i; struct sm_state *sm; struct sm_ioctl bi; unsigned long flags; unsigned int newdiagmode; unsigned int newdiagflags; - + char *cp; + const struct modem_tx_info *mtp = modem_tx_base; + const struct modem_rx_info *mrp = modem_rx_base; + const struct hardware_info *hwp = hardware_base; + if (!dev || !dev->priv || ((struct sm_state *)dev->priv)->hdrv.magic != HDLCDRV_MAGIC) { printk(KERN_ERR "sm_ioctl: invalid device struct\n"); @@ -1810,132 +747,91 @@ } sm = (struct sm_state *)dev->priv; - if (cmd != SIOCDEVPRIVATE) + if (cmd != SIOCDEVPRIVATE) { + if (!sm->hwdrv || !sm->hwdrv->ioctl) + return sm->hwdrv->ioctl(dev, sm, ifr, hi, cmd); return -ENOIOCTLCMD; - if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) - return -EFAULT; - - switch (bi.cmd) { + } + switch (hi->cmd) { default: + if (sm->hwdrv && sm->hwdrv->ioctl) + return sm->hwdrv->ioctl(dev, sm, ifr, hi, cmd); return -ENOIOCTLCMD; - - case SMCTL_GETMODEMTYPE: - bi.data.cfg.hardware = sm->config.hardware; - bi.data.cfg.mode = sm->config.mode; - break; - - case SMCTL_SETMODEMTYPE: + + case HDLCDRVCTL_GETMODE: + cp = hi->data.modename; + if (sm->hwdrv && sm->hwdrv->hw_name) + cp += sprintf(cp, "%s:", sm->hwdrv->hw_name); + else + cp += sprintf(cp, ":"); + if (sm->mode_tx && sm->mode_tx->name) + cp += sprintf(cp, "%s", sm->mode_tx->name); + else + cp += sprintf(cp, ""); + if (!sm->mode_rx || !sm->mode_rx || + strcmp(sm->mode_rx->name, sm->mode_tx->name)) { + if (sm->mode_rx && sm->mode_rx->name) + cp += sprintf(cp, ",%s", sm->mode_rx->name); + else + cp += sprintf(cp, ","); + } + if (copy_to_user(ifr->ifr_data, hi, sizeof(*hi))) + return -EFAULT; + return 0; + + case HDLCDRVCTL_SETMODE: if (!suser() || dev->start) return -EACCES; - if (bi.data.cfg.hardware < SM_HARDWARE_INVALID || - bi.data.cfg.hardware > SM_HARDWARE_WSSFDX || - bi.data.cfg.mode < SM_MODE_INVALID || - bi.data.cfg.mode > SM_MODE_FSK9600) - return -EINVAL; - sm->config.hardware = bi.data.cfg.hardware; - sm->config.mode = bi.data.cfg.mode; - if (bi.data.cfg.hardware == SM_HARDWARE_INVALID || - bi.data.cfg.mode == SM_MODE_INVALID) - sm->hdrv.ops = &dummy_ops.hops; - else { - sm->hdrv.ops = &ops_tab[sm->config.hardware][sm->config.mode]->hops; - if (!((struct modem_info *)sm->hdrv.ops)->samplerate) - return -ENODEV; + hi->data.modename[sizeof(hi->data.modename)-1] = '\0'; + return sethw(dev, sm, hi->data.modename); + + case HDLCDRVCTL_MODELIST: + cp = hi->data.modename; + while (hwp) { + if (hwp->hw_name) + cp += sprintf("%s:,", hwp->hw_name); + hwp = hwp->next; + } + while (mtp) { + if (mtp->name) + cp += sprintf(">%s,", mtp->name); + mtp = mtp->next; + } + while (mrp) { + if (mrp->name) + cp += sprintf("<%s,", mrp->name); + mrp = mrp->next; } + cp[-1] = '\0'; + if (copy_to_user(ifr->ifr_data, hi, sizeof(*hi))) + return -EFAULT; return 0; - + #ifdef SM_DEBUG case SMCTL_GETDEBUG: - bi.data.dbg.debug1 = sm->hdrv.ptt_keyed; - bi.data.dbg.debug2 = sm->debug_vals.last_intcnt; - bi.data.dbg.debug3 = sm->debug_vals.last_pllcorr; - break; -#endif /* SM_DEBUG */ - - case SMCTL_GETMIXER: - i = verify_area(VERIFY_WRITE, ifr->ifr_data, sizeof(bi)); - if (i) - return i; - i = 0; - bi.data.mix.sample_rate = ((struct modem_info *)sm->hdrv.ops)->samplerate; - bi.data.mix.bit_rate = sm->hdrv.ops->bitrate; - if (((struct modem_info *)sm->hdrv.ops)->sbcmix) { - switch (sm->modem.revhi) { - case 2: - bi.data.mix.mixer_type = SM_MIXER_CT1335; - break; - case 3: - bi.data.mix.mixer_type = SM_MIXER_CT1345; - break; - case 4: - bi.data.mix.mixer_type = SM_MIXER_CT1745; - break; - } - if (bi.data.mix.mixer_type != SM_MIXER_INVALID && - bi.data.mix.reg < 0x80) { - save_flags(flags); - cli(); - outb(bi.data.mix.reg, DSP_MIXER_ADDR(dev->base_addr)); - bi.data.mix.data = inb(DSP_MIXER_DATA(dev->base_addr)); - restore_flags(flags); - i = 1; - } - } else { - bi.data.mix.mixer_type = SM_MIXER_AD1848; - if ((0x20ff >> bi.data.mix.reg) & 1) { - bi.data.mix.data = read_codec(dev, bi.data.mix.reg); - i = 1; - } - } + if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) + return -EFAULT; + bi.data.dbg.int_rate = sm->debug_vals.last_intcnt; + bi.data.dbg.mod_cycles = sm->debug_vals.mod_cyc; + bi.data.dbg.demod_cycles = sm->debug_vals.demod_cyc; + bi.data.dbg.dma_residue = sm->debug_vals.dma_residue; + sm->debug_vals.mod_cyc = sm->debug_vals.demod_cyc = + sm->debug_vals.dma_residue = 0; if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) return -EFAULT; - return i; - - case SMCTL_SETMIXER: - if (!suser()) - return -EACCES; - if (((struct modem_info *)sm->hdrv.ops)->sbcmix) { - switch (sm->modem.revhi) { - case 2: - if (bi.data.mix.mixer_type != SM_MIXER_CT1335) - return -EINVAL; - break; - case 3: - if (bi.data.mix.mixer_type != SM_MIXER_CT1345) - return -EINVAL; - break; - case 4: - if (bi.data.mix.mixer_type != SM_MIXER_CT1745) - return -EINVAL; - break; - default: - return -ENODEV; - } - if (bi.data.mix.reg >= 0x80) - return -EACCES; - save_flags(flags); - cli(); - outb(bi.data.mix.reg, DSP_MIXER_ADDR(dev->base_addr)); - outb(bi.data.mix.data, DSP_MIXER_DATA(dev->base_addr)); - restore_flags(flags); - return 0; - } else { - if (bi.data.mix.mixer_type != SM_MIXER_AD1848) - return -EINVAL; - if (!((0x20ff >> bi.data.mix.reg) & 1)) - return -EACCES; - write_codec(dev, bi.data.mix.reg, bi.data.mix.data); - return 0; - } + return 0; +#endif /* SM_DEBUG */ case SMCTL_DIAGNOSE: + if (copy_from_user(&bi, ifr->ifr_data, sizeof(bi))) + return -EFAULT; newdiagmode = bi.data.diag.mode; newdiagflags = bi.data.diag.flags; - if (newdiagmode > SM_DIAGMODE_DEMOD) + if (newdiagmode > SM_DIAGMODE_CONSTELLATION) return -EINVAL; bi.data.diag.mode = sm->diag.mode; bi.data.diag.flags = sm->diag.flags; - bi.data.diag.samplesperbit = ((struct modem_info *)sm->hdrv.ops)->sperbit; + bi.data.diag.samplesperbit = sm->mode_rx->sperbit; if (sm->diag.mode != newdiagmode) { save_flags(flags); cli(); @@ -1943,19 +839,22 @@ sm->diag.flags = newdiagflags & ~SM_DIAGFLAG_VALID; sm->diag.mode = newdiagmode; restore_flags(flags); - break; + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; + } + if (sm->diag.ptr < 0 || sm->diag.mode == SM_DIAGMODE_OFF) { + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; } - if (sm->diag.ptr < 0 || sm->diag.mode == SM_DIAGMODE_OFF) - break; if (bi.data.diag.datalen > DIAGDATALEN) bi.data.diag.datalen = DIAGDATALEN; - if (sm->diag.ptr < bi.data.diag.datalen) - break; - i = verify_area(VERIFY_WRITE, bi.data.diag.data, - bi.data.diag.datalen * - sizeof(short)); - if (i) - return i; + if (sm->diag.ptr < bi.data.diag.datalen) { + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; + } if (copy_to_user(bi.data.diag.data, sm->diag.data, bi.data.diag.datalen * sizeof(short))) return -EFAULT; @@ -1966,13 +865,10 @@ sm->diag.flags = newdiagflags & ~SM_DIAGFLAG_VALID; sm->diag.mode = newdiagmode; restore_flags(flags); - break; - + if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) + return -EFAULT; + return 0; } - if (copy_to_user(ifr->ifr_data, &bi, sizeof(bi))) - return -EFAULT; - return 0; - } /* --------------------------------------------------------------------- */ @@ -1987,7 +883,7 @@ struct sm_state *sm; char ifname[HDLCDRV_IFNAMELEN]; - printk(KERN_INFO "sm: compiled %s %s\n", __TIME__, __DATE__); + printk(sm_drvinfo); /* * register net devices */ @@ -1995,33 +891,26 @@ struct device *dev = sm_device+i; sprintf(ifname, "sm%d", i); - if (sm_ports[i].hardware < SM_HARDWARE_INVALID || - sm_ports[i].hardware > SM_HARDWARE_WSSFDX || - sm_ports[i].mode < SM_MODE_INVALID || - sm_ports[i].mode > SM_MODE_FSK9600) + if (!sm_ports[i].mode) set_hw = 0; - if (set_hw) { - j = hdlcdrv_register_hdlcdrv(dev, &ops_tab[sm_ports[i].hardware] - [sm_ports[i].mode]->hops, - sizeof(struct sm_state), ifname, - sm_ports[i].iobase, - sm_ports[i].irq, - sm_ports[i].dma); - if (!j) { - sm = (struct sm_state *)dev->priv; - sm->hdrv.ptt_out.seriobase = sm_ports[i].seriobase; - sm->hdrv.ptt_out.pariobase = sm_ports[i].pariobase; - sm->hdrv.ptt_out.midiiobase = sm_ports[i].midiiobase; - } - } else - j = hdlcdrv_register_hdlcdrv(dev, &dummy_ops.hops, - sizeof(struct sm_state), - ifname, 0, 0, 0); - if (j) { - printk(KERN_WARNING "sm: cannot register net " - "device\n"); - } else + if (!set_hw) + sm_ports[i].iobase = sm_ports[i].irq = 0; + j = hdlcdrv_register_hdlcdrv(dev, &sm_ops, sizeof(struct sm_state), + ifname, sm_ports[i].iobase, + sm_ports[i].irq, sm_ports[i].dma); + if (!j) { + sm = (struct sm_state *)dev->priv; + sm->hdrv.ptt_out.dma2 = sm_ports[i].dma2; + sm->hdrv.ptt_out.seriobase = sm_ports[i].seriobase; + sm->hdrv.ptt_out.pariobase = sm_ports[i].pariobase; + sm->hdrv.ptt_out.midiiobase = sm_ports[i].midiiobase; + if (set_hw && sethw(dev, sm, sm_ports[i].mode)) + set_hw = 0; found++; + } else { + printk(KERN_WARNING "%s: cannot register net device\n", + sm_drvname); + } } if (!found) return -ENXIO; @@ -2035,36 +924,34 @@ /* * command line settable parameters */ -int hardware = SM_HARDWARE_INVALID; -int mode = SM_MODE_INVALID; +char *mode = NULL; int iobase = -1; int irq = -1; int dma = -1; -int seriobase = 0; -int pariobase = 0; -int midiiobase = 0; +int dma2 = -1; +int serio = 0; +int pario = 0; +int midiio = 0; int init_module(void) { - printk(KERN_INFO "sm: v0.1 (C) 1996 Thomas Sailer HB9JNX/AE4WA\n"); - - if (hardware != SM_HARDWARE_INVALID) { + if (mode) { if (iobase == -1) - iobase = (hardware == SM_HARDWARE_SBC) ? 0x220 : 0x530; + iobase = (!strncmp(mode, "sbc", 3)) ? 0x220 : 0x530; if (irq == -1) - irq = (hardware == SM_HARDWARE_SBC) ? 5 : 11; + irq = (!strncmp(mode, "sbc", 3)) ? 5 : 11; if (dma == -1) dma = 1; } - sm_ports[0].hardware = hardware; sm_ports[0].mode = mode; sm_ports[0].iobase = iobase; sm_ports[0].irq = irq; sm_ports[0].dma = dma; - sm_ports[0].seriobase = seriobase; - sm_ports[0].pariobase = pariobase; - sm_ports[0].midiiobase = midiiobase; - sm_ports[1].hardware = SM_HARDWARE_INVALID; + sm_ports[0].dma2 = dma2; + sm_ports[0].seriobase = serio; + sm_ports[0].pariobase = pario; + sm_ports[0].midiiobase = midiio; + sm_ports[1].mode = NULL; return sm_init(); } @@ -2094,27 +981,32 @@ #else /* MODULE */ /* --------------------------------------------------------------------- */ /* - * format: sm=hw,mode,io,irq,dma,serio,pario[,hw,mode,io,irq,dma,serio,pario] - * hw=0: SBC, hw=1: WSS; mode=0: AFSK1200, mode=1: FSK9600 + * format: sm=io,irq,dma[,dma2[,serio[,pario]]],mode + * mode: hw:modem + * hw: sbc, wss, wssfdx + * modem: afsk1200, fsk9600 */ void sm_setup(char *str, int *ints) { int i; - for (i = 0; i < NR_PORTS; i++) - if (ints[0] >= 8*(i+1)) { - sm_ports[i].hardware = ints[8*i+1]; - sm_ports[i].mode = ints[8*i+2]; - sm_ports[i].iobase = ints[8*i+3]; - sm_ports[i].irq = ints[8*i+4]; - sm_ports[i].dma = ints[8*i+5]; - sm_ports[i].seriobase = ints[8*i+6]; - sm_ports[i].pariobase = ints[8*i+7]; - sm_ports[i].midiiobase = ints[8*i+8]; - } else - sm_ports[i].hardware = SM_HARDWARE_INVALID; - + for (i = 0; (i < NR_PORTS) && (sm_ports[i].mode); i++); + if ((i >= NR_PORTS) || (ints[0] < 4)) { + printk(KERN_INFO "%s: too many or invalid interface " + "specifications\n", sm_drvname); + return; + } + sm_ports[i].mode = str; + sm_ports[i].iobase = ints[1]; + sm_ports[i].irq = ints[2]; + sm_ports[i].dma = ints[3]; + sm_ports[i].dma2 = (ints[0] >= 5) ? ints[4] : 0; + sm_ports[i].seriobase = (ints[0] >= 6) ? ints[5] : 0; + sm_ports[i].pariobase = (ints[0] >= 7) ? ints[6] : 0; + sm_ports[i].midiiobase = (ints[0] >= 8) ? ints[7] : 0; + if (i < NR_PORTS-1) + sm_ports[i+1].mode = NULL; } #endif /* MODULE */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/tulip.c linux/drivers/net/tulip.c --- v2.1.16/linux/drivers/net/tulip.c Fri Nov 22 18:28:18 1996 +++ linux/drivers/net/tulip.c Fri Dec 20 10:48:16 1996 @@ -12,13 +12,16 @@ The author may be reached as becker@CESDIS.gsfc.nasa.gov, or C/O Center of Excellence in Space Data and Information Sciences Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771 + + Subscribe to linux-tulip@cesdis.gsfc.nasa.gov and linux-tulip-bugs@cesdis.gsfc.nasa.gov + for late breaking news and exciting develovements. */ static char *version = "tulip.c:v0.10 8/11/95 becker@cesdis.gsfc.nasa.gov\n" " +0.72 4/17/96 " "http://www.dsl.tutics.tut.ac.jp/~linux/tulip\n" -" +0.01 10/24/96 mjacob@feral.com (2.1.7)\n"; +" +0.02 12/15/96 mjacob@feral.com (2.0.27)\n"; /* A few user-configurable values. */ @@ -402,6 +405,8 @@ 0x0000f400, PCI_DEVICE_ID_DEC_TULIP_FAST, "LA100PCI", 0}, {cogent21140_select, generic21140_fail, 0x00009200, PCI_DEVICE_ID_DEC_TULIP_FAST, "cogent_em110", 0}, + {generic21040_select, generic21040_fail, + 0x00009200, PCI_DEVICE_ID_DEC_TULIP, "cogent_em96x", 1}, {generic21140_select, generic21140_fail, 0x0000f800, PCI_DEVICE_ID_DEC_TULIP_FAST, "DE500", 0}, {generic21041_select, generic21041_fail, @@ -681,6 +686,7 @@ { struct tulip_private *tp = (struct tulip_private *)dev->priv; int ioaddr = dev->base_addr; + int i; /* Reset the chip, holding bit 0 set at least 10 PCI cycles. */ tio_write(tio_read(CSR0)|TBMOD_RESET, CSR0); @@ -717,7 +723,7 @@ tp->tx_ring[0].buffer1 = virt_to_bus(tp->setup_frame); tp->tx_ring[0].buffer2 = 0; tp->tx_ring[0].status = TRING_OWN; - + barrier(); tp->cur_tx++, tp->dirty_tx++; } @@ -727,16 +733,38 @@ dev->tbusy = 0; dev->interrupt = 0; dev->start = 1; - - if (tp->port_select) tp->port_select(dev); - + /* + * process setup frame completely prior to fiddling with media. + */ + tio_write((tio_read(CSR6) & ~TCMOD_PROMISC) | TCMOD_TxSTART, CSR6); + tio_write(TPOLL_TRIGGER, CSR1); + sti(); + for (i = 0; i < 1000; i++) { + if (tp->tx_ring[0].status >= 0) { + break; + } + udelay(1000); + } + if (i == 500) { + printk("%s: initial setup frame didn't complete.\n", dev->name); + dev->start = 0; + dev->tbusy = 1; + tio_write(TINTR_DISABLE, CSR7); + tio_write(tio_read(CSR6) & ~(TCMOD_TRxSTART), CSR6); + tio_write(TSIAC_CONFIG, CSR13); + tio_write(0, CSR13); + free_irq(dev->irq, dev); + return (-EIO); + } + /* + * Whack the chip to stop it and *then* do initial media setup. + */ + tio_write((tio_read(CSR6) & ~(TCMOD_PROMISC|TCMOD_TxSTART)), CSR6); + if (tp->port_select) + tp->port_select(dev); /* Start the chip's Tx and Rx processes. */ tio_write(tio_read(CSR6) | TCMOD_TRxSTART | (tp->full_duplex ? TCMOD_FULLDUPLEX:0), CSR6); - - /* Trigger an immediate transmit demand to process the setup frame. */ - tio_write(TPOLL_TRIGGER, CSR1); - /* Enable interrupts by setting the interrupt mask. */ tio_write(TINTR_ENABLE, CSR7); @@ -777,7 +805,8 @@ { struct tulip_private *tp = (struct tulip_private *)dev->priv; int ioaddr = dev->base_addr; - int entry; + int entry, len; + unsigned long daddr; /* Transmitter timeout, serious problems. */ if (dev->tbusy || (tp->port_fail && tp->port_fail(dev))) { @@ -820,7 +849,7 @@ return(0); } - if (skb == NULL || skb->len <= 0) { + if (skb == NULL || (skb != (struct sk_buff *) -1 && skb->len <= 0)) { printk("%s: Obsolete driver layer request made: skbuff==NULL.\n", dev->name); dev_tint(dev); @@ -842,12 +871,24 @@ entry = tp->cur_tx % TX_RING_SIZE; tp->tx_full = 1; + /* + * If skb is == -1, then this is a funky setup_frame redo. + */ + if (skb == (struct sk_buff *) -1) { + daddr = virt_to_bus((char *)tp->setup_frame); + len = 192; + skb = NULL; + } else { + daddr = virt_to_bus(skb->data); + len = skb->len; + } tp->tx_skbuff[entry] = skb; - tp->tx_ring[entry].length = skb->len | + tp->tx_ring[entry].length = len | (entry == TX_RING_SIZE-1 ? 0xe2000000 : 0xe0000000); - tp->tx_ring[entry].buffer1 = virt_to_bus(skb->data); + tp->tx_ring[entry].buffer1 = daddr; tp->tx_ring[entry].buffer2 = 0; tp->tx_ring[entry].status = TRING_OWN; /* Pass ownership to the chip. */ + barrier(); tp->cur_tx++; @@ -920,7 +961,8 @@ } /* Free the original skb. */ - dev_kfree_skb(lp->tx_skbuff[entry], FREE_WRITE); + if (lp->tx_skbuff[entry] != NULL) + dev_kfree_skb(lp->tx_skbuff[entry], FREE_WRITE); dirty_tx++; } @@ -1138,28 +1180,8 @@ *setup_frm++ = eaddrs[2]; } while (++i < 15); -#ifndef __alpha__ /* Now add this frame to the Tx list. */ - { - unsigned long flags; - unsigned int entry; - - save_flags(flags); cli(); - entry = tp->cur_tx++ % TX_RING_SIZE; - tp->dirty_tx++; - restore_flags(flags); - - tp->tx_skbuff[entry] = 0; - /* Put the setup frame on the Tx list. */ - tp->tx_ring[entry].length = 192 | - (entry == TX_RING_SIZE-1 ? 0x0a000000 : 0x08000000); - tp->tx_ring[entry].buffer1 = virt_to_bus((char *)tp->setup_frame); - tp->tx_ring[entry].buffer2 = 0; - tp->tx_ring[entry].status = TRING_OWN; - /* Trigger an immediate transmit demand. */ - tio_write(TPOLL_TRIGGER, CSR1); - } -#endif + tulip_start_xmit((struct sk_buff *) -1, dev); } } @@ -1299,7 +1321,7 @@ static struct device *tulip_head=NULL; u_char pci_bus, pci_device_fn, pci_latency, pci_irq; u_int pci_ioaddr; - u_short pci_command; + u_short pci_command, vendor_id, device_id; u_int pci_chips[] = { PCI_DEVICE_ID_DEC_TULIP, PCI_DEVICE_ID_DEC_TULIP_FAST, @@ -1307,67 +1329,83 @@ PCI_DEVICE_ID_NONE }; int num=0, cno; - int pci_index; + static int pci_index = 0; if (!pcibios_present()) return(-ENODEV); - for (pci_index = 0; pci_index < 0xff; pci_index++) { - /* Search for the PCI_DEVICE_ID_DEV_TULIP* chips */ - for (cno = 0; pci_chips[cno] != PCI_DEVICE_ID_NONE; cno++) { - if (pcibios_find_device(PCI_VENDOR_ID_DEC, - pci_chips[cno], - pci_index, &pci_bus, - &pci_device_fn) == 0) { - - /* get IO address */ - pcibios_read_config_dword(pci_bus, pci_device_fn, - PCI_BASE_ADDRESS_0, - &pci_ioaddr); - /* Remove I/O space marker in bit 0. */ - pci_ioaddr &= ~3; - /* get IRQ */ - pcibios_read_config_byte(pci_bus, pci_device_fn, PCI_INTERRUPT_LINE, &pci_irq); - dev = init_etherdev(NULL, - ROUND_UP(sizeof(struct device) + - sizeof (struct tulip_private) + - ETHNAMSIZ, 8)); - - if (dev == NULL) break; - if (!tulip_head) { - printk(version); - tulip_head = dev; - } + for (; pci_index < 0xff; pci_index++) { + if (pcibios_find_class(PCI_CLASS_NETWORK_ETHERNET << 8, pci_index, + &pci_bus, &pci_device_fn) != PCIBIOS_SUCCESSFUL) + break; - /* Get and check the bus-master and latency values. */ - pcibios_read_config_word(pci_bus, pci_device_fn, - PCI_COMMAND, &pci_command); - if ( ! (pci_command & PCI_COMMAND_MASTER)) { - printk(" PCI Master Bit has not been set!" - " Setting...\n"); - pci_command |= PCI_COMMAND_MASTER; - pcibios_write_config_word(pci_bus, pci_device_fn, - PCI_COMMAND, pci_command); - } - pcibios_read_config_byte(pci_bus, pci_device_fn, - PCI_LATENCY_TIMER, - &pci_latency); - if (pci_latency < 10) { - printk(" PCI latency timer (CFLT) is" - " unreasonably low at %d." - " Setting to 100 clocks.\n", pci_latency); - pcibios_write_config_byte(pci_bus, pci_device_fn, - PCI_LATENCY_TIMER, 100); - } - if (tulip_hwinit(dev, pci_ioaddr, pci_irq, - pci_chips[cno]) < 0) { - continue; - } - num++; + /* get vendor id */ + pcibios_read_config_word(pci_bus, pci_device_fn, PCI_VENDOR_ID, + &vendor_id); + /* get IRQ */ + pcibios_read_config_byte(pci_bus, pci_device_fn, PCI_INTERRUPT_LINE, + &pci_irq); + + /* get device id */ + pcibios_read_config_word(pci_bus, pci_device_fn, PCI_DEVICE_ID, + &device_id); + + /* get IO address */ + pcibios_read_config_dword(pci_bus, pci_device_fn, PCI_BASE_ADDRESS_0, + &pci_ioaddr); + + /* Remove I/O space marker in bit 0. */ + pci_ioaddr &= ~3; + if (vendor_id != PCI_VENDOR_ID_DEC) + continue; + + for (cno = 0; pci_chips[cno] != PCI_DEVICE_ID_NONE; cno++) + if (device_id == pci_chips[cno]) + break; + if (pci_chips[cno] == PCI_DEVICE_ID_NONE) { + printk("Unknown Digital PCI ethernet chip type %4.4x detected:" + " not configured.\n", device_id); + continue; + } + dev = init_etherdev(NULL, ROUND_UP(sizeof(struct device) + + sizeof (struct tulip_private) + + ETHNAMSIZ, 8)); + if (dev == NULL) + break; + + if (!tulip_head) { + printk(version); + tulip_head = dev; + } + + /* Get and check the bus-master and latency values. */ + pcibios_read_config_word(pci_bus, pci_device_fn, PCI_COMMAND, + &pci_command); + if ((pci_command & PCI_COMMAND_MASTER) == 0) { + printk(" PCI Master Bit has not been set!" + " Setting...\n"); + pci_command |= PCI_COMMAND_MASTER; + pcibios_write_config_word(pci_bus, pci_device_fn, PCI_COMMAND, + pci_command); + } + + pcibios_read_config_byte(pci_bus, pci_device_fn, PCI_LATENCY_TIMER, + &pci_latency); + + if (pci_latency < 10) { + printk(" PCI latency timer (CFLT) is" + " unreasonably low at %d." + " Setting to 100 clocks.\n", pci_latency); + pcibios_write_config_byte(pci_bus, pci_device_fn, + PCI_LATENCY_TIMER, 100); + } + + if (tulip_hwinit(dev, pci_ioaddr, pci_irq, pci_chips[cno]) < 0) { + continue; + } + num++; #ifdef TULIP_MAX_CARDS - if (num >= TULIP_MAX_CARDS) return(0); + if (num >= TULIP_MAX_CARDS) return(0); #endif - } - } } return(num > 0 ? 0: -ENODEV); } diff -u --recursive --new-file v2.1.16/linux/drivers/net/wavelan.c linux/drivers/net/wavelan.c --- v2.1.16/linux/drivers/net/wavelan.c Thu Dec 12 19:37:06 1996 +++ linux/drivers/net/wavelan.c Thu Dec 19 17:10:26 1996 @@ -1518,6 +1518,8 @@ return 0; } +#ifdef WIRELESS_EXT /* If wireless extension exist in the kernel */ + /*------------------------------------------------------------------*/ /* * Frequency setting (for hardware able of it) @@ -1526,61 +1528,64 @@ */ static inline int wv_set_frequency(u_short ioaddr, /* i/o port of the card */ - float frequency) + iw_freq * frequency) { - u_short table[10]; /* Authorized frequency table */ const int BAND_NUM = 10; /* Number of bands */ long freq = 0L; /* offset to 2.4 GHz in .5 MHz */ #ifdef DEBUG_IOCTL_INFO int i; #endif - /* Read the frequency table */ - fee_read(ioaddr, 0x71 /* frequency table */, - table, 10); - -#ifdef DEBUG_IOCTL_INFO - printk(KERN_DEBUG "Frequency table :"); - for(i = 0; i < 10; i++) - { - printk(" %04X", - table[i]); - } - printk("\n"); -#endif - /* Setting by frequency */ /* Theoritically, you may set any frequency between * the two limits with a 0.5 MHz precision. In practice, * I don't want you to have trouble with local * regulations... */ - if((frequency >= 2.412e9) && (frequency <= 2.487e9)) + if((frequency->e == 1) && + (frequency->m >= (int) 2.412e8) && (frequency->m <= (int) 2.487e8)) { - /* Warning : rounding problems... */ - freq = (((long) ((frequency / 1e5) + .4)) - 24000L) / 5; - - /* Look in the table if the frequency is allowed */ - if(!(table[9 - ((freq - 24) / 16)] & - (1 << ((freq - 24) % 16)))) - return -EINVAL; /* not allowed */ + freq = ((frequency->m / 10000) - 24000L) / 5; } /* Setting by channel (same as wfreqsel) */ /* Warning : each channel is 22MHz wide, so some of the channels * will interfere... */ - if((frequency >= 0.0) && (frequency < (float) BAND_NUM)) + if((frequency->e == 0) && + (frequency->m >= 0) && (frequency->m < BAND_NUM)) { /* frequency in 1/4 of MHz (as read in the offset register) */ short bands[] = { 0x30, 0x58, 0x64, 0x7A, 0x80, 0xA8, 0xD0, 0xF0, 0xF8, 0x150 }; /* Get frequency offset */ - freq = bands[((int) frequency)] >> 1; + freq = bands[frequency->m] >> 1; + } + + /* Verify if the frequency is allowed */ + if(freq != 0L) + { + u_short table[10]; /* Authorized frequency table */ + + /* Read the frequency table */ + fee_read(ioaddr, 0x71 /* frequency table */, + table, 10); + +#ifdef DEBUG_IOCTL_INFO + printk(KERN_DEBUG "Frequency table :"); + for(i = 0; i < 10; i++) + { + printk(" %04X", + table[i]); + } + printk("\n"); +#endif /* Look in the table if the frequency is allowed */ if(!(table[9 - ((freq - 24) / 16)] & (1 << ((freq - 24) % 16)))) return -EINVAL; /* not allowed */ } + else + return -EINVAL; /* If we get a usable frequency */ if(freq != 0L) @@ -1717,17 +1722,13 @@ return -EINVAL; /* Bah, never get there... */ } -#ifdef WIRELESS_EXT /* If wireless extension exist in the kernel */ - /*------------------------------------------------------------------*/ /* - * Frequency setting (for hardware able of it) - * It's a bit complicated and you don't really want to look into it... - * (called in wavelan_ioctl) + * Give the list of available frequencies */ static inline int wv_frequency_list(u_short ioaddr, /* i/o port of the card */ - float * list, /* List of frequency to fill */ + iw_freq * list, /* List of frequency to fill */ int max) /* Maximum number of frequencies */ { u_short table[10]; /* Authorized frequency table */ @@ -1745,7 +1746,8 @@ if(table[9 - (freq / 16)] & (1 << (freq % 16))) { /* put in the list */ - list[i++] = (((freq + 24) * 5) + 24000L) * 1e5; + list[i].m = (((freq + 24) * 5) + 24000L) * 10000; + list[i++].e = 1; /* Check number */ if(i >= max) @@ -1893,7 +1895,7 @@ /* Attempt to recognise 2.00 cards (2.4 GHz frequency selectable) */ if(!(mmc_in(ioaddr, mmroff(0, mmr_fee_status)) & (MMR_FEE_STATUS_DWLD | MMR_FEE_STATUS_BUSY))) - ret = wv_set_frequency(ioaddr, wrq->u.freq); + ret = wv_set_frequency(ioaddr, &(wrq->u.freq)); else ret = -EOPNOTSUPP; break; @@ -1909,17 +1911,21 @@ /* Ask the EEprom to read the frequency from the first area */ fee_read(ioaddr, 0x00 /* 1st area - frequency... */, &freq, 1); - wrq->u.freq = ((freq >> 5) * 5 + 24000L) * 1e5; + wrq->u.freq.m = ((freq >> 5) * 5 + 24000L) * 10000; + wrq->u.freq.e = 1; } else { - float bands[] = { 915e6, 2.425e9, 2.46e9, 2.484e9, 2.4305e9 }; + int bands[] = { 915e6, 2.425e8, 2.46e8, 2.484e8, 2.4305e8 }; psa_read(ioaddr, lp->hacr, (char *)&psa.psa_subband - (char *)&psa, (unsigned char *)&psa.psa_subband, 1); if(psa.psa_subband <= 4) - wrq->u.freq = bands[psa.psa_subband]; + { + wrq->u.freq.m = bands[psa.psa_subband]; + wrq->u.freq.e = (psa.psa_subband != 0); + } else ret = -EOPNOTSUPP; } @@ -2233,7 +2239,7 @@ ((m.mmr_signal_lvl & MMR_SIGNAL_LVL_VALID) >> 6) | ((m.mmr_silence_lvl & MMR_SILENCE_LVL_VALID) >> 5)); wstats->discard.nwid += (m.mmr_wrong_nwid_h << 8) | m.mmr_wrong_nwid_l; - wstats->discard.crypt = 0L; + wstats->discard.code = 0L; wstats->discard.misc = 0L; /* ReEnable interrupts & restore flags */ @@ -2791,6 +2797,9 @@ psa.psa_thr_pre_set = 0x04; psa.psa_quality_thr = 0x03; + /* It is configured */ + psa.psa_conf_status |= 1; + #ifdef USE_PSA_CONFIG /* Write the psa */ psa_write(ioaddr, lp->hacr, (char *)psa.psa_nwid - (char *)&psa, @@ -2799,6 +2808,8 @@ (unsigned char *)&psa.psa_thr_pre_set, 1); psa_write(ioaddr, lp->hacr, (char *)&psa.psa_quality_thr - (char *)&psa, (unsigned char *)&psa.psa_quality_thr, 1); + psa_write(ioaddr, lp->hacr, (char *)&psa.psa_conf_status - (char *)&psa, + (unsigned char *)&psa.psa_conf_status, 1); #endif } diff -u --recursive --new-file v2.1.16/linux/drivers/net/wavelan.h linux/drivers/net/wavelan.h --- v2.1.16/linux/drivers/net/wavelan.h Thu Dec 12 19:37:06 1996 +++ linux/drivers/net/wavelan.h Thu Dec 19 17:10:25 1996 @@ -19,16 +19,16 @@ #ifndef _WAVELAN_H #define _WAVELAN_H -/* The detection of the wavelan card is made by reading the MAC address - * from the card and checking it. If you have a non AT&T product (OEM, - * like DEC RoamAbout, or Digital Ocean, Epson, ...), you must modify this - * part to accomodate your hardware... +/* The detection of the wavelan card is made by reading the MAC + * address from the card and checking it. If you have a non AT&T + * product (OEM, like DEC RoamAbout, or Digital Ocean, Epson, ...), + * you might need to modify this part to accomodate your hardware... */ const char MAC_ADDRESSES[][3] = { - { 0x08, 0x00, 0x0E }, /* AT&T Wavelan (standard) */ + { 0x08, 0x00, 0x0E }, /* AT&T Wavelan (standard) & DEC RoamAbout */ { 0x08, 0x00, 0x6A }, /* AT&T Wavelan (alternate) */ - /* Add your card here */ + /* Add your card here and send me the patch ! */ }; #define WAVELAN_ADDR_SIZE 6 /* Size of a MAC address */ diff -u --recursive --new-file v2.1.16/linux/drivers/net/wavelan.p.h linux/drivers/net/wavelan.p.h --- v2.1.16/linux/drivers/net/wavelan.p.h Thu Dec 12 19:37:06 1996 +++ linux/drivers/net/wavelan.p.h Thu Dec 19 17:10:26 1996 @@ -203,8 +203,8 @@ /* * I proudly present : * - * Changes mades in first release : - * ------------------------------ + * Changes mades in first pre-release : + * ---------------------------------- * - Reorganisation of the code, function name change * - Creation of private header (wavelan.p.h) * - Reorganised debug messages @@ -231,31 +231,37 @@ * - man page * - Lot of others minor details & cleanups * - * Changes made in second release : - * ------------------------------ + * Changes made in second pre-release : + * ---------------------------------- * - Cleanup init code (probe & module init) * - Better multi device support (module) * - name assignement (module) * - * Changes made in third release : - * ----------------------------- + * Changes made in third pre-release : + * --------------------------------- * - Be more conservative on timers * - Preliminary support for multicast (I still lack some details...) * - * Changes made in fourth release : - * ---------------------------- + * Changes made in fourth pre-release : + * ---------------------------------- * - multicast (revisited and finished) * - Avoid reset in set_multicast_list (a really big hack) * if somebody could apply this code for other i82586 based driver... * - Share on board memory 75% RU / 25% CU (instead of 50/50) * - * Changes made in this release : - * ---------------------------- + * Changes made for release in 2.1.15 : + * ---------------------------------- * - Change the detection code for multi manufacturer code support * + * Changes made for release in 2.1.17 : + * ---------------------------------- + * - Update to wireless extensions changes + * - Silly bug in card initial configuration (psa_conf_status) + * * Wishes & dreams : * --------------- - * - encryption stuff + * - Encryption stuff + * - Roaming */ /***************************** INCLUDES *****************************/ @@ -285,7 +291,7 @@ #include #include -/*#include */ /* Wireless extensions */ +#include /* Wireless extensions */ /* Wavelan declarations */ #include "i82586.h" @@ -364,6 +370,7 @@ typedef struct enet_statistics en_stats; typedef struct iw_statistics iw_stats; typedef struct iw_quality iw_qual; +typedef struct iw_freq iw_freq; typedef struct net_local net_local; typedef struct timer_list timer_list; diff -u --recursive --new-file v2.1.16/linux/drivers/sbus/audio/amd7930.h linux/drivers/sbus/audio/amd7930.h --- v2.1.16/linux/drivers/sbus/audio/amd7930.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/sbus/audio/amd7930.h Thu Dec 19 11:03:35 1996 @@ -0,0 +1,148 @@ +/* + * drivers/sbus/audio/amd7930.h + * + * Copyright (C) 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu) + * + * Definitions for the AMD79C30 Digital Subscriber Controller which is + * used as an audio chip in sun4c architecture machines. The + * information in this file is based on Advanced Micro Devices + * Publication 09893, Rev G, Amendment /0, Final (a.k.a. the data + * sheet). + */ + +#ifndef _AMD7930_H_ +#define _AMD7930_H_ + +#include + +/* Register interface presented to the CPU by the amd7930. */ + +struct amd7930 +{ + __volatile__ __u8 cr; /* Command Register (W) */ +#define ir cr /* Interrupt Register (R) */ + __volatile__ __u8 dr; /* Data Register (R/W) */ + __volatile__ __u8 dsr1; /* D-channel Status Register 1 (R) */ + __volatile__ __u8 der; /* D-channel Error Register (R) */ + __volatile__ __u8 dctb; /* D-channel Transmit Buffer (W) */ +#define dcrb dctb /* D-channel Receive Buffer (R) */ + __volatile__ __u8 bbtb; /* Bb-channel Transmit Buffer (W) */ +#define bbrb bbtb /* Bb-channel Receive Buffer (R) */ + __volatile__ __u8 bctb; /* Bc-channel Transmit Buffer (W) */ +#define bcrb bctb /* Bc-channel Receive Buffer (R) */ + __volatile__ __u8 dsr2; /* D-channel Status Register 2 (R) */ +}; + +/* The amd7930 has "indirect registers" which are accessed by writing + * the register number into the Command Register and then reading or + * writing values from the Data Register as appropriate. We define the + * AMR_* macros to be the indirect register numbers and AM_* macros to + * be bits in whatever register is referred to. + */ + +/* Initialization */ +#define AMR_INIT 0x21 +#define AM_INIT_ACTIVE 0x01 +#define AM_INIT_DATAONLY 0x02 +#define AM_INIT_POWERDOWN 0x03 +#define AM_INIT_DISABLE_INTS 0x04 +#define AMR_INIT2 0x20 +#define AM_INIT2_ENABLE_POWERDOWN 0x20 +#define AM_INIT2_ENABLE_MULTIFRAME 0x10 + +/* Line Interface Unit */ +#define AMR_LIU_LSR 0xA1 +#define AMR_LIU_LPR 0xA2 +#define AMR_LIU_LMR1 0xA3 +#define AMR_LIU_LMR2 0xA4 +#define AMR_LIU_2_4 0xA5 +#define AMR_LIU_MF 0xA6 +#define AMR_LIU_MFSB 0xA7 +#define AMR_LIU_MFQB 0xA8 + +/* Multiplexor */ +#define AMR_MUX_MCR1 0x41 +#define AMR_MUX_MCR2 0x42 +#define AMR_MUX_MCR3 0x43 +#define AM_MUX_CHANNEL_B1 0x01 +#define AM_MUX_CHANNEL_B2 0x02 +#define AM_MUX_CHANNEL_Ba 0x03 +#define AM_MUX_CHANNEL_Bb 0x04 +#define AM_MUX_CHANNEL_Bc 0x05 +#define AM_MUX_CHANNEL_Bd 0x06 +#define AM_MUX_CHANNEL_Be 0x07 +#define AM_MUX_CHANNEL_Bf 0x08 +#define AMR_MUX_MCR4 0x44 +#define AM_MUX_MCR4_ENABLE_INTS 0x08 +#define AM_MUX_MCR4_REVERSE_Bb 0x10 +#define AM_MUX_MCR4_REVERSE_Bc 0x20 +#define AMR_MUX_1_4 0x45 + +/* Main Audio Processor */ +#define AMR_MAP_X 0x61 +#define AMR_MAP_R 0x62 +#define AMR_MAP_GX 0x63 +#define AMR_MAP_GR 0x64 +#define AMR_MAP_GER 0x65 +#define AMR_MAP_STG 0x66 +#define AMR_MAP_FTGR_1_2 0x67 +#define AMR_MAP_ATGR_1_2 0x68 +#define AMR_MAP_MMR1 0x69 +#define AM_MAP_MMR1_ALAW 0x01 +#define AM_MAP_MMR1_GX 0x02 +#define AM_MAP_MMR1_GR 0x04 +#define AM_MAP_MMR1_GER 0x08 +#define AM_MAP_MMR1_X 0x10 +#define AM_MAP_MMR1_R 0x20 +#define AM_MAP_MMR1_STG 0x40 +#define AM_MAP_MMR1_LOOPBACK 0x80 +#define AMR_MAP_MMR2 0x6A +#define AM_MAP_MMR2_AINB 0x01 +#define AM_MAP_MMR2_LS 0x02 +#define AM_MAP_MMR2_ENABLE_DTMF 0x04 +#define AM_MAP_MMR2_ENABLE_TONEGEN 0x08 +#define AM_MAP_MMR2_ENABLE_TONERING 0x10 +#define AM_MAP_MMR2_DISABLE_HIGHPASS 0x20 +#define AM_MAP_MMR2_DISABLE_AUTOZERO 0x40 +#define AMR_MAP_1_10 0x6B +#define AMR_MAP_MMR3 0x6C +#define AMR_MAP_STRA 0x6D +#define AMR_MAP_STRF 0x6E +#define AMR_MAP_PEAKX 0x70 +#define AMR_MAP_PEAKR 0x71 +#define AMR_MAP_15_16 0x72 + +/* Data Link Controller */ +#define AMR_DLC_FRAR_1_2_3 0x81 +#define AMR_DLC_SRAR_1_2_3 0x82 +#define AMR_DLC_TAR 0x83 +#define AMR_DLC_DRLR 0x84 +#define AMR_DLC_DTCR 0x85 +#define AMR_DLC_DMR1 0x86 +#define AMR_DLC_DMR2 0x87 +#define AMR_DLC_1_7 0x88 +#define AMR_DLC_DRCR 0x89 +#define AMR_DLC_RNGR1 0x8A +#define AMR_DLC_RNGR2 0x8B +#define AMR_DLC_FRAR4 0x8C +#define AMR_DLC_SRAR4 0x8D +#define AMR_DLC_DMR3 0x8E +#define AMR_DLC_DMR4 0x8F +#define AMR_DLC_12_15 0x90 +#define AMR_DLC_ASR 0x91 +#define AMR_DLC_EFCR 0x92 + +/* Peripheral Port */ +#define AMR_PP_PPCR1 0xC0 +#define AMR_PP_PPSR 0xC1 +#define AMR_PP_PPIER 0xC2 +#define AMR_PP_MTDR 0xC3 +#define AMR_PP_MRDR 0xC3 +#define AMR_PP_CITDR0 0xC4 +#define AMR_PP_CIRDR0 0xC4 +#define AMR_PP_CITDR1 0xC5 +#define AMR_PP_CIRDR1 0xC5 +#define AMR_PP_PPCR2 0xC8 +#define AMR_PP_PPCR3 0xC9 + +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/sbus/audio/bounce.c linux/drivers/sbus/audio/bounce.c --- v2.1.16/linux/drivers/sbus/audio/bounce.c Thu Jan 1 02:00:00 1970 +++ linux/drivers/sbus/audio/bounce.c Thu Dec 19 11:03:35 1996 @@ -0,0 +1,150 @@ +/* + * drivers/sbus/audio/bounce.c + * + * Copyright (C) 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu) + * + * Simple bounce buffer allocator used for allocating pages for use in + * DMA and pseudo-DMA (byte-by-byte using an interrupt) + * applications. For safety, we do most operations in bottom half so + * we have some guarnatee of atomicity. System calls can do + * "start_bh_atomic" to get some atomicity. + */ + +#include +#include +#include "bounce.h" + + +static struct bounce_page *pages[NR_BOUNCE_PAGES]; +static struct bounce_page *free_list_head, *free_list_tail; + +/* Add a bounce page to the free list. */ +static void add_bounce_page(struct bounce_page *page) +{ + unsigned long flags; + +#ifdef DEBUG_BOUNCE + if (page->next) { + printk(KERN_DEBUG "add_bounce_page: page already on list from %p\n", + __builtin_return_address(0)); + return; + } +#endif + + save_flags(flags); + cli(); + + /* Case #1: Nothing on the list. */ + if (!free_list_tail) { +#ifdef DEBUG_BOUNCE + if (free_list_head) { + printk(KERN_DEBUG "add_bounce_page: inconsistent free list from %p\n", + __builtin_return_address(0)); + restore_flags(flags); + return; + } +#endif + free_list_head = free_list_tail = page; + } else { + free_list_tail->next = page; + page->next = NULL; + free_list_tail = page; + } + + restore_flags(flags); +} + +/* Remove a bounce page from the free list. */ +static struct bounce_page *next_bounce_page(void) +{ + struct bounce_page *p; + unsigned long flags; + + save_flags(flags); + cli(); + + /* If the free list is empty, return empty handed. */ + if (!free_list_head) { + restore_flags(flags); + return NULL; + } + + /* Remove the next available bounce page from the free list. */ + p = free_list_head; + + /* Update the free list pointers. */ + free_list_head = free_list_head->next; + if (!free_list_head) + free_list_tail = NULL; + + /* Return the page that we found. */ + p->next = NULL; + restore_flags(flags); + return p; +} + +/* Allocate the bounce buffers and the page lists. */ +int bounce_init(void) +{ + register int i; + + /* Allocate space for all of the bounce pages. */ + for (i = 0; i < NR_BOUNCE_PAGES; i++) { + pages[i] = __get_free_page(GFP_KERNEL); + if (!pages[i]) { + register int j; + for (j = 0; j < i; j++) free_page(pages[i]); + return -ENOMEM; + } + } + + /* Place all of the pages onto the free list. */ + for (i = 0; i < NR_BOUNCE_PAGES - 1; i++) + pages[i]->next = pages[i+1]; + pages[NR_BOUNCE_BUFFERS-1]->next = NULL; + + /* Setup pointers to the free list head and tail. */ + free_list_head = pages[0]; + free_list_tail = pages[NR_BOUNCE_BUFFERS-1]; + return 0; +} + +/* Allocate a bounce buffer to a process. */ +struct bounce_page * get_bounce_page(int timeout) +{ + struct bounce_page *p; + int tries; + + do { + /* Do not allow interrupts to muck with the lists. */ + start_bh_atomic(); + + /* Check to see if a bounce page is available. */ + p = next_bounce_page(); + if (p) { + end_bh_atomic(); + return p; + } + + /* No bounce page was available. Sleep and wait for one. */ + end_bh_atomic(); + current->state = TASK_INTERRUPTIBLE; + current->timeout = jiffies + HZ / 10; + schedule(); + + /* If we received a signal, then bail out. */ + if (current->signal & ~current->blocked) + return NULL; + + } while (jiffies <= timeout); + + /* We did not find anything before the timeout. */ + return NULL; +} + +/* Return a bounce buffer to the free list. */ +void put_bounce_page(struct bounce_page *page) +{ + add_bounce_page(page); +} + diff -u --recursive --new-file v2.1.16/linux/drivers/sbus/audio/bounce.h linux/drivers/sbus/audio/bounce.h --- v2.1.16/linux/drivers/sbus/audio/bounce.h Thu Jan 1 02:00:00 1970 +++ linux/drivers/sbus/audio/bounce.h Thu Dec 19 11:03:35 1996 @@ -0,0 +1,23 @@ +#ifndef _BOUNCE_H_ +#define _BOUNCE_H_ + +#include + +/* Each page that is used for a bounce buffer has the following header + * at the top which points to the next page in the free or in-use list + * and provides some other stats for drivers. + */ + +#define NR_BOUNCE_PAGES 32 + +struct bounce_page +{ + struct bounce_page *next; + __u32 size; + __u32 remaining; + __u8 *current; + __u8 data[PAGE_SIZE - 1*sizeof(struct bounce_page *) + - 2*sizeof(__u32) - sizeof(__u8)]; +}; + +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/sbus/char/cgsix.c linux/drivers/sbus/char/cgsix.c --- v2.1.16/linux/drivers/sbus/char/cgsix.c Wed Dec 18 15:58:48 1996 +++ linux/drivers/sbus/char/cgsix.c Thu Dec 19 11:15:01 1996 @@ -1,4 +1,4 @@ -/* $Id: cgsix.c,v 1.18 1996/11/13 05:10:19 davem Exp $ +/* $Id: cgsix.c,v 1.19 1996/12/19 08:07:35 davem Exp $ * cgsix.c: cgsix frame buffer driver * * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) @@ -219,7 +219,10 @@ static void cg6_blitc(unsigned short, int, int); static void cg6_setw(int, int, unsigned short, int); static void cg6_cpyw(int, int, unsigned short *, int); + +#if 0 static void cg6_fill(int, int, int *); +#endif /* Ugh: X wants to mmap a bunch of cute stuff at the same time :-( */ /* So, we just mmap the things that are being asked for */ @@ -616,6 +619,7 @@ #define GX_FILL_END \ } +#if 0 static void cg6_fill(int attrib, int count, int *boxes) { register int r; @@ -634,3 +638,4 @@ } GX_FILL_END } +#endif diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/a2091.c linux/drivers/scsi/a2091.c --- v2.1.16/linux/drivers/scsi/a2091.c Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/a2091.c Fri Dec 20 11:20:01 1996 @@ -1,11 +1,12 @@ #include #include #include +#include #include +#include #include #include -#include #include #include #include @@ -29,7 +30,7 @@ static struct Scsi_Host *first_instance = NULL; static Scsi_Host_Template *a2091_template; -static void a2091_intr (int irq, struct pt_regs *fp, void *dummy) +static void a2091_intr (int irq, void *dummy, struct pt_regs *fp) { unsigned int status; struct Scsi_Host *instance; @@ -187,44 +188,68 @@ } } +static int num_a2091 = 0; + int a2091_detect(Scsi_Host_Template *tpnt) { static unsigned char called = 0; struct Scsi_Host *instance; - int i, manuf, product, num_a2091 = 0; caddr_t address; + int key; + struct ConfigDev *cd; if (!MACH_IS_AMIGA || called) return 0; called = 1; tpnt->proc_dir = &proc_scsi_a2091; + tpnt->proc_info = &wd33c93_proc_info; - for (i = 0; i < boot_info.bi_amiga.num_autocon; i++) - { - manuf = boot_info.bi_amiga.autocon[i].cd_Rom.er_Manufacturer; - product = boot_info.bi_amiga.autocon[i].cd_Rom.er_Product; - if (manuf == MANUF_COMMODORE && (product == PROD_A2091 || - product == PROD_A590)) { - address = boot_info.bi_amiga.autocon[i].cd_BoardAddr; - instance = scsi_register (tpnt, - sizeof (struct WD33C93_hostdata)); - instance->base = (unsigned char *)ZTWO_VADDR(address); - DMA(instance)->DAWR = DAWR_A2091; - wd33c93_init(instance, (wd33c93_regs *)&(DMA(instance)->SASR), - dma_setup, dma_stop, WD33C93_FS_8_10); - if (num_a2091++ == 0) { - first_instance = instance; - a2091_template = instance->hostt; - add_isr(IRQ_AMIGA_PORTS, a2091_intr, 0, NULL, "A2091 SCSI"); - } - DMA(instance)->CNTR = CNTR_PDMD | CNTR_INTEN; - -#if 0 /* The Zorro stuff is not totally integrated yet ! */ - boot_info.bi_amiga.autocon_configured |= 1<cd_BoardAddr; + instance = scsi_register (tpnt, sizeof (struct WD33C93_hostdata)); + instance->base = (unsigned char *)ZTWO_VADDR(address); + instance->irq = IRQ_AMIGA_PORTS & ~IRQ_MACHSPEC; + instance->unique_id = key; + DMA(instance)->DAWR = DAWR_A2091; + wd33c93_init(instance, (wd33c93_regs *)&(DMA(instance)->SASR), + dma_setup, dma_stop, WD33C93_FS_8_10); + if (num_a2091++ == 0) { + first_instance = instance; + a2091_template = instance->hostt; + request_irq(IRQ_AMIGA_PORTS, a2091_intr, 0, "A2091 SCSI", a2091_intr); + } + DMA(instance)->CNTR = CNTR_PDMD | CNTR_INTEN; + zorro_config_board(key, 0); } return num_a2091; } + +#ifdef MODULE + +#define HOSTS_C + +#include "a2091.h" + +Scsi_Host_Template driver_template = A2091_SCSI; + +#include "scsi_module.c" + +#endif + +int a2091_release(struct Scsi_Host *instance) +{ +#ifdef MODULE +DMA(instance)->CNTR = 0; +zorro_unconfig_board(instance->unique_id, 0); +if (--num_a2091 == 0) + free_irq(IRQ_AMIGA_PORTS, a2091_intr); +wd33c93_release(); +#endif +return 1; +} + + diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/a2091.h linux/drivers/scsi/a2091.h --- v2.1.16/linux/drivers/scsi/a2091.h Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/a2091.h Fri Dec 20 11:20:01 1996 @@ -11,6 +11,7 @@ #include int a2091_detect(Scsi_Host_Template *); +int a2091_release(struct Scsi_Host *); const char *wd33c93_info(void); int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); int wd33c93_abort(Scsi_Cmnd *); @@ -38,7 +39,7 @@ /* proc_info */ NULL, \ /* name */ "Commodore A2091/A590 SCSI", \ /* detect */ a2091_detect, \ - /* release */ NULL, \ + /* release */ a2091_release, \ /* info */ NULL, \ /* command */ NULL, \ /* queuecommand */ wd33c93_queuecommand, \ diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/a3000.c linux/drivers/scsi/a3000.c --- v2.1.16/linux/drivers/scsi/a3000.c Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/a3000.c Fri Dec 20 11:20:02 1996 @@ -1,11 +1,12 @@ #include #include #include +#include #include +#include #include #include -#include #include #include #include @@ -27,7 +28,7 @@ static struct Scsi_Host *a3000_host = NULL; -static void a3000_intr (int irq, struct pt_regs *fp, void *dummy) +static void a3000_intr (int irq, void *dummy, struct pt_regs *fp) { unsigned int status = DMA(a3000_host)->ISTR; @@ -96,26 +97,12 @@ /* setup DMA *physical* address */ DMA(a3000_host)->ACR = addr; - if (dir_in) - { /* invalidate any cache */ - /* - * On the 68040 it's not ok to use cache_clear, as it just invalidates - * cache-lines, and thereby trashing them. We need to use cache_push - * to avoid problems/crashes. - * This was a real bitch to catch :-( -Jes - */ - - if (boot_info.cputype & CPU_68040) - cache_push (addr, cmd->SCp.this_residual); - else - cache_clear (addr, cmd->SCp.this_residual); - } + cache_clear (addr, cmd->SCp.this_residual); else - /* push any dirty cache */ - cache_push (addr, cmd->SCp.this_residual); - + /* push any dirty cache */ + cache_push (addr, cmd->SCp.this_residual); /* start DMA */ DMA(a3000_host)->ST_DMA = 1; @@ -190,15 +177,39 @@ return 0; tpnt->proc_dir = &proc_scsi_a3000; + tpnt->proc_info = &wd33c93_proc_info; a3000_host = scsi_register (tpnt, sizeof(struct WD33C93_hostdata)); a3000_host->base = (unsigned char *)ZTWO_VADDR(0xDD0000); + a3000_host->irq = IRQ_AMIGA_PORTS & ~IRQ_MACHSPEC; DMA(a3000_host)->DAWR = DAWR_A3000; wd33c93_init(a3000_host, (wd33c93_regs *)&(DMA(a3000_host)->SASR), dma_setup, dma_stop, WD33C93_FS_12_15); - add_isr(IRQ_AMIGA_PORTS, a3000_intr, 0, NULL, "A3000 SCSI"); + request_irq(IRQ_AMIGA_PORTS, a3000_intr, 0, "A3000 SCSI", a3000_intr); DMA(a3000_host)->CNTR = CNTR_PDMD | CNTR_INTEN; called = 1; + return 1; +} + +#ifdef MODULE + +#define HOSTS_C + +#include "a3000.h" + +Scsi_Host_Template driver_template = A3000_SCSI; + +#include "scsi_module.c" + +#endif + +int a3000_release(struct Scsi_Host *instance) +{ +#ifdef MODULE + wd33c93_release(); + DMA(instance)->CNTR = 0; + free_irq(IRQ_AMIGA_PORTS, a3000_intr); +#endif return 1; } diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/a3000.h linux/drivers/scsi/a3000.h --- v2.1.16/linux/drivers/scsi/a3000.h Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/a3000.h Fri Dec 20 11:20:02 1996 @@ -11,6 +11,7 @@ #include int a3000_detect(Scsi_Host_Template *); +int a3000_release(struct Scsi_Host *); const char *wd33c93_info(void); int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); int wd33c93_abort(Scsi_Cmnd *); @@ -38,7 +39,7 @@ /* proc_info */ NULL, \ /* name */ "Amiga 3000 built-in SCSI", \ /* detect */ a3000_detect, \ - /* release */ NULL, \ + /* release */ a3000_release, \ /* info */ NULL, \ /* command */ NULL, \ /* queuecommand */ wd33c93_queuecommand, \ @@ -52,7 +53,7 @@ /* cmd_per_lun */ CMD_PER_LUN, \ /* present */ 0, \ /* unchecked_isa_dma */ 0, \ - /* use_clustering */ DISABLE_CLUSTERING } + /* use_clustering */ ENABLE_CLUSTERING } #else /* diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/atari_NCR5380.c linux/drivers/scsi/atari_NCR5380.c --- v2.1.16/linux/drivers/scsi/atari_NCR5380.c Wed Oct 9 08:55:21 1996 +++ linux/drivers/scsi/atari_NCR5380.c Fri Dec 20 11:20:02 1996 @@ -47,8 +47,8 @@ * inside the execution of NCR5380_intr(), leading to recursive * calls. * - * - I've added a function merge_consecutive_buffers() that tries to - * merge scatter-gather buffers that are located at consecutive + * - I've added a function merge_contiguous_buffers() that tries to + * merge scatter-gather buffers that are located at contiguous * physical addresses and can be processed with the same DMA setup. * Since most scatter-gather operations work on a page (4K) of * 4 buffers (1K), in more than 90% of all cases three interrupts and @@ -432,7 +432,6 @@ } -#if 1 static void free_all_tags( void ) { int target, lun; @@ -449,58 +448,48 @@ } } } -#endif #endif /* SUPPORT_TAGS */ /* - * Function: void merge_consecutive_buffers( Scsi_Cmnd *cmd ) + * Function: void merge_contiguous_buffers( Scsi_Cmnd *cmd ) * * Purpose: Try to merge several scatter-gather requests into one DMA * transfer. This is possible if the scatter buffers lie on - * physical consecutive addresses. + * physical contiguous addresses. * * Parameters: Scsi_Cmnd *cmd * The command to work on. The first scatter buffer's data are * assumed to be already transfered into ptr/this_residual. */ -/* A special issue is when the buffer is exactly at the end of the - * last physical memory chunk: VTOP would have to calculate the - * physical address just 1 byte behind the end of physical memory. But - * it will panic if given this address :-( So we need to avoid calling - * VTOP on addresses that don't exist. This is done by keeping - * 'endadr' to be the real end address of the buffer, not one byte - * more (which would be easier). - */ - -static void merge_consecutive_buffers( Scsi_Cmnd *cmd ) +static void merge_contiguous_buffers( Scsi_Cmnd *cmd ) { - unsigned long endadr; + unsigned long endaddr; #if (NDEBUG & NDEBUG_MERGING) unsigned long oldlen = cmd->SCp.this_residual; int cnt = 1; #endif - for( endadr = VTOP(cmd->SCp.ptr + cmd->SCp.this_residual - 1); + for (endaddr = VTOP(cmd->SCp.ptr + cmd->SCp.this_residual - 1) + 1; cmd->SCp.buffers_residual && - VTOP( (cmd->SCp.buffer+1)->address ) == endadr + 1; ) { + VTOP(cmd->SCp.buffer[1].address) == endaddr; ) { - MER_PRINTK( "%08lx == %08lx -> merging\n", - VTOP( (cmd->SCp.buffer+1)->address ), endadr ); + MER_PRINTK("VTOP(%p) == %08lx -> merging\n", + cmd->SCp.buffer[1].address, endaddr); #if (NDEBUG & NDEBUG_MERGING) ++cnt; #endif ++cmd->SCp.buffer; --cmd->SCp.buffers_residual; cmd->SCp.this_residual += cmd->SCp.buffer->length; - endadr += cmd->SCp.buffer->length; + endaddr += cmd->SCp.buffer->length; } #if (NDEBUG & NDEBUG_MERGING) if (oldlen != cmd->SCp.this_residual) - MER_PRINTK( "merged %d buffers from %08lx, new length %08lx\n", - cnt, (long)(cmd->SCp.ptr), cmd->SCp.this_residual ); + MER_PRINTK("merged %d buffers from %p, new length %08x\n", + cnt, cmd->SCp.ptr, cmd->SCp.this_residual); #endif } @@ -526,9 +515,9 @@ cmd->SCp.ptr = (char *) cmd->SCp.buffer->address; cmd->SCp.this_residual = cmd->SCp.buffer->length; /* ++roman: Try to merge some scatter-buffers if they are at - * consecutive physical addresses. + * contiguous physical addresses. */ - merge_consecutive_buffers( cmd ); + merge_contiguous_buffers( cmd ); } else { cmd->SCp.buffer = NULL; cmd->SCp.buffers_residual = 0; @@ -668,7 +657,7 @@ queue it on the 'immediate' task queue, to be processed immediately after the current interrupt processing has finished. */ - queue_task_irq(&NCR5380_tqueue, &tq_immediate); + queue_task(&NCR5380_tqueue, &tq_immediate); mark_bh(IMMEDIATE_BH); } /* else: nothing to do: the running NCR5380_main() will pick up @@ -725,16 +714,22 @@ static void NCR5380_print_status (struct Scsi_Host *instance) { - char pr_bfr[256]; + char *pr_bfr; char *start; int len; NCR_PRINT(NDEBUG_ANY); NCR_PRINT_PHASE(NDEBUG_ANY); - len = NCR5380_proc_info(pr_bfr, &start, 0, sizeof(pr_bfr), HOSTNO, 0); + pr_bfr = (char *) __get_free_page(GFP_ATOMIC); + if (!pr_bfr) { + printk("NCR5380_print_status: no memory for print buffer\n"); + return; + } + len = NCR5380_proc_info(pr_bfr, &start, 0, PAGE_SIZE, HOSTNO, 0); pr_bfr[len] = 0; printk("\n%s\n", pr_bfr); + free_page((unsigned long) pr_bfr); } @@ -753,7 +748,9 @@ */ #undef SPRINTF -#define SPRINTF(args...) do { if(pos < buffer + length) pos += sprintf(pos, ## args); } while(0) +#define SPRINTF(fmt,args...) \ + do { if (pos + strlen(fmt) + 20 /* slop */ < buffer + length) \ + pos += sprintf(pos, fmt , ## args); } while(0) static char *lprint_Scsi_Cmnd (Scsi_Cmnd *cmd, char *pos, char *buffer, int length); static @@ -885,7 +882,7 @@ #ifndef AUTOSENSE - if ((instance->cmd_per_lun > 1) || instance->can_queue > 1)) + if ((instance->cmd_per_lun > 1) || (instance->can_queue > 1)) printk("scsi%d: WARNING : support for multiple outstanding commands enabled\n" " without AUTOSENSE option, contingent allegiance conditions may\n" " be incorrectly cleared.\n", HOSTNO); @@ -925,7 +922,7 @@ Scsi_Cmnd *tmp; int oldto; unsigned long flags; - extern int scsi_update_timeout(Scsi_Cmnd * SCset, int timeout); + extern int update_timeout(Scsi_Cmnd * SCset, int timeout); #if (NDEBUG & NDEBUG_NO_WRITE) switch (cmd->cmnd[0]) { @@ -1002,9 +999,9 @@ * alter queues and touch the lock. */ if (!IS_A_TT()) { - oldto = scsi_update_timeout(cmd, 0); + oldto = update_timeout(cmd, 0); falcon_get_lock(); - scsi_update_timeout(cmd, oldto); + update_timeout(cmd, oldto); } if (!(hostdata->issue_queue) || (cmd->cmnd[0] == REQUEST_SENSE)) { LIST(cmd, hostdata->issue_queue); @@ -1029,7 +1026,7 @@ * If we're not in an interrupt, we can call NCR5380_main() * unconditionally, because it cannot be already running. */ - if (intr_count > 0) + if (intr_count > 0 || ((flags >> 8) & 7) >= 6) queue_main(); else NCR5380_main(); @@ -1077,6 +1074,8 @@ 'main_running' is set here, and queues/executes main via the task queue, it doesn't do any harm, just this instance of main won't find any work left to do. */ + if (main_running) + return; main_running = 1; save_flags(flags); @@ -1135,10 +1134,9 @@ * On failure, we must add the command back to the * issue queue so we can keep trying. */ - DPRINTK(NDEBUG_MAIN | NDEBUG_QUEUES, - "scsi%d: main(): command for target %d lun %d " - "removed from issue_queue\n", - HOSTNO, tmp->target, tmp->lun); + MAIN_PRINTK("scsi%d: main(): command for target %d " + "lun %d removed from issue_queue\n", + HOSTNO, tmp->target, tmp->lun); /* * REQUEST SENSE commands are issued without tagged * queueing, even on SCSI-II devices because the @@ -1169,9 +1167,8 @@ #endif falcon_dont_release--; restore_flags(flags); - DPRINTK(NDEBUG_MAIN | NDEBUG_QUEUES, - "scsi%d: main(): select() failed, " - "returned to issue_queue\n", HOSTNO); + MAIN_PRINTK("scsi%d: main(): select() failed, " + "returned to issue_queue\n", HOSTNO); if (hostdata->connected) break; } @@ -2068,9 +2065,9 @@ cmd->SCp.this_residual = cmd->SCp.buffer->length; cmd->SCp.ptr = cmd->SCp.buffer->address; /* ++roman: Try to merge some scatter-buffers if - * they are at consecutive physical addresses. + * they are at contiguous physical addresses. */ - merge_consecutive_buffers( cmd ); + merge_contiguous_buffers( cmd ); INF_PRINTK("scsi%d: %d bytes and %d buffers left\n", HOSTNO, cmd->SCp.this_residual, cmd->SCp.buffers_residual); @@ -2201,13 +2198,15 @@ "completed\n", HOSTNO, cmd->target, cmd->lun); #ifdef SUPPORT_TAGS cmd_free_tag( cmd ); - if (cmd->SCp.Status == QUEUE_FULL) { + if (status_byte(cmd->SCp.Status) == QUEUE_FULL) { /* Turn a QUEUE FULL status into BUSY, I think the * mid level cannot handle QUEUE FULL :-( (The * command is retried after BUSY). Also update our * queue size to the number of currently issued * commands now. */ + /* ++Andreas: the mid level code knows about + QUEUE_FULL now. */ TAG_ALLOC *ta = &TagAlloc[cmd->target][cmd->lun]; TAG_PRINTK("scsi%d: target %d lun %d returned " "QUEUE_FULL after %d commands\n", @@ -2215,7 +2214,6 @@ ta->nr_allocated); if (ta->queue_size > ta->nr_allocated) ta->nr_allocated = ta->queue_size; - cmd->SCp.Status = BUSY; } #else hostdata->busy[cmd->target] &= ~(1 << cmd->lun); @@ -2241,12 +2239,12 @@ if (cmd->cmnd[0] != REQUEST_SENSE) cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8); - else if (cmd->SCp.Status != GOOD) + else if (status_byte(cmd->SCp.Status) != GOOD) cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16); #ifdef AUTOSENSE if ((cmd->cmnd[0] != REQUEST_SENSE) && - (cmd->SCp.Status == CHECK_CONDITION)) { + (status_byte(cmd->SCp.Status) == CHECK_CONDITION)) { ASEN_PRINTK("scsi%d: performing request sense\n", HOSTNO); cmd->cmnd[0] = REQUEST_SENSE; @@ -2255,11 +2253,15 @@ cmd->cmnd[3] = 0; cmd->cmnd[4] = sizeof(cmd->sense_buffer); cmd->cmnd[5] = 0; + cmd->cmd_len = COMMAND_SIZE(cmd->cmnd[0]); + cmd->use_sg = 0; + /* this is initialized from initialize_SCp cmd->SCp.buffer = NULL; cmd->SCp.buffers_residual = 0; - cmd->SCp.ptr = (char *) cmd->sense_buffer; - cmd->SCp.this_residual = sizeof(cmd->sense_buffer); + */ + cmd->request_buffer = (char *) cmd->sense_buffer; + cmd->request_bufflen = sizeof(cmd->sense_buffer); save_flags(flags); cli(); @@ -2617,7 +2619,7 @@ #ifdef SUPPORT_TAGS "tag %d " #endif - "not in disconnect_queue.\n", + "not in disconnected_queue.\n", HOSTNO, target_mask, lun #ifdef SUPPORT_TAGS , tag @@ -2692,10 +2694,8 @@ */ if (hostdata->connected == cmd) { - int rv; ABRT_PRINTK("scsi%d: aborting connected command\n", HOSTNO); - hostdata->aborted = 1; /* * We should perform BSY checking, and make sure we haven't slipped * into BUS FREE. @@ -2709,31 +2709,29 @@ */ /* - * MSch: use the do_abort function instead ... unless there is need to wait - * a longer period for the target to go into MSGOUT. - */ - rv = do_abort(instance); - - save_flags(flags); - cli(); + * Return control to the executing NCR drive so we can clear the + * aborted flag and get back into our main loop. + */ - cmd->result = DID_ABORT << 16; + if (do_abort(instance) == 0) { + hostdata->aborted = 1; + hostdata->connected = NULL; + cmd->result = DID_ABORT << 16; #ifdef SUPPORT_TAGS - cmd_free_tag( cmd ); + cmd_free_tag( cmd ); #else - hostdata->busy[cmd->target] &= ~(1 << cmd->lun); + hostdata->busy[cmd->target] &= ~(1 << cmd->lun); #endif - restore_flags(flags); - cmd->done(cmd); - falcon_release_lock_if_possible( hostdata ); - -/* - * Return control to the executing NCR drive so we can clear the - * aborted flag and get back into our main loop. - */ - - return rv ? SCSI_ABORT_SUCCESS : SCSI_ABORT_ERROR; - } + restore_flags(flags); + cmd->scsi_done(cmd); + falcon_release_lock_if_possible( hostdata ); + return SCSI_ABORT_SUCCESS; + } else { +/* restore_flags(flags); */ + printk("scsi%d: abort of connected command failed!\n", HOSTNO); + return SCSI_ABORT_ERROR; + } + } #endif /* @@ -2753,7 +2751,7 @@ HOSTNO); /* Tagged queuing note: no tag to free here, hasn't been assigned * yet... */ - tmp->done(tmp); + tmp->scsi_done(tmp); falcon_release_lock_if_possible( hostdata ); return SCSI_ABORT_SUCCESS; } @@ -2833,7 +2831,7 @@ hostdata->busy[cmd->target] &= ~(1 << cmd->lun); #endif restore_flags(flags); - tmp->done(tmp); + tmp->scsi_done(tmp); falcon_release_lock_if_possible( hostdata ); return SCSI_ABORT_SUCCESS; } @@ -2877,7 +2875,9 @@ SETUP_HOSTDATA(cmd->host); int i; unsigned long flags; +#if 1 Scsi_Cmnd *connected, *disconnected_queue; +#endif if (!IS_A_TT() && !falcon_got_lock) printk(KERN_ERR "scsi%d: !!BINGO!! Falcon has no lock in NCR5380_reset\n", @@ -2900,7 +2900,10 @@ * through anymore ... */ (void)NCR5380_read( RESET_PARITY_INTERRUPT_REG ); -#if 1 /* XXX Should now be done by midlevel code, bug isn't XXX */ +#if 1 /* XXX Should now be done by midlevel code, but it's broken XXX */ + /* XXX see below XXX */ + + /* MSch: old-style reset: actually abort all command processing here */ /* After the reset, there are no more connected or disconnected commands * and no busy units; to avoid problems with re-inserting the commands @@ -2923,6 +2926,11 @@ #endif restore_flags(flags); + /* In order to tell the mid-level code which commands were aborted, + * set the command status to DID_RESET and call scsi_done() !!! + * This ultimately aborts processing of these commands in the mid-level. + */ + if ((cmd = connected)) { ABRT_PRINTK("scsi%d: reset aborted a connected command\n", H_NO(cmd)); cmd->result = (cmd->result & 0xffff) | (DID_RESET << 16); @@ -2945,9 +2953,61 @@ */ /* falcon_release_lock_if_possible( hostdata );*/ -#endif /* 1 */ + /* since all commands have been explicitly terminated, we need to tell + * the midlevel code that the reset was SUCCESSFUL, and there is no + * need to 'wake up' the commands by a request_sense + */ + return SCSI_RESET_SUCCESS | SCSI_RESET_BUS_RESET; +#else /* 1 */ + + /* MSch: new-style reset handling: let the mid-level do what it can */ + + /* ++guenther: MID-LEVEL IS STILL BROKEN. + * Mid-level is supposed to requeue all commands that were active on the + * various low-level queues. In fact it does this, but that's not enough + * because all these commands are subject to timeout. And if a timeout + * happens for any removed command, *_abort() is called but all queues + * are now empty. Abort then gives up the falcon lock, which is fatal, + * since the mid-level will queue more commands and must have the lock + * (it's all happening inside timer interrupt handler!!). + * Even worse, abort will return NOT_RUNNING for all those commands not + * on any queue, so they won't be retried ... + * + * Conclusion: either scsi.c disables timeout for all resetted commands + * immediately, or we loose! As of linux-2.0.20 it doesn't. + */ + + /* After the reset, there are no more connected or disconnected commands + * and no busy units; so clear the low-level status here to avoid + * conflicts when the mid-level code tries to wake up the affected + * commands! + */ + + if (hostdata->issue_queue) + ABRT_PRINTK("scsi%d: reset aborted issued command(s)\n", H_NO(cmd)); + if (hostdata->connected) + ABRT_PRINTK("scsi%d: reset aborted a connected command\n", H_NO(cmd)); + if (hostdata->disconnected_queue) + ABRT_PRINTK("scsi%d: reset aborted disconnected command(s)\n", H_NO(cmd)); - return SCSI_RESET_WAKEUP; + save_flags(flags); + cli(); + hostdata->issue_queue = NULL; + hostdata->connected = NULL; + hostdata->disconnected_queue = NULL; +#ifdef SUPPORT_TAGS + free_all_tags(); +#endif + for( i = 0; i < 8; ++i ) + hostdata->busy[i] = 0; +#ifdef REAL_DMA + hostdata->dma_len = 0; +#endif + restore_flags(flags); + + /* we did no complete reset of all commands, so a wakeup is required */ + return SCSI_RESET_WAKEUP | SCSI_RESET_BUS_RESET; +#endif /* 1 */ } /* Local Variables: */ diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/atari_scsi.c linux/drivers/scsi/atari_scsi.c --- v2.1.16/linux/drivers/scsi/atari_scsi.c Mon Jun 3 12:29:12 1996 +++ linux/drivers/scsi/atari_scsi.c Fri Dec 20 11:20:02 1996 @@ -87,9 +87,10 @@ #include #include #include +#include #include -#include +#include #include #include #include @@ -197,8 +198,8 @@ static unsigned long atari_dma_xfer_len( unsigned long wanted_len, Scsi_Cmnd *cmd, int write_flag ); #endif -static void scsi_tt_intr( int irq, struct pt_regs *fp, void *dummy); -static void scsi_falcon_intr( int irq, struct pt_regs *fp, void *dummy); +static void scsi_tt_intr( int irq, void *dummy, struct pt_regs *fp); +static void scsi_falcon_intr( int irq, void *dummy, struct pt_regs *fp); static void falcon_release_lock_if_possible( struct NCR5380_hostdata * hostdata ); static void falcon_get_lock( void ); @@ -261,9 +262,9 @@ * Check for this case: */ - for( i = 0; i < boot_info.num_memory; ++i ) { - end_addr = boot_info.memory[i].addr + - boot_info.memory[i].size; + for( i = 0; i < m68k_num_memory; ++i ) { + end_addr = m68k_memory[i].addr + + m68k_memory[i].size; if (end_addr <= addr && addr <= end_addr + 4) return( 1 ); } @@ -277,7 +278,7 @@ * end-of-DMA, both SCSI ints are triggered simultaneously, so the NCR int has * to clear the DMA int pending bit before it allows other level 6 interrupts. */ -static void scsi_dma_buserr (int irq, struct pt_regs *fp, void *dummy) +static void scsi_dma_buserr (int irq, void *dummy, struct pt_regs *fp) { unsigned char dma_stat = tt_scsi_dma.dma_ctrl; @@ -306,7 +307,7 @@ #endif -static void scsi_tt_intr (int irq, struct pt_regs *fp, void *dummy) +static void scsi_tt_intr (int irq, void *dummy, struct pt_regs *fp) { #ifdef REAL_DMA int dma_stat; @@ -397,7 +398,7 @@ } -static void scsi_falcon_intr (int irq, struct pt_regs *fp, void *dummy) +static void scsi_falcon_intr (int irq, void *dummy, struct pt_regs *fp) { #ifdef REAL_DMA int dma_stat; @@ -666,7 +667,7 @@ * Ram. */ if (MACH_IS_ATARI && ATARIHW_PRESENT(ST_SCSI) && - !ATARIHW_PRESENT(EXTD_DMA) && boot_info.num_memory > 1) { + !ATARIHW_PRESENT(EXTD_DMA) && m68k_num_memory > 1) { atari_dma_buffer = scsi_init_malloc(STRAM_BUFFER_SIZE, GFP_ATOMIC | GFP_DMA); atari_dma_phys_buffer = VTOP( atari_dma_buffer ); @@ -685,8 +686,8 @@ /* This int is actually "pseudo-slow", i.e. it acts like a slow * interrupt after having cleared the pending flag for the DMA * interrupt. */ - add_isr(IRQ_TT_MFP_SCSI, scsi_tt_intr, IRQ_TYPE_SLOW, - NULL, "SCSI NCR5380"); + request_irq(IRQ_TT_MFP_SCSI, scsi_tt_intr, IRQ_TYPE_SLOW, + "SCSI NCR5380", scsi_tt_intr); tt_mfp.active_edge |= 0x80; /* SCSI int on L->H */ #ifdef REAL_DMA tt_scsi_dma.dma_ctrl = 0; @@ -747,7 +748,7 @@ int atari_scsi_release (struct Scsi_Host *sh) { if (IS_A_TT()) - remove_isr (IRQ_TT_MFP_SCSI, scsi_tt_intr, NULL); + free_irq(IRQ_TT_MFP_SCSI, scsi_tt_intr); if (atari_dma_buffer) scsi_init_free (atari_dma_buffer, STRAM_BUFFER_SIZE); return 1; @@ -851,7 +852,8 @@ else { atari_turnon_irq( IRQ_MFP_FSCSI ); } - falcon_release_lock_if_possible(hostdata); + if ((rv & SCSI_RESET_ACTION) == SCSI_RESET_SUCCESS) + falcon_release_lock_if_possible(hostdata); return( rv ); } @@ -1085,8 +1087,9 @@ if (possible_len > limit) possible_len = limit; - DMA_PRINTK("Sorry, must cut DMA transfer size to %ld bytes instead " - "of %ld\n", possible_len, wanted_len); + if (possible_len != wanted_len) + DMA_PRINTK("Sorry, must cut DMA transfer size to %ld bytes " + "instead of %ld\n", possible_len, wanted_len); return( possible_len ); } diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/atari_scsi.h linux/drivers/scsi/atari_scsi.h --- v2.1.16/linux/drivers/scsi/atari_scsi.h Mon May 20 07:54:28 1996 +++ linux/drivers/scsi/atari_scsi.h Fri Dec 20 11:20:02 1996 @@ -34,7 +34,7 @@ * values should work, too; try it! (but cmd_per_lun costs memory!) */ /* But there seems to be a bug somewhere that requires CAN_QUEUE to be - * 2*CMD_OER_LUN. At least on a TT, no spurious timeouts seen since + * 2*CMD_PER_LUN. At least on a TT, no spurious timeouts seen since * changed CMD_PER_LUN... */ /* Note: The Falcon currently uses 8/1 setting due to unsolved problems with @@ -93,8 +93,6 @@ atari_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1) /* Debugging printk definitions: - * DPRINTK() is the generic one, takes an NDEBUG_* mask as argument; - * all others are hardcoded to one NDEBUG_* code: * * ARB -> arbitration * ASEN -> auto-sense @@ -122,58 +120,144 @@ * */ -#define DPRINTK(mask, format, args...) \ - do { \ - if (NDEBUG & (mask)) \ - printk(KERN_DEBUG format , ## args); \ - } while(0) - +#if NDEBUG & NDEBUG_ARBITRATION #define ARB_PRINTK(format, args...) \ - DPRINTK(NDEBUG_ARBITRATION, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define ARB_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_AUTOSENSE #define ASEN_PRINTK(format, args...) \ - DPRINTK(NDEBUG_AUTOSENSE, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define ASEN_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_DMA #define DMA_PRINTK(format, args...) \ - DPRINTK(NDEBUG_DMA, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define DMA_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_HANDSHAKE #define HSH_PRINTK(format, args...) \ - DPRINTK(NDEBUG_HANDSHAKE, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define HSH_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_INFORMATION #define INF_PRINTK(format, args...) \ - DPRINTK(NDEBUG_INFORMATION, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define INF_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_INIT #define INI_PRINTK(format, args...) \ - DPRINTK(NDEBUG_INIT, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define INI_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_INTR #define INT_PRINTK(format, args...) \ - DPRINTK(NDEBUG_INTR, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define INT_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_LINKED #define LNK_PRINTK(format, args...) \ - DPRINTK(NDEBUG_LINKED, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define LNK_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_MAIN #define MAIN_PRINTK(format, args...) \ - DPRINTK(NDEBUG_MAIN, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define MAIN_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_NO_DATAOUT #define NDAT_PRINTK(format, args...) \ - DPRINTK(NDEBUG_NO_DATAOUT, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define NDAT_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_NO_WRITE #define NWR_PRINTK(format, args...) \ - DPRINTK(NDEBUG_NO_WRITE, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define NWR_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_PIO #define PIO_PRINTK(format, args...) \ - DPRINTK(NDEBUG_PIO, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define PIO_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_PSEUDO_DMA #define PDMA_PRINTK(format, args...) \ - DPRINTK(NDEBUG_PSEUDO_DMA, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define PDMA_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_QUEUES #define QU_PRINTK(format, args...) \ - DPRINTK(NDEBUG_QUEUES, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define QU_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_RESELECTION #define RSL_PRINTK(format, args...) \ - DPRINTK(NDEBUG_RESELECTION, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define RSL_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_SELECTION #define SEL_PRINTK(format, args...) \ - DPRINTK(NDEBUG_SELECTION, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define SEL_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_USLEEP #define USL_PRINTK(format, args...) \ - DPRINTK(NDEBUG_USLEEP, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define USL_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_LAST_BYTE_SENT #define LBS_PRINTK(format, args...) \ - DPRINTK(NDEBUG_LAST_BYTE_SENT, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define LBS_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_RESTART_SELECT #define RSS_PRINTK(format, args...) \ - DPRINTK(NDEBUG_RESTART_SELECT, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define RSS_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_EXTENDED #define EXT_PRINTK(format, args...) \ - DPRINTK(NDEBUG_EXTENDED, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define EXT_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_ABORT #define ABRT_PRINTK(format, args...) \ - DPRINTK(NDEBUG_ABORT, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define ABRT_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_TAGS #define TAG_PRINTK(format, args...) \ - DPRINTK(NDEBUG_TAGS, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define TAG_PRINTK(format, args...) +#endif +#if NDEBUG & NDEBUG_MERGING #define MER_PRINTK(format, args...) \ - DPRINTK(NDEBUG_MERGING, format , ##args) + printk(KERN_DEBUG format , ## args) +#else +#define MER_PRINTK(format, args...) +#endif /* conditional macros for NCR5380_print_{,phase,status} */ diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/gvp11.c linux/drivers/scsi/gvp11.c --- v2.1.16/linux/drivers/scsi/gvp11.c Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/gvp11.c Fri Dec 20 11:20:02 1996 @@ -1,11 +1,12 @@ #include #include #include +#include #include +#include #include #include -#include #include #include #include @@ -29,7 +30,7 @@ static struct Scsi_Host *first_instance = NULL; static Scsi_Host_Template *gvp11_template; -static void gvp11_intr (int irq, struct pt_regs *fp, void *dummy) +static void gvp11_intr (int irq, void *dummy, struct pt_regs *fp) { unsigned int status; struct Scsi_Host *instance; @@ -49,15 +50,7 @@ } } -/* - * DMA transfer mask for GVP Series II SCSI controller. - * Some versions can only DMA into the 24 bit address space - * (0->16M). Others can DMA into the full 32 bit address - * space. The default is to only allow DMA into the 24 bit - * address space. The "gvp11=0xFFFFFFFE" setup parameter can - * be supplied to force an alternate (32 bit) mask. - */ -static int gvp11_xfer_mask = GVP11_XFER_MASK; +static int gvp11_xfer_mask = 0; void gvp11_setup (char *str, int *ints) { @@ -68,43 +61,60 @@ { unsigned short cntr = GVP11_DMAC_INT_ENABLE; unsigned long addr = VTOP(cmd->SCp.ptr); + int bank_mask; /* don't allow DMA if the physical address is bad */ - if (addr & gvp11_xfer_mask || + if (addr & HDATA(cmd->host)->dma_xfer_mask || (!dir_in && mm_end_of_chunk (addr, cmd->SCp.this_residual))) { HDATA(cmd->host)->dma_bounce_len = (cmd->SCp.this_residual + 511) & ~0x1ff; HDATA(cmd->host)->dma_bounce_buffer = scsi_malloc (HDATA(cmd->host)->dma_bounce_len); + HDATA(cmd->host)->dma_buffer_pool = BUF_SCSI_ALLOCED; - /* can't allocate memory; use PIO */ if (!HDATA(cmd->host)->dma_bounce_buffer) { - HDATA(cmd->host)->dma_bounce_len = 0; - return 1; + HDATA(cmd->host)->dma_bounce_buffer = + amiga_chip_alloc(HDATA(cmd->host)->dma_bounce_len); + + if(!HDATA(cmd->host)->dma_bounce_buffer) + { + HDATA(cmd->host)->dma_bounce_len = 0; + return 1; + } + + HDATA(cmd->host)->dma_buffer_pool = BUF_CHIP_ALLOCED; } /* check if the address of the bounce buffer is OK */ addr = VTOP(HDATA(cmd->host)->dma_bounce_buffer); - if (addr & gvp11_xfer_mask) { - scsi_free (HDATA(cmd->host)->dma_bounce_buffer, - HDATA(cmd->host)->dma_bounce_len); - HDATA(cmd->host)->dma_bounce_buffer = NULL; - HDATA(cmd->host)->dma_bounce_len = 0; - return 1; + if (addr & HDATA(cmd->host)->dma_xfer_mask) { + /* fall back to Chip RAM if address out of range */ + if( HDATA(cmd->host)->dma_buffer_pool == BUF_SCSI_ALLOCED) + scsi_free (HDATA(cmd->host)->dma_bounce_buffer, + HDATA(cmd->host)->dma_bounce_len); + else + amiga_chip_free (HDATA(cmd->host)->dma_bounce_buffer); + + HDATA(cmd->host)->dma_bounce_buffer = + amiga_chip_alloc(HDATA(cmd->host)->dma_bounce_len); + + if(!HDATA(cmd->host)->dma_bounce_buffer) + { + HDATA(cmd->host)->dma_bounce_len = 0; + return 1; + } + + addr = VTOP(HDATA(cmd->host)->dma_bounce_buffer); + HDATA(cmd->host)->dma_buffer_pool = BUF_CHIP_ALLOCED; } if (!dir_in) { /* copy to bounce buffer for a write */ if (cmd->use_sg) -#if 0 - panic ("scsi%ddma: incomplete s/g support", - cmd->host->host_no); -#else memcpy (HDATA(cmd->host)->dma_bounce_buffer, cmd->SCp.ptr, cmd->SCp.this_residual); -#endif else memcpy (HDATA(cmd->host)->dma_bounce_buffer, cmd->request_buffer, cmd->request_bufflen); @@ -128,6 +138,9 @@ /* push any dirty cache */ cache_push (addr, cmd->SCp.this_residual); + if ((bank_mask = (~HDATA(cmd->host)->dma_xfer_mask >> 18) & 0x01c0)) + DMA(cmd->host)->BANK = bank_mask & (addr >> 18); + /* start DMA */ DMA(cmd->host)->ST_DMA = 1; @@ -154,8 +167,13 @@ memcpy (SCpnt->SCp.ptr, HDATA(instance)->dma_bounce_buffer, SCpnt->SCp.this_residual); - scsi_free (HDATA(instance)->dma_bounce_buffer, - HDATA(instance)->dma_bounce_len); + + if (HDATA(instance)->dma_buffer_pool == BUF_SCSI_ALLOCED) + scsi_free (HDATA(instance)->dma_bounce_buffer, + HDATA(instance)->dma_bounce_len); + else + amiga_chip_free(HDATA(instance)->dma_bounce_buffer); + HDATA(instance)->dma_bounce_buffer = NULL; HDATA(instance)->dma_bounce_len = 0; @@ -166,82 +184,134 @@ HDATA(instance)->dma_bounce_buffer, SCpnt->request_bufflen); - scsi_free (HDATA(instance)->dma_bounce_buffer, - HDATA(instance)->dma_bounce_len); + if (HDATA(instance)->dma_buffer_pool == BUF_SCSI_ALLOCED) + scsi_free (HDATA(instance)->dma_bounce_buffer, + HDATA(instance)->dma_bounce_len); + else + amiga_chip_free(HDATA(instance)->dma_bounce_buffer); + HDATA(instance)->dma_bounce_buffer = NULL; HDATA(instance)->dma_bounce_len = 0; } } } +static int num_gvp11 = 0; + int gvp11_detect(Scsi_Host_Template *tpnt) { static unsigned char called = 0; struct Scsi_Host *instance; - int i, manuf, product, num_gvp11 = 0; caddr_t address; enum GVP_ident epc; + int key; + struct ConfigDev *cd; if (!MACH_IS_AMIGA || called) return 0; called = 1; tpnt->proc_dir = &proc_scsi_gvp11; + tpnt->proc_info = &wd33c93_proc_info; - for (i = 0; i < boot_info.bi_amiga.num_autocon; i++) - { - manuf = boot_info.bi_amiga.autocon[i].cd_Rom.er_Manufacturer; - product = boot_info.bi_amiga.autocon[i].cd_Rom.er_Product; -#if 0 -/* this seems to catch some non HD boards. GVP is sooooo stupid */ - if (manuf == MANUF_GVP && - ((product == PROD_GVPIISCSI) || (product == PROD_GVPIISCSI_2))) { -#else - if (manuf == MANUF_GVP && product == PROD_GVPIISCSI) { -#endif - /* check extended product code */ - address = boot_info.bi_amiga.autocon[i].cd_BoardAddr; - epc = *(unsigned short *)(ZTWO_VADDR(address) + 0x8000); - - epc = epc & GVP_EPCMASK; - - /* - * This should (hopefully) be the correct way to identify - * all the different GVP SCSI controllers (except for the - * SERIES I though). - */ - if (!((epc == GVP_A1291_SCSI) || - (epc == GVP_GFORCE_040_SCSI) || - (epc == GVP_GFORCE_030_SCSI) || - (epc == GVP_A530_SCSI) || - (epc == GVP_COMBO_R4_SCSI) || - (epc == GVP_COMBO_R3_SCSI) || - (epc == GVP_SERIESII))) - continue; - - instance = scsi_register (tpnt, - sizeof (struct WD33C93_hostdata)); - instance->base = (unsigned char *)ZTWO_VADDR(address); - DMA(instance)->secret2 = 1; - DMA(instance)->secret1 = 0; - DMA(instance)->secret3 = 15; - while (DMA(instance)->CNTR & GVP11_DMAC_BUSY) ; - DMA(instance)->CNTR = 0; - wd33c93_init(instance, (wd33c93_regs *)&(DMA(instance)->SASR), - dma_setup, dma_stop, WD33C93_FS_8_10); - if (num_gvp11++ == 0) { - first_instance = instance; - gvp11_template = instance->hostt; - add_isr(IRQ_AMIGA_PORTS, gvp11_intr, 0, NULL, "GVP11 SCSI"); - } - DMA(instance)->CNTR = GVP11_DMAC_INT_ENABLE; + while ((key = zorro_find(MANUF_GVP, PROD_GVPIISCSI, 0, 0))) { + cd = zorro_get_board(key); + address = cd->cd_BoardAddr; + /* check extended product code */ + epc = *(unsigned short *)(ZTWO_VADDR(address) + 0x8000); + epc = epc & GVP_PRODMASK; + + /* + * This should (hopefully) be the correct way to identify + * all the different GVP SCSI controllers (except for the + * SERIES I though). + */ + if (!((epc == GVP_A1291_SCSI) || + (epc == GVP_GFORCE_040_SCSI) || + (epc == GVP_GFORCE_030_SCSI) || + (epc == GVP_A530_SCSI) || + (epc == GVP_COMBO_R4_SCSI) || + (epc == GVP_COMBO_R3_SCSI) || + (epc == GVP_SERIESII))) + continue; -#if 0 /* The Zorro stuff is not totally integrated yet ! */ - boot_info.bi_amiga.autocon_configured |= 1<base = (unsigned char *)ZTWO_VADDR(address); + instance->irq = IRQ_AMIGA_PORTS & ~IRQ_MACHSPEC; + instance->unique_id = key; + + if (gvp11_xfer_mask) + HDATA(instance)->dma_xfer_mask = gvp11_xfer_mask; + else{ + switch (epc){ + case GVP_COMBO_R3_SCSI: + case GVP_SERIESII: + HDATA(instance)->dma_xfer_mask = ~0x00ffffff; + break; + case GVP_GFORCE_030_SCSI: + case GVP_A530_SCSI: + case GVP_COMBO_R4_SCSI: + HDATA(instance)->dma_xfer_mask = ~0x01ffffff; + break; + default: + HDATA(instance)->dma_xfer_mask = ~0x07ffffff; + break; + } + } + DMA(instance)->secret2 = 1; + DMA(instance)->secret1 = 0; + DMA(instance)->secret3 = 15; + while (DMA(instance)->CNTR & GVP11_DMAC_BUSY) ; + DMA(instance)->CNTR = 0; + + DMA(instance)->BANK = 0; + + epc = *(unsigned short *)(ZTWO_VADDR(address) + 0x8000); + + /* + * Check for 14MHz SCSI clock + */ + if (epc & GVP_SCSICLKMASK) + wd33c93_init(instance, (wd33c93_regs *)&(DMA(instance)->SASR), + dma_setup, dma_stop, WD33C93_FS_8_10); + else + wd33c93_init(instance, (wd33c93_regs *)&(DMA(instance)->SASR), + dma_setup, dma_stop, WD33C93_FS_12_15); + + if (num_gvp11++ == 0) { + first_instance = instance; + gvp11_template = instance->hostt; + request_irq(IRQ_AMIGA_PORTS, gvp11_intr, 0, "GVP11 SCSI", gvp11_intr); } + DMA(instance)->CNTR = GVP11_DMAC_INT_ENABLE; + zorro_config_board(key, 0); } return num_gvp11; +} + + +#ifdef MODULE + +#define HOSTS_C + +#include "gvp11.h" + +Scsi_Host_Template driver_template = GVP11_SCSI; + +#include "scsi_module.c" + +#endif + +int gvp11_release(struct Scsi_Host *instance) +{ +#ifdef MODULE +DMA(instance)->CNTR = 0; +zorro_unconfig_board(instance->unique_id, 0); +if (--num_gvp11 == 0) + free_irq(IRQ_AMIGA_PORTS, gvp11_intr); + wd33c93_release(); +#endif +return 1; } diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/gvp11.h linux/drivers/scsi/gvp11.h --- v2.1.16/linux/drivers/scsi/gvp11.h Fri Apr 26 10:30:51 1996 +++ linux/drivers/scsi/gvp11.h Fri Dec 20 11:20:02 1996 @@ -12,6 +12,7 @@ #include int gvp11_detect(Scsi_Host_Template *); +int gvp11_release(struct Scsi_Host *); const char *wd33c93_info(void); int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); int wd33c93_abort(Scsi_Cmnd *); @@ -39,7 +40,7 @@ /* proc_info */ NULL, \ /* name */ "GVP Series II SCSI", \ /* detect */ gvp11_detect, \ - /* release */ NULL, \ + /* release */ gvp11_release, \ /* info */ NULL, \ /* command */ NULL, \ /* queuecommand */ wd33c93_queuecommand, \ diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/scsi.c linux/drivers/scsi/scsi.c --- v2.1.16/linux/drivers/scsi/scsi.c Tue Nov 19 15:53:56 1996 +++ linux/drivers/scsi/scsi.c Fri Dec 20 11:20:02 1996 @@ -64,7 +64,7 @@ #undef USE_STATIC_SCSI_MEMORY /* -static const char RCSid[] = "$Header: /usr/src/linux/kernel/blk_drv/scsi/RCS/scsi.c,v 1.5 1993/09/24 12:45:18 drew Exp drew $"; +static const char RCSid[] = "$Header: /vger/u4/cvs/linux/drivers/scsi/scsi.c,v 1.34 1996/11/19 11:25:50 davem Exp $"; */ @@ -89,7 +89,7 @@ #endif static void scsi_done (Scsi_Cmnd *SCpnt); -static int update_timeout (Scsi_Cmnd *, int); +int update_timeout (Scsi_Cmnd *, int); static void print_inquiry(unsigned char *data); static void scsi_times_out (Scsi_Cmnd * SCpnt); static int scan_scsis_single (int channel,int dev,int lun,int * max_scsi_dev , @@ -270,6 +270,7 @@ {"HP", "C1750A", "3226", BLIST_NOLUN}, /* scanjet iic */ {"HP", "C1790A", "", BLIST_NOLUN}, /* scanjet iip */ {"HP", "C2500A", "", BLIST_NOLUN}, /* scanjet iicx */ +{"YAMAHA", "CDR102", "1.00", BLIST_NOLUN}, /* extra reset */ /* * Other types of devices that have special flags. @@ -2280,7 +2281,7 @@ * set the timer, we want to take this value into account. */ -static int update_timeout(Scsi_Cmnd * SCset, int timeout) +int update_timeout(Scsi_Cmnd * SCset, int timeout) { unsigned int least, used; unsigned int oldto; diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/scsi.h linux/drivers/scsi/scsi.h --- v2.1.16/linux/drivers/scsi/scsi.h Fri Nov 15 23:49:09 1996 +++ linux/drivers/scsi/scsi.h Thu Dec 19 11:03:35 1996 @@ -178,6 +178,7 @@ unsigned disconnect:1; /* can disconnect */ unsigned soft_reset:1; /* Uses soft reset option */ unsigned sync:1; /* Negotiate for sync transfers */ + unsigned wide:1; /* Negotiate for WIDE transfers */ unsigned single_lun:1; /* Indicates we should only allow I/O to * one of the luns for the device at a * time. */ diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/wd33c93.c linux/drivers/scsi/wd33c93.c --- v2.1.16/linux/drivers/scsi/wd33c93.c Sat May 4 19:39:23 1996 +++ linux/drivers/scsi/wd33c93.c Fri Dec 20 11:20:02 1996 @@ -68,11 +68,14 @@ * */ +#include + #include #include #include #include #include +#include #if LINUX_VERSION_CODE >= 0x010300 #include @@ -82,23 +85,19 @@ #include "scsi.h" #include "hosts.h" -#include "wd33c93.h" -#ifdef MODULE -#include -#endif -/* Leave this undefined for now - need to make some changes in the - * a3000/a2019/gvp11 files to get it working right - */ -/*#define PROC_INTERFACE*/ /* add code for /proc/scsi/wd33c93/xxx interface */ +#define PROC_INTERFACE /* add code for /proc/scsi/wd33c93/xxx interface */ +#ifdef PROC_INTERFACE +#define PROC_STATISTICS /* add code for keeping various real time stats */ +#endif #define SYNC_DEBUG /* extra info on sync negotiation printed */ -#define DEBUGGING_ON /* enable command-line debugging bitmask */ +#undef DEBUGGING_ON /* enable command-line debugging bitmask */ #define DEBUG_DEFAULTS 0 /* default debugging bitmask */ -#define WD33C93_VERSION "1.21" -#define WD33C93_DATE "20/Apr/1996" +#define WD33C93_VERSION "1.23" +#define WD33C93_DATE "04/Nov/1996" #ifdef DEBUGGING_ON #define DB(f,a) if (hostdata->args & (f)) a; @@ -106,9 +105,9 @@ #define DB(f,a) #endif -#define IS_DIR_OUT(cmd) ((cmd)->cmnd[0] == WRITE_6 || \ - (cmd)->cmnd[0] == WRITE_10 || \ - (cmd)->cmnd[0] == WRITE_12) + +#include "wd33c93.h" + /* @@ -123,6 +122,8 @@ * negotiation on that device. To maintain backwards * compatibility, a command-line such as "wd33c93=255" will * be automatically translated to "wd33c93=nosync:0xff". + * - nodma:x -x = 1 to disable DMA, x = 0 to enable it. Argument is + * optional - if not present, same as "nodma:1". * - period:ns -ns is the minimum # of nanoseconds in a SCSI data transfer * period. Default is 500; acceptable values are 250 - 1000. * - disconnect:x -x = 0 to never allow disconnects, 2 to always allow them. @@ -154,6 +155,8 @@ * * Some amiboot examples (for insmod, use 'setup_strings' instead of 'wd33c93'): * - wd33c93=nosync:255 + * - wd33c93=nodma + * - wd33c93=nodma:1 * - wd33c93=disconnect:2,nosync:0x08,period:250 * - wd33c93=debug:0x1c */ @@ -161,10 +164,6 @@ static char *setup_strings[] = {"","","","","","","","","","","",""}; -#ifdef PROC_INTERFACE -unsigned long disc_allowed_total; -unsigned long disc_taken_total; -#endif inline uchar read_wd33c93(wd33c93_regs *regp,uchar reg_num) @@ -228,6 +227,32 @@ } +/* The 33c93 needs to be told which direction a command transfers its + * data; we use this function to figure it out. Returns true if there + * will be a DATA_OUT phase with this command, false otherwise. + * (Thanks to Joerg Dorchain for the research and suggestion.) + */ +static int is_dir_out(Scsi_Cmnd *cmd) +{ + switch (cmd->cmnd[0]) { + case WRITE_6: case WRITE_10: case WRITE_12: + case WRITE_LONG: case WRITE_SAME: case WRITE_BUFFER: + case WRITE_VERIFY: case WRITE_VERIFY_12: + case COMPARE: case COPY: case COPY_VERIFY: + case SEARCH_EQUAL: case SEARCH_HIGH: case SEARCH_LOW: + case SEARCH_EQUAL_12: case SEARCH_HIGH_12: case SEARCH_LOW_12: + case FORMAT_UNIT: case REASSIGN_BLOCKS: case RESERVE: + case MODE_SELECT: case MODE_SELECT_10: case LOG_SELECT: + case SEND_DIAGNOSTIC: case CHANGE_DEFINITION: case UPDATE_BLOCK: + case SET_WINDOW: case MEDIUM_SCAN: case SEND_VOLUME_TAG: + case 0xea: + return 1; + default: + return 0; + } +} + + static struct sx_period sx_table[] = { { 1, 0x20}, @@ -271,11 +296,9 @@ { struct WD33C93_hostdata *hostdata; Scsi_Cmnd *tmp; -unsigned long flags; + disable_irq(cmd->host->irq); - save_flags(flags); - cli(); hostdata = (struct WD33C93_hostdata *)cmd->host->hostdata; DB(DB_QUEUE_COMMAND,printk("Q-%d-%02x-%ld( ",cmd->target,cmd->cmnd[0],cmd->pid)) @@ -347,7 +370,7 @@ DB(DB_QUEUE_COMMAND,printk(")Q-%ld ",cmd->pid)) - restore_flags(flags); + enable_irq(cmd->host->irq); return 0; } @@ -364,12 +387,9 @@ struct WD33C93_hostdata *hostdata; wd33c93_regs *regp; Scsi_Cmnd *cmd, *prev; -unsigned long flags; int i; - - save_flags(flags); - cli(); + disable_irq(instance->irq); hostdata = (struct WD33C93_hostdata *)instance->hostdata; regp = hostdata->regp; @@ -379,7 +399,7 @@ DB(DB_EXECUTE,printk(")EX-0 ")) - restore_flags(flags); + enable_irq(instance->irq); return; } @@ -403,7 +423,7 @@ DB(DB_EXECUTE,printk(")EX-1 ")) - restore_flags(flags); + enable_irq(instance->irq); return; } @@ -414,11 +434,15 @@ else hostdata->input_Q = (Scsi_Cmnd *)cmd->host_scribble; +#ifdef PROC_STATISTICS + hostdata->cmd_cnt[cmd->target]++; +#endif + /* * Start the selection process */ - if (IS_DIR_OUT(cmd)) + if (is_dir_out(cmd)) write_wd33c93(regp, WD_DESTINATION_ID, cmd->target); else write_wd33c93(regp, WD_DESTINATION_ID, cmd->target | DSTID_DPD); @@ -471,8 +495,8 @@ yes: cmd->SCp.phase = 1; -#ifdef PROC_INTERFACE - disc_allowed_total++; +#ifdef PROC_STATISTICS + hostdata->disc_allowed_cnt[cmd->target]++; #endif no: @@ -546,13 +570,14 @@ write_wd33c93(regp, WD_OWN_ID, cmd->cmd_len); - /* When doing a non-disconnect command, we can save ourselves a DATA - * phase interrupt later by setting everything up now. + /* When doing a non-disconnect command with DMA, we can save + * ourselves a DATA phase interrupt later by setting everything + * up ahead of time. */ - if (cmd->SCp.phase == 0) { + if ((cmd->SCp.phase == 0) && (hostdata->no_dma == 0)) { if (hostdata->dma_setup(cmd, - (IS_DIR_OUT(cmd))?DATA_OUT_DIR:DATA_IN_DIR)) + (is_dir_out(cmd))?DATA_OUT_DIR:DATA_IN_DIR)) write_wd33c93_count(regp,0); /* guarantee a DATA_PHASE interrupt */ else { write_wd33c93_count(regp, cmd->SCp.this_residual); @@ -576,7 +601,7 @@ DB(DB_EXECUTE,printk("%s%ld)EX-2 ",(cmd->SCp.phase)?"d:":"",cmd->pid)) - restore_flags(flags); + enable_irq(instance->irq); } @@ -586,7 +611,7 @@ { uchar asr; -DB(DB_TRANSFER,printk("(%p,%d,%s)",buf,cnt,data_in_dir?"in":"out")) +DB(DB_TRANSFER,printk("(%p,%d,%s:",buf,cnt,data_in_dir?"in":"out")) write_wd33c93(regp, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_POLLED); write_wd33c93_count(regp,cnt); @@ -620,6 +645,7 @@ void transfer_bytes(wd33c93_regs *regp, Scsi_Cmnd *cmd, int data_in_dir) { struct WD33C93_hostdata *hostdata; +unsigned long length; hostdata = (struct WD33C93_hostdata *)cmd->host->hostdata; @@ -640,11 +666,27 @@ write_wd33c93(regp,WD_SYNCHRONOUS_TRANSFER,hostdata->sync_xfer[cmd->target]); -/* 'dma_setup()' will return TRUE if we can't do DMA. */ +/* 'hostdata->no_dma' is TRUE if we don't even want to try DMA. + * Update 'this_residual' and 'ptr' after 'transfer_pio()' returns. + */ + + if (hostdata->no_dma) + goto use_transfer_pio; - if (hostdata->dma_setup(cmd, data_in_dir)) { - transfer_pio(regp, (uchar *)&cmd->SCp.ptr, cmd->SCp.this_residual, +/* 'dma_setup()' will return TRUE if we can't do DMA. + * Update 'this_residual' and 'ptr' after 'transfer_pio()' returns. + */ + + else if (hostdata->dma_setup(cmd, data_in_dir)) { +use_transfer_pio: +#ifdef PROC_STATISTICS + hostdata->pio_cnt++; +#endif + transfer_pio(regp, (uchar *)cmd->SCp.ptr, cmd->SCp.this_residual, data_in_dir, hostdata); + length = cmd->SCp.this_residual; + cmd->SCp.this_residual = read_wd33c93_count(regp); + cmd->SCp.ptr += (length - cmd->SCp.this_residual); } /* We are able to do DMA (in fact, the Amiga hardware is @@ -657,6 +699,9 @@ */ else { +#ifdef PROC_STATISTICS + hostdata->dma_cnt++; +#endif write_wd33c93(regp, WD_CONTROL, CTRL_IDI | CTRL_EDI | CTRL_DMA); write_wd33c93_count(regp,cmd->SCp.this_residual); @@ -679,11 +724,9 @@ struct WD33C93_hostdata *hostdata; Scsi_Cmnd *patch, *cmd; wd33c93_regs *regp; -unsigned long flags; uchar asr, sr, phs, id, lun, *ucp, msg; unsigned long length; - hostdata = (struct WD33C93_hostdata *)instance->hostdata; regp = hostdata->regp; @@ -691,10 +734,9 @@ if (!(asr & ASR_INT) || (asr & ASR_BSY)) return; -/* OK - it should be safe to re-enable system interrupts */ - - save_flags(flags); - sti(); +#ifdef PROC_STATISTICS + hostdata->int_cnt++; +#endif cmd = (Scsi_Cmnd *)hostdata->connected; /* assume we're connected */ sr = read_wd33c93(regp, WD_SCSI_STATUS); /* clear the interrupt */ @@ -734,7 +776,7 @@ case CSR_TIMEOUT: DB(DB_INTR,printk("TIMEOUT")) - cli(); + disable_irq(instance->irq); if (hostdata->state == S_RUNNING_LEVEL2) hostdata->connected = NULL; else { @@ -751,7 +793,7 @@ * are commands waiting to be executed. */ - sti(); + enable_irq(instance->irq); wd33c93_execute(instance); break; @@ -759,7 +801,8 @@ /* Note: this interrupt should not occur in a LEVEL2 command */ case CSR_SELECT: - cli(); + disable_irq(instance->irq); + DB(DB_INTR,printk("SELECT")) hostdata->connected = cmd = (Scsi_Cmnd *)hostdata->selecting; hostdata->selecting = NULL; @@ -848,7 +891,7 @@ case CSR_SRV_REQ |PHS_MESS_IN: DB(DB_INTR,printk("MSG_IN=")) - cli(); + disable_irq(instance->irq); msg = read_1_byte(regp); sr = read_wd33c93(regp, WD_SCSI_STATUS); /* clear interrupt */ @@ -997,7 +1040,7 @@ /* Note: this interrupt will occur only after a LEVEL2 command */ case CSR_SEL_XFER_DONE: - cli(); + disable_irq(instance->irq); /* Make sure that reselection is enabled at this point - it may * have been turned off for the command that just completed. @@ -1022,7 +1065,7 @@ /* We are no longer connected to a target - check to see if * there are commands waiting to be executed. */ - + enable_irq(instance->irq); wd33c93_execute(instance); } else { @@ -1081,7 +1124,7 @@ * so we treat it as a normal command-complete-disconnect. */ - cli(); + disable_irq(instance->irq); /* Make sure that reselection is enabled at this point - it may * have been turned off for the command that just completed. @@ -1106,13 +1149,13 @@ /* We are no longer connected to a target - check to see if * there are commands waiting to be executed. */ - + enable_irq(instance->irq); wd33c93_execute(instance); break; case CSR_DISC: - cli(); + disable_irq(instance->irq); /* Make sure that reselection is enabled at this point - it may * have been turned off for the command that just completed. @@ -1142,8 +1185,8 @@ hostdata->connected = NULL; hostdata->state = S_UNCONNECTED; -#ifdef PROC_INTERFACE - disc_taken_total++; +#ifdef PROC_STATISTICS + hostdata->disc_done_cnt[cmd->target]++; #endif break; @@ -1155,7 +1198,7 @@ /* We are no longer connected to a target - check to see if * there are commands waiting to be executed. */ - + enable_irq(instance->irq); wd33c93_execute(instance); break; @@ -1163,7 +1206,7 @@ case CSR_RESEL_AM: DB(DB_INTR,printk("RESEL")) - cli(); + disable_irq(instance->irq); /* First we have to make sure this reselection didn't */ /* happen during Arbitration/Selection of some other device. */ @@ -1243,7 +1286,7 @@ * But we DO need to fix the DPD bit so it's correct for this command. */ - if (IS_DIR_OUT(cmd)) + if (is_dir_out(cmd)) write_wd33c93(regp, WD_DESTINATION_ID, cmd->target); else write_wd33c93(regp, WD_DESTINATION_ID, cmd->target | DSTID_DPD); @@ -1263,7 +1306,7 @@ printk("--UNKNOWN INTERRUPT:%02x:%02x:%02x--",asr,sr,phs); } - restore_flags(flags); + enable_irq(instance->irq); DB(DB_INTR,printk("} ")) @@ -1319,7 +1362,6 @@ int wd33c93_reset(Scsi_Cmnd *SCpnt) #endif { -unsigned long flags; struct Scsi_Host *instance; struct WD33C93_hostdata *hostdata; int i; @@ -1328,8 +1370,7 @@ hostdata = (struct WD33C93_hostdata *)instance->hostdata; printk("scsi%d: reset. ", instance->host_no); - save_flags(flags); - cli(); + disable_irq(instance->irq); ((struct WD33C93_hostdata *)instance->hostdata)->dma_stop(instance,NULL,0); for (i = 0; i < 8; i++) { @@ -1348,7 +1389,7 @@ reset_wd33c93(instance); SCpnt->result = DID_RESET << 16; - restore_flags(flags); + enable_irq(instance->irq); return 0; } @@ -1360,10 +1401,8 @@ struct WD33C93_hostdata *hostdata; wd33c93_regs *regp; Scsi_Cmnd *tmp, *prev; -unsigned long flags; - save_flags (flags); - cli(); + disable_irq(cmd->host->irq); instance = cmd->host; hostdata = (struct WD33C93_hostdata *)instance->hostdata; @@ -1384,8 +1423,8 @@ cmd->result = DID_ABORT << 16; printk("scsi%d: Abort - removing command %ld from input_Q. ", instance->host_no, cmd->pid); + enable_irq(cmd->host->irq); cmd->scsi_done(cmd); - restore_flags(flags); return SCSI_ABORT_SUCCESS; } prev = tmp; @@ -1453,12 +1492,12 @@ hostdata->connected = NULL; hostdata->state = S_UNCONNECTED; cmd->result = DID_ABORT << 16; - cmd->scsi_done(cmd); /* sti();*/ wd33c93_execute (instance); - restore_flags(flags); + enable_irq(cmd->host->irq); + cmd->scsi_done(cmd); return SCSI_ABORT_SUCCESS; } @@ -1474,7 +1513,7 @@ printk("scsi%d: Abort - command %ld found on disconnected_Q - ", instance->host_no, cmd->pid); printk("returning ABORT_SNOOZE. "); - restore_flags(flags); + enable_irq(cmd->host->irq); return SCSI_ABORT_SNOOZE; } tmp = (Scsi_Cmnd *)tmp->host_scribble; @@ -1493,7 +1532,7 @@ /* sti();*/ wd33c93_execute (instance); - restore_flags(flags); + enable_irq(cmd->host->irq); printk("scsi%d: warning : SCSI command probably completed successfully" " before abortion. ", instance->host_no); return SCSI_ABORT_NOT_RUNNING; @@ -1606,6 +1645,11 @@ hostdata->busy[i] = 0; hostdata->sync_xfer[i] = calc_sync_xfer(DEFAULT_SX_PER/4,DEFAULT_SX_OFF); hostdata->sync_stat[i] = SS_UNSET; /* using default sync values */ +#ifdef PROC_STATISTICS + hostdata->cmd_cnt[i] = 0; + hostdata->disc_allowed_cnt[i] = 0; + hostdata->disc_done_cnt[i] = 0; +#endif } hostdata->input_Q = NULL; hostdata->selecting = NULL; @@ -1620,20 +1664,26 @@ hostdata->outgoing_len = 0; hostdata->default_sx_per = DEFAULT_SX_PER; hostdata->no_sync = 0xff; /* sync defaults to off */ + hostdata->no_dma = 0; /* default is DMA enabled */ #ifdef PROC_INTERFACE - hostdata->proc = PR_VERSION|PR_INFO|PR_TOTALS| + hostdata->proc = PR_VERSION|PR_INFO|PR_STATISTICS| PR_CONNECTED|PR_INPUTQ|PR_DISCQ| PR_STOP; - - disc_allowed_total = 0; - disc_taken_total = 0; +#ifdef PROC_STATISTICS + hostdata->dma_cnt = 0; + hostdata->pio_cnt = 0; + hostdata->int_cnt = 0; +#endif #endif if (check_setup_strings("nosync",&flags,&val,buf)) hostdata->no_sync = val; + if (check_setup_strings("nodma",&flags,&val,buf)) + hostdata->no_dma = (val == -1) ? 1 : val; + if (check_setup_strings("period",&flags,&val,buf)) hostdata->default_sx_per = sx_table[round_period((unsigned int)val)].period_ns; @@ -1674,23 +1724,22 @@ reset_wd33c93(instance); sti(); - printk("wd33c93-%d: chip=%s microcode=%02x\n",instance->host_no, + printk("wd33c93-%d: chip=%s/%d no_sync=0x%x no_dma=%d\n",instance->host_no, (hostdata->chip==C_WD33C93)?"WD33c93": (hostdata->chip==C_WD33C93A)?"WD33c93A": (hostdata->chip==C_WD33C93B)?"WD33c93B":"unknown", - hostdata->microcode); - + hostdata->microcode,hostdata->no_sync,hostdata->no_dma); #ifdef DEBUGGING_ON - printk("wd33c93-%d: setup_strings=",instance->host_no); + printk(" debug_flags=0x%02x setup_strings=",hostdata->args); +#else + printk(" debugging=OFF setup_strings="); +#endif for (i=0; ihost_no,hostdata->args); -#endif - printk("wd33c93-%d: driver version %s - %s\n",instance->host_no, - WD33C93_VERSION,WD33C93_DATE); - printk("wd33c93-%d: compiled on %s at %s\n",instance->host_no, - __DATE__,__TIME__); + printk(" Version %s - %s, Compiled %s at %s\n", + WD33C93_VERSION,WD33C93_DATE,__DATE__,__TIME__); + MOD_INC_USE_COUNT; } @@ -1708,7 +1757,7 @@ int x,i; static int stop = 0; - for (instance=instance_list; instance; instance=instance->next) { + for (instance=scsi_hostlist; instance; instance=instance->next) { if (instance->host_no == hn) break; } @@ -1725,6 +1774,7 @@ * period * resync * proc + * nodma */ if (in) { @@ -1757,6 +1807,10 @@ bp += 5; hd->proc = simple_strtoul(bp,NULL,0); } + else if (!strncmp(bp,"nodma:",6)) { + bp += 6; + hd->no_dma = simple_strtoul(bp,NULL,0); + } return len; } @@ -1770,13 +1824,42 @@ strcat(bp,tbuf); } if (hd->proc & PR_INFO) { - ; + sprintf(tbuf,"\nclock_freq=%02x no_sync=%02x no_dma=%d", + hd->clock_freq,hd->no_sync,hd->no_dma); + strcat(bp,tbuf); + strcat(bp,"\nsync_xfer[] ="); + for (x=0; x<8; x++) { + sprintf(tbuf," %02x",hd->sync_xfer[x]); + strcat(bp,tbuf); + } + strcat(bp,"\nsync_stat[] ="); + for (x=0; x<8; x++) { + sprintf(tbuf," %02x",hd->sync_stat[x]); + strcat(bp,tbuf); + } } - if (hd->proc & PR_TOTALS) { - sprintf(tbuf,"\n%ld disc_allowed, %ld disc_taken", - disc_allowed_total,disc_taken_total); +#ifdef PROC_STATISTICS + if (hd->proc & PR_STATISTICS) { + strcat(bp,"\ncommands issued: "); + for (x=0; x<8; x++) { + sprintf(tbuf," %ld",hd->cmd_cnt[x]); + strcat(bp,tbuf); + } + strcat(bp,"\ndisconnects allowed:"); + for (x=0; x<8; x++) { + sprintf(tbuf," %ld",hd->disc_allowed_cnt[x]); + strcat(bp,tbuf); + } + strcat(bp,"\ndisconnects done: "); + for (x=0; x<8; x++) { + sprintf(tbuf," %ld",hd->disc_done_cnt[x]); + strcat(bp,tbuf); + } + sprintf(tbuf,"\ninterrupts: %ld, DATA_PHASE ints: %ld DMA, %ld PIO", + hd->int_cnt,hd->dma_cnt,hd->pio_cnt); strcat(bp,tbuf); } +#endif if (hd->proc & PR_CONNECTED) { strcat(bp,"\nconnected: "); if (hd->connected) { @@ -1827,12 +1910,11 @@ } - #ifdef MODULE - -Scsi_Host_Template driver_template = WD33C93; - -#include "scsi_module.c" - +int init_module(void) { return 0; } +void cleanup_module(void) {} +void wd33c93_release(void) +{ +MOD_DEC_USE_COUNT; +} #endif - diff -u --recursive --new-file v2.1.16/linux/drivers/scsi/wd33c93.h linux/drivers/scsi/wd33c93.h --- v2.1.16/linux/drivers/scsi/wd33c93.h Mon May 6 12:44:31 1996 +++ linux/drivers/scsi/wd33c93.h Fri Dec 20 11:20:02 1996 @@ -2,7 +2,7 @@ * wd33c93.h - Linux device driver definitions for the * Commodore Amiga A2091/590 SCSI controller card * - * IMPORTANT: This file is for version 1.21 - 20/Mar/1996 + * IMPORTANT: This file is for version 1.23 - 04/Nov/1996 * * Copyright (c) 1996 John Shifflett, GeoLog Consulting * john@geolog.com @@ -183,7 +183,7 @@ int status); -#define DEFAULT_SX_PER 500 /* (ns) fairly safe */ +#define DEFAULT_SX_PER 376 /* (ns) fairly safe */ #define DEFAULT_SX_OFF 0 /* aka async */ #define OPTIMUM_SX_PER 252 /* (ns) best we can do (mult-of-4) */ @@ -208,6 +208,7 @@ int dma_dir; /* data transfer dir. */ dma_setup_t dma_setup; dma_stop_t dma_stop; + unsigned int dma_xfer_mask; uchar *dma_bounce_buffer; unsigned int dma_bounce_len; uchar dma_buffer_pool; /* FEF: buffer from chip_ram? */ @@ -229,9 +230,14 @@ uchar sync_xfer[8]; /* sync_xfer reg settings per target */ uchar sync_stat[8]; /* status of sync negotiation per target */ uchar no_sync; /* bitmask: don't do sync on these targets */ -#if 0 + uchar no_dma; /* set this flag to disable DMA */ uchar proc; /* bitmask: what's in proc output */ -#endif + unsigned long cmd_cnt[8]; /* # of commands issued per target */ + unsigned long int_cnt; /* # of interrupts serviced */ + unsigned long pio_cnt; /* # of pio data transfers */ + unsigned long dma_cnt; /* # of DMA data transfers */ + unsigned long disc_allowed_cnt[8]; /* # of disconnects allowed per target */ + unsigned long disc_done_cnt[8]; /* # of disconnects done per target*/ }; @@ -294,7 +300,7 @@ #define PR_VERSION 1<<0 #define PR_INFO 1<<1 -#define PR_TOTALS 1<<2 +#define PR_STATISTICS 1<<2 #define PR_CONNECTED 1<<3 #define PR_INPUTQ 1<<4 #define PR_DISCQ 1<<5 @@ -313,10 +319,6 @@ int wd33c93_reset (Scsi_Cmnd *, unsigned int); #else int wd33c93_reset (Scsi_Cmnd *); -#endif - -#if 0 -struct proc_dir_entry proc_scsi_wd33c93; #endif #endif /* WD33C93_H */ diff -u --recursive --new-file v2.1.16/linux/fs/Makefile linux/fs/Makefile --- v2.1.16/linux/fs/Makefile Wed May 8 18:28:01 1996 +++ linux/fs/Makefile Thu Dec 19 11:03:35 1996 @@ -75,6 +75,10 @@ ifdef CONFIG_PROC_FS SUB_DIRS += proc +ifeq ($(CONFIG_SUN_OPENPROMFS),m) +MOD_IN_SUB_DIRS += proc +MOD_TO_LIST += openpromfs.o +endif endif ifeq ($(CONFIG_ISO9660_FS),y) diff -u --recursive --new-file v2.1.16/linux/fs/binfmt_elf.c linux/fs/binfmt_elf.c --- v2.1.16/linux/fs/binfmt_elf.c Fri Nov 15 23:49:09 1996 +++ linux/fs/binfmt_elf.c Thu Dec 19 11:20:59 1996 @@ -104,6 +104,17 @@ * Force 16 byte alignment here for generality. */ sp = (unsigned long *) (~15UL & (unsigned long) p); +#ifdef __sparc__ +{ + unsigned long *csp; + csp = sp; + csp -= exec ? DLINFO_ITEMS*2 : 2; + csp -= envc+1; + csp -= argc+1; + if (!(((unsigned long) csp) & 4)) + sp--; +} +#endif /* * Put the ELF interpreter info on the stack diff -u --recursive --new-file v2.1.16/linux/fs/buffer.c linux/fs/buffer.c --- v2.1.16/linux/fs/buffer.c Thu Dec 12 19:37:17 1996 +++ linux/fs/buffer.c Thu Dec 19 16:46:09 1996 @@ -1907,7 +1907,7 @@ { int i; int isize = BUFSIZE_INDEX(BLOCK_SIZE); - long memsize = max_mapnr << PAGE_SHIFT; + long memsize = num_physpages << PAGE_SHIFT; if (memsize >= 64*1024*1024) nr_hash = 65521; diff -u --recursive --new-file v2.1.16/linux/fs/fat/cache.c linux/fs/fat/cache.c --- v2.1.16/linux/fs/fat/cache.c Fri May 10 07:54:52 1996 +++ linux/fs/fat/cache.c Sat Dec 21 14:24:02 1996 @@ -277,7 +277,7 @@ } if (last) fat_access(inode->i_sb,last,MSDOS_SB(inode->i_sb)->fat_bits == - 12 ? 0xff8 : 0xfff8); + 12 ? EOF_FAT12 : EOF_FAT16); else { MSDOS_I(inode)->i_start = 0; inode->i_dirt = 1; diff -u --recursive --new-file v2.1.16/linux/fs/fat/misc.c linux/fs/fat/misc.c --- v2.1.16/linux/fs/fat/misc.c Thu Sep 26 15:28:30 1996 +++ linux/fs/fat/misc.c Sat Dec 21 14:24:02 1996 @@ -140,7 +140,7 @@ return -ENOSPC; } fat_access(sb,nr,MSDOS_SB(sb)->fat_bits == 12 ? - 0xff8 : 0xfff8); + EOF_FAT12 : EOF_FAT16); if (MSDOS_SB(sb)->free_clusters != -1) MSDOS_SB(sb)->free_clusters--; unlock_fat(sb); diff -u --recursive --new-file v2.1.16/linux/fs/fcntl.c linux/fs/fcntl.c --- v2.1.16/linux/fs/fcntl.c Tue Oct 29 19:58:42 1996 +++ linux/fs/fcntl.c Thu Dec 19 11:03:36 1996 @@ -85,13 +85,14 @@ if (!(arg & FASYNC) && (filp->f_flags & FASYNC) && filp->f_op->fasync) filp->f_op->fasync(filp->f_inode, filp, 0); - /* required for SunOS emulation */ + /* required for strict SunOS emulation */ if (O_NONBLOCK != O_NDELAY) if (arg & O_NDELAY) arg |= O_NONBLOCK; - filp->f_flags &= ~(O_APPEND | O_NONBLOCK | FASYNC); + filp->f_flags &= ~(O_APPEND | O_NONBLOCK | + O_NDELAY | FASYNC); filp->f_flags |= arg & (O_APPEND | O_NONBLOCK | - FASYNC); + O_NDELAY | FASYNC); return 0; case F_GETLK: return fcntl_getlk(fd, (struct flock *) arg); diff -u --recursive --new-file v2.1.16/linux/fs/ioctl.c linux/fs/ioctl.c --- v2.1.16/linux/fs/ioctl.c Fri Nov 1 17:13:19 1996 +++ linux/fs/ioctl.c Thu Dec 19 11:03:36 1996 @@ -47,6 +47,7 @@ asmlinkage int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) { struct file * filp; + unsigned int flag; int on, error; if (fd >= NR_OPEN || !(filp = current->files->fd[fd])) @@ -63,10 +64,16 @@ case FIONBIO: if ((error = get_user(on, (int *)arg)) != 0) return error; + flag = O_NONBLOCK; +#ifdef __sparc__ + /* SunOS compatability item. */ + if(O_NONBLOCK != O_NDELAY) + flag |= O_NDELAY; +#endif if (on) - filp->f_flags |= O_NONBLOCK; + filp->f_flags |= flag; else - filp->f_flags &= ~O_NONBLOCK; + filp->f_flags &= ~flag; return 0; case FIOASYNC: /* O_SYNC is not yet implemented, diff -u --recursive --new-file v2.1.16/linux/fs/minix/bitmap.c linux/fs/minix/bitmap.c --- v2.1.16/linux/fs/minix/bitmap.c Tue Mar 12 07:54:11 1996 +++ linux/fs/minix/bitmap.c Fri Dec 20 11:24:38 1996 @@ -4,6 +4,11 @@ * Copyright (C) 1991, 1992 Linus Torvalds */ +/* + * Modified for 680x0 by Hamish Macdonald + * Fixed for 680x0 by Andreas Schwab + */ + /* bitmap.c contains the code that handles the inode and block bitmaps */ #include @@ -57,7 +62,7 @@ printk("minix_free_block: nonexistent bitmap buffer\n"); return; } - if (!clear_bit(bit,bh->b_data)) + if (!minix_clear_bit(bit,bh->b_data)) printk("free_block (%s:%d): bit already cleared\n", kdevname(sb->s_dev), block); mark_buffer_dirty(bh, 1); @@ -77,11 +82,11 @@ j = 8192; for (i=0 ; i<64 ; i++) if ((bh=sb->u.minix_sb.s_zmap[i]) != NULL) - if ((j=find_first_zero_bit(bh->b_data, 8192)) < 8192) + if ((j=minix_find_first_zero_bit(bh->b_data, 8192)) < 8192) break; if (i>=64 || !bh || j>=8192) return 0; - if (set_bit(j,bh->b_data)) { + if (minix_set_bit(j,bh->b_data)) { printk("new_block: bit already set"); goto repeat; } @@ -209,7 +214,7 @@ } minix_clear_inode(inode); clear_inode(inode); - if (!clear_bit(ino & 8191, bh->b_data)) + if (!minix_clear_bit(ino & 8191, bh->b_data)) printk("free_inode: bit %lu already cleared.\n",ino); mark_buffer_dirty(bh, 1); } @@ -229,13 +234,13 @@ j = 8192; for (i=0 ; i<8 ; i++) if ((bh = inode->i_sb->u.minix_sb.s_imap[i]) != NULL) - if ((j=find_first_zero_bit(bh->b_data, 8192)) < 8192) + if ((j=minix_find_first_zero_bit(bh->b_data, 8192)) < 8192) break; if (!bh || j >= 8192) { iput(inode); return NULL; } - if (set_bit(j,bh->b_data)) { /* shouldn't happen */ + if (minix_set_bit(j,bh->b_data)) { /* shouldn't happen */ printk("new_inode: bit already set"); iput(inode); return NULL; diff -u --recursive --new-file v2.1.16/linux/fs/minix/inode.c linux/fs/minix/inode.c --- v2.1.16/linux/fs/minix/inode.c Tue Oct 29 19:58:43 1996 +++ linux/fs/minix/inode.c Fri Dec 20 11:24:38 1996 @@ -5,6 +5,8 @@ * * Copyright (C) 1996 Gertjan van Wingerde (gertjan@cs.vu.nl) * Minix V2 fs support. + * + * Modified for 680x0 by Andreas Schwab */ #include @@ -263,8 +265,8 @@ MOD_DEC_USE_COUNT; return NULL; } - set_bit(0,s->u.minix_sb.s_imap[0]->b_data); - set_bit(0,s->u.minix_sb.s_zmap[0]->b_data); + minix_set_bit(0,s->u.minix_sb.s_imap[0]->b_data); + minix_set_bit(0,s->u.minix_sb.s_zmap[0]->b_data); unlock_super(s); /* set up enough so that it can read an inode */ s->s_dev = dev; diff -u --recursive --new-file v2.1.16/linux/fs/msdos/namei.c linux/fs/msdos/namei.c --- v2.1.16/linux/fs/msdos/namei.c Tue Oct 29 19:58:43 1996 +++ linux/fs/msdos/namei.c Sat Dec 21 14:24:02 1996 @@ -5,6 +5,8 @@ * Hidden files 1995 by Albert Cahalan */ +#include + #define __NO_VERSION__ #include @@ -25,17 +27,23 @@ /* MS-DOS "device special files" */ static const char *reserved_names[] = { +#ifndef CONFIG_ATARI /* GEMDOS is less stupid */ "CON ","PRN ","NUL ","AUX ", "LPT1 ","LPT2 ","LPT3 ","LPT4 ", "COM1 ","COM2 ","COM3 ","COM4 ", +#endif NULL }; /* Characters that are undesirable in an MS-DOS file name */ static char bad_chars[] = "*?<>|\""; +#ifdef CONFIG_ATARI +/* GEMDOS is less restrictive */ +static char bad_if_strict[] = " "; +#else static char bad_if_strict[] = "+=,; "; - +#endif void msdos_put_super(struct super_block *sb) { @@ -96,7 +104,11 @@ /* Get rid of dot - test for it elsewhere */ name++; len--; } +#ifndef CONFIG_ATARI space = 1; /* disallow names that _really_ start with a dot */ +#else + space = 0; /* GEMDOS does not care */ +#endif c = 0; for (walk = res; len && walk-res < 8; walk++) { c = *name++; @@ -129,8 +141,13 @@ if (conv != 'r' && strchr(bad_chars,c)) return -EINVAL; if (conv == 's' && strchr(bad_if_strict,c)) return -EINVAL; - if (c < ' ' || c == ':' || c == '\\' || c == '.') + if (c < ' ' || c == ':' || c == '\\') return -EINVAL; + if (c == '.') { + if (conv == 's') + return -EINVAL; + break; + } if (c >= 'A' && c <= 'Z' && conv == 's') return -EINVAL; space = c == ' '; *walk++ = c >= 'a' && c <= 'z' ? c-32 : c; diff -u --recursive --new-file v2.1.16/linux/fs/proc/array.c linux/fs/proc/array.c --- v2.1.16/linux/fs/proc/array.c Tue Oct 29 19:58:44 1996 +++ linux/fs/proc/array.c Sat Dec 21 14:24:02 1996 @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -67,7 +68,7 @@ int count1; char * pnt; struct user dump; -#ifdef __i386__ +#if defined (__i386__) || defined (__mc68000__) # define FIRST_MAPPED PAGE_SIZE /* we don't have page 0 mapped on x86.. */ #else # define FIRST_MAPPED 0 @@ -142,7 +143,7 @@ count = (prof_len+1)*sizeof(unsigned int) - p; read = 0; - while (p < sizeof(unsigned int) && count > 0) { + while (p < sizeof(unsigned long) && count > 0) { put_user(*((char *)(&sample_step)+p),buf); buf++; p++; count--; read++; } @@ -194,7 +195,9 @@ int i, len; unsigned sum = 0; extern unsigned long total_forks; + unsigned long ticks; + ticks = jiffies * smp_num_cpus; for (i = 0 ; i < NR_IRQS ; i++) sum += kstat.interrupts[i]; len = sprintf(buffer, @@ -210,7 +213,7 @@ kstat.cpu_user, kstat.cpu_nice, kstat.cpu_system, - jiffies - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system), + ticks - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system), kstat.dk_drive[0], kstat.dk_drive[1], kstat.dk_drive[2], kstat.dk_drive[3], kstat.dk_drive_rio[0], kstat.dk_drive_rio[1], @@ -453,6 +456,30 @@ } return pc; } +#elif defined(__mc68000__) + { + unsigned long fp, pc; + unsigned long stack_page; + int count = 0; + extern int sys_pause (void); + + stack_page = p->kernel_stack_page; + if (!stack_page) + return 0; + fp = ((struct switch_stack *)p->tss.ksp)->a6; + do { + if (fp < stack_page || fp >= 4088+stack_page) + return 0; + pc = ((unsigned long *)fp)[1]; + /* FIXME: This depends on the order of these functions. */ + if ((pc < (unsigned long) __down + || pc >= (unsigned long) add_timer) + && (pc < (unsigned long) schedule + || pc >= (unsigned long) sys_pause)) + return pc; + fp = *(unsigned long *) fp; + } while (count++ < 16); + } #endif return 0; } @@ -468,11 +495,18 @@ + (long)&((struct pt_regs *)0)->reg) # define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc))) # define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp) +#elif defined(__mc68000__) +#define KSTK_EIP(tsk) \ + ({ \ + unsigned long eip = 0; \ + if ((tsk)->tss.esp0 > PAGE_SIZE && \ + MAP_NR((tsk)->tss.esp0) < max_mapnr) \ + eip = ((struct pt_regs *) (tsk)->tss.esp0)->pc; \ + eip; }) +#define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp) #elif defined(__sparc__) -# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \ - + (long)&((struct pt_regs *)0)->reg) -# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc))) -# define KSTK_ESP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(u_regs[UREG_FP]))) +# define KSTK_EIP(tsk) ((tsk)->tss.kregs->pc) +# define KSTK_ESP(tsk) ((tsk)->tss.kregs->u_regs[UREG_FP]) #endif /* Gcc optimizes away "strlen(x)" for constant x */ @@ -979,6 +1013,9 @@ #ifdef __SMP_PROF__ extern int get_smp_prof_list(char *); #endif +#ifdef CONFIG_ZORRO +extern int zorro_get_list(char *); +#endif static long get_root_array(char * page, int type, char **start, off_t offset, unsigned long length) @@ -1053,6 +1090,10 @@ #endif case PROC_LOCKS: return get_locks_status(page); +#ifdef CONFIG_ZORRO + case PROC_ZORRO: + return zorro_get_list(page); +#endif } return -EBADF; } diff -u --recursive --new-file v2.1.16/linux/fs/proc/base.c linux/fs/proc/base.c --- v2.1.16/linux/fs/proc/base.c Tue Oct 29 19:58:44 1996 +++ linux/fs/proc/base.c Thu Dec 19 11:15:46 1996 @@ -8,6 +8,7 @@ #include +#include #include #include #include @@ -146,8 +147,21 @@ 0, &proc_arraylong_inode_operations, NULL, proc_pid_fill_inode, }; + +#if CONFIG_AP1000 +static struct proc_dir_entry proc_pid_ringbuf = { + PROC_PID_RINGBUF, 7, "ringbuf", + S_IFREG | S_IRUGO | S_IWUSR, 1, 0, 0, + 0, &proc_ringbuf_inode_operations, + NULL, proc_pid_fill_inode, +}; +#endif + void proc_base_init(void) { +#if CONFIG_AP1000 + proc_register(&proc_pid, &proc_pid_ringbuf); +#endif proc_register(&proc_pid, &proc_pid_status); proc_register(&proc_pid, &proc_pid_mem); proc_register(&proc_pid, &proc_pid_cwd); diff -u --recursive --new-file v2.1.16/linux/fs/proc/inode.c linux/fs/proc/inode.c --- v2.1.16/linux/fs/proc/inode.c Tue Oct 29 19:58:44 1996 +++ linux/fs/proc/inode.c Thu Dec 19 11:03:36 1996 @@ -12,12 +12,19 @@ #include #include #include +#include #include #include static void proc_put_inode(struct inode *inode) { +#ifdef CONFIG_SUN_OPENPROMFS_MODULE + if ((inode->i_ino >= PROC_OPENPROM_FIRST) + && (inode->i_ino < PROC_OPENPROM_FIRST + PROC_NOPENPROM) + && proc_openprom_use) + (*proc_openprom_use)(inode, 0); +#endif if (inode->i_nlink) return; inode->i_size = 0; @@ -74,6 +81,13 @@ struct inode * proc_get_inode(struct super_block * s, int ino, struct proc_dir_entry * de) { struct inode * inode = iget(s, ino); + +#ifdef CONFIG_SUN_OPENPROMFS_MODULE + if ((inode->i_ino >= PROC_OPENPROM_FIRST) + && (inode->i_ino < PROC_OPENPROM_FIRST + PROC_NOPENPROM) + && proc_openprom_use) + (*proc_openprom_use)(inode, 1); +#endif if (inode && inode->i_sb == s) { inode->u.generic_ip = (void *) de; if (de) { @@ -135,16 +149,18 @@ struct task_struct * p; int i; + inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; + inode->i_blocks = 0; + inode->i_blksize = 1024; + ino = inode->i_ino; + if (ino >= PROC_OPENPROM_FIRST && ino < PROC_OPENPROM_FIRST + PROC_NOPENPROM) + return; inode->i_op = NULL; inode->i_mode = 0; inode->i_uid = 0; inode->i_gid = 0; inode->i_nlink = 1; inode->i_size = 0; - inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME; - inode->i_blocks = 0; - inode->i_blksize = 1024; - ino = inode->i_ino; pid = ino >> 16; p = task[0]; for (i = 0; i < NR_TASKS ; i++) diff -u --recursive --new-file v2.1.16/linux/fs/proc/procfs_syms.c linux/fs/proc/procfs_syms.c --- v2.1.16/linux/fs/proc/procfs_syms.c Tue May 14 08:10:52 1996 +++ linux/fs/proc/procfs_syms.c Thu Dec 19 11:03:37 1996 @@ -1,4 +1,5 @@ #include +#include #include #include @@ -18,6 +19,7 @@ X(proc_register_dynamic), X(proc_unregister), X(proc_root), + X(proc_get_inode), X(in_group_p), X(generate_cluster), X(proc_net_inode_operations), @@ -30,6 +32,11 @@ X(proc_scsi), X(proc_scsi_inode_operations), X(dispatch_scsi_info_ptr), + +#if defined(CONFIG_SUN_OPENPROMFS_MODULE) + X(proc_openprom_register), + X(proc_openprom_deregister), +#endif #include }; diff -u --recursive --new-file v2.1.16/linux/fs/proc/root.c linux/fs/proc/root.c --- v2.1.16/linux/fs/proc/root.c Thu Dec 12 19:37:18 1996 +++ linux/fs/proc/root.c Sat Dec 21 14:24:02 1996 @@ -14,6 +14,9 @@ #include #include #include +#ifdef CONFIG_KERNELD +#include +#endif /* * Offset of the first process in the /proc root directory.. @@ -158,6 +161,144 @@ NULL, NULL /* parent, subdir */ }; +#if defined(CONFIG_SUN_OPENPROMFS) || defined(CONFIG_SUN_OPENPROMFS_MODULE) + +static int (*proc_openprom_defreaddir_ptr)(struct inode *, struct file *, void *, filldir_t); +static int (*proc_openprom_deflookup_ptr)(struct inode *, const char *, int, struct inode **); +void (*proc_openprom_use)(struct inode *, int) = 0; +static struct openpromfs_dev *proc_openprom_devices = NULL; +static ino_t proc_openpromdev_ino = PROC_OPENPROMD_FIRST; + +struct inode_operations * +proc_openprom_register(int (*readdir)(struct inode *, struct file *, void *, filldir_t), + int (*lookup)(struct inode *, const char *, int, struct inode **), + void (*use)(struct inode *, int), + struct openpromfs_dev ***devices) +{ + proc_openprom_defreaddir_ptr = (proc_openprom_inode_operations.default_file_ops)->readdir; + proc_openprom_deflookup_ptr = proc_openprom_inode_operations.lookup; + (proc_openprom_inode_operations.default_file_ops)->readdir = readdir; + proc_openprom_inode_operations.lookup = lookup; + proc_openprom_use = use; + *devices = &proc_openprom_devices; + return &proc_openprom_inode_operations; +} + +int proc_openprom_regdev(struct openpromfs_dev *d) +{ + if (proc_openpromdev_ino == PROC_OPENPROMD_FIRST + PROC_NOPENPROMD) return -1; + d->next = proc_openprom_devices; + d->inode = proc_openpromdev_ino++; + proc_openprom_devices = d; + return 0; +} + +int proc_openprom_unregdev(struct openpromfs_dev *d) +{ + if (d == proc_openprom_devices) { + proc_openprom_devices = d->next; + } else if (!proc_openprom_devices) + return -1; + else { + struct openpromfs_dev *p; + + for (p = proc_openprom_devices; p->next != d && p->next; p = p->next); + if (!p->next) return -1; + p->next = d->next; + } + return 0; +} + +#ifdef CONFIG_SUN_OPENPROMFS_MODULE +void +proc_openprom_deregister(void) +{ + (proc_openprom_inode_operations.default_file_ops)->readdir = proc_openprom_defreaddir_ptr; + proc_openprom_inode_operations.lookup = proc_openprom_deflookup_ptr; + proc_openprom_use = 0; +} +#endif + +#if defined(CONFIG_SUN_OPENPROMFS_MODULE) && defined(CONFIG_KERNELD) +static int +proc_openprom_defreaddir(struct inode * inode, struct file * filp, + void * dirent, filldir_t filldir) +{ + request_module("openpromfs"); + if ((proc_openprom_inode_operations.default_file_ops)->readdir != + proc_openprom_defreaddir) + return (proc_openprom_inode_operations.default_file_ops)->readdir + (inode, filp, dirent, filldir); + return -EINVAL; +} + +static int +proc_openprom_deflookup(struct inode * dir,const char * name, int len, + struct inode ** result) +{ + request_module("openpromfs"); + if (proc_openprom_inode_operations.lookup != + proc_openprom_deflookup) + return proc_openprom_inode_operations.lookup + (dir, name, len, result); + iput(dir); + return -ENOENT; +} +#endif + +static struct file_operations proc_openprom_operations = { + NULL, /* lseek - default */ + NULL, /* read - bad */ + NULL, /* write - bad */ +#if defined(CONFIG_SUN_OPENPROMFS_MODULE) && defined(CONFIG_KERNELD) + proc_openprom_defreaddir,/* readdir */ +#else + NULL, /* readdir */ +#endif + NULL, /* select - default */ + NULL, /* ioctl - default */ + NULL, /* mmap */ + NULL, /* no special open code */ + NULL, /* no special release code */ + NULL /* can't fsync */ +}; + +struct inode_operations proc_openprom_inode_operations = { + &proc_openprom_operations,/* default net directory file-ops */ + NULL, /* create */ +#if defined(CONFIG_SUN_OPENPROMFS_MODULE) && defined(CONFIG_KERNELD) + proc_openprom_deflookup,/* lookup */ +#else + NULL, /* lookup */ +#endif + NULL, /* link */ + NULL, /* unlink */ + NULL, /* symlink */ + NULL, /* mkdir */ + NULL, /* rmdir */ + NULL, /* mknod */ + NULL, /* rename */ + NULL, /* readlink */ + NULL, /* follow_link */ + NULL, /* readpage */ + NULL, /* writepage */ + NULL, /* bmap */ + NULL, /* truncate */ + NULL /* permission */ +}; + +struct proc_dir_entry proc_openprom = { + PROC_OPENPROM, 8, "openprom", + S_IFDIR | S_IRUGO | S_IXUGO, 2, 0, 0, + 0, &proc_openprom_inode_operations, + NULL, NULL, + NULL, + &proc_root, NULL +}; + +extern void openpromfs_init (void); +#endif /* CONFIG_SUN_OPENPROMFS */ + int proc_register(struct proc_dir_entry * dir, struct proc_dir_entry * dp) { dp->next = dir->subdir; @@ -286,6 +427,12 @@ S_IFREG | S_IRUGO, 1, 0, 0, }; #endif +#ifdef CONFIG_ZORRO +static struct proc_dir_entry proc_root_zorro = { + PROC_ZORRO, 5, "zorro", + S_IFREG | S_IRUGO, 1, 0, 0, +}; +#endif static struct proc_dir_entry proc_root_cpuinfo = { PROC_CPUINFO, 7, "cpuinfo", S_IFREG | S_IRUGO, 1, 0, 0, @@ -384,6 +531,9 @@ #ifdef CONFIG_PCI proc_register(&proc_root, &proc_root_pci); #endif +#ifdef CONFIG_ZORRO + proc_register(&proc_root, &proc_root_zorro); +#endif proc_register(&proc_root, &proc_root_cpuinfo); proc_register(&proc_root, &proc_root_self); proc_register(&proc_root, &proc_net); @@ -418,6 +568,13 @@ proc_register(&proc_root, &proc_root_locks); proc_register(&proc_root, &proc_root_mounts); + +#if defined(CONFIG_SUN_OPENPROMFS) || defined(CONFIG_SUN_OPENPROMFS_MODULE) +#ifdef CONFIG_SUN_OPENPROMFS + openpromfs_init (); +#endif + proc_register(&proc_root, &proc_openprom); +#endif if (prof_shift) { proc_register(&proc_root, &proc_root_profile); diff -u --recursive --new-file v2.1.16/linux/fs/stat.c linux/fs/stat.c --- v2.1.16/linux/fs/stat.c Tue Oct 29 19:58:44 1996 +++ linux/fs/stat.c Thu Dec 19 11:03:37 1996 @@ -14,7 +14,7 @@ #include -#ifndef __alpha__ +#if !defined(__alpha__) && !defined(__sparc__) /* * For backward compatibility? Maybe this should be moved @@ -102,7 +102,7 @@ copy_to_user(statbuf,&tmp,sizeof(tmp)); } -#ifndef __alpha__ +#if !defined(__alpha__) && !defined(__sparc__) /* * For backward compatibility? Maybe this should be moved * into arch/i386 instead? @@ -140,7 +140,7 @@ return 0; } -#ifndef __alpha__ +#if !defined(__alpha__) && !defined(__sparc__) /* * For backward compatibility? Maybe this should be moved @@ -180,7 +180,7 @@ return 0; } -#ifndef __alpha__ +#if !defined(__alpha__) && !defined(__sparc__) /* * For backward compatibility? Maybe this should be moved diff -u --recursive --new-file v2.1.16/linux/fs/super.c linux/fs/super.c --- v2.1.16/linux/fs/super.c Wed Dec 18 15:58:51 1996 +++ linux/fs/super.c Sat Dec 21 11:42:03 1996 @@ -560,10 +560,9 @@ void put_unnamed_dev(kdev_t dev) { - if (!dev) + if (!dev || MAJOR(dev) != UNNAMED_MAJOR) return; - if (MAJOR(dev) == UNNAMED_MAJOR && - clear_bit(MINOR(dev), unnamed_dev_in_use)) + if (clear_bit(MINOR(dev), unnamed_dev_in_use)) return; printk("VFS: put_unnamed_dev: freeing unused device %s\n", kdevname(dev)); @@ -673,8 +672,7 @@ fsync_dev(dev); if (dev != ROOT_DEV) { blkdev_release (inode); - if (MAJOR(dev) == UNNAMED_MAJOR) - put_unnamed_dev(dev); + put_unnamed_dev(dev); } } if (inode != &dummy_inode) @@ -906,14 +904,17 @@ flags = new_flags & ~MS_MGC_MSK; retval = copy_mount_options(data, &page); if (retval < 0) { + put_unnamed_dev(dev); iput(inode); return retval; } } retval = do_mount(dev,dev_name,dir_name,t,flags,(void *) page); free_page(page); - if (retval && fops && fops->release) + if (retval && fops && fops->release) { fops->release(inode, NULL); + put_unnamed_dev(dev); + } iput(inode); return retval; } diff -u --recursive --new-file v2.1.16/linux/include/asm-alpha/bitops.h linux/include/asm-alpha/bitops.h --- v2.1.16/linux/include/asm-alpha/bitops.h Fri Nov 15 23:49:10 1996 +++ linux/include/asm-alpha/bitops.h Fri Dec 20 11:24:38 1996 @@ -168,6 +168,12 @@ #define ext2_find_first_zero_bit find_first_zero_bit #define ext2_find_next_zero_bit find_next_zero_bit +/* Bitmap functions for the minix filesystem. */ +#define minix_set_bit(nr,addr) set_bit(nr,addr) +#define minix_clear_bit(nr,addr) clear_bit(nr,addr) +#define minix_test_bit(nr,addr) test_bit(nr,addr) +#define minix_find_first_zero_bit(addr,size) find_first_zero_bit(addr,size) + #endif /* __KERNEL__ */ #endif /* _ALPHA_BITOPS_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-alpha/pgtable.h linux/include/asm-alpha/pgtable.h --- v2.1.16/linux/include/asm-alpha/pgtable.h Wed Sep 25 14:33:57 1996 +++ linux/include/asm-alpha/pgtable.h Sat Dec 21 14:24:02 1996 @@ -347,6 +347,9 @@ #define PAGE_DIR_OFFSET(tsk,address) pgd_offset((tsk),(address)) +/* to find an entry in a kernel page-table-directory */ +#define pgd_offset_k(address) pgd_offset(&init_mm, address) + /* to find an entry in a page-table-directory. */ extern inline pgd_t * pgd_offset(struct mm_struct * mm, unsigned long address) { diff -u --recursive --new-file v2.1.16/linux/include/asm-i386/bitops.h linux/include/asm-i386/bitops.h --- v2.1.16/linux/include/asm-i386/bitops.h Fri Nov 15 23:49:10 1996 +++ linux/include/asm-i386/bitops.h Fri Dec 20 11:24:38 1996 @@ -142,6 +142,12 @@ #define ext2_find_first_zero_bit find_first_zero_bit #define ext2_find_next_zero_bit find_next_zero_bit +/* Bitmap functions for the minix filesystem. */ +#define minix_set_bit(nr,addr) set_bit(nr,addr) +#define minix_clear_bit(nr,addr) clear_bit(nr,addr) +#define minix_test_bit(nr,addr) test_bit(nr,addr) +#define minix_find_first_zero_bit(addr,size) find_first_zero_bit(addr,size) + #endif /* __KERNEL__ */ #endif /* _I386_BITOPS_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-i386/pgtable.h linux/include/asm-i386/pgtable.h --- v2.1.16/linux/include/asm-i386/pgtable.h Wed Dec 18 15:58:52 1996 +++ linux/include/asm-i386/pgtable.h Sat Dec 21 19:03:09 1996 @@ -351,6 +351,9 @@ #define pgd_offset(mm, address) \ ((mm)->pgd + ((address) >> PGDIR_SHIFT)) +/* to find an entry in a kernel page-table-directory */ +#define pgd_offset_k(address) pgd_offset(&init_mm, address) + /* Find an entry in the second-level page table.. */ extern inline pmd_t * pmd_offset(pgd_t * dir, unsigned long address) { diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/amigahw.h linux/include/asm-m68k/amigahw.h --- v2.1.16/linux/include/asm-m68k/amigahw.h Wed Sep 25 10:47:40 1996 +++ linux/include/asm-m68k/amigahw.h Fri Dec 20 11:20:02 1996 @@ -13,8 +13,101 @@ ** Created: 9/24/92 by Greg Harp */ -#ifndef _ASMm68k_AMIGAHW_H_ -#define _ASMm68k_AMIGAHW_H_ +#ifndef _M68K_AMIGAHW_H +#define _M68K_AMIGAHW_H + + /* + * Different Amiga models + */ + +extern u_long amiga_model; + +#define AMI_UNKNOWN (0) +#define AMI_500 (1) +#define AMI_500PLUS (2) +#define AMI_600 (3) +#define AMI_1000 (4) +#define AMI_1200 (5) +#define AMI_2000 (6) +#define AMI_2500 (7) +#define AMI_3000 (8) +#define AMI_3000T (9) +#define AMI_3000PLUS (10) +#define AMI_4000 (11) +#define AMI_4000T (12) +#define AMI_CDTV (13) +#define AMI_CD32 (14) +#define AMI_DRACO (15) + + + /* + * Chipsets + */ + +extern u_long amiga_chipset; + +#define CS_STONEAGE (0) +#define CS_OCS (1) +#define CS_ECS (2) +#define CS_AGA (3) + + + /* + * Miscellaneous + */ + +extern u_long amiga_eclock; /* 700 kHz E Peripheral Clock */ +extern u_long amiga_masterclock; /* 28 MHz Master Clock */ +extern u_long amiga_colorclock; /* 3.5 MHz Color Clock */ +extern u_long amiga_chip_size; /* Chip RAM Size (bytes) */ +extern u_char amiga_vblank; /* VBLANK Frequency */ +extern u_char amiga_psfreq; /* Power Supply Frequency */ + + +#define AMIGAHW_DECLARE(name) unsigned name : 1 +#define AMIGAHW_SET(name) (amiga_hw_present.name = 1) +#define AMIGAHW_PRESENT(name) (amiga_hw_present.name) + +struct amiga_hw_present { + /* video hardware */ + AMIGAHW_DECLARE(AMI_VIDEO); /* Amiga Video */ + AMIGAHW_DECLARE(AMI_BLITTER); /* Amiga Blitter */ + AMIGAHW_DECLARE(AMBER_FF); /* Amber Flicker Fixer */ + /* sound hardware */ + AMIGAHW_DECLARE(AMI_AUDIO); /* Amiga Audio */ + /* disk storage interfaces */ + AMIGAHW_DECLARE(AMI_FLOPPY); /* Amiga Floppy */ + AMIGAHW_DECLARE(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */ + AMIGAHW_DECLARE(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */ + AMIGAHW_DECLARE(A1200_IDE); /* IDE (A1200 alike) */ + AMIGAHW_DECLARE(A4000_IDE); /* IDE (A4000 alike) */ + AMIGAHW_DECLARE(CD_ROM); /* CD ROM drive */ + /* other I/O hardware */ + AMIGAHW_DECLARE(AMI_KEYBOARD); /* Amiga Keyboard */ + AMIGAHW_DECLARE(AMI_MOUSE); /* Amiga Mouse */ + AMIGAHW_DECLARE(AMI_SERIAL); /* Amiga Serial */ + AMIGAHW_DECLARE(AMI_PARALLEL); /* Amiga Parallel */ + /* real time clocks */ + AMIGAHW_DECLARE(A2000_CLK); /* Hardware Clock (A2000 alike) */ + AMIGAHW_DECLARE(A3000_CLK); /* Hardware Clock (A3000 alike) */ + /* supporting hardware */ + AMIGAHW_DECLARE(CHIP_RAM); /* Chip RAM */ + AMIGAHW_DECLARE(PAULA); /* Paula (8364) */ + AMIGAHW_DECLARE(DENISE); /* Denise (8362) */ + AMIGAHW_DECLARE(DENISE_HR); /* Denise (8373) */ + AMIGAHW_DECLARE(LISA); /* Lisa (8375) */ + AMIGAHW_DECLARE(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */ + AMIGAHW_DECLARE(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */ + AMIGAHW_DECLARE(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */ + AMIGAHW_DECLARE(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */ + AMIGAHW_DECLARE(ALICE_PAL); /* PAL Alice (8374) */ + AMIGAHW_DECLARE(ALICE_NTSC); /* NTSC Alice (8374) */ + AMIGAHW_DECLARE(MAGIC_REKICK); /* A3000 Magic Hard Rekick */ + AMIGAHW_DECLARE(ZORRO); /* Zorro AutoConfig */ + AMIGAHW_DECLARE(ZORRO3); /* Zorro III */ +}; + +extern struct amiga_hw_present amiga_hw_present; struct CUSTOM { u_short bltddat; @@ -172,15 +265,9 @@ u_char crb; char pade[0xff]; }; -#if 1 #define zTwoBase (0x80000000) #define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase) #define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase) -#else -#define zTwoBase 0 -#define ZTWO_PADDR(x) (x) -#define ZTWO_VADDR(x) (x) -#endif #define CUSTOM_PHYSADDR (0xdff000) #define custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR))) @@ -244,4 +331,4 @@ #define TOD2000_HOUR1_PM (1<<2) #define TOD_2000 ((struct tod2000 *)(zTwoBase+0xDC0000)) -#endif /* asm-m68k/amigahw.h */ +#endif /* __ASMm68k_AMIGAHW_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/amigatypes.h linux/include/asm-m68k/amigatypes.h --- v2.1.16/linux/include/asm-m68k/amigatypes.h Mon May 20 07:54:28 1996 +++ linux/include/asm-m68k/amigatypes.h Thu Jan 1 02:00:00 1970 @@ -1,59 +0,0 @@ -/* -** linux/amigatypes.h -- Types used in Amiga Linux kernel source -** -** Copyright 1992 by Greg Harp -** -** This file is subject to the terms and conditions of the GNU General Public -** License. See the file COPYING in the main directory of this archive -** for more details. -** -** Created 09/29/92 by Greg Harp -** -** Moved all Zorro definitions to asm/zorro.h which is where they -** really belong - 24/11/95 Jes Sorensen -*/ - -#ifndef _LINUX_AMIGATYPES_H_ -#define _LINUX_AMIGATYPES_H_ - -#ifdef __KERNEL__ /* only if compiling the kernel */ -#include -#endif - -/* - * Different models of Amiga - */ -#define AMI_UNKNOWN (0) -#define AMI_500 (1) -#define AMI_500PLUS (2) -#define AMI_600 (3) -#define AMI_1000 (4) -#define AMI_1200 (5) -#define AMI_2000 (6) -#define AMI_2500 (7) -#define AMI_3000 (8) -#define AMI_3000T (9) -#define AMI_3000PLUS (10) -#define AMI_4000 (11) -#define AMI_4000T (12) -#define AMI_CDTV (13) -#define AMI_CD32 (14) -#define AMI_DRACO (15) - -/* - * chipsets - */ -#define CS_STONEAGE (0) -#define CS_OCS (1) -#define CS_ECS (2) -#define CS_AGA (3) - -/* - * Amiga clocks - */ - -extern u_long amiga_masterclock; /* 28 MHz */ -extern u_long amiga_colorclock; /* 3.5 MHz */ -#define amiga_eclock boot_info.bi_amiga.eclock /* 700 kHz */ - -#endif /* asm-m68k/amigatypes.h */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/atarihw.h linux/include/asm-m68k/atarihw.h --- v2.1.16/linux/include/asm-m68k/atarihw.h Wed Sep 25 10:47:41 1996 +++ linux/include/asm-m68k/atarihw.h Fri Dec 20 11:20:02 1996 @@ -22,6 +22,68 @@ #include +extern u_long atari_mch_cookie; + +/* mch_cookie values (upper word) */ +#define ATARI_MCH_ST 0 +#define ATARI_MCH_STE 1 +#define ATARI_MCH_TT 2 +#define ATARI_MCH_FALCON 3 + +/* + * Define several Hardware-Chips for indication so that for the ATARI we do + * no longer decide whether it is a Falcon or other machine . It's just + * important what hardware the machine uses + */ + +/* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */ + +#define ATARIHW_DECLARE(name) unsigned name : 1 +#define ATARIHW_SET(name) (atari_hw_present.name = 1) +#define ATARIHW_PRESENT(name) (atari_hw_present.name) + +struct atari_hw_present { + /* video hardware */ + ATARIHW_DECLARE(STND_SHIFTER); /* ST-Shifter - no base low ! */ + ATARIHW_DECLARE(EXTD_SHIFTER); /* STe-Shifter - 24 bit address */ + ATARIHW_DECLARE(TT_SHIFTER); /* TT-Shifter */ + ATARIHW_DECLARE(VIDEL_SHIFTER); /* Falcon-Shifter */ + /* sound hardware */ + ATARIHW_DECLARE(YM_2149); /* Yamaha YM 2149 */ + ATARIHW_DECLARE(PCM_8BIT); /* PCM-Sound in STe-ATARI */ + ATARIHW_DECLARE(CODEC); /* CODEC Sound (Falcon) */ + /* disk storage interfaces */ + ATARIHW_DECLARE(TT_SCSI); /* Directly mapped NCR5380 */ + ATARIHW_DECLARE(ST_SCSI); /* NCR5380 via ST-DMA (Falcon) */ + ATARIHW_DECLARE(ACSI); /* Standard ACSI like in STs */ + ATARIHW_DECLARE(IDE); /* IDE Interface */ + ATARIHW_DECLARE(FDCSPEED); /* 8/16 MHz switch for FDC */ + /* other I/O hardware */ + ATARIHW_DECLARE(ST_MFP); /* The ST-MFP (there should be no Atari + without it... but who knows?) */ + ATARIHW_DECLARE(TT_MFP); /* 2nd MFP */ + ATARIHW_DECLARE(SCC); /* Serial Communications Contr. */ + ATARIHW_DECLARE(ST_ESCC); /* SCC Z83230 in an ST */ + ATARIHW_DECLARE(ANALOG_JOY); /* Paddle Interface for STe + and Falcon */ + ATARIHW_DECLARE(MICROWIRE); /* Microwire Interface */ + /* DMA */ + ATARIHW_DECLARE(STND_DMA); /* 24 Bit limited ST-DMA */ + ATARIHW_DECLARE(EXTD_DMA); /* 32 Bit ST-DMA */ + ATARIHW_DECLARE(SCSI_DMA); /* DMA for the NCR5380 */ + ATARIHW_DECLARE(SCC_DMA); /* DMA for the SCC */ + /* real time clocks */ + ATARIHW_DECLARE(TT_CLK); /* TT compatible clock chip */ + ATARIHW_DECLARE(MSTE_CLK); /* Mega ST(E) clock chip */ + /* supporting hardware */ + ATARIHW_DECLARE(SCU); /* System Control Unit */ + ATARIHW_DECLARE(BLITTER); /* Blitter */ + ATARIHW_DECLARE(VME); /* VME Bus */ +}; + +extern struct atari_hw_present atari_hw_present; + + /* Reading the MFP port register gives a machine independent delay, since the * MFP always has a 8 MHz clock. This avoids problems with the varying length * of nops on various machines. Somebody claimed that the tstb takes 600 ns. diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/bootinfo.h linux/include/asm-m68k/bootinfo.h --- v2.1.16/linux/include/asm-m68k/bootinfo.h Thu Jan 1 02:00:00 1970 +++ linux/include/asm-m68k/bootinfo.h Fri Dec 20 11:20:02 1996 @@ -0,0 +1,215 @@ +/* +** asm/bootinfo.h -- Definition of the Linux/m68k boot information structure +** +** Copyright 1992 by Greg Harp +** +** This file is subject to the terms and conditions of the GNU General Public +** License. See the file COPYING in the main directory of this archive +** for more details. +** +** Created 09/29/92 by Greg Harp +** +** 5/2/94 Roman Hodek: +** Added bi_atari part of the machine dependent union bi_un; for now it +** contains just a model field to distinguish between TT and Falcon. +** 26/7/96 Roman Zippel: +** Renamed to setup.h; added some useful macros to allow gcc some +** optimizations if possible. +** 5/10/96 Geert Uytterhoeven: +** Redesign of the boot information structure; renamed to bootinfo.h again +** 27/11/96 Geert Uytterhoeven: +** Backwards compatibility with bootinfo interface version 1.0 +*/ + +#ifndef _M68K_BOOTINFO_H +#define _M68K_BOOTINFO_H + + + /* + * Bootinfo definitions + * + * This is an easily parsable and extendable structure containing all + * information to be passed from the bootstrap to the kernel. + * + * This way I hope to keep all future changes back/forewards compatible. + * Thus, keep your fingers crossed... + * + * This structure is copied right after the kernel bss by the bootstrap + * routine. + */ + +#ifndef __ASSEMBLY__ + +struct bi_record { + unsigned short tag; /* tag ID */ + unsigned short size; /* size of record (in bytes) */ + unsigned long data[0]; /* data */ +}; + +#else /* __ASSEMBLY__ */ + +BIR_tag = 0 +BIR_size = BIR_tag+2 +BIR_data = BIR_size+2 + +#endif /* __ASSEMBLY__ */ + + + /* + * Tag Definitions + * + * Machine independent tags start counting from 0x0000 + * Machine dependent tags start counting from 0x8000 + */ + +#define BI_LAST 0x0000 /* last record (sentinel) */ +#define BI_MACHTYPE 0x0001 /* machine type (u_long) */ +#define BI_CPUTYPE 0x0002 /* cpu type (u_long) */ +#define BI_FPUTYPE 0x0003 /* fpu type (u_long) */ +#define BI_MMUTYPE 0x0004 /* mmu type (u_long) */ +#define BI_MEMCHUNK 0x0005 /* memory chunk address and size */ + /* (struct mem_info) */ +#define BI_RAMDISK 0x0006 /* ramdisk address and size */ + /* (struct mem_info) */ +#define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */ + /* (string) */ + + /* + * Amiga-specific tags + */ + +#define BI_AMIGA_MODEL 0x8000 /* model (u_long) */ +#define BI_AMIGA_AUTOCON 0x8001 /* AutoConfig device */ + /* (struct ConfigDev) */ +#define BI_AMIGA_CHIP_SIZE 0x8002 /* size of Chip RAM (u_long) */ +#define BI_AMIGA_VBLANK 0x8003 /* VBLANK frequency (u_char) */ +#define BI_AMIGA_PSFREQ 0x8004 /* power supply frequency (u_char) */ +#define BI_AMIGA_ECLOCK 0x8005 /* EClock frequency (u_long) */ +#define BI_AMIGA_CHIPSET 0x8006 /* native chipset present (u_long) */ +#define BI_AMIGA_SERPER 0x8007 /* serial port period (u_short) */ + + /* + * Atari-specific tags + */ + +#define BI_ATARI_MCH_COOKIE 0x8000 /* _MCH cookie from TOS (u_long) */ + + + /* + * Stuff for bootinfo interface versioning + * + * At the start of kernel code, a 'struct bootversion' is located. + * bootstrap checks for a matching version of the interface before booting + * a kernel, to avoid user confusion if kernel and bootstrap don't work + * together :-) + * + * If incompatible changes are made to the bootinfo interface, the major + * number below should be stepped (and the minor reset to 0) for the + * appropriate machine. If a change is backward-compatible, the minor + * should be stepped. "Backwards-compatible" means that booting will work, + * but certain features may not. + */ + +#define BOOTINFOV_MAGIC 0x4249561A /* 'BIV^Z' */ +#define MK_BI_VERSION(major,minor) (((major)<<16)+(minor)) +#define BI_VERSION_MAJOR(v) (((v) >> 16) & 0xffff) +#define BI_VERSION_MINOR(v) ((v) & 0xffff) + +#ifndef __ASSEMBLY__ + +struct bootversion { + unsigned short branch; + unsigned long magic; + struct { + unsigned long machtype; + unsigned long version; + } machversions[0]; +}; + +#endif /* __ASSEMBLY__ */ + +#define AMIGA_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) +#define ATARI_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) + + +#ifdef BOOTINFO_COMPAT_1_0 + + /* + * Backwards compatibility with bootinfo interface version 1.0 + */ + +#define COMPAT_AMIGA_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) +#define COMPAT_ATARI_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) + +#include +#include + +#define COMPAT_NUM_AUTO 16 + +struct compat_bi_Amiga { + int model; + int num_autocon; + struct ConfigDev autocon[COMPAT_NUM_AUTO]; + unsigned long chip_size; + unsigned char vblank; + unsigned char psfreq; + unsigned long eclock; + unsigned long chipset; + unsigned long hw_present; +}; + +struct compat_bi_Atari { + unsigned long hw_present; + unsigned long mch_cookie; +}; + +struct compat_mem_info { + unsigned long addr; + unsigned long size; +}; + +#define COMPAT_NUM_MEMINFO 4 + +#define COMPAT_CPUB_68020 0 +#define COMPAT_CPUB_68030 1 +#define COMPAT_CPUB_68040 2 +#define COMPAT_CPUB_68060 3 +#define COMPAT_FPUB_68881 5 +#define COMPAT_FPUB_68882 6 +#define COMPAT_FPUB_68040 7 +#define COMPAT_FPUB_68060 8 + +#define COMPAT_CPU_68020 (1<> 8); +} + +extern __inline__ __u32 __constant_swab32 (__u32 val) +{ + return (val << 24) | ((val << 8) & 0xff0000) | + ((val >> 8) & 0xff00) | (val >> 24); } extern __inline__ __u32 __swab32 (__u32 val) diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/checksum.h linux/include/asm-m68k/checksum.h --- v2.1.16/linux/include/asm-m68k/checksum.h Thu May 16 09:05:11 1996 +++ linux/include/asm-m68k/checksum.h Fri Dec 20 11:20:02 1996 @@ -110,4 +110,35 @@ return csum_fold (csum_partial(buff, len, 0)); } +#define _HAVE_ARCH_IPV6_CSUM +static __inline__ unsigned short int +csum_ipv6_magic(struct in6_addr *saddr, struct in6_addr *daddr, + __u16 len, unsigned short proto, unsigned int sum) +{ + register unsigned long tmp; + __asm__("addl %2@,%0\n\t" + "movel %2@(4),%1\n\t" + "addxl %1,%0\n\t" + "movel %2@(8),%1\n\t" + "addxl %1,%0\n\t" + "movel %2@(12),%1\n\t" + "addxl %1,%0\n\t" + "movel %3@,%1\n\t" + "addxl %1,%0\n\t" + "movel %3@(4),%1\n\t" + "addxl %1,%0\n\t" + "movel %3@(8),%1\n\t" + "addxl %1,%0\n\t" + "movel %3@(12),%1\n\t" + "addxl %1,%0\n\t" + "addxl %4,%0\n\t" + "clrl %1\n\t" + "addxl %1,%0" + : "=&d" (sum), "=&d" (tmp) + : "a" (saddr), "a" (daddr), "d" ((__u32) len + proto), + "0" (sum)); + + return csum_fold(sum); +} + #endif /* _M68K_CHECKSUM_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/keyboard.h linux/include/asm-m68k/keyboard.h --- v2.1.16/linux/include/asm-m68k/keyboard.h Thu Jan 1 02:00:00 1970 +++ linux/include/asm-m68k/keyboard.h Fri Dec 20 11:20:02 1996 @@ -0,0 +1,22 @@ +/* + * linux/include/asm-m68k/keyboard.h + * + * Created 3 Nov 1996 by Geert Uytterhoeven + */ + +/* + * This file contains the m68k architecture specific keyboard definitions + */ + +#ifndef __M68K_KEYBOARD_H +#define __M68K_KEYBOARD_H + +#ifdef __KERNEL__ + +#define TRANSLATE_SCANCODES 0 +#define USE_MACHDEP_ABSTRACTION 1 +#include + +#endif /* __KERNEL__ */ + +#endif /* __ASMm68k_KEYBOARD_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/machdep.h linux/include/asm-m68k/machdep.h --- v2.1.16/linux/include/asm-m68k/machdep.h Wed Sep 25 10:47:41 1996 +++ linux/include/asm-m68k/machdep.h Fri Dec 20 11:20:02 1996 @@ -21,6 +21,8 @@ extern int (*mach_free_irq) (unsigned int irq, void *dev_id); extern void (*mach_enable_irq) (unsigned int irq); extern void (*mach_disable_irq) (unsigned int irq); +extern void (*mach_get_model) (char *model); +extern int (*mach_get_hardware_list) (char *buffer); extern int (*mach_get_irq_list) (char *buf); extern void (*mach_process_int) (int irq, struct pt_regs *fp); /* machine dependent timer functions */ @@ -41,5 +43,6 @@ extern void (*mach_video_setup)(char *, int *); extern void (*mach_floppy_setup)(char *, int *); extern void (*mach_floppy_eject)(void); +extern void (*mach_syms_export)(void); #endif /* _M68K_MACHDEP_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/pgtable.h linux/include/asm-m68k/pgtable.h --- v2.1.16/linux/include/asm-m68k/pgtable.h Fri Nov 22 18:28:20 1996 +++ linux/include/asm-m68k/pgtable.h Fri Dec 20 11:20:03 1996 @@ -1,7 +1,7 @@ #ifndef _M68K_PGTABLE_H #define _M68K_PGTABLE_H -#include +#include #ifndef __ASSEMBLY__ @@ -16,17 +16,20 @@ static inline void __flush_tlb(void) { if (CPU_IS_040_OR_060) - __asm__ __volatile__(".word 0xf510\n"::); /* pflushan */ + __asm__ __volatile__(".chip 68040\n\t" + "pflushan\n\t" + ".chip 68k"); else - __asm__ __volatile__("pflusha\n"::); + __asm__ __volatile__("pflusha"); } static inline void __flush_tlb_one(unsigned long addr) { if (CPU_IS_040_OR_060) { - register unsigned long a0 __asm__ ("a0") = addr; - __asm__ __volatile__(".word 0xf508" /* pflush (%a0) */ - : : "a" (a0)); + __asm__ __volatile__(".chip 68040\n\t" + "pflush (%0)\n\t" + ".chip 68k" + : : "a" (addr)); } else __asm__ __volatile__("pflush #0,#0,(%0)" : : "a" (addr)); } @@ -39,9 +42,11 @@ static inline void flush_tlb_all(void) { if (CPU_IS_040_OR_060) - __asm__ __volatile__(".word 0xf518\n"::); /* pflusha */ + __asm__ __volatile__(".chip 68040\n\t" + "pflusha\n\t" + ".chip 68k"); else - __asm__ __volatile__("pflusha\n"::); + __asm__ __volatile__("pflusha"); } static inline void flush_tlb_mm(struct mm_struct *mm) @@ -68,10 +73,13 @@ * within a page table are directly modified. Thus, the following * hook is made available. */ -#define set_pte(pteptr, pteval) do{ \ - ((*(pteptr)) = (pteval)); \ - if (CPU_IS_060) \ - __asm__ __volatile__(".word 0xf518\n"::); /* pflusha */ \ +#define set_pte(pteptr, pteval) \ + do{ \ + *(pteptr) = (pteval); \ + if (CPU_IS_060) \ + __asm__ __volatile__(".chip 68060\n\t" \ + "pflusha\n\t" \ + ".chip 68k"); \ } while(0) @@ -334,18 +342,19 @@ tsk->tss.crp[1] = VTOP(pgdir); if (tsk == current) { if (CPU_IS_040_OR_060) - __asm__ __volatile__ ("movel %0@,%/d0\n\t" - ".long 0x4e7b0806\n\t" - /* movec d0,urp */ - : : "a" (&tsk->tss.crp[1]) - : "d0"); - else - __asm__ __volatile__ ("movec %/cacr,%/d0\n\t" - "oriw #0x0808,%/d0\n\t" - "movec %/d0,%/cacr\n\t" - "pmove %0@,%/crp\n\t" - : : "a" (&tsk->tss.crp[0]) - : "d0"); + __asm__ __volatile__ (".chip 68040\n\t" + "movec %0,%%urp\n\t" + ".chip 68k" + : : "r" (tsk->tss.crp[1])); + else { + unsigned long tmp; + __asm__ __volatile__ ("movec %%cacr,%0\n\t" + "orw #0x0808,%0\n\t" + "movec %0,%%cacr\n\t" + "pmove %1,%%crp\n\t" + : "=d" (tmp) + : "m" (tsk->tss.crp[0])); + } } } @@ -392,10 +401,10 @@ pte_t *ptep; if(CPU_IS_060) - __asm__ __volatile__ ("movel %0,%/a0\n\t" - ".word 0xf470" - : : "g" (VTOP(vaddr)) - : "a0"); + __asm__ __volatile__ (".chip 68060\n\t" + "cpushp (%0)\n\t" + ".chip 68k" + : : "a" (VTOP(vaddr))); dir = pgd_offset_k(vaddr); pmdp = pmd_offset(dir,vaddr); @@ -556,17 +565,21 @@ return (pgd_t *)get_pointer_table (); } -#define flush_icache() \ -do { \ - if (CPU_IS_040_OR_060) \ - asm __volatile__ ("nop; .word 0xf498 /* cinva %%ic */"); \ - else \ - asm __volatile__ ("movec %/cacr,%/d0;" \ - "oriw %0,%/d0;" \ - "movec %/d0,%/cacr" \ - : /* no outputs */ \ - : "i" (FLUSH_I) \ - : "d0"); \ +#define flush_icache() \ +do { \ + if (CPU_IS_040_OR_060) \ + asm __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "cinva %%ic\n\t" \ + ".chip 68k"); \ + else { \ + unsigned long _tmp; \ + asm __volatile__ ("movec %%cacr,%0\n\t" \ + "orw %1,%0\n\t" \ + "movec %0,%%cacr" \ + : "=&d" (_tmp) \ + : "id" (FLUSH_I)); \ + } \ } while (0) /* @@ -596,22 +609,31 @@ process changes. */ #define __flush_cache_all() \ do { \ - if (CPU_IS_040_OR_060) \ - __asm__ __volatile__ ("nop; .word 0xf478\n" ::); \ - else \ - __asm__ __volatile__ ("movec %%cacr,%%d0\n\t" \ - "orw %0,%%d0\n\t" \ - "movec %%d0,%%cacr" \ - : : "di" (FLUSH_I_AND_D) : "d0"); \ + if (CPU_IS_040_OR_060) \ + __asm__ __volatile__ ("nop\n\t" \ + ".chip 68040\n\t" \ + "cpusha %dc\n\t" \ + ".chip 68k"); \ + else { \ + unsigned long _tmp; \ + __asm__ __volatile__ ("movec %%cacr,%0\n\t" \ + "orw %1,%0\n\t" \ + "movec %0,%%cacr" \ + : "=&d" (_tmp) \ + : "di" (FLUSH_I_AND_D)); \ + } \ } while (0) #define __flush_cache_030() \ do { \ - if (CPU_IS_020_OR_030) \ - __asm__ __volatile__ ("movec %%cacr,%%d0\n\t" \ - "orw %0,%%d0\n\t" \ - "movec %%d0,%%cacr" \ - : : "di" (FLUSH_I_AND_D) : "d0"); \ + if (CPU_IS_020_OR_030) { \ + unsigned long _tmp; \ + __asm__ __volatile__ ("movec %%cacr,%0\n\t" \ + "orw %1,%0\n\t" \ + "movec %0,%%cacr" \ + : "=&d" (_tmp) \ + : "di" (FLUSH_I_AND_D)); \ + } \ } while (0) #define flush_cache_all() __flush_cache_all() @@ -656,17 +678,21 @@ extern inline void flush_page_to_ram (unsigned long address) { if (CPU_IS_040_OR_060) { - register unsigned long tmp __asm ("a0") = VTOP(address); __asm__ __volatile__ ("nop\n\t" - ".word 0xf470 /* cpushp %%dc,(%0) */\n\t" - ".word 0xf490 /* cinvp %%ic,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushp %%dc,(%0)\n\t" + "cinvp %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (VTOP(address))); + } + else { + unsigned long _tmp; + __asm volatile ("movec %%cacr,%0\n\t" + "orw %1,%0\n\t" + "movec %0,%%cacr" + : "=&d" (_tmp) + : "di" (FLUSH_I)); } - else - __asm volatile ("movec %%cacr,%%d0\n\t" - "orw %0,%%d0\n\t" - "movec %%d0,%%cacr" - : : "di" (FLUSH_I) : "d0"); } /* Push n pages at kernel virtual address and clear the icache */ @@ -674,19 +700,23 @@ { if (CPU_IS_040_OR_060) { while (n--) { - register unsigned long tmp __asm ("a0") = VTOP(address); __asm__ __volatile__ ("nop\n\t" - ".word 0xf470 /* cpushp %%dc,(%0) */\n\t" - ".word 0xf490 /* cinvp %%ic,(%0) */" - : : "a" (tmp)); + ".chip 68040\n\t" + "cpushp %%dc,(%0)\n\t" + "cinvp %%ic,(%0)\n\t" + ".chip 68k" + : : "a" (VTOP(address))); address += PAGE_SIZE; } } - else - __asm volatile ("movec %%cacr,%%d0\n\t" - "orw %0,%%d0\n\t" - "movec %%d0,%%cacr" - : : "di" (FLUSH_I) : "d0"); + else { + unsigned long _tmp; + __asm volatile ("movec %%cacr,%0\n\t" + "orw %1,%0\n\t" + "movec %0,%%cacr" + : "=&d" (_tmp) + : "di" (FLUSH_I)); + } } /* diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/processor.h linux/include/asm-m68k/processor.h --- v2.1.16/linux/include/asm-m68k/processor.h Fri Nov 22 18:28:20 1996 +++ linux/include/asm-m68k/processor.h Fri Dec 20 11:20:03 1996 @@ -61,7 +61,9 @@ unsigned long nilstate = 0; /* clear floating point state */ - __asm__ __volatile__ ("frestore %0@" : : "a" (&nilstate)); + __asm__ __volatile__ (".chip 68k/68881\n\t" + "frestore %0@\n\t" + ".chip 68k" : : "a" (&nilstate)); /* reads from user space */ set_fs(USER_DS); @@ -76,7 +78,15 @@ */ extern inline unsigned long thread_saved_pc(struct thread_struct *t) { - return ((unsigned long *)((struct switch_stack *)t->ksp)->a6)[1]; + extern int sys_pause(void); + extern void schedule(void); + struct switch_stack *sw = (struct switch_stack *)t->ksp; + /* Check whether the thread is blocked in resume() */ + if (sw->retpc >= (unsigned long)schedule && + sw->retpc < (unsigned long)sys_pause) + return ((unsigned long *)sw->a6)[1]; + else + return sw->retpc; } #endif diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/serial.h linux/include/asm-m68k/serial.h --- v2.1.16/linux/include/asm-m68k/serial.h Wed May 8 07:20:01 1996 +++ linux/include/asm-m68k/serial.h Fri Dec 20 11:20:03 1996 @@ -20,6 +20,9 @@ #define PORT_16550 3 #define PORT_16550A 4 #define PORT_CIRRUS 5 +#define PORT_16650V2 7 +#define PORT_16750 8 + #define SER_SCC_NORM 100 /* standard SCC channel */ #define SER_SCC_DMA 101 /* SCC channel with DMA support */ #define SER_MFP_CTRL 102 /* standard MFP port with modem control signals */ @@ -130,7 +133,7 @@ #define ASYNC_SAK 0x0004 /* Secure Attention Key (Orange book) */ #define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */ -#define ASYNC_SPD_MASK 0x0030 +#define ASYNC_SPD_MASK 0x1030 #define ASYNC_SPD_HI 0x0010 /* Use 56000 instead of 38400 bps */ #define ASYNC_SPD_VHI 0x0020 /* Use 115200 instead of 38400 bps */ @@ -142,8 +145,13 @@ #define ASYNC_PGRP_LOCKOUT 0x0200 /* Lock out cua opens based on pgrp */ #define ASYNC_CALLOUT_NOHUP 0x0400 /* Don't do hangups for cua device */ -#define ASYNC_FLAGS 0x0FFF /* Possible legal async flags */ -#define ASYNC_USR_MASK 0x0430 /* Legal flags that non-privileged +#define ASYNC_HARDPPS_CD 0x0800 /* Call hardpps when CD goes high */ + +#define ASYNC_SPD_SHI 0x1000 /* Use 230400 instead of 38400 bps */ +#define ASYNC_SPD_WARP 0x1010 /* Use 460800 instead of 38400 bps */ + +#define ASYNC_FLAGS 0x1FFF /* Possible legal async flags */ +#define ASYNC_USR_MASK 0x1430 /* Legal flags that non-privileged * users can set or reset */ /* Internal flags used only by drivers/char/m68kserial.c */ @@ -154,6 +162,8 @@ #define ASYNC_CLOSING 0x08000000 /* Serial port is closing */ #define ASYNC_CTS_FLOW 0x04000000 /* Do CTS flow control */ #define ASYNC_CHECK_CD 0x02000000 /* i.e., CLOCAL */ + +#define ASYNC_INTERNAL_FLAGS 0xFF000000 /* Internal flags */ /* * Serial input interrupt line counters -- external structure diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/setup.h linux/include/asm-m68k/setup.h --- v2.1.16/linux/include/asm-m68k/setup.h Wed Sep 25 10:47:42 1996 +++ linux/include/asm-m68k/setup.h Fri Dec 20 11:20:03 1996 @@ -1,5 +1,5 @@ /* -** asm/setup.h -- Definition of the Linux/m68k boot information structure +** asm/setup.h -- Definition of the Linux/m68k setup information ** ** Copyright 1992 by Greg Harp ** @@ -15,216 +15,38 @@ ** 26/7/96 Roman Zippel: ** Renamed to setup.h; added some useful macros to allow gcc some ** optimizations if possible. +** 5/10/96 Geert Uytterhoeven: +** Redesign of the boot information structure; moved boot information +** structure to bootinfo.h */ #ifndef _M68K_SETUP_H #define _M68K_SETUP_H #include -#include -/* - * Amiga specific part of bootinfo structure. - */ -#define NUM_AUTO 16 - -#ifndef __ASSEMBLY__ - -#define AMIGAHW_DECLARE(name) unsigned name : 1 -#define AMIGAHW_SET(name) (boot_info.bi_amiga.hw_present.name = 1) -#define AMIGAHW_PRESENT(name) (boot_info.bi_amiga.hw_present.name) - -struct bi_Amiga { - int model; /* Amiga Model (3000?) */ - int num_autocon; /* # of autoconfig devices found */ - struct ConfigDev autocon[NUM_AUTO]; /* up to 16 autoconfig devices */ -#ifdef HACKER_KERNEL - void (*exit_func)(void); /* addr of function to exit kernel */ - unsigned long chip_addr; /* start of chip memory (bytes) */ -#endif - unsigned long chip_size; /* size of chip memory (bytes) */ - unsigned char vblank; /* VBLANK frequency */ - unsigned char psfreq; /* power supply frequency */ - unsigned long eclock; /* EClock frequency */ - unsigned long chipset; /* native chipset present */ - struct { - /* video hardware */ - AMIGAHW_DECLARE(AMI_VIDEO); /* Amiga Video */ - AMIGAHW_DECLARE(AMI_BLITTER); /* Amiga Blitter */ - AMIGAHW_DECLARE(AMBER_FF); /* Amber Flicker Fixer */ - /* sound hardware */ - AMIGAHW_DECLARE(AMI_AUDIO); /* Amiga Audio */ - /* disk storage interfaces */ - AMIGAHW_DECLARE(AMI_FLOPPY); /* Amiga Floppy */ - AMIGAHW_DECLARE(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */ - AMIGAHW_DECLARE(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */ - AMIGAHW_DECLARE(A1200_IDE); /* IDE (A1200 alike) */ - AMIGAHW_DECLARE(A4000_IDE); /* IDE (A4000 alike) */ - AMIGAHW_DECLARE(CD_ROM); /* CD ROM drive */ - /* other I/O hardware */ - AMIGAHW_DECLARE(AMI_KEYBOARD); /* Amiga Keyboard */ - AMIGAHW_DECLARE(AMI_MOUSE); /* Amiga Mouse */ - AMIGAHW_DECLARE(AMI_SERIAL); /* Amiga Serial */ - AMIGAHW_DECLARE(AMI_PARALLEL); /* Amiga Parallel */ - /* real time clocks */ - AMIGAHW_DECLARE(A2000_CLK); /* Hardware Clock (A2000 alike) */ - AMIGAHW_DECLARE(A3000_CLK); /* Hardware Clock (A3000 alike) */ - /* supporting hardware */ - AMIGAHW_DECLARE(CHIP_RAM); /* Chip RAM */ - AMIGAHW_DECLARE(PAULA); /* Paula (8364) */ - AMIGAHW_DECLARE(DENISE); /* Denise (8362) */ - AMIGAHW_DECLARE(DENISE_HR); /* Denise (8373) */ - AMIGAHW_DECLARE(LISA); /* Lisa (8375) */ - AMIGAHW_DECLARE(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */ - AMIGAHW_DECLARE(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */ - AMIGAHW_DECLARE(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */ - AMIGAHW_DECLARE(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */ - AMIGAHW_DECLARE(ALICE_PAL); /* PAL Alice (8374) */ - AMIGAHW_DECLARE(ALICE_NTSC); /* NTSC Alice (8374) */ - AMIGAHW_DECLARE(MAGIC_REKICK); /* A3000 Magic Hard Rekick */ - AMIGAHW_DECLARE(ZORRO); /* Zorro AutoConfig */ - } hw_present; -}; - -#else /* __ASSEMBLY__ */ - -BI_amiga_model = BI_un -BI_amiga_num_autcon = BI_amiga_model+4 -BI_amiga_autocon = BI_amiga_num_autcon+4 -#ifdef HACKER_KERNEL -BI_amiga_exit_func = BI_amiga_autocon+(CD_sizeof*NUM_AUTO) -BI_amiga_chip_addr = BI_amiga_exit_func+4 -BI_amiga_chip_size = BI_amiga_chip_addr+4 -#else -BI_amiga_chip_size = BI_amiga_autocon+(CD_sizeof*NUM_AUTO) -#endif -BI_amiga_vblank = BI_amiga_chip_size+4 -BI_amiga_psfreq = BI_amiga_vblank+1 -BI_amiga_eclock = BI_amiga_psfreq+1 -BI_amiga_chipset = BI_amiga_eclock+4 -BI_amiga_hw_present = BI_amiga_chipset+4 - -#endif /* __ASSEMBLY__ */ - -/* Atari specific part of bootinfo */ - -/* - * Define several Hardware-Chips for indication so that for the ATARI we do - * no longer decide whether it is a Falcon or other machine . It's just - * important what hardware the machine uses - */ - -/* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */ - -#ifndef __ASSEMBLY__ - -#define ATARIHW_DECLARE(name) unsigned name : 1 -#define ATARIHW_SET(name) (boot_info.bi_atari.hw_present.name = 1) -#define ATARIHW_PRESENT(name) (boot_info.bi_atari.hw_present.name) - -struct bi_Atari { - struct { - /* video hardware */ - ATARIHW_DECLARE(STND_SHIFTER); /* ST-Shifter - no base low ! */ - ATARIHW_DECLARE(EXTD_SHIFTER); /* STe-Shifter - 24 bit address */ - ATARIHW_DECLARE(TT_SHIFTER); /* TT-Shifter */ - ATARIHW_DECLARE(VIDEL_SHIFTER); /* Falcon-Shifter */ - /* sound hardware */ - ATARIHW_DECLARE(YM_2149); /* Yamaha YM 2149 */ - ATARIHW_DECLARE(PCM_8BIT); /* PCM-Sound in STe-ATARI */ - ATARIHW_DECLARE(CODEC); /* CODEC Sound (Falcon) */ - /* disk storage interfaces */ - ATARIHW_DECLARE(TT_SCSI); /* Directly mapped NCR5380 */ - ATARIHW_DECLARE(ST_SCSI); /* NCR5380 via ST-DMA (Falcon) */ - ATARIHW_DECLARE(ACSI); /* Standard ACSI like in STs */ - ATARIHW_DECLARE(IDE); /* IDE Interface */ - ATARIHW_DECLARE(FDCSPEED); /* 8/16 MHz switch for FDC */ - /* other I/O hardware */ - ATARIHW_DECLARE(ST_MFP); /* The ST-MFP (there should - be no Atari without - it... but who knows?) */ - ATARIHW_DECLARE(TT_MFP); /* 2nd MFP */ - ATARIHW_DECLARE(SCC); /* Serial Communications Contr. */ - ATARIHW_DECLARE(ST_ESCC); /* SCC Z83230 in an ST */ - ATARIHW_DECLARE(ANALOG_JOY); /* Paddle Interface for STe - and Falcon */ - ATARIHW_DECLARE(MICROWIRE); /* Microwire Interface */ - /* DMA */ - ATARIHW_DECLARE(STND_DMA); /* 24 Bit limited ST-DMA */ - ATARIHW_DECLARE(EXTD_DMA); /* 32 Bit ST-DMA */ - ATARIHW_DECLARE(SCSI_DMA); /* DMA for the NCR5380 */ - ATARIHW_DECLARE(SCC_DMA); /* DMA for the SCC */ - /* real time clocks */ - ATARIHW_DECLARE(TT_CLK); /* TT compatible clock chip */ - ATARIHW_DECLARE(MSTE_CLK); /* Mega ST(E) clock chip */ - /* supporting hardware */ - ATARIHW_DECLARE(SCU); /* System Control Unit */ - ATARIHW_DECLARE(BLITTER); /* Blitter */ - ATARIHW_DECLARE(VME); /* VME Bus */ - } hw_present; - unsigned long mch_cookie; /* _MCH cookie from TOS */ -}; - -/* mch_cookie values (upper word) */ -#define ATARI_MCH_ST 0 -#define ATARI_MCH_STE 1 -#define ATARI_MCH_TT 2 -#define ATARI_MCH_FALCON 3 - -struct mem_info { - unsigned long addr; /* physical address of memory chunk */ - unsigned long size; /* length of memory chunk (in bytes) */ -}; - -#else /* __ASSEMBLY__ */ - -MI_addr = 0 -MI_size = MI_addr+4 -MI_sizeof = MI_size+4 - -#endif /* __ASSEMBLY__ */ - -#define NUM_MEMINFO 4 + /* + * Linux/m68k Architectures + */ #define MACH_AMIGA 1 #define MACH_ATARI 2 #define MACH_MAC 3 +#define MACH_APOLLO 4 +#define MACH_SUN3 5 +/* MVME 166/167/162/147?? */ -/* - * CPU and FPU types - */ - -#define CPUB_68020 0 -#define CPUB_68030 1 -#define CPUB_68040 2 -#define CPUB_68060 3 -#define FPUB_68881 5 -#define FPUB_68882 6 -#define FPUB_68040 7 /* Internal FPU */ -#define FPUB_68060 8 /* Internal FPU */ - -#define CPU_68020 (1<> 16) & 0xffff) -#define BI_VERSION_MINOR(v) ((v) & 0xffff) + /* + * Miscellaneous + */ + +#define NUM_MEMINFO (4) +#define CL_SIZE (256) #ifndef __ASSEMBLY__ -struct bootversion { - unsigned short branch; - unsigned long magic; - struct { - unsigned long machtype; - unsigned long version; - } machversions[0]; +struct mem_info { + unsigned long addr; /* physical address of memory chunk */ + unsigned long size; /* length of memory chunk (in bytes) */ }; -#endif /* __ASSEMBLY__ */ +#ifdef __KERNEL__ +extern int m68k_num_memory; /* # of memory blocks found */ +extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */ +#endif /* __KERNEL__ */ + +#endif /* !__ASSEMBLY__ */ -#define AMIGA_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) -#define ATARI_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) #endif /* _M68K_SETUP_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/socket.h linux/include/asm-m68k/socket.h --- v2.1.16/linux/include/asm-m68k/socket.h Fri Apr 5 14:08:26 1996 +++ linux/include/asm-m68k/socket.h Fri Dec 20 11:20:03 1996 @@ -21,5 +21,11 @@ #define SO_LINGER 13 #define SO_BSDCOMPAT 14 /* To add :#define SO_REUSEPORT 15 */ +#define SO_PASSCRED 16 +#define SO_PEERCRED 17 +#define SO_RCVLOWAT 18 +#define SO_SNDLOWAT 19 +#define SO_RCVTIMEO 20 +#define SO_SNDTIMEO 21 #endif /* _ASM_SOCKET_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/string.h linux/include/asm-m68k/string.h --- v2.1.16/linux/include/asm-m68k/string.h Wed Sep 25 10:47:42 1996 +++ linux/include/asm-m68k/string.h Fri Dec 20 11:20:03 1996 @@ -326,7 +326,9 @@ *((unsigned long *)(s))++ = data; __asm__ __volatile__("1:\t" + ".chip 68040\n\t" "move16 %2@+,%0@+\n\t" + ".chip 68k\n\t" "subqw #8,%2\n\t" "subqw #8,%2\n\t" "dbra %1,1b\n\t" @@ -390,8 +392,10 @@ return memcpy(to, from, count); __asm__ __volatile__("1:\t" + ".chip 68040\n\t" "move16 %1@+,%0@+\n\t" "move16 %1@+,%0@+\n\t" + ".chip 68k\n\t" "dbra %2,1b\n\t" : "=a" (to), "=a" (from), "=d" (tmp) : "0" (to), "1" (from) , "2" (count / 32 - 1) diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/uaccess.h linux/include/asm-m68k/uaccess.h --- v2.1.16/linux/include/asm-m68k/uaccess.h Fri Nov 22 18:28:21 1996 +++ linux/include/asm-m68k/uaccess.h Fri Dec 20 11:20:03 1996 @@ -421,7 +421,7 @@ case 3: __copy_from_user_big(to, from, n, /* fixup */ - "1: addql #2,%2" + "1: addql #2,%2\n" "2: addql #1,%2", /* copy */ "3: movesw (%1)+,%%d0\n" @@ -660,7 +660,7 @@ case 3: __copy_to_user_big(to, from, n, /* fixup */ - "1: addql #2,%2" + "1: addql #2,%2\n" "2: addql #1,%2", /* copy */ " movew (%1)+,%%d0\n" @@ -729,13 +729,12 @@ */ static inline long strlen_user(const char * src) { - long res = (long) src; + long res = -(long) src; __asm__ __volatile__ ("1: movesb (%1)+,%%d0\n" "12:tstb %%d0\n" " jne 1b\n" - " subl %1,%0\n" - " negl %0\n" + " addl %1,%0\n" "2:\n" ".section .fixup,\"ax\"\n" " .even\n" @@ -748,7 +747,7 @@ ".text" : "=d"(res), "=a"(src) : "i"(0), "0"(res), "1"(src) - : "d0", "memory"); + : "d0"); return res; } diff -u --recursive --new-file v2.1.16/linux/include/asm-m68k/zorro.h linux/include/asm-m68k/zorro.h --- v2.1.16/linux/include/asm-m68k/zorro.h Fri Nov 22 18:28:21 1996 +++ linux/include/asm-m68k/zorro.h Fri Dec 20 11:20:03 1996 @@ -8,15 +8,11 @@ * for more details. */ -#ifndef _ASM_M68K_ZORRO_H_ -#define _ASM_M68K_ZORRO_H_ +#ifndef _M68K_ZORRO_H +#define _M68K_ZORRO_H #ifndef __ASSEMBLY__ -#include -#include - - /* * Defined Board Manufacturers * @@ -531,6 +527,14 @@ #ifndef __ASSEMBLY__ +#define ZORRO_NUM_AUTO 16 + +#ifdef __KERNEL__ + +extern int zorro_num_autocon; /* # of autoconfig devices found */ +extern struct ConfigDev zorro_autocon[ZORRO_NUM_AUTO]; + + /* * Zorro Functions */ @@ -564,11 +568,10 @@ * Verbose Board Identification */ -#ifdef CONFIG_ZORRO extern void zorro_identify(void); extern int zorro_get_list(char *buffer); -#endif CONFIG_ZORRO -#endif /* __ASSEMBLY__ */ +#endif /* !__ASSEMBLY__ */ +#endif /* __KERNEL__ */ -#endif /* _ASM_M68K_ZORRO_H_ */ +#endif /* __ASMm68K_ZORRO_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-ppc/floppy.h.old linux/include/asm-ppc/floppy.h.old --- v2.1.16/linux/include/asm-ppc/floppy.h.old Wed Dec 18 15:58:52 1996 +++ linux/include/asm-ppc/floppy.h.old Thu Jan 1 02:00:00 1970 @@ -1,54 +0,0 @@ -/* - * Architecture specific parts of the Floppy driver - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 1995 - */ -#ifndef __ASM_PPC_FLOPPY_H -#define __ASM_PPC_FLOPPY_H - -#define fd_inb(port) inb_p(port) -#define fd_outb(port,value) outb_p(port,value) - -#define fd_enable_dma() enable_dma(FLOPPY_DMA) -#define fd_disable_dma() disable_dma(FLOPPY_DMA) -#define fd_request_dma() request_dma(FLOPPY_DMA,"floppy") -#define fd_free_dma() free_dma(FLOPPY_DMA) -#define fd_clear_dma_ff() clear_dma_ff(FLOPPY_DMA) -#define fd_set_dma_mode(mode) set_dma_mode(FLOPPY_DMA,mode) -#define fd_set_dma_addr(addr) set_dma_addr(FLOPPY_DMA,addr) -#define fd_set_dma_count(count) set_dma_count(FLOPPY_DMA,count) -#define fd_enable_irq() enable_irq(FLOPPY_IRQ) -#define fd_disable_irq() disable_irq(FLOPPY_IRQ) -#define fd_cacheflush(addr,size) /* nothing */ -#define fd_request_irq() request_irq(FLOPPY_IRQ, floppy_interrupt, \ - SA_INTERRUPT|SA_SAMPLE_RANDOM, \ - "floppy", NULL) -#define fd_free_irq() free_irq(FLOPPY_IRQ, NULL); - -__inline__ void virtual_dma_init(void) -{ - /* Nothing to do on PowerPC */ -} - -static int FDC1 = 0x3f0; -static int FDC2 = -1; - -/* - * Again, the CMOS information not available - */ -#define FLOPPY0_TYPE 6 -#define FLOPPY1_TYPE 0 - -#define N_FDC 2 /* Don't change this! */ -#define N_DRIVE 8 - -/* - * The PowerPC has no problems with floppy DMA crossing 64k borders. - */ -#define CROSS_64KB(a,s) (0) - -#endif /* __ASM_PPC_FLOPPY_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-ppc/pgtable.h linux/include/asm-ppc/pgtable.h --- v2.1.16/linux/include/asm-ppc/pgtable.h Wed Dec 18 15:58:52 1996 +++ linux/include/asm-ppc/pgtable.h Sat Dec 21 14:24:03 1996 @@ -226,6 +226,9 @@ { return pmd_val(pmd) & PAGE_MASK; } +/* to find an entry in a kernel page-table-directory */ +#define pgd_offset_k(address) pgd_offset(&init_mm, address) + /* to find an entry in a page-table-directory */ extern inline pgd_t * pgd_offset(struct mm_struct * mm, unsigned long address) { diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/byteorder.h linux/include/asm-sparc/byteorder.h --- v2.1.16/linux/include/asm-sparc/byteorder.h Wed Dec 18 15:59:01 1996 +++ linux/include/asm-sparc/byteorder.h Thu Dec 19 11:03:37 1996 @@ -1,17 +1,17 @@ -/* $Id: byteorder.h,v 1.11 1996/11/19 11:26:13 davem Exp $ */ +/* $Id: byteorder.h,v 1.12 1996/12/19 08:08:20 davem Exp $ */ #ifndef _SPARC_BYTEORDER_H #define _SPARC_BYTEORDER_H -#define ntohl(x) x -#define ntohs(x) x -#define htonl(x) x -#define htons(x) x +#define ntohl(x) (x) +#define ntohs(x) (x) +#define htonl(x) (x) +#define htons(x) (x) /* Some programs depend upon these being around. */ -#define __constant_ntohl(x) x -#define __constant_ntohs(x) x -#define __constant_htonl(x) x -#define __constant_htons(x) x +#define __constant_ntohl(x) (x) +#define __constant_ntohs(x) (x) +#define __constant_htonl(x) (x) +#define __constant_htons(x) (x) #ifndef __BIG_ENDIAN #define __BIG_ENDIAN 4321 diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/ipc.h linux/include/asm-sparc/ipc.h --- v2.1.16/linux/include/asm-sparc/ipc.h Thu Jan 1 02:00:00 1970 +++ linux/include/asm-sparc/ipc.h Thu Dec 19 11:03:37 1996 @@ -0,0 +1,28 @@ +#ifndef __SPARC_IPC_H__ +#define __SPARC_IPC_H__ + +/* + * These are used to wrap system calls on the sparc. + * + * See arch/sparc/kernel/sys_sparc.c for ugly details.. + */ +struct ipc_kludge { + struct msgbuf *msgp; + long msgtyp; +}; + +#define SEMOP 1 +#define SEMGET 2 +#define SEMCTL 3 +#define MSGSND 11 +#define MSGRCV 12 +#define MSGGET 13 +#define MSGCTL 14 +#define SHMAT 21 +#define SHMDT 22 +#define SHMGET 23 +#define SHMCTL 24 + +#define IPCCALL(version,op) ((version)<<16 | (op)) + +#endif diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/namei.h linux/include/asm-sparc/namei.h --- v2.1.16/linux/include/asm-sparc/namei.h Thu Jan 1 02:00:00 1970 +++ linux/include/asm-sparc/namei.h Thu Dec 19 11:03:37 1996 @@ -0,0 +1,58 @@ +/* $Id: namei.h,v 1.1 1996/12/13 14:48:20 jj Exp $ + * linux/include/asm-sparc/namei.h + * + * Routines to handle famous /usr/gnemul/s*. + * Included from linux/fs/namei.c + */ + +#ifndef __SPARC_NAMEI_H +#define __SPARC_NAMEI_H + +#define SPARC_BSD_EMUL "usr/gnemul/sunos/" +#define SPARC_SOL_EMUL "usr/gnemul/solaris/" + +#if 1 +#define gnemul_namei(pathname, base, follow_links, res_inode) ({ \ + if ((current->personality & (PER_BSD|PER_SVR4)) && !base && *pathname == '/') { \ + struct inode *emul_ino; \ + int namelen; \ + const char *name; \ + \ + while (*pathname == '/') \ + pathname++; \ + current->fs->root->i_count++; \ + if (dir_namei (current->personality & PER_BSD ? SPARC_BSD_EMUL : SPARC_SOL_EMUL, \ + &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { \ + *res_inode = NULL; \ + if (_namei (pathname, emul_ino, follow_links, res_inode) >= 0 && *res_inode) \ + return 0; \ + } \ + base = current->fs->root; \ + base->i_count++; \ + } \ +}) +#else +#define gnemul_namei(pathname, base, follow_links, res_inode) do { } while (0) +#endif + +#define gnemul_open_namei(pathname, flag, mode, res_inode, base) ({ \ + if ((current->personality & (PER_BSD|PER_SVR4)) && !base && *pathname == '/') { \ + struct inode *emul_ino; \ + int namelen; \ + const char *name; \ + \ + while (*pathname == '/') \ + pathname++; \ + current->fs->root->i_count++; \ + if (dir_namei (current->personality & PER_BSD ? SPARC_BSD_EMUL : SPARC_SOL_EMUL, \ + &namelen, &name, current->fs->root, &emul_ino) >= 0 && emul_ino) { \ + *res_inode = NULL; \ + if (open_namei (pathname, flag, mode, res_inode, emul_ino) >= 0 && *res_inode) \ + return 0; \ + } \ + base = current->fs->root; \ + base->i_count++; \ + } \ +}) + +#endif /* __SPARC_NAMEI_H */ diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/page.h linux/include/asm-sparc/page.h --- v2.1.16/linux/include/asm-sparc/page.h Wed Dec 18 15:59:01 1996 +++ linux/include/asm-sparc/page.h Thu Dec 19 11:03:37 1996 @@ -1,4 +1,4 @@ -/* $Id: page.h,v 1.33 1996/12/03 08:44:55 jj Exp $ +/* $Id: page.h,v 1.35 1996/12/19 08:08:22 davem Exp $ * page.h: Various defines and such for MMU operations on the Sparc for * the Linux kernel. * @@ -8,6 +8,7 @@ #ifndef _SPARC_PAGE_H #define _SPARC_PAGE_H +#include #include /* for KERNBASE */ #define PAGE_SHIFT 12 @@ -28,8 +29,8 @@ extern unsigned long (*mmu_v2p)(unsigned long); extern unsigned long (*mmu_p2v)(unsigned long); -#define __pa(x) mmu_v2p(x) -#define __va(x) mmu_p2v(x) +#define __pa(x) mmu_v2p((unsigned long)(x)) +#define __va(x) mmu_p2v((unsigned long)(x)) /* The following structure is used to hold the physical * memory configuration of the machine. This is filled in @@ -87,6 +88,132 @@ #define __ctxd(x) ((ctxd_t) { (x) } ) #define __pgprot(x) ((pgprot_t) { (x) } ) #define __iopgprot(x) ((iopgprot_t) { (x) } ) + +#elif CONFIG_AP1000_DEBUG + +typedef struct { unsigned long pte; } pte_t; +typedef struct { unsigned long iopte; } iopte_t; +typedef struct { unsigned long pmd; } pmd_t; +typedef struct { unsigned long pgd; } pgd_t; +typedef struct { unsigned long ctxd; } ctxd_t; +typedef struct { unsigned long pgprot; } pgprot_t; +typedef struct { unsigned long iopgprot; } iopgprot_t; + +static inline unsigned long __get_val(unsigned long x) +{ + if ((x & 0xF0000000) == (8<<28)) + return x & 0x0FFFFFFF; + return x; +} + +static inline unsigned long __set_val(unsigned long x) +{ + if ((x & 0xF0000000) == (0<<28)) + return x | 0x80000000; + return x; +} + +#define __pte_val(x) ((x).pte) +#define __iopte_val(x) ((x).iopte) +#define __pmd_val(x) ((x).pmd) +#define __pgd_val(x) ((x).pgd) +#define __ctxd_val(x) ((x).ctxd) +#define __pgprot_val(x) ((x).pgprot) +#define __iopgprot_val(x) ((x).iopgprot) + +#define ___pte(x) ((pte_t) { (x) } ) +#define ___iopte(x) ((iopte_t) { (x) } ) +#define ___pmd(x) ((pmd_t) { (x) } ) +#define ___pgd(x) ((pgd_t) { (x) } ) +#define ___ctxd(x) ((ctxd_t) { (x) } ) +#define ___pgprot(x) ((pgprot_t) { (x) } ) +#define ___iopgprot(x) ((iopgprot_t) { (x) } ) + + +#define pte_val(x) __get_val(__pte_val(x)) +#define iopte_val(x) __get_val(__iopte_val(x)) +#define pmd_val(x) __get_val(__pmd_val(x)) +#define pgd_val(x) __get_val(__pgd_val(x)) +#define ctxd_val(x) __get_val(__ctxd_val(x)) +#define pgprot_val(x) __get_val(__pgprot_val(x)) +#define iopgprot_val(x) __get_val(__iopgprot_val(x)) + +#define __pte(x) ___pte(__set_val(x)) +#define __iopte(x) ___iopte(__set_val(x)) +#define __pmd(x) ___pmd(__set_val(x)) +#define __pgd(x) ___pgd(__set_val(x)) +#define __ctxd(x) ___ctxd(__set_val(x)) +#define __pgprot(x) ___pgprot(x) +#define __iopgprot(x) ___iopgprot(__set_val(x)) + +#elif CONFIG_AP1000 + +typedef unsigned long pte_t; +typedef unsigned long iopte_t; +typedef unsigned long pmd_t; +typedef unsigned long pgd_t; +typedef unsigned long ctxd_t; +typedef unsigned long pgprot_t; +typedef unsigned long iopgprot_t; + +static inline unsigned long __get_val(unsigned long x) +{ +#if 0 + extern void ap_panic(char *fmt,...); + if (x && (x & 0xF0000000) == 0) { + ap_panic("get_val got 0x%x\n",x); + } +#endif + if ((x & 0xF0000000) == (8<<28)) + return x & 0x0FFFFFFF; + return x; +} + +static inline unsigned long __set_val(unsigned long x) +{ +#if 0 + extern void ap_panic(char *fmt,...); + if ((x & 0xF0000000) == (8<<28)) { + ap_panic("set_val got 0x%x\n",x); + } +#endif + if ((x & 0xF0000000) == (0<<28)) + return x | 0x80000000; + return x; +} + +#define __pte_val(x) (x) +#define __iopte_val(x) (x) +#define __pmd_val(x) (x) +#define __pgd_val(x) (x) +#define __ctxd_val(x) (x) +#define __pgprot_val(x) (x) +#define __iopgprot_val(x) (x) + +#define ___pte(x) ((pte_t) { (x) } ) +#define ___iopte(x) ((iopte_t) { (x) } ) +#define ___pmd(x) ((pmd_t) { (x) } ) +#define ___pgd(x) ((pgd_t) { (x) } ) +#define ___ctxd(x) ((ctxd_t) { (x) } ) +#define ___pgprot(x) ((pgprot_t) { (x) } ) +#define ___iopgprot(x) ((iopgprot_t) { (x) } ) + + +#define pte_val(x) __get_val(__pte_val(x)) +#define iopte_val(x) __get_val(__iopte_val(x)) +#define pmd_val(x) __get_val(__pmd_val(x)) +#define pgd_val(x) __get_val(__pgd_val(x)) +#define ctxd_val(x) __get_val(__ctxd_val(x)) +#define pgprot_val(x) __get_val(__pgprot_val(x)) +#define iopgprot_val(x) __get_val(__iopgprot_val(x)) + +#define __pte(x) ___pte(__set_val(x)) +#define __iopte(x) ___iopte(__set_val(x)) +#define __pmd(x) ___pmd(__set_val(x)) +#define __pgd(x) ___pgd(__set_val(x)) +#define __ctxd(x) ___ctxd(__set_val(x)) +#define __pgprot(x) ___pgprot(x) +#define __iopgprot(x) ___iopgprot(__set_val(x)) #else /* diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/pgtable.h linux/include/asm-sparc/pgtable.h --- v2.1.16/linux/include/asm-sparc/pgtable.h Wed Dec 18 15:59:01 1996 +++ linux/include/asm-sparc/pgtable.h Sat Dec 21 14:24:03 1996 @@ -213,6 +213,9 @@ extern pte_t (*pte_modify)(pte_t, pgprot_t); +/* to find an entry in a kernel page-table-directory */ +#define pgd_offset_k(address) pgd_offset(&init_mm, address) + /* to find an entry in a page-table-directory */ extern pgd_t * (*pgd_offset)(struct mm_struct *, unsigned long); diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/pgtsrmmu.h linux/include/asm-sparc/pgtsrmmu.h --- v2.1.16/linux/include/asm-sparc/pgtsrmmu.h Tue Nov 12 15:56:13 1996 +++ linux/include/asm-sparc/pgtsrmmu.h Thu Dec 19 11:03:37 1996 @@ -1,4 +1,4 @@ -/* $Id: pgtsrmmu.h,v 1.24 1996/10/07 03:03:06 davem Exp $ +/* $Id: pgtsrmmu.h,v 1.25 1996/12/18 06:56:07 tridge Exp $ * pgtsrmmu.h: SRMMU page table defines and code. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -7,13 +7,8 @@ #ifndef _SPARC_PGTSRMMU_H #define _SPARC_PGTSRMMU_H -#include #include -#if CONFIG_AP1000 -#include -#endif - /* PMD_SHIFT determines the size of the area a second-level page table can map */ #define SRMMU_PMD_SHIFT 18 #define SRMMU_PMD_SIZE (1UL << SRMMU_PMD_SHIFT) @@ -92,20 +87,6 @@ #define SRMMU_FAULT_STATUS 0x00000300 #define SRMMU_FAULT_ADDR 0x00000400 -/* - * "normal" sun systems have their memory on bus 0. This means the top - * 4 bits of 36 bit physical addresses are 0. We use this define to - * determine if a piece of memory might be normal memory, or if its - * definately some sort of device memory. - * - * On the AP+ normal memory is on bus 8. Why? Ask Fujitsu :-) -*/ -#if CONFIG_AP1000 -#define MEM_BUS_SPACE 8 -#else -#define MEM_BUS_SPACE 0 -#endif - /* Accessing the MMU control register. */ extern __inline__ unsigned int srmmu_get_mmureg(void) { @@ -126,9 +107,6 @@ extern __inline__ void srmmu_set_ctable_ptr(unsigned long paddr) { paddr = ((paddr >> 4) & SRMMU_CTX_PMASK); -#if MEM_BUS_SPACE - paddr |= (MEM_BUS_SPACE<<28); -#endif __asm__ __volatile__("sta %0, [%1] %2\n\t" : : "r" (paddr), "r" (SRMMU_CTXTBL_PTR), "i" (ASI_M_MMUREGS) : @@ -151,11 +129,6 @@ __asm__ __volatile__("sta %0, [%1] %2\n\t" : : "r" (context), "r" (SRMMU_CTX_REG), "i" (ASI_M_MMUREGS) : "memory"); -#if CONFIG_AP1000 - /* The AP1000+ message controller also needs to know - the current task's context. */ - MSC_OUT(MSC_PID, context); -#endif } extern __inline__ int srmmu_get_context(void) @@ -191,10 +164,6 @@ /* This is guaranteed on all SRMMU's. */ extern __inline__ void srmmu_flush_whole_tlb(void) { -#if CONFIG_AP1000 - extern void mc_tlb_flush_all(void); - mc_tlb_flush_all(); -#endif __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (0x400), /* Flush entire TLB!! */ "i" (ASI_M_FLUSH_PROBE) : "memory"); @@ -204,9 +173,6 @@ /* These flush types are not available on all chips... */ extern __inline__ void srmmu_flush_tlb_ctx(void) { -#if CONFIG_AP1000 - mc_tlb_flush_ctx(); -#endif __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (0x300), /* Flush TLB ctx.. */ "i" (ASI_M_FLUSH_PROBE) : "memory"); @@ -215,9 +181,6 @@ extern __inline__ void srmmu_flush_tlb_region(unsigned long addr) { -#if CONFIG_AP1000 - mc_tlb_flush_region(); -#endif addr &= SRMMU_PGDIR_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (addr | 0x200), /* Flush TLB region.. */ @@ -228,9 +191,6 @@ extern __inline__ void srmmu_flush_tlb_segment(unsigned long addr) { -#if CONFIG_AP1000 - mc_tlb_flush_segment(); -#endif addr &= SRMMU_PMD_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (addr | 0x100), /* Flush TLB segment.. */ @@ -240,9 +200,6 @@ extern __inline__ void srmmu_flush_tlb_page(unsigned long page) { -#if CONFIG_AP1000 - mc_tlb_flush_page(page); -#endif page &= PAGE_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (page), /* Flush TLB page.. */ diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/system.h linux/include/asm-sparc/system.h --- v2.1.16/linux/include/asm-sparc/system.h Wed Dec 18 15:59:02 1996 +++ linux/include/asm-sparc/system.h Thu Dec 19 11:03:37 1996 @@ -1,4 +1,4 @@ -/* $Id: system.h,v 1.43 1996/12/10 06:06:37 davem Exp $ */ +/* $Id: system.h,v 1.44 1996/12/18 06:56:08 tridge Exp $ */ #ifndef __SPARC_SYSTEM_H #define __SPARC_SYSTEM_H @@ -28,6 +28,7 @@ sun4e = 0x04, sun4u = 0x05, /* V8 ploos ploos */ sun_unknown = 0x06, + ap1000 = 0x07, /* almost a sun4m */ }; extern enum sparc_cpu sparc_cpu_model; diff -u --recursive --new-file v2.1.16/linux/include/asm-sparc/unistd.h linux/include/asm-sparc/unistd.h --- v2.1.16/linux/include/asm-sparc/unistd.h Tue Nov 12 15:56:13 1996 +++ linux/include/asm-sparc/unistd.h Thu Dec 19 11:03:37 1996 @@ -1,4 +1,4 @@ -/* $Id: unistd.h,v 1.24 1996/08/29 09:49:06 davem Exp $ */ +/* $Id: unistd.h,v 1.25 1996/12/18 06:56:10 tridge Exp $ */ #ifndef _SPARC_UNISTD_H #define _SPARC_UNISTD_H @@ -271,6 +271,7 @@ #define __NR_getsid 252 #define __NR_fdatasync 253 #define __NR_nfsctl 254 +#define __NR_aplib 255 #define _syscall0(type,name) \ type name(void) \ diff -u --recursive --new-file v2.1.16/linux/include/linux/blk.h linux/include/linux/blk.h --- v2.1.16/linux/include/linux/blk.h Thu Dec 12 19:37:18 1996 +++ linux/include/linux/blk.h Sat Dec 21 19:03:00 1996 @@ -40,6 +40,9 @@ #ifdef CONFIG_CDU31A extern int cdu31a_init(void); #endif CONFIG_CDU31A +#ifdef CONFIG_ATARI_ACSI +extern int acsi_init(void); +#endif CONFIG_ATARI_ACSI #ifdef CONFIG_MCD extern int mcd_init(void); #endif CONFIG_MCD @@ -85,6 +88,15 @@ #ifdef CONFIG_BLK_DEV_MD extern int md_init(void); #endif CONFIG_BLK_DEV_MD +#ifdef CONFIG_APBLOCK +extern int ap_init(void); +#endif +#ifdef CONFIG_DDV +extern int ddv_init(void); +#endif +#ifdef CONFIG_AMIGA_Z2RAM +extern int z2_init(void); +#endif extern void set_device_ro(kdev_t dev,int flag); void add_blkdev_randomness(int major); @@ -102,6 +114,7 @@ extern unsigned long initrd_start,initrd_end; extern int mount_initrd; /* zero if initrd should not be mounted */ +extern int initrd_below_start_ok; /* 1 if it is not an error if initrd_start < memory_start */ void initrd_init(void); #endif @@ -138,6 +151,15 @@ #define DEVICE_OFF(device) #define DEVICE_NO_RANDOM +#elif (MAJOR_NR == Z2RAM_MAJOR) + +/* Zorro II Ram */ +#define DEVICE_NAME "Z2RAM" +#define DEVICE_REQUEST do_z2_request +#define DEVICE_NR(device) (MINOR(device)) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) + #elif (MAJOR_NR == FLOPPY_MAJOR) static void floppy_off(unsigned int nr); @@ -221,6 +243,15 @@ #define DEVICE_ON(device) #define DEVICE_OFF(device) +#elif (MAJOR_NR == ACSI_MAJOR) && (defined(CONFIG_ATARI_ACSI) || defined(CONFIG_ATARI_ACSI_MODULE)) + +#define DEVICE_NAME "ACSI" +#define DEVICE_INTR do_acsi +#define DEVICE_REQUEST do_acsi_request +#define DEVICE_NR(device) (MINOR(device) >> 4) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) + #elif (MAJOR_NR == MITSUMI_CDROM_MAJOR) #define DEVICE_NAME "Mitsumi CD-ROM" @@ -317,6 +348,22 @@ #define DEVICE_REQUEST do_sjcd_request #define DEVICE_NR(device) (MINOR(device)) #define DEVICE_ON(device) +#define DEVICE_OFF(device) + +#elif (MAJOR_NR == APBLOCK_MAJOR) + +#define DEVICE_NAME "apblock" +#define DEVICE_REQUEST ap_request +#define DEVICE_NR(device) (MINOR(device)) +#define DEVICE_ON(device) +#define DEVICE_OFF(device) + +#elif (MAJOR_NR == DDV_MAJOR) + +#define DEVICE_NAME "ddv" +#define DEVICE_REQUEST ddv_request +#define DEVICE_NR(device) (MINOR(device)>>PARTN_BITS) +#define DEVICE_ON(device) #define DEVICE_OFF(device) #endif /* MAJOR_NR == whatever */ diff -u --recursive --new-file v2.1.16/linux/include/linux/hdlcdrv.h linux/include/linux/hdlcdrv.h --- v2.1.16/linux/include/linux/hdlcdrv.h Wed Dec 18 15:59:03 1996 +++ linux/include/linux/hdlcdrv.h Fri Dec 20 13:17:18 1996 @@ -1,5 +1,5 @@ /* - * hdlcdrv.h -- HDLC packet radio network driver. + * hdlcdrv.h -- HDLC packet radio network driver. * The Linux soundcard driver for 1200 baud and 9600 baud packet radio * (C) 1996 by Thomas Sailer, HB9JNX/AE4WA */ diff -u --recursive --new-file v2.1.16/linux/include/linux/if_arp.h linux/include/linux/if_arp.h --- v2.1.16/linux/include/linux/if_arp.h Thu Dec 12 19:37:19 1996 +++ linux/include/linux/if_arp.h Sat Dec 21 19:05:13 1996 @@ -50,11 +50,12 @@ #define ARPHRD_TUNNEL 768 /* IPIP tunnel */ #define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel */ -#define ARPHRD_FRAD 770 /* Frame Relay Access Device */ +#define ARPHRD_FRAD 770 /* Frame Relay Access Device */ #define ARPHRD_SKIP 771 /* SKIP vif */ #define ARPHRD_LOOPBACK 772 /* Loopback device */ #define ARPHRD_LOCALTLK 773 /* Localtalk device */ -#define ARPHRD_FDDI 774 /* FDDI interfaces */ +#define ARPHRD_FDDI 774 /* Fiber Distributed Data Interface */ +#define ARPHRD_BIF 775 /* AP1000 BIF */ #define ARPHRD_SIT 776 /* sit0 device - IPv6-in-IPv4 */ /* ARP protocol opcodes. */ diff -u --recursive --new-file v2.1.16/linux/include/linux/lp_intern.h linux/include/linux/lp_intern.h --- v2.1.16/linux/include/linux/lp_intern.h Mon Mar 4 22:55:14 1996 +++ linux/include/linux/lp_intern.h Fri Dec 20 11:20:03 1996 @@ -16,7 +16,7 @@ #include #include -int lp_internal_init(struct lp_struct *, int, int, int); +int lp_internal_init(void); #endif diff -u --recursive --new-file v2.1.16/linux/include/linux/lp_m68k.h linux/include/linux/lp_m68k.h --- v2.1.16/linux/include/linux/lp_m68k.h Thu Mar 14 22:38:20 1996 +++ linux/include/linux/lp_m68k.h Fri Dec 20 11:20:04 1996 @@ -13,8 +13,11 @@ * Interrupt support added 1993 Nigel Gamble */ -#include -#include +/* + * many many printers are we going to support? currently, this is the + * hardcoded limit + */ +#define MAX_LP 5 /* * Per POSIX guidelines, this module reserves the LP and lp prefixes @@ -84,6 +87,17 @@ #define LP_BUFFER_SIZE 1024 /*256*/ +enum lp_type { +LP_UNKNOWN = 0, +LP_AMIGA = 1, +LP_ATARI = 2, +LP_MFC = 3 +}; + +/* + * warning: this structure is in kernel space and has to fit in one page, + * i.e. must not be larger than 4k + */ struct lp_struct { char *name; unsigned int irq; @@ -92,18 +106,27 @@ int (*lp_has_pout)(int); int (*lp_is_online)(int); int (*lp_my_interrupt)(int); + int (*lp_ioctl)(int, unsigned int, unsigned long); + void (*lp_open)(void); /* for module use counter */ + void (*lp_release)(void); /* for module use counter */ int flags; /*for BUSY... */ unsigned int chars; /*busy timeout */ unsigned int time; /*wait time */ unsigned int wait; struct wait_queue *lp_wait_q; /*strobe wait */ + void *base; /* hardware drivers internal use*/ + enum lp_type type; char lp_buffer[LP_BUFFER_SIZE]; int do_print; unsigned long copy_size,bytes_written; }; -extern struct lp_struct lp_table[]; +extern struct lp_struct *lp_table[MAX_LP]; +extern unsigned int lp_irq; -extern int lp_init(void); +void lp_interrupt(int, void *, struct pt_regs *); +int lp_init(void); +int register_parallel(struct lp_struct *, int); +void unregister_parallel(int); #endif diff -u --recursive --new-file v2.1.16/linux/include/linux/lp_mfc.h linux/include/linux/lp_mfc.h --- v2.1.16/linux/include/linux/lp_mfc.h Thu Jan 1 02:00:00 1970 +++ linux/include/linux/lp_mfc.h Fri Dec 20 11:20:04 1996 @@ -0,0 +1,14 @@ +#ifndef _LINUX_LP_MFC_H_ +#define _LINUX_LP_MFC_H_ + +/* + * created 6.11.95 Joerg Dorchain + */ + +#include +#include + +int lp_mfc_init(void); + +#endif + diff -u --recursive --new-file v2.1.16/linux/include/linux/major.h linux/include/linux/major.h --- v2.1.16/linux/include/linux/major.h Thu Dec 12 19:37:19 1996 +++ linux/include/linux/major.h Thu Dec 19 11:03:37 1996 @@ -65,11 +65,11 @@ #define PS2ESDI_MAJOR 36 #define IDETAPE_MAJOR 37 #define Z2RAM_MAJOR 37 +#define APBLOCK_MAJOR 38 /* AP1000 Block device */ +#define DDV_MAJOR 39 /* AP1000 DDV block device */ #define RISCOM8_NORMAL_MAJOR 48 #define RISCOM8_CALLOUT_MAJOR 49 #define MKISS_MAJOR 55 -#define APBLOCK_MAJOR 60 /* AP1000 Block device */ -#define DDV_MAJOR 61 /* AP1000 DDV block device */ /* * Tests for SCSI devices. diff -u --recursive --new-file v2.1.16/linux/include/linux/mm.h linux/include/linux/mm.h --- v2.1.16/linux/include/linux/mm.h Fri Nov 22 18:28:21 1996 +++ linux/include/linux/mm.h Sat Dec 21 19:02:59 1996 @@ -10,6 +10,7 @@ #include extern unsigned long max_mapnr; +extern unsigned long num_physpages; extern void * high_memory; #include diff -u --recursive --new-file v2.1.16/linux/include/linux/msdos_fs.h linux/include/linux/msdos_fs.h --- v2.1.16/linux/include/linux/msdos_fs.h Mon Sep 30 11:22:48 1996 +++ linux/include/linux/msdos_fs.h Sat Dec 21 19:06:36 1996 @@ -7,6 +7,7 @@ #include #include #include +#include #define MSDOS_ROOT_INO 1 /* == MINIX_ROOT_INO */ #define SECTOR_SIZE 512 /* sector size (bytes) */ @@ -68,6 +69,14 @@ #define MSDOS_DOTDOT ".. " /* "..", padded to MSDOS_NAME chars */ #define MSDOS_FAT12 4078 /* maximum number of clusters in a 12 bit FAT */ + +#ifdef CONFIG_ATARI +#define EOF_FAT12 0xFFF /* Atari GEMDOS fs uses a different EOF */ +#define EOF_FAT16 0xFFFF +#else +#define EOF_FAT12 0xFF8 /* standard EOF */ +#define EOF_FAT16 0xFFF8 +#endif /* * Inode flags diff -u --recursive --new-file v2.1.16/linux/include/linux/netdevice.h linux/include/linux/netdevice.h --- v2.1.16/linux/include/linux/netdevice.h Wed Dec 18 15:59:03 1996 +++ linux/include/linux/netdevice.h Sat Dec 21 19:05:10 1996 @@ -339,12 +339,15 @@ extern void ether_setup(struct device *dev); extern void fddi_setup(struct device *dev); extern void tr_setup(struct device *dev); +extern void tr_freedev(struct device *dev); extern int ether_config(struct device *dev, struct ifmap *map); /* Support for loadable net-drivers */ extern int register_netdev(struct device *dev); extern void unregister_netdev(struct device *dev); extern int register_netdevice_notifier(struct notifier_block *nb); extern int unregister_netdevice_notifier(struct notifier_block *nb); +extern int register_trdev(struct device *dev); +extern void unregister_trdev(struct device *dev); /* Functions used for multicast support */ extern void dev_mc_upload(struct device *dev); extern void dev_mc_delete(struct device *dev, void *addr, int alen, int all); diff -u --recursive --new-file v2.1.16/linux/include/linux/proc_fs.h linux/include/linux/proc_fs.h --- v2.1.16/linux/include/linux/proc_fs.h Wed Dec 18 15:59:03 1996 +++ linux/include/linux/proc_fs.h Sat Dec 21 19:03:09 1996 @@ -1,6 +1,7 @@ #ifndef _LINUX_PROC_FS_H #define _LINUX_PROC_FS_H +#include #include #include @@ -44,7 +45,8 @@ PROC_MTAB, PROC_MD, PROC_RTC, - PROC_LOCKS + PROC_LOCKS, + PROC_ZORRO }; enum pid_directory_inos { @@ -59,7 +61,10 @@ PROC_PID_CMDLINE, PROC_PID_STAT, PROC_PID_STATM, - PROC_PID_MAPS + PROC_PID_MAPS, +#if CONFIG_AP1000 + PROC_PID_RINGBUF, +#endif }; enum pid_subdirectory_inos { @@ -178,6 +183,11 @@ #define PROC_DYNAMIC_FIRST 4096 #define PROC_NDYNAMIC 4096 +#define PROC_OPENPROM_FIRST (PROC_DYNAMIC_FIRST+PROC_NDYNAMIC) +#define PROC_OPENPROM PROC_OPENPROM_FIRST +#define PROC_NOPENPROM 4096 +#define PROC_OPENPROMD_FIRST (PROC_OPENPROM_FIRST+PROC_NOPENPROM) +#define PROC_NOPENPROMD 4096 #define PROC_SUPER_MAGIC 0x9fa0 @@ -219,6 +229,7 @@ extern struct proc_dir_entry proc_net; extern struct proc_dir_entry proc_scsi; extern struct proc_dir_entry proc_sys; +extern struct proc_dir_entry proc_openprom; extern struct proc_dir_entry proc_pid; extern struct proc_dir_entry proc_pid_fd; extern struct proc_dir_entry proc_mca; @@ -294,10 +305,29 @@ extern int proc_readdir(struct inode *, struct file *, void *, filldir_t); extern int proc_lookup(struct inode *, const char *, int, struct inode **); +struct openpromfs_dev { + struct openpromfs_dev *next; + u32 node; + ino_t inode; + kdev_t rdev; + mode_t mode; + char name[32]; +}; +extern struct inode_operations * +proc_openprom_register(int (*readdir)(struct inode *, struct file *, void *, filldir_t), + int (*lookup)(struct inode *, const char *, int, struct inode **), + void (*use)(struct inode *, int), + struct openpromfs_dev ***); +extern void proc_openprom_deregister(void); +extern void (*proc_openprom_use)(struct inode *,int); +extern int proc_openprom_regdev(struct openpromfs_dev *); +extern int proc_openprom_unregdev(struct openpromfs_dev *); + extern struct inode_operations proc_dir_inode_operations; extern struct inode_operations proc_net_inode_operations; extern struct inode_operations proc_netdir_inode_operations; extern struct inode_operations proc_scsi_inode_operations; +extern struct inode_operations proc_openprom_inode_operations; extern struct inode_operations proc_mem_inode_operations; extern struct inode_operations proc_sys_inode_operations; extern struct inode_operations proc_array_inode_operations; @@ -307,5 +337,7 @@ extern struct inode_operations proc_kmsg_inode_operations; extern struct inode_operations proc_link_inode_operations; extern struct inode_operations proc_fd_inode_operations; - +#if CONFIG_AP1000 +extern struct inode_operations proc_ringbuf_inode_operations; +#endif #endif diff -u --recursive --new-file v2.1.16/linux/include/linux/rose.h linux/include/linux/rose.h --- v2.1.16/linux/include/linux/rose.h Wed Dec 18 15:59:03 1996 +++ linux/include/linux/rose.h Thu Dec 19 10:32:50 1996 @@ -35,11 +35,12 @@ }; struct rose_route_struct { - rose_address address; - ax25_address neighbour; - char device[16]; - unsigned char ndigis; - ax25_address digipeaters[AX25_MAX_DIGIS]; + rose_address address; + unsigned short mask; + ax25_address neighbour; + char device[16]; + unsigned char ndigis; + ax25_address digipeaters[AX25_MAX_DIGIS]; }; struct rose_ctl_struct { diff -u --recursive --new-file v2.1.16/linux/include/linux/sched.h linux/include/linux/sched.h --- v2.1.16/linux/include/linux/sched.h Fri Nov 22 18:28:21 1996 +++ linux/include/linux/sched.h Sat Dec 21 19:02:59 1996 @@ -269,6 +269,7 @@ #define PF_USEDFPU 0x00100000 /* Process used the FPU this quantum (SMP only) */ #define PF_DTRACE 0x00200000 /* delayed trace (used on m68k) */ +#define PF_ONSIGSTK 0x00400000 /* works on signal stack (m68k only) */ /* * Limit the stack by to some sane default: root can always @@ -370,7 +371,7 @@ return 0; } -extern void copy_thread(int, unsigned long, unsigned long, struct task_struct *, struct pt_regs *); +extern int copy_thread(int, unsigned long, unsigned long, struct task_struct *, struct pt_regs *); extern void flush_thread(void); extern void exit_thread(void); diff -u --recursive --new-file v2.1.16/linux/include/linux/socket.h linux/include/linux/socket.h --- v2.1.16/linux/include/linux/socket.h Thu Dec 12 19:37:19 1996 +++ linux/include/linux/socket.h Thu Dec 19 10:32:50 1996 @@ -105,12 +105,14 @@ struct ucred { - pid_t pid; - uid_t uid; - gid_t gid; + /* Should we be using __kernel_*_t here ?? */ + __kernel_pid_t pid; + __kernel_uid_t uid; + __kernel_gid_t gid; }; /* Socket types. */ + #define SOCK_STREAM 1 /* stream (connection) socket */ #define SOCK_DGRAM 2 /* datagram (conn.less) socket */ #define SOCK_RAW 3 /* raw socket */ diff -u --recursive --new-file v2.1.16/linux/include/linux/soundmodem.h linux/include/linux/soundmodem.h --- v2.1.16/linux/include/linux/soundmodem.h Fri Nov 1 17:13:19 1996 +++ linux/include/linux/soundmodem.h Thu Dec 19 09:51:48 1996 @@ -15,9 +15,10 @@ */ struct sm_debug_data { - unsigned long debug1; - unsigned long debug2; - long debug3; + unsigned int int_rate; + unsigned int mod_cycles; + unsigned int demod_cycles; + unsigned int dma_residue; }; struct sm_diag_data { @@ -54,26 +55,12 @@ /* -------------------------------------------------------------------- */ /* - * config: hardware - */ -#define SM_HARDWARE_INVALID -1 -#define SM_HARDWARE_SBC 0 -#define SM_HARDWARE_WSS 1 -#define SM_HARDWARE_WSSFDX 2 /* currently does not work! */ - -/* - * config: mode - */ -#define SM_MODE_INVALID -1 -#define SM_MODE_AFSK1200 0 -#define SM_MODE_FSK9600 1 - -/* * diagnose modes */ -#define SM_DIAGMODE_OFF 0 -#define SM_DIAGMODE_INPUT 1 -#define SM_DIAGMODE_DEMOD 2 +#define SM_DIAGMODE_OFF 0 +#define SM_DIAGMODE_INPUT 1 +#define SM_DIAGMODE_DEMOD 2 +#define SM_DIAGMODE_CONSTELLATION 3 /* * diagnose flags @@ -86,6 +73,7 @@ */ #define SM_MIXER_INVALID 0 #define SM_MIXER_AD1848 0x10 +#define SM_MIXER_CRYSTAL 0x11 #define SM_MIXER_CT1335 0x20 #define SM_MIXER_CT1345 0x21 #define SM_MIXER_CT1745 0x22 @@ -93,8 +81,6 @@ /* * ioctl values */ -#define SMCTL_GETMODEMTYPE 0x80 -#define SMCTL_SETMODEMTYPE 0x81 #define SMCTL_DIAGNOSE 0x82 #define SMCTL_GETMIXER 0x83 #define SMCTL_SETMIXER 0x84 diff -u --recursive --new-file v2.1.16/linux/include/linux/trdevice.h linux/include/linux/trdevice.h --- v2.1.16/linux/include/linux/trdevice.h Thu Dec 12 19:37:19 1996 +++ linux/include/linux/trdevice.h Sat Dec 21 13:16:57 1996 @@ -3,7 +3,7 @@ * operating system. NET is implemented using the BSD Socket * interface as the means of communication with the user level. * - * Definitions for the Ethernet handlers. + * Definitions for the Token-ring handlers. * * Version: @(#)eth.h 1.0.4 05/13/93 * @@ -33,6 +33,8 @@ void *saddr, unsigned len); extern int tr_rebuild_header(struct sk_buff *skb); extern unsigned short tr_type_trans(struct sk_buff *skb, struct device *dev); + +extern struct device * init_trdev(struct device *, int); #endif diff -u --recursive --new-file v2.1.16/linux/include/linux/vmalloc.h linux/include/linux/vmalloc.h --- v2.1.16/linux/include/linux/vmalloc.h Mon Sep 30 11:19:11 1996 +++ linux/include/linux/vmalloc.h Sat Dec 21 19:03:09 1996 @@ -20,6 +20,7 @@ extern inline void set_pgdir(unsigned long address, pgd_t entry) { +#ifndef __mc68000__ struct task_struct * p; for_each_task(p) { @@ -27,6 +28,7 @@ continue; *pgd_offset(p->mm,address) = entry; } +#endif } #endif diff -u --recursive --new-file v2.1.16/linux/include/linux/wireless.h linux/include/linux/wireless.h --- v2.1.16/linux/include/linux/wireless.h Thu Dec 12 19:37:20 1996 +++ linux/include/linux/wireless.h Thu Dec 19 17:10:25 1996 @@ -1,9 +1,9 @@ /* * This file define a set of standard wireless extensions * - * Version : 2 30.10.96 + * Version : 3 18.12.96 * - * Authors : Jean II - HPLB - MCD + * Authors : Jean Tourrilhes - HPLB - */ #ifndef _LINUX_WIRELESS_H @@ -63,7 +63,17 @@ * (there is some stuff that will be added in the future...) * I just plan to increment with each new version. */ -#define WIRELESS_EXT 2 +#define WIRELESS_EXT 3 + +/* + * Changes : + * + * V2 to V3 + * -------- + * Alan Cox start some imcompatibles changes. I've integrated a bit more. + * - Encryption renamed to Encode to avoid US regulation problems + * - Frequency changed from float to struct to avoid problems on old 386 + */ /* -------------------------- IOCTL LIST -------------------------- */ @@ -134,21 +144,22 @@ /****************************** TYPES ******************************/ /* --------------------------- SUBTYPES --------------------------- */ - /* * A frequency + * For numbers lower than 10^9, we encode the number in 'mant' and + * set 'exp' to 0 + * For number greater than 10^9, we divide it by a power of 10. + * The power of 10 is in 'exp', the result is in 'mant'. */ - -typedef struct +struct iw_freq { - __u32 value; - __u16 scale; -} wireless_freq_t; + __u32 m; /* Mantissa */ + __u16 e; /* Exponent */ +}; /* * Quality of the link */ - struct iw_quality { __u8 qual; /* link quality (SNR or better...) */ @@ -161,11 +172,10 @@ * Packet discarded in the wireless adapter due to * "wireless" specific problems... */ - struct iw_discarded { __u32 nwid; /* Wrong nwid */ - __u32 codec; /* Unable to core/decode */ + __u32 code; /* Unable to code/decode */ __u32 misc; /* Others cases */ }; @@ -173,7 +183,6 @@ /* * Wireless statistics (used for /proc/net/wireless) */ - struct iw_statistics { __u8 status; /* Status @@ -215,15 +224,15 @@ __u8 on; /* active/unactive nwid */ } nwid; - wireless_freq_t freq; /* frequency or channel : + struct iw_freq freq; /* frequency or channel : * 0-1000 = channel * > 1000 = frequency in Hz */ - + struct /* Encoding stuff */ { __u8 method; /* Algorithm number / off */ - __u64 data; /* Data used for algorithm */ - } encoder; + __u64 code; /* Data used for algorithm */ + } encoding; struct /* For all data bigger than 16 octets */ { @@ -235,8 +244,7 @@ } u; }; -/* -------------------------- IOCTL DATA -------------------------- */ - +/* -------------------------- IOCTL DATA -------------------------- */ /* * For those ioctl which want to exchange mode data that what could * fit in the above structure... @@ -258,7 +266,7 @@ /* Frequency */ __u16 num_channels; /* Number of channels [0; num - 1] */ __u8 num_frequency; /* Number of entry in the list */ - wireless_freq_t freq[IW_MAX_FREQUENCIES]; /* list */ + struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */ /* Note : this frequency list doesn't need to fit channel numbers */ diff -u --recursive --new-file v2.1.16/linux/include/net/rose.h linux/include/net/rose.h --- v2.1.16/linux/include/net/rose.h Wed Dec 18 15:59:03 1996 +++ linux/include/net/rose.h Thu Dec 19 10:32:56 1996 @@ -82,6 +82,7 @@ struct rose_node { struct rose_node *next; rose_address address; + unsigned short mask; unsigned char which; unsigned char count; struct rose_neigh *neighbour[3]; @@ -121,6 +122,7 @@ extern int sysctl_rose_ack_hold_back_timeout; extern int sysctl_rose_routing_control; extern int rosecmp(rose_address *, rose_address *); +extern int rosecmpm(rose_address *, rose_address *, unsigned short); extern char *rose2asc(rose_address *); extern struct sock *rose_find_socket(unsigned int, struct device *); extern unsigned int rose_new_lci(struct device *); diff -u --recursive --new-file v2.1.16/linux/init/main.c linux/init/main.c --- v2.1.16/linux/init/main.c Thu Dec 12 19:37:21 1996 +++ linux/init/main.c Fri Dec 20 11:20:04 1996 @@ -67,9 +67,7 @@ extern long kmalloc_init(long,long); extern void sock_init(void); extern unsigned long pci_init(unsigned long, unsigned long); -#ifdef CONFIG_MCA extern long mca_init(long, long); -#endif extern void sysctl_init(void); extern void smp_setup(char *str, int *ints); @@ -82,6 +80,9 @@ extern void lp_setup(char *str, int *ints); extern void eth_setup(char *str, int *ints); extern void xd_setup(char *str, int *ints); +#ifdef CONFIG_BLK_DEV_EZ +extern void ez_setup(char *str, int *ints); +#endif extern void floppy_setup(char *str, int *ints); extern void st_setup(char *str, int *ints); extern void st0x_setup(char *str, int *ints); @@ -99,9 +100,7 @@ extern void eata2x_setup(char *str, int *ints); extern void u14_34f_setup(char *str, int *ints); extern void fdomain_setup(char *str, int *ints); -#ifdef CONFIG_SCSI_IBMMCA extern void ibmmca_scsi_setup(char *str, int *ints); -#endif extern void in2000_setup(char *str, int *ints); extern void NCR53c406a_setup(char *str, int *ints); extern void wd7000_setup(char *str, int *ints); @@ -109,6 +108,7 @@ extern void scsi_luns_setup(char *str, int *ints); extern void sound_setup(char *str, int *ints); extern void reboot_setup(char *str, int *ints); +extern void video_setup(char *str, int *ints); #ifdef CONFIG_CDU31A extern void cdu31a_setup(char *str, int *ints); #endif CONFIG_CDU31A @@ -134,6 +134,9 @@ #ifdef CONFIG_GSCD extern void gscd_setup(char *str, int *ints); #endif CONFIG_GSCD +#ifdef CONFIG_BPCD +extern void bpcd_setup(char *str, int *ints); +#endif CONFIG_BPCD #ifdef CONFIG_CM206 extern void cm206_setup(char *str, int *ints); #endif CONFIG_CM206 @@ -280,6 +283,9 @@ { "noinitrd", no_initrd }, #endif #endif +#if defined (CONFIG_AMIGA) || defined (CONFIG_ATARI) + { "video=", video_setup }, +#endif { "swap=", swap_setup }, { "buff=", buff_setup }, { "panic=", panic_setup }, @@ -369,12 +375,15 @@ #ifdef CONFIG_BLK_DEV_XD { "xd=", xd_setup }, #endif +#ifdef CONFIG_BLK_DEV_EZ + { "ez=", ez_setup }, +#endif #ifdef CONFIG_BLK_DEV_FD { "floppy=", floppy_setup }, #endif #ifdef CONFIG_BLK_DEV_PS2 { "ed=", ed_setup }, - { "tp720", tp720_setup }, + { "tp720=", tp720_setup }, #endif #ifdef CONFIG_CDU31A { "cdu31a=", cdu31a_setup }, @@ -397,6 +406,9 @@ #ifdef CONFIG_GSCD { "gscd=", gscd_setup }, #endif CONFIG_GSCD +#ifdef CONFIG_BPCD + { "bpcd=", bpcd_setup }, +#endif CONFIG_BPCD #ifdef CONFIG_CM206 { "cm206=", cm206_setup }, #endif CONFIG_CM206 @@ -571,6 +583,11 @@ { "sdc", 0x0820 }, { "sdd", 0x0830 }, { "sde", 0x0840 }, + { "ada", 0x1c00 }, + { "adb", 0x1c10 }, + { "adc", 0x1c20 }, + { "add", 0x1c30 }, + { "ade", 0x1c40 }, { "fd", 0x0200 }, { "xda", 0x0d00 }, { "xdb", 0x0d40 }, @@ -583,6 +600,8 @@ { "gscd", 0x1000 }, { "sbpcd", 0x1900 }, { "sonycd", 0x1800 }, + { "eza", 0x2800 }, + { "bpcd", 0x2900 }, { NULL, 0 } }; diff -u --recursive --new-file v2.1.16/linux/ipc/shm.c linux/ipc/shm.c --- v2.1.16/linux/ipc/shm.c Fri Nov 22 18:28:21 1996 +++ linux/ipc/shm.c Thu Dec 19 11:03:37 1996 @@ -180,7 +180,7 @@ numpages = shp->shm_npages; for (i = 0; i < numpages ; i++) { pte_t pte; - pte_val(pte) = shp->shm_pages[i]; + pte = __pte(shp->shm_pages[i]); if (pte_none(pte)) continue; if (pte_present(pte)) { @@ -649,21 +649,21 @@ return BAD_PAGE; } - pte_val(pte) = shp->shm_pages[idx]; + pte = __pte(shp->shm_pages[idx]); if (!pte_present(pte)) { unsigned long page = get_free_page(GFP_KERNEL); if (!page) { oom(current); return BAD_PAGE; } - pte_val(pte) = shp->shm_pages[idx]; + pte = __pte(shp->shm_pages[idx]); if (pte_present(pte)) { free_page (page); /* doesn't sleep */ goto done; } if (!pte_none(pte)) { read_swap_page(pte_val(pte), (char *) page); - pte_val(pte) = shp->shm_pages[idx]; + pte = __pte(shp->shm_pages[idx]); if (pte_present(pte)) { free_page (page); /* doesn't sleep */ goto done; @@ -723,7 +723,7 @@ if (idx >= shp->shm_npages) goto next_id; - pte_val(page) = shp->shm_pages[idx]; + page = __pte(shp->shm_pages[idx]); if (!pte_present(page)) goto check_table; if (dma && !PageDMA(&mem_map[MAP_NR(pte_page(page))])) @@ -774,7 +774,8 @@ continue; } if (pte_page(pte) != pte_page(page)) - printk("shm_swap_out: page and pte mismatch\n"); + printk("shm_swap_out: page and pte mismatch %lx %lx\n", + pte_page(pte),pte_page(page)); flush_cache_page(shmd, tmp); set_pte(page_table, __pte(shmd->vm_pte + SWP_ENTRY(0, idx << SHM_IDX_SHIFT))); diff -u --recursive --new-file v2.1.16/linux/kernel/fork.c linux/kernel/fork.c --- v2.1.16/linux/kernel/fork.c Sat Nov 30 12:03:12 1996 +++ linux/kernel/fork.c Thu Dec 19 16:48:08 1996 @@ -274,7 +274,9 @@ goto bad_fork_cleanup_fs; if (copy_mm(clone_flags, p)) goto bad_fork_cleanup_sighand; - copy_thread(nr, clone_flags, usp, p, regs); + error = copy_thread(nr, clone_flags, usp, p, regs); + if (error) + goto bad_fork_cleanup_sighand; p->semundo = NULL; /* ok, now we should be set up.. */ diff -u --recursive --new-file v2.1.16/linux/kernel/ksyms.c linux/kernel/ksyms.c --- v2.1.16/linux/kernel/ksyms.c Thu Dec 12 19:37:21 1996 +++ linux/kernel/ksyms.c Thu Dec 19 16:46:09 1996 @@ -128,6 +128,7 @@ X(mem_map), X(remap_page_range), X(max_mapnr), + X(num_physpages), X(high_memory), X(update_vm_cache), diff -u --recursive --new-file v2.1.16/linux/kernel/panic.c linux/kernel/panic.c --- v2.1.16/linux/kernel/panic.c Thu Dec 12 19:37:21 1996 +++ linux/kernel/panic.c Thu Dec 19 11:03:37 1996 @@ -13,6 +13,7 @@ #include #include #include +#include asmlinkage void sys_sync(void); /* it's really int */ extern void hard_reset_now(void); @@ -44,6 +45,9 @@ do_unblank_screen(); +#ifdef __SMP__ + smp_message_pass(MSG_ALL_BUT_SELF, MSG_STOP_CPU, 0, 0); +#endif if (panic_timeout > 0) { /* @@ -60,6 +64,10 @@ */ hard_reset_now(); } +#ifdef __sparc__ + printk("Press L1-A to return to the boot prom\n"); +#endif + sti(); for(;;); } diff -u --recursive --new-file v2.1.16/linux/kernel/printk.c linux/kernel/printk.c --- v2.1.16/linux/kernel/printk.c Tue Oct 29 19:58:48 1996 +++ linux/kernel/printk.c Thu Dec 19 10:32:56 1996 @@ -153,7 +153,7 @@ va_list args; int i; char *msg, *p, *buf_end; - static char msg_level = -1; + static signed char msg_level = -1; long flags; save_flags(flags); @@ -216,7 +216,7 @@ int i,j; int p = log_start; char buf[16]; - char msg_level = -1; + signed char msg_level = -1; char *q; console_print_proc = proc; diff -u --recursive --new-file v2.1.16/linux/kernel/sys.c linux/kernel/sys.c --- v2.1.16/linux/kernel/sys.c Thu Dec 12 19:37:21 1996 +++ linux/kernel/sys.c Thu Dec 19 11:03:37 1996 @@ -179,6 +179,9 @@ #endif extern void hard_reset_now(void); +#ifdef __sparc__ +extern void halt_now(void); +#endif extern asmlinkage sys_kill(int, int); /* @@ -193,7 +196,8 @@ { if (!suser()) return -EPERM; - if (magic != 0xfee1dead || magic_too != 672274793) + if (magic != 0xfee1dead || + (magic_too != 672274793 && magic_too != 85072278)) return -EINVAL; if (flag == 0x01234567) { @@ -206,6 +210,9 @@ C_A_D = 0; else if (flag == 0xCDEF0123) { printk(KERN_EMERG "System halted\n"); +#ifdef __sparc__ + halt_now(); +#endif sys_kill(-1, SIGKILL); #if defined(CONFIG_APM) && defined(CONFIG_APM_POWER_OFF) apm_set_power_state(APM_STATE_OFF); diff -u --recursive --new-file v2.1.16/linux/mm/filemap.c linux/mm/filemap.c --- v2.1.16/linux/mm/filemap.c Sat Nov 30 12:03:13 1996 +++ linux/mm/filemap.c Thu Dec 19 16:46:09 1996 @@ -129,7 +129,7 @@ { static unsigned long clock = 0; struct page * page; - unsigned long limit = max_mapnr; + unsigned long limit = num_physpages; struct buffer_head *tmp, *bh; int count_max, count_min; diff -u --recursive --new-file v2.1.16/linux/mm/memory.c linux/mm/memory.c --- v2.1.16/linux/mm/memory.c Tue Oct 29 19:58:48 1996 +++ linux/mm/memory.c Thu Dec 19 16:46:09 1996 @@ -51,6 +51,7 @@ #include unsigned long max_mapnr = 0; +unsigned long num_physpages = 0; void * high_memory = NULL; /* diff -u --recursive --new-file v2.1.16/linux/mm/mlock.c linux/mm/mlock.c --- v2.1.16/linux/mm/mlock.c Tue Oct 29 19:58:48 1996 +++ linux/mm/mlock.c Thu Dec 19 16:46:09 1996 @@ -203,7 +203,7 @@ /* we may lock at most half of physical memory... */ /* (this check is pretty bogus, but doesn't hurt) */ - if (locked > max_mapnr/2) + if (locked > num_physpages/2) return -ENOMEM; return do_mlock(start, len, 1); @@ -260,7 +260,7 @@ /* we may lock at most half of physical memory... */ /* (this check is pretty bogus, but doesn't hurt) */ - if (current->mm->total_vm > max_mapnr/2) + if (current->mm->total_vm > num_physpages/2) return -ENOMEM; return do_mlockall(flags); diff -u --recursive --new-file v2.1.16/linux/mm/mmap.c linux/mm/mmap.c --- v2.1.16/linux/mm/mmap.c Fri Nov 22 18:28:22 1996 +++ linux/mm/mmap.c Thu Dec 19 16:46:09 1996 @@ -58,7 +58,7 @@ freepages >>= 1; freepages += nr_free_pages; freepages += nr_swap_pages; - freepages -= max_mapnr >> 4; + freepages -= num_physpages >> 4; return freepages > pages; } diff -u --recursive --new-file v2.1.16/linux/mm/vmalloc.c linux/mm/vmalloc.c --- v2.1.16/linux/mm/vmalloc.c Tue Oct 29 19:58:48 1996 +++ linux/mm/vmalloc.c Sat Dec 21 14:24:05 1996 @@ -73,7 +73,7 @@ pgd_t * dir; unsigned long end = address + size; - dir = pgd_offset(&init_mm, address); + dir = pgd_offset_k(address); flush_cache_all(); while (address < end) { free_area_pmd(dir, address, end - address); @@ -130,7 +130,7 @@ pgd_t * dir; unsigned long end = address + size; - dir = pgd_offset(&init_mm, address); + dir = pgd_offset_k(address); flush_cache_all(); while (address < end) { pmd_t *pmd = pmd_alloc_kernel(dir, address); diff -u --recursive --new-file v2.1.16/linux/net/802/transit/timertr.h linux/net/802/transit/timertr.h --- v2.1.16/linux/net/802/transit/timertr.h Wed Dec 18 15:59:14 1996 +++ linux/net/802/transit/timertr.h Thu Dec 19 10:32:56 1996 @@ -1,5 +1,5 @@ -/* this file was generated on Mon Dec 16 22:26:17 GMT 1996 */ +/* this file was generated on Wed Dec 18 23:01:37 GMT 1996 */ /* size of transition table is 898 bytes */ diff -u --recursive --new-file v2.1.16/linux/net/README linux/net/README --- v2.1.16/linux/net/README Thu Dec 12 17:02:47 1996 +++ linux/net/README Sat Dec 21 13:16:57 1996 @@ -4,7 +4,7 @@ Code Section Bug Report Contact -------------------+------------------------------------------- 802 [other ] alan@lxorguk.ukuu.org.uk - [token ring ] needs a maintainer/debugger + [token ring ] pnorton@cts.com appletalk alan@lxorguk.ukuu.org.uk and netatalk@umich.edu ax25 jsn@cs.nott.ac.uk core alan@lxorguk.ukuu.org.uk diff -u --recursive --new-file v2.1.16/linux/net/appletalk/ddp.c linux/net/appletalk/ddp.c --- v2.1.16/linux/net/appletalk/ddp.c Wed Dec 18 15:59:14 1996 +++ linux/net/appletalk/ddp.c Thu Dec 19 17:07:35 1996 @@ -2110,7 +2110,7 @@ dev_remove_pack(<alk_packet_type); dev_remove_pack(&ppptalk_packet_type); unregister_snap_client(ddp_snap_id); - sock_unregister(&atalk_family_ops); + sock_unregister(atalk_family_ops.family); free_route_list(); free_interface_list(); diff -u --recursive --new-file v2.1.16/linux/net/bridge/br.c linux/net/bridge/br.c --- v2.1.16/linux/net/bridge/br.c Wed Dec 18 15:59:14 1996 +++ linux/net/bridge/br.c Thu Dec 19 10:32:56 1996 @@ -943,6 +943,7 @@ struct device *dev = port_info[port_no].dev; int size; unsigned long flags; +struct ethhdr *eth; if (port_info[port_no].state == Disabled) { printk(KERN_DEBUG "send_config_bpdu: port %i not valid\n",port_no); @@ -953,34 +954,34 @@ /* * create and send the message */ - size = sizeof(Config_bpdu) + dev->hard_header_len; + size = dev->hard_header_len + sizeof(Config_bpdu); skb = alloc_skb(size, GFP_ATOMIC); if (skb == NULL) { printk(KERN_DEBUG "send_config_bpdu: no skb available\n"); return(-1); } skb->dev = dev; - skb->free = 1; - skb->h.eth = (struct ethhdr *)skb_put(skb, size); - memcpy(skb->h.eth->h_dest, bridge_ula, ETH_ALEN); - memcpy(skb->h.eth->h_source, dev->dev_addr, ETH_ALEN); + skb->mac.raw = skb->h.raw = skb_put(skb, size); + eth = skb->mac.ethernet; + memcpy(eth->h_dest, bridge_ula, ETH_ALEN); + memcpy(eth->h_source, dev->dev_addr, ETH_ALEN); if (br_stats.flags & BR_DEBUG) printk("port %i src %02x:%02x:%02x:%02x:%02x:%02x\ dest %02x:%02x:%02x:%02x:%02x:%02x\n", port_no, - skb->h.eth->h_source[0], - skb->h.eth->h_source[1], - skb->h.eth->h_source[2], - skb->h.eth->h_source[3], - skb->h.eth->h_source[4], - skb->h.eth->h_source[5], - skb->h.eth->h_dest[0], - skb->h.eth->h_dest[1], - skb->h.eth->h_dest[2], - skb->h.eth->h_dest[3], - skb->h.eth->h_dest[4], - skb->h.eth->h_dest[5]); - skb->h.eth->h_proto = htons(0x8038); + eth->h_source[0], + eth->h_source[1], + eth->h_source[2], + eth->h_source[3], + eth->h_source[4], + eth->h_source[5], + eth->h_dest[0], + eth->h_dest[1], + eth->h_dest[2], + eth->h_dest[3], + eth->h_dest[4], + eth->h_dest[5]); + eth->h_proto = htons(0x8038); skb->h.raw += skb->dev->hard_header_len; memcpy(skb->h.raw, config_bpdu, sizeof(Config_bpdu)); @@ -988,7 +989,6 @@ /* won't get bridged again... */ skb->pkt_bridged = IS_BRIDGED; skb->arp = 1; /* do not resolve... */ - skb->h.raw = skb->data + ETH_HLEN; save_flags(flags); cli(); skb_queue_tail(dev->buffs, skb); @@ -1002,6 +1002,7 @@ struct device *dev = port_info[port_no].dev; int size; unsigned long flags; +struct ethhdr *eth; if (port_info[port_no].state == Disabled) { printk(KERN_DEBUG "send_tcn_bpdu: port %i not valid\n",port_no); @@ -1016,27 +1017,27 @@ return(-1); } skb->dev = dev; - skb->free = 1; - skb->h.eth = (struct ethhdr *)skb_put(skb,size); - memcpy(skb->h.eth->h_dest, bridge_ula, ETH_ALEN); - memcpy(skb->h.eth->h_source, dev->dev_addr, ETH_ALEN); + skb->mac.raw = skb->h.raw = skb_put(skb,size); + eth = skb->mac.ethernet; + memcpy(eth->h_dest, bridge_ula, ETH_ALEN); + memcpy(eth->h_source, dev->dev_addr, ETH_ALEN); if (br_stats.flags & BR_DEBUG) printk("port %i src %02x:%02x:%02x:%02x:%02x:%02x\ dest %02x:%02x:%02x:%02x:%02x:%02x\n", port_no, - skb->h.eth->h_source[0], - skb->h.eth->h_source[1], - skb->h.eth->h_source[2], - skb->h.eth->h_source[3], - skb->h.eth->h_source[4], - skb->h.eth->h_source[5], - skb->h.eth->h_dest[0], - skb->h.eth->h_dest[1], - skb->h.eth->h_dest[2], - skb->h.eth->h_dest[3], - skb->h.eth->h_dest[4], - skb->h.eth->h_dest[5]); - skb->h.eth->h_proto = htons(0x8038); + eth->h_source[0], + eth->h_source[1], + eth->h_source[2], + eth->h_source[3], + eth->h_source[4], + eth->h_source[5], + eth->h_dest[0], + eth->h_dest[1], + eth->h_dest[2], + eth->h_dest[3], + eth->h_dest[4], + eth->h_dest[5]); + eth->h_proto = htons(0x8038); skb->h.raw += skb->dev->hard_header_len; memcpy(skb->h.raw, bpdu, sizeof(Tcn_bpdu)); @@ -1044,7 +1045,6 @@ /* mark that we've been here... */ skb->pkt_bridged = IS_BRIDGED; skb->arp = 1; /* do not resolve... */ - skb->h.raw = skb->data + ETH_HLEN; save_flags(flags); cli(); skb_queue_tail(dev->buffs, skb); @@ -1120,6 +1120,7 @@ int br_receive_frame(struct sk_buff *skb) /* 3.5 */ { int port; + struct ethhdr *eth; if (br_stats.flags & BR_DEBUG) printk("br_receive_frame: "); @@ -1139,22 +1140,23 @@ skb->arp = 1; /* Received frame so it is resolved */ skb->h.raw = skb->mac.raw; + eth = skb->mac.ethernet; if (br_stats.flags & BR_DEBUG) printk("port %i src %02x:%02x:%02x:%02x:%02x:%02x\ dest %02x:%02x:%02x:%02x:%02x:%02x\n", port, - skb->h.eth->h_source[0], - skb->h.eth->h_source[1], - skb->h.eth->h_source[2], - skb->h.eth->h_source[3], - skb->h.eth->h_source[4], - skb->h.eth->h_source[5], - skb->h.eth->h_dest[0], - skb->h.eth->h_dest[1], - skb->h.eth->h_dest[2], - skb->h.eth->h_dest[3], - skb->h.eth->h_dest[4], - skb->h.eth->h_dest[5]); + eth->h_source[0], + eth->h_source[1], + eth->h_source[2], + eth->h_source[3], + eth->h_source[4], + eth->h_source[5], + eth->h_dest[0], + eth->h_dest[1], + eth->h_dest[2], + eth->h_dest[3], + eth->h_dest[4], + eth->h_dest[5]); if (!port) { if(br_stats.flags&BR_DEBUG) @@ -1169,7 +1171,7 @@ /* fall through */ case Listening: /* process BPDUs */ - if (memcmp(skb->h.eth->h_dest, bridge_ula, 6) == 0) { + if (memcmp(eth->h_dest, bridge_ula, 6) == 0) { br_bpdu(skb); return(1); /* br_bpdu consumes skb */ } @@ -1186,7 +1188,7 @@ case Forwarding: (void) br_learn(skb, port); /* 3.8 */ /* process BPDUs */ - if (memcmp(skb->h.eth->h_dest, bridge_ula, + if (memcmp(eth->h_dest, bridge_ula, ETH_ALEN) == 0) { /*printk("frame bpdu processor for me!!!\n");*/ @@ -1194,7 +1196,7 @@ return(1); /* br_bpdu consumes skb */ } /* is frame for me? */ - if (memcmp(skb->h.eth->h_dest, + if (memcmp(eth->h_dest, port_info[port].dev->dev_addr, ETH_ALEN) == 0) { @@ -1227,6 +1229,7 @@ int br_tx_frame(struct sk_buff *skb) /* 3.5 */ { int port; + struct ethhdr *eth; /* sanity */ if (!skb) @@ -1250,24 +1253,25 @@ if (! find_port(skb->dev)) return(0); - skb->h.raw = skb->data; + skb->mac.raw = skb->h.raw = skb->data; + eth = skb->mac.ethernet; port = 0; /* an impossible port */ if (br_stats.flags & BR_DEBUG) printk("br_tx_fr : port %i src %02x:%02x:%02x:%02x:%02x:%02x\ dest %02x:%02x:%02x:%02x:%02x:%02x\n", port, - skb->h.eth->h_source[0], - skb->h.eth->h_source[1], - skb->h.eth->h_source[2], - skb->h.eth->h_source[3], - skb->h.eth->h_source[4], - skb->h.eth->h_source[5], - skb->h.eth->h_dest[0], - skb->h.eth->h_dest[1], - skb->h.eth->h_dest[2], - skb->h.eth->h_dest[3], - skb->h.eth->h_dest[4], - skb->h.eth->h_dest[5]); + eth->h_source[0], + eth->h_source[1], + eth->h_source[2], + eth->h_source[3], + eth->h_source[4], + eth->h_source[5], + eth->h_dest[0], + eth->h_dest[1], + eth->h_dest[2], + eth->h_dest[3], + eth->h_dest[4], + eth->h_dest[5]); return(br_forward(skb, port)); } @@ -1291,7 +1295,7 @@ case Learning: case Forwarding: /* don't keep group addresses in the tree */ - if (skb->h.eth->h_source[0] & 0x01) + if (skb->mac.ethernet->h_source[0] & 0x01) return(-1); f = (struct fdb *)kmalloc(sizeof(struct fdb), @@ -1302,7 +1306,7 @@ return(-1); } f->port = port; /* source port */ - memcpy(f->ula, skb->h.eth->h_source, 6); + memcpy(f->ula, skb->mac.ethernet->h_source, 6); f->timer = CURRENT_TIME; f->flags = FDB_ENT_VALID; /* @@ -1362,7 +1366,7 @@ * Multicast frames will also need to be seen * by our upper layers. */ - if (skb->h.eth->h_dest[0] & 0x01) + if (skb->mac.ethernet->h_dest[0] & 0x01) { /* group address */ br_flood(skb, port); @@ -1376,7 +1380,7 @@ return(0); } else { /* locate port to forward to */ - f = br_avl_find_addr(skb->h.eth->h_dest); + f = br_avl_find_addr(skb->mac.ethernet->h_dest); /* * Send flood and drop. */ @@ -1416,7 +1420,8 @@ /* * We send this still locked */ - dev_queue_xmit(skb, skb->dev,1); + skb->priority = 1; + dev_queue_xmit(skb); return(1); /* skb has been consumed */ } else { /* @@ -1457,7 +1462,8 @@ /* printk("Flood to port %d\n",i);*/ nskb->h.raw = nskb->data + ETH_HLEN; - dev_queue_xmit(nskb,nskb->dev,1); + nskb->priority = 1; + dev_queue_xmit(nskb); } } return(0); diff -u --recursive --new-file v2.1.16/linux/net/core/dev.c linux/net/core/dev.c --- v2.1.16/linux/net/core/dev.c Wed Dec 18 15:59:14 1996 +++ linux/net/core/dev.c Thu Dec 19 17:10:25 1996 @@ -1028,7 +1028,7 @@ stats->qual.noise, stats->qual.updated & 3 ? '.' : ' ', stats->discard.nwid, - stats->discard.codec, + stats->discard.code, stats->discard.misc); else size = 0; diff -u --recursive --new-file v2.1.16/linux/net/ipv4/devinet.c linux/net/ipv4/devinet.c --- v2.1.16/linux/net/ipv4/devinet.c Thu Dec 12 19:37:25 1996 +++ linux/net/ipv4/devinet.c Thu Dec 19 17:07:35 1996 @@ -56,7 +56,6 @@ * Determine a default network mask, based on the IP address. */ -static unsigned long ip_get_mask(unsigned long addr) { unsigned long dst; diff -u --recursive --new-file v2.1.16/linux/net/ipv4/raw.c linux/net/ipv4/raw.c --- v2.1.16/linux/net/ipv4/raw.c Thu Dec 12 19:37:26 1996 +++ linux/net/ipv4/raw.c Thu Dec 19 21:34:41 1996 @@ -125,7 +125,7 @@ struct rawfakehdr { - const char *from; + const unsigned char *from; u32 saddr; }; @@ -139,8 +139,8 @@ static int raw_getfrag(const void *p, char *to, unsigned int offset, unsigned int fraglen) { - struct rawfakehdr *rfh = (struct rawfakehdr*)p; - return copy_from_user(to, (const unsigned char *)rfh->from+offset, fraglen); + struct rawfakehdr *rfh = (struct rawfakehdr *) p; + return copy_from_user(to, rfh->from + offset, fraglen); } /* @@ -149,11 +149,10 @@ static int raw_getrawfrag(const void *p, char *to, unsigned int offset, unsigned int fraglen) { - struct rawfakehdr *rfh = (struct rawfakehdr*)p; - int err; - err = copy_from_user(to, (const unsigned char *)p+offset, fraglen); - if (err) - return err; + struct rawfakehdr *rfh = (struct rawfakehdr *) p; + + if (copy_from_user(to, rfh->from + offset, fraglen)) + return -EFAULT; if (offset==0) { struct iphdr *iph = (struct iphdr *)to; if (!iph->saddr) diff -u --recursive --new-file v2.1.16/linux/net/netsyms.c linux/net/netsyms.c --- v2.1.16/linux/net/netsyms.c Wed Dec 18 15:59:15 1996 +++ linux/net/netsyms.c Sat Dec 21 13:16:57 1996 @@ -84,6 +84,8 @@ X(memcpy_fromiovec), X(sock_setsockopt), X(sock_getsockopt), + X(sock_sendmsg), + X(sock_recvmsg), X(sk_alloc), X(sk_free), X(sock_wake_async), @@ -97,7 +99,7 @@ X(skb_realloc_headroom), X(datagram_select), - /* ?? needed by smbfs.o */ + /* Needed by smbfs.o */ X(__scm_destroy), X(__scm_send), @@ -126,9 +128,6 @@ X(ip_dev_find_tunnel), X(inet_family_ops), - X(__scm_send), - X(__scm_destroy), - #ifdef CONFIG_IP_FORWARD X(ip_forward), #endif @@ -223,6 +222,9 @@ #ifdef CONFIG_TR X(tr_setup), X(tr_type_trans), + X(register_trdev), + X(unregister_trdev), + X(init_trdev), #endif #ifdef CONFIG_NET_ALIAS diff -u --recursive --new-file v2.1.16/linux/net/rose/af_rose.c linux/net/rose/af_rose.c --- v2.1.16/linux/net/rose/af_rose.c Wed Dec 18 15:59:15 1996 +++ linux/net/rose/af_rose.c Thu Dec 19 10:32:57 1996 @@ -15,6 +15,8 @@ * History * Rose 001 Jonathan(G4KLX) Cloned from af_netrom.c. * Alan(GW4PTS) Hacked up for newer API stuff + * Terry (VK2KTJ) Added support for variable length + * address masks. */ #include @@ -97,6 +99,31 @@ if (addr1->rose_addr[i] != addr2->rose_addr[i]) return 1; + return 0; +} + +/* + * Compare two Rose addresses for only mask digits, 0 == equal. + */ +int rosecmpm(rose_address *addr1, rose_address *addr2, unsigned short mask) +{ + int i, j; + + if (mask > 10) + return 1; + + for (i = 0, j = 0; i < mask; i++) { + j = i / 2; + + if ((i % 2) != 0) { /* odd place */ + if ((addr1->rose_addr[j] & 0xF0) != (addr2->rose_addr[j] & 0xF0)) + return 1; + } else { /* even place */ + if ((addr1->rose_addr[j] & 0x0F) != (addr2->rose_addr[j] & 0x0F)) + return 1; + } + } + return 0; } diff -u --recursive --new-file v2.1.16/linux/net/rose/rose_out.c linux/net/rose/rose_out.c --- v2.1.16/linux/net/rose/rose_out.c Wed Dec 18 15:59:15 1996 +++ linux/net/rose/rose_out.c Thu Dec 19 10:32:57 1996 @@ -155,7 +155,9 @@ } while (!last && (skb = skb_dequeue(&sk->write_queue)) != NULL); - sk->protinfo.rose->vl = sk->protinfo.rose->vr; + sk->protinfo.rose->vl = sk->protinfo.rose->vr; + sk->protinfo.rose->condition &= ~ACK_PENDING_CONDITION; + sk->protinfo.rose->timer = 0; } rose_set_timer(sk); @@ -174,7 +176,9 @@ rose_write_internal(sk, ROSE_RR); } - sk->protinfo.rose->vl = sk->protinfo.rose->vr; + sk->protinfo.rose->vl = sk->protinfo.rose->vr; + sk->protinfo.rose->condition &= ~ACK_PENDING_CONDITION; + sk->protinfo.rose->timer = 0; } void rose_check_iframes_acked(struct sock *sk, unsigned short nr) diff -u --recursive --new-file v2.1.16/linux/net/rose/rose_route.c linux/net/rose/rose_route.c --- v2.1.16/linux/net/rose/rose_route.c Tue Nov 12 15:56:17 1996 +++ linux/net/rose/rose_route.c Thu Dec 19 10:32:57 1996 @@ -14,6 +14,8 @@ * * History * Rose 001 Jonathan(G4KLX) Cloned from nr_route.c. + * Terry(VK2KTJ) Added support for variable length + * address masks. */ #include @@ -60,13 +62,13 @@ */ static int rose_add_node(struct rose_route_struct *rose_route, struct device *dev) { - struct rose_node *rose_node; + struct rose_node *rose_node, *rose_tmpn, *rose_tmpp; struct rose_neigh *rose_neigh; unsigned long flags; int i; for (rose_node = rose_node_list; rose_node != NULL; rose_node = rose_node->next) - if (rosecmp(&rose_route->address, &rose_node->address) == 0) + if ((rose_node->mask == rose_route->mask) && (rosecmpm(&rose_route->address, &rose_node->address, rose_route->mask) == 0)) break; for (rose_neigh = rose_neigh_list; rose_neigh != NULL; rose_neigh = rose_neigh->next) @@ -104,19 +106,56 @@ restore_flags(flags); } + /* + * This is a new node to be inserted into the list. Find where it needs + * to be inserted into the list, and insert it. We want to be sure + * to order the list in descending order of mask size to ensure that + * later when we are searching this list the first match will be the + * best match. + */ if (rose_node == NULL) { + + rose_tmpn = rose_node_list; + rose_tmpp = NULL; + while(rose_tmpn != NULL) { + if (rose_tmpn->mask > rose_route->mask) { + rose_tmpp = rose_tmpn; + rose_tmpn = rose_tmpn->next; + } else { + break; + } + } + + /* create new node */ if ((rose_node = (struct rose_node *)kmalloc(sizeof(*rose_node), GFP_ATOMIC)) == NULL) return -ENOMEM; rose_node->address = rose_route->address; + rose_node->mask = rose_route->mask; rose_node->which = 0; rose_node->count = 1; - rose_node->neighbour[0] = rose_neigh; - + save_flags(flags); cli(); - rose_node->next = rose_node_list; - rose_node_list = rose_node; + + if (rose_tmpn == NULL) { + if (rose_tmpp == NULL) { /* Empty list */ + rose_node_list = rose_node; + rose_node->next = NULL; + } else { + rose_tmpp->next = rose_node; + rose_node->next = NULL; + } + } else { + if (rose_tmpp == NULL) { /* 1st node */ + rose_node->next = rose_node_list; + rose_node_list = rose_node; + } else { + rose_tmpp->next = rose_node; + rose_node->next = rose_tmpn; + } + } + restore_flags(flags); rose_neigh->count++; @@ -246,7 +285,7 @@ int i; for (rose_node = rose_node_list; rose_node != NULL; rose_node = rose_node->next) - if (rosecmp(&rose_route->address, &rose_node->address) == 0) + if ((rose_node->mask == rose_route->mask) && (rosecmpm(&rose_route->address, &rose_node->address, rose_route->mask) == 0)) break; if (rose_node == NULL) return -EINVAL; @@ -397,11 +436,11 @@ struct rose_neigh *rose_get_neigh(rose_address *addr) { struct rose_node *node; - + for (node = rose_node_list; node != NULL; node = node->next) - if (rosecmp(&node->address, addr) == 0) + if (rosecmpm(addr, &node->address, node->mask) == 0) break; - + if (node == NULL) return NULL; if (node->which >= node->count) return NULL; @@ -428,6 +467,9 @@ return -EINVAL; if (rose_dev_get(&rose_route.address) != NULL) /* Can't add routes to ourself */ return -EINVAL; + if (rose_route.mask > 10) /* Mask can't be more than 10 digits */ + return -EINVAL; + return rose_add_node(&rose_route, dev); case SIOCDELRT: @@ -604,7 +646,7 @@ * Create a new route entry, if we can. */ for (rose_node = rose_node_list; rose_node != NULL; rose_node = rose_node->next) - if (rosecmp(&rose_node->address, dest_addr) == 0) + if (rosecmpm(dest_addr, &rose_node->address, rose_node->mask) == 0) break; /* * Its an unknown node, or is unreachable. @@ -651,11 +693,12 @@ cli(); - len += sprintf(buffer, "address w n neigh neigh neigh\n"); + len += sprintf(buffer, "address mask w n neigh neigh neigh\n"); for (rose_node = rose_node_list; rose_node != NULL; rose_node = rose_node->next) { - len += sprintf(buffer + len, "%-10s %d %d", + len += sprintf(buffer + len, "%-10s %04d %d %d", rose2asc(&rose_node->address), + rose_node->mask, rose_node->which + 1, rose_node->count); diff -u --recursive --new-file v2.1.16/linux/net/unix/af_unix.c linux/net/unix/af_unix.c --- v2.1.16/linux/net/unix/af_unix.c Wed Dec 18 15:59:15 1996 +++ linux/net/unix/af_unix.c Thu Dec 19 17:02:48 1996 @@ -627,7 +627,7 @@ int alen, int flags) { struct sock *sk = sock->sk; - struct sockaddr_un *sun=(struct sockaddr_un*)addr; + struct sockaddr_un *sunaddr=(struct sockaddr_un*)addr; struct sock *other; unsigned hash; int err; @@ -647,11 +647,11 @@ return 0; } - alen = unix_mkname(sun, alen, &hash); + alen = unix_mkname(sunaddr, alen, &hash); if (alen < 0) return alen; - other=unix_find_other(sun, alen, sock->type, hash, &err); + other=unix_find_other(sunaddr, alen, sock->type, hash, &err); if (!other) return err; if (!unix_may_send(sk, other)) diff -u --recursive --new-file v2.1.16/linux/scripts/mkdep.c linux/scripts/mkdep.c --- v2.1.16/linux/scripts/mkdep.c Thu Dec 12 19:37:32 1996 +++ linux/scripts/mkdep.c Thu Dec 19 11:03:37 1996 @@ -235,6 +235,10 @@ return; } fstat(fd, &st); + if (st.st_size == 0) { + fprintf(stderr,"%s is empty\n",filename); + return; + } mapsize = st.st_size + 2*sizeof(unsigned long); mapsize = (mapsize+pagesizem1) & ~pagesizem1; map = mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, fd, 0);