summaryrefslogtreecommitdiffstats
path: root/keyboard
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2016-06-13 21:59:22 -0400
committerJack Humbert <jack.humb@gmail.com>2016-06-13 21:59:22 -0400
commit1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27 (patch)
tree13a6e684abf9a4cf11fb3701236874ee6403d2ae /keyboard
parent498455403e6b891f7ecbce98163ba2b3def25dbb (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
Diffstat (limited to 'keyboard')
-rw-r--r--keyboard/satan/Makefile115
-rw-r--r--keyboard/satan/backlight.c24
-rw-r--r--keyboard/satan/config.h92
-rw-r--r--keyboard/satan/controller.jpgbin0 -> 140199 bytes
-rw-r--r--keyboard/satan/keymaps/default/compiled.hex1530
-rw-r--r--keyboard/satan/keymaps/default/keymap.c162
-rw-r--r--keyboard/satan/led.c36
-rw-r--r--keyboard/satan/pinout.txt1
-rw-r--r--keyboard/satan/power.jpgbin0 -> 433947 bytes
-rw-r--r--keyboard/satan/satan.c36
-rw-r--r--keyboard/satan/satan.h42
11 files changed, 2038 insertions, 0 deletions
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
new file mode 100644
index 0000000000..76ffa45004
--- /dev/null
+++ b/keyboard/satan/controller.jpg
Binary files differ
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
+:1025C000610106C0215031093093620120936101FD
+:1025D000DF91CF911F910F91FF90EF90DF900895C1
+:1025E0008F929F92AF92BF92CF92DF92EF92FF9223
+:1025F0000F931F93CF93DF93C82F80FD03C09924BF
+:10260000939402C099249A9480915F019091600103
+:102610000E94E128C695EC2FF0E0E255FB4FE491D3
+:10262000F0E08E179F0708F468C00E94D5289093A9
+:10263000600180935F0128EFE22E21E0F22E0AEF85
+:1026400011E0C0E0D0E037E0A32EB12CF8013197C3
+:102650001082F7011082F801108297E0C92ED12C68
+:10266000812C80915E01880D87FD885F992787FD09
+:102670009095C817D907E9F42091F3012C9DC0016A</