summaryrefslogtreecommitdiffstats
path: root/keyboard
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2016-06-12 22:26:47 -0400
committerJack Humbert <jack.humb@gmail.com>2016-06-12 22:26:47 -0400
commit25d4772754186b8ab6ef86c28049da67a460f123 (patch)
treec68ca4c6ee77f3601c2c8d3fe7573e0cdc8fd791 /keyboard
parent6955719075a9a07524814e4183f3f90f83db1c6a (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/Makefile112
-rw-r--r--keyboard/phantom/config.h91
-rw-r--r--keyboard/phantom/keymaps/default/compiled.hex1488
-rw-r--r--keyboard/phantom/keymaps/default/keymap.c169
-rw-r--r--keyboard/phantom/led.c44
-rw-r--r--keyboard/phantom/phantom.c28
-rw-r--r--keyboard/phantom/phantom.h46
-rw-r--r--keyboard/phantom/pinout.jpgbin0 -> 86118 bytes
-rw-r--r--keyboard/phantom/pinout.txt1
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