From 27100fc544a5276067990c97ca106516658abbda Mon Sep 17 00:00:00 2001 From: David Howland Date: Sun, 8 Apr 2018 21:05:05 -0400 Subject: [PATCH 1/2] Add new target size SQUARE, and a new target ATmega32U4_16MHz_SQUARE Requested for the GH80-3000 --- build_log.txt | 10 + firmware/src/config_matrix.h | 4 + firmware/src/config_schedule.h | 2 +- incorporate.py | 1 + .../builds/ATmega32U4_16MHz_SQUARE.hex | 1684 +++++++++++++++++ .../templates/ATmega32U4_16MHz_SQUARE.py | 29 + keymapper/easykeymap/templates/__init__.py | 1 + 7 files changed, 1730 insertions(+), 1 deletion(-) create mode 100644 keymapper/easykeymap/builds/ATmega32U4_16MHz_SQUARE.hex create mode 100644 keymapper/easykeymap/templates/ATmega32U4_16MHz_SQUARE.py diff --git a/build_log.txt b/build_log.txt index 19995108..a930dd02 100644 --- a/build_log.txt +++ b/build_log.txt @@ -1,4 +1,14 @@ +ATmega32U4_16MHz_SQUARE.hex +Compiling... +Copying HEX file +Parsing MAP file +Checking RAM usage +Used 1163 bytes of 2560 (45.4 % full) +Checking Flash usage +Used 26912 bytes of 28672 (93.9 % full) +Updating config source + ATmega32U4_16MHz_COSTAR.hex Compiling... Copying HEX file diff --git a/firmware/src/config_matrix.h b/firmware/src/config_matrix.h index 6a57583b..2b893df2 100644 --- a/firmware/src/config_matrix.h +++ b/firmware/src/config_matrix.h @@ -40,6 +40,10 @@ #define PULLUP_UNUSED_PINS +#ifdef BOARD_SIZE_SQUARE +#define NUMBER_OF_ROWS (12) +#define NUMBER_OF_COLS (12) +#endif #ifdef BOARD_SIZE_JUMBO #define NUMBER_OF_ROWS (7) #define NUMBER_OF_COLS (24) diff --git a/firmware/src/config_schedule.h b/firmware/src/config_schedule.h index a986dca9..53f72b01 100644 --- a/firmware/src/config_schedule.h +++ b/firmware/src/config_schedule.h @@ -21,7 +21,7 @@ #define CONFIG_SCHEDULE_H_ /* 8MHz devices and large encoded matrices */ -#if defined(__AVR_ATmega32U2__) || (F_CPU == 8000000UL) || defined(BOARD_SIZE_COSTAR) || defined(BOARD_SIZE_FULLSIZE) || defined(BOARD_SIZE_JUMBO) +#if defined(__AVR_ATmega32U2__) || (F_CPU == 8000000UL) || defined(BOARD_SIZE_COSTAR) || defined(BOARD_SIZE_FULLSIZE) || defined(BOARD_SIZE_JUMBO) || defined(BOARD_SIZE_SQUARE) #define EXPANDED_SCHEDULE #endif diff --git a/incorporate.py b/incorporate.py index 8582345b..ecb4c039 100644 --- a/incorporate.py +++ b/incorporate.py @@ -44,6 +44,7 @@ componentinfo_path = os.path.join(proj_dir, "autobuild.componentinfo.xml") hardware_table = [ + ("ATmega32U4", "16000000UL", "BOARD_SIZE_SQUARE"), ("ATmega32U4", "16000000UL", "BOARD_SIZE_COSTAR"), ("ATmega32U4", "16000000UL", "BOARD_SIZE_TKL"), ("ATmega32U4", "16000000UL", "BOARD_SIZE_SIXTY"), diff --git a/keymapper/easykeymap/builds/ATmega32U4_16MHz_SQUARE.hex b/keymapper/easykeymap/builds/ATmega32U4_16MHz_SQUARE.hex new file mode 100644 index 00000000..43b86a53 --- /dev/null +++ b/keymapper/easykeymap/builds/ATmega32U4_16MHz_SQUARE.hex @@ -0,0 +1,1684 @@ +:100000000C9471170C94B4170C94B4170C94B41787 +:100010000C94B4170C94B4170C94B4170C94B41734 +:100020000C94B4170C94B4170C94682F0C94B41758 +:100030000C9443260C94B4170C94B4170C94B41776 +:100040000C94B4170C94762A0C94B4170C94B4172F +:100050000C94B4170C94B4170C94B4170C94B417F4 +:100060000C94B4170C94B4170C94B4170C94B417E4 +:100070000C94B4170C94B4170C94B4170C94B417D4 +:100080000C94B4170C94B4170C94B4170C94B417C4 +:100090000C94B4170C94B4170C94B4170C94B417B4 +:1000A0000C94B4170C94B4170C94B4179C1D591AE3 +:1000B0005F1A7B1A811A9A1D9A1D601B661B9A1D76 +:1000C0009A1D9A1D9A1D9A1D9A1D401C561D7B1D36 +:1000D0005D1C791C981CBD1CD61CFB1C1B1D341DF3 +:1000E000553078305F3178305F31BD30DF305F318F +:1000F000313143310000000000000000000000002A +:10010000000000002A002B0028000000000028004A +:1001100000000000000000000000000000000000DF +:1001200000000000000000000000290000000000A6 +:10013000000000002C001E023402200221022202D4 +:10014000240234002602270225022E0236002D004A +:100150003700380027001E001F0020002100220069 +:1001600023002400250026003302330036022E002F +:10017000370238021F0204020502060207020802C3 +:1001800009020A020B020C020D020E020F021002FB +:1001900011021202130214021502160217021802AB +:1001A00019021A021B021C021D022F00310030002E +:1001B00023022D0235000400050006000700080098 +:1001C00009000A000B000C000D000E000F001000CB +:1001D000110012001300140015001600170018007B +:1001E00019001A001B001C001D002F0231023002F2 +:1001F00035024C000000000000000000000000007C +:1002000000000000000000000000000000000000EE +:1002100000000000000000000000000000000000DE +:1002200000000000000000000000000000000000CE +:1002300000000000000000000000000000000000BE +:1002400000000000000000000000000000000000AE +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:10028000000000000000000000000000000000006E +:10029000000000000000000000000000000000005E +:1002A000000000000000000000000000000000004E +:1002B000000000000000000000000000000000003E +:1002C000000000000000000000000000000000002E +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F00000000000000000000000000000000000FE +:1003000000000000000000000000000000000000ED +:1003100000000000000000000000000000000000DD +:1003200000000000000000000000000000000000CD +:1003300000000000000000000000000000000000BD +:1003400000000000000000000000000000000000AD +:10035000000000000000000000000000000000009D +:10036000000000000000000000000000000000008D +:10037000000000000000000000000000000000007D +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:1003B000000000000000000000000000000000003D +:1003C000000000000000000000000000000000002D +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000000000FD +:1004000000000000000000000000000000000000EC +:1004100000000000000000000000000000000000DC +:1004200000000000000000000000000000000000CC +:1004300000000000000000000000000000000000BC +:1004400000000000000000000000000000000000AC +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:10048000000000000000000000000000000000006C +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:1004C000000000000000000000000000000000002C +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000000000000000000000FC +:1005000000000000000000000000000000000000EB +:1005100000000000000000000000000000000000DB +:1005200000000000000000000000000000000000CB +:1005300000000000000000000000000000000000BB +:1005400000000000000000000000000000000000AB +:10055000000000000000000000000000000000009B +:10056000000000000000000000000000000000008B +:10057000000000000000000000000000000000007B +:10058000000000000000000000000000000000006B +:10059000000000000000000000000000000000005B +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000000000002B +:1005D000000000000000000000000000000000001B +:1005E000000000000000000000000000000000000B +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:1006100000000000000000000000000000000000DA +:1006200000000000000000000000000000000000CA +:1006300000000000000000000000000000000000BA +:1006400000000000000000000000000000000000AA +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:10067000000000000000000000000000000000007A +:10068000000000000000000000000000000000006A +:10069000000000000000000000000000000000005A +:1006A000000000000000000000000000000000004A +:1006B000000000000000000000000000000000003A +:1006C000000000000000000000000000000000002A +:1006D000000000000000000000000000000000001A +:1006E000000000000000000000000000000000000A +:1006F00000000000000000000000000000000000FA +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:100780000000000000000000000000000000000069 +:100790000000000000000000000000000000000059 +:1007A0000000000000000000000000000000000049 +:1007B0000000000000000000000000000000000039 +:1007C0000000000000000000000000000000000029 +:1007D0000000000000000000000000000000000019 +:1007E0000000000000000000000000000000000009 +:1007F00000000000000000000000000000000000F9 +:1008000000000000000000000000000000000000E8 +:1008100000000000000000000000000000000000D8 +:1008200000000000000000000000000000000000C8 +:1008300000000000000000000000000000000000B8 +:1008400000000000000000000000000000000000A8 +:100850000000000000000000000000000000000098 +:100860000000000000000000000000000000000088 +:100870000000000000000000000000000000000078 +:100880000000000000000000000000000000000068 +:100890000000000000000000000000000000000058 +:1008A0000000000000000000000000000000000048 +:1008B0000000000000000000000000000000000038 +:1008C0000000000000000000000000000000000028 +:1008D0000000000000000000000000000000000018 +:1008E0000000000000000000000000000000000008 +:1008F00000000000000000000000000000000000F8 +:1009000000000000000000000000000000000000E7 +:1009100000000000000000000000000000000000D7 +:1009200000000000000000000000000000000000C7 +:1009300000000000000000000000000000000000B7 +:1009400000000000000000000000000000000000A7 +:100950000000000000000000000000000000000097 +:100960000000000000000000000000000000000087 +:100970000000000000000000000000000000000077 +:100980000000000000000000000000000000000067 +:100990000000000000000000000000000000000057 +:1009A0000000000000000000000000000000000047 +:1009B0000000000000000000000000000000000037 +:1009C0000000000000000000000000000000000027 +:1009D0000000000000000000000000000000000017 +:1009E0000000000000000000000000000000000007 +:1009F00000000000000000000000000000000000F7 +:100A000000000000000000000000000000000000E6 +:100A100000000000000000000000000000000000D6 +:100A200000000000000000000000000000000000C6 +:100A300000000000000000000000000000000000B6 +:100A400000000000000000000000000000000000A6 +:100A50000000000000000000000000000000000096 +:100A60000000000000000000000000000000000086 +:100A70000000000000000000000000000000000076 +:100A80000000000000000000000000000000000066 +:100A90000000000000000000000000000000000056 +:100AA0000000000000000000000000000000000046 +:100AB0000000000000000000000000000000000036 +:100AC0000000000000000000000000000000000026 +:100AD0000000000000000000000000000000000016 +:100AE0000000000000000000000000000000000006 +:100AF00000000000000000000000000000000000F6 +:100B000000000000000000000000000000000000E5 +:100B100000000000000000000000000000000000D5 +:100B200000000000000000000000000000000000C5 +:100B300000000000000000000000000000000000B5 +:100B400000000000000000000000000000000000A5 +:100B50000000000000000000000000000000000095 +:100B60000000000000000000000000000000000085 +:100B70000000000000000000000000000000000075 +:100B80000000000000000000000000000000000065 +:100B90000000000000000000000000000000000055 +:100BA0000000000000000000000000000000000045 +:100BB0000000000000000000000000000000000035 +:100BC0000000000000000000000000000000000025 +:100BD0000000000000000000000000000000000015 +:100BE0000000000000000000000000000000000005 +:100BF00000000000000000000000000000000000F5 +:100C000000000000000000000000000000000000E4 +:100C100000000000000000000000000000000000D4 +:100C200000000000000000000000000000000000C4 +:100C300000000000000000000000000000000000B4 +:100C400000000000000000000000000000000000A4 +:100C50000000000000000000000000000000000094 +:100C60000000000000000000000000000000000084 +:100C70000000000000000000000000000000000074 +:100C80000000000000000000000000000000000064 +:100C90000000000000000000000000000000000054 +:100CA0000000000000000000000000000000000044 +:100CB0000000000000000000000000000000000034 +:100CC0000000000000000000000000000000000024 +:100CD0000000000000000000000000000000000014 +:100CE0000000000000000000000000000000000004 +:100CF00000000000000000000000000000000000F4 +:100D000000000000000000000000000000000000E3 +:100D100000000000000000000000000000000000D3 +:100D200000000000000000000000000000000000C3 +:100D300000000000000000000000000000000000B3 +:100D400000000000000000000000000000000000A3 +:100D50000000000000000000000000000000000093 +:100D60000000000000000000000000000000000083 +:100D70000000000000000000000000000000000073 +:100D80000000000000000000000000000000000063 +:100D90000000000000000000000000000000000053 +:100DA0000000000000000000000000000000000043 +:100DB0000000000000000000000000000000000033 +:100DC0000000000000000000000000000000000023 +:100DD0000000000000000000000000000000000013 +:100DE0000000000000000000000000000000000003 +:100DF00000000000000000000000000000000000F3 +:100E000000000000000000000000000000000000E2 +:100E100000000000000000000000000000000000D2 +:100E200000000000000000000000000000000000C2 +:100E300000000000000000000000000000000000B2 +:100E400000000000000000000000000000000000A2 +:100E50000000000000000000000000000000000092 +:100E60000000000000000000000000000000000082 +:100E70000000000000000000000000000000000072 +:100E80000000000000000000000000000000000062 +:100E90000000000000000000000000000000000052 +:100EA0000000000000000000000000000000000042 +:100EB0000000000000000000000000000000000032 +:100EC0000000000000000000000000000000000022 +:100ED0000000000000000000000000000000000012 +:100EE0000000000000000000000000000000000002 +:100EF00000000000000000000000000000000000F2 +:100F000000000000000000000000000000000000E1 +:100F100000000000000000000000000000000000D1 +:100F200000000000000000000000000000000000C1 +:100F300000000000000000000000000000000000B1 +:100F400000000000000000000000000000000000A1 +:100F50000000000000000000000000000000000091 +:100F60000000000000000000000000000000000081 +:100F70000000000000000000000000000000000071 +:100F80000000000000000000000000000000000061 +:100F90000000000000000000000000000000000051 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000000000000000000021 +:100FD0000000000000000000000000000000000011 +:100FE0000000000000000000000000000000000001 +:100FF00000000000000000000000000000000000F1 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:1010400000000000000000000000000000000000A0 +:101050000000000000000000000000000000000090 +:101060000000000000000000000000000000000080 +:101070000000000000000000000000000000000070 +:101080000000000000000000000000000000000060 +:101090000000000000000000000000000000000050 +:1010A0000000000000000000000000000000000040 +:1010B0000000000000000000000000000000000030 +:1010C0000000000000000000000000000000000020 +:1010D0000000000000000000000000000000000010 +:1010E0000000000000000000000000000000000000 +:1010F00000000000000000000000000000000000F0 +:1011000000000000000000000000000000000000DF +:1011100000000000000000000000000000000000CF +:1011200000000000000000000000000000000000BF +:1011300000000000000000000000000000000000AF +:10114000000000000000000000000000000000009F +:10115000000000000000000000000000000000008F +:10116000000000000000000000000000000000007F +:10117000000000000000000000000000000000006F +:10118000000000000000000000000000000000005F +:10119000000000000000000000000000000000004F +:1011A000000000000000000000000000000000003F +:1011B000000000000000000000000000000000002F +:1011C000000000000000000000000000000000001F +:1011D000000000000000000000000000000000000F +:1011E00000000000000000000000000000000000FF +:1011F00000000000000000000000000000000000EF +:1012000000000000000000000000000000000000DE +:1012100000000000000000000000000000000000CE +:1012200000000000000000000000000000000000BE +:1012300000000000000000000000000000000000AE +:10124000000000000000000000000000000000009E +:10125000000000000000000000000000000000008E +:10126000000000000000000000000000000000007E +:10127000000000000000000000000000000000006E +:10128000000000000000000000000000000000005E +:10129000000000000000000000000000000000004E +:1012A000000000000000000000000000000000003E +:1012B000000000000000000000000000000000002E +:1012C000000000000000000000000000000000001E +:1012D000000000000000000000000000000000000E +:1012E00000000000000000000000000000000000FE +:1012F00000000000000000000000000000000000EE +:1013000000000000000000000000000000000000DD +:1013100000000000000000000000000000000000CD +:1013200000000000000000000000000000000000BD +:1013300000000000000000000000000000000000AD +:10134000000000000000000000000000000000009D +:10135000000000000000000000000000000000008D +:10136000000000000000000000000000000000007D +:10137000000000000000000000000000000000006D +:10138000000000000000000000000000000000005D +:10139000000000000000000000000000000000004D +:1013A000000000000000000000000000000000003D +:1013B000000000000000000000000000000000002D +:1013C000000000000000000000000000000000001D +:1013D000000000000000000000000000000000000D +:1013E00000000000000000000000000000000000FD +:1013F00000000000000000000000000000000000ED +:1014000000000000000000000000000000000000DC +:1014100000000000000000000000000000000000CC +:1014200000000000000000000000000000000000BC +:1014300000000000000000000000000000000000AC +:10144000000000000000000000000000000000009C +:10145000000000000000000000000000000000008C +:10146000000000000000000000000000000000007C +:10147000000000000000000000000000000000006C +:10148000000000000000000000000000000000005C +:10149000000000000000000000000000000000004C +:1014A000000000000000000000000000000000003C +:1014B000000000000000000000000000000000002C +:1014C000000000000000000000000000000000001C +:1014D000000000000000000000000000000000000C +:1014E00000000000000000000000000000000000FC +:1014F00000000000000000000000000000000000EC +:1015000000000000000000000000000000000000DB +:1015100000000000000000000000000000000000CB +:1015200000000000000000000000000000000000BB +:1015300000000000000000000000000000000000AB +:10154000000000000000000000000000000000009B +:10155000000000000000000000000000000000008B +:10156000000000000000000000000000000000007B +:10157000000000000000000000000000000000006B +:10158000000000000000000000000000000000005B +:10159000000000000000000000000000000000004B +:1015A000000000000000000000000000000000003B +:1015B000000000000000000000000000000000002B +:1015C000000000000000000000000000000000001B +:1015D000000000000000000000000000000000000B +:1015E00000000000000000000000000000000000FB +:1015F00000000000000000000000000000000000EB +:1016000000000000000000000000000000000000DA +:1016100000000000000000000000000000000000CA +:1016200000000000000000000000000000000000BA +:1016300000000000000000000000000000000000AA +:10164000000000000000000000000000000000009A +:10165000000000000000000000000000000000008A +:10166000000000000000000000000000000000007A +:10167000000000000000000000000000000000006A +:10168000000000000000000000000000000000005A +:10169000000000000000000000000000000000004A +:1016A000000000000000000000000000000000003A +:1016B000000000000000000000000000000000002A +:1016C000000000000000000000000000000000001A +:1016D000000000000000000000000000000000000A +:1016E00000000000000000000000000000000000FA +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000000000000089 +:101760000000000000000000000000000000000079 +:101770000000000000000000000000000000000069 +:101780000000000000000000000000000000000059 +:101790000000000000000000000000000000000049 +:1017A0000000000000000000000000000000000039 +:1017B0000000000000000000000000000000000029 +:1017C0000000000000000000000000000000000019 +:1017D0000000000000000000000000000000000009 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:1018000000000000000000000000000000000000D8 +:1018100000000000000000000000000000000000C8 +:1018200000000000000000000000000000000000B8 +:1018300000000000000000000000000000000000A8 +:101840000000000000000000000000000000000098 +:101850000000000000000000000000000000000088 +:101860000000000000000000000000000000000078 +:101870000000000000000000000000000000000068 +:101880000000000000000000000000000000000058 +:101890000000000000000000000000000000000048 +:1018A0000000000000000000000000000000000038 +:1018B0000000000000000000000000000000000028 +:1018C0000000000000000000000000000000000018 +:1018D0000000000000000000000000000000000008 +:1018E00000000000000000000000000000000000F8 +:1018F00000000000000000000000000000000000E8 +:1019000000000000000000000000000000000000D7 +:1019100000000000000000000000000000000000C7 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000000000000000000A7 +:101940000000000000000000000000000000000097 +:101950000000000000000000000000000000000087 +:101960000000000000000000000000000000000077 +:101970000000000000000000000000000000000067 +:101980000000000000000000000000000000000057 +:101990000000000000000000000000000000000047 +:1019A0000000000000000000000000000000000037 +:1019B0000000000000000000000000000000000027 +:1019C0000000000000000000000000000000000017 +:1019D0000000000000000000000000000000000007 +:1019E00000000000000000000000000000000000F7 +:1019F00000000000000000000000000000000000E7 +:101A000000000000000000000000000000000000D6 +:101A100000000000000000000000000000000000C6 +:101A200000000000000000000000000000000000B6 +:101A300000000000000000000000000000000000A6 +:101A40000000000000000000000000000000000096 +:101A50000000000000000000000000000000000086 +:101A60000000000000000000000000000000000076 +:101A70000000000000000000000000000000000066 +:101A80000000000000000000000000000000000056 +:101A90000000000000000000000000000000000046 +:101AA0000000000000000000000000000000000036 +:101AB0000000000000000000000000000000000026 +:101AC0000000000000000000000000000000000016 +:101AD0000000000000000000000000000000000006 +:101AE00000000000000000000000000000000000F6 +:101AF00000000000000000000000000000000000E6 +:101B000000000000000000000000000000000000D5 +:101B100000000000000000000000000000000000C5 +:101B200000000000000000000000000000000000B5 +:101B300000000000000000000000000000000000A5 +:101B40000000000000000000000000000000000095 +:101B50000000000000000000000000000000000085 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B80000000000000000000000000000000000055 +:101B90000000000000000000000000000000000045 +:101BA0000000000000000000000000000000000035 +:101BB0000000000000000000000000000000000025 +:101BC0000000000000000000000000000000000015 +:101BD0000000000000000000000000000000000005 +:101BE00000000000000000000000000000000000F5 +:101BF00000000000000000000000000000000000E5 +:101C000000000000000000000000000000000000D4 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C40000000000000000000000000000000000094 +:101C50000000000000000000000000000000000084 +:101C60000000000000000000000000000000000074 +:101C70000000000000000000000000000000000064 +:101C80000000000000000000000000000000000054 +:101C90000000000000000000000000000000000044 +:101CA0000000000000000000000000000000000034 +:101CB0000000000000000000000000000000000024 +:101CC0000000000000000000000000000000000014 +:101CD0000000000000000000000000000000000004 +:101CE00000000000000000000000000000000000F4 +:101CF00000000000000000000000000000000000E4 +:101D000000000000000000000000000000000000D3 +:101D100000000000000000000000000000000000C3 +:101D200000000000000000000000000000000000B3 +:101D300000000000000000000000000000000000A3 +:101D40000000000000000000000000000000000093 +:101D50000000000000000000000000000000000083 +:101D60000000000000000000000000000000000073 +:101D70000000000000000000000000000000000063 +:101D80000000000000000000000000000000000053 +:101D90000000000000000000000000000000000043 +:101DA0000000000000000000000000000000000033 +:101DB0000000000000000000000000000000000023 +:101DC0000000000000000000000000000000000013 +:101DD0000000000000000000000000000000000003 +:101DE00000000000000000000000000000000000F3 +:101DF00000000000000000000000000000000000E3 +:101E000000000000000000000000000000000000D2 +:101E100000000000000000000000000000000000C2 +:101E200000000000000000000000000000000000B2 +:101E300000000000000000000000000000000000A2 +:101E40000000000000000000000000000000000092 +:101E50000000000000000000000000000000000082 +:101E60000000000000000000000000000000000072 +:101E70000000000000000000000000000000000062 +:101E80000000000000000000000000000000000052 +:101E90000000000000000000000000000000000042 +:101EA0000000000000000000000000000000000032 +:101EB0000000000000000000000000000000000022 +:101EC0000000000000000000000000000000000012 +:101ED0000000000000000000000000000000000002 +:101EE00000000000000000000000000000000000F2 +:101EF00000000000000000000000000000000000E2 +:101F000000000000000000000000000000000000D1 +:101F100000000000000000000000000000000000C1 +:101F200000000000000000000000000000000000B1 +:101F300000000000000000000000000000000000A1 +:101F40000000000000000000000000000000000091 +:101F50000000000000000000000000000000000081 +:101F60000000000000000000000000000000000071 +:101F70000000000000000000000000000000000061 +:101F80000000000000000000000000000000000051 +:101F90000000000000000000000000000000000041 +:101FA0000000000000000000000000000000000031 +:101FB0000000000000000000000000000000000021 +:101FC0000000000000000000000000000000000011 +:101FD0000000000000000000000000000000000001 +:101FE00000000000000000000000000000000000F1 +:101FF00000000000000000000000000000000000E1 +:1020000000000000000000000000000000000000D0 +:1020100000000000000000000000000000000000C0 +:1020200000000000000000000000000000000000B0 +:1020300000000000000000000000000000000000A0 +:102040000000000000000000000000000000000090 +:102050000000000000000000000000000000000080 +:102060000000000000000000000000000000000070 +:102070000000000000000000000000000000000060 +:102080000000000000000000000000000000000050 +:102090000000000000000000000000000000000040 +:1020A0000000000000000000000000000000000030 +:1020B0000000000000000000000000000000000020 +:1020C0000000000000000000000000000000000010 +:1020D0000000000000000000000000000000000000 +:1020E00000000000000000000000000000000000F0 +:1020F00000000000000000000000000000000000E0 +:1021000000000000000000000000000000000000CF +:1021100000000000000000000000000000000000BF +:1021200000000000000000000000000000000000AF +:10213000000000000000000000000000000000009F +:10214000000000000000000000000000000000008F +:10215000000000000000000000000000000000007F +:10216000000000000000000000000000000000006F +:10217000000000000000000000000000000000005F +:10218000000000000000000000000000000000004F +:10219000000000000000000000000000000000003F +:1021A000000000000000000000000000000000002F +:1021B000000000000000000000000000000000001F +:1021C000000000000000000000000000000000000F +:1021D00000000000000000000000000000000000FF +:1021E00000000000000000000000000000000000EF +:1021F00000000000000000000000000000000000DF +:1022000000000000000000000000000000000000CE +:1022100000000000000000000000000000000000BE +:1022200000000000000000000000000000000000AE +:10223000000000000000000000000000000000009E +:10224000000000000000000000000000000000008E +:10225000000000000000000000000000000000007E +:10226000000000000000000000000000000000006E +:10227000000000000000000000000000000000005E +:10228000000000000000000000000000000000004E +:10229000000000000000000000000000000000003E +:1022A000000000000000000000000000000000002E +:1022B000000000000000000000000000000000001E +:1022C000000000000000000000000000000000000E +:1022D00000000000000000000000000000000000FE +:1022E00000000000000000000000000000000000EE +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000000000000000000CD +:1023100000000000000000000000000000000000BD +:1023200000000000000000000000000000000000AD +:10233000000000000000000000000000000000009D +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:10236000000000000000000000000000000000006D +:10237000000000000000000000000000000000005D +:10238000000000000000000000000000000000004D +:10239000000000000000000000000000000000003D +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000000000000000001D +:1023C000000000000000000000000000000000000D +:1023D00000000000000000000000000000000000FD +:1023E00000000000000000000000FF00FF00FF00F0 +:1023F000FF00FF00FF00FF00FF00FF00FF00FF00E5 +:10240000FF00FF00FF00FF00FF00FF00FF00FF00D4 +:10241000FF00FF00FF0000000000000000000000BF +:1024200000000000000000000000000000000000AC +:10243000000000000000000000000000000000009C +:10244000000000000000080C000000000000000078 +:10245000000000000000000000000000000000007C +:10246000000000000000000000000000000000006C +:10247000000000000000000000000000000000005C +:10248000000000000000000000000000000000004C +:10249000000000000000000000000000000000003C +:1024A00000000000000000000000952C9B283C2646 +:1024B0000000A128E3283C260000AB2CAA283C26DB +:1024C0000000B6285419411A3C264F7574206F66D7 +:1024D0002072616E67652E0A00456E746572206E0B +:1024E00065772064656661756C742064696D6D65DF +:1024F00072206C6576656C2028312D3136293E209E +:1025000000456E746572206E65772064656661753E +:102510006C74206261636B6C6967687420656E61BE +:10252000626C652028312D3136293E2000456E74BD +:102530006572206E6577206D6174726978207365AD +:10254000747570207761697420696E206379636C9B +:1025500065732028312D323535293E2000456E74B3 +:102560006572206E6577207265706561742074698C +:102570006D6520696E206D732028312D3939293E13 +:102580002000456E746572206E657720686F6C64FC +:102590002074696D6520696E206D732028312D3996 +:1025A0003939293E2000456E746572206E657720AA +:1025B0006D6F757365206D6F76656D656E74206DDA +:1025C000756C7469706C6965722028312D393929F0 +:1025D0003E2000456E746572206E657720626173DF +:1025E00065206D6F757365206D6F76656D656E74B2 +:1025F0002028312D3939293E2000456E746572201E +:102600006E657720646F75626C65746170206465B7 +:102610006C61792074696D6520696E206D73202866 +:10262000312D393939293E2000456E746572206E8E +:102630006577207461702074696D6520696E206D06 +:10264000732028312D393939293E2000456E7465B3 +:1026500072206E6577206465626F756E63652074A5 +:10266000696D6520696E206D732028312D393929F7 +:102670003E20005365743A00456E746572206E65A5 +:10268000772064656661756C74206C617965722071 +:1026900028302D39293E20005573696E6720646506 +:1026A0006661756C74202268616972207472696752 +:1026B00067657222206465626F756E636520616C68 +:1026C000676F726974686D20616E642072657365EE +:1026D0007474696E67206465626F756E63652074DB +:1026E000696D652E0A005573696E6720616C7465AB +:1026F000726E6174652022636F6E6669726D22204E +:102700006465626F756E636520616C676F72697472 +:10271000686D20616E6420726573657474696E679C +:10272000206465626F756E63652074696D652E0A3D +:10273000004E756D206C6F636B206973206C696E41 +:102740006B656420746F2074686520737973746599 +:102750006D206E756D206C6F636B2E0A004E756D6B +:10276000206C6F636B2077696C6C2066756E637488 +:10277000696F6E20696E646570656E64656E746CF9 +:1027800079206F66207468652073797374656D2095 +:102790006E756D206C6F636B2E0A004B6579626FEE +:1027A0006172643A204E4B524F2C206D6564696112 +:1027B0002F706F776572206B6579733A2059455396 +:1027C0002C206D6F7573653A205945532E0A004BC6 +:1027D0006579626F6172643A204E4B524F2C206DC6 +:1027E000656469612F706F776572206B6579733AE4 +:1027F000205945532C206D6F7573653A204E4F2E2E +:102800000A004B6579626F6172643A20364B524F11 +:102810002C206D656469612F706F776572206B6520 +:1028200079733A205945532C206D6F7573653A20A2 +:102830005945532E0A004B6579626F6172642069B5 +:1028400073206C696D6974656420746F20737461A2 +:102850006E6461726420364B524F20626F6F742D2C +:10286000636F6D70617469626C65206B6579626F0E +:10287000617264206F6E6C792E0A005363726F6C04 +:102880006C206C6F636B2077696C6C206E6F7420AA +:102890006166666563742077696E206C6F636B2E6A +:1028A0000A0057696E646F7773206B6579207769CA +:1028B0006C6C2062652064697361626C656420776A +:1028C00068656E207363726F6C6C206C6F636B2035 +:1028D000697320656E61626C65642E0A004E756DC9 +:1028E000206C6F636B2077696C6C206E6F74206155 +:1028F0006666656374206E756D62657220726F77AF +:102900002E0A004E756D62657220726F77207769AE +:102910006C6C206265207377617070656420666FEF +:1029200072206E756D706164206B657973207768B5 +:10293000656E206E756D206C6F636B20697320650A +:102940006E61626C65642E0A00496E707574206E4B +:102950006F74207265636F676E697A65642E0A0012 +:102960000A54696D696E67204D656E753A0A3129A2 +:1029700020536574206465626F756E6365207469A9 +:102980006D650A322920536574206D617820686F67 +:102990006C642074696D6520666F72207461700AC2 +:1029A000332920536574206D61782064656C6179EA +:1029B0002074696D6520666F7220646F75626C6546 +:1029C000207461700A342920536574206261736534 +:1029D000206D6F757365206D6F76656D656E740A19 +:1029E000352920536574206D6F757365206D6F7682 +:1029F000656D656E74206D756C7469706C69657257 +:102A00000A362920536574206D696E20686F6C64E6 +:102A10002074696D6520666F7220726570656174DF +:102A20000A372920536574207265706561742070BF +:102A30006572696F640A382920536574206D61746A +:102A400072697820736574757020776169740A39CA +:102A500029204261636B0A3E20000A436F6E66695B +:102A600067204D656E753A0A312920546F67676C8F +:102A700065207669727475616C206E756D20706169 +:102A8000640A322920546F67676C652077696E206D +:102A90006C6F636B206F6E207363726F6C6C206C55 +:102AA0006F636B0A33292053657420646566617512 +:102AB0006C74206C617965720A342920546F6767E1 +:102AC0006C65206B6579626F617264206665617404 +:102AD000757265730A352920546F67676C652075B8 +:102AE0006E6C696E6B206E756D206C6F636B0A3651 +:102AF00029205365742064656661756C742064696F +:102B00006D6D6572206C6576656C0A37292053659A +:102B1000742064656661756C74206261636B6C69B6 +:102B200067687420656E61626C650A382920546F8D +:102B300067676C65206465626F756E63652073748A +:102B4000796C650A3929204261636B0A3E20000ACC +:102B50004D61696E204D656E753A0A312920436FCB +:102B60006E666967206D656E750A32292054696D3D +:102B7000696E67206D656E750A342920526573652C +:102B8000740A392920517569740A3E20001E4D1FB0 +:102B900051204E21502200234F244A2552264B27F4 +:102BA00049374CB500B600B700CD006F007000E2A9 +:102BB00000E500E900EA0052015301540155018388 +:102BC000018A019201940121022302240225022696 +:102BD0000227022A02B101B202B304B408B510E020 +:102BE00001E102E204E308E410E520E640E78001A9 +:102BF00005080A0C0F101414181800386B05000192 +:102C00007405010178050201690503016F050401DE +:102C100077050501790506016C05070166050801C0 +:102C2000710509026D050B026A050D0170050E01A3 +:102C300075050F0268051101730512016505130181 +:102C40004A034500610073007900410056005200BC +:102C500020004D0075006C00740069006D00650077 +:102C600064006900610020004B006500790062008B +:102C70006F006100720064002000760023002E00C7 +:102C8000230023002E002300230000000403090476 +:102C900009022200010100A0320904000001030121 +:102CA00001000921B0010001223F0007058103084E +:102CB000000109025400030100A0320904000001D0 +:102CC000030101000921B0010001223F0007058135 +:102CD000031200010904010001030000000921B0F2 +:102CE000010001221B0007058203020008090402FB +:102CF0000001030000000921B0010001221D0007AE +:102D000005830301000809026D00040100A03209D7 +:102D100004000001030101000921B0010001223F6C +:102D200000070581030800010904010001030000F8 +:102D3000000921B0010001221B00070582030200E7 +:102D4000080904020001030000000921B00100018C +:102D5000221D000705830301000809040300010385 +:102D60000102000921B0010001223A000705840395 +:102D700003000509026D00040100A03209040000EF +:102D800001030101000921B0010001223F000705F4 +:102D90008103120001090401000103000000092160 +:102DA000B0010001221B000705820302000809048C +:102DB000020001030000000921B0010001221D00F2 +:102DC0000705830301000809040300010301020051 +:102DD0000921B0010001223A000705840303000520 +:102DE0001201000200000008EB03FF2010000001A8 +:102DF000000105010980A1010501150025011981C6 +:102E00002983750195038106950175058101C0052A +:102E10000C0901A101050C160100269C021A0100F3 +:102E20002A9C02751095018100C005010902A101CB +:102E30000901A100050919012903150025019503C0 +:102E4000750181029501750581010501093009317E +:102E50001681FF267F0036000046000095027508A7 +:102E60008106C0C005010906A101050719E029E78F +:102E700015002501750195088102950175088101EC +:102E8000050819012905950575019102950175033C +:102E900091011500250105071900297F958075010D +:102EA0008102C005010906A101050719E029E715FE +:102EB00000250175019508810295017508810105BC +:102EC0000819012905950575019102950175039170 +:102ED00001150025FF0507190029FF9506750881D2 +:102EE00000C011241FBECFEFDAE0DEBFCDBF84B734 +:102EF00014BE0FB6F894A8959091600098619093D5 +:102F00006000109260000FBE83FF11C080918905A0 +:102F100090918A058D3A9E4D51F410928A05109237 +:102F20008905EAEFFBE225913491F901099585B70E +:102F3000806885BF85B7806885BF11E0A0E0B1E0FB +:102F4000E2ECF8E602C005900D92AE35B107D9F774 +:102F500025E0AEE5B1E001C01D92A938B207E1F766 +:102F60000E94DE330C945F340C94000010928401B4 +:102F70001092830110927F0110927E0110928E01B7 +:102F800010928D0108952091800180918B01222360 +:102F900009F43CC0811141C080918201811132C08D +:102FA00080919F0181112AC090917901921305C0EF +:102FB000109280011092790130C0E92FF0E0EE0FFD +:102FC000FF1FE157FE4F80812181813031F4209332 +:102FD00082019F5F9093790120C090917A019217AE +:102FE00019F020937A0119C080939F01811115D6A1 +:102FF000809179018F5F809379010FC043D6109241 +:103000009F010BC081508093820107C0811105C0D0 +:10301000809181018D7F8093810180918B0181114D +:1030200003C081E080938B0108958091DA02909132 +:103030007B01981731F180937B01882311F188324D +:1030400011F0883531F4809181018B7F809381016B +:103050000895E0917D018A3251F4EE2391F0E15020 +:10306000E0937D01F0E0EB57FE4F10820895E630CB +:1030700040F4AE2FB0E0AB57BE4F8C93EF5FE093C0 +:103080007D01089510927A018091DA02811102C0C7 +:10309000109281010895BC0180918001DB01982F7D +:1030A000292F281B983058F090938001620F711DD2 +:1030B00027FD7A9570938E0160938D0122C0FD01EA +:1030C00025913491211109C09093800110928E01B5 +:1030D00010928D019923D1F014C0492F50E0F901CD +:1030E000FF27EE0FFF1FEC50FF4F25913491440F47 +:1030F000551FFA01E157FE4F318320839F5F1196E0 +:10310000CFCF8091810183608093810181E0089518 +:103110004091800128E030E0241B31092617370751 +:1031200058F1B0E04B2F0B2E000C550B46175707EC +:10313000D8F4A09180012A2F30E0FC01E40FF51FA4 +:10314000E081F0E0EE0FFF1FEC50FF4F45915491EE +:10315000220F331FF901E157FE4F51834083AF5FC8 +:10316000A0938001BF5FDECF672B41F0809181018A +:1031700083608093810102C080E0089581E008951A +:1031800090918001983090F4E92FF0E0EE0FFF1F4E +:10319000E157FE4F808361839F5F90938001809110 +:1031A000810183608093810181E0089580E008952A +:1031B0009C019091800191112EC0A901983049F491 +:1031C00090938001205F3F4F3093840120938301CF +:1031D0001BC0FA01659174914E5F5F4F61157105D7 +:1031E00049F49093800110928401109283019923F5 +:1031F00081F00AC0E92FF0E0EE0FFF1FE157FE4F0C +:10320000718360839F5FDACF8091810183608093B7 +:10321000810181E0089580E00895AC0180918001F2 +:1032200081113EC060938C01282F082E000C330BB7 +:103230002617370758F590918001220F331F9830D9 +:1032400038F0240F351F30937F0120937E011EC07C +:10325000FA01E20FF31F20813181E92FF0E0EE0F38 +:10326000FF1FE157FE4F318320839F5F90938001C2 +:1032700090918C01915090938C01911105C0109206 +:103280007F0110927E0102C08F5FCECF80918001BE +:10329000882341F08091810183608093810102C085 +:1032A00080E0089581E0089590918101992329F1AA +:1032B00091FD69CE20918301309184012115310562 +:1032C00011F0C90175CF20917E0130917F01211548 +:1032D000310539F060918C01062E000C770BC90185 +:1032E0009CCF20918D0130918E012115310511F077 +:1032F000C901D1CE92FD99CEC5CE0895E5E8F1E0A1 +:1033000010821182128213821482158210927D0122 +:103310008091DA0280937B018091810185608093A6 +:1033200081010895089508958A3010F4805D08950C +:10333000895C08951F93CF93DF93182FEB0182953B +:103340008F70F2DF8883812F8F70EEDF8983DF91AA +:10335000CF911F9108958F929F92AF92BF92CF927B +:10336000DF92EF92FF920F931F93CF93DF931F9201 +:10337000CDB7DEB79C018B0180E3FB01808380E247 +:103380008183828383E0E82EF12C94E6892E912CB0 +:103390004AE0B42E682D70E0911003C0261737075D +:1033A00090F06801C90CD11C97FCDA94C9010E9405 +:1033B000F133A82E862F9983B7DFF60180832A2D5B +:1033C0009981392F9394882D6B2D0E94E533882E97 +:1033D000F1E0EF1AF108F1F60F90DF91CF911F9114 +:1033E0000F91FF90EF90DF90CF90BF90AF909F90A4 +:1033F0008F90089597EA980F993010F488550895A2 +:1034000092EE980F993010F48D5108959CEF980F1B +:10341000963010F48A5F089580E00895BF92CF92AD +:10342000DF92EF92FF920F931F93CF93DF937C0174 +:103430008B0180E090E0B12CC42FD0E02B2D0B2C21 +:10344000000C330B2017310790F48C9F60018D9F87 +:10345000D00C9C9FD00C1124F701E20FF31F808148 +:10346000C9DF9601280F311DC901B394E7CFDF9161 +:10347000CF911F910F91FF90EF90DF90CF90BF9071 +:1034800008951F93CF93DF9300D000D0CDB7DEB760 +:1034900080918101811150C3E091A0018E2F90E0B5 +:1034A0008A31910508F046C3FC01EA5AFF4F0C949B +:1034B00005348FE49BE2EFDD21DF82E0DEC111E025 +:1034C0001093A0018091850195DF893009F432C302 +:1034D000843019F41093A1012FC3813011F483E0DB +:1034E000CCC1823029F487E0C8C1883009F4C9C052 +:1034F00089E499E2E3C08AE59AE2CDDDFFDE84E06B +:10350000BCC113E01093A0018091850173DF893065 +:1035100011F481E0B2C1813091F49091780589274E +:103520008093780582E00E94C029809178058823E5 +:1035300019F083E099E2C2C08DED98E2BFC08230FD +:1035400099F49091740581E089278093740581E056 +:103550000E94C02980917405882319F082EA98E2BC +:10356000ADC08BE798E2AAC08330B1F483E796E25E +:1035700092DDBE016F5F7F4F80916905DBDE8AE0DF +:103580008B8363E070E0CE010196C2DD88E796E2AE +:1035900082DDB4DE8FE071C1843051F58091770512 +:1035A000811109C081E08093770585E00E94C029E0 +:1035B00082E098E283C0813049F482E0809377050D +:1035C00085E00E94C0298FEC97E278C0823041F4F8 +:1035D0001093770585E00E94C02986E398E26EC0CB +:1035E0001092770585E00E94C0298BE997E266C0BA +:1035F000853099F490916C0581E0892780936C0562 +:1036000087E00E94C02980916C05882319F08DE520 +:1036100097E254C081E397E251C08630B9F483E762 +:1036200096E239DD80916F05BE016F5F7F4F90E0BC +:1036300092DE8AE08B8363E070E0CE01019668DD64 +:1036400089ED94E228DD5ADE80E117C1873009F068 +:103650004CCF83E796E21FDD8091660590E0BE01C6 +:103660006F5F7F4F019677DE8AE08B8363E070E0C7 +:10367000CE0101964DDD81E095E20DDD3FDE81E179 +:10368000FCC09091650581E089278093650580E104 +:103690000E94C02980916505882341F086E08093CF +:1036A00079050E94C02986EE96E208C08CE08093DE +:1036B000790586E00E94C02988E996E2ECDC3CC2EC +:1036C00080E699E2E8DC1ADE88E0D7C087E08093E4 +:1036D000A001809185018EDE893009F41ACF8130F6 +:1036E000B9F483E796E2D7DC80917905BE016F5F7C +:1036F0007F4F90E030DE8AE08B8363E070E0CE01A4 +:10370000019606DD8CE496E2C6DCF8DD82E1B5C008 +:103710008230C1F483E796E2BEDCBE016F5F7F4F6B +:10372000809171059091720516DE8AE08C8364E0C9 +:1037300070E0CE010196ECDC89E296E2ACDCDEDDE5 +:1037400083E19BC08330D9F483E796E2A4DC8091C7 +:103750006D0590916E05BE016F5F7F4F91958195CC +:103760009109F9DD8AE08C8364E070E0CE01019676 +:10377000CFDC8AEF95E28FDCC1DD84E17EC084304E +:10378000B9F483E796E287DC80916A05BE016F5F3A +:103790007F4F90E0E0DD8AE08B8363E070E0CE0154 +:1037A0000196B6DC83ED95E276DCA8DD85E165C0A7 +:1037B0008530B9F483E796E26EDC80917005BE0136 +:1037C0006F5F7F4F90E0C7DD8AE08B8363E070E03E +:1037D000CE0101969DDC86EA95E25DDC8FDD86E117 +:1037E0004CC08630C1F483E796E255DCBE016F5FC2 +:1037F0007F4F8091750590917605ADDD8AE08C83D1 +:1038000064E070E0CE01019683DC82E895E243DC5F +:1038100075DD87E132C08730B9F483E796E23BDC9F +:1038200080916805BE016F5F7F4F90E094DD8AE074 +:103830008B8363E070E0CE0101966ADC8DE595E252 +:103840002ADC5CDD88E119C0883009F075C183E7A6 +:1038500096E221DC80917305BE016F5F7F4F90E09F +:103860007ADD8AE08C8364E070E0CE01019650DC62 +:103870008DE295E210DC42DD89E18093A0015CC11C +:1038800060917D0170E04AE085E891E0C7DD8A3013 +:10389000910578F48093690583E00E94C02983E74D +:1038A00096E2F9DBBE016F5F7F4F8091690542DDD3 +:1038B0001AC18AEC94E2EFDB12CE60917D0170E0D8 +:1038C0004AE085E891E0AADD9C01215031092336C8 +:1038D000310558F48093790586E00E94C02983E77A +:1038E00096E2D9DB8091790579C08AEC94E2D3DB4A +:1038F000FACD60917D0170E04AE085E891E08EDDCF +:103900009C0121503109273E334078F7909372058E +:103910008093710589E00E94C02983E796E2BBDBB2 +:10392000BE016F5F7F4F8091710590917205B8C0A5 +:1039300060917D0170E04AE085E891E06FDD9C01D7 +:1039400021503109273E334080F6919581959109A8 +:1039500090936E0580936D058AE00E94C02983E7ED +:1039600096E299DB80916D0590916E05BE016F5FC7 +:103970007F4F91958195910993C060917D0170E091 +:103980004AE085E891E04ADD9C0121503109233667 +:10399000310508F0AACF80936A058BE00E94C02908 +:1039A00083E796E278DB80916A0518C060917D011B +:1039B00070E04AE085E891E031DD9C012150310959 +:1039C0002336310508F091CF809370058CE00E947A +:1039D000C02983E796E25FDB80917005BE016F5FCF +:1039E0007F4F90E0B8DC8AE08B8363E070E0CE012B +:1039F00001968EDB78CD60917D0170E04AE085E82C +:103A000091E00CDD9C0121503109273E334008F044 +:103A10006CCF90937605809375058DE00E94C02948 +:103A200083E796E238DBBE016F5F7F4F80917505BB +:103A30009091760535C060917D0170E04AE085E89F +:103A400091E0ECDC9C01215031092336310508F06E +:103A50004CCF809368058EE00E94C02983E796E2F0 +:103A60001ADB80916805BACF60917D0170E04AE071 +:103A700085E891E0D3DC9C01215031092F3F3105CD +:103A800008F033CF809373058FE00E94C02983E74D +:103A900096E201DB80917305BE016F5F7F4F90E07E +:103AA0005ADC8AE08C8364E070E0A1CF60917D01F4 +:103AB00070E04AE085E891E0B1DC9C0121503109D9 +:103AC0002031310508F0F5CE80936F0584E00E9427 +:103AD000C02983E796E2DFDA80916F05BE016F5F50 +:103AE0007F4F90E038DC8AE08B8363E070E0CE01AA +:103AF00001960EDBF4CC60917D0170E04AE085E830 +:103B000091E08CDC9C01215031092031310508F015 +:103B1000D0CE81508093660588E00E94C02983E75B +:103B200096E2B9DA8091660590E0BE016F5F7F4F43 +:103B30000196D8CF1092A0010F900F900F900F9088 +:103B4000DF91CF911F91089526E0829FC00111243B +:103B5000FC01E05CFE4F0190F081E02D208181E0CE +:103B600090E001C0880F6A95EAF7822B8083089560 +:103B700026E0829FC0011124FC01E05CFE4F019011 +:103B8000F081E02D808160956823462B4083089565 +:103B900026E0829FC0011124FC01E05CFE4F028000 +:103BA000F381E02D208181E090E001C0880F6A95CB +:103BB000EAF7822B8083089526E0829FC0011124BA +:103BC000FC01E05CFE4F0280F381E02D208181E06A +:103BD00090E001C0880F6A95EAF780958223808380 +:103BE000089526E0829FC0011124FC01E05CFE4F95 +:103BF0000280F381E02D80816823462B4083089565 +:103C000026E0829FC0011124FC01E05CFE4F04808D +:103C1000F581E02D808186230895E82FE695E695CD +:103C2000E695F0E0E353FD4F982F977021E030E0E8 +:103C300001C0220F9A95EAF79081292B2083909159 +:103C4000C70220E029175CF4E22F022E000CFF0BC4 +:103C5000E652FD4F30813817A1F02F5FF3CF963039 +:103C60005CF4E92F092E000CFF0BE652FD4F808318 +:103C70009F5F9093C70208951092E00281E08093C5 +:103C800018040895E82FE695E695E695F0E0E353ED +:103C9000FD4F982F977021E030E001C0220F9A95D8 +:103CA000EAF720959081292320839091C7024AED5D +:103CB00052E0FA012E2F241B291724F431913813D6 +:103CC000F9CF01C00895E22F022E000CFF0BE6523F +:103CD000FD4F818180832F5F2917ACF39150909322 +:103CE000C702109218040895E82FE695E695E69528 +:103CF000F0E0E353FD4F982F977021E030E001C0D2 +:103D0000220F9A95EAF79081292720839091C70284 +:103D10004AED52E0FA012E2F241B291724F4319189 +:103D20003813F9CF13C096305CF4E92F092E000C3C +:103D3000FF0BE652FD4F80839F5F9093C70208956B +:103D40001092E00281E0809318040895E22F022E81 +:103D5000000CFF0BE652FD4F818180832F5F2917F6 +:103D6000ACF391509093C70210921804089590916B +:103D7000820394305CF4E92F092E000CFF0BE8530A +:103D8000FD4F80839F5F90938203089540E060E041 +:103D900070E082E4C8DA1092CC0208952091820388 +:103DA00048EC52E0FA019E2F941B92179CF431913B +:103DB0003813F9CF921751F0E92F092E000CFF0BA1 +:103DC000E853FD4F818180839F5FF4CF91509093A2 +:103DD00082030895682F70E040E083E4A4CA8091D4 +:103DE000690580931B0408959CE0899F600D112450 +:103DF0008091C20268130DC080916D0590916E058F +:103E00008417950734F480911A048F5F80931A0405 +:103E100008951092C20210921A040895E09171055B +:103E2000F09172054E175F0754F491E0F901908309 +:103E3000FCE08F9F600D11246093C2020895F90188 +:103E400010821092C20210921A04089590918C016F +:103E5000E92FEE0FFF0BEE51FD4F2091C40230E031 +:103E6000322F2227282B3183208381E0890F8093F2 +:103E70008C01803534F01092170480937C0180E12E +:103E800071C5089590911D04911110C0805D80311D +:103E900068F4E82FF0E0EE0FFF1FE752FD4E85912A +:103EA0009491880F991F87529D4E82C90895CF9390 +:103EB000DF93C82FD62F80911B04882311F08B5FCE +:103EC00051D580E18C0F80931B0451DF80911B043E +:103ED000882311F08B5F26D590911B048091690592 +:103EE000981711F08FE01ED580911B049091C302AA +:103EF000D0FF02C0981308C0981308C080911A041C +:103F0000811104C0809169058093C302DF91CF9134 +:103F10000895E82FF0E0EC50FE4F8491882311F0D3 +:103F200060E0C5CF08950F931F93CF93DF9300D028 +:103F30001F92CDB7DEB7082F10E1180F80911B0438 +:103F4000882341F08B5F2B834A8369830BD569817A +:103F50004A812B81222359F180911B04811327C0B0 +:103F600080911A04882319F061FD1093C302809197 +:103F7000C60280131CC062FF1AC0141624F460919C +:103F8000C402842F13C0842F807E803E81F4E42FEE +:103F9000F0E0EE0FFF1FE05EF54D8491809590916B +:103FA000C40289238093C402649180E0E9D8812F00 +:103FB000F5DEE0918203E11103C08091C30206C0E7 +:103FC0000E2E000CFF0BE953FD4F808180931B04E4 +:103FD00080911B04882311F08B5FA4D490911B0463 +:103FE00080916905981309C08FE00F900F900F9092 +:103FF000DF91CF911F910F91B5C40F900F900F904B +:10400000DF91CF911F910F910895E82FF0E0EC50D0 +:10401000FE4F8491882321F020E040E060E083CFD0 +:1040200008956F70623051F028F4662339F06130E2 +:1040300081F00895643011F06830F1F4E82FF0E079 +:10404000EE0FFF1FE05EF54DE4918091C402E82B76 +:104050000AC0E82FF0E0EE0FFF1FE05EF54DE4919F +:104060008091C402E827E093C40280911904882358 +:1040700019F0E777E093C40208956F70623009F495 +:104080003EC018F4662379F10895643019F0683061 +:1040900051F10895E82FF0E0EE0FFF1FE05EF54DBF +:1040A000E491E0956091C4026E236093C4022223E0 +:1040B00009F443C09091C60298133FC0842F141690 +:1040C0008CF0807E803E09F038C0E42FF0E0EE0FE7 +:1040D000FF1FE05EF54D8491809568236093C402D4 +:1040E000649180E04DC8E82FF0E0EE0FFF1FE05E26 +:1040F000F54DE491E0958091C402E8231CC0E82FBF +:10410000F0E09091C402EE0FFF1FE05EF54D222318 +:1041100079F080911A04882359F08491E82FE92BD3 +:10412000E093C40280911904882339F0E77703C033 +:10413000E491E095E923E093C40208956F70623042 +:1041400051F028F4662339F0613031F0089564307D +:1041500011F0683011F461CDC7CD08956F706230F1 +:1041600049F018F461110DC00BC0643049F068309B +:1041700041F406C0222321F090911A04911101C04C +:1041800081CD08951F93CF93DF931F92CDB7DEB7F4 +:10419000182F862F807F11F080937A01113C09F44B +:1041A0008DC0E0F5163BD0F4113B08F0C5C01338C4 +:1041B00009F472C050F4143008F410C1143708F434 +:1041C00058C0123809F460C009C1143809F46EC02F +:1041D000E9E6E10FE93108F49CC000C1183B09F49D +:1041E000BFC050F4163B09F4B5C0173B09F0F6C048 +:1041F000809116048150B1C0193B09F4B5C083E425 +:10420000810F833008F0EAC081E093E4910F01C090 +:10421000880F9A95EAF780931C04E6C01E3C09F4C7 +:104220006CC0B0F4193C09F45BC048F4133C09F4C9 +:1042300049C008F445C0183C09F446C0CFC01C3C36 +:1042400009F4A7C008F0B9C01A3C09F4CDC0C6C033 +:10425000183E38F4103E08F0BEC01F3C09F096C06E +:1042600050C080E1810F8A3008F0B8C0812F1FDE76 +:10427000BBC080911704882321F0812F6983E6DD7C +:104280006981812F5BDFB0C08091C50281FDACC028 +:104290006091C40289E307C08091C50280FDA4C07B +:1042A0006091C40283E50E94C0189EC08091C5023F +:1042B00082FD9AC06091C40287E4F5CF36D494C0E1 +:1042C0000ED492C0FED390C090911D0481E0892746 +:1042D00080931D04811102C085E10BC085E164C09B +:1042E0009091190481E0892780931904811103C0FA +:1042F00085E038D379C085E057C082E08093A10182 +:1043000073C08091A00181116FC081E08093A001F2 +:104310006BC08091830390918403892B09F064C062 +:10432000F0E0EE0FFF1FED55F44D859194919093C1 +:1043300084038093830358C0EFE4E10FF0E0EE0FB5 +:10434000FF1FEA52F44DE49180911504E82BE093AD +:1043500015044AC0809116048F5F8093160409C02B +:104360008091E102815003C08091E1028F5F8093D0 +:10437000E1029091640580911A04992321F09091B3 +:104380006205981788F5809362052EC0812F7ADD2B +:104390002BC09091170481E089278093170488230C +:1043A00029F010928C0180E1BDD21EC080918C0159 +:1043B000811180937C0180E19CCF80911704811151 +:1043C00013C060917C01062E000C770B82EE92E008 +:1043D0000E940D1909C0812F24DE06C0612F70E0F4 +:1043E00040E084E40E9493191093C6020F90DF917D +:1043F000CF911F9108951F93CF93DF9300D01F9209 +:10440000CDB7DEB7962F907F11F010927A01893BDD +:1044100009F4A6C008F03DC0803BD0F4873908F00D +:104420007FC0823809F45AC060F49CEF980F90372F +:1044300008F0B5C00F900F900F90DF91CF911F91B2 +:104440008DCE833809F452C0843809F45EC0A7C009 +:10445000863B09F47BC098F4813B08F4A0C06FE46C +:10446000680FE62FF0E0EE0FFF1FEA52F44DE491E3 +:10447000E09580911504E823E09315049CC0873BE8 +:1044800009F468C0883B09F08AC08091E1028F5F1F +:104490006AC08B3C70F4883C08F08DC08D3B08F4FA +:1044A0007EC0803CD0F19FE3980F933008F483C026 +:1044B00076C0883E38F4803E08F058C08C3C08F046 +:1044C0007AC06DC090E1980F9A3008F068C00F90E4 +:1044D0000F900F90DF91CF911F9125CD8091C50254 +:1044E00081FF69C06091C40289E307C08091C50261 +:1044F00080FF61C06091C40283E50F900F900F9020 +:10450000DF91CF911F910C94C0188091C50282FF5A +:1045100052C06091C40287E4F0CF10921C044BC0DB +:1045200069E6680FE62FF0E0EE0FFF1FED55F44D42 +:104530008591949120918303309184032817390742 +:10454000D1F5109284031092830335C08091160434 +:10455000815003C0809116048F5F809316042BC096 +:104560008091E10281508093E10225C0182F809153 +:104570001704882361F08091C602811308C080E08F +:104580002B834A83698362DC69814A812B81812F75 +:104590000F900F900F90DF91CF911F916ECD682FEC +:1045A00070E040E085E40F900F900F90DF91CF9185 +:1045B0001F910C9493190F900F900F90DF91CF9152 +:1045C0001F9108952091C402227291E009F090E0B9 +:1045D00020917805222359F0992349F02091C502B2 +:1045E00020FF05C022EE280F2A3008F4855C2091B8 +:1045F0006C05222321F1833571F49091C50281E08D +:1046000089278093C50280FF03C080E08BD11FC043 +:1046100080E0A8D11CC027EA280F2B3080F420911D +:10462000C502E82FF0E0EE0FFF1F20FF05C0992321 +:1046300019F0E552F54D02C0E452F54D84918A3CE3 +:1046400039F4911102C085E3089589E2089580E06C +:104650000895AF92BF92CF92DF92EF92FF920F93A5 +:104660001F93CF93DF9300D01F92CDB7DEB7D82E24 +:10467000062F10E080911B0490E9C92E9CE0D99E82 +:1046800070011124F701C89EE00DF11D1124E00F07 +:10469000F11FE75CF24F84914A835B83698392DF69 +:1046A000B82E80911B049701C89E200D311D112446 +:1046B000200F311FF901E756F84FC490F901E75078 +:1046C000FE4FA4900E0D1F1DF801EE5CFD4FB08251 +:1046D000F801EB57FC4FC082F801EE55FE4FA08267 +:1046E0004A815B8169818D2D7FDB4A2D6C2D8B2D5D +:1046F00049DD25D20F900F900F90DF91CF911F9140 +:104700000F91FF90EF90DF90CF90BF90AF900C94FF +:10471000CF2C9F92AF92BF92CF92DF92EF92FF92F7 +:104720000F931F93CF93DF931F92CDB7DEB79CE01B +:10473000899F90011124260F311DF901EE5CFD4F78 +:104740006F01B080F901EB57FC4F7F01A080890118 +:104750000E551E4FF80190809E012F5F3F4F5EDB8C +:104760002981492D6A2D8B2D46DEF6011082F70135 +:104770001082F80110820F90DF91CF911F910F915D +:10478000FF90EF90DF90CF90BF90AF909F900895F3 +:104790002CE0829FC00111249C01260F311DF901DC +:1047A000EE5CFD4F8081F901EB57FC4F908193FF48 +:1047B0001AC018161CF46091C40213C0982F907E82 +:1047C000903E89F4E82FF0E0EE0FFF1FE05EF54D1C +:1047D000849180959091C40289238093C40264914E +:1047E00080E00C94C018089520911D04211112C07E +:1047F000FC01AAEDB2E0069621E0309118043323C3 +:1048000011F0208302C03C91308331961196E81755 +:10481000F90799F7089520911D04211109C0DC01C1 +:10482000EDECF2E08DE08E0F91919D938E13FCCF15 +:104830000895FC0180911D04811106C080917A01C8 +:104840009091C402982B908308952CE0829FC00120 +:104850001124FC01E60FF11DE75CF24FE491E83210 +:1048600011F0E83539F441E060E070E081E50E9444 +:104870009319E6C4089590E09C01220F331F820F24 +:10488000931FFC01E85EFB4D2491FC0131968A5E8A +:104890009B4DEA5EFB4D621721F06491FC0184910F +:1048A00077C96491FC01849187C90F931F93CF93BB +:1048B000DF93E7E4F4E2D49106E114E2C0E0CD171F +:1048C00069F0F80131966491F80184913DD960E076 +:1048D0008C2FD1DFCF5F0D5F1F4FF1CF80916F0520 +:1048E00080932D0480932A04809166058093280488 +:1048F000DF91CF911F910F91089580912604893FF8 +:1049000069F4809132048F3E19F41092320403C08E +:104910008F5F809332041092260408958F5F8093F6 +:104920002604089590E0880F991FFC01E651FC4D84 +:10493000A491FC01E551FC4D8491E6E4F4E2E4919C +:10494000AE1778F4B0E0A25EBB4F811103C08C912A +:10495000816006C09C919170E82FEE0F892F8E0F19 +:104960008C93089590E0880F991FFC01E651FC4D4F +:10497000A491FC01E551FC4D8491E6E4F4E2E4915C +:10498000AE1780F4B0E0A25EBB4F811104C08C91E1 +:104990008E7F8C9308959C91292F2695281302C011 +:1049A00091709C930895823049F0833079F0813082 +:1049B000A1F481E1B7DF82E1D5DF0CC081E1D2DF74 +:1049C00082E1D0DF83E1AEDF84E1CCCF81E1CADFD9 +:1049D00082E1A8DF83E1C6DFF7CF81E1C3DF82E1B7 +:1049E000C1DF83E1BFDF84E19DCF0F931F93CF939E +:1049F000E6E4F4E2E491C0E00E2F10E08C2F0C2EE0 +:104A0000000C990B8017910714F52091290422239B +:104A1000C9F0FC01E25EFB4F2081223018F4211125 +:104A20000FC010C0E22FE695F0E0E151F44D649123 +:104A3000809132040E94E533921720F490FF02C067 +:104A400061E001C060E08C2F16DFCF5FD7CFCF9140 +:104A50001F910F91089580912D04803110F081E015 +:104A600002C08C5F8C7F80932D04089580912E046A +:104A70008F5F813118F480932E04089581E0809334 +:104A80002E0410922C0410923104089590912D045C +:104A9000903120F081E080932904089580912C04C6 +:104AA00020912E04929F902D1124891738F491E0C3 +:104AB00090932904805F80932C0408951092290418 +:104AC0000895E9EEF3E2E491809128048F5F8E1758 +:104AD00018F4809328040895109228040895809172 +:104AE0002F048F5F843018F480932F0402C010923B +:104AF0002F0480912F04811103C080912D0403C0E5 +:104B0000813021F484E080932A040895823031F4C6 +:104B100084E080932A0410922B04089580E180930E +:104B20002A0481E080932B04089595DF80912F045F +:104B3000811104C080912D0480932A0408958091EE +:104B40002F04823011F488E10BC0833071F480911E +:104B50002A04853010F0845003C0882321F081504E +:104B600080932A04089510922A04089580913004B5 +:104B70008F5F803318F480933004089510923004CE +:104B800090912F049130B1F420912B0480912A044C +:104B9000222341F08F5F80932A048831E0F0109245 +:104BA0002B040895815080932A048530A0F49093BB +:104BB0002B040895923031F480912A04853058F006 +:104BC000815007C0933039F480912A04803118F461 +:104BD0008F5F80932A04089580912A04803120F009 +:104BE00081E080932704089590912E04899F802D61 +:104BF000112490912B049111807F9091310498178A +:104C000038F481E080932704905F909331040895F5 +:104C10001092270408951F93CF93DF93E7E4F4E203 +:104C2000E49110E0CE2FD0E0212F012E000C330BA9 +:104C30002C173D07ECF4F901E752FC4DE491EE230B +:104C4000A9F080912704882371F080912804F9014C +:104C500090E1899FE00DF11D1124E752FD4DE49193 +:104C600061E0E11101C060E0812F05DE1F5FDCCF54 +:104C7000DF91CF911F910895F9DE08DF3EDEB5DEAA +:104C800075DFAADFC8CF1F920F920FB60F921124C3 +:104C90000F900FBE0F901F901895E4E6F0E0808112 +:104CA00080718083A5E6B0E08C9186778C938081BB +:104CB0008160808380818460808380818062808342 +:104CC0008081806480838C9188608C9380818068EF +:104CD00080838081826080838C9181608C938C91B1 +:104CE0008F778C9390E080E80FB6F8948093610002 +:104CF000909361000FBE0895D0CF8DEA9EED909302 +:104D00008A0580938905089580E189BD82E189BD86 +:104D100009B400FEFDCF8091D8008F7D8093D8002C +:104D20008091E00082608093E0008091E00081FD4E +:104D3000FCCF0895CF93DF93962F642F2CE0929FA2 +:104D4000E0011124C40FD11DCC0FDD1FC25CDB4F6D +:104D500048815981882301F157FF0EC020917905C0 +:104D600030E0319521953109241735077CF1892FE1 +:104D700070DC84E090E020C02091750530917605CC +:104D80004217530794F0892F03DD2091680588812D +:104D90009981821B910910C01416150684F4209184 +:104DA000790530E0421753071CF44C5F5F4F10C089 +:104DB000892FAFDC8CEF9FEF998388830BC08091A4 +:104DC0006D0590916E058417950724F444505109A0 +:104DD00059834883DF91CF9108950F931F93CF9309 +:104DE000DF93082F862F642F9CE0899FE001112418 +:104DF000C40FD11DCC0FDD1FC25CDB4F59810111E7 +:104E000010C057FD27C08881952F937020916D05A4 +:104E100030916E058217930708F40496998388836E +:104E200039C057FF17C00881152F137020917505E1 +:104E3000309176050217130730F0AADC80916805DF +:104E4000081B110902C00C5F1F4F19830883898159 +:104E5000806817C0152F169516951F711C5F9091CD +:104E60007905191780F048815370002311F0F1DBA8 +:104E700001C04FDC212F30E039832883898100FB7A +:104E800087F9898307C01F71110F110F5378252FE0 +:104E9000212B2983DF91CF911F910F910895CF92FC +:104EA000DF92EF92FF921F93CF93DF93E9EAF4E250 +:104EB000E491E0933304E8EAF4E2E491E093390406 +:104EC000E7EAF4E2E491E0933C04E6EAF4E2E491F8 +:104ED000E0933D048CE9E82E84E2F82E94E3C92E99 +:104EE00094E0D92ED0E0F70114918091390481111A +:104EF0001FEFF7013196C4914C2F612F8D2F0E9427 +:104F0000B81D2C2F2095F60121936F01422F4123CC +:104F100080913904642F6095811101C040E08D2F8C +:104F20000E94F11DDF5FF2E0EF0EF11CD530D9F6E3 +:104F300080916505882371F08DEE96E290933B0495 +:104F400080933A0480917905813250F080E2809319 +:104F5000790506C08AE996E290933B0480933A046F +:104F6000DF91CF911F91FF90EF90DF90CF90089548 +:104F7000CF92DF92EF92FF920F931F93CF93C0E0F7 +:104F800080913C0490E02C2F0C2E000C330B281742 +:104F900039070CF054C084E3E82E84E0F82EF5E0E5 +:104FA000CF026001112400E010E0F801EC0DFD1DBE +:104FB000E05AFB4D4491F70161917F01802F0E94DF +:104FC000F11D0F5F1F4F0530110579F780917305B3 +:104FD0008A95F1F710E0212F012E000C330B809100 +:104FE0003D0490E02817390744F580913904220FD9 +:104FF000331FF901E75BFB4D882351F06491F90100 +:10500000E85BFB4D84910E94001E882351F013C081 +:105010006491F901E85BFB4D84910E94001E882396 +:1050200051F080913304882319F06C2F812F02C036 +:10503000612F8C2F0ADC1F5FCECFCF5FA1CFCF9126 +:105040001F910F91FF90EF90DF90CF900895CF9236 +:10505000DF92EF92FF920F931F93CF93DF93D62FA0 +:10506000C82FCD170CF05EC084E3E82E84E0F82E44 +:10507000F5E0CF026001112400E010E0F70161913A +:105080007F016F3F49F0F801EC0DFD1DE05AFB4D2B +:105090004491802F0E94F11D0F5F1F4F05301105B5 +:1050A00069F7809173058A95F1F710E0212F012EA1 +:1050B000000C330B80913D0490E02817390784F5EC +:1050C00080913904220F331FF901E75BFB4D8823E0 +:1050D00059F06491F901E85BFB4D84910E94001E38 +:1050E00091E0882361F00AC06491F901E85BFB4D0F +:1050F00084910E94001E91E0811101C090E0809196 +:105100003304E0913A04F0913B04882319F04C2FCA +:10511000612F02C0412F6C2F892F09951F5FC6CFC9 +:10512000CF5F9FCFDF91CF911F910F91FF90EF90B5 +:10513000DF90CF90089560913C046695669580E07D +:1051400086CF80913C04682F70E0759567958695B1 +:1051500086957DCF80913C0493E0899FB001112416 +:105160007595679575956795869571CF60913C04A7 +:1051700023E0629FC00111249595879595958795A9 +:1051800066CF81E080936105089520916105AC01AF +:10519000249FC001259F900D11246AE070E00E94B9 +:1051A000F13380916005562F581B852F6093600561 +:1051B0002F5F209361052B3028F01092600591E05D +:1051C00090936105089580911604811104C0809127 +:1051D000E102882311F181E08093640520916A0542 +:1051E000809162059091700530916305311120C066 +:1051F000899FC0011124820F911DC7DF9091160471 +:10520000899F902D112490935F059091E102899FD1 +:10521000802D112480935E050BC0109264051092BE +:10522000600510925F0510925E058AE0809361052B +:1052300080916305811103C081E080936305089527 +:10524000CF93DF93CDB7DEB764970FB6F894DEBF88 +:105250000FBECDBF80E280936B0510927405109253 +:1052600078051092690540E140936F05109277052B +:105270003CE03093790510926C051092660560EF62 +:1052800070E0709372056093710568E87FEF70932A +:105290006E0560936D0595E090936A052FE020936D +:1052A000700560E273E070937605609375058093F6 +:1052B0006805909373051092650589831A821B8295 +:1052C0001C824D831E823F831886198630EF3A87F1 +:1052D0001B8638E83C873FEF3D879E872F87888B6A +:1052E00023E0298B8A8B9B8B1C8A44E150E060E091 +:1052F00070E0CE0101960E94353464960FB6F894A2 +:10530000DEBF0FBECDBFDF91CF9108950F931F93E6 +:10531000CF93DF93CCEFDBE2FE013296849131969E +:10532000E49190E0E23059F4FE010591149180502F +:1053300090400E943034F8019183808309C0FE01BF +:1053400005911491805090400E942834F801808388 +:105350002496FCE2C034DF07F9F660916B056032F9 +:1053600031F070E041E080E50E94931969DF80919F +:10537000770580936705DF91CF911F910F91089575 +:1053800024E0829FC0011124FC01E250F44D2491DD +:10539000FC01E150F44D3491FC01E450F44D822FB6 +:1053A00090E0323041F4A591B4916D917C918050A0 +:1053B00090400C944C34A591B4916C9180509040E5 +:1053C0000C943E3413BC109280001092820080E84E +:1053D0009EE39093890080938800089510927A0547 +:1053E0007894109285001092840081E0809381006F +:1053F00082E080936F009AE088E10FB6F894A89558 +:10540000809360000FBE90936000E0E6F0E0808142 +:10541000806C808308950FB6F894A8958091600001 +:10542000886180936000109260000FBEE0E6F0E0BB +:1054300080818F7B808310926F001092810008958D +:1054400010927C0580917C058430D0F4E0917A053F +:1054500080917C0594E0E99FF0011124E80FF11D93 +:10546000EE0FFF1FE655FB4D85919491009711F0CB +:10547000FC01099580917C058F5F80937C05E2CFCC +:105480000895109285001092840080917B058823F6 +:1054900081F080917A0560917C0570E0782B40E086 +:1054A00081E10E94931980917B058F5F80937B053A +:1054B000089581E080937B057894C2DF80917A051E +:1054C0008F5F80937A05843010F010927A05809176 +:1054D0007B05823038F060917B0570E040E084E12C +:1054E0000E949319A89510927B0508951F920F9220 +:1054F0000FB60F9211242F933F934F935F936F93A7 +:105500007F938F939F93AF93BF93EF93FF93B9DFF5 +:10551000FF91EF91BF91AF919F918F917F916F918B +:105520005F914F913F912F910F900FBE0F901F9061 +:105530001895292F33272330310529F13CF42130E8 +:10554000310561F02230310571F07FC02132310523 +:1055500049F12232310509F445C077C082E190E07B +:1055600020EE3DE27BC080916705833009F459C08D +:10557000813009F45BC0823009F45DC08DE690E0B3 +:1055800023E73DE26BC09927009731F0019709F0BE +:105590005CC0E0E4FCE202C0ECE8FCE2849190E054 +:1055A0009F015CC06130A1F050F06230B1F0633017 +:1055B00009F04BC089E090E020ED3DE24FC08091C2 +:1055C000670580FD3DC089E090E025E83DE246C0EA +:1055D00089E090E02EE93DE241C089E090E027EBD0 +:1055E0003DE23CC0613099F048F06230A9F0633090 +:1055F00061F58AE390E02AE23EE230C080916705DF +:1056000080FD28C08FE390E024E63EE227C08BE1D6 +:1056100090E02FE03EE222C08DE190E022EF3DE2FB +:105620001DC082E290E020E93CE218C08DE690E0E7 +:1056300026E03DE213C084E590E022EB3CE20EC0A0 +:1056400089E090E022EA3CE209C080E090E020E0BE +:1056500030E004C08FE390E023EA3EE2FA013183B8 +:105660002083089581E09FC90895CF93DF9380E35D +:1056700091E08FD7C82F80916705833049F080E192 +:1056800091E087D7D82F80E091E083D78D23C8237E +:105690008091670581FD04C080E291E07AD7C8233C +:1056A000CC2311F080E001C083E07DD98091E2003D +:1056B00084608093E200DF91CF91089580E391E0D0 +:1056C00030D680916705833031F080E191E029D6B2 +:1056D00080E091E026D68091670581FD03C080E2DD +:1056E00091E01FC6089580913E0190913F0100977F +:1056F00029F0019790933F0180933E012091670527 +:105700002330B1F080911E0190911F01009729F084 +:10571000019790931F0180931E0180910E0190913B +:105720000F01009729F0019790930F0180930E01CC +:1057300021FD0BC080912E0190912F01009729F03F +:10574000019790932F0180932E01089580E02BC93B +:1057500082E029C980E027C90F931F93CF93DF937D +:10576000F901D801EC012881213009F43EC030F064 +:10577000223009F443C0233019F147C0EF01FC0186 +:1057800010928B0120916705CE01029620FD05C085 +:105790002185222311F03FD801C026D8CE0149D857 +:1057A0008091670580FF06C088E090E0F801918352 +:1057B00080832BC082E190E0E8019983888325C033 +:1057C0001092630580911504808380915F05818329 +:1057D00080915E05828383E090E08D939C9381E0CD +:1057E00090916405911112C010C080918303909133 +:1057F00084039183808382E090E005C080911C0443 +:10580000808381E090E08D939C9380E0DF91CF9145 +:105810001F910F910895CF938053914009F075C067 +:10582000F90180818093C502C0916001C8278093EF +:105830006001CC2309F469C090916C0591110FC0EF +:10584000C0FF0DC080FF06C080E06CD880E00E94E1 +:10585000891F05C080E086D880E00E940520C1FF36 +:105860000FC08091C50281FF06C081E05BD881E056 +:105870000E94891F05C081E075D881E00E94052043 +:10588000C2FF20C08091C50282FF0FC082E04AD8CB +:1058900082E00E94891F80917405882399F081E03D +:1058A0008093190485E03ED80DC082E05BD882E089 +:1058B0000E94052080917405882321F0109219041C +:1058C00085E050D8C3FF0FC08091C50283FF06C09A +:1058D00083E028D883E00E94891F05C083E042D876 +:1058E00083E00E940520C4FF10C08091C50284FFA0 +:1058F00006C084E017D884E0CF910C94891F84E01F +:1059000031D884E0CF910C940520CF9108958091F7 +:10591000670580FF09C088E08093380188E090E047 +:105920009093330180933201089580E391E044D64F +:10593000DED48091800590915F01981759F06091B5 +:10594000800570E041E086EA0E949319809180050D +:1059500080935F01089580916705833031F080E185 +:1059600091E02AD680E091E027D68091670581FDFD +:1059700003C080E291E020D6BAD480918005909156 +:105980005E01981759F06091800570E041E086EA69 +:105990000E9493198091800580935E010895809103 +:1059A0007E05882329F080918005853009F4ACC9F3 +:1059B0000895CF92DF92EF92FF920F931F93CF93B0 +:1059C000DF93EC018B017A01DED1811133C0E11448 +:1059D000F10439F0F70180819181081B190BC80F80 +:1059E000D91FC12CD12C0115110519F18091E800A6 +:1059F00085FD16C08091E8008E778093E80077D40B +:105A0000E114F10449F0F70180819181C80ED91E9B +:105A1000D182C08285E00EC0B6D1882321F30AC0AE +:105A200089918093F10001501109FFEFCF1ADF0A2D +:105A3000DACF80E0DF91CF911F910F91FF90EF902F +:105A4000DF90CF9008952091870530918805261723 +:105A5000370748F06115710539F42091E8002E7779 +:105A60002093E80001C0B90140E061157105A9F17A +:105A700020918005222309F443C0253009F442C057 +:105A80002091E80023FD40C02091E80022FD32C0B3 +:105A90002091E80020FFE9CF4091F3002091F2002F +:105AA00030E0342BFC01CF016115710559F028302D +:105AB000310540F481918093F100615071092F5FAD +:105AC0003F4FF1CF41E02830310509F040E020910F +:105AD000E8002E772093E800C8CF4111C9CF0AC053 +:105AE00080918005882361F0853061F08091E80025 +:105AF00083FD0AC08091E80082FFF2CF80E0089524 +:105B000082E0089583E0089581E0089561157105AC +:105B100029F42091E8002B772093E800FC0161151F +:105B2000710541F180918005882361F1853061F133 +:105B30008091E80083FD24C08091E80082FFEFCFD0 +:105B40002091F3008091F20090E0922B892B31F0AC +:105B50008091F10081936150710991F78091E80083 +:105B60008B778093E800DBCF80918005882351F00C +:105B7000853051F08091E80080FFF6CF80E00895F5 +:105B800081E0089582E0089583E0089520918705DB +:105B9000309188052617370748F06115710539F4EB +:105BA0002091E8002E772093E80001C0B901FC01A4 +:105BB00020E06115710591F180918005882309F439 +:105BC00040C0853009F43FC08091E80083FD3DC0AE +:105BD0008091E80082FD2FC08091E80080FFE9CF2E +:105BE0002091F3008091F20090E0922B61157105F5 +:105BF00059F08830910540F424912093F1003196BA +:105C0000615071090196F2CF21E0089709F020E078 +:105C10008091E8008E778093E800CBCF2111CCCF24 +:105C20000AC080918005882361F0853061F0809101 +:105C3000E80083FD0AC08091E80082FFF2CF80E097 +:105C4000089582E0089583E0089581E00895982FF3 +:105C5000973058F59093E900981739F07091EC005F +:105C60002091ED005091F00003C0242F762F50E0DA +:105C700021FF19C03091EB003E7F3093EB00309153 +:105C8000ED003D7F3093ED003091EB0031603093BB +:105C9000EB007093EC002093ED005093F000209106 +:105CA000EE0027FF07C09F5FD3CF8F708093E9007E +:105CB00081E0089580E00895EF92FF920F931F9383 +:105CC000CF93DF93E62EEC018C010C5F1F4FF12C7C +:105CD000FE1491F15881552351F1F8012081698119 +:105CE0007A8131979081852F8F70873010F080E016 +:105CF00024C0223010F442E001C046E0E8E0F0E0C9 +:105D000020E0E617F70720F42F5FEE0FFF1FF9CF13 +:105D10002295207F422BF0E49F9F90011124551F74 +:105D20005527551F652F622B92DF882301F3F394CB +:105D300025960B5F1F4FCCCF81E0DF91CF911F9154 +:105D40000F91FF90EF9008958091810587FF11C01A +:105D50008091E80082FD05C0809180058111F8CF17 +:105D600011C08091E8008B770BC08091800588235B +:105D700049F08091E80080FFF8CF8091E8008E77AD +:105D80008093E80008952091E4003091E50095E6C5 +:105D90004091EC00842F817040FF22C08091E80088 +:105DA00080FD1CC080918005882391F0853091F0A2 +:105DB0008091EB0085FD10C04091E4005091E5001A +:105DC0004217530729F39A01915011F784E008957F +:105DD00082E0089583E0089581E0089580E00895C9 +:105DE0004091E80042FFDECF089565D06CD0E0EE30 +:105DF000F0E0808181608083E8EDF0E080818F7742 +:105E0000808319BCA7EDB0E08C918E7F8C9380814C +:105E10008F7E808310927F0508950F931F93CF93F9 +:105E2000DF9349D050D0C8EDD0E088818F77888348 +:105E300088818068888388818F7D888319BC1092CF +:105E4000800510927D0510927E0500EE10E0F801AD +:105E500080818B7F808388818160888342E060E0DD +:105E600080E0F5DEE1EEF0E080818E7F8083E2EE7F +:105E7000F0E0808181608083808188608083F80188 +:105E800080818E7F8083888180618883DF91CF913C +:105E90001F910F910895E8EDF0E080818F7E80835F +:105EA000E7EDF0E080818160808384E082BF81E063 +:105EB00080937F05B2CFE8EDF0E080818E7F808314 +:105EC0001092E20008951092DA001092E100089515 +:105ED0001F920F920FB60F9211242F933F934F935F +:105EE0005F936F937F938F939F93AF93BF93EF9342 +:105EF000FF938091E10082FF0AC08091E20082FF5F +:105F000006C08091E1008B7F8093E100ECDB809103 +:105F1000DA0080FF1DC08091D80080FF19C08091F9 +:105F2000DA008E7F8093DA008091D90080FF0CC068 +:105F300080E189BD82E189BD09B400FEFDCF81E029 +:105F4000809380058FDB04C019BC109280058CDB28 +:105F50008091E10080FF18C08091E20080FF14C0B2 +:105F60008091E2008E7F8093E2008091E200806168 +:105F70008093E2008091D80080628093D80019BCA1 +:105F800085E080938005E4DB8091E10084FF2FC0F1 +:105F90008091E20084FF2BC080E189BD82E189BD50 +:105FA00009B400FEFDCF8091D8008F7D8093D8008A +:105FB0008091E1008F7E8093E1008091E2008F7EEE +:105FC0008093E2008091E20081608093E200809102 +:105FD0007D05882311F084E007C08091E30087FDF0 +:105FE00002C081E001C083E080938005B3DB809133 +:105FF000E10083FF22C08091E20083FF1EC08091F8 +:10600000E100877F8093E10082E080938005109219 +:106010007D058091E1008E7F8093E1008091E20018 +:106020008E7F8093E2008091E20080618093E200A5 +:1060300042E060E080E00BDE89DBFF91EF91BF91F1 +:10604000AF919F918F917F916F915F914F913F9110 +:106050002F910F900FBE0F901F9018951F93CF9305 +:10606000DF93CDB7DEB7AA970FB6F894DEBF0FBEA9 +:10607000CDBFE1E8F5E088E08E0F9091F1009193BB +:106080008E13FBCF1BDB8091E80083FF18C180914A +:10609000810590918205492F50E04A30510508F062 +:1060A0000EC1FA01E059FF4FB0C3803881F0823849 +:1060B00009F005C1809185058F708093E90080917A +:1060C000EB0085FB882780F91092E90007C08091DA +:1060D0007E05882311F082E001C080E09091E80005 +:1060E000977F9093E8008093F1001092F100C4C074 +:1060F000282F2D7F09F0E3C0882319F0823061F04A +:10610000DEC080918305813009F0D9C0933009F059 +:1061100080E080937E052BC080918305811127C08C +:10612000809185058F7009F4CAC08093E9002091A1 +:10613000EB0020FF1CC0933021F48091EB008062C3 +:1061400014C09091EB0090619093EB0021E030E05F +:10615000A90102C0440F551F8A95E2F74093EA0057 +:106160001092EA008091EB0088608093EB0010921F +:10617000E9008091E800877F82C08111A0C0109162 +:1061800083051F778091E3008078812B8093E30063 +:106190008091E800877F8093E800D6DD8091E80059 +:1061A00080FFFCCF8091E30080688093E3001111B1 +:1061B00002C082E001C083E08093800580C08058E7 +:1061C000823008F07CC080918305909184058C3DDD +:1061D00053E0950771F583E08A838AE289834FB79C +:1061E000F894DE01139620E03EE051E2E32FF0E068 +:1061F00050935700E49120FF03C0E295EF703F5F9A +:10620000EF708E2F90E0EA3010F0C79601C0C09674 +:106210008D939D932F5F243149F74FBF8091E80004 +:10622000877F8093E8006AE270E0CE0101960BDC84 +:1062300012C0AE014F5F5F4F609185057AD9BC01F6 +:10624000892B09F43CC09091E800977F9093E80077 +:1062500089819A819BDC8091E8008B778093E800AC +:106260002EC0803861F58091E800877F8093E80038 +:1062700080917D058093F1008091E8008E77809376 +:10628000E80062DD1CC081111AC090918305923034 +:10629000B0F48091E800877F8093E80090937D05BB +:1062A00053DD80917D05811106C08091E30087FD5B +:1062B00002C081E001C084E080938005D6D980913E +:1062C000E80083FF0AC08091E800877F8093E800A0 +:1062D0008091EB0080628093EB00AA960FB6F89451 +:1062E000DEBF0FBECDBFDF91CF911F910895CF9339 +:1062F00080918005882399F0C091E900CF7090913A +:10630000EC00892F817090FD80E8C82B1092E90085 +:106310008091E80083FDA2DECF70C093E900CF91A9 +:1063200008956F927F928F929F92AF92BF92CF9279 +:10633000DF92EF92FF920F931F93CF93DF9300D0E2 +:106340001F92CDB7DEB77C01CDB6DEB68091E800F6 +:1063500083FF08C1F701808190E02091850530918D +:1063600086052817390709F0FDC080918205833022 +:1063700009F49FC030F4813071F0823009F4D6C046 +:10638000F1C08A3009F4BAC08B3009F4A3C0893057 +:1063900009F0E8C051C080918105813A09F0E2C05E +:1063A0008DB69EB61A82198280918305109184055C +:1063B0008B83F7018085482F50E08DB79EB7841BF3 +:1063C000950B0FB6F8949EBF0FBE8DBFEDB7FEB70D +:1063D00031965F0160E070E0CF0133D24FEF410FA3 +:1063E0008E010F5F1F4F9501BE016D5F7F4FC7018B +:1063F000B3D9F70186819781009721F0408550E05D +:10640000B50116D21092E9008091E800877F809351 +:10641000E8008B8181118093F10069817A81C50147 +:1064200012DB8091E8008B778093E8000FB6F89438 +:106430009EBE0FBE8DBE96C080918105813209F04F +:1064400091C0ADB6BEB600918705109188057090D9 +:106450008305609084058DB79EB7801B910B0FB6A6 +:10646000F8949EBF0FBE8DBFEDB7FEB731964F01BA +:106470008091E800877F8093E800B801CF0146DB78 +:106480008091E8008E778093E80021E0711001C0D0 +:1064900020E030E0021B130B280D391D4FEF460D95 +:1064A000672DC701B8D90FB6F894BEBE0FBEADBEFA +:1064B00059C080918105813A09F054C08091E8006B +:1064C000877F8093E8008091E80080FFFCCFF70190 +:1064D000818540C080918105813209F043C080915F +:1064E000E800877F8093E8002FDC9091830581E0AE +:1064F000911101C080E0F701818734C0809181054E +:10650000813281F58091E800877F8093E8001CDC70 +:106510008091830590918405882736E0969587952C +:106520003A95E1F7F701958784871CC08091810532 +:10653000813AC1F48091E800877F8093E8008091E0 +:10654000E80080FFFCCFF7018485958596958795B7 +:10655000969587958093F1008091E8008E778093DF +:10656000E800F2DB0FB6F894DEBE0FBECDBE0F9092 +:106570000F900F90DF91CF911F910F91FF90EF90AF +:10658000DF90CF90BF90AF909F908F907F906F9053 +:106590000895FC01399627E0DF011D922A95E9F75D +:1065A00021E0FC01218724EF31E03587248723E0B7 +:1065B000248361E0019680CB4F925F926F927F922D +:1065C0008F929F92AF92BF92CF92DF92EF92FF9203 +:1065D0000F931F93CF93DF9300D01F92CDB7DEB7F9 +:1065E0007C01ADB6BEB680918005843009F08DC0C7 +:1065F0008091E4009091E500F7012285338528170A +:10660000390709F482C081818F708093E9008091FD +:10661000E80085FF7AC08DB69EB6408550E08DB704 +:106620009EB7841B950B0FB6F8949EBF0FBE8DBF0F +:10663000EDB7FEB731966F011B821A82198260E0B6 +:1066400070E0CF01FED08E010F5F1F4F960140E03A +:10665000BE016D5F7F4FC7017FD8482EF70184854B +:106660009585892B51F091E080E026853785232B95 +:1066700009F090E0092F182F02C000E010E0F701A8 +:10668000668077806114710489F049815A81B30171 +:10669000C601C1D055245394892B09F4512CF7011C +:1066A000408550E0B601C301C3D001C0512C89819F +:1066B0009A81892BF1F0411004C0511002C0012BC6 +:1066C000C1F0F701848595859787868781818F70D2 +:1066D0008093E9008B8181118093F10069817A8137 +:1066E00040E050E0C60165D98091E8008E77809344 +:1066F000E8008091E4009091E500F701938782879C +:106700000FB6F8949EBE0FBE8DBE0FB6F894BEBEF7 +:106710000FBEADBE0F900F900F90DF91CF911F91E4 +:106720000F91FF90EF90DF90CF90BF90AF909F9030 +:106730008F907F906F905F904F90089508950E9482 +:106740007C260E9492190E9486290E944F270E944F +:1067500055240E94EF1E0E94C1280E94B6170E9475 +:10676000E229D5D80E94B82796CB0E94EE298091C5 +:10677000A1018823E1F30C940B2A37DBF8942FEF67 +:1067800087EA91E6215080409040E1F700C0000088 +:106790008091A101823011F40E947D268091A10197 +:1067A000882359F09CE088E10FB6F894A89580936F +:1067B00060000FBE90936000FFCF0895BFDFBFDF82 +:1067C000D4DFDBDF80E090E00895991B79E004C01E +:1067D000991F961708F0961B881F7A95C9F7809520 +:1067E0000895AA1BBB1B51E107C0AA1FBB1FA61718 +:1067F000B70710F0A61BB70B881F991F5A95A9F76A +:1068000080959095BC01CD010895EE0FFF1F059076 +:10681000F491E02D0994FB01DC0104C08D910190FD +:10682000801921F441505040C8F7881B990B0895F6 +:10683000FB01DC0102C001900D9241505040D8F79D +:106840000895DC0101C06D9341505040E0F7089578 +:10685000F999FECF92BD81BDF89A992780B5089528 +:10686000A8E1B0E042E050E01CC0DC01CB0102C076 +:106870002D9105D041505040D8F70895262FF99911 +:10688000FECF1FBA92BD81BD20BD0FB6F894FA9A13 +:10689000F99A0FBE01960895F1DF272FF0CFDC01A2 +:1068A000CB01FC01F999FECF06C0F2BDE1BDF89A1B +:1068B000319600B40D9241505040B8F70895F894C5 +:0268C000FFCF08 +:1068C20002830100000161010100000000000000DC +:1068D20001820200000162010200000000000000CB +:1068E20003840300000164010300000000000000B3 +:1068F2000081120000016701120000000000000088 +:106902002400250023002700280026002A002B004F +:0E69120029002D002E002C00300031002F0037 +:00000001FF diff --git a/keymapper/easykeymap/templates/ATmega32U4_16MHz_SQUARE.py b/keymapper/easykeymap/templates/ATmega32U4_16MHz_SQUARE.py new file mode 100644 index 00000000..a34c1e52 --- /dev/null +++ b/keymapper/easykeymap/templates/ATmega32U4_16MHz_SQUARE.py @@ -0,0 +1,29 @@ +# This file is auto-generated. Do not edit. + +hex_file_name = 'ATmega32U4_16MHz_SQUARE.hex' +device = 'ATmega32U4' +speed = '16MHz' +size = 'SQUARE' + +layers_map = 0x00000d39 +actions_map = 0x00000799 +tapkeys_map = 0x000001f9 +macro_map = 0x000012d9 +led_layers_map = 0x000001f4 +num_leds_map = 0x00002447 +num_ind_map = 0x00002446 +led_hw_map = 0x00002416 +led_map = 0x000023ea +num_bl_enab_map = 0x000023e9 +bl_mask_map = 0x000023d9 +bl_mode_map = 0x000022d9 +strobe_cols_map = 0x000024a9 +strobe_low_map = 0x000024a8 +num_strobe_map = 0x000024a7 +num_sense_map = 0x000024a6 +matrix_init_map = 0x0000249c +matrix_strobe_map = 0x00002460 +matrix_sense_map = 0x00002448 +kmac_key_map = None +boot_ptr_map = 0x00002bfa +prod_str_map = 0x00002c40 diff --git a/keymapper/easykeymap/templates/__init__.py b/keymapper/easykeymap/templates/__init__.py index 487bb7d3..1b6dbb41 100644 --- a/keymapper/easykeymap/templates/__init__.py +++ b/keymapper/easykeymap/templates/__init__.py @@ -26,6 +26,7 @@ max_bl_enables = 16 matrix_dims = { + 'SQUARE': (12, 12), 'JUMBO': (7, 24), 'FULLSIZE': (6, 22), 'COSTAR': (8, 18), From a6c9824f1979144b14c67b23c0058f061250500c Mon Sep 17 00:00:00 2001 From: David Howland Date: Mon, 9 Apr 2018 20:53:03 -0400 Subject: [PATCH 2/2] Add support for the GH80-3000 --- keymapper/easykeymap/boards/gh80_3000.py | 190 +++++++++++++++++++++ keymapper/easykeymap/configs/gh80_3000.cfg | 125 ++++++++++++++ keymapper/npp_workspace | 2 + 3 files changed, 317 insertions(+) create mode 100644 keymapper/easykeymap/boards/gh80_3000.py create mode 100644 keymapper/easykeymap/configs/gh80_3000.cfg diff --git a/keymapper/easykeymap/boards/gh80_3000.py b/keymapper/easykeymap/boards/gh80_3000.py new file mode 100644 index 00000000..b07805b9 --- /dev/null +++ b/keymapper/easykeymap/boards/gh80_3000.py @@ -0,0 +1,190 @@ +# Easy AVR USB Keyboard Firmware Keymapper +# Copyright (C) 2013-2018 David Howland +# Copyright (C) 2018 TalkingTree +# +# 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 . + +"""Keyboard definition for the GH80-3000 custom keyboard.""" + +import easykeymap.templates.ATmega32U4_16MHz_SQUARE as firmware +from easykeymap.ioports import * +from easykeymap.helper import make_matrix_config, make_led_config + +description = "GH80-3000" +unique_id = "GH80_3000_001" +cfg_name = "gh80_3000" + +teensy = False +hw_boot_key = False + +num_rows = 11 +num_cols = 11 + +strobe_cols = False +strobe_low = True + +matrix_hardware, matrix_strobe, matrix_sense = make_matrix_config( + strobe_cols=strobe_cols, + strobe_low=strobe_low, + rows=[F4, F1, F0, F5, F6, F7, D4, D5, D3, D2, D0], + cols=[C7, C6, B4, D7, B3, B2, B0, E6, B1, D1, D6], + device=firmware.device +) + +num_leds, num_ind, led_hardware, backlighting, num_bl_enab, bl_modes = make_led_config( + led_pins = [B5, B6, B7], + led_dir=LED_DRIVER_PULLDOWN, + backlight_pins = [], + backlight_dir=LED_DRIVER_PULLDOWN +) + +led_definition = [ + ('Num LED', 'Num Lock'), + ('Caps LED', 'Caps Lock'), + ('Scroll LED', 'Scroll Lock') +] + +KMAC_key = None + +# ((key width, key height), (matrix row, matrix column), 'default mapping') +keyboard_definition = [ + [((4, 4), (0, 0), 'HID_KEYBOARD_SC_ESCAPE'), + (4, None, '0'), + ((4, 4), (0, 1), 'HID_KEYBOARD_SC_F1'), + ((4, 4), (0, 2), 'HID_KEYBOARD_SC_F2'), + ((4, 4), (0, 3), 'HID_KEYBOARD_SC_F3'), + ((4, 4), (3, 0), 'HID_KEYBOARD_SC_F4'), + (2, None, '0'), + ((4, 4), (3, 1), 'HID_KEYBOARD_SC_F5'), + ((4, 4), (3, 2), 'HID_KEYBOARD_SC_F6'), + ((4, 4), (3, 3), 'HID_KEYBOARD_SC_F7'), + ((4, 4), (3, 6), 'HID_KEYBOARD_SC_F8'), + (2, None, '0'), + ((4, 4), (3, 7), 'HID_KEYBOARD_SC_F9'), + ((4, 4), (3, 8), 'HID_KEYBOARD_SC_F10'), + ((4, 4), (3, 9), 'HID_KEYBOARD_SC_F11'), + ((4, 4), (3, 10), 'HID_KEYBOARD_SC_F12'), + (1, None, '0'), + ((4, 4), (0, 4), 'HID_KEYBOARD_SC_PRINT_SCREEN'), + ((4, 4), (0, 5), 'HID_KEYBOARD_SC_SCROLL_LOCK'), + ((4, 4), (0, 6), 'HID_KEYBOARD_SC_PAUSE')], + 2, + [((4, 4), (1, 0), 'HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE'), + ((4, 4), (1, 1), 'HID_KEYBOARD_SC_1_AND_EXCLAMATION'), + ((4, 4), (1, 2), 'HID_KEYBOARD_SC_2_AND_AT'), + ((4, 4), (1, 3), 'HID_KEYBOARD_SC_3_AND_HASHMARK'), + ((4, 4), (4, 0), 'HID_KEYBOARD_SC_4_AND_DOLLAR'), + ((4, 4), (4, 1), 'HID_KEYBOARD_SC_5_AND_PERCENTAGE'), + ((4, 4), (4, 2), 'HID_KEYBOARD_SC_6_AND_CARET'), + ((4, 4), (4, 3), 'HID_KEYBOARD_SC_7_AND_AND_AMPERSAND'), + ((4, 4), (4, 4), 'HID_KEYBOARD_SC_8_AND_ASTERISK'), + ((4, 4), (4, 5), 'HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS'), + ((4, 4), (4, 6), 'HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS'), + ((4, 4), (4, 7), 'HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE'), + ((4, 4), (4, 8), 'HID_KEYBOARD_SC_EQUAL_AND_PLUS'), + ((4, 4), (4, 9), 'HID_KEYBOARD_SC_BACKSPACE'), + ((4, 4), (4, 10), 'HID_KEYBOARD_SC_BACKSPACE'), + (1, None, '0'), + ((4, 4), (1, 4), 'HID_KEYBOARD_SC_INSERT'), + ((4, 4), (1, 5), 'HID_KEYBOARD_SC_HOME'), + ((4, 4), (1, 6), 'HID_KEYBOARD_SC_PAGE_UP'), + (1, None, '0'), + ((4, 4), (1, 7), 'HID_KEYBOARD_SC_NUM_LOCK'), + ((4, 4), (1, 8), 'HID_KEYBOARD_SC_KEYPAD_SLASH'), + ((4, 4), (1, 9), 'HID_KEYBOARD_SC_KEYPAD_ASTERISK'), + ((4, 4), (1, 10), 'HID_KEYBOARD_SC_KEYPAD_MINUS')], + [((6, 4), (2, 0), 'HID_KEYBOARD_SC_TAB'), + ((4, 4), (2, 1), 'HID_KEYBOARD_SC_Q'), + ((4, 4), (2, 2), 'HID_KEYBOARD_SC_W'), + ((4, 4), (2, 3), 'HID_KEYBOARD_SC_E'), + ((4, 4), (5, 0), 'HID_KEYBOARD_SC_R'), + ((4, 4), (5, 1), 'HID_KEYBOARD_SC_T'), + ((4, 4), (5, 2), 'HID_KEYBOARD_SC_Y'), + ((4, 4), (5, 3), 'HID_KEYBOARD_SC_U'), + ((4, 4), (5, 5), 'HID_KEYBOARD_SC_I'), + ((4, 4), (5, 6), 'HID_KEYBOARD_SC_O'), + ((4, 4), (5, 7), 'HID_KEYBOARD_SC_P'), + ((4, 4), (5, 8), 'HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE'), + ((4, 4), (5, 9), 'HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE'), + ((6, 4), (5, 10), 'HID_KEYBOARD_SC_BACKSLASH_AND_PIPE'), + (1, None, '0'), + ((4, 4), (2, 4), 'HID_KEYBOARD_SC_DELETE'), + ((4, 4), (2, 5), 'HID_KEYBOARD_SC_END'), + ((4, 4), (2, 6), 'HID_KEYBOARD_SC_PAGE_DOWN'), + (1, None, '0'), + ((4, 4), (2, 7), 'HID_KEYBOARD_SC_KEYPAD_7_AND_HOME'), + ((4, 4), (2, 8), 'HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW'), + ((4, 4), (2, 9), 'HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP'), + ((4, 4), (2, 10), 'HID_KEYBOARD_SC_KEYPAD_PLUS')], + [((7, 4), (8, 0), 'HID_KEYBOARD_SC_CAPS_LOCK'), + ((4, 4), (8, 1), 'HID_KEYBOARD_SC_A'), + ((4, 4), (8, 2), 'HID_KEYBOARD_SC_S'), + ((4, 4), (8, 3), 'HID_KEYBOARD_SC_D'), + ((4, 4), (6, 0), 'HID_KEYBOARD_SC_F'), + ((4, 4), (6, 1), 'HID_KEYBOARD_SC_G'), + ((4, 4), (6, 2), 'HID_KEYBOARD_SC_H'), + ((4, 4), (6, 3), 'HID_KEYBOARD_SC_J'), + ((4, 4), (6, 6), 'HID_KEYBOARD_SC_K'), + ((4, 4), (6, 7), 'HID_KEYBOARD_SC_L'), + ((4, 4), (6, 8), 'HID_KEYBOARD_SC_SEMICOLON_AND_COLON'), + ((4, 4), (6, 9), 'HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE'), + ((4, 4), (5, 10), 'HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE'), + ((5, 4), (6, 10), 'HID_KEYBOARD_SC_ENTER'), + (14, None, '0'), + ((4, 4), (8, 7), 'HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW'), + ((4, 4), (8, 8), 'HID_KEYBOARD_SC_KEYPAD_5'), + ((4, 4), (8, 9), 'HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW'), + ((4, 4), (8, 10), 'HID_KEYBOARD_SC_KEYPAD_PLUS')], + [((5, 4), (9, 0), 'HID_KEYBOARD_SC_LEFT_SHIFT'), + ((4, 4), (9, 1), 'HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE'), + ((4, 4), (9, 2), 'HID_KEYBOARD_SC_Z'), + ((4, 4), (9, 3), 'HID_KEYBOARD_SC_X'), + ((4, 4), (7, 0), 'HID_KEYBOARD_SC_C'), + ((4, 4), (7, 1), 'HID_KEYBOARD_SC_V'), + ((4, 4), (7, 2), 'HID_KEYBOARD_SC_B'), + ((4, 4), (7, 3), 'HID_KEYBOARD_SC_N'), + ((4, 4), (7, 5), 'HID_KEYBOARD_SC_M'), + ((4, 4), (7, 6), 'HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN'), + ((4, 4), (7, 7), 'HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN'), + ((4, 4), (7, 8), 'HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK'), + ((7, 4), (7, 9), 'HID_KEYBOARD_SC_RIGHT_SHIFT'), + ((4, 4), (7, 10), 'SCANCODE_FN1'), + (5, None, '0'), + ((4, 4), (9, 6), 'HID_KEYBOARD_SC_UP_ARROW'), + (5, None, '0'), + ((4, 4), (9, 7), 'HID_KEYBOARD_SC_KEYPAD_1_AND_END'), + ((4, 4), (9, 8), 'HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW'), + ((4, 4), (9, 9), 'HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN'), + ((4, 4), (9, 10), 'HID_KEYBOARD_SC_KEYPAD_ENTER')], + [((6, 4), (10, 0), 'HID_KEYBOARD_SC_LEFT_CONTROL'), + ((4, 4), (10, 1), 'HID_KEYBOARD_SC_LEFT_GUI'), + ((6, 4), (10, 2), 'HID_KEYBOARD_SC_LEFT_ALT'), + ((4, 4), (10, 3), 'HID_KEYBOARD_SC_SPACE'), + ((8, 4), (8, 4), 'HID_KEYBOARD_SC_SPACE'), + ((4, 4), (8, 5), 'HID_KEYBOARD_SC_SPACE'), + ((8, 4), (8, 6), 'HID_KEYBOARD_SC_SPACE'), + ((4, 4), (6, 4), 'HID_KEYBOARD_SC_SPACE'), + ((6, 4), (6, 5), 'HID_KEYBOARD_SC_RIGHT_ALT'), + ((4, 4), (9, 4), 'HID_KEYBOARD_SC_APPLICATION'), + ((6, 4), (9, 5), 'HID_KEYBOARD_SC_RIGHT_CONTROL'), + (1, None, '0'), + ((4, 4), (10, 4), 'HID_KEYBOARD_SC_LEFT_ARROW'), + ((4, 4), (10, 5), 'HID_KEYBOARD_SC_DOWN_ARROW'), + ((4, 4), (10, 6), 'HID_KEYBOARD_SC_RIGHT_ARROW'), + (1, None, '0'), + ((4, 4), (10, 7), 'HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT'), + ((4, 4), (10, 8), 'HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT'), + ((4, 4), (10, 9), 'HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE'), + ((4, 4), (10, 10), 'HID_KEYBOARD_SC_KEYPAD_ENTER')] +] diff --git a/keymapper/easykeymap/configs/gh80_3000.cfg b/keymapper/easykeymap/configs/gh80_3000.cfg new file mode 100644 index 00000000..91ef9048 --- /dev/null +++ b/keymapper/easykeymap/configs/gh80_3000.cfg @@ -0,0 +1,125 @@ +[ANSI Winkey] +# 2u Backspace +MAKE_SPACER(2, 13, 0) +MAKE_KEY(2, 14, 8, 4) +# ANSI Enter +MAKE_SPACER(4, 12, 0) +MAKE_KEY(4, 13, 9, 4) +# 2.25u Left Shift +MAKE_KEY(5, 0, 9, 4) +MAKE_SPACER(5, 1, 0) +# 2.75u Right Shift +MAKE_KEY(5, 12, 11, 4) +MAKE_SPACER(5, 13, 0) +# bottom row +MAKE_KEY(6, 0, 5, 4) +MAKE_KEY(6, 1, 5, 4) +MAKE_KEY(6, 2, 5, 4) +MAKE_SPACER(6, 3, 0) +MAKE_SPACER(6, 4, 0) +MAKE_KEY(6, 5, 25, 4) +MAKE_SPACER(6, 6, 0) +MAKE_KEY(6, 7, 5, 4) +MAKE_KEY(6, 8, 5, 4) +MAKE_KEY(6, 9, 5, 4) +MAKE_KEY(6, 10, 5, 4) +# numpad +MAKE_KEY(4, 18, 4, -8) +MAKE_SPACER(3, 22, 0) +MAKE_KEY(6, 19, 4, -8) +MAKE_SPACER(5, 20, 0) +MAKE_KEY(6, 16, 8, 4) +MAKE_SPACER(6, 17, 0) + +[ANSI Winkeyless] +# 2u Backspace +MAKE_SPACER(2, 13, 0) +MAKE_KEY(2, 14, 8, 4) +# ANSI Enter +MAKE_SPACER(4, 12, 0) +MAKE_KEY(4, 13, 9, 4) +# 2.25u Left Shift +MAKE_KEY(5, 0, 9, 4) +MAKE_SPACER(5, 1, 0) +# 2.75u Right Shift +MAKE_KEY(5, 12, 11, 4) +MAKE_SPACER(5, 13, 0) +# bottom row +MAKE_KEY(6, 0, 6, 4) +MAKE_SPACER(6, 1, 4) +MAKE_KEY(6, 2, 6, 4) +MAKE_SPACER(6, 3, 0) +MAKE_SPACER(6, 4, 0) +MAKE_KEY(6, 5, 28, 4) +MAKE_SPACER(6, 6, 0) +MAKE_SPACER(6, 7, 0) +MAKE_KEY(6, 8, 6, 4) +MAKE_SPACER(6, 9, 4) +MAKE_KEY(6, 10, 6, 4) +# numpad +MAKE_KEY(4, 18, 4, -8) +MAKE_SPACER(3, 22, 0) +MAKE_KEY(6, 19, 4, -8) +MAKE_SPACER(5, 20, 0) +MAKE_KEY(6, 16, 8, 4) +MAKE_SPACER(6, 17, 0) + +[ISO Winkey] +# 2u Backspace +MAKE_SPACER(2, 13, 0) +MAKE_KEY(2, 14, 8, 4) +# ISO Enter +MAKE_SPACER(3, 13, 6) +MAKE_KEY(4, 13, 5, -8) +# 2.75u Right Shift +MAKE_KEY(5, 12, 11, 4) +MAKE_SPACER(5, 13, 0) +# bottom row +MAKE_KEY(6, 0, 5, 4) +MAKE_KEY(6, 1, 5, 4) +MAKE_KEY(6, 2, 5, 4) +MAKE_SPACER(6, 3, 0) +MAKE_SPACER(6, 4, 0) +MAKE_KEY(6, 5, 25, 4) +MAKE_SPACER(6, 6, 0) +MAKE_KEY(6, 7, 5, 4) +MAKE_KEY(6, 8, 5, 4) +MAKE_KEY(6, 9, 5, 4) +MAKE_KEY(6, 10, 5, 4) +# numpad +MAKE_KEY(4, 18, 4, -8) +MAKE_SPACER(3, 22, 0) +MAKE_KEY(6, 19, 4, -8) +MAKE_SPACER(5, 20, 0) +MAKE_KEY(6, 16, 8, 4) +MAKE_SPACER(6, 17, 0) + +[ISO Winkeyless] +# 2u Backspace +MAKE_SPACER(2, 13, 0) +MAKE_KEY(2, 14, 8, 4) +# ISO Enter +MAKE_SPACER(3, 13, 6) +MAKE_KEY(4, 13, 5, -8) +# 2.75u Right Shift +MAKE_KEY(5, 12, 11, 4) +MAKE_SPACER(5, 13, 0) +# bottom row +MAKE_KEY(6, 0, 6, 4) +MAKE_SPACER(6, 1, 4) +MAKE_KEY(6, 2, 6, 4) +MAKE_SPACER(6, 3, 0) +MAKE_SPACER(6, 4, 0) +MAKE_KEY(6, 5, 28, 4) +MAKE_SPACER(6, 6, 0) +MAKE_SPACER(6, 7, 0) +MAKE_KEY(6, 8, 6, 4) +MAKE_SPACER(6, 9, 4) +MAKE_KEY(6, 10, 6, 4) +# numpad +MAKE_KEY(4, 18, 4, -8) +MAKE_SPACER(3, 22, 0) +MAKE_KEY(6, 19, 4, -8) +MAKE_SPACER(5, 20, 0) +MAKE_KEY(6, 16, 8, 4) +MAKE_SPACER(6, 17, 0) diff --git a/keymapper/npp_workspace b/keymapper/npp_workspace index c42926fc..0de941c6 100644 --- a/keymapper/npp_workspace +++ b/keymapper/npp_workspace @@ -13,6 +13,7 @@ + @@ -53,6 +54,7 @@ +