diff options
author | TerryMathews <terry@terrymathews.net> | 2016-06-13 21:59:22 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-06-13 21:59:22 -0400 |
commit | 1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27 (patch) | |
tree | 13a6e684abf9a4cf11fb3701236874ee6403d2ae | |
parent | 498455403e6b891f7ecbce98163ba2b3def25dbb (diff) |
adds support for GH60 Satan keyboard (#407)
* adds support for GH60 Satan keyboard
ANSI 125 layout, capslock and backlight implemented, support for
WS2812LED strip included
* added Phantom and GH60 Satan to travis
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | keyboard/satan/Makefile | 115 | ||||
-rw-r--r-- | keyboard/satan/backlight.c | 24 | ||||
-rw-r--r-- | keyboard/satan/config.h | 92 | ||||
-rw-r--r-- | keyboard/satan/controller.jpg | bin | 0 -> 140199 bytes | |||
-rw-r--r-- | keyboard/satan/keymaps/default/compiled.hex | 1530 | ||||
-rw-r--r-- | keyboard/satan/keymaps/default/keymap.c | 162 | ||||
-rw-r--r-- | keyboard/satan/led.c | 36 | ||||
-rw-r--r-- | keyboard/satan/pinout.txt | 1 | ||||
-rw-r--r-- | keyboard/satan/power.jpg | bin | 0 -> 433947 bytes | |||
-rw-r--r-- | keyboard/satan/satan.c | 36 | ||||
-rw-r--r-- | keyboard/satan/satan.h | 42 |
12 files changed, 2040 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml index 2e0714d713..436c17338a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,9 +21,11 @@ env: - KEYBOARD=hhkb - KEYBOARD=jd45 - KEYBOARD=kc60 + - KEYBOARD=phantom - KEYBOARD=planck - KEYBOARD=preonic - KEYBOARD=retro_refit + - KEYBOARD=satan - KEYBOARD=sixkeyboard script: diff --git a/keyboard/satan/Makefile b/keyboard/satan/Makefile new file mode 100644 index 0000000000..9df0e4fd07 --- /dev/null +++ b/keyboard/satan/Makefile @@ -0,0 +1,115 @@ +#---------------------------------------------------------------------------- +# 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 ?= yes # 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 + +#ifdef BACKLIGHT_ENABLE + SRC := backlight.c $(SRC) +#endif + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboard/satan/backlight.c b/keyboard/satan/backlight.c new file mode 100644 index 0000000000..4240b09164 --- /dev/null +++ b/keyboard/satan/backlight.c @@ -0,0 +1,24 @@ + +#include <avr/io.h> +#include "backlight.h" +#include "print.h" + +void init_backlight_pin(void) { + print("init_backlight_pin()\n"); + // Set our LED pins as output + DDRB |= (1<<6); + + // Set our LED pins low + PORTB &= ~(1<<6); +} + +void backlight_set(uint8_t level) { + if ( level == 0 ) { + // Turn off light + PORTB |= (1<<6); + } else { + // Turn on light + PORTB &= ~(1<<6); + } +} + diff --git a/keyboard/satan/config.h b/keyboard/satan/config.h new file mode 100644 index 0000000000..aea9254e8d --- /dev/null +++ b/keyboard/satan/config.h @@ -0,0 +1,92 @@ +/* +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 SATAN +#define PRODUCT GH60 +#define DESCRIPTION QMK keyboard firmware for Satan GH60 with WS2812 support + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* 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)) \ +) + +/* Backlight configuration + */ +#define BACKLIGHT_LEVELS 1 + +/* Underlight configuration + */ + #define ws2812_PORTREG PORTE + #define ws2812_DDRREG DDRE + #define ws2812_pin 2 + #define RGBLED_NUM 8 // 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/satan/controller.jpg b/keyboard/satan/controller.jpg Binary files differnew file mode 100644 index 0000000000..76ffa45004 --- /dev/null +++ b/keyboard/satan/controller.jpg diff --git a/keyboard/satan/keymaps/default/compiled.hex b/keyboard/satan/keymaps/default/compiled.hex new file mode 100644 index 0000000000..8f4957d1c7 --- /dev/null +++ b/keyboard/satan/keymaps/default/compiled.hex @@ -0,0 +1,1530 @@ +:100000000C9465070C94A9070C94A9070C94A907F4 +:100010000C94A9070C94A9070C94A9070C94A907A0 +:100020000C94A9070C94A9070C94B0190C94821A8B +:100030000C94A3280C94A9070C94A9070C94A90765 +:100040000C94A9070C94A9070C94A9070C94A90770 +:100050000C94A9070C940A290C94A9070C94A907DD +:100060000C94A9070C94A9070C94A9070C94A90750 +:100070000C94A9070C94A9070C94A9070C94A90740 +:100080000C9451140C94A9070C94A9070C94A9077B +:100090000C94A9070C94A9070C94A9070C94A90720 +:1000A0000C94A9070C94A9070C94A9078F08AE0813 +:1000B000DF08B508BC08C308CA08D108D808E71A81 +:1000C000091BF41B091BF41B4B1B6E1BF41BC31BEE +:1000D000D61B141F141F431F431F831FE920E92051 +:1000E000E920A51FE9204C204C20B620BE20E920A5 +:1000F000E4205920592059205920592059205920AD +:100100005920592059205920592059205920592027 +:10011000592069207920802087209120696E697498 +:100120005F6261636B6C696768745F70696E2829D0 +:100130000A0000F001F002F003F004F005F006F010 +:1001400007F008F000201E001F0020002100220000 +:10015000230024002500260027002D002E002A0061 +:100160002B0014001A000800150017001C001800CE +:100170000C00120013002F00300031003900040081 +:100180001600070009000A000B000D000E000F000A +:100190003300340000002800E10000001D001B00B7 +:1001A0000600190005001100100036003700380065 +:1001B0000000E500E000E300E200000000002C0089 +:1001C0000000000000000000E600E7000152E4002B +:1001D00035000100010001000100010001000100E3 +:1001E00001000100010001000100005001000100B8 +:1001F00001000100010001000100010001000100F7 +:100200000100805081508250010001000100010076 +:1002100001000100010001000100010001000100D6 +:100220000000010001000000012002200320042042 +:100230000520062007200820010001000000010021 +:1002400001000100010000000000010000000000AA +:100250000000000001000100010001000A444542C5 +:1002600055473A20656E61626C65642E0A005374CE +:10027000617465206F6620726F772025583A2025BB +:10028000303136620A0048756D616E2D72656164A9 +:1002900061626C65206D6174726978207374617439 +:1002A000653A0D0A004465626F756E63696E67207A +:1002B00064656C61792072656D61696E696E673A1B +:1002C0002025580A0054494D455233206469736112 +:1002D000626C65642E0A0054494D45523320656EA8 +:1002E00061626C65642E0A007267626C696768748B +:1002F0002073657420687376205B454550524F4DDE +:100300005D3A2025752C25752C25750A00726762CB +:100310006C6967687420746F67676C653A207267F0 +:10032000626C696768745F636F6E6669672E656E7D +:1003300061626C65203D2025750A007267626C69F8 +:10034000676874206D6F64653A2025750A007267CE +:10035000626C696768745F696E6974207267626C49 +:10036000696768745F636F6E6669672E6D6F646539 +:10037000203D20302E2057726974652064656661C7 +:10038000756C742076616C75657320746F204545BB +:1003900050524F4D2E0A007267626C696768745F35 +:1003A000696E6974206565636F6E6669672069733D +:1003B000206E6F7420656E61626C65642E0A007237 +:1003C00067626C696768745F696E697420737461D1 +:1003D0007274210A007267626C696768745F696E83 +:1003E00069742063616C6C65642E0A007267626CCC +:1003F000696768745F636F6E6669672E76616C20EB +:100400003D2025640A007267626C696768745F63E7 +:100410006F6E6669672E736174203D2025640A0043 +:100420007267626C696768745F636F6E6669672E76 +:10043000687565203D2025640A007267686C6967ED +:1004400068745F636F6E6669672E6D6F6465203DCB +:100450002025640A007267626C696768745F636F65 +:100460006E6669672E656E61626C65203D2025644D +:100470000A007267626C696768745F636F6E6669B1 +:1004800067206570726F6D0A006565636F6E6669DF +:10049000675F7570646174655F7267626C696768D5 +:1004A000745F64656661756C740A0064321464324A +:1004B00014783C1E1E140A05000000000101010210 +:1004C00002030405050607090A0B0C0E0F1112148E +:1004D0001517191B1D1F212325282A2C2F313436CF +:1004E000393B3E414346494C4F5255585A5D616431 +:1004F000676A6D707376797C7F8386898C8F92951D +:10050000989B9EA2A5A7AAADB0B3B6B9BCBEC1C404 +:10051000C6C9CBCED0D3D5D7DADCDEE0E2E4E6E85C +:10052000EAEBEDEEF0F1F3F4F5F6F8F9FAFAFBFC8C +:10053000FDFDFEFEFEFFFFFFFFFFFFFFFEFEFEFDD7 +:10054000FDFCFBFAFAF9F8F6F5F4F3F1F0EEEDEB59 +:10055000EAE8E6E4E2E0DEDCDAD7D5D3D0CECBC9F8 +:10056000C6C4C1BEBCB9B6B3B0ADAAA7A5A29E9B76 +:100570009895928F8C898683807C797673706D6A6A +:100580006764615D5A5855524F4C494643413E3B62 +:10059000393634312F2C2A282523211F1D1B1917EA +:1005A000151412110F0E0C0B0A090706050504039A +:1005B0000202010101000000000101020202020228 +:1005C00002030303030303030303030303030304FB +:1005D00004040404040404040404040505050505D6 +:1005E00005050505050606060606060606070707AD +:1005F0000707070708080808080809090909090979 +:100600000A0A0A0A0A0B0B0B0B0B0C0C0C0C0C0D38 +:100610000D0D0D0E0E0E0E0F0F0F101010101111EC +:10062000111212121313131414141515161616178B +:100630001718181919191A1A1B1B1C1C1D1D1E1E10 +:100640001F20202121222323242425262627282871 +:10065000292A2B2B2C2D2E2F3030313233343536A6 +:100660003738393A3B3C3D3E3F404142444546479E +:10067000494A4B4C4E4F5152535556585A5B5D5E4A +:100680006062636567696B6D6E70727476797B7D8D +:100690007F818486888B8D909295979A9D9FA2A545 +:1006A000A8ABAEB1B4B7BABEC1C4C8CBCFD3D6DA4B +:1006B000DEE2E6EAEEF2F8FF5B735D004B6579621D +:1006C0006F6172642073746172742E0A005B575DEF +:1006D000005B535D005B525D005B445D005B435D0E +:1006E000000A03470048003600300000000C0353A6 +:1006F000004100540041004E0000000403090409B9 +:10070000027400040100A0FA0904000001030101C1 +:1007100000092111010001224000070581030800A2 +:100720000A09040100010300000009211101000170 +:100730002236000705820308000A090402000203AA +:100740000000000921110100012220000705830398 +:100750002000010705030320000109040300010331 +:10076000000000092111010001223900070584035E +:100770001000011201100100000008EDFE6060038E +:10078000000102000105010906A101050719E02980 +:10079000E715002501950875018102050819012951 +:1007A00005950575019102950175039101050719DC +:1007B00000297715002501957875018102C0063161 +:1007C000FF0974A1010975150025FF9520750881A1 +:1007D000020976150025FF952075089102C00501D4 +:1007E0000980A101850216010026B7001A01002A1E +:1007F000B700751095018100C0050C0901A10185A4 +:1008000003160100269C021A01002A9C027510950D +:10081000018100C005010906A101050719E029E7CA +:100820001500250195087501810295017508810162 +:1008300005081901290595057501910295017503B2 +:1008400091010507190029FF150026FF009506757F +:10085000088100C00A002530325820006B6579629B +:100860006F6172645F7265706F72743A20004B65DD +:1008700079626F617264204C4544732073746174B3 +:10088000653A2025780A0064656C5F6B65795F6264 +:1008900069743A2063616E27742064656C3A202580 +:1008A0003032580A006164645F6B65795F62697415 +:1008B0003A2063616E2774206164643A20253032E7 +:1008C000580A00646F6E652E0A00626F6F676D6173 +:1008D000676963207363616E3A202E2E2E20003FDD +:1008E00000433E20004C25640A0074696D65725F08 +:1008F000636F756E743A202530346C580A006B654E +:1009000079626F6172645F6E6B726F3A2025580A6C +:10091000006B6579626F6172645F69646C653A202F +:1009200025580A006B6579626F6172645F70726F3F +:10093000746F636F6C3A2025580A00686F73745F98 +:100940006B6579626F6172645F6C65647328293AC4 +:100950002025580A000A092D2053746174757320EC +:100960002D0A004743433A20342E382E3220415678 +:10097000522D4C4942433A20312E382E3073766E38 +:10098000204156525F415243483A20617672350AFF +:10099000004F5054494F4E533A204C554641204247 +:1009A0004F4F544D414749432045585452414B45C0 +:1009B0005920434F4E534F4C4520434F4D4D414ED0 +:1009C00044204E4B524F20343039360A00425549AC +:1009D0004C443A20756E6B6E6F776E202832313A38 +:1009E00032353A3338204A756E2031332032303177 +:1009F00036290A005649443A20307846454544286D +:100A0000534154414E29205049443A2030783630E1 +:100A10003630284748363029205645523A2030781B +:100A2000303030330A00444553433A20514D4B2077 +:100A30006B6579626F617264206669726D7761724D +:100A40006520666F7220536174616E2047483630AE +:100A500020776974682057533238313220737570AB +:100A6000706F72740A000A092D2056657273696FDF +:100A70006E202D0A000A092D20436F6E736F6C657E +:100A8000202D0A4553432F713A09717569740A0084 +:100A90000A092D204D61676963202D0A443A0944F3 +:100AA00065627567204D65737361676520546F6774 +:100AB000676C650A583A094D61747269782044651B +:100AC000627567204D6F646520546F67676C6520A1 +:100AD0002D2053686F77206B65797072657373652D +:100AE0007320696E206D6174726978206772696421 +:100AF0000A4B3A094B6579626F6172642044656202 +:100B0000756720546F67676C65202D2053686F7779 +:100B1000206B65797072657373207265706F727483 +:100B20000A4D3A094465627567204D6F75736520FB +:100B3000546F67676C650A563A0956657273696F38 +:100B40006E0A533A095374617475730A433A094142 +:100B50006374697661746520436F6E736F6C652092 +:100B60004D6F64650A46312D4631303A0953776935 +:100B700074636820746F204C6179657220302D3960 +:100B80002028463130203D204C30290A302D393A7A +:100B90000953776974636820746F204C61796572BA +:100BA00020302D390A4553433A09537769746368F5 +:100BB00020746F204C6179657220302028616C743C +:100BC00065726E617465206B65792031290A475220 +:100BD0004156453A0953776974636820746F204C15 +:100BE0006179657220302028616C7465726E617461 +:100BF00065206B65792032290A50415553453A09E1 +:100C00004A756D7020746F20426F6F746C6F6164F1 +:100C1000657220285265736574290A453A09507235 +:100C2000696E7420454550524F4D20536574746968 +:100C30006E67730A4E3A094E4B524F20546F6767E6 +:100C40006C650A000A002575002E6C6576656C3AA5 +:100C500020000A002575002E656E61626C653A20E1 +:100C6000000A0025303258006261636B6C69676866 +:100C7000745F636F6E6669672E7261773A20000A4F +:100C8000002575002E6E6B726F3A20000A002575E4 +:100C9000002E737761705F6261636B736C61736860 +:100CA0005F6261636B73706163653A20000A0025BF +:100CB00075002E737761705F67726176655F65732B +:100CC000633A20000A002575002E6E6F5F67756914 +:100CD0003A20000A002575002E737761705F7261FB +:100CE0006C745F726775693A20000A002575002EE2 +:100CF000737761705F6C616C745F6C6775693A20C3 +:100D0000000A002575002E636170736C6F636B5F62 +:100D1000746F5F636F6E74726F6C3A20000A002507 +:100D200075002E737761705F636F6E74726F6C5FA6 +:100D3000636170736C6F636B3A20000A0025303278 +:100D400058006B65796D61705F636F6E6669672EC1 +:100D50007261773A20000A002575002E6D6F757359 +:100D6000653A20000A002575002E6B6579626F6177 +:100D700072643A20000A002575002E6D6174726954 +:100D8000783A20000A002575002E656E61626C6558 +:100D90003A20000A00253032580064656275675FAA +:100DA000636F6E6669672E7261773A20000A0025CC +:100DB000750064656661756C745F6C617965723A23 +:100DC00020003F004E4B524F3A206F66660A004E9D +:100DD0004B524F3A206F6E0A000A6D6F7573653A79 +:100DE000206F66660A000A6D6F7573653A206F6E34 +:100DF0000A000A6B6579626F6172643A206F6666F9 +:100E00000A000A6B6579626F6172643A206F6E0A3C +:100E1000000A6D61747269783A206F66660A000A8A +:100E20006D61747269783A206F6E0A000A646562B7 +:100E300075673A206F66660A000A64656275673AEC +:100E4000206F6E0A000A0A4A756D70696E67207419 +:100E50006F20626F6F746C6F616465722E2E2E202E +:100E600000433E20006565636F6E6669673A0A005D +:100E70006261636B6C6967687420737465703A2093 +:100E800025750A006261636B6C6967687420746F12 +:100E900067676C653A2025750A006261636B6C694F +:100EA0006768742064656372656173653A202575AF +:100EB0000A006261636B6C6967687420696E6372B3 +:100EC000656173653A2025750A0011241FBECFEFB6 +:100ED000DAE0DEBFCDBF04B603FE24C080911F025E +:100EE00090912002A0912102B09122028730904B74 +:100EF000A740B04BB9F410921F021092200210923A +:100F000021021092220214BE84B7877F84BF88E139 +:100F10000FB6F89480936000109260000FBEE0E07E +:100F2000F8E3099511E0A0E0B1E0E4E4FFE502C0D8 +:100F300005900D92A833B107D9F712E0A8E3B1E00C +:100F400001C01D92AF31B107E1F70E94F0160C9479 +:100F5000A02F0C940000FF93EF93E0913801F091E3 +:100F60003901309709F00995EF91FF910895FC013F +:100F70008591803011F0EFDFFBCF0895FF27E0E28D +:100F800030E247FF0CC0419597FF09C0EDE2609544 +:100F9000709580959095611D711D811D911D27FF94 +:100FA00002C0219530E350E2AA27660F771F881F01 +:100FB000991FAA1FA41710F0A41B63955A95A9F7AF +:100FC000AA3008F0A95FA05DAF93F3956115710594 +:100FD0008105910541F7ED3211F4EF93F395F21786 +:100FE00018F43F93F395FBCF8F91B5DFFA95E1F7B6 +:100FF0000895E991F9918591803021F0853219F0B9 +:10100000AADFF9CF089520E0E89455915532C1F355 +:10101000503311F4689455915A3348F4505390F377 +:10102000220F022E220F220F200D250FF4CF0EF4D7 +:10103000219589919991533619F3533729F15335F5 +:1010400059F1BC0188279927E8945C3621F48991ED +:10105000999168945591543639F446EF7EF077FFB4 +:101060000DC08FEF9FEF0AC055374AE039F0583571 +:1010700040E121F0523642E009F00895FF93EF93EA +:101080007DDFEF91FF91B7CFFF93EF93FC0181914B +:101090008030B9F360DFFBCFFF93EF9368DFF1CFD0 +:1010A000DF93CF93CDB7DEB72596A3DFCF91DF9146 +:1010B00008958CE191E00E94B707269A2E98089532 +:1010C000811102C02E9A08952E980895229A0895AB +:1010D00081FF02C02A9A08952A98089508950895D4 +:1010E0008EE698E0892B11F00E946E080E94660837 +:1010F0000C9459088FE698E0892B11F00C946F0836 +:101100000895CF93DF93EC01462F50E0493051050D +:1011100008F05CC0FA01EA5AFF4F0C94522F0E946B +:10112000A127827280933A019A81992369F08823DA +:1011300019F085E390E002C089E290E00E94FE266B +:10114000DF91CF910C94ED27882319F085E390E08F +:1011500002C089E290E00E944F27F2CF8A81882363 +:10116000A9F1DF91CF910C94F8118A81882371F154 +:10117000DF91CF910C9461108A81882339F1DF913E +:10118000CF910C947A108A81882301F1DF91CF915D +:101190000C9499108A818823C9F0DF91CF910C9427 +:1011A000B4108A81882391F0DF91CF910C94CE10F6 +:1011B0008A81882359F0DF91CF910C94E9108A81BC +:1011C000882321F0DF91CF910C94EE11DF91CF9124 +:1011D000089581E0089581E008950C94EB08089546 +:1011E0000F931F93CF93DF93EC0108811981C801FE +:1011F0000E947E26B8010E948B098C01BE010E94CC +:10120000ED08882309F47AC08A818823C9F1809186 +:10121000460181111EC0043180E5180789F50E943E +:10122000EF0881E0809346010E94D5289093450104 +:101230008093440110923D0110923F0110923E01B3 +:10124000109241011092400110924301109242010C +:1012500055C080914401909145010E94E128883C4D +:10126000910570F480913D01E82FF0E0EE0FFF1F33 +:10127000E25CFE4F118300838F5F80933D013EC08F +:10128000043880E5180721F005381045A1F02AC080 +:101290008A81882321F010923B0182E012C0809164 +:1012A0003B01811106C086E20E94B21D86E20E94C7 +:1012B0007A1E82E014C08A81882331F010923C01AA +:1012C00080E20E94C91E1AC080913C01811106C0B3 +:1012D00087E20E94B21D87E20E947A1E80E20E948D +:1012E000D01E0CC081E080933B0180933C01CE0175 +:1012F000DF91CF911F910F910C94E90880E0DF916D +:10130000CF911F910F9108950C9470080C947A0856 +:1013100080E090E008959EE0799FF001112496E42A +:10132000899FE00DF11D1124E60FF11DEE0FFF1F47 +:10133000EC5BFE4F859194910895880F991F8E5410 +:101340009040FC01859194910895880F991F8E5CBF +:101350009E4FFC018591949108950F931F93CF9315 +:10136000DF93EC01811521E39207A0F5811530E3AD +:10137000930708F0D7C0883E9105D8F4803E9105C8 +:1013800008F06FC0883A910578F4853A910508F025 +:101390006AC08130910509F4F8C108F4F3C18430C2 +:1013A000910508F05EC0EEC18B3B910508F466C064 +:1013B000E9C1C11580E2D80708F0AFC0C11591E0BE +:1013C000D90708F04EC0C03FD10508F4DBC18E013B +:1013D00010651CC2803820E5920700F5803730E5A3 +:1013E000930708F0A3C0C11580E5D80709F4ACC085 +:1013F00050F4CE01905480319F4008F0C3C18E015B +:101400001F70106A03C2C13030E5D30709F4AAC0C7 +:10141000C43180E5D80708F4AFC0B4C1C33890E543 +:10142000D90709F48EC050F4C13830E5D30709F468 +:1014300082C008F083C000E011EDE8C1C03191E541 +:10144000D90708F49FC1C11527E5D20708F436C1B2 +:10145000CE0190578115904108F094C18E011F7004 +:101460008FC18E01D3C1853A910509F491C1863AA5 +:10147000910509F490C103E810E4C8C1883A9105C8 +:1014800009F48CC1893A910509F48BC18A3A910516 +:1014900009F48AC18B3A910509F489C18C3A910506 +:1014A00009F488C18D3A910509F487C1803B910503 +:1014B00009F486C18E3A910509F485C18F3A9105E8 +:1014C00009F484C1813B910509F483C1823B9105F4 +:1014D00009F482C1833B910509F481C1843B9105E4 +:1014E00009F480C1853B910509F47FC1863B9105D4 +:1014F00009F47EC1873B910509F47DC1883B9105C4 +:1015000009F47CC1893B910509F47BC18A3B9105B3 +:1015100009F07AC10AE216E479C1CE019F700E94F7 +:10152000A50975C18C011127106C70C18C010F7059 +:101530001127146D6BC100E010ED68C100E012EDE1 +:1015400065C100E013ED62C10E9453218FEF94E367 +:101550002CE0815090402040E1F700C000000E9444 +:101560002F2954C18CE592E00E94B7078091E901D0 +:1015700081608093E9014AC10E94E92A811102C079 +:101580000E94CA2A0E94062B90E090931E0280932C +:101590001D02C23030E5D30721F480911D02816025 +:1015A00086C0C43080E5D80721F480911D02826096 +:1015B0007EC0C63090E5D90721F480911D02846079 +:1015C00076C0C83020E5D20719F480911D0227C0EB +:1015D000CA3030E5D30721F480911D02806167C0D5 +:1015E000CC3080E5D80721F480911D0280625FC075 +:1015F000CE3090E5D90721F480911D02806457C058 +:10160000C03120E5D20721F480911D0280684FC0CF +:10161000C23130E5D30729F480911D0284608860CF +:1016200046C0C33080E5D80721F480911D028E7F2B +:101630003EC0C53090E5D90721F480911D028D7F11 +:1016400036C0C73020E5D20721F480911D028B7F80 +:101650002EC0C93030E5D30719F480911D0226C091 +:10166000CB3080E5D80721F480911D028F7E1FC00A +:10167000CD3090E5D90721F480911D028F7D17C0F0 +:10168000CF3020E5D20721F480911D028F7B0FC05F +:10169000C13130E5D30721F480911D028F7707C057 +:1016A000C331D04531F480911D028B7F877F8093B9 +:1016B0001D0280911D020E940A2BA8C08D2F992720 +:1016C0008F70992781309105E9F48E0103701127FD +:1016D0009C0102C0220F331F0A95E2F789011C68A2 +:1016E000CE01E4E0880F991FEA95E1F7882793700F +:1016F000082B192BF3E0CC0FDD1FFA95E1F7C0762C +:10170000DD272CC08230910529F41C2F0027016FA2 +:10171000106A7CC08330910561F4CE0183709927F3 +:1017200001E010E002C0000F111F8A95E2F71C686B +:101730000EC084309105A9F4CE018370992701E091 +:1017400010E002C0000F111F8A95E2F71A6863E0EB +:10175000CC0FDD1F6A95E1F7C07ED7700C2B1D2BD7 +:1017600055C08530910529F41C2F0027046F106A9D +:101770004DC0069709F04AC0CF71DD271C2F002706 +:10178000106244C000E010E041C001E010E03EC043 +:1017900001E810E43BC002E810E438C002EE14E4B3 +:1017A00035C009EE14E432C00AEE14E42FC005EB94 +:1017B00014E42CC006EB14E429C007EB14E426C0A3 +:1017C0000CEC14E423C00DEC14E420C003E815E491 +:1017D0001DC00AE815E41AC002E915E417C004E9BF +:1017E00015E414C001E216E411C003E216E40EC0D1 +:1017F00004E216E40BC005E216E408C006E216E4B3 +:1018000005C007E216E402C000E014E4C801DF915D +:10181000CF911F910F9108959EE0799FF0011124BF +:1018200096E4899FE00DF11D1124E60FF11DEE0FE6 +:10183000FF1FEC5BFE4F85919491803E9105E0F493 +:10184000803C910558F58133910509F46FC048F447 +:101850008932910509F463C08A32910509F46DC09B +:1018600072C089339105E9F082389105D1F0853352 +:10187000910509F44DC067C0833E910581F138F4AC +:10188000803E9105B9F0823E9105D9F05CC0863E5C +:10189000910561F1873E9105A1F155C00E949D0916 +:1018A000089520911D0220FD02C021FF4CC080EE52 +:1018B00090E049C080911D0280FFF9CF89E390E05C +:1018C00042C080911D0282FF0EC080911D0284FFE4 +:1018D00003C080E090E037C083EE90E034C0809198 +:1018E0001D0282FFF2CF82EE90E02DC080911D029A +:1018F00083FF0BC080911D0284FDEBCF87EE90E04B +:1019000022C080911D0283FFF5CF86EE90E01BC0C0 +:1019100080911D0285FF07C089E290E014C080918C +:101920001D0285FFF9CF85E390E00DC080911D0277 +:1019300086FF07C08AE290E006C080911D0286FF04 +:10194000F9CF81E390E00E94AD0908950C946808F6 +:10195000E82FF0E0E25EFE4F8081E82FEF70F0E0CC +:10196000282F22952F7081E090E0022E01C0880F71 +:101970000A94EAF780A308950F931F93CF93DF9300 +:1019800085B7806885BF85B7806885BFC4E0D0E033 +:1019900001E010E0FE01E25EFE4F8081E82FEF7073 +:1019A000F0E021A182958F70A80102C0440F551F5D +:1019B0008A95E2F7242B21A38C2F0E94A80C219753 +:1019C00048F78DE090E041E050E0FC01E05FFE4F21 +:1019D0002081E22FEF70F0E062A122952F70DA01F2 +:1019E00002C0AA0FBB1F2A95E2F76A2B62A30197D8 +:1019F00060F7DF91CF911F910F910C948409EF92C2 +:101A0000FF920F931F93CF93DF93C1E5D1E084E062 +:101A1000E82E01E010E095E0F92E8E2D0E94A80C32 +:101A20002DE030E040E050E0F901E05FFE4F8081C2 +:101A3000E82FEF70F0E060A170E082958F7002C037 +:101A4000759567958A95E2F760FD09C0B801022E89 +:101A500002C0660F771F0A94E2F7462B572B2150DE +:101A6000310910F73A912A912417350721F059834B +:101A70004883F09200018E2D0E94A80CEA949FEFFB +:101A8000E912CBCF2091000127FD2EC08091E90102 +:101A900080FF10C0822F992787FD90959F932F93E9 +:101AA00085EA92E09F938F930E9450080F900F90C9 +:101AB0000F900F908091000181508093000187FD6D +:101AC00007C08FE99FE00197F1F700C000000CC04C +:101AD000ABE5B1E0E1E5F1E0929182919E938E93C6 +:101AE00091E0E734F907C1F70E94860981E0DF91B0 +:101AF000CF911F910F91FF90EF900895E82FF0E0A4 +:101B0000EE0FFF1FEF5AFE4F808191810895EF92F3 +:101B1000FF920F931F93CF93DF938091E90180FF92 +:101B200004C086E892E00E94B70701E511E0C0E03A +:101B3000D0E04EE6E42E42E0F42E8091E90180FFF1 +:101B400013C0F801808191810E943F289F938F9359 +:101B5000DF93CF93FF92EF920E9450080F900F9067 +:101B60000F900F900F900F9021960E5F1F4FC53072 +:101B7000D10519F7DF91CF911F910F91FF90EF9051 +:101B800008951F93CF93DF93CBE5D1E010E09A91B6 +:101B90008A910E942128180F81E0C135D807B9F732 +:101BA000812FDF91CF911F9108953EB1242F209571 +:101BB00023233EB1342B4FB7F894FC01680F791FF3 +:101BC000E617F70789F0819198E03EB9000000C060 +:101BD00087FF2EB9880F000000C000C000C02EB9DA +:101BE00000C09A9591F7ECCF4FBF08952DB1242BEB +:101BF0002DB99B01220F331F260F371FB9010E94F9 +:101C0000D50D87EC90E00197F1F700C00000089532 +:101C100044E00C94F60DCF92DF92EF92FF920F9377 +:101C20001F93CF93DF937C01E42FF0E0E854FA4F49 +:101C30004491EFEFF0E0E61BF109E854FA4FE4912C +:101C4000E09509F498C0042F10E08FEF90E08E1B10 +:101C50009109809FB001819F700D909F700D11249C +:101C6000E72FF72FCCE3D0E0C701BE010E942A2F57 +:101C7000DC016230710509F447C0D8F461157105C3 +:101C8000A1F16130710509F07AC00E1B1109CE0176 +:101C90008A1B9B0BDC010A9FC0010B9F900D1A9FB2 +:101CA000900D1124BE010E942A2FCE2EC60ED42ED6 +:101CB00067C06430710509F44BC0B8F16530710537 +:101CC00009F05DC00E1B1109BE01681B790B069F50 +:101CD000C001079F900D169F900D1124BE010E9418 +:101CE0002A2FDE2EFE2FF60F44C00E1B11090E9D6B +:101CF000C0010F9D900D1E9D900D1124BE010E94EC +:101D00002A2FDE2ED60E35C00E1B11090A9FC001E8 +:101D10000B9F900D1A9F900D1124BE010E942A2F37 +:101D2000D42ECE2EFE2FF60F2BC00E1B1109BE0196 +:101D3000681B790B069FC001079F900D169F900DA1 +:101D40001124BE010E942A2FDE2ED60ECE2E0FC0E9 +:101D50000E1B11090A9FC0010B9F900D1A9F900D39 +:101D60001124BE010E942A2FCE2EC60EDE2EF42F85 +:101D700007C0C42E05C0F42FD42EC42E01C0F0E03D +:101D8000D9011196CC921197DC921296FC93DF91B7 +:101D9000CF911F910F91FF90EF90DF90CF9008951A +:101DA00087E090E00C94602FAB01BC0187E090E0ED +:101DB0000C947E2F8091E90180FF08C089E894E0AF +:101DC0009F938F930E9450080F900F9083E0809311 +:101DD000F0018091F101807884668F778093F10122 +:101DE0008CEC8093F2018093F3016091F00170918B +:101DF000F1018091F2019091F3010C94D40E809145 +:101E0000E90180FF08C082E794E09F938F930E94CE +:101E100050080F900F908091E90180FF0FC08091D2 +:101E2000F00181701F928F9385E594E09F938F93CB +:101E30000E9450080F900F900F900F908091E90131 +:101E400080FF10C08091F00186958F731F928F9351 +:101E50008AE394E09F938F930E9450080F900F9015 +:101E60000F900F908091E90180FF19C09091F001CF +:101E7000991F9927991F2091F101822F880F892B93 +:101E800027FB222720F92F938F9380E294E09F93E2 +:101E90008F930E9450080F900F900F900F90809199 +:101EA000E90180FF0EC08091F2011F928F9386E0BE +:101EB00094E09F938F930E9450080F900F900F9083 +:101EC0000F908091E90180FF0EC08091F3011F9275 +:101ED0008F938CEE93E09F938F930E9450080F9006 +:101EE0000F900F900F9008958091F00180FF06C031 +:101EF00068E070E088EF91E00C94080EEAEFF1E002 +:101F0000DF0111971C92DF0112971C921082339609 +:101F100082E0E231F807A1F7EBCFEAEFF1E0DF0171 +:101F200011978C93DF0112976C934083339692E064 +:101F3000E231F907A1F70C94740FCF92DF92EF9280 +:101F4000FF920F931F93CF93DF9300D01F92CDB7D3 +:101F5000DEB7F82EC92ED62EE42E0091F001109196 +:101F6000F1012091F2013091F3010093F4011093FB +:101F7000F5012093F6013093F7018091F00180FF85 +:101F80001EC09E012F5F3F4F8F2D0E940B0E809130 +:101F9000F401F0FA87F98093F401F6942091F501A9 +:101FA00020782F29C0FA27F92093F501D092F60165 +:101FB000E092F7014B8169818A810E948D0F0F9019 +:101FC0000F900F90DF91CF911F910F91FF90EF90A5 +:101FD000DF90CF9008950F931F93CF93DF93C82F77 +:101FE000192F062FD42F8091F00180FF65C0982F04 +:101FF0009E77923029F48C2F912F0E949D0F1AC04A +:10200000282F26952F739EE3920F9F73943018F418 +:10201000D091F3010FC0265C2F73293058F4881F2C +:102020008827881F1091F101C12FCC0FC82B17FBF7 +:10203000112710F98091F001C0FB87F98093F0011E +:10204000C6958091F10180788C2B10FB87F98093E5 +:10205000F1010093F201D093F3016091F0017091CE +:10206000F1018091F2019091F3010E94D40E8091D0 +:10207000F3011F928F938091F2011F928F939091A1 +:10208000F001991F9927991F2091F101822F880F44 +:10209000892B27FB222720F92F938F9388EE92E03C +:1020A0009F938F930E9450088DB79EB708960FB6E6 +:1020B000F8949EBF0FBE8DBFDF91CF911F910F91FE +:1020C00008952091F001221F2227221F3091F10153 +:1020D000432F440F842F822B37FB992790F90A96C0 +:1020E00068E671E00E943E2F4091F3016091F20199 +:1020F0000C94EB0F2091F001221F2227221F309118 +:10210000F101432F440F842F822B37FB992790F93D +:102110008A3091051CF4825A9E4F01C00A9768E6E6 +:1021200071E00E943E2F4091F3016091F2010C9406 +:10213000EB0F6091F201862F90E08F3E910514F431 +:102140006F5E01C06FEF8091F001881F8827881FA4 +:102150009091F101292F220F97FB992790F9409137 +:10216000F301822B0C94EB0F6091F201862F90E02B +:10217000419714F0615101C060E08091F001881F27 +:102180008827881F9091F101292F220F97FB99270B +:1021900090F94091F301822B0C94EB0F4091F301E5 +:1021A000842F90E08F3E910514F44F5E01C04FEFF5 +:1021B0008091F001881F8827881F9091F101292FB5 +:1021C000220F97FB992790F96091F201822B0C94D2 +:1021D000EB0F4091F301842F90E0419714F04151AF +:1021E00001C040E08091F001881F8827881F9091EE +:1021F000F101292F220F97FB992790F96091F201A5 +:10220000822B0C94EB0F80916C0181110FC081E047 +:1022100080936C0189E0809391008FB7F89493E0EC +:102220009093990090ED909398008FBF08958091BE +:1022300071008260809371008091E90180FF08C085 +:1022400087ED92E09F938F930E9450080F900F901C +:102250000895809171008D7F809371008091E901D4 +:1022600080FF08C085EC92E09F938F930E945008F6 +:102270000F900F9008959091F00190FF4DC09178CC +:10228000811102C0926003C0883120F09E62909359 +:10229000F00105C08F73880F892B8093F001609146 +:1022A000F0017091F1018091F2019091F3010E948F +:1022B000D40E8091F00186958F731F928F938BE3DC +:1022C00093E09F938F930E9450088091F001982F84 +:1022D0009E770F900F900F900F90923019F40E94FC +:1022E000291107C08695825C8F73863110F40E9495 +:1022F00017118091F001881F8827881F9091F101A4 +:10230000292F220F97FB992790F94091F3016091B3 +:10231000F201822B0C94EB0F08958091E90181600A +:102320008093E90185ED93E09F938F930E9450087D +:1023300081E080936D018091E9010F900F9080FF03 +:1023400008C08FEB93E09F938F930E9450080F90EB +:102350000F900E94E92A811110C08091E90180FF4D +:1023600008C087E993E09F938F930E9450080F90D5 +:102370000F900E94CA2A0E94DA0E0E94D00E60932B +:10238000F0017093F1018093F2019093F3016E7765 +:10239000C1F48091E90180FF08C08EE493E09F932F +:1023A0008F930E9450080F900F900E94DA0E0E94A7 +:1023B000D00E6093F0017093F1018093F20190933D +:1023C000F3010E94FF0E0E9403118091F00180FF33 +:1023D00004C086958F730C943B1108958091F00191 +:1023E00086958F738F5F883108F081E00C943B11E4 +:1023F0008091F001982F909590FB80F98093F001E7 +:102400006091F0017091F1018091F2019091F301DE +:102410000E94D40E8091F00181701F928F938DE005 +:1024200093E09F938F930E9450088091F0010F904A +:102430000F900F900F9080FF04C086958F730C94BF +:102440003B110E9429112FEF80E792E0215080403C +:102450009040E1F700C000000C94740FCF93C82F98 +:1024600080916A0190916B010E94E128EC2FF0E0CD +:10247000EC54FB4FE491F0E08E179F0710F10E949F +:10248000D52890936B0180936A01E0916901F0E097 +:10249000E854FB4F44918091F001881F8827881FE2 +:1024A0009091F101292F220F97FB992790F96091C4 +:1024B000F201822B0E949D0F809169018F5F8093B2 +:1024C0006901CF910895CF93C82F809167019091B2 +:1024D00068010E94E128EC2FF0E0EF54FB4FE491FB +:1024E000F0E08E179F07E8F00E94D52890936801CE +:1024F000809367014091F3016091F2018091650141 +:10250000909166010E949D0F8091650190916601F6 +:10251000019668E671E00E942A2F909366018093ED +:102520006501CF910895DF92EF92FF920F931F9371 +:10253000CF93DF93D82E80916301909164010E9424 +:10254000E128ED2DE695F0E0EF54FB4FE491F0E04B +:102550008E179F07E8F10E94D5289093640180931D +:10256000630108EF11E0C0E0D0E088E6E82EFF2428 +:10257000F39480916101909162018C0F9D1FB701CE +:102580000E942A2F98014091F3016091F2010E946C +:102590000B0EAD960D5F1F4FC83681E0D80749F787 +:1025A0000E94740F2091610130916201D0FE0AC037 +:1025B000C9010196BE010E942A2F90936201809367 +:102 |