summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2016-06-14 03:59:22 +0200
committerJack Humbert <jack.humb@gmail.com>2016-06-14 03:59:22 +0200
commit1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27 (patch)
tree13a6e684abf9a4cf11fb3701236874ee6403d2ae
parent498455403e6b891f7ecbce98163ba2b3def25dbb (diff)
downloadqmk_firmware-1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27.tar.gz
qmk_firmware-1c5a6733ff4276b0f4144c4ff768b1ffd4b4ee27.tar.xz
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.yml2
-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
12 files changed, 2040 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
index 2e0714d71..436c17338 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 000000000..9df0e4fd0
--- /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 000000000..4240b0916
--- /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 000000000..aea9254e8
--- /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 000000000..76ffa4500
--- /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 000000000..8f4957d1c
--- /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
+:102680002D9D900D1124B5010E943E2F462F809163
+:10269000F001881F8827881F9091F101592F550F4D
+:1026A00097FB992790F997016091F201852B0E9481
+:1026B0000B0E890CF1E0CF1AD108C114D10489F6B0
+:1026C000219683E0E80EF11C0D5F1F4FC830D10545
+:1026D00009F0BCCF0E94740F80915E0191E09912C5
+:1026E00006C0811102C087E006C0815004C090E09E
+:1026F00001968770992780935E01DF91CF911F919A
+:102700000F91FF90EF90DF90CF90BF90AF909F9090
+:102710008F9008959F92AF92BF92CF92DF92EF92E7
+:10272000FF920F931F93CF93DF93CDB7DEB76897D8
+:102730000FB6F894DEBF0FBECDBF182F80915C019D
+:1027400090915D010E94E128E12FF0E0E555FB4FFB
+:10275000E491F0E08E179F0708F491C00E94D528FD
+:1027600090935D0180935C018E010F5F1F4F6E019E
+:1027700083E0C80ED11CE12CF12C5801F6013197F1
+:102780001082D8011C92F6011082912C90910101C7
+:1027900080915B01999E800D112487FD04C08830D3
+:1027A0001CF087E001C080E0992787FD9095E8162E
+:1027B000F906A1F48091F001881F8827881F909165
+:1027C000F101592F550F97FB992790F998014091E6
+:1027D000F3016091F201852B0E940B0E9394F7E0B8
+:1027E0009F12D4CF8FEFE81AF80A0D5F1F4FA3E0B6
+:1027F000CA0ED11CB8E0EB16F10409F0BFCF6AEFA6
+:1028000071E089E090E09C0127703327AB014150D3
+:102810005109F901EE0FFF1FE20FF31FEA0DFB1D37
+:102820002181DA012C939B01225031094081D90189
+:102830004C932281FB01208301966D5F7F4F813194
+:10284000910509F70E94740F9091010180915B013D
+:10285000913049F48A3F2CF489EF80935B018FEF2C
+:1028600008C081500AC08F303CF08EE080935B013D
+:1028700081E08093010103C08F5F80935B016896C4
+:102880000FB6F894DEBF0FBECDBFDF91CF911F9181
+:102890000F91FF90EF90DF90CF90BF90AF909F90FF
+:1028A00008951F920F920FB60F9211242F933F930A
+:1028B0004F935F936F937F938F939F93AF93BF9348
+:1028C000EF93FF938091F00186958F739EE3980FAD
+:1028D0009F73943020F482500E942E1223C09AE3FA
+:1028E000980F9F73933020F486500E9463121AC091
+:1028F00097E3980F9F73963020F489500E949312AB
+:1029000011C091E3980F9F73963020F48F500E946E
+:10291000F01208C09BE2980F9F73933018F4855112
+:102920000E948A13FF91EF91BF91AF919F918F9178
+:102930007F916F915F914F913F912F910F900FBEBB
+:102940000F901F90189580918101089508959FB769
+:10295000F894109270019FBF90911402943009F086
+:1029600058C09091E9009F702091EC0020FF02C0B8
+:1029700020E801C020E0292B93E09093E90090919A
+:10298000EB0090FF43C09091EE0097FF3FC0909105
+:102990006E01992321F09091E80095FF37C01092C5
+:1029A0006E0196E03091E80035FD15C030911402BB
+:1029B000343061F53091EB0035FD28C0915021F4A1
+:1029C00081E080936E0122C0EFE9FFE03197F1F7DB
+:1029D00000C00000E7CF8093F1008091E80085FD02
+:1029E0000AC08091E80080FFFCCF8091E8008E77DC
+:1029F0008093E80006C08FB7F89491E0909370013F
+:102A00008FBF2F702093E90080E008952F702093EE
+:102A1000E9008FEF0895CF93DF9300D01F92CDB7D9
+:102A2000DEB720911402243021F523E029839B8313
+:102A30008A8382E08093E9008FEF9091E8008150D3
+:102A400095FD06C095ED9A95F1F700008111F5CF3F
+:102A50008091E80085FF0DC040E050E063E070E049
+:102A6000CE0101960E94A3178091E8008E77809393
+:102A7000E8000F900F900F90DF91CF910895CF93C2
+:102A8000DF9300D01F92CDB7DEB72091140224301F
+:102A900019F522E029839B838A832093E9008FEF35
+:102AA0009091E800815095FD06C095ED9A95F1F75B
+:102AB00000008111F5CF8091E80085FF0DC040E056
+:102AC00050E063E070E0CE0101960E94A317809170
+:102AD000E8008E778093E8000F900F900F90DF91C1
+:102AE000CF910895CF93DF93EC018091140284304D
+:102AF00009F046C090910C019923D9F090910D01F5
+:102B00009923B9F08093E9008FEF9091E80081500C
+:102B100095FD06C095E19A95F1F700008111F5CF7A
+:102B20008091E80085FF2CC040E050E060E170E05B
+:102B300017C081E08093E9008FEF9091E800815009
+:102B400095FD06C095ED9A95F1F700008111F5CF3E
+:102B50008091E80085FF14C040E050E068E070E03C
+:102B6000CE010E94A3178091E8008E778093E80041
+:102B700080E1FE01A1E7B1E001900D928A95E1F7B5
+:102B8000DF91CF9108958DED96E00E94B707809177
+:102B90001302811109C00E9435190E949219809177
+:102BA000E20084608093E200089589ED96E00E943F
+:102BB000B70710921302089585ED96E00C94B707BD
+:102BC00081ED96E00C94B7078DEC96E00E94B70774
+:102BD0000C94982880916F018F5F80936F0162E35E
+:102BE0000E941E2F911135C010926F0180917001CB
+:102BF000882379F180911402843049F58091E900AD
+:102C00008F709091EC0090FF02C090E801C090E0BE
+:102C1000982B83E08093E9008091EB0080FF14C043
+:102C20008091EE0087FF10C08091E80085FF03C00F
+:102C30001092F100F9CF8091E80080FF05C08091EB
+:102C4000E8008E778093E8009F709093E9001092DF
+:102C50007001089542E061EC81E00E94AF1842E00B
+:102C600061EC82E00E94AF1842E261EC83E00E94D6
+:102C7000AF1842E161EC84E00C94AF188091160229
+:102C8000833009F455C030F4813071F0823009F49A
+:102C90008EC008958A3009F47AC08B3009F460C080
+:102CA000893009F09CC020C080911502813A09F05A
+:102CB00096C08091E800877F8093E8008091190298
+:102CC00090911A02892B21F060E080E090E003C02F
+:102CD00060E181E791E070E00E94EC178091E800EC
+:102CE0008B778093E800089580911502813209F076
+:102CF00076C08091190290911A02009719F00397FB
+:102D000009F06DC08091E800877F8093E800809192
+:102D1000E80082FD05C0809114028111F8CF5FC0E8
+:102D20008091F100809381018091E8008B7753C0FE
+:102D300080911502813A09F052C080911902909158
+:102D40001A02892B09F04BC08091E800877F80939D
+:102D5000E8008091E80080FFFCCF80910C0136C034
+:102D6000809115028132D9F58091190290911A0251
+:102D7000892BA9F58091E800877F8093E8000E9465
+:102D8000E4188091170280930C010C9453218091D8
+:102D90001502813221F58091E800877F8093E80059
+:102DA0000E94E41880911802809382010895809116
+:102DB0001502813AA1F48091E800877F8093E800B2
+:102DC0008091E80080FFFCCF809182018093F10028
+:102DD0008091E8008E778093E8000C94E4180895C1
+:102DE00084B7877F84BF88E10FB6F8948093600032
+:102DF000109260000FBE80E8809361001092610025
+:102E00000E94AC1C0E9435190E9492198091E20028
+:102E100084608093E20087EA94E10E941C28789401
+:102E20000E940C1C0E94AE1C82E091E00E94291CB2
+:102E30008CEB96E00E94B70780911402853089F4EC
+:102E400088EB96E00E94B7070E94592880911202F1
+:102E5000882391F30E948728882371F30E948D179D
+:102E6000EBCF0E94D61CE8CF292F33272330310522
+:102E7000A9F06CF42130310509F442C0223031054B
+:102E800009F043C084E790E02FEF36E042C02132E2
+:102E90003105C9F02232310519F137C09927813047
+:102EA000910541F08230910541F0892B71F5EBEFEE
+:102EB000F6E005C0EDEEF6E002C0E1EEF6E084914A
+:102EC00090E09F0126C0643000F5E62FF0E0EE0FA1
+:102ED000FF1FE15DFE4F2081318189E090E019C044
+:102EE000643098F4E62FF0E0DF01AA0FBB1FA95D64
+:102EF000BE4F2D913C91ED5DFE4F808190E009C069
+:102F000082E190E023E737E004C080E090E020E039
+:102F100030E0FA0131832083089580E189BD82E1A8
+:102F200089BD09B400FEFDCF8091D8008F7D8093CC
+:102F3000D8008091E00082608093E0008091E00002
+:102F400081FDFCCF0895CF92DF92EF92FF920F9315
+:102F50001F93CF93DF937C018B01EA010E94051937
+:102F6000811131C0209731F088819981081B190B9C
+:102F7000E80EF91EC12CD12C0115110519F1809113
+:102F8000E80085FD14C08091E8008E778093E8000A
+:102F9000209741F0888199818C0D9D1D99838883AC
+:102FA00085E011C00E940519882331F30CC0F70198
+:102FB00081917F018093F10001501109FFEFCF1A39
+:102FC000DF0ADACF80E0DF91CF911F910F91FF9060
+:102FD000EF90DF90CF90089520911B0230911C025A
+:102FE0002617370748F06115710539F42091E8007C
+:102FF0002E772093E80001C0B901FC0120E06115A3
+:103000007105B9F180911402882309F440C085301C
+:1030100009F43FC08091E80083FD3DC08091E80045
+:1030200082FF06C08091E80082FF26C080E00895FC
+:103030008091E80080FFE3CF2091F3008091F200BF
+:1030400090E0922B6115710551F08830910538F4AC
+:1030500021912093F100615071090196F3CF21E095
+:10306000089709F020E08091E8008E778093E800CF
+:10307000C6CF2111C7CFD6CF80911402882339F053
+:10308000853039F08091E80083FFCCCF04C082E026
+:10309000089583E0089581E0089520911B02309106
+:1030A0001C022617370748F06115710539F4209185
+:1030B000E8002E772093E80001C0B901FC0120E070
+:1030C00061157105C1F180911402882309F441C092
+:1030D000853009F440C08091E80083FD3EC08091B6
+:1030E000E80082FF06C08091E80082FF27C080E0F0
+:1030F00008958091E80080FFE3CF2091F300809154
+:10310000F20090E0922B6115710559F0883091051D
+:1031100040F424912093F100319661507109019699
+:10312000F2CF21E0089709F020E08091E8008E7747
+:103130008093E800C5CF2111C6CFD5CF809114026E
+:10314000882339F0853039F08091E80083FFCBCFB8
+:1031500004C082E0089583E0089581E00895982FE7
+:10316000973058F59093E900981739F07091EC007A
+:103170002091ED005091F00003C0242F762F50E0F5
+:1031800021FF19C03091EB003E7F3093EB0030916E
+:10319000ED003D7F3093ED003091EB0031603093D6
+:1031A000EB007093EC002093ED005093F000209121
+:1031B000EE0027FF07C09F5FD3CF8F708093E90099
+:1031C00081E0089580E008958091150287FD05C093
+:1031D0008091E80080FF0EC012C08091E80082FD5F
+:1031E00005C0809114028111F8CF08958091E80004
+:1031F0008B7708C0809114028111EACF08958091E5
+:10320000E8008E778093E80008958091E400909123
+:10321000E50045E62091EC0020FF21C02091E80068
+:1032200020FD21C020911402222389F0253089F04D
+:103230002091EB0025FD0FC02091E4003091E500C6
+:103240002817390739F3415041F0C901E3CF82E033
+:10325000089583E0089581E0089584E00895209121
+:10326000E80022FFDFCF80E008950E94A3190E94AA
+:10327000AB19E0EEF0E0808181608083E8EDF0E062
+:1032800080818F77808319BCA7EDB0E08C918E7F11
+:103290008C9380818F7E80831092130208950F9308
+:1032A0001F93CF93DF930E94A3190E94AB19C8ED1F
+:1032B000D0E088818F77888388818068888388813F
+:1032C0008F7D888319BC1092140210921002109204
+:1032D00012021092110200EE10E0F80180818B7F43
+:1032E000808388818160888342E060E080E00E9482
+:1032F000AF18E1EEF0E080818E7F8083E2EEF0E0B7
+:10330000808181608083808188608083F8018081F2
+:103310008E7F8083888180618883DF91CF911F9128
+:103320000F910895E8EDF0E080818F7E8083E7EDD6
+:10333000F0E080818160808384E082BF81E08093BF
+:1033400013020C944F19E8EDF0E080818E7F8083AA
+:103350001092E20008951092DA001092E1000895B0
+:103360001F920F920FB60F9211242F933F934F93FA
+:103370005F936F937F938F939F93AF93BF93EF93DD
+:10338000FF938091E10082FF0BC08091E20082FFF9
+:1033900007C08091E1008B7F8093E1000E94EA15D5
+:1033A0008091DA0080FF1FC08091D80080FF1BC091
+:1033B0008091DA008E7F8093DA008091D90080FFBF
+:1033C0000DC080E189BD82E189BD09B400FEFDCF59
+:1033D00081E0809314020E94C31505C019BC1092AD
+:1033E00014020E94D5158091E10080FF19C08091E0
+:1033F000E20080FF15C08091E2008E7F8093E200A2
+:103400008091E20080618093E2008091D800806228
+:103410008093D80019BC85E0809314020E94E015C7
+:103420008091E10084FF30C08091E20084FF2CC0D5
+:1034300080E189BD82E189BD09B400FEFDCF8091A4
+:10344000D8008F7D8093D8008091E1008F7E80939B
+:10345000E1008091E2008F7E8093E2008091E200A3
+:1034600081608093E20080911002882311F084E053
+:1034700007C08091E30087FF02C083E001C081E0C4
+:10348000809314020E94E4158091E10083FF29C01B
+:103490008091E20083FF25C08091E100877F8093C7
+:1034A000E10082E080931402109210028091E1000A
+:1034B0008E7F8093E1008091E2008E7F8093E20016
+:1034C0008091E20080618093E20042E060E080E071
+:1034D0000E94AF188091F00088608093F0000E94F5
+:1034E000DC15FF91EF91BF91AF919F918F917F91EB
+:1034F0006F915F914F913F912F910F900FBE0F9061
+:103500001F9018951F920F920FB60F9211242F93B0
+:103510003F934F935F936F937F938F939F93AF935B
+:10352000BF93CF93EF93FF93C091E900CF70809149
+:10353000EC001092E9008091F000877F8093F0000A
+:1035400078940E94BE1A1092E9008091F000886081
+:103550008093F000C093E900FF91EF91CF91BF916C
+:10356000AF919F918F917F916F915F914F913F911B
+:103570002F910F900FBE0F901F9018951F93CF9310
+:10358000DF93CDB7DEB7AA970FB6F894DEBF0FBEB4
+:10359000CDBFE5E1F2E08091F100819322E0ED31D1
+:1035A000F207C9F70E943E168091E80083FF1CC114
+:1035B0002091150230911602832F90E08A309105F8
+:1035C00008F012C1FC01E15AFF4F0C94522F203831
+:1035D00081F0223809F008C1809119028F70809320
+:1035E000E9008091EB0085FB882780F91092E900C3
+:1035F00006C0809111029091120291118260909107
+:10360000E800977F9093E8008093F1001092F1001A
+:10361000C5C0822F8D7F09F0E7C0222319F0223028
+:1036200061F0E2C080911702813009F0DDC03330D3
+:1036300009F080E08093120228C080911702811166
+:1036400024C0209119022F7009F4CEC02093E90004
+:103650008091EB0080FF19C08091EB00333011F4B2
+:10366000806211C080618093EB0081E090E0022EC7
+:1036700001C0880F0A94EAF78093EA001092EA00EA
+:103680008091EB0088608093EB001092E9008091BC
+:10369000E800877F86C02111A7C0109117021F770D
+:1036A0008091E3008078812B8093E3008091E80093
+:1036B000877F8093E8000E94E4188091E80080FFF3
+:1036C000FCCF8091E30080688093E300112311F028
+:1036D00083E001C082E08093140286C0205822302B
+:1036E00008F082C080911702909118028C3D23E06F
+:1036F000920779F583E08A838AE289834FB7F89449
+:10370000DE01139620E03EE051E2E32FF0E050931B
+:103710005700E49120FF03C0E295EF703F5FEF7028
+:103720008E2F90E0EA3010F0C79601C0C0968D93BE
+:103730009D932F5F243149F74FBF8091E800877F29
+:103740008093E8006AE270E0CE0101960E94EC17D7
+:1037500014C0AE014F5F5F4F609119020E94341791
+:10376000009709F441C02091E800277F2093E800EA
+:10377000BC0189819A810E944D188091E8008B7765
+:103780008093E80031C0203879F58091E800877F88
+:103790008093E800809110028093F1008091E8000E
+:1037A0008E778093E8000E94E4181EC021111CC08F
+:1037B000909117029230C0F48091E800877F809347
+:1037C000E800909310020E94E41880911002811189
+:1037D00004C08091E30087FF02C084E001C081E063
+:1037E000809314020E942A168091E80083FF0AC089
+:1037F0008091E800877F8093E8008091EB008062F1
+:103800008093EB00AA960FB6F894DEBF0FBECDBF33
+:10381000DF91CF911F910895CF9380911402882357
+:10382000B1F08091E9008F709091EC0090FF02C0A0
+:1038300090E801C090E0C92FC82B1092E900809158
+:10384000E80083FD0E94BE1ACF70C093E900CF91BB
+:10385000089590938801809387010895E0918701EE
+:10386000F0918801309721F00190F081E02D0994CA
+:1038700080E00895FF920F931F93CF93DF938C0105
+:10388000E0918701F0918801309799F10280F381EE
+:10389000E02D09958091E90182FF2BC080FF04C0D3
+:1038A0008CE598E00E94B707E80180E1F82E06E574
+:1038B00018E08091E90180FF0BC088811F928F93EF
+:1038C0001F930F930E9450080F900F900F900F902E
+:1038D000FA942196F110EDCF8091E90180FF09C0A3
+:1038E00084E598E0DF91CF911F910F91FF900C94A8
+:1038F000B707DF91CF911F910F91FF90089520910D
+:103900008501309186018217930771F090938601AB
+:1039100080938501E0918701F0918801309721F033
+:103920000680F781E02D099408952091830130915C
+:1039300084018217930771F090938401809383012F
+:10394000E0918701F0918801309721F00084F185A2
+:10395000E02D0994089508950C94AB1C0E94CC2886
+:103960000E94BC0C0E9497290E94402E0C948D113D
+:10397000CF93DF931F92CDB7DEB79091E90192FF0D
+:1039800010C090FF0EC01F928F932EE638E03F9339
+:103990002F9389830E9450080F900F900F900F90E3
+:1039A00089810F90DF91CF910C94A60C5F926F925A
+:1039B0007F928F929F92AF92BF92CF92DF92EF92BF
+:1039C000FF920F931F93CF93DF9300D000D01F92ED
+:1039D000CDB7DEB70E94FF0C94E9C92E91E0D92E35
+:1039E00004E010E0AA24A394B12C502E802F0E9452
+:1039F0007E0D3C01F601F290E2906F01E826F92677
+:103A0000E114F104A1F40150110978F78FEF8983D3
+:103A10008A831B820E94D5288160782F9D838C83A6
+:103A200049815A816B818D810E94841D38C08091AB
+:103A3000E90181FD0E94870D2DE030E04501022E55
+:103A400002C0880C991C0A94E2F7C4018E219F21C0
+:103A5000892B09F129835A826820792081E067281F
+:103A600009F480E08B830E94D5288160782F9D83A4
+:103A70008C8349815A816B818D810E94841DF8015C
+:103A8000EE0FFF1FE657FE4F808191818825992513
+:103A90009183808304C02150310980F6B4CF109106
+:103AA00089010E942E1C1817D1F00E942E1C8093B1
+:103AB00089010F900F900F900F900F90DF91CF9191
+:103AC0001F910F91FF90EF90DF90CF90BF90AF903C
+:103AD0009F908F907F906F905F900C94B81C0F9088
+:103AE0000F900F900F900F90DF91CF911F910F913A
+:103AF000FF90EF90DF90CF90BF90AF909F908F900E
+:103B00007F906F905F900895CF93DF93CDB7DEB72E
+:103B10002B970FB6F894DEBF0FBECDBF4F835887EB
+:103B200069877A878B87DE01119686E0FD01119205
+:103B30008A95E9F785E0FE01379601900D928A9506
+:103B4000E1F749815A816B817C818D819E810E9440
+:103B500023242B960FB6F894DEBF0FBECDBFDF91A6
+:103B6000CF910895CF93C82F882309F4C1C082381C
+:103B700059F40E942E1C81FDBBC089E30E94FE26E1
+:103B80000E94ED2789E30CC0833879F40E942E1C33
+:103B900080FDAEC083E50E94FE260E94ED2783E5EE
+:103BA0000E944F27CF910C94ED27843859F40E943E
+:103BB0002E1C82FD9DC087E40E94FE260E94ED27F8
+:103BC00087E4EECF8CEF8C0F813A48F48C2F0E9463
+:103BD000F42D81118DC08C2F0E94FE26E3CF80E250
+:103BE0008C0F883048F4C77081E001C0880FCA95F7
+:103BF000EAF70E94A427D6CF8BE58C0F833078F4A8
+:103C0000C53A29F0C63A31F482E890E005C081E86F
+:103C100090E002C083E890E0CF910C947F1C88E58F
+:103C20008C0F833108F064C0C83A39F1C93A41F1C8
+:103C3000CA3A49F1CB3A51F1CC3A59F1CD3A61F156
+:103C4000C03B69F1CE3A71F1CF3A79F1C13B81F1D4
+:103C5000C23B89F1C33B91F1C43B99F1C53BA1F152
+:103C6000C63BA9F1C73BB1F1C83BB9F1C93BC1F1B2
+:103C7000CA3BC9F58AE292E038C082EE90E035C0D6
+:103C800089EE90E032C08AEE90E02FC085EB90E0A4
+:103C90002CC086EB90E029C087EB90E026C08CEC2E
+:103CA00090E023C08DEC90E020C083E891E01DC03F
+:103CB0008AE891E01AC082E991E017C084E991E0B6
+:103CC00014C081E292E011C083E292E00EC084E26F
+:103CD00092E00BC085E292E008C086E292E005C067
+:103CE00087E292E002C080E090E0CF910C94951CB6
+:103CF000CF910895882309F44BC0823859F40E946B
+:103D00002E1C81FF45C089E30E94FE260E94ED27FC
+:103D100089E30CC0833871F40E942E1C80FF38C0E8
+:103D200083E50E94FE260E94ED2783E50E944F272F
+:103D30000C94ED27843859F40E942E1C82FF28C071
+:103D400087E40E94FE260E94ED2787E4EFCF9CEFD8
+:103D5000980F913A58F390E2980F983050F487708A
+:103D600091E001C0990F8A95EAF7892F0E94AA274E
+:103D7000DFCF9BE5980F933020F480E090E00C9427
+:103D80007F1C885A833120F480E090E00C94951CCD
+:103D90000895882321F00E94A4270C94ED2708950C
+:103DA000882321F00E94AA270C94ED2708958F9272
+:103DB0009F92AF92BF92CF92DF92EF92FF920F93BA
+:103DC0001F93CF93DF931F92CDB7DEB74C01A62E82
+:103DD000472FFC01E580E2948FE0E822F280FF208B
+:103DE00021F079830E94C127498149830E94F726E7
+:103DF0004981882381F0FF2071F080E28A0D8830AC
+:103E000050F082E00E94E0260E94F726BB24B39483
+:103E1000B826498101C0B12CE42FE295EF70F0E0A3
+:103E2000E759FF4F0C94522F842F807F142F1F705F
+:103E3000882311F01295107FFF2089F0112309F4D7
+:103E40008BC180E28A0D883020F4812F0E94A42744
+:103E500003C0812F0E94B4270E94ED277DC18A2DC7
+:103E60000E947A1E112309F4B4C180E28A0D8830C1
+:103E700020F4812F0E94AA2703C0812F0E94BA2715
+:103E80000E94ED27A6C1242F207F842F8F7020321F
+:103E900011F08295807FAA2021F0F1E0AF16B1F0F9
+:103EA00021C0FF2041F0EE2039F191E0E91224C059
+:103EB0000E94D4278EC1EE2021F0E1E0EE1609F435
+:103EC00088C189830E94D727898100C1FF2029F0FA
+:103ED000F5E0FE1508F47DC10FC094E09E1508F4CE
+:103EE00078C1F4C0FF2059F0EE2031F0F401958143
+:103EF00090FF32C19F7095830E94C91E6AC1EE2057
+:103F000009F4E4C02FC1242F26952695237030E0B4
+:103F10002115310521F02130310561F05AC1FF2012
+:103F200021F08A2D942F937002C080E090E00E94CF
+:103F30007F1C4FC1FF2021F08A2D942F937002C067
+:103F400080E090E00E94951C44C1842F837009F0AA
+:103F50004EC0F1103EC12A2D229526952770220FC2
+:103F6000220F8A2D8F70C82ED12CE12CF12C022E1D
+:103F700004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE7E
+:103F800010C06FE070E080E090E004C0660F771F23
+:103F9000881F991F2A95D2F7609570958095909506
+:103FA00003C060E070E0CB01242F26952695237096
+:103FB00030E02230310569F02330310589F06C2979
+:103FC0007D298E299F292130310571F00E947525A8
+:103FD00000C16C297D298E299F290E948F25F9C057
+:103FE0000E947525C701B6010E945B25F2C0FF2023
+:103FF00019F0842F817001C08695882309F4E9C0E7
+:104000002A2D229526952770220F220F8A2D8F7038
+:10401000C82ED12CE12CF12C022E04C0CC0CDD1CBE
+:10402000EE1CFF1C0A94D2F7A4FE10C06FE070E0F3
+:1040300080E090E004C0660F771F881F991F2A95C3
+:10404000D2F7609570958095909503C060E070E020
+:10405000CB01242F26952695237030E022303105A0
+:1040600069F02330310589F06C297D298E299F293B
+:104070002130310571F00E944926ABC06C297D29A1
+:104080008E299F290E946326A4C00E944926C70149
+:10409000B6010E942F269DC00A2D10E0F801E05EB7
+:1040A000F109E531F10508F053C0E758FF4F0C94D2
+:1040B000522F1A2D1F70842F8F71FF2021F00E9424
+:1040C000C825812F19CF0E94E925812F0E94D01E7B
+:1040D00080C0FF2049F0F4E0FE1508F47AC0842F78
+:1040E0008F710E940E2675C085E08E1508F471C090
+:1040F000F6CFFF2039F0842F8F710E94C82569C048
+:10410000FF20C9F3842F8F710E94E92562C0FF2030
+:1041100029F0842F8F710E94B3255BC00E94A925CE
+:1041200058C0FF2051F0142F1F71812F0E94C82505
+:1041300063E0812F0E94D7264CC081E00E94E026D8
+:1041400091E09E1508F045C082E00E94E02641C043
+:10415000FF2031F0EE2079F28A2D0E94B21D39C085
+:10416000EE2081F28A2D0E947A1E33C04F706A2D94
+:10417000C4010E9488090E94D0242BC0F11029C0DC
+:10418000942F9F70492F50E042305105B9F04CF404
+:104190004115510581F041305105D9F40E94752E29
+:1041A00018C04330510569F04430510591F48A2D0F
+:1041B0000E94022F0EC00E94512E0BC00E94A42EFE
+:1041C00008C00E94CA2E05C04F706A2DC4010E940B
+:1041D0008108BB20F1F00E94D32680FD1AC0F401B3
+:1041E00012820E94CD260E94C825C4010E94172178
+:1041F0000E94CD260F90DF91CF911F910F91FF90DC
+:10420000EF90DF90CF90BF90AF909F908F900C94E5
+:10421000E9250F90DF91CF911F910F91FF90EF90C3
+:10422000DF90CF90BF90AF909F908F9008950F93A5
+:104230001F93CF93DF93EC01288139818B819C817F
+:10424000892B31F03F3F11F080E003C02F3FE1F7B1
+:1042500081E0811113C0CE010E94F008882371F023
+:10426000688179818A810E94C9268C010E947D26FD
+:104270000E945025B801CE010E94D71EDF91CF9138
+:104280001F910F9108950E94C1270E94D1270E947B
+:1042900093270E94ED2780E090E00E947F1C80E041
+:1042A00090E00C94951C0E94B1270C9443210E942D
+:1042B000BE26292F22952F7030E02C3031054CF48A
+:1042C0002A3031056CF42250310922303105B0F426
+:1042D00007C02C30310571F02F30310559F00EC078
+:1042E000803F31F018F4803E48F402C0843F31F43E
+:1042F00081E0089593FB882780F9089580E0089570
+:10430000CF93DF9300D000D01F92CDB7DEB70F90D0
+:104310000F900F900F900F90DF91CF910895CF9352
+:10432000DF9300D000D000D0CDB7DEB726960FB611
+:10433000F894DEBF0FBECDBFDF91CF9108951F93DC
+:10434000CF93DF93C091940116E080919501C81737
+:1043500099F0D0E01C9FF0011D9FF00D1124EA564A
+:10436000FE4F4081518162817381848195810E94D9
+:104370008F212196C770E9CFDF91CF911F910895CA
+:104380004091C6015091C7016091C8017091C90167
+:104390008091CA019091CB010C948F21CF93809191
+:1043A000CB0182958F7009F05FC08091C80188238E
+:1043B00009F45AC020919401A09195016091C60121
+:1043C0007091C7018091C9019091CA0131E06F3F9E
+:1043D00009F030E0B32FC6E02A1709F445C0009772
+:1043E00021F07F3F21F44B2F03C041E001C040E0AA
+:1043F00030E040FD35C0C29FF001C39FF00D112495
+:10440000EA56FE4F418174132BC04081641328C0CB
+:104410004281411125C0438154814817590710F446
+:1044200041505109481B590B483C5105C8F4809133
+:10443000CB018F7080618093CB0186E0829FF00179
+:10444000839FF00D1124E556FE4F80818F708061AF
+:10445000808386EC91E00E941721CF910C949F21DC
+:104460002F5F3F4F2770B8CFCF910895CF92DF9243
+:10447000EF92FF920F931F93CF93DF93CDB7DEB7E9
+:1044800062970FB6F894DEBF0FBECDBF8C0185E0FA
+:10449000F801DE011D9601900D928A95E1F7D80191
+:1044A0004C9111965C91119712966C9112971396FC
+:1044B000ED90FC9014977091C601E091C701209196
+:1044C000C9013091CA012115310531F0EF3F31F4B6
+:1044D00081E07F3F19F403C081E001C080E0B82F84
+:1044E000B170CB2E80FD6CC1D090C801DD2009F4E5
+:1044F000F5C0F091CB01E216F30638F0C701821B3C
+:10450000930B883C910548F09BC0209530952E0D6B
+:104510003F1D283C310508F093C08F2F807F09F0A4
+:1045200052C0E51314C0741312C0D62E61110FC00F
+:10453000FF70F061F093CB010E94C02186EC91E006
+:104540000E9417218091CB01F80185836CC1EF286F
+:1045500031F05F3F31F481E04F3F19F403C081E057
+:1045600001C080E080FD03C081E0862701C080E0BB
+:10457000F82FF170FF2E80FF1CC0809194012091D4
+:10458000950136E0821709F428C190E0389FF001C8
+:10459000399FF00D1124EA56FE4F7181571306C062
+:1045A0007081471303C07281671303C0019687703F
+:1045B000E9CFD62E662309F436C18091CB01816004
+:1045C0008093CB0153C0E51308C0741306C061117A
+:1045D00004C0D8011596FC93AEC04D875E878D85CB
+:1045E0009E856A8B0E9457216A89882329F1D62EDD
+:1045F000662311F12091CB01822F82958F7090E07C
+:1046000002970CF460C08091C6019091C701988711
+:104610008F831986FB86EA862C87CE01079651C0C8
+:10462000E51731F14D875E878D859E856A8B0E94E7
+:1046300057216A8981112EC0C8010E941721A4C088
+:104640008F2F807F69F77E2DF98AE88A89890E94F9
+:10465000802186EC91E00E941721E6ECF1E086E0F3
+:10466000DF011D928A95E9F70E94C021D12CDBC0A1
+:104670007413D8CF6111D6CFD8011596FC93C80119
+:104680000E941721E6ECF1E086E0DF011D928A9599
+:10469000E9F7C9C0D62E662379F22091CB01822F8B
+:1046A00082958F7090E0029774F08091C60190918E
+:1046B000C7019A8389831B82FD82EC822E83CE01FF
+:1046C00001960E94172186E0F801A6ECB1E0019066
+:1046D0000D928A95E1F70E94CE216FC0E216F30693
+:1046E00028F0C701821B930B9C0104C020953095D4
+:1046F0002E0D3F1D283C310508F052C0D62E6623F2
+:1047000009F49ACFE5132CC074132AC08091CB0111
+:1047100080FD1DC0982F92959F70C9F0D801159605
+:104720008C9315979F3039F09F5F9295907F8F7093
+:10473000892B15968C93C8010E94172186E0F801F9
+:10474000A6ECB1E001900D928A95E1F736C086E0C3
+:10475000F801A6ECB1E001900D928A95E1F763C0F3
+:104760004D875E878D859E850E945721882379F02D
+:1047700086E0F801A6ECB1E001900D928A95E1F790
+:104780000E94CE210E94C021DD24D3944CC0809190
+:10479000CB0181608093CB01C8010E94172143C0E7
+:1047A0007E2DF98AE88A89890E948021E6ECF1E071
+:1047B00086E0DF011D928A95E9F70E94C02133C08F
+:1047C000662309F439CF4D875E878D859E850E94CB
+:1047D0005721882309F430CFCBCF4D875E878D8555
+:1047E0009E850E94BE26292F22952F7030E0223010
+:1047F00031052CF49F7041F0811106C00CC02430AB
+:1048000031052CF49F7049F4805E883020F0C80197
+:104810000E941721CF2CDC2C06C0D80115969C9144
+:10482000907F91F7F8CF8D2D62960FB6F894DEBF8A
+:104830000FBECDBFDF91CF911F910F91FF90EF90F1
+:10484000DF90CF9008951F93CF93DF93CDB7DEB75E
+:104850002C970FB6F894DEBF0FBECDBF4F8358879D
+:1048600069877A878B879C87CE0107960E943622BC
+:104870008823C1F02F8138858A859B85892B31F06B
+:104880003F3F11F080E003C02F3FE1F781E081114D
+:1048900047C04F81588569857A858B859C850E94A4
+:1048A0008F213EC086E0FE013796DE011196019011
+:1048B0000D928A95E1F7FF81E8854A855B85411570
+:1048C000510531F0EF3F31F481E0FF3F19F403C0AF
+:1048D00081E001C080E080FD23C02091950130E09F
+:1048E000C9010196877099276091940170E086173D
+:1048F0009707F1F1F983EA835D834C8396E0929FF9
+:10490000D001939FB00D1124AA56BE4FFE013196DF
+:1049100001900D929A95E1F7809395010E949F2155
+:1049200016E08091940190919501891779F1189F73
+:10493000C00111248A569E4F0E943622882331F1ED
+:10494000E09194011E9FF0011124EA56FE4F408130
+:10495000518162817381848195810E948F21809130
+:10496000940190E001968770992780939401D9CFA4
+:104970000E9453211092950110929401E6ECF1E00F
+:1049800086E0DF011D928A95E9F7CACF2C960FB613
+:10499000F894DEBF0FBECDBFDF91CF911F91089578
+:1049A000EF92FF920F931F93CF93DF93FC01009739
+:1049B00009F46FC0F12CEE24E394EF012196849169
+:1049C000843740F4843008F055C0813081F0823063
+:1049D00021F15FC0853709F447C0C0F19CE7980F0B
+:1049E000903708F056C08F770E947A1E45C08F011D
+:1049F0000E5F1F4FFE01849190E2980F983050F4A3
+:104A00008770FE2D01C0FF0F8A95EAF78F2F0E9455
+:104A1000C42715C00E94B21D14C08F010E5F1F4F26
+:104A2000FE01849190E2980F983068F48770FE2D13
+:104A300001C0FF0F8A95EAF78F2F0E94CA270E94B4
+:104A4000ED27E80119C00E947A1EFBCFCF01029624
+:104A5000FE01C491CC2361F0EFE9FFE03197F1F75B
+:104A600000C00000C150F6CFCF010296FE01F490C5
+:104A7000EC0102C00E94B21D8F2D882341F0EFE9A6
+:104A8000FFE03197F1F700C000008150F6CFFE0142
+:104A900094CFDF91CF911F910F91FF90EF900895E8
+:104AA00008956093D0017093D1018093D2019093C7
+:104AB000D3010C9443210F931F930091D0011091C7
+:104AC000D1012091D2013091D301062B172B282B35
+:104AD000392B0093D0011093D1012093D201309350
+:104AE000D3011F910F910C9443210F931F930091B9
+:104AF000D0011091D1012091D2013091D301062330
+:104B00001723282339230093D0011093D101209338
+:104B1000D2013093D3011F910F910C9443210F9335
+:104B20001F930091D0011091D1012091D2013091B9
+:104B3000D30106271727282739270093D001109380
+:104B4000D1012093D2013093D3011F910F910C9486
+:104B500043211092CC011092CD011092CE011092FF
+:104B6000CF010C94432141E050E060E070E004C0CC
+:104B7000440F551F661F771F8A95D2F74093CC01CB
+:104B80005093CD016093CE017093CF010C944321DB
+:104B900041E050E060E070E004C0440F551F661F24
+:104BA000771F8A95D2F78091CC019091CD01A09189
+:104BB000CE01B091CF01842B952BA62BB72B8093E0
+:104BC000CC019093CD01A093CE01B093CF010C9472
+:104BD000432141E050E060E070E004C0440F551F05
+:104BE000661F771F8A95D2F740955095609570950E
+:104BF0008091CC019091CD01A091CE01B091CF01D7
+:104C000084239523A623B7238093CC019093CD01D1
+:104C1000A093CE01B093CF010C94432141E050E02A
+:104C200060E070E004C0440F551F661F771F8A952F
+:104C3000D2F78091CC019091CD01A091CE01B0919D
+:104C4000CF0184279527A627B7278093CC0190937F
+:104C5000CD01A093CE01B093CF010C9443210F93CB
+:104C60001F930091CC011091CD012091CE01309184
+:104C7000CF01062B172B282B392B0093CC01109337
+:104C8000CD012093CE013093CF011F910F910C9451
+:104C900043210F931F930091CC011091CD012091DE
+:104CA000CE013091CF010623172328233923009307
+:104CB000CC011093CD012093CE013093CF011F91F1
+:104CC0000F910C9443210F931F930091CC011091ED
+:104CD000CD012091CE013091CF010627172728273B
+:104CE00039270093CC011093CD012093CE0130934E
+:104CF000CF011F910F910C9443210895CF92DF9221
+:104D0000EF92FF920F931F93CF93DF93EC01C0902C
+:104D1000D001D090D101E090D201F090D3018091E8
+:104D2000CC019091CD01A091CE01B091CF01C82AC4
+:104D3000D92AEA2AFB2A0FE110E0B701A601002ECA
+:104D400004C076956795579547950A94D2F740FD2C
+:104D500005C00150110988F780E007C0BE01802F0F
+:104D60000E940C0C0197A9F3802FDF91CF911F9126
+:104D70000F91FF90EF90DF90CF900895CF93DF9346
+:104D8000EC010E947E26BE010E940C0CDF91CF91A7
+:104D90000895CB010E94BE2608958091D401859587
+:104DA0008595859508958091D4018770089598E040
+:104DB000899F90011124622B6093D4010C94C82523
+:104DC0004091D401809584238093D401982F9770CB
+:104DD00069F450E0282F332727FD309542175307F9
+:104DE00029F08595859585950C94E92508959091F0
+:104DF000D401977081E009F480E0089590910C014E
+:104E0000992361F190910D01992341F1982F969585
+:104E1000969596959F3088F4E0910E01F0910F01E0
+:104E2000E90FF11D877021E030E001C0220F8A9563
+:104E3000EAF78181822B818308959091E90190FFA7
+:104E40002DC01F928F9385EA98E09F938F930E94C5
+:104E500050080F900F900F900F90089540910E0101
+:104E600050910F0120E030E09FEFFA01E20FF31FB5
+:104E70006281681799F09F3F19F4611101C0922F68
+:104E80002F5F3F4F2E30310581F79F3F39F0FA01F8
+:104E9000E90FF11D97FDFA95828308950895909189
+:104EA0000C01992369F190910D01992349F1982FF3
+:104EB0009695969596959F3090F4E0910E01F0911D
+:104EC0000F01E90FF11D877021E030E001C0220FD2
+:104ED0008A95EAF72095818128232183089590916E
+:104EE000E90190FF1FC01F928F9387E898E09F937E
+:104EF0008F930E9450080F900F900F900F9008957D
+:104F000040910E0150910F0120E030E0FA01E20FD4
+:104F1000F31F9281981301C012822F5F3F4F2E30F2
+:104F20003105A1F7089581E090E0E0910E01F09144
+:104F30000F01E80FF91F1082019680319105A9F742
+:104F400008958091E80108959091E801982B90933D
+:104F5000E801089580959091E80198239093E801E5
+:104F600008951092E80108959091E701982B90938D
+:104F7000E701089580959091E70198239093E701C8
+:104F800008951092E70108959091E601982B90936F
+:104F9000E601089580959091E60198239093E601AB
+:104FA00008951092E60108958093D5010895109216
+:104FB000D501089540910E0150910F0120E030E09D
+:104FC00080E0FA01E20FF31F918191118F5F2F5F53
+:104FD0003F4F2F303105A9F70895E0910E01F09170
+:104FE0000F018091E8018083E0910E01F0910F01A3
+:104FF00080819091E701892B8083E0910E01F091EF
+:105000000F0180819091E601892B80839091D501D9
+:10501000992361F0E0910E01F0910F018081892BBD
+:1050200080830E94DA2781111092D50180910E01B0
+:1050300090910F010C943A1C9093390180933801A0
+:10504000089540E0009739F09C01215031098223F6
+:1050500093234F5FF7CF842F08958295982F9C7CE0
+:1050600096959695837344E0849F90011124922B2A
+:10507000892F8A7A86959575990F892B08951F93A4
+:10508000CF93DF931F92CDB7DEB799830E942D286F
+:10509000182F9981892F0E942D28212F30E0322F3F
+:1050A0002227A901482BCA010F90DF91CF911F91B0
+:1050B000089580911402843039F11092EA0120E4BD
+:1050C00088E190E00FB6F894A895809360000FBE39
+:1050D0002093600080E00E94600880E00E94A60C9F
+:1050E00083B7817F846083BF83B7816083BF7894F7
+:1050F000889583B78E7F83BF88E10FB6F89480933D
+:105100006000109260000FBE08950895089580E039
+:105110000E9460080E9485280E94FF0C0E94862839
+:105120000E94C10D91E0811101C090E0892F089586
+:105130000E94532180E00E9460080E94402E0E943D
+:105140002E1C0C94A60C1F920F920FB60F921124D6
+:105150008F939F93AF93BF938091EA01811113C006
+:105160008091EB019091EC01A091ED01B091EE01E5
+:105170004196A11DB11D8093EB019093EC01A0938A
+:10518000ED01B093EE01BF91AF919F918F910F9080
+:105190000FBE0F901F90189582E084BD93E095BDDF
+:1051A0009AEF97BD80936E0008952FB7F894809181
+:1051B000EB019091EC01A091ED01B091EE012FBFB8
+:1051C0000895CF92DF92EF92FF920F931F932FB724
+:1051D000F8944091EB015091EC016091ED017091D8
+:1051E000EE012FBF6A017B01EE24FF248C0120E039
+:1051F00030E0C016D106E206F30610F44150510922
+:10520000481B590BCA011F910F91FF90EF90DF903F
+:10521000CF9008951F920F920FB60F9211248F9383
+:105220009F93AF93BF938091EB019091EC01A0917C
+:10523000ED01B091EE010196A11DB11D8093EB012E
+:105240009093EC01A093ED01B093EE01BF91AF916B
+:105250009F918F910F900FBE0F901F9018950E94F5
+:105260003519F8942FEF87EA91E62150804090405D
+:10527000E1F700C0000087E090EBDC0180931F02A3
+:1052800090932002A0932102B09322022CE088E1A7
+:1052900090E00FB6F894A895809360000FBE20931D
+:1052A0006000FFCFCF92DF92EF92FF920F931F9398
+:1052B000CF93DF93C82E84E0D82E01E010E08D2D2F
+:1052C0000E947E0D7C01CDE0D0E098010C2E02C042
+:1052D000220F331F0A94E2F72E213F21232B49F09E
+:1052E0006C2F7D2D80E00E948B09C81202C081E0E6
+:1052F00007C0219750F7DA948FEFD812E0CF80E003
+:10530000DF91CF911F910F91FF90EF90DF90CF90A1
+:105310000895CF93C82F8CE20E945229882321F050
+:105320008C2FCF910C94522980E0CF910895CF9388
+:105330000E94E92A811102C00E94CA2A8AEC98E0E0
+:105340000E94B707C5E6C15049F00E94FF0C8FE3E9
+:105350009CE90197F1F700C00000F5CF83EC98E0DD
+:105360000E94B70789E20E948929811111C18AE24E
+:105370000E94892981110E94CA2A85E00E948929F8
+:1053800081110E942F290E94F42A8093E90187E06D
+:105390000E948929882399F18BE10E948929882319
+:1053A00051F09091E90191FB882780F921E0822753
+:1053B00080FB91F922C08EE00E948929882351F058
+:1053C0009091E90192FB882780F921E0822780FBF8
+:1053D00092F913C080E10E9489299091E901882304
+:1053E00041F093FB882780F921E0822780FB93F925
+:1053F00004C0892F809580FB90F99093E9018091FA
+:10540000E9010E94F82A0E94062B80931D0280EE7B
+:105410000E948929882341F080911D02982F909540
+:1054200090FB80F980931D0289E30E9489298823DB
+:1054300059F090911D0291FB882780F921E0822785
+:1054400080FB91F990931D0282EE0E9489298823A6
+:1054500059F090911D0292FB882780F921E0822764
+:1054600080FB92F990931D0286EE0E948929882381
+:1054700059F090911D0293FB882780F921E0822743
+:1054800080FB93F990931D0283EE0E948929882363
+:1054900059F090911D0294FB882780F921E0822722
+:1054A00080FB94F990931D0285E30E94892988234B
+:1054B00059F090911D0295FB882780F921E0822701
+:1054C00080FB95F990931D0281E30E94892988232E
+:1054D00059F090911D0296FB882780F921E08227E0
+:1054E00080FB96F990931D0281E10E94892988230F
+:1054F00059F090911D0297FB882780F921E08227BF
+:1055000080FB97F990931D0280911D020E940A2B47
+:1055100080911D0287FB882780F980930D0187E227
+:105520000E948929C82F8EE10E9489298111C260B9
+:105530008FE10E9489298111C46080E20E9489293B
+:105540008111C86081E20E9489298111C06182E2D3
+:105550000E9489298111C06283E20E9489298111F8
+:10556000C06484E20E948929882311F0C06802C0C7
+:10557000CC2329F08C2F0E94012B6C2F03C00E949A
+:10558000FD2A682F70E080E090E0CF910C945125C7
+:10559000CF9108956DEE7EEF80E090E00E948A2F1B
+:1055A00060E082E090E00E946C2F60E083E090E099
+:1055B0000E946C2F60E084E090E00E946C2F60E01D
+:1055C00085E090E00E946C2F60E086E090E00C9413
+:1055D0006C2F80E090E00E94662F21E08D3E9E4F70
+:1055E00009F020E0822F089582E090E00C94582F7B
+:1055F000682F82E090E00C946C2F83E090E00C9494
+:10560000582F682F83E090E00C946C2F84E090E09A
+:105610000C94582F682F84E090E00C946C2F86E057
+:1056200090E00C94582F682F86E090E00C946C2F3B
+:10563000CF93C82F1F928F9325EE38E03F932F937F
+:105640000E94500861E070E080E090E004C0660FC6
+:10565000771F881F991FCA95D2F70E9451250F9076
+:105660000F900F900F90CF910C945321CF938B31CB
+:1056700009F40FC208F049C08E3009F41DC200F5CC
+:10568000873009F4E7C1A8F4863009F0A1C28091FF
+:10569000E901817F8E7F8093E90185E79AE00E948E
+:1056A000B70781E69EE00E94B70781E08093EF0193
+:1056B000CFC1883009F45BC08B3009F4C5C188C202
+:1056C000813109F46DC220F4803109F408C280C22E
+:1056D000863109F41EC2893109F07AC286E69AE061
+:1056E0000E94B70786E29AE00E94B70784EF99E02C
+:1056F0000E94B7078DEC99E00E94B70781E999E015
+:105700000E94B70783E699E0A1C1853309F45CC222
+:1057100068F4873209F458C228F48E3108F458C26C
+:105720008D5153C2893209F44FC252C2833438F4C6
+:105730008A3308F047C2883309F486C149C28334EA
+:1057400009F442C2883409F043C20E94532185E41F
+:105750009EE00E94B7079FEF23ED80E39150204029
+:105760008040E1F700C000000E942F2971C185E64A
+:105770009EE00E94B70782EB9DE00E94B7070E945F
+:10578000FD2A1F928F938FEA9DE09F938F930E9433
+:1057900050088DEA9DE00E94B7070E94F42AC82FA6
+:1057A0008AE99DE00E94B7071F92CF9325E93DE06B
+:1057B0003F932F930E94500883E99DE00E94B70712
+:1057C00089E89DE00E94B7078C2F81701F928F930C
+:1057D00026E83DE03F932F930E94500884E89DE027
+:1057E0000E94B7078AE79DE00E94B707C1FB8827A0
+:1057F00080F91F928F9327E73DE03F932F930E94FC
+:10580000500885E79DE00E94B70789E69DE00E9469
+:10581000B707C2FB882780F91F928F9326E63DE0E9
+:105820003F932F930E94500884E69DE00E94B707A3
+:105830008BE59DE00E94B707C3FBCC27C0F91F9200
+:10584000CF9388E59DE09F938F930E94500886E553
+:105850009DE00E94B7070E94062BC82F82E49DE0BE
+:105860000E94B7071F92CF932DE33DE03F932F9304
+:105870000E9450088BE39DE00E94B70782E29DE002
+:105880000E94B7078C2F81701F928F932FE13DE00C
+:105890003F932F930E9450088DB79EB780960FB606
+:1058A000F8949EBF0FBE8DBF8DE19DE00E94B707AB
+:1058B00086E09DE00E94B707C1FB882780F91F9210
+:1058C0008F9323E03DE03F932F930E94500881E0A7
+:1058D0009DE00E94B7078FEE9CE00E94B707C2FBD5
+:1058E000882780F91F928F932CEE3CE03F932F93F3
+:1058F0000E9450088AEE9CE00E94B70788ED9CE069
+:105900000E94B707C3FB882780F91F928F9325ED6C
+:105910003CE03F932F930E94500883ED9CE00E944F
+:10592000B70789EC9CE00E94B707C4FB882780F981
+:105930001F928F9326EC3CE03F932F930E945008D8
+:1059400084EC9CE00E94B70782EB9CE00E94B707C2
+:10595000C5FB882780F91F928F932FEA3CE03F9385
+:105960002F930E9450088DEA9CE00E94B70781E9BE
+:105970009CE00E94B707C6FB882780F91F928F938F
+:105980002EE83CE03F932F930E9450088CE89CE067
+:105990000E94B70784E89CE00E94B707C7FBCC27AA
+:1059A000C0F91F92CF9381E89CE09F938F930E9450
+:1059B00050088FE79CE00E94B7070E940F2BC82F6A
+:1059C00088E69CE00E94B7071F92CF9323E63CE055
+:1059D0003F932F930E9450088DB79EB780960FB6C5
+:1059E000F8949EBF0FBE8DBF81E69CE00E94B70772
+:1059F00087E59CE00E94B7078C2F81701F928F93E0
+:105A000024E53CE03F932F930E94500882E59CE000
+:105A10000E94B70789E49CE00E94B707C6951F92D1
+:105A2000CF9386E49CE09F938F930E94500884E478
+:105A30009CE00E94B7078DB79EB708960FB6F89402
+:105A40009EBF0FBE8DBF04C080E99AE00E94B707D9
+:105A5000C1E0C3C08091E901C82FC095C170C0FBEF
+:105A600080F98093E901CC2349F089E39EE00E940C
+:105A7000B7078091E9018660886045C08CE29EE0AE
+:105A80000E94B7078091E901897F877F8093E901B0
+:105A9000DFCF8091E90181FBCC27C0F991E0C927D4
+:105AA000C0FB81F98093E901CC2319F08FE19EE0DE
+:105AB00025C081E19EE0CACF8091E90182FBCC271D
+:105AC000C0F991E0C927C0FB82F98093E901CC239A
+:105AD00019F082E09EE012C082EF9DE0B7CF809186
+:105AE000E90183FBCC27C0F991E0C927C0FB83F90A
+:105AF0008093E901CC2351F086EE9DE00E94B70728
+:105B00008091E90181608093E90167C089ED9DE0A2
+:105B10009DCF85E599E00E94B7070E942E1C1F9239
+:105B20008F938BE399E09F938F930E94500880910D
+:105B30000C011F928F9384E299E09F938F930E94B0
+:105B40005008809182011F928F9381E199E09F9389
+:105B50008F930E94500880910D011F928F938EEFBA
+:105B600098E09F938F930E9450088091EB01909151
+:105B7000EC01A091ED01B091EE01BF93AF939F9323
+:105B80008F938AEE98E09F938F930E9450088DB771
+:105B90009EB746960FB6F8949EBF0FBE8DBF58CFE6
+:105BA0000E945321C0910D0181E0C827C0930D01CF
+:105BB000CC2329F08FEC9DE00E94B7070EC084EC47
+:105BC0009DE044CF895301C080E00E94182B40CF54
+:105BD00082EC9DE00E94B707C0E08C2FCF91089522
+:105BE00080E0089580E00895CF93C82F8091EF0161
+:105BF000882319F0813049F03BC0E0910E01F0910B
+:105C00000F0180818232B1F507C0E0910E01F09161
+:105C10000F018081823249F48C2F0E94F02D811176
+:105C200024C08C2F0E94362B21C08C2F0E94F22D75
+:105C300081111BC0C43189F018F4CB3029F010C099
+:105C4000C93259F0C83361F485E79AE00E94B7077A
+:105C500081EE98E00E94B70708C01092EF010CC0D7
+:105C60008FED98E00E94B70707C081E0817006C001
+:105C70001092EF0180E002C080E0F8CFCF9108954C
+:105C80000E94E92A811102C00E94CA2A0E940F2B99
+:105C900080931E0280FF02C0869501C080E00C94B4
+:105CA000600880911E02982F969539F48170826069
+:105CB000816080931E020E94132B8091E90180FF76
+:105CC0000FC080911E0286951F928F9382EB9EE0FB
+:105CD0009F938F930E9450080F900F900F900F90FA
+:105CE00080911E0286950C94600880911E02982F68
+:105CF000969591F09158990F8170892B80931E028F
+:105D00008E7F91E009F490E080911E0290FB80F973
+:105D100080931E020E94132B8091E90180FF0FC027
+:105D200080911E0286951F928F938AE99EE09F9331
+:105D30008F930E9450080F900F900F900F908091BA
+:105D40001E0286950C94600880911E02982F9095F3
+:105D500090FB80F980931E020E94132B8091E90131
+:105D600080FF0FC080911E0281701F928F9384E884
+:105D70009EE09F938F930E9450080F900F900F907A
+:105D80000F9080911E0280FF02C0869501C080E0C6
+:105D90000C94600830911E02232F26952F5F2F77D9
+:105DA000822F90E0317002972CF4220F232B209346
+:105DB0001E0202C030931E0280911E028E7F91E06F
+:105DC00009F490E080911E0290FB80F980931E02FE
+:105DD0000E94132B8091E90180FF0FC080911E0269
+:105DE00086951F928F9380E79EE09F938F930E94EA
+:105DF00050080F900F900F900F9080911E02869583
+:105E00000C94600820911E02922F96959827990F66
+:105E1000822F8170892B80931E028E7F91E009F47E
+:105E200090E080911E0290FB80F980931E020E94F8
+:105E3000132B80911E0286950C946008991B79E0C3
+:105E400004C0991F961708F0961B881F7A95C9F70A
+:105E500080950895AA1BBB1B51E107C0AA1FBB1F59
+:105E6000A617B70710F0A61BB70B881F991F5A95E6
+:105E7000A9F780959095BC01CD01089597FB072E59
+:105E800016F4009407D077FD09D00E942A2F07FC52
+:105E900005D03EF4909581959F4F0895709561953A
+:105EA0007F4F0895EE0FFF1F0590F491E02D0994A8
+:105EB000F999FECF92BD81BDF89A992780B50895D2
+:105EC000A6E1B0E044E050E00C94922FA8E1B0E0ED
+:105ED00042E050E00C94922F262FF999FECF92BD0C
+:105EE00081BDF89A019700B4021639F01FBA20BD9F
+:105EF0000FB6F894FA9AF99A0FBE08950396272FD1
+:105F00000E946D2F0E946C2F252F0E946D2F242F31
+:105F10000C946D2F0196272F0E946D2F0C946C2FDF
+:105F2000DC01CB01FC01F999FECF06C0F2BDE1BD59
+:105F3000F89A319600B40D9241505040B8F7089548
+:045F4000F894FFCF03
+:105F4400FFFFA3147215A6143F150B150101D6010A
+:105F54000F1F6C7666734913035343796933091928
+:105F6400293959403620391408DE07BE0785071140
+:085F7400072A07430763070039
+:00000001FF
diff --git a/keyboard/satan/keymaps/default/keymap.c b/keyboard/satan/keymaps/default/keymap.c
new file mode 100644
index 000000000..b19404afc
--- /dev/null
+++ b/keyboard/satan/keymaps/default/keymap.c
@@ -0,0 +1,162 @@
+#include "satan.h"
+
+#ifdef RGBLIGHT_ENABLE
+#include "rgblight.h"
+#endif
+
+// Used for SHIFT_ESC
+#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-----------------------------------------------------------.
+ * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
+ * |-----------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
+ * |-----------------------------------------------------------|
+ * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
+ * |-----------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
+ * |-----------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
+ * `-----------------------------------------------------------'
+ */
+[_BL] = KEYMAP(
+ F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL),
+
+ /* Keymap _FL: Function Layer
+ * ,-----------------------------------------------------------.
+ * | | | | | | | | | | | | | | RESET|
+ * |-----------------------------------------------------------|
+ * | | | | | | | | | | | |BL-|BL+|BL |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-----------------------------------------------------------|
+ * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ */
+[_FL] = KEYMAP(
+ #ifdef RGBLIGHT_ENABLE
+ KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ #else
+ KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ #endif
+};
+
+enum function_id {
+ SHIFT_ESC,
+ #ifdef RGBLIGHT_ENABLE
+ RGBLED_TOGGLE,
+ RGBLED_STEP_MODE,
+ RGBLED_INCREASE_HUE,
+ RGBLED_DECREASE_HUE,
+ RGBLED_INCREASE_SAT,
+ RGBLED_DECREASE_SAT,
+ RGBLED_INCREASE_VAL,
+ RGBLED_DECREASE_VAL
+ #endif
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [0] = ACTION_FUNCTION(SHIFT_ESC),
+ #ifdef RGBLIGHT_ENABLE
+ [1] = ACTION_FUNCTION(RGBLED_TOGGLE),
+ [2] = ACTION_FUNCTION(RGBLED_STEP_MODE),
+ [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+ [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+ [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+ [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+ [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+ [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+ #endif
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ static uint8_t shift_esc_shift_mask;
+ switch (id) {
+ case SHIFT_ESC:
+ shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+ if (record->event.pressed) {
+ if (shift_esc_shift_mask) {
+ add_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ add_key(KC_ESC);
+ send_keyboard_report();
+ }
+ } else {
+ if (shift_esc_shift_mask) {
+ del_key(KC_GRV);
+ send_keyboard_report();
+ } else {
+ del_key(KC_ESC);
+ send_keyboard_report();
+ }
+ }
+ break;
+ //led operations
+ #ifdef RGBLIGHT_ENABLE
+ case RGBLED_TOGGLE:
+ if (record->event.pressed) {
+ rgblight_toggle();
+ }
+ break;
+ case RGBLED_INCREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ break;
+ case RGBLED_DECREASE_HUE:
+ if (record->event.pressed) {
+ rgblight_decrease_hue();
+ }
+ break;
+ case RGBLED_INCREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_increase_sat();
+ }
+ break;
+ case RGBLED_DECREASE_SAT:
+ if (record->event.pressed) {
+ rgblight_decrease_sat();
+ }
+ break;
+ case RGBLED_INCREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_increase_val();
+ }
+ break;
+ case RGBLED_DECREASE_VAL:
+ if (record->event.pressed) {
+ rgblight_decrease_val();
+ }
+ break;
+ case RGBLED_STEP_MODE:
+ if (record->event.pressed) {
+ rgblight_step();
+ }
+ break;
+ #endif
+ }
+}
diff --git a/keyboard/satan/led.c b/keyboard/satan/led.c
new file mode 100644
index 000000000..5a9f2af67
--- /dev/null
+++ b/keyboard/satan/led.c
@@ -0,0 +1,36 @@
+/*
+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/>.
+*/
+
+#include <avr/io.h>
+#include "stdint.h"
+#include "led.h"
+
+
+void led_init_ports() {
+ // * Set our LED pins as output
+ DDRB |= (1<<2);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+ // Turn capslock on
+ PORTB |= (1<<2);
+ } else {
+ // Turn capslock off
+ PORTB &= ~(1<<2);
+ }
+}
diff --git a/keyboard/satan/pinout.txt b/keyboard/satan/pinout.txt
new file mode 100644
index 000000000..d1ad4ac88
--- /dev/null
+++ b/keyboard/satan/pinout.txt
@@ -0,0 +1 @@
+For WS2812B LED strip support, connect DIN from strip to PE2 on ATmega32u4 controller (see reference image controller.jpg) \ No newline at end of file
diff --git a/keyboard/satan/power.jpg b/keyboard/satan/power.jpg
new file mode 100644
index 000000000..0514eef5c
--- /dev/null
+++ b/keyboard/satan/power.jpg
Binary files differ
diff --git a/keyboard/satan/satan.c b/keyboard/satan/satan.c
new file mode 100644
index 000000000..40bd9dcde
--- /dev/null
+++ b/keyboard/satan/satan.c
@@ -0,0 +1,36 @@
+#include "satan.h"
+
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+ // leave these blank
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+ // leave these blank
+};
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ if (matrix_init_user) {
+ (*matrix_init_user)();
+ }
+ led_init_ports();
+
+ #ifdef BACKLIGHT_ENABLE
+ init_backlight_pin();
+ #endif
+};
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+ if (matrix_scan_user) {
+ (*matrix_scan_user)();
+ }
+};
diff --git a/keyboard/satan/satan.h b/keyboard/satan/satan.h
new file mode 100644
index 000000000..5a2bc46ce
--- /dev/null
+++ b/keyboard/satan/satan.h
@@ -0,0 +1,42 @@
+#ifndef SATAN_H
+#define SATAN_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#include <stddef.h>
+
+
+/* Clueboard matrix layout
+ * ,-----------------------------------------------------------.
+ * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
+ * |-----------------------------------------------------------|
+ * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
+ * |-----------------------------------------------------------|
+ * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d |
+ * |-----------------------------------------------------------|
+ * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d |
+ * |-----------------------------------------------------------|
+ * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
+ * `-----------------------------------------------------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k41, k42, k45, k4a, k4b, k4c, k4d \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d}, \
+ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d}, \
+ {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif