diff options
author | TerryMathews <terry@terrymathews.net> | 2016-06-12 22:26:47 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-06-12 22:26:47 -0400 |
commit | 25d4772754186b8ab6ef86c28049da67a460f123 (patch) | |
tree | c68ca4c6ee77f3601c2c8d3fe7573e0cdc8fd791 /keyboard | |
parent | 6955719075a9a07524814e4183f3f90f83db1c6a (diff) |
adds support for Phantom TKL keyboard (#399)
ANSI 125 layout, capslock and scrolllock implemented, support for
WS2812LED strip included.
Diffstat (limited to 'keyboard')
-rw-r--r-- | keyboard/phantom/Makefile | 112 | ||||
-rw-r--r-- | keyboard/phantom/config.h | 91 | ||||
-rw-r--r-- | keyboard/phantom/keymaps/default/compiled.hex | 1488 | ||||
-rw-r--r-- | keyboard/phantom/keymaps/default/keymap.c | 169 | ||||
-rw-r--r-- | keyboard/phantom/led.c | 44 | ||||
-rw-r--r-- | keyboard/phantom/phantom.c | 28 | ||||
-rw-r--r-- | keyboard/phantom/phantom.h | 46 | ||||
-rw-r--r-- | keyboard/phantom/pinout.jpg | bin | 0 -> 86118 bytes | |||
-rw-r--r-- | keyboard/phantom/pinout.txt | 1 |
9 files changed, 1979 insertions, 0 deletions
diff --git a/keyboard/phantom/Makefile b/keyboard/phantom/Makefile new file mode 100644 index 0000000000..0fbcf914fd --- /dev/null +++ b/keyboard/phantom/Makefile @@ -0,0 +1,112 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +SRC = led.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE ?=yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboard/phantom/config.h b/keyboard/phantom/config.h new file mode 100644 index 0000000000..d5878766f0 --- /dev/null +++ b/keyboard/phantom/config.h @@ -0,0 +1,91 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +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, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0003 +#define MANUFACTURER PHANTOM +#define PRODUCT PHANTOM RGB MOD +#define DESCRIPTION QMK keyboard firmware for PHANTOM TKL + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +*/ +#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 } +/* Column pin configuration + */ +#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Underlight configuration + */ + #define ws2812_PORTREG PORTE + #define ws2812_DDRREG DDRE + #define ws2812_pin 2 + #define RGBLED_NUM 20 // Number of LEDs + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/phantom/keymaps/default/compiled.hex b/keyboard/phantom/keymaps/default/compiled.hex new file mode 100644 index 0000000000..37bbfb5551 --- /dev/null +++ b/keyboard/phantom/keymaps/default/compiled.hex @@ -0,0 +1,1488 @@ +:100000000C945A070C949E070C949E070C949E0720 +:100010000C949E070C949E070C949E070C949E07CC +:100020000C949E070C949E070C9490190C94621AE1 +:100030000C9481280C949E070C949E070C949E07A8 +:100040000C949E070C949E070C949E070C949E079C +:100050000C949E070C94E8280C949E070C949E0721 +:100060000C949E070C949E070C949E070C949E077C +:100070000C949E070C949E070C949E070C949E076C +:100080000C9431140C949E070C949E070C949E07BC +:100090000C949E070C949E070C949E070C949E074C +:1000A0000C949E070C949E070C949E077B089A085C +:1000B000CB08A108A808AF08B608BD08C408C71A2D +:1000C000E91AD41BE91AD41B2B1B4E1BD41BA31BF0 +:1000D000B61B241F241F531F531F931FD220D2204F +:1000E000D220B51FD2205C205C20C520D220D22097 +:1000F000CD20692069206920692069206920692054 +:1001000069206920692069206920692069206920A7 +:1001100069207920892090209720A12000F001F00B +:1001200002F003F004F005F006F007F008F02900F3 +:1001300035003A003B003C003D003E003F004000DF +:10014000410042004300440045004600470048008B +:100150001E001F0020002100220023002400250093 +:10016000260027002D002E002A002A0049004A0000 +:100170004B002B0014001A000800150017001C008B +:1001800018000C00120013002F00300031004C004A +:100190004D004E00390004001600070009000A0057 +:1001A0000B000D000E000F00330034002800280063 +:1001B000280028002800E100E1001D001B000600C7 +:1001C0001900050011001000360037003800E50066 +:1001D000E500520052005200E000E300E2002C0073 +:1001E0002C002C002C002C002C002C00E600E7003A +:1001F0000152E400500051004F00010001000100D5 +:1002000001000100010001000100010001000100E6 +:1002100001000100010001000100010001000100D6 +:1002200001000100010001000100010001000100C6 +:100230000100010000500050010001000100010018 +:1002400001000100010001000100010001000100A6 +:100250000100010001000100010001000100010096 +:100260000100010001000100010001000100010086 +:100270000100010001005200010001000100010025 +:1002800001000100010001200220032004200520BC +:1002900006200720082001000100010001000100E4 +:1002A0000100010001000100010001000100010046 +:1002B0000100010001000100010001000100010036 +:1002C0000100010001000A44454255473A20656E8D +:1002D00061626C65642E0A005374617465206F66F8 +:1002E00020726F772025583A2025303136620A0077 +:1002F00048756D616E2D7265616461626C65206D1B +:1003000061747269782073746174653A0D0A0044EF +:1003100065626F756E63696E672064656C617920D4 +:1003200072656D61696E696E673A2025580A0054DE +:10033000494D4552332064697361626C65642E0ACD +:100340000054494D45523320656E61626C65642EE0 +:100350000A007267626C696768742073657420684C +:100360007376205B454550524F4D5D3A2025752CE4 +:1003700025752C25750A007267626C6967687420A0 +:10038000746F67676C653A207267626C696768743E +:100390005F636F6E6669672E656E61626C65203D96 +:1003A0002025750A007267626C69676874206D6F3A +:1003B00064653A2025750A007267626C6967687423 +:1003C0005F696E6974207267626C696768745F63E5 +:1003D0006F6E6669672E6D6F6465203D20302E203C +:1003E00057726974652064656661756C7420766106 +:1003F0006C75657320746F20454550524F4D2E0A21 +:10040000007267626C696768745F696E6974206501 +:1004100065636F6E666967206973206E6F7420650F +:100420006E61626C65642E0A007267626C6967684F +:10043000745F696E6974207374617274210A00724A +:1004400067626C696768745F696E69742063616C68 +:100450006C65642E0A007267626C696768745F631A +:100460006F6E6669672E76616C203D2025640A00F8 +:100470007267626C696768745F636F6E6669672E26 +:10048000736174203D2025640A007267626C69679D +:1004900068745F636F6E6669672E687565203D20BE +:1004A00025640A007267686C696768745F636F6EC1 +:1004B0006669672E6D6F6465203D2025640A0072B1 +:1004C00067626C696768745F636F6E6669672E65E3 +:1004D0006E61626C65203D2025640A007267626C63 +:1004E000696768745F636F6E666967206570726FB5 +:1004F0006D0A006565636F6E6669675F757064613C +:1005000074655F7267626C696768745F6465666171 +:10051000756C740A00643214643214783C1E1E1424 +:100520000A0500000000010101020203040505069E +:1005300007090A0B0C0E0F1112141517191B1D1F9A +:10054000212325282A2C2F313436393B3E4143467E +:10055000494C4F5255585A5D6164676A6D707376A5 +:10056000797C7F8386898C8F9295989B9EA2A5A784 +:10057000AAADB0B3B6B9BCBEC1C4C6C9CBCED0D388 +:10058000D5D7DADCDEE0E2E4E6E8EAEBEDEEF0F126 +:10059000F3F4F5F6F8F9FAFAFBFCFDFDFEFEFEFFBA +:1005A000FFFFFFFFFFFFFEFEFEFDFDFCFBFAFAF979 +:1005B000F8F6F5F4F3F1F0EEEDEBEAE8E6E4E2E06C +:1005C000DEDCDAD7D5D3D0CECBC9C6C4C1BEBCB968 +:1005D000B6B3B0ADAAA7A5A29E9B9895928F8C8921 +:1005E0008683807C797673706D6A6764615D5A5822 +:1005F00055524F4C494643413E3B393634312F2CFE +:100600002A282523211F1D1B1917151412110F0E3F +:100610000C0B0A090706050504030202010101008B +:1006200000000001010202020202020303030303AD +:100630000303030303030303030404040404040483 +:10064000040404040405050505050505050505065E +:10065000060606060606060707070707070708082F +:10066000080808080909090909090A0A0A0A0A0BF7 +:100670000B0B0B0B0C0C0C0C0C0D0D0D0D0E0E0EB4 +:100680000E0F0F0F10101010111111121212131360 +:1006900013141414151516161617171818191919F6 +:1006A0001A1A1B1B1C1C1D1D1E1E1F20202121226F +:1006B00023232424252626272828292A2B2B2C2DC2 +:1006C0002E2F30303132333435363738393A3B3CDF +:1006D0003D3E3F40414244454647494A4B4C4E4FC0 +:1006E0005152535556585A5B5D5E60626365676947 +:1006F0006B6D6E70727476797B7D7F818486888B5A +:100700008D909295979A9D9FA2A5A8ABAEB1B4B7D4 +:10071000BABEC1C4C8CBCFD3D6DADEE2E6EAEEF287 +:10072000F8FF5B735D004B6579626F6172642073E3 +:10073000746172742E0A005B575D005B535D005B51 +:10074000525D005B445D005B435D00200350004848 +:100750000041004E0054004F004D00200052004761 +:1007600000420020004D004F0044000000100350E4 +:1007700000480041004E0054004F004D00000004AE +:1007800003090409027400040100A0FA090400002E +:1007900001030101000921110100012240000705A8 +:1007A000810308000A090401000103000000092177 +:1007B000110100012236000705820308000A09041E +:1007C00002000203000000092111010001222000A3 +:1007D0000705830320000107050303200001090426 +:1007E000030001030000000921110100012239006A +:1007F000070584031000011201100100000008ED3C +:10080000FE606003000102000105010906A1010567 +:100810000719E029E71500250195087501810205F2 +:100820000819012905950575019102950175039136 +:1008300001050719002977150025019578750181B3 +:1008400002C00631FF0974A1010975150025FF9545 +:1008500020750881020976150025FF9520750891FD +:1008600002C005010980A101850216010026B7001A +:100870001A01002AB700751095018100C0050C0906 +:1008800001A1018503160100269C021A01002A9C81 +:1008900002751095018100C005010906A101050737 +:1008A00019E029E7150025019508750181029501D8 +:1008B0007508810105081901290595057501910241 +:1008C0009501750391010507190029FF150026FF01 +:1008D00000950675088100C00A00253032582000B6 +:1008E0006B6579626F6172645F7265706F72743A82 +:1008F00020004B6579626F617264204C454473201F +:1009000073746174653A2025780A0064656C5F6BC6 +:1009100065795F6269743A2063616E27742064654B +:100920006C3A20253032580A006164645F6B657947 +:100930005F6269743A2063616E2774206164643A6F +:1009400020253032580A00646F6E652E0A00626FEF +:100950006F676D61676963207363616E3A202E2E45 +:100960002E20003F00433E20004C25640A0074699D +:100970006D65725F636F756E743A202530346C5804 +:100980000A006B6579626F6172645F6E6B726F3AB9 +:100990002025580A006B6579626F6172645F696433 +:1009A0006C653A2025580A006B6579626F61726444 +:1009B0005F70726F746F636F6C3A2025580A00681D +:1009C0006F73745F6B6579626F6172645F6C65648D +:1009D0007328293A2025580A000A092D20537461EA +:1009E000747573202D0A004743433A20342E382E65 +:1009F00032204156522D4C4942433A20312E382E56 +:100A00003073766E204156525F415243483A20611E +:100A10007672350A004F5054494F4E533A204C5588 +:100A2000464120424F4F544D414749432045585479 +:100A300052414B455920434F4E534F4C4520434F55 +:100A40004D4D414E44204E4B524F20343039360AE2 +:100A5000004255494C443A20756E6B6E6F776E209C +:100A60002832313A32373A3237204A756E203132E5 +:100A70002032303136290A005649443A203078462F +:100A8000454544285048414E544F4D292050494433 +:100A90003A20307836303630285048414E544F4D49 +:100AA00020524742204D4F4429205645523A20308B +:100AB00078303030330A00444553433A20514D4B8F +:100AC000206B6579626F617264206669726D77610F +:100AD000726520666F72205048414E544F4D20542D +:100AE0004B4C0A000A092D2056657273696F6E20FF +:100AF0002D0A000A092D20436F6E736F6C65202D3F +:100B00000A4553432F713A09717569740A000A093D +:100B10002D204D61676963202D0A443A09446562BE +:100B20007567204D65737361676520546F67676CE7 +:100B3000650A583A094D6174726978204465627596 +:100B400067204D6F646520546F67676C65202D20AA +:100B500053686F77206B6579707265737365732066 +:100B6000696E206D617472697820677269640A4BDE +:100B70003A094B6579626F617264204465627567FA +:100B800020546F67676C65202D2053686F77206B4A +:100B900065797072657373207265706F72740A4D37 +:100BA0003A094465627567204D6F75736520546F0F +:100BB00067676C650A563A0956657273696F6E0A03 +:100BC000533A095374617475730A433A0941637463 +:100BD000697661746520436F6E736F6C65204D6F2D +:100BE00064650A46312D4631303A0953776974639A +:100BF0006820746F204C6179657220302D3920286F +:100C0000463130203D204C30290A302D393A0953E5 +:100C1000776974636820746F204C61796572203045 +:100C20002D390A4553433A09537769746368207430 +:100C30006F204C6179657220302028616C74657278 +:100C40006E617465206B65792031290A47524156DF +:100C5000453A0953776974636820746F204C617951 +:100C6000657220302028616C7465726E6174652035 +:100C70006B65792032290A50415553453A094A7526 +:100C80006D7020746F20426F6F746C6F6164657259 +:100C900020285265736574290A453A095072696EB5 +:100CA0007420454550524F4D2053657474696E67EA +:100CB000730A4E3A094E4B524F20546F67676C656A +:100CC0000A000A002575002E6E6B726F3A20000A2A +:100CD000002575002E737761705F6261636B736CC2 +:100CE0006173685F6261636B73706163653A200072 +:100CF0000A002575002E737761705F6772617665F3 +:100D00005F6573633A20000A002575002E6E6F5FE1 +:100D10006775693A20000A002575002E73776170A7 +:100D20005F72616C745F726775693A20000A002512 +:100D300075002E737761705F6C616C745F6C6775A2 +:100D4000693A20000A002575002E636170736C6F8C +:100D5000636B5F746F5F636F6E74726F6C3A2000C9 +:100D60000A002575002E737761705F636F6E747271 +:100D70006F6C5F636170736C6F636B3A20000A0085 +:100D800025303258006B65796D61705F636F6E66F8 +:100D900069672E7261773A20000A002575002E6D72 +:100DA0006F7573653A20000A002575002E6B657912 +:100DB000626F6172643A20000A002575002E6D6131 +:100DC000747269783A20000A002575002E656E61FC +:100DD000626C653A20000A00253032580064656272 +:100DE00075675F636F6E6669672E7261773A200080 +:100DF0000A0025750064656661756C745F6C6179C5 +:100E000065723A20003F004E4B524F3A206F6666A3 +:100E10000A004E4B524F3A206F6E0A000A6D6F75F2 +:100E200073653A206F66660A000A6D6F7573653ADE +:100E3000206F6E0A000A6B6579626F6172643A20F6 +:100E40006F66660A000A6B6579626F6172643A20A8 +:100E50006F6E0A000A6D61747269783A206F666677 +:100E60000A000A6D61747269783A206F6E0A000A8E +:100E700064656275673A206F66660A000A64656297 +:100E800075673A206F6E0A000A0A4A756D70696EBE +:100E90006720746F20626F6F746C6F616465722E6F +:100EA0002E2E2000433E20006565636F6E666967E5 +:100EB0003A0A000011241FBECFEFDAE0DEBFCDBF3B +:100EC00004B603FE24C08091620290916302A09157 +:100ED0006402B09165028730904BA740B04BB9F4E3 +:100EE00010926202109263021092640210926502E4 +:100EF00014BE84B7877F84BF88E10FB6F8948093CF +:100F00006000109260000FBEE0E0F8E3099511E088 +:100F1000A0E0B1E0E6EAFCE502C005900D92AC333A +:100F2000B107D9F712E0ACE3B1E001C01D92A236DF +:100F3000B107E1F70E94D0160C94512E0C940000DA +:100F4000FF93EF93E0913C01F0913D01309709F060 +:100F50000995EF91FF910895FC018591803011F082 +:100F6000EFDFFBCF0895FF27E0E230E247FF0CC040 +:100F7000419597FF09C0EDE2609570958095909539 +:100F8000611D711D811D911D27FF02C0219530E358 +:100F900050E2AA27660F771F881F991FAA1FA41760 +:100FA00010F0A41B63955A95A9F7AA3008F0A95F21 +:100FB000A05DAF93F395611571058105910541F72A +:100FC000ED3211F4EF93F395F21718F43F93F39584 +:100FD000FBCF8F91B5DFFA95E1F70895E991F9918B +:100FE0008591803021F0853219F0AADFF9CF08957C +:100FF00020E0E89455915532C1F3503311F46894D0 +:1010000055915A3348F4505390F3220F022E220F79 +:10101000220F200D250FF4CF0EF42195899199917F +:10102000533619F3533729F1533559F1BC01882749 +:101030009927E8945C3621F48991999168945591A7 +:10104000543639F446EF7EF077FF0DC08FEF9FEFF7 +:101050000AC055374AE039F0583540E121F05236A0 +:1010600042E009F00895FF93EF937DDFEF91FF9148 +:10107000B7CFFF93EF93FC0181918030B9F360DF2C +:10108000FBCFFF93EF9368DFF1CFDF93CF93CDB723 +:10109000DEB72596A3DFCF91DF910895269A279A90 +:1010A000089581FF02C02E9A01C02E9882FF02C0CF +:1010B0002F9A08952F980895089508958CE598E043 +:1010C000892B11F00E945C080C944E088DE598E085 +:1010D000892B11F00C945D080895CF93DF93EC01F8 +:1010E000462F50E04930510508F05CC0FA01EA5A39 +:1010F000FF4F0C94032E0E948A27827280933E0138 +:101100009A81992369F0882319F085E390E002C061 +:1011100089E290E00E94E726DF91CF910C94D627D8 +:10112000882319F085E390E002C089E290E00E94F4 +:101130003827F2CF8A818823A9F1DF91CF910C94CF +:10114000D6118A81882371F1DF91CF910C943F10E1 +:101150008A81882339F1DF91CF910C9458108A81CC +:10116000882301F1DF91CF910C9477108A81882335 +:10117000C9F0DF91CF910C9492108A81882391F06D +:10118000DF91CF910C94AC108A81882359F0DF91C4 +:10119000CF910C94C7108A81882321F0DF91CF91E1 +:1011A0000C94CC11DF91CF91089581E0089581E0F6 +:1011B00008950C94D70808950F931F93CF93DF934E +:1011C000EC0108811981C8010E946726B8010E94BC +:1011D00077098C01BE010E94D908882309F47AC0DE +:1011E0008A818823C9F180914A0181111EC004318E +:1011F00080E5180789F50E94DB0881E080934A01A9 +:101200000E94B328909349018093480110924101B4 +:101210001092430110924201109245011092440134 +:10122000109247011092460155C08091480190915B +:1012300049010E94BF28883C910570F480914101CA +:10124000E82FF0E0EE0FFF1FEE5BFE4F11830083EF +:101250008F5F809341013EC0043880E5180721F07C +:1012600005381045A1F02AC08A81882321F0109208 +:101270003F0182E012C080913F01811106C086E2E9 +:101280000E94C21D86E20E948A1E82E014C08A81EA +:10129000882331F01092400180E20E94D91E1AC0CA +:1012A00080914001811106C087E20E94C21D87E241 +:1012B0000E948A1E80E20E94E01E0CC081E08093A2 +:1012C0003F0180934001CE01DF91CF911F910F919B +:1012D0000C94D50880E0DF91CF911F910F91089574 +:1012E0000C945E080C94660880E090E0089591E10B +:1012F000799FF001112496E6899FE00DF11D1124DC +:10130000E60FF11DEE0FFF1FE25DFE4F85919491F8 +:101310000895880F991F84569040FC0185919491FF +:101320000895880F991F845E9E4FFC0185919491CA +:1013300008950F931F93CF93DF93EC01811520E362 +:10134000920740F5811530E2930708F0C4C08B3B4B +:10135000910588F4883A910508F06BC0853A9105AB +:1013600008F05CC08430910508F056C081309105CA +:1013700009F4CCC1C8C18F3F910511F008F04CC0F1 +:10138000803F910508F0A4C0805E9109089708F499 +:1013900043C0B9C1C13080E5D80709F4A4C020F525 +:1013A000C0312FE4D20770F4C11530E4D30708F040 +:1013B00096C0C11581E3D80708F0A5C18E01112799 +:1013C000106CE5C1C115D04509F09DC10E943C21BA +:1013D0003FEF84E39CE0315080409040E1F700C053 +:1013E00000000E940D29D3C1C11527E5D20758F48A +:1013F000C03131E5D30708F022C1C43180E5D807F8 +:1014000008F47BC080C1CE0190578115904108F04F +:101410007AC18E011F7075C18E01B9C1853A9105DF +:1014200009F477C1863A910509F476C103E810E41E +:10143000AEC1883A910509F472C1893A910509F45F +:1014400071C18A3A910509F470C18B3A910509F48A +:101450006FC18C3A910509F46EC18D3A910509F47A +:101460006DC1803B910509F46CC18E3A910509F478 +:101470006BC18F3A910509F46AC1813B910509F46A +:1014800069C1823B910509F468C1833B910509F468 +:1014900067C1843B910509F466C1853B910509F458 +:1014A00065C1863B910509F464C1873B910509F448 +:1014B00063C1883B910509F462C1893B910509F438 +:1014C00061C18A3B910509F060C10AE216E45FC17F +:1014D0008C0110655CC19F700E94910959C18E01F9 +:1014E0001F70106A54C186EC92E00E94AC07809194 +:1014F00009028160809309024AC10E94BF2A8111BA +:1015000002C00E94A52A0E94DC2A90E09093620209 +:1015100080936102C23020E5D20721F480916102FC +:10152000816086C0C43030E5D30721F48091610228 +:1015300082607EC0C63080E5D80721F480916102C8 +:10154000846076C0C83090E5D90719F480916102B3 +:1015500027C0CA3020E5D20721F480916102806162 +:1015600067C0CC3030E5D30721F4809161028062FE +:101570005FC0CE3080E5D80721F48091610280649D +:1015800057C0C03190E5D90721F48091610280688D +:101590004FC0C23120E5D20729F4809161028460F6 +:1015A000886046C0C33030E5D30721F480916102E2 +:1015B0008E7F3EC0C53080E5D80721F4809161025E +:1015C0008D7F36C0C73090E5D90721F48091610244 +:1015D0008B7F2EC0C93020E5D20719F480916102BB +:1015E00026C0CB3030E5D30721F4809161028F7E95 +:1015F0001FC0CD3080E5D80721F4809161028F7D36 +:1016000017C0CF3090E5D90721F4809161028F7B1C +:101610000FC0C13120E5D20721F4809161028F779C +:1016200007C0C331D04531F4809161028B7F877F41 +:1016300080936102809161020E94E02AA8C08D2FF0 +:1016400099278F70992781309105E9F48E010370F5 +:1016500011279C0102C0220F331F0A95E2F789016E +:101660001C68CE01E4E0880F991FEA95E1F788270E +:101670009370082B192BF3E0CC0FDD1FFA95E1F7DF +:10168000C076DD272CC08230910529F41C2F00275D +:10169000016F106A7CC08330910561F4CE018370C4 +:1016A000992701E010E002C0000F111F8A95E2F7B0 +:1016B0001C680EC084309105A9F4CE01837099276F +:1016C00001E010E002C0000F111F8A95E2F71A68CE +:1016D00063E0CC0FDD1F6A95E1F7C07ED7700C2B5D +:1016E0001D2B55C08530910529F41C2F0027046F50 +:1016F000106A4DC0069709F04AC0CF71DD271C2F34 +:101700000027106244C000E010E041C001E010E09A +:101710003EC001E810E43BC002E810E438C002EE2D +:1017200014E435C009EE14E432C00AEE14E42FC00C +:1017300005EB14E42CC006EB14E429C007EB14E419 +:1017400026C00CEC14E423C00DEC14E420C003E824 +:1017500015E41DC00AE815E41AC002E915E417C033 +:1017600004E915E414C001E216E411C003E216E432 +:101770000EC004E216E40BC005E216E408C006E25F +:1017800016E405C007E216E402C000E014E4C80154 +:10179000DF91CF911F910F91089591E1799FF00111 +:1017A000112496E6899FE00DF11D1124E60FF11D2D +:1017B000EE0FFF1FE25DFE4F85919491803E9105F3 +:1017C000E0F4803C910558F58133910509F46FC030 +:1017D00048F48932910509F463C08A32910509F40D +:1017E0006DC072C089339105E9F082389105D1F05E +:1017F0008533910509F44DC067C0833E910581F1A1 +:1018000038F4803E9105B9F0823E9105D9F05CC074 +:10181000863E910561F1873E9105A1F155C00E9478 +:10182000890908952091610220FD02C021FF4CC06A +:1018300080EE90E049C08091610280FFF9CF89E39A +:1018400090E042C08091610282FF0EC080916102EF +:1018500084FF03C080E090E037C083EE90E034C0A6 +:101860008091610282FFF2CF82EE90E02DC08091E4 +:10187000610283FF0BC08091610284FDEBCF87EE94 +:1018800090E022C08091610283FFF5CF86EE90E068 +:101890001BC08091610285FF07C089E290E014C0FF +:1018A0008091610285FFF9CF85E390E00DC08091C2 +:1018B000610286FF07C08AE290E006C08091610263 +:1018C00086FFF9CF81E390E00E94990908950C9476 +:1018D0005108E82FF0E0E05FFE4F8081E82FEF70C5 +:1018E000F0E0282F22952F7081E090E0022E01C0B9 +:1018F000880F0A94EAF780A308950F931F93CF935C +:10190000DF9385B7806885BF85B7806885BFC0E1F4 +:10191000D0E001E010E0FE01E05FFE4F8081E82FA3 +:10192000EF70F0E021A182958F70A80102C0440FF2 +:10193000551F8A95E2F7242B21A38C2F0E94690C56 +:10194000219748F785E090E041E050E0FC01EF5D31 +:10195000FE4F2081E22FEF70F0E062A122952F7000 +:10196000DA0102C0AA0FBB1F2A95E2F76A2B62A315 +:10197000019760F7DF91CF911F910F910C9470093F +:10198000EF92FF920F931F93CF93DF93CCE5D1E0BB +:1019900080E1F82E01E010E095E0E92E8F2D0E9405 +:1019A000690C25E030E080E0F901EF5DFE4F9081A9 +:1019B000E92FEF70F0E040A150E092959F7002C0D7 +:1019C000559547959A95E2F740FD07C0A801022E6C +:1019D00001C0440F0A94EAF7842B2150310920F703 +:1019E0009A91981719F08883E09200018F2D0E9438 +:1019F000690CFA948FEFF812D1CF2091000127FDE6 +:101A00002CC08091090280FF10C0822F992787FD8A +:101A100090959F932F938FE093E09F938F930E94D5 +:101A200045080F900F900F900F908091000181500A +:101A30008093000187FD07C08FE99FE00197F1F7D0 +:101A400000C000000AC0ADE6B1E0ECE5F1E0829133 +:101A50008E9391E0EB34F907D1F70E94720981E08F +:101A6000DF91CF911F910F91FF90EF9008958F928A +:101A70009F92AF92BF92CF92DF92EF92FF920F931D +:101A80001F9391E001C0990F8A95EAF7B92FEDE60F +:101A9000F1E040E150E060E070E0CB0101E010E0F7 +:101AA00020E030E0A291AB2371F048015901042EEF +:101AB00004C0880C991CAA1CBB1C0A94D2F7682984 +:101AC00079298A299B294150510960F71F910F916B +:101AD000FF90EF90DF90CF90BF90AF909F908F904E +:101AE00008950F931F93CF93DF938091090280FF96 +:101AF00004C080EF92E00E94AC07C0E0D0E008EDA7 +:101B000012E08091090280FF14C08C2F0E94370DD3 +:101B1000CB010E9428289F938F93DF93CF931F932D +:101B20000F930E9445080F900F900F900F900F9009 +:101B30000F902196C630D10521F7DF91CF911F91EB +:101B40000F910895CF93DF93C5E0D0E08C2F0E94D2 +:101B5000370DCB010E940A28D80FC150B8F78D2F3E +:101B6000DF91CF9108953EB1242F209523233EB1DC +:101B7000342B4FB7F894FC01680F791FE617F7076D +:101B800089F0819198E03EB9000000C087FF2EB92E +:101B9000880F000000C000C000C02EB900C09A9598 +:101BA00091F7ECCF4FBF08952DB1242B2DB99B0198 +:101BB000220F331F260F371FB9010E94B30D87EC88 +:101BC00090E00197F1F700C00000089544E00C9404 +:101BD000D40DCF92DF92EF92FF920F931F93CF938A +:101BE000DF937C01E42FF0E0EE5DF94F4491EFEFDD +:101BF000F0E0E61BF109EE5DF94FE491E09509F4A0 +:101C000098C0042F10E08FEF90E08E1B9109809F09 +:101C1000B001819F700D909F700D1124E72FF72F59 +:101C2000CCE3D0E0C701BE010E94DB2DDC016230B5 +:101C3000710509F447C0D8F461157105A1F161304F +:101C4000710509F07AC00E1B1109CE018A1B9B0B8E +:101C5000DC010A9FC0010B9F900D1A9F900D11246B +:101C6000BE010E94DB2DCE2EC60ED42E67C064307E +:101C7000710509F44BC0B8F16530710509F05DC01C +:101C80000E1B1109BE01681B790B069FC001079F3F +:101C9000900D169F900D1124BE010E94DB2DDE2EAB +:101CA000FE2FF60F44C00E1B11090E9DC0010F9DA3 +:101CB000900D1E9D900D1124BE010E94DB2DDE2E85 +:101CC000D60E35C00E1B11090A9FC0010B9F900D47 +:101CD0001A9F900D1124BE010E94DB2DD42ECE2E12 +:101CE000FE2FF60F2BC00E1B1109BE01681B790BCE +:101CF000069FC001079F900D169F900D1124BE01F5 +:101D00000E94DB2DDE2ED60ECE2E0FC00E1B11092B +:101D10000A9FC0010B9F900D1A9F900D1124BE01C8 +:101D20000E94DB2DCE2EC60EDE2EF42F07C0C42E51 +:101D300005C0F42FD42EC42E01C0F0E0D9011196B5 +:101D4000CC921197DC921296FC93DF91CF911F9168 +:101D50000F91FF90EF90DF90CF90089587E090E093 +:101D60000C94112EAB01BC0187E090E00C942F2E57 +:101D70008091090280FF08C083EF94E09F938F93C6 +:101D80000E9445080F900F9083E08093100280918D +:101D90001102807884668F77809311028CEC809397 +:101DA00012028093130260911002709111028091CF +:101DB0001202909113020C94B20E8091090280FFDE +:101DC00008C08CED94E09F938F930E9445080F907C +:101DD0000F908091090280FF0FC0809110028170E6 +:101DE0001F928F938FEB94E09F938F930E944508EF +:101DF0000F900F900F900F908091090280FF10C0FC +:101E00008091100286958F731F928F9384EA94E0DD +:101E10009F938F930E9445080F900F900F900F9003 +:101E20008091090280FF19C090911002991F992793 +:101E3000991F20911102822F880F892B27FB2227BF +:101E400020F92F938F938AE894E09F938F930E94B9 +:101E500045080F900F900F900F908091090280FF1E +:101E60000EC0809112021F928F9380E794E09F939F +:101E70008F930E9445080F900F900F900F908091C4 +:101E8000090280FF0EC0809113021F928F9386E596 +:101E900094E09F938F930E9445080F900F900F90AE +:101EA0000F9008958091100280FF06C064E170E0F9 +:101EB00088E192E00C94E60DEAE1F2E0DF0111978F +:101EC0001C92DF0112971C921082339682E0E63555 +:101ED000F807A1F7EBCFEAE1F2E0DF0111978C936D +:101EE000DF0112976C934083339692E0E635F90751 +:101EF000A1F70C94520FCF92DF92EF92FF920F93C3 +:101F00001F93CF93DF9300D01F92CDB7DEB7F82E8B +:101F1000C92ED62EE42E00911002109111022091AC +:101F200012023091130200931402109315022093B1 +:101F30001602309317028091100280FF1EC09E018E +:101F40002F5F3F4F8F2D0E94E90D80911402F0FA10 +:101F500087F980931402F6942091150220782F2996 +:101F6000C0FA27F920931502D0921602E0921702C8 +:101F70004B8169818A810E946B0F0F900F900F90A7 +:101F8000DF91CF911F910F91FF90EF90DF90CF9055 +:101F900008950F931F93CF93DF93C82F192F062F08 +:101FA000D42F8091100280FF65C0982F9E779230C9 +:101FB00029F48C2F912F0E947B0F1AC0282F269571 +:101FC0002F739EE3920F9F73943018F4D0911302F5 +:101FD0000FC0265C2F73293058F4881F8827881F6C +:101FE00010911102C12FCC0FC82B17FB112710F92C +:101FF00080911002C0FB87F980931002C6958091F2 +:10200000110280788C2B10FB87F9809311020093CA +:102010001202D0931302609110027091110280910C +:102020001202909113020E94B20E809113021F922D +:102030008F93809112021F928F9390911002991F9B +:102040009927991F20911102822F880F892B27FB36 +:10205000222720F92F938F9382E593E09F938F930C +:102060000E9445088DB79EB708960FB6F8949EBF9C +:102070000FBE8DBFDF91CF911F910F9108952091D9 +:102080001002221F2227221F30911102432F440FDA +:10209000842F822B37FB992790F90A9668E671E026 +:1020A0000E94EF2D40911302609112020C94C90F0F +:1020B00020911002221F2227221F30911102432F4C +:1020C000440F842F822B37FB992790F98A30910592 +:1020D0001CF4825A9E4F01C00A9768E671E00E9484 +:1020E000EF2D40911302609112020C94C90F609180 +:1020F0001202862F90E08F3E910514F46F5E01C0AE +:102100006FEF80911002881F8827881F909111021D +:10211000292F220F97FB992790F940911302822BC8 +:102120000C94C90F60911202862F90E0419714F031 +:10213000615101C060E080911002881F8827881FCC +:1021400090911102292F220F97FB992790F9409126 +:102150001302822B0C94C90F40911302842F90E03C +:102160008F3E910514F44F5E01C04FEF8091100235 +:10217000881F8827881F90911102292F220F97FB13 +:10218000992790F960911202822B0C94C90F40910B +:102190001302842F90E0419714F0415101C040E0B8 +:1021A00080911002881F8827881F90911102292F83 +:1021B000220F97FB992790F960911202822B0C94C1 +:1021C000C90F80917E0181110FC081E080937E0153 +:1021D00089E0809391008FB7F89493E090939900F1 +:1021E00090ED909398008FBF089580917100826068 +:1021F000809371008091090280FF08C081E493E020 +:102200009F938F930E9445080F900F90089580919F +:1022100071008D7F809371008091090280FF08C05A +:102220008FE293E09F938F930E9445080F900F9049 +:1022300008959091100290FF4DC09178811102C0D5 +:10224000926003C0883120F09E629093100205C016 +:102250008F73880F892B8093100260911002709108 +:10226000110280911202909113020E94B20E80918D +:10227000100286958F731F928F9385EA93E09F9348 +:102280008F930E94450880911002982F9E770F909F +:102290000F900F900F90923019F40E94071107C011 +:1022A0008695825C8F73863110F40E94F5108091C0 +:1022B0001002881F8827881F90911102292F220F52 +:1022C00097FB992790F94091130260911202822B9B +:1022D0000C94C90F089580910902816080930902CE +:1022E0008FE394E09F938F930E94450881E0809351 +:1022F0007F01809109020F900F9080FF08C089E252 +:1023000094E09F938F930E9445080F900F900E9436 +:10231000BF2A811110C08091090280FF08C081E0AE +:1023200094E09F938F930E9445080F900F900E9416 +:10233000A52A0E94B80E0E94AE0E60931002709300 +:10234000110280931202909313026E77C1F4809170 +:10235000090280FF08C088EB93E09F938F930E944F +:1023600045080F900F900E94B80E0E94AE0E609329 +:1023700010027093110280931202909313020E9434 +:10238000DD0E0E94E1108091100280FF04C086954E +:102390008F730C94191108958091100286958F7394 +:1023A0008F5F883108F081E00C9419118091100240 +:1023B000982F909590FB80F9809310026091100205 +:1023C0007091110280911202909113020E94B20E3C +:1023D0008091100281701F928F9387E793E09F9303 +:1023E0008F930E944508809110020F900F900F90DC +:1023F0000F9080FF04C086958F730C9419110E9472 +:1024000007112FEF80E792E0215080409040E1F7E4 +:1024100000C000000C94520FCF93C82F80917C0114 +:1024200090917D010E94BF28EC2FF0E0E25EFA4F10 +:10243000E491F0E08E179F0710F10E94B32890936B +:102440007D0180937C01E0917B01F0E0EE5DFA4F2D +:10245000449180911002881F8827881F9091110253 +:10246000292F220F97FB992790F960911202822B56 +:102470000E947B0F80917B018F5F80937B01CF91C6 +:102480000895CF93C82F8091790190917A010E948D +:10249000BF28EC2FF0E0E55EFA4FE491F0E08E17F4 +:1024A0009F07E8F00E94B32890937A018093790106 +:1024B000409113026091120280917701909178010E +:1024C0000E947B0F8091770190917801019668E6D8 +:1024D00071E00E94DB2D9093780180937701CF917A +:1024E0000895DF92EF92FF920F931F93CF93DF93A4 +:1024F000D82E80917501909176010E94BF28ED2D14 +:10250000E695F0E0E55EFA4FE491F0E08E179F0764 +:10251000E8F10E94B328909376018093750108E159 +:1025200012E0C0E0D0E088E6E82EFF24F39480912A +:102530007301909174018C0F9D1FB7010E94DB2DD8 +:10254000980140911302609112020E94E90D629677 +:102550000D5F1F4FC83681E0D80749F70E94520F20 +:102560002091730130917401D0FE0AC0C901019617 +:10257000BE010E94DB2D909374018093730106C00D +:10258000215031093093740120937301DF91CF9171 +:102590001F910F91FF90EF90DF9008958F929F927F +:1025A000AF92BF92CF92DF92EF92FF920F931F9361 +:1025B000CF93DF93C82F80FD03C09924939402C06A +:1025C00099249A9480917101909172010E94BF2880 +:1025D000C695EC2FF0E0E85EFA4FE491F0E08E173C +:1025E0009F0708F469C00E94B328909372018093FA +:1025F000710128E1E22E22E0F22E0AE112E0C0E0B1 +:10260000D0E037E0A32EB12CF80131971082F7010A +:102610001082F801108297E0C92ED12C812C809174 +:102620007001880D87FD8C5E992787FD9095C817EE +:10263000D907E9F4209113022C9DC0012D9D900D26 +:102640001124B5010E94EF2D462F80911002881FA2 +:102650008827881F90911102592F550F97FB9927B2 +:1026600090F9970160911202852B0E94E90D890C67 +:10267000F1E0CF1AD108C114D10489F6219683E084 +:10268000E80EF11C0D5F1F4FC431D10509F0BCCF1E +:102690000E94520F8091700191E0991206C0811141 +:1026A00002C083E107C0815005C090E00196BE01E1 +:1026B0000E94EF2D80937001DF91CF911F910F91B8 +:1026C000FF90EF90DF90CF90BF90AF909F908F9052 +:1026D00008959F92AF92BF92CF92DF92EF92FF92B6 +:1026E0000F931F93CF93DF93CDB7DEB7EC970FB661 +:1026F000F894DEBF0FBECDBF182F80916E01909170 +:102700006F010E94BF28E12FF0E0EB5EFA4FE491E9 +:10271000F0E08E179F0708F492C00E94B3289093B0 +:102720006F0180936E018E010F5F1F4F5E0183E08A +:10273000A80EB11CE12CF12C6801F5013197108233 +:10274000F8011082F5011082912C90910101809185 +:102750006D01999E800D112487FD04C084311CF009 +:1027600083E101C080E0992787FD9095E816F9067E +:10277000A1F480911002881F8827881F9091110270 +:10278000592F550F97FB992790F998014091130203 +:1027900060911202852B0E94E90D9394F7E09F123D +:1027A000D4CF8FEFE81AF80A0D5F1F4FE3E0AE0EAB +:1027B000B11CF4E1EF16F10409F0BFCF2AE132E0D9 +:1027C00009E010E054E1E52EF12CC801B7010E94A8 +:1027D000EF2DD9011197FC01EE0FFF1FE80FF91F34 +:1027E000EC0DFD1D81818C93D901129780818C9312 +:1027F0008281F90180830F5F1F4F2D5F3F4F0D31A5 +:10280000110519F70E94520F9091010180916D01FD +:10281000913049F48A3F2CF489EF80936D018FEF5A +:1028200008C081500AC08B313CF08AE180936D0171 +:1028300081E08093010103C08F5F80936D01EC966E +:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1 +:102850000F91FF90EF90DF90CF90BF90AF909F903F +:1028600008951F920F920FB60F9211242F933F934A +:102870004F935F936F937F938F939F93AF93BF9388 |